예제 #1
0
 /**
  * возвращает основной массив с идентификатором ($id) 
  * @param string $id
  * @param string $dirName
  * @param string $instanceName
  */
 function getMA($id, $dirName = "", $instanceName = "CFW_XML_Table")
 {
     $fullFName = $dirName . "/{$id}.xml";
     if ($dirName == "") {
         $tail = substr($id, strlen($id) - 4, 4);
         //UI_echo('$tail', $tail);
         $fullFName = $id;
         if ($tail != ".xml") {
             $fullFName = "{$id}.xml";
         }
     }
     if ($this->m_idToIndexAr[$fullFName] != "") {
         $index = $this->m_idToIndexAr[$fullFName];
         $MA1 = $this->m_cacheAr[$index];
         if (is_object($MA1)) {
             $MA = new CFW_XML_Table($instanceName);
             $MA1->copyStructureInto($MA);
             $MA->m_xml = $MA1->m_xml;
             //копирование древовидной xml-структуры данных файла. Она может быть полезна при низкоуровневом чтении блока STRUCT основного массива
             $MA->copyFrom($MA1, 1, 1, $MA1->getRecordsNumber());
             return $MA;
         }
     }
     $MA = new CFW_XML_Table($instanceName);
     $MA->setDebugMode(true);
     $code = $MA->load($fullFName, true);
     $this->m_cacheAr[] = $MA;
     $newMAIdex = count($this->m_cacheAr) - 1;
     $this->m_idToIndexAr[$fullFName] = $newMAIdex;
     return $MA;
 }
예제 #2
0
 /**
  * возвращает основной массив со значениями параметров командной строки
  * @param string $structTableName - имя таблицы с информацией о структуре параметров командной строки
  * @param bool $post - true, если брать значения из POST-переменных
  * @param string $dirName - путь к каталогу с таблицей командной строки
  * @param bool $useStructBlock - если true, то для загрузки структуры использовать блок <struct> xml-файла
  * @return MainArray - значения параметров командной строки
  */
 function getFileParameters_($structTableName, $post, $dirName, $useStructBlock = false)
 {
     $getType = "get";
     if ($post) {
         $getType = "post";
     }
     $fullFName = $dirName . "/{$structTableName}.xml";
     if ($dirName == "") {
         $fullFName = "{$structTableName}.xml";
     }
     $key = $fullFName . "-" . $getType;
     $instanceName = "<b>{$structTableName}</b> from {$getType}";
     $MA1 = $this->m_cacheAr[$key];
     if (is_object($MA1)) {
         $MA = new CFW_XML_Table($instanceName);
         $MA1->copyStructureInto($MA);
         $MA->m_xml = $MA1->m_xml;
         //копирование древовидной xml-структуры данных файла. Она может быть полезна при низкоуровневом чтении блока STRUCT основного массива
         $MA->copyFrom($MA1, 1, 1, $MA1->getRecordsNumber());
         return $MA;
     }
     $httpVarsArray = array();
     if ($post) {
         foreach ($_POST as $var => $val) {
             $httpVarsArray[$var] = $val;
         }
     } else {
         foreach ($_GET as $var => $val) {
             $httpVarsArray[$var] = $val;
         }
     }
     if (!$useStructBlock) {
         $paramsStruct = $this->m_storage->getMA($structTableName, $dirName, "CFW_XML_Table");
         $FP = new CMainArray("CMainArray");
         for ($i = 1; $i <= $paramsStruct->getRecordsNumber(); $i++) {
             $dbFieldName = $paramsStruct->getVal(SYS_FW_FP__NAME, $i);
             $dbFieldType = $paramsStruct->getVal(SYS_FW_FP__TYPE, $i);
             $VB_id = $paramsStruct->getVal(SYS_FW_FP__VB_ID, $i);
             //data type for i-nth field
             $FP->_setFieldType($i, $dbFieldName, $dbFieldType, $VB_id);
             // /data type for i-nth field
             //value for for i-nth field
             $val = $httpVarsArray[$dbFieldName];
             $val = str_replace("\\\"", "\"", $val);
             $val = STARTER_sequreUrl($val);
             $FP->setVal($i, $val);
             // /value for for i-nth field
         }
         $FP->setFieldsNumber($paramsStruct->getRecordsNumber());
         $FP->setRecordsNumber(1);
     } else {
         $FP = new CFW_XML_Table("<b>{$structTableName}</b> from {$getType}");
         $FP->setDebugMode(true);
         $code = $FP->load($fullFName, true);
         for ($i = 1; $i <= $FP->getFieldsNumber(); $i++) {
             $dbFieldName = $FP->getDBFieldName($i);
             $val = $httpVarsArray[$dbFieldName];
             $val = str_replace("\\\"", "\"", $val);
             $val = STARTER_sequreUrl($val);
             $FP->setVal($i, $val);
         }
         $FP->setRecordsNumber(1);
     }
     $this->m_cacheAr[$key] = $FP;
     return $FP;
 }