public function permissioning($reference = false, $runner_passed = false) { $runner = $runner_passed ? $runner_passed : \rr::instance(); if (!$this->permission && $runner->model_context && isset($runner->model_context['permission_need']) && $runner->model_context['permission_need']) { $permissions = isset($runner->permissions) ? $runner->permissions : false; if ($permissions && is_array($permissions)) { while ($permission = array_shift($permissions)) { if (isset($permission['owner'])) { if (isset($this->owner) && !is_array($this->owner)) { $this->owner = array($this->owner); $this->owner[] = $permission['owner']; } else { $this->owner = $permission['owner']; } } if (isset($permission['group'])) { if (isset($this->group) && !is_array($this->group)) { $this->group = array($this->group); $this->group[] = $permission['group']; } else { $this->group = $permission['group']; } } if (isset($permission['other'])) { $this->other = $permission['other']; } //if (isset($permission['owner']) // && (int) $permission['owner'] === (int) \Routerunner\Routerunner::get('uid')) { $email = null; $name = null; $group = null; if ($me = \user::me($email, $name, $group)) { if (isset($permission['owner']) && (int) $permission['owner'] === (int) $me) { $this->permission = array('owner' => $permission['permission']); } //if (isset($permission['group']) && // ($this->permission === false || (is_array($this->permission) && key($this->permission) == 'other')) // && (int) $permission['group'] === (int) \Routerunner\Routerunner::get('gid')) { if (isset($permission['group']) && ($this->permission === false || is_array($this->permission) && key($this->permission) == 'other') && (int) $permission['group'] === (int) $group) { $this->permission = array('group' => $permission['permission']); } } if (isset($permission['other']) && $this->permission === false && $permission['other'] === '1') { $this->permission = array('other' => $permission['permission']); } } } else { $SQL = 'SELECT `label`, `owner`, `group`, `other`, `permission` FROM `{PREFIX}permissions` AS `permissions`' . PHP_EOL; $SQL .= 'WHERE `permissions`.`reference` = ?' . PHP_EOL; $SQL .= 'ORDER BY CASE WHEN `other` = 1 THEN 2 WHEN `group` IS NOT NULL THEN 1 ' . PHP_EOL; $SQL .= 'WHEN `owner` IS NOT NULL THEN 0 ELSE 4 END, `permission_id`'; $perm_reference = $reference ? $reference : $this->reference; $perm_parents = \Routerunner\Bootstrap::parent($perm_reference); $perm_result = false; while ($perm_reference && !($perm_result = \Routerunner\Db::query($SQL, array($perm_reference))) && ($perm_parent = array_pop($perm_parents))) { $perm_reference = $perm_parent['reference']; } if ($perm_result) { while ($permission = array_shift($perm_result)) { if (!is_null($permission['owner'])) { if (isset($this->owner) && !is_array($this->owner)) { $this->owner = array($this->owner); $this->owner[] = $permission['owner']; } else { $this->owner = $permission['owner']; } } if (!is_null($permission['group'])) { if (isset($this->group) && !is_array($this->group)) { $this->group = array($this->group); $this->group[] = $permission['group']; } else { $this->group = $permission['group']; } } if (!is_null($permission['other'])) { $this->other = $permission['other']; } $uid = \user::me($email, $name, $gid); if (!is_null($permission['owner']) && (int) $permission['owner'] === (int) $uid) { $this->permission = array('owner' => $permission['permission']); } if (!is_null($permission['group']) && ($this->permission === false || is_array($this->permission) && key($this->permission) == 'other' && (int) $permission['group'] === (int) $gid)) { $this->permission = array('group' => $permission['permission']); } if ($this->permission === false && $permission['other'] === '1') { $this->permission = array('other' => $permission['permission']); } } } } } }
public static function get($name = false) { $runner = rr::instance(); if (!$name) { return $runner->context; } else { $return = isset($runner->context[$name]) ? $runner->context[$name] : ''; return $return; } }