123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- <?php
- /* For licensing terms, see /license.txt */
- /**
- * This script fixes use of id instead of iid for the learning path
- */
- exit;
- require_once '../../main/inc/global.inc.php';
- /** @var int $courseId */
- $onlyCourseId = 0;
- /** @var int $lpId lp id */
- $lpId = 0;
- $courses = Database::select('id, title, code', Database::get_main_table(TABLE_MAIN_COURSE));
- $tblCLp = Database::get_course_table(TABLE_LP_MAIN);
- $tblCLpItem = Database::get_course_table(TABLE_LP_ITEM);
- $toolTable = Database::get_course_table(TABLE_TOOL_LIST);
- // Start custom changes
- // Delete inconsistencies from old base
- $sql = 'DELETE FROM c_lp_item_view WHERE c_id = 0';
- Database::query($sql);
- var_dump($sql);
- error_log($sql);
- // This is a custom change, probably you don't needed it in your script (removing an empty attempt)
- $sql = 'DELETE FROM c_lp_item_view WHERE lp_view_id = 18 and c_id = 4';
- Database::query($sql);
- var_dump($sql);
- error_log($sql);
- $sql = 'DELETE FROM c_lp_view where id = 18 and c_id = 4';
- Database::query($sql);
- var_dump($sql);
- error_log($sql);
- ///update c_lp_item_view set status = 'not attempted', suspend_data = null where iid = 2148;
- // end custom changes
- $sessions = Database::select('id', Database::get_main_table(TABLE_MAIN_SESSION));
- if (!empty($sessions)) {
- $sessions = array_column($sessions, 'id');
- // Add session_id = 0
- $sessions[] = 0;
- } else {
- $sessions = [0];
- }
- foreach ($courses as $course) {
- if (!empty($onlyCourseId)) {
- if ($onlyCourseId != $course['id']) {
- continue;
- }
- }
- $courseId = $course['id'];
- $sql = "SELECT * FROM $tblCLp WHERE c_id = $courseId ORDER by iid";
- echo 'Select all lps';
- var_dump($sql);
- error_log($sql);
- $result = Database::query($sql);
- $myOnlyLpList = [];
- if (Database::num_rows($result)) {
- while ($lpInfo = Database::fetch_array($result, 'ASSOC')) {
- $lpIid = $lpInfo['iid'];
- $oldId = $lpInfo['id'];
- $sql = "SELECT * FROM $tblCLpItem
- WHERE c_id = $courseId AND lp_id = $oldId ORDER by iid";
- //echo "<h3>$sql</h3>";
- //echo "New lp.iid $lpIid / old lp.id $oldId";
- $items = Database::store_result(Database::query($sql),'ASSOC');
- $lpInfo['lp_list'] = $items;
- $myOnlyLpList[] = $lpInfo;
- }
- }
- if (!empty($myOnlyLpList)) {
- foreach ($myOnlyLpList as $lpInfo) {
- $lpIid = $lpInfo['iid'];
- $oldId = $lpInfo['id'];
- if (!empty($lpId)) {
- if ($lpId != $oldId) {
- continue;
- }
- }
- if (empty($lpInfo['lp_list'])) {
- continue;
- }
- $items = $lpInfo['lp_list'];
- $itemList = [];
- foreach ($items as $subItem) {
- $itemList[$subItem['id']] = $subItem['iid'];
- }
- $variablesToFix = [
- 'parent_item_id',
- 'next_item_id',
- 'prerequisite',
- 'previous_item_id'
- ];
- foreach ($sessions as $sessionId) {
- $correctLink = "lp/lp_controller.php?action=view&lp_id=$lpIid&id_session=$sessionId";
- $link = "newscorm/lp_controller.php?action=view&lp_id=$oldId&id_session=$sessionId";
- $secondLink = "lp/lp_controller.php?action=view&lp_id=$oldId&id_session=$sessionId";
- $sql = "UPDATE $toolTable
- SET link = '$correctLink'
- WHERE
- c_id = $courseId AND
- (link = '$link' OR link ='$secondLink' )";
- Database::query($sql);
- }
- foreach ($items as $item) {
- $itemIid = $item['iid'];
- $itemId = $item['id'];
- foreach ($variablesToFix as $variable) {
- if (!empty($item[$variable]) && isset($itemList[$item[$variable]])) {
- $newId = $itemList[$item[$variable]];
- $sql = "UPDATE $tblCLpItem SET $variable = $newId
- WHERE iid = $itemIid AND c_id = $courseId AND lp_id = $oldId";
- Database::query($sql);
- var_dump($sql);
- }
- }
- // c_lp_view
- $sql = "UPDATE c_lp_view SET last_item = $itemIid
- WHERE c_id = $courseId AND last_item = $itemId AND lp_id = $oldId";
- Database::query($sql);
- var_dump($sql);
- // c_lp_item_view
- $sql = "UPDATE c_lp_item_view SET lp_item_id = $itemIid
- WHERE c_id = $courseId AND lp_item_id = $itemId ";
- Database::query($sql);
- var_dump($sql);
- // Update track_exercises
- $sql = "UPDATE track_e_exercises SET orig_lp_item_id = $itemIid
- WHERE c_id = $courseId AND orig_lp_id = $oldId AND orig_lp_item_id = $itemId";
- Database::query($sql);
- var_dump($sql);
- // c_forum_thread
- $sql = "UPDATE c_forum_thread SET lp_item_id = $itemIid
- WHERE c_id = $courseId AND lp_item_id = $itemId";
- Database::query($sql);
- var_dump($sql);
- // orig_lp_item_view_id
- $sql = "SELECT * FROM c_lp_view
- WHERE c_id = $courseId AND lp_id = $oldId AND id <> iid";
- error_log($sql);
- $viewList = Database::store_result(Database::query($sql),'ASSOC');
- if ($viewList) {
- error_log("c_lp_view list: ".count( $viewList));
- foreach ($viewList as $view) {
- $oldViewId = $view['id'];
- $newViewId = $prefixViewId = $view['iid'];
- $userId = $view['user_id'];
- if (empty($oldViewId)) {
- continue;
- }
- $view['iid'] = null;
- // Create new c_lp_view to avoid conflicts
- $newViewId = Database::insert('c_lp_view', $view);
- var_dump($newViewId);
- if (empty($newViewId)) {
- continue;
- }
- $sql = "UPDATE c_lp_view SET id = iid WHERE iid = $newViewId";
- Database::query($sql);
- // Delete old c_lp_view
- $sql = "DELETE FROM c_lp_view WHERE id = $oldViewId AND iid = $prefixViewId ";
- Database::query($sql);
- $sql = "UPDATE track_e_exercises
- SET orig_lp_item_view_id = $newViewId
- WHERE
- c_id = $courseId AND
- orig_lp_id = $oldId AND
- orig_lp_item_id = $itemIid AND
- orig_lp_item_view_id = $oldViewId AND
- exe_user_id = $userId
- ";
- Database::query($sql);
- var_dump($sql);
- $sql = "SELECT * FROM c_lp_item_view WHERE lp_view_id = $oldViewId AND c_id = $courseId ";
- error_log($sql);
- $list = Database::store_result(Database::query($sql),'ASSOC');
- if (!empty($list)) {
- foreach ($list as $itemView) {
- $itemView['lp_view_id'] = $newViewId;
- $itemView['iid'] = null;
- //var_dump($itemView);
- $itemViewId = Database::insert('c_lp_item_view', $itemView);
- if ($itemViewId) {
- $sql = "UPDATE c_lp_item_view SET id = iid WHERE iid = $itemViewId";
- var_dump($sql);
- Database::query($sql);
- }
- }
- $sql = "DELETE FROM c_lp_item_view WHERE lp_view_id = $oldViewId AND c_id = $courseId";
- Database::query($sql);
- var_dump($sql);
- }
- /*$sql = "UPDATE c_lp_item_view
- SET lp_view_id = $newViewId
- WHERE
- lp_view_id = $oldViewId AND
- lp_item_id = $itemIid AND
- c_id = $courseId
- ";
- Database::query($sql);*/
- /*$sql = "UPDATE c_lp_view SET id = iid
- WHERE id = $oldViewId ";
- Database::query($sql);*/
- }
- }
- $sql = "UPDATE $tblCLpItem SET lp_id = $lpIid
- WHERE c_id = $courseId AND lp_id = $oldId AND id = $itemId";
- Database::query($sql);
- var_dump($sql);
- $sql = "UPDATE $tblCLpItem SET id = iid
- WHERE c_id = $courseId AND lp_id = $oldId AND id = $itemId";
- Database::query($sql);
- var_dump($sql);
- }
- $sql = "UPDATE c_lp_view SET lp_id = $lpIid WHERE c_id = $courseId AND lp_id = $oldId";
- Database::query($sql);
- var_dump($sql);
- $sql = "UPDATE c_forum_forum SET lp_id = $lpIid WHERE c_id = $courseId AND lp_id = $oldId";
- Database::query($sql);
- var_dump($sql);
- // Update track_exercises
- $sql = "UPDATE track_e_exercises SET orig_lp_id = $lpIid
- WHERE c_id = $courseId AND orig_lp_id = $oldId";
- Database::query($sql);
- var_dump($sql);
- $sql = "UPDATE $tblCLp SET id = iid WHERE c_id = $courseId AND id = $oldId ";
- Database::query($sql);
- var_dump($sql);
- }
- }
- }
- echo 'finished';
- error_log('finished');
|