Created
April 30, 2013 03:54
-
-
Save frankmullenger/5486506 to your computer and use it in GitHub Desktop.
Simple task to reset database using YAML file for SilverStripe, copies images over to assets/Uploads dir also.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class ResetDatabaseTask extends BuildTask { | |
protected $title = "Reset database"; | |
protected $description = "Reset the database to a blank canvas"; | |
static $fixture_file = 'builder/tasks/Reset.yml'; | |
function run($request) { | |
$dbAdmin = DatabaseAdmin::create(); | |
increase_time_limit_to(600); | |
SS_ClassLoader::instance()->getManifest()->regenerate(); | |
//Clear and rebuild database | |
$dbAdmin->clearAllData(); | |
$dbAdmin->doBuild(true); | |
//Move images to assets/Uploads/ | |
$assetsDir = Director::baseFolder() . '/assets/Uploads'; | |
$imagesDir = Director::baseFolder() . '/builder/images'; | |
foreach (new DirectoryIterator($assetsDir) as $fileInfo){ | |
if(!$fileInfo->isDot()) { | |
@unlink($fileInfo->getPathname()); | |
} | |
} | |
Filesystem::sync(); | |
foreach (new DirectoryIterator($imagesDir) as $fileInfo){ | |
if($fileInfo->isFile()) { | |
copy($fileInfo->getPathname(), $assetsDir . '/' . $fileInfo->getFilename()); | |
} | |
} | |
//Build database | |
$fixture = new YamlFixture(Director::getAbsFile(self::$fixture_file)); | |
$model = DataModel::inst(); | |
$fixture->saveIntoDatabase($model); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment