Пример #1
0
 public function getAccessListItems($accessType = AreaPermissionKey::ACCESS_TYPE_INCLUDE, $filterEntities = array())
 {
     $db = Database::connection();
     $list = parent::getAccessListItems($accessType, $filterEntities);
     $pobj = $this->getPermissionObjectToCheck();
     foreach ($list as $l) {
         $pe = $l->getAccessEntityObject();
         if ($pobj instanceof Page) {
             $permission = $db->fetchColumn('select permission from BlockTypePermissionBlockTypeAccessList where paID = ?', array($l->getPermissionAccessID()));
         } else {
             $permission = $db->fetchColumn('select permission from AreaPermissionBlockTypeAccessList where peID = ? and paID = ?', array($pe->getAccessEntityID(), $l->getPermissionAccessID()));
         }
         if ($permission != 'N' && $permission != 'C') {
             $permission = 'A';
         }
         $l->setBlockTypesAllowedPermission($permission);
         if ($permission == 'C') {
             if ($pobj instanceof Area) {
                 $btIDs = $db->GetCol('select btID from AreaPermissionBlockTypeAccessListCustom where peID = ? and paID = ?', array($pe->getAccessEntityID(), $l->getPermissionAccessID()));
             } else {
                 $btIDs = $db->GetCol('select btID from BlockTypePermissionBlockTypeAccessListCustom where paID = ?', array($l->getPermissionAccessID()));
             }
             $l->setBlockTypesAllowedArray($btIDs);
         }
     }
     return $list;
 }
 public function getAccessListItems($accessType = AreaPermissionKey::ACCESS_TYPE_INCLUDE, $filterEntities = array(), $checkCache = true)
 {
     if ($checkCache) {
         $cache = \Core::make('cache/request');
         $item = $cache->getItem($this->getCacheIdentifier($accessType, $filterEntities));
         if (!$item->isMiss()) {
             return $item->get();
         }
         $item->lock();
     }
     $db = Database::connection();
     $list = parent::getAccessListItems($accessType, $filterEntities, false);
     $pobj = $this->getPermissionObjectToCheck();
     foreach ($list as $l) {
         $pe = $l->getAccessEntityObject();
         if ($pobj instanceof Page) {
             $permission = $db->fetchColumn('select permission from BlockTypePermissionBlockTypeAccessList where paID = ?', array($l->getPermissionAccessID()));
         } else {
             $permission = $db->fetchColumn('select permission from AreaPermissionBlockTypeAccessList where peID = ? and paID = ?', array($pe->getAccessEntityID(), $l->getPermissionAccessID()));
         }
         if ($permission != 'N' && $permission != 'C') {
             $permission = 'A';
         }
         $l->setBlockTypesAllowedPermission($permission);
         if ($permission == 'C') {
             if ($pobj instanceof Area) {
                 $btIDs = $db->GetCol('select btID from AreaPermissionBlockTypeAccessListCustom where peID = ? and paID = ?', array($pe->getAccessEntityID(), $l->getPermissionAccessID()));
             } else {
                 $btIDs = $db->GetCol('select btID from BlockTypePermissionBlockTypeAccessListCustom where paID = ?', array($l->getPermissionAccessID()));
             }
             $l->setBlockTypesAllowedArray($btIDs);
         }
     }
     if ($checkCache) {
         $cache->save($item->set($list));
     }
     return $list;
 }