You are here

public function WineRoleMigration::__construct in Migrate 7.2

Same name and namespace in other branches
  1. 6.2 migrate_example/wine.inc \WineRoleMigration::__construct()

General initialization of a Migration object.

Overrides Migration::__construct

File

migrate_example/wine.inc, line 289
Advanced migration examples. These serve two purposes:

Class

WineRoleMigration

Code

public function __construct($arguments) {
  parent::__construct($arguments);
  $this->description = t('XML feed (multi items) of roles (positions)');

  // There isn't a consistent way to automatically identify appropriate
  // "fields" from an XML feed, so we pass an explicit list of source fields
  $fields = array(
    'name' => t('Position name'),
  );

  // IMPORTANT: Do not try this at home! We have included importable files
  // with the migrate_example module so it can be very simply installed and
  // run, but you should never include any data you want to keep private
  // (especially user data like email addresses, phone numbers, etc.) in the
  // module directory. Your source data should be outside of the webroot, and
  // should not be anywhere where it may get committed into a revision control
  // system.
  // This can also be an URL instead of a local file path.
  $xml_folder = DRUPAL_ROOT . '/' . drupal_get_path('module', 'migrate_example') . '/xml/';
  $items_url = $xml_folder . 'positions.xml';

  // This is the xpath identifying the items to be migrated, relative to the
  // document.
  $item_xpath = '/positions/position';

  // This is the xpath relative to the individual items - thus the full xpath
  // of an ID will be /positions/position/sourceid.
  $item_ID_xpath = 'sourceid';
  $items_class = new MigrateItemsXML($items_url, $item_xpath, $item_ID_xpath);
  $this->source = new MigrateSourceMultiItems($items_class, $fields);
  $this->destination = new MigrateDestinationRole();

  // The source ID here is the one retrieved from each data item in the XML
  // file, and used to identify specific items
  $this->map = new MigrateSQLMap($this->machineName, array(
    'sourceid' => array(
      'type' => 'int',
      'unsigned' => TRUE,
      'not null' => TRUE,
    ),
  ), MigrateDestinationRole::getKeySchema());
  $this
    ->addFieldMapping('name', 'name')
    ->xpath('name');
  $this
    ->addUnmigratedDestinations(array(
    'weight',
  ));
}