Add new setting "NumberOfGradeBookToValidateInDependence" BT#13319

The setting will check the number of gradebooks to validate depending
the "DependsOnGradebook" list.
pull/2487/head
jmontoyaa 8 years ago
parent a5bcac29b6
commit 4b9479c30f
  1. 9
      main/admin/gradebook_dependency.php
  2. 26
      main/admin/gradebook_list.php
  3. 23
      main/gradebook/lib/be/category.class.php
  4. 1
      main/install/configuration.dist.php
  5. 8
      user_portal.php

@ -27,7 +27,6 @@ if (!$category) {
$categoryObj = Category::load($categoryId); $categoryObj = Category::load($categoryId);
/** @var Category $categoryObj */ /** @var Category $categoryObj */
$categoryObj = $categoryObj[0]; $categoryObj = $categoryObj[0];
$dependencies = $categoryObj->getCourseListDependency(); $dependencies = $categoryObj->getCourseListDependency();
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : ''; $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
@ -62,6 +61,7 @@ foreach ($mandatoryList as $courseMandatoryId) {
} }
$totalDependencies = count($dependencies); $totalDependencies = count($dependencies);
$min = $categoryObj->getMinimumToValidate(); $min = $categoryObj->getMinimumToValidate();
$gradeBooksToValidateInDependence = $categoryObj->getGradeBooksToValidateInDependence();
$userResult = []; $userResult = [];
$dependencyList = []; $dependencyList = [];
@ -114,7 +114,6 @@ foreach ($dependencyList as $courseId => $courseInfo) {
} else { } else {
$courseUserLoaded[$userId][$myCourseId] = true; $courseUserLoaded[$userId][$myCourseId] = true;
} }
//var_dump($myCourseCode);
$courseCategory = Category::load( $courseCategory = Category::load(
null, null,
@ -166,9 +165,6 @@ foreach ($dependencyList as $courseId => $courseInfo) {
} }
} }
} }
//$courseInfo['users'] = $users;
//$courseInfo['is_mandatory'] = in_array($courseCode, $mandatoryList);
$courseList[] = $courseInfo; $courseList[] = $courseInfo;
} }
@ -180,7 +176,8 @@ foreach ($userResult as $userId => &$userData) {
$userData['course_list_passed_out_dependency_count'] = count($userData['result_out_dependencies']); $userData['course_list_passed_out_dependency_count'] = count($userData['result_out_dependencies']);
// Min req must apply + mandatory should be 20 // Min req must apply + mandatory should be 20
//$userData['final_result'] = $total >= $min && $userData['result_mandatory_20'] == 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); $tpl->assign('current_url', $currentUrl);

@ -93,6 +93,11 @@ switch ($action) {
] ]
); );
$form->addText(
'gradebooks_to_validate_in_dependence',
get_lang('NumberOfGradebookToValidateInDependence')
);
$form->addText( $form->addText(
'minimum', 'minimum',
get_lang('MinimumGradebookToValidate'), get_lang('MinimumGradebookToValidate'),
@ -136,6 +141,11 @@ switch ($action) {
if (!empty($values['minimum'])) { if (!empty($values['minimum'])) {
$params['minimum_to_validate'] = (int) $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)) { if (!empty($params)) {
Database::update( Database::update(
$table, $table,
@ -169,7 +179,10 @@ switch ($action) {
$form->addText('weight', get_lang('Weight')); $form->addText('weight', get_lang('Weight'));
$form->addLabel(get_lang('Course'), $category->getCourseCode()); $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; FROM $table WHERE id = ".$categoryId;
$result = Database::query($sql); $result = Database::query($sql);
$categoryData = Database::fetch_array($result, 'ASSOC'); $categoryData = Database::fetch_array($result, 'ASSOC');
@ -193,6 +206,11 @@ switch ($action) {
] ]
); );
$form->addText(
'gradebooks_to_validate_in_dependence',
get_lang('NumberOfGradebookToValidateInDependence')
);
$form->addText( $form->addText(
'minimum', 'minimum',
get_lang('MinimumGradebookToValidate'), get_lang('MinimumGradebookToValidate'),
@ -203,6 +221,7 @@ switch ($action) {
$defaults = [ $defaults = [
'name' => $category->getName(), 'name' => $category->getName(),
'weight' => $category->getWeight(), 'weight' => $category->getWeight(),
'gradebooks_to_validate_in_dependence' => $categoryData['gradebooks_to_validate_in_dependence'],
'depends' => array_keys($options), 'depends' => array_keys($options),
'minimum' => $categoryData['minimum_to_validate'] 'minimum' => $categoryData['minimum_to_validate']
]; ];
@ -225,6 +244,11 @@ switch ($action) {
if (!empty($values['minimum'])) { if (!empty($values['minimum'])) {
$params['minimum_to_validate'] = (int) $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)) { if (!empty($params)) {
Database::update( Database::update(
$table, $table,

@ -27,7 +27,8 @@ class Category implements GradebookItem
private $isRequirement; private $isRequirement;
private $courseDependency; private $courseDependency;
private $minimumToValidate; private $minimumToValidate;
/** @var int */
private $gradeBooksToValidateInDependence;
public $studentList; public $studentList;
public $evaluations; public $evaluations;
public $links; public $links;
@ -563,6 +564,7 @@ class Category implements GradebookItem
$cat->setIsRequirement($data['is_requirement']); $cat->setIsRequirement($data['is_requirement']);
$cat->setCourseListDependency(isset($data['depends']) ? $data['depends'] : []); $cat->setCourseListDependency(isset($data['depends']) ? $data['depends'] : []);
$cat->setMinimumToValidate(isset($data['minimum_to_validate']) ? $data['minimum_to_validate'] : null); $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; $categories[] = $cat;
} }
@ -2597,4 +2599,23 @@ class Category implements GradebookItem
} }
Session::write('gradebook_dest', $url); 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;
}
} }

@ -595,6 +595,7 @@ $_configuration['score_grade_model'] = [
// Additional gradebook dependencies BT#13099 // Additional gradebook dependencies BT#13099
// ALTER TABLE gradebook_category ADD COLUMN depends TEXT DEFAULT NULL; // 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 minimum_to_validate INT DEFAULT NULL;
// ALTER TABLE gradebook_category ADD COLUMN gradebooks_to_validate_in_dependence INT DEFAULT NULL;
// $_configuration['gradebook_dependency'] = false; // $_configuration['gradebook_dependency'] = false;
// Courses id list to check in the gradebook sidebar see BT#13099 // Courses id list to check in the gradebook sidebar see BT#13099
/*$_configuration['gradebook_dependency_mandatory_courses'] = [ /*$_configuration['gradebook_dependency_mandatory_courses'] = [

@ -368,6 +368,7 @@ if ($allow) {
if (!empty($category)) { if (!empty($category)) {
$minToValidate = $category->getMinimumToValidate(); $minToValidate = $category->getMinimumToValidate();
$dependencies = $category->getCourseListDependency(); $dependencies = $category->getCourseListDependency();
$gradeBooksToValidateInDependence = $category->getGradeBooksToValidateInDependence();
$countDependenciesPassed = 0; $countDependenciesPassed = 0;
foreach ($dependencies as $courseId) { foreach ($dependencies as $courseId) {
$courseInfo = api_get_course_info_by_id($courseId); $courseInfo = api_get_course_info_by_id($courseId);
@ -386,9 +387,14 @@ if ($allow) {
} }
} }
$userFinished = /*$userFinished =
$countDependenciesPassed == count($dependencies) && $countDependenciesPassed == count($dependencies) &&
$countCoursesPassedNoDependency >= $minToValidate $countCoursesPassedNoDependency >= $minToValidate
;*/
$userFinished =
$countDependenciesPassed >= $gradeBooksToValidateInDependence &&
$countCoursesPassedNoDependency >= $minToValidate
; ;
if ($userFinished) { if ($userFinished) {

Loading…
Cancel
Save