Version 1
[yaffs-website] / web / core / modules / field / src / Plugin / migrate / process / d6 / FieldInstanceSettings.php
1 <?php
2
3 namespace Drupal\field\Plugin\migrate\process\d6;
4
5 use Drupal\migrate\MigrateExecutableInterface;
6 use Drupal\migrate\ProcessPluginBase;
7 use Drupal\migrate\Row;
8
9 /**
10  * @MigrateProcessPlugin(
11  *   id = "d6_field_field_settings"
12  * )
13  */
14 class FieldInstanceSettings extends ProcessPluginBase {
15
16   /**
17    * {@inheritdoc}
18    *
19    * Set the field instance defaults.
20    */
21   public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
22     list($widget_type, $widget_settings, $field_settings) = $value;
23     $settings = [];
24     switch ($widget_type) {
25       case 'number':
26         $settings['min'] = $field_settings['min'];
27         $settings['max'] = $field_settings['max'];
28         $settings['prefix'] = $field_settings['prefix'];
29         $settings['suffix'] = $field_settings['suffix'];
30         break;
31
32       case 'link':
33         // $settings['url'] = $widget_settings['default_value'][0]['url'];
34         // D6 has optional, required, value and none. D8 only has disabled (0)
35         // optional (1) and required (2).
36         $map = ['disabled' => 0, 'optional' => 1, 'required' => 2];
37         $settings['title'] = $map[$field_settings['title']];
38         break;
39
40       case 'filefield_widget':
41         $settings['file_extensions'] = $widget_settings['file_extensions'];
42         $settings['file_directory'] = $widget_settings['file_path'];
43         $settings['description_field'] = $field_settings['description_field'];
44         $settings['max_filesize'] = $this->convertSizeUnit($widget_settings['max_filesize_per_file']);
45         break;
46
47       case 'imagefield_widget':
48         $settings['file_extensions'] = $widget_settings['file_extensions'];
49         $settings['file_directory'] = $widget_settings['file_path'];
50         $settings['max_filesize'] = $this->convertSizeUnit($widget_settings['max_filesize_per_file']);
51         $settings['alt_field'] = $widget_settings['alt'];
52         $settings['alt_field_required'] = $widget_settings['custom_alt'];
53         $settings['title_field'] = $widget_settings['title'];
54         $settings['title_field_required'] = $widget_settings['custom_title'];
55         // With nothing entered for min or max resolution in Drupal 6, zero is
56         // stored. For Drupal 8 this should be an empty string.
57         $settings['max_resolution'] = !empty($widget_settings['max_resolution']) ? $widget_settings['max_resolution'] : '';
58         $settings['min_resolution'] = !empty($widget_settings['min_resolution']) ? $widget_settings['min_resolution'] : '';
59         break;
60
61     }
62     return $settings;
63   }
64
65   /**
66    * Convert file size strings into their D8 format.
67    *
68    * D6 stores file size using a "K" for kilobytes and "M" for megabytes where
69    * as D8 uses "KB" and "MB" respectively.
70    *
71    * @param string $size_string
72    *   The size string, eg 10M
73    *
74    * @return string
75    *   The D8 version of the size string.
76    */
77   protected function convertSizeUnit($size_string) {
78     $size_unit = substr($size_string, strlen($size_string) - 1);
79     if ($size_unit == "M" || $size_unit == "K") {
80       return $size_string . "B";
81     }
82     return $size_string;
83   }
84
85 }