MDL-64414 lib/evalmath: add AND, OR functions to evalmath

This commit is contained in:
Stefan Erlachner
2018-12-18 09:40:29 +01:00
parent 33a388eff7
commit b1f2b4fdfc
3 changed files with 71 additions and 3 deletions
+23 -2
View File
@@ -114,8 +114,8 @@ class EvalMath {
'average'=>array(-1), 'max'=>array(-1), 'min'=>array(-1),
'mod'=>array(2), 'pi'=>array(0), 'power'=>array(2),
'round'=>array(1, 2), 'sum'=>array(-1), 'rand_int'=>array(2),
'rand_float'=>array(0), 'ifthenelse'=>array(3));
var $fcsynonyms = array('if' => 'ifthenelse');
'rand_float'=>array(0), 'ifthenelse'=>array(3), 'cond_and'=>array(-1), 'cond_or'=>array(-1));
var $fcsynonyms = array('if' => 'ifthenelse', 'and' => 'cond_and', 'or' => 'cond_or');
var $allowimplicitmultiplication;
@@ -534,6 +534,27 @@ class EvalMathFuncs {
return $else;
}
}
static function cond_and() {
$args = func_get_args();
foreach($args as $a) {
if ($a == false) {
return 0;
}
}
return 1;
}
static function cond_or() {
$args = func_get_args();
foreach($args as $a) {
if($a == true) {
return 1;
}
}
return 0;
}
static function average() {
$args = func_get_args();
return (call_user_func_array(array('self', 'sum'), $args) / count($args));
+6
View File
@@ -22,3 +22,9 @@ skodak, Tim Hunt
Changes by Juan Pablo de Castro (MDL-14274):
* operators >,<,>=,<=,== added.
* function if[thenelse](condition, true_value, false_value)
Changes by Stefan Erlachner, Thomas Niedermaier (MDL-64414):
* add function or:
e.g. if (or(condition_1, condition_2, ... condition_n))
* add function and:
e.g. if (and(condition_1, condition_2, ... condition_n))