Переглянути джерело

Use api_float_val and api_number_format to handle float convertions

See BT#12133
jmontoyaa 8 роки тому
батько
коміт
a924900d52

+ 1 - 1
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);
     }

+ 2 - 2
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);

+ 2 - 2
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']));

+ 1 - 1
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);

+ 2 - 5
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()
             ]
         );

+ 1 - 1
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)) {

+ 1 - 2
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'));

+ 1 - 1
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());
     }
 
     /**

+ 10 - 25
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);
-    }
-}
+    $number = api_float_val($number);
+
+    return number_format($number, $decimals);
+}