fixed migration subscribers plugin
This commit is contained in:
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user