diff --git a/metadata/dbms/form/g_b.gif b/metadata/dbms/form/g_b.gif new file mode 100644 index 0000000..3c73e86 Binary files /dev/null and b/metadata/dbms/form/g_b.gif differ diff --git a/metadata/dbms/form/g_w.gif b/metadata/dbms/form/g_w.gif new file mode 100644 index 0000000..f7a25d7 Binary files /dev/null and b/metadata/dbms/form/g_w.gif differ diff --git a/metadata/dbms/form/x_b.gif b/metadata/dbms/form/x_b.gif new file mode 100644 index 0000000..8e8db12 Binary files /dev/null and b/metadata/dbms/form/x_b.gif differ diff --git a/metadata/dbms/form/x_w.gif b/metadata/dbms/form/x_w.gif new file mode 100644 index 0000000..48a121f Binary files /dev/null and b/metadata/dbms/form/x_w.gif differ diff --git a/metadata/dbms/records.php b/metadata/dbms/records.php index 86834dc..1317f18 100644 --- a/metadata/dbms/records.php +++ b/metadata/dbms/records.php @@ -152,6 +152,34 @@ } } + //Получить узел метаданных из базы данных + function getMetadataNode($name) + { + global $db,$Schema; + + $xmls=''; + $sql='select xml from '.$Schema.'_metadata where del=false and name=\''.$name.'\';'; + $resX = $db->query($sql); + while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов + { + $xmls=''.trts($rowX['xml']).''; + } + if($xmls!='') + { + //sendError("Metadata node \"".$name."\" not find in database!"); + $objXMLDocument = new DOMDocument(); + try + { + $objXMLDocument->loadXML($xmls); + } catch (Exception $e) + { sendError($e->getMessage()); + } + $currNode=findNodeOnAttribute($objXMLDocument->documentElement, "type","n",$name); + return $currNode; + }else{ + return null; + } + } function special_handler($exception) { @@ -236,36 +264,18 @@ session_write_close(); //Разблокируем сессионный файл так как запросы могут быть достаточно долгими //if (!isset($_SESSION['USER_ID']) || $_SESSION['USER_ID']=='') sendError('Вы не авторизованы! '.$_SERVER['PHP_SELF']); - $name=findFirstNode($reqNode, "type")->getAttribute("n"); + $typename=findFirstNode($reqNode, "type")->getAttribute("n"); + $currNode=getMetadataNode($typename); - $xmls=''; - $sql='select xml from '.$Schema.'_metadata where del=false and name=\''.$name.'\';'; - $resX = $db->query($sql); - while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов - { - $xmls=''.trts($rowX['xml']).''; - } - if($xmls=='') - { - sendError("Metadata node \"".$name."\" not find in database!"); - } - - $objXMLDocument = new DOMDocument(); - try - { //$objXMLDocument->load('metadata.xml'); - $objXMLDocument->loadXML($xmls); - } catch (Exception $e) - { sendError($e->getMessage()); - } - - $currNode=findNodeOnAttribute($objXMLDocument->documentElement, "type","n",$name); if ($currNode!=null) { + $objXMLDocument=$currNode->ownerDocument; + //Вернём значение прав доступа для запрошенного объекта //$allow=true; $allow=false; - //$sql_query='select a.*,at.name from "_Access" a, "_Actions" at where a.del=false and at.id=a.action_id and at.name=\'Insert_'.$name.'\' and a.group_id in (select group_id from "_UsersGroups" where user_id='.$_SESSION['USER_ID'].');' - $sql_query='select '.$Schema.'p_getaccess('.getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']).',\'Insert_'.$name.'\') as allow;'; + //$sql_query='select a.*,at.name from "_Access" a, "_Actions" at where a.del=false and at.id=a.action_id and at.name=\'Insert_'.$typename.'\' and a.group_id in (select group_id from "_UsersGroups" where user_id='.$_SESSION['USER_ID'].');' + $sql_query='select '.$Schema.'p_getaccess('.getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']).',\'Insert_'.$typename.'\') as allow;'; $res = $db->query($sql_query); while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов @@ -277,8 +287,8 @@ $currNode->setAttributeNode($xmlAttr); $allow=false; - //$sql_query='select a.*,at.name from "_Access" a, "_Actions" at where a.del=false and at.id=a.action_id and at.name=\'Update_'.$name.'\' and a.group_id in (select group_id from "_UsersGroups" where user_id='.$_SESSION['USER_ID'].');'; - $sql_query='select '.$Schema.'p_getaccess('.getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']).',\'Update_'.$name.'\') as allow;'; + //$sql_query='select a.*,at.name from "_Access" a, "_Actions" at where a.del=false and at.id=a.action_id and at.name=\'Update_'.$typename.'\' and a.group_id in (select group_id from "_UsersGroups" where user_id='.$_SESSION['USER_ID'].');'; + $sql_query='select '.$Schema.'p_getaccess('.getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']).',\'Update_'.$typename.'\') as allow;'; $res = $db->query($sql_query); while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов { @@ -289,8 +299,8 @@ $currNode->setAttributeNode($xmlAttr); $allow=false; - //$sql_query='select a.*,at.name from "_Access" a, "_Actions" at where a.del=false and at.id=a.action_id and at.name=\'Delete_'.$name.'\' and a.group_id in (select group_id from "_UsersGroups" where user_id='.$_SESSION['USER_ID'].');'; - $sql_query='select '.$Schema.'p_getaccess('.getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']).',\'Delete_'.$name.'\') as allow;'; + //$sql_query='select a.*,at.name from "_Access" a, "_Actions" at where a.del=false and at.id=a.action_id and at.name=\'Delete_'.$typename.'\' and a.group_id in (select group_id from "_UsersGroups" where user_id='.$_SESSION['USER_ID'].');'; + $sql_query='select '.$Schema.'p_getaccess('.getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']).',\'Delete_'.$typename.'\') as allow;'; $res = $db->query($sql_query); while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов { @@ -318,36 +328,21 @@ Exit(); }else { - sendError('Не найден запрошенный узел: "'.$name.'"!'); + sendError('Не найден запрошенный узел: "'.$typename.'"!'); } }else if ($fn==1) //вставка записи (результат id записи) { + //if (!isset($_SESSION['USER_ID']) || $_SESSION['USER_ID']=='') sendError('Вы не авторизованы! '.$_SERVER['PHP_SELF']); session_write_close(); //Разблокируем сессионный файл так как запросы могут быть достаточно долгими - //if (!isset($_SESSION['USER_ID']) || $_SESSION['USER_ID']=='') sendError('Вы не авторизованы! '.$_SERVER['PHP_SELF']); + $typename=findFirstNode($reqNode,"type")->getAttribute("n"); - - $xmls=''; - $resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';'); - while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов - { - $xmls=''.trts($rowX['xml']).''; - } - if($xmls=='') - { - sendError("Metadata node \"".$name."\" is empty!"); - } - - $objXMLDocument = new DOMDocument(); - try - { //$objXMLDocument->load('metadata.xml'); - $objXMLDocument->loadXML($xmls); - } catch (Exception $e) - { sendError($e->getMessage()); - } - $currNode=findNodeOnAttribute($objXMLDocument->documentElement, "type","n",$typename); - if($currNode!=null) - { + $currNode=getMetadataNode($typename); + + if ($currNode!=null) + { + $objXMLDocument=$currNode->ownerDocument; + $sql_query=getCdataValue(findFirstNodeOnAttribute($currNode, "sql-query", "t", "i")); $nodeProp=findFirstNode($reqNode,"properties"); @@ -448,28 +443,12 @@ $obj_id=$nodeType->getAttribute("id"); $node_properties=findFirstNode($nodeType,"properties"); - $xmls=''; - $resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';'); - while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов - { - $xmls=''.trts($rowX['xml']).''; - } - if($xmls=='') - { - sendError("Metadata node \"".$name."\" is empty!"); - } - - $objXMLDocument = new DOMDocument(); - try - { //$objXMLDocument->load('metadata.xml'); - $objXMLDocument->loadXML($xmls); - } catch (Exception $e) - { sendError($e->getMessage()); - } + $currNode=getMetadataNode($typename); + + if ($currNode!=null) + { + $objXMLDocument=$currNode->ownerDocument; - $currNode=findNodeOnAttribute($objXMLDocument->documentElement, "type","n",$typename); - if($currNode!=null) - { $sql_query=getCdataValue(findFirstNodeOnAttribute($currNode, "sql-query", "t", "u")); //Представляем blob поля в SQL запросе в виде параметров $nodeProps=findFirstNode($reqNode,"properties"); @@ -572,27 +551,11 @@ $typename=$nodeType->getAttribute("n"); $obj_id=$nodeType->getAttribute("id"); - $xmls=''; - $resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';'); - while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов - { - $xmls=''.trts($rowX['xml']).''; - } - if($xmls=='') - { - sendError("Metadata node \"".$name."\" is empty!"); - } - - $objXMLDocument = new DOMDocument(); - try - { //$objXMLDocument->load('metadata.xml'); - $objXMLDocument->loadXML($xmls); - } catch (Exception $e) - { sendError($e->getMessage()); - } - $currNode=findNodeOnAttribute($objXMLDocument->documentElement, "type","n",$typename); - if($currNode!=null) - { + $currNode=getMetadataNode($typename); + if ($currNode!=null) + { + $objXMLDocument=$currNode->ownerDocument; + $sql_query=getCdataValue(findFirstNodeOnAttribute($currNode, "sql-query", "t", "d")); $sql_query=str_replace('${_user_id}',getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']),$sql_query); //Потому что PostgreSQL не может хранить id пользователя привязаного к сесии $sql_query=str_replace('${'.$currNode->getAttribute("ObjectID").'}',getSQLValue(gettype($obj_id),$obj_id),$sql_query); @@ -626,40 +589,22 @@ $nTypeR=findFirstNode($reqNode,'type'); $typename=$nTypeR->getAttribute("n"); $pagepos=$nTypeR->getAttribute("pp"); //текущяя страница page pos - - $xmls=''; - $resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';'); - while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов - { - $xmls=''.trts($rowX['xml']).''; - } - if($xmls=='') - { - sendError("Metadata node \"".$name."\" is empty!"); - } - - //Находим серверный XML узел по имени - $objXMLDocument = new DOMDocument(); - try - { //$objXMLDocument->load('metadata.xml'); - $objXMLDocument->loadXML($xmls); - } catch (Exception $e) - { sendError($e->getMessage()); - } - $nTypeS=findNodeOnAttribute($objXMLDocument->documentElement,"type","n",$typename); - if ($nTypeS!=null) - { + $currNode=getMetadataNode($typename); + if ($currNode!=null) + { + $objXMLDocument=$currNode->ownerDocument; + $objListR = findFirstNode($nTypeR,'objects-list'); //В переданном запросе может быть не полный фильтр заполняем серверный значениями из переданного - $f1=findNodeOnPath($nTypeS,'objects-list/filter'); + $f1=findNodeOnPath($currNode,'objects-list/filter'); $f2=findNodeOnPath($nTypeR,'objects-list/filter'); setFilter($f1,$f2);//заменить все значения первого фильтра значениями из второго //+++++++ //$objXMLDocument->saveXML($currNode) - $sql_query=getCdataValue(findNodeOnPath($nTypeS, "objects-list/sql-query")); + $sql_query=getCdataValue(findNodeOnPath($currNode, "objects-list/sql-query")); //sendError($sql_query); @@ -679,7 +624,7 @@ $sql_query=str_replace('${_user_id}',getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']),$sql_query); if($objListR!=null && $objListR->getAttribute('order')!='' && $objListR->getAttribute('order')!=null && $objListR->getAttribute('order')!='null') { - $sql_query=str_replace('${_order}',findNodeOnAttribute(findFirstNode($nTypeS,'objects-list'), "column","n",$objListR->getAttribute("order"))->getAttribute("order"),$sql_query); + $sql_query=str_replace('${_order}',findNodeOnAttribute(findFirstNode($currNode,'objects-list'), "column","n",$objListR->getAttribute("order"))->getAttribute("order"),$sql_query); }else $sql_query=str_replace('${_order}','1',$sql_query); //sendError($sql_query); @@ -708,7 +653,7 @@ } if(count($columns)==0)//Если нет ни одного столбца заполняем массив из серверного XML { - $nextnode=findNode($nTypeS,'objects-list'); + $nextnode=findNode($currNode,'objects-list'); if($nextnode) { $nextnode=$nextnode->firstChild;//Пытаемся заполнить из запроса $i=0; @@ -728,7 +673,7 @@ $xmlstring.=''."\n"; //Перечисляю название выбираемых столбцов через запятую $xmlstring.=''; - $nextnode=findNode($nTypeS,'objects-list')->firstChild; + $nextnode=findNode($currNode,'objects-list')->firstChild; while ($nextnode) { if ($nextnode->nodeName=='column') @@ -753,8 +698,8 @@ if(!array_key_exists("_u",$row)) { $access.="u"; } else { $access.=$row["_u"]; } if(!array_key_exists("_d",$row)) { $access.="d"; } else { $access.=$row["_d"]; } - $xmlstring.=' '; - $nextnode=findNode($nTypeS,'objects-list')->firstChild; + $xmlstring.=' '; + $nextnode=findNode($currNode,'objects-list')->firstChild; while ($nextnode) { if ($nextnode->nodeName=='column') @@ -794,28 +739,11 @@ $typename=$node->getAttribute("n"); $idval=$node->getAttribute("id"); //Значение идентификатора - $xmls=''; - $resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';'); - while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов - { - $xmls=''.trts($rowX['xml']).''; - } - if($xmls=='') - { - sendError("Metadata node \"".$name."\" is empty!"); - } - - //Находим серверный XML узел по имени - $objXMLDocument = new DOMDocument(); - try - { //$objXMLDocument->load('metadata.xml'); - $objXMLDocument->loadXML($xmls); - } catch (Exception $e) - { sendError($e->getMessage()); - } - $currNode=findNodeOnAttribute($objXMLDocument->documentElement, "type","n",$typename); - if($currNode!=null) - { + $currNode=getMetadataNode($typename); + if ($currNode!=null) + { + $objXMLDocument=$currNode->ownerDocument; + //Тип поля с ObjectID $nField=findFirstNodeOnAttribute(findNode($currNode, 'properties'), "prop", "n", $node->getAttribute('ObjectID')); $csql=findNode(findFirstNodeOnAttribute($currNode, "sql-query", "t", "s"), "#cdata-section"); @@ -910,35 +838,18 @@ //Теперь а нутри фильтра передаётся поэтому ненужно $propid=$tNodeR->getAttribute("id"); //-1 или '' то много записей иначе 1 должна вернуться //if($propid==-1 || $propid=='') $propid='NULL'; - $xmls=''; - $resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';'); - while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов - { - $xmls=''.trts($rowX['xml']).''; - } - if(!$xmls){ - sendError("XML node \"".$typename."\" not find!"); - } - - //ищем в метаданных нужный обьект и применяем фильтр для получения данных с помошью хранимой процедуры - $mdoc = new DOMDocument(); - try - { //$mdoc->load('metadata.xml'); - $mdoc->loadXML($xmls); - } catch (Exception $e) - { sendError($e->getMessage()); - } - //находим нужный узел - $node=findNodeOnAttribute($mdoc->documentElement, "type","n",$typename); - if($node==null) sendError("Not find \"".$typename."\"!"); + + $currNode=getMetadataNode($typename); + if($currNode==null) sendError("Not find \"".$typename."\"!"); + $objXMLDocument=$currNode->ownerDocument; $objListR = findFirstNode($tNodeR,'objects-list'); //Из запроса - $f1=findNodeOnPath($node, 'objects-list/filter'); + $f1=findNodeOnPath($currNode, 'objects-list/filter'); $f2=findNodeOnPath($tNodeR,'objects-list/filter'); setFilter($f1,$f2);//заменить все значения первого фильтра значениями из второго - $sql_query=getCdataValue(findNodeOnPath($node, "objects-list/sql-query")); + $sql_query=getCdataValue(findNodeOnPath($currNode, "objects-list/sql-query")); if($f1!=NULL) { $nextnode=$f1->firstChild; @@ -950,11 +861,11 @@ $nextnode = $nextnode->nextSibling; } } - //$sql_query=str_replace('${'.$node->getAttribute("ObjectID").'}',getSQLValue(gettype($propid),$propid),$sql_query); //Чтоб вернулась 1 запись если это не выпадающий + //$sql_query=str_replace('${'.$currNode->getAttribute("ObjectID").'}',getSQLValue(gettype($propid),$propid),$sql_query); //Чтоб вернулась 1 запись если это не выпадающий $sql_query=str_replace('${_user_id}',getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']),$sql_query); if($objListR!=null && $objListR->getAttribute('order')!='' && $objListR->getAttribute('order')!=null && $objListR->getAttribute('order')!='null') { - $sql_query=str_replace('${_order}',findNodeOnAttribute(findFirstNode($nTypeS,'objects-list'), "column","n",$objListR->getAttribute("order"))->getAttribute("order"),$sql_query); + $sql_query=str_replace('${_order}',findNodeOnAttribute(findFirstNode($currNode,'objects-list'), "column","n",$objListR->getAttribute("order"))->getAttribute("order"),$sql_query); }else $sql_query=str_replace('${_order}','1',$sql_query); try @@ -969,7 +880,7 @@ $xmlstring.=''."\n"; while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов { - $xmlstring.=''; + $xmlstring.=''; $val=""; for($i=0;$igetAttribute("n"); $ext=$nTypeR->getAttribute("ext"); - $xmls=''; - $resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';'); - while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов - { - $xmls=''.trts($rowX['xml']).''; - } - if($xmls=='') - { - sendError("Metadata node \"".$name."\" is empty!"); - } - - //Находим серверный XML узел по имени - $objXMLDocument = new DOMDocument(); - try - { - //$objXMLDocument->load('metadata.xml'); - //$objXMLDocument->loadXML(parseGetText(file_get_contents('metadata.xml'))); - $objXMLDocument->loadXML($xmls); - } catch (Exception $e) - { sendError($e->getMessage()); - } + $currNode=getMetadataNode($typename); + if ($currNode!=null) + { + $objXMLDocument=$currNode->ownerDocument; - $nTypeS=findNodeOnAttribute($objXMLDocument->documentElement,"type","n",$typename); - if ($nTypeS!=null) - { //В переданном запросе может быть не полный фильтр заполняем серверный значениями из переданного - $f1=findNodeOnPath($nTypeS,'objects-list/filter'); + $f1=findNodeOnPath($currNode,'objects-list/filter'); $f2=findNodeOnPath($nTypeR,'objects-list/filter'); setFilter($f1,$f2);//заменить все значения первого фильтра значениями из второго + //Текстовые данные заполняются в поле caption и они вставляются в поля для информации что было заполнено //Выбираем параметры фильтра (Для информирования что было заполнено) - $filter=''.trt('Filter options').'
'; + $filter=''.trt('Filter_options').'
'; $nextnode=$f1->firstChild; while ($nextnode) { if ($nextnode->nodeName=='column') @@ -1153,7 +1045,8 @@ }else { //Ищем нужный узел и выполняем запрос - $nTypeO=findNodeOnAttribute($objXMLDocument->documentElement,"type","n",$nextnode->getAttribute("object")); + $nTypeO=getMetadataNode($nextnode->getAttribute("object")); + //$nTypeO=findNodeOnAttribute($objXMLDocument->documentElement,"type","n",$nextnode->getAttribute("object")); $sql_query=getCdataValue(findNodeOnPath($nTypeO, "objects-list/sql-query")); $sql_query=str_replace('${_user_id}',getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']),$sql_query); @@ -1205,7 +1098,7 @@ $nextnode = $nextnode->nextSibling; } - $sql_query=getCdataValue(findNodeOnPath($nTypeS, "objects-list/sql-query")); + $sql_query=getCdataValue(findNodeOnPath($currNode, "objects-list/sql-query")); $nextnode=$f1->firstChild; while ($nextnode) { if ($nextnode->nodeName=='column') @@ -1235,21 +1128,21 @@ { fwrite($fh, ''."\n"); fwrite($fh, ' '."\n"); - fwrite($fh, ' '.$nTypeS->getAttribute("d").''."\n"); + fwrite($fh, ' '.$currNode->getAttribute("d").''."\n"); fwrite($fh, ' '."\n"); fwrite($fh, ''); fwrite($fh, ' '."\n"); fwrite($fh, ' '."\n"); - fwrite($fh, ''.trt('Time and date of generation').': '.date('H:i:s m.d.Y').'
'); + fwrite($fh, ''.trt('Time_and_date_of_generation').': '.date('H:i:s m.d.Y').'
'); fwrite($fh, ''.trt('Creator').': '.$name); fwrite($fh, $filter); fwrite($fh, ' '."\n"); - fwrite($fh, ' '."\n"); + fwrite($fh, ' '."\n"); fwrite($fh, ' '."\n"); fwrite($fh, ' '); - $nextnode=findNode($nTypeS,'objects-list')->firstChild; + $nextnode=findNode($currNode,'objects-list')->firstChild; $col=0; while ($nextnode) { if ($nextnode->nodeName=='column') @@ -1263,7 +1156,7 @@ while ($row = $res->fetch(PDO::FETCH_ASSOC)) { fwrite($fh, ' '); - $nextnode=findNode($nTypeS,'objects-list')->firstChild; + $nextnode=findNode($currNode,'objects-list')->firstChild; while ($nextnode) { if ($nextnode->nodeName=='column') { @@ -1384,10 +1277,10 @@ { echo $e->getMessage(); } - $nTypeS=findNodeOnAttribute($objXMLDocument->documentElement,"type","n",$typename); - if ($nTypeS!=null) + $currNode=findNodeOnAttribute($objXMLDocument->documentElement,"type","n",$typename); + if ($currNode!=null) { - $pnode=findFirstNode($nTypeS,'properties'); + $pnode=findFirstNode($currNode,'properties'); $fnode=findFirstNodeOnAttribute($pnode,"prop","n",$field); //Поле в metedata.xml файла $nnode=findFirstNodeOnAttribute($pnode,"prop","n",$fnode->getAttribute("cd")); //Поле в metedata.xml с именем файла @@ -1408,12 +1301,12 @@ }else if($fnode->getAttribute("vt")=="file") //Отправить файл клиенту из файловой системы { //Тип поля с ObjectID - $nField=findFirstNodeOnAttribute(findNode($nTypeS, 'properties'), "prop", "n", $nTypeS->getAttribute('ObjectID')); - $csql=findNode(findFirstNodeOnAttribute($nTypeS, "sql-query", "t", "s"), "#cdata-section"); + $nField=findFirstNodeOnAttribute(findNode($currNode, 'properties'), "prop", "n", $currNode->getAttribute('ObjectID')); + $csql=findNode(findFirstNodeOnAttribute($currNode, "sql-query", "t", "s"), "#cdata-section"); if($csql!=NULL && $csql->nodeValue!="") //Есть ли SQL запрос { $sql_query=$csql->nodeValue; - $sql_query=str_replace('${'.$nTypeS->getAttribute("ObjectID").'}',getSQLValue($nField->getAttribute('vt'),$idval),$sql_query); + $sql_query=str_replace('${'.$currNode->getAttribute("ObjectID").'}',getSQLValue($nField->getAttribute('vt'),$idval),$sql_query); $sql_query=str_replace('${_user_id}',getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']),$sql_query); } diff --git a/metadata/dbms/showrecord.js b/metadata/dbms/showrecord.js index 1e01ded..3bd1182 100644 --- a/metadata/dbms/showrecord.js +++ b/metadata/dbms/showrecord.js @@ -1447,7 +1447,7 @@ class SRec this.rwin.setParent(this.win); this.rwin.setSize(280,130); this.rwin.setCaption(trt('Report')); - this.rwin.setContent('
'.findNode($nTypeS,'objects-list')->getAttribute("d").''.findNode($currNode,'objects-list')->getAttribute("d").'
'+trt('Preparing_of_report')+'
'); + this.rwin.setContent('
'+trt('Preparing_of_report')+'
'); this.appendFilter(); //Call data from server diff --git a/metadata/dbms/tools.js b/metadata/dbms/tools.js index 4662690..6a090ca 100644 --- a/metadata/dbms/tools.js +++ b/metadata/dbms/tools.js @@ -1260,8 +1260,8 @@ class TWin let imgB='g_b.png'; let imgX='x_w.png'; if(g_textColor1=='#000000') { //Если тёмный стиль - imgB = 'g_w.png'; - imgX = 'x_b.png'; + imgB = 'g_w.gif'; + imgX = 'x_b.gif'; } let str='';