Mercurial > defr > DualBlog
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