Check if exercise item step is completed in other sessions see BT#15930

pull/2970/head
Julio Montoya 6 years ago
parent 248dc52cb9
commit caeacdd6b7
  1. 135
      main/lp/learnpathItem.class.php

@ -1511,62 +1511,22 @@ class learnpathItem
c_id = $course_id AND
iid = '".$this->db_item_view_id."' AND
view_count = '".$this->get_attempt_id()."'";
if ($debug > 2) {
error_log(
'learnpathItem::get_status() - Checking DB: '.$sql,
0
);
}
$res = Database::query($sql);
if (Database::num_rows($res) == 1) {
$row = Database::fetch_array($res);
if ($update_local) {
if ($debug > 2) {
error_log(
'learnpathItem::set_status() :'.$row['status'],
0
);
}
$this->set_status($row['status']);
}
if ($debug > 2) {
error_log(
'learnpathItem::get_status() - Returning db value '.$row['status'],
0
);
}
return $row['status'];
}
}
} else {
if ($debug > 2) {
error_log(
'learnpathItem::get_status() - in get_status: using attrib',
0
);
}
if (!empty($this->status)) {
if ($debug > 2) {
error_log(
'learnpathItem::get_status() - Returning attrib: '.$this->status,
0
);
}
return $this->status;
}
}
if ($debug > 2) {
error_log(
'learnpathItem::get_status() - Returning default '.$this->possible_status[0],
0
);
}
return $this->possible_status[0];
}
@ -1602,12 +1562,12 @@ class learnpathItem
if (!isset($time)) {
if ($origin == 'js') {
return '00 : 00: 00';
} else {
return '00 '.$h.' 00 \' 00"';
}
} else {
return api_format_time($time, $origin);
return '00 '.$h.' 00 \' 00"';
}
return api_format_time($time, $origin);
}
/**
@ -2370,13 +2330,6 @@ class learnpathItem
} else {
// Nothing found there either. Now return the
// value of the corresponding resource completion status.
if ($debug) {
error_log(
'New LP - Didnt find any group, returning value for '.$prereqs_string,
0
);
}
if (isset($refs_list[$prereqs_string]) &&
isset($items[$refs_list[$prereqs_string]])
) {
@ -2394,26 +2347,12 @@ class learnpathItem
$itemToCheck->get_title()
);
$this->prereq_alert = $explanation;
if ($debug) {
error_log(
'New LP - Prerequisite '.$prereqs_string.' not complete',
0
);
}
} else {
if ($debug) {
error_log(
'New LP - Prerequisite '.$prereqs_string.' complete',
0
);
}
}
// For one and first attempt.
if ($this->prevent_reinit == 1) {
// 2. If is completed we check the results in the DB of the quiz.
if ($returnstatus) {
//AND origin_lp_item_id = '.$user_id.'
$sql = 'SELECT exe_result, exe_weighting
FROM '.Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES).'
WHERE
@ -2432,14 +2371,6 @@ class learnpathItem
$minScore = $myItemToCheck->getPrerequisiteMinScore();
$maxScore = $myItemToCheck->getPrerequisiteMaxScore();
/*if (empty($minScore)) {
// Try with mastery_score
$masteryScoreAsMin = $myItemToCheck->get_mastery_score();
if (!empty($masteryScoreAsMin)) {
$minScore = $masteryScoreAsMin;
}
}*/
if (isset($minScore) && isset($minScore)) {
// Taking min/max prerequisites values see BT#5776
if ($quiz['exe_result'] >= $minScore &&
@ -2535,6 +2466,18 @@ class learnpathItem
}
}
if ($returnstatus === false) {
// Check results from another sessions.
$checkOtherSessions = api_get_configuration_value('validate_lp_prerequisite_from_other_session');
if ($checkOtherSessions) {
$returnstatus = $this->getStatusFromOtherSessions(
$user_id,
$prereqs_string,
$refs_list
);
}
}
return $returnstatus;
} elseif ($itemToCheck->type === 'student_publication') {
require_once api_get_path(SYS_CODE_PATH).'work/work.lib.php';
@ -2545,12 +2488,6 @@ class learnpathItem
} else {
$returnstatus = false;
$this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
if (self::DEBUG > 1) {
error_log(
'Student pub, prereq'.$prereqs_string.' not completed',
0
);
}
}
return $returnstatus;
@ -2574,19 +2511,6 @@ class learnpathItem
$itemToCheck->get_title()
);
$this->prereq_alert = $explanation;
if (self::DEBUG > 1) {
error_log(
'New LP - Prerequisite '.$prereqs_string.' not complete',
0
);
}
} else {
if (self::DEBUG > 1) {
error_log(
'New LP - Prerequisite '.$prereqs_string.' complete',
0
);
}
}
$lp_item_view = Database::get_course_table(TABLE_LP_ITEM_VIEW);
@ -2619,17 +2543,6 @@ class learnpathItem
if (!$returnstatus && empty($this->prereq_alert)) {
$this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
}
if (!$returnstatus) {
if (self::DEBUG > 1) {
error_log(
'New LP - Prerequisite '.$prereqs_string.' not complete'
);
}
} else {
if (self::DEBUG > 1) {
error_log('New LP - Prerequisite '.$prereqs_string.' complete');
}
}
}
if ($checkOtherSessions && $returnstatus === false) {
@ -2639,21 +2552,9 @@ class learnpathItem
$refs_list
);
}
return $returnstatus;
} else {
return $returnstatus;
}
}
} else {
if (self::DEBUG > 1) {
error_log(
'New LP - Could not find '.$prereqs_string.' in '.print_r(
$refs_list,
true
),
0
);
return $returnstatus;
}
}
}

Loading…
Cancel
Save