diff --git a/main/install/install.lib.php b/main/install/install.lib.php index 80a970298b..cc68ee52d9 100755 --- a/main/install/install.lib.php +++ b/main/install/install.lib.php @@ -3191,80 +3191,8 @@ function migrateSwitch($fromVersion, $manager, $processFiles = true) if ($result) { error_log('Migrations files were executed ('.date('Y-m-d H:i:s').')'); - $connection->executeQuery("ALTER TABLE course_category MODIFY COLUMN auth_course_child VARCHAR(40) DEFAULT 'TRUE'"); - - error_log('Fix c_student_publication.post_group_id'); - - // Fix post_group_id - $sql = "SELECT * FROM c_student_publication WHERE (post_group_id <> 0 AND post_group_id is not null)"; - $statement = $connection->executeQuery($sql); - $result = $statement->fetchAll(); - foreach ($result as $row) { - $groupId = $row['post_group_id']; - $courseId = $row['c_id']; - $workIid = $row['iid']; - $sql = "SELECT iid from c_group_info WHERE c_id = $courseId AND iid = $groupId"; - $statement = $connection->executeQuery($sql); - $count = $statement->rowCount(); - if ($count == 0) { - $sql = "SELECT iid from c_group_info WHERE c_id = $courseId AND id = $groupId"; - $statement = $connection->executeQuery($sql); - $count = $statement->rowCount(); - if ($count > 0) { - $rowGroup = $statement->fetch(); - $newGroupId = $rowGroup['iid']; - if ($newGroupId) { - $sqlUpdate = "UPDATE c_student_publication - SET post_group_id = $newGroupId - WHERE - c_id = $courseId AND - iid = $workIid - "; - $connection->executeQuery($sqlUpdate); - } - } - } - } - error_log('End - Fix c_student_publication.post_group_id'); - // Delete c_student_publication from any session that doesn't exist anymore - $sql = "DELETE FROM c_student_publication - WHERE session_id NOT IN (SELECT id FROM session) AND (session_id <> 0 AND session_id is not null)"; - $connection->executeQuery($sql); - - error_log('Fix work documents'); - // Fix work documents that don't have c_item_property value - $sql = "SELECT * FROM c_student_publication WHERE parent_id IS NOT NULL"; - $statement = $connection->executeQuery($sql); - $result = $statement->fetchAll(); - foreach ($result as $row) { - $groupId = $row['post_group_id']; - $courseId = $row['c_id']; - $sessionId = $row['session_id']; - $workId = $row['id']; - $itemInfo = api_get_item_property_info( - $courseId, - 'work', - $workId, - $sessionId - ); - $courseInfo = api_get_course_info_by_id($courseId); - if (empty($itemInfo)) { - api_item_property_update( - $courseInfo, - 'work', - $workId, - 'visible', - 1, - $groupId, - null, - null, - null, - $sessionId - ); - } - } - error_log('End - Fix work documents'); + fixPostGroupIds($connection); $sql = "UPDATE settings_current SET selected_value = '1.11.0' WHERE variable = 'chamilo_database_version'"; $connection->executeQuery($sql); @@ -3288,3 +3216,83 @@ function migrateSwitch($fromVersion, $manager, $processFiles = true) return true; } + +/** + * @param \Doctrine\DBAL\Connection $connection + */ +function fixPostGroupIds($connection) +{ + $connection->executeQuery("ALTER TABLE course_category MODIFY COLUMN auth_course_child VARCHAR(40) DEFAULT 'TRUE'"); + error_log('Fix c_student_publication.post_group_id'); + + // Fix post_group_id + $sql = "SELECT * FROM c_student_publication WHERE (post_group_id <> 0 AND post_group_id is not null)"; + $statement = $connection->executeQuery($sql); + $result = $statement->fetchAll(); + foreach ($result as $row) { + $groupId = $row['post_group_id']; + $courseId = $row['c_id']; + $workIid = $row['iid']; + $sql = "SELECT iid from c_group_info WHERE c_id = $courseId AND iid = $groupId"; + $statement = $connection->executeQuery($sql); + $count = $statement->rowCount(); + if ($count == 0) { + $sql = "SELECT iid from c_group_info WHERE c_id = $courseId AND id = $groupId"; + $statement = $connection->executeQuery($sql); + $count = $statement->rowCount(); + if ($count > 0) { + $rowGroup = $statement->fetch(); + $newGroupId = $rowGroup['iid']; + if ($newGroupId) { + $sqlUpdate = "UPDATE c_student_publication + SET post_group_id = $newGroupId + WHERE + c_id = $courseId AND + iid = $workIid + "; + $connection->executeQuery($sqlUpdate); + } + } + } + } + error_log('End - Fix c_student_publication.post_group_id'); + + // Delete c_student_publication from any session that doesn't exist anymore + $sql = "DELETE FROM c_student_publication + WHERE session_id NOT IN (SELECT id FROM session) AND (session_id <> 0 AND session_id is not null)"; + $connection->executeQuery($sql); + + error_log('Fix work documents'); + // Fix work documents that don't have c_item_property value + $sql = "SELECT * FROM c_student_publication WHERE parent_id IS NOT NULL"; + $statement = $connection->executeQuery($sql); + $result = $statement->fetchAll(); + foreach ($result as $row) { + $groupId = $row['post_group_id']; + $courseId = $row['c_id']; + $sessionId = $row['session_id']; + $workId = $row['id']; + $itemInfo = api_get_item_property_info( + $courseId, + 'work', + $workId, + $sessionId + ); + $courseInfo = api_get_course_info_by_id($courseId); + if (empty($itemInfo)) { + api_item_property_update( + $courseInfo, + 'work', + $workId, + 'visible', + 1, + $groupId, + null, + null, + null, + $sessionId + ); + } + } + error_log('End - Fix work documents'); +} diff --git a/tests/scripts/fix_student_publication_id.php b/tests/scripts/fix_student_publication_id.php new file mode 100644 index 0000000000..fd31b433f1 --- /dev/null +++ b/tests/scripts/fix_student_publication_id.php @@ -0,0 +1,14 @@ +getConnection(); +fixPostGroupIds($connection);