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