|
@@ -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';
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $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();
|
|
|
+
|
|
|
+ $this->addDependency('module', 'migrate_drupal');
|
|
|
+ return $this->dependencies;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|