sites_pipelines.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  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. * Ajouter les sites et syndication a valider sur les rubriques
  14. *
  15. * @param array $flux
  16. * @return array
  17. */
  18. function sites_rubrique_encours($flux){
  19. if ($flux['args']['type'] == 'rubrique') {
  20. $lister_objets = charger_fonction('lister_objets','inc');
  21. $id_rubrique = $flux['args']['id_objet'];
  22. //
  23. // Les sites references a valider
  24. //
  25. if ($GLOBALS['meta']['activer_sites'] != 'non') {
  26. $flux['data'] .= $lister_objets('sites',array('titre'=> _T('sites:info_site_valider') ,'statut'=>'prop','id_rubrique'=>$id_rubrique, 'par'=>'nom_site'));
  27. }
  28. //
  29. // Les sites a probleme
  30. //
  31. if ($GLOBALS['meta']['activer_sites'] != 'non'
  32. AND autoriser('publierdans','rubrique',$id_rubrique)) {
  33. $flux['data'] .= $lister_objets('sites',array('titre'=> _T('sites:avis_sites_syndiques_probleme') ,'statut'=>'publie', 'syndication'=>array('off','sus'),'id_rubrique'=>$id_rubrique, 'par'=>'nom_site'));
  34. }
  35. // Les articles syndiques en attente de validation
  36. if ($id_rubrique == 0
  37. AND autoriser('publierdans','rubrique',$id_rubrique)) {
  38. $cpt = sql_countsel("spip_syndic_articles", "statut='dispo'");
  39. if ($cpt)
  40. $flux['data'] .= "<br /><small><a href='" .
  41. generer_url_ecrire("sites") .
  42. "' style='color: black;'>" .
  43. $cpt .
  44. " " .
  45. _T('sites:info_liens_syndiques_1') .
  46. " " .
  47. _T('sites:info_liens_syndiques_2') .
  48. "</a></small>";
  49. }
  50. }
  51. return $flux;
  52. }
  53. /**
  54. * Configuration des contenus
  55. * @param array $flux
  56. * @return array
  57. */
  58. function sites_affiche_milieu($flux){
  59. if ($flux["args"]["exec"] == "configurer_contenu") {
  60. $flux["data"] .= recuperer_fond('prive/squelettes/inclure/configurer',array('configurer'=>'configurer_sites'));
  61. }
  62. return $flux;
  63. }
  64. /**
  65. * Ajouter les sites et syndication a valider sur la page d'accueil
  66. *
  67. * @param array $flux
  68. * @return array
  69. */
  70. function sites_accueil_encours($flux){
  71. $lister_objets = charger_fonction('lister_objets','inc');
  72. //
  73. // Les sites references a valider
  74. //
  75. if ($GLOBALS['meta']['activer_sites'] != 'non') {
  76. $flux .= $lister_objets('sites',array('titre'=>afficher_plus_info(generer_url_ecrire('sites')). _T('sites:info_site_valider') ,'statut'=>'prop', 'par'=>'nom_site'));
  77. }
  78. if ($GLOBALS['visiteur_session']['statut'] == '0minirezo') {
  79. //
  80. // Les sites a probleme
  81. //
  82. if ($GLOBALS['meta']['activer_sites'] != 'non') {
  83. $flux .= $lister_objets('sites',array('titre'=>afficher_plus_info(generer_url_ecrire('sites')). _T('sites:avis_sites_syndiques_probleme') ,'statut'=>'publie', 'syndication'=>array('off','sus'), 'par'=>'nom_site'));
  84. }
  85. // Les articles syndiques en attente de validation
  86. $cpt = sql_countsel("spip_syndic_articles", "statut='dispo'");
  87. if ($cpt)
  88. $flux .= "\n<br /><small><a href='"
  89. . generer_url_ecrire("sites","")
  90. . "' style='color: black;'>"
  91. . $cpt
  92. . " "
  93. . _T('sites:info_liens_syndiques_1')
  94. . " "
  95. . _T('sites:info_liens_syndiques_2')
  96. . "</a></small>";
  97. }
  98. return $flux;
  99. }
  100. /**
  101. * Ajouter les sites references sur les vues de rubriques
  102. *
  103. * @param array $flux
  104. * @return array
  105. */
  106. function sites_affiche_enfants($flux) {
  107. if ($e = trouver_objet_exec($flux['args']['exec'])
  108. AND $e['type'] == 'rubrique'
  109. AND $e['edition'] == false) {
  110. $id_rubrique = $flux['args']['id_rubrique'];
  111. if ($GLOBALS['meta']["activer_sites"] == 'oui') {
  112. $lister_objets = charger_fonction('lister_objets','inc');
  113. $bouton_sites = '';
  114. if (autoriser('creersitedans','rubrique',$id_rubrique)) {
  115. $bouton_sites .= icone_verticale(_T('sites:info_sites_referencer'), generer_url_ecrire('site_edit', "id_rubrique=$id_rubrique"), "site-24.png", "new", 'right')
  116. . "<br class='nettoyeur' />";
  117. }
  118. $flux['data'] .= $lister_objets('sites',array('titre'=>_T('sites:titre_sites_references_rubrique') ,'where'=>"statut!='refuse' AND statut != 'prop' AND syndication NOT IN ('off','sus')", 'id_rubrique'=>$id_rubrique,'par'=>'nom_site'));
  119. $flux['data'] .= $bouton_sites;
  120. }
  121. }
  122. return $flux;
  123. }
  124. /**
  125. * Definir les meta de configuration liee aux syndications et sites
  126. *
  127. * @param array $metas
  128. * @return array
  129. */
  130. function sites_configurer_liste_metas($metas){
  131. $metas['activer_sites'] = 'non';
  132. $metas['proposer_sites'] = 0;
  133. $metas['activer_syndic'] = 'oui';
  134. $metas['moderation_sites'] = 'non';
  135. return $metas;
  136. }
  137. /**
  138. * Taches periodiques de syndication
  139. *
  140. * @param array $taches_generales
  141. * @return array
  142. */
  143. function sites_taches_generales_cron($taches_generales){
  144. if ($GLOBALS['meta']["activer_syndic"] == "oui") {
  145. $taches_generales['syndic'] = 90;
  146. }
  147. return $taches_generales;
  148. }
  149. /**
  150. * Optimiser la base de donnee en supprimant les liens orphelins
  151. *
  152. * @param array $flux
  153. * @return array
  154. */
  155. function sites_optimiser_base_disparus($flux){
  156. $n = &$flux['data'];
  157. $mydate = $flux['args']['date'];
  158. sql_delete("spip_syndic", "maj < $mydate AND statut = 'refuse'");
  159. # les articles syndiques appartenant a des sites effaces
  160. $res = sql_select("S.id_syndic AS id",
  161. "spip_syndic_articles AS S
  162. LEFT JOIN spip_syndic AS syndic
  163. ON S.id_syndic=syndic.id_syndic",
  164. "syndic.id_syndic IS NULL");
  165. $n+= optimiser_sansref('spip_syndic_articles', 'id_syndic', $res);
  166. return $flux;
  167. }
  168. /**
  169. * Publier et dater les rubriques qui ont un site publie
  170. *
  171. * @param array $flux
  172. * @return array
  173. */
  174. function sites_calculer_rubriques($flux) {
  175. $r = sql_select("R.id_rubrique AS id, max(A.date) AS date_h", "spip_rubriques AS R, spip_syndic AS A", "R.id_rubrique = A.id_rubrique AND R.date_tmp <= A.date AND A.statut='publie' ", "R.id_rubrique");
  176. while ($row = sql_fetch($r))
  177. sql_updateq('spip_rubriques', array('statut_tmp'=>'publie', 'date_tmp'=>$row['date_h']),"id_rubrique=".$row['id']);
  178. return $flux;
  179. }
  180. /**
  181. * Compter les sites dans une rubrique
  182. *
  183. * @param array $flux
  184. * @return array
  185. */
  186. function sites_objet_compte_enfants($flux){
  187. if ($flux['args']['objet']=='rubrique'
  188. AND $id_rubrique=intval($flux['args']['id_objet'])) {
  189. // juste les publies ?
  190. if (array_key_exists('statut', $flux['args']) and ($flux['args']['statut'] == 'publie')) {
  191. $flux['data']['site'] = sql_countsel('spip_syndic', "id_rubrique=".intval($id_rubrique)." AND (statut='publie')");
  192. } else {
  193. $flux['data']['site'] = sql_countsel('spip_syndic', "id_rubrique=".intval($id_rubrique)." AND (statut='publie' OR statut='prop')");
  194. }
  195. }
  196. return $flux;
  197. }
  198. function sites_trig_propager_les_secteurs($flux){
  199. // reparer les sites
  200. $r = sql_select("A.id_syndic AS id, R.id_secteur AS secteur", "spip_syndic AS A, spip_rubriques AS R", "A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur");
  201. while ($row = sql_fetch($r))
  202. sql_update("spip_syndic", array("id_secteur" => $row['secteur']), "id_syndic=".$row['id']);
  203. return $flux;
  204. }
  205. /**
  206. * Afficher le nombre de sites dans chaque rubrique
  207. *
  208. * @param array $flux
  209. * @return array
  210. */
  211. function sites_boite_infos($flux){
  212. if ($flux['args']['type']=='rubrique'
  213. AND $id_rubrique = $flux['args']['id']){
  214. if ($nb = sql_countsel('spip_syndic',"statut='publie' AND id_rubrique=".intval($id_rubrique))){
  215. $nb = "<div>". singulier_ou_pluriel($nb, "info_1_site", "info_nb_sites") . "</div>";
  216. if ($p = strpos($flux['data'],"<!--nb_elements-->"))
  217. $flux['data'] = substr_replace($flux['data'],$nb,$p,0);
  218. }
  219. }
  220. return $flux;
  221. }
  222. ?>