Index: extensions/Mail_supervisor/main.inc.php
===================================================================
--- extensions/Mail_supervisor/main.inc.php	(revision 4023)
+++ extensions/Mail_supervisor/main.inc.php	(revision 4029)
@@ -1,6 +1,28 @@
 <?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery                                  |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
 /*
 Plugin Name: Mail supervisor
-Version: 1.0.1
+Version: 1.0.2
 Description:  Mail supervisor surveille l'envoie des mails. 
 Plugin URI: http://piwigo.org/ext/extension_view.php?eid=315
@@ -11,4 +33,5 @@
 
 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
 define('mail_superv_DIR' , basename(dirname(__FILE__)));
 define('MAIL_SUPERV_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
@@ -23,12 +46,16 @@
 function clj_mail($result, $mailto, $subject, $content, $headers, $args)
 {
-    global $conf, $user, $lang_info,  $conf_mail,$mails_options,$mails_données , $template,$page ,$erreur_message; 
+    global $conf, $user, $lang_info,  $conf_mail,$mails_options,$mails_données , $template,$page ,$erreur_message,$infos_message; 
 	// lecture config table -------------
 
-
+   
 	$mails_options = explode("," , $conf['mail_superv']);
-	
+	$infos_message="";
+	$message ="";
+	$erreur_messages="";
+
 	// lecture données       -------------
     $mails_données = Get_Datas();
+
 	
 	$nb_mails	  =	$mails_données['nb_mails'] ;
@@ -36,23 +63,29 @@
 	
 	$reste =    $mails_données['reste'] ;
-	$reste_mail =    $mails_données['reste_mail'] ;
-	$reste_spam =    $mails_données['reste_spam'] ;
-	
- $mails_données['quarantaine'] =    ( $mails_données['reste'] >0 ) ? "true" : "false" ;
- 
-
-    $match=array("<",">");
-    $string=array("&lt;","&gt;") ;
-	$search=array("D","H","M","S","W");
-	$replace=array(" day"," Hour"," minute"," second"," week");
-	
-$header_message='<pre>
-Destinataire :'.$mailto.'
-Headers      :
-'.str_replace( $match,$string, $headers).'
-Sujet        :'.$subject.'
-</pre>'; 
-
+	
+	
+	$rest_mail =    $mails_données['rest_mail'] ;
+	if ($rest_mail <=0 || $mails_données['nb_mails'] ==0 ){
+	   $mails_données['nb_mails'] =0 ;
+	   $mails_données['date_mail'] = time();
+	}
+	
+	$rest_spam =    $mails_données['rest_spam'] ;
+ 	if ($rest_spam <=0 || $mails_données['nb_spams'] ==0 ){
+	   $mails_données['nb_spams'] =0 ;
+	   $mails_données['date_spam'] = time();
+	}
+	
+	$alerte =   ( $mails_données['reste'] >0 ) ? true : false ; 
+	
+	$alerte_mail =    ( $mails_données['nb_mails'] >   $mails_données['nb_mails_maxi'] ) ? true : false ;
+	$alerte_spam =    (  $mails_données['nb_spams'] >   $mails_données['nb_spams_maxi'] ) ? true : false ;
+	
+ 
+ if ( ( !$alerte  && !$alerte_spam  && !$alerte_mail ) ) 
+  	{
+	     	 
   $nb_destinataires=0;
+  
  if ($mailto<>"" )  $nb_destinataires +=1; 
    //================= réécriture de l'entête ===============================
@@ -61,17 +94,13 @@
  	if ($mailto=="")	$mailto=$conf_mail['email_webmaster'];
 }
-if ($mails_options[1] == 'on') { 
    		if (!empty($args['Cc']))
-  		{
-		  $nb_destinataires += count($args['Cc']);
-		  $headers= corrige_header('Cc:',$headers);
+  		{$nb_destinataires += count($args['Cc']);
+		 if ($mails_options[1] == 'on') {  $headers= corrige_header('Cc:',$headers);}
   		}
   		if (!empty($args['Bcc']))
-  		{
-		  $nb_destinataires += count($args['Bcc']);
-		  $headers	= corrige_header('Bcc',$headers);
+  		{  $nb_destinataires += count($args['Bcc']); 
+		   if ($mails_options[1] == 'on') {  $headers	= corrige_header('Bcc',$headers);}
 		}
 
-  }
 
 if ($mails_options[2]=='on')   {
@@ -89,126 +118,117 @@
 	  	$content =$texte .$content ;
 }
-
-	
+ 
 $ret=false;
- if (    ($mails_données['quarantaine']=="false") ) 
-  {
- 	//======== Non mise en quarantaine =============
-
+
+	 $infos_message .=$nb_destinataires;
+		
+			
+ 	    //======== Non mise en quarantaine =============
    		ob_start();
-   	  		$ret = mail($mailto, 'Plugin'.$subject, $content, $headers);
- 	  		$message = ob_get_contents();
-    	ob_end_clean();
+		$ret = false;
+		 if ($nb_destinataires > 0) {
+   	  	  	 $ret = mail($mailto, $subject, $content, $headers);
+ 
+			}else{
+			   $message .='Nombre de destinataires = 0';
+			}
+ 	  		$message .= ob_get_contents();
+    	    ob_end_clean();
+			$mails_données['message']=$message;	
+	 		Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto);
 		
-			$mails_données['message']=$message;	
-			$est_un_spam =!(strpos(strtolower($message), 'spam') === false);
-     		if ($est_un_spam == false) {
-	           //--- Non détection de spam ------------------
-    			 if ($mails_données['nb_mails']==0) {
-	       			$date_mail=time();
-					
-					$mails_periode="+".str_replace( $search, $replace, $mails_données['nb_mails_periode']);
-					$next_day =  strtotime($mails_periode,time());
-           			$mails_données['date_mail'] =  $next_day;
-	 			} 	
-	 			$next_day = time() + (0); 
- 				$mails_données['date_quarantaine'] = $next_day ;
+  	
+	
+	} else {
+
+	//================== Est en quarantaine =======================	
+		$erreur_message .= 	l10n('To_day_is')."<br />";
+			if ($alerte_spam ) { 
+		        $type="Spams";
+				$d1=$mails_données['nb_spams'];
+				$d2=$mails_données['date_spam'];
+ 				$d3= $mails_données['rest_spam'];
+				$d4=time()+$d3 ;
+ 			} 
+ 
+			if ($alerte_mail) {
+		        $type="Mails";
+		        
+				$d1=$mails_données['nb_mails'];
+				$d2=$mails_données['date_mail'];
+ 				$d3= $mails_données['rest_mail'];
+				$d4=time()+$d3 ;
+ 			}
+			if ($alerte) {
+		        $type="Spams(Quarantaine)";
+				$d1=$mails_données['nb_spams'];
+				$d2=$mails_données['date_quarantaine'];
+ 				$d3= $mails_données['reste'];
+				$d4=time()+$d3 ;
+ } 
+
+
+$d2=date(l10n('formatdate'),$d2);
+$d3=int_to_heure($d3) ;
+$d4=date(l10n('formatdate'),$d4);
+
+		$erreur_message .='<br />'.sprintf(l10n('mise_en_quarantaine %s %s %s %s %s'),$type,$d1,$d2,$d3,$d4).'<br />';
+ }			
+ sauve_données();
+ return true ;
+}
+//===========================================================================================	
+function Gestion_erreurs($message,$ret,$nb_destinataires,$headers,$mailto)
+{			
+	 global $conf, $user, $lang_info,  $conf_mail,$mails_options,$mails_données , $template,$page ,$infos_message,$erreur_message,$args; 
+    $match=array("<",">");
+    $string=array("&lt;","&gt;") ;	 
+
+	
+	$est_un_spam =!(strpos(strtolower($message), 'spam') === false);
+	$headers=str_replace( $match,$string, $headers); 
+	
+	if ( ($ret==false) || ($est_un_spam==true) || ($nb_destinataires == 0) ) {
+		 ;				// Bad recipient address syntax 
+ 		$pos1 = strpos(strtolower($message), 'bad recipient address syntax');
+		if (  !($pos1 === false) ){
+			$erreur_message .='Détection de : Bad recipient address syntax .';
+ 			$erreur_message .='Vérifiez les destinataires: (Bcc,Cc,To)<br />';
+ 			}	
+	
+	$erreur_message .= sprintf(l10n('debug_message %s %s %s %s %s'),($ret==true)? "true" : "false",$message,$mailto,$headers,$nb_destinataires);
+       //=============== La fonction mail à retournéeune erreur =========================		
+
+				
+				}	
+				
+    	if ($est_un_spam == false) 
+			{
+    			if ($mails_données['nb_mails']==0) {	$mails_données['date_mail'] =  time();	} 	
  	    		$mails_données['nb_mails'] += $nb_destinataires;
-	  // teste limite atteinte :
-	
-	  if (($mails_données['nb_mails'] >= $mails_données['nb_mails_maxi'])) 
-			{
-			$erreur_message .= "ALERTE !!! DANGER DE MISE EN QUARANTAINE PAR VOTRE FAI <br />" ;
-			$erreur_message .=  "Vous avez d&eacute;pass&eacute; le nombre de mails admissibles par semaine. <br /> <br />";
-			$erreur_message .='Date du premier mail: ' . date('d-M-Y H:m:s',$mails_données['date_mail']);
-			$rest_mail=  $mails_données['date_mail']-time() ; 
-			$erreur_message .= '<br />Encore : '. int_to_heure($rest_mail) ;
-			
-				if ( (float) $rest_mail <= 0)
-					{
-					$mails_periode="+".str_replace( $search, $replace, $mails_données['nb_mails_periode']);
-					$next_day =  strtotime($mails_periode,time());
-           			$mails_données['date_mail'] =  $next_day;
-				
-					}
-			
-			
-			}
-			if ($ret==false) { 	
-       			//=============== La fonction mail à retournée false=========================		
-				$erreur_message .= '<br />---- La fonction mail &agrave; retourn&eacute;e [false]  ------<br />';
-					$erreur_message .='-------- MESSAGE erreur : -------------<br />';
-					$erreur_message .=$message ;				// Bad recipient address syntax 
- 				$pos1 = strpos(strtolower($message), 'bad recipient address syntax');
-				if (  !($pos1 === false) ){
-				$erreur_message .='D&eacute;tection de : Bad recipient address syntax .';
- 					$erreur_message .='V&eacuterifiez les destinataires: (Bcc,Cc,To)<br />';
- 					}
-					$erreur_message .='mailto:   "'.$mailto.'"<br />';
-
-					$erreur_message .='--------HEADERS -----------------<br />
-					';
-					$erreur_message .=$headers ;
-					
-
-				}
-			
- 		}else{
-		//--- Détection de spam ------------------
- 			
-			if ($mails_données['nb_spams']==0) {  $mails_données['date_spam']= time(); 	}
-			$mails_données['nb_spams'] += $nb_destinataires;
-			
-			$est_un_spam =!(strpos(strtolower($message), 'trop de spam') === false);
-			
-			if ( $est_un_spam ) { 
-			    $mails_données['quarantaine']=true;
-				 $spams_periode="+".str_replace($search, $replace, $mails_données['nb_spams_periode']);
-				
-					$next_day =  strtotime(  $spams_periode);
-					
-			//	$next_day =  strtotime('+2 day');
-		 		$mails_données['date_quarantaine']= $next_day       ;			
 			}
 			else
 			{
-	 		$mails_données['quarantaine']= ($mails_données['nb_spams'] >= $mails_données['nb_spams_maxi']);
-       		}
-        	//	$next_day = time() + (2 * 24 * 60 * 60);
-			if ($mails_données['quarantaine']) 
-				{
-				$erreur_message .= "ALERTE !!! DANGER DE MISE EN QUARANTAINE  <br />" ;
-				$erreur_message .=  "Vous avez d&eacute;pass&eacute; le nombre de spmas admissibles. <br /> <br />";
-				}
-	    		$erreur_message .="<br> Detection $message <br />".
-				"Nombre de spams d&eacute;tect&eacutes; ".$mails_données['nb_spams'];
+				$mails_données['nb_spams'] += $nb_destinataires;			
+			    //--- Détection de spam ------------------
+				if ($mails_données['nb_spams']==0) {$mails_données['date_spam'] = time(); 	}
+
+				$trop_de_spam =!(strpos(strtolower($message), 'trop de spam') === false);
+				if ( $trop_de_spam ) {
+						$mails_données['nb_spams_maxi']=$mails_données['nb_spams'];
+						$quarantaine_periode="+".str_replace( $period_search, $period_match, $mails_données['quarantaine_periode']);
+						$next_day =  strtotime($quarantaine_periode);  // détection de 'Trop de spam
+						$mails_données['date_quarantaine']= time()  ;	
+						$mails_données['quarantaine']= true    ;	
+						$infos_message=memo_var($mails_données);
+					}
+
  			}
  
-  	}else{
-		//======== Mise en quarantaine       =============
-$erreur_message =  '<br />
-Nous sommes le :       '. date('d-M-Y H:m:s') ."<br />";
-
-		if 	($reste >= 0) {
-$erreur_message .=
-"MISE EN QUARANTAINE !"."<br />".
-"Nombre de spams envoy&eacute;s :". $mails_données['nb_spams']."<br />".
-"Depuis le               :". date('d-M-Y H:m:s',$mails_données['date_spam'])."<br />".		
-"Il vous reste encore ". int_to_heure($mails_données['reste'])  . " avant le d&eacute;blocage par votre FAI<br />
-  qui devrait avoir lieu le ".date('d-M-Y H:m:s',$mails_données['date_quarantaine'])."." ;
-		
-		}
-			
-	  	$erreur_message .=  '</pre>'.
-	   	'
-	  
-	  '.
-	"Dernier message re&ccedil;u.:<br />". $mails_données['message']. "<br /> ";
-	  $ret = "break";
- }
-
-  sauve_données();
+
+ 
+
+ 
  $ret=true;
- 
  return $ret ;
  
