示例#1
0
 /**
  * @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;
 }