/** * Gets a session variable * * @param string $key Variable name, * If null all variables will be returned. * @param mixed $default Default value * @return mixed Session value */ public function get($key = null, $default = null) { $this->check(); if ($key === null) { return $_SESSION; } return $this->pixie->arr($_SESSION, $key, $default); }
/** * Loads a group configuration file it has not been loaded before and * returns its options. If the group doesn't exist creates an empty one * * @param string $name Name of the configuration group to load * @return array Array of options for this group */ public function get_group($name) { if (!isset($this->groups[$name])) { $file = $this->pixie->find_file('config', $name); $this->load_group($name, $file); } return $this->groups[$name]['options']; }
/** * Sets the template to use for rendering * * @param string $name The name of the template to use * @throws \Exception If specified template is not found */ public function set_template($name) { $this->name = $name; $file = $this->pixie->find_file('views', $name, $this->_extension); if ($file == false) { throw new \Exception("View {$name} not found."); } $this->path = $file; }
/** * Removes a relationship between current item and the passed one * * @param string $relation Name of the relationship * @param \PHPixie\ORM\Model $model ORM item to remove relationship with. Can be omitted for 'belongs_to' relationships * @return void * @throws \Exception If realtionship is not defined * @throws \Exception If current item is not in the database yet (isn't considered loaded()) * @throws \Exception If passed item is not in the database yet (isn't considered loaded()) */ public function remove($relation, $model = null) { if (!$this->loaded()) { throw new \Exception("Model must be loaded before you try removing relationships from it."); } $rels = array_merge($this->has_one, $this->has_many, $this->belongs_to); $rel = $this->pixie->arr($rels, $relation, false); if (!$rel) { throw new \Exception("Model doesn't have a '{$relation}' relation defined"); } if ($rel['type'] != 'belongs_to' && (!$model || !$model->loaded())) { throw new \Exception("Model must be loaded before being removed from a has_one or has_many relationship."); } if ($rel['type'] == 'belongs_to') { $key = $rel['key']; $this->{$key} = null; $this->save(); } elseif (isset($rel['through'])) { $this->conn->query('delete')->table($rel['through'])->where(array(array($rel['key'], $this->_row[$this->id_field]), array($rel['foreign_key'], $model->_row[$model->id_field])))->execute(); } else { $key = $rel['key']; $model->{$key} = null; $model->save(); } $this->cached = array(); }
/** * Refresh routes * * @return \PHPixie\I18n */ protected function routesRefresh() { foreach ($this->pixie->config->get('routes') as $name => $rule) { $this->pixie->router->add($this->pixie->route($name, $rule[0], $rule[1], $this->pixie->arr($rule, 2, null))); } return $this; }
/** * Initializes the routed Controller and executes specified action * * @return \PHPixie\Response A Response object with the body and headers set */ public function execute() { $class = $this->param('namespace', $this->pixie->app_namespace) . 'Controller\\' . ucfirst($this->param('controller')); $controller = $this->pixie->controller($class); $controller->request = $this; $controller->run($this->param('action')); return $controller->response; }
/** * This method is used only by preg_replace_callback() in method match() instead of making anonymous function * to avoid fatal memory leak on some server configurations */ protected function rule($str) { $str = $str[0]; $regexp = '[a-zA-Z0-9\\-\\._]+'; if (is_array($this->temp_rule)) { $regexp = $this->pixie->arr($this->temp_rule[1], str_replace(array('<', '>'), '', $str), $regexp); } return '(?P' . $str . $regexp . ')'; }
/** * Displays the error page. If you set $display_errors to false * only a small error message will be displayed. * * @param \Exception $exception Exception to display * @return void */ public function render_exception_page($exception) { if (ob_get_length() > 0) { ob_end_clean(); } $status = '503 Service Temporarily Unavailable'; if ($exception instanceof \PHPixie\Exception\PageNotFound) { $status = '404 Not Found'; } header($_SERVER["SERVER_PROTOCOL"] . ' ' . $status); header("Status: {$status}"); if (!$this->display_errors) { echo $status; } else { $view = $this->pixie->view('debug'); $view->exception = $exception; $view->log = $this->logged; echo $view->render(); } }
/** * Gets the value of a cookie * * @param string $key Cookie name * @param mixed $default Default value * @return mixed Cookie value */ public function get($key, $default = null) { return $this->pixie->arr($this->cookies, $key, $default); }
/** * Gets a field value * * @param string $field Field name * @param mixed $default Default value to return * @return mixed Field value */ public function get($field, $default = null) { return $this->pixie->arr($this->input, $field, $default); }