forum-sujet.php (3384B)
1 <?php 2 3 class ForumSujet { 4 public static function action($chemin, $action, $paramètres) { 5 if ($action == "anuler") { 6 return new Page($chemin, '', "redirect"); 7 } else if ($action == "nouvelle_page") { 8 // SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement 9 // CONCURENCE : Faire un lock quelque part... 10 $numéro_message = 1 + Stockage::get_prop($chemin, "dernier_numero"); 11 Stockage::set_prop($chemin, "dernier_numero", $numéro_message); 12 $np = Stockage::nouvelle_page($chemin, "" . $numéro_message, "forum-message"); 13 Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); 14 Stockage::set_prop($np, "message", ""); 15 enregistrer_nouveaute($np); 16 17 return new Page($chemin, "#message" . $numéro_message, "redirect"); 18 } else if ($action == "supprimer") { 19 Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif 20 return new Page($chemin->parent(), '', "redirect"); 21 } else { 22 if (isset($paramètres["titre"]) && Stockage::prop_diff($chemin, "titre", $paramètres["titre"])) { 23 Stockage::set_prop($chemin, "titre", $paramètres["titre"]); 24 Stockage::renomer($chemin, $paramètres["titre"]); 25 $chemin = $chemin->renomer($paramètres["titre"]); 26 // TODO : transmettre le paramètre "vue" 27 return new Page($chemin, '', "redirect"); 28 } 29 30 if (isset($paramètres["vue"])) { 31 return self::vue($chemin, $paramètres["vue"]); 32 } else { 33 return self::vue($chemin); 34 } 35 } 36 } 37 38 public static function vue($chemin, $vue = "normal") { 39 if ($vue == "normal") { 40 $ret = ''; 41 42 if (Permissions::vérifier_permission($chemin, "set_prop", Authentification::get_utilisateur())) { 43 $ret .= '<form class="forum sujet infos" method="post" action="' . $chemin->get_url() . '">'; 44 $ret .= '<h2><input type="text" name="titre" value="' . Stockage::get_prop($chemin, "titre") . '" /></h2>'; 45 $ret .= '<p><input type="submit" value="appliquer" /></p>'; 46 $ret .= '</form>'; 47 } else { 48 $ret .= '<h2 class="forum sujet titre affichage">' . Stockage::get_prop($chemin, "titre") . '</h2>'; 49 } 50 if (Permissions::vérifier_permission($chemin, "supprimer", Authentification::get_utilisateur())) { 51 $ret .= '<form action="' . $chemin->get_url() . '">'; 52 $ret .= '<input type="hidden" name="action" value="supprimer"/>'; 53 $ret .= '<input type="submit" value="Supprimer le sujet"/>'; 54 $ret .= '</form>'; 55 } 56 $ret .= '<ul class="forum sujet">'; 57 58 foreach (stockage::liste_enfants($chemin) as $k) { 59 $ret .= '<li>' . Modules::vue($k)->contenu . '</li>'; 60 } 61 62 if (Permissions::vérifier_permission($chemin, "nouvelle_page", Authentification::get_utilisateur())) { 63 $ret .= '<li>'; 64 $ret .= '<form class="forum sujet nouvelle_page" method="post" action="' . $chemin->get_url() . '">'; 65 $ret .= '<p>'; 66 $ret .= '<input type="hidden" name="action" value="nouvelle_page"/>'; 67 $ret .= '<input type="submit" value="Nouveau message"/>'; 68 $ret .= '</p>'; 69 $ret .= '</form>'; 70 $ret .= '</li>'; 71 } 72 73 $ret .= '</ul>'; 74 75 return new Page($ret, Stockage::get_prop($chemin, "titre")); 76 } else if ($vue == "miniature") { 77 return new Page("Sujet.", Stockage::get_prop($chemin, "titre")); 78 } 79 } 80 } 81 82 Modules::enregister_module("ForumSujet", "forum-sujet", "vue", "titre"); 83 84 ?>