/** * возвращает основной массив с идентификатором ($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; }
/** * возвращает основной массив со значениями параметров командной строки * @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; }