\Course::class, 'foreign_key' => 'course_id', ]; $config['has_many']['instances'] = [ 'class_name' => Instance::class, 'assoc_foreign_key' => 'definition_id', 'on_delete' => 'delete', 'on_store' => 'store', ]; parent::configure($config); } public static function getCategoriesByCourse(\Course $course) { $query = 'SELECT category FROM grading_definitions WHERE course_id = ? GROUP BY category ORDER BY category ASC'; $stmt = \DBManager::get()->prepare($query); $stmt->execute([$course->id]); $categories = $stmt->fetchAll(\PDO::FETCH_COLUMN); $customIndex = array_search(self::CUSTOM_DEFINITIONS_CATEGORY, $categories); if (false !== $customIndex) { unset($categories[$customIndex]); array_unshift($categories, self::CUSTOM_DEFINITIONS_CATEGORY); } return $categories; } public static function findByCourse(\Course $course) { return Definition::findBySQL('course_id = ? ORDER BY position ASC, name ASC', [$course->id]); } public function toLineItem() : LineItemInterface { //Build the resource link identifier first: $studip_ids = explode('-', $this->tool ?? ''); $tool_id = $studip_ids[1] ?? ''; $deployment_id = $studip_ids[2] ?? ''; $resource_link_identifier = sprintf('%s_%s_%s', $tool_id, $deployment_id, $this->course_id); $identifier = \URLHelper::getURL( 'dispatch.php/lti/ags/line_item', [ 'cid' => $this->course_id, 'definition_id' => $this->id, 'deployment_id' => $deployment_id, 'tool_id' => $tool_id ] ); return new LineItem( PHP_FLOAT_MAX, $this->name, $identifier, $deployment_id, $resource_link_identifier ); } }