diff admin_xml.php @ 0:629389204276

Import initial
author Franck Deroche <webmaster@defr.org>
date Sat, 20 Oct 2007 14:15:10 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/admin_xml.php	Sat Oct 20 14:15:10 2007 +0200
@@ -0,0 +1,128 @@
+<?php
+    require("classes.php");
+
+    $Req = new Requete();
+    $Data = new DataAccess;
+
+    header("Content-Type: application/xml; charset=utf-8");
+    $doc = new DOMDocument('1.0', 'utf-8');
+    $root = $doc->createElementNS('http://defr.org/2005/blog-post', 'post');
+    $doc->appendChild($root);
+    
+    $mode = $Req->get('mode', 'GET', 'get');
+    $type = $Req->get('type', 'GET', 'post');
+    $id = $Req->get('id');
+    
+    $root->appendChild($doc->createElement('id', $id));
+    $root->appendChild(DOMUtils::createCDATAWrapper($doc, 'debug', var_export($Req, true)));
+    switch($mode . '-' . $type)
+    {
+	case 'edit-post':
+	    $nvTitre = $Req->get('title');
+	    $nvContenu = $Req->get('content');
+	    $nvMood = $Req->get('mood');
+	    $Data->Query
+	    ("
+		UPDATE Mess 
+		SET Titre='{$nvTitre}', Message='{$nvContenu}', Emot='{$nvMood}'
+		WHERE num_mess={$id}
+	    ");
+	    // Récuperation des nouveaux tags à appliquer
+	    $arTags = TextUtils::splitTags($Req->get('tags'));
+	    // Récuperation des anciens tags
+	    $Data->Query
+	    ("
+		SELECT T.idTag, T.Tag
+		FROM Lien_Tags_Posts L
+		LEFT JOIN Tags T ON L.idTag = T.idTag
+		WHERE L.idMess = {$id}
+	    ");
+	    
+	    $oldTags = array();
+	    while(0 !== ($row = $Data->GetRow()))
+	    {
+		$oldTags[] = $row['Tag'];
+		$mapOld[$row['Tag']] = $row['idTag'];
+	    }
+	    // Calcul des différences
+	    $tagsSupprimes = array_diff($oldTags, $arTags);
+	    $tagsAjoutes = array_diff($arTags, $oldTags);
+	    // Suppression des tags non affectés
+	    if(is_array($tagsSupprimes))
+	    {
+		foreach($tagsSupprimes as $tagSuppr)
+		{
+		    $supprIDs .= $mapOld[$tagSuppr] . ',';
+		}
+		$Data->Query
+		("
+		    DELETE FROM Lien_Tags_Posts 
+		    WHERE idMess={$id} AND idTag IN ({$supprIDs}0)
+		");
+	    }
+	    // Ajout des tags ajoutés
+	    if(is_array($tagsAjoutes))
+	    {
+		foreach($tagsAjoutes as $tagAj)
+		{
+		    $n = $Data->Query("SELECT idTag FROM Tags WHERE Tag='{$tagAj}'");
+		    if($n ==  0)
+		    {
+			// Si le tag n'existe pas, on le crée
+			$Data->Query("INSERT INTO Tags SET Tag='{$tagAj}'");
+			$Data->Query("SELECT idTag FROM Tags WHERE Tag='{$tagAj}'");
+		    }
+		    $row = $Data->GetRow();
+		    $Data->Query
+		    ("
+			INSERT INTO Lien_Tags_Posts 
+			SET idMess={$id}, idTag={$row['idTag']}
+		    ");
+		}
+	    }
+	case 'get-post':
+	    $Data->Query
+	    ("
+		SELECT Titre, Message, Emot
+		FROM Mess
+		WHERE num_mess={$id}
+	    ");
+	    $row = $Data->GetRow();
+	    $titre_CDATA = $doc->createCDATASection($row['Titre']);
+	    $root->appendChild(DOMUtils::createCDATAWrapper($doc, 'titre', $row['Titre']));
+	    $root->appendChild(DOMUtils::createCDATAWrapper($doc, 'contenu', $row['Message']));
+	    $root->appendChild($doc->createElement('mood', $row['Emot']));
+	    // Obtention des tags
+	    $Data->Query
+	    ("
+		SELECT T.idTag, T.Tag
+		FROM Lien_Tags_Posts L
+		LEFT JOIN Tags T ON L.idTag = T.idTag
+		WHERE L.idMess = {$id}
+	    ");
+	    while(0 !== ($row = $Data->GetRow()))
+		$root->appendChild($doc->createElement('tag', $row['Tag']));
+	    break;
+	case 'edit-brouillon':
+	    $nvTitre = $Req->get('title');
+	    $nvContenu = $Req->get('content');
+	    $Data->Query
+	    ("
+		UPDATE Brouillons
+		SET Titre='{$nvTitre}', Contenu='{$nvContenu}'
+		WHERE id_brouillon={$id}
+	    ");
+	case 'get-brouillon':
+	    $Data->Query
+	    ("
+		SELECT Titre, Contenu
+		FROM Brouillons
+		WHERE id_brouillon={$id}
+	    ");
+	    $row = $Data->GetRow();
+	    $root->appendChild(DOMUtils::createCDATAWrapper($doc, 'titre', $row['Titre']));
+	    $root->appendChild(DOMUtils::createCDATAWrapper($doc, 'contenu', $row['Contenu']));
+	    break;
+    }
+    echo $doc->saveXML();
+?>
\ No newline at end of file