/** * This function extends the user navigation. * * @param navigation_node $navigation The navigation node to extend * @param stdClass $user The user object * @param context_user $usercontext The user context * @param stdClass $course The course object * @param context_course $coursecontext The context of the course */ function tool_lp_extend_navigation_user($navigation, $user, $usercontext, $course, $coursecontext) { if (!get_config('core_competency', 'enabled')) { return; } if (\core_competency\plan::can_read_user($user->id)) { $node = $navigation->add(get_string('learningplans', 'tool_lp'), new moodle_url('/admin/tool/lp/plans.php', array('userid' => $user->id))); if (\core_competency\user_evidence::can_read_user($user->id)) { $node->add(get_string('userevidence', 'tool_lp'), new moodle_url('/admin/tool/lp/user_evidence_list.php', array('userid' => $user->id))); } } }
/** * Export this data so it can be used as the context for a mustache template. * * @param renderer_base $output * @return stdClass */ public function export_for_template(renderer_base $output) { $data = new stdClass(); $data->userid = $this->userid; $data->pluginbaseurl = (new moodle_url('/admin/tool/lp'))->out(true); $data->canreaduserevidence = user_evidence::can_read_user($this->userid); $data->canmanageuserplans = plan::can_manage_user($this->userid); // Attach standard objects as mustache can not parse \core_competency\plan objects. $data->plans = array(); if ($this->plans) { foreach ($this->plans as $plan) { $exporter = new plan_exporter($plan, array('template' => $plan->get_template())); $record = $exporter->export($output); $data->plans[] = $record; } } $data->navigation = array(); foreach ($this->navigation as $button) { $data->navigation[] = $output->render($button); } return $data; }
/** * List the user evidence of a user. * * @param int $userid The user ID. * @return user_evidence[] */ public static function list_user_evidence($userid) { static::require_enabled(); if (!user_evidence::can_read_user($userid)) { $context = context_user::instance($userid); throw new required_capability_exception($context, 'moodle/competency:userevidenceview', 'nopermissions', ''); } $evidence = user_evidence::get_records(array('userid' => $userid), 'name'); return $evidence; }
/** * File serving. * * @param stdClass $course The course object. * @param stdClass $cm The cm object. * @param context $context The context object. * @param string $filearea The file area. * @param array $args List of arguments. * @param bool $forcedownload Whether or not to force the download of the file. * @param array $options Array of options. * @return void|false */ function core_competency_pluginfile($course, $cm, $context, $filearea, $args, $forcedownload, array $options = array()) { global $CFG; if (!get_config('core_competency', 'enabled')) { return false; } $fs = get_file_storage(); $file = null; $itemid = array_shift($args); $filename = array_shift($args); $filepath = $args ? '/' . implode('/', $args) . '/' : '/'; if ($filearea == 'userevidence' && $context->contextlevel == CONTEXT_USER) { if (user_evidence::can_read_user($context->instanceid)) { $file = $fs->get_file($context->id, 'core_competency', $filearea, $itemid, $filepath, $filename); } } if (!$file) { return false; } send_stored_file($file, null, 0, $forcedownload); }