PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.19
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.19
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
← All changes | classes/helpers/FrmSerializedStringParserHelper.php +2 -51 6.356.19 View file →
@@ -37,61 +37,18 @@
37 37 * Parse a string containing a serialized data structure.
38 38 * This is the initial entry point into the recursive parser.
39 39 *
40 40 * @param string $string
41 - *
42 41 * @return mixed
43 42 */
44 43 public function parse( $string ) {
45 - $unserialized_data = $this->do_parse( new FrmStringReaderHelper( $string ) );
46 -
47 - if ( is_array( $unserialized_data ) && $this->serialized_string_is_invalid( $string ) ) {
48 - return array_filter( $unserialized_data, array( $this, 'serialized_value_is_valid' ) );
49 - }
50 -
51 - return $unserialized_data;
44 + return $this->do_parse( new FrmStringReaderHelper( $string ) );
52 45 }
53 46
54 47 /**
55 - * Check if an unserialized value is valid.
56 - *
57 - * @since 6.20
58 - *
59 - * @param mixed $value
60 - *
61 - * @return bool
62 - */
63 - private function serialized_value_is_valid( $value ) {
64 - return ! is_string( $value ) || ! str_contains( $value, ';s:' );
65 - }
66 -
67 - /**
68 - * @since 6.20
69 - *
70 - * @param string $string
71 - *
72 - * @return bool
73 - */
74 - private function serialized_string_is_invalid( $string ) {
75 - $invalid_substrings = array(
76 - ';s:10:\"a"',
77 - ';s:";',
78 - );
79 -
80 - foreach ( $invalid_substrings as $invalid ) {
81 - if ( str_contains( $string, $invalid ) ) {
82 - return true;
83 - }
84 - }
85 -
86 - return false;
87 - }
88 -
89 - /**
90 48 * This is the recursive parser.
91 49 *
92 50 * @param FrmStringReaderHelper $string
93 - *
94 51 * @return array|bool|float|int|string|null
95 52 */
96 53 private function do_parse( $string ) {
97 54 // May be : or ; as a terminator, depending on what the data type is.
@@ -121,9 +78,8 @@
121 78 }
122 79
123 80 /**
124 81 * @param FrmStringReaderHelper $string
125 - *
126 82 * @return array
127 83 */
128 84 private function parse_array( $string ) {
129 85 // Associative array: a:length:{[index][value]...}
@@ -132,14 +88,13 @@
132 88 // Eat the opening "{" of the array.
133 89 $string->skip_next_character();
134 90
135 91 $val = array();
136 -
137 92 for ( $i = 0; $i < $count; $i++ ) {
138 93 $array_key = $this->do_parse( $string );
139 94 $array_value = $this->do_parse( $string );
140 95
141 - if ( ! is_array( $array_key ) && null !== $array_key ) {
96 + if ( ! is_array( $array_key ) ) {
142 97 $val[ $array_key ] = $array_value;
143 98 }
144 99 }
145 100
@@ -150,9 +105,8 @@
150 105 }
151 106
152 107 /**
153 108 * @param FrmStringReaderHelper $string
154 - *
155 109 * @return string
156 110 */
157 111 private function parse_string( $string ) {
158 112 $len = (int) $string->read_until( ':' );
@@ -165,9 +119,8 @@
165 119 }
166 120
167 121 /**
168 122 * @param FrmStringReaderHelper $string
169 - *
170 123 * @return int
171 124 */
172 125 private function parse_int( $string ) {
173 126 return (int) $string->read_until( ';' );
@@ -174,9 +127,8 @@
174 127 }
175 128
176 129 /**
177 130 * @param FrmStringReaderHelper $string
178 - *
179 131 * @return float
180 132 */
181 133 private function parse_float( $string ) {
182 134 return (float) $string->read_until( ';' );
@@ -183,9 +135,8 @@
183 135 }
184 136
185 137 /**
186 138 * @param FrmStringReaderHelper $string
187 - *
188 139 * @return bool
189 140 */
190 141 private function parse_bool( $string ) {
191 142 // Boolean is 0 or 1.