From a924900d5279ec9ec2c50ea36ddedddd53e88fcd Mon Sep 17 00:00:00 2001 From: jmontoyaa Date: Mon, 6 Feb 2017 15:11:32 +0100 Subject: [PATCH] Use api_float_val and api_number_format to handle float convertions See BT#12133 --- main/gradebook/gradebook_edit_link.php | 2 +- main/gradebook/gradebook_edit_result.php | 4 +-- main/gradebook/gradebook_view_result.php | 4 +-- main/gradebook/lib/GradebookUtils.php | 2 +- main/gradebook/lib/be/category.class.php | 7 ++--- main/gradebook/lib/be/evaluation.class.php | 2 +- main/gradebook/lib/fe/displaygradebook.php | 3 +- main/gradebook/lib/scoredisplay.class.php | 2 +- main/inc/lib/api.lib.php | 35 +++++++--------------- 9 files changed, 21 insertions(+), 40 deletions(-) diff --git a/main/gradebook/gradebook_edit_link.php b/main/gradebook/gradebook_edit_link.php index e1ba9e6b5a..9bf0000c86 100755 --- a/main/gradebook/gradebook_edit_link.php +++ b/main/gradebook/gradebook_edit_link.php @@ -70,7 +70,7 @@ if ($form->validate()) { $row_attendance = Database::fetch_array($rs_attendance); $attendance_id = $row_attendance['ref_id']; $sql = 'UPDATE '.$tbl_attendance.' SET - attendance_weight ='.floatval($final_weight).' + attendance_weight ='.api_float_val($final_weight).' WHERE c_id = '.$course_id.' AND id = '.intval($attendance_id); Database::query($sql); } diff --git a/main/gradebook/gradebook_edit_result.php b/main/gradebook/gradebook_edit_result.php index a269dcc942..db5c2aeb99 100755 --- a/main/gradebook/gradebook_edit_result.php +++ b/main/gradebook/gradebook_edit_result.php @@ -29,10 +29,10 @@ if ($edit_result_form->validate()) { $values = $edit_result_form->exportValues(); $scores = ($values['score']); foreach ($scores as $row) { - $resultedit = Result :: load (key($scores)); + $resultedit = Result:: load(key($scores)); $row_value = $row; if ($row_value != '' ) { - $resultedit[0]->set_score(floatval(number_format($row_value, api_get_setting('gradebook_number_decimals')))); + $resultedit[0]->set_score(api_number_format($row_value, api_get_setting('gradebook_number_decimals'))); $resultedit[0]->save(); } next($scores); diff --git a/main/gradebook/gradebook_view_result.php b/main/gradebook/gradebook_view_result.php index aabc54e4bf..ea3d469d8f 100755 --- a/main/gradebook/gradebook_view_result.php +++ b/main/gradebook/gradebook_view_result.php @@ -75,7 +75,7 @@ if (isset($_GET['editres'])) { $result->set_evaluation_id($select_eval); $row_value = isset($values['score']) ? (float) $values['score'] : 0; if (!empty($row_value) || $row_value == 0) { - $result->set_score(floatval(number_format($row_value, api_get_setting('gradebook_number_decimals')))); + $result->set_score(api_number_format($row_value, api_get_setting('gradebook_number_decimals'))); } $result->save(); unset($result); @@ -162,7 +162,7 @@ if (isset($_GET['import'])) { $result = new Result(); $result->set_user_id($importedresult['user_id']); if (!empty($importedresult['score'])) { - $result->set_score(floatval(number_format($importedresult['score'], api_get_setting('gradebook_number_decimals')))); + $result->set_score(api_number_format($importedresult['score'], api_get_setting('gradebook_number_decimals'))); } if (!empty($importedresult['date'])) { $result->set_date(api_get_utc_datetime($importedresult['date'])); diff --git a/main/gradebook/lib/GradebookUtils.php b/main/gradebook/lib/GradebookUtils.php index dbff8221df..484cf2fbe0 100644 --- a/main/gradebook/lib/GradebookUtils.php +++ b/main/gradebook/lib/GradebookUtils.php @@ -1152,7 +1152,7 @@ class GradebookUtils public static function updateLinkWeight($linkId, $name, $weight) { $linkId = intval($linkId); - $weight = floatval($weight); + $weight = api_float_val($weight); $course_id = api_get_course_int_id(); AbstractLink::add_link_log($linkId, $name); diff --git a/main/gradebook/lib/be/category.class.php b/main/gradebook/lib/be/category.class.php index 9336d7d1cd..dbbb81ae01 100755 --- a/main/gradebook/lib/be/category.class.php +++ b/main/gradebook/lib/be/category.class.php @@ -2254,11 +2254,8 @@ class Category implements GradebookItem $courseEvaluations = $category->get_evaluations($userId, true); $courseLinks = $category->get_links($userId, true); - $evaluationsAndLinks = array_merge($courseEvaluations, $courseLinks); - $categoryScore = 0; - for ($i = 0; $i < count($evaluationsAndLinks); $i++) { $item = $evaluationsAndLinks[$i]; $score = $item->calc_score($userId); @@ -2272,7 +2269,7 @@ class Category implements GradebookItem $categoryScore += $itemValue; } - return floatval($categoryScore); + return api_float_val($categoryScore); } /** @@ -2289,7 +2286,7 @@ class Category implements GradebookItem [ 'category_id' => intval($categoryId), 'user_id' => intval($userId), - 'score' => floatval($score), + 'score' => api_float_val($score), 'registered_at' => api_get_utc_datetime() ] ); diff --git a/main/gradebook/lib/be/evaluation.class.php b/main/gradebook/lib/be/evaluation.class.php index ee2e172d0a..0325858998 100755 --- a/main/gradebook/lib/be/evaluation.class.php +++ b/main/gradebook/lib/be/evaluation.class.php @@ -329,7 +329,7 @@ class Evaluation implements GradebookItem $sql .= ',type'; $sql .= ") VALUES ('".Database::escape_string($this->get_name())."'" .','.intval($this->get_user_id()) - .','.floatval($this->get_weight()) + .','.api_float_val($this->get_weight()) .','.intval($this->get_max()) .','.intval($this->is_visible()); if (isset($this->description)) { diff --git a/main/gradebook/lib/fe/displaygradebook.php b/main/gradebook/lib/fe/displaygradebook.php index 8c7308f7d6..bd4036ec59 100755 --- a/main/gradebook/lib/fe/displaygradebook.php +++ b/main/gradebook/lib/fe/displaygradebook.php @@ -528,11 +528,10 @@ class DisplayGradebook $item_value+=$score[0] / $my_score_denom * $item->get_weight(); $item_total+=$item->get_weight(); } - $item_value = number_format($item_value, 2, '.', ' '); + $item_value = api_number_format($item_value, 2); $total_score = array($item_value, $item_total); $scorecourse_display = $scoredisplay->display_score($total_score, SCORE_DIV_PERCENT); - //$scorecourse_display = (isset($scorecourse) ? $scoredisplay->display_score($scorecourse,SCORE_AVERAGE) : get_lang('NoResultsAvailable')); $cattotal = Category :: load(0); $scoretotal = $cattotal[0]->calc_score($user_id); $scoretotal_display = (isset($scoretotal) ? $scoredisplay->display_score($scoretotal, SCORE_PERCENT) : get_lang('NoResultsAvailable')); diff --git a/main/gradebook/lib/scoredisplay.class.php b/main/gradebook/lib/scoredisplay.class.php index 7812e50845..5f8e136049 100755 --- a/main/gradebook/lib/scoredisplay.class.php +++ b/main/gradebook/lib/scoredisplay.class.php @@ -281,7 +281,7 @@ class ScoreDisplay */ public function format_score($score) { - return floatval(number_format($score, $this->get_number_decimals())); + return api_number_format($score, $this->get_number_decimals()); } /** diff --git a/main/inc/lib/api.lib.php b/main/inc/lib/api.lib.php index 54188f977c..1aa5f74849 100644 --- a/main/inc/lib/api.lib.php +++ b/main/inc/lib/api.lib.php @@ -8034,26 +8034,19 @@ function api_remove_uploaded_file($type, $file) } /** - * Converts values to float value + * Converts string value to float value * * 3.141516 => 3.141516 * 3,141516 => 3.141516 * @todo WIP * - * @param $number - * @return false|float|int|mixed + * @param string $number + * @return float */ -function api_parse_float_val($number) +function api_float_val($number) { - if (INTL_INSTALLED) { - $iso = api_get_language_isocode(); - $iso = 'fr'; - $formatter = new NumberFormatter($iso, NumberFormatter::DECIMAL); - - return $formatter->parse($number); - } else { - return floatval($number); - } + $number = (float) str_replace(',', '.', trim($number)); + return $number; } /** @@ -8071,15 +8064,7 @@ function api_parse_float_val($number) */ function api_number_format($number, $decimals = 0) { - if (INTL_INSTALLED) { - $iso = api_get_language_isocode(); - $iso = 'fr'; - $formatter = new NumberFormatter($iso, NumberFormatter::DECIMAL); - $formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, $decimals); - $formatter->setAttribute(NumberFormatter::GROUPING_SEPARATOR_SYMBOL, ''); - - return $formatter->format($number); - } else { - return number_format($number, $decimals); - } -} \ No newline at end of file + $number = api_float_val($number); + + return number_format($number, $decimals); +}