123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?php
- /**
- * This script synchronize the exercise score (track_e_exercises.exe_result)
- * with the LP score result (lp_item_view.score).
- * This script works only if 1 there's one attempt
- */
- exit;
- require_once '../../main/inc/global.inc.php';
- api_protect_admin_script();
- $tableExercise = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES);
- $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE);
- $sql = "SELECT
- exe_id,
- exe_result,
- exe_user_id,
- exe_result,
- exe_exo_id,
- orig_lp_id,
- orig_lp_item_view_id,
- c_id,
- c.code,
- c.id real_id,
- session_id
- FROM $tableExercise t INNER JOIN $tableCourse c
- ON c.id = t.c_id
- WHERE orig_lp_id != '' AND orig_lp_item_view_id = 0 AND status = ''
- ORDER by session_id, c_id, exe_user_id, orig_lp_id, exe_exo_id
- ";
- $result = Database::query($sql);
- $items = Database::store_result($result, 'ASSOC');
- if (!empty($items)) {
- foreach ($items as $item) {
- $exeId = $item['exe_id'];
- $lpId = $item['orig_lp_id'];
- $userId = $item['exe_user_id'];
- $courseId = $item['real_id'];
- $courseCode = $item['code'];
- $sessionId = $item['session_id'];
- $url = api_get_path(WEB_CODE_PATH)."mySpace/myStudents.php?student=$userId&details=true&course=$courseCode&origin=&id_session=$sessionId";
- echo "Check user page: ". Display::url($url, $url);
- echo '<br />';
- $lp = new learnpath($item['code'], $lpId, $userId);
- /** @var learnpathItem $lpItem */
- foreach ($lp->items as $lpItem) {
- if ($lpItem->get_type() == 'quiz' &&
- $lpItem->get_path() == $item['exe_exo_id']
- ) {
- $lpItemId = $lpItem->get_id();
- $table = Database::get_course_table(TABLE_LP_ITEM_VIEW);
- $tableView = Database::get_course_table(TABLE_LP_VIEW);
- $sql = "SELECT *, iv.id lp_item_view_id FROM $table iv INNER JOIN $tableView v
- ON iv.c_id = v.c_id AND iv.lp_view_id = v.id
- WHERE
- lp_item_id = $lpItemId AND
- iv.c_id = $courseId AND
- status = 'completed' AND
- user_id = $userId AND
- lp_id = $lpId AND
- session_id = $sessionId
- ";
- $result = Database::query($sql);
- $attempts = Database::store_result($result, 'ASSOC');
- var_dump($sql);
- echo '<br />';
- $count = count($attempts);
- if ($count == 1) {
- $attempt = current($attempts);
- $score = $item['exe_result'];
- /* The attempt has empty exe_result and the LP is good
- there must be another attempt, do nothing. */
- if ((empty($item['exe_result']) || $item['exe_result'] == 0) && !empty($attempt['score'])) {
- var_dump('Skipped');
- echo '<br />';
- continue;
- }
- echo "Score: ".$attempt['score']. ' - '.$item['exe_result'].'<br />';
- $itemViewId = $attempt['lp_item_view_id'];
- $sql = "UPDATE $table SET
- score = $score
- WHERE
- id = $itemViewId AND
- lp_item_id = $lpItemId AND
- c_id = $courseId AND
- ";
- //Database::query($sql);
- var_dump($sql);
- echo '<br />';
- $sql = "UPDATE $tableExercise
- SET orig_lp_item_view_id = $itemViewId
- WHERE exe_id = $exeId";
- //Database::query($sql);
- var_dump($sql);
- echo '<br />';
- } else {
- echo 'Cannot update multiple attempts checking attempts:<br />';
- foreach ($attempts as $attempt) {
- if ($attempt['score'] == $item['exe_result']) {
- /*echo "Score: ".$attempt['score']. ' - '.$item['exe_result'].'<br />';
- $itemViewId = $attempt['id'];
- $sql = "UPDATE $tableExercise
- SET orig_lp_item_view_id = $itemViewId
- WHERE exe_id = $exeId";
- //Database::query($sql);
- var_dump($sql);
- echo '<br />';*/
- }
- }
- }
- }
- }
- echo '<br />';
- }
- }
|