annotate admin_xml.php @ 89:e37ef9a81737 tip

Merge
author Franck Deroche <franck@defr.org>
date Thu, 13 Dec 2018 00:55:42 +0100
parents 629389204276
children
rev   line source
webmaster@0 1 <?php
webmaster@0 2 require("classes.php");
webmaster@0 3
webmaster@0 4 $Req = new Requete();
webmaster@0 5 $Data = new DataAccess;
webmaster@0 6
webmaster@0 7 header("Content-Type: application/xml; charset=utf-8");
webmaster@0 8 $doc = new DOMDocument('1.0', 'utf-8');
webmaster@0 9 $root = $doc->createElementNS('http://defr.org/2005/blog-post', 'post');
webmaster@0 10 $doc->appendChild($root);
webmaster@0 11
webmaster@0 12 $mode = $Req->get('mode', 'GET', 'get');
webmaster@0 13 $type = $Req->get('type', 'GET', 'post');
webmaster@0 14 $id = $Req->get('id');
webmaster@0 15
webmaster@0 16 $root->appendChild($doc->createElement('id', $id));
webmaster@0 17 $root->appendChild(DOMUtils::createCDATAWrapper($doc, 'debug', var_export($Req, true)));
webmaster@0 18 switch($mode . '-' . $type)
webmaster@0 19 {
webmaster@0 20 case 'edit-post':
webmaster@0 21 $nvTitre = $Req->get('title');
webmaster@0 22 $nvContenu = $Req->get('content');
webmaster@0 23 $nvMood = $Req->get('mood');
webmaster@0 24 $Data->Query
webmaster@0 25 ("
webmaster@0 26 UPDATE Mess
webmaster@0 27 SET Titre='{$nvTitre}', Message='{$nvContenu}', Emot='{$nvMood}'
webmaster@0 28 WHERE num_mess={$id}
webmaster@0 29 ");
webmaster@0 30 // Récuperation des nouveaux tags à appliquer
webmaster@0 31 $arTags = TextUtils::splitTags($Req->get('tags'));
webmaster@0 32 // Récuperation des anciens tags
webmaster@0 33 $Data->Query
webmaster@0 34 ("
webmaster@0 35 SELECT T.idTag, T.Tag
webmaster@0 36 FROM Lien_Tags_Posts L
webmaster@0 37 LEFT JOIN Tags T ON L.idTag = T.idTag
webmaster@0 38 WHERE L.idMess = {$id}
webmaster@0 39 ");
webmaster@0 40
webmaster@0 41 $oldTags = array();
webmaster@0 42 while(0 !== ($row = $Data->GetRow()))
webmaster@0 43 {
webmaster@0 44 $oldTags[] = $row['Tag'];
webmaster@0 45 $mapOld[$row['Tag']] = $row['idTag'];
webmaster@0 46 }
webmaster@0 47 // Calcul des différences
webmaster@0 48 $tagsSupprimes = array_diff($oldTags, $arTags);
webmaster@0 49 $tagsAjoutes = array_diff($arTags, $oldTags);
webmaster@0 50 // Suppression des tags non affectés
webmaster@0 51 if(is_array($tagsSupprimes))
webmaster@0 52 {
webmaster@0 53 foreach($tagsSupprimes as $tagSuppr)
webmaster@0 54 {
webmaster@0 55 $supprIDs .= $mapOld[$tagSuppr] . ',';
webmaster@0 56 }
webmaster@0 57 $Data->Query
webmaster@0 58 ("
webmaster@0 59 DELETE FROM Lien_Tags_Posts
webmaster@0 60 WHERE idMess={$id} AND idTag IN ({$supprIDs}0)
webmaster@0 61 ");
webmaster@0 62 }
webmaster@0 63 // Ajout des tags ajoutés
webmaster@0 64 if(is_array($tagsAjoutes))
webmaster@0 65 {
webmaster@0 66 foreach($tagsAjoutes as $tagAj)
webmaster@0 67 {
webmaster@0 68 $n = $Data->Query("SELECT idTag FROM Tags WHERE Tag='{$tagAj}'");
webmaster@0 69 if($n == 0)
webmaster@0 70 {
webmaster@0 71 // Si le tag n'existe pas, on le crée
webmaster@0 72 $Data->Query("INSERT INTO Tags SET Tag='{$tagAj}'");
webmaster@0 73 $Data->Query("SELECT idTag FROM Tags WHERE Tag='{$tagAj}'");
webmaster@0 74 }
webmaster@0 75 $row = $Data->GetRow();
webmaster@0 76 $Data->Query
webmaster@0 77 ("
webmaster@0 78 INSERT INTO Lien_Tags_Posts
webmaster@0 79 SET idMess={$id}, idTag={$row['idTag']}
webmaster@0 80 ");
webmaster@0 81 }
webmaster@0 82 }
webmaster@0 83 case 'get-post':
webmaster@0 84 $Data->Query
webmaster@0 85 ("
webmaster@0 86 SELECT Titre, Message, Emot
webmaster@0 87 FROM Mess
webmaster@0 88 WHERE num_mess={$id}
webmaster@0 89 ");
webmaster@0 90 $row = $Data->GetRow();
webmaster@0 91 $titre_CDATA = $doc->createCDATASection($row['Titre']);
webmaster@0 92 $root->appendChild(DOMUtils::createCDATAWrapper($doc, 'titre', $row['Titre']));
webmaster@0 93 $root->appendChild(DOMUtils::createCDATAWrapper($doc, 'contenu', $row['Message']));
webmaster@0 94 $root->appendChild($doc->createElement('mood', $row['Emot']));
webmaster@0 95 // Obtention des tags
webmaster@0 96 $Data->Query
webmaster@0 97 ("
webmaster@0 98 SELECT T.idTag, T.Tag
webmaster@0 99 FROM Lien_Tags_Posts L
webmaster@0 100 LEFT JOIN Tags T ON L.idTag = T.idTag
webmaster@0 101 WHERE L.idMess = {$id}
webmaster@0 102 ");
webmaster@0 103 while(0 !== ($row = $Data->GetRow()))
webmaster@0 104 $root->appendChild($doc->createElement('tag', $row['Tag']));
webmaster@0 105 break;
webmaster@0 106 case 'edit-brouillon':
webmaster@0 107 $nvTitre = $Req->get('title');
webmaster@0 108 $nvContenu = $Req->get('content');
webmaster@0 109 $Data->Query
webmaster@0 110 ("
webmaster@0 111 UPDATE Brouillons
webmaster@0 112 SET Titre='{$nvTitre}', Contenu='{$nvContenu}'
webmaster@0 113 WHERE id_brouillon={$id}
webmaster@0 114 ");
webmaster@0 115 case 'get-brouillon':
webmaster@0 116 $Data->Query
webmaster@0 117 ("
webmaster@0 118 SELECT Titre, Contenu
webmaster@0 119 FROM Brouillons
webmaster@0 120 WHERE id_brouillon={$id}
webmaster@0 121 ");
webmaster@0 122 $row = $Data->GetRow();
webmaster@0 123 $root->appendChild(DOMUtils::createCDATAWrapper($doc, 'titre', $row['Titre']));
webmaster@0 124 $root->appendChild(DOMUtils::createCDATAWrapper($doc, 'contenu', $row['Contenu']));
webmaster@0 125 break;
webmaster@0 126 }
webmaster@0 127 echo $doc->saveXML();
webmaster@0 128 ?>