AutorÃa | Ultima modificación | Ver Log |
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Lesson's numeric helper lib.
*
* Contains any helper functions for the numeric pagetyep
*
* @package mod_lesson
* @copyright 2020 Peter Dias <peter@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace mod_lesson\local\numeric;
/**
* Lesson numeric page helper
*
* @copyright 2020 Peter Dias<peter@moodle.com>
* @package core_lesson
*/
class helper {
/**
* Helper function to unformat a given numeric value from locale specific values with n:n signifying ranges to standards
* with decimal point numbers/ranges
*
* @param string $value The value to be formatted
* @return string|float|bool $formattedvalue unformatted value
* String - If it is a range it will return a value e.g. 2:4
* Float - if it's a properly formatted float
* Null - If empty and could not be converted
*/
public static function lesson_unformat_numeric_value(string $value) {
if (strpos($value, ':')) {
list($min, $max) = explode(':', $value);
$formattedvalue = unformat_float($min) . ':' . unformat_float($max);
} else {
$formattedvalue = unformat_float($value);
}
return $formattedvalue;
}
/**
* Helper function to format a given value into locale specific values with n:n signifying ranges
*
* @param string|number $value The value to be formatted
* @return string $formattedvalue Formatted value OR $value if not numeric
*/
public static function lesson_format_numeric_value($value): string {
$formattedvalue = $value;
if (strpos($value, ':')) {
list($min, $max) = explode(':', $value);
$formattedvalue = $min . ':' . $max;
if (is_numeric($min) && is_numeric($max)) {
$formattedvalue = format_float($min, strlen($min), true, true) . ':'
. format_float($max, strlen($max), true, true);
}
} else {
$formattedvalue = is_numeric($value) ? format_float($value, strlen($value), true, true) : $value;
}
return $formattedvalue;
}
}