| /** | |
| * Matomo - free/libre analytics platform | |
| * | |
| * @link https://matomo.org | |
| * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later | |
| */ | |
| namespace Piwik\Plugins\ExamplePlugin; | |
| use Piwik\Updater; | |
| use Piwik\Updates as PiwikUpdates; | |
| use Piwik\Updater\Migration; | |
| use Piwik\Updater\Migration\Factory as MigrationFactory; | |
| /** | |
| * Update for version 0.0.2. | |
| */ | |
| class Updates_0_0_2 extends PiwikUpdates | |
| { | |
| /** | |
| * @var MigrationFactory | |
| */ | |
| private $migration; | |
| public function __construct(MigrationFactory $factory) | |
| { | |
| $this->migration = $factory; | |
| } | |
| /** | |
| * Return database migrations to be executed in this update. | |
| * | |
| * Database migrations should be defined here, instead of in `doUpdate()`, since this method is used | |
| * in the `core:update` command when displaying the queries an update will run. If you execute | |
| * migrations directly in `doUpdate()`, they won't be displayed to the user. Migrations will be executed in the | |
| * order as positioned in the returned array. | |
| * | |
| * @return Migration\Db[] | |
| */ | |
| public function getMigrations(Updater $updater) | |
| { | |
| // many different migrations are available to be used via $this->migration factory | |
| $migration1 = $this->migration->db->changeColumnType('log_visit', 'example', 'BOOLEAN NOT NULL'); | |
| // you can also define custom SQL migrations. If you need to bind parameters, use `->boundSql()` | |
| $migration2 = $this->migration->db->sql($sqlQuery = 'SELECT 1'); | |
| return array( | |
| // $migration1, | |
| // $migration2 | |
| ); | |
| } | |
| /** | |
| * Perform the incremental version update. | |
| * | |
| * This method should perform all updating logic. If you define queries in the `getMigrations()` method, | |
| * you must call {@link Updater::executeMigrations()} here. | |
| */ | |
| public function doUpdate(Updater $updater) | |
| { | |
| $updater->executeMigrations(__FILE__, $this->getMigrations($updater)); | |
| } | |
| } | |