GIF и другие мелочи

This commit is contained in:
2020-08-25 16:47:33 +06:00
parent 39b8ec786a
commit e25f7ba293
7 changed files with 107 additions and 214 deletions

BIN
metadata/dbms/form/g_b.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

BIN
metadata/dbms/form/g_w.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

BIN
metadata/dbms/form/x_b.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 B

BIN
metadata/dbms/form/x_w.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 B

View File

@ -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='<?xml version="1.0" encoding="UTF-8"?><metadata>'.trts($rowX['xml']).'</metadata>';
}
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) function special_handler($exception)
{ {
@ -236,36 +264,18 @@
session_write_close(); //Разблокируем сессионный файл так как запросы могут быть достаточно долгими session_write_close(); //Разблокируем сессионный файл так как запросы могут быть достаточно долгими
//if (!isset($_SESSION['USER_ID']) || $_SESSION['USER_ID']=='') sendError('Вы не авторизованы! '.$_SERVER['PHP_SELF']); //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='<?xml version="1.0" encoding="UTF-8"?><metadata>'.trts($rowX['xml']).'</metadata>';
}
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) if ($currNode!=null)
{ {
$objXMLDocument=$currNode->ownerDocument;
//Вернём значение прав доступа для запрошенного объекта //Вернём значение прав доступа для запрошенного объекта
//$allow=true; //$allow=true;
$allow=false; $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 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_'.$name.'\') as allow;'; $sql_query='select '.$Schema.'p_getaccess('.getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']).',\'Insert_'.$typename.'\') as allow;';
$res = $db->query($sql_query); $res = $db->query($sql_query);
while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
@ -277,8 +287,8 @@
$currNode->setAttributeNode($xmlAttr); $currNode->setAttributeNode($xmlAttr);
$allow=false; $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 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_'.$name.'\') as allow;'; $sql_query='select '.$Schema.'p_getaccess('.getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']).',\'Update_'.$typename.'\') as allow;';
$res = $db->query($sql_query); $res = $db->query($sql_query);
while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
{ {
@ -289,8 +299,8 @@
$currNode->setAttributeNode($xmlAttr); $currNode->setAttributeNode($xmlAttr);
$allow=false; $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 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_'.$name.'\') as allow;'; $sql_query='select '.$Schema.'p_getaccess('.getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']).',\'Delete_'.$typename.'\') as allow;';
$res = $db->query($sql_query); $res = $db->query($sql_query);
while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
{ {
@ -318,36 +328,21 @@
Exit(); Exit();
}else }else
{ {
sendError('Не найден запрошенный узел: "'.$name.'"!'); sendError('Не найден запрошенный узел: "'.$typename.'"!');
} }
}else }else
if ($fn==1) //вставка записи (результат id записи) if ($fn==1) //вставка записи (результат id записи)
{ {
session_write_close(); //Разблокируем сессионный файл так как запросы могут быть достаточно долгими
//if (!isset($_SESSION['USER_ID']) || $_SESSION['USER_ID']=='') sendError('Вы не авторизованы! '.$_SERVER['PHP_SELF']); //if (!isset($_SESSION['USER_ID']) || $_SESSION['USER_ID']=='') sendError('Вы не авторизованы! '.$_SERVER['PHP_SELF']);
session_write_close(); //Разблокируем сессионный файл так как запросы могут быть достаточно долгими
$typename=findFirstNode($reqNode,"type")->getAttribute("n"); $typename=findFirstNode($reqNode,"type")->getAttribute("n");
$currNode=getMetadataNode($typename);
$xmls='';
$resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';');
while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
{
$xmls='<?xml version="1.0" encoding="UTF-8"?><metadata>'.trts($rowX['xml']).'</metadata>';
}
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) if ($currNode!=null)
{ {
$objXMLDocument=$currNode->ownerDocument;
$sql_query=getCdataValue(findFirstNodeOnAttribute($currNode, "sql-query", "t", "i")); $sql_query=getCdataValue(findFirstNodeOnAttribute($currNode, "sql-query", "t", "i"));
$nodeProp=findFirstNode($reqNode,"properties"); $nodeProp=findFirstNode($reqNode,"properties");
@ -448,28 +443,12 @@
$obj_id=$nodeType->getAttribute("id"); $obj_id=$nodeType->getAttribute("id");
$node_properties=findFirstNode($nodeType,"properties"); $node_properties=findFirstNode($nodeType,"properties");
$xmls=''; $currNode=getMetadataNode($typename);
$resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';');
while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
{
$xmls='<?xml version="1.0" encoding="UTF-8"?><metadata>'.trts($rowX['xml']).'</metadata>';
}
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) if ($currNode!=null)
{ {
$objXMLDocument=$currNode->ownerDocument;
$sql_query=getCdataValue(findFirstNodeOnAttribute($currNode, "sql-query", "t", "u")); $sql_query=getCdataValue(findFirstNodeOnAttribute($currNode, "sql-query", "t", "u"));
//Представляем blob поля в SQL запросе в виде параметров //Представляем blob поля в SQL запросе в виде параметров
$nodeProps=findFirstNode($reqNode,"properties"); $nodeProps=findFirstNode($reqNode,"properties");
@ -572,27 +551,11 @@
$typename=$nodeType->getAttribute("n"); $typename=$nodeType->getAttribute("n");
$obj_id=$nodeType->getAttribute("id"); $obj_id=$nodeType->getAttribute("id");
$xmls=''; $currNode=getMetadataNode($typename);
$resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';');
while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
{
$xmls='<?xml version="1.0" encoding="UTF-8"?><metadata>'.trts($rowX['xml']).'</metadata>';
}
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) if ($currNode!=null)
{ {
$objXMLDocument=$currNode->ownerDocument;
$sql_query=getCdataValue(findFirstNodeOnAttribute($currNode, "sql-query", "t", "d")); $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('${_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); $sql_query=str_replace('${'.$currNode->getAttribute("ObjectID").'}',getSQLValue(gettype($obj_id),$obj_id),$sql_query);
@ -627,39 +590,21 @@
$typename=$nTypeR->getAttribute("n"); $typename=$nTypeR->getAttribute("n");
$pagepos=$nTypeR->getAttribute("pp"); //текущяя страница page pos $pagepos=$nTypeR->getAttribute("pp"); //текущяя страница page pos
$xmls=''; $currNode=getMetadataNode($typename);
$resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';'); if ($currNode!=null)
while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
{ {
$xmls='<?xml version="1.0" encoding="UTF-8"?><metadata>'.trts($rowX['xml']).'</metadata>'; $objXMLDocument=$currNode->ownerDocument;
}
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)
{
$objListR = findFirstNode($nTypeR,'objects-list'); $objListR = findFirstNode($nTypeR,'objects-list');
//В переданном запросе может быть не полный фильтр заполняем серверный значениями из переданного //В переданном запросе может быть не полный фильтр заполняем серверный значениями из переданного
$f1=findNodeOnPath($nTypeS,'objects-list/filter'); $f1=findNodeOnPath($currNode,'objects-list/filter');
$f2=findNodeOnPath($nTypeR,'objects-list/filter'); $f2=findNodeOnPath($nTypeR,'objects-list/filter');
setFilter($f1,$f2);//заменить все значения первого фильтра значениями из второго setFilter($f1,$f2);//заменить все значения первого фильтра значениями из второго
//+++++++ //+++++++
//$objXMLDocument->saveXML($currNode) //$objXMLDocument->saveXML($currNode)
$sql_query=getCdataValue(findNodeOnPath($nTypeS, "objects-list/sql-query")); $sql_query=getCdataValue(findNodeOnPath($currNode, "objects-list/sql-query"));
//sendError($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); $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') 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); }else $sql_query=str_replace('${_order}','1',$sql_query);
//sendError($sql_query); //sendError($sql_query);
@ -708,7 +653,7 @@
} }
if(count($columns)==0)//Если нет ни одного столбца заполняем массив из серверного XML if(count($columns)==0)//Если нет ни одного столбца заполняем массив из серверного XML
{ {
$nextnode=findNode($nTypeS,'objects-list'); $nextnode=findNode($currNode,'objects-list');
if($nextnode) if($nextnode)
{ $nextnode=$nextnode->firstChild;//Пытаемся заполнить из запроса { $nextnode=$nextnode->firstChild;//Пытаемся заполнить из запроса
$i=0; $i=0;
@ -728,7 +673,7 @@
$xmlstring.='<metadata fn="'.$fn.'" reqid="'.$reqid.'"><type n="'.$typename.'" pc="'.$pagecount.'" pp="'.$pagepos.'">'."\n"; $xmlstring.='<metadata fn="'.$fn.'" reqid="'.$reqid.'"><type n="'.$typename.'" pc="'.$pagecount.'" pp="'.$pagepos.'">'."\n";
//Перечисляю название выбираемых столбцов через запятую //Перечисляю название выбираемых столбцов через запятую
$xmlstring.='<objects-list>'; $xmlstring.='<objects-list>';
$nextnode=findNode($nTypeS,'objects-list')->firstChild; $nextnode=findNode($currNode,'objects-list')->firstChild;
while ($nextnode) while ($nextnode)
{ {
if ($nextnode->nodeName=='column') if ($nextnode->nodeName=='column')
@ -753,8 +698,8 @@
if(!array_key_exists("_u",$row)) { $access.="u"; } else { $access.=$row["_u"]; } if(!array_key_exists("_u",$row)) { $access.="u"; } else { $access.=$row["_u"]; }
if(!array_key_exists("_d",$row)) { $access.="d"; } else { $access.=$row["_d"]; } if(!array_key_exists("_d",$row)) { $access.="d"; } else { $access.=$row["_d"]; }
$xmlstring.=' <record id="'.$row[$nTypeS->getAttribute("ObjectID")].'" a="'.$access.'">'; $xmlstring.=' <record id="'.$row[$currNode->getAttribute("ObjectID")].'" a="'.$access.'">';
$nextnode=findNode($nTypeS,'objects-list')->firstChild; $nextnode=findNode($currNode,'objects-list')->firstChild;
while ($nextnode) while ($nextnode)
{ {
if ($nextnode->nodeName=='column') if ($nextnode->nodeName=='column')
@ -794,28 +739,11 @@
$typename=$node->getAttribute("n"); $typename=$node->getAttribute("n");
$idval=$node->getAttribute("id"); //Значение идентификатора $idval=$node->getAttribute("id"); //Значение идентификатора
$xmls=''; $currNode=getMetadataNode($typename);
$resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';');
while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
{
$xmls='<?xml version="1.0" encoding="UTF-8"?><metadata>'.trts($rowX['xml']).'</metadata>';
}
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) if ($currNode!=null)
{ {
$objXMLDocument=$currNode->ownerDocument;
//Тип поля с ObjectID //Тип поля с ObjectID
$nField=findFirstNodeOnAttribute(findNode($currNode, 'properties'), "prop", "n", $node->getAttribute('ObjectID')); $nField=findFirstNodeOnAttribute(findNode($currNode, 'properties'), "prop", "n", $node->getAttribute('ObjectID'));
$csql=findNode(findFirstNodeOnAttribute($currNode, "sql-query", "t", "s"), "#cdata-section"); $csql=findNode(findFirstNodeOnAttribute($currNode, "sql-query", "t", "s"), "#cdata-section");
@ -910,35 +838,18 @@
//Теперь а нутри фильтра передаётся поэтому ненужно $propid=$tNodeR->getAttribute("id"); //-1 или '' то много записей иначе 1 должна вернуться //Теперь а нутри фильтра передаётся поэтому ненужно $propid=$tNodeR->getAttribute("id"); //-1 или '' то много записей иначе 1 должна вернуться
//if($propid==-1 || $propid=='') $propid='NULL'; //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='<?xml version="1.0" encoding="UTF-8"?><metadata>'.trts($rowX['xml']).'</metadata>';
}
if(!$xmls){
sendError("XML node \"".$typename."\" not find!");
}
//ищем в метаданных нужный обьект и применяем фильтр для получения данных с помошью хранимой процедуры $currNode=getMetadataNode($typename);
$mdoc = new DOMDocument(); if($currNode==null) sendError("Not find \"".$typename."\"!");
try $objXMLDocument=$currNode->ownerDocument;
{ //$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."\"!");
$objListR = findFirstNode($tNodeR,'objects-list'); //Из запроса $objListR = findFirstNode($tNodeR,'objects-list'); //Из запроса
$f1=findNodeOnPath($node, 'objects-list/filter'); $f1=findNodeOnPath($currNode, 'objects-list/filter');
$f2=findNodeOnPath($tNodeR,'objects-list/filter'); $f2=findNodeOnPath($tNodeR,'objects-list/filter');
setFilter($f1,$f2);//заменить все значения первого фильтра значениями из второго setFilter($f1,$f2);//заменить все значения первого фильтра значениями из второго
$sql_query=getCdataValue(findNodeOnPath($node, "objects-list/sql-query")); $sql_query=getCdataValue(findNodeOnPath($currNode, "objects-list/sql-query"));
if($f1!=NULL) if($f1!=NULL)
{ {
$nextnode=$f1->firstChild; $nextnode=$f1->firstChild;
@ -950,11 +861,11 @@
$nextnode = $nextnode->nextSibling; $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); $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') 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); }else $sql_query=str_replace('${_order}','1',$sql_query);
try try
@ -969,7 +880,7 @@
$xmlstring.='<type n="'.$typename.'" pn="'.$propName.'">'."\n"; $xmlstring.='<type n="'.$typename.'" pn="'.$propName.'">'."\n";
while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
{ {
$xmlstring.='<record id="'.$row[$node->getAttribute("ObjectID")].'">'; $xmlstring.='<record id="'.$row[$currNode->getAttribute("ObjectID")].'">';
$val=""; $val="";
for($i=0;$i<count($columns);$i++) for($i=0;$i<count($columns);$i++)
{ {
@ -1107,38 +1018,19 @@
$typename=$nTypeR->getAttribute("n"); $typename=$nTypeR->getAttribute("n");
$ext=$nTypeR->getAttribute("ext"); $ext=$nTypeR->getAttribute("ext");
$xmls=''; $currNode=getMetadataNode($typename);
$resX = $db->query('select xml from '.$Schema.'_metadata where del=false and name=\''.$typename.'\';'); if ($currNode!=null)
while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
{ {
$xmls='<?xml version="1.0" encoding="UTF-8"?><metadata>'.trts($rowX['xml']).'</metadata>'; $objXMLDocument=$currNode->ownerDocument;
}
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());
}
$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'); $f2=findNodeOnPath($nTypeR,'objects-list/filter');
setFilter($f1,$f2);//заменить все значения первого фильтра значениями из второго setFilter($f1,$f2);//заменить все значения первого фильтра значениями из второго
//Текстовые данные заполняются в поле caption и они вставляются в поля для информации что было заполнено
//Выбираем параметры фильтра (Для информирования что было заполнено) //Выбираем параметры фильтра (Для информирования что было заполнено)
$filter='<b>'.trt('Filter options').'</b><br>'; $filter='<b>'.trt('Filter_options').'</b><br>';
$nextnode=$f1->firstChild; $nextnode=$f1->firstChild;
while ($nextnode) while ($nextnode)
{ if ($nextnode->nodeName=='column') { if ($nextnode->nodeName=='column')
@ -1153,7 +1045,8 @@
}else }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=getCdataValue(findNodeOnPath($nTypeO, "objects-list/sql-query"));
$sql_query=str_replace('${_user_id}',getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']),$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; $nextnode = $nextnode->nextSibling;
} }
$sql_query=getCdataValue(findNodeOnPath($nTypeS, "objects-list/sql-query")); $sql_query=getCdataValue(findNodeOnPath($currNode, "objects-list/sql-query"));
$nextnode=$f1->firstChild; $nextnode=$f1->firstChild;
while ($nextnode) while ($nextnode)
{ if ($nextnode->nodeName=='column') { if ($nextnode->nodeName=='column')
@ -1235,21 +1128,21 @@
{ {
fwrite($fh, '<html>'."\n"); fwrite($fh, '<html>'."\n");
fwrite($fh, ' <head>'."\n"); fwrite($fh, ' <head>'."\n");
fwrite($fh, ' <title>'.$nTypeS->getAttribute("d").'</title>'."\n"); fwrite($fh, ' <title>'.$currNode->getAttribute("d").'</title>'."\n");
fwrite($fh, ' <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'."\n"); fwrite($fh, ' <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'."\n");
fwrite($fh, '<style>td {mso-number-format: "\@";}</style>'); fwrite($fh, '<style>td {mso-number-format: "\@";}</style>');
fwrite($fh, ' </head>'."\n"); fwrite($fh, ' </head>'."\n");
fwrite($fh, ' <body>'."\n"); fwrite($fh, ' <body>'."\n");
fwrite($fh, '<b>'.trt('Time and date of generation').': </b><i>'.date('H:i:s m.d.Y').'</i><br>'); fwrite($fh, '<b>'.trt('Time_and_date_of_generation').': </b><i>'.date('H:i:s m.d.Y').'</i><br>');
fwrite($fh, '<b>'.trt('Creator').': </b>'.$name); fwrite($fh, '<b>'.trt('Creator').': </b>'.$name);
fwrite($fh, $filter); fwrite($fh, $filter);
fwrite($fh, ' <table border="1" cellspacing="0">'."\n"); fwrite($fh, ' <table border="1" cellspacing="0">'."\n");
fwrite($fh, ' <caption><b>'.findNode($nTypeS,'objects-list')->getAttribute("d").'</b></caption>'."\n"); fwrite($fh, ' <caption><b>'.findNode($currNode,'objects-list')->getAttribute("d").'</b></caption>'."\n");
fwrite($fh, ' <thead>'."\n"); fwrite($fh, ' <thead>'."\n");
fwrite($fh, ' <tr>'); fwrite($fh, ' <tr>');
$nextnode=findNode($nTypeS,'objects-list')->firstChild; $nextnode=findNode($currNode,'objects-list')->firstChild;
$col=0; $col=0;
while ($nextnode) while ($nextnode)
{ if ($nextnode->nodeName=='column') { if ($nextnode->nodeName=='column')
@ -1263,7 +1156,7 @@
while ($row = $res->fetch(PDO::FETCH_ASSOC)) while ($row = $res->fetch(PDO::FETCH_ASSOC))
{ {
fwrite($fh, ' <tr>'); fwrite($fh, ' <tr>');
$nextnode=findNode($nTypeS,'objects-list')->firstChild; $nextnode=findNode($currNode,'objects-list')->firstChild;
while ($nextnode) while ($nextnode)
{ if ($nextnode->nodeName=='column') { if ($nextnode->nodeName=='column')
{ {
@ -1384,10 +1277,10 @@
{ echo $e->getMessage(); { echo $e->getMessage();
} }
$nTypeS=findNodeOnAttribute($objXMLDocument->documentElement,"type","n",$typename); $currNode=findNodeOnAttribute($objXMLDocument->documentElement,"type","n",$typename);
if ($nTypeS!=null) if ($currNode!=null)
{ {
$pnode=findFirstNode($nTypeS,'properties'); $pnode=findFirstNode($currNode,'properties');
$fnode=findFirstNodeOnAttribute($pnode,"prop","n",$field); //Поле в metedata.xml файла $fnode=findFirstNodeOnAttribute($pnode,"prop","n",$field); //Поле в metedata.xml файла
$nnode=findFirstNodeOnAttribute($pnode,"prop","n",$fnode->getAttribute("cd")); //Поле в metedata.xml с именем файла $nnode=findFirstNodeOnAttribute($pnode,"prop","n",$fnode->getAttribute("cd")); //Поле в metedata.xml с именем файла
@ -1408,12 +1301,12 @@
}else if($fnode->getAttribute("vt")=="file") //Отправить файл клиенту из файловой системы }else if($fnode->getAttribute("vt")=="file") //Отправить файл клиенту из файловой системы
{ {
//Тип поля с ObjectID //Тип поля с ObjectID
$nField=findFirstNodeOnAttribute(findNode($nTypeS, 'properties'), "prop", "n", $nTypeS->getAttribute('ObjectID')); $nField=findFirstNodeOnAttribute(findNode($currNode, 'properties'), "prop", "n", $currNode->getAttribute('ObjectID'));
$csql=findNode(findFirstNodeOnAttribute($nTypeS, "sql-query", "t", "s"), "#cdata-section"); $csql=findNode(findFirstNodeOnAttribute($currNode, "sql-query", "t", "s"), "#cdata-section");
if($csql!=NULL && $csql->nodeValue!="") //Есть ли SQL запрос if($csql!=NULL && $csql->nodeValue!="") //Есть ли SQL запрос
{ {
$sql_query=$csql->nodeValue; $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); $sql_query=str_replace('${_user_id}',getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']),$sql_query);
} }

View File

@ -1447,7 +1447,7 @@ class SRec
this.rwin.setParent(this.win); this.rwin.setParent(this.win);
this.rwin.setSize(280,130); this.rwin.setSize(280,130);
this.rwin.setCaption(trt('Report')); this.rwin.setCaption(trt('Report'));
this.rwin.setContent('<table border="0px" style="width: 100%; height: 100%; background-color: #f1f1f1;"><tr><td align="center"><b>'+trt('Preparing_of_report')+'</b></td></tr><tr><td align="center"><img src="./metadata/dbms/form/loading.gif" alt=""/></td></tr></table>'); this.rwin.setContent('<table border="0px" style="width: 100%; height: 100%; background-color: #f1f1f1;"><tr><td align="center"><b>'+trt('Preparing_of_report')+'</b></td></tr></table>');
this.appendFilter(); this.appendFilter();
//Call data from server //Call data from server

View File

@ -1260,8 +1260,8 @@ class TWin
let imgB='g_b.png'; let imgB='g_b.png';
let imgX='x_w.png'; let imgX='x_w.png';
if(g_textColor1=='#000000') { //Если тёмный стиль if(g_textColor1=='#000000') { //Если тёмный стиль
imgB = 'g_w.png'; imgB = 'g_w.gif';
imgX = 'x_b.png'; imgX = 'x_b.gif';
} }
let str=''; let str='';