| 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 			fwrite($fp, $toSend); | 
| webmaster@0 | 80 			while(!feof($fp)) | 
| webmaster@0 | 81 				$result .= fgets($fp, 128); | 
| webmaster@0 | 82 			fclose($fp); | 
| webmaster@0 | 83 			if(!preg_match('/<encoding>(UTF-8|utf-8)<\/encoding>/msU',$result)) { | 
| webmaster@0 | 84 				$row['Titre'] = utf8_decode($row['Titre']); | 
| webmaster@0 | 85 				$row['Message'] = utf8_decode($row['Message']); | 
| webmaster@0 | 86 			} | 
| webmaster@0 | 87 | 
| webmaster@67 | 88 			$fp = fsockopen($ar_tbAddress['host'], $ar_tbAddress['port'], $errno, $errstr, 15); | 
| webmaster@0 | 89 			$argToSend = "title=" . htmlentities(urlencode($row['Titre'])) . "&blog_name=Dual+Blog"; | 
| webmaster@67 | 90 			$argToSend .= "&url=" . BLOG_URL . "/posts/{$id_row['num_mess']}&excerpt=" | 
| webmaster@67 | 91 								. htmlentities(urlencode(substr(strip_tags($id_row['Message']), 0, 255) . "...")); | 
| webmaster@0 | 92 | 
| webmaster@0 | 93 			$toSend = $genToSend . "Content-Length: " . strlen($argToSend) . "\n\n"; | 
| webmaster@0 | 94 			$toSend .= $argToSend; | 
| webmaster@0 | 95 			echo("<![CDATA["); | 
| webmaster@0 | 96 			fwrite($fp, $toSend); | 
| webmaster@0 | 97 			while (!feof($fp)) { | 
| webmaster@0 | 98 				echo fgets($fp, 128); | 
| webmaster@0 | 99 			} | 
| webmaster@0 | 100 			echo("]]>"); | 
| webmaster@0 | 101 			fclose($fp); | 
| webmaster@0 | 102 		} | 
| webmaster@0 | 103 	} | 
| webmaster@0 | 104 	 break; | 
| webmaster@0 | 105  } | 
| webmaster@0 | 106 ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> | 
| webmaster@0 | 107 | 
| webmaster@0 | 108 <html xmlns='http://www.w3.org/1999/xhtml'> | 
| webmaster@0 | 109 <head> | 
| webmaster@0 | 110  <title>Administration : Conception & Design</title> | 
| webmaster@0 | 111  <link rel='StyleSheet' type='Text/CSS' href='css/admin.css' /> | 
| webmaster@0 | 112  <script type='text/javascript' src='admin.js'>/* Die IE, diiie */</script> | 
| webmaster@0 | 113 </head> | 
| webmaster@0 | 114 | 
| webmaster@0 | 115 <body> | 
| webmaster@0 | 116  <h3>Administration de Dual Blog</h3> | 
| webmaster@0 | 117 <ul id='Menu'> | 
| webmaster@0 | 118  <li><div id='Brouillons'>Brouillons</div></li> | 
| webmaster@0 | 119  <li><div id='Posts'>Posts publiés</div></li> | 
| webmaster@0 | 120  <li><div id='Designs'>Designs</div></li> | 
| webmaster@0 | 121  <li><div id='ToDo'>To-Do</div></li> | 
| webmaster@0 | 122 </ul> | 
| webmaster@0 | 123 <div id='GestPosts'> | 
| webmaster@0 | 124 <ul> | 
| webmaster@0 | 125 <?php | 
| webmaster@0 | 126  $Data->Connect(); | 
| webmaster@0 | 127  $Data->Query("SELECT * FROM Mess ORDER BY num_version, num_mess DESC LIMIT 0, 10"); | 
| webmaster@0 | 128  $versionAc=""; | 
| webmaster@0 | 129  $i=0; | 
| webmaster@0 | 130  $ar_Version = array(); | 
| webmaster@0 | 131  while(0!==($val=$Data->GetRow())) { | 
| webmaster@0 | 132   if($val['num_version']!=$versionAc) { | 
| webmaster@0 | 133 	if($i!=0) echo("</ul>\n</li>"); | 
| webmaster@0 | 134 	echo("  <li>{$val['num_version']} :\n    <ul>"); | 
| webmaster@0 | 135 	$versionAc=$val['num_version']; | 
| webmaster@0 | 136 	$ar_Version[] = $versionAc; | 
| webmaster@0 | 137 	$i++; | 
| webmaster@0 | 138   } | 
| webmaster@53 | 139   $Titre=TextUtils::EnsureUTF8($val['Titre']); | 
| webmaster@0 | 140   echo(" | 
| webmaster@0 | 141   \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 | 142  } | 
| webmaster@69 | 143  if($i > 0) echo("\n    </ul>\n  </li>\n"); | 
| webmaster@0 | 144 ?> | 
| webmaster@0 | 145 </ul> | 
| webmaster@0 | 146 </div> | 
| webmaster@0 | 147 | 
| webmaster@0 | 148 <div id='GestDesigns'> | 
| webmaster@0 | 149 <ul> | 
| webmaster@0 | 150  <li class='Add'><a href='#'>Ajouter un nouveau design au weblog</a></li> | 
| webmaster@0 | 151  <li>Modifier les designs déja existants</li> | 
| webmaster@0 | 152 </ul> | 
| webmaster@0 | 153 </div> | 
| webmaster@0 | 154 | 
| webmaster@0 | 155 <div id='GestBrouillons'> | 
| webmaster@0 | 156  <ul> | 
| webmaster@0 | 157   <li class='Add'><a href='#'>Ajouter un nouveau brouillon</a> | 
| webmaster@0 | 158   <form method='post' action='admin.php'> | 
| webmaster@0 | 159    <div> | 
| webmaster@0 | 160    <input type='hidden' name='mode' value='nvBrouillon' /> | 
| webmaster@0 | 161    <input type='text' name='Titre' value='Titre' /> | 
| webmaster@0 | 162    <textarea name='Contenu' rows='10' cols='30'></textarea> | 
| webmaster@0 | 163    <input type='submit' value='Valider ce brouillon' /> | 
| webmaster@0 | 164    </div> | 
| webmaster@0 | 165   </form> | 
| webmaster@0 | 166   </li> | 
| webmaster@0 | 167 <? | 
| webmaster@0 | 168    $Data->Query("SELECT * FROM Brouillons ORDER BY id_brouillon DESC"); | 
| webmaster@0 | 169    while(0!==($val=$Data->GetRow())) { | 
| webmaster@0 | 170 	echo(" | 
| webmaster@0 | 171    <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 | 172    } | 
| webmaster@0 | 173 ?> | 
| webmaster@0 | 174   </ul> | 
| webmaster@0 | 175 </div> | 
| webmaster@0 | 176 | 
| webmaster@0 | 177 <div id='GestToDo'> | 
| webmaster@0 | 178 <ul> | 
| webmaster@0 | 179  <li class='Add'><a href='#'>Ajouter une nouvelle tâche</a> | 
| webmaster@0 | 180  <form method='post' action='admin.php'> | 
| webmaster@0 | 181   <div> | 
| webmaster@0 | 182   <input type='hidden' name='mode' value='nvTache' /> | 
| webmaster@0 | 183   <input type='text' name='Tache' /> | 
| webmaster@0 | 184   <input type='submit' value='Ajouter cette tâche' /> | 
| webmaster@0 | 185   </div> | 
| webmaster@0 | 186  </form></li> | 
| webmaster@0 | 187  <?php | 
| webmaster@0 | 188   $Data->Query("SELECT * FROM ToDo ORDER By num_thing DESC"); | 
| webmaster@0 | 189   while(0!==($val=$Data->GetRow())) { | 
| webmaster@0 | 190     echo(" | 
| webmaster@0 | 191   <li>{$val['Thing']} <span class='Admin'><a href='#'>Fait</a>  --  <a href='#'>Editer</a>  --  <a href='#'>Supprimer</a></span></li>"); | 
| webmaster@0 | 192   } | 
| webmaster@0 | 193   $Data->Close(); | 
| webmaster@0 | 194 ?> | 
| webmaster@0 | 195 </ul> | 
| webmaster@0 | 196 </div> | 
| webmaster@0 | 197 | 
| webmaster@0 | 198 <form method='post' action='#' id='editPost'> | 
| webmaster@0 | 199  <div> | 
| webmaster@0 | 200    <input type='hidden' name='mode' value='editBrouillon' /> | 
| webmaster@0 | 201    <p><input type='text' name='Titre' value='Titre' /></p> | 
| webmaster@0 | 202    <p><textarea name='Contenu' rows='10' cols='30'></textarea></p> | 
| webmaster@0 | 203    <p><select name='mood' id='mood'> | 
| webmaster@0 | 204 <?php | 
| webmaster@0 | 205 		$handle = opendir('mood'); | 
| webmaster@0 | 206 		while($file = readdir($handle)) | 
| webmaster@0 | 207 		{ | 
| webmaster@0 | 208 		    if(strlen($file) > 3 && substr($file, -3) == 'png') | 
| webmaster@0 | 209 		    { | 
| webmaster@0 | 210 			  $short = substr($file, 0, -4); | 
| webmaster@0 | 211 			  echo("\t\t<option value='$short'><img src='mood/25/$file' alt='' />" . $short . "</option>\n"); | 
| webmaster@0 | 212 		    } | 
| webmaster@0 | 213 		} | 
| webmaster@0 | 214 		closedir($handle); | 
| webmaster@0 | 215 ?> | 
| webmaster@0 | 216    </select></p> | 
| webmaster@0 | 217    <p><input type='text' name='Tags' value='Tags' /></p> | 
| webmaster@0 | 218    <input type='button' name='Save' value='Sauver la modification' /> | 
| webmaster@0 | 219  </div> | 
| webmaster@0 | 220 </form> | 
| webmaster@0 | 221 | 
| webmaster@0 | 222 <form method='post' action='admin.php' id='whichVersion'> | 
| webmaster@0 | 223  <div> | 
| webmaster@0 | 224  <!--a onclick='javascript:hidePubForm()'>Hide</a--> | 
| webmaster@0 | 225  <input type='hidden' name='mode' value='nvPost' /> | 
| webmaster@0 | 226  <input type='hidden' name='id' /> | 
| webmaster@0 | 227  <fieldset> | 
| webmaster@0 | 228 	<legend>Catégorie du post</legend> | 
| webmaster@0 | 229 	<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 | 230 	<select name='versionAc' id='vAc'> | 
| webmaster@0 | 231 	  <option>Version 10</option> | 
| webmaster@0 | 232 	  <option>DeFr.org news</option> | 
| webmaster@0 | 233 	</select> | 
| webmaster@0 | 234 	<label for='nvCat'><br />Pour poster le post dans une catégorie n'existant pas encore, veuillez | 
| webmaster@0 | 235 	entrer son nom : <br /></label> | 
| webmaster@0 | 236 	<input type='text' name='newVersion' id='nvCat' value='Nouvelle version ?' /> | 
| webmaster@0 | 237  </fieldset> | 
| webmaster@0 | 238  <fieldset> | 
| webmaster@0 | 239 	  <legend>Tags</legend> | 
| webmaster@0 | 240 	  <label for='Tags'>Histoire d'organiser les posts, et de pouvoir filtrer par centres d'interet, veuillez | 
| webmaster@0 | 241 	  préciser les <em>tags</em> à attribuer à ce post :<br /></label> | 
| webmaster@0 | 242 	  <input type='text' name='Tags' id='Tags' /> | 
| webmaster@0 | 243  </fieldset> | 
| webmaster@0 | 244  <fieldset> | 
| webmaster@0 | 245 	  <legend>Mood / Emots</legend> | 
| webmaster@0 | 246 	  <label for='mood'>Pour assurer un minimum d'attrait aux posts, et leur attribuer un aspect graphique | 
| webmaster@0 | 247 	  sympathique, veuillez selectionner une emoticone pour le post, dans la liste suivante :<br /></label> | 
| webmaster@0 | 248 	  <select name='mood' id='mood'> | 
| webmaster@0 | 249 <?php | 
| webmaster@0 | 250 		$handle = opendir('mood'); | 
| webmaster@0 | 251 		while($file = readdir($handle)) | 
| webmaster@0 | 252 		{ | 
| webmaster@0 | 253 		    if(strlen($file) > 3 && substr($file, -3) == 'png') | 
| webmaster@0 | 254 		    { | 
| webmaster@0 | 255 			  $short = substr($file, 0, -4); | 
| webmaster@0 | 256 			  echo("\t\t\t<option value='$short'><img src='mood/25/$file' alt='' />" . $short . "</option>\n"); | 
| webmaster@0 | 257 		    } | 
| webmaster@0 | 258 		} | 
| webmaster@0 | 259 		closedir($handle); | 
| webmaster@0 | 260 ?> | 
| webmaster@0 | 261 	  </select> | 
| webmaster@0 | 262  </fieldset> | 
| webmaster@0 | 263  <fieldset> | 
| webmaster@0 | 264 	<legend>Trackback</legend> | 
| webmaster@0 | 265 	<label for='tb'>Pour effectuer un trackback vers un autre post, rentrer son URL :<br /></label> | 
| webmaster@0 | 266 	<input type='text' name='tb' id='tb' value='TrackBack ?' /> | 
| webmaster@0 | 267  </fieldset> | 
| webmaster@0 | 268  <fieldset> | 
| webmaster@0 | 269 	<legend>Publication</legend> | 
| webmaster@0 | 270 	<label id='pubComment' for='pubButton' /> | 
| webmaster@0 | 271 	<input type='submit' name="pubButton" id="pubButton" value='Publier' /> | 
| webmaster@0 | 272  </fieldset> | 
| webmaster@0 | 273 </div> | 
| webmaster@0 | 274 </form> | 
| webmaster@0 | 275 | 
| webmaster@0 | 276 <div id='Infos'> | 
| webmaster@0 | 277 Administration de Dual Blog - Par DeFr - Icones © David Lanham - The IconFactory - | 
| webmaster@0 | 278 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 | 279 </div> | 
| webmaster@0 | 280 </body> | 
| webmaster@0 | 281 </html> |