save(); } } } /** * Cleans up variable names in collect actions. * * @param RulesContainerPlugin $container */ 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; } // Transform parameter key. elseif (preg_match('/^param_([^:]*)/', $key, $match) && isset($parameter_info[$match[1]])) { $updated_key = substr($key, 6); $changed = TRUE; } // Transform list variable key. 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; }