Example #1
0
 /**
  * @param \KodiApp\Application $application
  */
 public function initializeApplication(\KodiApp\Application $application)
 {
     $router = new \KodiApp\Router\SimpleRouter();
     $router->setRoutes([["method" => "GET", "url" => "/foo/bar/1222", "handler" => "FooController::methodName"], ["method" => "GET", "url" => "/news/{news_id}", "handler" => "NewsController::renderNews"]]);
     $application->setRouter(new \KodiApp\Router\SimpleRouter());
     $application->setEnvironment(["type" => \KodiApp\Application::ENV_DEVELOPMENT, "timezone" => "Europe/Budapest", "loglevel" => Logger::INFO, "display_errors" => 1, "error_reporting" => E_ERROR | E_WARNING | E_PARSE, "force_https" => false, "controllers_path" => "src/Controller", "controller_namespace" => "TestApp\\Controller"]);
     // Adatbázis inicializálása
     $application->register(new DatabaseProvider(["name" => "database_connection", "driver" => "mysql", "dbname" => "db_database", "host" => "localhost", "user" => "root", "password" => "", "charset" => "utf8"]));
     // Monolog inicializálása
     $application->register(new MonologProvider(["name" => 'test_proj', "path" => '/log/admin.log', "log_level" => Logger::INFO]));
     $application->register(new TranslatorProvider(["fallbackLocales" => ["hu", "en"], "loader" => ["dev" => Translator::LOADER_ARRAY, "prod" => Translator::LOADER_SERIALIZED], "resources" => ["hu" => ["/asd/asd"]], "strategy" => Translator::STRATEGY_ONLY_COOKIE, "cookie_set_url" => "/lang/set/{locale:[a-z]+}"]));
     // Security inicializálása
     $application->register(new SecurityProvider(["user_class" => TestUser::class, "permissions" => ["/myprofile" => \KodiApp\Security\Role::ROLE_USER]]));
     // Session inicializálása
     $application->register(new SessionProvider(["name" => "mv_session", "lifetime" => 7200]));
     $application->register(new TwigProvider(["path" => '/view', "page_frame_template_path" => '/page_frame/frame.twig', "content_providers" => [new ServerContentProvider()]]));
     $application->setErrorHandler(function ($error) {
         if ($error instanceof HttpNotFoundException) {
             return "HTTP 404: [" . $_SERVER['REQUEST_METHOD'] . "] " . $_SERVER['REQUEST_URI'];
         } elseif ($error instanceof HttpInternalErrorException) {
             $result = "";
             foreach (debug_backtrace() as $line) {
                 $result .= $line . "\n";
             }
             return "HTTP 500: \n" . $result;
         } elseif ($error instanceof HttpAccessDeniedException) {
             return "HTTP 403: [" . $_SERVER['REQUEST_METHOD'] . "] " . $_SERVER['REQUEST_URI'];
         } else {
             return "HTTP: Undefined error";
         }
     });
 }
Example #2
0
 public function generate($url_name, $parameters = [])
 {
     $routes = Application::Router()->getRoutes();
     $translator = Application::Translator();
     if (!isset($routes[$url_name])) {
         return $url_name;
     }
     // Ha szükséges be kell rakni a nyelvet is a paraméterek közé
     if ($translator != null && $translator->getStrategy() != Translator::STRATEGY_ONLY_COOKIE && !$routes[$url_name]["locale"] == LanguageRouter::LOCALE_NOT_ALLOWED) {
         $parameters["locale"] = $translator->getLocale();
     }
     $url = $routes[$url_name]["url"];
     $resultUrl = "";
     $index = 0;
     while (($firstPos = strpos($url, "{", $index)) != false) {
         $lastPos = strpos($url, "}", $firstPos);
         $name = explode(":", substr($url, $firstPos + 1, $lastPos - $firstPos - 1))[0];
         $resultUrl .= substr($url, $index, $firstPos - $index) . (isset($parameters[$name]) ? $parameters[$name] : "");
         $index = $lastPos + 1;
     }
     if ($index != strlen($url)) {
         $resultUrl .= substr($url, $index);
     }
     // Ha nincs semmi, akkor nem volt paraméter, másoljuk az egész url-t.
     if ($resultUrl === "") {
         $resultUrl = $url;
     }
     return $resultUrl;
 }
Example #3
0
 /**
  * Required parameters:
  *  from,to,subject,body_html,body_plain
  *
  * Optional parameters:
  * cc
  *
  * @param array $emailParameters
  */
 public function sendEmail($emailParameters)
 {
     $email = \Swift_Message::newInstance();
     $email->setSubject($emailParameters["subject"])->setFrom($emailParameters["from"])->setTo($this->debugMail == null && Application::isDevelopmentEnv() ? $emailParameters["to"] : $this->debugMail)->setBody($emailParameters["body_html"], 'text/html');
     if (isset($emailParameters["cc"])) {
         $email->setCc($emailParameters["cc"]);
     }
     $email->addPart($emailParameters["body_plain"], 'text/plain');
     $this->mailer->send($email);
 }
Example #4
0
 /**
  * Registers services on the given container.
  *
  * This method should only be used to configure services and parameters.
  * It should not get services.
  *
  * @param Container $pimple A container instance
  */
 public function register(Container $pimple)
 {
     $configuration = $this->configuration;
     $pimple['twig'] = function ($c) use($configuration) {
         return new Twig($configuration);
     };
     //Jogosultság kezelése twighez
     $pimple->extend('twig', function ($twig, $c) {
         /** @var Security $security */
         $security = Application::Security();
         if ($security != null) {
             $mytwig = $security->setTwigFunctions($twig);
         } else {
             $mytwig = $twig;
         }
         return $mytwig;
     });
 }
 /**
  * Registers services on the given container.
  *
  * This method should only be used to configure services and parameters.
  * It should not get services.
  *
  * @param Container $pimple A container instance
  */
 public function register(Container $pimple)
 {
     $pimple['url_generator'] = function ($c) {
         return new UrlGenerator(Application::Router());
     };
     //url_generate függvény hozzáadása a twighez
     $pimple->extend('twig', function ($twig, $c) {
         /** @var Twig $mytwig */
         $mytwig = $twig;
         /** @var UrlGenerator $urlGenerator */
         $urlGenerator = $c["url_generator"];
         $url_generator = new \Twig_SimpleFunction("url_generate", function ($url_name, $parameters = []) use($urlGenerator) {
             return $urlGenerator->generate($url_name, $parameters);
         });
         $mytwig->getTwigEnvironment()->addFunction($url_generator);
         return $mytwig;
     });
 }
Example #6
0
 /**
  * @param $method
  * @param $uri
  * @return array
  * @throws HttpNotFoundException
  */
 public function findRoute($method, $uri)
 {
     $routes = $this->getRoutes();
     //Hozzá kell még adni a nyelvi url-t, ha van.
     $translator = Application::Translator();
     if ($translator != null) {
         $langRoute = $translator->getCookieSetUrl();
         if ($langRoute != null) {
             $routes["langSetRoute"] = ["method" => $langRoute["method"], "url" => $langRoute["url"], "handler" => $langRoute["handler"]];
         }
     }
     $this->dispatcher = simpleDispatcher(function (RouteCollector $r) use($routes) {
         foreach ($routes as $route) {
             $r->addRoute($route["method"], $route["url"], $route["handler"]);
         }
     });
     // Strip query string (?foo=bar) and decode URI
     if (false !== ($pos = strpos($uri, '?'))) {
         $uri = substr($uri, 0, $pos);
     }
     $uri = rawurldecode($uri);
     $routeInfo = $this->dispatcher->dispatch($method, $uri);
     switch ($routeInfo[0]) {
         case RouterInterface::NOT_FOUND:
             throw new HttpNotFoundException();
         case RouterInterface::METHOD_NOT_ALLOWED:
             throw new HttpNotFoundException();
         case RouterInterface::FOUND:
             foreach ($routes as $route) {
                 if ($route["handler"] == $routeInfo[1]) {
                     $this->actualRoute = $route;
                     break;
                 }
             }
             return ["handler" => $routeInfo[1], "params" => $routeInfo[2]];
         default:
             return [];
     }
 }
Example #7
0
 /**
  * Translator constructor.
  * @param array $configuration
  */
 public function __construct($configuration)
 {
     // Konfiguráció betöltése
     $this->configuration = $configuration;
     //Aktuális nyelv kiválasztása a stratégiától függően
     switch ($this->configuration["strategy"]) {
         case Translator::STRATEGY_ONLY_COOKIE:
             if (!isset($this->configuration["cookie_set_url"])) {
                 throw new \InvalidArgumentException("You must provide 'cookie_set_url' parameter in case of STRATEGY_ONLY_COOKIE");
             }
             // Locale beállítása
             $locale = $this->loadLocaleFromCookie();
             break;
         case Translator::STRATEGY_ONLY_URL:
             // Itt jelenleg nem kell csinálni semmit, mert a language router mindent elintéz, majd beállítja a
             // a megfelelő helyen
             $locale = $configuration["fallbackLocales"][0];
             break;
         case Translator::STRATEGY_COOKIE_AND_URL:
             // Locale beállítása
             $locale = $this->loadLocaleFromCookie();
             break;
         default:
             $locale = $configuration["fallbackLocales"][0];
     }
     //Symfony-s translator inicilaizálása
     $this->translator = new \Symfony\Component\Translation\Translator($locale);
     $this->translator->setFallbackLocales($this->configuration["fallbackLocales"]);
     //Loader és források inicializálás
     if (Application::isDevelopmentEnv()) {
         $format = $this->configuration["loader"]["dev"];
     } else {
         $format = $this->configuration["loader"]["prod"];
     }
     $this->translator->addLoader($format, $this->loaderFactory($format));
     foreach ($this->configuration["resources"] as $locale => $resources) {
         foreach ($resources as $resource) {
             $this->translator->addResource($format, $resource, $locale);
         }
     }
 }
Example #8
0
 /**
  * Visszaadja a paraméterben megadott adatok alapján, a megfelelő handler-t és az ahhoz tartozó esetleges
  * paramétereket.
  *
  * Ha nem talál egyezést abban az esetben HttpNotFoundException hibát dob.
  *
  *
  * @param $method
  * @param $uri
  * @return array
  * @throws HttpNotFoundException
  */
 public function findRoute($method, $uri)
 {
     // Strip query string (?foo=bar) and decode URI
     if (false !== ($pos = strpos($uri, '?'))) {
         $uri = substr($uri, 0, $pos);
     }
     $uri = rawurldecode($uri);
     $routeInfo = $this->dispatcher->dispatch($method, $uri);
     switch ($routeInfo[0]) {
         case RouterInterface::NOT_FOUND:
             throw new HttpNotFoundException();
         case RouterInterface::METHOD_NOT_ALLOWED:
             throw new HttpNotFoundException();
         case RouterInterface::FOUND:
             $params = $routeInfo[2];
             //Ha van locale, akkor azt beállítjuk és töröljük a paraméter listából
             if (isset($params["locale"])) {
                 Application::Translator()->setLocale($params["locale"]);
                 unset($params["locale"]);
             }
             foreach ($this->routes as $route) {
                 if ($route["handler"] == $routeInfo[1]) {
                     $this->actualRoute = $route;
                     break;
                 }
             }
             return ["handler" => $routeInfo[1], "params" => $params];
         default:
             return [];
     }
 }
Example #9
0
 public function __construct($status, $content = null)
 {
     parent::__construct(Application::isDevelopmentEnv() && $content != null ? $content : Response::$statusTexts[$status], $status);
 }
 public function getValue()
 {
     return ["server_name" => $_SERVER["SERVER_NAME"], "server_protocol" => $_SERVER["SSL_PROTOCOL"] ? 'https' : 'http', "session_token" => Application::getInstance()->getSession()->get("session_token"), "environment" => Application::getInstance()->getEnvironment()];
 }
Example #11
0
 /**
  *  Betölti a twigbe az általunk definiált függvényeket.
  */
 private function initializeBaseTwigFunction()
 {
     // Development-e a környezet
     $is_dev = new \Twig_SimpleFunction('is_dev', function () {
         return Application::isDevelopmentEnv();
     });
     $this->twig->addFunction($is_dev);
     /*
      * A további twig függvényeket az átláthatóság szempontjából ide tegyük. Célszerű amúgy a Service providerekben
      * extendelni a twiget.
      */
 }
Example #12
0
 /**
  * @return UserInterface
  */
 public function getUser()
 {
     $session = Application::Session();
     if (!$session->get("loggedin")) {
         return null;
     } else {
         $class_name = $this->userClassName;
         /** @var UserInterface $user */
         $user = new $class_name($session->get("userid"));
         return $user;
     }
 }
Example #13
0
 /**
  * @return UrlGenerator
  */
 public static function UrlGenerator()
 {
     return Application::getInstance()->getPimpleElement("url_generator");
 }