protected function rewrite() { $routes = array(); $aliases =& $this->f3->ref('ALIASES'); $redirects = array(); foreach ($this->f3->get('ROUTES') as $old => $data) { $route = current(current($data)); //let's pick up any route just to get the URL name $name = @$route[3]; //PHP 5.3 compatibility $new = $old; if (!($name && in_array($name, $this->global_aliases) || isset($this->global_regex) && preg_match($this->global_regex, $old))) { if (isset($this->rules[$this->current][$name])) { $new = $this->rules[$this->current][$name]; if ($new === FALSE) { if (isset($aliases[$name])) { unset($aliases[$name]); } continue; } } $new = rtrim('/' . $this->current . $new, '/'); if ($this->migrate && $this->auto) { $redir = $old; if (isset($this->rules[$this->primary][$name])) { $redir = $this->rules[$this->primary][$name]; } if ($redir !== FALSE) { $redirects[$old] = rtrim('/' . $this->primary . $redir, '/'); } } } if (isset($routes[$new])) { user_error(sprintf(self::E_Duplicate, $new), E_USER_ERROR); } $routes[$new] = $data; if (isset($aliases[$name])) { $aliases[$name] = $new; } } $this->f3->set('ROUTES', $routes); foreach ($redirects as $old => $new) { $this->f3->route('GET ' . $old, function ($f3) use($new) { $f3->reroute($new, TRUE); }); } }
/** * @param string $key */ public function __construct($key = 'flash') { $this->f3 = \Base::instance(); $this->msg =& $this->f3->ref('SESSION.' . $key . '.msg'); $this->key =& $this->f3->ref('SESSION.' . $key . '.key'); }