/**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }
Ejemplo n.º 3
0
 /**
  * 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);
 }