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; }
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; }