source: spip-zone/_squelettes_/escal/branche_V3/escal_fonctions.php @ 74663

Last change on this file since 74663 was 74663, checked in by jcvilleneuve@…, 6 years ago

Pour EscalV3 : correction d'accents

File size: 17.3 KB
Line 
1<?php
2
3/**
4 * Plugin Escal
5 * Licence GNU/GPL
6 */
7
8if (!defined('_ECRIRE_INC_VERSION')) return;
9
10// =======================================================================================================================================
11// Paramétrage à l'installation d'Escal
12// Merci à Arnaud Bérard pour son aide précieuse
13// =======================================================================================================================================
14
15/**
16 * escal_configuration()
17 * teste et configure certaines options de spip pour escal
18*/
19
20function escal_configuration(){
21    include_spip('inc/config');
22   
23    // active l'utilsation des mots clefs
24    $articles_mots = lire_config('articles_mots');
25    if($articles_mots == 'non')
26        ecrire_meta('articles_mots','oui');
27 
28}
29
30
31/*
32 * function install_groupe_mot
33 * installe le groupe de mots techniques et ses mots clefs
34 */
35function install_groupe_mots() {
36    // Création du groupe de mot-clef : affichage
37    $groupe_affichage = sql_insertq('spip_groupes_mots',array(
38      'titre'=>'affichage',
39      'descriptif'=>'Groupe de mots-cl&eacute;s techniques utilis&eacute;s dans Escal',
40      'tables_liees'=>'articles,rubriques,syndic',
41      'minirezo'=>'oui',
42      'comite'=>'oui'
43      ));
44   
45    // Création des mots-clefs -----------
46
47    // Mot : pas_au_menu
48    $pas_au_menu = objet_inserer('mot',$groupe_affichage);
49    objet_modifier('mot',$pas_au_menu,array(
50        'titre'=>'pas-au-menu',
51        'descriptif'=>'pour ne pas afficher une rubrique ou un article dans le menu horizontal'
52        )
53    );
54   
55    // Mot : pas_au_menu
56    $pas_au_menu_vertical = objet_inserer('mot',$groupe_affichage);
57    objet_modifier('mot',$pas_au_menu_vertical,array(
58        'titre'=>'pas-au-menu-vertical',
59        'descriptif'=>'pour ne pas afficher une rubrique ou un article dans les menus verticaux'
60        )
61    );
62   
63    // Mot : chrono
64    $chrono = objet_inserer('mot',$groupe_affichage);
65    objet_modifier('mot',$chrono,array(
66        'titre'=>'chrono',
67        'descriptif'=>'pour afficher les articles d&rsquo;une rubrique dans les menus en ordre ant&eacute;chronologique, comportement non transmis aux rubriques-filles'
68        )
69    );
70   
71    // Mot : pas-a-la-une
72    $pas_a_la_une = objet_inserer('mot',$groupe_affichage);
73    objet_modifier('mot',$pas_a_la_une,array(
74        'titre'=>'pas-a-la-une',
75        'descriptif'=>'pour ne pas afficher une rubrique (et ses articles) ou des articles dans le bloc "les derniers articles ..." de la page d&rsquo;accueil'
76        )
77    );
78   
79    // Mot : pas-au-plan
80    $pas_au_plan = objet_inserer('mot',$groupe_affichage);
81    objet_modifier('mot',$pas_au_plan,array(
82        'titre'=>'pas-au-plan',
83        'descriptif'=>'pour ne pas afficher une rubrique (et ses articles) ou des articles dans le bloc "Plan du site" de la page d&rsquo;accueil'
84        )
85    );
86   
87    // Mot : edito
88    $edito = objet_inserer('mot',$groupe_affichage);
89    objet_modifier('mot',$edito,array(
90        'titre'=>'edito',
91        'descriptif'=>'pour choisir l&rsquo;article qui sera affich&eacute; dans le bloc "Edito" (noisette inc-edito)'
92        )
93    );
94   
95    // Mot : accueil
96    $accueil = objet_inserer('mot',$groupe_affichage);
97    objet_modifier('mot',$accueil,array(
98        'titre'=>'accueil',
99        'descriptif'=>'pour choisir l&rsquo;article affich&eacute; en onglet d&rsquo;accueil (noisette inc-accueil)'
100        )
101    );
102   
103    // Mot : acces-direct
104    $acces_direct = objet_inserer('mot',$groupe_affichage);
105    objet_modifier('mot',$acces_direct,array(
106        'titre'=>'acces-direct',
107        'descriptif'=>'pour choisir l&rsquo;article qui sera affich&eacute; dans le bloc "Acc&egrave;s direct" (noisette inc-acces_direct)'
108        )
109    );
110   
111    // Mot : annonce
112    $annonce = objet_inserer('mot',$groupe_affichage);
113    objet_modifier('mot',$annonce,array(
114        'titre'=>'annonce',
115        'descriptif'=>'pour choisir l&rsquo;article dont le texte sera affich&eacute; dans le bloc "Annonce" de la page d&rsquo;accueil (noisette inc-annonce)'
116        )
117    );
118   
119    // Mot : annonce-defilant
120    $annonce_defilant = objet_inserer('mot',$groupe_affichage);
121    objet_modifier('mot',$annonce_defilant,array(
122        'titre'=>'annonce-defilant',
123        'descriptif'=>'pour choisir les articles dont le texte sera affich&eacute; dans le bloc "Annonces d&eacute;filantes" de la page d&rsquo;accueil (noisette inc-annonce_defilant)'
124        )
125    );
126   
127    // Mot : agenda
128    $agenda = objet_inserer('mot',$groupe_affichage);
129    objet_modifier('mot',$agenda,array(
130        'titre'=>'agenda',
131        'descriptif'=>'pour choisir les articles ou la ou les rubriques dont les articles seront affich&eacute;s dans l&rsquo;agenda'
132        )
133    );
134   
135    // Mot : actus
136    $actus = objet_inserer('mot',$groupe_affichage);
137    objet_modifier('mot',$actus,array(
138        'titre'=>'actus',
139        'descriptif'=>'pour choisir les articles qui seront affich&eacute;s dans le bloc "Actus" (noisette inc-actus)'
140        )
141    );
142   
143    // Mot : photo-une
144    $photo_une = objet_inserer('mot',$groupe_affichage);
145    objet_modifier('mot',$photo_une,array(
146        'titre'=>'photo-une',
147        'descriptif'=>'pour choisir les articles dont les images seront affich&eacute;es dans le bloc "Quelques images au hasard" (noisette inc-photos)'
148        )
149    );
150   
151    // Mot : video-une
152    $video_une = objet_inserer('mot',$groupe_affichage);
153    objet_modifier('mot',$video_une,array(
154        'titre'=>'video-une',
155        'descriptif'=>'pour choisir les articles dont les vid&eacute;os seront affich&eacute;es dans le bloc "Vid&eacute;o" (noisette inc-video_accueil)'
156        )
157    );
158   
159    // Mot : favori
160    $favori = objet_inserer('mot',$groupe_affichage);
161    objet_modifier('mot',$favori,array(
162        'titre'=>'favori',
163        'descriptif'=>'pour choisir les sites dont les vignettes seront affich&eacute;es dans le bloc "Sites favoris" (noisette inc-sites_favoris.html)'
164        )
165    );
166   
167    // Mot : site-exclu
168    $site_exclu = objet_inserer('mot',$groupe_affichage);
169    objet_modifier('mot',$site_exclu,array(
170        'titre'=>'site-exclu',
171        'descriptif'=>'pour exclure des sites dans le bloc "Sur le web" (noisette inc-sites.html)'
172        )
173    );
174   
175    // Mot : forum
176    $forum = objet_inserer('mot',$groupe_affichage);
177    objet_modifier('mot',$forum,array(
178        'titre'=>'forum',
179        'descriptif'=>'pour choisir le secteur qui sera utilis&eacute; pour le forum du site'
180        )
181    );
182   
183    // Mot : annuaire
184    $annuaire = objet_inserer('mot',$groupe_affichage);
185    objet_modifier('mot',$annuaire,array(
186        'titre'=>'annuaire',
187        'descriptif'=>'pour choisir l&rsquo;article qui sera utilis&eacute; par la page annuaire.html'
188        )
189    );
190   
191    // Mot : RubriqueOnglet
192    $RubriqueOnglet = objet_inserer('mot',$groupe_affichage);
193    objet_modifier('mot',$RubriqueOnglet,array(
194        'titre'=>'RubriqueOnglet',
195        'descriptif'=>'pour choisir la rubrique qui sera affich&eacute;e dans les onglets en page d&rsquo;accueil'
196        )
197    );
198   
199    // Mot : citations
200    $citations = objet_inserer('mot',$groupe_affichage);
201    objet_modifier('mot',$citations,array(
202        'titre'=>'citations',
203        'descriptif'=>'pour choisir l&rsquo;article qui servira de r&eacute;servoir pour les citations dans le pied de page'
204        )
205    );
206   
207    // Mot : mon-article
208    $mon_article = objet_inserer('mot',$groupe_affichage);
209    objet_modifier('mot',$mon_article,array(
210        'titre'=>'mon-article',
211        'descriptif'=>'pour choisir l&rsquo;article qui sera affiché dans un onglet du bloc central de la page d&rsquo;accueil'
212        )
213    );
214   
215    // Mot : special
216    $special = objet_inserer('mot',$groupe_affichage);
217    objet_modifier('mot',$special,array(
218        'titre'=>'special',
219        'descriptif'=>'pour choisir la rubrique et/ou les articles qui seront affich&eacute;s dans le bloc &agrave; personnaliser (noisette inc-perso.html)'
220        )
221    );
222   
223    $result = array(
224        'affichage'=>$groupe_affichage, 
225        'affichage_mots'=> array(
226            'pas_au_menu'=>$pas_au_menu,
227            'pas_au_menu_vertical'=>$pas_au_menu_vertical,
228            'chrono'=>$chrono,
229            'pas_a_la_une'=>$pas_a_la_une,
230            'pas_au_plan'=>$pas_au_plan,
231            'edito'=>$edito,
232            'accueil'=>$accueil,
233            'acces_direct'=>$acces_direct,
234            'annonce'=>$annonce,
235            'annonce_defilant'=>$annonce_defilant,
236            'agenda'=>$agenda,
237            'actus'=>$actus,
238            'photo_une'=>$photo_une,
239            'video_une'=>$video_une,
240            'favori'=>$favori,
241            'site_exclu'=>$site_exclu,
242            'forum'=>$forum,
243            'annuaire'=>$annuaire,
244            'RubriqueOnglet'=>$RubriqueOnglet,
245            'citations'=>$citations,
246            'mon_article'=>$mon_article,
247            'special'=>$special
248            )
249    );
250   
251    ecrire_config('escal/mots_techniques',$result);
252   
253    return $result;
254}
255
256
257
258// =======================================================================================================================================
259   // pour gerer les classes des differents liens dans les articles
260   // Un grand merci a l'auteur : bobof
261// =======================================================================================================================================
262if (!function_exists('inc_lien')){
263function inc_lien($lien, $texte='', $class='', $title='', $hlang='', $rel='', $connect='')
264{
265        $mode = ($texte AND $class) ? 'url' : 'tout';
266        $lien = calculer_url($lien, $texte, $mode, $connect);
267        if ($mode === 'tout') {
268                $texte = $lien['titre'];
269                if (!$class AND isset($lien['class'])) $class = $lien['class'];
270                $lang = isset($lien['lang']) ?$lien['lang'] : '';
271                $lien = $lien['url'];
272        }
273        if (substr($lien,0,1) == '#')  # spip_ancre pour liens de type ->#ancre
274                $class = 'spip_ancre';
275        elseif (preg_match('/^\s*spip.php\?page\=/', $lien)) # spip_in pour liens de type ->rubXX, ->artXX, ->breXX et ->spip.php?page=XYZ
276                $class = "spip_in";
277        elseif (preg_match('/^\s*mailto:/',$lien)) # spip_mail pour liens de type ->mailto:
278                $class = "spip_mail";
279        elseif (preg_match(',s*('._SITE.'),Ui', $lien)) # spip_site pour liens de type ->http://mon_site.tld/repertoire/fichier.html
280                $class = "spip_site";
281        elseif (preg_match(',('._DOMAINE_SITE.'),Ui', $lien)) # spip_dom pour liens de type ->http://www.domaine.tld ou ->http://sous-domaine.domaine.tld
282                $class = "spip_dom";
283        elseif (preg_match('/^<html>/',$lien)) # spip_url, spip_out pour les autres cas de figures
284                $class = "spip_url spip_out";
285        elseif (!$class) $class = "spip_out"; # spip_out pour les liens externes
286return inc_lien_dist($lien, $texte, $class, $titre, $hlang, $rel, $connect);
287}
288}
289// balises issues da la contrib  "Balises de comptage" de Franck
290// http://www.spip-contrib.net/Balises-de-comptage
291// =======================================================================================================================================
292// balise #TOTAL_VISITES
293// =======================================================================================================================================
294function vst_total_visites() {
295        $query = "SELECT SUM(visites) AS total_abs FROM spip_visites";
296        $result = spip_query($query);
297        if ($row = spip_fetch_array($result))
298                { return $row['total_abs']; }
299        else { return "0";}
300}
301function balise_TOTAL_VISITES($p) {
302        $p->code = "vst_total_visites()";
303        $p->statut = 'php';
304        return $p;
305}
306// =======================================================================================================================================
307// balise #NBPAGES_VISITEES
308// =======================================================================================================================================
309function vst_total_pages_visitees() {
310        $query = "SELECT SUM(visites) AS nbPages FROM spip_visites_articles";
311        $result = spip_query($query);
312        if ($row = spip_fetch_array($result))
313                { return $row['nbPages']; }
314        else { return "0";}
315}
316function balise_NBPAGES_VISITEES($p) {
317        $p->code = "vst_total_pages_visitees()";
318        $p->statut = 'php';
319        return $p;
320}
321
322// =======================================================================================================================================
323// balise #MOY_VISITES
324// =======================================================================================================================================
325function moyenne_visites_par_jour() {
326// calcul de la moyenne de visites
327// Période d'analyse couverte (nb de jours avant aujourd'hui)
328$periode = lire_config('escal/config/periodevisites', '365') ;
329
330// Sur tout le site, nombre de visites pendant la période
331$query="SELECT UNIX_TIMESTAMP(date) AS date_unix, visites FROM spip_visites ".
332                "WHERE 1 AND date > DATE_SUB(NOW(),INTERVAL $periode DAY) ORDER BY date";
333        $result=spip_query($query);
334        $i=0 ;
335        $total_absolu=0;
336        while ($row = spip_fetch_array($result)) {
337                $total_absolu = $total_absolu + $row['visites'];
338                $i++;
339        }
340// Nombre moyen de visites par jour sur la période
341        $moyenne =  round($total_absolu / $periode );
342        return $moyenne;
343}
344function balise_MOY_VISITES($p) {
345        $p->code = "moyenne_visites_par_jour()";
346        $p->statut = 'php';
347        return $p;
348}
349// =======================================================================================================================================
350// fonction pour l'affichage du nombre de visiteurs connectes
351// =======================================================================================================================================
352// issue du plugin "Nombre de visiteurs connectées"
353// http://www.spip-contrib.net/Nombres-de-visiteurs-connectes
354// corrections par Vincent de la liste Spip
355function escal_visiteurs_connectes_compter(){
356         return count(preg_files(_DIR_TMP.'visites/','.'));
357     }
358
359// =======================================================================================================================================
360// Balise : #JOUR_MAX_VISITES & #VAL_MAX_VISITES
361// =======================================================================================================================================
362
363  function generer_jour_val_max_visites($arg) {
364        $qv = spip_query("SELECT MAX(visites) as maxvi FROM spip_visites");
365        $rv = spip_fetch_array($qv);
366        $valmaxi = $rv['maxvi'];
367
368        if($arg=="date") {
369                $qd = spip_query("SELECT date FROM spip_visites WHERE visites = $valmaxi");
370                $rd = spip_fetch_array($qd);
371                $jourmaxi = $rd['date'];
372        }
373        if($arg=="date") { $a = $jourmaxi; }
374        if($arg=="val") { $a = $valmaxi; }
375        return $a;
376}
377function balise_JOUR_MAX_VISITES($p) {
378        $arg="date";
379        $p->code = "generer_jour_val_max_visites($arg)";
380        $p->interdire_scripts = false;
381        return $p;
382}
383function balise_VAL_MAX_VISITES($p) {
384        $arg="val";
385        $p->code = "generer_jour_val_max_visites($arg)";
386        $p->interdire_scripts = false;
387        return $p;
388}
389
390// =======================================================================================================================================
391// fonction pour les citations du pied de page
392// =======================================================================================================================================
393
394function citations($txt){
395$BDDArray = $txt;// Lecture de l'article
396$BDDArray = explode('<p>', $BDDArray); // couper à la  rencontre un p
397$BDDArray = array_map('rtrim', $BDDArray); // Suppression des fins de lignes de chaque élément
398$BDDArray = array_filter($BDDArray); // Suppression de TOUTES les entrées vides
399
400$citation = $BDDArray[array_rand($BDDArray)]; // une phrase au hasard dans le tableau
401if(strlen($citation)<200) //on ne veut pas dépasser 200 caractères
402return strip_tags($citation); //on vire les tags html
403else citations($txt);
404}
405
406// =======================================================================================================================================
407// Ajout de  nofollow sur les liens (pas mal à utiliser  sur les commentaires pour éviter le spam)
408// =======================================================================================================================================
409
410function nofollow($texte){
411   $texte=str_replace("<a href","<a rel='nofollow' href",$texte);
412   return $texte;
413}
414
415// =======================================================================================================================================
416// paramètres pour le plugin diapo
417// =======================================================================================================================================
418
419//nombre de vignettes par page
420$GLOBALS['diapo_vignettes']=15;
421
422//largeur et hauteur maxi des vignettes :
423$GLOBALS['diapo_vignette']=60;
424
425//largeur maxi de la grande image avec vignettes en haut :
426$GLOBALS['diapo_grand']=400;
427
428//largeur maxi de la grande image avec vignettes sur les côtés:
429$GLOBALS['diapo_petit']=300;
430//hauteur maxi de la grande image avec vignettes sur les côtés :
431$GLOBALS['diapo_petit_h']=300;
432
433//diaporama : temps de pause en millisecondes :
434$GLOBALS['diapo_temps']=3000;
435
436
437
438
439?>
Note: See TracBrowser for help on using the repository browser.