X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fplatal.php;h=2a69b729c6fb04d2d7e8da313f0b7c27c0c09828;hb=ba63661ce2f38974002c7e4113320e9d06010853;hp=cec37f24e87e3fbb51aac7f53e962801dfea3f03;hpb=179afa7fa79902e11498314d37fe4dbf452b3617;p=platal.git diff --git a/classes/platal.php b/classes/platal.php index cec37f2..2a69b72 100644 --- a/classes/platal.php +++ b/classes/platal.php @@ -34,8 +34,20 @@ class Platal public $path; public $argv; + static private $_page = null; + public function __construct() { + global $platal, $session, $globals; + $platal =& $this; + $globalclass = PL_GLOBALS_CLASS; + $globals = new $globalclass(); + $sessionclass = PL_SESSION_CLASS; + $session = new $sessionclass(); + if (!$session->startAvailableAuth()) { + Platal::page()->trigError('Données d\'authentification invalide.'); + } + $modules = func_get_args(); if (is_array($modules[0])) { $modules = $modules[0]; @@ -52,7 +64,6 @@ class Platal $this->__hooks += $m->handlers(); } - global $globals; if ($globals->mode == '') { pl_redirect('index.html'); } @@ -231,13 +242,13 @@ class Platal return $s_perms->hasFlagCombination($perms); } - private function call_hook(PlatalPage &$page) + private function call_hook(PlPage &$page) { $hook = $this->find_hook(); if (empty($hook)) { return PL_NOT_FOUND; } - global $globals; + global $globals, $session; if ($this->https && !$_SERVER['HTTPS'] && $globals->core->secure_domain) { http_redirect('https://' . $globals->core->secure_domain . $_SERVER['REQUEST_URI']); } @@ -247,7 +258,7 @@ class Platal if ($hook['auth'] > S::v('auth', AUTH_PUBLIC)) { if ($hook['type'] & DO_AUTH) { - if (!call_user_func(array($globals->session, 'doAuth'))) { + if (!$session->start($hook['auth'])) { $this->force_login($page); } } else { @@ -259,9 +270,9 @@ class Platal } $val = call_user_func_array($hook['hook'], $args); - if ($val & PL_DO_AUTH) { + if ($val == PL_DO_AUTH) { // The handler need a better auth with the current args - if (!call_user_func(array($globals->session, 'doAuth'))) { + if (!$session->start($hook['auth'])) { $this->force_login($page); } $val = call_user_func_array($hook['hook'], $args); @@ -269,7 +280,7 @@ class Platal return $val; } - public function force_login(PlatalPage &$page) + public function force_login(PlPage &$page) { header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden'); if (S::logged()) { @@ -285,9 +296,7 @@ class Platal public function run() { - global $page; - - new_skinned_page('platal/index.tpl'); + $page =& self::page(); if (empty($this->path)) { $this->path = 'index'; @@ -317,6 +326,28 @@ class Platal call_user_func_array(array($mod, 'on_subscribe'), $args); } } + + static public function &page() + { + global $platal; + if (is_null(self::$_page)) { + $pageclass = PL_PAGE_CLASS; + self::$_page = new $pageclass(); + } + return self::$_page; + } + + static public function &session() + { + global $session; + return $session; + } + + static public function &globals() + { + global $globals; + return $globals; + } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: