steffen: server/kolab-horde-framework/kolab-horde-framework/Serialize Serialize.php, NONE, 1.1 package.xml, NONE, 1.1
cvs at intevation.de
cvs at intevation.de
Fri Oct 14 16:33:13 CEST 2005
Author: steffen
Update of /kolabrepository/server/kolab-horde-framework/kolab-horde-framework/Serialize
In directory doto:/tmp/cvs-serv28903/kolab-horde-framework/kolab-horde-framework/Serialize
Added Files:
Serialize.php package.xml
Log Message:
Separated Horde Framework from kolab-resource-handlers
--- NEW FILE: Serialize.php ---
<?php
define('SERIALIZE_UNKNOWN', -1);
define('SERIALIZE_NONE', 0);
define('SERIALIZE_WDDX', 1);
define('SERIALIZE_BZIP', 2);
define('SERIALIZE_IMAP8', 3);
define('SERIALIZE_IMAPUTF7', 4);
define('SERIALIZE_IMAPUTF8', 5);
define('SERIALIZE_BASIC', 6);
define('SERIALIZE_GZ_DEFLATE', 7);
define('SERIALIZE_GZ_COMPRESS', 8);
define('SERIALIZE_GZ_ENCOD', 9);
define('SERIALIZE_BASE64', 10);
define('SERIALIZE_SQLXML', 11);
define('SERIALIZE_RAW', 12);
define('SERIALIZE_URL', 13);
define('SERIALIZE_UTF7', 14);
/** Use SERIALIZE_UTF7 and SERIALIZE_BASIC stacked. */
define('SERIALIZE_UTF7_BASIC', 15);
/* Specific default values */
/* BZIP */
/** Define the block size (1-9). */
define('SERIALIZE_BZIP_BLOCK', 9);
/** Work factor - not used. */
define('SERIALIZE_BZIP_FACTOR', 30);
/** Try to minimize memory use. */
define('SERIALIZE_BZIP_SMALLMEM', false);
/* Gzip */
/** Level of compression - deflate (1-9). */
define('SERIALIZE_GZ_DEFLATE_LEVEL', 9);
/** Max length of the uncompressed string (in bytes). */
define('SERIALIZE_GZ_DEFLATE_LENGTH', 2048);
/** Level of compression - compress (1-9). */
define('SERIALIZE_GZ_COMPRESS_LEVEL', 9);
/** Max length of the uncompressed string. */
define('SERIALIZE_GZ_COMPRESS_LENGTH', 2048);
/** Level of compression - Encode (1-9). */
define('SERIALIZE_GZ_ENCOD_LEVEL', 9);
/**
* The Serialize:: class provides various methods of encapsulating data.
*
* $Horde: framework/Serialize/Serialize.php,v 1.25 2004/04/07 14:43:13 chuck Exp $
*
* Copyright 2001-2004 Stephane Huther <shuther at bigfoot.com>
*
* 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 Stephane Huther <shuther at bigfoot.com>
* @version $Revision: 1.1 $
* @since Horde 2.0
* @package Horde_Serialize
*/
class Horde_Serialize {
/**
* Serialize a value.
* See the list of constants at the top of the file for the serializing
* techniques that can be used.
*
* @access public
*
* @param mixed $data The data to be serialized.
* @param optional mixed $mode The mode of serialization. Can be
* either a single mode or array of modes.
* If array, will be serialized in the
* order provided.
* @param optional mixed $params Any additional parameters the
* serialization method requires.
*
* @return string The serialized data.
* Returns PEAR_Error on error.
*/
function serialize($data, $mode = array(SERIALIZE_BASIC), $params = null)
{
if (!is_array($mode)) {
$mode = array($mode);
}
/* Return now if no data. */
if (empty($data) && !is_array($data)) {
return $data;
}
/* Parse through the list of serializing modes. */
foreach ($mode as $val) {
/* Check to make sure the mode is supported. */
if (!Horde_Serialize::hasCapability($val)) {
return PEAR::raiseError('Unsupported serialization type');
}
Horde_Serialize::_serialize($data, $val, $params);
if (is_a($data, 'PEAR_Error')) {
break;
}
}
return $data;
}
/**
* Serialize data.
*
* @access private
*
* @param mixed &$data The data to be serialized.
* @param mixed $mode The mode of serialization. Can be
* either a single mode or array of modes.
* If array, will be serialized in the
* order provided.
* @param optional mixed $params Any additional parameters the
* serialization method requires.
*/
function _serialize(&$data, $mode, $params = null)
{
switch ($mode) {
case SERIALIZE_NONE:
break;
case SERIALIZE_BZIP:
$data = bzcompress($data, SERIALIZE_BZIP_BLOCK, SERIALIZE_BZIP_FACTOR);
break;
case SERIALIZE_WDDX:
$data = wddx_serialize_value($data);
break;
case SERIALIZE_IMAP8:
$data = imap_8bit($data);
break;
case SERIALIZE_IMAPUTF7:
$data = imap_utf7_encode($data);
break;
case SERIALIZE_IMAPUTF8:
$data = imap_utf8($data);
break;
case SERIALIZE_GZ_DEFLATE:
$data = gzdeflate($data, SERIALIZE_GZ_DEFLATE_LEVEL);
break;
case SERIALIZE_BASIC:
$data = serialize($data);
break;
case SERIALIZE_GZ_COMPRESS:
$data = gzcompress($data, SERIALIZE_GZ_COMPRESS_LEVEL);
break;
case SERIALIZE_BASE64:
$data = base64_encode($data);
break;
case SERIALIZE_GZ_ENCOD:
$data = gzencode($data, SERIALIZE_GZ_ENCOD_LEVEL);
break;
case SERIALIZE_RAW:
$data = rawurlencode($data);
break;
case SERIALIZE_URL:
$data = urlencode($data);
break;
case SERIALIZE_SQLXML:
require_once 'DB.php';
require_once 'XML/sql2xml.php';
$sql2xml = &new xml_sql2xml();
$data = $sql2xml->getXML($data);
break;
case SERIALIZE_UTF7:
require_once 'Horde/String.php';
$data = String::convertCharset($data, $params, 'utf-7');
break;
case SERIALIZE_UTF7_BASIC:
Horde_Serialize::_serialize($data, SERIALIZE_UTF7, $params);
Horde_Serialize::_serialize($data, SERIALIZE_BASIC, $params);
break;
}
}
/**
* Unserialize a value.
* See the list of constants at the top of the file for the serializing
* techniques that can be used.
*
* @access public
*
* @param mixed $data The data to be unserialized.
* @param optional mixed $mode The mode of unserialization. Can be
* either a single mode or array of modes.
* If array, will be unserialized in the
* order provided.
* @param optional mixed $params Any additional parameters the
* unserialization method requires.
*
* @return string The unserialized data.
* Returns PEAR_Error on error.
*/
function unserialize($data, $mode = SERIALIZE_BASIC, $params = null)
{
if (!is_array($mode)) {
$mode = array($mode);
}
/* Return now if no data. */
if (empty($data)) {
return $data;
}
/* Parse through the list of unserializing modes. */
foreach ($mode as $val) {
/* Check to make sure the mode is supported. */
if (!Horde_Serialize::hasCapability($val)) {
return PEAR::raiseError('Unsupported unserialization type');
}
Horde_Serialize::_unserialize($data, $val, $params);
if (is_a($data, 'PEAR_Error')) {
break;
}
}
return $data;
}
/**
* Unserialize data.
*
* @access private
*
* @param mixed &$data The data to be unserialized.
* @param mixed $mode The mode of unserialization. Can be
* either a single mode or array of modes.
* If array, will be unserialized in the
* order provided.
* @param optional mixed $params Any additional parameters the
* unserialization method requires.
*/
function _unserialize(&$data, $mode, $params = null)
{
switch ($mode) {
case SERIALIZE_NONE:
case SERIALIZE_SQLXML:
break;
case SERIALIZE_RAW:
$data = rawurldecode($data);
break;
case SERIALIZE_URL:
$data = urldecode($data);
break;
case SERIALIZE_WDDX:
$data = wddx_deserialize($data);
break;
case SERIALIZE_BZIP:
$data = bzdecompress($data, SERIALIZE_BZIP_SMALLMEM);
break;
case SERIALIZE_IMAPUTF7:
$data = imap_utf7_decode($data);
break;
case SERIALIZE_BASIC:
$data = @unserialize($data);
break;
case SERIALIZE_GZ_DEFLATE:
$data = gzinflate($data, SERIALIZE_GZ_DEFLATE_LENGTH);
break;
case SERIALIZE_BASE64:
$data = base64_decode($data);
break;
case SERIALIZE_GZ_COMPRESS:
$data = gzuncompress($data, SERIALIZE_GZ_COMPRESS_LENGTH);
break;
case SERIALIZE_UTF7:
require_once 'Horde/String.php';
$data = String::convertCharset($data, 'utf-7', $params);
break;
case SERIALIZE_UTF7_BASIC:
Horde_Serialize::_unserialize($data, SERIALIZE_BASIC, $params);
Horde_Serialize::_unserialize($data, SERIALIZE_UTF7, $params);
break;
}
}
/**
* Check whether or not a serialization method is supported.
*
* @access public
*
* @param integer $mode The serialization method.
*
* @return boolean True if supported, false if not.
*/
function hasCapability($mode)
{
switch ($mode) {
case SERIALIZE_BZIP:
return Util::extensionExists('bz2');
case SERIALIZE_WDDX:
return Util::extensionExists('wddx');
case SERIALIZE_IMAPUTF7:
case SERIALIZE_IMAPUTF8:
case SERIALIZE_IMAP8:
return Util::extensionExists('imap');
case SERIALIZE_GZ_DEFLATE:
case SERIALIZE_GZ_COMPRESS:
case SERIALIZE_GZ_ENCOD:
return Util::extensionExists('zlib');
case SERIALIZE_NONE:
case SERIALIZE_BASIC:
case SERIALIZE_BASE64:
case SERIALIZE_SQLXML:
case SERIALIZE_RAW:
case SERIALIZE_URL:
case SERIALIZE_UTF7:
case SERIALIZE_UTF7_BASIC:
return true;
default:
return false;
}
}
}
--- NEW FILE: package.xml ---
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- $Horde: framework/Serialize/package.xml,v 1.6 2003/12/12 22:07:54 slusarz Exp $ -->
<!DOCTYPE package SYSTEM "http://pear.php.net/dtd/package-1.1">
<package version="1.0">
<name>Horde_Serialize</name>
<summary>Data Encapulation API</summary>
<description>
The Serialize:: class provides various methods of encapsulating data.
</description>
<license>LGPL</license>
<maintainers>
<maintainer>
<user>chuck</user>
<role>lead</role>
<name>Chuck Hagenbuch</name>
<email>chuck at horde.org</email>
</maintainer>
<maintainer>
<user>yunosh</user>
<role>lead</role>
<name>Jan Schneider</name>
<email>jan at horde.org</email>
</maintainer>
<maintainer>
<user>steph</user>
<role>developer</role>
<name>Stephane Huther</name>
<email>shuther at bigfoot.com</email>
</maintainer>
</maintainers>
<release>
<version>0.0.1</version>
<state>alpha</state>
<date>2003-07-04</date>
<notes>Initial packaging.</notes>
<filelist>
<file role="php" baseinstalldir="/Horde" name="Serialize.php" />
</filelist>
</release>
<deps>
<dep type="pkg" rel="has">Horde_Util</dep>
</deps>
</package>
More information about the commits
mailing list