function views_rules_update_clean_collect_action_variable_names in Views Rules 7
Cleans up variable names in collect actions.
Parameters
RulesContainerPlugin $container:
2 calls to views_rules_update_clean_collect_action_variable_names()
- ViewsRulesUpdateTestCase::testCleanCollectActionVariableNames in tests/
views_rules.test - Tests views_rules_update_clean_collect_action_variable_names().
- views_rules_update_7000 in ./
views_rules.install - Updates collect action settings.
File
- ./
views_rules.install, line 25 - Module installation file.
Code
function views_rules_update_clean_collect_action_variable_names($container) {
$changed = FALSE;
$iterator = new RecursiveIteratorIterator($container
->getIterator(), RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $element) {
/** @var RulesAction $element */
if ($element instanceof RulesAction && $element
->getElementName() == 'views_rules_collect_rows') {
$updated_settings = array();
$parameter_info = array();
$variable_info = array();
if (!empty($element->settings['display']) && ($view = views_rules_get_view($element->settings['display']))) {
/** @var $display views_rules_plugin_display_rules */
$display = $view->display_handler;
$parameter_info = $display
->get_rules_parameter_info();
$variable_info = $display
->get_rules_variable_info();
}
foreach ($element->settings as $key => $value) {
$updated_key = $key;
$updated_value = $value;
// Transform 'display' key.
if ($key == 'display') {
$updated_key = 'views_rules_display';
$changed = TRUE;
}
elseif (preg_match('/^param_([^:]*)/', $key, $match) && isset($parameter_info[$match[1]])) {
$updated_key = substr($key, 6);
$changed = TRUE;
}
elseif (preg_match('/^list_([^:]*)/', $key, $match) && isset($variable_info[$match[1]])) {
$updated_key = substr($key, 5);
$changed = TRUE;
}
$updated_settings[$updated_key] = $updated_value;
}
$element->settings = $updated_settings;
}
}
return $changed;
}