Skip to content
This repository has been archived by the owner on May 11, 2018. It is now read-only.

Migrations for eZ Publish/eZ Platform

License

Notifications You must be signed in to change notification settings

kreait/ezpublish-migrations-bundle

Repository files navigation

eZ Publish/Platform Migrations

Migrations for eZ Publish/Platform.

Abandoned/Archived: This bundle hasn't received updates since 2016, is far behind the current development of eZ Publish/Platform, and thus has been marked as archived/abandoned. Please switch to kaliop/ezmigrationbundle.

Features

In addition to the commands from the DoctrineMigrationsBundle, this bundle gives you an additional ezpublish:migrations:generate command, which generates a Migration that eases eZ Publish/Platform related changes.

  • Automatically sets the active eZ user performing the changes (default: admin)
  • Allows the quick change of the currently active user, e.g. for creating new content in the name of a certain user.
  • Adds a shorthand method to create new content

If you know Doctrine Migrations, you will feel right at home.

Installation

composer require kreait/ezpublish-migrations-bundle

Enable the DoctrineMigrationsBundle and the KreaitEzPublishMigrationsBundle in AppKernel.php (eZ Platform) or EzPublishKernel.php (eZ Publish 5):

public function registerBundles()
{
    $bundles = array(
        //...
        new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
        new Kreait\EzPublish\MigrationsBundle\KreaitEzPublishMigrationsBundle(),
    );
}

Configuration

You can configure the bundles in your config.yml. The examples below are the default values.

doctrine_migrations:
    dir_name: "%kernel.root_dir%/DoctrineMigrations"
    namespace: Application\Migrations
    table_name: migration_versions
    name: Application Migrations

ezpublish_migrations:
    # The login name of the user performing the migrations.
    ez_migrations_user: admin

Usage

The usage is identical to Symfony's DoctrineMigrationBundle, with the addition of the following command:

# Generate a blank eZ Publish/Platform enabled migration class
$ ezpublish:migrations:generate

You can access the eZ Repository inside a migration with $this->repository.

See src/Resources/doc/examples eZ Publish related example migrations.

Helper methods

Changing the current migration user during a migration

You can change the current eZ Publish user inside a migration by issuing the following command:

// All subsequent calls will be made as the user with the given name
$this->changeMigrationUser('another_username');

and restore the default Migration user by using:

// Restores the current user to the configured migrations user.
$this->restoreDefaultMigrationUser();

Quickly create simple content

$this->createContent($parentLocationId, $contentTypeIdentifier, $languageCode, array $fields);

see Create new content example

Known issues

When you create a migration using only eZ Publish's API methods, no SQL statements are executed in terms of the DoctrineMigrationsBundle. This results in the following message:

Migration was executed but did not result in any SQL statements.

Alternatives