diff --git a/modules/calendar.php b/modules/calendar.php index 3c34619e..82813f6f 100644 --- a/modules/calendar.php +++ b/modules/calendar.php @@ -712,15 +712,17 @@ class calendar extends module_base } /** - * Unserialize links array - * - * @param string $serial_str Serialized string - * - * @return array Unserialized array - */ - protected function utf_unserialize($serial_str) + * Unserialize links array + * + * @param string $serial_str Serialized string + * + * @return array Unserialized string + */ + private function utf_unserialize($serial_str) { - $out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str ); + $out = preg_replace_callback('!s:(\d+):"(.*?)";!s', function ($result) { + return 's:' . strlen($result[2]) . ":\"{$result[2]}\";"; + }, $serial_str); return unserialize($out); } diff --git a/modules/links.php b/modules/links.php index 96eea0d5..2db14e1c 100644 --- a/modules/links.php +++ b/modules/links.php @@ -462,15 +462,17 @@ class links extends module_base } /** - * Unserialize links array - * - * @param string $serial_str Serialized string - * - * @return array Unserialized string - */ + * Unserialize links array + * + * @param string $serial_str Serialized string + * + * @return array Unserialized string + */ private function utf_unserialize($serial_str) { - $out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str); + $out = preg_replace_callback('!s:(\d+):"(.*?)";!s', function ($result) { + return 's:' . strlen($result[2]) . ":\"{$result[2]}\";"; + }, $serial_str); return unserialize($out); } } diff --git a/modules/main_menu.php b/modules/main_menu.php index 3c833348..d533ee12 100644 --- a/modules/main_menu.php +++ b/modules/main_menu.php @@ -526,12 +526,12 @@ class main_menu extends module_base } /** - * Unserialize links array - * - * @param string $serial_str Serialized string - * - * @return array Unserialized string - */ + * Unserialize links array + * + * @param string $serial_str Serialized string + * + * @return array Unserialized string + */ private function utf_unserialize($serial_str) { $out = preg_replace_callback('!s:(\d+):"(.*?)";!s', function ($result) {