PageRenderTime 42ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/_plugins_/sedna/branches/v1/sedna_options.php

https://bitbucket.org/pombredanne/spip-zone-treemap
PHP | 183 lines | 160 code | 14 blank | 9 comment | 15 complexity | 74ae0ed5b4ffcb19a57b4519d8f4a9aa MD5 | raw file
  1. <?php
  2. if (!defined("_ECRIRE_INC_VERSION")) return;
  3. if (preg_match(',&age=([0-9]+)&age=([0-9]+),',$_SERVER['REQUEST_URI'],$regs)){
  4. url_de_base();
  5. $url = parametre_url(self(),'age',$regs[1],'&');
  6. include_spip('inc/headers');
  7. redirige_par_entete($url);
  8. }
  9. if($var_color=_request('var_color')) {
  10. include_spip('inc/cookie');
  11. spip_setcookie('sedna_color', $var_color, time()+365*24*3600);
  12. $_COOKIE['sedna_color'] = $var_color;
  13. }
  14. $GLOBALS['marqueur'].=isset($_COOKIE['sedna_color'])?(":".$_COOKIE['sedna_color']):"";
  15. function sedna_utils(){
  16. $GLOBALS['forcer_lang']= true;
  17. // Descriptifs : affiches ou masques ?
  18. // l'accessibilite sans javascript => affiches par defaut
  19. if ($_COOKIE['sedna_style'] == 'masquer') {
  20. $class_desc = "desc_masquer";
  21. } else {
  22. $class_desc = "desc_afficher";
  23. }
  24. // l'identifiant du lien est fonction de son url et de sa date
  25. // ce qui permet de reperer les "updated" *et* les doublons
  26. include_spip('inc/filtres');
  27. function afficher_lien(
  28. $id_syndic_article,
  29. $id_lien,
  30. $id_syndic,
  31. $date,
  32. $url,
  33. $titre,
  34. $lesauteurs,
  35. $desc,
  36. $lang
  37. ) {
  38. static $vu, $lus, $ferme_ul, $id, $iddesc;
  39. global $ex_syndic, $class_desc;
  40. // Articles a ignorer
  41. if (!_request('id_syndic')
  42. AND $_COOKIE['sedna_ignore_'.$id_syndic])
  43. return;
  44. // initialiser la liste des articles lus
  45. if (!is_array($lus))
  46. $lus = array_flip(explode('-', '-'.$_COOKIE['sedna_lu']));
  47. if ($vu[$id_lien]++) return;
  48. // regler la classe des liens, en fonction du cookie sedna_lu
  49. $class_link = $lus[$id_lien] ? 'vu' : '';
  50. if (unique(substr($date,0,10)))
  51. $affdate = '<h1 class="date">'
  52. .jour($date).' '.nom_mois($date).'</h1>';
  53. // indiquer un intertitre si on change de source ou de date
  54. if ($affdate OR ($id_syndic != $ex_syndic)) {
  55. echo $ferme_ul; $ferme_ul="</ul>\n";
  56. echo $affdate;
  57. }
  58. // Suite intertitres
  59. if ($affdate OR ($id_syndic != $ex_syndic)) {
  60. echo "<h2 id='site${id_syndic}_".(++$id)."'
  61. onmouseover=\"getElementById('url".$id."').className='urlsiteon';\"
  62. onmouseout=\"getElementById('url".$id."').className='urlsite';\"
  63. >";
  64. $link = parametre_url(self(),'id_syndic',$id_syndic);
  65. if ($age = intval($GLOBALS['age']))
  66. $link = parametre_url($link,'age',$age);
  67. echo "<a href=\"$link\">".$GLOBALS['nom_site_'.$id_syndic]
  68. ."</a>";
  69. echo " <a class=\"urlsite\"
  70. href=\""
  71. .$GLOBALS['url_site_'.$id_syndic]
  72. .'" id="url'.$id.'">'
  73. .$GLOBALS['url_site_'.$id_syndic]
  74. ."</a>";
  75. echo "</h2>\n<ul>\n";
  76. $ex_syndic = $id_syndic;
  77. }
  78. echo "<li class='hentry'";
  79. if (!$_GET['id_syndic'] AND !strlen($_GET['recherche']))
  80. echo " id='item${id_syndic}_${id_syndic_article}'";
  81. echo " onmousedown=\"jai_lu('$id_lien');\">\n",
  82. # "<small>".affdate($date,'H:i')."</small>",
  83. "<abbr class='published updated'
  84. title='".date_iso($date)."'>".affdate($date,'H:i')."</abbr>",
  85. "<div class=\"titre\">",
  86. "<a href=\"$url\"
  87. title=\"$url\"
  88. class=\"link$class_link\"
  89. id=\"news$id_lien\"
  90. rel=\"bookmark\"";
  91. if ($lang) echo " hreflang=\"$lang\"";
  92. echo ">",
  93. "<span class=\"entry-title\">", # le "title" du microformat hAtom.hfeed.hentry
  94. $titre, "</span></a>",
  95. $lesauteurs,
  96. "\n<span class=\"source\"><a href=\"",
  97. $GLOBALS['url_site_'.$id_syndic]."\">",
  98. $GLOBALS['nom_site_'.$id_syndic]."</a></span>\n",
  99. "</div>\n";
  100. if ($desc)
  101. echo "<div class=\"desc\">",
  102. "<div class=\"$class_desc\" id=\"desc_".(++$iddesc)."\">\n",
  103. "<span class=\"entry-summary\">", $desc, "</span>\n",
  104. '</div></div>';
  105. echo "\n</li>\n";
  106. }
  107. // Si synchro active il faut comparer le contenu du cookie et ce
  108. // qu'on a stocke dans le champ spip_auteurs.sedna (a creer au besoin)
  109. $synchro = '';
  110. if ($_COOKIE['sedna_synchro'] == 'oui'
  111. AND $id = $GLOBALS['visiteur_session']['id_auteur']) {
  112. // Recuperer ce qu'on a stocke
  113. if (!$s = sql_fetsel("sedna","spip_auteurs","id_auteur=$id")) {
  114. // creer le champ sedna si ce n'est pas deja fait
  115. sql_alter("TABLE spip_auteurs ADD sedna TEXT NOT NULL DEFAULT ''");
  116. }
  117. $champ = $champ['sedna'];
  118. // mixer avec le cookie en conservant un ordre chronologique
  119. if ($_COOKIE['sedna_lu'] <> $champ) {
  120. $lus_cookie = preg_split(',[- +],',$_COOKIE['sedna_lu']);
  121. $lus_champ = preg_split(',[- +],',$champ);
  122. $lus = array();
  123. while (count($lus_cookie) OR count($lus_champ)) {
  124. if ($a = array_shift($lus_cookie))
  125. $lus[$a] = true;
  126. if ($a = array_shift($lus_champ))
  127. $lus[$a] = true;
  128. }
  129. $lus = substr(join('-', array_keys($lus)),0,3000); # 3ko maximum
  130. // Mettre la base a jour
  131. sql_updateq("spip_auteurs",array('sedna',$lus),"id_auteur=$id");
  132. $synchro = ' *';
  133. // Si le cookie n'est pas a jour, on l'update sur le brouteur
  134. if ($lus <> $_COOKIE['sedna_lu']) {
  135. include_spip('inc/cookie');
  136. spip_setcookie('sedna_lu', $lus,
  137. time()+365*24*3600);
  138. $_COOKIE['sedna_lu'] = $lus;
  139. // Signaler que la synchro a eu lieu
  140. $synchro = ' &lt;&lt;';
  141. }
  142. }
  143. }
  144. // forcer le refresh ?
  145. if ($id = intval(_request('refresh'))) {
  146. include_spip('genie/syndic');
  147. spip_touch(_DIR_TMP.'syndic.lock');
  148. syndic_a_jour($id);
  149. }
  150. // Calcul du delais optimal (on est tjs a jour, mais quand meme en cache)
  151. // valeur max = 15 minutes (900s) (et on hacke #ENV{max_maj} pour affichage
  152. // de "Derniere syndication..." en pied de page).
  153. $GLOBALS['sedna_max_maj'] = @filemtime(_DIR_TMP.'syndic.lock');
  154. if ($GLOBALS['sedna_max_maj'] > lire_meta('derniere_modif')) {
  155. include_spip('inc/meta');
  156. ecrire_meta('derniere_modif', $GLOBALS['sedna_max_maj']);
  157. ecrire_metas();
  158. }
  159. $GLOBALS['sedna_max_maj'] = date('Y-m-d H:i:s', $GLOBALS['sedna_max_maj']); # format SPIP
  160. }
  161. ?>