Differences Between: [Versions 310 and 402] [Versions 311 and 402] [Versions 39 and 402] [Versions 400 and 402] [Versions 401 and 402]
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 'pdfexportfont' => [ 121 'type' => PARAM_TEXT, 122 'null' => NULL_ALLOWED 123 ], 124 ); 125 } 126 127 /** 128 * Get the formatting parameters for the summary. 129 * 130 * @return array 131 */ 132 protected function get_format_parameters_for_summary() { 133 return [ 134 'component' => 'course', 135 'filearea' => 'summary', 136 ]; 137 } 138 139 public static function define_other_properties() { 140 return array( 141 'fullnamedisplay' => array( 142 'type' => PARAM_TEXT, 143 ), 144 'viewurl' => array( 145 'type' => PARAM_URL, 146 ), 147 'courseimage' => array( 148 'type' => PARAM_RAW, 149 ), 150 'progress' => array( 151 'type' => PARAM_INT, 152 'optional' => true 153 ), 154 'hasprogress' => array( 155 'type' => PARAM_BOOL 156 ), 157 'isfavourite' => array( 158 'type' => PARAM_BOOL 159 ), 160 'hidden' => array( 161 'type' => PARAM_BOOL 162 ), 163 'timeaccess' => array( 164 'type' => PARAM_INT, 165 'optional' => true 166 ), 167 'showshortname' => array( 168 'type' => PARAM_BOOL 169 ), 170 'coursecategory' => array( 171 'type' => PARAM_TEXT 172 ) 173 ); 174 } 175 176 /** 177 * Get the course image if added to course. 178 * 179 * @param object $course 180 * @return string|false url of course image or false if it's not exist. 181 */ 182 public static function get_course_image($course) { 183 $image = \cache::make('core', 'course_image')->get($course->id); 184 185 if (is_null($image)) { 186 $image = false; 187 } 188 189 return $image; 190 } 191 192 /** 193 * Get the course pattern datauri. 194 * 195 * The datauri is an encoded svg that can be passed as a url. 196 * @param object $course 197 * @return string datauri 198 * @deprecated 3.7 199 */ 200 public static function get_course_pattern($course) { 201 global $OUTPUT; 202 debugging('course_summary_exporter::get_course_pattern() is deprecated. ' . 203 'Please use $OUTPUT->get_generated_image_for_id() instead.', DEBUG_DEVELOPER); 204 return $OUTPUT->get_generated_image_for_id($course->id); 205 } 206 207 /** 208 * Get the course progress percentage. 209 * 210 * @param object $course 211 * @return int progress 212 */ 213 public static function get_course_progress($course) { 214 return \core_completion\progress::get_course_progress_percentage($course); 215 } 216 217 /** 218 * Get the course color. 219 * 220 * @param int $courseid 221 * @return string hex color code. 222 * @deprecated 3.7 223 */ 224 public static function coursecolor($courseid) { 225 global $OUTPUT; 226 debugging('course_summary_exporter::coursecolor() is deprecated. ' . 227 'Please use $OUTPUT->get_generated_color_for_id() instead.', DEBUG_DEVELOPER); 228 return $OUTPUT->get_generated_color_for_id($courseid); 229 } 230 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body