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

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

suite adaptation mode debug. Sauf erreur, pas de modification dans le deroulement

  • Property svn:eol-style set to LF
  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 9.2 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: 45315 $
25// $LastChangedBy: paladin@quesaco.org $
26// $LastChangedDate: 2011-03-10 21:22:52 +0000 (Thu, 10 Mar 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       
43        static $lan, $syslog, $debug;
44       
45        if ($lan === null) {
46                $lan = spiplistes_server_rezo_local();
47                $syslog = (spiplistes_pref_lire('opt_console_syslog') == 'oui');
48                $debug = (spiplistes_pref_lire('opt_console_debug') == 'oui');
49        }
50        if ($debug || $lan)
51        {
52                if($syslog)
53                {
54                        $tag = '_';
55                        if (empty($tag))
56                        { 
57                                $tag = basename ($_SERVER['PHP_SELF']); 
58                        }
59                        else if ($level == LOG_DEBUG)
60                        {
61                                $tag = 'DEBUG: ' . $tag; 
62                        }
63                        return (
64                                openlog ($tag, LOG_PID | LOG_CONS, LOG_USER) 
65                                        && syslog ($level, (string)$texte) 
66                                        &&      closelog()
67                        );
68                }
69                else {
70                        spip_log ($texte, _SPIPLISTES_PREFIX);
71                }
72               
73        }
74        else if($level <= LOG_WARNING)
75        {
76                // Taille du log SPIP trop courte en 192
77                // Ne pas envoyer si DEBUG sinon tronque sans cesse
78                // En SPIP 193, modifier globale $taille_des_logs pour la rotation
79                spip_log ($texte, _SPIPLISTES_PREFIX);
80        }
81        return (true);
82}
83
84function spiplistes_server_rezo_local () {
85       
86        static $islan;
87       
88        if($islan === null) {
89                $adr = $_SERVER['SERVER_ADDR'];
90                $islan =
91                        ($adr && (
92                                          (strpos($adr, '192.168') !== false)
93                                   || (strpos($adr, '127.0') !== false)
94                                   )
95                        );
96        }
97        return($islan);
98}
99
100// CP-20080324
101// SPIP 1.9.2e: $spip_version_branche = null; $spip_version_affichee = '1.9.2e'; $spip_version_code = 1.9208;
102// SPIP 1.9.2f: $spip_version_branche = null; $spip_version_affichee = '1.9.2f'; $spip_version_code = 1.9208;
103// SPIP 1.9.2g: $spip_version_branche = null; $spip_version_affichee = '1.9.2g'; $spip_version_code = 1.9208;
104// SPIP 2.0.0: $spip_version_branche = "2.0.0"; $spip_version_affichee = "$spip_version_branche"; $spip_version_code = 12691;
105// SPIP 2.0.1: $spip_version_branche = "2.0.1"; $spip_version_affichee = "$spip_version_branche"; $spip_version_code = 12691;
106// SPIP 2.0.2: $spip_version_branche = "2.0.2"; $spip_version_affichee = "$spip_version_branche"; $spip_version_code = 12691;
107function spiplistes_spip_est_inferieur_193 () {
108        static $is_inf;
109        if($is_inf===NULL) {
110                $is_inf = version_compare($GLOBALS['spip_version_code'],'1.9300','<');
111        }
112        return($is_inf);
113}
114
115
116/**
117 * ecrire dans la table 'spip_meta' le champ...
118 * en general pour les preferences
119 * @return true
120 */
121function spiplistes_ecrire_metas() {
122        if(spiplistes_spip_est_inferieur_193()) { 
123                include_spip('inc/meta');
124                ecrire_metas();
125        }
126        return (true);
127}
128
129/**
130 * Lecture d'une pref (meta)
131 * @param $key string
132 * @return string or null
133 */
134function spiplistes_pref_lire ($key) {
135        $s = spiplistes_lire_key_in_serialized_meta($key, _SPIPLISTES_META_PREFERENCES);
136        return ($s);
137}
138
139/*
140 * lecture dans les metas, format serialise
141 * @return
142 * @param $meta_name Object
143 */
144function spiplistes_lire_serialized_meta ($meta_name) {
145        if(isset($GLOBALS['meta'][$meta_name])) {
146                if(!empty($GLOBALS['meta'][$meta_name])) {
147                        return(unserialize($GLOBALS['meta'][$meta_name]));
148                }
149                else spiplistes_log("erreur sur meta $meta_name (vide)", _SPIPLISTES_LOG_DEBUG);
150        }
151        return(false);
152}
153
154/*
155 * lecture d'une cle dans la meta serialisee
156 * @return
157 * @param $key Object
158 * @param $meta_name Object
159 */
160function spiplistes_lire_key_in_serialized_meta ($key, $meta_name) {
161        $result = false;
162        $s_meta = spiplistes_lire_serialized_meta($meta_name);
163        if($s_meta && isset($s_meta[$key])) {
164                $result = $s_meta[$key];
165        } 
166        return($result);
167}
168
169/*
170 * ecriture dans les metas, format serialise
171 * @return
172 * @param $key la cle meta a appliquer
173 * @param $value sa valeur
174 * @param $meta_name nom du champ meta
175 */
176function spiplistes_ecrire_key_in_serialized_meta ($key, $value, $meta_name) {
177        if(isset($GLOBALS['meta'][$meta_name])) {
178                $s_meta = unserialize($GLOBALS['meta'][$meta_name]);
179                $s_meta[$key] = $value;
180                ecrire_meta($meta_name, serialize($s_meta));
181                return(true);
182        }
183        else return(false);
184}
185
186
187/*
188 * @return la version du fichier plugin.xml
189 */
190function spiplistes_real_version_get ($prefix) {
191        static $r;
192        if($r === null) {
193                $r = spiplistes_real_tag_get($prefix, 'version');
194        }
195        return ($r);
196}
197
198/*
199 * renvoie la version_base du fichier plugin.xml
200 */
201function spiplistes_real_version_base_get ($prefix) {
202        $r = spiplistes_real_tag_get($prefix, 'version_base');
203        return ($r);
204}
205
206function spiplistes_current_version_get ($prefix) {
207        global $meta; 
208        return $meta[$prefix."_version"];
209}
210
211function spiplistes_real_tag_get ($prefix, $s) {
212        include_spip("inc/plugin");
213        $dir = spiplistes_get_meta_dir($prefix);
214        $f = _DIR_PLUGINS.$dir."/"._FILE_PLUGIN_CONFIG;
215        if(is_readable($f) && ($c = file_get_contents($f))) {
216                $p = array("/<!--(.*?)-->/is","/<\/".$s.">.*/s","/.*<".$s.">/s");
217                $r = array("","","");
218                $r = preg_replace($p, $r, $c);
219        }
220        return(!empty($r) ? $r : false);
221}
222
223/*
224 * renvoie les infos du plugin contenues dans les metas
225 * qui contient 'dir' et 'version'
226 */
227function spiplistes_get_meta_infos ($prefix) {
228        if(isset($GLOBALS['meta']['plugin'])) {
229                $result = unserialize($GLOBALS['meta']['plugin']);
230                $prefix = strtoupper($prefix);
231                if(isset($result[$prefix])) {
232                        return($result[$prefix]);
233                }
234        }
235        return(false);
236}
237
238/*
239 * renvoie le dir du plugin present dans les metas
240 */
241function spiplistes_get_meta_dir($prefix) {
242        $result = false;
243        $info = spiplistes_get_meta_infos($prefix);
244        if(isset($info['dir'])) {
245                $result = $info['dir'];
246        }
247        return($result);
248}
249
250/*
251 * @return la version_base en cours
252 * doc: voir inc/plugin.php sur version_base (plugin.xml)
253 * qui s'appelle base_version en spip_meta %-}
254 */
255function spiplistes_current_version_base_get ($prefix) {
256        global $meta;
257        if(!($vb = $meta[$prefix."_base_version"])) {
258                $vb = spiplistes_real_version_base_get ($prefix);
259        }
260        return($vb);
261}
262
263function spiplistes_sqlerror_log ($trace = "") {
264        if($trace) $trace = " ($trace) ";
265        spiplistes_log('DB ERROR'.$trace.": [" . sql_errno() . "] " . sql_error());
266        return(true);
267}
268
269// CP-20090111. log pour les apis
270function spiplistes_log_api ($msg) {
271        static $ii;
272        if($ii === null) {
273                $ii = $GLOBALS['auteur_session']['id_auteur'];
274                $ii = $ii ? "id_auteur #".$ii : "himself";
275        };
276        spiplistes_log("API: $msg by $ii");
277        return(true);
278}
279
280// CP-20090111: adresse mail de l'expediteur par defaut
281function spiplistes_email_from_default () {
282        static $default;
283        if(!$default) {
284                if(
285                        // prendre d'abord celui par defaut de SPIP-Listes
286                        ($result = email_valide($ii = trim($GLOBALS['meta']['email_defaut'])))
287                        // sinon celui du webmaster
288                        || ($result = email_valide($ii = trim($GLOBALS['meta']['email_webmaster'])))
289                ) {
290                        if($result == $ii) {
291                                //$nom = extraire_multi($GLOBALS['meta']['nom_site']);
292                                //$nom = unicode2charset(charset2unicode($nom),$GLOBALS['meta']['spiplistes_charset_envoi']);
293                                //$result = "\"$nom\" <$ii>";
294                        }
295                }
296                else {
297                        spiplistes_log("ERROR: sender email address missing");
298                }
299        }
300        return($result);
301}
302
303// PHP 4 ?
304if(!function_exists('array_combine')) {
305        function array_combine ($keys, $values) {
306                if(is_array($keys) && is_array($values) && (count($keys) == count($values))) {
307                        $keys = array_values($keys);
308                        $values = array_values($values);
309                        $result = array();
310                        foreach($keys as $key => $value) {
311                                $result[$value] = $values[$key];
312                        }
313                }
314                return($result);
315        }
316}
317
318?>
Note: See TracBrowser for help on using the repository browser.