fixed migration subscribers plugin

This commit is contained in:
2019-02-20 15:55:53 +01:00
parent ace8df0aee
commit 2c26e8a0ea
19 changed files with 107 additions and 20 deletions

View File

@@ -13,7 +13,10 @@ migration_tags:
- Materio
source:
plugin: simplenews_subscriber
plugin: d7_simplenews_subscribers
# high_water_property:
# name: changes
# alias: s
process:
id: snid

View File

@@ -0,0 +1,82 @@
<?php
namespace Drupal\materio_migrate\Plugin\migrate\source;
use Drupal\migrate\Row;
use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
/**
* Migration source for Subscriber entries in D7.
*
* @MigrateSource(
* id = "d7_simplenews_subscribers",
* source_module = "simplenews"
* )
*/
class D7SimplenewsSubscribers extends DrupalSqlBase {
/**
* {@inheritdoc}
*/
public function fields() {
return [
'snid' => $this->t('Subscriber ID'),
'activated' => $this->t('Activated'),
'mail' => $this->t('Subscriber\'s e-mail address'),
'uid' => $this->t('Corresponding user'),
'language' => $this->t('Language'),
'changes' => $this->t('Pending unconfirmed subscription changes'),
'created' => $this->t('Time of creation'),
];
}
/**
* {@inheritdoc}
*/
public function getIds() {
return ['snid' => ['type' => 'integer']];
}
/**
* {@inheritdoc}
*/
public function query() {
return $this->select('simplenews_subscriber', 's')
->fields('s')
->orderBy('snid');
}
/**
* {@inheritdoc}
*/
public function prepareRow(Row $row) {
$result = parent::prepareRow($row);
$version = $this->getModuleSchemaVersion('simplenews');
$newsletter_id_field = 'newsletter_id';
if ($version >= 7000 & $version < 7200) {
$newsletter_id_field = 'tid';
}
// Add associated data from the subscriptions table.
$q = $this->select('simplenews_subscription', 'sub');
$q->addField('sub', $newsletter_id_field, 'newsletter_id');
$q->fields('sub', ['status', 'timestamp', 'source']);
$q->condition('sub.snid', $row->getSourceProperty('snid'));
$subscriptions = $q->execute()->fetchAllAssoc('newsletter_id');
$row->setSourceProperty('subscriptions', $subscriptions);
return $result;
}
/**
* {@inheritdoc}
*/
public function calculateDependencies() {
$this->dependencies = parent::calculateDependencies();
// Declare dependency to the provider of the base class.
$this->addDependency('module', 'migrate_drupal');
return $this->dependencies;
}
}