first commit
This commit is contained in:
105
system/vendor/swift/Swift/Plugin/AntiFlood.php
vendored
Normal file
105
system/vendor/swift/Swift/Plugin/AntiFlood.php
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Swift Mailer AntiFlood Plugin
|
||||
* Please read the LICENSE file
|
||||
* @author Chris Corbyn <chris@w3style.co.uk>
|
||||
* @package Swift_Plugin
|
||||
* @license GNU Lesser General Public License
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . "/../ClassLoader.php";
|
||||
Swift_ClassLoader::load("Swift_Events_SendListener");
|
||||
|
||||
/**
|
||||
* Swift AntiFlood controller.
|
||||
* Closes a connection and pauses for X seconds after a number of emails have been sent.
|
||||
* @package Swift_Plugin
|
||||
* @author Chris Corbyn <chris@w3style.co.uk>
|
||||
*/
|
||||
class Swift_Plugin_AntiFlood implements Swift_Events_SendListener
|
||||
{
|
||||
/**
|
||||
* The number of emails to send between connections
|
||||
* @var int
|
||||
*/
|
||||
protected $threshold = null;
|
||||
/**
|
||||
* The number of seconds to pause for between connections
|
||||
* @var int
|
||||
*/
|
||||
protected $waitFor = null;
|
||||
/**
|
||||
* Number of emails sent so far
|
||||
* @var int
|
||||
*/
|
||||
protected $count = 0;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param int Number of emails to send before re-connecting
|
||||
* @param int The timeout in seconds between connections
|
||||
*/
|
||||
public function __construct($threshold, $wait=0)
|
||||
{
|
||||
$this->setThreshold($threshold);
|
||||
$this->setWait($wait);
|
||||
}
|
||||
/**
|
||||
* Set the number of emails which must be sent for a reconnection to occur
|
||||
* @param int Number of emails
|
||||
*/
|
||||
public function setThreshold($threshold)
|
||||
{
|
||||
$this->threshold = (int) $threshold;
|
||||
}
|
||||
/**
|
||||
* Get the number of emails which need to be sent for reconnection to occur
|
||||
* @return int
|
||||
*/
|
||||
public function getThreshold()
|
||||
{
|
||||
return $this->threshold;
|
||||
}
|
||||
/**
|
||||
* Set the number of seconds the plugin should wait for before reconnecting
|
||||
* @param int Time in seconds
|
||||
*/
|
||||
public function setWait($time)
|
||||
{
|
||||
$this->waitFor = (int) $time;
|
||||
}
|
||||
/**
|
||||
* Get the number of seconds the plugin should wait for before re-connecting
|
||||
* @return int
|
||||
*/
|
||||
public function getWait()
|
||||
{
|
||||
return $this->waitFor;
|
||||
}
|
||||
/**
|
||||
* Sleep for a given number of seconds
|
||||
* @param int Number of seconds to wait for
|
||||
*/
|
||||
public function wait($seconds)
|
||||
{
|
||||
if ($seconds) sleep($seconds);
|
||||
}
|
||||
/**
|
||||
* Swift's SendEvent listener.
|
||||
* Invoked when Swift sends a message
|
||||
* @param Swift_Events_SendEvent The event information
|
||||
* @throws Swift_ConnectionException If the connection cannot be closed/re-opened
|
||||
*/
|
||||
public function sendPerformed(Swift_Events_SendEvent $e)
|
||||
{
|
||||
$this->count++;
|
||||
if ($this->count >= $this->getThreshold())
|
||||
{
|
||||
$e->getSwift()->disconnect();
|
||||
$this->wait($this->getWait());
|
||||
$e->getSwift()->connect();
|
||||
$this->count = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user