From b1a88d0413dada6b9268ae41315d72cb7b5c0ef2 Mon Sep 17 00:00:00 2001 From: stronk7 Date: Mon, 16 Jan 2006 10:23:48 +0000 Subject: [PATCH] Part of Bug 4583. Now backup tables are moodle-style compliant. Also, the 4th parameter used in insert_record() has been erased to avoid the bug itself. PortgreSQL upgrade not tested! (http://moodle.org/bugs/bug.php?op=show&bugid=4583) --- backup/backuplib.php | 2 +- backup/db/mysql.php | 33 ++++++++++++++++++++++++++++++++- backup/db/mysql.sql | 8 ++++++-- backup/db/postgres7.php | 32 ++++++++++++++++++++++++++++---- backup/db/postgres7.sql | 38 +++++++++++++++++++------------------- backup/lib.php | 2 +- backup/version.php | 4 ++-- 7 files changed, 89 insertions(+), 30 deletions(-) diff --git a/backup/backuplib.php b/backup/backuplib.php index a811453aa39..b5bee741491 100644 --- a/backup/backuplib.php +++ b/backup/backuplib.php @@ -78,7 +78,7 @@ //Insert the record id. backup_users decide it. //When all users - $status = insert_record("backup_ids",$backupids_rec,false,"backup_code"); + $status = insert_record('backup_ids', $backupids_rec, false); $count_users++; } //Do some output diff --git a/backup/db/mysql.php b/backup/db/mysql.php index ac175e82934..8a3ab1ffcb2 100644 --- a/backup/db/mysql.php +++ b/backup/db/mysql.php @@ -1,4 +1,4 @@ -prefix}backup_files"); + if ($result) { + $result = execute_sql("CREATE TABLE `{$CFG->prefix}backup_files` ( + `id` int(10) unsigned NOT NULL auto_increment, + `backup_code` int(10) unsigned NOT NULL default '0', + `file_type` varchar(10) NOT NULL default '', + `path` varchar(255) NOT NULL default '', + `old_id` int(10) unsigned default NULL, + `new_id` int(10) unsigned default NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `backup_files_uk` (`backup_code`,`file_type`,`path`) + ) TYPE=MyISAM COMMENT='To store and recode ids to user and course files.'"); + } + if ($result) { + $result = execute_sql("DROP TABLE {$CFG->prefix}backup_ids"); + } + if ($result) { + $result = execute_sql("CREATE TABLE `{$CFG->prefix}backup_ids` ( + `id` int(10) unsigned NOT NULL auto_increment, + `backup_code` int(12) unsigned NOT NULL default '0', + `table_name` varchar(30) NOT NULL default '', + `old_id` int(10) unsigned NOT NULL default '0', + `new_id` int(10) unsigned default NULL, + `info` mediumtext, + PRIMARY KEY (`id`), + UNIQUE KEY `backup_ids_uk` (`backup_code` ,`table_name`,`old_id`) + ) TYPE=MyISAM COMMENT='To store and convert ids in backup/restore'"); + } + } + //Finally, return result return $result; diff --git a/backup/db/mysql.sql b/backup/db/mysql.sql index f0631ebb311..d0d2bc68335 100644 --- a/backup/db/mysql.sql +++ b/backup/db/mysql.sql @@ -3,12 +3,14 @@ # CREATE TABLE `prefix_backup_files` ( + `id` int(10) unsigned NOT NULL auto_increment, `backup_code` int(10) unsigned NOT NULL default '0', `file_type` varchar(10) NOT NULL default '', `path` varchar(255) NOT NULL default '', `old_id` int(10) unsigned default NULL, `new_id` int(10) unsigned default NULL, - PRIMARY KEY (`backup_code`,`file_type`,`path`) + PRIMARY KEY (`id`), + UNIQUE KEY `backup_files_uk` (`backup_code`,`file_type`,`path`) ) TYPE=MyISAM COMMENT='To store and recode ids to user and course files.'; # -------------------------------------------------------- @@ -17,12 +19,14 @@ CREATE TABLE `prefix_backup_files` ( # CREATE TABLE `prefix_backup_ids` ( + `id` int(10) unsigned NOT NULL auto_increment, `backup_code` int(12) unsigned NOT NULL default '0', `table_name` varchar(30) NOT NULL default '', `old_id` int(10) unsigned NOT NULL default '0', `new_id` int(10) unsigned default NULL, `info` mediumtext, - PRIMARY KEY (`backup_code`,`table_name`,`old_id`) + PRIMARY KEY (`id`), + UNIQUE KEY `backup_ids_uk` (`backup_code` ,`table_name`,`old_id`) ) TYPE=MyISAM COMMENT='To store and convert ids in backup/restore'; # -------------------------------------------------------- diff --git a/backup/db/postgres7.php b/backup/db/postgres7.php index 3bd5f28eb17..15423128e75 100644 --- a/backup/db/postgres7.php +++ b/backup/db/postgres7.php @@ -1,4 +1,4 @@ -prefix}backup_files"); + if ($result) { + $result = execute_sql("CREATE TABLE {$CFG->prefix}backup_files ( + id SERIAL PRIMARY KEY, + backup_code integer NOT NULL default '0', + file_type varchar(10) NOT NULL default '', + path varchar(255) NOT NULL default '', + old_id integer default NULL, + new_id integer default NULL, + CONSTRAINT backup_files_uk UNIQUE (backup_code, file_type, path))"); + } + if ($result) { + $result = execute_sql("DROP TABLE {$CFG->prefix}backup_ids"); + } + if ($result) { + $result = execute_sql("CREATE TABLE {$CFG->prefix}backup_ids ( + id SERIAL PRIMARY KEY, + backup_code integer NOT NULL default '0', + table_name varchar(30) NOT NULL default '', + old_id integer NOT NULL default '0', + new_id integer default NULL, + info text, + CONSTRAINT backup_ids_uk UNIQUE (backup_code, table_name, old_id))"); + } + } - - - + //Finally, return result return $result; } diff --git a/backup/db/postgres7.sql b/backup/db/postgres7.sql index 586b70df7f7..929f0a2c78c 100644 --- a/backup/db/postgres7.sql +++ b/backup/db/postgres7.sql @@ -1,35 +1,32 @@ -# THIS FILE IS UNTESTED!!! -# PLEASE HELP TEST/FIX IT AND CONTACT MARTIN OR ELOY! - # # Table structure for table prefix_backup_files # CREATE TABLE prefix_backup_files ( + id SERIAL PRIMARY KEY, backup_code integer NOT NULL default '0', file_type varchar(10) NOT NULL default '', path varchar(255) NOT NULL default '', old_id integer default NULL, - new_id integer default NULL + new_id integer default NULL, + CONSTRAINT backup_files_uk UNIQUE (backup_code, file_type, path) ); -# -------------------------------------------------------- - -CREATE INDEX prefix_backup_codetypepath_idx ON prefix_backup_files (backup_code,file_type,path); # # Table structure for table prefix_backup_ids # CREATE TABLE prefix_backup_ids ( - backup_code int8 NOT NULL default '0', + id SERIAL PRIMARY KEY, + backup_code integer NOT NULL default '0', table_name varchar(30) NOT NULL default '', - old_id int8 NOT NULL default '0', - new_id int8 default NULL, - info text + old_id integer NOT NULL default '0', + new_id integer default NULL, + info text, + CONSTRAINT backup_ids_uk UNIQUE (backup_code, table_name, old_id) ); -CREATE INDEX prefix_backup_codenameid_idx ON prefix_backup_ids (backup_code,table_name,old_id); # # Table structure for table prefix_backup_config @@ -41,27 +38,30 @@ CREATE TABLE prefix_backup_config ( value varchar(255) NOT NULL default '' ); + # # Table structure for table prefix_backup_courses # CREATE TABLE prefix_backup_courses ( id SERIAL PRIMARY KEY, - courseid int8 UNIQUE NOT NULL default '0', - laststarttime int8 NOT NULL default '0', - lastendtime int8 NOT NULL default '0', + courseid integer UNIQUE NOT NULL default '0', + laststarttime integer NOT NULL default '0', + lastendtime integer NOT NULL default '0', laststatus varchar(1) NOT NULL default '0', - nextstarttime int8 NOT NULL default '0' + nextstarttime integer NOT NULL default '0' ); + + # # Table structure for table prefix_backup_log # CREATE TABLE prefix_backup_log ( id SERIAL PRIMARY KEY, - courseid int8 NOT NULL default '0', - time int8 NOT NULL default '0', - laststarttime int8 NOT NULL default '0', + courseid integer NOT NULL default '0', + time integer NOT NULL default '0', + laststarttime integer NOT NULL default '0', info varchar(255) NOT NULL default '' ); diff --git a/backup/lib.php b/backup/lib.php index 860fe4516d4..34b2cf57f9e 100644 --- a/backup/lib.php +++ b/backup/lib.php @@ -430,7 +430,7 @@ $rec->new_id =$new_id; $rec->info = $info_to_save; - $status = insert_record ("backup_ids", $rec, false,"backup_code"); + $status = insert_record('backup_ids', $rec, false); } return $status; } diff --git a/backup/version.php b/backup/version.php index 98a425f54dd..f495b2544ff 100644 --- a/backup/version.php +++ b/backup/version.php @@ -5,6 +5,6 @@ // database (backup_version) to determine whether upgrades should // be performed (see db/backup_*.php) -$backup_version = 2005070500; // The current version is a date (YYYYMMDDXX) +$backup_version = 2006011600; // The current version is a date (YYYYMMDDXX) -$backup_release = "1.5.1"; // User-friendly version number +$backup_release = "1.6dev"; // User-friendly version number