56 lines
No EOL
1.5 KiB
PHP
56 lines
No EOL
1.5 KiB
PHP
<?php
|
|
|
|
namespace local_treestudyplan;
|
|
require_once($CFG->libdir.'/externallib.php');
|
|
|
|
class completion {
|
|
public const FAILED = -1;
|
|
public const INCOMPLETE = 0;
|
|
public const PENDING = 1;
|
|
public const PROGRESS = 2;
|
|
public const COMPLETED = 3;
|
|
public const GOOD = 4;
|
|
public const EXCELLENT = 5;
|
|
|
|
private const LABELS = [
|
|
self::FAILED => 'failed',
|
|
self::INCOMPLETE => 'incomplete',
|
|
self::PENDING => 'pending',
|
|
self::PROGRESS => 'progress',
|
|
self::COMPLETED => 'completed',
|
|
self::GOOD => 'good',
|
|
self::EXCELLENT => 'excellent',
|
|
];
|
|
|
|
public static function label($completion) {
|
|
if(array_key_exists($completion,self::LABELS)){
|
|
return self::LABELS[$completion];
|
|
}
|
|
else
|
|
{
|
|
return self::LABELS[self::INCOMPLETE];
|
|
}
|
|
}
|
|
|
|
public static function structure($value=VALUE_REQUIRED){
|
|
return new \external_value(PARAM_TEXT, 'completion state (failed|incomplete|pending|progress|completed|good|excellent)',$value);
|
|
}
|
|
|
|
public static function count_states(array $states){
|
|
// initialize result array
|
|
$statecount = [];
|
|
foreach(array_keys(self::LABELS) as $key) {
|
|
$statecount[$key] = 0;
|
|
}
|
|
|
|
// process all states in array and increment relevant counter for each one
|
|
foreach($states as $c){
|
|
if(array_key_exists($c,$statecount)){
|
|
$statecount[$c] += 1;
|
|
}
|
|
}
|
|
|
|
return $statecount;
|
|
}
|
|
|
|
} |