Gradebook: Create root course gradebook upon course creation - refs #5278

pull/5293/head
Yannick Warnier 2 years ago
parent 90cb87c68b
commit 589d8acbc6
  1. 59
      public/main/inc/lib/add_course.lib.inc.php

@ -249,6 +249,7 @@ class AddCourse
self::insertCourseSettings($course);
self::createGroupCategory($course);
$gradebook = self::createRootGradebook($course);
if ($fillWithExemplaryContent ?? api_get_setting('example_material_course_creation') !== 'false') {
self::insertExampleContent($course, $authorId, $entityManager);
@ -361,11 +362,12 @@ class AddCourse
*
* @param Course $course The course object into which the example content will be inserted.
* @param int $authorId The ID of the user who will be listed as the author of the inserted content.
* @param GradebookCategory $gradebook
*
* @return void
* @throws Exception
*/
private static function insertExampleContent(Course $course, int $authorId): void
private static function insertExampleContent(Course $course, int $authorId, GradebookCategory $gradebook): void
{
$now = api_get_utc_datetime();
$files = [
@ -560,7 +562,7 @@ class AddCourse
saveThread($forumEntity, $params, $courseInfo, false);
self::createGradebookStructure($course, $exercise->id);
self::createExampleGradebookContent($course, $gradebook, $exercise->id);
}
/**
@ -576,27 +578,13 @@ class AddCourse
*
* @return void
*/
private static function createGradebookStructure(Course $course, int $refId): void
private static function createExampleGradebookContent(Course $course, GradebookCategory $parentCategory, int $refId): void
{
$manager = Database::getManager();
/* Gradebook tool */
$courseCode = $course->getCode();
$parentGradebookCategory = new GradebookCategory();
$parentGradebookCategory->setTitle($courseCode);
$parentGradebookCategory->setLocked(0);
$parentGradebookCategory->setGenerateCertificates(false);
$parentGradebookCategory->setDescription('');
$parentGradebookCategory->setCourse($course);
$parentGradebookCategory->setWeight(100);
$parentGradebookCategory->setVisible(false);
$parentGradebookCategory->setCertifMinScore(75);
$parentGradebookCategory->setUser(api_get_user_entity());
$manager->persist($parentGradebookCategory);
$manager->flush();
$childGradebookCategory = new GradebookCategory();
$childGradebookCategory->setTitle($courseCode);
$childGradebookCategory->setLocked(0);
@ -606,7 +594,7 @@ class AddCourse
$childGradebookCategory->setWeight(100);
$childGradebookCategory->setVisible(true);
$childGradebookCategory->setCertifMinScore(75);
$childGradebookCategory->setParent($parentGradebookCategory);
$childGradebookCategory->setParent($parentCategory);
$childGradebookCategory->setUser(api_get_user_entity());
$manager->persist($childGradebookCategory);
@ -628,6 +616,41 @@ class AddCourse
$manager->flush();
}
/**
* Creates the basic gradebook structure for a course.
*
* This method sets up the initial gradebook categories and links for a new course.
* It creates a parent gradebook category representing the course itself.
*
* @param Course $course The course entity for which the gradebook structure will be created.
*
* @return GradebookCategory The created gradebook's ID
* @throws \Doctrine\ORM\Exception\ORMException
*/
private static function createRootGradebook(Course $course): GradebookCategory
{
$manager = Database::getManager();
/* Gradebook tool */
$courseCode = $course->getCode();
$parentGradebookCategory = new GradebookCategory();
$parentGradebookCategory->setTitle($courseCode);
$parentGradebookCategory->setLocked(0);
$parentGradebookCategory->setGenerateCertificates(false);
$parentGradebookCategory->setDescription('');
$parentGradebookCategory->setCourse($course);
$parentGradebookCategory->setWeight(100);
$parentGradebookCategory->setVisible(false);
$parentGradebookCategory->setCertifMinScore(75);
$parentGradebookCategory->setUser(api_get_user_entity());
$manager->persist($parentGradebookCategory);
$manager->flush();
return $parentGradebookCategory;
}
/**
* Installs plugins for a given course.
*

Loading…
Cancel
Save