123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <?php
- namespace Drupal\edlp_migrate\Plugin\migrate\source;
- use Drupal\migrate\Row;
- use Drupal\user\Plugin\migrate\source\d6\User as D6User;
- /**
- * Source plugin for edlp user accounts.
- *
- * @MigrateSource(
- * id = "d6_edlp_users"
- * )
- */
- class D6EdlpUsers extends D6User {
- /**
- * {@inheritdoc}
- */
- public function query() {
- return $this->select('users', 'u')
- ->fields('u', array_keys($this->baseFields()))
- ->condition('u.uid', 0, '>');
- }
- /**
- * {@inheritdoc}
- */
- public function fields() {
- $fields = $this->baseFields();
- // Add roles field.
- $fields['roles'] = $this->t('Roles');
- // Profile fields.
- if ($this->moduleExists('profile')) {
- $fields += $this->select('profile_fields', 'pf')
- ->fields('pf', ['name', 'title'])
- ->execute()
- ->fetchAllKeyed();
- }
- return $fields;
- }
- /**
- * {@inheritdoc}
- */
- public function prepareRow(Row $row) {
- // User roles.
- $roles = $this->select('users_roles', 'ur')
- ->fields('ur', ['rid'])
- ->condition('ur.uid', $row->getSourceProperty('uid'))
- ->execute()
- ->fetchCol();
- $row->setSourceProperty('roles', $roles);
- // We are adding here the Event contributed module column.
- // @see https://api.drupal.org/api/drupal/modules%21user%21user.install/function/user_update_7002/7
- if ($row->hasSourceProperty('timezone_id') && $row->getSourceProperty('timezone_id')) {
- if ($this->getDatabase()->schema()->tableExists('event_timezones')) {
- $event_timezone = $this->select('event_timezones', 'e')
- ->fields('e', ['name'])
- ->condition('e.timezone', $row->getSourceProperty('timezone_id'))
- ->execute()
- ->fetchField();
- if ($event_timezone) {
- $row->setSourceProperty('event_timezone', $event_timezone);
- }
- }
- }
- // Unserialize Data.
- $row->setSourceProperty('data', unserialize($row->getSourceProperty('data')));
- return parent::prepareRow($row);
- }
- /**
- * {@inheritdoc}
- */
- public function getIds() {
- return [
- 'uid' => [
- 'type' => 'integer',
- 'alias' => 'u',
- ],
- ];
- }
- /**
- * Returns the user base fields to be migrated.
- *
- * @return array
- * Associative array having field name as key and description as value.
- */
- protected function baseFields() {
- $fields = [
- 'uid' => $this->t('User ID'),
- 'name' => $this->t('Username'),
- 'pass' => $this->t('Password'),
- 'mail' => $this->t('Email address'),
- 'theme' => $this->t('Theme'),
- 'signature' => $this->t('Signature'),
- 'signature_format' => $this->t('Signature format'),
- 'created' => $this->t('Registered timestamp'),
- 'access' => $this->t('Last access timestamp'),
- 'login' => $this->t('Last login timestamp'),
- 'status' => $this->t('Status'),
- 'timezone' => $this->t('Timezone'),
- 'language' => $this->t('Language'),
- 'picture' => $this->t('Picture'),
- 'init' => $this->t('Init'),
- 'data' => $this->t('User data'),
- ];
- // Possible field added by Date contributed module.
- // @see https://api.drupal.org/api/drupal/modules%21user%21user.install/function/user_update_7002/7
- if ($this->getDatabase()->schema()->fieldExists('users', 'timezone_name')) {
- $fields['timezone_name'] = $this->t('Timezone (Date)');
- }
- // Possible field added by Event contributed module.
- // @see https://api.drupal.org/api/drupal/modules%21user%21user.install/function/user_update_7002/7
- if ($this->getDatabase()->schema()->fieldExists('users', 'timezone_id')) {
- $fields['timezone_id'] = $this->t('Timezone (Event)');
- }
- return $fields;
- }
- }
|