From 6903d5318c40f834e3782fdff5986eec993c6aca Mon Sep 17 00:00:00 2001 From: Christian Uhl Date: Tue, 9 Aug 2016 10:06:58 +0000 Subject: [PATCH] First working commit --- administrator/components/com_admin/script.php | 2 +- .../sql/others/mysql/nullDate-conversion.sql | 4 ++-- installation/model/database.php | 5 +++++ libraries/joomla/database/driver/mysqli.php | 4 ++-- libraries/joomla/database/driver/pdomysql.php | 15 +++++++++++++++ 5 files changed, 25 insertions(+), 5 deletions(-) diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 491c93172a85e..f413c1372a2ff 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -1759,7 +1759,7 @@ public function convertTablesToNewNullDate($newNull=null,$oldNull=null) { foreach ($queries as $query) { - $query = str_replace(array('#O#','#T#'), array($oldNull,$newNull), $query); + $query = str_replace(array('$O$','$T$'), array("'".$oldNull."'","'".$newNull."'"), $query); try { diff --git a/administrator/components/com_admin/sql/others/mysql/nullDate-conversion.sql b/administrator/components/com_admin/sql/others/mysql/nullDate-conversion.sql index 5f61feda1ef6c..671a709418fad 100644 --- a/administrator/components/com_admin/sql/others/mysql/nullDate-conversion.sql +++ b/administrator/components/com_admin/sql/others/mysql/nullDate-conversion.sql @@ -1,2 +1,2 @@ -ALTER TABLE `#__nullDate_conversion` CHANGE `converted` `converted` datetime NOT NULL DEFAULT #T#; -UPDATE `#__nullDate_conversion` SET converted = #T#; +ALTER TABLE `#__nullDate_conversion` CHANGE `converted` `converted` datetime NOT NULL DEFAULT $T$; +UPDATE `#__nullDate_conversion` SET `converted` = $T$; diff --git a/installation/model/database.php b/installation/model/database.php index bb13599e66423..6d9c29ecda91a 100755 --- a/installation/model/database.php +++ b/installation/model/database.php @@ -652,6 +652,11 @@ public function createTables($options) } } + // Do the nullDate Conversion + JLoader::register('JoomlaInstallerScript', JPATH_ADMINISTRATOR . '/components/com_admin/script.php'); + $jinstallscript = new JoomlaInstallerScript; + $jinstallscript->convertTablesToNewNullDate(); + // Handle default backend language setting. This feature is available for localized versions of Joomla. $app = JFactory::getApplication(); $languages = $app->getLocaliseAdmin($db); diff --git a/libraries/joomla/database/driver/mysqli.php b/libraries/joomla/database/driver/mysqli.php index 2213e224dfcc9..ffa50c53b7e86 100644 --- a/libraries/joomla/database/driver/mysqli.php +++ b/libraries/joomla/database/driver/mysqli.php @@ -988,10 +988,10 @@ private function serverClaimsUtf8mb4Support() * * @since 12.2 */ - private function serverUsesNewNullTime() + public function serverUsesNewNullTime() { $server_version = $this->getVersion(); - return (version_compare($server_version, '5.7.0', '>=')); + return version_compare($server_version, '5.7.0', '>='); } /** diff --git a/libraries/joomla/database/driver/pdomysql.php b/libraries/joomla/database/driver/pdomysql.php index ed1015ef9c1f1..f812f0db9303a 100644 --- a/libraries/joomla/database/driver/pdomysql.php +++ b/libraries/joomla/database/driver/pdomysql.php @@ -165,6 +165,21 @@ public static function isSupported() { return class_exists('PDO') && in_array('mysql', PDO::getAvailableDrivers()); } + + /** + * Does the database server uses the new null time (1000-01-01 00:00:00) instead of the old one (0000-00-00 00:00:00) + * + * libmysql uses the new null time since 5.7 (same version as the MySQL server). + * + * @return boolean + * + * @since 12.2 + */ + public function serverUsesNewNullTime() + { + return ($this->nullDate == "1000-01-01 00:00:00"); + } + /** * Drops a table from the database.