PageRenderTime 41ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 1ms

/_plugins_/agenda/1_9_2/inc/agenda_filtres.php

https://bitbucket.org/pombredanne/spip-zone-treemap
PHP | 211 lines | 181 code | 19 blank | 11 comment | 30 complexity | 914c456093498aa2b7aa9c19102771a0 MD5 | raw file
  1. <?php
  2. /**
  3. * Fichier de filtres communs au plugin Agenda et PIM_agenda
  4. *
  5. */
  6. function Agenda_memo_full($date_deb=0, $date_fin=0 , $titre='', $descriptif='', $lieu='', $url='', $cal='')
  7. {
  8. static $agenda = array();
  9. if (!$date_deb) {
  10. $res = $agenda;
  11. $agenda=array();
  12. return $res;
  13. }
  14. $url=str_replace("&amp;","&",$url);
  15. $idatedeb = date_ical($date_deb);
  16. $idatefin = date_ical($date_fin);
  17. $cal = trim($cal); // func_get_args (filtre alterner) rajoute \n !!!!
  18. $startday1=explode(' ',$date_deb);
  19. $startday1=$startday1['0'].' 00:00:00';
  20. $ts_startday1=strtotime($startday1);
  21. $ts_date_fin=strtotime($date_fin);
  22. $maxdays=365;
  23. while (($ts_startday1<$ts_date_fin)&&($maxdays-->0))
  24. {
  25. $day=date('Y-m-d H:i:s',$ts_startday1);
  26. $agenda[$cal][(date_anneemoisjour($day))][] = array(
  27. 'CATEGORIES' => $cal,
  28. 'DTSTART' => $idatedeb,
  29. 'DTEND' => $idatefin,
  30. 'DESCRIPTION' => $descriptif,
  31. 'SUMMARY' => $titre,
  32. 'LOCATION' => $lieu,
  33. 'URL' => $url);
  34. $ts_startday1 += 26*3600; // le jour suivant : +26 h pour gerer les changements d'heure
  35. $ts_startday1 = mktime(0, 0, 0, date("m",$ts_startday1),
  36. date("d",$ts_startday1), date("Y",$ts_startday1)); // et remise a zero de l'heure
  37. }
  38. // toujours retourner vide pour qu'il ne se passe rien
  39. return "";
  40. }
  41. function Agenda_memo_evt_full($date_deb=0, $date_fin=0 , $titre='', $descriptif='', $lieu='', $url='', $cal='')
  42. {
  43. static $evenements = array();
  44. if (!$date_deb) return $evenements;
  45. $url=str_replace("&amp;","&",$url);
  46. $idatedeb = date_ical(reset(explode(" ",$date_deb))." 00:00:00");
  47. $idatefin = date_ical(reset(explode(" ",$date_fin))." 00:00:00");
  48. $cal = trim($cal); // func_get_args (filtre alterner) rajoute \n !!!!
  49. $startday1=explode(' ',$date_deb);
  50. $startday1=$startday1['0'].' 00:00:00';
  51. $ts_startday1=strtotime($startday1);
  52. $ts_date_fin=strtotime($date_fin);
  53. $maxdays=365;
  54. while (($ts_startday1<$ts_date_fin)&&($maxdays-->0))
  55. {
  56. $day=date('Y-m-d H:i:s',$ts_startday1);
  57. $evenements[$cal][(date_anneemoisjour($day))][] = array(
  58. 'CATEGORIES' => $cal,
  59. 'DTSTART' => $idatedeb,
  60. 'DTEND' => $idatefin,
  61. 'DESCRIPTION' => $descriptif,
  62. 'SUMMARY' => $titre,
  63. 'LOCATION' => $lieu,
  64. 'URL' => $url);
  65. $ts_startday1 += 26*3600; // le jour suivant : +26 h pour gerer les changements d'heure
  66. $ts_startday1 = mktime(0, 0, 0, date("m",$ts_startday1),
  67. date("d",$ts_startday1), date("Y",$ts_startday1)); // et remise a zero de l'heure
  68. }
  69. // toujours retourner vide pour qu'il ne se passe rien
  70. return "";
  71. }
  72. function Agenda_affiche_full($i)
  73. {
  74. $args = func_get_args();
  75. $nb = array_shift($args); // nombre d'evenements (on pourrait l'afficher)
  76. $sinon = array_shift($args);
  77. if (!$nb) return $sinon;
  78. $type = array_shift($args);
  79. $url_retour = end($args);
  80. if (preg_match(';[a-z]{3,5}://;i',$url_retour))
  81. array_pop($args);
  82. else
  83. $url_retour = "";
  84. $agenda = Agenda_memo_full(0);
  85. $evt_avec = array();
  86. foreach (($args ? $args : array_keys($agenda)) as $k) {
  87. if (isset($agenda[$k])&&is_array($agenda[$k]))
  88. foreach($agenda[$k] as $d => $v) {
  89. $evt_avec[$d] = isset($evt_avec[$d]) ? (array_merge($evt_avec[$d], $v)) : $v;
  90. }
  91. }
  92. $evenements = Agenda_memo_evt_full(0);
  93. $evt_sans = array();
  94. foreach (($args ? $args : array_keys($evenements)) as $k) {
  95. if (isset($evenements[$k])&&is_array($evenements[$k]))
  96. foreach($evenements[$k] as $d => $v) {
  97. $evt_sans[$d] = isset($evt_sans[$d]) ? (array_merge($evt_sans[$d], $v)) : $v;
  98. }
  99. }
  100. if ($type != 'periode')
  101. $evt = array($evt_sans, $evt_avec);
  102. else
  103. {
  104. $d = array_keys($evt_avec);
  105. $mindate = min($d);
  106. $min = substr($mindate,6,2);
  107. $max = $min + ((strtotime(max($d)) - strtotime($mindate)) / (3600 * 24));
  108. if ($max < 31) $max = 0;
  109. $evt = array($evt_sans, $evt_avec, $min, $max);
  110. $type = 'mois';
  111. }
  112. include_spip('inc/agenda');
  113. $texte=http_calendrier_init('', $type, '', '', $url_retour?$url_retour:self(), $evt);
  114. return $texte;
  115. }
  116. function Agenda_affdate_debut_fin($date_debut, $date_fin, $horaire = 'oui', $forme=''){
  117. static $trans_tbl=NULL;
  118. if ($trans_tbl==NULL){
  119. $trans_tbl = get_html_translation_table (HTML_ENTITIES);
  120. $trans_tbl = array_flip ($trans_tbl);
  121. }
  122. $date_debut = strtotime($date_debut);
  123. $date_fin = strtotime($date_fin);
  124. $d = date("Y-m-d", $date_debut);
  125. $f = date("Y-m-d", $date_fin);
  126. $h = $horaire=='oui';
  127. $hd = date("H:i",$date_debut);
  128. $hf = date("H:i",$date_fin);
  129. $au = " " . strtolower(_T('agenda:evenement_date_au'));
  130. $du = _T('agenda:evenement_date_du') . " ";
  131. $s = "";
  132. if ($d==$f)
  133. { // meme jour
  134. $s = ucfirst(nom_jour($d,$forme))." ".affdate_jourcourt($d);
  135. if ($h){
  136. $s .= " $hd";
  137. if ($hd!=$hf) $s .= "-$hf";
  138. }
  139. }
  140. else if ((date("Y-m",$date_debut))==date("Y-m",$date_fin))
  141. { // meme annee et mois, jours differents
  142. if ($h){
  143. $s = $du . affdate_jourcourt($d) . " $hd";
  144. $s .= $au . affdate_jourcourt($f);
  145. if ($hd!=$hf) $s .= " $hf";
  146. }
  147. else {
  148. $s = $du . jour($d);
  149. $s .= $au . affdate_jourcourt($f);
  150. }
  151. }
  152. else if ((date("Y",$date_debut))==date("Y",$date_fin))
  153. { // meme annee, mois et jours differents
  154. $s = $du . affdate_jourcourt($d);
  155. if ($h) $s .= " $hd";
  156. $s .= $au . affdate_jourcourt($f);
  157. if ($h) $s .= " $hf";
  158. }
  159. else
  160. { // tout different
  161. $s = $du . affdate($d);
  162. if ($h)
  163. $s .= " ".date("(H:i)",$date_debut);
  164. $s .= $au . affdate($f);
  165. if ($h)
  166. $s .= " ".date("(H:i)",$date_fin);
  167. }
  168. return unicode2charset(charset2unicode(strtr($s,$trans_tbl),''));
  169. }
  170. function Agenda_dateplus($date,$secondes,$format){
  171. $date = strtotime($date)+eval("return $secondes;"); // permet de passer une expression
  172. return date($format,$date);
  173. }
  174. // decale les mois de la date.
  175. // cette fonction peut raboter le jour si le nouveau mois ne les contient pas
  176. // exemple 31/01/2007 + 1 mois => 28/02/2007
  177. function Agenda_moisdecal($date,$decalage,$format){
  178. include_spip('inc/filtres');
  179. $date_array = recup_date($date);
  180. if ($date_array) list($annee, $mois, $jour) = $date_array;
  181. if (!$jour) $jour=1;
  182. if (!$mois) $mois=1;
  183. $mois2 = $mois + $decalage;
  184. $date2 = mktime(1, 1, 1, $mois2, $jour, $annee);
  185. // mois normalement attendu
  186. $mois3 = date('m', mktime(1, 1, 1, $mois2, 1, $annee));
  187. // et si le mois de la nouvelle date a moins de jours...
  188. $mois2 = date('m', $date2);
  189. if ($mois2 - $mois3) $date2 = mktime(1, 1, 1, $mois2, 0, $annee);
  190. return date($format, $date2);
  191. }
  192. ?>