Add scripts to create item property for exercises

pull/3223/head
Julio Montoya 5 years ago
parent 352268837f
commit 516dd6fd10
  1. 92
      tests/scripts/fix_exercise_no_itemproperty.php
  2. 109
      tests/scripts/fix_exercise_no_itemproperty_check_session.php

@ -0,0 +1,92 @@
<?php
/* For licensing terms, see /license.txt */
exit;
/**
* Fixes course base exercises with no item property.
*/
error_reporting(0);
require_once __DIR__.'/../../main/inc/global.inc.php';
$sql = 'SELECT id FROM course ';
$result = Database::query($sql);
$fix = false;
$userId = 1;
while ($row = Database::fetch_array($result, 'ASSOC')) {
$courseId = $row['id'];
$courseInfo = api_get_course_info_by_id($courseId);
if (empty($courseInfo)) {
continue;
}
$exerciseList = ExerciseLib::get_all_exercises_for_course_id(
$courseInfo,
0,
$courseId,
false
);
if (empty($exerciseList)) {
continue;
}
$counter = 0;
$emptyCounter = 0;
$fixed = 0;
foreach ($exerciseList as $exerciseItem) {
$oldId = $exerciseItem['id'];
$exerciseId = $exerciseItem['iid'];
if ($oldId <> $exerciseId) {
continue;
}
$oldVisibility = api_get_item_visibility(
$courseInfo,
TOOL_QUIZ,
$oldId,
0
);
$visibility = api_get_item_visibility(
$courseInfo,
TOOL_QUIZ,
$exerciseId,
0
);
if (-1 === $visibility && -1 === $oldVisibility) {
if ($fix) {
api_item_property_update(
$courseInfo,
TOOL_QUIZ,
$exerciseId,
'QuizUpdated',
$userId,
null,
null,
null,
null,
0
);
echo "Fix exercise iid = $exerciseId / ".$exerciseItem['title'].PHP_EOL;
$fixed++;
}
$emptyCounter++;
}
$counter++;
}
if ($emptyCounter > 0) {
echo 'Course: '.$courseId.' - '.$courseInfo['title'].PHP_EOL.PHP_EOL;
echo $emptyCounter.' / ' . $counter.PHP_EOL;
echo 'To be fix: ' . $emptyCounter.PHP_EOL;
}
// Fix exercise in session
}

@ -0,0 +1,109 @@
<?php
/* For licensing terms, see /license.txt */
exit;
error_reporting(0);
require_once __DIR__.'/../../main/inc/global.inc.php';
$sql = 'SELECT id FROM course order by id';
$result = Database::query($sql);
$fix = true;
$table = Database::get_course_table(TABLE_QUIZ_TEST);
while ($row = Database::fetch_array($result, 'ASSOC')) {
$courseId = $row['id'];
$courseInfo = api_get_course_info_by_id($courseId);
if (empty($courseInfo)) {
continue;
}
// Not only active means visible and invisible NOT deleted (-2)
$sql_active_exercises = "active IN (1, 0) AND ";
$params = [
$courseId,
];
// All exercises
$conditions = [
'where' => ["$sql_active_exercises (session_id <> 0 ) AND c_id = ? " => $params],
'order' => 'title',
];
$exerciseList = Database::select('*', $table, $conditions);
if (empty($exerciseList)) {
continue;
}
$counter = 0;
$emptyCounter = 0;
$fixed = 0;
$userId = 1;
foreach ($exerciseList as $exerciseItem) {
$oldId = $exerciseItem['id'];
$exerciseId = $exerciseItem['iid'];
$sessionId = $exerciseItem['session_id'];
if ($oldId <> $exerciseId) {
// continue;
}
$oldVisibility = api_get_item_visibility(
$courseInfo,
TOOL_QUIZ,
$oldId,
$sessionId
);
$visibility = api_get_item_visibility(
$courseInfo,
TOOL_QUIZ,
$exerciseId,
$sessionId
);
if (-1 === $visibility && -1 === $oldVisibility) {
if ($fix) {
api_item_property_update(
$courseInfo,
TOOL_QUIZ,
$exerciseId,
'QuizUpdated',
$userId,
null,
null,
null,
null,
$sessionId
);
echo "Fix exercise iid = $exerciseId / ".$exerciseItem['title'].PHP_EOL;
$fixed++;
}
echo "check session: $sessionId exercise iid = $exerciseId / ".$exerciseItem['title'].PHP_EOL;
$emptyCounter++;
} else {
// echo "Ref exists: visibility: ".$visibility['visibility']." session: $sessionId check exercise iid = $exerciseId / ".$exerciseItem['title'].PHP_EOL;
}
$counter++;
}
if ($emptyCounter > 0) {
echo 'Course: '.$courseId.' - '.$courseInfo['title'].PHP_EOL.PHP_EOL;
echo $emptyCounter.'/ ' . $counter.PHP_EOL;
echo 'To be fix: ' . $emptyCounter.PHP_EOL;
exit;
}
}
Loading…
Cancel
Save