Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MINOR Replaced sapphire/thirdparty/Zend external with piston-managed …
…version git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@92492 467b73ca-7a2a-4603-9d3b-597d59a354a9
- Loading branch information
Showing
496 changed files
with
221,094 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,245 @@ | |||
<?php | |||
/** | |||
* Zend Framework | |||
* | |||
* LICENSE | |||
* | |||
* This source file is subject to the new BSD license that is bundled | |||
* with this package in the file LICENSE.txt. | |||
* It is also available through the world-wide-web at this URL: | |||
* http://framework.zend.com/license/new-bsd | |||
* If you did not receive a copy of the license and are unable to | |||
* obtain it through the world-wide-web, please send an email | |||
* to license@zend.com so we can send you a copy immediately. | |||
* | |||
* @category Zend | |||
* @package Zend_Cache | |||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) | |||
* @license http://framework.zend.com/license/new-bsd New BSD License | |||
* @version $Id: Cache.php 12519 2008-11-10 18:41:24Z alexander $ | |||
*/ | |||
|
|||
|
|||
/** | |||
* @package Zend_Cache | |||
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) | |||
* @license http://framework.zend.com/license/new-bsd New BSD License | |||
*/ | |||
abstract class Zend_Cache | |||
{ | |||
|
|||
/** | |||
* Standard frontends | |||
* | |||
* @var array | |||
*/ | |||
public static $standardFrontends = array('Core', 'Output', 'Class', 'File', 'Function', 'Page'); | |||
|
|||
/** | |||
* Standard backends | |||
* | |||
* @var array | |||
*/ | |||
public static $standardBackends = array('File', 'Sqlite', 'Memcached', 'Apc', 'ZendPlatform', 'Xcache', 'TwoLevels'); | |||
|
|||
/** | |||
* Standard backends which implement the ExtendedInterface | |||
* | |||
* @var array | |||
*/ | |||
public static $standardExtendedBackends = array('File', 'Apc', 'TwoLevels', 'Memcached', 'Sqlite'); | |||
|
|||
/** | |||
* Only for backward compatibily (may be removed in next major release) | |||
* | |||
* @var array | |||
* @deprecated | |||
*/ | |||
public static $availableFrontends = array('Core', 'Output', 'Class', 'File', 'Function', 'Page'); | |||
|
|||
/** | |||
* Only for backward compatibily (may be removed in next major release) | |||
* | |||
* @var array | |||
* @deprecated | |||
*/ | |||
public static $availableBackends = array('File', 'Sqlite', 'Memcached', 'Apc', 'ZendPlatform', 'Xcache', 'TwoLevels'); | |||
|
|||
/** | |||
* Consts for clean() method | |||
*/ | |||
const CLEANING_MODE_ALL = 'all'; | |||
const CLEANING_MODE_OLD = 'old'; | |||
const CLEANING_MODE_MATCHING_TAG = 'matchingTag'; | |||
const CLEANING_MODE_NOT_MATCHING_TAG = 'notMatchingTag'; | |||
const CLEANING_MODE_MATCHING_ANY_TAG = 'matchingAnyTag'; | |||
|
|||
/** | |||
* Factory | |||
* | |||
* @param mixed $frontend frontend name (string) or Zend_Cache_Frontend_ object | |||
* @param mixed $backend backend name (string) or Zend_Cache_Backend_ object | |||
* @param array $frontendOptions associative array of options for the corresponding frontend constructor | |||
* @param array $backendOptions associative array of options for the corresponding backend constructor | |||
* @param boolean $customFrontendNaming if true, the frontend argument is used as a complete class name ; if false, the frontend argument is used as the end of "Zend_Cache_Frontend_[...]" class name | |||
* @param boolean $customBackendNaming if true, the backend argument is used as a complete class name ; if false, the backend argument is used as the end of "Zend_Cache_Backend_[...]" class name | |||
* @param boolean $autoload if true, there will no require_once for backend and frontend (usefull only for custom backends/frontends) | |||
* @throws Zend_Cache_Exception | |||
* @return Zend_Cache_Core|Zend_Cache_Frontend | |||
*/ | |||
public static function factory($frontend, $backend, $frontendOptions = array(), $backendOptions = array(), $customFrontendNaming = false, $customBackendNaming = false, $autoload = false) | |||
{ | |||
if (is_string($backend)) { | |||
$backendObject = self::_makeBackend($backend, $backendOptions, $customBackendNaming, $autoload); | |||
} else { | |||
if ((is_object($backend)) && (in_array('Zend_Cache_Backend_Interface', class_implements($backend)))) { | |||
$backendObject = $backend; | |||
} else { | |||
self::throwException('backend must be a backend name (string) or an object which implements Zend_Cache_Backend_Interface'); | |||
} | |||
} | |||
if (is_string($frontend)) { | |||
$frontendObject = self::_makeFrontend($frontend, $frontendOptions, $customFrontendNaming, $autoload); | |||
} else { | |||
if (is_object($frontend)) { | |||
$frontendObject = $frontend; | |||
} else { | |||
self::throwException('frontend must be a frontend name (string) or an object'); | |||
} | |||
} | |||
$frontendObject->setBackend($backendObject); | |||
return $frontendObject; | |||
} | |||
|
|||
/** | |||
* Frontend Constructor | |||
* | |||
* @param string $backend | |||
* @param array $backendOptions | |||
* @param boolean $customBackendNaming | |||
* @param boolean $autoload | |||
* @return Zend_Cache_Backend | |||
*/ | |||
public static function _makeBackend($backend, $backendOptions, $customBackendNaming = false, $autoload = false) | |||
{ | |||
if (!$customBackendNaming) { | |||
$backend = self::_normalizeName($backend); | |||
} | |||
if (in_array($backend, Zend_Cache::$standardBackends)) { | |||
// we use a standard backend | |||
$backendClass = 'Zend_Cache_Backend_' . $backend; | |||
// security controls are explicit | |||
require_once str_replace('_', DIRECTORY_SEPARATOR, $backendClass) . '.php'; | |||
} else { | |||
// we use a custom backend | |||
if (!preg_match('~^[\w]+$~D', $backend)) { | |||
Zend_Cache::throwException("Invalid backend name [$backend]"); | |||
} | |||
if (!$customBackendNaming) { | |||
// we use this boolean to avoid an API break | |||
$backendClass = 'Zend_Cache_Backend_' . $backend; | |||
} else { | |||
$backendClass = $backend; | |||
} | |||
if (!$autoload) { | |||
$file = str_replace('_', DIRECTORY_SEPARATOR, $backendClass) . '.php'; | |||
if (!(self::_isReadable($file))) { | |||
self::throwException("file $file not found in include_path"); | |||
} | |||
require_once $file; | |||
} | |||
} | |||
return new $backendClass($backendOptions); | |||
} | |||
|
|||
/** | |||
* Backend Constructor | |||
* | |||
* @param string $frontend | |||
* @param array $frontendOptions | |||
* @param boolean $customFrontendNaming | |||
* @param boolean $autoload | |||
* @return Zend_Cache_Core|Zend_Cache_Frontend | |||
*/ | |||
public static function _makeFrontend($frontend, $frontendOptions = array(), $customFrontendNaming = false, $autoload = false) | |||
{ | |||
if (!$customFrontendNaming) { | |||
$frontend = self::_normalizeName($frontend); | |||
} | |||
if (in_array($frontend, self::$standardFrontends)) { | |||
// we use a standard frontend | |||
// For perfs reasons, with frontend == 'Core', we can interact with the Core itself | |||
$frontendClass = 'Zend_Cache_' . ($frontend != 'Core' ? 'Frontend_' : '') . $frontend; | |||
// security controls are explicit | |||
require_once str_replace('_', DIRECTORY_SEPARATOR, $frontendClass) . '.php'; | |||
} else { | |||
// we use a custom frontend | |||
if (!preg_match('~^[\w]+$~D', $frontend)) { | |||
Zend_Cache::throwException("Invalid frontend name [$frontend]"); | |||
} | |||
if (!$customFrontendNaming) { | |||
// we use this boolean to avoid an API break | |||
$frontendClass = 'Zend_Cache_Frontend_' . $frontend; | |||
} else { | |||
$frontendClass = $frontend; | |||
} | |||
if (!$autoload) { | |||
$file = str_replace('_', DIRECTORY_SEPARATOR, $frontendClass) . '.php'; | |||
if (!(self::_isReadable($file))) { | |||
self::throwException("file $file not found in include_path"); | |||
} | |||
require_once $file; | |||
} | |||
} | |||
return new $frontendClass($frontendOptions); | |||
} | |||
|
|||
/** | |||
* Throw an exception | |||
* | |||
* Note : for perf reasons, the "load" of Zend/Cache/Exception is dynamic | |||
* @param string $msg Message for the exception | |||
* @throws Zend_Cache_Exception | |||
*/ | |||
public static function throwException($msg) | |||
{ | |||
// For perfs reasons, we use this dynamic inclusion | |||
require_once 'Zend/Cache/Exception.php'; | |||
throw new Zend_Cache_Exception($msg); | |||
} | |||
|
|||
/** | |||
* Normalize frontend and backend names to allow multiple words TitleCased | |||
* | |||
* @param string $name Name to normalize | |||
* @return string | |||
*/ | |||
protected static function _normalizeName($name) | |||
{ | |||
$name = ucfirst(strtolower($name)); | |||
$name = str_replace(array('-', '_', '.'), ' ', $name); | |||
$name = ucwords($name); | |||
$name = str_replace(' ', '', $name); | |||
return $name; | |||
} | |||
|
|||
/** | |||
* Returns TRUE if the $filename is readable, or FALSE otherwise. | |||
* This function uses the PHP include_path, where PHP's is_readable() | |||
* does not. | |||
* | |||
* Note : this method comes from Zend_Loader (see #ZF-2891 for details) | |||
* | |||
* @param string $filename | |||
* @return boolean | |||
*/ | |||
private static function _isReadable($filename) | |||
{ | |||
if (!$fh = @fopen($filename, 'r', true)) { | |||
return false; | |||
} | |||
@fclose($fh); | |||
return true; | |||
} | |||
|
|||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,8 @@ | |||
--- | |||
format: 1 | |||
handler: | |||
piston:remote-revision: 17373 | |||
piston:uuid: 44c647ce-9c0f-0410-b52a-842ac1e357ba | |||
lock: false | |||
repository_url: http://framework.zend.com/svn/framework/standard/tags/release-1.8.1/library/Zend/Cache | |||
repository_class: Piston::Svn::Repository |
Oops, something went wrong.