| @@ -207,9 +207,9 @@ | ||
| 207 | 207 | case 'number': |
| 208 | 208 | $data[ $i ] = ( is_numeric( $data[ $i ] ) ) ? floatval( $data[ $i ] ) : ( is_numeric( str_replace( ',', '', $data[ $i ] ) ) ? floatval( str_replace( ',', '', $data[ $i ] ) ) : null ); |
| 209 | 209 | break; |
| 210 | 210 | case 'boolean': |
| 211 | - $data[ $i ] = ! empty( $data[ $i ] ) ? filter_validate( $data[ $i ], FILTER_VALIDATE_BOOLEAN ) : null; | |
| 211 | + $data[ $i ] = ! empty( $data[ $i ] ) ? filter_var( $data[ $i ], FILTER_VALIDATE_BOOLEAN ) : null; | |
| 212 | 212 | break; |
| 213 | 213 | case 'timeofday': |
| 214 | 214 | $date = new DateTime( '1984-03-16T' . $data[ $i ] ); |
| 215 | 215 | if ( $date ) { |
| @@ -221,9 +221,9 @@ | ||
| 221 | 221 | ); |
| 222 | 222 | } |
| 223 | 223 | break; |
| 224 | 224 | case 'string': |
| 225 | - $data[ $i ] = utf8_encode( $data[ $i ] ); | |
| 225 | + $data[ $i ] = $this->toUTF8( $data[ $i ] ); | |
| 226 | 226 | break; |
| 227 | 227 | } |
| 228 | 228 | } |
| 229 | 229 | |
| @@ -228,7 +228,24 @@ | ||
| 228 | 228 | } |
| 229 | 229 | |
| 230 | 230 | // error_log(print_r($data,true)); |
| 231 | 231 | return $data; |
| 232 | + } | |
| 233 | + | |
| 234 | + | |
| 235 | + /** | |
| 236 | + * Converts values to UTF8, if required. | |
| 237 | + * | |
| 238 | + * @access protected | |
| 239 | + * | |
| 240 | + * @param string $datum The data to convert. | |
| 241 | + * | |
| 242 | + * @return string The converted data. | |
| 243 | + */ | |
| 244 | + protected final function toUTF8( $datum ) { | |
| 245 | + if ( ! function_exists( 'mb_detect_encoding' ) || mb_detect_encoding( $datum ) !== 'ASCII' ) { | |
| 246 | + $datum = \ForceUTF8\Encoding::toUTF8( $datum ); | |
| 247 | + } | |
| 248 | + return $datum; | |
| 232 | 249 | } |
| 233 | 250 | |
| 234 | 251 | } |