GIF и другие мелочи
This commit is contained in:
BIN
metadata/dbms/form/g_b.gif
Normal file
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
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
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
BIN
metadata/dbms/form/x_w.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 82 B |
@ -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 записи)
|
||||||
{
|
{
|
||||||
|
//if (!isset($_SESSION['USER_ID']) || $_SESSION['USER_ID']=='') sendError('Вы не авторизованы! '.$_SERVER['PHP_SELF']);
|
||||||
session_write_close(); //Разблокируем сессионный файл так как запросы могут быть достаточно долгими
|
session_write_close(); //Разблокируем сессионный файл так как запросы могут быть достаточно долгими
|
||||||
//if (!isset($_SESSION['USER_ID']) || $_SESSION['USER_ID']=='') sendError('Вы не авторизованы! '.$_SERVER['PHP_SELF']);
|
|
||||||
$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.'\';');
|
if ($currNode!=null)
|
||||||
while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
|
{
|
||||||
{
|
$objXMLDocument=$currNode->ownerDocument;
|
||||||
$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)
|
|
||||||
{
|
|
||||||
$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 - ассоциативный массив значений, ключи - названия столбцов
|
if ($currNode!=null)
|
||||||
{
|
{
|
||||||
$xmls='<?xml version="1.0" encoding="UTF-8"?><metadata>'.trts($rowX['xml']).'</metadata>';
|
$objXMLDocument=$currNode->ownerDocument;
|
||||||
}
|
|
||||||
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)
|
|
||||||
{
|
|
||||||
$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.'\';');
|
if ($currNode!=null)
|
||||||
while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
|
{
|
||||||
{
|
$objXMLDocument=$currNode->ownerDocument;
|
||||||
$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)
|
|
||||||
{
|
|
||||||
$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);
|
||||||
@ -626,40 +589,22 @@
|
|||||||
$nTypeR=findFirstNode($reqNode,'type');
|
$nTypeR=findFirstNode($reqNode,'type');
|
||||||
$typename=$nTypeR->getAttribute("n");
|
$typename=$nTypeR->getAttribute("n");
|
||||||
$pagepos=$nTypeR->getAttribute("pp"); //текущяя страница page pos
|
$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='<?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());
|
|
||||||
}
|
|
||||||
|
|
||||||
$nTypeS=findNodeOnAttribute($objXMLDocument->documentElement,"type","n",$typename);
|
$currNode=getMetadataNode($typename);
|
||||||
if ($nTypeS!=null)
|
if ($currNode!=null)
|
||||||
{
|
{
|
||||||
|
$objXMLDocument=$currNode->ownerDocument;
|
||||||
|
|
||||||
$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.'\';');
|
if ($currNode!=null)
|
||||||
while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
|
{
|
||||||
{
|
$objXMLDocument=$currNode->ownerDocument;
|
||||||
$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)
|
|
||||||
{
|
|
||||||
//Тип поля с 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.'\';');
|
$currNode=getMetadataNode($typename);
|
||||||
while ($rowX = $resX->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
|
if($currNode==null) sendError("Not find \"".$typename."\"!");
|
||||||
{
|
$objXMLDocument=$currNode->ownerDocument;
|
||||||
$xmls='<?xml version="1.0" encoding="UTF-8"?><metadata>'.trts($rowX['xml']).'</metadata>';
|
|
||||||
}
|
|
||||||
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."\"!");
|
|
||||||
|
|
||||||
$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 - ассоциативный массив значений, ключи - названия столбцов
|
{
|
||||||
{
|
$objXMLDocument=$currNode->ownerDocument;
|
||||||
$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(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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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='';
|
||||||
|
|||||||
Reference in New Issue
Block a user