Lib_Unserialize - Version 1.9.2.2

Version Notes

1.9.2.2

Download this release

Release Info

Developer Magento Core Team
Extension Lib_Unserialize
Version 1.9.2.2
Comparing to
See all releases


Version 1.9.2.2

lib/Unserialize/Parser.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category Unserialize
22
+ * @package Unserialize_Parser
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Class Unserialize_Parser
29
+ */
30
+ class Unserialize_Parser
31
+ {
32
+ const TYPE_STRING = 's';
33
+ const TYPE_INT = 'i';
34
+ const TYPE_DOUBLE = 'd';
35
+ const TYPE_ARRAY = 'a';
36
+ const TYPE_BOOL = 'b';
37
+
38
+ const SYMBOL_QUOTE = '"';
39
+ const SYMBOL_SEMICOLON = ';';
40
+ const SYMBOL_COLON = ':';
41
+
42
+ /**
43
+ * @param $str
44
+ * @return array|null
45
+ * @throws Exception
46
+ */
47
+ public function unserialize($str)
48
+ {
49
+ $reader = new Unserialize_Reader_Arr();
50
+ $prevChar = null;
51
+ for ($i = 0; $i < strlen($str); $i++) {
52
+ $char = $str[$i];
53
+ $arr = $reader->read($char, $prevChar);
54
+ if (!is_null($arr)) {
55
+ return $arr;
56
+ }
57
+ $prevChar = $char;
58
+ }
59
+ throw new Exception('Error during unserialization');
60
+ }
61
+ }
lib/Unserialize/Reader/Arr.php ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category Unserialize
22
+ * @package Unserialize_Reader
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Class Unserialize_Reader_Arr
29
+ */
30
+ class Unserialize_Reader_Arr
31
+ {
32
+ /**
33
+ * @var array
34
+ */
35
+ protected $_result = null;
36
+
37
+ /**
38
+ * @var string|int
39
+ */
40
+ protected $_length = '';
41
+
42
+ /**
43
+ * @var int|null
44
+ */
45
+ protected $_status = null;
46
+
47
+ /**
48
+ * @var object
49
+ */
50
+ protected $_reader = null;
51
+
52
+ const READING_LENGTH = 1;
53
+ const FINISHED_LENGTH = 2;
54
+ const READING_KEY = 3;
55
+ const READING_VALUE = 4;
56
+ const FINISHED_ARR = 5;
57
+
58
+ /**
59
+ * @param $char
60
+ * @param $prevChar
61
+ * @return array|null
62
+ * @throws Exception
63
+ */
64
+ public function read($char, $prevChar)
65
+ {
66
+ $this->_result = !is_null($this->_result) ? $this->_result : array();
67
+
68
+ if (is_null($this->_status) && $prevChar == Unserialize_Parser::SYMBOL_COLON) {
69
+ $this->_length .= $char;
70
+ $this->_status = self::READING_LENGTH;
71
+ return null;
72
+ }
73
+
74
+ if ($this->_status == self::READING_LENGTH) {
75
+ if ($char == Unserialize_Parser::SYMBOL_COLON) {
76
+ $this->_length = (int)$this->_length;
77
+ if ($this->_length == 0) {
78
+ $this->_status = self::FINISHED_ARR;
79
+ return null;
80
+ }
81
+ $this->_status = self::FINISHED_LENGTH;
82
+ } else {
83
+ $this->_length .= $char;
84
+ }
85
+ }
86
+
87
+ if ($this->_status == self::FINISHED_LENGTH && $prevChar == '{') {
88
+ $this->_reader = new Unserialize_Reader_ArrKey();
89
+ $this->_status = self::READING_KEY;
90
+ }
91
+
92
+ if ($this->_status == self::READING_KEY) {
93
+ $key = $this->_reader->read($char, $prevChar);
94
+ if (!is_null($key)) {
95
+ $this->_status = self::READING_VALUE;
96
+ $this->_reader = new Unserialize_Reader_ArrValue($key);
97
+ return null;
98
+ }
99
+ }
100
+
101
+ if ($this->_status == self::READING_VALUE) {
102
+ $value = $this->_reader->read($char, $prevChar);
103
+ if (!is_null($value)) {
104
+ $this->_result[$this->_reader->key] = $value;
105
+ if (count($this->_result) < $this->_length) {
106
+ $this->_reader = new Unserialize_Reader_ArrKey();
107
+ $this->_status = self::READING_KEY;
108
+ return null;
109
+ } else {
110
+ $this->_status = self::FINISHED_ARR;
111
+ return null;
112
+ }
113
+ }
114
+ }
115
+
116
+ if ($this->_status == self::FINISHED_ARR) {
117
+ if ($char == '}') {
118
+ return $this->_result;
119
+ }
120
+ }
121
+ }
122
+ }
lib/Unserialize/Reader/ArrKey.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category Unserialize
22
+ * @package Unserialize_Reader
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Class Unserialize_Reader_ArrKey
29
+ */
30
+ class Unserialize_Reader_ArrKey
31
+ {
32
+ /**
33
+ * @var int
34
+ */
35
+ protected $_status;
36
+
37
+ /**
38
+ * @object
39
+ */
40
+ protected $_reader;
41
+
42
+ const NOT_STARTED = 1;
43
+ const READING_KEY = 2;
44
+
45
+ /**
46
+ * Construct
47
+ */
48
+ public function __construct()
49
+ {
50
+ $this->_status = self::NOT_STARTED;
51
+ }
52
+
53
+ /**
54
+ * @param string $char
55
+ * @param string $prevChar
56
+ * @return mixed|null
57
+ * @throws Exception
58
+ */
59
+ public function read($char, $prevChar)
60
+ {
61
+ if ($this->_status == self::NOT_STARTED) {
62
+ switch ($char) {
63
+ case Unserialize_Parser::TYPE_STRING:
64
+ $this->_reader = new Unserialize_Reader_Str();
65
+ $this->_status = self::READING_KEY;
66
+ break;
67
+ case Unserialize_Parser::TYPE_INT:
68
+ $this->_reader = new Unserialize_Reader_Int();
69
+ $this->_status = self::READING_KEY;
70
+ break;
71
+ default:
72
+ throw new Exception('Unsupported data type ' . $char);
73
+ }
74
+ }
75
+
76
+ if ($this->_status == self::READING_KEY) {
77
+ $key = $this->_reader->read($char, $prevChar);
78
+ if (!is_null($key)) {
79
+ return $key;
80
+ }
81
+ }
82
+ return null;
83
+ }
84
+ }
lib/Unserialize/Reader/ArrValue.php ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category Unserialize
22
+ * @package Unserialize_Reader
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Class Unserialize_Reader_ArrValue
29
+ */
30
+ class Unserialize_Reader_ArrValue
31
+ {
32
+
33
+ /**
34
+ * @var
35
+ */
36
+ public $key;
37
+
38
+ /**
39
+ * @var int
40
+ */
41
+ protected $_status;
42
+
43
+ /**
44
+ * @object
45
+ */
46
+ protected $_reader;
47
+
48
+ const NOT_STARTED = 1;
49
+ const READING_VALUE = 2;
50
+
51
+ public function __construct($key)
52
+ {
53
+ $this->_status = self::NOT_STARTED;
54
+ $this->key = $key;
55
+ }
56
+
57
+ /**
58
+ * @param string $char
59
+ * @param string $prevChar
60
+ * @return mixed|null
61
+ * @throws Exception
62
+ */
63
+ public function read($char, $prevChar)
64
+ {
65
+ if ($this->_status == self::NOT_STARTED) {
66
+ switch ($char) {
67
+ case Unserialize_Parser::TYPE_STRING:
68
+ $this->_reader = new Unserialize_Reader_Str();
69
+ $this->_status = self::READING_VALUE;
70
+ break;
71
+ case Unserialize_Parser::TYPE_ARRAY:
72
+ $this->_reader = new Unserialize_Reader_Arr();
73
+ $this->_status = self::READING_VALUE;
74
+ break;
75
+ case Unserialize_Parser::TYPE_INT:
76
+ $this->_reader = new Unserialize_Reader_Int();
77
+ $this->_status = self::READING_VALUE;
78
+ break;
79
+ case Unserialize_Parser::TYPE_BOOL:
80
+ $this->_reader = new Unserialize_Reader_Bool();
81
+ $this->_status = self::READING_VALUE;
82
+ break;
83
+ case Unserialize_Parser::TYPE_DOUBLE:
84
+ $this->_reader = new Unserialize_Reader_Dbl();
85
+ $this->_status = self::READING_VALUE;
86
+ break;
87
+ default:
88
+ throw new Exception('Unsupported data type ' . $char);
89
+ }
90
+ }
91
+
92
+ if ($this->_status == self::READING_VALUE) {
93
+ $value = $this->_reader->read($char, $prevChar);
94
+ if (!is_null($value)) {
95
+ return $value;
96
+ }
97
+ }
98
+ return null;
99
+ }
100
+ }
lib/Unserialize/Reader/Bool.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category Unserialize
22
+ * @package Unserialize_Reader
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Class Unserialize_Reader_Int
29
+ */
30
+ class Unserialize_Reader_Bool
31
+ {
32
+ /**
33
+ * @var int
34
+ */
35
+ protected $_status;
36
+
37
+ /**
38
+ * @var string|int
39
+ */
40
+ protected $_value;
41
+
42
+ const READING_VALUE = 1;
43
+
44
+ /**
45
+ * @param string $char
46
+ * @param string $prevChar
47
+ * @return int|null
48
+ */
49
+ public function read($char, $prevChar)
50
+ {
51
+ if ($prevChar == Unserialize_Parser::SYMBOL_COLON) {
52
+ $this->_value .= $char;
53
+ $this->_status = self::READING_VALUE;
54
+ return null;
55
+ }
56
+
57
+ if ($this->_status == self::READING_VALUE) {
58
+ if ($char !== Unserialize_Parser::SYMBOL_SEMICOLON) {
59
+ $this->_value .= $char;
60
+ } else {
61
+ return (bool)$this->_value;
62
+ }
63
+ }
64
+ return null;
65
+ }
66
+ }
lib/Unserialize/Reader/Dbl.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category Unserialize
22
+ * @package Unserialize_Reader
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Class Unserialize_Reader_Dbl
29
+ */
30
+ class Unserialize_Reader_Dbl
31
+ {
32
+ /**
33
+ * @var int
34
+ */
35
+ protected $_status;
36
+
37
+ /**
38
+ * @var string|int
39
+ */
40
+ protected $_value;
41
+
42
+ const READING_VALUE = 1;
43
+
44
+ /**
45
+ * @param string $char
46
+ * @param string $prevChar
47
+ * @return float|null
48
+ */
49
+ public function read($char, $prevChar)
50
+ {
51
+ if ($prevChar == Unserialize_Parser::SYMBOL_COLON) {
52
+ $this->_value .= $char;
53
+ $this->_status = self::READING_VALUE;
54
+ return null;
55
+ }
56
+
57
+ if ($this->_status == self::READING_VALUE) {
58
+ if ($char !== Unserialize_Parser::SYMBOL_SEMICOLON) {
59
+ $this->_value .= $char;
60
+ } else {
61
+ return (float)$this->_value;
62
+ }
63
+ }
64
+ return null;
65
+ }
66
+ }
lib/Unserialize/Reader/Int.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category Unserialize
22
+ * @package Unserialize_Reader
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Class Unserialize_Reader_Int
29
+ */
30
+ class Unserialize_Reader_Int
31
+ {
32
+ /**
33
+ * @var int
34
+ */
35
+ protected $_status;
36
+
37
+ /**
38
+ * @var string|int
39
+ */
40
+ protected $_value;
41
+
42
+ const READING_VALUE = 1;
43
+
44
+ /**
45
+ * @param string $char
46
+ * @param string $prevChar
47
+ * @return int|null
48
+ */
49
+ public function read($char, $prevChar)
50
+ {
51
+ if ($prevChar == Unserialize_Parser::SYMBOL_COLON) {
52
+ $this->_value .= $char;
53
+ $this->_status = self::READING_VALUE;
54
+ return null;
55
+ }
56
+
57
+ if ($this->_status == self::READING_VALUE) {
58
+ if ($char !== Unserialize_Parser::SYMBOL_SEMICOLON) {
59
+ $this->_value .= $char;
60
+ } else {
61
+ return (int)$this->_value;
62
+ }
63
+ }
64
+ return null;
65
+ }
66
+ }
lib/Unserialize/Reader/Str.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category Unserialize
22
+ * @package Unserialize_Reader
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+
27
+ /**
28
+ * Class Unserialize_Reader_Str
29
+ */
30
+ class Unserialize_Reader_Str
31
+ {
32
+ /**
33
+ * @var int|null
34
+ */
35
+ protected $_status = null;
36
+
37
+ /**
38
+ * @var int|string
39
+ */
40
+ protected $_length;
41
+
42
+ /**
43
+ * @var string
44
+ */
45
+ protected $_value;
46
+
47
+ const READING_LENGTH = 1;
48
+ const FINISHED_LENGTH = 2;
49
+ const READING_VALUE = 3;
50
+
51
+ /**
52
+ * @param string $char
53
+ * @param string $prevChar
54
+ * @return null|string
55
+ */
56
+ public function read($char, $prevChar)
57
+ {
58
+
59
+ if (is_null($this->_status) && $prevChar == Unserialize_Parser::SYMBOL_COLON) {
60
+ $this->_status = self::READING_LENGTH;
61
+ }
62
+
63
+ if ($this->_status == self::READING_LENGTH) {
64
+ if ($char != Unserialize_Parser::SYMBOL_COLON) {
65
+ $this->_length .= $char;
66
+ } else {
67
+ $this->_length = (int)$this->_length;
68
+ $this->_status = self::FINISHED_LENGTH;
69
+ }
70
+ }
71
+
72
+ if ($this->_status == self::FINISHED_LENGTH) {
73
+ if ($char == Unserialize_Parser::SYMBOL_QUOTE) {
74
+ $this->_status = self::READING_VALUE;
75
+ return null;
76
+ }
77
+ }
78
+
79
+ if ($this->_status == self::READING_VALUE) {
80
+ if (strlen($this->_value) < $this->_length) {
81
+ $this->_value .= $char;
82
+ return null;
83
+ }
84
+
85
+ if (strlen($this->_value) == $this->_length) {
86
+ if ($char == Unserialize_Parser::SYMBOL_SEMICOLON && $prevChar == Unserialize_Parser::SYMBOL_QUOTE) {
87
+ return (string)$this->_value;
88
+ }
89
+ }
90
+ }
91
+ return null;
92
+ }
93
+ }
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Lib_Unserialize</name>
4
+ <version>1.9.2.2</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/osl-3.0.php">Magento Core Edition</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Magento Library</summary>
10
+ <description>Magento Library</description>
11
+ <notes>1.9.2.2</notes>
12
+ <authors><author><name>Magento Core Team</name><user>core</user><email>core@magentocommerce.com</email></author></authors>
13
+ <date>2015-10-27</date>
14
+ <time>13:46:56</time>
15
+ <contents><target name="magelib"><dir name="Unserialize"><file name="Parser.php" hash="7835b3655ea5b783451276a9446b2843"/><dir name="Reader"><file name="Arr.php" hash="3f06ce392f46e52c45cf9bd5ac2f43f4"/><file name="ArrKey.php" hash="226d8c46536217932fb24a1523b88923"/><file name="ArrValue.php" hash="eee99ce7d0335308fed8c12c9002cf07"/><file name="Bool.php" hash="c90a70f55b17252c5879b7ebed0496d9"/><file name="Dbl.php" hash="4140ef1d60de478a7db78e8b1ec8b933"/><file name="Int.php" hash="a44f11eaf40b5e4ab95ed2044b434bc4"/><file name="Str.php" hash="6055df0311d20fb8343665022885adf5"/></dir></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
+ </package>