Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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));
 }
Exemplo n.º 4
0
 /**
  * Применение кастомной логики к объекту 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;
         }
     }
 }