PageRenderTime 40ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/pages/galerie.php

https://bitbucket.org/mw4rf/ajpsc-annuaire
PHP | 256 lines | 138 code | 49 blank | 69 comment | 29 complexity | de8af019bc76fe06ed362d99e92fa654 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. connexion();
  16. /* PAGINATION */ /* $x doit être définie avant d'arriver à cet endroit du code */
  17. // A partir de combien d'enregistrements une nouvelle page est-elle créée ? A partir de $z
  18. $z = $_config['pagination_galerie'];
  19. //Combien d'enregistrements au total dans la table ? Réponse: $t
  20. $sql = "SELECT * FROM photo";
  21. $req = mysql_query($sql);
  22. $t = mysql_num_rows($req);
  23. // Tri des enregistrements
  24. // Cas 1 => Première visualisation de la page: session close: tri par défaut
  25. if (!isset($_SESSION['tri_galerie']))
  26. $_SESSION['tri_galerie'] = "id DESC";
  27. // Cas 2 => L'utilisateur vient juste de cliquer sur un lien ordonnant un tri
  28. if(isset($_GET['tri']))
  29. {
  30. // Noms de famille
  31. if($_GET['tri'] == "n-asc")
  32. $_SESSION['tri_galerie'] = "nom ASC";
  33. if($_GET['tri'] == "n-desc")
  34. $_SESSION['tri_galerie'] = "nom DESC";
  35. // Promotions
  36. if($_GET['tri'] == "pr-asc")
  37. $_SESSION['tri_galerie'] = "promotion ASC";
  38. if($_GET['tri'] == "pr-desc")
  39. $_SESSION['tri_galerie'] = "promotion DESC";
  40. // Par date de mise à jour
  41. if($_GET['tri'] == "maj")
  42. $_SESSION['tri_galerie'] = "modif DESC";
  43. }
  44. // Conclusion => un tri est déjà actif, soit parce que c'est le tri par défaut (cas 1)
  45. // soit parce qu'il vient d'être défini (cas 2), soit encore parce qu'il est enregistré
  46. // dans la session en cours.
  47. $tri = $_SESSION['tri_galerie'];
  48. //Générer la requête avant de modifier les limites ($x)
  49. $sql = "SELECT * FROM utilisateur as U, photo as P WHERE U.id = P.user_id ORDER BY $tri LIMIT $x,$z";
  50. $req = mysql_query($sql);
  51. // On stocke le $x actuel dans $xa, car $x va être modifié par la suite
  52. $xa = $x;
  53. // Barre de navigation / répartition des résultats sur plusieurs pages
  54. //Calculs
  55. // $y est le premier enregistrement de la plage à afficher (LIMIT Y,...)
  56. // $z est le seuil à partir duquel on passe à une autre page
  57. // $x est le nombre d'enregistrements qu'il reste à afficher
  58. //Protéger y: il ne doit pas être négatif, car x peut être plus petit que z
  59. $y = $x - $z;
  60. if($y < 0)
  61. $y = 0;
  62. //Le nouveau x est l'ancien + la grandeur du nouvel intervalle ($z)
  63. $x = $x + $z;
  64. // $l représente le premier enregistrement de la dernière page
  65. $l = $t-$z;
  66. // $p représente le nombre de pages
  67. $p = ceil($t / $z); //ceil() arrondit à la valeur supérieure
  68. // $c représente la page courante
  69. $c = ceil($x / $z); //ceil() arrondit à la valeur supérieure
  70. /* /PAGINATION */
  71. ?>
  72. <div class="container well">
  73. <?php
  74. /* Construction et affichage du système de pagination */
  75. $avant = abbr2("p-");
  76. $apres = abbr2("p+");
  77. $avantx = donner("p-");
  78. $apresx = donner("p+");
  79. $il_y_a = donner("p1");
  80. $fiches_sur = donner("p2b");
  81. $pages = donner("p3");
  82. $page = donner("p4");
  83. $result = "<table style=\"width:100%;\"><tr><td align=\"left\">";
  84. $result .= "<span class=\"label\">$il_y_a <b>".$t."</b> $fiches_sur <b>".$p."</b> $pages</span>";
  85. $result .= "</td>";
  86. // Combobox qui permet de sauter d'une page à l'autre
  87. $co = "<select class=\"span1 btn\" name=\"menu_pagination\" "
  88. ."onchange=\"MM_jumpMenu('parent',this,0)\">";
  89. for($ix = 1 ; $ix <= $p ; $ix++)
  90. {
  91. // Page courante
  92. if($ix == $c)
  93. {
  94. $co .= "<option selected=\"selected\">$c</option>";
  95. }
  96. // Autre page
  97. else
  98. {
  99. /* $ix indique la page à laquelle on veut aller, mais quel sera la
  100. valeur de x pour cette page (x=premier enregistrement de la page)
  101. Réponse: page désirée ($ix) * seuil de pagination ($z)
  102. MAIS: la première page porte le numéro 1, alors qu'elle est
  103. construite avec un $x égal à 0 (limit $x=O,$z) => donc, il faut
  104. en réalité utiliser ($ix - 1) au lieu de $ix*/
  105. $xgo = ($ix - 1) * $z;
  106. $co .= "<option value=\"index.php?action=galerie&x=$xgo"
  107. ."\">$ix</option>";
  108. }
  109. }
  110. $co .= "</select>";
  111. $provresult = "<td align=\"center\"><div class=\"btn-group\">";
  112. // si $x>$z c'est qu'on est plus à la première page
  113. if($x > $z)
  114. {
  115. $provresult .="<a class=\"btn btn-small\" href=\"index.php?action=galerie\"><i class=\"icon-fast-backward\"></i></a>"
  116. ." <a class=\"btn btn-small\" href=\"index.php?action=galerie&x=$y\"><i class=\"icon-backward\"></i></a>";
  117. }
  118. // sinon c'est qu'on est à la première page
  119. else
  120. {
  121. $provresult .= "<a class=\"btn btn-small disabled\"><i class=\"icon-fast-backward\"></i></a> <a class=\"btn btn-small disabled\"><i class=\"icon-backward\"></i></a>";
  122. }
  123. //si $x<$t c'est qu'on n'est pas encore à la dernière page
  124. if($x < $t)
  125. {
  126. $provresult .=" <a class=\"btn btn-small\" href=\"index.php?action=galerie&x=$x\"><i class=\"icon-forward\"></i></a>"
  127. ." <a class=\"btn btn-small\" href=\"index.php?action=galerie&x=$l\"><i class=\"icon-fast-forward\"></i></a>";
  128. }
  129. // sinon c'est qu'on est à la dernière page
  130. else
  131. {
  132. $provresult .= " <a class=\"btn btn-small disabled\"><i class=\"icon-forward\"></i></a> <a class=\"btn btn-small disabled\"><i class=\"icon-fast-forward\"></i></a>";
  133. }
  134. $result .= $provresult."</div></td>";
  135. // Pour désactiver le Combo, remplacer ci-dessous $co par $c
  136. $result .= "<td align=\"right\"><span class=\"label\">$page</span> $co <span class=\"label\">/$p</span></td></tr></table>";
  137. echo $result;
  138. ?>
  139. </div>
  140. <div class="container">
  141. <table class="table" align="center" cellpadding="4" cellspacing="0" border="0">
  142. <tr>
  143. <?php
  144. // Pour l'exportation
  145. /* NB: il faut refuser l'exportation ici (false) pour que soit générée une requête SQL de base, exportant TOUS les enregistrements... et non seulement ceux qui sont sur la page courante*/
  146. $_SESSION["exportation_permission"] = false;
  147. $_SESSION["exportation_requete"] = $sql;
  148. $images_par_ligne = $_config['images_par_ligne'];
  149. // variables modifiées à chaque itération de la boucle
  150. $num = 0;
  151. $promo = 0;
  152. while($data = mysql_fetch_assoc($req))
  153. {
  154. //print_r($data);
  155. // récupérer les données de l'utilisateur
  156. $photoid = $data['id'];
  157. $userid = $data['user_id'];
  158. $afficher['nom'] = (formater_nom(stripslashes($data['nom'])));
  159. $afficher['prenom'] = (formater_nom(stripslashes($data['prenom'])));
  160. $afficher['promotion'] = (stripslashes($data['promotion']));
  161. // récupérer l'id de l'image
  162. $sql2 = "SELECT * FROM photo WHERE user_id = '$userid'";
  163. $req2 = mysql_query($sql2);
  164. // pas de photo : arrêter le traitement et continuer avec l'utilisateur suivant
  165. if(mysql_num_rows($req2) < 1) continue;
  166. // une photo : poursuite du traitement
  167. $data2 = mysql_fetch_assoc($req2);
  168. // Créer l'image
  169. $imgW = $data2['width'];
  170. $imgH = $data2['height'];
  171. if($imgW == 0) $imgW = 1;
  172. // Resizing image to make a thumbnail
  173. $thumb_width = $_config['images_largeur_galerie'];
  174. $thumb_height = round($imgH / $imgW * $thumb_width);
  175. // Stockage dans la BDD ou sur le système de fichiers ?
  176. if($_config['photos_storage'] == "FS")
  177. $src = $_config['data_folder']."/photos/".$data2['user_id'].'.'.$data2['extension'];
  178. else
  179. $src = "includes/photo.php?id=$userid";
  180. // affichage
  181. $photo = "<a href=\"index.php?action=page_voir&id=$userid\"><img height=\"$thumb_height\" width=\"$thumb_width\" src=\"$src\"></a>";
  182. // Taille de chaque colonne, en pourcentage
  183. $tdp = round( 100 / $images_par_ligne );
  184. // Affichage
  185. // Displaying : new line
  186. if($num == $images_par_ligne)
  187. {
  188. echo "\n\t</tr>\n\n\t<tr>";
  189. $num = 0;
  190. }
  191. $num++;
  192. // Tri par promotions
  193. if($afficher['promotion'] != $promo and ( $_SESSION['tri_galerie'] == "promotion ASC" or $_SESSION['tri_galerie'] == "promotion DESC" ) )
  194. {
  195. $promo = $afficher['promotion'];
  196. echo "</tr><tr><th class=\"well\" style=\"text-align:center;\" colspan=\"$images_par_ligne\">".donner("c3")." $promo</th></tr><tr>";
  197. }
  198. ?>
  199. <td style="text-align:center;" width="<?php echo $tdp; ?>%">
  200. <?php echo $photo; ?>
  201. <br />
  202. <?php echo "<b>".$afficher['prenom']." ".$afficher['nom']."</b><br />(".$afficher['promotion'].")"; ?>
  203. </td>
  204. <?php } ?>
  205. </tr>
  206. </table>
  207. </div>