<?php // This file is part of the Studyplan plugin for Moodle // // 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 <https://www.gnu.org/licenses/>. /** * * @package local_treestudyplan * @copyright 2023 P.M. Kuipers * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace local_treestudyplan; defined('MOODLE_INTERNAL') || die(); 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; } }