Esempio n. 1
0
 /**
  * 
  * @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;
 }
Esempio n. 2
0
 /**
  * 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;
 }
Esempio n. 3
0
 public function passwordMutator($value)
 {
     return IoC::resolve('Register')->hashPassword($value);
 }
Esempio n. 4
0
 /**
  * @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);
     }
 }