Changeset 22118


Ignore:
Timestamp:
Apr 10, 2013, 10:58:35 AM (11 years ago)
Author:
cljosse
Message:

[extensions] mail_superviseur update to piwigo 2.5

Location:
extensions/Mail_supervisor
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • extensions/Mail_supervisor/admin/mail_superv_admin.php

    r19010 r22118  
    265265                        WHERE id = '.$group_id.'
    266266                        ;';
    267             list($group_name) = mysql_fetch_row(pwg_query($query));
     267            list($group_name) = mysqli_fetch_row(pwg_query($query));
    268268        }   else {
    269269                $group_name="";
     
    338338            WHERE id = '.$_POST['group'].'
    339339            ;';
    340         list($group_name) = mysql_fetch_row(pwg_query($query));
     340        list($group_name) = mysqli_fetch_row(pwg_query($query));
    341341
    342342          array_push(
     
    358358  $result = pwg_query($query);
    359359//----------------------------------------------------------------
    360   while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {   
     360  while ($row = mysqli_fetch_array($result,MYSQL_ASSOC)) {   
    361361  $groups[$row['id']] = $row['name'];  }
    362362 //---------------------------------------------------------------
  • extensions/Mail_supervisor/include/Scripts.js

    r11807 r22118  
     1var image_w = jQuery(window).width();
     2var image_h = jQuery(window).height();
    13function blockToggleDisplay(headerId, contentId) {
    24 var revHeader = document.getElementById(headerId);
  • extensions/Mail_supervisor/include/fonctions.php

    r13572 r22118  
    3232global $template ;
    3333
    34 //===============================================
     34//================================================
    3535function corrige_header($Carbonne,$headers,$args,$cl_list_mail,$mailto="")  {
    36   global $mails_options,$conf_mail,$infos_message;
    37   if (!empty($args[$Carbonne]) && count($args[$Carbonne]) > 0 ){
    38     $cl_list_mail  =  str_replace(","," , ",get_strict_email_list(implode(',', $args[$Carbonne])))." \n"  ;
    39     $cl_liste_dest = implode(', ', $args[$Carbonne])." \n";
    40     if ($mails_options['check_header_carbon'] == 'on') {
    41         $headers = preg_replace('/.*'.$Carbonne.':(.*).\n/i', $Carbonne.': '.  $cl_list_mail, $headers);
    42     }
    43     $ret->list_mail = $cl_list_mail ;
    44   } else {
    45     // Raz Bcc, Cc dans headers
    46     $headers = preg_replace('/.*'.$Carbonne.'(.*).\n/i', "" , $headers);
    47     $ret->list_mail = "" ;
    48   }
    49   $ret->headers = $headers ;
    50   return $ret;
     36        global $mails_options,$conf_mail,$infos_message;
     37        if (!empty($args[$Carbonne]) && count($args[$Carbonne]) > 0 ){
     38                $cl_list_mail  =  str_replace(","," , ",get_strict_email_list(implode(',', $args[$Carbonne])))." \n"  ;
     39                $cl_liste_dest = implode(', ', $args[$Carbonne])." \n";
     40                if ($mails_options['check_header_carbon'] == 'on') {
     41                        $headers = preg_replace('/.*'.$Carbonne.':(.*).\n/i', $Carbonne.': '.  $cl_list_mail, $headers);
     42                }
     43                $ret->list_mail = $cl_list_mail ;
     44        } else {
     45                // Raz Bcc, Cc dans headers
     46                $headers = preg_replace('/.*'.$Carbonne.'(.*).\n/i', "" , $headers);
     47                $ret->list_mail = "" ;
     48        }
     49        $ret->headers = $headers ;
     50        return $ret;
    5151}
    5252
    5353function int_to_heure($int){
    54   global $lang,$mails_donnees ;
    55   $v0=Date_to_numeric(l10n('Day') );
    56 
    57 
    58 
    59     $delta=(7*24*60*60) ;
    60     $week = (int) ($int/$delta);
    61     $int= $int-($week*$delta) ;
    62 
    63     $delta=(24*60*60) ;
    64     $day= (int) ($int/$delta);
    65     $int=$int-($day*$delta);
    66 
    67     $delta=(60*60) ;
    68     $heures=(int) ($int/$delta);
    69     $int=$int-($heures*$delta);
    70 
    71     $delta=(60) ;
    72     $minutes=(int) ($int/$delta);
    73     $int= $int - ($minutes*$delta);
    74 
    75     $secondes=(int) ($int);
    76     $day      = substr ('00'.    $day,-2,2);
    77     $heures   = substr ('00'. $heures,-2,2);
    78     $minutes  = substr ('00'.$minutes,-2,2);
    79     $secondes = substr ('00'.$secondes,-2,2);
    80 
    81   $retour="";
    82   $Week=explode(" ",l10n('Week %d'));
    83   $Week= ($Week[0]);
    84 
    85   if ($week > 0 ) $retour .= "+" . $week ." " . $Week ;
    86   if ($day  > 0) $retour .= "+" . $day ." " .l10n('Day');
    87   if ($heures > 0) $retour .= "+" . $heures." " .l10n('Hour');
    88   if ($minutes > 0) $retour .= "+" . $minutes." " .l10n('Minute');
    89   if ($secondes > 0) $retour .= "+" . $secondes." " .l10n('Second');
    90   $retour=str_replace("+0","+",$retour);
    91   //================================================================================================
    92   return $retour;
     54        global $lang,$mails_donnees ;
     55        $v0=Date_to_numeric(l10n('Day') );
     56
     57        $delta=(7*24*60*60) ;
     58        $week = (int) ($int/$delta);
     59        $int= $int-($week*$delta) ;
     60
     61        $delta=(24*60*60) ;
     62        $day= (int) ($int/$delta);
     63        $int=$int-($day*$delta);
     64
     65        $delta=(60*60) ;
     66        $heures=(int) ($int/$delta);
     67        $int=$int-($heures*$delta);
     68
     69        $delta=(60) ;
     70        $minutes=(int) ($int/$delta);
     71        $int= $int - ($minutes*$delta);
     72
     73        $secondes=(int) ($int);
     74        $day      = substr ('00'.    $day,-2,2);
     75        $heures   = substr ('00'. $heures,-2,2);
     76        $minutes  = substr ('00'.$minutes,-2,2);
     77        $secondes = substr ('00'.$secondes,-2,2);
     78
     79        $retour="";
     80        $Week=explode(" ",l10n('Week %d'));
     81        $Week= ($Week[0]);
     82
     83        if ($week > 0 ) $retour .= "+" . $week ." " . $Week ;
     84        if ($day  > 0) $retour .= "+" . $day ." " .l10n('Day');
     85        if ($heures > 0) $retour .= "+" . $heures." " .l10n('Hour');
     86        if ($minutes > 0) $retour .= "+" . $minutes." " .l10n('Minute');
     87        if ($secondes > 0) $retour .= "+" . $secondes." " .l10n('Second');
     88        $retour=str_replace("+0","+",$retour);
     89        //================================================================================================
     90        return $retour;
    9391}
    9492
    9593
    9694function verif_base(){
    97   global $lang,$superv_champs,$superv_type,$superv_bl_champs,$superv_bl_type;
    98   load_language('plugin.lang', MAIL_SUPERV_PATH);
    99   //==============================================================================
    100   create_table(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs,$superv_bl_type) ;
    101   ajust_table(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs,$superv_bl_type)  ;
    102   //==============================================================================
    103   create_table(mail_superv_TABLE,$superv_champs,$superv_type) ;
    104   ajust_table(mail_superv_TABLE,$superv_champs,$superv_type)  ;
    105   //==============================================================================
    106     $valeurs= array (   1,
    107                                   0,
    108                        time(),
    109                      2000,
    110               '"604800"' ,
    111                         0,
    112                    time(),
    113                        10,
    114                '"172800"',
    115                 '"false"',
    116                    time(),
    117                '"172800"',
    118                  '"Init"',
    119    '"'.l10n('Sv_supervisor').'"',
    120     '"'.l10n('hello').'"',
    121         '"Test Mail_supervisor"',
    122         '"Information"'
    123      );
    124     ajout_ligne(mail_superv_TABLE,$superv_champs, $valeurs,false ) ;
     95        global $lang,$superv_champs,$superv_type,$superv_bl_champs,$superv_bl_type;
     96        load_language('plugin.lang', MAIL_SUPERV_PATH);
     97        //==============================================================================
     98        create_table(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs,$superv_bl_type) ;
     99        ajust_table(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs,$superv_bl_type)  ;
     100        //==============================================================================
     101        create_table(mail_superv_TABLE,$superv_champs,$superv_type) ;
     102        ajust_table(mail_superv_TABLE,$superv_champs,$superv_type)  ;
     103        //==============================================================================
     104        $valeurs= array (   1,
     105                        0,
     106                        time(),
     107                        2000,
     108                        '"604800"' ,
     109                        0,
     110                        time(),
     111                        10,
     112                        '"172800"',
     113                        '"false"',
     114                        time(),
     115                        '"172800"',
     116                        '"Init"',
     117                        '"'.l10n('Sv_supervisor').'"',
     118                        '"'.l10n('hello').'"',
     119                        '"Test Mail_supervisor"',
     120                        '"Information"'
     121        );
     122        ajout_ligne(mail_superv_TABLE,$superv_champs, $valeurs,false ) ;
    125123}
    126124//=========================================
    127 function Get_colonnes_de($table)
    128 {
    129     $query = 'DESC '.$table.';';
    130     $result = mysql_query($query);
    131     $columns_of= array();
    132     while ($row = mysql_fetch_row($result))
    133     {
    134       array_push($columns_of, $row[0]);
    135     }
    136 
    137   return $columns_of;
     125function Get_colonnes_de($table){
     126        $query = 'DESC '.$table.';';
     127        $result = pwg_query('desc '.$table);
     128        $columns_of= array();
     129        while ($row = pwg_db_fetch_assoc($result))
     130        {
     131                array_push($columns_of, $row['Field']);
     132        }
     133        pwg_db_free_result($result);
     134        return $columns_of;
    138135}
    139136//=========================================
    140137function get_liste($group_id){
    141 global $conf ;
    142   $query = '
    143 SELECT DISTINCT u.'.$conf['user_fields']['id'].' AS id,
    144                 u.'.$conf['user_fields']['username'].' AS username,
    145                 u.'.$conf['user_fields']['email'].' AS email,
    146                 ui.status,
    147                 ui.enabled_high,
    148                 ui.level
    149   FROM '.USERS_TABLE.' AS u
    150     INNER JOIN '.USER_INFOS_TABLE.' AS ui
    151       ON u.'.$conf['user_fields']['id'].' = ui.user_id
    152     LEFT JOIN '.USER_GROUP_TABLE.' AS ug
    153       ON u.'.$conf['user_fields']['id'].' = ug.user_id
    154   WHERE ug.group_id='.$group_id.' ';
    155  $groups=array();
    156   $datas = pwg_query($query);
    157 
    158   if (!empty($datas)) {
    159     while ($group = mysql_fetch_array($datas,MYSQL_ASSOC)){
    160       if (!empty($group['email'])){
    161          //array_push($groups, format_email($group['username'], $group['email'] ));
    162         array_push($groups,
    163                    array( 'username' => $group['username'],
    164                 'email' => $group['email'],
    165                 'format_email' => format_email($group['username'], $group['email'] )
    166                 )
    167               );
    168       }
    169     }
    170   }
    171   return $groups ;
     138        global $conf ;
     139        $query = '
     140                        SELECT DISTINCT u.'.$conf['user_fields']['id'].' AS id,
     141                                        u.'.$conf['user_fields']['username'].' AS username,
     142                                                        u.'.$conf['user_fields']['email'].' AS email,
     143                                                                        ui.status,
     144                                                                        ui.enabled_high,
     145                                                                        ui.level
     146                                                                        FROM '.USERS_TABLE.' AS u
     147                                                                                        INNER JOIN '.USER_INFOS_TABLE.' AS ui
     148                                                                                                        ON u.'.$conf['user_fields']['id'].' = ui.user_id
     149                                                                                                                        LEFT JOIN '.USER_GROUP_TABLE.' AS ug
     150                                                                                                                                        ON u.'.$conf['user_fields']['id'].' = ug.user_id
     151                                                                                                                                                        WHERE ug.group_id='.$group_id.' ';
     152        $groups=array();
     153        $datas = pwg_query($query);
     154
     155        if (!empty($datas)) {
     156                while ($group = mysqli_fetch_array($datas,MYSQL_ASSOC)){
     157                        if (!empty($group['email'])){
     158                                //array_push($groups, format_email($group['username'], $group['email'] ));
     159                                array_push($groups,
     160                                array( 'username' => $group['username'],
     161                                'email' => $group['email'],
     162                                'format_email' => format_email($group['username'], $group['email'] )
     163                                )
     164                                );
     165                        }
     166                }
     167        }
     168        return $groups ;
    172169
    173170}
     
    176173function create_table($nom_table,$champs,$types)  //mail_superv_TABLE
    177174{
    178     $i=0;
    179     $valeurs=array();
    180   foreach ( $champs as $champ) {
    181       $champ = trim($champ);
    182       array_push($valeurs , " `".$champ."`" . '  ' . $types[ $i] )  ;
    183       $i +=1;
    184     }
    185 
    186 
    187 
    188     if ( count($valeurs) == 0) return ;
    189 
    190     $valeurs=implode(", ",$valeurs) ;
    191     //===============================================================================
    192         $query = "CREATE TABLE IF NOT EXISTS  `" . $nom_table . "` (". $valeurs . " , PRIMARY KEY  (`id` ) ) ENGINE=MyISAM  ;";
    193              if ( pwg_query($query) ) return ;
    194                 die("ERREUR CREATION ".$query);
     175        $i=0;
     176        $valeurs=array();
     177        foreach ( $champs as $champ) {
     178                $champ = trim($champ);
     179                array_push($valeurs , " `".$champ."`" . '  ' . $types[ $i] )  ;
     180                $i +=1;
     181        }
     182        if ( count($valeurs) == 0) return ;
     183        $valeurs=implode(", ",$valeurs) ;
     184        //===============================================================================
     185        $query = "CREATE TABLE IF NOT EXISTS  `" . $nom_table . "` (". $valeurs . " , PRIMARY KEY  (`id` ) ) ENGINE=MyISAM  ;";
     186        if ( pwg_query($query) ) return ;
     187        die("ERREUR CREATION ".$query);
    195188
    196189
     
    198191//===========================================================
    199192function ajust_table($nom_table,$champs,$types){  //mail_superv_TABLE
    200 global $infos_message ;
    201 $colonnes = Get_colonnes_de($nom_table);
    202     $data =     $types ;
    203     $i=0;
    204     $valeurs=array();
    205     foreach ( $champs as $champ) {
    206      $champ = trim($champ);
    207       if (!in_array( $champ,$colonnes)) {
    208          array_push($valeurs , " ADD `".$champ."`" . '  ' . $data[  $i] )  ;
    209      }
    210      $i +=1;
    211 
    212     }
    213 //=============================================================================
    214     if ( count($valeurs) == 0) return ;
    215      $valeurs=implode(", ",$valeurs) ;
    216     //===============================================================================
    217         $query = "ALTER TABLE `" . $nom_table . "` ". $valeurs ;
    218             if (   pwg_query($query)) return ;
    219         die($query);
     193        global $infos_message ;
     194        $colonnes = Get_colonnes_de($nom_table);
     195        $data =     $types ;
     196        $i=0;
     197        $valeurs=array();
     198        foreach ( $champs as $champ) {
     199                $champ = trim($champ);
     200                if (!in_array( $champ,$colonnes)) {
     201                        array_push($valeurs , " ADD `".$champ."`" . '  ' . $data[  $i] )  ;
     202                }
     203                $i +=1;
     204
     205        }
     206        //=============================================================================
     207        if ( count($valeurs) == 0) return ;
     208        $valeurs=implode(", ",$valeurs) ;
     209        //===============================================================================
     210        $query = "ALTER TABLE `" . $nom_table . "` ". $valeurs ;
     211        if (   pwg_query($query)) return ;
     212        die($query);
    220213}
    221214//==============================================================================
    222 function ajout_ligne($nom_table,$champs,$valeurs,$force)
    223 {
    224   if (!$force) {
    225      $query = "
    226             SELECT `id` , COUNT(`id`) as total
    227             FROM `".$nom_table."` GROUP by  `id`
    228         ;";
    229       list($count) = mysql_fetch_row(pwg_query($query));
    230 
    231 
    232 }else{
    233 
    234         $count = 0 ;
    235 }
    236 $data=array();
    237 
    238   $query = " SELECT *    FROM `".$nom_table."`        ;";   
    239       $datas = pwg_query($query);
    240     if (!empty($datas)) {
    241     while ($row = mysql_fetch_array($datas,MYSQL_ASSOC)){
    242     array_push($data,$row);   
    243     }
    244   }
    245 $count=  count($data);
    246   if ($count == 0) {
    247       $n_champs=implode(",",$champs);
    248       $n_valeurs=implode(",",$valeurs);
    249        $query = "
    250         INSERT INTO `".$nom_table."` (". $n_champs.")
    251         VALUES ( ". $n_valeurs .")";
    252 
    253         if (pwg_query($query)) return ;
    254         die("fonction.php 256".$query);
    255 
    256   }
    257  
     215function ajout_ligne($nom_table,$champs,$valeurs,$force){
     216        if (!$force) {
     217                $query = "
     218                                SELECT `id` , COUNT(`id`) as total
     219                                FROM `".$nom_table."` GROUP by  `id`
     220                                                ;";
     221                $datas=pwg_query($query) ;
     222                if (!empty($datas)) {
     223                        list($count) = mysqli_fetch_row($datas);
     224                }
     225
     226        }else{
     227                $count = 0 ;
     228        }
     229
     230        $data=array();
     231        $query = " SELECT *    FROM `".$nom_table."`        ;";
     232        $datas = pwg_query($query);
     233        if (!empty($datas)) {
     234                while ($row = mysqli_fetch_array($datas,MYSQL_ASSOC)){
     235                        array_push($data,$row);
     236                }
     237        }
     238
     239        $count=  count($data);
     240        if ($count == 0) {
     241                $n_champs=implode(",",$champs);
     242                $n_valeurs=implode(",",$valeurs);
     243                $query = "
     244                                INSERT INTO `".$nom_table."` (". $n_champs.")
     245                                                VALUES ( ". $n_valeurs .")";
     246
     247                if (pwg_query($query)) return ;
     248                die("fonction.php 256".$query);
     249        }
     250
    258251}
    259252//=====================================================================
    260253function verif_mails_donnees(){
    261   global $mails_donnees,$infos_message,$erreur_message,$page;
    262 
    263 if (!is_numeric($mails_donnees['nb_mails_periode'])){
    264   $periode = Str_To_Time( $mails_donnees['nb_mails_periode'],0);
    265   $mails_donnees['nb_mails_periode']= ($periode > 0) ? $periode : '604800' ;
    266  }
    267 if (!is_numeric($mails_donnees['nb_spams_periode'])){
    268   $periode=Str_To_Time( $mails_donnees['nb_spams_periode'],0);
    269   $mails_donnees['nb_spams_periode']= ($periode > 0) ? $periode : '172800' ; ;
    270  }
    271 if (!is_numeric($mails_donnees['quarantaine_periode'])){
    272   $periode=Str_To_Time( $mails_donnees['quarantaine_periode'],0);
    273   $mails_donnees['quarantaine_periode']= ($periode > 0) ? $periode : '172800' ;
    274  }
    275     if  ($infos_message != "")  {
    276         array_push($page['infos'],  $infos_message);
    277         $infos_message="";
    278     }
    279     if  ($erreur_message != "")  {
    280         array_push($page['errors'], $erreur_message);
    281         $erreur_message ="";
    282     }
     254        global $mails_donnees,$infos_message,$erreur_message,$page;
     255
     256        if (!is_numeric($mails_donnees['nb_mails_periode'])){
     257                $periode = Str_To_Time( $mails_donnees['nb_mails_periode'],0);
     258                $mails_donnees['nb_mails_periode']= ($periode > 0) ? $periode : '604800' ;
     259        }
     260        if (!is_numeric($mails_donnees['nb_spams_periode'])){
     261                $periode=Str_To_Time( $mails_donnees['nb_spams_periode'],0);
     262                $mails_donnees['nb_spams_periode']= ($periode > 0) ? $periode : '172800' ; ;
     263        }
     264        if (!is_numeric($mails_donnees['quarantaine_periode'])){
     265                $periode=Str_To_Time( $mails_donnees['quarantaine_periode'],0);
     266                $mails_donnees['quarantaine_periode']= ($periode > 0) ? $periode : '172800' ;
     267        }
     268        if  ($infos_message != "")  {
     269                array_push($page['infos'],  $infos_message);
     270                $infos_message="";
     271        }
     272        if  ($erreur_message != "")  {
     273                array_push($page['errors'], $erreur_message);
     274                $erreur_message ="";
     275        }
    283276
    284277}
    285278//=======================================================================
    286279function Date_to_numeric( $Valeurs ){
    287 global $lang,$erreur_message,$infos_message;
    288 
    289 $a_ajouter = $Valeurs ;
    290 
    291 
    292 if (!isset($lang['Sv_second'])) {
    293   $Week=explode(" ",l10n('Week %d'));
    294   $Week= ($Week[0]);
    295 
    296   $lang['Sv_week'] = $Week;
    297   $lang['Sv_day'] =   l10n('Day')  ;
    298   $lang['Sv_hour'] =   l10n('Hour')  ;
    299   $lang['Sv_minute'] =   l10n('Minute') ;
    300   $lang['Sv_second'] =   l10n('Second');
    301 
    302   $lang['Sv_'. $lang['Sv_week']] = 'week';
    303   $lang['Sv_'. $lang['Sv_day']] = 'day';
    304   $lang['Sv_'. $lang['Sv_hour']] = 'hour';
    305   $lang['Sv_'. $lang['Sv_minute']] = 'minute';
    306   $lang['Sv_'. $lang['Sv_second']] = 'second';
    307 
    308 }
    309 //--- traduction --> anglais ---
    310 
    311  //========= suppression numeric et symbole ==========
    312 $new_valeur =( preg_replace("/[0-9+\-.*\/()%]/"," ",$a_ajouter));
    313 $nv =  trim( sup_double_espace($new_valeur)) ;
    314 
    315 
    316 
    317     $conv['week']= (7*24*60*60);
    318     $conv['day']= (24*60*60);
    319     $conv['hour']=  (60*60) ;
    320     $conv['minute']=  60 ;
    321     $conv['second']= 1;
    322 
    323   $nv = explode(" ", $nv );
    324 
    325   foreach($nv as $nv1){
    326     if (!isset($lang['Sv_'. $nv1]) ) {
    327     //==== au cas pluriel ===
    328       $nv0 =  substr($nv1, 0,-1) ;
    329       $a_ajouter= str_replace( $nv1,$nv0,   $a_ajouter);
    330       $nv1 = $nv0 ;
    331     }
    332     if (!isset($lang['Sv_'. $nv1]) ) {
    333       $erreur_message .= $nv1. " ".l10n('not_found')."<br />";
    334       //  die($erreur_message);
    335     }else {
    336       ob_start();
    337       $match = $conv[strtolower($lang['Sv_'. $nv1])] ;
    338       $a_ajouter = str_replace($nv1," ". $match  ." ",$a_ajouter) ;
    339       $erreur_message .= ob_get_contents();
    340       ob_end_clean();
    341       }
    342   }
    343 
    344   $a_ajouter = "+ " .   $a_ajouter ;
    345   $a_ajouter=sup_double_espace($a_ajouter);
    346   $v1 = array('- ','+ ',' -', ' +', ' ');
    347   $v2 = array('-' ,'+' ,'|-', '|+', "*");
    348 
    349   $new_valeur =  str_replace($v1,$v2,$a_ajouter) ;
    350   $new_valeur =  str_replace('++','+',$new_valeur ) ;
    351 
    352   return   $new_valeur;
     280        global $lang,$erreur_message,$infos_message;
     281
     282        $a_ajouter = $Valeurs ;
     283
     284
     285        if (!isset($lang['Sv_second'])) {
     286                $Week=explode(" ",l10n('Week %d'));
     287                $Week= ($Week[0]);
     288
     289                $lang['Sv_week'] = $Week;
     290                $lang['Sv_day'] =   l10n('Day')  ;
     291                $lang['Sv_hour'] =   l10n('Hour')  ;
     292                $lang['Sv_minute'] =   l10n('Minute') ;
     293                $lang['Sv_second'] =   l10n('Second');
     294
     295                $lang['Sv_'. $lang['Sv_week']] = 'week';
     296                $lang['Sv_'. $lang['Sv_day']] = 'day';
     297                $lang['Sv_'. $lang['Sv_hour']] = 'hour';
     298                $lang['Sv_'. $lang['Sv_minute']] = 'minute';
     299                $lang['Sv_'. $lang['Sv_second']] = 'second';
     300
     301        }
     302        //--- traduction --> anglais ---
     303
     304        //========= suppression numeric et symbole ==========
     305        $new_valeur =( preg_replace("/[0-9+\-.*\/()%]/"," ",$a_ajouter));
     306        $nv =  trim( sup_double_espace($new_valeur)) ;
     307
     308
     309
     310        $conv['week']= (7*24*60*60);
     311        $conv['day']= (24*60*60);
     312        $conv['hour']=  (60*60) ;
     313        $conv['minute']=  60 ;
     314        $conv['second']= 1;
     315
     316        $nv = explode(" ", $nv );
     317
     318        foreach($nv as $nv1){
     319                if (!isset($lang['Sv_'. $nv1]) ) {
     320                        //==== au cas pluriel ===
     321                        $nv0 =  substr($nv1, 0,-1) ;
     322                        $a_ajouter= str_replace( $nv1,$nv0,   $a_ajouter);
     323                        $nv1 = $nv0 ;
     324                }
     325                if (!isset($lang['Sv_'. $nv1]) ) {
     326                        $erreur_message .= $nv1. " ".l10n('not_found')."<br />";
     327                        //  die($erreur_message);
     328                }else {
     329                        ob_start();
     330                        $match = $conv[strtolower($lang['Sv_'. $nv1])] ;
     331                        $a_ajouter = str_replace($nv1," ". $match  ." ",$a_ajouter) ;
     332                        $erreur_message .= ob_get_contents();
     333                        ob_end_clean();
     334                }
     335        }
     336
     337        $a_ajouter = "+ " .   $a_ajouter ;
     338        $a_ajouter=sup_double_espace($a_ajouter);
     339        $v1 = array('- ','+ ',' -', ' +', ' ');
     340        $v2 = array('-' ,'+' ,'|-', '|+', "*");
     341
     342        $new_valeur =  str_replace($v1,$v2,$a_ajouter) ;
     343        $new_valeur =  str_replace('++','+',$new_valeur ) ;
     344
     345        return   $new_valeur;
    353346}
    354347//=====================================================================
    355348function Str_To_Time( $ajout,$init_date)
    356349{
    357 //========================================================
    358   global $erreur_message,$infos_message,$user;
    359   global $lang;
    360 
    361   $ajout=ucwords ($ajout);
    362 
    363 
    364 if (is_numeric($ajout))
    365  $valeur=   $ajout ;
    366 else
    367 {
    368  $valeur= Date_to_numeric( $ajout) ;
    369 
    370  }
    371 
    372 $new_valeur = explode( "|", $valeur );
    373 
    374 $p = $init_date ;
    375 $n0=0;
    376 $erreur = false;
    377 
    378     //$new_valeur = $a_ajouter + $init_date ;
    379     foreach($new_valeur as $nv)
    380     {
    381     $return = matheval($nv) ;
    382          if (strpos("error",$return)===false) {
    383             $p += $return ;
    384          }else {
    385             $erreur_message .=   "[" . $ajout . "] --> " . l10n('Sv_syntax_error') . " : " .  $nv ."<br />";
    386             $erreur = true;
    387          }
    388 
    389 
    390     }
    391     if ($erreur) $p = -1000 ;
    392 return    intval($p) ;
     350        //========================================================
     351        global $erreur_message,$infos_message,$user;
     352        global $lang;
     353
     354        $ajout=ucwords ($ajout);
     355
     356
     357        if (is_numeric($ajout))
     358                $valeur=   $ajout ;
     359        else
     360        {
     361                $valeur= Date_to_numeric( $ajout) ;
     362
     363        }
     364
     365        $new_valeur = explode( "|", $valeur );
     366
     367        $p = $init_date ;
     368        $n0=0;
     369        $erreur = false;
     370
     371        //$new_valeur = $a_ajouter + $init_date ;
     372        foreach($new_valeur as $nv)
     373        {
     374                $return = matheval($nv) ;
     375                if (strpos("error",$return)===false) {
     376                        $p += $return ;
     377                }else {
     378                        $erreur_message .=   "[" . $ajout . "] --> " . l10n('Sv_syntax_error') . " : " .  $nv ."<br />";
     379                        $erreur = true;
     380                }
     381
     382
     383        }
     384        if ($erreur) $p = -1000 ;
     385        return    intval($p) ;
    393386
    394387}
    395388//=====================================================================================
    396389function matheval($equation)
    397   {
    398 
    399   $return="error";
    400 
    401 
    402     $equation = preg_replace("/[^0-9+\-.*\/()%]/","",$equation);
    403     $equation = preg_replace("/([+-])([0-9]{1})(%)/","*(1\$1.0\$2)",$equation);
    404     $equation = preg_replace("/([+-])([0-9]+)(%)/","*(1\$1.\$2)",$equation);
    405     $equation = preg_replace("/([0-9]+)(%)/",".\$1",$equation);
    406 
    407     if ( $equation == "" )
    408     {
    409       $return = 0;
    410     }     else  {
    411        @eval("\$return=" . $equation . ";" );
    412     }
    413  return $return;
    414 
    415   }
     390{
     391
     392        $return="error";
     393
     394
     395        $equation = preg_replace("/[^0-9+\-.*\/()%]/","",$equation);
     396        $equation = preg_replace("/([+-])([0-9]{1})(%)/","*(1\$1.0\$2)",$equation);
     397        $equation = preg_replace("/([+-])([0-9]+)(%)/","*(1\$1.\$2)",$equation);
     398        $equation = preg_replace("/([0-9]+)(%)/",".\$1",$equation);
     399
     400        if ( $equation == "" )
     401        {
     402                $return = 0;
     403        }     else  {
     404                @eval("\$return=" . $equation . ";" );
     405        }
     406        return $return;
     407
     408}
    416409
    417410//======================================================================================
    418411function sup_double_espace($chaine){
    419 global $erreur_message;
    420     $str_temp = $chaine." ";
    421     $sep=" ";
    422     $chaine = trim($chaine);
    423     if ($chaine=="") return ;
    424     $existe = (strpos($sep.$sep,$chaine )===false) ;
    425      while  ($existe ){
    426          $str_temp = str_replace($sep.$sep, $sep, $chaine );
    427             if($str_temp == $chaine ) return $chaine ;
    428 //          $erreur_message .=  $mail_supervisor->Memo_Var($str_temp) ;
    429             $chaine  = $str_temp;
    430             $existe =  (strpos($sep.$sep,$chaine )===false) ;
    431         }
    432     return $chaine;
     412        global $erreur_message;
     413        $str_temp = $chaine." ";
     414        $sep=" ";
     415        $chaine = trim($chaine);
     416        if ($chaine=="") return ;
     417        $existe = (strpos($sep.$sep,$chaine )===false) ;
     418        while  ($existe ){
     419                $str_temp = str_replace($sep.$sep, $sep, $chaine );
     420                if($str_temp == $chaine ) return $chaine ;
     421                //          $erreur_message .=  $mail_supervisor->Memo_Var($str_temp) ;
     422                $chaine  = $str_temp;
     423                $existe =  (strpos($sep.$sep,$chaine )===false) ;
     424        }
     425        return $chaine;
    433426}
    434427//==================== TEST black_liste ============================================
    435428function kill_list() {
    436   global $pays,$region,$ville,$ip ;
    437   global $erreur_message,$infos_message,$conf;
    438   global $conf, $user, $page;
    439   global $mails_options ;
    440   global $superv_bl_champs,$superv_bl_type ;
    441   global $nb ;
    442   if (!isset($ip)) {
    443     if (getenv("HTTP_CLIENT_IP"))   {
    444       $ip=getenv("HTTP_CLIENT_IP");
    445     }else{
    446       $ip=getenv("REMOTE_ADDR");
    447     }
    448   }
    449   $champs=implode(',',$superv_bl_champs);
    450    $query = "SELECT ".$champs.",COUNT(`ip`) as total
    451   FROM `".MAIL_BLACK_LISTE_TABLE."`
    452         WHERE '".$ip."' LIKE `ip`
    453         GROUP by `ip`
    454   ;";
    455     $result = @pwg_query($query);
    456      if (!$result) {
    457             verif_base();
    458             $result = @pwg_query($query);
    459             }
    460       $datas = mysql_fetch_array($result,MYSQL_ASSOC);
    461     $nb = $datas['total']|0;
    462     //=======================================================================
    463     if ($mails_options['set_auto'] == 'on') {
    464       global $user_name,$mail_adresse;
    465 
    466        if (isset($nb) && $nb>0) {
    467        //if (test_spam($ip,$user['username'] ,$user['email']))  // ne plus tester automatiquement .
    468             if ($nb==0) {
    469               $valeurs=array( 'NULL',
    470                    "'".$ip."'",
    471                             "'".$pays."'",
    472                             "'".$region."'",
    473                             "'".$ville."'",
    474                             "'".$user['email']."'",
    475                             "'".$user['username']."'",
    476                             $nb+1
    477                 );
    478               ajout_ligne(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs, $valeurs,$nb==0) ;
    479             }else{
    480              $mail_supervisor->Get_geo();
    481             $nb +=1;
    482                  $query ="UPDATE " . MAIL_BLACK_LISTE_TABLE . " SET ";
    483                  if (isset($_POST['pays']))
    484                  $query .= "`pays` = '". $pays ."',
    485                     `region` = '" . $region ."',
    486                     `ville` = '" . $ville . "',
    487                     ";
    488                  $query .= "`adresse` = '".$user['email']."',
    489                     `fai` = '".$user['username']."',
    490                     `nb` = " . $nb . "
    491                  WHERE '".$ip."' like `ip` ";
    492                        pwg_query($query );
    493             }
    494          $erreur_message .= $pays . $ip ." <br />User Name :".$user['username']."<br />User Mail :".$user['email'] . ' -----> ' . l10n('Sv_set_black_liste') ;
    495        // die($nb." ".$ip." ".$user['username']." ".$user['email']);
    496 
    497        return true ;
    498       }
    499     }
    500  //==============================================================================
    501      if (empty($mail_supervisor))  {
    502       $mail_supervisor = new mail_supervisor();
    503       }
    504 
    505  if ( $mails_options['ip'] == $ip ) return ($nb > 0) ;
    506    $ip0= $mails_options['ip'] ;
    507    $mails_options['ip'] = $ip ;
    508 
    509     $mail_supervisor->sauve_options();
    510     if (  $nb > 0 )
    511     {
    512            $query = "
    513             SELECT ".$champs.",COUNT(`id`) as total
    514             FROM `".MAIL_BLACK_LISTE_TABLE."`
    515             WHERE '".$ip."' = `ip`
    516             GROUP by `ip`
    517         ;";
    518          $result = @pwg_query($query);
    519 
    520     if (!$result) {
    521                     verif_base();
    522                     $result = @pwg_query($query);
    523                     }
    524         $datas = mysql_fetch_array($result,MYSQL_ASSOC);
    525          $nb = $datas['total'];
    526 
    527         $row  = mysql_fetch_row(pwg_query($query));
    528         $nb =  ($row[7]);
    529         $erreur_message .= $ip0 . ' | ' .$ip . ' | ' . $pays . ' | ' . $region . ' | ' . $ville . ' ' . $nb . ' ==> ';
    530 
    531      if ($nb == 0)
    532          {
    533             $valeurs=array( 'NULL',
    534                     "'".$ip."'",
    535                     "'".$pays."'",
    536                     "'".$region."'",
    537                     "'".$ville."'",
    538                     "'".$user['email']."'",
    539               "'".$user['username']."'",
    540                     1
    541           );
    542           ajout_ligne(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs, $valeurs,true) ;
    543 
    544          } else {
    545           $nb += 1;
    546      $query ="
    547             UPDATE " . MAIL_BLACK_LISTE_TABLE . "
    548             SET ";
    549         if (isset($_POST['pays']))
    550          $query .= "
    551             `pays` = '". $pays ."',
    552             `region` = '" . $region ."',
    553             `ville` = '" . $ville . "',
    554             ";
    555          $query .= "
    556             `adresse` = '".$user['email']."',
    557             `fai` = '".$user['username']."',
    558             `nb` = " . $nb . "
    559             WHERE '".$ip."' = `ip`
    560             ";
    561 
    562                 pwg_query($query );
    563                 }
    564     }
    565  return ($nb > 0) ;
     429        global $pays,$region,$ville,$ip ;
     430        global $erreur_message,$infos_message,$conf;
     431        global $conf, $user, $page;
     432        global $mails_options ;
     433        global $superv_bl_champs,$superv_bl_type ;
     434        global $nb ;
     435        if (!isset($ip)) {
     436                if (getenv("HTTP_CLIENT_IP"))   {
     437                        $ip=getenv("HTTP_CLIENT_IP");
     438                }else{
     439                        $ip=getenv("REMOTE_ADDR");
     440                }
     441        }
     442        $champs=implode(',',$superv_bl_champs);
     443        $query = "SELECT ".$champs.",COUNT(`ip`) as total
     444                        FROM `".MAIL_BLACK_LISTE_TABLE."`
     445                                        WHERE '".$ip."' LIKE `ip`
     446                                                        GROUP by `ip`
     447                                                        ;";
     448        $result = @pwg_query($query);
     449        if (!$result) {
     450                verif_base();
     451                $result = @pwg_query($query);
     452        }
     453        $datas = mysqli_fetch_array($result,MYSQL_ASSOC);
     454        $nb = $datas['total']|0;
     455        //=======================================================================
     456        if ($mails_options['set_auto'] == 'on') {
     457                global $user_name,$mail_adresse;
     458
     459                if (isset($nb) && $nb>0) {
     460                        //if (test_spam($ip,$user['username'] ,$user['email']))  // ne plus tester automatiquement .
     461                        if ($nb==0) {
     462                                $valeurs=array( 'NULL',
     463                                                "'".$ip."'",
     464                                                "'".$pays."'",
     465                                                "'".$region."'",
     466                                                "'".$ville."'",
     467                                                "'".$user['email']."'",
     468                                                "'".$user['username']."'",
     469                                                $nb+1
     470                                );
     471                                ajout_ligne(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs, $valeurs,$nb==0) ;
     472                        }else{
     473                                $mail_supervisor->Get_geo();
     474                                $nb +=1;
     475                                $query ="UPDATE " . MAIL_BLACK_LISTE_TABLE . " SET ";
     476                                if (isset($_POST['pays']))
     477                                        $query .= "`pays` = '". $pays ."',
     478                                                        `region` = '" . $region ."',
     479                                                                        `ville` = '" . $ville . "',
     480                                                                                        ";
     481                                $query .= "`adresse` = '".$user['email']."',
     482                                                `fai` = '".$user['username']."',
     483                                                                `nb` = " . $nb . "
     484                                                                                WHERE '".$ip."' like `ip` ";
     485                                pwg_query($query );
     486                        }
     487                        $erreur_message .= $pays . $ip ." <br />User Name :".$user['username']."<br />User Mail :".$user['email'] . ' -----> ' . l10n('Sv_set_black_liste') ;
     488                        // die($nb." ".$ip." ".$user['username']." ".$user['email']);
     489
     490                        return true ;
     491                }
     492        }
     493        //==============================================================================
     494        if (empty($mail_supervisor))  {
     495                $mail_supervisor = new mail_supervisor();
     496        }
     497
     498        if ( $mails_options['ip'] == $ip ) return ($nb > 0) ;
     499        $ip0= $mails_options['ip'] ;
     500        $mails_options['ip'] = $ip ;
     501
     502        $mail_supervisor->sauve_options();
     503        if (  $nb > 0 )
     504        {
     505                $query = "
     506                                SELECT ".$champs.",COUNT(`id`) as total
     507                                                FROM `".MAIL_BLACK_LISTE_TABLE."`
     508                                                                WHERE '".$ip."' = `ip`
     509                                                                                GROUP by `ip`
     510                                                                                ;";
     511                $result = @pwg_query($query);
     512
     513                if (!$result) {
     514                        verif_base();
     515                        $result = @pwg_query($query);
     516                }
     517                $datas = mysqli_fetch_array($result,MYSQL_ASSOC);
     518                $nb = $datas['total'];
     519
     520                $row  = mysqli_fetch_row(pwg_query($query));
     521                $nb =  ($row[7]);
     522                $erreur_message .= $ip0 . ' | ' .$ip . ' | ' . $pays . ' | ' . $region . ' | ' . $ville . ' ' . $nb . ' ==> ';
     523
     524                if ($nb == 0)
     525                {
     526                        $valeurs=array( 'NULL',
     527                                        "'".$ip."'",
     528                                        "'".$pays."'",
     529                                        "'".$region."'",
     530                                        "'".$ville."'",
     531                                        "'".$user['email']."'",
     532                                        "'".$user['username']."'",
     533                                        1
     534                        );
     535                        ajout_ligne(MAIL_BLACK_LISTE_TABLE,$superv_bl_champs, $valeurs,true) ;
     536
     537                } else {
     538                        $nb += 1;
     539                        $query ="
     540                                        UPDATE " . MAIL_BLACK_LISTE_TABLE . "
     541                                                        SET ";
     542                        if (isset($_POST['pays']))
     543                                $query .= "
     544                                                `pays` = '". $pays ."',
     545                                                                `region` = '" . $region ."',
     546                                                                                `ville` = '" . $ville . "',
     547                                                                                                ";
     548                        $query .= "
     549                                        `adresse` = '".$user['email']."',
     550                                                        `fai` = '".$user['username']."',
     551                                                                        `nb` = " . $nb . "
     552                                                                                        WHERE '".$ip."' = `ip`
     553                                                                                                        ";
     554
     555                        pwg_query($query );
     556                }
     557        }
     558        return ($nb > 0) ;
    566559}
    567560//=====================================================================================
    568561function test_spam($ip =0,$user_name ='', $mail_adresse = ""){
    569  $buffer="";
    570  global $page,$infos_message;
    571  $src =  "http://www.stopforumspam.com/api?";
    572  $type=array();
    573  $result="";
    574  $ip= sup_double_espace($ip);
    575  if (strlen($ip)>3) {
    576    //==================  Verifie si l'IP est correct  ================================
    577    if (clj_is_ip($ip)){
    578 
    579    } else {
    580    //==================  Verifie si l'adresse mail est correcte  ================================
    581          if( clj_is_mail($ip) ){
    582              $mail_adresse=$ip ;
    583              $ip="";
    584         }
    585         else
    586         {
    587    //==================  Login  ================
    588           $user_name=$ip;
    589           $ip="";
    590         }
    591    }
    592    //=============================================================================
    593  }
    594 
    595  $user_name=str_replace(" ","%20",trim($user_name));
    596  if ($user_name==l10n('Sv_guest')) $user_name="";
    597  $user_name="";  // ne plus tester sur le login.
    598  $mail_adresse =str_replace(" ","%20",trim($mail_adresse));
    599  if ( strlen($user_name) > 3)     $type[]="username=$user_name" ;
    600  if ( strlen($mail_adresse) > 3)   $type[]="email=".$mail_adresse ;
    601  if ( strlen($ip) > 3)   $type[]="ip=".$ip ;
    602  foreach  ( $type as $fil ) {
    603   $resultat="";
    604   if (  clj_fetchRemote($src.$fil , $resultat,1))
    605    $result .= $resultat.'<br />'  ;
    606  }
    607 
    608  return !(strpos(  $result ,'yes' ) === false) ;
     562        $buffer="";
     563        global $page,$infos_message;
     564        $src =  "http://www.stopforumspam.com/api?";
     565        $type=array();
     566        $result="";
     567        $ip= sup_double_espace($ip);
     568        if (strlen($ip)>3) {
     569                //==================  Verifie si l'IP est correct  ================================
     570                if (clj_is_ip($ip)){
     571
     572                } else {
     573                        //==================  Verifie si l'adresse mail est correcte  ================================
     574                        if( clj_is_mail($ip) ){
     575                                $mail_adresse=$ip ;
     576                                $ip="";
     577                        }
     578                        else
     579                        {
     580                                //==================  Login  ================
     581                                $user_name=$ip;
     582                                $ip="";
     583                        }
     584                }
     585                //=============================================================================
     586        }
     587
     588        $user_name=str_replace(" ","%20",trim($user_name));
     589        if ($user_name==l10n('Sv_guest')) $user_name="";
     590        $user_name="";  // ne plus tester sur le login.
     591        $mail_adresse =str_replace(" ","%20",trim($mail_adresse));
     592        if ( strlen($user_name) > 3)     $type[]="username=$user_name" ;
     593        if ( strlen($mail_adresse) > 3)   $type[]="email=".$mail_adresse ;
     594        if ( strlen($ip) > 3)   $type[]="ip=".$ip ;
     595        foreach  ( $type as $fil ) {
     596                $resultat="";
     597                if (  clj_fetchRemote($src.$fil , $resultat,1))
     598                        $result .= $resultat.'<br />'  ;
     599        }
     600
     601        return !(strpos(  $result ,'yes' ) === false) ;
    609602
    610603}
    611604//==================================================================
    612605function lire_fichier_distant($fichier){
    613   $buffer="";
    614   $handle =  @fopen($fichier,"r");
    615   if ($handle) {
    616     while (!feof($handle)) {
    617         $buffer .= fgets($handle, 4096);
    618           }
    619               fclose($handle);
    620       }
    621 
    622   return  $buffer ;
     606        $buffer="";
     607        $handle =  @fopen($fichier,"r");
     608        if ($handle) {
     609                while (!feof($handle)) {
     610                        $buffer .= fgets($handle, 4096);
     611                }
     612                fclose($handle);
     613        }
     614
     615        return  $buffer ;
    623616
    624617}
    625618//================================================
    626619function clj_is_ip($ip){
    627 if (preg_match("/^(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]{1}[0-9]|[1-9])\.){1}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9])\.){2}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9]){1}))$/",$ip))    return true ;
     620        if (preg_match("/^(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]{1}[0-9]|[1-9])\.){1}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9])\.){2}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9]){1}))$/",$ip))    return true ;
    628621
    629622}
     
    632625{
    633626
    634  if(preg_match('/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$/' ,$mail)) return true ;
    635   if(preg_match('/#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#/' ,$mail)) return true ;
     627        if(preg_match('/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$/' ,$mail)) return true ;
     628        if(preg_match('/#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#/' ,$mail)) return true ;
    636629}
    637630
     
    639632function clj_fetchRemote($src, &$dest, $timeout=1, $user_agent='Piwigo', $step=0)
    640633{
    641   // Try to retrieve data from local file?
    642  // http://www.stopforumspam.com/api?ip=95.211.1.39
    643 
    644   if ($src=="") return ;
    645 
    646   if (!url_is_remote($src))
    647   {
    648 
    649     $content = @file_get_contents($src);
    650     if ($content !== false)
    651     {
    652       is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
    653       return true;
    654     }
    655     else
    656     {
    657       return false;
    658     }
    659   }
    660 
    661   // After 3 redirections, return false
    662   if ($step > 3) return false;
    663 
    664   // Initialize $dest
    665   is_resource($dest) or $dest = '';
    666 
    667   // Try curl to read remote file
    668   if (function_exists('curl_init'))
    669   {
    670     $ch = @curl_init();
    671     @curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
    672     @curl_setopt($ch, CURLOPT_URL, $src);
    673     @curl_setopt($ch, CURLOPT_HEADER, 1);
    674     @curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
    675     @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    676     $content = @curl_exec($ch);
    677     $header_length = @curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    678     $status = @curl_getinfo($ch, CURLINFO_HTTP_CODE);
    679     @curl_close($content);
    680     if ($content !== false and $status >= 200 and $status < 400)
    681     {
    682       if (preg_match('/Location:\s+?(.+)/', substr($content, 0, $header_length), $m))
    683       {
    684         return clj_fetchRemote($m[1], $dest,$timeout, $user_agent, $step+1);
    685       }
    686       $content = substr($content, $header_length);
    687       is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
    688       return true;
    689     }
    690   }
    691 
    692   // Try file_get_contents to read remote file
    693   if (ini_get('allow_url_fopen'))
    694   {
    695 
    696     $opts['http'] = array('timeout' => $timeout);
    697     $ctx = stream_context_create($opts);
    698     $content = @file_get_contents($src, 0, $ctx);
    699     if ($content !== false)
    700     {
    701       is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
    702       return true;
    703     }
    704   }
    705 
    706   return false;
     634        // Try to retrieve data from local file?
     635        // http://www.stopforumspam.com/api?ip=95.211.1.39
     636
     637        if ($src=="") return ;
     638
     639        if (!url_is_remote($src))
     640        {
     641
     642                $content = @file_get_contents($src);
     643                if ($content !== false)
     644                {
     645                        is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
     646                        return true;
     647                }
     648                else
     649                {
     650                        return false;
     651                }
     652        }
     653
     654        // After 3 redirections, return false
     655        if ($step > 3) return false;
     656
     657        // Initialize $dest
     658        is_resource($dest) or $dest = '';
     659
     660        // Try curl to read remote file
     661        if (function_exists('curl_init'))
     662        {
     663                $ch = @curl_init();
     664                @curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
     665                @curl_setopt($ch, CURLOPT_URL, $src);
     666                @curl_setopt($ch, CURLOPT_HEADER, 1);
     667                @curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
     668                @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     669                $content = @curl_exec($ch);
     670                $header_length = @curl_getinfo($ch, CURLINFO_HEADER_SIZE);
     671                $status = @curl_getinfo($ch, CURLINFO_HTTP_CODE);
     672                @curl_close($content);
     673                if ($content !== false and $status >= 200 and $status < 400)
     674                {
     675                        if (preg_match('/Location:\s+?(.+)/', substr($content, 0, $header_length), $m))
     676                        {
     677                                return clj_fetchRemote($m[1], $dest,$timeout, $user_agent, $step+1);
     678                        }
     679                        $content = substr($content, $header_length);
     680                        is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
     681                        return true;
     682                }
     683        }
     684
     685        // Try file_get_contents to read remote file
     686        if (ini_get('allow_url_fopen'))
     687        {
     688
     689                $opts['http'] = array('timeout' => $timeout);
     690                $ctx = stream_context_create($opts);
     691                $content = @file_get_contents($src, 0, $ctx);
     692                if ($content !== false)
     693                {
     694                        is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
     695                        return true;
     696                }
     697        }
     698
     699        return false;
    707700}
    708701
  • extensions/Mail_supervisor/include/save_info.php

    r13572 r22118  
    1313        ;";
    1414    //==============================================================================
    15   list($count) = mysql_fetch_row(pwg_query($query));
     15  list($count) = mysqli_fetch_row(pwg_query($query));
    1616  //==============================================================================
    1717  $valeurs=array( 'NULL',
     
    4949    $liste_bl = array();
    5050 $result = pwg_query($query);
    51         while ($row = mysql_fetch_array($result,MYSQL_ASSOC))   {
     51        while ($row = mysqli_fetch_array($result,MYSQL_ASSOC))   {
    5252                 array_push($liste_bl,$row);
    5353                }
    5454//================ Liste IP ==============
    55 $req = mysql_query('SELECT count(distinct(`IP`)) FROM '.HISTORY_TABLE.'    ');
    56 $op=mysql_fetch_row($req);
     55$req = pwg_query('SELECT count(distinct(`IP`)) FROM '.HISTORY_TABLE.'    ');
     56$op=mysqli_fetch_row($req);
    5757$nbip =  array_pop($op) ;
    5858
     
    7878    $result = pwg_query($query);
    7979    $liste_ip=array();
    80     while ($row = mysql_fetch_array($result,MYSQL_ASSOC))   {
     80    while ($row = mysqli_fetch_array($result,MYSQL_ASSOC))   {
    8181
    8282              array_push($liste_ip, $row);
  • extensions/Mail_supervisor/mail_super.inc.php

    r13572 r22118  
    2222
    2323class mail_supervisor {
    24  //============================================================
    25  /*
    26   *  admin_menu
    27  */
    28  static public function admin_menu($menu) {
    29   array_push($menu,
    30              array( 'NAME' => 'Mail supervisor',
    31                             'URL' => get_admin_plugin_menu_link(MAIL_SUPERV_PATH . 'admin/mail_superv_admin.php')
    32                         )
    33             );
    34     return $menu;
    35  }
    36  //============================================================
    37  /*
    38   *  init
    39  */
    40  static public function init() {
    41   global  $template,$version,$icon_path,$page;
    42   $action_spam = pwg_get_session_var('action_spam') ;
    43   $theme="default";
    44   $themeconf=$template->get_template_vars('themeconf');
    45   $theme=$themeconf['id'];
    46   if (file_exists ( 'admin/themes/clear/icon/help.png')) $icon_path = 'admin/themes/clear/icon/help.png';
    47   else  $icon_path =  "admin/template/goto/theme/clear/icon/help.png";
    48   if (PHPWG_VERSION < 2.2 ) {
    49     $file =MAIL_SUPERV_PATH_ABS.'admin/header_2_1.tpl' ;
    50 
    51   } else {
    52     $file = MAIL_SUPERV_PATH_ABS.'admin/header_2_2.tpl' ;
    53 
    54   }
    55   if(isset($_GET['action_spam']) and $_GET['action_spam']=="no"){
    56     pwg_set_session_var('action_spam', "false");
    57     unset ($_SESSION['pwg_'.'action_spam']);
    58   }
    59   $action_spam=pwg_get_session_var('action_spam');
    60   $template->set_filenames(array('mail_superv_init'=> $file ));
    61   $MAIL_SUPERV_PATH=str_replace(PHPWG_ROOT_PATH,"",MAIL_SUPERV_PATH) ;
    62   $profile=array('theme' => $theme,
    63             'PHPWG_VERSION' => PHPWG_VERSION ,
    64             'MAIL_SUPERV_PATH' => $MAIL_SUPERV_PATH  ,
    65             'MAIL_SUPERV_PATH_ABS' => MAIL_SUPERV_PATH_ABS
    66           );
    67 
    68   $template->assign( $profile );
    69   $template->append('footer_elements', '<input id="action_spam" name="action_spam" type="hidden" value="'.$action_spam.'" />');
    70   $template->parse( 'mail_superv_init', false);
    71   return ;//
    72 }// function init
    73   //============================================================
    74   /*
    75   * affiche_message
    76   */
    77   //============================================================
    78   static public function affiche_message(){
    79     global $template,$infos_message,$erreur_message, $user ,$ip;
    80     global $mails_options,$conf,$lang,$page ;
    81     global $action_spam ;
    82     if (!isset($ip)) {
    83       if (getenv("HTTP_CLIENT_IP"))   {
    84         $ip=getenv("HTTP_CLIENT_IP");
    85       }else{
    86           $ip=getenv("REMOTE_ADDR");
    87       }
    88     }
    89       //  unset ($_SESSION['pwg_'.'action_spam']);
    90       $action_spam = pwg_get_session_var('action_spam') ;
    91 
    92       if  ($action_spam == null or $action_spam == 'false') {
    93         $action_spam = kill_list();
    94       }
    95 
    96       if (is_bool($action_spam)) $action_spam =($action_spam == true) ? "true" : "false" ;
    97       if ($action_spam == "true" ) {
    98         $erreur_message .= $ip . " "  . $action_spam  ;
    99         pwg_set_session_var('action_spam', "true");
    100         $erreur_message .= "<br />".l10n('Sv_is_a_spam') ;
    101         if ($mails_options['no_connect'] == 'on1' ){
    102                   //[status] => guest
    103                   //[status] => normal
    104                   //[status] => webmaster
    105           if ($user['status'] != 'webmaster'  )
    106             if (!isset($_GET['admin'])) {
    107               die('Blacklist : <br />' .$erreur_message. '<br /> Hacking attempt!');
    108             }elseif ($_GET['admin'] != 'piwigo'){
    109               die('blacklist Hacking attempt!');
    110             }
    111          unset ($_SESSION['pwg_'.'action_spam']);
    112       }
    113     }else{
    114       pwg_set_session_var('action_spam', "false");
    115     }
    116 
    117     if (isset($infos_message))
    118       if  ($infos_message != "")  {
    119         $infos_message = str_replace("\n",'<br />',$infos_message) ;
    120          if (!isset($page['infos'])) $page['infos']=Array($infos_message);
    121         else if(is_array($page['infos'])) array_push($page['infos'], $infos_message);
    122         else $page['infos']=Array($infos_message);
    123         $infos_message="";
    124       }
    125     if (isset($erreur_message))
    126       if  ($erreur_message != "")  {
    127         $erreur_message = str_replace("\n",'<br />',$erreur_message) ;
    128         if (!isset($page['errors'])) $page['errors']=Array($erreur_message);
    129         else if(is_array($page['errors'])) array_push($page['errors'], $erreur_message);
    130         else $page['errors']=Array($erreur_message);
    131         $erreur_message ="";
    132       }
    133     return $action_spam;
    134   } //fin Affiche_message
    135 
    136     //============================================================
    137   /*
    138     *   Get_geo
    139   */
    140   static public function Get_geo() {
    141     global  $info_geo,$ip,$pays,$region,$ville, $latitude ,$longitude,$mails_options;
    142     //===================================================================================
    143     $info_geo = pwg_get_session_var('info_geo');
    144     if (count($info_geo) > 0){
    145         $pays  = $info_geo[0];
    146         $region  = $info_geo[1];
    147         $ville  = $info_geo[2];
    148         $latitude = $info_geo[3];
    149         $longitude = $info_geo[4];
    150         $ip = $info_geo[5];
    151         return true;
    152     }
    153     //=======================================================================
    154     if (isset($_POST['pays'])) {
    155       $pays = isset($_POST['pays']) ? $_POST['pays'] : "";
    156       $region =  isset($_POST['region']) ? $_POST['region'] :"";
    157       $ville = (isset($_POST['ville']))   ? $_POST['ville']: "";
    158       $latitude =  isset($_POST['latitude']) ? $_POST['latitude'] : "";
    159       $longitude =  isset($_POST['longitude']) ? $_POST['longitude'] : "";
    160       $info_geo = array(   $pays ,$region , $ville ,$latitude, $longitude,$_SERVER['REMOTE_ADDR']  );
    161       pwg_set_session_var('info_geo', $info_geo);
    162         return true;
    163       }else{
    164 
    165      $result="";
    166       echo '<script type="text/javascript">get_script_geo();</script>';
    167    return true;
    168       }
    169     } // fin get_geo
    170     //=====================================================================================
    171     /*
    172     * Memo_Var
    173     */
    174     static public function Memo_Var($variables) {
    175     ob_start();
    176     echo '<pre>';
    177     if(count($variables)>1){
    178     foreach($variables as $key => $line){
    179       echo  $key . " =>  " . $line ;
    180       echo "<br />";
    181     }
    182     }else{
    183         echo "<i>".$variables."</i><br />";
    184     }
    185 
    186     $m= ob_get_contents();
    187     ob_end_clean();
    188     return $m;
    189     }
    190   //======================================================================================
    191    static public function Get_Version_plugins($dir){
    192       $path = $dir;
    193       $plg_data = implode( '', file($path.'main.inc.php') );
    194       if ( preg_match("|Plugin Name: (.*)|", $plg_data, $val) )
    195       {
    196         $plugin['name'] = trim( $val[1] );
    197       }
    198       if (preg_match("|Version: (.*)|", $plg_data, $val))
    199       {
    200         $plugin['version'] = trim($val[1]);
    201       }
    202       if ( preg_match("|Plugin URI: (.*)|", $plg_data, $val) )
    203       {
    204         $plugin['uri'] = trim($val[1]);
    205       }
    206       if ($desc = load_language('description.txt', $path.'/', array('return' => true)))
    207       {
    208         $plugin['description'] = trim($desc);
    209       }
    210       elseif ( preg_match("|Description: (.*)|", $plg_data, $val) )
    211       {
    212         $plugin['description'] = trim($val[1]);
    213       }
    214       if ( preg_match("|Author: (.*)|", $plg_data, $val) )
    215       {
    216         $plugin['author'] = trim($val[1]);
    217       }
    218       if ( preg_match("|Author URI: (.*)|", $plg_data, $val) )
    219       {
    220         $plugin['author uri'] = trim($val[1]);
    221       }
    222       if (!empty($plugin['uri']) and strpos($plugin['uri'] , 'extension_view.php?eid='))
    223       {
    224         list( , $extension) = explode('extension_view.php?eid=', $plugin['uri']);
    225         if (is_numeric($extension)) $plugin['extension'] = $extension;
    226       }
    227       // IMPORTANT SECURITY !
    228       $plugin = array_map('htmlspecialchars', $plugin);
    229       return $plugin ;
    230     }
    231   //==========================================================
    232   function Get_Options(&$parametres,$str_index){
    233     global $conf ;
    234     $mails_options=  $conf[$str_index];
    235      if(isset($mails_options))
    236        if ( preg_match("|s:(.*)|", $mails_options, $val) )
    237         $parametres =  unserialize($conf['mail_superv']);
    238        else{
    239          $parametres=explode(",",$mails_options);
    240         }     
    241         //====== par defaut =======================
    242          $new_val=false;
    243 
    244   if (empty($def_para))
    245 $def_para = (object) '';
    246 
    247         $def_para->check_mailto="on";
    248         $def_para->check_header_carbon="on";
    249         $def_para->check_send_webmaster="off";
    250         $def_para->no_ipaddress="off";  // interdiction adresse ip
    251 
    252         $def_para->no_mail_list="on";
    253         $def_para->no_connect="on"; // empeche l'ip de se connecter au site.
    254         $def_para->set_auto="on";       // Test a l'ouverture et enregistrement
    255         $def_para->ip="127.0.0.1";      // derniere adresse IP
    256         $def_para->set_id="on";       // enregistrment nouvel
    257         $def_para->debug_mail="off";       // debogage
    258 
    259         foreach ($def_para as $key => $value) {
    260           if(isset($parametres[$key])){
    261               $value=$parametres[$key];
    262            } else {
    263               $new_val=true;
    264         }
    265            $new_val= isset($_POST[$key]) && $new_val ;
    266             unset( $parametres[$key]) ;
    267             $parametres[$key]= (isset($_POST[$key]))? "on" : $value ;       
    268         }
    269 
    270         if($new_val){
    271             sauve_options();
    272       }
    273     return $parametres ;
    274   }
    275   //==========================================================
    276   function Set_Options($parametres,$str_index){
    277   global $infos_message,$conf;
    278       foreach ($parametres as $key => $value) {
    279        $parametres[$key]=(isset($_POST[$key]))? "on" : $value ;
    280       }
    281       $parametres['no_connect']= 'off' ;
    282      return $parametres ;
    283   }
    284   //==========================================================
    285 
    286 function sauve_options(){
    287   global $options,$infos_message,$conf,$mails_options  ;
    288   $infos_message .=l10n("save_config")."<br>";
    289        if (empty($mail_supervisor))  {
    290       $mail_supervisor = new mail_supervisor();
    291       }
    292   $mails_parametres= $mail_supervisor->Set_Options($mails_options,"mail_superv");
    293 
    294  if ( isset($mails_parametres) )
    295     {       $query = '
    296             UPDATE '.CONFIG_TABLE.'
    297             SET value="'.addslashes(serialize($mails_parametres)).'"
    298             WHERE param = "mail_superv"
    299             LIMIT 1';
    300             pwg_query($query);
    301       }
    302 
    303  }
    304 
    305  /****************************************
    306  * sauve_donnees()
    307  ****************************************/
    308   function sauve_donnees(){
    309   global $mails_donnees,$superv_champs,$superv_type,$erreur_message ;
    310   //=====================================================================
    311   $clefs = $superv_champs ;
    312   $valeurs = array();
    313   foreach ( $clefs as $champ){
    314      $champ = trim($champ);
    315         if($champ !="id")
    316         if ( isset($mails_donnees[  $champ ]) ) {
    317           $sep= (is_string($mails_donnees[ $champ ])) ? '"' : '' ;
    318           array_push($valeurs , "`".$champ."`" . ' = ' . $sep . $mails_donnees[  $champ ] . $sep)  ;
    319         }else{
    320           array_push($valeurs , "`".$champ."`" . ' = ' .  "0"  )  ;
    321         }
    322       }
    323 
    324   $valeurs = implode(", ",$valeurs) ;
    325   //=====================================================================
    326   $query = '
    327           UPDATE '.mail_superv_TABLE.'
    328           SET '. $valeurs .'
    329           WHERE `id` = 1 LIMIT 1 ';
    330           ;
    331   ob_start();
    332       $ret=  pwg_query($query)    ;
    333       $m= ob_get_contents();
    334       if($m!="") $m="Mail_super.inc.php sauve_donnees() l:323<br />".$m;
    335   ob_end_clean() ;
    336   $erreur_message .= $m ;
    337   }
    338 //=================================================================================
    339   function Get_Datas(){
    340     global $superv_champs ;
    341      verif_base();
    342     $champs = implode(",",$superv_champs );
    343       $query = "SELECT ".$champs."
    344       FROM ".mail_superv_TABLE."
    345       ;";
    346         $result = @pwg_query($query);
    347            
    348     if (!$result) {
    349             verif_base();
    350             $result = @pwg_query($query);
    351         }
    352     $data = mysql_fetch_array($result,MYSQL_ASSOC);
    353     //====================================================================================
    354     $next_day = Str_To_Time( $data['nb_mails_periode'], $data['date_mail'] );
    355     $next_day = ($next_day >0) ? $next_day :  (604800  + time()) ;
    356     $data['rest_mail'] =    $next_day - time() ;
    357     $next_day = Str_To_Time( $data['nb_spams_periode'],$data['date_spam']);
    358     $next_day = ($next_day >0) ? $next_day :  (172800  + time()) ;
    359     $data['rest_spam'] =  $next_day - time() ;
    360     $next_day = Str_To_Time($data['quarantaine_periode'] ,$data['date_quarantaine']);
    361     $next_day = ($next_day >0) ? $next_day :  (172800 + time()) ;
    362     //====================================================================================
    363     if ($data['quarantaine'] == 'true' ) {
    364             $data['reste'] =   ( $next_day )-time() ;
    365     }else{
    366             $data['reste'] = 0;
    367     }
    368 
    369         return $data;
    370   }
    371  }
     24        //============================================================
     25        /*
     26        *  admin_menu
     27        */
     28        static public function admin_menu($menu) {
     29                array_push($menu,
     30                array( 'NAME' => 'Mail supervisor',
     31                'URL' => get_admin_plugin_menu_link(MAIL_SUPERV_PATH . 'admin/mail_superv_admin.php')
     32                )
     33                );
     34                return $menu;
     35        }
     36        //============================================================
     37        /*
     38        *  init
     39        */
     40        static public function init() {
     41                global  $template,$version,$icon_path,$page;
     42                $action_spam = pwg_get_session_var('action_spam') ;
     43                $theme="default";
     44                $themeconf=$template->get_template_vars('themeconf');
     45                $theme=$themeconf['id'];
     46                if (file_exists ( 'admin/themes/clear/icon/help.png')) $icon_path = 'admin/themes/clear/icon/help.png';
     47                else  $icon_path =  "admin/template/goto/theme/clear/icon/help.png";
     48                if (PHPWG_VERSION < 2.2 ) {
     49                        $file =MAIL_SUPERV_PATH_ABS.'admin/header_2_1.tpl' ;
     50
     51                } else {
     52                        $file = MAIL_SUPERV_PATH_ABS.'admin/header_2_2.tpl' ;
     53
     54                }
     55                if(isset($_GET['action_spam']) and $_GET['action_spam']=="no"){
     56                        pwg_set_session_var('action_spam', "false");
     57                        unset ($_SESSION['pwg_'.'action_spam']);
     58                }
     59                $action_spam=pwg_get_session_var('action_spam');
     60                $template->set_filenames(array('mail_superv_init'=> $file ));
     61                $MAIL_SUPERV_PATH=str_replace(PHPWG_ROOT_PATH,"",MAIL_SUPERV_PATH) ;
     62                $profile=array('theme' => $theme,
     63                                'PHPWG_VERSION' => PHPWG_VERSION ,
     64                                'MAIL_SUPERV_PATH' => $MAIL_SUPERV_PATH  ,
     65                                'MAIL_SUPERV_PATH_ABS' => MAIL_SUPERV_PATH_ABS
     66                );
     67
     68                $template->assign( $profile );
     69                $template->append('footer_elements', '<input id="action_spam" name="action_spam" type="hidden" value="'.$action_spam.'" />');
     70                $template->parse( 'mail_superv_init', false);
     71                return ;//
     72        }// function init
     73        //============================================================
     74        /*
     75         * affiche_message
     76        */
     77        //============================================================
     78        static public function affiche_message(){
     79                global $template,$infos_message,$erreur_message, $user ,$ip;
     80                global $mails_options,$conf,$lang,$page ;
     81                global $action_spam ;
     82                if (!isset($ip)) {
     83                        if (getenv("HTTP_CLIENT_IP"))   {
     84                                $ip=getenv("HTTP_CLIENT_IP");
     85                        }else{
     86                                $ip=getenv("REMOTE_ADDR");
     87                        }
     88                }
     89                //  unset ($_SESSION['pwg_'.'action_spam']);
     90                $action_spam = pwg_get_session_var('action_spam') ;
     91
     92                if  ($action_spam == null or $action_spam == 'false') {
     93                        $action_spam = kill_list();
     94                }
     95
     96                if (is_bool($action_spam)) $action_spam =($action_spam == true) ? "true" : "false" ;
     97                if ($action_spam == "true" ) {
     98                        $erreur_message .= $ip . " "  . $action_spam  ;
     99                        pwg_set_session_var('action_spam', "true");
     100                        $erreur_message .= "<br />".l10n('Sv_is_a_spam') ;
     101                        if ($mails_options['no_connect'] == 'on1' ){
     102                                //[status] => guest
     103                                //[status] => normal
     104                                //[status] => webmaster
     105                                if ($user['status'] != 'webmaster'  )
     106                                        if (!isset($_GET['admin'])) {
     107                                        die('Blacklist : <br />' .$erreur_message. '<br /> Hacking attempt!');
     108                                }elseif ($_GET['admin'] != 'piwigo'){
     109                                        die('blacklist Hacking attempt!');
     110                                }
     111                                unset ($_SESSION['pwg_'.'action_spam']);
     112                        }
     113                }else{
     114                        pwg_set_session_var('action_spam', "false");
     115                }
     116
     117                if (isset($infos_message))
     118                        if  ($infos_message != "")  {
     119                        $infos_message = str_replace("\n",'<br />',$infos_message) ;
     120                        if (!isset($page['infos'])) $page['infos']=Array($infos_message);
     121                        else if(is_array($page['infos'])) array_push($page['infos'], $infos_message);
     122                        else $page['infos']=Array($infos_message);
     123                        $infos_message="";
     124                }
     125                if (isset($erreur_message))
     126                        if  ($erreur_message != "")  {
     127                        $erreur_message = str_replace("\n",'<br />',$erreur_message) ;
     128                        if (!isset($page['errors'])) $page['errors']=Array($erreur_message);
     129                        else if(is_array($page['errors'])) array_push($page['errors'], $erreur_message);
     130                        else $page['errors']=Array($erreur_message);
     131                        $erreur_message ="";
     132                }
     133                return $action_spam;
     134        } //fin Affiche_message
     135
     136        //============================================================
     137        /*
     138        *   Get_geo
     139        */
     140        static public function Get_geo() {
     141                global  $info_geo,$ip,$pays,$region,$ville, $latitude ,$longitude,$mails_options;
     142                //===================================================================================
     143                $info_geo = pwg_get_session_var('info_geo');
     144                if (count($info_geo) > 0){
     145                        $pays  = $info_geo[0];
     146                        $region  = $info_geo[1];
     147                        $ville  = $info_geo[2];
     148                        $latitude = $info_geo[3];
     149                        $longitude = $info_geo[4];
     150                        $ip = $info_geo[5];
     151                        return true;
     152                }
     153                //=======================================================================
     154                if (isset($_POST['pays'])) {
     155                        $pays = isset($_POST['pays']) ? $_POST['pays'] : "";
     156                        $region =  isset($_POST['region']) ? $_POST['region'] :"";
     157                        $ville = (isset($_POST['ville']))   ? $_POST['ville']: "";
     158                        $latitude =  isset($_POST['latitude']) ? $_POST['latitude'] : "";
     159                        $longitude =  isset($_POST['longitude']) ? $_POST['longitude'] : "";
     160                        $info_geo = array(   $pays ,$region , $ville ,$latitude, $longitude,$_SERVER['REMOTE_ADDR']  );
     161                        pwg_set_session_var('info_geo', $info_geo);
     162                        return true;
     163                }else{
     164
     165                        $result="";
     166                        echo '<script type="text/javascript">get_script_geo();</script>';
     167                        return true;
     168                }
     169        } // fin get_geo
     170        //=====================================================================================
     171        /*
     172         * Memo_Var
     173        */
     174        static public function Memo_Var($variables) {
     175                ob_start();
     176                echo '<pre>';
     177                if(count($variables)>1){
     178                        foreach($variables as $key => $line){
     179                                echo  $key . " =>  " . $line ;
     180                                echo "<br />";
     181                        }
     182                }else{
     183                        echo "<i>".$variables."</i><br />";
     184                }
     185
     186                $m= ob_get_contents();
     187                ob_end_clean();
     188                return $m;
     189        }
     190        //======================================================================================
     191        static public function Get_Version_plugins($dir){
     192                $path = $dir;
     193                $plg_data = implode( '', file($path.'main.inc.php') );
     194                if ( preg_match("|Plugin Name: (.*)|", $plg_data, $val) )
     195                {
     196                        $plugin['name'] = trim( $val[1] );
     197                }
     198                if (preg_match("|Version: (.*)|", $plg_data, $val))
     199                {
     200                        $plugin['version'] = trim($val[1]);
     201                }
     202                if ( preg_match("|Plugin URI: (.*)|", $plg_data, $val) )
     203                {
     204                        $plugin['uri'] = trim($val[1]);
     205                }
     206                if ($desc = load_language('description.txt', $path.'/', array('return' => true)))
     207                {
     208                        $plugin['description'] = trim($desc);
     209                }
     210                elseif ( preg_match("|Description: (.*)|", $plg_data, $val) )
     211                {
     212                        $plugin['description'] = trim($val[1]);
     213                }
     214                if ( preg_match("|Author: (.*)|", $plg_data, $val) )
     215                {
     216                        $plugin['author'] = trim($val[1]);
     217                }
     218                if ( preg_match("|Author URI: (.*)|", $plg_data, $val) )
     219                {
     220                        $plugin['author uri'] = trim($val[1]);
     221                }
     222                if (!empty($plugin['uri']) and strpos($plugin['uri'] , 'extension_view.php?eid='))
     223                {
     224                        list( , $extension) = explode('extension_view.php?eid=', $plugin['uri']);
     225                        if (is_numeric($extension)) $plugin['extension'] = $extension;
     226                }
     227                // IMPORTANT SECURITY !
     228                $plugin = array_map('htmlspecialchars', $plugin);
     229                return $plugin ;
     230        }
     231        //==========================================================
     232        function Get_Options(&$parametres,$str_index){
     233                global $conf ;
     234                $mails_options=  $conf[$str_index];
     235                if(isset($mails_options))
     236                        if ( preg_match("|s:(.*)|", $mails_options, $val) )
     237                        $parametres =  unserialize($conf['mail_superv']);
     238                else{
     239                        $parametres=explode(",",$mails_options);
     240                }
     241                //====== par defaut =======================
     242                $new_val=false;
     243
     244                if (empty($def_para))
     245                        $def_para = (object) '';
     246
     247                $def_para->check_mailto="on";
     248                $def_para->check_header_carbon="on";
     249                $def_para->check_send_webmaster="off";
     250                $def_para->no_ipaddress="off";  // interdiction adresse ip
     251
     252                $def_para->no_mail_list="on";
     253                $def_para->no_connect="on"; // empeche l'ip de se connecter au site.
     254                $def_para->set_auto="on";       // Test a l'ouverture et enregistrement
     255                $def_para->ip="127.0.0.1";      // derniere adresse IP
     256                $def_para->set_id="on";       // enregistrment nouvel
     257                $def_para->debug_mail="off";       // debogage
     258
     259                foreach ($def_para as $key => $value) {
     260                        if(isset($parametres[$key])){
     261                                $value=$parametres[$key];
     262                        } else {
     263                                $new_val=true;
     264                        }
     265                        $new_val= isset($_POST[$key]) && $new_val ;
     266                        unset( $parametres[$key]) ;
     267                        $parametres[$key]= (isset($_POST[$key]))? "on" : $value ;
     268                }
     269
     270                if($new_val){
     271                        sauve_options();
     272                }
     273                return $parametres ;
     274        }
     275        //==========================================================
     276        function Set_Options($parametres,$str_index){
     277                global $infos_message,$conf;
     278                foreach ($parametres as $key => $value) {
     279                        $parametres[$key]=(isset($_POST[$key]))? "on" : $value ;
     280                }
     281                $parametres['no_connect']= 'off' ;
     282                return $parametres ;
     283        }
     284        //==========================================================
     285
     286        function sauve_options(){
     287                global $options,$infos_message,$conf,$mails_options  ;
     288                $infos_message .=l10n("save_config")."<br>";
     289                if (empty($mail_supervisor))  {
     290                        $mail_supervisor = new mail_supervisor();
     291                }
     292                $mails_parametres= $mail_supervisor->Set_Options($mails_options,"mail_superv");
     293
     294                if ( isset($mails_parametres) )
     295                {
     296                        $query = '
     297                                        UPDATE '.CONFIG_TABLE.'
     298                                                        SET value="'.addslashes(serialize($mails_parametres)).'"
     299                                                                        WHERE param = "mail_superv"
     300                                                                        LIMIT 1';
     301                        pwg_query($query);
     302                }
     303
     304        }
     305
     306        /****************************************
     307         * sauve_donnees()
     308        ****************************************/
     309        function sauve_donnees(){
     310                global $mails_donnees,$superv_champs,$superv_type,$erreur_message ;
     311                //=====================================================================
     312                $clefs = $superv_champs ;
     313                $valeurs = array();
     314                foreach ( $clefs as $champ){
     315                        $champ = trim($champ);
     316                        if($champ !="id")
     317                                if ( isset($mails_donnees[  $champ ]) ) {
     318                                $sep= (is_string($mails_donnees[ $champ ])) ? '"' : '' ;
     319                                array_push($valeurs , "`".$champ."`" . ' = ' . $sep . $mails_donnees[  $champ ] . $sep)  ;
     320                        }else{
     321                                array_push($valeurs , "`".$champ."`" . ' = ' .  "0"  )  ;
     322                        }
     323                }
     324
     325                $valeurs = implode(", ",$valeurs) ;
     326                //=====================================================================
     327                $query = '
     328                                UPDATE '.mail_superv_TABLE.'
     329                                                SET '. $valeurs .'
     330                                                                WHERE `id` = 1 LIMIT 1 ';
     331                ;
     332                ob_start();
     333                $ret=  pwg_query($query)    ;
     334                $m= ob_get_contents();
     335                if($m!="") $m="Mail_super.inc.php sauve_donnees() l:323<br />".$m;
     336                ob_end_clean() ;
     337                $erreur_message .= $m ;
     338        }
     339        //================================================================================
     340        function Get_Datas(){
     341                global $superv_champs ;
     342                verif_base();
     343                $champs = implode(",",$superv_champs );
     344                $query = "SELECT ".$champs."
     345                                FROM ".mail_superv_TABLE."
     346                                                ;";
     347                $result = pwg_query($query);
     348                 
     349                if (!$result) {
     350                        verif_base();
     351                        $result = pwg_query($query);
     352                }
     353                if ($result) {
     354                        $data = mysqli_fetch_array($result,MYSQL_ASSOC);
     355                }
     356                //====================================================================================
     357                $next_day = Str_To_Time( $data['nb_mails_periode'], $data['date_mail'] );
     358                $next_day = ($next_day >0) ? $next_day :  (604800  + time()) ;
     359                $data['rest_mail'] =    $next_day - time() ;
     360                $next_day = Str_To_Time( $data['nb_spams_periode'],$data['date_spam']);
     361                $next_day = ($next_day >0) ? $next_day :  (172800  + time()) ;
     362                $data['rest_spam'] =  $next_day - time() ;
     363                $next_day = Str_To_Time($data['quarantaine_periode'] ,$data['date_quarantaine']);
     364                $next_day = ($next_day >0) ? $next_day :  (172800 + time()) ;
     365                //====================================================================================
     366                if ($data['quarantaine'] == 'true' ) {
     367                        $data['reste'] =   ( $next_day )-time() ;
     368                }else{
     369                        $data['reste'] = 0;
     370                }
     371
     372                return $data;
     373        }
     374}
    372375?>
  • extensions/Mail_supervisor/main.inc.php

    r19018 r22118  
    11<?php
    22/*
    3 Plugin Name: Mail supervisor
    4 Version: 1.5.9
     3 Plugin Name: Mail supervisor
     4Version: 1.6.0
    55Description: Mail supervisor surveille l'envoie des mails.
    66Plugin URI: http://piwigo.org/ext/extension_view.php?eid=315
     
    88Author URI:http://cljosse.free.fr
    99*/
     10
     11/**************************************
     12 * (local) httpconf
     13 * [mail function]
     14; For Win32 only.
     15; http://php.net/smtp
     16SMTP = smtp.xxxx.fr
     17; http://php.net/smtp-port
     18smtp_port = 25
     19
     20; For Win32 only.
     21; http://php.net/sendmail-from
     22 sendmail_from = toto@xxxx.fr
     23 **************************************/
     24 
    1025if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
    1126if (!defined('mail_superv_DIR')) define('mail_superv_DIR' , basename(dirname(__FILE__)));
     
    2237
    2338$mail_supervisor = new mail_supervisor();
    24  
     39
    2540include_once(MAIL_SUPERV_PATH.'mail_send.inc.php');
    2641$clj = new clj();
     
    3146include_once (MAIL_SUPERV_PATH.'include/fonctions.php');
    3247
    33  $mail_supervisor->Get_Options($mails_options,"mail_superv");
    34  $mails_donnees=$mail_supervisor->Get_Datas();
     48$mail_supervisor->Get_Options($mails_options,"mail_superv");
     49$mails_donnees=$mail_supervisor->Get_Datas();
    3550
    3651/* EVENT_HANDLER_PRIORITY_NEUTRAL  */
     
    5267
    5368function clj_send_mail($result, $mailto, $subject, $content, $headers, $args,$nb_destinataires) {
    54   global $conf, $user, $lang_info;
    55   global $conf_mail,$mails_options,$mails_donnees ;
    56   global  $template,$page ,$erreur_message,$infos_message, $lang;
    57   global $errors;
    58 
    59   include_once (MAIL_SUPERV_PATH.'include/fonctions.php');
    60   load_language('plugin.lang', MAIL_SUPERV_PATH);
    61  
    62   $arg_trigg= array($mailto, $subject, $content, $headers, $args);
    63     trigger_event('mail_supervisor_clj_mail',$arg_trigg);
    64      if (empty($mail_supervisor)) 
    65       $mail_supervisor = new mail_supervisor();
    66 
    67     $message ="";
    68   if (!isset($infos_message))   {   $infos_message = "";    }
    69   if (!isset($erreur_message))  {   $erreur_message = '';   }
    70 
    71   $envoie_ok=true ;
    72   //======== verification si envoie de mail ou blocage connexion =====================
    73   if ($mails_options['no_mail_list']=='on' || $mails_options['no_connect'] == 'on' )    {
    74     if (kill_list()) {
    75       $nb_destinataires=0; ;
    76       $envoie_ok= false ;
    77       $erreur_message .= "<BR />".l10n('Sv_is_a_spam') ;
    78       $infos_message = l10n('Sv_mail_not_send')."<BR />";
    79       if ($mails_options['no_connect'] == 'on' ){         
    80           if ($user['status'] == 'webmaster'){
    81           //---------- continuer si web master ----------
    82           }else{
    83              trigger_event('mail_supervisor_send_mail', "DIE(KILL) : " . $ip . ' = ' . $user['status']);
    84               if (!isset($_GET['admin'])) {
    85                       die('Blacklist : <br />' .$erreur_message. '<br /> Hacking attempt!');
    86                         }elseif   ($_GET['admin'] != 'piwigo')
    87                             {
    88                       die('blacklist Hacking attempt!');
    89               }
    90           }
    91       }
    92       trigger_event('mail_supervisor_send_mail', "Kill : " . $ip . ' = ' . $user['status'] . "noconnect==off");
    93       return true;
    94       }
    95     }
    96 
    97     // lecture donnees       -------------
    98     $nb_mails   = $mails_donnees['nb_mails'] ;
    99     $next_day  =  $mails_donnees['date_mail'] ;
    100     $reste =    $mails_donnees['reste'] ;
    101     $rest_mail =    $mails_donnees['rest_mail'] ;
    102     if ($rest_mail <=0 || $mails_donnees['nb_mails'] ==0 ){
    103       $mails_donnees['nb_mails'] =0 ;
    104       $mails_donnees['date_mail'] = time();
    105     }
    106     $rest_spam =    $mails_donnees['rest_spam'] ;
    107     if ($rest_spam <=0 || $mails_donnees['nb_spams'] ==0 ){
    108       $mails_donnees['nb_spams'] =0 ;
    109       $mails_donnees['date_spam'] = time();
    110     }
    111     $alerte =   ( $mails_donnees['reste'] >0 ) ? true : false ;
    112     $alerte_mail =    ( $mails_donnees['nb_mails'] >   $mails_donnees['nb_mails_maxi']-1 ) ? true : false ;
    113     $alerte_spam =    ( $mails_donnees['nb_spams'] >   $mails_donnees['nb_spams_maxi']-1 ) ? true : false ;
    114     //=============================
    115     // TEST envoie Message
    116     //=============================
    117     if ( ( !$alerte  && !$alerte_spam  && !$alerte_mail ) ) {
    118       $infos_message .= "nb_destinataires : $nb_destinataires Theme :" . ($args['theme'] ) ." {". $lang_info['language_name'] ."}"."<br />";   
    119       $infos_message .="Mailto:" .$mailto ."<br />";
    120       if(isset($args['Bcc']) && count($args['Bcc'])>0) $infos_message .="Bcc:  " . implode(",",$args['Bcc'])."<br />";
    121       if(isset($args['Cc'])&& count($args['Cc'])>0)  $infos_message .="Cc:  " . implode(",",$args['Cc'])."<br />";
    122       //============================================
    123       // Photographie
    124       //============================================
    125       $ret="false"; 
    126       ob_start();
    127         if ($nb_destinataires > 0) {
    128           if( $envoie_ok)  $ret = mail($mailto, $subject,$content, $headers);                 
    129         }else{
    130               echo l10n('Sv_no_receiver_available');
    131         }
    132       $message .= ob_get_contents();
    133       ob_end_clean();
    134 
    135       $arg_trigg= array("Nb destinataires: " . $nb_destinataires,"Mail to: ".$mailto,"content: ".$content, " Reponse : " . $message);
    136 
    137       trigger_event('mail_supervisor_mail', $arg_trigg );
    138       $mails_donnees['message']=$message;
    139       $ret= Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto, $subject,$content);
    140     } else {
    141       //================== Est en quarantaine =======================
    142                
    143       $erreur_message .=  l10n('Sv_To_day_is')."<br />";
    144       if ($alerte_spam ) {
    145               $type="Spams";
    146               $d1=$mails_donnees['nb_spams'] . '  \\  ' . $mails_donnees['nb_spams_maxi'];
    147               $d2=$mails_donnees['nb_spams'];
    148               $d3= $mails_donnees['rest_spam'];
    149               $d4=time()+$d3 ;
    150       }
    151       if ($alerte_mail) {
    152           $type="Mails";
    153           $d1=$mails_donnees['nb_mails']. '  \\  ' . $mails_donnees['nb_mails_maxi'];;
    154           $d2=$mails_donnees['date_mail'];
    155           $d3= $mails_donnees['rest_mail'];
    156           $d4=time()+$d3 ;
    157       }
    158       if ($alerte) {
    159         $type="Spams(Quarantaine)";
    160         $d1=$mails_donnees['nb_spams'] . '  \\  ' . $mails_donnees['nb_spams_maxi'];
    161         $d2=$mails_donnees['date_quarantaine'];
    162         $d3= $mails_donnees['reste'];
    163         $d4=time()+$d3 ;
    164       }
    165       $d2=date(l10n('Sv_formatdate'),$d2);
    166       $d3=int_to_heure($d3) ;
    167       $d4=date(l10n('Sv_formatdate'),$d4);
    168       if ($alerte_mail) {
    169           $erreur_message .='<br />'.sprintf(l10n('Sv_alerte_mail %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />';
    170       }else{
    171           $erreur_message .='<br />'.sprintf(l10n('Sv_mise_en_quarantaine %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />';
    172       }
    173       $ret = "Error ". $type." : ";
    174       $ret .=  l10n('Sv_mail_not_send');               
    175       $infos_message .= l10n('Sv_mail_not_send');
    176     }
    177     $infos_message .= "<hr>";
    178    
    179     trigger_event('mail_supervisor_message',  $infos_message );
    180      $mail_supervisor->sauve_donnees();
    181      $mail_supervisor->affiche_message();   
    182     return $ret  ;//
     69        global $conf, $user, $lang_info;
     70        global $conf_mail,$mails_options,$mails_donnees ;
     71        global  $template,$page ,$erreur_message,$infos_message, $lang;
     72        global $errors;
     73
     74        include_once (MAIL_SUPERV_PATH.'include/fonctions.php');
     75        load_language('plugin.lang', MAIL_SUPERV_PATH);
     76
     77        $arg_trigg= array($mailto, $subject, $content, $headers, $args);
     78        trigger_event('mail_supervisor_clj_mail',$arg_trigg);
     79        if (empty($mail_supervisor))
     80                $mail_supervisor = new mail_supervisor();
     81
     82        $message ="";
     83        if (!isset($infos_message))   {
     84                $infos_message = "";
     85        }
     86        if (!isset($erreur_message))  {
     87                $erreur_message = '';
     88        }
     89
     90        $envoie_ok=true ;
     91        //======== verification si envoie de mail ou blocage connexion =====================
     92        if ($mails_options['no_mail_list']=='on' || $mails_options['no_connect'] == 'on' )    {
     93                if (kill_list()) {
     94                        $nb_destinataires=0; ;
     95                        $envoie_ok= false ;
     96                        $erreur_message .= "<BR />".l10n('Sv_is_a_spam') ;
     97                        $infos_message = l10n('Sv_mail_not_send')."<BR />";
     98                        if ($mails_options['no_connect'] == 'on' ){
     99                                if ($user['status'] == 'webmaster'){
     100                                        //---------- continuer si web master ----------
     101                                }else{
     102                                        trigger_event('mail_supervisor_send_mail', "DIE(KILL) : " . $ip . ' = ' . $user['status']);
     103                                        if (!isset($_GET['admin'])) {
     104                                                die('Blacklist : <br />' .$erreur_message. '<br /> Hacking attempt!');
     105                                        }elseif   ($_GET['admin'] != 'piwigo')
     106                                        {
     107                                                die('blacklist Hacking attempt!');
     108                                        }
     109                                }
     110                        }
     111                        trigger_event('mail_supervisor_send_mail', "Kill : " . $ip . ' = ' . $user['status'] . "noconnect==off");
     112                        return true;
     113                }
     114        }
     115
     116        // lecture donnees       -------------
     117        $nb_mails   = $mails_donnees['nb_mails'] ;
     118        $next_day  =  $mails_donnees['date_mail'] ;
     119        $reste =    $mails_donnees['reste'] ;
     120        $rest_mail =    $mails_donnees['rest_mail'] ;
     121        if ($rest_mail <=0 || $mails_donnees['nb_mails'] ==0 ){
     122                $mails_donnees['nb_mails'] =0 ;
     123                $mails_donnees['date_mail'] = time();
     124        }
     125        $rest_spam =    $mails_donnees['rest_spam'] ;
     126        if ($rest_spam <=0 || $mails_donnees['nb_spams'] ==0 ){
     127                $mails_donnees['nb_spams'] =0 ;
     128                $mails_donnees['date_spam'] = time();
     129        }
     130        $alerte =   ( $mails_donnees['reste'] >0 ) ? true : false ;
     131        $alerte_mail =    ( $mails_donnees['nb_mails'] >   $mails_donnees['nb_mails_maxi']-1 ) ? true : false ;
     132        $alerte_spam =    ( $mails_donnees['nb_spams'] >   $mails_donnees['nb_spams_maxi']-1 ) ? true : false ;
     133        //=============================
     134        // TEST envoie Message
     135        //=============================
     136        if ( ( !$alerte  && !$alerte_spam  && !$alerte_mail ) ) {
     137                $infos_message .= "nb_destinataires : $nb_destinataires Theme :" . ($args['theme'] ) ." {". $lang_info['language_name'] ."}"."<br />";
     138                $infos_message .="Mailto:" .$mailto ."<br />";
     139                if(isset($args['Bcc']) && count($args['Bcc'])>0) $infos_message .="Bcc:  " . implode(",",$args['Bcc'])."<br />";
     140                if(isset($args['Cc'])&& count($args['Cc'])>0)  $infos_message .="Cc:  " . implode(",",$args['Cc'])."<br />";
     141                //============================================
     142                // Photographie
     143                //============================================
     144                $ret="false";
     145                ob_start();
     146                if ($nb_destinataires > 0) {
     147                        if( $envoie_ok)  $ret = mail($mailto, $subject,$content, $headers);
     148                }else{
     149                        echo l10n('Sv_no_receiver_available');
     150                }
     151                $message .= ob_get_contents();
     152                ob_end_clean();
     153
     154                $arg_trigg= array("Nb destinataires: " . $nb_destinataires,"Mail to: ".$mailto,"content: ".$content, " Reponse : " . $message);
     155
     156                trigger_event('mail_supervisor_mail', $arg_trigg );
     157                $mails_donnees['message']=$message;
     158                $ret= Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto, $subject,$content);
     159        } else {
     160                //================== Est en quarantaine =======================
     161                 
     162                $erreur_message .=  l10n('Sv_To_day_is')."<br />";
     163                if ($alerte_spam ) {
     164                        $type="Spams";
     165                        $d1=$mails_donnees['nb_spams'] . '  \\  ' . $mails_donnees['nb_spams_maxi'];
     166                        $d2=$mails_donnees['nb_spams'];
     167                        $d3= $mails_donnees['rest_spam'];
     168                        $d4=time()+$d3 ;
     169                }
     170                if ($alerte_mail) {
     171                        $type="Mails";
     172                        $d1=$mails_donnees['nb_mails']. '  \\  ' . $mails_donnees['nb_mails_maxi'];;
     173                        $d2=$mails_donnees['date_mail'];
     174                        $d3= $mails_donnees['rest_mail'];
     175                        $d4=time()+$d3 ;
     176                }
     177                if ($alerte) {
     178                        $type="Spams(Quarantaine)";
     179                        $d1=$mails_donnees['nb_spams'] . '  \\  ' . $mails_donnees['nb_spams_maxi'];
     180                        $d2=$mails_donnees['date_quarantaine'];
     181                        $d3= $mails_donnees['reste'];
     182                        $d4=time()+$d3 ;
     183                }
     184                $d2=date(l10n('Sv_formatdate'),$d2);
     185                $d3=int_to_heure($d3) ;
     186                $d4=date(l10n('Sv_formatdate'),$d4);
     187                if ($alerte_mail) {
     188                        $erreur_message .='<br />'.sprintf(l10n('Sv_alerte_mail %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />';
     189                }else{
     190                        $erreur_message .='<br />'.sprintf(l10n('Sv_mise_en_quarantaine %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />';
     191                }
     192                $ret = "Error ". $type." : ";
     193                $ret .=  l10n('Sv_mail_not_send');
     194                $infos_message .= l10n('Sv_mail_not_send');
     195        }
     196        $infos_message .= "<hr>";
     197         
     198        trigger_event('mail_supervisor_message',  $infos_message );
     199        $mail_supervisor->sauve_donnees();
     200        $mail_supervisor->affiche_message();
     201        return $ret  ;//
    183202}
    184203//===========================================================================================
    185204function Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto, $subject,$content){
    186      global $conf, $user,  $conf_mail,$mails_options,$mails_donnees , $template,$page ,$infos_message,$erreur_message,$args,$lang, $lang_info;
    187      $match=array("<",">");
    188      $string=array("&lt;","&gt;") ;
    189      //  $headers=str_replace( $match,$string, $headers);
    190     // Warning: mail() has been disabled for security reasons
    191     $est_un_spam =!(strpos(strtolower($message), 'spam') === false); 
    192 
    193     $log_message =  " :".sprintf(l10n('Sv_debug_message'),
    194                       ($ret==true)? "true" : "false",
    195                       "\n".$message ,
    196                       "\n".$mailto ,
    197                       "\n".$subject ,
    198                       "\n".$headers ,
    199                       "\n".$content ,
    200                       "\n".$nb_destinataires) ;
    201 
    202     if ( ($ret==false) || ($est_un_spam==true) || ($nb_destinataires == 0) ) {
    203      //=============== La fonction mail retourne une erreur =========================
    204         $ret="Error";
    205         // Bad recipient address syntax
    206         $pos1 = strpos(strtolower($message), 'bad recipient address syntax');
    207         if (  !($pos1 === false) ){
    208             $erreur_message .= l10n('Sv_detection_de').' Bad recipient address syntax .';
    209             $erreur_message .= l10n('Sv_verifiez_les_destinataires').' (Bcc,Cc,To)<br />';
    210             }               
    211         $erreur_message .=$ret . " :".sprintf(l10n('Sv_debug_message'),
    212                               ($ret==true)? "true" : "false",
    213                               htmlspecialchars($message) ,
    214                               htmlspecialchars( $mailto) ,
    215                               htmlspecialchars($subject) ,
    216                               htmlspecialchars($headers) ,
    217                               htmlspecialchars($content) ,
    218                               $nb_destinataires );
    219 
    220      Mail_supervisor_log($mailto,$log_message) ;   
    221            
    222       }else{           
    223     if( isset($mails_options['debug_mail']) && $mails_options['debug_mail']=="on") {
    224               $infos_message .="DEBUG : " .sprintf(l10n('Sv_debug_message'),
    225                                   ($ret==true)? "true" : "false",
    226                                   htmlspecialchars( $message) ,
    227                                   htmlspecialchars( $mailto) ,
    228                                   htmlspecialchars($subject) ,
    229                                   htmlspecialchars($headers) ,
    230                                   htmlspecialchars($content) ,
    231                                   $nb_destinataires );
    232              
    233          Mail_supervisor_log($mailto,"DEBUG :" .  ($log_message)) ;
    234         }
    235       }
    236       //=================================================================
    237         if ($est_un_spam == false){
    238                 if ($mails_donnees['nb_mails']==0) {    $mails_donnees['date_mail'] =  time();  }
    239                 $mails_donnees['nb_mails'] += $nb_destinataires;
    240             } else {
    241                 $ret="Error spam";
    242                 $mails_donnees['nb_spams'] += $nb_destinataires;
    243                 //--- Detection de spam ------------------
    244                 if ($mails_donnees['nb_spams']==0) {$mails_donnees['date_spam'] = time();   }
    245 
    246                 $trop_de_spam =!(strpos(strtolower($message), 'trop de spam') === false);
    247                 if ( $trop_de_spam ) {
    248                         $mails_donnees['nb_spams_maxi']=$mails_donnees['nb_spams'];
    249 
    250                         $mails_donnees['date_quarantaine']= time()  ;
    251                         $mails_donnees['quarantaine']= true    ;
    252                         $infos_message .=  $mail_supervisor->Memo_Var($mails_donnees);
    253                     }
    254             }
    255  return $ret ;
     205        global $conf, $user,  $conf_mail,$mails_options,$mails_donnees , $template,$page ,$infos_message,$erreur_message,$args,$lang, $lang_info;
     206        $match=array("<",">");
     207        $string=array("&lt;","&gt;") ;
     208        //  $headers=str_replace( $match,$string, $headers);
     209        // Warning: mail() has been disabled for security reasons
     210        $est_un_spam =!(strpos(strtolower($message), 'spam') === false);
     211
     212        $log_message =  " :".sprintf(l10n('Sv_debug_message'),
     213                        ($ret==true)? "true" : "false",
     214                        "\n".$message ,
     215                        "\n".$mailto ,
     216                        "\n".$subject ,
     217                        "\n".$headers ,
     218                        "\n".$content ,
     219                        "\n".$nb_destinataires) ;
     220
     221        if ( ($ret==false) || ($est_un_spam==true) || ($nb_destinataires == 0) ) {
     222                //=============== La fonction mail retourne une erreur =========================
     223                $ret="Error";
     224                // Bad recipient address syntax
     225                $pos1 = strpos(strtolower($message), 'bad recipient address syntax');
     226                if (  !($pos1 === false) ){
     227                        $erreur_message .= l10n('Sv_detection_de').' Bad recipient address syntax .';
     228                        $erreur_message .= l10n('Sv_verifiez_les_destinataires').' (Bcc,Cc,To)<br />';
     229                }
     230                $erreur_message .=$ret . " :".sprintf(l10n('Sv_debug_message'),
     231                                ($ret==true)? "true" : "false",
     232                                htmlspecialchars($message) ,
     233                                htmlspecialchars( $mailto) ,
     234                                htmlspecialchars($subject) ,
     235                                htmlspecialchars($headers) ,
     236                                htmlspecialchars($content) ,
     237                                $nb_destinataires );
     238
     239                Mail_supervisor_log($mailto,$log_message) ;
     240                 
     241        }else{
     242                if( isset($mails_options['debug_mail']) && $mails_options['debug_mail']=="on") {
     243                        $infos_message .="DEBUG : " .sprintf(l10n('Sv_debug_message'),
     244                                        ($ret==true)? "true" : "false",
     245                                        htmlspecialchars( $message) ,
     246                                        htmlspecialchars( $mailto) ,
     247                                        htmlspecialchars($subject) ,
     248                                        htmlspecialchars($headers) ,
     249                                        htmlspecialchars($content) ,
     250                                        $nb_destinataires );
     251
     252                        Mail_supervisor_log($mailto,"DEBUG :" .  ($log_message)) ;
     253                }
     254        }
     255        //=================================================================
     256        if ($est_un_spam == false){
     257                if ($mails_donnees['nb_mails']==0) {
     258                        $mails_donnees['date_mail'] =  time();
     259                }
     260                $mails_donnees['nb_mails'] += $nb_destinataires;
     261        } else {
     262                $ret="Error spam";
     263                $mails_donnees['nb_spams'] += $nb_destinataires;
     264                //--- Detection de spam ------------------
     265                if ($mails_donnees['nb_spams']==0) {
     266                        $mails_donnees['date_spam'] = time();
     267                }
     268
     269                $trop_de_spam =!(strpos(strtolower($message), 'trop de spam') === false);
     270                if ( $trop_de_spam ) {
     271                        $mails_donnees['nb_spams_maxi']=$mails_donnees['nb_spams'];
     272
     273                        $mails_donnees['date_quarantaine']= time()  ;
     274                        $mails_donnees['quarantaine']= true    ;
     275                        $infos_message .=  $mail_supervisor->Memo_Var($mails_donnees);
     276                }
     277        }
     278        return $ret ;
    256279}
    257280//============================================================
    258281global $ms_file_log,$dir,$clj_pwd;
    259 
    260 
    261 $clj_pwd=$conf['local_data_dir'].'/Pwd';
    262   if (!is_dir($clj_pwd)){ 
    263     $umask = umask(0);
    264     $mkd = @mkdir($clj_pwd, 0755, true );
    265     umask($umask);
    266     if ($mkd==false){
    267     echo "<pre>PWD:$clj_pwd";
    268       fatal_error( "$clj_pwd ".l10n('no write access'));
    269       return false;
    270     } 
    271   }
     282$clj_pwd= $conf['data_location'].'/Pwd';
     283if (!is_dir($clj_pwd)){
     284        $umask = umask(0);
     285        $mkd = @mkdir($clj_pwd, 0755, true );
     286        umask($umask);
     287        if ($mkd==false){
     288                echo "<pre>PWD:$clj_pwd";
     289                fatal_error( "$clj_pwd ".l10n('no write access'));
     290                return false;
     291        }
     292}
    272293//==================================================
    273 $dir=$conf['local_data_dir'].'/Mail_supervisor_log';
    274  if (!is_dir($dir)){ 
    275     $umask = umask(0);
    276     $mkd = @mkdir($dir, 0755, true );
    277     umask($umask);
    278     if ($mkd==false){
    279       echo "<pre>Dir:$dir";
    280       fatal_error( "$dir ".l10n('no write access'));
    281       return false;
    282     }
    283   }
     294$dir=$conf['data_location'].'/Mail_supervisor_log';
     295if (!is_dir($dir)){
     296        $umask = umask(0);
     297        $mkd = @mkdir($dir, 0755, true );
     298        umask($umask);
     299        if ($mkd==false){
     300                echo "<pre>Dir:$dir";
     301                fatal_error( "$dir ".l10n('no write access'));
     302                return false;
     303        }
     304}
    284305//==================================================
    285306//add_event_handler('loc_begin_page_header',  'set_access'   );
    286307function set_access(){
    287 global $user;
    288   global $ms_file_log,$dir,$clj_pwd;
    289   global $user,$conf;
    290   $pwd=$clj_pwd;
    291 
    292 if(!file_exists( $pwd.'/.htpasswd') || !file_exists( $dir.'/.htaccess')){
    293 //=========================================================
    294     // Creation liste mot de passe
    295 //=========================================================
    296 $server=$_SERVER["SERVER_NAME"];
    297 $server_ip=$_SERVER["SERVER_ADDR"];
    298 $user_ip=$_SERVER["REMOTE_ADDR"];
    299         $pattern ="/(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]{1}[0-9]|[1-9])\.){1}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9])\.){2}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9]){1}))/" ;       
    300         $local=preg_match($pattern,$user_ip);
    301 
    302   $file = $pwd.'/.htpasswd';   
    303    $htmes1 =$conf['db_user'].":".$conf['db_password']."\n";
    304    $htmes2 =$conf['db_user'].":".crypt($conf['db_password'], 'rl')."\n";
    305 if(preg_match("/free/i",$server)||$local)
    306    $htmes=$htmes1;
    307  else
    308     $htmes=$htmes2;
    309  //==== Ecriture fichier texte
    310 
    311  $fp = fopen ( $file , "w"); 
    312  fwrite($fp ,  $htmes,strlen($htmes)); 
    313  fclose ($fp);
    314 
    315   $file = $pwd.'/.htaccess';
    316   @file_put_contents( $file, "deny for all" );
    317 //=========================================================
    318       // Creation fichier htaccess
    319 //=========================================================
    320 $racine=explode("/",$_SERVER["PHP_SELF"] );
    321 $racine = $racine[1] ;
    322 if(preg_match("/free/i",$server)) {
    323    $AuthUserFile='PerlSetVar AuthFile '.$racine.'/_data/Pwd' .'/.htpasswd';
    324 }else{
    325  if($local)
    326     $AuthUserFile='AuthUserFile '.realpath($pwd).'\\.htpasswd'."\n".'AuthGroupFile /dev/null';
    327     else
    328 $AuthUserFile='AuthUserFile '.realpath($pwd).'\\.htpasswd'."\n".'AuthGroupFile /dev/null';
    329 }
    330 
    331 //============================================================
    332 $htmes=$AuthUserFile."\n".
    333       'AuthName "Mail_supervisor_log"'."\n".
    334 'AuthType Basic'."\n".
    335 '<limit GET>'."\n".
    336 'require valid-user'."\n".
    337 '</Limit>';
    338   $file = $dir.'/.htaccess';
    339   @file_put_contents( $file, $htmes );
    340 //============================================================
    341 
    342     }
    343 
    344   }
     308        global $user;
     309        global $ms_file_log,$dir,$clj_pwd;
     310        global $user,$conf;
     311        $pwd=$clj_pwd;
     312
     313        if(!file_exists( $pwd.'/.htpasswd') || !file_exists( $dir.'/.htaccess')){
     314                //=========================================================
     315                // Creation liste mot de passe
     316                //=========================================================
     317                $server=$_SERVER["SERVER_NAME"];
     318                $server_ip=$_SERVER["SERVER_ADDR"];
     319                $user_ip=$_SERVER["REMOTE_ADDR"];
     320                $pattern ="/(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]{1}[0-9]|[1-9])\.){1}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9])\.){2}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9]){1}))/" ;
     321                $local=preg_match($pattern,$user_ip);
     322
     323                $file = $pwd.'/.htpasswd';
     324                $htmes1 =$conf['db_user'].":".$conf['db_password']."\n";
     325                $htmes2 =$conf['db_user'].":".crypt($conf['db_password'], 'rl')."\n";
     326                if(preg_match("/free/i",$server)||$local)
     327                        $htmes=$htmes1;
     328                else
     329                        $htmes=$htmes2;
     330                //==== Ecriture fichier texte
     331
     332                $fp = fopen ( $file , "w");
     333                fwrite($fp ,  $htmes,strlen($htmes));
     334                fclose ($fp);
     335
     336                $file = $pwd.'/.htaccess';
     337                @file_put_contents( $file, "deny for all" );
     338                //=========================================================
     339                // Creation fichier htaccess
     340                //=========================================================
     341                $racine=explode("/",$_SERVER["PHP_SELF"] );
     342                $racine = $racine[1] ;
     343                if(preg_match("/free/i",$server)) {
     344                        $AuthUserFile='PerlSetVar AuthFile '.$racine.'/_data/Pwd' .'/.htpasswd';
     345                }else{
     346                        if($local)
     347                                $AuthUserFile='AuthUserFile '.realpath($pwd).'\\.htpasswd'."\n".'AuthGroupFile /dev/null';
     348                        else
     349                                $AuthUserFile='AuthUserFile '.realpath($pwd).'\\.htpasswd'."\n".'AuthGroupFile /dev/null';
     350                }
     351
     352                //============================================================
     353                $htmes=$AuthUserFile."\n".
     354                                'AuthName "Mail_supervisor_log"'."\n".
     355                                'AuthType Basic'."\n".
     356                                '<limit GET>'."\n".
     357                                'require valid-user'."\n".
     358                                '</Limit>';
     359                $file = $dir.'/.htaccess';
     360                @file_put_contents( $file, $htmes );
     361                //============================================================
     362
     363        }
     364
     365}
    345366
    346367if($ms_file_log=="") $ms_file_log = $dir."/"."pw1.html";
     
    349370//============================================================
    350371function Mail_supervisor_log($label_,$lines){
    351   global $ms_file_log,$conf; 
    352   $nb_lignes=600 ;
    353 $t= var_export( $lines, true );
    354 $s  = htmlspecialchars(  $lines);
    355  $s  =  (  $lines);
    356     if (!file_exists($ms_file_log)) {
    357     $handle = fopen($ms_file_log, 'w');
    358     fwrite($handle, "\n");
    359     fclose($handle);
    360     }
    361   $tableau=file($ms_file_log);
    362   $handle = fopen($ms_file_log, 'a');
    363   $nb=count ($tableau);
    364    if($nb>$nb_lignes) {
    365       $handle = fopen($ms_file_log, 'w');
    366       fwrite($handle, $nb. " > " . $nb_lignes . "  RAZ " ."\n");
    367    }
    368  //rewind ($handle); // Go back to the beginning
    369  //fwrite ($handle, sprintf("%5d ", $nb)); // Don't forget to increment the counter
    370  $s="\n".date('Y m d H:m:s ')."\n".$s;
    371 
    372 
    373 //$s= nl2br($s);
    374 
    375  if( $s !="") fwrite($handle,$s );
    376       fclose($handle);
     372        global $ms_file_log,$conf;
     373        $nb_lignes=600 ;
     374        $t= var_export( $lines, true );
     375        $s  = htmlspecialchars(  $lines);
     376        $s  =  (  $lines);
     377        if (!file_exists($ms_file_log)) {
     378                $handle = fopen($ms_file_log, 'w');
     379                fwrite($handle, "\n");
     380                fclose($handle);
     381        }
     382        $tableau=file($ms_file_log);
     383        $handle = fopen($ms_file_log, 'a');
     384        $nb=count ($tableau);
     385        if($nb>$nb_lignes) {
     386                $handle = fopen($ms_file_log, 'w');
     387                fwrite($handle, $nb. " > " . $nb_lignes . "  RAZ " ."\n");
     388        }
     389        //rewind ($handle); // Go back to the beginning
     390        //fwrite ($handle, sprintf("%5d ", $nb)); // Don't forget to increment the counter
     391        $s="\n".date('Y m d H:m:s ')."\n".$s;
     392
     393
     394        //$s= nl2br($s);
     395
     396        if( $s !="") fwrite($handle,$s );
     397        fclose($handle);
    377398}
    378399
Note: See TracChangeset for help on using the changeset viewer.