PageRenderTime 44ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/export/xmlexport.php

https://bitbucket.org/mw4rf/ajpsc-annuaire
PHP | 209 lines | 144 code | 40 blank | 25 comment | 15 complexity | 5e32330e54f56905395dbf6c2025a31c MD5 | raw file
  1. <?php
  2. // Annuaire Alumnii
  3. // Base de données et annuaire d'anciens étudiants.
  4. // Copyright (C) <2006> <Guillaume Florimond>
  5. // This program is free software: you can redistribute it and/or modify
  6. // it under the terms of the GNU General Public License as published by
  7. // the Free Software Foundation, either version 3 of the License, or
  8. // (at your option) any later version.
  9. // This program is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU General Public License for more details.
  13. // You should have received a copy of the GNU General Public License
  14. // along with this program. If not, see <https://www.gnu.org/licenses/>.
  15. session_start();
  16. include('../includes/config.inc.php');
  17. include('../includes/fonctions.inc.php');
  18. /* Début: authentification */
  19. if(checkauth())
  20. {
  21. // S'il y a une requête en mémoire correspondant à un résultat de recherche...
  22. if(isset($_SESSION["exportation_permission"]) and $_SESSION["exportation_permission"] == true)
  23. {
  24. // Premier cas: l'exportation de tout le contenu est permise
  25. if($_config['exporter_tout'] == 1)
  26. {
  27. $sql = $_SESSION["exportation_requete"];
  28. }
  29. // Deuxième cas: l'exportation du tout n'est pas permise
  30. else
  31. {
  32. $sql = $_SESSION["exportation_requete"];
  33. // On récupère la requête et on remplace le "SELECT *" par autre chose
  34. $requete = explode("*", $sql, 2);
  35. $sql = "SELECT nom, prenom, promotion, email ".$requete[1];
  36. $exporter_tout = false;
  37. }
  38. }
  39. // Si on demande EXPRESSEMENT de tout exporter ou d'exporter une partie seulement
  40. if(isset($_GET['tout']))
  41. {
  42. // On exporte tout
  43. if($_GET['tout'] == 1 and $_config['exporter_tout'] == 1)
  44. {
  45. $sql = "SELECT * FROM utilisateur;";
  46. $tout_exporter = true;
  47. }
  48. // On exporte une partie (exportation rapide)
  49. elseif($_GET['tout'] == 0)
  50. {
  51. $sql = "SELECT nom, prenom, promotion, email FROM utilisateur;";
  52. $tout_exporter = false;
  53. }
  54. // A défaut, on exporte seulement une partie (=> si $_config['exporter_tout'] != 1)
  55. else
  56. {
  57. $sql = "SELECT nom, prenom, promotion, email FROM utilisateur;";
  58. $tout_exporter = false;
  59. }
  60. }
  61. connexion();
  62. $req = mysql_query($sql);
  63. $export = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
  64. if($tout_exporter)
  65. {
  66. $export .= "<!DOCTYPE annuaire [\n
  67. <!ELEMENT annuaire (personne+)>\n
  68. <!ELEMENT personne (donnees, questions)>\n
  69. <!ELEMENT donnees (nom, prenom, promotion, lieu_naissance, date_naissance, adresse, e-mail)>\n
  70. <!ELEMENT questions (reponse1, reponse2, reponse3, reponse4, reponse5, reponse6, notes)>\n
  71. <!ELEMENT nom (#PCDATA)>\n
  72. <!ELEMENT prenom (#PCDATA)>\n
  73. <!ELEMENT promotion (#PCDATA)>\n
  74. <!ELEMENT lieu_naissance (#PCDATA)>\n
  75. <!ELEMENT date_naissance (#PCDATA)>\n
  76. <!ELEMENT adresse (#PCDATA)>\n
  77. <!ELEMENT e-mail (#PCDATA)>\n
  78. <!ELEMENT reponse1 (#PCDATA)>\n
  79. <!ELEMENT reponse2 (#PCDATA)>\n
  80. <!ELEMENT reponse3 (#PCDATA)>\n
  81. <!ELEMENT reponse4 (#PCDATA)>\n
  82. <!ELEMENT reponse5 (#PCDATA)>\n
  83. <!ELEMENT reponse6 (#PCDATA)>\n
  84. <!ELEMENT notes (#PCDATA)>\n
  85. ]>\n";
  86. }
  87. else
  88. {
  89. $export .= "<!DOCTYPE annuaire [\n
  90. <!ELEMENT annuaire (personne+)>\n
  91. <!ELEMENT personne (donnees)>\n
  92. <!ELEMENT donnees (nom, prenom, promotion, e-mail)>\n
  93. <!ELEMENT nom (#PCDATA)>\n
  94. <!ELEMENT prenom (#PCDATA)>\n
  95. <!ELEMENT promotion (#PCDATA)>\n
  96. <!ELEMENT e-mail (#PCDATA)>\n
  97. ]>\n";
  98. }
  99. $export .= "<annuaire>\n";
  100. while ($data = mysql_fetch_array($req))
  101. {
  102. $export .= "<personne>\n";
  103. $export .= "\t<donnees>\n";
  104. $export .= "\t\t<nom>\n";
  105. $export .= "\t\t".strip_tags(stripslashes($data['nom']))."\n";
  106. $export .= "\t\t</nom>\n";
  107. $export .= "\t\t<prenom>\n";
  108. $export .= "\t\t".strip_tags(stripslashes($data['prenom']))."\n";
  109. $export .= "\t\t</prenom>\n";
  110. $export .= "\t\t<promotion>\n";
  111. $export .= "\t\t".strip_tags(stripslashes($data['promotion']))."\n";
  112. $export .= "\t\t</promotion>\n";
  113. if($exporter_tout)
  114. {
  115. $export .= "\t\t<lieu_naissance>\n";
  116. $export .= "\t\t".strip_tags(stripslashes($data['nationalite']))."\n";
  117. $export .= "\t\t</lieu_naissance>\n";
  118. $export .= "\t\t<date_naissance>\n";
  119. $export .= "\t\t".strip_tags(stripslashes($data['naissance']))."\n";
  120. $export .= "\t\t</date_naissance>\n";
  121. $export .= "\t\t<adresse>\n";
  122. $export .= "\t\t".strip_tags(stripslashes($data['adresse']))."\n";
  123. $export .= "\t\t</adresse>\n";
  124. }
  125. $export .= "\t\t<e-mail>\n";
  126. $export .= "\t\t".strip_tags(stripslashes($data['email']))."\n";
  127. $export .= "\t\t</e-mail>\n";
  128. $export .= "\t</donnees>\n";
  129. if($exporter_tout)
  130. {
  131. $export .= "\t<questions>\n";
  132. $export .= "\t\t<reponse1>\n";
  133. $export .= "\t\t".strip_tags(stripslashes($data['q1']))."\n";
  134. $export .= "\t\t</reponse1>\n";
  135. $export .= "\t\t<reponse2>\n";
  136. $export .= "\t\t".strip_tags(stripslashes($data['q2']))."\n";
  137. $export .= "\t\t</reponse2>\n";
  138. $export .= "\t\t<reponse3>\n";
  139. $export .= "\t\t".strip_tags(stripslashes($data['q3']))."\n";
  140. $export .= "\t\t</reponse3>\n";
  141. $export .= "\t\t<reponse4>\n";
  142. $export .= "\t\t".strip_tags(stripslashes($data['q4']))."\n";
  143. $export .= "\t\t</reponse4>\n";
  144. $export .= "\t\t<reponse5>\n";
  145. $export .= "\t\t".strip_tags(stripslashes($data['q5']))."\n";
  146. $export .= "\t\t</reponse5>\n";
  147. $export .= "\t\t<reponse6>\n";
  148. $export .= "\t\t".strip_tags(stripslashes($data['q6']))."\n";
  149. $export .= "\t\t</reponse6>\n";
  150. $export .= "\t\t<notes>\n";
  151. $export .= "\t\t".strip_tags(stripslashes($data['q7']))."\n";
  152. $export .= "\t\t</notes>\n";
  153. $export .= "\t</questions>\n";
  154. }
  155. $export .= "</personne>\n";
  156. }
  157. $export .= "</annuaire>";
  158. /* Récupérer la date du jour pour former le nom du fichier téléchargé */
  159. $date = date("Ymd");
  160. /* Définition des header() PHP: le navigateur affiche un dialog de sauvegarde, mais pas cette page*/
  161. header("Content-Type: text/xml");
  162. header("Content-Disposition: attachment; filename=ajpsc_annuaire_".$date.".xml");
  163. header("Content-Encoding: UTF-8");
  164. header("Pragma: no-cache");
  165. header("Expires: 0");
  166. print "$export";
  167. } else { echo "Erreur";}
  168. /* Fin authentification */
  169. ?>