Use api_float_val and api_number_format to handle float convertions

See BT#12133
pull/2487/head
jmontoyaa 9 years ago
parent 85136e7095
commit a924900d52
  1. 2
      main/gradebook/gradebook_edit_link.php
  2. 4
      main/gradebook/gradebook_edit_result.php
  3. 4
      main/gradebook/gradebook_view_result.php
  4. 2
      main/gradebook/lib/GradebookUtils.php
  5. 7
      main/gradebook/lib/be/category.class.php
  6. 2
      main/gradebook/lib/be/evaluation.class.php
  7. 3
      main/gradebook/lib/fe/displaygradebook.php
  8. 2
      main/gradebook/lib/scoredisplay.class.php
  9. 31
      main/inc/lib/api.lib.php

@ -70,7 +70,7 @@ if ($form->validate()) {
$row_attendance = Database::fetch_array($rs_attendance); $row_attendance = Database::fetch_array($rs_attendance);
$attendance_id = $row_attendance['ref_id']; $attendance_id = $row_attendance['ref_id'];
$sql = 'UPDATE '.$tbl_attendance.' SET $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); WHERE c_id = '.$course_id.' AND id = '.intval($attendance_id);
Database::query($sql); Database::query($sql);
} }

@ -29,10 +29,10 @@ if ($edit_result_form->validate()) {
$values = $edit_result_form->exportValues(); $values = $edit_result_form->exportValues();
$scores = ($values['score']); $scores = ($values['score']);
foreach ($scores as $row) { foreach ($scores as $row) {
$resultedit = Result :: load (key($scores)); $resultedit = Result:: load(key($scores));
$row_value = $row; $row_value = $row;
if ($row_value != '' ) { 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(); $resultedit[0]->save();
} }
next($scores); next($scores);

@ -75,7 +75,7 @@ if (isset($_GET['editres'])) {
$result->set_evaluation_id($select_eval); $result->set_evaluation_id($select_eval);
$row_value = isset($values['score']) ? (float) $values['score'] : 0; $row_value = isset($values['score']) ? (float) $values['score'] : 0;
if (!empty($row_value) || $row_value == 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(); $result->save();
unset($result); unset($result);
@ -162,7 +162,7 @@ if (isset($_GET['import'])) {
$result = new Result(); $result = new Result();
$result->set_user_id($importedresult['user_id']); $result->set_user_id($importedresult['user_id']);
if (!empty($importedresult['score'])) { 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'])) { if (!empty($importedresult['date'])) {
$result->set_date(api_get_utc_datetime($importedresult['date'])); $result->set_date(api_get_utc_datetime($importedresult['date']));

@ -1152,7 +1152,7 @@ class GradebookUtils
public static function updateLinkWeight($linkId, $name, $weight) public static function updateLinkWeight($linkId, $name, $weight)
{ {
$linkId = intval($linkId); $linkId = intval($linkId);
$weight = floatval($weight); $weight = api_float_val($weight);
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
AbstractLink::add_link_log($linkId, $name); AbstractLink::add_link_log($linkId, $name);

@ -2254,11 +2254,8 @@ class Category implements GradebookItem
$courseEvaluations = $category->get_evaluations($userId, true); $courseEvaluations = $category->get_evaluations($userId, true);
$courseLinks = $category->get_links($userId, true); $courseLinks = $category->get_links($userId, true);
$evaluationsAndLinks = array_merge($courseEvaluations, $courseLinks); $evaluationsAndLinks = array_merge($courseEvaluations, $courseLinks);
$categoryScore = 0; $categoryScore = 0;
for ($i = 0; $i < count($evaluationsAndLinks); $i++) { for ($i = 0; $i < count($evaluationsAndLinks); $i++) {
$item = $evaluationsAndLinks[$i]; $item = $evaluationsAndLinks[$i];
$score = $item->calc_score($userId); $score = $item->calc_score($userId);
@ -2272,7 +2269,7 @@ class Category implements GradebookItem
$categoryScore += $itemValue; $categoryScore += $itemValue;
} }
return floatval($categoryScore); return api_float_val($categoryScore);
} }
/** /**
@ -2289,7 +2286,7 @@ class Category implements GradebookItem
[ [
'category_id' => intval($categoryId), 'category_id' => intval($categoryId),
'user_id' => intval($userId), 'user_id' => intval($userId),
'score' => floatval($score), 'score' => api_float_val($score),
'registered_at' => api_get_utc_datetime() 'registered_at' => api_get_utc_datetime()
] ]
); );

@ -329,7 +329,7 @@ class Evaluation implements GradebookItem
$sql .= ',type'; $sql .= ',type';
$sql .= ") VALUES ('".Database::escape_string($this->get_name())."'" $sql .= ") VALUES ('".Database::escape_string($this->get_name())."'"
.','.intval($this->get_user_id()) .','.intval($this->get_user_id())
.','.floatval($this->get_weight()) .','.api_float_val($this->get_weight())
.','.intval($this->get_max()) .','.intval($this->get_max())
.','.intval($this->is_visible()); .','.intval($this->is_visible());
if (isset($this->description)) { if (isset($this->description)) {

@ -528,11 +528,10 @@ class DisplayGradebook
$item_value+=$score[0] / $my_score_denom * $item->get_weight(); $item_value+=$score[0] / $my_score_denom * $item->get_weight();
$item_total+=$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); $total_score = array($item_value, $item_total);
$scorecourse_display = $scoredisplay->display_score($total_score, SCORE_DIV_PERCENT); $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); $cattotal = Category :: load(0);
$scoretotal = $cattotal[0]->calc_score($user_id); $scoretotal = $cattotal[0]->calc_score($user_id);
$scoretotal_display = (isset($scoretotal) ? $scoredisplay->display_score($scoretotal, SCORE_PERCENT) : get_lang('NoResultsAvailable')); $scoretotal_display = (isset($scoretotal) ? $scoredisplay->display_score($scoretotal, SCORE_PERCENT) : get_lang('NoResultsAvailable'));

@ -281,7 +281,7 @@ class ScoreDisplay
*/ */
public function format_score($score) public function format_score($score)
{ {
return floatval(number_format($score, $this->get_number_decimals())); return api_number_format($score, $this->get_number_decimals());
} }
/** /**

@ -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
* 3,141516 => 3.141516 * 3,141516 => 3.141516
* @todo WIP * @todo WIP
* *
* @param $number * @param string $number
* @return false|float|int|mixed * @return float
*/ */
function api_parse_float_val($number) function api_float_val($number)
{ {
if (INTL_INSTALLED) { $number = (float) str_replace(',', '.', trim($number));
$iso = api_get_language_isocode(); return $number;
$iso = 'fr';
$formatter = new NumberFormatter($iso, NumberFormatter::DECIMAL);
return $formatter->parse($number);
} else {
return floatval($number);
}
} }
/** /**
@ -8071,15 +8064,7 @@ function api_parse_float_val($number)
*/ */
function api_number_format($number, $decimals = 0) function api_number_format($number, $decimals = 0)
{ {
if (INTL_INSTALLED) { $number = api_float_val($number);
$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); return number_format($number, $decimals);
}
} }
Loading…
Cancel
Save