Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
79.17% |
19 / 24 |
FieldSettings | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
12.09 | |
79.17% |
19 / 24 |
transform | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getSettings | |
0.00% |
0 / 1 |
10.25 | |
86.36% |
19 / 22 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\field\Plugin\migrate\process\d6\FieldSettings. | |
*/ | |
namespace Drupal\field\Plugin\migrate\process\d6; | |
use Drupal\migrate\MigrateExecutableInterface; | |
use Drupal\migrate\ProcessPluginBase; | |
use Drupal\migrate\Row; | |
/** | |
* Get the field settings. | |
* | |
* @MigrateProcessPlugin( | |
* id = "field_settings" | |
* ) | |
*/ | |
class FieldSettings extends ProcessPluginBase { | |
/** | |
* {@inheritdoc} | |
* | |
* Get the field default/mapped settings. | |
*/ | |
public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { | |
list($field_type, $global_settings) = $value; | |
return $this->getSettings($field_type, $global_settings); | |
} | |
/** | |
* Merge the default D8 and specified D6 settings. | |
* | |
* @param string $field_type | |
* The field type. | |
* @param array $global_settings | |
* The field settings. | |
* | |
* @return array | |
* A valid array of settings. | |
*/ | |
public function getSettings($field_type, $global_settings) { | |
$max_length = isset($global_settings['max_length']) ? $global_settings['max_length'] : ''; | |
$max_length = empty($max_length) ? 255 : $max_length; | |
$allowed_values = []; | |
if (isset($global_settings['allowed_values'])) { | |
$list = explode("\n", $global_settings['allowed_values']); | |
$list = array_map('trim', $list); | |
$list = array_filter($list, 'strlen'); | |
switch ($field_type) { | |
case 'list_string': | |
case 'list_integer': | |
case 'list_float': | |
foreach ($list as $value) { | |
$value = explode("|", $value); | |
$allowed_values[$value[0]] = isset($value[1]) ? $value[1] : $value[0]; | |
} | |
break; | |
default: | |
$allowed_values = $list; | |
} | |
} | |
$settings = array( | |
'text' => array( | |
'max_length' => $max_length, | |
), | |
'datetime' => array('datetime_type' => 'datetime'), | |
'list_string' => array( | |
'allowed_values' => $allowed_values, | |
), | |
'list_integer' => array( | |
'allowed_values' => $allowed_values, | |
), | |
'list_float' => array( | |
'allowed_values' => $allowed_values, | |
), | |
'boolean' => array( | |
'allowed_values' => $allowed_values, | |
), | |
); | |
return isset($settings[$field_type]) ? $settings[$field_type] : array(); | |
} | |
} |