protected function get_other_values(renderer_base $output) { $other = array(); if (!empty($this->related['actionuser'])) { $exporter = new user_summary_exporter($this->related['actionuser']); $actionuser = $exporter->export($output); $other['actionuser'] = $actionuser; } $other['description'] = $this->persistent->get_description(); $other['userdate'] = userdate($this->persistent->get_timecreated()); if ($this->persistent->get_grade() === null) { $gradename = '-'; } else { $gradename = $this->related['scale']->scale_items[$this->persistent->get_grade() - 1]; } $other['gradename'] = $gradename; // Try to guess the user from the user competency. $userid = null; if ($this->related['usercompetency']) { $userid = $this->related['usercompetency']->get_userid(); } else { if ($this->related['usercompetencyplan']) { $userid = $this->related['usercompetencyplan']->get_userid(); } else { $uc = user_competency::get_record(['id' => $this->persistent->get_usercompetencyid()]); $userid = $uc->get_userid(); } } $other['candelete'] = evidence::can_delete_user($userid); return $other; }
/** * Export the data. * * @param renderer_base $output * @return stdClass */ public function export_for_template(renderer_base $output) { $data = new stdClass(); $planstoreview = array(); foreach ($this->planstoreview['plans'] as $plandata) { $planexporter = new plan_exporter($plandata->plan, array('template' => $plandata->template)); $userexporter = new user_summary_exporter($plandata->owner); $planstoreview[] = array('plan' => $planexporter->export($output), 'user' => $userexporter->export($output)); } $data = array('plans' => $planstoreview, 'pluginbaseurl' => (new moodle_url('/blocks/lp'))->out(false)); return $data; }
/** * Export the data. * * @param renderer_base $output * @return stdClass */ public function export_for_template(renderer_base $output) { $data = new stdClass(); $compstoreview = array(); foreach ($this->compstoreview['competencies'] as $compdata) { $ucexporter = new user_competency_exporter($compdata->usercompetency, array('scale' => $compdata->competency->get_scale())); $compexporter = new competency_exporter($compdata->competency, array('context' => $compdata->competency->get_context())); $userexporter = new user_summary_exporter($compdata->user); $compstoreview[] = array('usercompetency' => $ucexporter->export($output), 'competency' => $compexporter->export($output), 'user' => $userexporter->export($output)); } $data = array('competencies' => $compstoreview, 'pluginbaseurl' => (new moodle_url('/blocks/lp'))->out(false)); return $data; }
protected function get_other_values(renderer_base $output) { $result = new stdClass(); if ($this->persistent->get_grade() === null) { $gradename = '-'; } else { $gradename = $this->related['scale']->scale_items[$this->persistent->get_grade() - 1]; } $result->gradename = $gradename; if ($this->persistent->get_proficiency() === null) { $proficiencyname = get_string('no'); } else { $proficiencyname = get_string($this->persistent->get_proficiency() ? 'yes' : 'no'); } $result->proficiencyname = $proficiencyname; $statusname = '-'; if ($this->persistent->get_status() != user_competency::STATUS_IDLE) { $statusname = (string) user_competency::get_status_name($this->persistent->get_status()); } $result->statusname = $statusname; $result->canrequestreview = $this->persistent->can_request_review(); $result->canreview = $this->persistent->can_review(); $result->isstatusidle = $this->persistent->get_status() == user_competency::STATUS_IDLE; $result->isstatusinreview = $this->persistent->get_status() == user_competency::STATUS_IN_REVIEW; $result->isstatuswaitingforreview = $this->persistent->get_status() == user_competency::STATUS_WAITING_FOR_REVIEW; $result->isrequestreviewallowed = $result->canrequestreview && $result->isstatusidle; $result->iscancelreviewrequestallowed = $result->canrequestreview && $result->isstatuswaitingforreview; $result->isstartreviewallowed = $result->canreview && $result->isstatuswaitingforreview; $result->isstopreviewallowed = $result->canreview && $result->isstatusinreview; if (!empty($result->isstatusinreview)) { // TODO Make this more efficient. $userexporter = new user_summary_exporter(core_user::get_user($this->persistent->get_reviewerid(), '*', MUST_EXIST)); $result->reviewer = $userexporter->export($output); } $result->url = url::user_competency($this->persistent->get_id())->out(false); return (array) $result; }
protected function get_other_values(renderer_base $output) { $classname = static::define_class(); $status = $this->persistent->get_status(); $values = new stdClass(); $values->statusname = $this->persistent->get_statusname(); $values->isbasedontemplate = $this->persistent->is_based_on_template(); $values->canmanage = $this->persistent->can_manage(); $values->canrequestreview = $this->persistent->can_request_review(); $values->canreview = $this->persistent->can_review(); $values->canbeedited = $this->persistent->can_be_edited(); $values->isactive = $status == $classname::STATUS_ACTIVE; $values->isdraft = $status == $classname::STATUS_DRAFT; $values->iscompleted = $status == $classname::STATUS_COMPLETE; $values->isinreview = $status == $classname::STATUS_IN_REVIEW; $values->iswaitingforreview = $status == $classname::STATUS_WAITING_FOR_REVIEW; $values->isreopenallowed = $values->canmanage && $values->iscompleted; $values->iscompleteallowed = $values->canmanage && $values->isactive; $values->isunlinkallowed = $values->canmanage && !$values->iscompleted && $values->isbasedontemplate; $values->isrequestreviewallowed = false; $values->iscancelreviewrequestallowed = false; $values->isstartreviewallowed = false; $values->isstopreviewallowed = false; $values->isapproveallowed = false; $values->isunapproveallowed = false; if (!$values->isbasedontemplate) { $values->isrequestreviewallowed = $values->canrequestreview && $values->isdraft; $values->iscancelreviewrequestallowed = $values->canrequestreview && $values->iswaitingforreview; $values->isstartreviewallowed = $values->canreview && $values->iswaitingforreview; $values->isstopreviewallowed = $values->canreview && $values->isinreview; $values->isapproveallowed = $values->canreview && !$values->iscompleted && !$values->isactive; $values->isunapproveallowed = $values->canreview && $values->isactive; } $values->duedateformatted = userdate($this->persistent->get_duedate()); if ($this->persistent->is_based_on_template()) { $exporter = new template_exporter($this->related['template']); $values->template = $exporter->export($output); } if (!empty($values->isinreview)) { // TODO Make this more efficient. $userexporter = new user_summary_exporter(core_user::get_user($this->persistent->get_reviewerid(), '*', MUST_EXIST)); $values->reviewer = $userexporter->export($output); } $commentareaexporter = new comment_area_exporter($this->persistent->get_comment_object()); $values->commentarea = $commentareaexporter->export($output); $values->url = url::plan($this->persistent->get_id())->out(false); return (array) $values; }
/** * Export the data. * * @param renderer_base $output * @return stdClass */ public function export_for_template(renderer_base $output) { global $CFG, $DB, $SESSION, $PAGE; $context = context_course::instance($this->courseid); $data = new stdClass(); $data->userid = $this->userid; $data->courseid = $this->courseid; $data->baseurl = $this->baseurl; $data->groupselector = ''; if (has_any_capability(array('moodle/competency:usercompetencyview', 'moodle/competency:coursecompetencymanage'), $context)) { $course = $DB->get_record('course', array('id' => $this->courseid)); $currentgroup = groups_get_course_group($course, true); if ($currentgroup !== false) { $select = groups_allgroups_course_menu($course, $PAGE->url, true, $currentgroup); $data->groupselector = $select; } // Fetch showactive. $defaultgradeshowactiveenrol = !empty($CFG->grade_report_showonlyactiveenrol); $showonlyactiveenrol = get_user_preferences('grade_report_showonlyactiveenrol', $defaultgradeshowactiveenrol); $showonlyactiveenrol = $showonlyactiveenrol || !has_capability('moodle/course:viewsuspendedusers', $context); // Fetch current active group. $groupmode = groups_get_course_groupmode($course); $users = get_enrolled_users($context, 'moodle/competency:coursecompetencygradable', $currentgroup, 'u.*', null, 0, 0, $showonlyactiveenrol); $data->users = array(); foreach ($users as $user) { $exporter = new user_summary_exporter($user); $user = $exporter->export($output); if ($user->id == $this->userid) { $user->selected = true; } $data->users[] = $user; } $data->hasusers = true; } else { $data->users = array(); $data->hasusers = false; } return $data; }
protected function get_other_values(renderer_base $output) { global $DB; $result = new stdClass(); $result->showrelatedcompetencies = true; $competency = $this->related['competency']; $exporter = new competency_summary_exporter(null, array('competency' => $competency, 'context' => $competency->get_context(), 'framework' => $competency->get_framework(), 'linkedcourses' => array(), 'relatedcompetencies' => $this->related['relatedcompetencies'])); $result->competency = $exporter->export($output); $result->cangrade = user_competency::can_grade_user($this->related['user']->id); if ($this->related['user']) { $exporter = new user_summary_exporter($this->related['user']); $result->user = $exporter->export($output); } $related = array('scale' => $competency->get_scale()); if ($this->related['usercompetency']) { $exporter = new user_competency_exporter($this->related['usercompetency'], $related); $result->usercompetency = $exporter->export($output); } if ($this->related['usercompetencyplan']) { $exporter = new user_competency_plan_exporter($this->related['usercompetencyplan'], $related); $result->usercompetencyplan = $exporter->export($output); } if ($this->related['usercompetencycourse']) { $exporter = new user_competency_course_exporter($this->related['usercompetencycourse'], $related); $result->usercompetencycourse = $exporter->export($output); } $allevidence = array(); $usercache = array(); $scale = $competency->get_scale(); $result->evidence = array(); if (count($this->related['evidence'])) { foreach ($this->related['evidence'] as $evidence) { $actionuserid = $evidence->get_actionuserid(); if (!empty($actionuserid)) { $usercache[$evidence->get_actionuserid()] = true; } } $users = array(); if (!empty($usercache)) { list($sql, $params) = $DB->get_in_or_equal(array_keys($usercache)); $users = $DB->get_records_select('user', 'id ' . $sql, $params); } foreach ($users as $user) { $usercache[$user->id] = $user; } foreach ($this->related['evidence'] as $evidence) { $actionuserid = $evidence->get_actionuserid(); $related = array('scale' => $scale, 'usercompetency' => $this->related['usercompetency'] ? $this->related['usercompetency'] : null, 'usercompetencyplan' => $this->related['usercompetencyplan'] ? $this->related['usercompetencyplan'] : null); $related['actionuser'] = !empty($actionuserid) ? $usercache[$actionuserid] : null; $exporter = new evidence_exporter($evidence, $related); $allevidence[] = $exporter->export($output); } $result->evidence = $allevidence; } $usercompetency = !empty($this->related['usercompetency']) ? $this->related['usercompetency'] : null; if (!empty($usercompetency) && $usercompetency->can_read_comments()) { $commentareaexporter = new comment_area_exporter($usercompetency->get_comment_object()); $result->commentarea = $commentareaexporter->export($output); } return (array) $result; }
/** * Search users. * * @param string $query * @param string $capability * @param int $limitfrom * @param int $limitnum * @return array */ public static function search_users($query, $capability = '', $limitfrom = 0, $limitnum = 100) { global $DB, $CFG, $PAGE, $USER; $params = self::validate_parameters(self::search_users_parameters(), array('query' => $query, 'capability' => $capability, 'limitfrom' => $limitfrom, 'limitnum' => $limitnum)); $query = $params['query']; $cap = $params['capability']; $limitfrom = $params['limitfrom']; $limitnum = $params['limitnum']; $context = context_system::instance(); self::validate_context($context); $output = $PAGE->get_renderer('tool_lp'); list($filtercapsql, $filtercapparams) = api::filter_users_with_capability_on_user_context_sql($cap, $USER->id, SQL_PARAMS_NAMED); $extrasearchfields = array(); if (!empty($CFG->showuseridentity) && has_capability('moodle/site:viewuseridentity', $context)) { $extrasearchfields = explode(',', $CFG->showuseridentity); } $fields = \user_picture::fields('u', $extrasearchfields); list($wheresql, $whereparams) = users_search_sql($query, 'u', true, $extrasearchfields); list($sortsql, $sortparams) = users_order_by_sql('u', $query, $context); $countsql = "SELECT COUNT('x') FROM {user} u WHERE {$wheresql} AND u.id {$filtercapsql}"; $countparams = $whereparams + $filtercapparams; $sql = "SELECT {$fields} FROM {user} u WHERE {$wheresql} AND u.id {$filtercapsql} ORDER BY {$sortsql}"; $params = $whereparams + $filtercapparams + $sortparams; $count = $DB->count_records_sql($countsql, $countparams); $result = $DB->get_recordset_sql($sql, $params, $limitfrom, $limitnum); $users = array(); foreach ($result as $key => $user) { // Make sure all required fields are set. foreach (user_summary_exporter::define_properties() as $propertykey => $definition) { if (empty($user->{$propertykey}) || !in_array($propertykey, $extrasearchfields)) { if ($propertykey != 'id') { $user->{$propertykey} = ''; } } } $exporter = new user_summary_exporter($user); $newuser = $exporter->export($output); $users[$key] = $newuser; } $result->close(); return array('users' => $users, 'count' => $count); }
public function export_for_template(renderer_base $output) { $plans = array(); foreach ($this->plans as $plan) { if (count($plans) >= 3) { break; } if ($plan->get_status() == plan::STATUS_ACTIVE) { $plans[] = $plan; } } $activeplans = array(); foreach ($plans as $plan) { $planexporter = new plan_exporter($plan, array('template' => $plan->get_template())); $activeplans[] = $planexporter->export($output); } $compstoreview = array(); foreach ($this->compstoreview['competencies'] as $compdata) { $ucexporter = new user_competency_exporter($compdata->usercompetency, array('scale' => $compdata->competency->get_scale())); $compexporter = new competency_exporter($compdata->competency, array('context' => $compdata->competency->get_context())); $userexporter = new user_summary_exporter($compdata->user); $compstoreview[] = array('usercompetency' => $ucexporter->export($output), 'competency' => $compexporter->export($output), 'user' => $userexporter->export($output)); } $planstoreview = array(); foreach ($this->planstoreview['plans'] as $plandata) { $planexporter = new plan_exporter($plandata->plan, array('template' => $plandata->template)); $userexporter = new user_summary_exporter($plandata->owner); $planstoreview[] = array('plan' => $planexporter->export($output), 'user' => $userexporter->export($output)); } $data = array('hasplans' => !empty($this->plans), 'hasactiveplans' => !empty($activeplans), 'hasmoreplans' => count($this->plans) > count($activeplans), 'activeplans' => $activeplans, 'compstoreview' => $compstoreview, 'hascompstoreview' => $this->compstoreview['count'] > 0, 'hasmorecompstoreview' => $this->compstoreview['count'] > 3, 'planstoreview' => $planstoreview, 'hasplanstoreview' => $this->planstoreview['count'] > 0, 'hasmoreplanstoreview' => $this->planstoreview['count'] > 3, 'plansurl' => url::plans($this->user->id)->out(false), 'pluginbaseurl' => (new \moodle_url('/blocks/lp'))->out(false), 'userid' => $this->user->id); return $data; }
/** * 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) { global $DB; $data = new stdClass(); $data->courseid = $this->courseid; $course = $DB->get_record('course', array('id' => $this->courseid)); $coursecontext = context_course::instance($course->id); $exporter = new course_summary_exporter($course, array('context' => $coursecontext)); $coursecompetencysettings = api::read_course_competency_settings($course->id); $data->pushratingstouserplans = $coursecompetencysettings->get_pushratingstouserplans(); $data->course = $exporter->export($output); $data->usercompetencies = array(); $scalecache = array(); $frameworkcache = array(); $user = core_user::get_user($this->userid); $exporter = new user_summary_exporter($user); $data->user = $exporter->export($output); $data->usercompetencies = array(); $coursecompetencies = api::list_course_competencies($this->courseid); $usercompetencycourses = api::list_user_competencies_in_course($this->courseid, $user->id); foreach ($usercompetencycourses as $usercompetencycourse) { $onerow = new stdClass(); $competency = null; foreach ($coursecompetencies as $coursecompetency) { if ($coursecompetency['competency']->get_id() == $usercompetencycourse->get_competencyid()) { $competency = $coursecompetency['competency']; break; } } if (!$competency) { continue; } // Fetch the framework. if (!isset($frameworkcache[$competency->get_competencyframeworkid()])) { $frameworkcache[$competency->get_competencyframeworkid()] = $competency->get_framework(); } $framework = $frameworkcache[$competency->get_competencyframeworkid()]; // Fetch the scale. $scaleid = $competency->get_scaleid(); if ($scaleid === null) { $scaleid = $framework->get_scaleid(); if (!isset($scalecache[$scaleid])) { $scalecache[$competency->get_scaleid()] = $framework->get_scale(); } } else { if (!isset($scalecache[$scaleid])) { $scalecache[$competency->get_scaleid()] = $competency->get_scale(); } } $scale = $scalecache[$competency->get_scaleid()]; $exporter = new user_competency_course_exporter($usercompetencycourse, array('scale' => $scale)); $record = $exporter->export($output); $onerow->usercompetencycourse = $record; $exporter = new competency_summary_exporter(null, array('competency' => $competency, 'framework' => $framework, 'context' => $framework->get_context(), 'relatedcompetencies' => array(), 'linkedcourses' => array())); $onerow->competency = $exporter->export($output); array_push($data->usercompetencies, $onerow); } return $data; }