Exemplo n.º 1
0
 public function processed_actions($options = [])
 {
     if (empty($this->_processed_actions)) {
         $this->_processed_actions = [];
     }
     $page_id = !empty($options['page_id']) ? $options['page_id'] : 0;
     if (!isset($this->_processed_actions[$page_id])) {
         // always have access to
         $this->_processed_actions[$page_id] = array('logout' => true);
         // standard actions
         foreach ($this->_allowed_actions() as $action_id) {
             $this->_edit_allowed_action($action_id, true, $page_id);
         }
         // override with per page actions
         if ($page_id) {
             foreach ($this->_allowed_page_actions($page_id) as $action_id => $access) {
                 if ($access == 'allow') {
                     $this->_edit_allowed_action($action_id, true, $page_id);
                 } else {
                     $this->_edit_allowed_action($action_id, false, $page_id);
                 }
             }
         }
         // add inherited permissions
         foreach (AdminAction::inherited() as $action) {
             if ($action->inherit == -1 || $action->inherit && !empty($this->_processed_actions[$page_id][$action->inherit]) && $this->_processed_actions[$page_id][$action->inherit]) {
                 $this->_edit_allowed_action($action->id, true, $page_id);
             }
         }
         // add permissions based on per page or site wide content edit permissions
         foreach (AdminAction::edit_based() as $action) {
             if ($page_id && !empty($this->_processed_actions[$page_id]['pages.edit']) && $this->_processed_actions[$page_id]['pages.edit'] || !$page_id && !empty($this->_processed_actions[$page_id]['blocks']) && $this->_processed_actions[$page_id]['blocks']) {
                 $this->_edit_allowed_action($action->id, true, $page_id);
             }
         }
     }
     return $this->_processed_actions[$page_id];
 }