/** * Convenience method to instantiate the event. * * @param user_evidence $userevidence The evidence of prior learning. * @return self */ public static final function create_from_user_evidence(user_evidence $userevidence) { if (!$userevidence->get_id()) { throw new \coding_exception('The evidence of prior learning ID must be set.'); } $event = static::create(array('contextid' => $userevidence->get_context()->id, 'objectid' => $userevidence->get_id(), 'relateduserid' => $userevidence->get_userid())); $event->add_record_snapshot(user_evidence::TABLE, $userevidence->to_record()); return $event; }
/** * Create a new user evidence. * * @param object $data The data. * @param int $draftitemid The draft ID in which files have been saved. * @return user_evidence */ public static function update_user_evidence($data, $draftitemid = null) { static::require_enabled(); $userevidence = new user_evidence($data->id); $context = $userevidence->get_context(); if (!$userevidence->can_manage()) { throw new required_capability_exception($context, 'moodle/competency:userevidencemanage', 'nopermissions', ''); } else { if (array_key_exists('userid', $data) && $data->userid != $userevidence->get_userid()) { throw new coding_exception('Can not change the userid of a user evidence.'); } } $userevidence->from_record($data); $userevidence->update(); if (!empty($draftitemid)) { $fileareaoptions = array('subdirs' => true); $itemid = $userevidence->get_id(); file_save_draft_area_files($draftitemid, $context->id, 'core_competency', 'userevidence', $itemid, $fileareaoptions); } // Trigger an evidence of prior learning updated event. \core\event\competency_user_evidence_updated::create_from_user_evidence($userevidence)->trigger(); return $userevidence; }
/** * Set-up a user evidence page. * * Example: * list($title, $subtitle) = page_helper::setup_for_user_evidence($url, $template, $pagetitle); * echo $OUTPUT->heading($title); * echo $OUTPUT->heading($subtitle, 3); * * @param int $userid The user ID. * @param moodle_url $url The current page. * @param \core_competency\user_evidence $evidence The user evidence, if any. * @param string $subtitle The title of the subpage, if any. * @param string $returntype The desired return page. * @return array With the following: * - Page title * - Page sub title * - Return URL (main plan page) */ public static function setup_for_user_evidence($userid, moodle_url $url, $evidence = null, $subtitle = '', $returntype = null) { global $PAGE, $USER; // Check that the user is a valid user. $user = core_user::get_user($userid); if (!$user || !core_user::is_real_user($userid)) { throw new \moodle_exception('invaliduser', 'error'); } $context = context_user::instance($user->id); $evidencelisturl = new moodle_url('/admin/tool/lp/user_evidence_list.php', array('userid' => $userid)); $evidenceurl = null; if ($evidence) { $evidenceurl = new moodle_url('/admin/tool/lp/user_evidence.php', array('id' => $evidence->get_id())); } $returnurl = $evidencelisturl; if ($returntype != 'list' && $evidenceurl) { $returnurl = $evidenceurl; } $PAGE->navigation->override_active_url($evidencelisturl); $PAGE->set_context($context); // If not his own evidence, we want to extend the navigation for the user. $iscurrentuser = $USER->id == $user->id; if (!$iscurrentuser) { $PAGE->navigation->extend_for_user($user); $PAGE->navigation->set_userid_for_parent_checks($user->id); } if (!empty($evidence)) { $title = format_string($evidence->get_name(), true, array('context' => $context)); } else { $title = get_string('userevidence', 'tool_lp'); } $PAGE->set_pagelayout('standard'); $PAGE->set_url($url); $PAGE->set_title($title); $PAGE->set_heading($title); if (!empty($evidence)) { $PAGE->navbar->add($title, $evidenceurl); if (!empty($subtitle)) { $PAGE->navbar->add($subtitle, $url); } } else { if (!empty($subtitle)) { // We're in a sub page without a specific evidence. $PAGE->navbar->add($subtitle, $url); } } return array($title, $subtitle, $returnurl); }