1 | <?php |
---|
2 | |
---|
3 | // MiniGriSpip 1.6.0 - 2007 (c) FredoMkb |
---|
4 | |
---|
5 | |
---|
6 | function nombre_articles_rubrique($id_rubrique) { |
---|
7 | // Fonction pour retourner le nombre d'articles publies existants dans une rubrique ($id_rubrique) |
---|
8 | |
---|
9 | global $table_prefix; // Pour pouvoir utiliser des prefixes personnalises autres que "spip" |
---|
10 | $requete = mysql_query("SELECT id_article FROM ".$table_prefix."_articles WHERE id_rubrique=$id_rubrique AND statut='publie'"); |
---|
11 | $nbr = mysql_num_rows($requete); |
---|
12 | mysql_free_result($requete); |
---|
13 | return $nbr; |
---|
14 | } |
---|
15 | |
---|
16 | function numero_message_forum_article($id_article,$id_forum) { |
---|
17 | // Fonction pour retourner le numero incremental d'un message du forum ($id_forum) d'un article ($id_article) lors d'une reponse |
---|
18 | |
---|
19 | global $table_prefix; // Pour pouvoir utiliser des prefixes personnalises autres que "spip" |
---|
20 | $requete = mysql_query("SELECT id_forum FROM ".$table_prefix."_forum WHERE id_article=$id_article AND id_forum<=$id_forum AND statut='publie'"); |
---|
21 | $nbr = mysql_num_rows($requete); |
---|
22 | mysql_free_result($requete); |
---|
23 | return $nbr; |
---|
24 | } |
---|
25 | |
---|
26 | function nombre_articles_auteur($id_auteur) { |
---|
27 | // Fonction pour retourner le nombre d'articles rediges par un auteur ($id_auteur) |
---|
28 | |
---|
29 | global $table_prefix; // Pour pouvoir utiliser des prefixes personnalises autres que "spip" |
---|
30 | $requete = mysql_query("SELECT id_article FROM ".$table_prefix."_auteurs_articles WHERE id_auteur=$id_auteur"); |
---|
31 | $nbr = mysql_num_rows($requete); |
---|
32 | mysql_free_result($requete); |
---|
33 | return $nbr; |
---|
34 | } |
---|
35 | |
---|
36 | function statut_article($id_article) { |
---|
37 | // Fonction pour retourner le "statut" d'un article ($id_article) soit ('prepa', 'prop', 'publie', 'refuse', 'poubelle') |
---|
38 | |
---|
39 | global $table_prefix; // Pour pouvoir utiliser des prefixes personnalises autres que "spip" |
---|
40 | $requete = mysql_query("SELECT statut FROM ".$table_prefix."_articles WHERE id_article=$id_article"); |
---|
41 | $statuts = mysql_fetch_assoc($requete); |
---|
42 | mysql_free_result($requete); |
---|
43 | return $statuts[statut]; |
---|
44 | } |
---|
45 | |
---|
46 | function nombre_articles_publies_auteur($id_auteur) { |
---|
47 | // Fonction pour retourner le nombre d'articles publies par un auteur ($id_auteur) |
---|
48 | |
---|
49 | global $table_prefix; // Pour pouvoir utiliser des prefixes personnalises autres que "spip" |
---|
50 | $articles = array(); |
---|
51 | $requete = mysql_query("SELECT id_article FROM ".$table_prefix."_auteurs_articles WHERE id_auteur=$id_auteur"); |
---|
52 | while ($ligne = mysql_fetch_assoc($requete)) array_push($articles,$ligne); |
---|
53 | mysql_free_result($requete); |
---|
54 | $nbr = 0; |
---|
55 | foreach ($articles as $val) { |
---|
56 | $statut = statut_article($val[id_article]); |
---|
57 | if ($statut == 'publie') {$nbr += 1;}; |
---|
58 | } |
---|
59 | return $nbr; |
---|
60 | } |
---|
61 | |
---|
62 | function asciihtml($textHtml) { |
---|
63 | // Fonction pour retourner le texte Html fourni ($textHtml) converti en codes Ascii Html ($asciiHtml). |
---|
64 | // Exemple d'utilisation : [(#TEXT|asciihtml)] |
---|
65 | // Petite adaptation d'un code issu d'une contribution sur Spip'Contrib proposee par Jean Luc Girard et Coyote, merci a eux. |
---|
66 | // Voir : <https://contrib.spip.net/Crypter-une-adresse-email> |
---|
67 | |
---|
68 | $asciiHtml = ''; |
---|
69 | for ($i = 0; $i < strlen($textHtml); $i++) { |
---|
70 | $asciiHtml .= '&#'.ord($textHtml[$i]).';'; |
---|
71 | } |
---|
72 | return $asciiHtml; |
---|
73 | } |
---|
74 | |
---|
75 | function fileofurl($theUrl) { |
---|
76 | // Fonction pour retourner le nom du document pointe par une adresse Url. |
---|
77 | $docNomList = explode("/", $theUrl); |
---|
78 | $docNom = $docNomList[sizeof($docNomList)-1]; |
---|
79 | return $docNom; |
---|
80 | } |
---|
81 | |
---|
82 | |
---|
83 | function nombre_publications_date($dateStart,$dateEnd) { |
---|
84 | // Fonction pour retourner le nombre d'articles, de breves et commentaires publies existants dans une date donnee ($date) |
---|
85 | |
---|
86 | global $table_prefix; // Pour pouvoir utiliser des prefixes personnalises autres que "spip" |
---|
87 | $requete = mysql_query("SELECT * FROM ".$table_prefix."_articles WHERE date>='$dateStart' AND date<'$dateEnd' AND statut='publie'"); |
---|
88 | $nbr_articles = mysql_num_rows($requete); |
---|
89 | $requete = mysql_query("SELECT * FROM ".$table_prefix."_breves WHERE date_heure>='$dateStart' AND date_heure<'$dateEnd' AND statut='publie'"); |
---|
90 | $nbr_breves = mysql_num_rows($requete); |
---|
91 | $requete = mysql_query("SELECT * FROM ".$table_prefix."_forum WHERE date_heure>='$dateStart' AND date_heure<'$dateEnd' AND statut='publie'"); |
---|
92 | $nbr_forums = mysql_num_rows($requete); |
---|
93 | mysql_free_result($requete); |
---|
94 | |
---|
95 | $total = $nbr_articles + $nbr_breves + $nbr_forums; |
---|
96 | $resultat = ''; |
---|
97 | if ($total > 0) { |
---|
98 | $resultat = $resultat.' title=" - Articles publies : '.$nbr_articles." \n".' - Breves publiees : '.$nbr_breves." \n".' - Commentaires publies : '.$nbr_forums.' "'; |
---|
99 | } |
---|
100 | return $resultat; |
---|
101 | } |
---|
102 | |
---|
103 | function cal_site($theDate=null, $locale=null, $calPage=null, $calJour=null, $calMois=null) { |
---|
104 | // Fonction pour generer un calendrier indiquant les articles, breves et commentaires publies |
---|
105 | |
---|
106 | // Si la date n'est pas fournie, alors on prend la date actuelle |
---|
107 | if (!isset($theDate)) { $theDate = date('Y-m-d'); } |
---|
108 | // Si une date est presente dans l'adresse Url, alors on prend celle-ci |
---|
109 | $laDate = $_GET['date']; |
---|
110 | if (isset($laDate)) { $theDate = $laDate; } |
---|
111 | |
---|
112 | // Si la localisation n'est pas fournie, alors on regle le francais par defaut |
---|
113 | if (!isset($locale)) { $locale = array('fr', 'fr_FR', 'fr_FR.UTF-8'); } |
---|
114 | // On regle la localisation selon la valeur obtenue |
---|
115 | setlocale (LC_TIME, $locale); |
---|
116 | |
---|
117 | // On defini les pages Html de construction des liens |
---|
118 | if (!isset($calPage)) { $calPage = 'calendrier'; } |
---|
119 | if (!isset($calJour)) { $calJour = 'inc/inc-cal-jour'; } |
---|
120 | if (!isset($calMois)) { $calMois = 'inc/inc-cal-mois'; } |
---|
121 | |
---|
122 | // On separe les differents elements de la date fournie |
---|
123 | $day = date('j', strtotime($theDate)); |
---|
124 | $month = date('n', strtotime($theDate)); |
---|
125 | $year = date('Y', strtotime($theDate)); |
---|
126 | |
---|
127 | // On verifie la validite de la date avant de generer le calendrier |
---|
128 | // <http://www.php.net/manual/fr/function.setlocale.php> |
---|
129 | if (checkdate($month, 1, $year)) { |
---|
130 | |
---|
131 | // Date actuelle |
---|
132 | $now = date('Y-m-d'); |
---|
133 | $nowDay = date('j', strtotime($now)); |
---|
134 | $nowMonth = date('n', strtotime($now)); |
---|
135 | $nowYear = date('Y', strtotime($now)); |
---|
136 | |
---|
137 | // Nettoyage de l'adresse Url pour construir les liens |
---|
138 | $requete = $_SERVER['argv'][0]; |
---|
139 | $debut = '?'.$requete.'&'; |
---|
140 | $debut = preg_replace('#var_mode=.*?([\&])#i','',$debut); |
---|
141 | $debut = preg_replace('#date=.*?([\&])#i','',$debut); |
---|
142 | $debut = rtrim($debut, '&'); |
---|
143 | $debut = str_replace('?&','?',$debut); |
---|
144 | $debut = str_replace('&&','&',$debut); |
---|
145 | |
---|
146 | // On remplace l'affichage jour par l'affichage mois, et vise-versa |
---|
147 | $debutMois = str_replace($calJour,$calMois,$debut); |
---|
148 | $debutJour = str_replace($calMois,$calJour,$debut); |
---|
149 | |
---|
150 | // On defini les differentes dates a utiliser |
---|
151 | // <http://www.php.net/manual/fr/function.mktime.php> |
---|
152 | $dateNow = mktime(0, 0, 0, $nowMonth, $nowDay, $nowYear); |
---|
153 | $dateLien = mktime(0, 0, 0, $month, $day, $year); |
---|
154 | $dateLienJour1 = mktime(0, 0, 0, $month, 1, $year); |
---|
155 | $dateLienJourPlus1 = mktime(0, 0, 0, $month, $day + 1, $year); |
---|
156 | $dateLienJourMoins1 = mktime(0, 0, 0, $month, $day - 1, $year); |
---|
157 | $dateLienMoisPlus1 = mktime(0, 0, 0, $month + 1, 1, $year); |
---|
158 | $dateLienMoisMoins1 = mktime(0, 0, 0, $month - 1, 1, $year); |
---|
159 | |
---|
160 | // On definie le 'lundi' comme premier jour de la semaine et le 'dimanche' comme le dernier |
---|
161 | if (!$day = date("w", $dateLienJour1)) $day = 7; |
---|
162 | |
---|
163 | // Le Calendrier |
---|
164 | $cal = ""; |
---|
165 | |
---|
166 | // Recuperation du nombre d'articles, breves et commentaires publies pendant le mois considere |
---|
167 | $dateMois = strftime("%G-%m-%d", $dateLienJour1); |
---|
168 | $dateMoisPlus1 = strftime("%G-%m-%d", $dateLienMoisPlus1); |
---|
169 | $titreMois = nombre_publications_date($dateMois, $dateMoisPlus1); |
---|
170 | |
---|
171 | // Construction des liens des mois precedent, actuel et suivant |
---|
172 | $lienMoisMoins = '<a href="'.$debutMois.'&date='.strftime("%G-%m-%d", $dateLienMoisMoins1).'" title="'.strftime("%B %G", $dateLienMoisMoins1).'">«</a>'; |
---|
173 | $lienMoisLien = '<a href="?page='. $calPage.'&cal='.$calMois.'&date='.strftime("%G-%m-%d", $dateLienJour1).'"'.$titreMois.'>'.strftime("%B %G", $dateLien).'</a>'; |
---|
174 | $lienMoisPlus = '<a href="'.$debutMois.'&date='.strftime("%G-%m-%d", $dateLienMoisPlus1).'" title="'.strftime("%B %G", $dateLienMoisPlus1).'">»</a>'; |
---|
175 | |
---|
176 | // On affiche le nom entier du mois considere suivant la localisation, et les liens vers les mois precedent et suivant |
---|
177 | // <http://www.php.net/manual/fr/function.strftime.php> |
---|
178 | $cal = $cal.'<table border=0><tr class="cal_titre"><th>'.$lienMoisMoins.'</th><th colspan=5>'.$lienMoisLien.'</th><th>'.$lienMoisPlus.'</th></tr><tr>'; |
---|
179 | |
---|
180 | // On affiche les abreviations des jours de la semaine suivant la localisation (Lun, Mar, Mer, Jeu, Ven, Sam, Dim) |
---|
181 | for ($i = 8; --$i;) { |
---|
182 | $cal = $cal.'<th>'. strftime("%a", mktime(0, 0, 0, $month, 16 - $i - $day, $year)).'</th>'; |
---|
183 | } |
---|
184 | |
---|
185 | // On affiche les eventuelles cellules vides au debut du mois |
---|
186 | $cal = $cal.'</tr><tr>'.str_repeat('<td></td>', --$day); |
---|
187 | |
---|
188 | // On genere les differents jours du calendrier du mois |
---|
189 | // <http://www.php.net/manual/fr/function.checkdate.php> |
---|
190 | while (checkdate($month, ++$i, $year)) { // $i==0 after for :-) |
---|
191 | // Recuperation du nombre d'articles, breves et commentaires publies pendant le jour considere |
---|
192 | $dateJour = strftime("%G-%m-%d", mktime(0, 0, 0, $month, $i, $year)); |
---|
193 | $dateJourPlus1 = strftime("%G-%m-%d", mktime(0, 0, 0, $month, $i + 1, $year)); |
---|
194 | $titreJour = nombre_publications_date($dateJour,$dateJourPlus1); |
---|
195 | |
---|
196 | // Pour le style de la cellule du calendrier contenant la date actuelle |
---|
197 | if ($dateJour == $now) { $sel = ' class="cal_sel"'; } else { $sel = ""; }; |
---|
198 | |
---|
199 | // S'il y a des publications alors on construit le lien |
---|
200 | if ($titreJour == '') { |
---|
201 | $cal = $cal.'<td'.$sel.'>'.$i.'</td>'; |
---|
202 | } else { |
---|
203 | $cal = $cal.'<td'.$sel.'><a href="?page='.$calPage.'&cal='.$calJour.'&date='.$dateJour.'"'.$titreJour.'>'.$i.'</a></td>'; |
---|
204 | } |
---|
205 | |
---|
206 | // Nouvelle rangee du tableau au bout de 7 jours |
---|
207 | if (!(++$day % 7)) $cal = $cal.'</tr><tr>'; |
---|
208 | |
---|
209 | } |
---|
210 | // Fin du tableau calendrier |
---|
211 | $cal = $cal.'</tr></table>'; |
---|
212 | // Lien de la date actuelle |
---|
213 | $cal = $cal.'<p class="cal_now"><a href="'.$debutJour.'&date='.strftime("%G-%m-%d",$dateNow).'">'.strftime("Aujourd'hui %A %e %B %G",$dateNow).'</a></p>'; |
---|
214 | |
---|
215 | // Retour du calendrier |
---|
216 | return $cal; |
---|
217 | } |
---|
218 | } |
---|
219 | |
---|
220 | function filets_sep($texte) { |
---|
221 | // Fonction pour generer des filets de separation selon les balises presentes dans le texte fourni. |
---|
222 | // Il y a par defaut 10 filets possibles, de 0 a 9, mais on peut en ajouter d'autres au besoin. |
---|
223 | |
---|
224 | // On memorise le modele d'expression rationnelle a utiliser pour chercher les balises. |
---|
225 | $modele = '#[\n\r]__(\d+)__[\n\r]#iU'; |
---|
226 | |
---|
227 | // On verifie si des balises filets existent dans le texte fourni. |
---|
228 | preg_match_all($modele, $texte, $test); |
---|
229 | |
---|
230 | if ($test !== false) { |
---|
231 | // On isole les textes presents dans les balises "cadre" et "code". |
---|
232 | preg_match_all('#<cadre>(.*?)</cadre>#is', $texte, $listeCadre); |
---|
233 | preg_match_all('#<code>(.*?)</code>#is', $texte, $listeCode); |
---|
234 | $listeCadreTexte = $listeCadre[0]; |
---|
235 | $listeCodeTexte = $listeCode[0]; |
---|
236 | |
---|
237 | // On modifie le format des balises filets presents dans les balises "cadre" pour ne pas les traiter. |
---|
238 | foreach ($listeCadreTexte as $texteCadreOrig) { |
---|
239 | $texteCadreNew = preg_replace('#__(\d+)__#iU','__-$1-__',$texteCadreOrig); |
---|
240 | $texte = str_replace($texteCadreOrig,$texteCadreNew,$texte); |
---|
241 | }; |
---|
242 | |
---|
243 | // On modifie le format des balises filets presents dans les balises "code" pour ne pas les traiter. |
---|
244 | foreach ($listeCodeTexte as $texteCodeOrig) { |
---|
245 | $texteCodeNew = preg_replace('#__(\d+)__#iU','__-$1-__',$texteCodeOrig); |
---|
246 | $texte = str_replace($texteCodeOrig,$texteCodeNew,$texte); |
---|
247 | }; |
---|
248 | |
---|
249 | // On remplace les balises filets dans le texte par le code Html correspondant. |
---|
250 | $texte = preg_replace($modele,'<html><p class="filet_sep_$1"></p></html>',$texte); |
---|
251 | |
---|
252 | // On remet les balises filets presents dans les balises "cadre" et "code" a leur format initial. |
---|
253 | $texte = preg_replace('#__-(\d+)-__#iU','__$1__',$texte); |
---|
254 | }; |
---|
255 | |
---|
256 | // Traitement des anciens filets, pour assurer une compatibilite descendente. |
---|
257 | $texte = str_replace('__l__','<html><p class="filet_sep_long"></p></html>',$texte); |
---|
258 | $texte = str_replace('__m__','<html><p class="filet_sep_moyen"></p></html>',$texte); |
---|
259 | $texte = str_replace('__c__','<html><p class="filet_sep_court"></p></html>',$texte); |
---|
260 | |
---|
261 | return $texte; |
---|
262 | } |
---|
263 | |
---|
264 | |
---|
265 | function chercher_remplacer($chercher,$remplacer,$texte) { |
---|
266 | // Fonction pour faire des recherches-remplacements dans le texte fourni |
---|
267 | |
---|
268 | return str_replace($chercher,$remplacer,$texte); |
---|
269 | } |
---|
270 | |
---|
271 | function conversion_minuscules(&$value, $key) { |
---|
272 | // Fonction pour convertir du texte en minuscules |
---|
273 | $value = strtolower($value); |
---|
274 | return $value; |
---|
275 | } |
---|
276 | |
---|
277 | function somm_table($texteOrig, $titreSommaire = '') { |
---|
278 | // Fonction pour creer un sommaire sous forme d'une liste ou d'un tableau Spip. |
---|
279 | // La fonction verifie l'existence d'un intertitre "Sommaire" par defaut, |
---|
280 | // ou le titre de sommaire fourni par l'tuilisateur (pour des articles multilingues). |
---|
281 | // Si un intertitre sommaire existe, alors on analyse le texte fourni pour isoler |
---|
282 | // tous les intertitres afin de pouvoir fabriquer le sommaire, avec des liens |
---|
283 | // internes vers tous les intertitres et de liens de retour vers le sommaire. |
---|
284 | // Le sommaire ainsi cree sera place juste en dessous du titre "Sommaire". |
---|
285 | |
---|
286 | // Si l'utilisateur n'a pas fourni le titre sommaire a utiliser, |
---|
287 | // alors on utilise le titre par defaut en francais. |
---|
288 | if (empty($titreSommaire)) { |
---|
289 | $titreSommMin = 'sommaire'; |
---|
290 | } else { |
---|
291 | $titreSommMin = strtolower($titreSommaire); |
---|
292 | }; |
---|
293 | |
---|
294 | // Test de l'existence d'un intertitre 'Sommaire' pour generer un tableau |
---|
295 | // ou 'Sommaire-' (avec un trait d'union a la fin) pour generer une liste. |
---|
296 | $test = preg_match('#\{\{\{\[?\#?'.$titreSommMin.'-?\]?}\}\}#i', $texteOrig); |
---|
297 | |
---|
298 | // Si un des intertitres sommaire existe, alors on genere le sommaire. |
---|
299 | if ($test) { |
---|
300 | |
---|
301 | // On isole les textes presents dans les balises "cadre" et "code". |
---|
302 | preg_match_all('#<cadre>(.*?)</cadre>#is', $texteOrig, $listeCadre); |
---|
303 | preg_match_all('#<code>(.*?)</code>#is', $texteOrig, $listeCode); |
---|
304 | // On place les resultast, avec les balises, dans des variables. |
---|
305 | $listeCadreTexte = $listeCadre[0]; |
---|
306 | $listeCodeTexte = $listeCode[0]; |
---|
307 | |
---|
308 | // On modifie le format des balises intertitre dans les balises "cadre" pour ne pas les traiter. |
---|
309 | foreach ($listeCadreTexte as $texteCadreOrig) { |
---|
310 | $texteCadreNew = preg_replace('#(\{\{)(\{.*?\})(\}\})#i','$1-$2-$3',$texteCadreOrig); |
---|
311 | $texteOrig = str_replace($texteCadreOrig,$texteCadreNew,$texteOrig); |
---|
312 | }; |
---|
313 | |
---|
314 | // On modifie le format des balises intertitre dans les balises "code" pour ne pas les traiter. |
---|
315 | foreach ($listeCodeTexte as $texteCodeOrig) { |
---|
316 | $texteCodeNew = preg_replace('#(\{\{)(\{.*?\})(\}\})#i','$1-$2-$3',$texteCodeOrig); |
---|
317 | $texteOrig = str_replace($texteCodeOrig,$texteCodeNew,$texteOrig); |
---|
318 | }; |
---|
319 | |
---|
320 | // Recuperation des tous les intertitres presents dans le texte nettoye. |
---|
321 | preg_match_all('#\{\{\{(.*?)\}\}\}#i', $texteOrig, $listeOrig); |
---|
322 | |
---|
323 | // On place le resultat a utiliser dans une variable. |
---|
324 | $listeTitresOrig = $listeOrig[1]; |
---|
325 | |
---|
326 | // On verifie qu'il y reste des intertitres a traiter. |
---|
327 | if (count($listeTitresOrig) > 0) { |
---|
328 | |
---|
329 | // On verifie si le sommaire demande est sous forme de liste ou tableau. |
---|
330 | $testType = preg_match('#\{\{\{\[?\#?'.$titreSommMin.'-\]?\}\}\}#i', $texteOrig); |
---|
331 | |
---|
332 | // On verifie si la numerotation automatique est demandee. |
---|
333 | $testNro = preg_match('#\{\{\{\[?\#'.$titreSommMin.'-?\]?\}\}\}#i', $texteOrig); |
---|
334 | |
---|
335 | // On initialise les autres variables. |
---|
336 | $newSomm = ''; |
---|
337 | $esp = ' '; |
---|
338 | $nb = 1; |
---|
339 | |
---|
340 | // Boucle sur chaque element de la liste des intertitres originaux. |
---|
341 | foreach ($listeTitresOrig as $titreOrig) { |
---|
342 | $masquer = preg_match('#^\[(.*?)\]$#i', $titreOrig); // On test s'il faut masquer. |
---|
343 | $titreClean = rtrim(trim($titreOrig, '[#'),'-]'); // On supprime les eventuels indesirables. |
---|
344 | $titreClean = ucfirst($titreClean); // On met la premiere lettre en majuscule. |
---|
345 | $titreMin = strtolower($titreClean); // On converti en minuscules. |
---|
346 | |
---|
347 | if ($titreMin == $titreSommMin) { |
---|
348 | // Si le titre considere est 'sommaire', alors on fabrique le debut du sommaire. |
---|
349 | $titreSommOrig = '{{{'.$titreOrig.'}}}'; |
---|
350 | // On insere l'ancre et l'intertitre, ou l'ancre seulement s'il faut masquer l'intertitre. |
---|
351 | if ($masquer) { |
---|
352 | $titreSommNew = '[somm<-]'."\n"; |
---|
353 | } else { |
---|
354 | $titreSommNew = '[somm<-]'."\n".'{{{'.$titreClean.'}}}'."\n\n"; |
---|
355 | } |
---|
356 | } else { |
---|
357 | // On insere la numerotation automatique si elle est demandee. |
---|
358 | if ($testNro) { $titreClean = $nb.'. '.$titreClean; }; |
---|
359 | |
---|
360 | // On fabrique la liste ou le tableau et on place les ancres et liens des intertitres. |
---|
361 | if ($testType) { |
---|
362 | // On fabrique le sommaire sous forme de liste. |
---|
363 | $newSomm = $newSomm.'- [{{<html>'.$titreClean.'</html>}}->#inter'.$nb.']'."\n"; |
---|
364 | } else { |
---|
365 | // On fabrique le sommaire sous forme de tableau. |
---|
366 | $newSomm = $newSomm.'|['.$esp.'{{<html>'.$titreClean.'</html>}}'.$esp.'->#inter'.$nb.']|'."\n"; |
---|
367 | }; |
---|
368 | // On insere l'ancre et l'intertitre, ou l'ancre seulement s'il faut masquer l'intertitre. |
---|
369 | if ($masquer) { |
---|
370 | $titreNew = '[inter'.$nb.'<-]'."\n"; |
---|
371 | } else { |
---|
372 | $titreNew = '[inter'.$nb.'<-]'."\n".'{{{[<html>'.$titreClean.'</html>->#somm]}}}'; |
---|
373 | } |
---|
374 | // On remplace les intertitres par d'autres avec une ancre et un lien vers le sommaire. |
---|
375 | $texteOrig = str_replace('{{{'.$titreOrig.'}}}', $titreNew, $texteOrig); |
---|
376 | $nb++; |
---|
377 | }; |
---|
378 | }; |
---|
379 | $newSomm = '<html><div class="somm_table"></html>'."\n".$newSomm."\n".'<html></div></html>'; |
---|
380 | // On remplace l'intertitre "Sommaire" original par le nouveau sommaire. |
---|
381 | $texteOrig = str_replace($titreSommOrig, $titreSommNew.$newSomm, $texteOrig); |
---|
382 | }; |
---|
383 | // On remet les balises intertitres dans les balises "cadre" et "code" a leur format initial. |
---|
384 | $texteOrig = preg_replace('#\{\{-\{(.*?)\}-\}\}#i','{{{$1}}}',$texteOrig); |
---|
385 | |
---|
386 | // On efface tous les eventuels intertitres vides. |
---|
387 | $texteOrig = str_replace('{{{}}}', '', $texteOrig); |
---|
388 | }; |
---|
389 | // Retour du texte avec le sommaire ou le texte original a defaut. |
---|
390 | return $texteOrig; |
---|
391 | } |
---|
392 | |
---|
393 | |
---|
394 | function visites_site($day) { |
---|
395 | // Fonction pour afficher le nombre de visites enregistrees sur le site. |
---|
396 | // Le parametre "today" retourne les visites du jour courant. |
---|
397 | // Le parametre "all" retourne le total des visites depuis l'ouverture du site. |
---|
398 | // Ce code est librement inspire du squelette Sarka-Spip <http://sarka-spip.com/> |
---|
399 | |
---|
400 | global $table_prefix; // Pour pouvoir utiliser des prefixes personnalises autres que "spip" |
---|
401 | $r = 0; |
---|
402 | if ( $day == 'today' ) { |
---|
403 | $today = date('Y-m-d',strtotime(date('Y-m-d'))); |
---|
404 | $query = "SELECT visites AS visites FROM ".$table_prefix."_visites WHERE date='$today'"; |
---|
405 | $result = spip_query($query); |
---|
406 | $visit_today = 0; |
---|
407 | if ($row = @spip_fetch_array($result)) { |
---|
408 | $visit_today = $row['visites']; |
---|
409 | } |
---|
410 | $r = $visit_today; |
---|
411 | } |
---|
412 | else if ( $day == 'all' ) { |
---|
413 | $query = "SELECT SUM(visites) AS total_absolu FROM ".$table_prefix."_visites"; |
---|
414 | $result = spip_query($query); |
---|
415 | $visit_all = 0; |
---|
416 | if ($row = @spip_fetch_array($result)) { |
---|
417 | $visit_all = $row['total_absolu']; |
---|
418 | } |
---|
419 | $r = $visit_all; |
---|
420 | } |
---|
421 | return $r; |
---|
422 | } |
---|
423 | |
---|
424 | |
---|
425 | |
---|
426 | ?> |
---|