source: spip-zone/_plugins_/spip-listes/spip-listes_1_9_3/inc/spiplistes_api_globales.php @ 43846

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

gagner quelques micro-secondes

  • Property svn:eol-style set to LF
  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 9.0 KB
Line 
1<?php
2
3// inc/spiplistes_api_globales.php
4
5/******************************************************************************************/
6/* SPIP-Listes est un systeme de gestion de listes d'abonnes et d'envoi d'information     */
7/* par email pour SPIP. http://bloog.net/spip-listes                                      */
8/* Copyright (C) 2004 Vincent CARON  v.caron<at>laposte.net                               */
9/*                                                                                        */
10/* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */
11/* de la Licence Publique Generale GNU publiee par la Free Software Foundation            */
12/* (version 2).                                                                           */
13/*                                                                                        */
14/* Ce programme est distribue car potentiellement utile, mais SANS AUCUNE GARANTIE,       */
15/* ni explicite ni implicite, y compris les garanties de commercialisation ou             */
16/* d'adaptation dans un but specifique. Reportez-vous a la Licence Publique Generale GNU  */
17/* pour plus de details.                                                                  */
18/*                                                                                        */
19/* Vous devez avoir recu une copie de la Licence Publique Generale GNU                    */
20/* en meme temps que ce programme ; si ce n'est pas le cas, ecrivez a la                  */
21/* Free Software Foundation,                                                              */
22/* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, Etats-Unis.                   */
23/******************************************************************************************/
24// $LastChangedRevision: 43846 $
25// $LastChangedBy: paladin@quesaco.org $
26// $LastChangedDate: 2011-01-24 18:11:09 +0000 (Mon, 24 Jan 2011) $
27
28if(!defined('_ECRIRE_INC_VERSION')) return;
29
30/*
31        Les fonctions qui doivent etre chargees par tous les scripts sauf inc/spiplistes_api*
32*/
33
34// Certains hebergeurs ont desactive l'acces a syslog (free,...)
35// Recreer les constantes pour trier les journaux
36if(!defined("LOG_WARNING")) {
37        define("LOG_WARNING", 4);
38        define("LOG_DEBUG", 7);
39}
40
41function spiplistes_log($texte, $level = LOG_WARNING) {
42        static $lan, $syslog; 
43        if($lan === null) {
44                $lan = spiplistes_server_rezo_local();
45                $syslog = (($s = spiplistes_pref_lire('opt_console_syslog')) && ($s == 'oui'));
46        }
47        if($lan) {
48                if($syslog) {
49                        $tag = "_";
50                        if(empty($tag)) { 
51                                $tag = basename ($_SERVER['PHP_SELF']); 
52                        }
53                        else if($level == LOG_DEBUG) {
54                                $tag = "DEBUG: ".$tag; 
55                        }
56                        return(
57                                openlog ($tag, LOG_PID | LOG_CONS, LOG_USER) 
58                                        && syslog ($level, (string)$texte) 
59                                        &&      closelog()
60                        );
61                }
62                else {
63                        spip_log($texte, _SPIPLISTES_PREFIX);
64                }
65               
66        }
67        else if($level <= LOG_WARNING) {
68                // Taille du log SPIP trop courte en 192
69                // Ne pas envoyer si DEBUG sinon tronque sans cesse
70                // En SPIP 193, modifier globale $taille_des_logs pour la rotation
71                spip_log($texte, _SPIPLISTES_PREFIX);
72        }
73        return(true);
74}
75
76function spiplistes_server_rezo_local () {
77       
78        static $islan;
79       
80        if($islan === null) {
81                $adr = $_SERVER['SERVER_ADDR'];
82                $islan =
83                        ($adr && (
84                                          (strpos(192.168, $adr) === false)
85                                   || (strpos(127.0, $adr) === false)
86                                   )
87                        );
88        }
89        return($islan);
90}
91
92// CP-20080324
93// SPIP 1.9.2e: $spip_version_branche = null; $spip_version_affichee = '1.9.2e'; $spip_version_code = 1.9208;
94// SPIP 1.9.2f: $spip_version_branche = null; $spip_version_affichee = '1.9.2f'; $spip_version_code = 1.9208;
95// SPIP 1.9.2g: $spip_version_branche = null; $spip_version_affichee = '1.9.2g'; $spip_version_code = 1.9208;
96// SPIP 2.0.0: $spip_version_branche = "2.0.0"; $spip_version_affichee = "$spip_version_branche"; $spip_version_code = 12691;
97// SPIP 2.0.1: $spip_version_branche = "2.0.1"; $spip_version_affichee = "$spip_version_branche"; $spip_version_code = 12691;
98// SPIP 2.0.2: $spip_version_branche = "2.0.2"; $spip_version_affichee = "$spip_version_branche"; $spip_version_code = 12691;
99function spiplistes_spip_est_inferieur_193 () {
100        static $is_inf;
101        if($is_inf===NULL) {
102                $is_inf = version_compare($GLOBALS['spip_version_code'],'1.9300','<');
103        }
104        return($is_inf);
105}
106
107
108/*
109 * ecrire dans la table 'spip_meta' le champ...
110 * en general pour les preferences
111 * @return true
112 */
113function spiplistes_ecrire_metas() {
114        if(spiplistes_spip_est_inferieur_193()) { 
115                include_spip("inc/meta");
116                ecrire_metas();
117        }
118        return(true);
119}
120
121//CP-20080512
122function spiplistes_pref_lire ($key) { 
123        return(spiplistes_lire_key_in_serialized_meta($key, _SPIPLISTES_META_PREFERENCES));
124}
125
126/*
127 * lecture dans les metas, format serialise
128 * @return
129 * @param $meta_name Object
130 */
131function spiplistes_lire_serialized_meta ($meta_name) {
132        if(isset($GLOBALS['meta'][$meta_name])) {
133                if(!empty($GLOBALS['meta'][$meta_name])) {
134                        return(unserialize($GLOBALS['meta'][$meta_name]));
135                }
136                else spiplistes_log("erreur sur meta $meta_name (vide)", _SPIPLISTES_LOG_DEBUG);
137        }
138        return(false);
139}
140
141/*
142 * lecture d'une cle dans la meta serialisee
143 * @return
144 * @param $key Object
145 * @param $meta_name Object
146 */
147function spiplistes_lire_key_in_serialized_meta ($key, $meta_name) {
148        $result = false;
149        $s_meta = spiplistes_lire_serialized_meta($meta_name);
150        if($s_meta && isset($s_meta[$key])) {
151                $result = $s_meta[$key];
152        } 
153        return($result);
154}
155
156/*
157 * ecriture dans les metas, format serialise
158 * @return
159 * @param $key la cle meta a appliquer
160 * @param $value sa valeur
161 * @param $meta_name nom du champ meta
162 */
163function spiplistes_ecrire_key_in_serialized_meta ($key, $value, $meta_name) {
164        if(isset($GLOBALS['meta'][$meta_name])) {
165                $s_meta = unserialize($GLOBALS['meta'][$meta_name]);
166                $s_meta[$key] = $value;
167                ecrire_meta($meta_name, serialize($s_meta));
168                return(true);
169        }
170        else return(false);
171}
172
173
174/*
175 * @return la version du fichier plugin.xml
176 */
177function spiplistes_real_version_get ($prefix) {
178        static $r;
179        if($r === null) {
180                $r = spiplistes_real_tag_get($prefix, 'version');
181        }
182        return ($r);
183}
184
185/*
186 * renvoie la version_base du fichier plugin.xml
187 */
188function spiplistes_real_version_base_get ($prefix) {
189        $r = spiplistes_real_tag_get($prefix, 'version_base');
190        return ($r);
191}
192
193function spiplistes_current_version_get ($prefix) {
194        global $meta; 
195        return $meta[$prefix."_version"];
196}
197
198function spiplistes_real_tag_get ($prefix, $s) {
199        include_spip("inc/plugin");
200        $dir = spiplistes_get_meta_dir($prefix);
201        $f = _DIR_PLUGINS.$dir."/"._FILE_PLUGIN_CONFIG;
202        if(is_readable($f) && ($c = file_get_contents($f))) {
203                $p = array("/<!--(.*?)-->/is","/<\/".$s.">.*/s","/.*<".$s.">/s");
204                $r = array("","","");
205                $r = preg_replace($p, $r, $c);
206        }
207        return(!empty($r) ? $r : false);
208}
209
210/*
211 * renvoie les infos du plugin contenues dans les metas
212 * qui contient 'dir' et 'version'
213 */
214function spiplistes_get_meta_infos ($prefix) {
215        if(isset($GLOBALS['meta']['plugin'])) {
216                $result = unserialize($GLOBALS['meta']['plugin']);
217                $prefix = strtoupper($prefix);
218                if(isset($result[$prefix])) {
219                        return($result[$prefix]);
220                }
221        }
222        return(false);
223}
224
225/*
226 * renvoie le dir du plugin present dans les metas
227 */
228function spiplistes_get_meta_dir($prefix) {
229        $result = false;
230        $info = spiplistes_get_meta_infos($prefix);
231        if(isset($info['dir'])) {
232                $result = $info['dir'];
233        }
234        return($result);
235}
236
237/*
238 * @return la version_base en cours
239 * doc: voir inc/plugin.php sur version_base (plugin.xml)
240 * qui s'appelle base_version en spip_meta %-}
241 */
242function spiplistes_current_version_base_get ($prefix) {
243        global $meta;
244        if(!($vb = $meta[$prefix."_base_version"])) {
245                $vb = spiplistes_real_version_base_get ($prefix);
246        }
247        return($vb);
248}
249
250function spiplistes_sqlerror_log ($trace = "") {
251        if($trace) $trace = " ($trace) ";
252        spiplistes_log("DB ERROR".$trace.": [" . sql_errno() . "] " . sql_error());
253        return(true);
254}
255
256// CP-20090111. log pour les apis
257function spiplistes_log_api ($msg) {
258        static $ii;
259        if($ii === null) {
260                $ii = $GLOBALS['auteur_session']['id_auteur'];
261                $ii = $ii ? "id_auteur #".$ii : "himself";
262        };
263        spiplistes_log("API: $msg by $ii");
264        return(true);
265}
266
267// CP-20090111: adresse mail de l'expediteur par defaut
268function spiplistes_email_from_default () {
269        static $default;
270        if(!$default) {
271                if(
272                        // prendre d'abord celui par defaut de SPIP-Listes
273                        ($result = email_valide($ii = trim($GLOBALS['meta']['email_defaut'])))
274                        // sinon celui du webmaster
275                        || ($result = email_valide($ii = trim($GLOBALS['meta']['email_webmaster'])))
276                ) {
277                        if($result == $ii) {
278                                //$nom = extraire_multi($GLOBALS['meta']['nom_site']);
279                                //$nom = unicode2charset(charset2unicode($nom),$GLOBALS['meta']['spiplistes_charset_envoi']);
280                                //$result = "\"$nom\" <$ii>";
281                        }
282                }
283                else {
284                        spiplistes_log("ERROR: sender email address missing");
285                }
286        }
287        return($result);
288}
289
290// PHP 4 ?
291if(!function_exists('array_combine')) {
292        function array_combine ($keys, $values) {
293                if(is_array($keys) && is_array($values) && (count($keys) == count($values))) {
294                        $keys = array_values($keys);
295                        $values = array_values($values);
296                        $result = array();
297                        foreach($keys as $key => $value) {
298                                $result[$value] = $values[$key];
299                        }
300                }
301                return($result);
302        }
303}
304
305?>
Note: See TracBrowser for help on using the repository browser.