A collection of Silverstripe BuildTask
classes and standard helpers for
managing a migration workflow (i.e version 3 to 4 upgrades).
composer require wilr/silverstripe-tasker
<?php
use Wilr\SilverStripe\Tasker\Traits\TaskHelpers;
use Wilr\SilverStripe\Tasker\Traits\TaskerFormatter;
use SilverStripe\Dev\BuildTask;
class MyAppUpgradeTask extends BuildTask
{
use TaskerFormatter;
use TaskHelpers;
public function run()
{
$this->echoHeading('My Heading');
$this->archivePage(10);
// any other tasks as below.
if ($wrong) {
$this->echoWarning('Shows a warning message');
} else {
$this->echoSuccess('Outputs a tick');
}
while (true) {
// displays progress dots
$this->echoProgress();
}
}
}
migrateTableToExistingTable ($tableName, $newClass, $mapping = [], $callback = null, $insert = true)
archivePage($pageID)
runInsertOrUpdate($table, $id, $fields)
migrateDataColumnTo($columnFrom, $tableFrom, $columnTo, $tableTo)
setInvalidEnumValuesTo ($table, $column, $defaultValue)
correctPageClass ($id, $newClassName)
renameColumn ($table, $oldColumn, $newColumn, $force = false)
removePagesOnLiveNotOnDraft()
hasTable ($tableName)
query ($query)
tableHasCol ($table, $col)
echoWarning ($message)
echoSuccess ($message)
echoMessage ($message)
echoLine ()
echoProgress ()
tasker
can be be used to 'hook' updates and other classes when dev/build
is
run. To do this, create a migration.yml
file in your project and include the
following:
SilverStripe\CMS\Model\SiteTree:
migration_on_build: true
latest_schema_version: 2
migration_class: 'MyAppUpgradeTask'
Schema version is stored on SiteConfig, if a project has a Schema version less
than the value provided here, tasker
will run the provided migration_class
.
If you have a series of BuildTask jobs to execute (such as a Solr_Reindex
)
then provide the class names under the key tasker_jobs
.
SilverStripe\CMS\Model\SiteTree:
tasker_jobs:
- 'SilverStripe\FullTextSearch\Solr\Tasks\Solr_Configure'
- 'SilverStripe\FullTextSearch\Solr\Tasks\Solr_Reindex'