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;
 }
Exemplo n.º 2
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;
 }