Issue #2705977 by heddn, edysmp: D6/7->D8 migration: User role based block visibility settings doesn't filter missing roles
parent
ce31c4e227
commit
b313cdcd8b
|
@ -43,6 +43,13 @@ class Block extends DrupalSqlBase {
|
||||||
*/
|
*/
|
||||||
protected $blockRoleTable;
|
protected $blockRoleTable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Table listing user roles.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $userRoleTable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
|
@ -55,6 +62,9 @@ class Block extends DrupalSqlBase {
|
||||||
$this->blockTable = 'blocks';
|
$this->blockTable = 'blocks';
|
||||||
$this->blockRoleTable = 'blocks_roles';
|
$this->blockRoleTable = 'blocks_roles';
|
||||||
}
|
}
|
||||||
|
// Drupal 6 & 7 both use the same name for the user roles table.
|
||||||
|
$this->userRoleTable = 'role';
|
||||||
|
|
||||||
return $this->select($this->blockTable, 'b')->fields('b');
|
return $this->select($this->blockTable, 'b')->fields('b');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,11 +116,12 @@ class Block extends DrupalSqlBase {
|
||||||
$module = $row->getSourceProperty('module');
|
$module = $row->getSourceProperty('module');
|
||||||
$delta = $row->getSourceProperty('delta');
|
$delta = $row->getSourceProperty('delta');
|
||||||
|
|
||||||
$roles = $this->select($this->blockRoleTable, 'br')
|
$query = $this->select($this->blockRoleTable, 'br')
|
||||||
->fields('br', array('rid'))
|
->fields('br', array('rid'))
|
||||||
->condition('module', $module)
|
->condition('module', $module)
|
||||||
->condition('delta', $delta)
|
->condition('delta', $delta);
|
||||||
->execute()
|
$query->join($this->userRoleTable, 'ur', 'br.rid = ur.rid');
|
||||||
|
$roles = $query->execute()
|
||||||
->fetchCol();
|
->fetchCol();
|
||||||
$row->setSourceProperty('roles', $roles);
|
$row->setSourceProperty('roles', $roles);
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,39 @@ class BlockTest extends MigrateSqlSourceTestCase {
|
||||||
* Sample block instance query results from the source.
|
* Sample block instance query results from the source.
|
||||||
*/
|
*/
|
||||||
protected $expectedResults = array(
|
protected $expectedResults = array(
|
||||||
|
array(
|
||||||
|
'bid' => 1,
|
||||||
|
'module' => 'block',
|
||||||
|
'delta' => '1',
|
||||||
|
'theme' => 'garland',
|
||||||
|
'status' => 1,
|
||||||
|
'weight' => 0,
|
||||||
|
'region' => 'left',
|
||||||
|
'visibility' => 0,
|
||||||
|
'pages' => '',
|
||||||
|
'title' => 'Test Title 01',
|
||||||
|
'cache' => -1,
|
||||||
|
'roles' => [2]
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'bid' => 2,
|
||||||
|
'module' => 'block',
|
||||||
|
'delta' => '2',
|
||||||
|
'theme' => 'garland',
|
||||||
|
'status' => 1,
|
||||||
|
'weight' => 5,
|
||||||
|
'region' => 'right',
|
||||||
|
'visibility' => 0,
|
||||||
|
'pages' => '<front>',
|
||||||
|
'title' => 'Test Title 02',
|
||||||
|
'cache' => -1,
|
||||||
|
'roles' => [2]
|
||||||
|
),
|
||||||
|
);
|
||||||
|
/**
|
||||||
|
* Sample block table.
|
||||||
|
*/
|
||||||
|
protected $expectedBlocks = array(
|
||||||
array(
|
array(
|
||||||
'bid' => 1,
|
'bid' => 1,
|
||||||
'module' => 'block',
|
'module' => 'block',
|
||||||
|
@ -62,14 +95,35 @@ class BlockTest extends MigrateSqlSourceTestCase {
|
||||||
'delta' => 1,
|
'delta' => 1,
|
||||||
'rid' => 2,
|
'rid' => 2,
|
||||||
),
|
),
|
||||||
|
array(
|
||||||
|
'module' => 'block',
|
||||||
|
'delta' => 2,
|
||||||
|
'rid' => 2,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'module' => 'block',
|
||||||
|
'delta' => 2,
|
||||||
|
'rid' => 100,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sample role table.
|
||||||
|
*/
|
||||||
|
protected $expectedRole = array(
|
||||||
|
array(
|
||||||
|
'rid' => 2,
|
||||||
|
'name' => 'authenticated user',
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepopulate database contents.
|
* Prepopulate database contents.
|
||||||
*/
|
*/
|
||||||
protected function setUp() {
|
protected function setUp() {
|
||||||
$this->databaseContents['blocks'] = $this->expectedResults;
|
$this->databaseContents['blocks'] = $this->expectedBlocks;
|
||||||
$this->databaseContents['blocks_roles'] = $this->expectedBlocksRoles;
|
$this->databaseContents['blocks_roles'] = $this->expectedBlocksRoles;
|
||||||
|
$this->databaseContents['role'] = $this->expectedRole;
|
||||||
$this->databaseContents['system'] = array(
|
$this->databaseContents['system'] = array(
|
||||||
array(
|
array(
|
||||||
'filename' => 'modules/system/system.module',
|
'filename' => 'modules/system/system.module',
|
||||||
|
|
|
@ -27,7 +27,13 @@ class FieldInstanceTest extends MigrateSqlSourceTestCase {
|
||||||
'bundle' => 'page',
|
'bundle' => 'page',
|
||||||
'label' => 'Body',
|
'label' => 'Body',
|
||||||
'widget_settings' => array(
|
'widget_settings' => array(
|
||||||
|
'module' => 'text',
|
||||||
|
'settings' => array(
|
||||||
|
'rows' => 20,
|
||||||
|
'summary_rows' => 5,
|
||||||
|
),
|
||||||
'type' => 'text_textarea_with_summary',
|
'type' => 'text_textarea_with_summary',
|
||||||
|
'weight' => -4,
|
||||||
),
|
),
|
||||||
'display_settings' => array(
|
'display_settings' => array(
|
||||||
),
|
),
|
||||||
|
|
|
@ -26,8 +26,28 @@ class FieldTest extends MigrateSqlSourceTestCase {
|
||||||
'type' => 'file',
|
'type' => 'file',
|
||||||
'global_settings' => '',
|
'global_settings' => '',
|
||||||
'storage' => array(
|
'storage' => array(
|
||||||
'type' => 'field_sql_storage',
|
'active' => 1,
|
||||||
|
'details' => array(
|
||||||
|
'sql' => array(
|
||||||
|
'FIELD_LOAD_CURRENT' => array(
|
||||||
|
'field_data_field_file' => array(
|
||||||
|
'description' => 'field_file_description',
|
||||||
|
'display' => 'field_file_display',
|
||||||
|
'fid' => 'field_file_fid',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'FIELD_LOAD_REVISION' => array(
|
||||||
|
'field_revision_field_file' => array(
|
||||||
|
'description' => 'field_file_description',
|
||||||
|
'display' => 'field_file_display',
|
||||||
|
'fid' => 'field_file_fid',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
'module' => 'field_sql_storage',
|
'module' => 'field_sql_storage',
|
||||||
|
'settings' => array(),
|
||||||
|
'type' => 'field_sql_storage',
|
||||||
),
|
),
|
||||||
'module' => 'file',
|
'module' => 'file',
|
||||||
'db_columns' => '',
|
'db_columns' => '',
|
||||||
|
@ -39,8 +59,28 @@ class FieldTest extends MigrateSqlSourceTestCase {
|
||||||
'type' => 'file',
|
'type' => 'file',
|
||||||
'global_settings' => '',
|
'global_settings' => '',
|
||||||
'storage' => array(
|
'storage' => array(
|
||||||
'type' => 'field_sql_storage',
|
'active' => 1,
|
||||||
|
'details' => array(
|
||||||
|
'sql' => array(
|
||||||
|
'FIELD_LOAD_CURRENT' => array(
|
||||||
|
'field_data_field_file' => array(
|
||||||
|
'description' => 'field_file_description',
|
||||||
|
'display' => 'field_file_display',
|
||||||
|
'fid' => 'field_file_fid',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'FIELD_LOAD_REVISION' => array(
|
||||||
|
'field_revision_field_file' => array(
|
||||||
|
'description' => 'field_file_description',
|
||||||
|
'display' => 'field_file_display',
|
||||||
|
'fid' => 'field_file_fid',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
'module' => 'field_sql_storage',
|
'module' => 'field_sql_storage',
|
||||||
|
'settings' => array(),
|
||||||
|
'type' => 'field_sql_storage',
|
||||||
),
|
),
|
||||||
'module' => 'file',
|
'module' => 'file',
|
||||||
'db_columns' => '',
|
'db_columns' => '',
|
||||||
|
|
|
@ -32,16 +32,19 @@ class FilterFormatTest extends MigrateSqlSourceTestCase {
|
||||||
'module' => 'filter',
|
'module' => 'filter',
|
||||||
'delta' => 2,
|
'delta' => 2,
|
||||||
'weight' => 0,
|
'weight' => 0,
|
||||||
|
'settings' => array(),
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'module' => 'filter',
|
'module' => 'filter',
|
||||||
'delta' => 0,
|
'delta' => 0,
|
||||||
'weight' => 1,
|
'weight' => 1,
|
||||||
|
'settings' => array(),
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'module' => 'filter',
|
'module' => 'filter',
|
||||||
'delta' => 1,
|
'delta' => 1,
|
||||||
'weight' => 2,
|
'weight' => 2,
|
||||||
|
'settings' => array(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -55,16 +58,19 @@ class FilterFormatTest extends MigrateSqlSourceTestCase {
|
||||||
'module' => 'filter',
|
'module' => 'filter',
|
||||||
'delta' => 2,
|
'delta' => 2,
|
||||||
'weight' => 0,
|
'weight' => 0,
|
||||||
|
'settings' => array(),
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'module' => 'filter',
|
'module' => 'filter',
|
||||||
'delta' => 1,
|
'delta' => 1,
|
||||||
'weight' => 1,
|
'weight' => 1,
|
||||||
|
'settings' => array(),
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'module' => 'filter',
|
'module' => 'filter',
|
||||||
'delta' => 3,
|
'delta' => 3,
|
||||||
'weight' => 10,
|
'weight' => 10,
|
||||||
|
'settings' => array(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -79,6 +85,7 @@ class FilterFormatTest extends MigrateSqlSourceTestCase {
|
||||||
'module' => 'markdown',
|
'module' => 'markdown',
|
||||||
'delta' => 1,
|
'delta' => 1,
|
||||||
'weight' => 10,
|
'weight' => 10,
|
||||||
|
'settings' => array(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -89,9 +96,11 @@ class FilterFormatTest extends MigrateSqlSourceTestCase {
|
||||||
*/
|
*/
|
||||||
protected function setUp() {
|
protected function setUp() {
|
||||||
$fid = 1;
|
$fid = 1;
|
||||||
|
$empty_array = serialize(array());
|
||||||
foreach ($this->expectedResults as $k => $row) {
|
foreach ($this->expectedResults as $k => $row) {
|
||||||
$row['roles'] = ',' . implode(',', $row['roles']) . ',';
|
$row['roles'] = ',' . implode(',', $row['roles']) . ',';
|
||||||
foreach ($row['filters'] as $filter) {
|
foreach ($row['filters'] as $filter) {
|
||||||
|
$filter['settings'] = $empty_array;
|
||||||
$this->databaseContents['filters'][$fid] = $filter;
|
$this->databaseContents['filters'][$fid] = $filter;
|
||||||
$this->databaseContents['filters'][$fid]['format'] = $row['format'];
|
$this->databaseContents['filters'][$fid]['format'] = $row['format'];
|
||||||
$this->databaseContents['filters'][$fid]['fid'] = $fid;
|
$this->databaseContents['filters'][$fid]['fid'] = $fid;
|
||||||
|
|
|
@ -29,6 +29,7 @@ class FilterFormatTest extends MigrateSqlSourceTestCase {
|
||||||
'weight' => 0,
|
'weight' => 0,
|
||||||
'filters' => array(
|
'filters' => array(
|
||||||
'filter_autop' => array(
|
'filter_autop' => array(
|
||||||
|
'format' => 'custom_text_format',
|
||||||
'module' => 'filter',
|
'module' => 'filter',
|
||||||
'name' => 'filter_autop',
|
'name' => 'filter_autop',
|
||||||
'weight' => 0,
|
'weight' => 0,
|
||||||
|
@ -36,6 +37,7 @@ class FilterFormatTest extends MigrateSqlSourceTestCase {
|
||||||
'settings' => array(),
|
'settings' => array(),
|
||||||
),
|
),
|
||||||
'filter_html' => array(
|
'filter_html' => array(
|
||||||
|
'format' => 'custom_text_format',
|
||||||
'module' => 'filter',
|
'module' => 'filter',
|
||||||
'name' => 'filter_html',
|
'name' => 'filter_html',
|
||||||
'weight' => 1,
|
'weight' => 1,
|
||||||
|
@ -52,6 +54,7 @@ class FilterFormatTest extends MigrateSqlSourceTestCase {
|
||||||
'weight' => 1,
|
'weight' => 1,
|
||||||
'filters' => array(
|
'filters' => array(
|
||||||
'filter_url' => array(
|
'filter_url' => array(
|
||||||
|
'format' => 'full_html',
|
||||||
'module' => 'filter',
|
'module' => 'filter',
|
||||||
'name' => 'filter_url',
|
'name' => 'filter_url',
|
||||||
'weight' => 0,
|
'weight' => 0,
|
||||||
|
|
|
@ -199,9 +199,11 @@ abstract class MigrateTestCase extends UnitTestCase {
|
||||||
*/
|
*/
|
||||||
protected function retrievalAssertHelper($expected_value, $actual_value, $message) {
|
protected function retrievalAssertHelper($expected_value, $actual_value, $message) {
|
||||||
if (is_array($expected_value)) {
|
if (is_array($expected_value)) {
|
||||||
foreach ($expected_value as $k => $v) {
|
// If the expected and actual values are empty, no need to array compare.
|
||||||
$this->retrievalAssertHelper($v, $actual_value[$k], $message . '[' . $k . ']');
|
if (empty($expected_value && $actual_value)) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
$this->assertArrayEquals($expected_value, $actual_value, $message);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this->assertSame((string) $expected_value, (string) $actual_value, $message);
|
$this->assertSame((string) $expected_value, (string) $actual_value, $message);
|
||||||
|
|
|
@ -92,7 +92,10 @@ class NodeTest extends MigrateSqlSourceTestCase {
|
||||||
'timestamp' => 1279308993,
|
'timestamp' => 1279308993,
|
||||||
'format' => 1,
|
'format' => 1,
|
||||||
'field_test_four' => array(
|
'field_test_four' => array(
|
||||||
array('value' => '3.14159'),
|
array(
|
||||||
|
'value' => '3.14159',
|
||||||
|
'delta' => 0,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue