From 4b9479c30fa0321e99b1f4398950b5dc10b2c4a9 Mon Sep 17 00:00:00 2001 From: jmontoyaa Date: Thu, 7 Sep 2017 10:34:29 +0200 Subject: [PATCH] Add new setting "NumberOfGradeBookToValidateInDependence" BT#13319 The setting will check the number of gradebooks to validate depending the "DependsOnGradebook" list. --- main/admin/gradebook_dependency.php | 9 +++----- main/admin/gradebook_list.php | 26 +++++++++++++++++++++++- main/gradebook/lib/be/category.class.php | 23 ++++++++++++++++++++- main/install/configuration.dist.php | 1 + user_portal.php | 8 +++++++- 5 files changed, 58 insertions(+), 9 deletions(-) diff --git a/main/admin/gradebook_dependency.php b/main/admin/gradebook_dependency.php index 621ccaa0d5..8dc06b9853 100644 --- a/main/admin/gradebook_dependency.php +++ b/main/admin/gradebook_dependency.php @@ -27,7 +27,6 @@ if (!$category) { $categoryObj = Category::load($categoryId); /** @var Category $categoryObj */ $categoryObj = $categoryObj[0]; - $dependencies = $categoryObj->getCourseListDependency(); $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : ''; @@ -62,6 +61,7 @@ foreach ($mandatoryList as $courseMandatoryId) { } $totalDependencies = count($dependencies); $min = $categoryObj->getMinimumToValidate(); +$gradeBooksToValidateInDependence = $categoryObj->getGradeBooksToValidateInDependence(); $userResult = []; $dependencyList = []; @@ -114,7 +114,6 @@ foreach ($dependencyList as $courseId => $courseInfo) { } else { $courseUserLoaded[$userId][$myCourseId] = true; } - //var_dump($myCourseCode); $courseCategory = Category::load( null, @@ -166,9 +165,6 @@ foreach ($dependencyList as $courseId => $courseInfo) { } } } - - //$courseInfo['users'] = $users; - //$courseInfo['is_mandatory'] = in_array($courseCode, $mandatoryList); $courseList[] = $courseInfo; } @@ -180,7 +176,8 @@ foreach ($userResult as $userId => &$userData) { $userData['course_list_passed_out_dependency_count'] = count($userData['result_out_dependencies']); // Min req must apply + mandatory should be 20 //$userData['final_result'] = $total >= $min && $userData['result_mandatory_20'] == 20; - $userData['final_result'] = $total >= $min && $courseListPassedDependency == $totalDependencies; + //$userData['final_result'] = $total >= $min && $courseListPassedDependency == $totalDependencies; + $userData['final_result'] = $total >= $min && $courseListPassedDependency >= $gradeBooksToValidateInDependence; } $tpl->assign('current_url', $currentUrl); diff --git a/main/admin/gradebook_list.php b/main/admin/gradebook_list.php index c4f63e7735..b2fd4e9558 100644 --- a/main/admin/gradebook_list.php +++ b/main/admin/gradebook_list.php @@ -93,6 +93,11 @@ switch ($action) { ] ); + $form->addText( + 'gradebooks_to_validate_in_dependence', + get_lang('NumberOfGradebookToValidateInDependence') + ); + $form->addText( 'minimum', get_lang('MinimumGradebookToValidate'), @@ -136,6 +141,11 @@ switch ($action) { if (!empty($values['minimum'])) { $params['minimum_to_validate'] = (int) $values['minimum']; } + + if (!empty($values['gradebooks_to_validate_in_dependence'])) { + $params['gradebooks_to_validate_in_dependence'] = (int) $values['gradebooks_to_validate_in_dependence']; + } + if (!empty($params)) { Database::update( $table, @@ -169,7 +179,10 @@ switch ($action) { $form->addText('weight', get_lang('Weight')); $form->addLabel(get_lang('Course'), $category->getCourseCode()); - $sql = "SELECT depends, minimum_to_validate + $sql = "SELECT + depends, + minimum_to_validate, + gradebooks_to_validate_in_dependence FROM $table WHERE id = ".$categoryId; $result = Database::query($sql); $categoryData = Database::fetch_array($result, 'ASSOC'); @@ -193,6 +206,11 @@ switch ($action) { ] ); + $form->addText( + 'gradebooks_to_validate_in_dependence', + get_lang('NumberOfGradebookToValidateInDependence') + ); + $form->addText( 'minimum', get_lang('MinimumGradebookToValidate'), @@ -203,6 +221,7 @@ switch ($action) { $defaults = [ 'name' => $category->getName(), 'weight' => $category->getWeight(), + 'gradebooks_to_validate_in_dependence' => $categoryData['gradebooks_to_validate_in_dependence'], 'depends' => array_keys($options), 'minimum' => $categoryData['minimum_to_validate'] ]; @@ -225,6 +244,11 @@ switch ($action) { if (!empty($values['minimum'])) { $params['minimum_to_validate'] = (int) $values['minimum']; } + + if (!empty($values['gradebooks_to_validate_in_dependence'])) { + $params['gradebooks_to_validate_in_dependence'] = (int) $values['gradebooks_to_validate_in_dependence']; + } + if (!empty($params)) { Database::update( $table, diff --git a/main/gradebook/lib/be/category.class.php b/main/gradebook/lib/be/category.class.php index 5a3a6cf16e..bb11cb068c 100755 --- a/main/gradebook/lib/be/category.class.php +++ b/main/gradebook/lib/be/category.class.php @@ -27,7 +27,8 @@ class Category implements GradebookItem private $isRequirement; private $courseDependency; private $minimumToValidate; - + /** @var int */ + private $gradeBooksToValidateInDependence; public $studentList; public $evaluations; public $links; @@ -563,6 +564,7 @@ class Category implements GradebookItem $cat->setIsRequirement($data['is_requirement']); $cat->setCourseListDependency(isset($data['depends']) ? $data['depends'] : []); $cat->setMinimumToValidate(isset($data['minimum_to_validate']) ? $data['minimum_to_validate'] : null); + $cat->setGradeBooksToValidateInDependence(isset($data['gradebooks_to_validate_in_dependence']) ? $data['gradebooks_to_validate_in_dependence'] : null); $categories[] = $cat; } @@ -2597,4 +2599,23 @@ class Category implements GradebookItem } Session::write('gradebook_dest', $url); } + + /** + * @return int + */ + public function getGradeBooksToValidateInDependence() + { + return $this->gradeBooksToValidateInDependence; + } + + /** + * @param int $value + * @return Category + */ + public function setGradeBooksToValidateInDependence($value) + { + $this->gradeBooksToValidateInDependence = $value; + + return $this; + } } diff --git a/main/install/configuration.dist.php b/main/install/configuration.dist.php index 1318ec095b..d6b2fd114a 100755 --- a/main/install/configuration.dist.php +++ b/main/install/configuration.dist.php @@ -595,6 +595,7 @@ $_configuration['score_grade_model'] = [ // Additional gradebook dependencies BT#13099 // ALTER TABLE gradebook_category ADD COLUMN depends TEXT DEFAULT NULL; // ALTER TABLE gradebook_category ADD COLUMN minimum_to_validate INT DEFAULT NULL; +// ALTER TABLE gradebook_category ADD COLUMN gradebooks_to_validate_in_dependence INT DEFAULT NULL; // $_configuration['gradebook_dependency'] = false; // Courses id list to check in the gradebook sidebar see BT#13099 /*$_configuration['gradebook_dependency_mandatory_courses'] = [ diff --git a/user_portal.php b/user_portal.php index f8bf481d06..2e1b44b81b 100755 --- a/user_portal.php +++ b/user_portal.php @@ -368,6 +368,7 @@ if ($allow) { if (!empty($category)) { $minToValidate = $category->getMinimumToValidate(); $dependencies = $category->getCourseListDependency(); + $gradeBooksToValidateInDependence = $category->getGradeBooksToValidateInDependence(); $countDependenciesPassed = 0; foreach ($dependencies as $courseId) { $courseInfo = api_get_course_info_by_id($courseId); @@ -386,9 +387,14 @@ if ($allow) { } } - $userFinished = + /*$userFinished = $countDependenciesPassed == count($dependencies) && $countCoursesPassedNoDependency >= $minToValidate + ;*/ + + $userFinished = + $countDependenciesPassed >= $gradeBooksToValidateInDependence && + $countCoursesPassedNoDependency >= $minToValidate ; if ($userFinished) {