* - Removed slick-views.tpl.php for theme_slick_wrapper().
* - Removed slick_views.theme.inc for slick.theme.inc.
* - Removed SlickViews.inc to Drupal\slick_views\Plugin\views\style\SlickViews. */ function slick_views_update_7300() { // Prevents potential blocking updates due to file removals. // Rebuild theme registry. drupal_theme_rebuild(); // Rebuild Slick Views class registry. registry_rebuild(); } /** * Utility function to update formatter and style options within Views displays. * * @todo use batch for potential large sets of slicks. */ function _slick_views_update_style_options(&$display_options) { if (!function_exists('_slick_update_formatter_settings')) { module_load_include('inc', 'slick', 'includes/slick.update'); } $updated = FALSE; // 1. Update style options. if (isset($display_options['style_plugin']) && $display_options['style_plugin'] == 'slick' && isset($display_options['style_options'])) { $updated = TRUE; _slick_update_formatter_settings($display_options['style_options']); } // 2. Also update formatters within views. if (isset($display_options['fields'])) { foreach ($display_options['fields'] as $field_name => $field_display) { if (isset($field_display['type']) && $field_display['type'] == 'slick' && isset($field_display['settings'])) { $updated = TRUE; $field = field_info_field($field_name); // Update deprecated settings, and formatter to the new ones. _slick_update_formatter_settings($display_options['fields'][$field_name]['settings']); $display_options['fields'][$field_name]['type'] = 'slick_' . $field['type']; } } } return $updated; } /** * Utility function to get available Views using Slick Views style plugins. */ function _slick_views_get_view_names() { if (!db_table_exists('views_view')) { return []; } // Cannot query from database as views may be stored in code. // Cannot use vid as nothing in database when stored in code. $views = ctools_export_crud_load_all('views_view', TRUE); $names = []; foreach ($views as $view) { if (!empty($view->display)) { foreach ($view->display as $display) { $display_options = isset($display->display_options) ? $display->display_options : []; if ($display_options) { // 1. Collect all slick views ids. if (isset($display_options['style_plugin']) && $display_options['style_plugin'] == 'slick') { $names[] = $view->name; } // 2. Collect all slick formatters within Views. elseif (isset($display_options['fields'])) { foreach ($display_options['fields'] as $field_display) { if (isset($field_display['type']) && $field_display['type'] == 'slick') { $names[] = $view->name; } } } } } } } $names = $names ? array_values(array_unique($names)) : []; // In order for the update to work, we must save exports into database so that // we have a View ID (vid) to work with. if ($names) { foreach ($names as $name) { $view = ctools_export_crud_load('views_view', $name); ctools_export_crud_save('views_view', $view); } } unset($views); return $names; } /** * Update the deprecated Slick Views options to migrate from Slick 2.x to 3.x. * * Tasks:
* - Updated deprecated settings for both Slick Views style and formatters.
* - Updated deprecated Slick formatter to the new one based on field type.
*/ function slick_views_update_7301() { if (!db_table_exists('views_display')) { return; } module_load_include('inc', 'ctools', 'includes/export'); module_load_include('inc', 'slick', 'includes/slick.update'); // Update Slick Views deprecated settings to use more generic settings. $names = _slick_views_get_view_names(); if (empty($names)) { return; } $success = FALSE; foreach ($names as $name) { $view = ctools_export_crud_load('views_view', $name); // Code has been saved into database previously, the view which was stored // in codebase has now an ID to work with. Here is just in case. if (empty($view->vid)) { continue; } foreach ($view->display as &$display) { if (!empty($display->display_options) && _slick_views_update_style_options($display->display_options)) { db_update('views_display') ->fields(['display_options' => serialize($display->display_options)]) ->condition('id', $view->vid) ->execute(); $success = TRUE; } } // Without re-saving the entire view, the above views_display is ignored. if ($success) { ctools_export_crud_save('views_view', $view); } } // Clear caches that might contain stale Views displays. // Rebuild CTools cache for the views_view. if ($success) { ctools_export_load_object_reset('views_view'); cache_clear_all('*', 'cache_views', TRUE); cache_clear_all('*', 'cache_views_data', TRUE); cache_clear_all('*', 'cache_block', TRUE); cache_clear_all('*', 'cache_page', TRUE); } return $success ? t('Slick Views style plugin updated.') : t('Doh! Slick Views failed updating.'); }