/** * Convenience method to instantiate the event. * * @param competency $competency The competency. * @return self */ public static function create_from_competency(competency $competency) { if (!$competency->get_id()) { throw new \coding_exception('The competency ID must be set.'); } $event = static::create(array('contextid' => $competency->get_context()->id, 'objectid' => $competency->get_id())); $event->add_record_snapshot(competency::TABLE, $competency->to_record()); return $event; }
/** * Construct this renderable. * * @param \core_competency\competency $competency Competency persistent. * @param \core_competency\competency_framework $framework framework persistent. * @param boolean $includerelated Include or not related competencies. * @param boolean $includecourses Include or not competency courses. */ public function __construct($competency, $framework, $includerelated, $includecourses) { $this->competency = $competency; $this->framework = $framework; if ($includerelated) { $this->relatedcompetencies = api::list_related_competencies($competency->get_id()); } if ($includecourses) { $this->courses = api::list_courses_using_competency($competency->get_id()); } }
/** * List the competencies in this course. * * @param int $courseid The course id * @return competency[] Indexed by competency ID. */ public static function list_competencies($courseid) { global $DB; $sql = 'SELECT comp.* FROM {' . competency::TABLE . '} comp JOIN {' . self::TABLE . '} coursecomp ON coursecomp.competencyid = comp.id WHERE coursecomp.courseid = ?'; $params = array($courseid); $sql .= ' ORDER BY coursecomp.sortorder ASC'; $results = $DB->get_recordset_sql($sql, $params); $instances = array(); foreach ($results as $result) { $comp = new competency(0, $result); $instances[$comp->get_id()] = $comp; } $results->close(); return $instances; }
/** * Add a related competency. * * @param int $competencyid The id of the competency * @param int $relatedcompetencyid The id of the related competency. * @return bool False when create failed, true on success, or if the relation already existed. */ public static function add_related_competency($competencyid, $relatedcompetencyid) { static::require_enabled(); $competency1 = new competency($competencyid); $competency2 = new competency($relatedcompetencyid); require_capability('moodle/competency:competencymanage', $competency1->get_context()); $relatedcompetency = related_competency::get_relation($competency1->get_id(), $competency2->get_id()); if (!$relatedcompetency->get_id()) { $relatedcompetency->create(); return true; } return true; }
/** * Get descendant ids. * * @param competency $competency The competency. * @return array Array of competencies ids. */ public static function get_descendants_ids($competency) { global $DB; $path = $DB->sql_like_escape($competency->get_path() . $competency->get_id() . '/') . '%'; $like = $DB->sql_like('path', ':likepath'); return $DB->get_fieldset_select(self::TABLE, 'id', $like, array('likepath' => $path)); }