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 112 113 114 115 116 117 118 119 120 121 122
|
<?php
/**
* The Horde_Compress:: class provides an API for various compression
* techniques that can be used by Horde applications.
*
* $Horde: framework/Compress/Compress.php,v 1.7.12.10 2006/01/01 21:28:11 jan Exp $
*
* Copyright 2003-2006 Michael Slusarz <slusarz@bigworm.colorado.edu>
*
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
*
* @author Michael Slusarz <slusarz@bigworm.colorado.edu>
* @since Horde 3.0
* @package Horde_Compress
*/
class Horde_Compress {
/**
* Attempts to return a concrete Horde_Compress instance based on $driver.
*
* @param mixed $driver The type of concrete Horde_Compress subclass to
* return. If $driver is an array, then we will look
* in $driver[0]/lib/Compress/ for the subclass
* implementation named $driver[1].php.
* @param array $params A hash containing any additional configuration or
* parameters a subclass might need.
*
* @return Horde_Compress The newly created concrete Horde_Compress
* instance, or false on an error.
*/
function &factory($driver, $params = array())
{
if (is_array($driver)) {
list($app, $driver) = $driver;
}
$driver = basename($driver);
if (!empty($app)) {
require_once $app . '/lib/Compress/' . $driver . '.php';
} elseif (@file_exists(dirname(__FILE__) . '/Compress/' . $driver . '.php')) {
require_once dirname(__FILE__) . '/Compress/' . $driver . '.php';
} else {
@include_once 'Horde/Compress/' . $driver . '.php';
}
$class = 'Horde_Compress_' . $driver;
if (class_exists($class)) {
$compress = &new $class($params);
} else {
$compress = false;
}
return $compress;
}
/**
* Attempts to return a reference to a concrete Horde_Compress instance
* based on $driver. It will only create a new instance if no
* Horde_Compress instance with the same parameters currently exists.
*
* This method must be invoked as:
* $var = &Horde_Compress::singleton();
*
* @param mixed $driver See Horde_Compress::factory().
* @param array $params See Horde_Compress::factory().
*
* @return Horde_Compress The concrete Horde_Compress reference, or false
* on an error.
*/
function &singleton($driver, $params = array())
{
static $instances = array();
$signature = md5(serialize(array($driver, $params)));
if (!isset($instances[$signature])) {
$instances[$signature] = &Horde_Compress::factory($driver, $params);
}
return $instances[$signature];
}
/**
* Constructor.
*
* @param array $params Parameter array.
*/
function Horde_Compress($params = array())
{
}
/**
* Compress the data.
*
* @param string $data The data to compress.
* @param array $params An array of arguments needed to compress the data.
*
* @return mixed The compressed data.
* Returns PEAR_Error object on error.
*/
function compress($data, $params = array())
{
return PEAR::raiseError('Unsupported');
}
/**
* Decompress the data.
*
* @param string $data The data to decompress.
* @param array $params An array of arguments needed to decompress the
* data.
*
* @return array The decompressed data.
* Returns PEAR_Error object on error.
*/
function decompress($data, $params = array())
{
return PEAR::raiseError('Unsupported');
}
}
|