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

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

forum.spip.org, newlook pour commencer les gadgets suivront - a tester c'est bancal au moins sur ie bien sur

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