You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

188 lines
5.2 KiB

  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2020 *
  6. * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. if (!defined('_ECRIRE_INC_VERSION')) {
  12. return;
  13. }
  14. function critere_MESSAGES_destinataire_dist($idb, &$boucles, $crit) {
  15. $boucle = &$boucles[$idb];
  16. $_auteur = calculer_liste($crit->param[0], array(), $boucles, $boucle->id_parent);
  17. $boucle->join['auteurs_liens'] = array(
  18. "'" . $boucle->id_table . "'",
  19. "'id_objet'",
  20. "'" . $boucle->primary . "'",
  21. "'auteurs_liens.objet=\'message\' AND auteurs_liens.id_auteur='.intval($_auteur)"
  22. );
  23. $boucle->from['auteurs_liens'] = 'spip_auteurs_liens';
  24. $boucle->from_type['auteurs_liens'] = 'LEFT';
  25. $where =
  26. array(
  27. "'OR'",
  28. array(
  29. "'AND'",
  30. array("'!='", "'" . $boucle->id_table . ".id_auteur'", "intval($_auteur)"),
  31. array(
  32. "'AND'",
  33. array("'='", "'auteurs_liens.id_auteur'", "intval($_auteur)"),
  34. array("'!='", "'auteurs_liens.vu'", "'\'poub\''"),
  35. ),
  36. ),
  37. array(
  38. "'OR'",
  39. array("'='", "'" . $boucle->id_table . ".type'", "sql_quote('affich')"),
  40. array(
  41. "'AND'",
  42. array("'='", "'" . $boucle->id_table . ".type'", "sql_quote('pb')"),
  43. array("'='", "'" . $boucle->id_table . ".id_auteur'", "intval($_auteur)"),
  44. )
  45. )
  46. );
  47. $not = $crit->not;
  48. if ($crit->cond) {
  49. $where = array("'?'", "strlen($_auteur)", $where, "'1=1'");
  50. }
  51. if ($not) {
  52. $where = array("'NOT'", $where);
  53. }
  54. $boucle->where[] = $where;
  55. }
  56. function critere_MESSAGES_non_lu_dist($idb, &$boucles, $crit) {
  57. $boucle = &$boucles[$idb];
  58. $boucle->where[] =
  59. array(
  60. "'OR'",
  61. "'auteurs_liens.vu IS NULL'",
  62. "sql_in('auteurs_liens.vu',array('poub','oui'),'NOT',\$connect)"
  63. );
  64. }
  65. /**
  66. * Fonction privee pour mutualiser de code des criteres_MESSAGES_rv_*
  67. * Retourne le code php pour obtenir la date de reference de comparaison
  68. * des evenements a trouver
  69. *
  70. * @param string $idb
  71. * @param object $boucles
  72. * @param object $crit
  73. *
  74. * @return string code PHP concernant la date.
  75. **/
  76. function organiseur_calculer_date_reference($idb, &$boucles, $crit) {
  77. if (isset($crit->param[0])) {
  78. return calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
  79. } else {
  80. return "date('Y-m-d H:i:00')";
  81. }
  82. }
  83. /**
  84. * {rv_a_venir}
  85. * {rv_a_venir #ENV{date}}
  86. *
  87. * @param string $idb
  88. * @param object $boucles
  89. * @param object $crit
  90. */
  91. function critere_MESSAGES_rv_a_venir_dist($idb, &$boucles, $crit) {
  92. $boucle = &$boucles[$idb];
  93. $id_table = $boucle->id_table;
  94. $_dateref = organiseur_calculer_date_reference($idb, $boucles, $crit);
  95. $_date = "$id_table." . (isset($boucle->show['date']) ? $boucle->show['date'] : 'date_debut');
  96. $op = $crit->not ? '<=' : '>';
  97. $where = array("'$op'", "'$_date'", "sql_quote($_dateref)");
  98. $boucle->where[] = $where;
  99. }
  100. /**
  101. * {rv_passe}
  102. * {rv_passe #ENV{date}}
  103. *
  104. * @param string $idb
  105. * @param object $boucles
  106. * @param object $crit
  107. */
  108. function critere_MESSAGES_rv_passe_dist($idb, &$boucles, $crit) {
  109. $boucle = &$boucles[$idb];
  110. $id_table = $boucle->id_table;
  111. $_dateref = organiseur_calculer_date_reference($idb, $boucles, $crit);
  112. $_date = "$id_table.date_fin";
  113. $op = $crit->not ? '>=' : '<';
  114. $where = array("'$op'", "'$_date'", "sql_quote($_dateref)");
  115. $boucle->where[] = $where;
  116. }
  117. /**
  118. * {rv_en_cours}
  119. * {rv_en_cours #ENV{date}}
  120. *
  121. * @param string $idb
  122. * @param object $boucles
  123. * @param object $crit
  124. */
  125. function critere_MESSAGES_rv_en_cours_dist($idb, &$boucles, $crit) {
  126. $boucle = &$boucles[$idb];
  127. $id_table = $boucle->id_table;
  128. $_dateref = organiseur_calculer_date_reference($idb, $boucles, $crit);
  129. $_date_debut = "$id_table." . (isset($boucle->show['date']) ? $boucle->show['date'] : 'date_debut');
  130. $_date_fin = "$id_table.date_fin";
  131. $where =
  132. array(
  133. "'AND'",
  134. array("'<='", "'$_date_debut'", "sql_quote($_dateref)"),
  135. array("'>='", "'$_date_fin'", "sql_quote($_dateref)")
  136. );
  137. if ($crit->not) {
  138. $where = array("'NOT'", $where);
  139. }
  140. $boucle->where[] = $where;
  141. }
  142. function organiseur_icone_message($type, $taille = 24) {
  143. $icone = array('pb' => 'pensebete', 'affich' => 'annonce');
  144. $icone = isset($icone[$type]) ? $icone[$type] : 'message';
  145. return "$icone-$taille.png";
  146. }
  147. function organiseur_texte_modifier_message($type) {
  148. $texte = array('pb' => 'organiseur:icone_modifier_pensebete', 'affich' => 'organiseur:icone_modifier_annonce');
  149. $texte = isset($texte[$type]) ? $texte[$type] : 'organiseur:icone_modifier_message';
  150. return _T($texte);
  151. }
  152. function organiseur_texte_nouveau_message($type) {
  153. $texte = array(
  154. 'pb' => 'organiseur:icone_ecrire_nouveau_pensebete',
  155. 'affich' => 'organiseur:icone_ecrire_nouvelle_annonce'
  156. );
  157. $texte = isset($texte[$type]) ? $texte[$type] : 'organiseur:icone_ecrire_nouveau_message';
  158. return _T($texte);
  159. }