From 251fdaa7a63528d0de7301c00a94138780bfda03 Mon Sep 17 00:00:00 2001 From: Chuck Hagenbuch Date: Sun, 18 Jul 2010 16:59:36 -0400 Subject: [PATCH] Reorganize Horde_Mail a bit to group the transport classes --- framework/Alarm/lib/Horde/Alarm/Handler/Mail.php | 11 ++++---- framework/Core/lib/Horde/Core/Binder/Mail.php | 12 ++++---- framework/Mail/lib/Horde/Mail.php | 17 ++++++------ .../lib/Horde/Mail/{Driver.php => Transport.php} | 7 ++--- .../Mail/lib/Horde/Mail/{ => Transport}/Mail.php | 3 +- .../Mail/lib/Horde/Mail/{ => Transport}/Mock.php | 5 ++-- .../Mail/lib/Horde/Mail/{ => Transport}/Null.php | 7 ++--- .../lib/Horde/Mail/{ => Transport}/Sendmail.php | 3 +- .../Mail/lib/Horde/Mail/{ => Transport}/Smtp.php | 3 +- .../Mail/lib/Horde/Mail/{ => Transport}/Smtpmx.php | 3 +- framework/Mail/package.xml | 32 +++++++++++----------- framework/Mime/lib/Horde/Mime/Part.php | 8 ++---- imp/lib/Injector/Binder/Mail.php | 8 ++++-- 13 files changed, 55 insertions(+), 64 deletions(-) rename framework/Mail/lib/Horde/Mail/{Driver.php => Transport.php} (98%) rename framework/Mail/lib/Horde/Mail/{ => Transport}/Mail.php (98%) rename framework/Mail/lib/Horde/Mail/{ => Transport}/Mock.php (98%) rename framework/Mail/lib/Horde/Mail/{ => Transport}/Null.php (94%) rename framework/Mail/lib/Horde/Mail/{ => Transport}/Sendmail.php (99%) rename framework/Mail/lib/Horde/Mail/{ => Transport}/Smtp.php (99%) rename framework/Mail/lib/Horde/Mail/{ => Transport}/Smtpmx.php (99%) diff --git a/framework/Alarm/lib/Horde/Alarm/Handler/Mail.php b/framework/Alarm/lib/Horde/Alarm/Handler/Mail.php index d751054a7..3821cc4ee 100644 --- a/framework/Alarm/lib/Horde/Alarm/Handler/Mail.php +++ b/framework/Alarm/lib/Horde/Alarm/Handler/Mail.php @@ -25,9 +25,9 @@ class Horde_Alarm_Handler_Mail extends Horde_Alarm_Handler protected $_identity; /** - * A Horde_Mail_Driver object. + * A Horde_Mail_Transport object. * - * @var Horde_Mail_Driver + * @var Horde_Mail_Transport */ protected $_mail; @@ -45,7 +45,7 @@ class Horde_Alarm_Handler_Mail extends Horde_Alarm_Handler * Required parameter: * - identity: An identity factory that implements * getIdentity(). - * - mail: A Horde_Mail_Driver instance. + * - mail: A Horde_Mail_Transport instance. * - charset: The charset of the messages. */ public function __construct(array $params = null) @@ -58,9 +58,8 @@ class Horde_Alarm_Handler_Mail extends Horde_Alarm_Handler if (!method_exists($params['identity'], 'getIdentity')) { throw new Horde_Alarm_Exception('Parameter \'identity\' does not implement getIdentity().'); } - $r = new ReflectionObject($params['mail']); - if (!($params['mail'] instanceof Horde_Mail_Driver)) { - throw new Horde_Alarm_Exception('Parameter \'mail\' is not a Horde_Mail_Driver object.'); + if (!($params['mail'] instanceof Horde_Mail_Transport)) { + throw new Horde_Alarm_Exception('Parameter \'mail\' is not a Horde_Mail_Transport object.'); } $this->_identity = $params['identity']; $this->_mail = $params['mail']; diff --git a/framework/Core/lib/Horde/Core/Binder/Mail.php b/framework/Core/lib/Horde/Core/Binder/Mail.php index d2602a6a7..94fa3ab46 100644 --- a/framework/Core/lib/Horde/Core/Binder/Mail.php +++ b/framework/Core/lib/Horde/Core/Binder/Mail.php @@ -7,25 +7,25 @@ class Horde_Core_Binder_Mail implements Horde_Injector_Binder { public function create(Horde_Injector $injector) { - $driver = isset($GLOBALS['conf']['mailer']['type']) + $transport = isset($GLOBALS['conf']['mailer']['type']) ? $GLOBALS['conf']['mailer']['type'] : 'null'; $params = isset($GLOBALS['conf']['mailer']['params']) ? $GLOBALS['conf']['mailer']['params'] : array(); - if (($driver == 'smtp') && + if (($transport == 'smtp') && $params['auth'] && empty($params['username'])) { $params['username'] = $GLOBALS['registry']->getAuth(); $params['password'] = $GLOBALS['registry']->getAuthCredential('password'); } - try { - return Horde_Mail::factory($driver, $params); - } catch (Horde_Mime_Exception $e) { - throw new Horde_Exception($e); + $class = 'Horde_Mail_Transport_' . ucfirst($transport); + if (class_exists($class)) { + return new $class($params); } + throw new Horde_Exception('Unable to find class for transport ' . $transport); } public function equals(Horde_Injector_Binder $binder) diff --git a/framework/Mail/lib/Horde/Mail.php b/framework/Mail/lib/Horde/Mail.php index 44d1797de..d3b6532e1 100644 --- a/framework/Mail/lib/Horde/Mail.php +++ b/framework/Mail/lib/Horde/Mail.php @@ -50,23 +50,22 @@ class Horde_Mail { /** - * Returns a Horde_Mail_Driver:: object. + * Returns a Horde_Mail_Transport:: object. * - * @param string $driver The driver to instantiate. - * @param array $params The parameters to pass to the object. + * @param string $transport The transport to instantiate. + * @param array $params The parameters to pass to the transport. * - * @return Horde_Mail_Driver The driver instance. + * @return Horde_Mail_Transport The transport instance. * @throws Horde_Mail_Exception + * @deprecated */ - static public function factory($driver, $params = array()) + static public function factory($transport, $params = array()) { - $class = __CLASS__ . '_' . ucfirst($driver); - + $class = 'Horde_Mail_Transport_' . ucfirst($transport); if (class_exists($class)) { return new $class($params); } - throw new Horde_Mail_Exception('Unable to find class for driver ' . $driver); + throw new Horde_Mail_Exception('Unable to find class for transport ' . $transport); } - } diff --git a/framework/Mail/lib/Horde/Mail/Driver.php b/framework/Mail/lib/Horde/Mail/Transport.php similarity index 98% rename from framework/Mail/lib/Horde/Mail/Driver.php rename to framework/Mail/lib/Horde/Mail/Transport.php index fb0f08804..23edadfbf 100644 --- a/framework/Mail/lib/Horde/Mail/Driver.php +++ b/framework/Mail/lib/Horde/Mail/Transport.php @@ -1,6 +1,6 @@ _postSendCallback, array($this, $recipients, $headers, $body)); } } - } diff --git a/framework/Mail/lib/Horde/Mail/Null.php b/framework/Mail/lib/Horde/Mail/Transport/Null.php similarity index 94% rename from framework/Mail/lib/Horde/Mail/Null.php rename to framework/Mail/lib/Horde/Mail/Transport/Null.php index bf03470ea..b39746213 100644 --- a/framework/Mail/lib/Horde/Mail/Null.php +++ b/framework/Mail/lib/Horde/Mail/Transport/Null.php @@ -1,6 +1,6 @@ getMessage() . " (code: $code, response: $response)]", $e_code); } - } diff --git a/framework/Mail/lib/Horde/Mail/Smtpmx.php b/framework/Mail/lib/Horde/Mail/Transport/Smtpmx.php similarity index 99% rename from framework/Mail/lib/Horde/Mail/Smtpmx.php rename to framework/Mail/lib/Horde/Mail/Transport/Smtpmx.php index 45966a9fc..235795c1f 100644 --- a/framework/Mail/lib/Horde/Mail/Smtpmx.php +++ b/framework/Mail/lib/Horde/Mail/Transport/Smtpmx.php @@ -47,7 +47,7 @@ * @category Horde * @package Mail */ -class Horde_Mail_Smtpmx extends Horde_Mail_Driver +class Horde_Mail_Transport_Smtpmx extends Horde_Mail_Transport { /** * SMTP connection object. @@ -385,5 +385,4 @@ class Horde_Mail_Smtpmx extends Horde_Mail_Driver throw new Horde_Mail_Exception($msg, $this->_errorCode[$id]['code']); } - } diff --git a/framework/Mail/package.xml b/framework/Mail/package.xml index 835cd21c8..af2099a88 100644 --- a/framework/Mail/package.xml +++ b/framework/Mail/package.xml @@ -38,15 +38,17 @@ http://pear.php.net/dtd/package-2.0.xsd"> - + + + + + + + + - - - - - - + @@ -84,18 +86,16 @@ http://pear.php.net/dtd/package-2.0.xsd"> - + + + + + + - - - - - - + - - diff --git a/framework/Mime/lib/Horde/Mime/Part.php b/framework/Mime/lib/Horde/Mime/Part.php index 3cf296fae..66ad8ea96 100644 --- a/framework/Mime/lib/Horde/Mime/Part.php +++ b/framework/Mime/lib/Horde/Mime/Part.php @@ -1471,17 +1471,13 @@ class Horde_Mime_Part * @param string $email The address list to send to. * @param Horde_Mime_Headers $headers The Horde_Mime_Headers object * holding this message's headers. - * @param Horde_Mail_Driver $mailer A Horde_Mail_Driver object. + * @param Horde_Mail_Transport $mailer A Horde_Mail_Transport object. * * @throws Horde_Mime_Exception * @throws InvalidArgumentException */ - public function send($email, $headers, $mailer) + public function send($email, $headers, Horde_Mail_Transport $mailer) { - if (!($mailer instanceof Horde_Mail_Driver)) { - throw new InvalidArgumentException('Invalid Horde_Mail_Driver object passed to send().'); - } - $old_basepart = $this->_basepart; $this->_basepart = true; diff --git a/imp/lib/Injector/Binder/Mail.php b/imp/lib/Injector/Binder/Mail.php index 92c8a83e3..265b38b6e 100644 --- a/imp/lib/Injector/Binder/Mail.php +++ b/imp/lib/Injector/Binder/Mail.php @@ -41,7 +41,12 @@ class IMP_Injector_Binder_Mail implements Horde_Injector_Binder $params['password'] = $imap_ob->getParam('password'); } - return Horde_Mail::factory($GLOBALS['conf']['mailer']['type'], $params); + $transport = $GLOBALS['conf']['mailer']['type']; + $class = 'Horde_Mail_Transport_' . ucfirst($transport); + if (class_exists($class)) { + return new $class($params); + } + throw new Horde_Exception('Unable to find class for transport ' . $transport); } /** @@ -50,5 +55,4 @@ class IMP_Injector_Binder_Mail implements Horde_Injector_Binder { return false; } - } -- 2.11.0