GIF и другие мелочи
This commit is contained in:
@ -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)
|
||||
{
|
||||
@ -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='<?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)
|
||||
{
|
||||
$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='<?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)
|
||||
{
|
||||
$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='<?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=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='<?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)
|
||||
{
|
||||
$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='<?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);
|
||||
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.='<metadata fn="'.$fn.'" reqid="'.$reqid.'"><type n="'.$typename.'" pc="'.$pagecount.'" pp="'.$pagepos.'">'."\n";
|
||||
//Перечисляю название выбираемых столбцов через запятую
|
||||
$xmlstring.='<objects-list>';
|
||||
$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.=' <record id="'.$row[$nTypeS->getAttribute("ObjectID")].'" a="'.$access.'">';
|
||||
$nextnode=findNode($nTypeS,'objects-list')->firstChild;
|
||||
$xmlstring.=' <record id="'.$row[$currNode->getAttribute("ObjectID")].'" a="'.$access.'">';
|
||||
$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='<?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)
|
||||
{
|
||||
$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='<?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."\"!");
|
||||
|
||||
$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.='<type n="'.$typename.'" pn="'.$propName.'">'."\n";
|
||||
while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
|
||||
{
|
||||
$xmlstring.='<record id="'.$row[$node->getAttribute("ObjectID")].'">';
|
||||
$xmlstring.='<record id="'.$row[$currNode->getAttribute("ObjectID")].'">';
|
||||
$val="";
|
||||
for($i=0;$i<count($columns);$i++)
|
||||
{
|
||||
@ -1107,38 +1018,19 @@
|
||||
$typename=$nTypeR->getAttribute("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='<?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());
|
||||
}
|
||||
$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='<b>'.trt('Filter options').'</b><br>';
|
||||
$filter='<b>'.trt('Filter_options').'</b><br>';
|
||||
$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, '<html>'."\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, '<style>td {mso-number-format: "\@";}</style>');
|
||||
fwrite($fh, ' </head>'."\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, $filter);
|
||||
|
||||
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, ' <tr>');
|
||||
$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, ' <tr>');
|
||||
$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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user