source: spip-zone/_plugins_/menu-navigation_depliant/inc/plugin_globales_lib.php @ 50034

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

compatibilité SPIP 2

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