public function getNewReleaseInstanceId($iDispId = false) { if (!$iDispId) { $iDispId = getRequest("param0"); } $iReleaseId = false; if (isset($arrReleasees[$iDispId])) { $iReleaseId = $arrReleasees[$iDispId]; } else { $oReleaseesSelection = new umiSelection(); $oReleaseesSelection->setObjectTypeFilter(); $iHierarchyTypeId = umiHierarchyTypesCollection::getInstance()->getTypeByName("dispatches", "release")->getId(); $iReleaseTypeId = umiObjectTypesCollection::getInstance()->getTypeByHierarchyTypeId($iHierarchyTypeId); $oReleaseType = umiObjectTypesCollection::getInstance()->getType($iReleaseTypeId); $oReleaseesSelection->addObjectType($iReleaseTypeId); $oReleaseesSelection->setPropertyFilter(); $oReleaseesSelection->addPropertyFilterIsNull($oReleaseType->getFieldId('status'), 0, true); $oReleaseesSelection->addPropertyFilterEqual($oReleaseType->getFieldId('disp_reference'), $iDispId); $arrSelResults = umiSelectionsParser::runSelection($oReleaseesSelection); $bIsNewRelease = false; if (is_array($arrSelResults) && isset($arrSelResults[0])) { $iReleaseId = $arrSelResults[0]; $oRelease = umiObjectsCollection::getInstance()->getObject($iReleaseId); } else { $iReleaseId = umiObjectsCollection::getInstance()->addObject("", $iReleaseTypeId); $bIsNewRelease = true; } $oRelease = umiObjectsCollection::getInstance()->getObject($iReleaseId); if ($oRelease instanceof umiObject) { if ($bIsNewRelease) { $oRelease->setName('-'); $oRelease->setValue('status', false); $oRelease->setValue('disp_reference', $iDispId); $oRelease->commit(); } $arrReleasees[$iDispId] = $oRelease->getId(); } } return $iReleaseId; }
public function getGroupUsersCount($groupId = false) { $objectTypes = umiObjectTypesCollection::getInstance(); $userObjectTypeId = $objectTypes->getBaseType('users', 'user'); $userObjectType = $objectTypes->getType($userObjectTypeId); if ($userObjectType instanceof umiObjectType == false) { throw new publicException("Can't load user object type"); } $sel = new umiSelection(); $sel->addObjectType($userObjectTypeId); if ($groupId !== false) { if ($groupId != 0) { $sel->addPropertyFilterEqual($userObjectType->getFieldId('groups'), $groupId); } else { $sel->addPropertyFilterIsNull($userObjectType->getFieldId('groups')); } } return umiSelectionsParser::runSelectionCounts($sel); }
/** * Сбросить настройки прав до дефолтных для страницы (класс umiHierarchyElement) $element_id * @param Integer $element_id id страницы (класс umiHierarchyElement) * @return Boolean false если произошла ошибка */ public function setDefaultPermissions($element_id) { $element_id = (int) $element_id; if (!umiHierarchy::getInstance()->isExists($element_id)) { return false; } l_mysql_query("START TRANSACTION"); $sql = "DELETE FROM cms3_permissions WHERE rel_id = '{$element_id}'"; l_mysql_query($sql); $element = umiHierarchy::getInstance()->getElement($element_id, true, true); $hierarchy_type_id = $element->getTypeId(); $hierarchy_type = umiHierarchyTypesCollection::getInstance()->getType($hierarchy_type_id); $module = $hierarchy_type->getName(); $method = $hierarchy_type->getExt(); //Getting outgroup users $type_id = umiObjectTypesCollection::getInstance()->getBaseType("users", "user"); $sel = new umiSelection(); $sel->setObjectTypeFilter(); $sel->addObjectType($type_id); $group_field_id = umiObjectTypesCollection::getInstance()->getType($type_id)->getFieldId("groups"); $sel->setPropertyFilter(); $sel->addPropertyFilterIsNull($group_field_id); $users = umiSelectionsParser::runSelection($sel); //Getting groups list $object_type_id = umiObjectTypesCollection::getInstance()->getBaseType("users", "users"); $sel = new umiSelection(); $sel->setObjectTypeFilter(); $sel->addObjectType($object_type_id); $groups = umiSelectionsParser::runSelection($sel); $objects = array_merge($users, $groups); //Let's get element's ownerId and his groups (if user) $owner_id = $element->getObject()->getOwnerId(); if ($owner = umiObjectsCollection::getInstance()->getObject($owner_id)) { if ($owner_groups = $owner->getValue("groups")) { $owner_arr = $owner_groups; } else { $owner_arr = array($owner_id); } } else { $owner_arr = array(); } foreach ($objects as $ugid) { if ($ugid == SV_GROUP_ID) { continue; } if ($module == "content") { $method == "page"; } if ($this->isAllowedMethod($ugid, $module, $method)) { if (in_array($ugid, $owner_arr) || $ugid == SV_GROUP_ID || $this->isAllowedMethod($ugid, $module, $method . ".edit")) { $level = permissionsCollection::E_READ_ALLOWED_BIT + permissionsCollection::E_EDIT_ALLOWED_BIT + permissionsCollection::E_CREATE_ALLOWED_BIT + permissionsCollection::E_DELETE_ALLOWED_BIT + permissionsCollection::E_MOVE_ALLOWED_BIT; } else { $level = permissionsCollection::E_READ_ALLOWED_BIT; } $sql = "INSERT INTO cms3_permissions (rel_id, owner_id, level) VALUES('{$element_id}', '{$ugid}', '{$level}')"; l_mysql_query($sql); } } l_mysql_query("COMMIT"); l_mysql_query("SET AUTOCOMMIT=1"); $this->cleanupElementPermissions($element_id); if (isset($this->elementsCache[$element_id])) { unset($this->elementsCache[$element_id]); } $cache_key = $this->getUserId() . "." . $element_id; cacheFrontend::getInstance()->saveSql($cache_key, array(true, true)); }
/** * Применение кастомной логики к объекту umiSelection * * @param umiSelection $selection Объект umiSelection */ public function applyCustomCountFilters(&$selection) { $arCustomFilters = $this->customLogic->filters(); $oType = umiObjectTypesCollection::getInstance()->getType($this->objectsTypeId); if (!$oType) { return; } foreach ($arCustomFilters as $arCustomFilter) { $iFieldId = $oType->getFieldId($arCustomFilter[0]); $sOperator = $arCustomFilter[1]; $value = $arCustomFilter[2]; switch ($sOperator) { case "eq": $selection->addPropertyFilterEqual($iFieldId, $value); break; case "noteq": $selection->addPropertyFilterNotEqual($iFieldId, $value); break; case "null": $selection->addPropertyFilterIsNull($iFieldId); break; case "notnull": $selection->addPropertyFilterIsNotNull($iFieldId); break; case "gt": $selection->addPropertyFilterMore($iFieldId, $value); break; case "lt": $selection->addPropertyFilterLess($iFieldId, $value); break; case "like": $selection->addPropertyFilterLike($iFieldId, $value); break; } } }