Commit d111ef32 authored by alexpott's avatar alexpott
Browse files

Issue #2272853 by webflo: Fixed CckFieldValues source plugin loses similar field values.

parent b05990a7
......@@ -115,7 +115,7 @@ public function prepareRow(Row $row) {
$source = $row->getSource();
// We diff the results with the source to find any field columns
// in the content type's main table.
$new_fields = array_diff($results, $source);
$new_fields = array_diff_key($results, $source);
foreach ($new_fields as $key => $value) {
$row->setSourceProperty($key, $value);
}
......
......@@ -790,6 +790,70 @@ public function load() {
)),
'description' => 'An example multi-valued decimal field.',
))
->values(array(
'field_name' => 'field_test_identical1',
'type_name' => 'story',
'weight' => 2,
'label' => 'Integer Field',
'widget_type' => 'number',
'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:41:"default_value_widget][field_int][0][value";}}s:17:"default_value_php";N;}',
'display_settings' => serialize(array(
'weight' => 2,
'parent' => '',
'label' => array(
'format' => 'above',
),
'teaser' => array(
'format' => 'unformatted',
'exclude' => 0,
),
'full' => array(
'format' => 'us_0',
'exclude' => 0,
),
4 => array(
'format' => 'unformatted',
'exclude' => 0,
),
5 => array(
'format' => 'default',
'exclude' => 1,
),
)),
'description' => 'An example integer field.',
))
->values(array(
'field_name' => 'field_test_identical2',
'type_name' => 'story',
'weight' => 2,
'label' => 'Integer Field',
'widget_type' => 'number',
'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:41:"default_value_widget][field_int][0][value";}}s:17:"default_value_php";N;}',
'display_settings' => serialize(array(
'weight' => 2,
'parent' => '',
'label' => array(
'format' => 'above',
),
'teaser' => array(
'format' => 'unformatted',
'exclude' => 0,
),
'full' => array(
'format' => 'us_0',
'exclude' => 0,
),
4 => array(
'format' => 'unformatted',
'exclude' => 0,
),
5 => array(
'format' => 'default',
'exclude' => 1,
),
)),
'description' => 'An example integer field.',
))
->execute();
// Create the field table.
......@@ -1082,6 +1146,38 @@ public function load() {
'db_columns' => 'a:1:{s:5:"value";a:5:{s:4:"type";s:7:"numeric";s:9:"precision";s:2:"10";s:5:"scale";s:1:"2";s:8:"not null";b:0;s:8:"sortable";b:1;}}',
'active' => 1,
))
->values(array(
'field_name' => 'field_test_identical1',
'module' => 'number',
'type' => 'number_integer',
'global_settings' => '',
'multiple' => 0,
'db_storage' => 1,
'db_columns' => serialize(array(
'value' => array(
'type' => 'int',
'not null' => FALSE,
'sortable' => TRUE,
),
)),
'active' => 1,
))
->values(array(
'field_name' => 'field_test_identical2',
'module' => 'number',
'type' => 'number_integer',
'global_settings' => '',
'multiple' => 0,
'db_storage' => 1,
'db_columns' => serialize(array(
'value' => array(
'type' => 'int',
'not null' => FALSE,
'sortable' => TRUE,
),
)),
'active' => 1,
))
->execute();
$this->createTable('content_field_test', array(
......
......@@ -350,6 +350,18 @@ public function load() {
'unsigned' => FALSE,
'not null' => FALSE
),
'field_test_identical1_value' => array(
'description' => 'Test field column.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => FALSE
),
'field_test_identical2_value' => array(
'description' => 'Test field column.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => FALSE
),
),
'primary key' => array('vid'),
));
......@@ -361,6 +373,8 @@ public function load() {
'uid',
'field_test_three_value',
'field_test_integer_selectlist_value',
'field_test_identical1_value',
'field_test_identical2_value'
))
->values(array(
'nid' => 1,
......@@ -368,6 +382,8 @@ public function load() {
'uid' => 1,
'field_test_three_value' => '42.42',
'field_test_integer_selectlist_value' => '3412',
'field_test_identical1_value' => 1,
'field_test_identical2_value' => 1,
))
->execute();
$this->setModuleVersion('content', 6001);
......
......@@ -83,6 +83,28 @@ protected function setUp() {
'bundle' => 'test_planet',
))->save();
entity_create('field_storage_config', array(
'entity_type' => 'node',
'field_name' => 'field_test_identical1',
'type' => 'integer',
))->save();
entity_create('field_config', array(
'entity_type' => 'node',
'field_name' => 'field_test_identical1',
'bundle' => 'story',
))->save();
entity_create('field_storage_config', array(
'entity_type' => 'node',
'field_name' => 'field_test_identical2',
'type' => 'integer',
))->save();
entity_create('field_config', array(
'entity_type' => 'node',
'field_name' => 'field_test_identical2',
'bundle' => 'story',
))->save();
// Add some id mappings for the dependant migrations.
$id_mappings = array(
'd6_field_formatter_settings' => array(
......@@ -118,6 +140,8 @@ public function testCckFields() {
$this->assertEqual($node->field_test_two[1]->value, 20, 'Multi field second value is correct.');
$this->assertEqual($node->field_test_three->value, '42.42', 'Single field second value is correct.');
$this->assertEqual($node->field_test_integer_selectlist[0]->value, '3412', 'Integer select list value is correct');
$this->assertEqual($node->field_test_identical1->value, '1', 'Integer value is correct');
$this->assertEqual($node->field_test_identical2->value, '1', 'Integer value is correct');
$planet_node = Node::load(3);
$this->assertEqual($planet_node->field_multivalue->value, 33);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment