Changeset 95475 in spip-zone for _plugins_/facteur


Ignore:
Timestamp:
Feb 25, 2016, 11:41:50 AM (3 years ago)
Author:
cedric@…
Message:

Gestion modernisee des erreurs : on utilise les exceptions pour catcher les eventuelles erreur de PHPMailer, et on relance une exception si demandee
on ajoute une methode SetException?() qui permet de definir si on veut des exceptions en utilisant Facteur ou non (non par defaut)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/facteur/trunk/classes/facteur.php

    r95472 r95475  
    6464                        $this->SMTPDebug = _FACTEUR_DEBUG_SMTP ;
    6565                }
     66                $this->exceptions = false;
    6667
    6768
     
    183184                        $this->ConvertirUtf8VersIso8859();
    184185                }
     186        }
     187
     188        /**
     189         * @param bool $exceptions
     190         */
     191        public function SetExceptions($exceptions){
     192                $this->exceptions = ($exceptions?true:false);
    185193        }
    186194
     
    353361        }
    354362
    355         /**
    356          * Envoi de l'email
     363
     364        /**
     365         * Une fonction wrapper pour appeler une methode de phpMailer
     366         * en recuperant l'erreur eventuelle, en la loguant via SPIP et en lancant une exception si demandee
     367         * @param string $function
     368         * @param array $args
    357369         * @return bool
    358          */
     370         * @throws phpmailerException
     371         */
     372        protected function callWrapper($function,$args){
     373                $exceptions = $this->exceptions;
     374                $this->exceptions = true;
     375                try {
     376                        $retour = call_user_func_array($function,$args);
     377                        $this->exceptions = $exceptions;
     378                }
     379                catch (phpmailerException $exc) {
     380                        spip_log($function."() : ".$exc->getMessage(),'facteur.'._LOG_ERREUR);
     381                        $this->exceptions = $exceptions;
     382                        if ($this->exceptions) {
     383                                throw $exc;
     384                        }
     385                        return false;
     386                }
     387
     388                return $retour;
     389        }
     390
     391        /*
     392         * Appel des fonctions parents via le callWrapper qui se charge de loger les erreurs
     393         */
     394
    359395        public function Send() {
    360                 ob_start();
    361                 $retour = parent::Send();
    362                 $error = ob_get_contents();
    363                 ob_end_clean();
    364                 if( !empty($error) ) {
    365                         spip_log("Erreur Facteur->Send : $error",'facteur.'._LOG_ERREUR);
    366                 }
    367                 return $retour;
    368         }
    369 
     396                return $this->callWrapper("parent::Send",func_get_args());
     397        }
    370398        public function addAttachment($path, $name = '', $encoding = 'base64', $type = '', $disposition = 'attachment') {
    371                 ob_start();
    372                 $retour = parent::AddAttachment($path, $name, $encoding, $type);
    373                 $error = ob_get_contents();
    374                 ob_end_clean();
    375                 if( !empty($error) ) {
    376                         spip_log("Erreur Facteur->AddAttachment : $error",'facteur.'._LOG_ERREUR);
    377                 }
    378                 return $retour;
    379         }
    380 
     399                return $this->callWrapper("parent::AddAttachment",func_get_args());
     400        }
    381401        public function AddReplyTo($address, $name = '') {
    382                 ob_start();
    383                 $retour = parent::AddReplyTo($address, $name);
    384                 $error = ob_get_contents();
    385                 ob_end_clean();
    386                 if( !empty($error) ) {
    387                         spip_log("Erreur Facteur->AddReplyTo : $error",'facteur.'._LOG_ERREUR);
    388                 }
    389                 return $retour;
     402                return $this->callWrapper("parent::AddReplyTo",func_get_args());
    390403        }
    391404        public function AddBCC($address, $name = '') {
    392                 ob_start();
    393                 $retour = parent::AddBCC($address, $name);
    394                 $error = ob_get_contents();
    395                 ob_end_clean();
    396                 if( !empty($error) ) {
    397                         spip_log("Erreur Facteur->AddBCC : $error",'facteur.'._LOG_ERREUR);
    398                 }
    399                 return $retour;
     405                return $this->callWrapper("parent::AddBCC",func_get_args());
    400406        }
    401407        public function AddCC($address, $name = '') {
    402                 ob_start();
    403                 $retour = parent::AddCC($address, $name);
    404                 $error = ob_get_contents();
    405                 ob_end_clean();
    406                 if( !empty($error) ) {
    407                         spip_log("Erreur Facteur->AddCC : $error",'facteur.'._LOG_ERREUR);
    408                 }
    409                 return $retour;
     408                return $this->callWrapper("parent::AddCC", func_get_args());
    410409        }
    411410}
Note: See TracChangeset for help on using the changeset viewer.