protected function prepareXML($v87cd8b8808600624d8c590cfc2e6e94b)
 {
     if ($v87cd8b8808600624d8c590cfc2e6e94b instanceof DOMDocument) {
         return $v87cd8b8808600624d8c590cfc2e6e94b;
     }
     $va3c3308ab3cad416697b6e49b5481ce2 = new DOMDocument("1.0", "utf-8");
     $va3c3308ab3cad416697b6e49b5481ce2->formatOutput = XML_FORMAT_OUTPUT;
     $v173a1756d2d82394cb803161f70f9a38 = $va3c3308ab3cad416697b6e49b5481ce2->appendChild($va3c3308ab3cad416697b6e49b5481ce2->createElement("result"));
     $v173a1756d2d82394cb803161f70f9a38->setAttribute('xmlns:xlink', 'http://www.w3.org/TR/xlink');
     $v607f2f3099f2a347b327caa70e0be4b2 = new xmlTranslator($va3c3308ab3cad416697b6e49b5481ce2);
     $v607f2f3099f2a347b327caa70e0be4b2->translateToXml($v173a1756d2d82394cb803161f70f9a38, $v87cd8b8808600624d8c590cfc2e6e94b);
     return $va3c3308ab3cad416697b6e49b5481ce2;
 }
 class XMLTranslatorTest extends  umiTestCase {protected static $page;public static function setUpBeforeClass() {self::$page = self::createPageFixture(__CLASS__, 'content', '');self::$page->content = 'Content';self::$page->title = 'Title';self::$page->meta_keywords = 'Keywords';self::$page->meta_descriptions = 'Description';self::$page->h1 = 'Header';self::$page->commit();}public function testMultiTranslatePage() {$v0aac6d6e7a78c2c0076b13465d792626 = new DOMDocument("1.0", "utf-8");$v0aac6d6e7a78c2c0076b13465d792626->formatOutput = XML_FORMAT_OUTPUT;$vaf2dbd1485ac5b3a6db03c5d7ef91060 = $v0aac6d6e7a78c2c0076b13465d792626->appendChild($v0aac6d6e7a78c2c0076b13465d792626->createElement("result"));$vaf2dbd1485ac5b3a6db03c5d7ef91060->setAttribute('xmlns:xlink', 'http://www.w3.org/TR/xlink');$vace025c72f4d91e2556445cad8888a49 = new DOMDocument("1.0", "utf-8");$vace025c72f4d91e2556445cad8888a49->formatOutput = XML_FORMAT_OUTPUT;$v493bfc98e24aa7f8c3ac09ee38aef026 = $vace025c72f4d91e2556445cad8888a49->appendChild($vace025c72f4d91e2556445cad8888a49->createElement("result"));$v493bfc98e24aa7f8c3ac09ee38aef026->setAttribute('xmlns:xlink', 'http://www.w3.org/TR/xlink');$v6267c82cc773404e2fba94496add7ea3 = new xmlTranslator($v0aac6d6e7a78c2c0076b13465d792626);$v6267c82cc773404e2fba94496add7ea3->translateToXml($vaf2dbd1485ac5b3a6db03c5d7ef91060, array('full:page' => self::$page));$v9fa55a2db403a97081cef689ffb6a998 = new xmlTranslator($vace025c72f4d91e2556445cad8888a49);$v9fa55a2db403a97081cef689ffb6a998->translateToXml($v493bfc98e24aa7f8c3ac09ee38aef026, array('full:page' => self::$page));$this->assertEquals($vace025c72f4d91e2556445cad8888a49->saveXML(), $v0aac6d6e7a78c2c0076b13465d792626->saveXML());}}?>
 public function execute()
 {
     if (!is_null(getRequest('links'))) {
         $this->oldGetLinks = getRequest('links');
         unset($_REQUEST['links']);
     }
     $this->position = 0;
     $this->break = false;
     $v9a09b4dfda82e3e665e31092d1c3ec8d = new DOMDocument("1.0", "utf-8");
     $v9a09b4dfda82e3e665e31092d1c3ec8d->formatOutput = XML_FORMAT_OUTPUT;
     $v63a9f0ea7bb98050796b649e85481845 = $v9a09b4dfda82e3e665e31092d1c3ec8d->createElement("umidump");
     $v63a9f0ea7bb98050796b649e85481845->setAttribute('xmlns:xlink', 'http://www.w3.org/TR/xlink');
     $v0cc175b9c0f1b6a831c399e269772661 = $v9a09b4dfda82e3e665e31092d1c3ec8d->createAttribute("version");
     $v0cc175b9c0f1b6a831c399e269772661->appendChild($v9a09b4dfda82e3e665e31092d1c3ec8d->createTextNode(self::VERSION));
     $v63a9f0ea7bb98050796b649e85481845->appendChild($v0cc175b9c0f1b6a831c399e269772661);
     $v9a09b4dfda82e3e665e31092d1c3ec8d->appendChild($v63a9f0ea7bb98050796b649e85481845);
     $this->translator = new xmlTranslator($v9a09b4dfda82e3e665e31092d1c3ec8d);
     if ($this->showAllFields) {
         $ved2767f3d8b91be52c4cb22eb81a04b3 = xmlTranslator::$showHiddenFieldGroups;
         xmlTranslator::$showHiddenFieldGroups = true;
         $vcf90eeb77dd5c141a9e9b72790489e27 = xmlTranslator::$showUnsecureFields;
         xmlTranslator::$showUnsecureFields = true;
     }
     $v07d2e301ed1b9e6b89b58497f1810239 = umiObjectProperty::$IGNORE_CACHE;
     umiObjectProperty::$IGNORE_CACHE = true;
     $this->doc = $v9a09b4dfda82e3e665e31092d1c3ec8d;
     $this->root = $v63a9f0ea7bb98050796b649e85481845;
     if (file_exists(CURRENT_WORKING_DIR . '/sys-temp/runtime-cache/' . md5($this->source_name))) {
         $vf1f713c9e000f5d3f280adbd124df4f5 = unserialize(file_get_contents(CURRENT_WORKING_DIR . '/sys-temp/runtime-cache/' . md5($this->source_name)));
         $this->exported_files = $vf1f713c9e000f5d3f280adbd124df4f5['exported_files'];
         $this->exported_types = $vf1f713c9e000f5d3f280adbd124df4f5['exported_types'];
         $this->exported_langs = $vf1f713c9e000f5d3f280adbd124df4f5['exported_langs'];
         $this->exported_domains = $vf1f713c9e000f5d3f280adbd124df4f5['exported_domains'];
         $this->exported_templates = $vf1f713c9e000f5d3f280adbd124df4f5['exported_templates'];
         $this->exported_elements = $vf1f713c9e000f5d3f280adbd124df4f5['exported_elements'];
         $this->exported_objects = $vf1f713c9e000f5d3f280adbd124df4f5['exported_objects'];
         $this->exported_restrictions = $vf1f713c9e000f5d3f280adbd124df4f5['exported_restrictions'];
         $this->restricted_fields = $vf1f713c9e000f5d3f280adbd124df4f5['restricted_fields'];
         $this->restrictions = $vf1f713c9e000f5d3f280adbd124df4f5['restrictions'];
         $this->exported_registry_items = $vf1f713c9e000f5d3f280adbd124df4f5['exported_registry_items'];
         $this->exported_data_types = $vf1f713c9e000f5d3f280adbd124df4f5['exported_data_types'];
         $this->exported_dirs = $vf1f713c9e000f5d3f280adbd124df4f5['exported_dirs'];
     }
     $this->createGrid();
     if ($this->directories && !$this->break) {
         $this->exportDirs();
     }
     if ($this->files && !$this->break) {
         $this->exportFiles();
     }
     if ($this->langs && !$this->break) {
         $this->exportLangs();
     }
     if ($this->domains && !$this->break) {
         $this->exportDomains();
     }
     if ($this->templates && !$this->break) {
         $this->exportTemplates();
     }
     if ($this->data_types && !$this->break) {
         $this->exportDataTypes();
     }
     if ($this->types && !$this->break) {
         $this->exportTypes();
     }
     if ($this->objects && !$this->break) {
         $this->exportObjects();
     }
     if ($this->elements && !$this->break) {
         $this->exportElements();
     }
     if ($this->branches && !$this->break) {
         $this->exportBranches();
     }
     if ($this->restrictions && !$this->break) {
         $this->exportRestrictions();
     }
     if ($this->registry && !$this->break) {
         $this->exportRegs();
     }
     $v8277e0910d750195b448797616e091ad = $this->doc;
     $v6f8f57715090da2632453988d9a1501b = $this->meta_container;
     $this->completed = !$this->break;
     if (count($this->branches) && $this->completed) {
         $v92ec19ffde05e15769b1bb3ee05ad745 = array();
         foreach ($this->branches as $v09fd5b139469053e6cd6e28cf8725337) {
             if (isset($this->exported_elements[$v09fd5b139469053e6cd6e28cf8725337]) && $this->exported_elements[$v09fd5b139469053e6cd6e28cf8725337] != 'found') {
                 $v09fd5b139469053e6cd6e28cf8725337 = $this->exported_elements[$v09fd5b139469053e6cd6e28cf8725337];
             }
             $v92ec19ffde05e15769b1bb3ee05ad745[] = $v09fd5b139469053e6cd6e28cf8725337;
         }
         $v7b8b965ad4bca0e41ab51de7b31363a1 = $v8277e0910d750195b448797616e091ad->createElement('branches');
         $this->translateEntity(array('nodes:id' => $v92ec19ffde05e15769b1bb3ee05ad745), $v7b8b965ad4bca0e41ab51de7b31363a1);
         $v6f8f57715090da2632453988d9a1501b->appendChild($v7b8b965ad4bca0e41ab51de7b31363a1);
     }
     $this->saveState();
     if ($this->showAllFields) {
         xmlTranslator::$showHiddenFieldGroups = $ved2767f3d8b91be52c4cb22eb81a04b3;
         xmlTranslator::$showUnsecureFields = $vcf90eeb77dd5c141a9e9b72790489e27;
     }
     umiObjectProperty::$IGNORE_CACHE = $v07d2e301ed1b9e6b89b58497f1810239;
     if (!is_null($this->oldGetLinks)) {
         $_REQUEST['links'] = $this->oldGetLinks;
     }
     return $this->doc;
 }
Example #4
0
showWorkTime("cacheControl started");
$currentModule = $cmsController->getCurrentModule();
showWorkTime("cmsController getCurMod");
$currentMethod = $cmsController->getCurrentMethod();
$currentTemplater = $cmsController->getCurrentTemplater();
showWorkTime("templater init");
if (getRequest("xmlMode") == 'force') {
    // flush XML
    $dom = new DOMDocument('1.0', 'utf-8');
    $rootNode = $dom->createElement("result");
    $dom->appendChild($rootNode);
    $rootNode->setAttribute('xmlns:xlink', 'http://www.w3.org/TR/xlink');
    // принудительный режим xslt для получения глобальных переменных
    def_module::isXSLTResultMode(true);
    $globalVars = $cmsController->getGlobalVariables();
    $translator = new xmlTranslator($dom);
    $translator->translateToXml($rootNode, $globalVars);
    $buffer->contentType('text/xml');
    $buffer->push($dom->saveXML());
} elseif (getRequest("jsonMode") == 'force') {
    // flush json
    $buffer->contentType('text/javascript');
    $buffer->option('generation-time', false);
    // принудительный режим xslt для получения глобальных переменных
    def_module::isXSLTResultMode(true);
    $globalVars = $cmsController->getGlobalVariables();
    $translator = new jsonTranslator();
    $result = $translator->translateToJson($globalVars);
    $buffer->push($result);
} else {
    // enable callstack
 protected function translateData(iUmiObjectProperty $v1a8db4c996d8ed8289da5f957879ab94)
 {
     $v26b75b176d665f24a5fd22a2ad815763 = array();
     $v2063c1608d6e0baf80249c42e2be5804 = $v1a8db4c996d8ed8289da5f957879ab94->getValue();
     $v06e3d36fa30cea095545139854ad1fb9 = $v1a8db4c996d8ed8289da5f957879ab94->getField();
     $v945100186b119048837b9859c2c46410 = $v06e3d36fa30cea095545139854ad1fb9->getId();
     $v972bf3f05d14ffbdb817bef60638ff00 = $v06e3d36fa30cea095545139854ad1fb9->getName();
     $v6d58e323dd91f19ec80d313941942f94 = $v06e3d36fa30cea095545139854ad1fb9->getTitle();
     $v833750ac635fcc57dc33ecafe365f9a7 = $v06e3d36fa30cea095545139854ad1fb9->getFieldType();
     $v5fd6df40d7c4dd7f503475344d8c145c = $v833750ac635fcc57dc33ecafe365f9a7->getDataType();
     if ($v5fd6df40d7c4dd7f503475344d8c145c == "password" && !xmlTranslator::$showUnsecureFields || in_array($v972bf3f05d14ffbdb817bef60638ff00, array('user_dock', 'user_settings_data', 'activate_code')) && !xmlTranslator::$showUnsecureFields) {
         return false;
     }
     $v74f510617fc594986f85795a43ecb7cd = is_object($v2063c1608d6e0baf80249c42e2be5804) || is_array($v2063c1608d6e0baf80249c42e2be5804) && !empty($v2063c1608d6e0baf80249c42e2be5804) || !is_array($v2063c1608d6e0baf80249c42e2be5804) && strlen($v2063c1608d6e0baf80249c42e2be5804);
     if ($v74f510617fc594986f85795a43ecb7cd || self::$showEmptyFields || translatorWrapper::$showEmptyFields) {
         $v26b75b176d665f24a5fd22a2ad815763['@id'] = $v945100186b119048837b9859c2c46410;
         $v26b75b176d665f24a5fd22a2ad815763['@name'] = $v972bf3f05d14ffbdb817bef60638ff00;
         $v26b75b176d665f24a5fd22a2ad815763['@type'] = $v5fd6df40d7c4dd7f503475344d8c145c;
         if ($v5fd6df40d7c4dd7f503475344d8c145c == 'relation' && $v06e3d36fa30cea095545139854ad1fb9->getFieldType()->getIsMultiple()) {
             $v26b75b176d665f24a5fd22a2ad815763['@multiple'] = 'multiple';
         }
         $v26b75b176d665f24a5fd22a2ad815763['title'] = $v6d58e323dd91f19ec80d313941942f94;
         if ($v5fd6df40d7c4dd7f503475344d8c145c == 'price') {
             $v05c08ca192baab52e722f628f416fb2b = regedit::getInstance()->getVal("//modules/eshop/default_currency_code");
             if ($v05c08ca192baab52e722f628f416fb2b) {
                 $vf82265ccceac13b2f40ccd9e81cbd263 = umiBasket::getInstance()->getCurrencyIdBySId($v05c08ca192baab52e722f628f416fb2b);
                 if ($vf82265ccceac13b2f40ccd9e81cbd263) {
                     $v1af0389838508d7016a9841eb6273962 = umiObjectsCollection::getInstance()->getObject($vf82265ccceac13b2f40ccd9e81cbd263);
                     if ($v1af0389838508d7016a9841eb6273962) {
                         $v26b75b176d665f24a5fd22a2ad815763['currency'] = array('@id' => $vf82265ccceac13b2f40ccd9e81cbd263, '@code' => $v1af0389838508d7016a9841eb6273962->getValue('eshop_currency_letter_code'), '@symbol' => $v1af0389838508d7016a9841eb6273962->getValue('eshop_currency_symbol'), '@rate' => $v1af0389838508d7016a9841eb6273962->getValue('eshop_currency_exchange_rate'));
                         $v26b75b176d665f24a5fd22a2ad815763['curSymb'] = $v1af0389838508d7016a9841eb6273962->getValue("eshop_currency_symbol");
                     }
                 }
             }
         }
         $v26b75b176d665f24a5fd22a2ad815763['value'] = array();
         switch ($v5fd6df40d7c4dd7f503475344d8c145c) {
             case "symlink":
                 $v26b75b176d665f24a5fd22a2ad815763['value']['nodes:page'] = array();
                 foreach ($v2063c1608d6e0baf80249c42e2be5804 as $v8e2dcfd7e7e24b1ca76c1193f645902b) {
                     $v26b75b176d665f24a5fd22a2ad815763['value']['nodes:page'][] = $v8e2dcfd7e7e24b1ca76c1193f645902b;
                 }
                 break;
             case "relation":
                 $v5891da2d64975cae48d175d1e001f5da = umiObjectsCollection::getInstance();
                 $v26b75b176d665f24a5fd22a2ad815763['value']['nodes:item'] = array();
                 if (is_array($v2063c1608d6e0baf80249c42e2be5804)) {
                     foreach ($v2063c1608d6e0baf80249c42e2be5804 as $v16b2b26000987faccb260b9d39df1269) {
                         $v26b75b176d665f24a5fd22a2ad815763['value']['nodes:item'][] = $v5891da2d64975cae48d175d1e001f5da->getObject($v16b2b26000987faccb260b9d39df1269);
                     }
                 } else {
                     $v26b75b176d665f24a5fd22a2ad815763['value']['item'] = $v5891da2d64975cae48d175d1e001f5da->getObject($v2063c1608d6e0baf80249c42e2be5804);
                 }
                 break;
             case "date":
                 if ($v2063c1608d6e0baf80249c42e2be5804 instanceof iUmiDate) {
                     $v1b299b309feb62d3291407caed9cf4fa = array('get_editable_region', 'save_editable_region');
                     $v8b1dc169bf460ee884fceef66c6607d6 = cmsController::getInstance();
                     $v1ddcb92ade31c8fbd370001f9b29a7d9 = in_array($v8b1dc169bf460ee884fceef66c6607d6->getCurrentMethod(), $v1b299b309feb62d3291407caed9cf4fa) ? false : 'r';
                     $v26b75b176d665f24a5fd22a2ad815763['value']['@formatted-date'] = $v2063c1608d6e0baf80249c42e2be5804->getFormattedDate("d.m.Y H:i");
                     $v26b75b176d665f24a5fd22a2ad815763['value']['@unix-timestamp'] = $v2063c1608d6e0baf80249c42e2be5804->getFormattedDate("U");
                     $v26b75b176d665f24a5fd22a2ad815763['value']['#rfc'] = $v2063c1608d6e0baf80249c42e2be5804->getDateTimeStamp() > 0 ? $v2063c1608d6e0baf80249c42e2be5804->getFormattedDate($v1ddcb92ade31c8fbd370001f9b29a7d9) : "";
                 }
                 break;
             case "optioned":
                 $v93da65a9fd0004d9477aeac024e08e15 = array();
                 $vb81ca7c0ccaa77e7aa91936ab0070695 = umiHierarchy::getInstance();
                 $v5891da2d64975cae48d175d1e001f5da = umiObjectsCollection::getInstance();
                 foreach ($v2063c1608d6e0baf80249c42e2be5804 as $v3a6d0284e743dc4a9b86f97d6dd1a3bf) {
                     $v5ecf0a02e02bd528df985f4f51a5af41 = array();
                     foreach ($v3a6d0284e743dc4a9b86f97d6dd1a3bf as $v599dcce2998a6b40b1e38e8c6006cb0a => $v2d79067f0fcb37a2c56a7c466f56f0ae) {
                         switch ($v599dcce2998a6b40b1e38e8c6006cb0a) {
                             case "tree":
                                 $v8e2dcfd7e7e24b1ca76c1193f645902b = $vb81ca7c0ccaa77e7aa91936ab0070695->getElement($v2d79067f0fcb37a2c56a7c466f56f0ae);
                                 if ($v8e2dcfd7e7e24b1ca76c1193f645902b instanceof iUmiHierarchyElement) {
                                     $v5ecf0a02e02bd528df985f4f51a5af41['page'] = $v8e2dcfd7e7e24b1ca76c1193f645902b;
                                 }
                                 break;
                             case "rel":
                                 $va8cfde6331bd59eb2ac96f8911c4b666 = $v5891da2d64975cae48d175d1e001f5da->getObject($v2d79067f0fcb37a2c56a7c466f56f0ae);
                                 if ($va8cfde6331bd59eb2ac96f8911c4b666 instanceof iUmiObject) {
                                     $v5ecf0a02e02bd528df985f4f51a5af41['object'] = $va8cfde6331bd59eb2ac96f8911c4b666;
                                 }
                                 break;
                             default:
                                 $v5ecf0a02e02bd528df985f4f51a5af41['@' . $v599dcce2998a6b40b1e38e8c6006cb0a] = $v2d79067f0fcb37a2c56a7c466f56f0ae;
                         }
                     }
                     $v93da65a9fd0004d9477aeac024e08e15[] = $v5ecf0a02e02bd528df985f4f51a5af41;
                 }
                 $v26b75b176d665f24a5fd22a2ad815763['value']['nodes:option'] = $v93da65a9fd0004d9477aeac024e08e15;
                 break;
             case "price":
                 $v26b75b176d665f24a5fd22a2ad815763['value']['xlink:href'] = 'udata://emarket/price/' . $v1a8db4c996d8ed8289da5f957879ab94->getObjectId();
             default:
                 if (is_array($v2063c1608d6e0baf80249c42e2be5804)) {
                     unset($v26b75b176d665f24a5fd22a2ad815763['value']);
                     $v26b75b176d665f24a5fd22a2ad815763['nodes:value'] = $v2063c1608d6e0baf80249c42e2be5804;
                     if ($v5fd6df40d7c4dd7f503475344d8c145c == 'tags') {
                         $v26b75b176d665f24a5fd22a2ad815763['combined'] = implode(', ', $v2063c1608d6e0baf80249c42e2be5804);
                     }
                 } else {
                     $v8b1dc169bf460ee884fceef66c6607d6 = cmsController::getInstance();
                     $v2063c1608d6e0baf80249c42e2be5804 = xmlTranslator::executeMacroses($v2063c1608d6e0baf80249c42e2be5804, false, $v1a8db4c996d8ed8289da5f957879ab94->getObjectId());
                     if (defined("XML_PROP_VALUE_MODE") && $v5fd6df40d7c4dd7f503475344d8c145c == "wysiwyg" && $v8b1dc169bf460ee884fceef66c6607d6->getCurrentMode() != "admin") {
                         if (XML_PROP_VALUE_MODE == "XML") {
                             $v26b75b176d665f24a5fd22a2ad815763['value'] = array("xml:xvalue" => "<xvalue>" . $v2063c1608d6e0baf80249c42e2be5804 . "</xvalue>");
                             break;
                         }
                     }
                     if ($v2063c1608d6e0baf80249c42e2be5804 && in_array($v5fd6df40d7c4dd7f503475344d8c145c, array('img_file', 'swf_file', 'file'))) {
                         $v2063c1608d6e0baf80249c42e2be5804 = $v2063c1608d6e0baf80249c42e2be5804->getFilePath(true);
                         $vcaf9b6b99962bf5c2264824231d7a40c = getPathInfo($v2063c1608d6e0baf80249c42e2be5804);
                         $v2f0056df010e0231e4cca0e382df44fc = "|^" . CURRENT_WORKING_DIR . "|";
                         $v2063c1608d6e0baf80249c42e2be5804 = preg_replace($v2f0056df010e0231e4cca0e382df44fc, "", $v2063c1608d6e0baf80249c42e2be5804);
                         $v26b75b176d665f24a5fd22a2ad815763['value']['@path'] = '.' . $v2063c1608d6e0baf80249c42e2be5804;
                         $v26b75b176d665f24a5fd22a2ad815763['value']['@folder'] = preg_replace($v2f0056df010e0231e4cca0e382df44fc, "", $vcaf9b6b99962bf5c2264824231d7a40c['dirname']);
                         $v26b75b176d665f24a5fd22a2ad815763['value']['@name'] = $vcaf9b6b99962bf5c2264824231d7a40c['filename'];
                         $v26b75b176d665f24a5fd22a2ad815763['value']['@ext'] = $vcaf9b6b99962bf5c2264824231d7a40c['extension'];
                         if (in_array($v5fd6df40d7c4dd7f503475344d8c145c, array('img_file', 'swf_file'))) {
                             $v47c80780ab608cc046f2a6e6f071feb6 = getimagesize('.' . $v2063c1608d6e0baf80249c42e2be5804);
                             if (is_array($v47c80780ab608cc046f2a6e6f071feb6)) {
                                 $v26b75b176d665f24a5fd22a2ad815763['value']['@width'] = $v47c80780ab608cc046f2a6e6f071feb6[0];
                                 $v26b75b176d665f24a5fd22a2ad815763['value']['@height'] = $v47c80780ab608cc046f2a6e6f071feb6[1];
                             }
                         }
                     }
                     $v26b75b176d665f24a5fd22a2ad815763['value']['#value'] = $v2063c1608d6e0baf80249c42e2be5804;
                 }
                 break;
         }
     }
     return $v26b75b176d665f24a5fd22a2ad815763;
 }
 /**
  * @static
  * Выполняет разбор шаблона, используя необходимый шаблонизатор в зависимости от режима работы макросов
  *
  * @param mixed $template - шаблон для разбора
  * @param array $arr - массив переменнх
  * @param bool|int $parseElementPropsId - установить id страницы в качестве области видимости блока
  * @param bool|int $parseObjectPropsId  - установить id объекта в качестве области видимости блока
  * @param null|bool $xsltResultMode - принудительно устанавливает режим работы макросов перед разбором
  * и восстанавливает предыдущий режим работы в конце работы
  * @return mixed - результат разбора шаблона
  */
 public static function parseTemplate($template, $arr, $parseElementPropsId = false, $parseObjectPropsId = false, $xsltResultMode = null)
 {
     $controller = cmsController::getInstance();
     if (!is_array($arr)) {
         $arr = array();
     }
     $oldResultMode = null;
     if (is_bool($xsltResultMode)) {
         $oldResultMode = self::isXSLTResultMode($xsltResultMode);
     }
     if (self::isXSLTResultMode()) {
         //$templater = umiTemplater::create('XSLT');
         $result = array();
         $extProps = self::getMacrosExtendedProps();
         $extGroups = self::getMacrosExtendedGroups();
         if ((!empty($extProps) || !empty($extGroups)) && ($parseElementPropsId || $parseObjectPropsId)) {
             if ($parseElementPropsId) {
                 $entity = umiHierarchy::getInstance()->getElement($parseElementPropsId);
                 if ($entity) {
                     $entity = $entity->getObject();
                 }
             } else {
                 $entity = umiObjectsCollection::getInstance()->getObject($parseObjectPropsId);
             }
             /**
              * @var umiObject $entity
              */
             if ($entity) {
                 $extPropsInfo = array();
                 foreach ($extProps as $fieldName) {
                     if ($fieldName == 'name' && !isset($arr['attribute:name'], $arr['@name'])) {
                         $arr['@name'] = $entity->getName();
                     } elseif ($extProp = $entity->getPropByName($fieldName)) {
                         $extPropsInfo[] = $extProp;
                     }
                 }
                 if (count($extPropsInfo)) {
                     if (!isset($arr['extended'])) {
                         $arr['extended'] = array();
                     }
                     $arr['extended']['properties'] = array('+property' => $extPropsInfo);
                 }
                 $extGroupsInfo = array();
                 foreach ($extGroups as $groupName) {
                     if ($group = $entity->getType()->getFieldsGroupByName($groupName)) {
                         $groupWrapper = translatorWrapper::get($group);
                         $extGroupsInfo[] = $groupWrapper->translateProperties($group, $entity);
                     }
                 }
                 if (count($extGroupsInfo)) {
                     if (!isset($arr['extended'])) {
                         $arr['extended'] = array();
                     }
                     $arr['extended']['groups'] = array('+group' => $extGroupsInfo);
                 }
             }
         }
         foreach ($arr as $key => $val) {
             if (is_null($val) || $val === false || $val === "") {
                 continue;
             }
             if (is_array($val)) {
                 $val = self::parseTemplate($template, $val);
             }
             $subKey = xmlTranslator::getSubKey($key);
             if ($subKey == "subnodes") {
                 $realKey = xmlTranslator::getRealKey($key);
                 $result[$realKey] = array('nodes:item' => $val);
                 continue;
             }
             $result[$key] = $val;
         }
         return $result;
     } else {
         $templater = umiTemplater::create('TPL');
         $variables = array();
         foreach ($arr as $m => $v) {
             $m = self::getRealKey($m);
             if (is_array($v)) {
                 $res = "";
                 $v = array_values($v);
                 $sz = sizeof($v);
                 for ($i = 0; $i < $sz; $i++) {
                     $str = $v[$i];
                     $listClassFirst = $i == 0 ? "first" : "";
                     $listClassLast = $i == $sz - 1 ? "last" : "";
                     $listClassOdd = ($i + 1) % 2 == 0 ? "odd" : "";
                     $listClassEven = $listClassOdd ? "" : "even";
                     $listPosition = $i + 1;
                     $listComma = $listClassLast ? '' : ', ';
                     $from = array('%list-class-first%', '%list-class-last%', '%list-class-odd%', '%list-class-even%', '%list-position%', '%list-comma%');
                     $to = array($listClassFirst, $listClassLast, $listClassOdd, $listClassEven, $listPosition, $listComma);
                     $res .= str_replace($from, $to, $str);
                 }
                 $v = $res;
             }
             if (!is_object($v)) {
                 $variables[$m] = $v;
             }
         }
         $arr = $variables;
     }
     $templater->setScope($parseElementPropsId, $parseObjectPropsId);
     $result = $templater->parse($arr, $template);
     if (!is_null($oldResultMode)) {
         self::isXSLTResultMode($oldResultMode);
     }
     return $result;
 }
Example #7
0
 protected static function saveFieldValue($name, $value, $target, $save = false)
 {
     $hierarchy = umiHierarchy::getInstance();
     if ($i = strpos($name, '[')) {
         if (preg_match_all("/\\[([^\\[^\\]]+)\\]/", substr($name, $i), $out)) {
             $optionParams = array('filter' => array(), 'field-type' => null);
             foreach ($out[1] as $param) {
                 if (strpos($param, ':')) {
                     list($seekType, $seekValue) = explode(':', $param);
                     $optionParams['filter'][$seekType] = $seekValue;
                 } else {
                     $optionParams['field-type'] = $param;
                 }
             }
         }
         $name = substr($name, 0, $i);
     } else {
         $optionParams = null;
     }
     if ($name != 'name' && $name != 'alt_name') {
         $object = $target instanceof iUmiHierarchyElement ? $target->getObject() : $target;
         $property = $object->getPropByName($name);
         if ($property instanceof iUmiObjectProperty == false) {
             throw new publicException(getLabel('eip-no-field') . ": \"{$name}\"");
         }
         $field = $property->getField();
     }
     if ($name == 'name' || $name == 'alt_name') {
         $type = 'string';
     } else {
         $type = $field->getDataType();
     }
     if (is_string($value)) {
         $value = __editor_content::filterStringValue($value);
     }
     $oldLink = null;
     $newLink = null;
     if ($save) {
         umiObjectProperty::$IGNORE_FILTER_INPUT_STRING = true;
         if ($name == 'h1' || $name == 'name') {
             $value = strip_tags($value);
             $value = str_replace(array('&nbsp;', '&amp;'), array(' ', '&'), $value);
             if ($name === 'name') {
                 // При изменении name: если name==h1, name=h1=new_value
                 // При изменении name: если name!=h1, name=new_value.
                 if ($target->getName() === (string) $target->getValue('h1')) {
                     $target->setValue('h1', $value);
                 }
                 $target->setName($value);
             } else {
                 // При изменении h1: если h1 == name && name=='', name=h1=new_value
                 // При изменении h1: если h1 == name и name != '', h1=new_value
                 // При изменении h1: если h1 != name, h1=new_value
                 if ($target->getName() === (string) $target->getValue('h1') && $target->getName() === '') {
                     $target->setName($value);
                 }
                 $target->setValue('h1', $value);
             }
             if ($target instanceof iUmiHierarchyElement) {
                 $oldLink = $hierarchy->getPathById($target->id);
                 $altName = $target->getAltName();
                 if (!$altName || substr($altName, 0, 1) == '_') {
                     $target->setAltName($value);
                     $target->commit();
                 }
                 $newLink = $hierarchy->getPathById($target->id, false, false, true);
             }
         } elseif ($name == 'alt_name') {
             if ($target instanceof iUmiHierarchyElement) {
                 $target->setAltName($value);
                 $target->commit();
                 $newLink = $hierarchy->getPathById($target->id, false, false, true);
             }
         } else {
             if ($type == 'date') {
                 $date = new umiDate();
                 $date->setDateByString($value);
                 $value = $date;
                 unset($date);
                 $value = $value->getFormattedDate('U');
             }
             if ($type == 'optioned') {
                 $seekType = getArrayKey($optionParams, 'field-type');
                 $filter = getArrayKey($optionParams, 'filter');
                 $oldValue = $target->getValue($name);
                 foreach ($oldValue as $i => $v) {
                     foreach ($filter as $t => $s) {
                         if (getArrayKey($v, $t) != $s) {
                             continue 2;
                         }
                         $oldValue[$i][$seekType] = $value;
                     }
                 }
                 $value = $oldValue;
                 unset($oldValue);
             }
             if ($type == 'symlink') {
                 $value = $value;
             }
             if ($type == 'wysiwyg') {
                 $out = array();
                 if (preg_match_all("/href=[\"']?([^ ^\"^']+)[\"']?/i", $value, $out)) {
                     foreach ($out[1] as $link) {
                         $id = $hierarchy->getIdByPath($link);
                         if ($id) {
                             $link = str_replace("/", "\\/", $link);
                             $value = preg_replace("/(href=[\"']?)" . $link . "([\"']?)/i", "\\1%content get_page_url({$id})%\\2", $value);
                         }
                     }
                 }
             } else {
                 $value = str_replace(array('&nbsp;', '&amp;'), array(' ', '&'), $value);
             }
             if (in_array($type, array('text', 'string', 'int', 'float', 'price', 'date', 'tags', 'counter'))) {
                 $value = preg_replace("/<br ?\\/?>/i", "\n", $value);
                 $value = strip_tags($value);
             }
             if (in_array($type, array('img_file', 'swf_file', 'file', 'video_file')) && $value) {
                 if (substr($value, 0, 1) != '.') {
                     $value = '.' . $value;
                 }
             }
             $target->setValue($name, $value);
         }
         $target->commit();
         umiObjectProperty::$IGNORE_FILTER_INPUT_STRING = false;
         if ($target instanceof iUmiHierarchyElement) {
             $backup = backupModel::getInstance();
             $backup->fakeBackup($target->id);
         }
         $oEventPoint = new umiEventPoint("eipSave");
         $oEventPoint->setMode("after");
         $oEventPoint->setParam("field_name", $name);
         $oEventPoint->setParam("obj", $target);
         def_module::setEventPoint($oEventPoint);
     }
     if ($name == 'name') {
         $value = $target->getName();
     } else {
         $value = $target->getValue($name, $optionParams);
     }
     if ($save) {
         $value = xmlTranslator::executeMacroses($value);
     }
     if ($type == 'date') {
         if ($value) {
             $date = new umiDate();
             $date->setDateByString($value);
             $value = $date->getFormattedDate('Y-m-d H:i');
         } else {
             $value = '';
         }
     }
     if ($type == 'tags' && is_array($value)) {
         $value = implode(', ', $value);
     }
     if ($type == 'optioned' && !is_null($optionParams)) {
         $value = isset($value[0]) ? $value[0] : '';
         $type = getArrayKey($optionParams, 'field-type');
     }
     $result = array('attribute:name' => $name, 'attribute:type' => $type);
     if ($type == 'relation') {
         $items_arr = array();
         if ($value) {
             if (!is_array($value)) {
                 $value = array($value);
             }
             $objects = umiObjectsCollection::getInstance();
             foreach ($value as $objectId) {
                 $object = $objects->getObject($objectId);
                 $items_arr[] = $object;
             }
         }
         $result['attribute:guide-id'] = $field->getGuideId();
         if ($field->getFieldType()->getIsMultiple()) {
             $result['attribute:multiple'] = 'multiple';
         }
         $type = selector::get('object-type')->id($field->getGuideId());
         if ($type && $type->getIsPublic()) {
             $result['attribute:public'] = 'public';
         }
         $result['nodes:item'] = $items_arr;
     } else {
         if ($type == 'symlink') {
             $result['nodes:page'] = is_array($value) ? $value : array();
         } else {
             $result['node:value'] = $value;
         }
     }
     if ($oldLink != $newLink) {
         $result['attribute:old-link'] = $oldLink;
         $result['attribute:new-link'] = $newLink;
     }
     return $result;
 }
 public function prepareDataType($ve62e4d22f2d8630f6e44e2b7c3f70ddc)
 {
     $v8d777f385d3dfec8815d20f7496026dc = array();
     $v8d777f385d3dfec8815d20f7496026dc['full:type'] = $ve62e4d22f2d8630f6e44e2b7c3f70ddc;
     xmlTranslator::$showHiddenFieldGroups = true;
     return $v8d777f385d3dfec8815d20f7496026dc;
 }
 protected function translateToXml()
 {
     $args = func_get_args();
     $v9b207167e5381c47682c6b4f58a623fb = $args[0];
     if ($this->isJson) {
         return $this->translateToJSON($v9b207167e5381c47682c6b4f58a623fb);
     }
     if (isset($v9b207167e5381c47682c6b4f58a623fb['plain:result'])) {
         return $v9b207167e5381c47682c6b4f58a623fb['plain:result'];
     }
     $vdd988cfd769c9f7fbd795a0f5da8e751 = new DOMDocument("1.0", "utf-8");
     $vdd988cfd769c9f7fbd795a0f5da8e751->formatOutput = XML_FORMAT_OUTPUT;
     $v173a1756d2d82394cb803161f70f9a38 = $vdd988cfd769c9f7fbd795a0f5da8e751->createElement("udata");
     $vdd988cfd769c9f7fbd795a0f5da8e751->appendChild($v173a1756d2d82394cb803161f70f9a38);
     $v173a1756d2d82394cb803161f70f9a38->setAttribute('xmlns:xlink', 'http://www.w3.org/TR/xlink');
     $va9af713c2b2cfe00ff6c77a6a07127ed = new xmlTranslator($vdd988cfd769c9f7fbd795a0f5da8e751);
     $va9af713c2b2cfe00ff6c77a6a07127ed->translateToXml($v173a1756d2d82394cb803161f70f9a38, $v9b207167e5381c47682c6b4f58a623fb);
     $vf9d06f6bf4fdf64ee0d73708c1a94ee1 = number_format(microtime(true) - $this->start_time, 6);
     $v173a1756d2d82394cb803161f70f9a38->setAttribute('generation-time', $vf9d06f6bf4fdf64ee0d73708c1a94ee1);
     self::reportCallTime($this->getProtocol() . $this->path, $vf9d06f6bf4fdf64ee0d73708c1a94ee1);
     if ($this->transform) {
         return $this->applyXslTransformation($vdd988cfd769c9f7fbd795a0f5da8e751, $this->transform);
     }
     return $vdd988cfd769c9f7fbd795a0f5da8e751->saveXml();
 }