source: extensions/Mail_supervisor/mail_super.inc.php @ 10179

Last change on this file since 10179 was 10179, checked in by cljosse, 13 years ago

[extensions] mail_supervisor fix bug with theme: clear/roma

File size: 13.7 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | Piwigo - a PHP based picture gallery                                  |
4// | Mail supervisor                                              |
5// +-----------------------------------------------------------------------+
6// | Copyright(C) 2010      cljosse                                        |
7// +-----------------------------------------------------------------------+
8// | This program is free software; you can redistribute it and/or modify  |
9// | it under the terms of the GNU General Public License as published by  |
10// | the Free Software Foundation                                          |
11// |                                                                       |
12// | This program is distributed in the hope that it will be useful, but   |
13// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
14// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
15// | General Public License for more details.                              |
16// |                                                                       |
17// | You should have received a copy of the GNU General Public License     |
18// | along with this program; if not, write to the Free Software           |
19// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
20// | USA.                                                                  |
21// +-----------------------------------------------------------------------+
22if (!defined('MAIL_SUPERV_PATH'))
23define('MAIL_SUPERV_PATH', PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
24if (!defined('ROOT_URL'))
25define(  'ROOT_URL',  get_root_url().'/' );
26$MAIL_SUPERV_PATH_ABS=str_replace('\\','/',dirname(__FILE__) );
27if (!defined('MAIL_SUPERV_PATH_ABS'))
28define('MAIL_SUPERV_PATH_ABS',   $MAIL_SUPERV_PATH_ABS."/");
29
30class mail_supervisor {
31 //============================================================
32 /*
33  *  admin_menu
34 */
35 static public function admin_menu($menu) {
36  array_push($menu,
37             array( 'NAME' => 'Mail supervisor',
38                            'URL' => get_admin_plugin_menu_link(MAIL_SUPERV_PATH . 'admin/mail_superv_admin.php')
39                        )
40            );
41    return $menu;
42 }
43 //============================================================
44 /*
45  *  init
46 */
47 static public function init() {
48  global  $template,$version,$path_js,$icon_path;
49
50 $theme="default";
51
52  if (PHPWG_VERSION < 2.2 ) {
53    $file =MAIL_SUPERV_PATH_ABS.'admin/header_2_1.tpl' ;
54    if (PHPWG_VERSION < 2.0 ) $path_js =  "template-common/lib/";
55    else $path_js=  'themes/default/js/' ;
56    $themeconf=$template->get_template_vars('themeconf');
57    $theme=$themeconf['id'];
58   
59  } else {
60     $themeconf=$template->get_template_vars('themeconf');
61    $theme=$themeconf['id'];
62    $file =MAIL_SUPERV_PATH_ABS.'admin/header_2_2.tpl' ;
63    $path_js=  'themes/default/js/' ;
64  }
65  if(isset($_GET['action_spam']) and $_GET['action_spam']=="no"){
66    $action_spam = pwg_get_session_var('action_spam') ;
67    pwg_set_session_var('action_spam', "false");
68    unset ($_SESSION['pwg_'.'action_spam']);
69  }
70 
71
72  $template->set_filenames(array('mail_superv_init'=> $file ));
73  if (file_exists ( 'admin/themes/clear/icon/help.png')) $icon_path = 'themes/default/icon/help.png';
74  else  $icon_path =  "admin/template/goto/theme/clear/icon/help.png";
75  $template->assign( 
76      array('theme' => $theme,'version' => $version,
77      'PHPWG_VERSION' =>     PHPWG_VERSION ,
78      'MAIL_SUPERV_PATH' =>  MAIL_SUPERV_PATH ,
79      'path_js' => $path_js,
80      'MAIL_SUPERV_PATH_ABS' => MAIL_SUPERV_PATH_ABS,
81      'action_spam' => pwg_get_session_var('action_spam')
82      )
83  );
84  $template->parse( 'mail_superv_init', false);
85
86  return ;//
87}// function init
88  //============================================================
89  /*
90  * affiche_message
91  */
92  //============================================================
93  static public function affiche_message(){
94    global $template,$infos_message,$erreur_message, $user ,$ip;
95    global $mails_options,$conf,$lang,$page ;
96    global $action_spam ;
97    if (!isset($ip)) {
98      if (getenv("HTTP_CLIENT_IP"))   {
99        $ip=getenv("HTTP_CLIENT_IP");
100      }else{
101          $ip=getenv("REMOTE_ADDR");
102      }
103    }   
104      //  unset ($_SESSION['pwg_'.'action_spam']);
105      $action_spam = pwg_get_session_var('action_spam') ;
106       
107      if  ($action_spam == null or $action_spam == 'false') {
108        $action_spam = kill_list();
109      }
110
111      if (is_bool($action_spam)) $action_spam =($action_spam == true) ? "true" : "false" ; 
112      if ($action_spam == "true" ) {
113        $erreur_message .= $ip . " "  . $action_spam  ;
114        pwg_set_session_var('action_spam', "true");
115        $erreur_message .= "<br />".l10n('Sv_is_a_spam') ;
116        if ($mails_options['no_connect'] == 'on1' ){
117                  //[status] => guest
118                  //[status] => normal
119                  //[status] => webmaster
120          if ($user['status'] != 'webmaster'  )
121            if (!isset($_GET['admin'])) {
122              die('Blacklist : <br />' .$erreur_message. '<br /> Hacking attempt!');
123            }elseif ($_GET['admin'] != 'piwigo'){
124              die('blacklist Hacking attempt!');
125            }
126         unset ($_SESSION['pwg_'.'action_spam']);
127      }
128    }else{
129      pwg_set_session_var('action_spam', "false");
130    }
131
132    if (isset($infos_message))
133      if  ($infos_message != "")  {
134        $infos_message = str_replace("\n",'<br />',$infos_message) ;
135         if (!isset($page['infos'])) $page['infos']=Array($infos_message);
136        else if(is_array($page['infos'])) array_push($page['infos'], $infos_message);
137        else $page['infos']=Array($infos_message);
138        $infos_message="";
139      }   
140    if (isset($erreur_message))
141      if  ($erreur_message != "")  {
142        $erreur_message = str_replace("\n",'<br />',$erreur_message) ;
143        if (!isset($page['errors'])) $page['errors']=Array($erreur_message);
144        else if(is_array($page['errors'])) array_push($page['errors'], $erreur_message);
145        else $page['errors']=Array($erreur_message);
146        $erreur_message ="";
147      } 
148    return $action_spam;
149  } //fin Affiche_message
150
151    //============================================================
152  /*
153    *   Get_geo
154  */
155  static public function Get_geo() {
156    global  $info_geo,$ip,$pays,$region,$ville, $latitude ,$longitude,$mails_options;
157    //===================================================================================   
158    $info_geo = pwg_get_session_var('info_geo'); 
159    if (count($info_geo) > 0){
160        $pays  = $info_geo[0];
161        $region  = $info_geo[1];
162        $ville  = $info_geo[2];
163        $latitude = $info_geo[3];
164        $longitude = $info_geo[4];
165        $ip = $info_geo[5];
166        return true;
167    }
168    //=======================================================================
169    if (isset($_POST['pays'])) {
170      $pays = isset($_POST['pays']) ? $_POST['pays'] : "";
171      $region =  isset($_POST['region']) ? $_POST['region'] :"";
172      $ville = (isset($_POST['ville']))   ? $_POST['ville']: "";
173      $latitude =  isset($_POST['latitude']) ? $_POST['latitude'] : "";
174      $longitude =  isset($_POST['longitude']) ? $_POST['longitude'] : "";
175      $info_geo = array(   $pays ,$region , $ville ,$latitude, $longitude,$_SERVER['REMOTE_ADDR']  );
176      pwg_set_session_var('info_geo', $info_geo);
177        return true;
178      }else{
179
180     $result="";
181      echo '<script type="text/javascript">get_script_geo();</script>';
182   return true;
183      }
184    } // fin get_geo
185    //=====================================================================================
186    /*
187    * Memo_Var
188    */
189    static public function Memo_Var($variables) {
190    ob_start();
191    echo '<pre>';
192    foreach($variables as $key => $line){
193      echo  $key . " =>  " . $line ; 
194      echo "<br />";
195    }       
196    $m= ob_get_contents();
197    ob_end_clean();
198    return $m;
199    }
200  //======================================================================================
201   static public function Get_Version_plugins($dir){
202      $path = $dir;
203      $plg_data = implode( '', file($path.'main.inc.php') );
204      if ( preg_match("|Plugin Name: (.*)|", $plg_data, $val) )
205      {
206        $plugin['name'] = trim( $val[1] );
207      }
208      if (preg_match("|Version: (.*)|", $plg_data, $val))
209      {
210        $plugin['version'] = trim($val[1]);
211      }
212      if ( preg_match("|Plugin URI: (.*)|", $plg_data, $val) )
213      {
214        $plugin['uri'] = trim($val[1]);
215      }
216      if ($desc = load_language('description.txt', $path.'/', array('return' => true)))
217      {
218        $plugin['description'] = trim($desc);
219      }
220      elseif ( preg_match("|Description: (.*)|", $plg_data, $val) )
221      {
222        $plugin['description'] = trim($val[1]);
223      }
224      if ( preg_match("|Author: (.*)|", $plg_data, $val) )
225      {
226        $plugin['author'] = trim($val[1]);
227      }
228      if ( preg_match("|Author URI: (.*)|", $plg_data, $val) )
229      {
230        $plugin['author uri'] = trim($val[1]);
231      }
232      if (!empty($plugin['uri']) and strpos($plugin['uri'] , 'extension_view.php?eid='))
233      {
234        list( , $extension) = explode('extension_view.php?eid=', $plugin['uri']);
235        if (is_numeric($extension)) $plugin['extension'] = $extension;
236      }
237      // IMPORTANT SECURITY !
238      $plugin = array_map('htmlspecialchars', $plugin);
239      return $plugin ;
240    }
241  //==========================================================
242  function Get_Options($parametres,$str_index){
243    global $conf,$mails_options ;
244  $mails_options=  $conf[$str_index];
245 
246 if(isset($mails_options))
247   if ( preg_match("|s:(.*)|", $mails_options, $val) )
248    $parametres =  unserialize($conf['mail_superv']);
249   else{
250     $parametres=explode(",",$mails_options);
251   
252    $def_para->check_mailto="on";
253    $def_para->check_header_carbon="on";
254    $def_para->check_header_text="on";
255    $def_para->no_mail_list="on";
256    $def_para->no_connect="on"; // empeche l'ip de se connecter au site.
257    $def_para->set_auto="on";           // Test a l'ouverture et enregistrement
258    $def_para->ip="127.0.0.1";          // dernièrre adresse IP
259    $def_para->set_id="on";               // enregistrment nouvel 
260    $i=0;
261    foreach ($def_para as $key => $value) {
262        $value=$parametres[$i];
263        unset( $parametres[$i]) ;
264        $parametres[$key]= $value  ; 
265        $i++;
266    }
267     }
268  return mail_supervisor::Set_Options($parametres,$str_index);
269  }       
270  //==========================================================
271  function Set_Options($parametres,$str_index){ 
272  global $infos_message,$conf;
273      foreach ($parametres as $key => $value) { 
274       $parametres[$key]=(isset($_POST[$key]))? "on" : $value ;
275     }
276   $parametres['no_connect']= 'off' ;     
277     return $parametres ;
278  }
279  //==========================================================
280function sauve_options(){
281global $options,$infos_message,$conf,$mails_options  ;
282$infos_message .=l10n("save_config")."<br>";
283 $mails_parametres=mail_supervisor::Set_Options($mails_options,"mail_superv");
284
285 if ( isset($mails_parametres) )
286        {               $query = '
287                UPDATE '.CONFIG_TABLE.'
288                SET value="'.addslashes(serialize($mails_parametres)).'"
289                WHERE param = "mail_superv"
290                LIMIT 1';
291                        pwg_query($query);
292          }
293         
294 }
295
296  //=================================================================================
297  function sauve_donnees(){
298  global $mails_donnees,$superv_champs,$superv_type,$erreur_message ;
299  //=====================================================================       
300  $clefs = $superv_champs ;
301  $valeurs = array();
302  foreach ( $clefs as $champ){
303        $champ = trim($champ);     
304            if ( isset($mails_donnees[  $champ ]) ) {
305              $sep= (is_string($mails_donnees[ $champ ])) ? '"' : '' ;
306          array_push($valeurs , "`".$champ."`" . ' = ' . $sep . $mails_donnees[  $champ ] . $sep)  ;
307            }else{       
308              array_push($valeurs , "`".$champ."`" . ' = ' .  "0"  )  ;
309            }   
310      }
311  $valeurs = implode(", ",$valeurs) ;
312  //=====================================================================
313  $query = '
314          UPDATE '.mail_superv_TABLE.'
315          SET '. $valeurs .'
316                  WHERE `id` = 1 LIMIT 1 ';
317                  ;
318  ob_start();
319  $ret=  pwg_query($query)    ;
320  $m= ob_get_contents();
321  ob_end_clean() ;
322  $erreur_message .= $m ;
323  }
324//=================================================================================
325  function Get_Datas(){
326    global $superv_champs ;
327    $champs = implode(",",$superv_champs );
328      $query = "SELECT ".$champs."
329      FROM ".mail_superv_TABLE."
330      ;";
331                $result = @pwg_query($query); 
332    if (!$result) {
333                        verif_base();
334                        $result = @pwg_query($query);
335                }                                       
336    $data = mysql_fetch_array($result,MYSQL_ASSOC);
337    //====================================================================================
338    $next_day = Str_To_Time( $data['nb_mails_periode'], $data['date_mail'] ); 
339    $next_day = ($next_day >0) ? $next_day :  (604800  + time()) ; 
340    $data['rest_mail'] =    $next_day - time() ;
341    $next_day = Str_To_Time( $data['nb_spams_periode'],$data['date_spam']);
342    $next_day = ($next_day >0) ? $next_day :  (172800  + time()) ;
343    $data['rest_spam'] =  $next_day - time() ;
344    $next_day = Str_To_Time($data['quarantaine_periode'] ,$data['date_quarantaine']);   
345    $next_day = ($next_day >0) ? $next_day :  (172800 + time()) ;
346       
347    if ($data['quarantaine'] == 'true' ) {
348                    $data['reste'] =   ( $next_day )-time() ;
349    }else{
350                    $data['reste'] = 0;
351    }
352       
353            return $data;
354  }
355 }
356?>
Note: See TracBrowser for help on using the repository browser.