Example #1
0
 public static function run()
 {
     $router = new Router();
     $dispatcher = new Dispatcher($router, array("requireViewFile" => !in_array($router->getAction(), array_keys(static::$actionsWithDataOnly))));
     static::$dispatcher =& $dispatcher;
     $action = $dispatcher->getAction();
     $controller = $dispatcher->getController();
     $lang = $dispatcher->getLang();
     $module = $dispatcher->getModule();
     $permission = $dispatcher->getPermission();
     $view = $dispatcher->getView();
     $info = array("action" => $action, "controller" => $controller, "data" => $dispatcher->getData(), "extra" => $dispatcher->getExtra(), "lang" => $lang, "module" => $module, "view" => $view);
     if ($permission::getPermission($action, Session::getPerm(), $info) === false) {
         $dispatcher->setError(403);
         $info["action"] = $action = $dispatcher->getAction();
         $info["controller"] = $controller = $dispatcher->getController();
         $info["module"] = $module = $dispatcher->getModule();
         $info["view"] = $view = $dispatcher->getView();
     }
     //TASK: przeniesc do __constructStatic, znalezc inne wywolania __init i to samo!
     $view::__init($action);
     $view::obStart();
     if (array_key_exists($action, static::$actionsWithDataOnly)) {
         header("Content-Type: " . static::$actionsWithDataOnly[$action]);
         //TODO: czy metody withDataOnly powinny otrzymywac argument $viewParams["info"] ?
         if (is_callable(array($controller, $action))) {
             echo $controller::$action();
         } elseif (is_callable(array($controller, "{$action}_"))) {
             $action2 = "{$action}_";
             echo $controller::$action2();
         }
     } else {
         if (Config::getOne("requireWww")) {
             Utils\Header::redirectIfNotWww();
         }
         $viewParams = array("info" => $info);
         // Troche magii:
         // Jesli mamy modul, w ktorym akcja nazywa sie tak samo jak modul - to PHP uzna akcje za konstruktor, lecz ten nie moze byc statyczny wiec bedzie blad PHP.
         // Wtedy definiujemy akcje jako z sufixem "_" (np. "AKCJA_"), a tu umozliwiamy jej wywolanie.
         // Przyklad: \App\Controller\Index::index
         if (is_callable(array($controller, $action))) {
             $viewParams["data"] = $controller::$action($viewParams["info"]);
         } elseif (is_callable(array($controller, "{$action}_"))) {
             $action2 = "{$action}_";
             $viewParams["data"] = $controller::$action2($viewParams["info"]);
         }
         $bodyContent = static::loadViewFile($view::getViewFile($lang, $module, $action), $viewParams);
         $headerContent = static::loadViewFile($view::getViewFile($lang, "common", "header"), $viewParams);
         $view::printSite(["bodyHeader" => $headerContent, "body" => $bodyContent, "info" => $info]);
     }
     $view::obFinish();
 }
Example #2
0
 /**
  * Metoda generująca link do strony.
  *
  * @access public
  * @param  string? $_module[=NULL] nazwa kontrolera
  * @param  string? $_action[=NULL] nazwa akcji
  * @param  string? $_extra[=NULL]  wartość dodatkowych danych dla żądania
  * @return string  Link do zadanej strony
  * @static
  * @see Config::get ("index")
  * @see Config::get ("usingModRewrite")
  */
 public static function generateLink($_)
 {
     $url = "";
     $url = Config::getOne("url", "") . "/" . Config::getOne("index", "index.php");
     $url .= "?site={$_["lang"]}";
     if (isset($_["module"]) && $_["module"]) {
         $url .= "/{$_["module"]}";
         if (isset($_["action"]) && $_["action"] && $_["action"] !== static::$defaultAction) {
             $url .= "/{$_["action"]}";
             if (isset($_["extra"]) && $_["extra"]) {
                 $url .= "/" . implode("/", $_["extra"]);
             }
         }
     }
     if (isset($_["data"]) && $_["data"]) {
         $url .= "&data=" . implode("/", $_["data"]);
     }
     if (isset($_["hash"]) && $_["hash"]) {
         $url .= "#" . $_["hash"];
     }
     return $url;
 }
Example #3
0
 /**
  * Metoda pobierająca nazwe klasy widoku.
  *
  * @access public
  * @return string nazwa widoku
  */
 public function getView()
 {
     $class = "\\" . Config::getOne("app") . "\\View\\" . $this->module;
     if (!class_exists($class)) {
         $class = "\\Ker\\MVCP\\AView";
     }
     return $class;
 }