parent
352268837f
commit
516dd6fd10
@ -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…
Reference in new issue