3 namespace Drupal\user\Plugin\migrate\source\d6;
5 use Drupal\migrate\Row;
6 use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
9 * Drupal 6 profile fields values source.
12 * id = "d6_profile_field_values",
13 * source_provider = "profile"
16 class ProfileFieldValues extends DrupalSqlBase {
21 public function query() {
22 $query = $this->select('profile_values', 'pv')
24 ->fields('pv', ['uid']);
32 public function prepareRow(Row $row) {
33 // Find profile values for this row.
34 $query = $this->select('profile_values', 'pv')
35 ->fields('pv', ['fid', 'value']);
36 $query->leftJoin('profile_fields', 'pf', 'pf.fid=pv.fid');
37 $query->fields('pf', ['name', 'type']);
38 $query->condition('uid', $row->getSourceProperty('uid'));
39 $results = $query->execute();
41 foreach ($results as $profile_value) {
42 // Check special case for date. We need to unserialize.
43 if ($profile_value['type'] == 'date') {
44 $date = unserialize($profile_value['value']);
45 $date = date('Y-m-d', mktime(0, 0, 0, $date['month'], $date['day'], $date['year']));
46 $row->setSourceProperty($profile_value['name'], ['value' => $date]);
48 elseif ($profile_value['type'] == 'list') {
49 // Explode by newline and comma.
50 $row->setSourceProperty($profile_value['name'], preg_split("/[\r\n,]+/", $profile_value['value']));
53 $row->setSourceProperty($profile_value['name'], [$profile_value['value']]);
57 return parent::prepareRow($row);
63 public function fields() {
65 'fid' => $this->t('Unique profile field ID.'),
66 'uid' => $this->t('The user Id.'),
67 'value' => $this->t('The value for this field.'),
70 $query = $this->select('profile_values', 'pv')
71 ->fields('pv', ['fid', 'value']);
72 $query->leftJoin('profile_fields', 'pf', 'pf.fid=pv.fid');
73 $query->fields('pf', ['name', 'title']);
74 $results = $query->execute();
75 foreach ($results as $profile) {
76 $fields[$profile['name']] = $this->t($profile['title']);
85 public function getIds() {