annotate admin.php @ 32:4cea8b128fdd

Possibilité de choisir des templates différents en fonction du type de sortie. Le fichier templates.conf permet d'associer à chaque type de sortie (correspondant à une section du fichier INI) des templates pour le squelette, les posts et les commentaires. Il est possible de définir virtuellement une infinité de type de sorties différents, pour le moment seul de quoi obtenir un flux Atom a été ajouté. Pour changer le type de sortie, il faut passer en GET au script appellant un paramètre outputType. Si le paramètre reçu ne correspondant à aucun des types de sorties définis dans templates.conf, alors on prend du xhtml par défaut.
author Franck Deroche <webmaster@defr.org>
date Mon, 05 Nov 2007 09:06:46 +0100
parents 629389204276
children ec0c926a78a6
rev   line source
webmaster@0 1 <?php
webmaster@0 2 if(!is_null($_SERVER['HTTP_ACCEPT']) && stristr($_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml'))
webmaster@0 3 header('Content-Type: application/xhtml+xml; charset=UTF-8');
webmaster@0 4 else
webmaster@0 5 header('Content-Type: text/html; charset=UTF-8');
webmaster@0 6
webmaster@0 7 include("classes.php");
webmaster@0 8 $Data=new DataAccess;
webmaster@0 9 $Req = new Requete;
webmaster@0 10
webmaster@0 11 $mode = $Req->get('mode');
webmaster@0 12 switch($mode) {
webmaster@0 13 case 'nvBrouillon':
webmaster@0 14 $nvTitre = $Req->get('Titre', 'POST');
webmaster@0 15 $nvContenu = $Req->get('Contenu', 'POST');
webmaster@0 16 $Data->debugQuery("INSERT INTO Brouillons SET Titre='{$nvTitre}', Contenu='{$nvContenu}'");
webmaster@0 17 break;
webmaster@0 18
webmaster@0 19 case 'nvTache':
webmaster@0 20 $nvThing = $Req->get('Tache');
webmaster@0 21 $Data->Query("INSERT INTO ToDo SET Thing='{$nvThing}'");
webmaster@0 22 break;
webmaster@0 23
webmaster@0 24 case 'nvPost':
webmaster@0 25 $id = $Req->get('id', 'POST');
webmaster@0 26 $versionAc = $Req->get('versionAc', 'POST');
webmaster@0 27 $newVersion = $Req->get('newVersion', 'POST');
webmaster@0 28 $mood = $Req->get('mood', 'POST');
webmaster@0 29 $tbAddress = $Req->get('tb', 'POST');
webmaster@0 30 if($versionAc == 'Version 10' && $newVersion != 'Nouvelle version ?' && !empty($newVersion))
webmaster@0 31 $version = $newVersion;
webmaster@0 32 else
webmaster@0 33 $version = $versionAc;
webmaster@0 34 $Data->Query("SELECT * FROM Brouillons WHERE id_brouillon={$id}");
webmaster@0 35 $row = $Data->GetRow();
webmaster@0 36 $row['Titre'] = addslashes($row['Titre']);
webmaster@0 37 $row['Contenu'] = addslashes($row['Contenu']);
webmaster@0 38 $datePost = gmdate("Y-m-d H:i:s", time() + 3600);
webmaster@0 39 $Data->Query("
webmaster@0 40 INSERT INTO Mess(Titre, DatePost, num_version, Message, Emot)
webmaster@0 41 VALUES('{$row['Titre']}', '{$datePost}', '{$version}', '{$row['Contenu']}', '{$mood}')");
webmaster@0 42 $Data->Query("DELETE FROM Brouillons WHERE id_brouillon={$id}");
webmaster@0 43 $Data->Query("SELECT num_mess, Message FROM Mess ORDER BY num_mess DESC LIMIT 0, 1");
webmaster@0 44 $id_row = $Data->GetRow();
webmaster@0 45 // Gestion des tags
webmaster@0 46 $arTags = TextUtils::SplitTags($Req->get('Tags'));
webmaster@0 47 foreach($arTags as $tagAj)
webmaster@0 48 {
webmaster@0 49 $n = $Data->Query("SELECT idTag FROM Tags WHERE Tag='{$tagAj}'");
webmaster@0 50 if($n == 0)
webmaster@0 51 {
webmaster@0 52 // Si le tag n'existe pas, on le crée
webmaster@0 53 $Data->Query("INSERT INTO Tags SET Tag='{$tagAj}'");
webmaster@0 54 $Data->Query("SELECT idTag FROM Tags WHERE Tag='{$tagAj}'");
webmaster@0 55 }
webmaster@0 56 $row_tag = $Data->GetRow();
webmaster@0 57 $Data->Query
webmaster@0 58 ("
webmaster@0 59 INSERT INTO Lien_Tags_Posts
webmaster@0 60 SET idMess={$id_row['num_mess']}, idTag={$row_tag['idTag']}
webmaster@0 61 ");
webmaster@0 62 }
webmaster@0 63 // Génération de trackbacks
webmaster@0 64 if(!empty($tbAddress) && substr($tbAddress, 0, 4)=='http') {
webmaster@0 65 $ar_tbAddress = parse_url($tbAddress);
webmaster@0 66 if(!array_key_exists('port', $ar_tbAddress)) $ar_tbAddress['port'] = 80;
webmaster@0 67 if(!array_key_exists('path', $ar_tbAddress)) $ar_tbAddress['path'] = '/';
webmaster@0 68 if(array_key_exists('query', $ar_tbAddress)) $ar_tbAddress['query'] = '?' . $ar_tbAddress['query'];
webmaster@0 69 $fp = fsockopen($ar_tbAddress['host'], $ar_tbAddress['port'], $errno, $errstr, 15);
webmaster@0 70 if($fp) {
webmaster@0 71 $genToSend = "POST {$ar_tbAddress['path']}{$ar_tbAddress['query']} HTTP/1.0\r\n";
webmaster@0 72 $genToSend .= "Host: {$ar_tbAddress['host']}\r\n";
webmaster@0 73 $genToSend .= "Content-Type: application/x-www-form-urlencoded \n";
webmaster@0 74
webmaster@0 75 // Essai de récuperation de l'encodage...Envoie en iso si pas d'indication d'UTF...
webmaster@0 76 $argToSend = "__info=1";
webmaster@0 77 $toSend = $genToSend . "Content-Length: " . strlen($argToSend) . "\n\n";
webmaster@0 78 $toSend .= $argToSend;
webmaster@0 79 echo("<pre>$toSend</pre>");
webmaster@0 80 fwrite($fp, $toSend);
webmaster@0 81 while(!feof($fp))
webmaster@0 82 $result .= fgets($fp, 128);
webmaster@0 83 fclose($fp);
webmaster@0 84 if(!preg_match('/<encoding>(UTF-8|utf-8)<\/encoding>/msU',$result)) {
webmaster@0 85 $row['Titre'] = utf8_decode($row['Titre']);
webmaster@0 86 $row['Message'] = utf8_decode($row['Message']);
webmaster@0 87 }
webmaster@0 88
webmaster@0 89 $fp = fsockopen($ar_tbAddress['host'], 80, $errno, $errstr, 15);
webmaster@0 90 $argToSend = "title=" . htmlentities(urlencode($row['Titre'])) . "&blog_name=Dual+Blog";
webmaster@0 91 $argToSend .= "&url=http://defr.org/blog/posts/{$row['num_mess']}&excerpt="
webmaster@0 92 . htmlentities(urlencode(substr(strip_tags($row['Message']), 0, 255) . "..."));
webmaster@0 93
webmaster@0 94 $toSend = $genToSend . "Content-Length: " . strlen($argToSend) . "\n\n";
webmaster@0 95 $toSend .= $argToSend;
webmaster@0 96 echo("<pre><![CDATA[$toSend]]></pre>");
webmaster@0 97 echo("<![CDATA[");
webmaster@0 98 fwrite($fp, $toSend);
webmaster@0 99 while (!feof($fp)) {
webmaster@0 100 echo fgets($fp, 128);
webmaster@0 101 }
webmaster@0 102 echo("]]>");
webmaster@0 103 fclose($fp);
webmaster@0 104 }
webmaster@0 105 }
webmaster@0 106 break;
webmaster@0 107 }
webmaster@0 108 ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
webmaster@0 109
webmaster@0 110 <html xmlns='http://www.w3.org/1999/xhtml'>
webmaster@0 111 <head>
webmaster@0 112 <title>Administration : Conception &amp; Design</title>
webmaster@0 113 <link rel='StyleSheet' type='Text/CSS' href='css/admin.css' />
webmaster@0 114 <script type='text/javascript' src='admin.js'>/* Die IE, diiie */</script>
webmaster@0 115 </head>
webmaster@0 116
webmaster@0 117 <body>
webmaster@0 118 <h3>Administration de Dual Blog</h3>
webmaster@0 119 <ul id='Menu'>
webmaster@0 120 <li><div id='Brouillons'>Brouillons</div></li>
webmaster@0 121 <li><div id='Posts'>Posts publiés</div></li>
webmaster@0 122 <li><div id='Designs'>Designs</div></li>
webmaster@0 123 <li><div id='ToDo'>To-Do</div></li>
webmaster@0 124 </ul>
webmaster@0 125 <div id='GestPosts'>
webmaster@0 126 <ul>
webmaster@0 127 <?php
webmaster@0 128 $Data->Connect();
webmaster@0 129 $Data->Query("SELECT * FROM Mess ORDER BY num_version, num_mess DESC LIMIT 0, 10");
webmaster@0 130 $versionAc="";
webmaster@0 131 $i=0;
webmaster@0 132 $ar_Version = array();
webmaster@0 133 while(0!==($val=$Data->GetRow())) {
webmaster@0 134 if($val['num_version']!=$versionAc) {
webmaster@0 135 if($i!=0) echo("</ul>\n</li>");
webmaster@0 136 echo(" <li>{$val['num_version']} :\n <ul>");
webmaster@0 137 $versionAc=$val['num_version'];
webmaster@0 138 $ar_Version[] = $versionAc;
webmaster@0 139 $i++;
webmaster@0 140 }
webmaster@0 141 $Titre=$Data->utf8_ensure($val['Titre']);
webmaster@0 142 echo("
webmaster@0 143 \t <li>{$Titre}<span class='Admin'><a href='#id={$val['num_mess']}'>Editer</a> -- <a href='#id={$val['num_mess']}'>Supprimer</a> -- <a href='?id={$val['num_mess']}'>Gérer les commentaires</a></span></li>");
webmaster@0 144 }
webmaster@0 145 echo("\n </ul>\n </li>\n");
webmaster@0 146 ?>
webmaster@0 147 </ul>
webmaster@0 148 </div>
webmaster@0 149
webmaster@0 150 <div id='GestDesigns'>
webmaster@0 151 <ul>
webmaster@0 152 <li class='Add'><a href='#'>Ajouter un nouveau design au weblog</a></li>
webmaster@0 153 <li>Modifier les designs déja existants</li>
webmaster@0 154 </ul>
webmaster@0 155 </div>
webmaster@0 156
webmaster@0 157 <div id='GestBrouillons'>
webmaster@0 158 <ul>
webmaster@0 159 <li class='Add'><a href='#'>Ajouter un nouveau brouillon</a>
webmaster@0 160 <form method='post' action='admin.php'>
webmaster@0 161 <div>
webmaster@0 162 <input type='hidden' name='mode' value='nvBrouillon' />
webmaster@0 163 <input type='text' name='Titre' value='Titre' />
webmaster@0 164 <textarea name='Contenu' rows='10' cols='30'></textarea>
webmaster@0 165 <input type='submit' value='Valider ce brouillon' />
webmaster@0 166 </div>
webmaster@0 167 </form>
webmaster@0 168 </li>
webmaster@0 169 <?
webmaster@0 170 $Data->Query("SELECT * FROM Brouillons ORDER BY id_brouillon DESC");
webmaster@0 171 while(0!==($val=$Data->GetRow())) {
webmaster@0 172 echo("
webmaster@0 173 <li>{$val['Titre']} <span class='Admin'><a href='#id={$val['id_brouillon']}'>Editer</a> -- <a href='#id={$val['id_brouillon']}'>Publier</a> -- <a href='?id={$val['id_brouillon']}'>Supprimer</a></span></li>");
webmaster@0 174 }
webmaster@0 175 ?>
webmaster@0 176 </ul>
webmaster@0 177 </div>
webmaster@0 178
webmaster@0 179 <div id='GestToDo'>
webmaster@0 180 <ul>
webmaster@0 181 <li class='Add'><a href='#'>Ajouter une nouvelle tâche</a>
webmaster@0 182 <form method='post' action='admin.php'>
webmaster@0 183 <div>
webmaster@0 184 <input type='hidden' name='mode' value='nvTache' />
webmaster@0 185 <input type='text' name='Tache' />
webmaster@0 186 <input type='submit' value='Ajouter cette tâche' />
webmaster@0 187 </div>
webmaster@0 188 </form></li>
webmaster@0 189 <?php
webmaster@0 190 $Data->Query("SELECT * FROM ToDo ORDER By num_thing DESC");
webmaster@0 191 while(0!==($val=$Data->GetRow())) {
webmaster@0 192 echo("
webmaster@0 193 <li>{$val['Thing']} <span class='Admin'><a href='#'>Fait</a> -- <a href='#'>Editer</a> -- <a href='#'>Supprimer</a></span></li>");
webmaster@0 194 }
webmaster@0 195 $Data->Close();
webmaster@0 196 ?>
webmaster@0 197 </ul>
webmaster@0 198 </div>
webmaster@0 199
webmaster@0 200 <form method='post' action='#' id='editPost'>
webmaster@0 201 <div>
webmaster@0 202 <input type='hidden' name='mode' value='editBrouillon' />
webmaster@0 203 <p><input type='text' name='Titre' value='Titre' /></p>
webmaster@0 204 <p><textarea name='Contenu' rows='10' cols='30'></textarea></p>
webmaster@0 205 <p><select name='mood' id='mood'>
webmaster@0 206 <?php
webmaster@0 207 $handle = opendir('mood');
webmaster@0 208 while($file = readdir($handle))
webmaster@0 209 {
webmaster@0 210 if(strlen($file) > 3 && substr($file, -3) == 'png')
webmaster@0 211 {
webmaster@0 212 $short = substr($file, 0, -4);
webmaster@0 213 echo("\t\t<option value='$short'><img src='mood/25/$file' alt='' />" . $short . "</option>\n");
webmaster@0 214 }
webmaster@0 215 }
webmaster@0 216 closedir($handle);
webmaster@0 217 ?>
webmaster@0 218 </select></p>
webmaster@0 219 <p><input type='text' name='Tags' value='Tags' /></p>
webmaster@0 220 <input type='button' name='Save' value='Sauver la modification' />
webmaster@0 221 </div>
webmaster@0 222 </form>
webmaster@0 223
webmaster@0 224 <form method='post' action='admin.php' id='whichVersion'>
webmaster@0 225 <div>
webmaster@0 226 <!--a onclick='javascript:hidePubForm()'>Hide</a-->
webmaster@0 227 <input type='hidden' name='mode' value='nvPost' />
webmaster@0 228 <input type='hidden' name='id' />
webmaster@0 229 <fieldset>
webmaster@0 230 <legend>Catégorie du post</legend>
webmaster@0 231 <label for='vAc'>Pour poster le post dans une catégorie déja existante, veuillez la choisir dans la liste ci-dessous :<br /></label>
webmaster@0 232 <select name='versionAc' id='vAc'>
webmaster@0 233 <option>Version 10</option>
webmaster@0 234 <option>DeFr.org news</option>
webmaster@0 235 </select>
webmaster@0 236 <label for='nvCat'><br />Pour poster le post dans une catégorie n'existant pas encore, veuillez
webmaster@0 237 entrer son nom : <br /></label>
webmaster@0 238 <input type='text' name='newVersion' id='nvCat' value='Nouvelle version ?' />
webmaster@0 239 </fieldset>
webmaster@0 240 <fieldset>
webmaster@0 241 <legend>Tags</legend>
webmaster@0 242 <label for='Tags'>Histoire d'organiser les posts, et de pouvoir filtrer par centres d'interet, veuillez
webmaster@0 243 préciser les <em>tags</em> à attribuer à ce post :<br /></label>
webmaster@0 244 <input type='text' name='Tags' id='Tags' />
webmaster@0 245 </fieldset>
webmaster@0 246 <fieldset>
webmaster@0 247 <legend>Mood / Emots</legend>
webmaster@0 248 <label for='mood'>Pour assurer un minimum d'attrait aux posts, et leur attribuer un aspect graphique
webmaster@0 249 sympathique, veuillez selectionner une emoticone pour le post, dans la liste suivante :<br /></label>
webmaster@0 250 <select name='mood' id='mood'>
webmaster@0 251 <?php
webmaster@0 252 $handle = opendir('mood');
webmaster@0 253 while($file = readdir($handle))
webmaster@0 254 {
webmaster@0 255 if(strlen($file) > 3 && substr($file, -3) == 'png')
webmaster@0 256 {
webmaster@0 257 $short = substr($file, 0, -4);
webmaster@0 258 echo("\t\t\t<option value='$short'><img src='mood/25/$file' alt='' />" . $short . "</option>\n");
webmaster@0 259 }
webmaster@0 260 }
webmaster@0 261 closedir($handle);
webmaster@0 262 ?>
webmaster@0 263 </select>
webmaster@0 264 </fieldset>
webmaster@0 265 <fieldset>
webmaster@0 266 <legend>Trackback</legend>
webmaster@0 267 <label for='tb'>Pour effectuer un trackback vers un autre post, rentrer son URL :<br /></label>
webmaster@0 268 <input type='text' name='tb' id='tb' value='TrackBack ?' />
webmaster@0 269 </fieldset>
webmaster@0 270 <fieldset>
webmaster@0 271 <legend>Publication</legend>
webmaster@0 272 <label id='pubComment' for='pubButton' />
webmaster@0 273 <input type='submit' name="pubButton" id="pubButton" value='Publier' />
webmaster@0 274 </fieldset>
webmaster@0 275 </div>
webmaster@0 276 </form>
webmaster@0 277
webmaster@0 278 <div id='Infos'>
webmaster@0 279 Administration de Dual Blog - Par DeFr - Icones &copy; David Lanham - The IconFactory -
webmaster@0 280 Valide <a href="http://validator.w3.org/check?uri=referer">XHTML 1.1</a> et <a href='http://jigsaw.w3.org/css-validator/check/referer'>CSS 3</a>
webmaster@0 281 </div>
webmaster@0 282 </body>
webmaster@0 283 </html>