PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/tags/sarkaspip/sarkaspip_305/public/sarkaspip_balises.php

https://bitbucket.org/pombredanne/spip-zone-treemap
PHP | 248 lines | 163 code | 33 blank | 52 comment | 54 complexity | 722fdac29b9e5460d69c40ca9f938735 MD5 | raw file
  1. <?php
  2. // =======================================================================================================================================
  3. // Balise : #VERSION_SQUELETTE
  4. // =======================================================================================================================================
  5. // Auteur: SarkASmeL
  6. // Fonction : affiche la version utilise du squelette variable globale $version_squelette
  7. // =======================================================================================================================================
  8. //
  9. function balise_VERSION_SQUELETTE($p) {
  10. $p->code = 'calcul_version_squelette()';
  11. $p->interdire_scripts = false;
  12. return $p;
  13. }
  14. function calcul_version_squelette() {
  15. $version = NULL;
  16. if (lire_fichier(_DIR_PLUGIN_SARKASPIP.'/plugin.xml', $contenu)
  17. && preg_match('/<version>(.*?)<\/version>/', $contenu, $match))
  18. $version .= trim($match[1]);
  19. $revision = version_svn_courante(_DIR_PLUGIN_SARKASPIP);
  20. if ($revision > 0)
  21. $version .= ' ['.strval($revision).']';
  22. else if ($revision < 0)
  23. $version .= ' ['.strval(abs($revision)).'&nbsp;<strong>svn</strong>]';
  24. return $version;
  25. }
  26. // =======================================================================================================================================
  27. // Balise : #VERSION_PHP
  28. // =======================================================================================================================================
  29. // Auteur: SarkASmeL
  30. // Fonction : affiche la version utilise du squelette variable globale $version_squelette
  31. // =======================================================================================================================================
  32. //
  33. function balise_VERSION_PHP($p) {
  34. $p->code = 'phpversion()';
  35. $p->interdire_scripts = false;
  36. return $p;
  37. }
  38. // =======================================================================================================================================
  39. // Balise : #VISITEURS_CONNECTES
  40. // =======================================================================================================================================
  41. // Auteur: SarkASmeL (base sur le plugin Nombre de visiteurs connectes)
  42. // Fonction : affiche le nombre de visiteurs en cours de connection sur le site
  43. // Parametre: aucun
  44. // =======================================================================================================================================
  45. //
  46. function balise_VISITEURS_CONNECTES($p) {
  47. $p->code = 'calcul_visiteurs_connectes()';
  48. $p->statut = 'php';
  49. return $p;
  50. }
  51. function calcul_visiteurs_connectes() {
  52. $nb = count(preg_files(_DIR_TMP.'visites/','.'));
  53. return $nb;
  54. }
  55. // =======================================================================================================================================
  56. // Balise : #VISITES_SITE
  57. // =======================================================================================================================================
  58. // Auteur: SarkASmeL
  59. // Fonction : affiche le nombre de visites sur le site pour le jour courant, la veille ou depuis le debut
  60. // Parametre: aujourdhui, hier, depuis_debut (ou vide)
  61. // =======================================================================================================================================
  62. //
  63. function balise_VISITES_SITE($p) {
  64. $jour = interprete_argument_balise(1,$p);
  65. $jour = isset($jour) ? str_replace('\'', '"', $jour) : '"depuis_debut"';
  66. $p->code = 'calcul_visites_site('.$jour.')';
  67. $p->statut = 'php';
  68. return $p;
  69. }
  70. function calcul_visites_site($j) {
  71. $visites = 0;
  72. if ( $j == 'aujourdhui' ) {
  73. $auj = date('Y-m-d',strtotime(date('Y-m-d')));
  74. $select = array('visites');
  75. $from = array('spip_visites');
  76. $where = array("date=".sql_quote($auj));
  77. $result = sql_select($select, $from, $where);
  78. if ($row = sql_fetch($result)) {
  79. $visites = $row['visites'];
  80. }
  81. }
  82. else if ( $j == 'hier' ) {
  83. $hier = date('Y-m-d',strtotime(date('Y-m-d')) - 3600*24);
  84. $select = array('visites');
  85. $from = array('spip_visites');
  86. $where = array("date=".sql_quote($hier));
  87. $result = sql_select($select, $from, $where);
  88. if ($row = sql_fetch($result)) {
  89. $visites = $row['visites'];
  90. }
  91. }
  92. else {
  93. $select = array('SUM(visites) AS total_absolu');
  94. $from = array('spip_visites');
  95. $result = sql_select($select, $from);
  96. if ($row = sql_fetch($result)) {
  97. $visites = $row['total_absolu'];
  98. if ($visites == NULL) $visites=0;
  99. }
  100. }
  101. return $visites;
  102. }
  103. // =======================================================================================================================================
  104. // Balise : #AUJOURDHUI
  105. // =======================================================================================================================================
  106. // Auteur: SarkASmeL
  107. // Fonction : retourne la date du jour independamment du contexte d'appel
  108. // =======================================================================================================================================
  109. //
  110. function balise_AUJOURDHUI($p) {
  111. $p->code = 'date("Y-m-d H:i")';
  112. $p->statut = 'php';
  113. return $p;
  114. }
  115. // =======================================================================================================================================
  116. // Balise : #RACINE_SPECIALISEE et BRANCHE_SPECIALISEE
  117. // =======================================================================================================================================
  118. // Auteur: SarkASmeL
  119. // Fonction : retourne la valeur de l'ID de la rubrique demandee ou de toutes les rubriques specialisees sous forme de regex
  120. // Pour creer une nouvelle rubrique specialisee il suffit de rajouter un mot dans le tableau des mots reserves ($mots_reserves)
  121. // =======================================================================================================================================
  122. //
  123. function balise_RACINE_SPECIALISEE($p) {
  124. $mot_rubrique = interprete_argument_balise(1,$p);
  125. $mot_rubrique = isset($mot_rubrique) ? str_replace('\'', '"', $mot_rubrique) : '""';
  126. $critere = interprete_argument_balise(2,$p);
  127. $critere = isset($critere) ? str_replace('\'', '"', $critere) : '"in"';
  128. $mode = "secteur";
  129. $p->code = 'calcul_rubrique_specialisee('.strtolower($mot_rubrique).','.$mode.','.$critere.')';
  130. $p->interdire_scripts = false;
  131. return $p;
  132. }
  133. function balise_BRANCHE_SPECIALISEE($p) {
  134. $mot_rubrique = interprete_argument_balise(1,$p);
  135. $mot_rubrique = isset($mot_rubrique) ? str_replace('\'', '"', $mot_rubrique) : '""';
  136. $critere = interprete_argument_balise(2,$p);
  137. $critere = isset($critere) ? str_replace('\'', '"', $critere) : '"in"';
  138. $mode = "branche";
  139. $p->code = 'calcul_rubrique_specialisee('.strtolower($mot_rubrique).','.$mode.','.$critere.')';
  140. $p->interdire_scripts = false;
  141. return $p;
  142. }
  143. function calcul_rubrique_specialisee($mot_rubrique, $mode, $critere) {
  144. // On calcule la liste des mots reserves SarkaSPIP + definis par l'utilisateur
  145. $mots_reserves = explode(':', _SARKASPIP_MOT_SECTEURS_SPECIALISES);
  146. if (defined('_PERSO_MOT_SECTEURS_SPECIALISES'))
  147. if (_PERSO_MOT_SECTEURS_SPECIALISES != '')
  148. $mots_reserves = array_merge($mots_reserves, explode(':', _PERSO_MOT_SECTEURS_SPECIALISES));
  149. $types_reserves = explode(':', _SARKASPIP_TYPE_SECTEURS_SPECIALISES);
  150. if (defined('_PERSO_TYPE_SECTEURS_SPECIALISES'))
  151. if (_PERSO_TYPE_SECTEURS_SPECIALISES != '')
  152. $types_reserves = array_merge($types_reserves, explode(':', _PERSO_TYPE_SECTEURS_SPECIALISES));
  153. $fonds_reserves = explode(':', _SARKASPIP_FOND_SECTEURS_SPECIALISES);
  154. if (defined('_PERSO_FOND_SECTEURS_SPECIALISES'))
  155. if (_PERSO_FOND_SECTEURS_SPECIALISES != '')
  156. $fonds_reserves = array_merge($fonds_reserves, explode(':', _PERSO_FOND_SECTEURS_SPECIALISES));
  157. // Determination de la liste des mots cles associes aux secteurs specialises demandes par la balise
  158. $id = NULL;
  159. $mots = explode(':', $mot_rubrique);
  160. if ($critere == "not_in") {
  161. $mots = array_diff($mots_reserves, $mots);
  162. sort($mots);
  163. }
  164. if (!$mots[0]) $mots = $mots_reserves;
  165. // Si on est en en mode secteur (ie. balise #RACINE_SPECIALISEE) et qu'on demande un seul secteur specialise
  166. // on renvoie une valeur; sinon on renvoie toujours une regexp
  167. $comparaison_valeur = (($mode == 'secteur') && ($mots[0] == $mot_rubrique)) ? true : false;
  168. // Calcul de la balise
  169. reset($mots_reserves);
  170. while (list($cle, $valeur) = each($mots_reserves)) {
  171. if ( in_array($valeur, $mots)) {
  172. if ($id != NULL) $id .= '|';
  173. $id .= strval(calcul_rubrique($valeur, $types_reserves[$cle], $fonds_reserves[$cle], $mode));
  174. }
  175. }
  176. if (!$comparaison_valeur) $id = '^('.$id.')$';
  177. return $id;
  178. }
  179. function calcul_rubrique($mot, $type, $fond, $mode='rubrique') {
  180. $id_rubrique = 0;
  181. if (!$mot)
  182. return $id_rubrique;
  183. // On recupere le secteur de base soit via la methode du mot-cle, soit par la config
  184. if ($type == 'motcle') {
  185. $select = array('id_rubrique');
  186. $from = array('spip_mots_rubriques AS t1', 'spip_mots AS t2', 'spip_groupes_mots AS t3');
  187. $where = array('t3.titre='.sql_quote('squelette_habillage'),
  188. 't3.id_groupe=t2.id_groupe',
  189. 't2.titre='.sql_quote($mot),
  190. 't2.id_mot=t1.id_mot');
  191. $result = sql_select($select, $from, $where);
  192. if ($row = sql_fetch($result)) {
  193. $id_rubrique = $row['id_rubrique'];
  194. }
  195. }
  196. else if ($type == 'config') {
  197. if (function_exists('lire_config')) {
  198. $valeur = lire_config($fond.'/rubrique_'.$mot);
  199. if (($valeur != NULL) && ($valeur > 0)) $id_rubrique = $valeur;
  200. }
  201. }
  202. // Si on est en mode branche on retourne les rubriques de la branche, sinon uniquement le secteur recupere precedemment
  203. if (( $id_rubrique != 0) && ($mode == 'branche')) {
  204. $select = array('id_rubrique');
  205. $from = array('spip_rubriques AS t1');
  206. $where = array('t1.id_secteur='.sql_quote($id_rubrique));
  207. $result = sql_select($select, $from, $where);
  208. $secteur = $id_rubrique;
  209. while ($row = sql_fetch($result)) {
  210. if ($row['id_rubrique'] != $secteur) $id_rubrique .= '|'.$row['id_rubrique'];
  211. }
  212. }
  213. return $id_rubrique;
  214. }
  215. ?>