/** * * @param string $view * @param mixed $viewData * @param array $composer * @return mixed */ public function __construct($view, $viewData, $composers) { if (count($composers) != 0) { foreach ($composers as $composer) { $composer = new $composer(); if ($composer->composerData != null) { extract($composer->composerData); } } } if ($viewData != null) { extract($viewData); } $h = IoC::resolve('ViewHelper'); $helper = IoC::resolve('Helper'); ob_start(); require_once path("application/views/{$view}.php"); $layout = isset($layout) ? $layout : 'master'; $view = ob_get_contents(); ob_end_clean(); ob_start(); require_once path("application/views/layout/" . $layout . ".php"); $output = ob_get_contents(); ob_end_clean(); Event::trigger('before_echo', array()); return $this->output = $output; }
/** * must be instatiated after veryfying token * @return string */ public function antiCSRF() { $session = IoC::resolve('Session'); $salt = md5(uniqid()); $session->put('_token', $token = str_shuffle(hash('sha256', uniqid(mt_rand(1, mt_getrandmax()), true) . $salt))); return $token; }
public function passwordMutator($value) { return IoC::resolve('Register')->hashPassword($value); }
/** * @param mixed $expl * @throws \Exception */ public function __construct($expl) { global $route, $route_groups, $routes_trans; $controller_args = []; if (count($expl) > 0) { $str = ''; foreach ($expl as $v) { $str .= $v . '/'; } $str = strtolower(rtrim($str, '/')); array_walk($routes_trans, function (&$value) { $value = preg_replace('@{.*}@U', '.+', $value); }); // searches translation for route foreach ($routes_trans as $origin => $translated) { if (preg_match("@^{$translated}\$@", $str)) { $translated_route = $origin; break; } } if (!isset($translated_route)) { $r = array_keys($route); array_walk($r, function (&$value) { $value = preg_replace('@{.*}@U', '.+', $value); }); foreach ($r as $k => $v) { if ($v != '/') { if (preg_match("@^{$v}\$@", $str)) { $current_route = array_intersect_key($route, array_flip(preg_grep("@{$v}@", array_keys($route)))); $key = key($current_route); $current_route = $current_route[$key]; $translated_route = $key; break; } } } if (!isset($current_route)) { throw new \Exception('Route is not registered properly.'); } } else { $current_route = $route[$translated_route]; } } elseif (!isset($route['/'])) { exit('<h1>Welcome to Yafop - PHP framework</h1>'); } else { $tmp = explode('@', $route['/']['uses']); $controller_name = "\\application\\controllers\\" . $tmp[0]; $controller_method = $tmp[1]; $current_route = $route['/']; } if (isset($current_route) && ($group = $current_route['group']) != '') { $groups = explode('|', $group); foreach ($groups as $group) { if (($before_filter = @$route_groups[$group]['before']) != '') { $this->_before_filter[] = $before_filter; } if (($composer = @$route_groups[$group]['composer']) != '') { $composers = explode('|', $composer); foreach ($composers as $cmp) { $c = '\\application\\controllers\\composers\\' . $cmp; self::$composer[] = $c; } } if (($after_filter = @$route_groups[$group]['after']) != '') { $this->_after_filter[] = $after_filter; } } } if (count($this->_before_filter) == 0 && !empty($current_route['before'])) { $this->_before_filter[] = $current_route['before']; } if (count($this->_after_filter) == 0 && !empty($current_route['after'])) { $this->_after_filter[] = $current_route['after']; } /* * calls required controller with optional parameters */ if (!isset($controller_name) && !isset($controller_method)) { // parameters for controller method preg_match_all('@{.+}@U', $translated_route, $m); if (($c = count($m[0])) == 0) { $controller_args = []; } else { $request = IoC::resolve('Request', false); $request->segmentReverse(); for ($i = 1; $i <= $c; $i++) { $controller_args[] = $request->segment($i); } $controller_args = array_reverse($controller_args); } $tmp = explode('@', $current_route['uses']); $controller_name = "\\application\\controllers\\" . $tmp[0]; $controller_method = $tmp[1]; } if (!class_exists($controller_name)) { throw new \Exception("{$controller_name} class does not exist."); } $obj = new $controller_name(); if (!method_exists($obj, $controller_method)) { throw new \Exception('There is no method ' . $controller_method . ' in ' . $controller_name . ' class.'); } S::$conf['Filters']['controller_name'] = $controller_name; S::$conf['Filters']['controller_method'] = $controller_method; S::$conf['Filters']['controller_args'] = $controller_args; if (count($this->_before_filter) != 0) { foreach ($this->_before_filter as $filter) { $tmp = explode('|', $filter); foreach ($tmp as $filter2) { $this->Filters->{$filter2}(); } } } if (count($this->_after_filter) != 0) { foreach ($this->_after_filter as $filter) { $tmp = explode('|', $filter); foreach ($tmp as $filter2) { $this->Filters->{$filter2}(); } } } $this->output = $this->Filters->filtered_output; if (empty($this->Filters->filtered_output)) { $this->output = call_user_func_array([$obj, $controller_method], $controller_args); } }