/** * @param $objectId * @param $userId * @return array * @throws \Bitrix\Main\ArgumentOutOfRangeException */ private function getUserRightsByObject($objectId, $userId) { /** @var Query $query */ $query = new Query(RightTable::getEntity()); $rights = $query->setSelect(array('ACCESS_CODE', 'TASK_ID', 'NEGATIVE', 'NAME' => 'TASK_OPERATION.OPERATION.NAME', 'DEPTH_LEVEL' => 'PATH_PARENT.DEPTH_LEVEL'))->setFilter(array('PATH_PARENT.OBJECT_ID' => $objectId, 'USER_ACCESS.USER_ID' => $userId))->exec()->fetchAll(); /** @var Query $query */ $query = new Query(RightTable::getEntity()); $rights = array_merge($rights, $query->setSelect(array('ACCESS_CODE', 'TASK_ID', 'NEGATIVE', 'NAME' => 'TASK_OPERATION.OPERATION.NAME', 'DEPTH_LEVEL' => 'PATH_PARENT.DEPTH_LEVEL'))->setFilter(array('LOGIC' => 'OR', array('PATH_PARENT.OBJECT_ID' => $objectId, '=ACCESS_CODE' => 'CR', 'OBJECT.CREATED_BY' => $userId), array('PATH_PARENT.OBJECT_ID' => $objectId, '=ACCESS_CODE' => 'AU')))->exec()->fetchAll()); Collection::sortByColumn($rights, array('DEPTH_LEVEL' => SORT_DESC)); return $rights; }