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;
 | 
						|
    }
 | 
						|
 | 
						|
} |