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 ?> |