mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-29 03:59:21 +03:00
Moved cache drivers outside core to extensions (plugins)
This commit is contained in:
parent
d5690fc579
commit
4fc04648cf
267 changed files with 39 additions and 64 deletions
176
plugins/cache-redis/Predis/Connection/Parameters.php
Normal file
176
plugins/cache-redis/Predis/Connection/Parameters.php
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Predis package.
|
||||
*
|
||||
* (c) Daniele Alessandri <suppakilla@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Predis\Connection;
|
||||
|
||||
/**
|
||||
* Container for connection parameters used to initialize connections to Redis.
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @author Daniele Alessandri <suppakilla@gmail.com>
|
||||
*/
|
||||
class Parameters implements ParametersInterface
|
||||
{
|
||||
private $parameters;
|
||||
|
||||
private static $defaults = array(
|
||||
'scheme' => 'tcp',
|
||||
'host' => '127.0.0.1',
|
||||
'port' => 6379,
|
||||
'timeout' => 5.0,
|
||||
);
|
||||
|
||||
/**
|
||||
* @param array $parameters Named array of connection parameters.
|
||||
*/
|
||||
public function __construct(array $parameters = array())
|
||||
{
|
||||
$this->parameters = $this->filter($parameters) + $this->getDefaults();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns some default parameters with their values.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getDefaults()
|
||||
{
|
||||
return self::$defaults;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new instance by supplying the initial parameters either in the
|
||||
* form of an URI string or a named array.
|
||||
*
|
||||
* @param array|string $parameters Set of connection parameters.
|
||||
*
|
||||
* @return Parameters
|
||||
*/
|
||||
public static function create($parameters)
|
||||
{
|
||||
if (is_string($parameters)) {
|
||||
$parameters = static::parse($parameters);
|
||||
}
|
||||
|
||||
return new static($parameters ?: array());
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses an URI string returning an array of connection parameters.
|
||||
*
|
||||
* When using the "redis" and "rediss" schemes the URI is parsed according
|
||||
* to the rules defined by the provisional registration documents approved
|
||||
* by IANA. If the URI has a password in its "user-information" part or a
|
||||
* database number in the "path" part these values override the values of
|
||||
* "password" and "database" if they are present in the "query" part.
|
||||
*
|
||||
* @link http://www.iana.org/assignments/uri-schemes/prov/redis
|
||||
* @link http://www.iana.org/assignments/uri-schemes/prov/redis
|
||||
*
|
||||
* @param string $uri URI string.
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function parse($uri)
|
||||
{
|
||||
if (stripos($uri, 'unix') === 0) {
|
||||
// Hack to support URIs for UNIX sockets with minimal effort.
|
||||
$uri = str_ireplace('unix:///', 'unix://localhost/', $uri);
|
||||
}
|
||||
|
||||
if (!$parsed = parse_url($uri)) {
|
||||
throw new \InvalidArgumentException("Invalid parameters URI: $uri");
|
||||
}
|
||||
|
||||
if (
|
||||
isset($parsed['host'])
|
||||
&& false !== strpos($parsed['host'], '[')
|
||||
&& false !== strpos($parsed['host'], ']')
|
||||
) {
|
||||
$parsed['host'] = substr($parsed['host'], 1, -1);
|
||||
}
|
||||
|
||||
if (isset($parsed['query'])) {
|
||||
parse_str($parsed['query'], $queryarray);
|
||||
unset($parsed['query']);
|
||||
|
||||
$parsed = array_merge($parsed, $queryarray);
|
||||
}
|
||||
|
||||
if (stripos($uri, 'redis') === 0) {
|
||||
if (isset($parsed['pass'])) {
|
||||
$parsed['password'] = $parsed['pass'];
|
||||
unset($parsed['pass']);
|
||||
}
|
||||
|
||||
if (isset($parsed['path']) && preg_match('/^\/(\d+)(\/.*)?/', $parsed['path'], $path)) {
|
||||
$parsed['database'] = $path[1];
|
||||
|
||||
if (isset($path[2])) {
|
||||
$parsed['path'] = $path[2];
|
||||
} else {
|
||||
unset($parsed['path']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $parsed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates and converts each value of the connection parameters array.
|
||||
*
|
||||
* @param array $parameters Connection parameters.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function filter(array $parameters)
|
||||
{
|
||||
return $parameters ?: array();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __get($parameter)
|
||||
{
|
||||
if (isset($this->parameters[$parameter])) {
|
||||
return $this->parameters[$parameter];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __isset($parameter)
|
||||
{
|
||||
return isset($this->parameters[$parameter]);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function toArray()
|
||||
{
|
||||
return $this->parameters;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __sleep()
|
||||
{
|
||||
return array('parameters');
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue