Files
server/usr/share/psa-pear/pear/php/Horde/HashTable/Vfs.php
2026-01-07 20:52:11 +01:00

141 lines
3.0 KiB
PHP

<?php
/**
* Copyright 2014-2016 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
*
* @category Horde
* @copyright 2014-2016 Horde LLC
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @package HashTable
*/
/**
* Implementation of HashTable for a VFS backend.
*
* @author Michael Slusarz <slusarz@horde.org>
* @category Horde
* @copyright 2014-2016 Horde LLC
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @package HashTable
* @since 1.2.0
*/
class Horde_HashTable_Vfs
extends Horde_HashTable_Base
{
/**
*/
protected $_persistent = true;
/**
* The VFS object.
*
* @var Horde_Vfs_Base
*/
protected $_vfs;
/**
* @param array $params Additional configuration parameters:
* <pre>
* - vfs: (Horde_Vfs_Base) [REQUIRED] VFS object.
* - vfspath: (string) VFS path to use.
* </pre>
*/
public function __construct(array $params = array())
{
if (!isset($params['vfs'])) {
throw new InvalidArgumentException('Missing vfs parameter.');
}
parent::__construct(array_merge(array(
'vfspath' => 'hashtable_vfs'
), $params));
}
/**
*/
protected function _init()
{
$this->_vfs = $this->_params['vfs'];
}
/**
*/
protected function _delete($keys)
{
$ret = true;
foreach ($keys as $key) {
try {
$this->_vfs->deleteFile($this->_params['vfspath'], $key);
} catch (Horde_Vfs_Exception $e) {
$ret = false;
}
}
return $ret;
}
/**
*/
protected function _exists($keys)
{
$out = array();
foreach ($keys as $key) {
$out[$key] = $this->_vfs->exists($this->_params['vfspath'], $key);
}
return $out;
}
/**
*/
protected function _get($keys)
{
$out = array();
foreach ($keys as $key) {
try {
$out[$key] = $this->_vfs->read($this->_params['vfspath'], $key);
} catch (Horde_Vfs_Exception $e) {
$out[$key] = false;
}
}
return $out;
}
/**
*/
protected function _set($key, $val, $opts)
{
try {
$this->_vfs->writeData($this->_params['vfspath'], $key, $val, true);
} catch (Horde_Vfs_Exception $e) {
return false;
}
return true;
}
/**
*/
public function clear()
{
try {
$this->_vfs->emptyFolder($this->_params['vfspath']);
} catch (Horde_Vfs_Exception $e) {}
}
/**
*/
public function hkey($key)
{
/* Key is SHA-1 encoded (can't use FNV1-32 here, since key must be
* the same if upgrading from PHP 5.3 -> 5.4+). */
return hash('sha1', $this->_params['prefix'] . $key);
}
}