Skip to content

Commit

Permalink
BUG: Fixes silverstripe#119 adds a tasks to clean up columns for Edit…
Browse files Browse the repository at this point in the history
…ableFormField
  • Loading branch information
kmayo-ss committed Aug 16, 2013
1 parent 39979a6 commit dc4bda4
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions code/tasks/UserFormsColumnCleanTask.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php

/**
* UserForms Column Clean Task
*
* Column clean up tasks for Userforms
*
* @package userforms
*/

class UserFormsColumnCleanTask extends MigrationTask {

protected $title = "UserForms EditableFormField Column Clean task";

protected $description = "Removes unused columns from EditableFormField for MySQL databases;";

protected $tables = array('EditableFormField');

protected $keepColumns = array('ID');

/**
* Publish the existing forms.
*
*/
public function run($request) {
foreach ($this->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 <br />";
echo "Creating Backup_$db <br />";
// backup table
$query = "CREATE TABLE Backup_$db LIKE $db";
DB::query($query);
echo "Populating Backup_$db <br />";
$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 <br />";
$query = "ALTER TABLE $db DROP COLUMN $column";
DB::query($query);
}
}
}
}
}


0 comments on commit dc4bda4

Please sign in to comment.