source: spip-zone/_galaxie_/forum.spip.org/forum.spip.org_2009/mes_fonctions.php @ 32639

Last change on this file since 32639 was 32639, checked in by fil@…, 11 years ago

dans mes_fonctions, il faut mettre table_des_traitements en globals

File size: 6.1 KB
Line 
1<?php
2
3// appliquer supprimer_numero sur tous les titres
4$GLOBALS['table_des_traitements']['TITRE'][]= 'typo(supprimer_numero(%s))';
5
6// Ah et il manque un filtre pour appliquer cette loi :
7// http://feedvalidator.org/docs/warning/ContainsRelRef.html
8
9function liens_de_moderation($id_forum) {
10        $a = '[<span style="font-size: 9px;"><a href="'.lire_meta('adresse_site').'/ecrire/controle_forum.php3?debut_id_forum=';
11        $liens = "$a$id_forum\">moderer</a></span>]";
12        return texte_backend($liens);
13}
14
15// Toute personne censee se detournerait de la rfc 822... et pourtant
16function date_rfc822($date_heure) {
17        list($annee, $mois, $jour) = recup_date($date_heure);
18        list($heures, $minutes, $secondes) = recup_heure($date_heure);
19        $time = mktime($heures, $minutes, $secondes, $mois, $jour, $annee);
20        $timezone = sprintf('%+03d',intval(date('Z')/3600)).'00';
21        return date("D, d M Y H:i:s", $time)." $timezone";
22}
23
24// renvoie une couleur fonction de l'age du forum
25function dec2hex($v) {
26        return substr('00'.dechex($v), -2);
27}
28
29function age_style($date) {
30       
31        // $decal en secondes
32        $decal = date("U") - date("U", strtotime($date));
33 
34        // 3 jours = vieux
35        $decal = min(1.0, sqrt($decal/(3*24*3600)));
36 
37        // Quand $decal = 0, c'est tout neuf : couleur vive
38        // Quand $decal = 1, c'est vieux : bleu pale
39        $red = ceil(128+127*(1-$decal));
40        $blue = ceil(130+60*$decal);
41        $green = ceil(200+55*(1-$decal));
42 
43        $couleur = dec2hex($red).dec2hex($green).dec2hex($blue);
44 
45        return 'background-color: #'.$couleur.';';
46}
47
48// corriger les URLs gmane (on syndique 'blog....' mais on ne veut pas lier la-dessus)
49function gmane($url) {
50        return $url;
51        return str_replace('http://comments.gmane.', 'http://thread.gmane.', $url);
52}
53
54// pour les forums
55function raccourcir_nom($nom) {
56        if (strpos($nom, "@")) {
57         $nom = substr($nom, 0, strpos($nom, "@"));     
58}
59return $nom;
60}
61
62// pour afficher proprement le nom des langues
63function afficher_nom_langue ($lang) {
64        if (ereg("^oc(_|$)", $lang))
65 return "occitan";
66        else
67 return traduire_nom_langue($lang);
68}
69
70// pour rendre les dates insecables dans les pages forum
71function insecable ($texte) {
72        return ereg_replace("( |&nbsp;)+", "&nbsp;", $texte);
73}
74
75// supprimer les '> ' en début de titre de forum
76function spip_preg_replace($a,$b,$c) {
77        return preg_replace($b,$c,$a);
78}
79
80/************************************pour le tag cloud***********************************
81 * http://www.spip_contrib.net/article.php3?id_article=879
82*/
83
84
85function noop($texte) {
86        return '';
87}
88
89function filtre_max($texte, $id='tout') {
90        static $max = array();
91 if($max[$id] < $texte) {
92         $max[$id] = $texte;
93}
94return $max[$id];
95}
96
97/*
98* petite cuisine:
99* $nbr=$max retourne $nbrMax
100* $nbr=1 retourne $min
101* $nbr=0 retourne $b (si on veut garantir le min, il vaut mieux pas)
102*/
103function coef($max,$nbr,$nbrMax=6,$min = 1) {
104        if ($max == 1)
105        return $nbrMax;
106 
107 $x = ($nbr*$nbrMax/$max);
108 $b = ($nbrMax - $min*$max)/(1-$max);
109 $a = ($min-$b)*$max/$nbrMax;
110 return $a*$x + $b;
111}
112
113function echaper_mot($titre, $type, $groupe_defaut) {
114        $groupe = '';
115        if($groupe_defaut && $type != $groupe_defaut) {
116         $groupe = $groupe_defaut;
117  if(strpos($groupe,' ') || strpos($groupe,':') || strpos($groupe,',')) {
118          $groupe = "\"$groupe\"";
119}
120}
121if(strpos($titre,' ') || strpos($titre,':') || strpos($titre,',')) {
122        $titre = "\"$titre\"";
123}
124return $groupe. (($groupe) ? ':' : '') .$titre;
125}
126
127function ajouter_mot($id_mot, $seul=false, $retour='') {
128        //  $url = $GLOBALS["clean_link"]->getUrl();
129        $url = new Link($retour);
130 
131 
132        list($titre,$type) = spip_fetch_array(spip_query("SELECT titre,type
133 FROM spip_mots WHERE id_mot=$id_mot"));
134        $groupe_defaut = 'FAQ';
135 
136        $tags = ((!$seul) ? $_GET['tags']." " : '').echaper_mot($titre, $type, $groupe_defaut);
137        $url->addvar('tags', $tags);
138 
139        return quote_amp($url->geturl());
140}
141
142function retirer_mot($id_mot) {
143        //// old style (id_mot[]=1)
144 //  $url = $GLOBALS["clean_link"]->getUrl();
145 //  $url = preg_replace("/([?&])id_mot\[\]=$id_mot&?/",'\\1',$url);
146 //  $url = preg_replace('/[?&]$/', '', $url);
147 
148 //# new style
149 $url = new Link();
150 list($titre,$type) = spip_fetch_array(spip_query("SELECT titre,type
151        FROM spip_mots WHERE id_mot=$id_mot"));
152 $groupe_defaut = 'FAQ';
153 $tags = trim(preg_replace('/ '.preg_quote(echaper_mot($titre, $type, $groupe_defaut)).' /', ' ', ' '.$_GET['tags'].' '));
154 $url->delvar('tags');
155 if ($tags)
156 $url->addvar('tags', $tags);
157 
158 return quote_amp($url->geturl());
159}
160
161
162// prend une liste de tags et retourne les id_mot reconnus (sans en creer)
163function get_tags_ids($mots) {
164        // Aller chercher les tags dans la boite
165        //#// pour faire plus generique : se baser sur id_$objet et/ou url_propre
166        include_ecrire('_libs_/tag-machine/inc_tag-machine.php');
167        $tags_liste = new ListeTags(filtrer_entites($mots),'FAQ',1);// car " dans l'url arrive ici sous la forme &quot; (#ENV{tags} et non #ENV*{tags})
168        return $tags_liste->getTagsIDs();
169}
170
171/*
172génére une regexp OU pour la liste de mot
173*/
174function enregexp($liste) {
175    include_ecrire('_libs_/tag-machine/inc_tag-machine.php');
176        $tags_liste = new ListeTags(filtrer_entites($liste),'FAQ',1);
177        $mots = $tags_liste->getTags();
178        $str = '^(';
179        foreach ($mots as $mot) {
180          $str .= preg_quote($mot->getTitre()).'|';
181        }
182        $str = substr($str,0,-1);
183        return $str.')$';
184}
185
186/*
187combien il y a de mots dans le paramétre
188*/
189function compte_having($liste) {
190    include_ecrire('_libs_/tag-machine/inc_tag-machine.php');
191        $tags_liste = new ListeTags(filtrer_entites($liste),'FAQ',1);
192        return count($tags_liste->getTags())-1;
193}
194
195/*
196un critére pour le HAVING sql
197*/
198function critere_having($idb, &$boucles, $crit){       
199        $hav = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
200 $boucles[$idb]->having = "'.$hav.'";
201}
202
203/*
204un filtre pour émuler doublons... on peut empiler des ids (ou autre)
205generer la variable pour faire un ==
206*/
207function tampons($valeur, $nom, $type, $action){
208        static $tampons = array();
209 if ($action == 'empile') {
210         $tampons["$type:$nom"][] = $valeur;
211  return ' ';
212} else if ($action == 'generein'){
213        return '^('.join('|',$tampons["$type:$nom"]).')$';
214} else if ($action == 'existe' && count($tampons["$type:$nom"])) {
215        return in_array($valeur,$tampons["$type:$nom"]);
216}
217return '';
218}
219
220function police_des_bavards($score)
221{
222        return 5*(1+ceil(log10($score)));
223}
224
225?>
Note: See TracBrowser for help on using the repository browser.