organiseur_pipelines.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2014 *
  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')) return;
  12. /**
  13. * Lister les tables a ne pas inclure dans un export de BDD
  14. * ici se ramener a tester l'admin restreint est un abus
  15. * car cela presume qu'un admin restreint ne peut pas faire de sauvegarde
  16. * complete, alors que l'intention est d'exclure les messages
  17. * des sauvegardes partielles que peuvent realiser les admin restreint
  18. *
  19. * *a revoir*
  20. *
  21. * @param array $EXPORT_tables_noexport
  22. * @return array
  23. */
  24. function organiseur_lister_tables_noexport($EXPORT_tables_noexport){
  25. if (!$GLOBALS['connect_toutes_rubriques']){
  26. $EXPORT_tables_noexport[]='spip_messages';
  27. #$EXPORT_tables_noexport[]='spip_auteurs_liens'; // where objet='message'
  28. }
  29. return $EXPORT_tables_noexport;
  30. }
  31. /**
  32. * Optimiser les liens morts dans la base de donnees
  33. *
  34. * @param array $flux
  35. * @return array
  36. */
  37. function organiseur_optimiser_base_disparus($flux){
  38. //
  39. // Messages prives
  40. //
  41. # supprimer les messages lies a un auteur disparu
  42. $res = sql_select("M.id_message AS id",
  43. "spip_messages AS M
  44. LEFT JOIN spip_auteurs AS A
  45. ON A.id_auteur=M.id_auteur",
  46. "A.id_auteur IS NULL");
  47. $flux['data'] += optimiser_sansref('spip_messages', 'id_message', $res);
  48. return $flux;
  49. }
  50. /**
  51. * Generer les alertes message recu a destination de l'auteur
  52. * concerne par l'appel
  53. *
  54. * @param array $flux
  55. * @return array
  56. */
  57. function organiseur_alertes_auteur($flux) {
  58. $id_auteur = $flux['args']['id_auteur'];
  59. $result_messages = sql_allfetsel("M.id_message", "spip_messages AS M LEFT JOIN spip_auteurs_liens AS L ON (L.objet='message' AND L.id_objet=M.id_message)", "L.id_auteur=".intval($id_auteur)." AND vu='non' AND statut='publie' AND type='normal'");
  60. $total_messages = count($result_messages);
  61. if ($total_messages == 1) {
  62. $row = reset($result_messages);
  63. $id_message=$row['id_message'];
  64. $flux['data'][] = "<a href='" . generer_url_ecrire("message","id_message=$id_message") . "'>"._T('organiseur:info_1_message_nonlu')."</a>";
  65. }
  66. elseif ($total_messages > 1)
  67. $flux['data'][] = "<a href='" . generer_url_ecrire("messages") . "'>"._T('organiseur:info_nb_messages_nonlus', array('nb' => $total_messages))."</a>";
  68. return $flux;
  69. }
  70. /**
  71. * Afficher les interventions et objets en lien
  72. * avec un auteur (sur sa page)
  73. *
  74. * @param array $flux
  75. * @return array
  76. */
  77. function organiseur_affiche_auteurs_interventions($flux){
  78. if ($id_auteur = intval($flux['args']['id_auteur'])){
  79. include_spip('inc/message_select');
  80. // Messages de l'auteur et discussions en cours
  81. if ($GLOBALS['meta']['messagerie_agenda'] != 'non'
  82. AND $id_auteur != $GLOBALS['visiteur_session']['id_auteur']
  83. AND autoriser('ecrire', '', '', $flux['args']['auteur'])
  84. ) {
  85. $flux['data'] .= recuperer_fond('prive/squelettes/inclure/organiseur-interventions',array('id_auteur'=>$id_auteur));
  86. }
  87. }
  88. return $flux;
  89. }
  90. /**
  91. * Declarer les metas de configuration de l'agenda/messagerie
  92. * @param array $metas
  93. * @return array
  94. */
  95. function organiseur_configurer_liste_metas($metas){
  96. $metas['messagerie_agenda'] = 'oui';
  97. return $metas;
  98. }
  99. /**
  100. * Inserer la css de l'agenda dans l'espace prive (hum)
  101. * @param string $head
  102. * @return string
  103. */
  104. function organiseur_header_prive($head){
  105. // CSS calendrier
  106. if ($GLOBALS['meta']['messagerie_agenda'] != 'non')
  107. $head .= '<link rel="stylesheet" type="text/css" href="'
  108. . url_absolue(find_in_path('calendrier.css')) .'" />' . "\n";
  109. return $head;
  110. }
  111. /**
  112. * Afficher agenda, messages et annonces sur la page d'accueil
  113. *
  114. * @param array $flux
  115. * @return array
  116. */
  117. function organiseur_affiche_droite($flux){
  118. if ($flux['args']['exec']=='accueil'){
  119. $flux['data'] .= recuperer_fond(
  120. 'prive/squelettes/inclure/organiseur-rappels',
  121. array(
  122. 'id_auteur'=>$GLOBALS['visiteur_session']['id_auteur'],
  123. 'last' => $GLOBALS['visiteur_session']['quand'],
  124. )
  125. );
  126. }
  127. return $flux;
  128. }
  129. /**
  130. * Afficher le formulaire de configuration sur la page concernee
  131. *
  132. * @param array $flux
  133. * @return array
  134. */
  135. function organiseur_affiche_milieu($flux){
  136. if ($flux['args']['exec']=='configurer_interactions'){
  137. $c = recuperer_fond('prive/squelettes/inclure/configurer_messagerie',array());
  138. if ($p = strpos($flux['data'],'<!--contenu_prive-->'))
  139. $flux['data'] = substr_replace($flux['data'],$c,$p,0);
  140. else
  141. $flux['data'] .= $c;
  142. }
  143. return $flux;
  144. }
  145. /**
  146. * Diffuser un message qui passe en publie (== a envoyer)
  147. *
  148. * @param array $flux
  149. * @return array
  150. */
  151. function organiseur_post_edition($flux){
  152. if ($flux['args']['table']=='spip_messages'
  153. AND $flux['args']['action']=='instituer'
  154. AND $flux['data']['statut']=='publie'
  155. AND $flux['args']['statut_ancien']!='publie'
  156. ){
  157. $id_message = $flux['args']['id_objet'];
  158. $row = sql_fetsel('destinataires,id_auteur,titre,texte','spip_messages','id_message='.intval($id_message));
  159. if ($row){
  160. include_spip('inc/messages');
  161. list($auteurs_dest,$email_dests) = messagerie_destiner(explode(',',$row['destinataires']));
  162. // diffuser le message en interne
  163. messagerie_diffuser_message($id_message, $auteurs_dest);
  164. // diffuser le message en externe
  165. messagerie_mailer_message($id_message, $email_dests);
  166. }
  167. }
  168. return $flux;
  169. }