diff --git a/admin/check/check_database_inc.php b/admin/check/check_database_inc.php
index 4c3309221a..e43eab38cb 100644
--- a/admin/check/check_database_inc.php
+++ b/admin/check/check_database_inc.php
@@ -183,24 +183,90 @@
)
);
- check_print_test_row(
- 'Version of MySQL being used is within the MySQL extended lifecycle period',
- version_compare( $t_database_server_info['version'], '5.0', '>=' ),
- array(
- true => 'Extended lifecycle support ends on 2011-12-31 for MySQL 5.0 and on 2013-12-31 for MySQL 5.1.',
- false => 'The version of MySQL you are using is ' . htmlentities( $t_database_server_info['version'] ) . '. This version is no longer supported and should not be used as security flaws discovered in this version will not be fixed.'
- )
- );
+$t_date_format = config_get( 'short_date_format' );
- check_print_test_warn_row(
- 'Version of MySQL being used is within the MySQL active lifecycle period',
- version_compare( $t_database_server_info['version'], '5.1', '>=' ),
- array(
- true => 'Active lifecycle support ends on 2010-12-31 for MySQL 5.1.',
- false => 'The version of MySQL you are using is ' . htmlentities( $t_database_server_info['version'] ) . '. It is recommended you use a newer version of MySQL still within the active lifecycle period.'
- )
+# MySQL support checking
+if( db_is_mysql() ) {
+ # Note: the MySQL lifecycle page [1] is no longer available.
+ # The list below was built based on information found in [2].
+ # [1] http://www.mysql.com/about/legal/lifecycle/
+ # [2] http://dev.mysql.com/doc/refman/5.7/en/faqs-general.html#qandaitem-B-1-1-1
+ $t_versions = array(
+ # Series >= Type, GA status, GA date
+ '5.0' => array( 'GA', '5.0.15', '2005-10-19' ),
+ '5.1' => array( 'GA', '5.1.30', '2008-11-14' ),
+ '5.4' => array( 'Discontinued' ),
+ '5.5' => array( 'GA', '5.5.8', '2010-12-03' ),
+ '5.6' => array( 'GA', '5.6.10', '2013-02-05' ),
+ '5.7' => array( 'Development' ),
+ '6.0' => array( 'Discontinued' ),
);
-
+ $t_support_url = 'http://www.mysql.com/support/';
+
+ # Is it a GA release
+ $t_mysql_ga_release = false;
+ $t_date_premier_end = $t_date_extended_end = null;
+ if( !array_key_exists( $t_db_major_version, $t_versions ) ) {
+ check_print_test_warn_row(
+ 'MySQL Lifecycle and Release Support data availability',
+ false,
+ array(
+ false => 'Release information for MySQL ' . $t_db_major_version
+ . ' series is not available, unable to perform the lifecycle checks.'
+ )
+ );
+ } else {
+ if( 'GA' == $t_versions[$t_db_major_version][0] ) {
+ $t_mysql_ga_release = version_compare( $t_database_server_info['version'], $t_versions[$t_db_major_version][1], '>=' );
+ # Support end-dates as per http://www.mysql.com/support/
+ $t_date_ga = new DateTime( $t_versions[$t_db_major_version][2] );
+ $t_date_premier_end = $t_date_ga->add( new DateInterval( 'P5Y' ) )->format( $t_date_format );
+ $t_date_extended_end = $t_date_ga->add( new DateInterval( 'P3Y' ) )->format( $t_date_format );
+ } else {
+ $t_mysql_ga_release = false;
+ $t_date_premier_end = $t_date_extended_end = null;
+ }
+ check_print_test_row(
+ 'MySQL version is a General Availability (GA) release',
+ $t_mysql_ga_release,
+ array(
+ true => 'You are using MySQL version ' . htmlentities( $t_db_version ) . '.',
+ false => 'The version of MySQL you are using is '
+ . htmlentities( $t_db_version )
+ . '. This is a development or pre-GA version which '
+ . ( $t_versions[$t_db_major_version][0] == 'Discontinued' ? 'has been discontinued and ' : '' )
+ . 'is not recommended for Production use. You should upgrade to a supported GA release.'
+ )
+ );
+
+ # Within lifecycle 'Extended' support
+ check_print_test_row(
+ 'MySQL version is within the Extended Support period (GA + 8 years)',
+ date_create( $t_date_extended_end ) > date_create( 'now' ),
+ array(
+ true => "Extended support for MySQL $t_db_major_version series ends on " . $t_date_extended_end,
+ false => 'Support for the release of MySQL you are using ('
+ . htmlentities( $t_db_version )
+ . ') ended on ' . $t_date_extended_end
+ . '. It should not be used, as security flaws discovered in this version will not be fixed.'
+ )
+ );
+
+ # Within lifecycle 'Premier' support
+ check_print_test_warn_row(
+ 'Version of MySQL being used is within the Premier Support period (GA + 5 years)',
+ date_create( $t_date_premier_end ) > date_create( 'now' ),
+ array(
+ true => "Premier support for MySQL $t_db_major_version series ends on " . $t_date_premier_end,
+ false => 'Premier Support for the release of MySQL you are using ('
+ . htmlentities( $t_db_version )
+ . ') ended on ' . $t_date_premier_end
+ . '. The release is in its Extended support period, which ends on '
+ . $t_date_extended_end
+ . '. You should upgrade to a newer version of MySQL which is still within its Premier support period to benefit from bug fixes and security patches.'
+ )
+ );
+ }
}
if( db_is_pgsql() ) {