From: Florent Bruneau Date: Sun, 21 Mar 2010 12:55:16 +0000 (+0100) Subject: session, page, globals and logger are built using factories. X-Git-Tag: core/1.1.0~34 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=ca6384fb36992e0899efea20ea1082bfc77d7c41;p=platal.git session, page, globals and logger are built using factories. Signed-off-by: Florent Bruneau --- diff --git a/classes/platal.php b/classes/platal.php index a1aade6..d6b26f2 100644 --- a/classes/platal.php +++ b/classes/platal.php @@ -42,11 +42,17 @@ abstract class Platal { global $platal, $session, $globals; $platal =& $this; - $globalclass = PL_GLOBALS_CLASS; - $globals = new $globalclass(); + + /* Assign globals first, then call init: init must be used for operations + * that requires access to the content of $globals (e.g. XDB requires + * $globals to be assigned. + */ + $globals = $this->buildGlobals(); $globals->init(); - $sessionclass = PL_SESSION_CLASS; - $session = new $sessionclass(); + + /* Get the current session: assign first, then activate the session. + */ + $session = $this->buildSession(); if (!$session->startAvailableAuth()) { Platal::page()->trigError("Données d'authentification invalides."); } @@ -372,36 +378,65 @@ abstract class Platal } } - public static function assert($cond, $error, $userfriendly) - { - global $globals; - if ($cond === false) { - header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error'); - $file = fopen($globals->spoolroot . '/spool/tmp/assert_erros', 'a'); - fwrite($file, '
' . pl_entities($error) . '
\n'); - fclose($file); + public static function assert($cond, $error, $userfriendly) + { + global $globals; + if ($cond === false) { + header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error'); + $file = fopen($globals->spoolroot . '/spool/tmp/assert_erros', 'a'); + fwrite($file, '
' . pl_entities($error) . '
\n'); + fclose($file); - Platal::page()->kill($userfriendly); - } - } + Platal::page()->kill($userfriendly); + } + } + + public function &buildLogger($uid, $suid) + { + if (define('PL_LOGGER_CLASS')) { + $class = PL_LOGGER_CLASS; + return new $class($uid, $suid); + } else { + return new DummyLogger($uid, $suid); + } + } + protected function &buildPage() + { + $pageclass = PL_PAGE_CLASS; + $page = new $pageclass(); + return $page; + } static public function &page() { - global $platal; if (is_null(self::$_page)) { - $pageclass = PL_PAGE_CLASS; - self::$_page = new $pageclass(); + global $platal; + self::$_page = $platal->buildPage(); } return self::$_page; } + protected function &buildSession() + { + $sessionclass = PL_SESSION_CLASS; + $session = new $sessionclass(); + return $session; + } + static public function &session() { global $session; return $session; } + protected function &buildGlobals() + { + $globalclass = PL_GLOBALS_CLASS; + $globals = new $globalclass(); + return $globals; + } + static public function &globals() { global $globals; diff --git a/classes/pllogger.php b/classes/pllogger.php index 5173017..a056df5 100644 --- a/classes/pllogger.php +++ b/classes/pllogger.php @@ -47,12 +47,8 @@ abstract class PlLogger */ public static function get($uid, $suid = 0) { - if (defined('PL_LOGGER_CLASS')) { - $class = PL_LOGGER_CLASS; - return new $class($uid, $suid); - } else { - return new DummyLogger($uid, $suid); - } + global $platal; + return $platal->buildLogger(); } /** Return a dummy logger.