Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bareos/bareos-webui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/zendframework/zend-cache/src/Storage/Adapter/Dba.php')
-rw-r--r--vendor/zendframework/zend-cache/src/Storage/Adapter/Dba.php545
1 files changed, 0 insertions, 545 deletions
diff --git a/vendor/zendframework/zend-cache/src/Storage/Adapter/Dba.php b/vendor/zendframework/zend-cache/src/Storage/Adapter/Dba.php
deleted file mode 100644
index eb33850..0000000
--- a/vendor/zendframework/zend-cache/src/Storage/Adapter/Dba.php
+++ /dev/null
@@ -1,545 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Cache\Storage\Adapter;
-
-use stdClass;
-use Traversable;
-use Zend\Cache\Exception;
-use Zend\Cache\Storage\AvailableSpaceCapableInterface;
-use Zend\Cache\Storage\Capabilities;
-use Zend\Cache\Storage\ClearByNamespaceInterface;
-use Zend\Cache\Storage\ClearByPrefixInterface;
-use Zend\Cache\Storage\FlushableInterface;
-use Zend\Cache\Storage\IterableInterface;
-use Zend\Cache\Storage\OptimizableInterface;
-use Zend\Cache\Storage\TotalSpaceCapableInterface;
-use Zend\Stdlib\ErrorHandler;
-
-class Dba extends AbstractAdapter implements
- AvailableSpaceCapableInterface,
- ClearByNamespaceInterface,
- ClearByPrefixInterface,
- FlushableInterface,
- IterableInterface,
- OptimizableInterface,
- TotalSpaceCapableInterface
-{
- /**
- * The DBA resource handle
- *
- * @var null|resource
- */
- protected $handle;
-
- /**
- * Buffered total space in bytes
- *
- * @var null|int|float
- */
- protected $totalSpace;
-
- /**
- * Constructor
- *
- * @param null|array|Traversable|DbaOptions $options
- * @throws Exception\ExceptionInterface
- */
- public function __construct($options = null)
- {
- if (!extension_loaded('dba')) {
- throw new Exception\ExtensionNotLoadedException('Missing ext/dba');
- }
-
- parent::__construct($options);
- }
-
- /**
- * Destructor
- *
- * Closes an open dba resource
- *
- * @see AbstractAdapter::__destruct()
- * @return void
- */
- public function __destruct()
- {
- $this->_close();
-
- parent::__destruct();
- }
-
- /* options */
-
- /**
- * Set options.
- *
- * @param array|Traversable|DbaOptions $options
- * @return self
- * @see getOptions()
- */
- public function setOptions($options)
- {
- if (!$options instanceof DbaOptions) {
- $options = new DbaOptions($options);
- }
-
- return parent::setOptions($options);
- }
-
- /**
- * Get options.
- *
- * @return DbaOptions
- * @see setOptions()
- */
- public function getOptions()
- {
- if (!$this->options) {
- $this->setOptions(new DbaOptions());
- }
- return $this->options;
- }
-
- /* TotalSpaceCapableInterface */
-
- /**
- * Get total space in bytes
- *
- * @return int|float
- */
- public function getTotalSpace()
- {
- if ($this->totalSpace === null) {
- $pathname = $this->getOptions()->getPathname();
-
- if ($pathname === '') {
- throw new Exception\LogicException('No pathname to database file');
- }
-
- ErrorHandler::start();
- $total = disk_total_space(dirname($pathname));
- $error = ErrorHandler::stop();
- if ($total === false) {
- throw new Exception\RuntimeException("Can't detect total space of '{$pathname}'", 0, $error);
- }
- $this->totalSpace = $total;
-
- // clean total space buffer on change pathname
- $events = $this->getEventManager();
- $handle = null;
- $totalSpace = & $this->totalSpace;
- $callback = function ($event) use (& $events, & $handle, & $totalSpace) {
- $params = $event->getParams();
- if (isset($params['pathname'])) {
- $totalSpace = null;
- $events->detach($handle);
- }
- };
- $events->attach('option', $callback);
- }
-
- return $this->totalSpace;
- }
-
- /* AvailableSpaceCapableInterface */
-
- /**
- * Get available space in bytes
- *
- * @return float
- */
- public function getAvailableSpace()
- {
- $pathname = $this->getOptions()->getPathname();
-
- if ($pathname === '') {
- throw new Exception\LogicException('No pathname to database file');
- }
-
- ErrorHandler::start();
- $avail = disk_free_space(dirname($pathname));
- $error = ErrorHandler::stop();
- if ($avail === false) {
- throw new Exception\RuntimeException("Can't detect free space of '{$pathname}'", 0, $error);
- }
-
- return $avail;
- }
-
- /* FlushableInterface */
-
- /**
- * Flush the whole storage
- *
- * @return bool
- */
- public function flush()
- {
- $pathname = $this->getOptions()->getPathname();
-
- if ($pathname === '') {
- throw new Exception\LogicException('No pathname to database file');
- }
-
- if (file_exists($pathname)) {
- // close the dba file before delete
- // and reopen (create) on next use
- $this->_close();
-
- ErrorHandler::start();
- $result = unlink($pathname);
- $error = ErrorHandler::stop();
- if (!$result) {
- throw new Exception\RuntimeException("unlink('{$pathname}') failed", 0, $error);
- }
- }
-
- return true;
- }
-
- /* ClearByNamespaceInterface */
-
- /**
- * Remove items by given namespace
- *
- * @param string $namespace
- * @return bool
- */
- public function clearByNamespace($namespace)
- {
- $namespace = (string) $namespace;
- if ($namespace === '') {
- throw new Exception\InvalidArgumentException('No namespace given');
- }
-
- $prefix = $namespace . $this->getOptions()->getNamespaceSeparator();
- $prefixl = strlen($prefix);
- $result = true;
-
- $this->_open();
-
- do {
- // Workaround for PHP-Bug #62491 & #62492
- $recheck = false;
- $internalKey = dba_firstkey($this->handle);
- while ($internalKey !== false && $internalKey !== null) {
- if (substr($internalKey, 0, $prefixl) === $prefix) {
- $result = dba_delete($internalKey, $this->handle) && $result;
- }
-
- $internalKey = dba_nextkey($this->handle);
- }
- } while ($recheck);
-
- return $result;
- }
-
- /* ClearByPrefixInterface */
-
- /**
- * Remove items matching given prefix
- *
- * @param string $prefix
- * @return bool
- */
- public function clearByPrefix($prefix)
- {
- $prefix = (string) $prefix;
- if ($prefix === '') {
- throw new Exception\InvalidArgumentException('No prefix given');
- }
-
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator() . $prefix;
- $prefixL = strlen($prefix);
- $result = true;
-
- $this->_open();
-
- // Workaround for PHP-Bug #62491 & #62492
- do {
- $recheck = false;
- $internalKey = dba_firstkey($this->handle);
- while ($internalKey !== false && $internalKey !== null) {
- if (substr($internalKey, 0, $prefixL) === $prefix) {
- $result = dba_delete($internalKey, $this->handle) && $result;
- $recheck = true;
- }
-
- $internalKey = dba_nextkey($this->handle);
- }
- } while ($recheck);
-
- return $result;
- }
-
- /* IterableInterface */
-
- /**
- * Get the storage iterator
- *
- * @return DbaIterator
- */
- public function getIterator()
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
-
- return new DbaIterator($this, $this->handle, $prefix);
- }
-
- /* OptimizableInterface */
-
- /**
- * Optimize the storage
- *
- * @return bool
- * @return Exception\RuntimeException
- */
- public function optimize()
- {
- $this->_open();
- if (!dba_optimize($this->handle)) {
- throw new Exception\RuntimeException('dba_optimize failed');
- }
- return true;
- }
-
- /* reading */
-
- /**
- * Internal method to get an item.
- *
- * @param string $normalizedKey
- * @param bool $success
- * @param mixed $casToken
- * @return mixed Data on success, null on failure
- * @throws Exception\ExceptionInterface
- */
- protected function internalGetItem(& $normalizedKey, & $success = null, & $casToken = null)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
-
- $this->_open();
- $value = dba_fetch($prefix . $normalizedKey, $this->handle);
-
- if ($value === false) {
- $success = false;
- return;
- }
-
- $success = true;
- $casToken = $value;
- return $value;
- }
-
- /**
- * Internal method to test if an item exists.
- *
- * @param string $normalizedKey
- * @return bool
- * @throws Exception\ExceptionInterface
- */
- protected function internalHasItem(& $normalizedKey)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
-
- $this->_open();
- return dba_exists($prefix . $normalizedKey, $this->handle);
- }
-
- /* writing */
-
- /**
- * Internal method to store an item.
- *
- * @param string $normalizedKey
- * @param mixed $value
- * @return bool
- * @throws Exception\ExceptionInterface
- */
- protected function internalSetItem(& $normalizedKey, & $value)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- $internalKey = $prefix . $normalizedKey;
-
- $cacheableValue = (string) $value; // dba_replace requires a string
-
- $this->_open();
- if (!dba_replace($internalKey, $cacheableValue, $this->handle)) {
- throw new Exception\RuntimeException("dba_replace('{$internalKey}', ...) failed");
- }
-
- return true;
- }
-
- /**
- * Add an item.
- *
- * @param string $normalizedKey
- * @param mixed $value
- * @return bool
- * @throws Exception\ExceptionInterface
- */
- protected function internalAddItem(& $normalizedKey, & $value)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- $internalKey = $prefix . $normalizedKey;
-
- $this->_open();
-
- // Workaround for PHP-Bug #54242 & #62489
- if (dba_exists($internalKey, $this->handle)) {
- return false;
- }
-
- // Workaround for PHP-Bug #54242 & #62489
- // dba_insert returns true if key already exists
- ErrorHandler::start();
- $result = dba_insert($internalKey, $value, $this->handle);
- $error = ErrorHandler::stop();
- if (!$result || $error) {
- return false;
- }
-
- return true;
- }
-
- /**
- * Internal method to remove an item.
- *
- * @param string $normalizedKey
- * @return bool
- * @throws Exception\ExceptionInterface
- */
- protected function internalRemoveItem(& $normalizedKey)
- {
- $options = $this->getOptions();
- $namespace = $options->getNamespace();
- $prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator();
- $internalKey = $prefix . $normalizedKey;
-
- $this->_open();
-
- // Workaround for PHP-Bug #62490
- if (!dba_exists($internalKey, $this->handle)) {
- return false;
- }
-
- return dba_delete($internalKey, $this->handle);
- }
-
- /* status */
-
- /**
- * Internal method to get capabilities of this adapter
- *
- * @return Capabilities
- */
- protected function internalGetCapabilities()
- {
- if ($this->capabilities === null) {
- $marker = new stdClass();
- $capabilities = new Capabilities(
- $this,
- $marker,
- array(
- 'supportedDatatypes' => array(
- 'NULL' => 'string',
- 'boolean' => 'string',
- 'integer' => 'string',
- 'double' => 'string',
- 'string' => true,
- 'array' => false,
- 'object' => false,
- 'resource' => false,
- ),
- 'minTtl' => 0,
- 'supportedMetadata' => array(),
- 'maxKeyLength' => 0, // TODO: maxKeyLength ????
- 'namespaceIsPrefix' => true,
- 'namespaceSeparator' => $this->getOptions()->getNamespaceSeparator(),
- )
- );
-
- // update namespace separator on change option
- $this->getEventManager()->attach('option', function ($event) use ($capabilities, $marker) {
- $params = $event->getParams();
-
- if (isset($params['namespace_separator'])) {
- $capabilities->setNamespaceSeparator($marker, $params['namespace_separator']);
- }
- });
-
- $this->capabilities = $capabilities;
- $this->capabilityMarker = $marker;
- }
-
- return $this->capabilities;
- }
-
- /**
- * Open the database if not already done.
- *
- * @return void
- * @throws Exception\LogicException
- * @throws Exception\RuntimeException
- */
- protected function _open()
- {
- if (!$this->handle) {
- $options = $this->getOptions();
- $pathname = $options->getPathname();
- $mode = $options->getMode();
- $handler = $options->getHandler();
-
- if ($pathname === '') {
- throw new Exception\LogicException('No pathname to database file');
- }
-
- ErrorHandler::start();
- $dba = dba_open($pathname, $mode, $handler);
- $err = ErrorHandler::stop();
- if (!$dba) {
- throw new Exception\RuntimeException(
- "dba_open('{$pathname}', '{$mode}', '{$handler}') failed",
- 0,
- $err
- );
- }
- $this->handle = $dba;
- }
- }
-
- /**
- * Close database file if opened
- *
- * @return void
- */
- protected function _close()
- {
- if ($this->handle) {
- ErrorHandler::start(E_NOTICE);
- dba_close($this->handle);
- ErrorHandler::stop();
- $this->handle = null;
- }
- }
-}