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