Esempio n. 1
0
 function handler_wiki($page, $action = 'list', $wikipage = null, $wikipage2 = null)
 {
     if (S::hasAuthToken()) {
         $page->setRssLink('Changement Récents', '/Site/AllRecentChanges?action=rss&user='******'hruid') . '&hash=' . S::user()->token);
     }
     // update wiki perms
     if ($action == 'update') {
         S::assert_xsrf_token();
         $perms_read = Post::v('read');
         $perms_edit = Post::v('edit');
         if ($perms_read || $perms_edit) {
             foreach ($_POST as $wiki_page => $val) {
                 if ($val == 'on') {
                     $wp = new PlWikiPage(str_replace(array('_', '/'), '.', $wiki_page));
                     if ($wp->setPerms($perms_read ? $perms_read : $wp->readPerms(), $perms_edit ? $perms_edit : $wp->writePerms())) {
                         $page->trigSuccess("Permission de la page {$wiki_page} mises à jour");
                     } else {
                         $page->trigError("Impossible de mettre les permissions de la page {$wiki_page} à jour");
                     }
                 }
             }
         }
     } else {
         if ($action != 'list' && !empty($wikipage)) {
             $wp = new PlWikiPage($wikipage);
             S::assert_xsrf_token();
             if ($action == 'delete') {
                 if ($wp->delete()) {
                     $page->trigSuccess("La page " . $wikipage . " a été supprimée.");
                 } else {
                     $page->trigError("Impossible de supprimer la page " . $wikipage . ".");
                 }
             } else {
                 if ($action == 'rename' && !empty($wikipage2) && $wikipage != $wikipage2) {
                     if ($changedLinks = $wp->rename($wikipage2)) {
                         $s = 'La page <em>' . $wikipage . '</em> a été déplacée en <em>' . $wikipage2 . '</em>.';
                         if (is_numeric($changedLinks)) {
                             $s .= $changedLinks . ' lien' . ($changedLinks > 1 ? 's ont été modifiés.' : ' a été modifié.');
                         }
                         $page->trigSuccess($s);
                     } else {
                         $page->trigError("Impossible de déplacer la page " . $wikipage);
                     }
                 }
             }
         }
     }
     $perms = PlWikiPage::permOptions();
     // list wiki pages and their perms
     $wiki_pages = PlWikiPage::listPages();
     ksort($wiki_pages);
     $wiki_tree = array();
     foreach ($wiki_pages as $file => $desc) {
         list($cat, $name) = explode('.', $file);
         if (!isset($wiki_tree[$cat])) {
             $wiki_tree[$cat] = array();
         }
         $wiki_tree[$cat][$name] = $desc;
     }
     $page->changeTpl('admin/wiki.tpl');
     $page->assign('wiki_pages', $wiki_tree);
     $page->assign('perms_opts', $perms);
 }