Serendipity (blog software) vendor drop
Added: vendor/serendipity/
Added: vendor/serendipity/current/
Added: vendor/serendipity/current/bundled-libs/
Added: vendor/serendipity/current/bundled-libs/.current_version
Added: vendor/serendipity/current/bundled-libs/Cache/
Added: vendor/serendipity/current/bundled-libs/Cache/BUNDLE_NOTICE
Added: vendor/serendipity/current/bundled-libs/Cache/Lite/
Added: vendor/serendipity/current/bundled-libs/Cache/Lite/Function.php
Added: vendor/serendipity/current/bundled-libs/Cache/Lite/Output.php
Added: vendor/serendipity/current/bundled-libs/Cache/Lite.php
Added: vendor/serendipity/current/bundled-libs/HTTP/
Added: vendor/serendipity/current/bundled-libs/HTTP/BUNDLE_NOTICE
Added: vendor/serendipity/current/bundled-libs/HTTP/Request/
Added: vendor/serendipity/current/bundled-libs/HTTP/Request/Listener.php
Added: vendor/serendipity/current/bundled-libs/HTTP/Request.php
Added: vendor/serendipity/current/bundled-libs/Net/
Added: vendor/serendipity/current/bundled-libs/Net/BUNDLE_NOTICE
Added: vendor/serendipity/current/bundled-libs/Net/CheckIP.php
Added: vendor/serendipity/current/bundled-libs/Net/DNSBL/
Added: vendor/serendipity/current/bundled-libs/Net/DNSBL/BUNDLE_NOTICE
Added: vendor/serendipity/current/bundled-libs/Net/DNSBL/SURBL.php
Added: vendor/serendipity/current/bundled-libs/Net/DNSBL.php
Added: vendor/serendipity/current/bundled-libs/Net/Socket.php
Added: vendor/serendipity/current/bundled-libs/Net/URL.php
Added: vendor/serendipity/current/bundled-libs/Onyx/
Added: vendor/serendipity/current/bundled-libs/Onyx/RSS.php
Added: vendor/serendipity/current/bundled-libs/PEAR.php
Added: vendor/serendipity/current/bundled-libs/Smarty/
Added: vendor/serendipity/current/bundled-libs/Smarty/BUGS
Added: vendor/serendipity/current/bundled-libs/Smarty/COPYING.lib
Added: vendor/serendipity/current/bundled-libs/Smarty/ChangeLog
Added: vendor/serendipity/current/bundled-libs/Smarty/FAQ
Added: vendor/serendipity/current/bundled-libs/Smarty/INSTALL
Added: vendor/serendipity/current/bundled-libs/Smarty/NEWS
Added: vendor/serendipity/current/bundled-libs/Smarty/README
Added: vendor/serendipity/current/bundled-libs/Smarty/RELEASE_NOTES
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/Config_File.class.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/Smarty.class.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/Smarty_Compiler.class.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/debug.tpl
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.assemble_plugin_filepath.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.assign_smarty_interface.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.create_dir_structure.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.display_debug_console.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.get_include_path.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.get_microtime.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.get_php_resource.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.is_secure.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.is_trusted.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.load_plugins.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.load_resource_plugin.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.process_cached_inserts.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.process_compiled_include.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.read_cache_file.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.rm_auto.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.rmdir.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.run_insert_handler.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.smarty_include_php.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.write_cache_file.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.write_compiled_include.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.write_compiled_resource.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/internals/core.write_file.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/block.textformat.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/compiler.assign.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.assign_debug_info.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.config_load.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.counter.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.cycle.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.debug.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.eval.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.fetch.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.html_checkboxes.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.html_image.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.html_options.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.html_radios.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.html_select_date.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.html_select_time.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.html_table.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.mailto.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.math.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.popup.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/function.popup_init.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.capitalize.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.cat.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.count_characters.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.count_paragraphs.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.count_sentences.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.count_words.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.date_format.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.debug_print_var.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.default.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.escape.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.indent.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.lower.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.nl2br.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.regex_replace.php
Added: vendor/serendipity/current/bundled-libs/Smarty/libs/plugins/modifier.replace.php
[truncated at 100 lines; 1458 more skipped]
Added: vendor/serendipity/current/bundled-libs/.current_version
--- vendor/serendipity/current/bundled-libs/.current_version	2006-01-22 22:49:49 UTC (rev 20988)
+++ vendor/serendipity/current/bundled-libs/.current_version	2006-01-22 23:06:24 UTC (rev 20989)
@@ -0,0 +1,11 @@
+Cache_Lite		1.5.1
+HTTP_Request		1.2.4
+Net_CheckIP          	1.1
+Net_Socket           	1.0.6
+Net_URL              	1.0.14
+PEAR			1.3.5
+Text_Wiki		0.25.0
+XML_RPC 		1.4.0
+Onyx                    1.0 (customized)
+Smarty                  2.6.9
+Net_DNSBL               1.0.0
\ No newline at end of file

Added: vendor/serendipity/current/bundled-libs/Cache/BUNDLE_NOTICE
--- vendor/serendipity/current/bundled-libs/Cache/BUNDLE_NOTICE	2006-01-22 22:49:49 UTC (rev 20988)
+++ vendor/serendipity/current/bundled-libs/Cache/BUNDLE_NOTICE	2006-01-22 23:06:24 UTC (rev 20989)
@@ -0,0 +1,8 @@
+- Replace: 
+Lite.php:
+include_once('PEAR.php');
+include_once dirname(__FILE__) . '/../PEAR.php';
+
+Output.php, Function.php:
+require_once('Cache/Lite.php');
+require_once(dirname(__FILE__) . '/../Lite.php';
\ No newline at end of file

Added: vendor/serendipity/current/bundled-libs/Cache/Lite/Function.php
--- vendor/serendipity/current/bundled-libs/Cache/Lite/Function.php	2006-01-22 22:49:49 UTC (rev 20988)
+++ vendor/serendipity/current/bundled-libs/Cache/Lite/Function.php	2006-01-22 23:06:24 UTC (rev 20989)
@@ -0,0 +1,111 @@
+<?php
+
+/**
+* This class extends Cache_Lite and can be used to cache the result and output of functions/methods
+*
+* This class is completly inspired from Sebastian Bergmann's
+* PEAR/Cache_Function class. This is only an adaptation to
+* Cache_Lite
+*
+* There are some examples in the 'docs/examples' file
+* Technical choices are described in the 'docs/technical' file
+*
+* @package Cache_Lite
+* @version $Id: Function.php,v 1.6 2004/02/03 17:07:13 fab Exp $
+* @author Sebastian BERGMANN <sb@sebastian-bergmann.de>
+* @author Fabien MARTY <fab@php.net>
+*/
+ 
+require_once(dirname(__FILE__) . '/../Lite.php');
+
+class Cache_Lite_Function extends Cache_Lite
+{
+
+    // --- Private properties ---
+    
+    /**
+    * Default cache group for function caching
+    *
+    * @var string $_defaultGroup
+    */
+    var $_defaultGroup = 'Cache_Lite_Function';
+    
+    // --- Public methods ----
+    
+    /**
+    * Constructor
+    *
+    * $options is an assoc. To have a look at availables options,
+    * see the constructor of the Cache_Lite class in 'Cache_Lite.php'
+    *
+    * Comparing to Cache_Lite constructor, there is another option :
+    * $options = array(
+    *     (...) see Cache_Lite constructor
+    *     'defaultGroup' => default cache group for function caching (string)
+    * );
+    *
+    * @param array $options options
+    * @access public
+    */
+    function Cache_Lite_Function($options = array(NULL))
+    {
+        if (isset($options['defaultGroup'])) {
+            $this->_defaultGroup = $options['defaultGroup'];
+        }
+        $this->Cache_Lite($options);
+    }
+    
+    /**
+    * Calls a cacheable function or method (or not if there is already a cache for it)
+    *
+    * Arguments of this method are read with func_get_args. So it doesn't appear
+    * in the function definition. Synopsis : 
+    * call('functionName', $arg1, $arg2, ...)
+    * (arg1, arg2... are arguments of 'functionName')
+    *
+    * @return mixed result of the function/method
+    * @access public
+    */
+    function call()
+    {
+        $arguments = func_get_args();
+        $id = serialize($arguments); // Generate a cache id
+        if (!$this->_fileNameProtection) {
+            $id = md5($id);
+            // if fileNameProtection is set to false, then the id has to be hashed
+            // because it's a very bad file name in most cases
+        }
+        $data = $this->get($id, $this->_defaultGroup);
+        if ($data !== false) {
+            $array = unserialize($data);
+            $output = $array['output'];
+            $result = $array['result'];
+        } else {
+            ob_start();
+            ob_implicit_flush(false);
+            $target = array_shift($arguments);
+            if (strstr($target, '::')) { // classname::staticMethod
+                list($class, $method) = explode('::', $target);
+                $result = call_user_func_array(array($class, $method), $arguments);
+            } else if (strstr($target, '->')) { // object->method
+                // use a stupid name ($objet_123456789 because) of problems when the object
+                // name is the same as this var name
+                list($object_123456789, $method) = explode('->', $target);
+                global $$object_123456789;
+                $result = call_user_func_array(array($$object_123456789, $method), $arguments);
+            } else { // function
+                $result = call_user_func_array($target, $arguments);
+            }
+            $output = ob_get_contents();
+            ob_end_clean();
+            $array['output'] = $output;
+            $array['result'] = $result;
+            $this->save(serialize($array), $id, $this->_defaultGroup);
+        }
+        echo($output);
+        return $result;
+    }
+    
+}
+
+?>

Added: vendor/serendipity/current/bundled-libs/Cache/Lite/Output.php
--- vendor/serendipity/current/bundled-libs/Cache/Lite/Output.php	2006-01-22 22:49:49 UTC (rev 20988)
+++ vendor/serendipity/current/bundled-libs/Cache/Lite/Output.php	2006-01-22 23:06:24 UTC (rev 20989)
@@ -0,0 +1,73 @@
+<?php
+
+/**
+* This class extends Cache_Lite and uses output buffering to get the data to cache.
+*
+* There are some examples in the 'docs/examples' file
+* Technical choices are described in the 'docs/technical' file
+*
+* @package Cache_Lite
+* @version $Id: Output.php,v 1.3 2005/04/17 21:40:18 fab Exp $
+* @author Fabien MARTY <fab@php.net>
+*/
+
+require_once(dirname(__FILE__) . '/../Lite.php');
+
+class Cache_Lite_Output extends Cache_Lite
+{
+
+    // --- Public methods ---
+
+    /**
+    * Constructor
+    *
+    * $options is an assoc. To have a look at availables options,
+    * see the constructor of the Cache_Lite class in 'Cache_Lite.php'
+    *
+    * @param array $options options
+    * @access public
+    */
+    function Cache_Lite_Output($options)
+    {
+        $this->Cache_Lite($options);
+    }
+
+    /**
+    * Start the cache
+    *
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @param boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested
+    * @return boolean true if the cache is hit (false else)
+    * @access public
+    */
+    function start($id, $group = 'default', $doNotTestCacheValidity = false)
+    {
+        $data = $this->get($id, $group, $doNotTestCacheValidity);
+        if ($data !== false) {
+            echo($data);
+            return true;
+        } else {
+            ob_start();
+            ob_implicit_flush(false);
+            return false;
+        }
+    }
+
+    /**
+    * Stop the cache
+    *
+    * @access public
+    */
+    function end()
+    {
+        $data = ob_get_contents();
+        ob_end_clean();
+        $this->save($data, $this->_id, $this->_group);
+        echo($data);
+    }
+
+}
+
+
+?>

Added: vendor/serendipity/current/bundled-libs/Cache/Lite.php
--- vendor/serendipity/current/bundled-libs/Cache/Lite.php	2006-01-22 22:49:49 UTC (rev 20988)
+++ vendor/serendipity/current/bundled-libs/Cache/Lite.php	2006-01-22 23:06:24 UTC (rev 20989)
@@ -0,0 +1,755 @@
+<?php
+
+/**
+* Fast, light and safe Cache Class
+*
+* Cache_Lite is a fast, light and safe cache system. It's optimized
+* for file containers. It is fast and safe (because it uses file
+* locking and/or anti-corruption tests).
+*
+* There are some examples in the 'docs/examples' file
+* Technical choices are described in the 'docs/technical' file
+*
+* Memory Caching is from an original idea of
+* Mike BENOIT <ipso@snappymail.ca>
+*
+* Nota : A chinese documentation (thanks to RainX <china_1982@163.com>) is
+* available at :
+* http://rainx.phpmore.com/manual/cache_lite.html
+*
+* @package Cache_Lite
+* @category Caching
+* @version $Id: Lite.php,v 1.30 2005/06/13 20:50:48 fab Exp $
+* @author Fabien MARTY <fab@php.net>
+*/
+
+define('CACHE_LITE_ERROR_RETURN', 1);
+define('CACHE_LITE_ERROR_DIE', 8);
+
+class Cache_Lite
+{
+
+    // --- Private properties ---
+
+    /**
+    * Directory where to put the cache files
+    * (make sure to add a trailing slash)
+    *
+    * @var string $_cacheDir
+    */
+    var $_cacheDir = '/tmp/';
+
+    /**
+    * Enable / disable caching
+    *
+    * (can be very usefull for the debug of cached scripts)
+    *
+    * @var boolean $_caching
+    */
+    var $_caching = true;
+
+    /**
+    * Cache lifetime (in seconds)
+    *
+    * @var int $_lifeTime
+    */
+    var $_lifeTime = 3600;
+
+    /**
+    * Enable / disable fileLocking
+    *
+    * (can avoid cache corruption under bad circumstances)
+    *
+    * @var boolean $_fileLocking
+    */
+    var $_fileLocking = true;
+
+    /**
+    * Timestamp of the last valid cache
+    *
+    * @var int $_refreshTime
+    */
+    var $_refreshTime;
+
+    /**
+    * File name (with path)
+    *
+    * @var string $_file
+    */
+    var $_file;
+    
+    /**
+    * File name (without path)
+    *
+    * @var string $_fileName
+    */
+    var $_fileName;
+
+    /**
+    * Enable / disable write control (the cache is read just after writing to detect corrupt entries)
+    *
+    * Enable write control will lightly slow the cache writing but not the cache reading
+    * Write control can detect some corrupt cache files but maybe it's not a perfect control
+    *
+    * @var boolean $_writeControl
+    */
+    var $_writeControl = true;
+
+    /**
+    * Enable / disable read control
+    *
+    * If enabled, a control key is embeded in cache file and this key is compared with the one
+    * calculated after the reading.
+    *
+    * @var boolean $_writeControl
+    */
+    var $_readControl = true;
+
+    /**
+    * Type of read control (only if read control is enabled)
+    *
+    * Available values are :
+    * 'md5' for a md5 hash control (best but slowest)
+    * 'crc32' for a crc32 hash control (lightly less safe but faster, better choice)
+    * 'strlen' for a length only test (fastest)
+    *
+    * @var boolean $_readControlType
+    */
+    var $_readControlType = 'crc32';
+
+    /**
+    * Pear error mode (when raiseError is called)
+    *
+    * (see PEAR doc)
+    *
+    * @see setToDebug()
+    * @var int $_pearErrorMode
+    */
+    var $_pearErrorMode = CACHE_LITE_ERROR_RETURN;
+    
+    /**
+    * Current cache id
+    *
+    * @var string $_id
+    */
+    var $_id;
+
+    /**
+    * Current cache group
+    *
+    * @var string $_group
+    */
+    var $_group;
+
+    /**
+    * Enable / Disable "Memory Caching"
+    *
+    * NB : There is no lifetime for memory caching ! 
+    *
+    * @var boolean $_memoryCaching
+    */
+    var $_memoryCaching = false;
+
+    /**
+    * Enable / Disable "Only Memory Caching"
+    * (be carefull, memory caching is "beta quality")
+    *
+    * @var boolean $_onlyMemoryCaching
+    */
+    var $_onlyMemoryCaching = false;
+
+    /**
+    * Memory caching array
+    *
+    * @var array $_memoryCachingArray
+    */
+    var $_memoryCachingArray = array();
+
+    /**
+    * Memory caching counter
+    *
+    * @var int $memoryCachingCounter
+    */
+    var $_memoryCachingCounter = 0;
+
+    /**
+    * Memory caching limit
+    *
+    * @var int $memoryCachingLimit
+    */
+    var $_memoryCachingLimit = 1000;
+    
+    /**
+    * File Name protection
+    *
+    * if set to true, you can use any cache id or group name
+    * if set to false, it can be faster but cache ids and group names
+    * will be used directly in cache file names so be carefull with
+    * special characters...
+    *
+    * @var boolean $fileNameProtection
+    */
+    var $_fileNameProtection = true;
+    
+    /**
+    * Enable / disable automatic serialization
+    *
+    * it can be used to save directly datas which aren't strings
+    * (but it's slower)    
+    *
+    * @var boolean $_serialize
+    */
+    var $_automaticSerialization = false;
+    
+    /**
+    * Disable / Tune the automatic cleaning process
+    *
+    * The automatic cleaning process destroy too old (for the given life time)
+    * cache files when a new cache file is written.
+    * 0               => no automatic cache cleaning
+    * 1               => systematic cache cleaning
+    * x (integer) > 1 => automatic cleaning randomly 1 times on x cache write
+    *
+    * @var int $_automaticCleaning
+    */
+    var $_automaticCleaningFactor = 0;
+    
+    /**
+    * Nested directory level
+    *
+    * Set the hashed directory structure level. 0 means "no hashed directory 
+    * structure", 1 means "one level of directory", 2 means "two levels"... 
+    * This option can speed up Cache_Lite only when you have many thousands of 
+    * cache file. Only specific benchs can help you to choose the perfect value 
+    * for you. Maybe, 1 or 2 is a good start.
+    *
+    * @var int $_hashedDirectoryLevel
+    */
+    var $_hashedDirectoryLevel = 0;
+    
+    /**
+    * Umask for hashed directory structure
+    *
+    * @var int $_hashedDirectoryUmask
+    */
+    var $_hashedDirectoryUmask = 0700;
+    
+    // --- Public methods ---
+
+    /**
+    * Constructor
+    *
+    * $options is an assoc. Available options are :
+    * $options = array(
+    *     'cacheDir' => directory where to put the cache files (string),
+    *     'caching' => enable / disable caching (boolean),
+    *     'lifeTime' => cache lifetime in seconds (int),
+    *     'fileLocking' => enable / disable fileLocking (boolean),
+    *     'writeControl' => enable / disable write control (boolean),
+    *     'readControl' => enable / disable read control (boolean),
+    *     'readControlType' => type of read control 'crc32', 'md5', 'strlen' (string),
+    *     'pearErrorMode' => pear error mode (when raiseError is called) (cf PEAR doc) (int),
+    *     'memoryCaching' => enable / disable memory caching (boolean),
+    *     'onlyMemoryCaching' => enable / disable only memory caching (boolean),
+    *     'memoryCachingLimit' => max nbr of records to store into memory caching (int),
+    *     'fileNameProtection' => enable / disable automatic file name protection (boolean),
+    *     'automaticSerialization' => enable / disable automatic serialization (boolean)
+    *     'automaticCleaningFactor' => distable / tune automatic cleaning process (int)
+    *     'hashedDirectoryLevel' => level of the hashed directory system (int)
+    *     'hashedDirectoryUmask' => umask for hashed directory structure (int)
+    * );
+    *
+    * @param array $options options
+    * @access public
+    */
+    function Cache_Lite($options = array(NULL))
+    {
+        $availableOptions = array('hashedDirectoryUmask', 'hashedDirectoryLevel', 'automaticCleaningFactor', 'automaticSerialization', 'fileNameProtection', 'memoryCaching', 'onlyMemoryCaching', 'memoryCachingLimit', 'cacheDir', 'caching', 'lifeTime', 'fileLocking', 'writeControl', 'readControl', 'readControlType', 'pearErrorMode');
+        foreach($options as $key => $value) {
+            if(in_array($key, $availableOptions)) {
+                $property = '_'.$key;
+                $this->$property = $value;
+            }
+        }
+        $this->_refreshTime = time() - $this->_lifeTime;
+    }
+    
+    /**
+    * Test if a cache is available and (if yes) return it
+    *
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @param boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested
+    * @return string data of the cache (or false if no cache available)
+    * @access public
+    */
+    function get($id, $group = 'default', $doNotTestCacheValidity = false)
+    {
+        $this->_id = $id;
+        $this->_group = $group;
+        $data = false;
+        if ($this->_caching) {
+            $this->_setFileName($id, $group);
+            if ($this->_memoryCaching) {
+                if (isset($this->_memoryCachingArray[$this->_file])) {
+                    if ($this->_automaticSerialization) {
+                        return unserialize($this->_memoryCachingArray[$this->_file]);
+                    } else {
+                        return $this->_memoryCachingArray[$this->_file];
+                    }
+                } else {
+                    if ($this->_onlyMemoryCaching) {
+                        return false;
+                    }
+                }
+            }
+            if ($doNotTestCacheValidity) {
+                if (file_exists($this->_file)) {
+                    $data = $this->_read();
+                }
+            } else {
+                if ((file_exists($this->_file)) && (@filemtime($this->_file) > $this->_refreshTime)) {
+                    $data = $this->_read();
+                }
+            }
+            if (($data) and ($this->_memoryCaching)) {
+                $this->_memoryCacheAdd($this->_file, $data);
+            }
+            if (($this->_automaticSerialization) and (is_string($data))) {
+                $data = unserialize($data);
+            }
+            return $data;
+        }
+        return false;
+    }
+    
+    /**
+    * Save some data in a cache file
+    *
+    * @param string $data data to put in cache (can be another type than strings if automaticSerialization is on)
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @return boolean true if no problem
+    * @access public
+    */
+    function save($data, $id = NULL, $group = 'default')
+    {
+        if ($this->_caching) {
+            if ($this->_automaticSerialization) {
+                $data = serialize($data);
+            }
+            if (isset($id)) {
+                $this->_setFileName($id, $group);
+            }
+            if ($this->_memoryCaching) {
+                $this->_memoryCacheAdd($this->_file, $data);
+                if ($this->_onlyMemoryCaching) {
+                    return true;
+                }
+            }
+	    if ($this->_automaticCleaningFactor>0) {
+                $rand = rand(1, $this->_automaticCleaningFactor);
+	        if ($rand==1) {
+	            $this->clean(false, 'old');
+		}
+            }
+            if ($this->_writeControl) {
+                if (!$this->_writeAndControl($data)) {
+                    @touch($this->_file, time() - 2*abs($this->_lifeTime));
+                    return false;
+                } else {
+                    return true;
+                }
+            } else {
+	        return $this->_write($data);
+	    }
+        }
+        return false;
+    }
+
+    /**
+    * Remove a cache file
+    *
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @return boolean true if no problem
+    * @access public
+    */
+    function remove($id, $group = 'default')
+    {
+        $this->_setFileName($id, $group);
+        if ($this->_memoryCaching) {
+            if (isset($this->_memoryCachingArray[$this->_file])) {
+                unset($this->_memoryCachingArray[$this->_file]);
+                $this->_memoryCachingCounter = $this->_memoryCachingCounter - 1;
+            }
+            if ($this->_onlyMemoryCaching) {
+                return true;
+            }
+        }
+        return $this->_unlink($this->_file);
+    }
+
+    /**
+    * Clean the cache
+    *
+    * if no group is specified all cache files will be destroyed
+    * else only cache files of the specified group will be destroyed
+    *
+    * @param string $group name of the cache group
+    * @param string $mode flush cache mode : 'old', 'ingroup', 'notingroup', 
+    *                                        'callback_myFunction'
+    * @return boolean true if no problem
+    * @access public
+    */
+    function clean($group = false, $mode = 'ingroup')
+    {
+        return $this->_cleanDir($this->_cacheDir, $group, $mode);
+    }
+       
+    /**
+    * Set to debug mode
+    *
+    * When an error is found, the script will stop and the message will be displayed
+    * (in debug mode only).
+    *
+    * @access public
+    */
+    function setToDebug()
+    {
+        $this->_pearErrorMode = CACHE_LITE_ERROR_DIE;
+    }
+
+    /**
+    * Set a new life time
+    *
+    * @param int $newLifeTime new life time (in seconds)
+    * @access public
+    */
+    function setLifeTime($newLifeTime)
+    {
+        $this->_lifeTime = $newLifeTime;
+        $this->_refreshTime = time() - $newLifeTime;
+    }
+
+    /**
+    * Save the state of the caching memory array into a cache file cache
+    *
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @access public
+    */
+    function saveMemoryCachingState($id, $group = 'default')
+    {
+        if ($this->_caching) {
+            $array = array(
+                'counter' => $this->_memoryCachingCounter,
+                'array' => $this->_memoryCachingState
+            );
+            $data = serialize($array);
+            $this->save($data, $id, $group);
+        }
+    }
+
+    /**
+    * Load the state of the caching memory array from a given cache file cache
+    *
+    * @param string $id cache id
+    * @param string $group name of the cache group
+    * @param boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested
+    * @access public
+    */
+    function getMemoryCachingState($id, $group = 'default', $doNotTestCacheValidity = false)
+    {
+        if ($this->_caching) {
+            if ($data = $this->get($id, $group, $doNotTestCacheValidity)) {
+                $array = unserialize($data);
+                $this->_memoryCachingCounter = $array['counter'];
+                $this->_memoryCachingArray = $array['array'];
+            }
+        }
+    }
+    
+    /**
+    * Return the cache last modification time
+    *
+    * BE CAREFUL : THIS METHOD IS FOR HACKING ONLY !
+    *
+    * @return int last modification time
+    */
+    function lastModified() {
+        return @filemtime($this->_file);
+    }
+    
+    /**
+    * Trigger a PEAR error
+    *
+    * To improve performances, the PEAR.php file is included dynamically.
+    * The file is so included only when an error is triggered. So, in most
+    * cases, the file isn't included and perfs are much better.
+    *
+    * @param string $msg error message
+    * @param int $code error code
+    * @access public
+    */
+    function raiseError($msg, $code)
+    {
+        include_once(dirname(__FILE__) . '/../PEAR.php');
+        PEAR::raiseError($msg, $code, $this->_pearErrorMode);
+    }
+    
+    // --- Private methods ---
+
+    /**
+    * Remove a file
+    * 
+    * @param string $file complete file path and name
+    * @return boolean true if no problem
+    * @access private
+    */
+    function _unlink($file)
+    {
+        if (!@unlink($file)) {
+            $this->raiseError('Cache_Lite : Unable to remove cache !', -3);
+            return false;
+        } else {
+            return true;
+        }
+    }
+
+    /**
+    * Recursive function for cleaning cache file in the given directory
+    *
+    * @param string $dir directory complete path (with a trailing slash)
+    * @param string $group name of the cache group
+    * @param string $mode flush cache mode : 'old', 'ingroup', 'notingroup',
+                                             'callback_myFunction'
+    * @return boolean true if no problem
+    * @access private
+    */
+    function _cleanDir($dir, $group = false, $mode = 'ingroup')     
+    {
+        if ($this->_fileNameProtection) {
+            $motif = ($group) ? 'cache_'.md5($group).'_' : 'cache_';
+        } else {
+            $motif = ($group) ? 'cache_'.$group.'_' : 'cache_';
+        }
+        if ($this->_memoryCaching) {
+            while (list($key, $value) = each($this->_memoryCachingArray)) {
+                if (strpos($key, $motif, 0)) {
+                    unset($this->_memoryCachingArray[$key]);
+                    $this->_memoryCachingCounter = $this->_memoryCachingCounter - 1;
+                }
+            }
+            if ($this->_onlyMemoryCaching) {
+                return true;
+            }
+        }
+        if (!($dh = opendir($dir))) {
+            $this->raiseError('Cache_Lite : Unable to open cache directory !', -4);
+            return false;
+        }
+        $result = true;
+        while ($file = readdir($dh)) {
+            if (($file != '.') && ($file != '..')) {
+                if (substr($file, 0, 6)=='cache_') {
+                    $file2 = $dir . $file;
+                    if (is_file($file2)) {
+                        switch (substr($mode, 0, 9)) {
+                            case 'old':
+                                // files older than lifeTime get deleted from cache
+                                if ((mktime() - filemtime($file2)) > $this->_lifeTime) {
+                                    $result = ($result and ($this->_unlink($file2)));
+                                }
+                                break;
+                            case 'notingrou':
+                                if (!strpos($file2, $motif, 0)) {
+                                    $result = ($result and ($this->_unlink($file2)));
+                                }
+                                break;
+                            case 'callback_':
+                                $func = substr($mode, 9, strlen($mode) - 9);
+                                if ($func($file2, $group)) {
+                                    $result = ($result and ($this->_unlink($file2)));
+                                }
+                                break;
+                            case 'ingroup':
+                            default:
+                                if (strpos($file2, $motif, 0)) {
+                                    $result = ($result and ($this->_unlink($file2)));
+                                }
+                                break;
+                        }
+                    }
+                    if ((is_dir($file2)) and ($this->_hashedDirectoryLevel>0)) {
+                        $result = ($result and ($this->_cleanDir($file2 . '/', $group, $mode)));
+                    }
+                }
+            }
+        }
+        return $result;
+    }
+      
+    /**
+    * Add some date in the memory caching array
+    *
+    * @param string $id cache id
+    * @param string $data data to cache
+    * @access private
+    */
+    function _memoryCacheAdd($id, $data)
+    {
+        $this->_memoryCachingArray[$this->_file] = $data;
+        if ($this->_memoryCachingCounter >= $this->_memoryCachingLimit) {
+            list($key, $value) = each($this->_memoryCachingArray);
+            unset($this->_memoryCachingArray[$key]);
+        } else {
+            $this->_memoryCachingCounter = $this->_memoryCachingCounter + 1;
+        }
+    }
+
+    /**
+    * Make a file name (with path)
+    *
+    * @param string $id cache id
+    * @param string $group name of the group
+    * @access private
+    */
+    function _setFileName($id, $group)
+    {
+        
+        if ($this->_fileNameProtection) {
+            $suffix = 'cache_'.md5($group).'_'.md5($id);
+        } else {
+            $suffix = 'cache_'.$group.'_'.$id;
+        }
+        $root = $this->_cacheDir;
+        if ($this->_hashedDirectoryLevel>0) {
+            $hash = md5($suffix);
+            for ($i=0 ; $i<$this->_hashedDirectoryLevel ; $i++) {
+                $root = $root . 'cache_' . substr($hash, 0, $i + 1) . '/';
+            }   
+        }
+        $this->_fileName = $suffix;
+        $this->_file = $root.$suffix;
+    }
+    
+    /**
+    * Read the cache file and return the content
+    *
+    * @return string content of the cache file
+    * @access private
+    */
+    function _read()
+    {
+        $fp = @fopen($this->_file, "rb");
+        if ($this->_fileLocking) @flock($fp, LOCK_SH);
+        if ($fp) {
+            clearstatcache(); // because the filesize can be cached by PHP itself...
+            $length = @filesize($this->_file);
+            $mqr = get_magic_quotes_runtime();
+            set_magic_quotes_runtime(0);
+            if ($this->_readControl) {
+                $hashControl = @fread($fp, 32);
+                $length = $length - 32;
+            } 
+            if ($length) {
+                $data = @fread($fp, $length);
+            } else {
+                $data = '';
+            }
+            set_magic_quotes_runtime($mqr);
+            if ($this->_fileLocking) @flock($fp, LOCK_UN);
+            @fclose($fp);
+            if ($this->_readControl) {
+                $hashData = $this->_hash($data, $this->_readControlType);
+                if ($hashData != $hashControl) {
+                    @touch($this->_file, time() - 2*abs($this->_lifeTime)); 
+                    return false;
+                }
+            }
+            return $data;
+        }
+        $this->raiseError('Cache_Lite : Unable to read cache !', -2);   
+        return false;
+    }
+    
+    /**
+    * Write the given data in the cache file
+    *
+    * @param string $data data to put in cache
+    * @return boolean true if ok
+    * @access private
+    */
+    function _write($data)
+    {
+        $try = 1;
+        while ($try<=2) {
+            $fp = @fopen($this->_file, "wb");
+            if ($fp) {
+                if ($this->_fileLocking) @flock($fp, LOCK_EX);
+                if ($this->_readControl) {
+                    @fwrite($fp, $this->_hash($data, $this->_readControlType), 32);
+                }
+                $len = strlen($data);
+                @fwrite($fp, $data, $len);
+                if ($this->_fileLocking) @flock($fp, LOCK_UN);
+                @fclose($fp);
+                return true;
+            } else {
+                if (($try==1) and ($this->_hashedDirectoryLevel>0)) {
+                    $hash = md5($this->_fileName);
+                    $root = $this->_cacheDir;
+                    for ($i=0 ; $i<$this->_hashedDirectoryLevel ; $i++) {
+                        $root = $root . 'cache_' . substr($hash, 0, $i + 1) . '/';
+                        @mkdir($root, $this->_hashedDirectoryUmask);
+                    }
+                    $try = 2;
+                } else {
+                    $try = 999;
+                }
+            }
+        }
+        $this->raiseError('Cache_Lite : Unable to write cache file : '.$this->_file, -1);
+        return false;
+    }
+    
+    /**
+    * Write the given data in the cache file and control it just after to avoir corrupted cache entries
+    *
+    * @param string $data data to put in cache
+    * @return boolean true if the test is ok
+    * @access private
+    */
+    function _writeAndControl($data)
+    {
+        $this->_write($data);
+        $dataRead = $this->_read($data);
+        return ($dataRead==$data);
+    }
+    
+    /**
+    * Make a control key with the string containing datas
+    *
+    * @param string $data data
+    * @param string $controlType type of control 'md5', 'crc32' or 'strlen'
+    * @return string control key
+    * @access private
+    */
+    function _hash($data, $controlType)
+    {
+        switch ($controlType) {
+        case 'md5':
+            return md5($data);
+        case 'crc32':
+            return sprintf('% 32d', crc32($data));
+        case 'strlen':
+            return sprintf('% 32d', strlen($data));
+        default:
+            $this->raiseError('Unknown controlType ! (available values are only \'md5\', \'crc32\', \'strlen\')', -5);
+        }
+    }
+    
+} 
+
+?>

Added: vendor/serendipity/current/bundled-libs/HTTP/BUNDLE_NOTICE
--- vendor/serendipity/current/bundled-libs/HTTP/BUNDLE_NOTICE	2006-01-22 22:49:49 UTC (rev 20988)
+++ vendor/serendipity/current/bundled-libs/HTTP/BUNDLE_NOTICE	2006-01-22 23:06:24 UTC (rev 20989)
@@ -0,0 +1,10 @@
+- Replace: 
+Request.php:
+require_once('PEAR.php');
+require_once(dirname(__FILE__) . '/../PEAR.php');
+
+require_once('Net/Socket.php');
+require_once(dirname(__FILE__) . '/../Net/Socket.php');
+
+require_once('Net/URL.php');
+require_once(dirname(__FILE__) . '/../Net/URL.php');
[truncated at 1000 lines; 165701 more skipped]