From a43988af60ed12fc533f3bbe42f3a638c1c2cd88 Mon Sep 17 00:00:00 2001 From: Kirk Mayo Date: Sat, 25 May 2013 16:03:59 +1200 Subject: [PATCH] BUG: Fixes #119 adds a tasks to clean up columns for EditableFormField --- code/tasks/UserFormsColumnCleanTask.php | 61 +++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 code/tasks/UserFormsColumnCleanTask.php diff --git a/code/tasks/UserFormsColumnCleanTask.php b/code/tasks/UserFormsColumnCleanTask.php new file mode 100644 index 0000000..b14599d --- /dev/null +++ b/code/tasks/UserFormsColumnCleanTask.php @@ -0,0 +1,61 @@ +tables as $db) { + $obj = new $db(); + $columns = $obj->database_fields($db); + $query = "SHOW COLUMNS FROM $db"; + $liveColumns = DB::query($query)->column(); + $backedUp = 0; + $query = "SHOW TABLES LIKE 'Backup_$db'"; + $tableExists = DB::query($query)->value(); + if ($tableExists != null) { + echo "Tasks run already on $db exiting"; + return; + } + $backedUp = 0; + foreach ($liveColumns as $index => $column) { + if ($backedUp == 0) { + echo "Backing up $db
"; + echo "Creating Backup_$db
"; + // backup table + $query = "CREATE TABLE Backup_$db LIKE $db"; + DB::query($query); + echo "Populating Backup_$db
"; + $query = "INSERT Backup_$db SELECT * FROM $db"; + DB::query($query); + $backedUp = 1; + } + if (!isset($columns[$column]) && !in_array($column, $this->keepColumns)) { + echo "Dropping $column from $db
"; + $query = "ALTER TABLE $db DROP COLUMN $column"; + DB::query($query); + } + } + } + } +} + +