Ir a la última revisión | Autoría | Comparar con el anterior | 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/>./*** Contains class used to return completion progress information.** @package core_completion* @copyright 2017 Mark Nelson <markn@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/namespace core_completion;defined('MOODLE_INTERNAL') || die();require_once($CFG->libdir . '/completionlib.php');/*** Class used to return completion progress information.** @package core_completion* @copyright 2017 Mark Nelson <markn@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class progress {/*** Returns the course percentage completed by a certain user, returns null if no completion data is available.** @param \stdClass $course Moodle course object* @param int $userid The id of the user, 0 for the current user* @return null|float The percentage, or null if completion is not supported in the course,* or there are no activities that support completion.*/public static function get_course_progress_percentage($course, $userid = 0) {global $USER;// Make sure we continue with a valid userid.if (empty($userid)) {$userid = $USER->id;}$completion = new \completion_info($course);// First, let's make sure completion is enabled.if (!$completion->is_enabled()) {return null;}if (!$completion->is_tracked_user($userid)) {return null;}// Before we check how many modules have been completed see if the course has.if ($completion->is_course_complete($userid)) {return 100;}// Get the number of modules that support completion.$modules = $completion->get_activities();$count = count($modules);if (!$count) {return null;}// Get the number of modules that have been completed.$completed = 0;foreach ($modules as $module) {$data = $completion->get_data($module, true, $userid);if (($data->completionstate == COMPLETION_INCOMPLETE) || ($data->completionstate == COMPLETION_COMPLETE_FAIL)) {$completed += 0;} else {$completed += 1;};}return ($completed / $count) * 100;}}