source: spip-zone/_plugins_/_test_/login_logout/inc/plugin_globales_lib.php @ 17672

Last change on this file since 17672 was 17672, checked in by paladin@…, 13 years ago

Supprimer tag hors tdt + revision fonction en prenant en compte éventuel svn/entries pour numéro de version

  • Property svn:eol-style set to LF
  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 20.9 KB
Line 
1<?php
2// Original From SPIP-Listes-V :: $Id: plugin_globales_lib.php paladin@quesaco.org $
3// Christian PAULUS : http://www.quesaco.org/ (c) 2007
4// $LastChangedRevision: 17672 $
5// $LastChangedBy: paladin@quesaco.org $
6// $LastChangedDate: 2007-12-24 15:27:18 +0000 (Mon, 24 Dec 2007) $
7
8// librairie de fonctions et defines globales
9// indépendantes de tout plugin
10
11// toutes les fonctions ici sont préfixées '__' (2 tirets)
12// sauf re-déclaration inc/vieilles_defs.php
13// sauf déclaration des fonctions php5
14
15if (!defined("_ECRIRE_INC_VERSION")) return;
16
17if(defined("_PGL_PLUGIN_GLOBALES_LIB") && _PGL_PLUGIN_GLOBALES_LIB) return;
18define("_PGL_PLUGIN_GLOBALES_LIB", 20071224.0535); //date.heure
19
20// HISTORY:
21// CP-20071224: ajout de __plugin_current_svnrevision_get() et modif __plugin_html_signature()
22// CP-20071222: optimisation __plugin_boite_meta_info() pour plugin en mode stable et mode dev
23
24include_spip("inc/plugin");
25
26if(!function_exists('__server_in_private_ip_adresses')) {
27        // vérifie si le serveur est dans Adresses IP privées de classe C (Private IP addresses)
28        // renvoie true si serveur dans classe privée
29        function __server_in_private_ip_adresses() {
30                return(preg_match('/^192\.168/', $_SERVER['SERVER_ADDR']));
31        }
32}
33
34if(!defined("_PGL_SYSLOG_LAN_IP_ADDRESS")) define("_PGL_SYSLOG_LAN_IP_ADDRESS", "/^192\.168\./");
35if(!defined("_PGL_USE_SYSLOG_UNIX"))  define("_PGL_USE_SYSLOG_UNIX", true);
36
37// Trace sur syslog
38if(!function_exists('__syslog_trace')) {
39        // trace si serveur sur LAN
40        if(__server_in_private_ip_adresses()) {
41                function __syslog_trace($message, $priority = LOG_WARNING, $tag = "_") {
42                        if(empty($tag)) { 
43                                $tag = basename ($_SERVER['PHP_SELF']); 
44                        }
45                        else if($priority == LOG_DEBUG) {
46                                $tag = "DEBUG: ".$tag; 
47                        }
48                        return(
49                                openlog ($tag, LOG_PID | LOG_CONS, LOG_USER) 
50                                        && syslog ($priority, (string)$message) 
51                                        &&      closelog()
52                        );
53                }
54        }
55}
56
57if(!function_exists('__syslog_dump')) {
58        // fonction récursive
59        // dump du contenu d'un var dans le log
60        // pratique en mode debug
61        // ne pas utiliser dans version de production
62        function __syslog_dump ($p, $tag = '') {
63               
64                if(!__server_in_private_ip_adresses()) return false;
65               
66                if(is_array($p) || is_object($p)) {
67                        foreach($p as $k=>$v) {
68                                if(is_array($v) || is_object($v)) {
69                                        __syslog_dump($v, $k);
70                                }
71                                else {
72                                        __syslog_trace((!empty($tag) ? $tag." +> " : '')."$k => $v");
73                                }
74                        }
75                }
76                else {
77                        __syslog_trace((!empty($tag) ? $tag." +> " : '')."$p");
78                }
79        }
80}
81/* fin des __syslog_* */
82
83
84/*//////////////////////////
85*/
86if(!function_exists('__plugin_real_version_get')) {
87        // renvoie la version du fichier plugin.xml
88        function __plugin_real_version_get ($prefix) {
89                $r = __plugin_real_tag_get($prefix, 'version');
90                return ($r);
91        }
92}
93
94if(!function_exists('__plugin_real_version_base_get')) {
95        // renvoie la version_base du fichier plugin.xml
96        function __plugin_real_version_base_get ($prefix) {
97                $r = __plugin_real_tag_get($prefix, 'version_base');
98                return ($r);
99        }
100}
101
102if(!function_exists('__plugin_current_version_get')) {
103        function __plugin_current_version_get ($prefix) {
104                return(lire_meta($prefix."_version"));
105        }
106}
107
108/**/
109if(!function_exists('__plugin_current_version_base_get')) {
110        // renvoie la version_base en cours
111                // doc: voir inc/plugin.php sur version_base (plugin.xml)
112                // qui s'appelle base_version en spip_meta %-}
113        function __plugin_current_version_base_get ($prefix) {
114                return(lire_meta($prefix."_base_version"));
115        }
116} // end if __plugin_current_version_base_get
117
118if(!function_exists('__plugin_current_svnrevision_get')) {
119        // renvoie le dernier numero de révision svn
120        function __plugin_current_svnrevision_get ($prefix, $verifier_svn) {
121                static $svn_revision = false;
122                if(!empty($prefix)) {
123                        // lire directement dans plugin.xml (éviter le cache ?)
124                        $dir_plugin = _DIR_PLUGINS.__plugin_get_meta_dir($prefix);
125                        // cherche si sur version svn
126                        if(!$result = version_svn_courante($dir_plugin)) {
127                                // méfiance: il faut que svn/entries soit à jour (svn update sur le poste de travail/serveur !)
128                                // si pas de svn/entries, lire l'attribut dans plugin.xml
129                                $file = $dir_plugin."/"._FILE_PLUGIN_CONFIG;
130                                $result = __plugin_svn_revision_read($file);
131                        }
132                        if($verifier_svn && !$svn_revision) {
133                                // vérifier les fichiers inclus (gourmand et peut-être trompeur si fichier fantôme ?)
134                                // ne vérifier que sur deux niveaux (PLUGIN_ROOT et ses répertoires directs, pas en dessous)
135                                define("_PGL_SVN_LIRE_EXTENSIONS", "css|html|js|php|xml");
136                                $script_files = array();
137                                if(is_dir($dir_plugin) && ($dh = opendir($dir_plugin))) {
138                                        while (($file = readdir($dh)) !== false) {
139                                                if($file[0] == ".") continue;
140                                                if(is_dir($dir_plugin_sub = $dir_plugin."/".$file) && ($dh_s = opendir($dir_plugin_sub))) {
141                                                        while (($file = readdir($dh_s)) !== false) {
142                                                                if($file[0] == ".") continue;
143                                                                if(preg_match('=\.('._PGL_SVN_LIRE_EXTENSIONS.')$=i', $file)) $script_files[] = $dir_plugin_sub."/".$file;
144                                                        }
145                                                        closedir($dh_s);
146                                                }
147                                                else if(preg_match('=\.('._PGL_SVN_LIRE_EXTENSIONS.')$=i', $file)) $script_files[] = $dir_plugin."/".$file;
148                                        }
149                                        closedir($dh);
150                                }
151                                foreach($script_files as $file) {
152                                        if(!$ii = __plugin_svn_revision_read ($file)) { continue; }
153                                        $result = max($ii, $result);
154                                }
155                        }
156                        if(!empty($result) && (intval($result) > 0)) return($result);
157                }
158                return(false);
159        }
160}
161
162/**/
163// lire le fichier, en espérant trouver le mot clé svn dans les $buf_size premiers caractères
164function __plugin_svn_revision_read ($filename, $buf_size = 2048) {
165        if($fh = fopen($filename, "rb")) {
166                $buf = fread($fh, $buf_size);
167                fclose($fh);
168                if($buf = strstr($buf, "$"."LastChanged"."Revision:")) {
169                        $revision = preg_replace('=^\$LastChanged'.'Revision: ([0-9]+) \$.*$=s', '${1}', $buf, 1);
170                        if(strval(intval($revision)) == $revision) { 
171                                return($revision);
172                        }
173                }
174        }
175        return (false);
176}
177
178/**/
179if(!function_exists('__plugin_real_tag_get')) {
180        function __plugin_real_tag_get ($prefix, $s) {
181                $dir = __plugin_get_meta_dir($prefix);
182                $f = _DIR_PLUGINS.$dir."/"._FILE_PLUGIN_CONFIG;
183                if(is_readable($f) && ($c = file_get_contents($f))) {
184                        $p = array("/<!--(.*?)-->/is","/<\/".$s.">.*/s","/.*<".$s.">/s");
185                        $r = array("","","");
186                        $r = preg_replace($p, $r, $c);
187                }
188                return(!empty($r) ? $r : false);
189        }
190} // end if __plugin_real_tag_get
191
192/**/
193if(!function_exists('__plugin_get_meta_infos')) {
194        // renvoie les infos du plugin contenues dans les metas
195        // qui contient 'dir' et 'version'
196        function __plugin_get_meta_infos ($prefix) {
197                if(isset($GLOBALS['meta']['plugin'])) {
198                        $result = unserialize($GLOBALS['meta']['plugin']);
199                        $prefix = strtoupper($prefix);
200                        if(isset($result[$prefix])) {
201                                return($result[$prefix]);
202                        }
203                }
204                return(false);
205        }
206} // end if __plugin_get_meta_infos
207
208/**/
209if(!function_exists('__plugin_get_meta_dir')) {
210        // renvoie le dir du plugin
211        // présent dans les metas
212        function __plugin_get_meta_dir($prefix) {
213                $result = false;
214                $info = __plugin_get_meta_infos($prefix);
215                if(isset($info['dir'])) {
216                        $result = $info['dir'];
217                }
218                return($result);
219        }
220} // end if __plugin_get_meta_dir
221
222/**/
223if(!function_exists('__plugin_meta_version')) {
224        // renvoie le num de version du plugin lors de la dernière installation
225        // présent dans les metas
226        function __plugin_get_meta_version($prefix) {
227                $result = false;
228                $info = __plugin_get_meta_infos($prefix);
229                if(isset($info['version'])) {
230                        $result = $info['version'];
231                }
232                return($result);
233        }
234}
235
236/**/
237if(!function_exists('__plugin_boite_meta_info')) {
238        // affiche un petit bloc info sur le plugin
239        function __plugin_boite_meta_info ($prefix, $return = false) {
240                include_spip('inc/meta');
241                $result = false;
242                if(!empty($prefix)) {
243                        $meta_info = __plugin_get_meta_infos($prefix); // dir et version
244                        $info = plugin_get_infos($meta_info['dir']);
245                        $icon = 
246                                (isset($info['icon']))
247                                ? "<div "
248                                        . " style='width:64px;height:64px;"
249                                                . "margin:0 auto 1em;"
250                                                . "background: url(". _DIR_PLUGINS.$meta_info['dir']."/".trim($info['icon']).") no-repeat center center;overflow: hidden;'"
251                                        . " title='Logotype plugin $prefix'>"
252                                        . "</div>\n"
253                                : ""
254                                ;
255                        if(isset($info['etat']) && ($info['etat']=='stable')) {
256                        // en version stable, ne sort plus les infos de debug
257                                foreach(array('description','lien','auteur') as $key) {
258                                        if(isset($info[$key]) && !isset($meta_info[$key])) {
259                                                $meta_info[$key] = $info[$key];
260                                        }
261                                }
262                                $result .= __plugin_boite_meta_info_liste($meta_info, true) // nom, etat, dir, version, description, lien, auteur
263                                        ;
264                        }
265                        else {
266                        // un peu plus d'info en mode test et dev
267                                $mode_dev = (isset($info['etat']) && ($info['etat']=='dev'));
268                                $result .= 
269                                        __plugin_boite_meta_info_liste($meta_info, true) // nom, etat, dir, version
270                                        . __plugin_boite_meta_info_liste($info, $mode_dev)  // et tout ce qu'on a en magasin
271                                        ;
272                        }
273                        if(!empty($result)) {
274                                $result = ""
275                                        . debut_cadre_relief('plugin-24.gif', true, '', $prefix)
276                                        . $icon
277                                        . $result
278                                        . fin_cadre_relief(true)
279                                        ;
280                        }
281                }
282                if($return) return($result);
283                else echo($result);
284        }
285        /**/
286        function __plugin_boite_meta_info_liste($array, $recursive = false) {
287                global $spip_lang_left;
288                $result = "";
289                if(is_array($array)) {
290                        foreach($array as $key=>$value) {
291                                $sub_result = "";
292                                if(is_array($value)) {
293                                        if($recursive) {
294                                                $sub_result = __plugin_boite_meta_info_liste($value);
295                                        }
296                                }
297                                else {
298                                        $sub_result = propre($value);
299                                }
300                                if(!empty($sub_result)) {
301                                        $result .= "<li><span style='font-weight:bold;'>$key</span> : $sub_result</li>\n";
302                                }
303                        }
304                        if(!empty($result)) {
305                                $result = "<ul style='margin:0;padding:0 1ex;list-style: none;text-align: $spip_lang_left;' class='verdana2 meta-info-liste'>$result</ul>";
306                        }
307                }
308                return($result);
309        }
310} // end if __plugin_boite_meta_info
311
312/**/
313if(!function_exists('__plugin_html_signature')) {
314        // petite signature de plugin
315        // du style "Dossier plugin [version]"
316        function __plugin_html_signature ($prefix, $return = false, $html = true, $verifier_svn = false) {
317
318                $info = plugin_get_infos(__plugin_get_meta_dir($prefix));
319                $nom = typo($info['nom']);
320                $version = typo($info['version']);
321                //$base_version = typo($info['version_base']); // cache ?
322                $base_version = __plugin_current_version_base_get($prefix);
323                $svnrevision = __plugin_current_svnrevision_get($prefix, $verifier_svn);
324                $revision = "";
325                if($html) {
326                        $version = (($version) ? " <span style='color:gray;'>".$version : "")
327                                . (($svnrevision) ? "-".$svnrevision : "")
328                                . "</span>"
329                                ;
330                        $base_version = (($base_version) ? " <span style='color:#66c;'>&lt;".$base_version."&gt;</span>" : "");
331                }
332                $result = ""
333                        . $nom
334                        . $version
335                        . $base_version
336                        ;
337                if($html) {
338                        $result = "<p class='verdana1 spip_xx-small' style='font-weight:bold;'>$result</p>\n";
339                }
340                if($return) return($result);
341                else echo($result);
342        }
343} // end if __plugin_html_signature
344
345/*//////////////////////////
346*/
347
348if(!function_exists('__mysql_date_time')) {
349        function __mysql_date_time($time = 0) {
350                return(date("Y-m-d H:i:s", $time));
351        }
352}
353
354if(!function_exists('__is_mysql_date')) {
355        function __is_mysql_date($date) {
356                $t = strtotime($date);
357                return($t && ($date == __mysql_date_time($t)));
358        }
359}
360
361if(!function_exists('__mysql_max_allowed_packet')) {
362        // renvoie la taille maxi d'un paquet PySQL (taille d'une requête)
363        function __mysql_max_allowed_packet() {
364                $sql_result = spip_query("SHOW VARIABLES LIKE 'max_allowed_packet'");
365                $row = spip_fetch_array($sql_result, SPIP_NUM);
366                return($row[1]);
367        }
368}
369
370// si inc/vieilles_defs.php disparaît ?
371if(!function_exists("lire_meta")) {
372        function lire_meta($key) {
373                $result = 0;
374                if(_FILE_CONNECT && @file_exists(_FILE_CONNECT_INS .'.php')) {
375                        if(!isset($GLOBALS['meta'][$key])) {
376                                $sql_result = @spip_query("SELECT valeur FROM spip_meta WHERE nom="._q($key)." LIMIT 1");
377                                if($row = spip_fetch_array($sql_result)) {
378                                        $result = $row[$key];
379                                        $GLOBALS['meta'][$key] = $result;
380                                }
381                        }
382                        else {
383                                $result = $GLOBALS['meta'][$key];
384                        }
385                }
386                return($result);
387        }
388}
389
390if(!function_exists("__boite_alerte")) {
391        // Renvoie ou affiche une boite d'alerte
392        function __boite_alerte ($message, $return = false) {
393                $result = ""
394                        . debut_cadre_enfonce('', true)
395                        .  http_img_pack("warning.gif", _T('info_avertissement'), 
396                                         "style='width: 48px; height: 48px; float: right;margin: 5px;'")
397                        . "<strong>$message</strong>\n"
398                        . fin_cadre_enfonce(true)
399                        . "\n<br />"
400                        ;
401                if($return) return($result);
402                else echo($result);
403        }
404}
405
406// !(PHP 4 >= 4.3.0, PHP 5)
407if(!function_exists("html_entity_decode")) {
408        function html_entity_decode ($string, $quote_style = "", $charset = "")
409        {
410                // Remplace les entités numériques
411                $string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
412                $string = preg_replace('~&#([0-9]+);~e', 'chr("\\1")', $string);
413                // Remplace les entités litérales
414                $trans_tbl = get_html_translation_table (HTML_ENTITIES);
415                $trans_tbl = array_flip ($trans_tbl);
416                return strtr ($string, $trans_tbl);
417        }
418}
419
420if((phpversion()<5) && !function_exists("__html_entity_decode_utf8")) {
421// http://fr.php.net/html_entity_decode
422        // thank to: laurynas dot butkus at gmail dot com
423        function __html_entity_decode_utf8($string)
424        {
425                 static $trans_tbl;
426               
427                 // replace numeric entities
428                 $string = preg_replace('~&#x([0-9a-f]+);~ei', '__code2utf(hexdec("\\1"))', $string);
429                 $string = preg_replace('~&#([0-9]+);~e', '__code2utf(\\1)', $string);
430       
431                 // replace literal entities
432                 if (!isset($trans_tbl))
433                 {
434                          $trans_tbl = array();
435                         
436                          foreach (get_html_translation_table(HTML_ENTITIES) as $val=>$key)
437                                        $trans_tbl[$key] = utf8_encode($val);
438                 }
439               
440                 return strtr($string, $trans_tbl);
441        } // __html_entity_decode_utf8()
442       
443        // Returns the utf string corresponding to the unicode value (from php.net, courtesy - romans@void.lv)
444        // thank to: akniep at rayo dot info
445        function __code2utf($number)  {
446        if ($number < 0)
447            return FALSE;
448        if ($number < 128)
449            return chr($number);
450        // Removing / Replacing Windows Illegals Characters
451        if ($number < 160)
452        {
453                if ($number==128) $number=8364;
454            elseif ($number==129) $number=160; // (Rayo:) #129 using no relevant sign, thus, mapped to the saved-space #160
455            elseif ($number==130) $number=8218;
456            elseif ($number==131) $number=402;
457            elseif ($number==132) $number=8222;
458            elseif ($number==133) $number=8230;
459            elseif ($number==134) $number=8224;
460            elseif ($number==135) $number=8225;
461            elseif ($number==136) $number=710;
462            elseif ($number==137) $number=8240;
463            elseif ($number==138) $number=352;
464            elseif ($number==139) $number=8249;
465            elseif ($number==140) $number=338;
466            elseif ($number==141) $number=160; // (Rayo:) #129 using no relevant sign, thus, mapped to the saved-space #160
467            elseif ($number==142) $number=381;
468            elseif ($number==143) $number=160; // (Rayo:) #129 using no relevant sign, thus, mapped to the saved-space #160
469            elseif ($number==144) $number=160; // (Rayo:) #129 using no relevant sign, thus, mapped to the saved-space #160
470            elseif ($number==145) $number=8216;
471            elseif ($number==146) $number=8217;
472            elseif ($number==147) $number=8220;
473            elseif ($number==148) $number=8221;
474            elseif ($number==149) $number=8226;
475            elseif ($number==150) $number=8211;
476            elseif ($number==151) $number=8212;
477            elseif ($number==152) $number=732;
478            elseif ($number==153) $number=8482;
479            elseif ($number==154) $number=353;
480            elseif ($number==155) $number=8250;
481            elseif ($number==156) $number=339;
482            elseif ($number==157) $number=160; // (Rayo:) #129 using no relevant sign, thus, mapped to the saved-space #160
483            elseif ($number==158) $number=382;
484            elseif ($number==159) $number=376;
485        } //if
486       
487        if ($number < 2048)
488            return chr(($number >> 6) + 192) . chr(($number & 63) + 128);
489        if ($number < 65536)
490            return chr(($number >> 12) + 224) . chr((($number >> 6) & 63) + 128) . chr(($number & 63) + 128);
491        if ($number < 2097152)
492            return chr(($number >> 18) + 240) . chr((($number >> 12) & 63) + 128) . chr((($number >> 6) & 63) + 128) . chr(($number & 63) + 128);
493       
494        return FALSE;
495    } //__code2utf()
496}
497
498if(!function_exists('__texte_html_2_iso')) {
499        function __texte_html_2_iso($string, $charset, $unspace = false) {
500                $charset = strtoupper($charset);
501                // html_entity_decode a qq soucis avec UTF-8
502                if($charset=="UTF-8" && (phpversion()<5)) {
503                        $string = __html_entity_decode_utf8($string);
504                }
505                else {
506                        $string = html_entity_decode($string, ENT_QUOTES, $charset);
507                }
508                if($unspace) {
509                        // renvoie sans \r ou \n pour les boites d'alerte javascript
510                        $string = preg_replace("/([[:space:]])+/", " ", $string);
511                }
512                return ($string);
513        }
514}
515
516if(!function_exists('__boite_select_de_formulaire')) {
517        // renvoie une boite select pour un formulaire
518        function __boite_select_de_formulaire ($array_values, $selected, $select_id, $select_name
519                , $size=1, $select_style='', $select_class=''
520                , $label_value='', $label_style='', $label_class='', $multiple=false
521                ) {
522                $result = "";
523                foreach($array_values as $key=>$value) {
524                        $result .= "<option".mySel($value, $selected).">$key</option>\n";
525                }
526                $result = ""
527                        . (
528                                (!empty($label_value))
529                                ? "<label for='$select_id'"
530                                        .(!empty($label_style) ? " style='$label_style'" : "")
531                                        .(!empty($label_class) ? " class='$label_class'" : "")
532                                        .">$label_value</label>\n" 
533                                : ""
534                                )
535                        . "<select name='$select_name' size='$size'"
536                                .(($multiple && ($size>1)) ? " multiple='multiple'" : "")
537                                .(!empty($select_style) ? " style='$select_style'" : "")
538                                .(!empty($select_class) ? " class='$select_class'" : "")
539                                ." id='$select_id'>\n"
540                        . $result
541                        . "</select>\n"
542                        ;
543                return($result);
544        } // __boite_select_de_formulaire()
545}
546
547if(!function_exists('__array_values_in_keys')) {
548        // renvoie tableau avec key => value
549        // (pratique pour __boite_select_de_formulaire())
550        function __array_values_in_keys($array) {
551                $result = array();
552                foreach($array as $value) {
553                        $result[$value] = $value;
554                }
555                return($result);
556        } // __array_values_in_keys()
557}
558
559if(!function_exists('__plugin_aide')) {
560        // petit bouton aide à placer à droite du titre de bloc
561        function __plugin_aide ($fichier_exec_aide, $aide='', $return=true) {
562                include_spip('inc/minipres');
563                global $spip_lang
564                        , $spip_lang_rtl
565                        , $spip_display
566                        ;
567                if (!$aide || $spip_display == 4) return;
568               
569                $t = _T('titre_image_aide');
570                $result = ""
571                . "\n&nbsp;&nbsp;<a class='aide'\nhref='"
572                . generer_url_ecrire($fichier_exec_aide, "var_lang=$spip_lang")
573                . (
574                        (!empty($aide)) 
575                        ? "#$aide" 
576                        : ""
577                        )
578                . "'"
579                . " onclick=\"javascript:window.open(this.href,'spip_aide', 'scrollbars=yes, resizable=yes, width=740, height=580'); return false;\">\n"
580                . http_img_pack(
581                        "aide".aide_lang_dir($spip_lang,$spip_lang_rtl).".gif"
582                        , _T('info_image_aide')
583                        , " title=\"$t\" class='aide'"
584                        )
585                . "</a>"
586                ;
587               
588                if($return) return($result);
589                else echo($result);
590        } // __plugin_aide()
591}
592
593if(!function_exists('__plugin_ecrire_key_in_serialized_meta')) {
594        // ecriture dans les metas, format sérialisé
595        function __plugin_ecrire_key_in_serialized_meta ($key, $value, $meta_name) {
596                if(isset($GLOBALS['meta'][$meta_name])) {
597                        $s_meta = unserialize($GLOBALS['meta'][$meta_name]);
598                        $s_meta[$key] = $value;
599                        ecrire_meta($meta_name, serialize($s_meta));
600                        return(true);
601                }
602                else return(false);
603        }
604}
605
606if(!function_exists('__plugin_lire_serialized_meta')) {
607        // lecture dans les metas, format sérialisé
608        function __plugin_lire_serialized_meta ($meta_name) {
609                if(isset($GLOBALS['meta'][$meta_name])) {
610                        return(unserialize($GLOBALS['meta'][$meta_name]));
611                }
612                return(false);
613        }
614}
615
616if(!function_exists('__plugin_lire_key_in_serialized_meta')) {
617// lecture d'une clé dans la meta sérialisée
618        function __plugin_lire_key_in_serialized_meta ($key, $meta_name) {
619                $result = false;
620                $s_meta = __plugin_lire_serialized_meta($meta_name);
621                if($s_meta && isset($s_meta[$key])) {
622                        $result = $s_meta[$key];
623                }
624                return($result);
625        }
626}
627
628if(!function_exists('__table_items_count')) {
629        function __table_items_count ($table, $key, $where='') {
630                return (
631                        (($row = spip_fetch_array(spip_query("SELECT COUNT($key) AS n FROM $table $where"))) && $row['n'])
632                        ? intval($row['n'])
633                        : 0
634                );
635        }
636}
637
638if(!function_exists('__table_items_get')) {
639        function __table_items_get ($table, $keys, $where='', $limit='') {
640                $result = array();
641                $sql_result = spip_query("SELECT $keys FROM $table $where $limit");
642                while($row = spip_fetch_array($sql_result)) { $result[] = $row; }
643                return ($result);
644        }
645}
646
647if(!function_exists('__ecrire_metas')) {
648        function __ecrire_metas () {
649                if(version_compare($GLOBALS['spip_version_code'],'1.9300','<')) {
650                        include_spip("inc/meta");
651                        ecrire_metas();
652                }
653                return(true);
654        }
655}
656
657if(!function_exists("array_fill_keys")) {
658        function array_fill_keys($array, $fill) {
659                $result = array();
660                foreach($array as $key) {
661                                $result[$key] = $fill;
662                }
663                return ($result);
664        }
665}
666
667?>
Note: See TracBrowser for help on using the repository browser.