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