See Release Notes
Long Term Support Release
Differences Between: [Versions 310 and 401] [Versions 311 and 401] [Versions 39 and 401] [Versions 400 and 401] [Versions 401 and 402] [Versions 401 and 403]
1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Class for exporting a course summary from an stdClass. 19 * 20 * @package core_course 21 * @copyright 2015 Damyon Wiese 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 namespace core_course\external; 25 defined('MOODLE_INTERNAL') || die(); 26 27 use renderer_base; 28 use moodle_url; 29 30 /** 31 * Class for exporting a course summary from an stdClass. 32 * 33 * @copyright 2015 Damyon Wiese 34 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 35 */ 36 class course_summary_exporter extends \core\external\exporter { 37 38 /** 39 * Constructor - saves the persistent object, and the related objects. 40 * 41 * @param mixed $data - Either an stdClass or an array of values. 42 * @param array $related - An optional list of pre-loaded objects related to this object. 43 */ 44 public function __construct($data, $related = array()) { 45 if (!array_key_exists('isfavourite', $related)) { 46 $related['isfavourite'] = false; 47 } 48 parent::__construct($data, $related); 49 } 50 51 protected static function define_related() { 52 // We cache the context so it does not need to be retrieved from the course. 53 return array('context' => '\\context', 'isfavourite' => 'bool?'); 54 } 55 56 protected function get_other_values(renderer_base $output) { 57 global $CFG; 58 $courseimage = self::get_course_image($this->data); 59 if (!$courseimage) { 60 $courseimage = $output->get_generated_image_for_id($this->data->id); 61 } 62 $progress = self::get_course_progress($this->data); 63 $hasprogress = false; 64 if ($progress === 0 || $progress > 0) { 65 $hasprogress = true; 66 } 67 $progress = floor($progress ?? 0); 68 $coursecategory = \core_course_category::get($this->data->category, MUST_EXIST, true); 69 return array( 70 'fullnamedisplay' => get_course_display_name_for_list($this->data), 71 'viewurl' => (new moodle_url('/course/view.php', array('id' => $this->data->id)))->out(false), 72 'courseimage' => $courseimage, 73 'progress' => $progress, 74 'hasprogress' => $hasprogress, 75 'isfavourite' => $this->related['isfavourite'], 76 'hidden' => boolval(get_user_preferences('block_myoverview_hidden_course_' . $this->data->id, 0)), 77 'showshortname' => $CFG->courselistshortnames ? true : false, 78 'coursecategory' => $coursecategory->name 79 ); 80 } 81 82 public static function define_properties() { 83 return array( 84 'id' => array( 85 'type' => PARAM_INT, 86 ), 87 'fullname' => array( 88 'type' => PARAM_TEXT, 89 ), 90 'shortname' => array( 91 'type' => PARAM_TEXT, 92 ), 93 'idnumber' => array( 94 'type' => PARAM_RAW, 95 ), 96 'summary' => array( 97 'type' => PARAM_RAW, 98 'null' => NULL_ALLOWED 99 ), 100 'summaryformat' => array( 101 'type' => PARAM_INT, 102 ), 103 'startdate' => array( 104 'type' => PARAM_INT, 105 ), 106 'enddate' => array( 107 'type' => PARAM_INT, 108 ), 109 'visible' => array( 110 'type' => PARAM_BOOL, 111 ), 112 'showactivitydates' => [ 113 'type' => PARAM_BOOL, 114 'null' => NULL_ALLOWED 115 ], 116 'showcompletionconditions' => [ 117 'type' => PARAM_BOOL, 118 'null' => NULL_ALLOWED 119 ], 120 ); 121 } 122 123 /** 124 * Get the formatting parameters for the summary. 125 * 126 * @return array 127 */ 128 protected function get_format_parameters_for_summary() { 129 return [ 130 'component' => 'course', 131 'filearea' => 'summary', 132 ]; 133 } 134 135 public static function define_other_properties() { 136 return array( 137 'fullnamedisplay' => array( 138 'type' => PARAM_TEXT, 139 ), 140 'viewurl' => array( 141 'type' => PARAM_URL, 142 ), 143 'courseimage' => array( 144 'type' => PARAM_RAW, 145 ), 146 'progress' => array( 147 'type' => PARAM_INT, 148 'optional' => true 149 ), 150 'hasprogress' => array( 151 'type' => PARAM_BOOL 152 ), 153 'isfavourite' => array( 154 'type' => PARAM_BOOL 155 ), 156 'hidden' => array( 157 'type' => PARAM_BOOL 158 ), 159 'timeaccess' => array( 160 'type' => PARAM_INT, 161 'optional' => true 162 ), 163 'showshortname' => array( 164 'type' => PARAM_BOOL 165 ), 166 'coursecategory' => array( 167 'type' => PARAM_TEXT 168 ) 169 ); 170 } 171 172 /** 173 * Get the course image if added to course. 174 * 175 * @param object $course 176 * @return string|false url of course image or false if it's not exist. 177 */ 178 public static function get_course_image($course) { 179 $image = \cache::make('core', 'course_image')->get($course->id); 180 181 if (is_null($image)) { 182 $image = false; 183 } 184 185 return $image; 186 } 187 188 /** 189 * Get the course pattern datauri. 190 * 191 * The datauri is an encoded svg that can be passed as a url. 192 * @param object $course 193 * @return string datauri 194 * @deprecated 3.7 195 */ 196 public static function get_course_pattern($course) { 197 global $OUTPUT; 198 debugging('course_summary_exporter::get_course_pattern() is deprecated. ' . 199 'Please use $OUTPUT->get_generated_image_for_id() instead.', DEBUG_DEVELOPER); 200 return $OUTPUT->get_generated_image_for_id($course->id); 201 } 202 203 /** 204 * Get the course progress percentage. 205 * 206 * @param object $course 207 * @return int progress 208 */ 209 public static function get_course_progress($course) { 210 return \core_completion\progress::get_course_progress_percentage($course); 211 } 212 213 /** 214 * Get the course color. 215 * 216 * @param int $courseid 217 * @return string hex color code. 218 * @deprecated 3.7 219 */ 220 public static function coursecolor($courseid) { 221 global $OUTPUT; 222 debugging('course_summary_exporter::coursecolor() is deprecated. ' . 223 'Please use $OUTPUT->get_generated_color_for_id() instead.', DEBUG_DEVELOPER); 224 return $OUTPUT->get_generated_color_for_id($courseid); 225 } 226 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body