X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fwiki.inc.php;h=cd506e63d2f74ad0bbccc6291354c5f2533c8a22;hb=9da274faea12bbc19a291abbc07d4d767057b741;hp=000690e7f2efbfa99bcfabd367d8ffa3cf3fbb86;hpb=f6ce9a8820cbf644dc2f9ae47b3d03d8ea6a4243;p=platal.git diff --git a/include/wiki.inc.php b/include/wiki.inc.php index 000690e..cd506e6 100644 --- a/include/wiki.inc.php +++ b/include/wiki.inc.php @@ -20,11 +20,11 @@ ***************************************************************************/ function wiki_pagename() { - if (!Get::get('n')) { + if (!Get::v('n')) { return null; } - $words = explode('/', trim(Get::get('n'), '/')); + $words = explode('/', trim(Get::v('n'), '/')); if (count($words) == 2) { return join('.', $words); } @@ -46,12 +46,17 @@ function wiki_clear_all_cache() system('rm -f '.wiki_work_dir().'/cache_*'); } -function get_perms($n) +function wiki_perms_options() { + return array('public' => 'Public', 'logged' => 'Connecté', + 'mdp' => 'Authentifié', 'admin' => 'Admin'); +} + +function wiki_get_perms($n) { $file = wiki_work_dir().'/'.str_replace('/', '.', $n); - $lines = explode("\n", file_get_contents($file)); + $lines = explode("\n", @file_get_contents($file)); foreach ($lines as $line) { - list($k, $v) = explode('=', $line, 2); + @list($k, $v) = explode('=', $line, 2); if ($k == 'platal_perms') { return explode(':', $v); } @@ -59,23 +64,62 @@ function get_perms($n) return array('logged', 'admin'); } +function wiki_putfile($f, $s) +{ + $fp = fopen($f, 'w'); + fputs($fp, $s); + fclose($fp); +} + +function wiki_set_perms($n, $pr, $pw) +{ + $file = wiki_work_dir().'/'.str_replace('/', '.', $n); + if (!file_exists($file)) + return false; + + $p = $pr . ':' . $pw; + + $lines = explode("\n", file_get_contents($file)); + foreach ($lines as $i => $line) { + list($k, $v) = explode('=', $line, 2); + if ($k == 'platal_perms') { + $lines[$i] = 'platal_perms='.$p; + wiki_putfile($file, join("\n", $lines)); + return true; + } + } + + array_splice($lines, 1, 0, array('platal_perms='.$p)); + wiki_putfile($file, join("\n", $lines)); + return true; +} + +function wiki_may_have_perms($perm) { + switch ($perm) { + case 'public': return true; + case 'logged': return S::logged(); + case 'mdp': return S::logged(); + default: return S::has_perms(); + } +} + function wiki_apply_perms($perm) { - global $page, $platal; + global $page, $platal, $globals; switch ($perm) { case 'public': return; case 'logged': - if (!XorgSession::doAuthCookie()) { + if (!call_user_func(array($globals->session, 'doAuthCookie'))) { $platal = new Platal(); $platal->force_login($page); } return; default: - if (!XorgSession::doAuth()) { - $platal = new Platal(); + if (!call_user_func(array($globals->session, 'doAuth'))) { + $platal = empty($GLOBALS['IS_XNET_SITE']) ? new Platal() : new Xnet(); $platal->force_login($page); } if ($perm == 'admin') { @@ -85,4 +129,13 @@ function wiki_apply_perms($perm) { } } +function wiki_require_page($pagename) +{ + global $globals; + $pagename_slashes = str_replace('.','/',$pagename); + $pagename_dots = str_replace('/','.',$pagename); + if (is_file(wiki_work_dir().'/cache_'.$pagename_dots.'.tpl')) return; + system('wget '.$globals->baseurl.'/'.$pagename_slashes.' -O /dev/null'); +} + ?>