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]; }