From ac622998f911743630acd03197c7ee4529adcd1c Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Wed, 24 Jun 2009 05:44:05 -0400 Subject: [PATCH] - Fix non-unicode characters caching in unicode database (#1484608) --- program/include/rcube_mdb2.php | 68 ++++++++++++++++++++++++++++++++++ 1 files changed, 68 insertions(+), 0 deletions(-) diff --git a/program/include/rcube_mdb2.php b/program/include/rcube_mdb2.php index b1e5fff..faf6535 100644 --- a/program/include/rcube_mdb2.php +++ b/program/include/rcube_mdb2.php @@ -470,6 +470,26 @@ /** + * Return list of elements for use with SQL's IN clause + * + * @param string Input array + * @return string Elements list string + * @access public + */ + function array2list($arr, $type=null) + { + if (!is_array($arr)) + return $this->quote($arr, $type); + + $res = array(); + foreach ($arr as $item) + $res[] = $this->quote($item, $type); + + return implode(',', $res); + } + + + /** * Return SQL statement to convert a field value into a unix timestamp * * @param string Field name @@ -537,6 +557,54 @@ /** + * Encodes non-UTF-8 characters in string/array/object (recursive) + * + * @param mixed Data to fix + * @return mixed Properly UTF-8 encoded data + * @access public + */ + function encode($input) + { + if (is_object($input)) { + foreach (get_object_vars($input) as $idx => $value) + $input->$idx = $this->encode($value); + return $input; + } + else if (is_array($input)) { + foreach ($input as $idx => $value) + $input[$idx] = $this->encode($value); + return $input; + } + + return utf8_encode($input); + } + + + /** + * Decodes encoded UTF-8 string/object/array (recursive) + * + * @param mixed Input data + * @return mixed Decoded data + * @access public + */ + function decode($input) + { + if (is_object($input)) { + foreach (get_object_vars($input) as $idx => $value) + $input->$idx = $this->decode($value); + return $input; + } + else if (is_array($input)) { + foreach ($input as $idx => $value) + $input[$idx] = $this->decode($value); + return $input; + } + + return utf8_decode($input); + } + + + /** * Adds a query result and returns a handle ID * * @param object Query handle -- Gitblit v1.9.1