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; }
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; }
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(' ', '&'), 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(' ', '&'), 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(); }