sbergmann Tue Mar 6 07:27:30 2001 EDT
Modified files:
/php4/pear Cache.php
/php4/pear/Cache Container.php Graphics.php Output.php
/php4/pear/Cache/Container db.php file.php phplib.php
Log:
Whitespace only.
Index: php4/pear/Cache.php
diff -u php4/pear/Cache.php:1.4 php4/pear/Cache.php:1.5
--- php4/pear/Cache.php:1.4 Sun Mar 4 06:26:58 2001
+++ php4/pear/Cache.php Tue Mar 6 07:27:30 2001
@@ -16,7 +16,7 @@
// | Sebastian Bergmann <[EMAIL PROTECTED]> |
// +----------------------------------------------------------------------+
//
-// $Id: Cache.php,v 1.4 2001/03/04 14:26:58 mj Exp $
+// $Id: Cache.php,v 1.5 2001/03/06 15:27:30 sbergmann Exp $
/**
* Cache is a base class for cache implementations.
@@ -24,7 +24,7 @@
* TODO: Simple usage example goes here.
*
* @author Ulf Wendel <[EMAIL PROTECTED]>
-* @version $Id: Cache.php,v 1.4 2001/03/04 14:26:58 mj Exp $
+* @version $Id: Cache.php,v 1.5 2001/03/06 15:27:30 sbergmann Exp $
* @package Cache
* @access public
*/
@@ -63,7 +63,7 @@
* @access public
*/
var $gc_probability = 1;
-
+
/**
* Storage container object.
*
@@ -91,7 +91,7 @@
$this->garbageCollection();
}
-
+
/**
* Returns the requested dataset it if exists and is not expired
*
@@ -110,7 +110,6 @@
return NULL;
} // end func get
-
/**
* Stores the given data in the cache.
*
@@ -127,8 +126,7 @@
return $this->container->save($id, $data, $expires, $group, "");
} // end func save
-
-
+
/**
* Stores a dataset without additional userdefined data.
*
@@ -149,7 +147,6 @@
return $this->container->save($id, $cachedata, $expires, $group, $userdata);
} // end func extSave
-
/**
* Loads the given ID from the cache.
*
@@ -164,8 +161,7 @@
return $this->container->load($id, $group);
} // end func load
-
-
+
/**
* Returns the userdata field of a cached data set.
*
@@ -181,8 +177,7 @@
return $this->container->getUserdata($id, $group);
} // end func getUserdata
-
-
+
/**
* Removes the specified dataset from the cache.
*
@@ -197,8 +192,7 @@
return $this->container->delete($id, $group);
} // end func delete
-
-
+
/**
* Flushes the cache - removes all data from it
*
@@ -211,8 +205,7 @@
return $this->container->flush($group);
} // end func flush
-
-
+
/**
* Checks if a dataset exists.
*
@@ -229,8 +222,7 @@
return $this->container->isCached($id, $group);
} // end func isCached
-
-
+
/**
* Checks if a dataset is expired
*
@@ -251,7 +243,7 @@
return $this->container->isExpired($id, $group, $max_age);
} // end func isExpired
-
+
/**
* Generates a "unique" ID for the given value
*
@@ -286,9 +278,6 @@
$this->container->garbageCollection();
$last_run = time();
}
-
} // end func garbageCollection
-
-
} // end class cache
?>
Index: php4/pear/Cache/Container.php
diff -u php4/pear/Cache/Container.php:1.5 php4/pear/Cache/Container.php:1.6
--- php4/pear/Cache/Container.php:1.5 Tue Mar 6 03:32:10 2001
+++ php4/pear/Cache/Container.php Tue Mar 6 07:27:30 2001
@@ -1,5 +1,4 @@
<?php
-
// +----------------------------------------------------------------------+
// | PHP version 4.0 |
// +----------------------------------------------------------------------+
@@ -17,7 +16,7 @@
// | Sebastian Bergmann <[EMAIL PROTECTED]> |
// +----------------------------------------------------------------------+
//
-// $Id: Container.php,v 1.5 2001/03/06 11:32:10 chregu Exp $
+// $Id: Container.php,v 1.6 2001/03/06 15:27:30 sbergmann Exp $
/**
* Common base class of all cache storage container.
@@ -37,7 +36,7 @@
* not recommended!
*
* @author Ulf Wendel <[EMAIL PROTECTED]>
-* @version $Id: Container.php,v 1.5 2001/03/06 11:32:10 chregu Exp $
+* @version $Id: Container.php,v 1.6 2001/03/06 15:27:30 sbergmann Exp $
* @package Cache
* @access public
* @abstract
@@ -52,63 +51,56 @@
* @var boolean
*/
var $preload = true;
-
+
/**
* ID of a preloaded dataset
*
* @var string
*/
var $id = "";
-
-
+
/**
* Cache group of a preloaded dataset
*
* @var string
*/
var $group = "";
-
-
+
/**
* Expiration timestamp of a preloaded dataset.
*
* @var integer 0 means never, endless
*/
var $expires = 0;
-
-
+
/**
* Value of a preloaded dataset.
*
* @var string
*/
var $cachedata = "";
-
-
+
/**
* Preloaded userdata field.
*
* @var string
*/
var $userdata = "";
-
-
+
/**
* Flag indicating that the dataset requested for preloading is unknown.
*
* @var boolean
*/
var $unknown = true;
-
-
+
/**
* Encoding mode for cache data: base64 or addslashes() (slash).
*
* @var string base64 or slash
*/
var $encoding_mode = "base64";
-
-
+
/**
* Loads a dataset from the cache.
*
@@ -118,24 +110,17 @@
* @access public
*/
function load($id, $group) {
-
if ($this->preload) {
-
if ($this->id != $id || $this->group != $group)
$this->preload($id, $group);
return $this->cachedata;
-
} else {
-
list( , $data, ) = $this->fetch($id, $group);
return $data;
-
}
-
} // end func load
-
-
+
/**
* Returns the userdata field of a cached data set.
*
@@ -145,24 +130,17 @@
* @access public
*/
function getUserdata($id, $group) {
-
if ($this->preload) {
-
if ($this->id != $id || $this->group != $group)
$this->preload($id, $group);
return $this->userdata;
-
} else {
-
list( , , $userdata) = $this->fetch($id, $group);
return $userdata;
-
}
-
} // end func getUserdata
-
-
+
/**
* Checks if a dataset is expired.
*
@@ -173,17 +151,13 @@
* @access public
*/
function isExpired($id, $group, $max_age) {
-
if ($this->preload) {
-
if ($this->id != $id || $this->group != $group)
$this->preload($id, $group);
if ($this->unknown)
return false;
-
} else {
-
// check if at all it is cached
if (!$this->isCached($id, $group))
return false;
@@ -191,23 +165,20 @@
// I'm lazy...
list($this->expires, , ) = $this->fetch($id, $group);
}
-
+
// endless
if (0 == $this->expires)
return false;
-
+
// you feel fine, Ulf?
if ($expired = ($this->expires <= time() || ($max_age && ($this->expires <=
$max_age))) ) {
-
+
$this->delete($id, $group);
$this->flushPreload();
-
}
-
return $expired;
} // end func isExpired
-
-
+
/**
* Checks if a dataset is cached.
*
@@ -216,26 +187,20 @@
* @return boolean
*/
function isCached($id, $group) {
-
if ($this->preload) {
-
if ($this->id != $id || $this->group != $group)
$this->preload($id, $group);
return !($this->unknown);
-
} else {
-
return $this->idExists($id, $group);
-
}
-
} // end func isCached
-
+
//
// abstract methods
//
-
+
/**
* Fetches a dataset from the storage medium.
*
@@ -248,7 +213,7 @@
function fetch($id, $group) {
return array(NULL, NULL, NULL);
} // end func fetch
-
+
/**
* Stores a dataset.
*
@@ -263,14 +228,13 @@
* @abstract
*/
function save($id, $data, $expire, $group, $userdata) {
-
// QUESTION: Should we update the preload buffer instead?
// Don't think so as the sequence save()/load() is unlikely.
$this->flushPreload($id, $group);
-
+
return NULL;
} // end func save
-
+
/**
* Deletes a dataset.
*
@@ -284,8 +248,7 @@
$this->flushPreload($id, $group);
return NULL;
} // end func delete
-
-
+
/**
* Flushes the cache - removes all caches datasets from the cache.
*
@@ -298,8 +261,7 @@
$this->flushPreload();
return NULL;
} // end func flush
-
-
+
/**
* Checks if a dataset exists.
*
@@ -312,8 +274,7 @@
function idExists($id, $group) {
return NULL;
} // end func idExists
-
-
+
/**
* Starts the garbage collection.
*
@@ -324,7 +285,6 @@
$this->flushPreload();
} // end func garbageCollection
-
/**
* Does a speculative preload of a dataset
*
@@ -333,27 +293,24 @@
* @return boolean
*/
function preload($id, $group) {
-
// whatever happens, remember the preloaded ID
$this->id = $id;
$this->group = $group;
-
+
list($this->expires, $this->cachedata, $this->userdata) = $this->fetch($id,
$group);
-
- if (NULL === $this->expires) {
+ if (NULL === $this->expires) {
// Uuups, unknown ID
$this->flushPreload();
return false;
}
-
+
$this->unknown = false;
-
+
return true;
} // end func preload
-
-
+
/**
* Flushes the internal preload buffer.
*
@@ -368,7 +325,6 @@
* @see preload()
*/
function flushPreload($id = "", $group = "default") {
-
if (!$id || ($this->id == $id && $this->group == $group)) {
// clear the internal preload values
$this->id = "";
@@ -378,10 +334,8 @@
$this->expires = -1;
$this->unknown = true;
}
-
} // end func flushPreload
-
/**
* Imports the requested datafields as object variables if allowed
*
@@ -389,42 +343,34 @@
* @param array List of allowed datafields
*/
function setOptions($requested, $allowed) {
-
foreach ($allowed as $k => $field)
if (isset($requested[$field]))
$this->$field = $requested[$field];
} // end func setOptions
-
-
+
/**
* Encodes the data for the storage container.
*
* @var mixed data to encode
*/
function encode($data) {
-
if ("base64" == $this->encoding_mode)
return base64_encode(serialize($data));
else
return serialize($data);
-
} // end func encode
-
-
+
/**
* Decodes the data from the storage container.
*
* @var mixed
*/
function decode($data) {
-
if ("base64" == $this->encoding_mode)
return unserialize(base64_decode($data));
else
return unserialize($data);
-
} // end func decode
-
}
?>
Index: php4/pear/Cache/Graphics.php
diff -u php4/pear/Cache/Graphics.php:1.4 php4/pear/Cache/Graphics.php:1.5
--- php4/pear/Cache/Graphics.php:1.4 Sat Mar 3 11:18:31 2001
+++ php4/pear/Cache/Graphics.php Tue Mar 6 07:27:30 2001
@@ -15,7 +15,7 @@
// | Authors: Ulf Wendel <[EMAIL PROTECTED]> |
// +----------------------------------------------------------------------+
//
-// $Id: Graphics.php,v 1.4 2001/03/03 19:18:31 uw Exp $
+// $Id: Graphics.php,v 1.5 2001/03/06 15:27:30 sbergmann Exp $
require_once 'Cache.php';
@@ -66,7 +66,7 @@
* the output buffer. Modify it if required!
*
* @author Ulf Wendel <[EMAIL PROTECTED]>
-* @version $Id: Graphics.php,v 1.4 2001/03/03 19:18:31 uw Exp $
+* @version $Id: Graphics.php,v 1.5 2001/03/06 15:27:30 sbergmann Exp $
* @package Cache
*/
class Cache_Graphics extends Cache {
@@ -82,7 +82,7 @@
* @see setCacheURL(), setCacheDir()
*/
var $cache_url = "";
-
+
/**
* Directory where cached files get stored.
* s
@@ -94,7 +94,7 @@
* @see setCacheDir(), setCacheURL()
*/
var $cache_dir = "";
-
+
/**
* Nameprefix of cached files.
*
@@ -104,8 +104,7 @@
* @var string
*/
var $cache_file_prefix = "graphics_";
-
-
+
/**
* Mapping from supported image type to a ImageType() constant.
*
@@ -128,7 +127,6 @@
$this->cache("cache_container_file", array("cache_dir" => $this->cache_dir,
"filename_prefix" => $this->cache_file_prefix));
} // end constructor
-
/**
* Returns the content of a cached image file.
*
@@ -144,13 +142,11 @@
* @see cacheImage()
*/
function getImage($id, $format = "png") {
-
$id = $this->generateID(array("id" => $id, "format" => strtolower($format)));
return $this->get($id);
} // end func getImage
-
-
+
/**
* Returns an array with a link to the cached image and the image file path.
*
@@ -164,17 +160,15 @@
* @see cacheImageLink()
*/
function getImageLink($id, $format = "png") {
-
$id = $this->generateID(array("id" => $id, "format" => strtolower($format)));
if (!$this->container->idExists($id))
return array();
-
+
$file = $this->cache_url . $this->cache_file_prefix . $id;
-
+
return array($this->container->getFilename($id), $file);
} // end func getImageLink
-
-
+
/**
* Create an image from the given image handler, cache it and return the file
content.
*
@@ -198,7 +192,7 @@
function cacheImage($id, &$img, $format = "png") {
if (!$id)
return new gerror("You must provide an ID for and image to be cached!");
-
+
$id = $this->generateID(array("id" => $id, "format" => strtolower($format)));
// Check if the requested image type is supported by the GD lib.
@@ -210,31 +204,30 @@
else
return new gerror("Hmm, is you PHP build with GD support? Can't
find any supported types.");
}
-
+
if ($image = $this->get($id))
return $image;
-
+
// save the image to the output buffer, write it to disk and
// return the image.
ob_end_clean();
ob_start();
-
+
// generate the image
$func = "Image" . strtoupper($format);
$func($img);
ImageDestroy($img);
-
+
ob_end();
$image = ob_get_contents();
ob_end_clean();
-
+
// save the generated image to disk
$this->save($id, $image, 0);
-
+
return $image;
} // end func cacheImage
-
/**
* Create an image from the given image handler, cache it and return a url and the
file path of the image.
*
@@ -255,9 +248,9 @@
function cacheImageLink($id, &$img, $format = "png") {
if (!$id)
return new gerror("You must provide an ID for and image to be cached!");
-
+
$id = $this->generateID(array("id" => $id, "format" => strtolower($format));
-
+
// Check if the requested image type is supported by the GD lib.
// If not, try a callback to the first available image type.
if (!isset($this->imagetypes[$format]) || !(ImageTypes() &
$this->imagetypes[$format])) {
@@ -270,7 +263,7 @@
$url = $this->cache_url . $this->cache_file_prefix . $id;
$ffile = $this->container->getFilename($id);
-
+
if ($this->isCached($id) && !isExpired($id))
return array($ffile, $url)
@@ -282,7 +275,6 @@
return array($ffile, $url);
} // end func cacheImageLink
-
/**
* Sets the URL prefix used when rendering HTML Tags.
*
@@ -294,14 +286,13 @@
* @see setCacheDir()
*/
function setCacheURL($cache_url) {
-
if ($cache_url && "/" != substr($cache_url, 1))
$cache_url .= "/";
$this->cache_url = $cache_url;
} // end func setCacheURL
-
+
/**
* Sets the directory where to cache generated Images
*
@@ -310,15 +301,11 @@
* @see setCacheURL()
*/
function setCacheDir($cache_dir) {
-
if ($cache_dir && "/" != substr($cache_dir, 1))
$cache_dir .= "/";
-
+
$this->cache_dir = $cache_dir;
$this->container->cache_dir = $cache_dir;
-
} // end func setCacheDir
-
-
} // end class Cache_Graphics
?>
Index: php4/pear/Cache/Output.php
diff -u php4/pear/Cache/Output.php:1.8 php4/pear/Cache/Output.php:1.9
--- php4/pear/Cache/Output.php:1.8 Sat Mar 3 11:19:25 2001
+++ php4/pear/Cache/Output.php Tue Mar 6 07:27:30 2001
@@ -17,7 +17,7 @@
// | Vinai Kopp <[EMAIL PROTECTED]> |
// +----------------------------------------------------------------------+
//
-// $Id: Output.php,v 1.8 2001/03/03 19:19:25 uw Exp $
+// $Id: Output.php,v 1.9 2001/03/06 15:27:30 sbergmann Exp $
require_once 'Cache.php';
@@ -89,7 +89,7 @@
* @see start(), end()
*/
var $output_id = "";
-
+
/**
* Group passed to start()
*
@@ -97,8 +97,7 @@
* @see start(), end()
*/
var $output_group = "";
-
-
+
/**
* starts the output buffering and returns an empty string or returns the cached
output from the cache.
*
@@ -119,15 +118,14 @@
// remember some data to be able to fill the cache on calling end()
$this->output_id = $id;
$this->output_group = $group;
-
+
// WARNING: we need the output buffer - possible clashes
ob_start();
ob_implicit_flush(false);
-
+
return "";
} // end func start
-
/*
* Stores the content of the output buffer into the cache and returns the content.
*
@@ -138,30 +136,25 @@
* @see endPrint(), endGet()
*/
function end($expire = 0, $userdata = "") {
-
$content = ob_get_contents();
ob_end_clean();
-
+
// store in the cache
if (!$this->no_cache)
$this->container->save($this->output_id, $content, $expire,
$this->output_group, $userdata);
return $content;
} // end func end()
-
-
+
/**
* Stores the content of the output buffer into the cache and prints the content.
*
* @brother end()
*/
function endPrint($expire = 0, $userdata = "") {
-
print $this->end($expire, $userdata);
-
} // end func endPrint
-
-
+
/**
* Returns the content of the output buffer but does not store it into the cache.
*
@@ -174,7 +167,6 @@
* @see endPrint(), end()
*/
function endGet() {
-
$content = ob_get_contents();
ob_end_clean();
@@ -183,7 +175,5 @@
return $content;
} // end func endGet
-
-
} // end class output
?>
Index: php4/pear/Cache/Container/db.php
diff -u php4/pear/Cache/Container/db.php:1.6 php4/pear/Cache/Container/db.php:1.7
--- php4/pear/Cache/Container/db.php:1.6 Tue Mar 6 03:32:10 2001
+++ php4/pear/Cache/Container/db.php Tue Mar 6 07:27:30 2001
@@ -17,7 +17,7 @@
// | Chuck Hagenbuch <[EMAIL PROTECTED]> |
// +----------------------------------------------------------------------+
//
-// $Id: db.php,v 1.6 2001/03/06 11:32:10 chregu Exp $
+// $Id: db.php,v 1.7 2001/03/06 15:27:30 sbergmann Exp $
require_once 'DB.php';
require_once 'Cache/Container.php';
@@ -50,11 +50,11 @@
* INDEX (expires),
* PRIMARY KEY (id, cachegroup)
* )
-
- * @author Sebastian Bergmann <[EMAIL PROTECTED]>
- * @version $Id: db.php,v 1.6 2001/03/06 11:32:10 chregu Exp $
- * @package Cache
- */
+*
+* @author Sebastian Bergmann <[EMAIL PROTECTED]>
+* @version $Id: db.php,v 1.7 2001/03/06 15:27:30 sbergmann Exp $
+* @package Cache
+*/
class Cache_Container_db extends Cache_Container {
/**
@@ -63,7 +63,7 @@
* @see Cache_Container_file::$filename_prefix
*/
var $cache_table = '';
-
+
/**
* PEAR DB dsn to use.
*
@@ -77,23 +77,18 @@
* @var object PEAR_DB
*/
var $db;
-
- /**
- *
- * @param mixed
- */
+
function Cache_Container_db($options)
{
-
if (!is_array($options) || !isset($options['dsn'])) {
return new CacheError('No dsn specified!', __FILE__, __LINE__);
}
-
+
$this->setOptions($options, array('dsn', 'cache_table'));
-
+
if (!$this->dsn)
return new CacheError('No dsn specified!', __FILE__, __LINE__);
-
+
$this->db = DB::connect($this->dsn, true);
if (DB::isError($this->db)) {
return new CacheError('DB::connect failed: ' .
DB::errorMessage($this->db), __FILE__, __LINE__);
@@ -101,8 +96,7 @@
$this->db->setFetchMode(DB_FETCHMODE_ASSOC);
}
}
-
-
+
function fetch($id, $group)
{
$query = sprintf("SELECT cachedata, userdata, expires FROM %s WHERE id = '%s'
AND cachegroup = '%s'",
@@ -110,7 +104,7 @@
addslashes($id),
addslashes($group)
);
-
+
$res = $this->db->query($query);
if (DB::isError($res))
@@ -121,7 +115,7 @@
if (is_array($row))
return array($row['expires'], $this->decode($row['cachedata']),
$row['userdata']);
}
-
+
/**
* Stores a dataset.
*
@@ -131,9 +125,8 @@
*/
function save($id, $data, $expires, $group, $userdata)
{
-
$this->flushPreload($id, $group);
-
+
$query = sprintf("REPLACE INTO %s (userdata, cachedata, expires, id,
cachegroup) VALUES ('%s', '%s', %d, '%s', '%s')",
$this->cache_table,
addslashes($userdata),
@@ -144,48 +137,44 @@
);
$res = $this->db->query($query);
-
+
if (DB::isError($res)) {
return new CacheError('DB::query failed: ' . DB::errorMessage($res) ,
__FILE__, __LINE__);
}
}
-
function delete($id, $group)
{
$this->flushPreload($id, $group);
-
+
$query = sprintf("DELETE FROM %s WHERE id = '%s' and cachegroup = '%s'",
$this->cache_table,
addslashes($id),
addslashes($group)
);
-
+
$res = $this->db->query($query);
-
+
if (DB::isError($res))
return new CacheError('DB::query failed: ' . DB::errorMessage($res),
__FILE__, __LINE__);
}
-
function flush($group = "")
{
-
$this->flushPreload();
-
+
if ($group) {
$query = sprintf("DELETE FROM %s WHERE cachegroup = '%s'",
$this->cache_table, addslashes($group));
} else {
$query = sprintf("DELETE FROM %s", $this->cache_table);
}
-
+
$res = $this->db->query($query);
if (DB::isError($res))
return new CacheError('DB::query failed: ' . DB::errorMessage($res),
__FILE__, __LINE__);
}
-
function idExists($id, $group)
{
$query = sprintf("SELECT id FROM %s WHERE ID = '%s' AND cachegroup = '%s'",
@@ -193,14 +182,14 @@
addslashes($id),
addslashes($group)
);
-
+
$res = $this->db->query($query);
if (DB::isError($res))
return new CacheError('DB::query failed: ' . DB::errorMessage($res),
__FILE__, __LINE__);
$row = $res->fetchRow();
-
+
if (is_array($row)) {
return true;
} else {
@@ -213,13 +202,12 @@
$query = sprintf('DELETE FROM %s WHERE expires <= %d AND expires > 0',
$this->cache_table,
time());
-
+
$res = $this->db->query($query);
-
+
if (DB::isError($res)) {
return new CacheError('DB::query failed: ' . DB::errorMessage($res),
__FILE__, __LINE__);
}
}
-
}
?>
Index: php4/pear/Cache/Container/file.php
diff -u php4/pear/Cache/Container/file.php:1.5 php4/pear/Cache/Container/file.php:1.6
--- php4/pear/Cache/Container/file.php:1.5 Tue Mar 6 05:25:43 2001
+++ php4/pear/Cache/Container/file.php Tue Mar 6 07:27:30 2001
@@ -16,7 +16,7 @@
// | Sebastian Bergmann <[EMAIL PROTECTED]> |
// +----------------------------------------------------------------------+
//
-// $Id: file.php,v 1.5 2001/03/06 13:25:43 chregu Exp $
+// $Id: file.php,v 1.6 2001/03/06 15:27:30 sbergmann Exp $
require_once 'Cache/Container.php';
@@ -24,7 +24,7 @@
* Stores cache contents in a file.
*
* @author Ulf Wendel <[EMAIL PROTECTED]>
-* @version $Id: file.php,v 1.5 2001/03/06 13:25:43 chregu Exp $
+* @version $Id: file.php,v 1.6 2001/03/06 15:27:30 sbergmann Exp $
*/
class Cache_Container_file extends Cache_Container {
@@ -34,7 +34,7 @@
* @var string Make sure to add a trailing slash
*/
var $cache_dir = "";
-
+
/**
* Filename prefix for cache files.
*
@@ -53,35 +53,31 @@
* @var string
*/
var $filename_prefix = "";
-
+
/**
* Creates the cache directory if neccessary
*
* @param array Config options: ["cache_dir" => ..., "filename_prefix" => ...]
*/
function Cache_Container_file($options = "") {
-
if (is_array($options))
$this->setOptions($options, array("cache_dir", "filename_prefix"));
-
+
clearstatcache();
-
+
if (!file_exists($this->cache_dir) || !is_dir($this->cache_dir))
mkdir($this->cache_dir, 0755);
-
} // end func contructor
-
-
+
function fetch($id, $group) {
-
$file = $this->getFilename($id, $group);
if (!file_exists($file))
return array(NULL, NULL, NULL);
-
+
// retrive the content
if (!($fh = @fopen($file, "rb")))
return new CacheError("Can't access cache file '$file'. Check access
rights and path.", __FILE__, __LINE__);
-
+
// file format:
// 1st line: expiration date
// 2nd line: user data
@@ -90,11 +86,10 @@
$userdata = trim(fgets($fh, 257));
$cachedata = $this->decode(fread($fh, filesize($file)));
fclose($fh);
-
+
return array($expire, $cachedata, $userdata);
} // end func fetch
-
-
+
/**
* Stores a dataset.
*
@@ -102,13 +97,12 @@
* otherwise it will break the filestructure.
*/
function save($id, $cachedata, $expires, $group, $userdata) {
-
$this->flushPreload($id, $group);
-
+
$file = $this->getFilename($id, $group);
if (!($fh = @fopen($file, "wb")))
return new CacheError("Can't access '$file' to store cache data. Check
access rights and path.", __FILE__, __LINE__);
-
+
// file format:
// 1st line: expiration date
// 2nd line: user data
@@ -117,51 +111,45 @@
fwrite($fh, $expires . "\n");
fwrite($fh, $userdata . "\n");
fwrite($fh, $this->encode($cachedata));
-
+
fclose($fh);
-
+
// I'm not sure if we need this
touch($file);
-
+
return true;
} // end func save
function delete($id, $group) {
-
$this->flushPreload($id, $group);
-
+
$file = $this->getFilename($id, $group);
if (file_exists($file)) {
-
+
$ok = unlink($file);
clearstatcache();
-
+
return $ok;
}
-
+
return false;
} // end func delete
-
-
+
function flush($group) {
-
$this->flushPreload();
$dir = ($group) ? $this->cache_dir . $group . "/" : $this->cache_dir;
-
+
$num_removed = $this->deleteDir($dir);
clearstatcache();
-
+
return $num_removed;
} // end func flush
-
-
+
function idExists($id, $group) {
-
return file_exists($this->getFilename($id, $group));
} // end func idExists
-
-
+
/**
* Deletes all expired files.
*
@@ -176,45 +164,42 @@
* recursive function call!
*/
function garbageCollection($dir = "") {
-
$this->flushPreload();
-
+
if (!$dir)
$dir = $this->cache_dir;
-
+
if (!($dh = opendir($dir)))
return new CacheError("Can't access cache directory '$dir'. Check
permissions and path.", __FILE__, __LINE__);
-
+
while ($file = readdir($dh)) {
if ("." == $file || ".." == $file)
continue;
-
+
$file = $dir . $file;
if (is_dir($file))
$this->garbageCollection($file . "/");
-
+
// skip trouble makers but inform the user
if (!($fh = @fopen($file, "rb"))) {
new CacheError("Can't access cache file '$file', skipping it. Check
permissions and path.", __FILE__, __LINE__);
continue;
}
-
+
$expire = time(fgets($fh, 11));
fclose($fh);
-
+
// remove if expired
if ($expire && $expire <= time() && !unlink($file))
new CacheError("Can't unlink cache file '$file', skipping. Check
permissions and path.", __FILE__, __LINE__);
}
-
+
closedir($dh);
-
+
// flush the disk state cache
clearstatcache();
-
} // end func garbageCollection
-
-
+
/**
* Returns the filename for the specified id.
*
@@ -225,23 +210,21 @@
*/
function getFilename($id, $group) {
static $group_dirs = array();
-
+
if (isset($group_dirs[$group]))
return $group_dirs[$group] . $this->filename_prefix . $id;
-
-
+
$dir = $this->cache_dir . $group . "/";
if (!file_exists($dir)) {
mkdir($dir, 0755);
clearstatcache();
}
-
+
$group_dirs[$group] = $dir;
-
+
return $dir . $this->filename_prefix . $id;
} // end func getFilename
-
-
+
/**
* Deletes a directory and all files in it.
*
@@ -250,32 +233,25 @@
* @throws CacheError
*/
function deleteDir($dir) {
-
if (!($dh = opendir($dir)))
return new CacheError("Can't remove directory '$dir'. Check permissions
and path.", __FILE__, __LINE__);
-
+
$num_removed = 0;
-
+
while ($file = readdir($dh)) {
if ("." == $file || ".." == $file)
continue;
-
+
$file = $dir . $file;
if (is_dir($file)) {
-
$file .= "/";
$num = $this->deleteDir($file . "/");
if (is_int($num))
$num_removed += $num;
-
} else {
-
if (unlink($file))
$num_removed++;
-
}
-
-
}
// according to php-manual the following is needed for windows installations.
closedir($dh);
@@ -284,10 +260,8 @@
rmDir($dir);
$num_removed++;
}
-
+
return $num_removed;
} // end func deleteDir
-
-
} // end class file
?>
Index: php4/pear/Cache/Container/phplib.php
diff -u php4/pear/Cache/Container/phplib.php:1.7
php4/pear/Cache/Container/phplib.php:1.8
--- php4/pear/Cache/Container/phplib.php:1.7 Tue Mar 6 03:32:10 2001
+++ php4/pear/Cache/Container/phplib.php Tue Mar 6 07:27:30 2001
@@ -16,7 +16,7 @@
// | Sebastian Bergmann <[EMAIL PROTECTED]> |
// +----------------------------------------------------------------------+
//
-// $Id: phplib.php,v 1.7 2001/03/06 11:32:10 chregu Exp $
+// $Id: phplib.php,v 1.8 2001/03/06 15:27:30 sbergmann Exp $
require_once 'Cache/Container.php';
@@ -51,7 +51,7 @@
*
*
* @author Ulf Wendel <[EMAIL PROTECTED]>, Sebastian Bergmann
<[EMAIL PROTECTED]>
-* @version $Id: phplib.php,v 1.7 2001/03/06 11:32:10 chregu Exp $
+* @version $Id: phplib.php,v 1.8 2001/03/06 15:27:30 sbergmann Exp $
* @package Cache
* @see save()
*/
@@ -63,15 +63,14 @@
* @see Cache_Container_file::$filename_prefix
*/
var $cache_table = "cache";
-
+
/**
* PHPLib object
*
* @var object PEAR_DB
*/
var $db;
-
-
+
/**
* Name of the PHPLib DB class to use
*
@@ -79,8 +78,7 @@
* @see $db_path, $local_path
*/
var $db_class = "";
-
-
+
/**
* Filename of your local.inc
*
@@ -89,7 +87,6 @@
* @var string
*/
var $local_file = "";
-
/**
* Include path for you local.inc
@@ -104,8 +101,7 @@
* @see $local_file
*/
var $local_path = "";
-
-
+
/**
* Creates an instance of a phplib db class to use it for storage.
*
@@ -122,7 +118,6 @@
* @see $local_path
*/
function Cache_Container_phplib($options = "") {
-
if (is_array($options))
$this->setOptions($options, array("db_class", "db_file", "db_path",
"local_file", "local_path"));
@@ -132,18 +127,15 @@
// include the required files
if ($this->db_file)
include_once($this->db_path . $this->db_file);
-
+
if ($this->local_file)
include_once($this->local_path . $this->local_file);
-
+
// create a db object
$this->db = new $this->db_class;
-
} // end constructor
-
-
+
function fetch($id, $group) {
-
$query = sprintf("SELECT expires, cachedata, userdata FROM %s WHERE id = '%s'
AND cachegroup = '%s'",
$this->cache_table,
$id,
@@ -152,11 +144,10 @@
$this->db->query($query);
if (!$this->db->Next_Record())
return array(NULL, NULL, NULL);
-
+
return array($this->db->f("expires"),
$this->decode($this->db->f("cachedata")), $this->db->f("userdata"));
} // end func fetch
-
-
+
/**
* Stores a dataset.
*
@@ -165,9 +156,8 @@
* work fine for 95% of you.
*/
function save($id, $data, $expires, $group) {
-
$this->flushPreload($id, $group);
-
+
$query = sprintf("REPLACE INTO %s (cachedata, expires, id, cachegroup) VALUES
('%s', %d, '%s', '%s')",
$this->cache_table,
addslashes($this->encode($data)),
@@ -176,13 +166,11 @@
$group
);
$this->db->query($query);
-
+
return (boolean)$this->db->affected_rows();
} // end func save
-
-
+
function delete($id, $group) {
-
$this->flushPreload($id, $group);
$this->db->query(
sprintf("DELETE FROM %s WHERE id = '%s' AND cachegroup =
'%s'",
@@ -191,28 +179,23 @@
$group
)
);
-
+
return (boolean)$this->db->affected_rows();
} // end func delete
-
-
+
function flush($group) {
-
$this->flushPreload();
-
+
if ($group) {
$this->db->query(sprintf("DELETE FROM %s WHERE cachegroup = '%s'",
$this->cache_table, $group));
} else {
$this->db->query(sprintf("DELETE FROM %s", $this->cache_table));
}
-
return $this->db->affected_rows();
} // end func flush
-
-
+
function idExists($id, $group) {
-
$this->db->query(
sprintf("SELECT id FROM %s WHERE ID = '%s' AND cachegroup =
'%s'",
$this->cache_table,
@@ -220,13 +203,11 @@
$group
)
);
-
+
return (boolean)$this->db->nf();
} // end func isExists
-
-
+
function garbageCollection() {
-
$this->flushPreload();
$this->db->query(
@@ -235,8 +216,7 @@
time()
)
);
-
- } // end func garbageCollection
+ } // end func garbageCollection
}
?>
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]