Esempio n. 1
0
 public function __call($vea9f6aca279138c58f705c8d4cb4b8ce, $args)
 {
     $vea9f6aca279138c58f705c8d4cb4b8ce = strtolower($vea9f6aca279138c58f705c8d4cb4b8ce);
     if (in_array($vea9f6aca279138c58f705c8d4cb4b8ce, $this->modes)) {
         $v2063c1608d6e0baf80249c42e2be5804 = sizeof($args) ? $args[0] : null;
         if ($v2063c1608d6e0baf80249c42e2be5804 instanceof iUmiEntinty) {
             $v2063c1608d6e0baf80249c42e2be5804 = $v2063c1608d6e0baf80249c42e2be5804->getId();
         }
         if (isset($this->fieldId)) {
             $v06e3d36fa30cea095545139854ad1fb9 = selector::get('field')->id($this->fieldId);
             if ($v6b1a57fa235477758817df3c91158006 = $v06e3d36fa30cea095545139854ad1fb9->getRestrictionId()) {
                 $v3dadfaeb46ec74762b37de11fea7605c = baseRestriction::get($v6b1a57fa235477758817df3c91158006);
                 if ($v3dadfaeb46ec74762b37de11fea7605c instanceof iNormalizeInRestriction) {
                     $v2063c1608d6e0baf80249c42e2be5804 = $v3dadfaeb46ec74762b37de11fea7605c->normalizeIn($v2063c1608d6e0baf80249c42e2be5804);
                 }
             }
             if (is_numeric($v2063c1608d6e0baf80249c42e2be5804) && substr($v2063c1608d6e0baf80249c42e2be5804, 0, 1) !== "0") {
                 $v2063c1608d6e0baf80249c42e2be5804 = (double) $v2063c1608d6e0baf80249c42e2be5804;
             }
             if ($v06e3d36fa30cea095545139854ad1fb9->getDataType() == 'relation' && is_string($v2063c1608d6e0baf80249c42e2be5804)) {
                 if ($v52eb29c6d8ea0d3a5bb3654f49bbd7c7 = $v06e3d36fa30cea095545139854ad1fb9->getGuideId()) {
                     $v8be74552df93e31bbdd6b36ed74bdb6a = new selector('objects');
                     $v8be74552df93e31bbdd6b36ed74bdb6a->types('object-type')->id($v52eb29c6d8ea0d3a5bb3654f49bbd7c7);
                     $v8be74552df93e31bbdd6b36ed74bdb6a->where('*')->ilike($v2063c1608d6e0baf80249c42e2be5804);
                     $v2fa47f7c65fec19cc163b195725e3844 = sizeof($v8be74552df93e31bbdd6b36ed74bdb6a->result);
                     if ($v2fa47f7c65fec19cc163b195725e3844 > 0 && $v2fa47f7c65fec19cc163b195725e3844 < 100) {
                         $v2063c1608d6e0baf80249c42e2be5804 = $v8be74552df93e31bbdd6b36ed74bdb6a->result;
                     }
                 }
             }
             if ($v06e3d36fa30cea095545139854ad1fb9->getDataType() == 'date' && is_string($v2063c1608d6e0baf80249c42e2be5804)) {
                 $v5fc732311905cb27e82d67f4f6511f7f = new umiDate();
                 $v5fc732311905cb27e82d67f4f6511f7f->setDateByString(trim($v2063c1608d6e0baf80249c42e2be5804, ' %'));
                 $v2063c1608d6e0baf80249c42e2be5804 = $v5fc732311905cb27e82d67f4f6511f7f->getDateTimeStamp();
             }
         }
         $this->value = $v2063c1608d6e0baf80249c42e2be5804;
         $this->mode = $vea9f6aca279138c58f705c8d4cb4b8ce;
     } else {
         throw new selectorException("This property doesn't support \"{$vea9f6aca279138c58f705c8d4cb4b8ce}\" method");
     }
 }
Esempio n. 2
0
 public function save_editable_region()
 {
     // fix for 2.7.4 eip
     if (cmsController::getInstance()->getCurrentMode() != 'admin') {
         return self::old_eip_save_editable_region();
     }
     $iEntityId = getRequest('param0');
     $sPropName = getRequest('param1');
     $content = getRequest('data');
     $bIsObject = (bool) getRequest('is_object');
     if (is_array($content) && count($content) == 1) {
         $content = $content[0];
     } else {
         if (is_array($content) && isset($content[0])) {
             $temp = array();
             foreach ($content as $item) {
                 $temp[] = is_array($item) ? $item[0] : $item;
             }
             $content = $temp;
         }
     }
     $oEntity = $bIsObject ? umiObjectsCollection::getInstance()->getObject($iEntityId) : umiHierarchy::getInstance()->getElement($iEntityId);
     // Checking rights
     $bDisallowed = false;
     $permissions = permissionsCollection::getInstance();
     $userId = $permissions->getUserId();
     if (!$permissions->isSv($userId)) {
         if ($bIsObject) {
             $bDisallowed = !($oEntity->getOwnerId() == $userId);
             if ($bDisallowed) {
                 //Check module permissions
                 $object = selector::get('object')->id($iEntityId);
                 $module = $object->getModule();
                 $method = $object->getMethod();
                 if ($module && $method) {
                     $bDisallowed = !$permissions->isAllowedMethod($userId, $module, $method);
                 }
             }
         } else {
             list($r, $w) = $permissions->isAllowedObject($userId, $iEntityId);
             if (!$w) {
                 $bDisallowed = true;
             }
         }
     }
     if ($bDisallowed) {
         throw new publicAdminException(getLabel('error-no-permissions'));
     }
     $event = new umiEventPoint("systemModifyPropertyValue");
     $event->addRef("entity", $oEntity);
     $event->setParam("property", $sPropName);
     $event->addRef("newValue", $content);
     $event->setMode("before");
     try {
         $event->call();
     } catch (wrongValueException $e) {
         throw new publicAdminException($e->getMessage());
     }
     if ($oEntity instanceof iUmiHierarchyElement) {
         $backupModel = backupModel::getInstance();
         $backupModel->addLogMessage($oEntity->getId());
     }
     if ($bIsObject && !$this->checkAllowedColumn($oEntity, $sPropName)) {
         throw new publicAdminException(getLabel('error-no-permissions'));
     }
     if ($bIsObject && $sPropName == 'is_activated') {
         $guestId = $permissions->getGuestId();
         if ($iEntityId == SV_USER_ID) {
             throw new publicAdminException(getLabel('error-users-swtich-activity-sv'));
         }
         if ($iEntityId == $guestId) {
             throw new publicAdminException(getLabel('error-users-swtich-activity-guest'));
         }
         if ($iEntityId == $userId) {
             throw new publicAdminException(getLabel('error-users-swtich-activity-self'));
         }
     }
     $sPropValue = "";
     if ($oEntity) {
         $bOldVal = umiObjectProperty::$IGNORE_FILTER_INPUT_STRING;
         umiObjectProperty::$IGNORE_FILTER_INPUT_STRING = true;
         $oObject = !$bIsObject ? $oEntity->getObject() : $oEntity;
         $oldValue = null;
         try {
             if ($sPropName == 'name') {
                 if (is_string($content) && strlen($content)) {
                     $oldValue = $oEntity->name;
                     $oEntity->name = $content;
                     if ($oEntity instanceof iUmiHierarchyElement) {
                         $oEntity->h1 = $content;
                     }
                 }
                 $result = array('name' => $content);
             } else {
                 $property = $oObject->getPropByName($sPropName);
                 if ($property->getDataType() == 'date') {
                     $date = new umiDate();
                     $date->setDateByString($content);
                     $content = $date;
                 }
                 $oldValue = $oEntity->getValue($sPropName);
                 $oEntity->setValue($sPropName, $content);
                 if ($oEntity instanceof iUmiHierarchyElement && $sPropName == 'h1') {
                     $oEntity->name = $content;
                 }
                 $result = array('property' => $property);
                 translatorWrapper::get($property);
                 umiObjectPropertyWrapper::$showEmptyFields = true;
             }
         } catch (fieldRestrictionException $e) {
             throw new publicAdminException($e->getMessage());
         }
         $oEntity->commit();
         umiObjectProperty::$IGNORE_FILTER_INPUT_STRING = $bOldVal;
         $oObject->update();
         $oEntity->update();
         if ($oEntity instanceof umiEntinty) {
             $oEntity->commit();
         }
         $event->setParam("oldValue", $oldValue);
         $event->setParam("newValue", $content);
         $event->setMode("after");
         $event->call();
         $this->setData($result);
         return $this->doData();
     }
 }
 /**
  * TODO PHPDoc
  * Enter description here ...
  * @param unknown_type $object_id
  * @param unknown_type $is_new
  * @param unknown_type $b_force_owner
  * @param unknown_type $all
  */
 public function saveEditedObject($object_id, $is_new = false, $b_force_owner = false, $all = false)
 {
     global $_FILES;
     $cmsController = cmsController::getInstance();
     $permissions = permissionsCollection::getInstance();
     if (!($object = umiObjectsCollection::getInstance()->getObject($object_id))) {
         return false;
     }
     if (!$b_force_owner && !$permissions->isOwnerOfObject($object_id)) {
         return false;
     }
     $object_type_id = $object->getTypeId();
     $object_type = umiObjectTypesCollection::getInstance()->getType($object_type_id);
     $key = $is_new ? "new" : $object_id;
     if (is_null(getRequest('data'))) {
         if (is_null($_FILES)) {
             return true;
         } else {
             $_REQUEST['data'][$key] = array();
         }
     }
     $data = isset($_REQUEST['data'][$key]) ? $_REQUEST['data'][$key] : array();
     foreach ($_REQUEST as $skey => $value) {
         $real_key = substr($skey, 7);
         if (substr($skey, 0, 7) == 'select_' && !isset($data[$real_key])) {
             $data[$real_key] = $value;
         }
     }
     if (isset($_FILES['data']['tmp_name'][$key])) {
         foreach ($_FILES['data']['tmp_name'][$key] as $i => $v) {
             $data[$i] = $v;
         }
     }
     $data = $this->checkRequiredData($object_type, $data, $object_id, $is_new);
     $data = $this->checkAllowedData($object_type, $data);
     foreach ($data as $field_name => $field_value) {
         if (!($field_id = $object_type->getFieldId($field_name))) {
             continue;
         }
         $field = umiFieldsCollection::getInstance()->getField($field_id);
         if (!$field->getIsVisible() && !$all) {
             //continue;
         }
         $field_type = $field->getFieldType();
         $data_type = $field_type->getDataType();
         $fldr_name = $field_name . '/';
         switch ($data_type) {
             case "password":
                 if (isset($field_value[1])) {
                     $field_value = $field_value[0] == $field_value[1] ? md5($field_value[0]) : NULL;
                 } else {
                     if (is_array($field_value)) {
                         $field_value = $field_value[0] ? md5($field_value[0]) : NULL;
                     } else {
                         $field_value = $field_value ? md5($field_value) : NULL;
                     }
                 }
                 break;
             case "date":
                 $oDate = new umiDate();
                 $oDate->setDateByString($field_value);
                 $field_value = $oDate;
                 break;
             case "img_file":
                 switch ($field_name) {
                     case "menu_pic_ua":
                         $destination_folder = "./images/cms/menu/";
                         break;
                     case "header_pic":
                         $destination_folder = "./images/cms/headers/";
                         break;
                     case "menu_pic_a":
                         $destination_folder = "./images/cms/menu/";
                         break;
                     default:
                         $destination_folder = "./images/cms/data/";
                         break;
                 }
                 // TODO: вставить проверку на необходимость наложения на картинку водного знака (by lauri)
                 $oldValue = $object->getValue($field_name);
                 if ($value = umiImageFile::upload("data", $field_name, substr($destination_folder, 2), $key)) {
                     $field_value = $value;
                 } else {
                     $file_name = substr($field_value, 0, 2) == "./" ? $field_value : $destination_folder . $field_value;
                     $field_value = new umiImageFile($file_name);
                 }
                 break;
             case "video_file":
             case "swf_file":
                 $destination_folder = "./files/" . (is_dir("./files/" . $fldr_name) ? $fldr_name : '');
                 if ($value = umiFile::upload("data", $field_name, $destination_folder, $key)) {
                     $field_value = $value;
                 } else {
                     $oldvalue = $object->getValue($field_name);
                     if ($oldvalue) {
                         $destination_folder = $oldvalue->getDirName() . "/";
                     }
                     $file_name = substr($field_value, 0, 2) == "./" ? $field_value : $destination_folder . $field_value;
                     $field_value = new umiFile($file_name);
                 }
                 break;
             case "file":
                 $destination_folder = "./files/" . (is_dir("./files/" . $fldr_name) ? $fldr_name : '');
                 if ($value = umiFile::upload("data", $field_name, $destination_folder, $key)) {
                     $field_value = $value;
                 } else {
                     $oldvalue = $object->getValue($field_name);
                     if ($oldvalue) {
                         $destination_folder = $oldvalue->getDirName() . "/";
                     }
                     $file_name = substr($field_value, 0, 2) == "./" ? $field_value : $destination_folder . $field_value;
                     $field_value = new umiFile($file_name);
                 }
                 break;
             case "string":
             case "text":
             case "wysiwyg":
                 if ($cmsController->getCurrentMode() != "admin") {
                     $field_value = strip_tags($field_value);
                 }
                 break;
         }
         $object->setValue($field_name, $field_value);
     }
     $object->commit();
     return true;
 }
 protected function importPropValue(umiEntinty $vf5e638cc78dd325906c1298a0c21fb6b, DOMElement $vcaf9b6b99962bf5c2264824231d7a40c, $vd08e820fd4eb48eede47aa5985d10cc8 = false)
 {
     $v3a229433643cf8ea25f2a9b198ea70d8 = $vcaf9b6b99962bf5c2264824231d7a40c->getAttribute('name');
     $vb068931cc450442b63f5b3d276ea4297 = self::translateName($v3a229433643cf8ea25f2a9b198ea70d8);
     $v1a13105b7e4eb5fb2e7c9515ac06aa48 = $this->parser->evaluate("value", $vcaf9b6b99962bf5c2264824231d7a40c);
     if (!$v1a13105b7e4eb5fb2e7c9515ac06aa48->length && $vd08e820fd4eb48eede47aa5985d10cc8) {
         $v1a13105b7e4eb5fb2e7c9515ac06aa48 = $this->parser->evaluate("default-value", $vcaf9b6b99962bf5c2264824231d7a40c);
     }
     if (!$v1a13105b7e4eb5fb2e7c9515ac06aa48->length) {
         if ($vd08e820fd4eb48eede47aa5985d10cc8) {
             $this->reportError($this->getLabel('label-property') . " \"{$vb068931cc450442b63f5b3d276ea4297}\" " . $this->getLabel('label-has-no-values'));
         }
         return false;
     }
     $v67236e502346412a98a0bb965b7a59e6 = $v1a13105b7e4eb5fb2e7c9515ac06aa48->item(0);
     $v94757cae63fd3e398c0811a976dd6bbe = $vf5e638cc78dd325906c1298a0c21fb6b instanceof umiHierarchyElement ? $vf5e638cc78dd325906c1298a0c21fb6b->getObjectTypeId() : $vf5e638cc78dd325906c1298a0c21fb6b->getTypeId();
     $v599dcce2998a6b40b1e38e8c6006cb0a = umiObjectTypesCollection::getInstance()->getType($v94757cae63fd3e398c0811a976dd6bbe);
     $v3aabf39f2d943fa886d86dcbbee4d910 = $v599dcce2998a6b40b1e38e8c6006cb0a->getFieldId($vb068931cc450442b63f5b3d276ea4297, false);
     $v06e3d36fa30cea095545139854ad1fb9 = umiFieldsCollection::getInstance()->getField($v3aabf39f2d943fa886d86dcbbee4d910);
     if (!$v06e3d36fa30cea095545139854ad1fb9 instanceof umiField && $vcaf9b6b99962bf5c2264824231d7a40c->getAttribute('allow-runtime-add') == '1') {
         $v562feb4548b66febf02774b4f339552e = $vcaf9b6b99962bf5c2264824231d7a40c->parentNode;
         $vdb0f6f37ebeb6ea09489124345af2a45 = $this->importTypeGroup($v599dcce2998a6b40b1e38e8c6006cb0a, $v562feb4548b66febf02774b4f339552e, false);
         if (!$vdb0f6f37ebeb6ea09489124345af2a45 instanceof umiFieldsGroup) {
             return false;
         }
         $v06e3d36fa30cea095545139854ad1fb9 = $this->importField($vdb0f6f37ebeb6ea09489124345af2a45, $vcaf9b6b99962bf5c2264824231d7a40c);
         $vf5e638cc78dd325906c1298a0c21fb6b instanceof umiHierarchyElement ? $vf5e638cc78dd325906c1298a0c21fb6b->getObject()->update() : $vf5e638cc78dd325906c1298a0c21fb6b->update();
     }
     if (!$v06e3d36fa30cea095545139854ad1fb9 instanceof umiField) {
         return false;
     }
     switch ($v06e3d36fa30cea095545139854ad1fb9->getDataType()) {
         case "optioned":
         case "symlink":
             return false;
         case "date":
             $vd7e6d55ba379a13d08c25d15faf2a23b = intval($v67236e502346412a98a0bb965b7a59e6->getAttribute('unix-timestamp'));
             $v8059f160e1aa1f9d3921049ce93b00e1 = new umiDate();
             if ($vd7e6d55ba379a13d08c25d15faf2a23b) {
                 $v8059f160e1aa1f9d3921049ce93b00e1->setDateByTimeStamp($vd7e6d55ba379a13d08c25d15faf2a23b);
             } else {
                 $v8059f160e1aa1f9d3921049ce93b00e1->setDateByString($v67236e502346412a98a0bb965b7a59e6->nodeValue);
             }
             $vf5e638cc78dd325906c1298a0c21fb6b->setValue($vb068931cc450442b63f5b3d276ea4297, $v8059f160e1aa1f9d3921049ce93b00e1);
             break;
         case "price":
             $vfcaea7edd270964cc145ea48e4367d43 = cmsController::getInstance()->getModule('emarket');
             $v78a5eb43deef9a7b5b9ce157b9d52ac4 = $v67236e502346412a98a0bb965b7a59e6->nodeValue;
             $v78a5eb43deef9a7b5b9ce157b9d52ac4 = str_replace(',', '.', $v78a5eb43deef9a7b5b9ce157b9d52ac4);
             $v78a5eb43deef9a7b5b9ce157b9d52ac4 = floatval(preg_replace("/[^0-9.,]/", "", $v78a5eb43deef9a7b5b9ce157b9d52ac4));
             $v52e3817fff5250b5391ef85b1ce23bdb = $v67236e502346412a98a0bb965b7a59e6->hasAttribute('currency-code') ? $v67236e502346412a98a0bb965b7a59e6->getAttribute('currency-code') : $v67236e502346412a98a0bb965b7a59e6->getAttribute('currency_code');
             if (strlen($v52e3817fff5250b5391ef85b1ce23bdb) && $vfcaea7edd270964cc145ea48e4367d43) {
                 $v1af0389838508d7016a9841eb6273962 = $vfcaea7edd270964cc145ea48e4367d43->getCurrency($v52e3817fff5250b5391ef85b1ce23bdb);
                 if ($v1af0389838508d7016a9841eb6273962) {
                     $result = $vfcaea7edd270964cc145ea48e4367d43->formatCurrencyPrice(array($v78a5eb43deef9a7b5b9ce157b9d52ac4), $vfcaea7edd270964cc145ea48e4367d43->getDefaultCurrency(), $v1af0389838508d7016a9841eb6273962);
                     $v78a5eb43deef9a7b5b9ce157b9d52ac4 = $result[0];
                 }
             }
             $vf5e638cc78dd325906c1298a0c21fb6b->setValue($vb068931cc450442b63f5b3d276ea4297, $v78a5eb43deef9a7b5b9ce157b9d52ac4);
             break;
         case "file":
         case "img_file":
         case "video_file":
         case "swf_file":
             if ($this->renameFiles) {
                 $v9d22547e12eafcfadf56ff88b9d67f4d = false;
                 $vf83cd85f6404a7018af0fcf071f35751 = $vf5e638cc78dd325906c1298a0c21fb6b->getValue($vb068931cc450442b63f5b3d276ea4297);
                 if ($vf83cd85f6404a7018af0fcf071f35751 instanceof umiFile) {
                     $v9d22547e12eafcfadf56ff88b9d67f4d = $vf83cd85f6404a7018af0fcf071f35751->getFilePath();
                 }
                 $vbf0e61d0f411b035bf846149824fe352 = ltrim(trim($v67236e502346412a98a0bb965b7a59e6->nodeValue, "\r\n"), ".");
                 $v435ed7e9f07f740abf511a62c00eef6e = basename($vbf0e61d0f411b035bf846149824fe352);
                 $v736007832d2167baaae763fd3a3f3cf1 = dirname($vbf0e61d0f411b035bf846149824fe352);
                 $vabf77184f55403d75b9d51d79162a7ca = explode(".", $v435ed7e9f07f740abf511a62c00eef6e);
                 $vabf77184f55403d75b9d51d79162a7ca = end($vabf77184f55403d75b9d51d79162a7ca);
                 $vd70819bac4952f91adc9954c5b055aca = translit::convert(trim($vf5e638cc78dd325906c1298a0c21fb6b->getName(), "\r\n"));
                 $v435ed7e9f07f740abf511a62c00eef6e = $vd70819bac4952f91adc9954c5b055aca;
                 $ve2942a04780e223b215eb8b663cf5353 = 0;
                 $v149603e6c03516362a8da23f624db945 = error_reporting(0);
                 while (true) {
                     if (!file_exists(CURRENT_WORKING_DIR . '/' . $vbf0e61d0f411b035bf846149824fe352)) {
                         break 2;
                     } else {
                         if ($v9d22547e12eafcfadf56ff88b9d67f4d) {
                             $v46cd4eff50a3aca89f0fbc7ea6a79453 = CURRENT_WORKING_DIR . ltrim($v9d22547e12eafcfadf56ff88b9d67f4d, ".");
                             if (file_exists($v46cd4eff50a3aca89f0fbc7ea6a79453)) {
                                 unlink($v46cd4eff50a3aca89f0fbc7ea6a79453);
                             }
                         }
                     }
                     if (!file_exists(CURRENT_WORKING_DIR . '/' . $v736007832d2167baaae763fd3a3f3cf1 . '/' . $v435ed7e9f07f740abf511a62c00eef6e . '.' . $vabf77184f55403d75b9d51d79162a7ca)) {
                         break;
                     }
                     $ve2942a04780e223b215eb8b663cf5353++;
                     $v435ed7e9f07f740abf511a62c00eef6e = $vd70819bac4952f91adc9954c5b055aca . '_' . $ve2942a04780e223b215eb8b663cf5353;
                 }
                 $v435ed7e9f07f740abf511a62c00eef6e .= '.' . $vabf77184f55403d75b9d51d79162a7ca;
                 rename(CURRENT_WORKING_DIR . '/' . $vbf0e61d0f411b035bf846149824fe352, CURRENT_WORKING_DIR . '/' . $v736007832d2167baaae763fd3a3f3cf1 . '/' . $v435ed7e9f07f740abf511a62c00eef6e);
                 error_reporting($v149603e6c03516362a8da23f624db945);
                 $vbf0e61d0f411b035bf846149824fe352 = '.' . $v736007832d2167baaae763fd3a3f3cf1 . '/' . $v435ed7e9f07f740abf511a62c00eef6e;
                 $vf5e638cc78dd325906c1298a0c21fb6b->setValue($vb068931cc450442b63f5b3d276ea4297, $vbf0e61d0f411b035bf846149824fe352);
             } else {
                 $v47826cacc65c665212b821e6ff80b9b0 = ltrim(trim($v67236e502346412a98a0bb965b7a59e6->nodeValue, "\r\n"), ".");
                 $vf5e638cc78dd325906c1298a0c21fb6b->setValue($vb068931cc450442b63f5b3d276ea4297, "." . $v47826cacc65c665212b821e6ff80b9b0);
             }
             break;
         case "relation":
             if ($this->auto_guide_creation) {
                 if ($vb068931cc450442b63f5b3d276ea4297 == 'payment_status_id' && $v599dcce2998a6b40b1e38e8c6006cb0a->getMethod() == 'order') {
                     $vfcaea7edd270964cc145ea48e4367d43 = cmsController::getInstance()->getModule('emarket');
                     if ($vfcaea7edd270964cc145ea48e4367d43) {
                         umiObjectProperty::$USE_FORCE_OBJECTS_CREATION = false;
                         $v903931b3a9d25a70683f51ab9d363d2e = $v67236e502346412a98a0bb965b7a59e6->nodeValue;
                         $v70a17ffa722a3985b86d30b034ad06d7 = order::get($vf5e638cc78dd325906c1298a0c21fb6b->id);
                         $v70a17ffa722a3985b86d30b034ad06d7->setPaymentStatus($v903931b3a9d25a70683f51ab9d363d2e);
                         $v70a17ffa722a3985b86d30b034ad06d7->commit();
                         umiObjectProperty::$USE_FORCE_OBJECTS_CREATION = true;
                     }
                 } elseif ($vb068931cc450442b63f5b3d276ea4297 == 'status_id' && $v599dcce2998a6b40b1e38e8c6006cb0a->getMethod() == 'order') {
                     $vfcaea7edd270964cc145ea48e4367d43 = cmsController::getInstance()->getModule('emarket');
                     if ($vfcaea7edd270964cc145ea48e4367d43) {
                         $v903931b3a9d25a70683f51ab9d363d2e = $v67236e502346412a98a0bb965b7a59e6->nodeValue;
                         $v70a17ffa722a3985b86d30b034ad06d7 = order::get($vf5e638cc78dd325906c1298a0c21fb6b->id);
                         $vc8db1069270b4aad8a8d03a1d939bc26 = $v70a17ffa722a3985b86d30b034ad06d7->getOrderStatus();
                         $vf48da84a2621e8cad36af3c0af958502 = $v70a17ffa722a3985b86d30b034ad06d7->getCodeByStatus($vc8db1069270b4aad8a8d03a1d939bc26);
                         if (!in_array($vf48da84a2621e8cad36af3c0af958502, array('ready', 'canceled', 'rejected'))) {
                             umiObjectProperty::$USE_FORCE_OBJECTS_CREATION = false;
                             $v70a17ffa722a3985b86d30b034ad06d7->setOrderStatus($v903931b3a9d25a70683f51ab9d363d2e);
                             $v70a17ffa722a3985b86d30b034ad06d7->commit();
                             umiObjectProperty::$USE_FORCE_OBJECTS_CREATION = true;
                         }
                     }
                 } else {
                     $v691d502cfd0e0626cd3b058e5682ad1c = array();
                     $v1a13105b7e4eb5fb2e7c9515ac06aa48 = $v67236e502346412a98a0bb965b7a59e6->getElementsByTagName("item");
                     foreach ($v1a13105b7e4eb5fb2e7c9515ac06aa48 as $ve795119eccc6565f098fca8454bad366) {
                         $v691d502cfd0e0626cd3b058e5682ad1c[] = $ve795119eccc6565f098fca8454bad366->getAttribute('name');
                     }
                     $vf5e638cc78dd325906c1298a0c21fb6b->setValue($vb068931cc450442b63f5b3d276ea4297, $v691d502cfd0e0626cd3b058e5682ad1c);
                 }
             }
             break;
         case "tags":
             $v1a13105b7e4eb5fb2e7c9515ac06aa48 = $this->parser->evaluate("combined", $vcaf9b6b99962bf5c2264824231d7a40c);
             if ($v67236e502346412a98a0bb965b7a59e6 = $v1a13105b7e4eb5fb2e7c9515ac06aa48->item(0)) {
                 $vf5e638cc78dd325906c1298a0c21fb6b->setValue($vb068931cc450442b63f5b3d276ea4297, trim($v67236e502346412a98a0bb965b7a59e6->nodeValue, "\r\n"));
             }
             break;
         case "string":
         case "text":
         case "wysiwyg":
         case "boolean":
         case "counter":
         case "float":
         case "int":
             if ($vb068931cc450442b63f5b3d276ea4297 == 'payment_type_id' || $vb068931cc450442b63f5b3d276ea4297 == 'modificator_type_id' || $vb068931cc450442b63f5b3d276ea4297 == 'rule_type_id' || $vb068931cc450442b63f5b3d276ea4297 == 'delivery_type_id') {
                 $v7f7cfde5ec586119b48911a2c75851e5 = $this->relations->getNewTypeIdRelation($this->source_id, $v67236e502346412a98a0bb965b7a59e6->nodeValue);
                 if ($v7f7cfde5ec586119b48911a2c75851e5) {
                     $vf5e638cc78dd325906c1298a0c21fb6b->setValue($vb068931cc450442b63f5b3d276ea4297, $v7f7cfde5ec586119b48911a2c75851e5);
                 }
                 break;
             }
         default:
             $vf5e638cc78dd325906c1298a0c21fb6b->setValue($vb068931cc450442b63f5b3d276ea4297, trim($v67236e502346412a98a0bb965b7a59e6->nodeValue, "\r\n"));
             break;
     }
 }
Esempio n. 5
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;
 }