* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-define('PL_OK', 0);
-define('PL_NEEDLOGIN', 1);
define('PL_FORBIDDEN', 403);
define('PL_NOT_FOUND', 404);
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;
$args = $this->argv;
$args[0] = &$page;
- if ($hook['auth'] > Session::get('auth', AUTH_PUBLIC)) {
- $_SESSION['session']->doAuth($page);
+ if ($hook['auth'] > S::v('auth', AUTH_PUBLIC)) {
+ // FIXME: don't use 'session' object anymore
+ 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('javascript/do_challenge_response_logged.js');
+ } else {
+ $page->changeTpl('password_prompt.tpl');
+ $page->addJsLink('javascript/do_challenge_response.js');
+ }
+ $page->run();
+ }
+
function run()
{
global $page;
- new_skinned_page('index.tpl', AUTH_PUBLIC);
+ new_skinned_page('index.tpl');
if (empty($this->path)) {
- $this->__mods['core']->handler_index($page);
- } else
+ $this->path = 'index';
+ }
+
switch ($this->call_hook($page)) {
case PL_FORBIDDEN:
$this->__mods['core']->handler_403($page);