From: skodak Date: Tue, 13 Jan 2009 09:04:09 +0000 (+0000) Subject: MDL-17868 detection of incorrect hadnling of floats in version numbers - this should... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=61f9c4b4f4f72a6fc5ea4208b3db7b935ccdbb97;p=moodle.git MDL-17868 detection of incorrect hadnling of floats in version numbers - this should prevent dataloss in case it does not work as expected; merged from MOODLE_19_STABLE --- diff --git a/admin/index.php b/admin/index.php index 8ea7f8cfa3..8c02f468f4 100644 --- a/admin/index.php +++ b/admin/index.php @@ -44,6 +44,10 @@ print_error('phpvaron', 'debug', '', (object)array('name'=>'file_uploads', 'link'=>$documentationlink)); } + if (is_float_problem()) { + print_error('phpfloatproblem', 'admin', '', $documentationlink); + } + /// Check that config.php has been edited if ($CFG->wwwroot == "http://example.com/moodle") { diff --git a/lang/en_utf8/admin.php b/lang/en_utf8/admin.php index 1f6d2f482a..38087191a1 100644 --- a/lang/en_utf8/admin.php +++ b/lang/en_utf8/admin.php @@ -600,6 +600,7 @@ $string['performance'] = 'Performance'; $string['pgcluster'] = 'PostgreSQL Cluster'; $string['pgclusterdescription'] = 'PostgreSQL version/cluster parameter for command line operations. If you only have one postgresql on your system or you are not sure what this is, leave this blank.'; $string['php50restricted'] = 'PHP 5.0.x has a number of known problems, please upgrade to 5.1.x or downgrade to 4.3.x or 4.4.x'; +$string['phpfloatproblem'] = 'Detected unexpected problem in handling of PHP float numbers - $a'; $string['pleaseregister'] = 'Please register your site to remove this button'; $string['pleaserefreshregistration'] = 'Your site has been registered with moodle.org, please consider updating the registration if significant changes happened since your last update, on $a'; $string['plugins'] = 'Plugins'; diff --git a/lib/adminlib.php b/lib/adminlib.php index d913944a03..753d2ae733 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -954,6 +954,18 @@ function admin_critical_warnings_present() { return $SESSION->admin_critical_warning; } +/** + * Detects if float support at least 10 deciman digits + * and also if float-->string conversion works as expected. + * @return bool true if problem found + */ +function is_float_problem() { + $num1 = 2009010200.01; + $num2 = 2009010200.02; + + return ((string)$num1 === (string)$num2 or $num1 === $num2 or $num2 <= (string)$num1); +} + /** * Try to verify that dataroot is not accessible from web. * It is not 100% correct but might help to reduce number of vulnerable sites.