mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-05-12 23:49:16 -04:00
During this process, remove a considerable number of files from kohana
that we will not be needing in Gallery3, including the following files
and directories:
kohana/application
kohana/example.htaccess
kohana/index.php
kohana/install.php
kohana/kohana.png
kohana/modules/archive
kohana/modules/auth
kohana/modules/flot
kohana/modules/gmaps
kohana/modules/kodoc
kohana/modules/payment
kohana/modules/smarty
kohana/modules/unit_test/i18n
kohana/modules/unit_test/tests/Example_Test.php
kohana/modules/unit_test/tests/Valid_Test.php
kohana/system/config/captcha.php
kohana/system/controllers/captcha.php
kohana/system/fonts
kohana/system/i18n
kohana/system/libraries/Calendar.php
kohana/system/libraries/Calendar_Event.php
kohana/system/libraries/Captcha.php
kohana/system/libraries/Tagcloud.php
kohana/system/vendor
kohana/system/views/pagination
kohana/system/views/kohana_calendar.php
181 lines
4.6 KiB
PHP
181 lines
4.6 KiB
PHP
<?php defined('SYSPATH') OR die('No direct access allowed.');
|
|
/**
|
|
* Email helper class.
|
|
*
|
|
* $Id$
|
|
*
|
|
* @package Core
|
|
* @author Kohana Team
|
|
* @copyright (c) 2007-2008 Kohana Team
|
|
* @license http://kohanaphp.com/license.html
|
|
*/
|
|
class email_Core {
|
|
|
|
// SwiftMailer instance
|
|
protected static $mail;
|
|
|
|
/**
|
|
* Creates a SwiftMailer instance.
|
|
*
|
|
* @param string DSN connection string
|
|
* @return object Swift object
|
|
*/
|
|
public static function connect($config = NULL)
|
|
{
|
|
if ( ! class_exists('Swift', FALSE))
|
|
{
|
|
// Load SwiftMailer
|
|
require Kohana::find_file('vendor', 'swift/Swift');
|
|
|
|
// Register the Swift ClassLoader as an autoload
|
|
spl_autoload_register(array('Swift_ClassLoader', 'load'));
|
|
}
|
|
|
|
// Load default configuration
|
|
($config === NULL) and $config = Kohana::config('email');
|
|
|
|
switch ($config['driver'])
|
|
{
|
|
case 'smtp':
|
|
// Set port
|
|
$port = empty($config['options']['port']) ? NULL : (int) $config['options']['port'];
|
|
|
|
if (empty($config['options']['encryption']))
|
|
{
|
|
// No encryption
|
|
$encryption = Swift_Connection_SMTP::ENC_OFF;
|
|
}
|
|
else
|
|
{
|
|
// Set encryption
|
|
switch (strtolower($config['options']['encryption']))
|
|
{
|
|
case 'tls': $encryption = Swift_Connection_SMTP::ENC_TLS; break;
|
|
case 'ssl': $encryption = Swift_Connection_SMTP::ENC_SSL; break;
|
|
}
|
|
}
|
|
|
|
// Create a SMTP connection
|
|
$connection = new Swift_Connection_SMTP($config['options']['hostname'], $port, $encryption);
|
|
|
|
// Do authentication, if part of the DSN
|
|
empty($config['options']['username']) or $connection->setUsername($config['options']['username']);
|
|
empty($config['options']['password']) or $connection->setPassword($config['options']['password']);
|
|
|
|
if ( ! empty($config['options']['auth']))
|
|
{
|
|
// Get the class name and params
|
|
list ($class, $params) = arr::callback_string($config['options']['auth']);
|
|
|
|
if ($class === 'PopB4Smtp')
|
|
{
|
|
// Load the PopB4Smtp class manually, due to its odd filename
|
|
require Kohana::find_file('vendor', 'swift/Swift/Authenticator/$PopB4Smtp$');
|
|
}
|
|
|
|
// Prepare the class name for auto-loading
|
|
$class = 'Swift_Authenticator_'.$class;
|
|
|
|
// Attach the authenticator
|
|
$connection->attachAuthenticator(($params === NULL) ? new $class : new $class($params[0]));
|
|
}
|
|
|
|
// Set the timeout to 5 seconds
|
|
$connection->setTimeout(empty($config['options']['timeout']) ? 5 : (int) $config['options']['timeout']);
|
|
break;
|
|
case 'sendmail':
|
|
// Create a sendmail connection
|
|
$connection = new Swift_Connection_Sendmail
|
|
(
|
|
empty($config['options']) ? Swift_Connection_Sendmail::AUTO_DETECT : $config['options']
|
|
);
|
|
|
|
// Set the timeout to 5 seconds
|
|
$connection->setTimeout(5);
|
|
break;
|
|
default:
|
|
// Use the native connection
|
|
$connection = new Swift_Connection_NativeMail($config['options']);
|
|
break;
|
|
}
|
|
|
|
// Create the SwiftMailer instance
|
|
return email::$mail = new Swift($connection);
|
|
}
|
|
|
|
/**
|
|
* Send an email message.
|
|
*
|
|
* @param string|array recipient email (and name), or an array of To, Cc, Bcc names
|
|
* @param string|array sender email (and name)
|
|
* @param string message subject
|
|
* @param string message body
|
|
* @param boolean send email as HTML
|
|
* @return integer number of emails sent
|
|
*/
|
|
public static function send($to, $from, $subject, $message, $html = FALSE)
|
|
{
|
|
// Connect to SwiftMailer
|
|
(email::$mail === NULL) and email::connect();
|
|
|
|
// Determine the message type
|
|
$html = ($html === TRUE) ? 'text/html' : 'text/plain';
|
|
|
|
// Create the message
|
|
$message = new Swift_Message($subject, $message, $html, '8bit', 'utf-8');
|
|
|
|
if (is_string($to))
|
|
{
|
|
// Single recipient
|
|
$recipients = new Swift_Address($to);
|
|
}
|
|
elseif (is_array($to))
|
|
{
|
|
if (isset($to[0]) AND isset($to[1]))
|
|
{
|
|
// Create To: address set
|
|
$to = array('to' => $to);
|
|
}
|
|
|
|
// Create a list of recipients
|
|
$recipients = new Swift_RecipientList;
|
|
|
|
foreach ($to as $method => $set)
|
|
{
|
|
if ( ! in_array($method, array('to', 'cc', 'bcc')))
|
|
{
|
|
// Use To: by default
|
|
$method = 'to';
|
|
}
|
|
|
|
// Create method name
|
|
$method = 'add'.ucfirst($method);
|
|
|
|
if (is_array($set))
|
|
{
|
|
// Add a recipient with name
|
|
$recipients->$method($set[0], $set[1]);
|
|
}
|
|
else
|
|
{
|
|
// Add a recipient without name
|
|
$recipients->$method($set);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (is_string($from))
|
|
{
|
|
// From without a name
|
|
$from = new Swift_Address($from);
|
|
}
|
|
elseif (is_array($from))
|
|
{
|
|
// From with a name
|
|
$from = new Swift_Address($from[0], $from[1]);
|
|
}
|
|
|
|
return email::$mail->send($message, $recipients, $from);
|
|
}
|
|
|
|
} // End email
|