diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Serializer/Adapter/Json.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Serializer/Adapter/Json.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,93 @@ + false, + 'enableJsonExprFinder' => false, + 'objectDecodeType' => Zend_Json::TYPE_ARRAY, + ); + + /** + * Serialize PHP value to JSON + * + * @param mixed $value + * @param array $opts + * @return string + * @throws Zend_Serializer_Exception on JSON encoding exception + */ + public function serialize($value, array $opts = array()) + { + $opts = $opts + $this->_options; + + try { + return Zend_Json::encode($value, $opts['cycleCheck'], $opts); + } catch (Exception $e) { + require_once 'Zend/Serializer/Exception.php'; + throw new Zend_Serializer_Exception('Serialization failed', 0, $e); + } + } + + /** + * Deserialize JSON to PHP value + * + * @param string $json + * @param array $opts + * @return mixed + */ + public function unserialize($json, array $opts = array()) + { + $opts = $opts + $this->_options; + + try { + $ret = Zend_Json::decode($json, $opts['objectDecodeType']); + } catch (Exception $e) { + require_once 'Zend/Serializer/Exception.php'; + throw new Zend_Serializer_Exception('Unserialization failed by previous error', 0, $e); + } + + // json_decode returns null for invalid JSON + if ($ret === null && $json !== 'null') { + require_once 'Zend/Serializer/Exception.php'; + throw new Zend_Serializer_Exception('Invalid json data'); + } + + return $ret; + } +}