X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=sidebyside;f=classes%2FPlatal.php;h=c34d34d0e7d3e915f8d8c48743e8a94c6a145fc0;hb=f1ca33de3bce194c10cfa9b7fbc588fbf6b3014d;hp=056ae80db60074302b64622d3ab495dd3f99d250;hpb=b0b937fdb5cb3d4758d054ce9eb02d184f430ccc;p=platal.git diff --git a/classes/Platal.php b/classes/Platal.php index 056ae80..c34d34d 100644 --- a/classes/Platal.php +++ b/classes/Platal.php @@ -34,18 +34,32 @@ class Platal function Platal() { $modules = func_get_args(); - $this->path = trim(Get::_get('p', null), '/'); + $this->path = trim(Get::_get('n', null), '/'); $this->__mods = array(); $this->__hooks = array(); array_unshift($modules, 'core'); foreach ($modules as $module) { - $this->__mods[$module] = $m = PLModule::factory($this, $module); + $this->__mods[$module] = $m = PLModule::factory($module); $this->__hooks += $m->handlers(); } } + function pl_self($n = null) + { + if (is_null($n)) + return $this->path; + + if ($n >= 0) + return join('/', array_slice($this->argv, 0, $n + 1)); + + if ($n <= -count($this->argv)) + return $this->argv[0]; + + return join('/', array_slice($this->argv, 0, $n)); + } + function find_hook() { $p = $this->path; @@ -86,12 +100,26 @@ class Platal if ($hook['auth'] > S::v('auth', AUTH_PUBLIC)) { // FIXME: don't use 'session' object anymore - $_SESSION['session']->doAuth(); + if (!$_SESSION['session']->doAuth()) { + $this->force_login($page); + } } return call_user_func_array($hook['hook'], $args); } + function force_login(&$page) + { + if (S::logged() and !$new_name) { + $page->changeTpl('password_prompt_logged.tpl'); + $page->addJsLink('do_challenge_response_logged.js'); + } else { + $page->changeTpl('password_prompt.tpl'); + $page->addJsLink('do_challenge_response.js'); + } + $page->run(); + } + function run() { global $page; @@ -114,6 +142,16 @@ class Platal $page->assign_by_ref('platal', $this); $page->run(); } + + function on_subscribe($forlife, $uid, $promo, $pass) + { + $args = func_get_args(); + foreach ($this->__mods as $mod) { + if (!is_callable($mod, 'on_subscribe')) + continue; + call_user_func_array(array($mod, 'on_subscribe'), $args); + } + } } ?>