/** * Listen for the 'core.preinit' event. * * @param Zikula_Event $event Event. * * @return void */ public function request(Zikula_Event $event) { $requestDef = new Zikula_ServiceManager_Definition('Zikula_Request_Http'); $requestDef->addMethod('setSession', array(new Zikula_ServiceManager_Reference('session'))); $this->serviceManager->registerService('request', $requestDef); }
/** * Initialise. * * Runs ar plugin init time. * * @throws InvalidArgumentException If invalid configuration given. * * @return void */ public function initialize() { define('SWIFT_REQUIRED_LOADED', true); define('SWIFT_INIT_LOADED', true); // register namespace ZLoader::addAutoloader('Swift', dirname(__FILE__) . '/lib/vendor/SwiftMailer/classes'); // initialize Swift //require_once realpath($this->baseDir . '/lib/vendor/SwiftMailer/swift_init.php'); // dont use this as it fails in virtual hosting environments with open_basedir restrictions // Load in dependency maps require_once dirname(__FILE__) . '/lib/vendor/SwiftMailer/dependency_maps/cache_deps.php'; require_once dirname(__FILE__) . '/lib/vendor/SwiftMailer/dependency_maps/mime_deps.php'; require_once dirname(__FILE__) . '/lib/vendor/SwiftMailer/dependency_maps/transport_deps.php'; // load configuration (todo: move this to persistence). include dirname(__FILE__) . '/configuration/config.php'; $this->serviceManager['swiftmailer.preferences.sendmethod'] = $config['sendmethod']; $preferences = Swift_Preferences::getInstance(); $this->serviceManager['swiftmailer.preferences.charset'] = $config['charset']; $this->serviceManager['swiftmailer.preferences.cachetype'] = $config['cachetype']; $this->serviceManager['swiftmailer.preferences.tempdir'] = $config['tempdir']; $preferences->setCharset($config['charset']); $preferences->setCacheType($config['cachetype']); $preferences->setTempDir($config['tempdir']); // determine the correct transport $type = $config['transport']['type']; $args = $config['transport'][$type]; switch ($type) { case 'mail': $this->serviceManager['swiftmailer.transport.mail.extraparams'] = $args['extraparams']; $definition = new Zikula_ServiceManager_Definition('Swift_MailTransport', array(new Zikula_ServiceManager_Argument('swiftmailer.transport.mail.extraparams'))); break; case 'smtp': $this->serviceManager['swiftmailer.transport.smtp.host'] = $args['host']; $this->serviceManager['swiftmailer.transport.smtp.port'] = $args['port']; $definition = new Zikula_ServiceManager_Definition('Swift_SmtpTransport', array( new Zikula_ServiceManager_Argument('swiftmailer.transport.smtp.host'), new Zikula_ServiceManager_Argument('swiftmailer.transport.smtp.port'))); if ($args['username'] && $args['password']) { $this->serviceManager['swiftmailer.transport.smtp.username'] = $args['username']; $this->serviceManager['swiftmailer.transport.smtp.password'] = $args['password']; $definition->addMethod('setUserName', new Zikula_ServiceManager_Argument('swiftmailer.transport.smtp.username')); $definition->addMethod('setPassword', new Zikula_ServiceManager_Argument('swiftmailer.transport.smtp.password')); } if (isset($args['encryption'])) { $this->serviceManager['swiftmailer.transport.smtp.encryption'] = $args['encryption']; $definition->addMethod('setEncryption', new Zikula_ServiceManager_Argument('swiftmailer.transport.smtp.encryption')); } break; case 'sendmail': $this->serviceManager['swiftmailer.transport.mail.command'] = $args['command']; $definition = new Zikula_ServiceManager_Definition('Swift_SendmailTransport', array(new Zikula_ServiceManager_Argument('swiftmailer.transport.mail.command'))); break; default: // error throw new InvalidArgumentException('Invalid transport type, must be mail, smtp or sendmail'); break; } // register transport $this->serviceManager->registerService('swiftmailer.transport', $definition); // define and register mailer using transport service $definition = new Zikula_ServiceManager_Definition('Swift_Mailer', array(new Zikula_ServiceManager_Reference('swiftmailer.transport'))); $this->serviceManager->registerService('mailer', $definition, false); // register simple mailer service $definition = new Zikula_ServiceManager_Definition('SystemPlugins_SwiftMailer_Mailer', array(new Zikula_ServiceManager_Reference('zikula.servicemanager'))); $this->serviceManager->registerService('mailer.simple', $definition); }