12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?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_notuser",
- * source_module = "simplenews"
- * )
- */
- class D7SimplenewsSubscribersNotUser 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')
- ->condition('s.uid', 0)
- ->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;
- }
- }
|