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(); } }
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; }
/** * TODO PHPDoc * TODO Корректные типы входных параметров * Вызов создания точки восстановления для страницы $cparam * @param Integer $cparam * @param String $cmodule * @param String $cmethod */ public function backup_save($cparam = "", $cmodule = "", $cmethod = "") { return backupModel::getInstance()->save($cparam, $cmodule, $cmethod); }
public function saveAddedElementData($ve62e4d22f2d8630f6e44e2b7c3f70ddc) { $v8b1dc169bf460ee884fceef66c6607d6 = cmsController::getInstance(); $v6942e8fa62b3cc9d93881a58210e2fd7 = umiHierarchyTypesCollection::getInstance(); $v0e8133eb006c0f85ed9444ae07a60842 = umiObjectTypesCollection::getInstance(); $vb81ca7c0ccaa77e7aa91936ab0070695 = umiHierarchy::getInstance(); $vfed36e93a0509e20f2dc96cbbd85b678 = templatesCollection::getInstance(); $v22884db148f0ffb0d830ba431102b0b5 = get_class($this); if (isset($ve62e4d22f2d8630f6e44e2b7c3f70ddc['module'])) { $v22884db148f0ffb0d830ba431102b0b5 = $ve62e4d22f2d8630f6e44e2b7c3f70ddc['module']; } $vea9f6aca279138c58f705c8d4cb4b8ce = $ve62e4d22f2d8630f6e44e2b7c3f70ddc['type']; $vd0e45878043844ffc41aac437e86b602 = $ve62e4d22f2d8630f6e44e2b7c3f70ddc['parent']; if ($this->checkAllowedElementType($ve62e4d22f2d8630f6e44e2b7c3f70ddc) == false) { throw new wrongElementTypeAdminException(getLabel("error-unexpected-element-type")); } if ($v22884db148f0ffb0d830ba431102b0b5 == "content" && $vea9f6aca279138c58f705c8d4cb4b8ce == "page") { $vea9f6aca279138c58f705c8d4cb4b8ce = ""; } if ($vd0e45878043844ffc41aac437e86b602) { $this->checkElementPermissions($vd0e45878043844ffc41aac437e86b602->getId(), permissionsCollection::E_CREATE_ALLOWED); } $v4119639092e62c55ea8be348e4d9260d = new umiEventPoint("systemCreateElement"); $v4119639092e62c55ea8be348e4d9260d->addRef("inputData", $ve62e4d22f2d8630f6e44e2b7c3f70ddc); $v4119639092e62c55ea8be348e4d9260d->setMode("before"); $v4119639092e62c55ea8be348e4d9260d->call(); $vcfb14cbbb0da97c5d6fc00de2231984b = $vfed36e93a0509e20f2dc96cbbd85b678->getHierarchyTypeTemplate($v22884db148f0ffb0d830ba431102b0b5, $vea9f6aca279138c58f705c8d4cb4b8ce); if ($vd0e45878043844ffc41aac437e86b602 instanceof iUmiHierarchyElement) { $v6be379826b20cc58475f636e33f4606b = $vd0e45878043844ffc41aac437e86b602->getId(); $v78e6dd7a49f5b0cb2106a3a434dd5c86 = $vd0e45878043844ffc41aac437e86b602->getLangId(); $v662cbf1253ac7d8750ed9190c52163e5 = $vd0e45878043844ffc41aac437e86b602->getDomainId(); if ($vcfb14cbbb0da97c5d6fc00de2231984b !== false) { $vd02e12eb6d6c3f6ebd763197df01e211 = $vcfb14cbbb0da97c5d6fc00de2231984b; } else { $vb6aaa85825f7ae803766f43e00873d06 = umiHierarchy::getInstance()->getDominantTplId($v6be379826b20cc58475f636e33f4606b); if ($vb6aaa85825f7ae803766f43e00873d06) { $vd02e12eb6d6c3f6ebd763197df01e211 = $vb6aaa85825f7ae803766f43e00873d06; } else { throw new coreException(getLabel('error-dominant-template-not-found')); } } } else { $v6be379826b20cc58475f636e33f4606b = 0; $v78e6dd7a49f5b0cb2106a3a434dd5c86 = $v8b1dc169bf460ee884fceef66c6607d6->getCurrentLang()->getId(); $v662cbf1253ac7d8750ed9190c52163e5 = $v8b1dc169bf460ee884fceef66c6607d6->getCurrentDomain()->getId(); if ($v84ad1b49a83349491077e094ad5c5d1b = $this->getFloatedDomain()) { $v662cbf1253ac7d8750ed9190c52163e5 = $v84ad1b49a83349491077e094ad5c5d1b; } if ($vcfb14cbbb0da97c5d6fc00de2231984b !== false) { $vd02e12eb6d6c3f6ebd763197df01e211 = $vcfb14cbbb0da97c5d6fc00de2231984b; } else { $vd02e12eb6d6c3f6ebd763197df01e211 = $vfed36e93a0509e20f2dc96cbbd85b678->getDefaultTemplate()->getId(); } } $this->checkDomainPermissions($v662cbf1253ac7d8750ed9190c52163e5); if (getRequest('template-id')) { $vd02e12eb6d6c3f6ebd763197df01e211 = getRequest('template-id'); } $vb946c44d711ade3b061653732977d043 = $v6942e8fa62b3cc9d93881a58210e2fd7->getTypeByName($v22884db148f0ffb0d830ba431102b0b5, $vea9f6aca279138c58f705c8d4cb4b8ce); if ($vb946c44d711ade3b061653732977d043 instanceof iUmiHierarchyType) { $v0715f6d9497f93911417c9c324265771 = $vb946c44d711ade3b061653732977d043->getId(); } else { throw new coreException(getLabel('error-element-type-detect-failed')); } if (is_null($vb068931cc450442b63f5b3d276ea4297 = getRequest('name'))) { throw new coreException(getLabel('error-require-name-param')); } if (is_null($vd84ff935144e00c3e1d395c2379aca47 = getRequest('alt-name'))) { $vd84ff935144e00c3e1d395c2379aca47 = $vb068931cc450442b63f5b3d276ea4297; } $v94757cae63fd3e398c0811a976dd6bbe = getArrayKey($ve62e4d22f2d8630f6e44e2b7c3f70ddc, 'type-id'); if (!$v94757cae63fd3e398c0811a976dd6bbe && !($v94757cae63fd3e398c0811a976dd6bbe = getRequest("type-id"))) { $v94757cae63fd3e398c0811a976dd6bbe = $v0e8133eb006c0f85ed9444ae07a60842->getBaseType($v22884db148f0ffb0d830ba431102b0b5, $vea9f6aca279138c58f705c8d4cb4b8ce); if ($vd0e45878043844ffc41aac437e86b602 instanceof iUmiHierarchyElement) { $v5a509ca3ce95bc71bf833077b7d5a178 = $vb81ca7c0ccaa77e7aa91936ab0070695->getDominantTypeId($vd0e45878043844ffc41aac437e86b602->getId(), 1, $v0715f6d9497f93911417c9c324265771); if ($v5a509ca3ce95bc71bf833077b7d5a178) { $v94757cae63fd3e398c0811a976dd6bbe = $v5a509ca3ce95bc71bf833077b7d5a178; } } } if (!$v94757cae63fd3e398c0811a976dd6bbe) { throw new coreException("Base type for {$v22884db148f0ffb0d830ba431102b0b5}::{$vea9f6aca279138c58f705c8d4cb4b8ce} doesn't exists"); } $v7057e8409c7c531a1a6e9ac3df4ed549 = $vb81ca7c0ccaa77e7aa91936ab0070695->addElement($v6be379826b20cc58475f636e33f4606b, $v0715f6d9497f93911417c9c324265771, $vb068931cc450442b63f5b3d276ea4297, $vd84ff935144e00c3e1d395c2379aca47, $v94757cae63fd3e398c0811a976dd6bbe, $v662cbf1253ac7d8750ed9190c52163e5, $v78e6dd7a49f5b0cb2106a3a434dd5c86, $vd02e12eb6d6c3f6ebd763197df01e211); $v9bc65c2abec141778ffaa729489f3e87 = $v8b1dc169bf460ee884fceef66c6607d6->getModule('users'); if ($v9bc65c2abec141778ffaa729489f3e87 instanceof users) { backupModel::getInstance()->save($v7057e8409c7c531a1a6e9ac3df4ed549); $v9bc65c2abec141778ffaa729489f3e87->setPerms($v7057e8409c7c531a1a6e9ac3df4ed549); } $v8e2dcfd7e7e24b1ca76c1193f645902b = $vb81ca7c0ccaa77e7aa91936ab0070695->getElement($v7057e8409c7c531a1a6e9ac3df4ed549); if ($v8e2dcfd7e7e24b1ca76c1193f645902b instanceof iUmiHierarchyElement) { $v854203cccade0bbe21be239a208aea49 = $v8e2dcfd7e7e24b1ca76c1193f645902b->getModule(); $v2fa70149e2a7e75da2b0303d0a36a944 = $v8e2dcfd7e7e24b1ca76c1193f645902b->getMethod(); if (!is_null($v4264c638e0098acb172519b0436db099 = getRequest('active'))) { $v41275a535677f79ff347e01bc530c176 = permissionsCollection::getInstance(); $ve8701ad48ba05a91604e480dd60899a3 = $v41275a535677f79ff347e01bc530c176->getUserId(); if ($v41275a535677f79ff347e01bc530c176->isAllowedMethod($ve8701ad48ba05a91604e480dd60899a3, $v8b1dc169bf460ee884fceef66c6607d6->getCurrentModule(), "publish") == false) { $v4264c638e0098acb172519b0436db099 = false; } $v8e2dcfd7e7e24b1ca76c1193f645902b->setIsActive($v4264c638e0098acb172519b0436db099); } if (!is_null($ve1c6c9ef2fcbe75f26f815c4ef2e60b4 = getRequest('is-visible'))) { $v8e2dcfd7e7e24b1ca76c1193f645902b->setIsVisible($ve1c6c9ef2fcbe75f26f815c4ef2e60b4); } if (!is_null($vd02e12eb6d6c3f6ebd763197df01e211 = getRequest('template-id'))) { $v8e2dcfd7e7e24b1ca76c1193f645902b->setTplId($vd02e12eb6d6c3f6ebd763197df01e211); } if (!is_null($vf62baf4c4ead98d50d516eca0ac5a746 = getRequest('is-default'))) { $v8e2dcfd7e7e24b1ca76c1193f645902b->setIsDefault($vf62baf4c4ead98d50d516eca0ac5a746); } if (!is_null($vb068931cc450442b63f5b3d276ea4297 = getRequest('name'))) { $v8e2dcfd7e7e24b1ca76c1193f645902b->setValue('h1', $vb068931cc450442b63f5b3d276ea4297); } $va8cfde6331bd59eb2ac96f8911c4b666 = $v8e2dcfd7e7e24b1ca76c1193f645902b->getObject(); $this->saveAddedObject($va8cfde6331bd59eb2ac96f8911c4b666); $v8e2dcfd7e7e24b1ca76c1193f645902b->commit(); $v0c7f28926c50104e917a6cd58527573e = $v8e2dcfd7e7e24b1ca76c1193f645902b->getObject(); if (!$v0c7f28926c50104e917a6cd58527573e->getValue("publish_status")) { $v0c7f28926c50104e917a6cd58527573e->setValue("publish_status", $this->getPageStatusIdByStatusSid()); $v0c7f28926c50104e917a6cd58527573e->commit(); } $vad255fe3eb36ab4782f3e471966df353 = new umiEventPoint("systemCreateElement"); $vad255fe3eb36ab4782f3e471966df353->addRef("element", $v8e2dcfd7e7e24b1ca76c1193f645902b); $vad255fe3eb36ab4782f3e471966df353->setMode("after"); $vad255fe3eb36ab4782f3e471966df353->call(); $this->currentEditedElementId = $v7057e8409c7c531a1a6e9ac3df4ed549; return $v7057e8409c7c531a1a6e9ac3df4ed549; } else { throw new coreException("Can't get created element instance"); } }