parent
dea5f308ce
commit
7738ce5748
@ -0,0 +1,908 @@ |
||||
<?php |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
/** |
||||
* Script to create an SQL dump file with the data to |
||||
* re-create a course in a running database, based on a separate |
||||
* running backup DB which this script must connect to. |
||||
* You will need an installation of Chamilo to be (temporarily) pointing |
||||
* at this old database (e.g. modifying the configuration.php for that). |
||||
* This script is based on the normal basic structure of a Chamilo 1.11. |
||||
* It only works at one level of depth at this point, so if you have a |
||||
* resource that points to a resource that points to a course, this will |
||||
* not be recovered. Only tables with a clear "c_id" field will be. |
||||
* |
||||
* In this first version, this script works by a destructive manner: it |
||||
* will go through the database and remove everything unrelated to the course! |
||||
* Make sure you don't run this on a production database or you will be left |
||||
* with nothing but these course resources!!! |
||||
* |
||||
* Apart from this (partial) script, there is a better, more efficient way to |
||||
* do a course restore currently, which doesn't evolve emptying a database. |
||||
* It is described at https://beeznest.com/fr/2021/06/07/comment-recuperer-un-cours-specifique-dun-backup-de-chamilo/ |
||||
* and involves making a list of all tables that require a restore and |
||||
* issuing a mysqldump command with the --where='c_id=10' argument, which will |
||||
* only export whatever has a c_id of 10. There are some variations |
||||
* (explained in the article) but this will result in something similar to what |
||||
* this script currently does. |
||||
*/ |
||||
|
||||
exit; |
||||
|
||||
require __DIR__.'/../../main/inc/global.inc.php'; |
||||
|
||||
if (PHP_SAPI != 'cli') { |
||||
die('This script can only be executed from the command line'); |
||||
} |
||||
|
||||
$date = date('Y-m-d h:i:s'); |
||||
echo "($date) Starting process".PHP_EOL; |
||||
|
||||
// The CID is required. Locate it in your database in the "course" table |
||||
$cId = 88; |
||||
$cCode = 'G1Z001'; |
||||
|
||||
$tableDrops = [ |
||||
'access_url', |
||||
'access_url_rel_course_category', |
||||
'access_url_rel_session', |
||||
'access_url_rel_user', |
||||
'access_url_rel_usergroup', |
||||
'admin', |
||||
'announcement_rel_group', |
||||
'block', |
||||
'branch_sync', |
||||
'branch_transaction', |
||||
'branch_transaction_status', |
||||
'career', |
||||
'chat', |
||||
'chat_video', |
||||
'class_item', |
||||
'class_user', |
||||
'course_type', |
||||
'event_email_template', |
||||
'event_sent', |
||||
'extra_field', |
||||
'extra_field_option_rel_field_option', |
||||
'extra_field_options', |
||||
'extra_field_rel_tag', |
||||
'extra_field_saved_search', |
||||
'extra_field_values', //should be analyzed |
||||
'fos_group', |
||||
'fos_user_user_group', |
||||
'grade_components', |
||||
'grade_model', |
||||
'gradebook_certificate', |
||||
'gradebook_linkeval_log', |
||||
'gradebook_result', //should be analyzed |
||||
'gradebook_result_log', |
||||
'gradebook_score_display', |
||||
'gradebook_score_log', |
||||
'hook_call', |
||||
'hook_event', |
||||
'hook_observer', |
||||
'language', |
||||
'legal', |
||||
'message', |
||||
'message_attachment', |
||||
'notification', |
||||
'openid_association', |
||||
'personal_agenda', |
||||
'personal_agenda_repeat', |
||||
'personal_agenda_repeat_not', |
||||
'promotion', |
||||
'room', |
||||
'sequence', |
||||
'sequence_condition', |
||||
'sequence_formula', |
||||
'sequence_method', |
||||
'sequence_resource', |
||||
'sequence_rule', |
||||
'sequence_rule_condition', |
||||
'sequence_rule_method', |
||||
'sequence_type_entity', |
||||
'sequence_valid', |
||||
'sequence_value', |
||||
'sequence_variable', |
||||
'session', |
||||
'session_category', |
||||
'session_rel_user', |
||||
'settings_options', |
||||
'shared_survey_question', |
||||
'shared_survey_question_option', |
||||
'skill', |
||||
'skill_level', |
||||
'skill_level_profile', |
||||
'skill_profile', |
||||
'skill_rel_gradebook', |
||||
'skill_rel_profile', |
||||
'skill_rel_skill', |
||||
'skill_rel_user_comment', |
||||
'specific_field', |
||||
'sys_announcement', |
||||
'sys_calendar', |
||||
'system_template', |
||||
'tag', |
||||
'ticket_assigned_log', |
||||
'ticket_category', |
||||
'ticket_category_rel_user', |
||||
'ticket_message', |
||||
'ticket_message_attachments', |
||||
'ticket_priority', |
||||
'ticket_project', |
||||
'ticket_status', |
||||
'track_e_attempt_coeff', |
||||
'track_e_attempt_recording', |
||||
'track_e_login', |
||||
'track_e_open', |
||||
'user', |
||||
'user_api_key', |
||||
'user_course_category', |
||||
'user_friend_relation_type', |
||||
'user_rel_event_type', |
||||
'user_rel_tag', |
||||
'user_rel_user', |
||||
'usergroup', |
||||
'usergroup_rel_session', |
||||
'usergroup_rel_user', |
||||
'usergroup_rel_usergroup', |
||||
'version', |
||||
]; |
||||
|
||||
// This is a list of all the tables that contain a c_id and that need to be restored |
||||
$tablesWithCid = [ |
||||
'access_url_rel_course' => [ |
||||
'c_id', |
||||
'id', |
||||
'access_url_id' |
||||
], |
||||
'c_announcement' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'title', |
||||
'content', |
||||
'end_date', |
||||
'display_order', |
||||
'email_sent', |
||||
'session_id', |
||||
], |
||||
'c_announcement_attachment' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'path', |
||||
'comment', |
||||
'size', |
||||
'accouncement_id', |
||||
'filename', |
||||
], |
||||
'c_attendance' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'name', |
||||
'description', |
||||
'active', |
||||
'attendance_qualify_title', |
||||
'attendance_qualify_max', |
||||
'attendance_weight', |
||||
'session_id', |
||||
'locked', |
||||
], |
||||
'c_attendance_calendar' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'attendance_id', |
||||
'date_time', |
||||
'done_attendance', |
||||
], |
||||
'c_attendance_calendar_rel_group' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'group_id', |
||||
'calendar_id', |
||||
], |
||||
'c_attendance_result' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'user_id', |
||||
'attendance_id', |
||||
'score', |
||||
], |
||||
'c_attendance_sheet' => [ |
||||
'c_id', |
||||
'iid', |
||||
'user_id', |
||||
'presence', |
||||
'attendance_calendar_id', |
||||
], |
||||
'c_attendance_sheet_log' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'attendance_id', |
||||
'lastedit_date', |
||||
'lastedit_type', |
||||
'lastedit_user_id', |
||||
'calendar_date_value', |
||||
], |
||||
// todo: blog tables to be completed later |
||||
'c_blog' => [ |
||||
|
||||
], |
||||
'c_blog_attachment' => [ |
||||
|
||||
], |
||||
'c_blog_comment' => [ |
||||
|
||||
], |
||||
'c_blog_post' => [ |
||||
|
||||
], |
||||
'c_blog_rating' => [ |
||||
|
||||
], |
||||
'c_blog_rel_user' => [ |
||||
|
||||
], |
||||
'c_blog_task' => [ |
||||
|
||||
], |
||||
'c_blog_task_rel_user' => [ |
||||
|
||||
], |
||||
'c_calendar_event' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'room_id', |
||||
'title', |
||||
'content', |
||||
'start_date', |
||||
'end_date', |
||||
'parent_event_id', |
||||
'session_id', |
||||
'all_day', |
||||
'comment', |
||||
'color', |
||||
], |
||||
'c_calendar_event_attachment' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'path', |
||||
'comment', |
||||
'size', |
||||
'agenda_id', |
||||
'filename', |
||||
], |
||||
'c_calendar_event_repeat' => [ |
||||
'c_id', |
||||
'iid', |
||||
'cal_id', |
||||
'cal_type', |
||||
'cal_end', |
||||
'cal_frequency', |
||||
'cal_days', |
||||
], |
||||
'c_calendar_event_repeat_not' => [ |
||||
'c_id', |
||||
'iid', |
||||
'cal_id', |
||||
'cal_date', |
||||
], |
||||
//todo 'c_chat_connected' |
||||
'c_chat_connected' => [ |
||||
|
||||
], |
||||
'c_course_description' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'title', |
||||
'content', |
||||
'session_id', |
||||
'description_type', |
||||
'progress', |
||||
], |
||||
'c_course_setting' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'variable', |
||||
'subkey', |
||||
'type', |
||||
'category', |
||||
'value', |
||||
'title', |
||||
'comment', |
||||
'subkeytext', |
||||
], |
||||
'c_document' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'path', |
||||
'comment', |
||||
'title', |
||||
'filetype', |
||||
'size', |
||||
'readonly', |
||||
'session_id', |
||||
], |
||||
//todo 'c_dropbox_file' |
||||
'c_dropbox_category' => [ |
||||
|
||||
], |
||||
'c_dropbox_feedback' => [ |
||||
|
||||
], |
||||
'c_dropbox_file' => [ |
||||
|
||||
], |
||||
'c_dropbox_person' => [ |
||||
|
||||
], |
||||
'c_dropbox_post' => [ |
||||
|
||||
], |
||||
//todo 'c_forum' |
||||
'c_forum_attachment' => [ |
||||
|
||||
], |
||||
'c_forum_category' => [ |
||||
|
||||
], |
||||
'c_forum_forum' => [ |
||||
|
||||
], |
||||
'c_forum_mailcue' => [ |
||||
|
||||
], |
||||
'c_forum_notification' => [ |
||||
|
||||
], |
||||
'c_forum_post' => [ |
||||
|
||||
], |
||||
'c_forum_thread' => [ |
||||
|
||||
], |
||||
'c_forum_thread_qualify' => [ |
||||
|
||||
], |
||||
'c_forum_thread_qualify_log' => [ |
||||
|
||||
], |
||||
'c_glossary' => [ |
||||
'c_id', |
||||
'iid', |
||||
'glossary_id', |
||||
'name', |
||||
'description', |
||||
'display_order', |
||||
'session_id', |
||||
], |
||||
'c_group_category' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'title', |
||||
'description', |
||||
'doc_state', |
||||
'calendar_state', |
||||
'work_state', |
||||
'announcements_state', |
||||
'forum_state', |
||||
'wiki_state', |
||||
'chat_state', |
||||
'max_student', |
||||
'self_reg_allowed', |
||||
'self_unreg_allowed', |
||||
'groups_per_user', |
||||
'display_order', |
||||
], |
||||
'c_group_info' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'name', |
||||
'status', |
||||
'category_id', |
||||
'description', |
||||
'max_student', |
||||
'doc_state', |
||||
'calendar_state', |
||||
'work_state', |
||||
'announcements_state', |
||||
'forum_state', |
||||
'wiki_state', |
||||
'chat_state', |
||||
'secret_directory', |
||||
'self_registration_allowed', |
||||
'self_unregistration_allowed', |
||||
'session_id', |
||||
], |
||||
'c_group_rel_tutor' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'user_id', |
||||
'group_id', |
||||
], |
||||
'c_group_rel_user' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'user_id', |
||||
'group_id', |
||||
'status', |
||||
'role', |
||||
], |
||||
'c_item_property' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'to_group_id', |
||||
'to_user_id', |
||||
'insert_user_id', |
||||
'session_id', |
||||
'tool', |
||||
'insert_date', |
||||
'lastedit_date', |
||||
'ref', |
||||
'lastedit_type', |
||||
'lastedit_user_id', |
||||
'visibility', |
||||
'start_visible', |
||||
'end_visible', |
||||
], |
||||
//todo continue |
||||
'c_link' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'url', |
||||
'title', |
||||
'description', |
||||
'category_id', |
||||
'display_order', |
||||
'on_homepage', |
||||
'target', |
||||
'session_id', |
||||
], |
||||
'c_link_category' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'category_title', |
||||
'description', |
||||
'display_order', |
||||
'session_id', |
||||
], |
||||
'c_lp' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'lp_type', |
||||
'name', |
||||
'ref', |
||||
'description', |
||||
'path', |
||||
'force_commit', |
||||
'default_view_mod', |
||||
'default_encoding', |
||||
'display_order', |
||||
'content_maker', |
||||
'content_local', |
||||
'content_license', |
||||
'prevent_reinit', |
||||
'js_lib', |
||||
'debug', |
||||
'theme', |
||||
'preview_image', |
||||
'author', |
||||
'session_id', |
||||
'prerequisite', |
||||
'hide_toc_frame', |
||||
'seriousgame_mode', |
||||
'use_max_score', |
||||
'autolaunch', |
||||
'category_id', |
||||
'max_attempts', |
||||
'subscribe_users', |
||||
'created_on', |
||||
'modified_on', |
||||
'publicated_on', |
||||
'expired_on', |
||||
'accumulate_scorm_time', |
||||
], |
||||
'c_lp_category' => [ |
||||
'c_id', |
||||
'iid', |
||||
'name', |
||||
'position', |
||||
], |
||||
/* |
||||
'c_lp_category_user' => [ |
||||
|
||||
], |
||||
*/ |
||||
'c_lp_item' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'lp_id', |
||||
'item_type', |
||||
'ref', |
||||
'title', |
||||
'description', |
||||
'path', |
||||
'min_score', |
||||
'max_score', |
||||
'mastery_score', |
||||
'parent_item_id', |
||||
'previous_item_id', |
||||
'next_item_id', |
||||
'display_order', |
||||
'prerequisite', |
||||
'parameters', |
||||
'launch_data', |
||||
'max_time_allowed', |
||||
'terms', |
||||
'search_did', |
||||
'audio', |
||||
'prerequisite_min_score', |
||||
'prerequisite_max_score', |
||||
], |
||||
'c_lp_item_view' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'lp_item_id', |
||||
'lp_view_id', |
||||
'view_count', |
||||
'start_time', |
||||
'total_time', |
||||
'score', |
||||
'status', |
||||
'suspend_data', |
||||
'lesson_location', |
||||
'core_exit', |
||||
'max_score', |
||||
], |
||||
'c_lp_iv_interaction' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'order_id', |
||||
'lp_iv_id', |
||||
'interaction_id', |
||||
'interaction_type', |
||||
'weighting', |
||||
'completion_time', |
||||
'correct_responses', |
||||
'student_response', |
||||
'result', |
||||
'latency', |
||||
], |
||||
'c_lp_iv_objective' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'lp_iv_id', |
||||
'order_id', |
||||
'objective_id', |
||||
'score_raw', |
||||
'score_max', |
||||
'score_min', |
||||
'status', |
||||
], |
||||
'c_lp_view' => [ |
||||
'c_id', |
||||
'iid', |
||||
'id', |
||||
'lp_id', |
||||
'user_id', |
||||
'view_count', |
||||
'last_item', |
||||
'progress', |
||||
'session_id', |
||||
], |
||||
'c_notebook' => [ |
||||
|
||||
], |
||||
'c_online_connected' => [ |
||||
|
||||
], |
||||
'c_online_link' => [ |
||||
|
||||
], |
||||
'c_permission_group' => [ |
||||
|
||||
], |
||||
'c_permission_task' => [ |
||||
|
||||
], |
||||
'c_permission_user' => [ |
||||
|
||||
], |
||||
'c_quiz' => [ |
||||
|
||||
], |
||||
'c_quiz_answer' => [ |
||||
|
||||
], |
||||
'c_quiz_question' => [ |
||||
|
||||
], |
||||
'c_quiz_question_category' => [ |
||||
|
||||
], |
||||
'c_quiz_question_option' => [ |
||||
|
||||
], |
||||
'c_quiz_question_rel_category' => [ |
||||
|
||||
], |
||||
'c_quiz_rel_category' => [ |
||||
|
||||
], |
||||
'c_quiz_rel_question' => [ |
||||
|
||||
], |
||||
'c_resource' => [ |
||||
|
||||
], |
||||
'c_role' => [ |
||||
|
||||
], |
||||
'c_role_group' => [ |
||||
|
||||
], |
||||
'c_role_permissions' => [ |
||||
|
||||
], |
||||
'c_role_user' => [ |
||||
|
||||
], |
||||
'c_student_publication' => [ |
||||
|
||||
], |
||||
'c_student_publication_assignment' => [ |
||||
|
||||
], |
||||
'c_student_publication_comment' => [ |
||||
|
||||
], |
||||
'c_student_publication_rel_document' => [ |
||||
|
||||
], |
||||
'c_student_publication_rel_user' => [ |
||||
|
||||
], |
||||
'c_survey' => [ |
||||
|
||||
], |
||||
'c_survey_answer' => [ |
||||
|
||||
], |
||||
'c_survey_group' => [ |
||||
|
||||
], |
||||
'c_survey_invitation' => [ |
||||
|
||||
], |
||||
'c_survey_question' => [ |
||||
|
||||
], |
||||
'c_survey_question_option' => [ |
||||
|
||||
], |
||||
'c_thematic' => [ |
||||
|
||||
], |
||||
'c_thematic_advance' => [ |
||||
|
||||
], |
||||
'c_thematic_plan' => [ |
||||
|
||||
], |
||||
'c_tool' => [ |
||||
|
||||
], |
||||
'c_tool_intro' => [ |
||||
|
||||
], |
||||
'c_userinfo_content' => [ |
||||
|
||||
], |
||||
'c_userinfo_def' => [ |
||||
|
||||
], |
||||
'c_wiki' => [ |
||||
|
||||
], |
||||
'c_wiki_conf' => [ |
||||
|
||||
], |
||||
'c_wiki_discuss' => [ |
||||
|
||||
], |
||||
'c_wiki_mailcue' => [ |
||||
|
||||
], |
||||
]; |
||||
|
||||
$tablesSpecialWithId = [ |
||||
'course' => [ |
||||
'id', |
||||
], |
||||
'course_rel_user' => [ |
||||
'c_id', |
||||
], |
||||
'course_rel_user_catalogue' => [ |
||||
'c_id', |
||||
], |
||||
/* |
||||
'scheduled_announcements' => [ |
||||
'c_id', |
||||
], |
||||
*/ |
||||
'sequence_row_entity' => [ |
||||
'c_id', |
||||
], |
||||
'session_rel_course' => [ |
||||
'c_id', |
||||
], |
||||
'session_rel_course_rel_user' => [ |
||||
'c_id', |
||||
], |
||||
'skill_rel_user' => [ |
||||
'course_id', |
||||
], |
||||
'ticket_ticket' => [ |
||||
'course_id', |
||||
], |
||||
'track_course_ranking' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_access' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_attempt' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_course_access' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_default' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_downloads' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_exercises' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_hotpotatoes' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_hotspot' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_item_property' => [ |
||||
'course_id', |
||||
], |
||||
'track_e_lastaccess' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_links' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_online' => [ |
||||
'c_id', |
||||
], |
||||
'track_e_uploads' => [ |
||||
'c_id', |
||||
], |
||||
'track_stored_values' => [ |
||||
'course_id', |
||||
], |
||||
'track_stored_values_stack' => [ |
||||
'course_id', |
||||
], |
||||
'user_rel_course_vote' => [ |
||||
'c_id', |
||||
], |
||||
'usergroup_rel_course' => [ |
||||
'course_id', |
||||
], |
||||
'usergroup_rel_question' => [ |
||||
'c_id', |
||||
], |
||||
]; |
||||
$tablesSpecialWithCode = [ |
||||
'course_rel_class' => [ |
||||
'course_code', |
||||
], |
||||
'course_request' => [ |
||||
'code', |
||||
], |
||||
'gradebook_category' => [ |
||||
'course_code', |
||||
], |
||||
'gradebook_evaluation' => [ |
||||
'course_code', |
||||
], |
||||
'gradebook_link' => [ |
||||
'course_code', |
||||
], |
||||
'search_engine_ref' => [ |
||||
'course_code', |
||||
], |
||||
'shared_survey' => [ |
||||
'course_code', |
||||
], |
||||
'specific_field_values' => [ |
||||
'course_code', |
||||
], |
||||
'templates' => [ |
||||
'course_code', |
||||
], |
||||
|
||||
]; |
||||
|
||||
//$currentUserId = api_get_user_id(); |
||||
Database::query('SET foreign_key_checks = 0'); |
||||
|
||||
// Drop non-course tables |
||||
foreach ($tableDrops as $table) { |
||||
$sql = "DROP TABLE IF EXISTS $table"; |
||||
echo $sql.PHP_EOL; |
||||
$res = Database::query($sql); |
||||
} |
||||
|
||||
$date = date('Y-m-d h:i:s'); |
||||
echo "($date) Done dropping non-course tables".PHP_EOL; |
||||
|
||||
// Clean course tables with c_id |
||||
foreach ($tablesWithCid as $table => $fields) { |
||||
$sql = "DELETE FROM $table WHERE c_id != $cId"; |
||||
echo $sql.PHP_EOL; |
||||
$res = Database::query($sql); |
||||
} |
||||
|
||||
$date = date('Y-m-d h:i:s'); |
||||
echo "($date) Done cleaning course tables".PHP_EOL; |
||||
|
||||
// Clean general tables with specific course ID fields |
||||
foreach ($tablesSpecialWithId as $table => $fields) { |
||||
$field = $fields[0]; |
||||
$sql = "DELETE FROM $table WHERE $field != $cId"; |
||||
echo $sql.PHP_EOL; |
||||
$res = Database::query($sql); |
||||
} |
||||
|
||||
// Clean other tables with a field based on the course code |
||||
foreach ($tablesSpecialWithCode as $table => $fields) { |
||||
$field = $fields[0]; |
||||
$sql = "DELETE FROM $table WHERE $field != '$cCode'"; |
||||
echo $sql.PHP_EOL; |
||||
$res = Database::query($sql); |
||||
} |
||||
|
||||
$date = date('Y-m-d h:i:s'); |
||||
echo "($date) Done cleaning extra tables".PHP_EOL; |
||||
|
||||
// Finalize dropping settings_current (we avoid dropping it earlier as it |
||||
// makes things complicated if there are errors |
||||
Database::query('DROP TABLE IF EXISTS settings_current'); |
||||
|
||||
echo "Your database is now emptied of other resources. Dump it to restore in production.".PHP_EOL; |
||||
echo "e.g. mysqldump -u user -p database --skip-add-drop-table --no-create-info --insert-ignore > restore.sql".PHP_EOL; |
||||
Loading…
Reference in new issue