X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fcore%2Fmodules%2Fuser%2Fsrc%2FPlugin%2Fmigrate%2Fsource%2Fd6%2FUser.php;fp=web%2Fcore%2Fmodules%2Fuser%2Fsrc%2FPlugin%2Fmigrate%2Fsource%2Fd6%2FUser.php;h=c8e9d19a702fdf99c155b0e11053cf85a1dffb44;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/user/src/Plugin/migrate/source/d6/User.php b/web/core/modules/user/src/Plugin/migrate/source/d6/User.php new file mode 100644 index 000000000..c8e9d19a7 --- /dev/null +++ b/web/core/modules/user/src/Plugin/migrate/source/d6/User.php @@ -0,0 +1,132 @@ +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; + } + +}