1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
<?php
/**
* IMP_Quota:: provides an API for retrieving Quota details from a mail
* server.
*
* $Horde: imp/lib/Quota.php,v 1.23.10.11 2008/01/02 11:31:18 jan Exp $
*
* Copyright 2002-2008 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
*
* @author Mike Cochrane <mike@graftonhall.co.nz>
* @package IMP_Quota
*/
class IMP_Quota {
/**
* Hash containing connection parameters.
*
* @var array
*/
var $_params = array();
/**
* Attempts to return a concrete Quota instance based on $driver.
*
* @param string $driver The type of concrete Quota subclass to return.
* @param array $params A hash containing any additional configuration or
* connection parameters a subclass might need.
*
* @return mixed The newly created concrete Quota instance, or false
* on error.
*/
function &factory($driver, $params = array())
{
$driver = basename($driver);
require_once dirname(__FILE__) . '/Quota/' . $driver . '.php';
$class = 'IMP_Quota_' . $driver;
if (class_exists($class)) {
$quota = new $class($params);
} else {
$quota = false;
}
return $quota;
}
/**
* Attempts to return a reference to a concrete Quota instance based on
* $driver.
*
* It will only create a new instance if no Quota instance with the same
* parameters currently exists.
*
* This should be used if multiple quota sources are required.
*
* This method must be invoked as: $var = &Quota::singleton()
*
* @param string $driver The type of concrete Quota subclass to return.
* @param array $params A hash containing any additional configuration or
* connection parameters a subclass might need.
*
* @return mixed The created concrete Quota instance, or false on error.
*/
function &singleton($driver, $params = array())
{
static $instances;
if (!isset($instances)) {
$instances = array();
}
$signature = serialize(array($driver, $params));
if (!isset($instances[$signature])) {
$instances[$signature] = &IMP_Quota::factory($driver, $params);
}
return $instances[$signature];
}
/**
* Constructor.
*
* @param array $params Hash containing connection parameters.
*/
function IMP_Quota($params = array())
{
$this->_params = $params;
/* If 'password' exists in params, it has been encrypted in the
* session so we need to decrypt. */
if (isset($this->_params['password'])) {
$this->_params['password'] = Secret::read(Secret::getKey('imp'), $this->_params['password']);
}
}
/**
* Get quota information (used/allocated), in bytes.
*
* @return mixed An associative array.
* 'limit' = Maximum quota allowed
* 'usage' = Currently used portion of quota (in bytes)
* Returns PEAR_Error on failure.
*/
function getQuota()
{
return array('usage' => 0, 'limit' => 0);
}
}
|