diff --git a/includes/admin.inc b/includes/admin.inc index 010c6889652..1cbc9c0f121 100644 --- a/includes/admin.inc +++ b/includes/admin.inc @@ -134,7 +134,7 @@ function views_ui_preview($view, $display_id, $args = array()) { // be in GET. Copy stuff but remove ajax-framework specific keys. // If we're clicking on links in a preview, though, we could actually // still have some in $_GET, so we use $_REQUEST to ensure we get it all. - $exposed_input = $_REQUEST; + $exposed_input = drupal_container()->get('request')->request->all(); foreach (array('view_name', 'view_display_id', 'view_args', 'view_path', 'view_dom_id', 'pager_element', 'view_base_path', 'ajax_html_ids', 'ajax_page_state', 'form_id', 'form_build_id', 'form_token') as $key) { if (isset($exposed_input[$key])) { unset($exposed_input[$key]); @@ -731,10 +731,12 @@ function views_ui_add_form_store_edit_submit($form, &$form_state) { // If there is a destination query, ensure we still redirect the user to the // edit view page, and then redirect the user to the destination. + // @todo: Revisit this when http://drupal.org/node/1668866 is in. $destination = array(); - if (isset($_GET['destination'])) { + $query = drupal_container()->get('request')->query; + if ($query->has('destination')) { $destination = drupal_get_destination(); - unset($_GET['destination']); + $query->remove('destination'); } $form_state['redirect'] = array('admin/structure/views/view/' . $view->name, array('query' => $destination)); } @@ -840,9 +842,9 @@ function views_ui_break_lock_confirm($form, &$form_state, $view) { return $form; } - $cancel = 'admin/structure/views/view/' . $view->name . '/edit'; - if (!empty($_REQUEST['cancel'])) { - $cancel = $_REQUEST['cancel']; + $cancel = drupal_container()->get('request')->query->get('cancel'); + if (empty($cancel)) { + $cancel = 'admin/structure/views/view/' . $view->name . '/edit'; } $account = user_load($view->locked->ownerId); @@ -917,10 +919,6 @@ function views_ui_edit_page($view, $display_id = NULL) { } function views_ui_build_preview($view, $display_id, $render = TRUE) { - if (isset($_POST['ajax_html_ids'])) { - unset($_POST['ajax_html_ids']); - } - $build = array( '#theme_wrappers' => array('container'), '#attributes' => array('id' => 'views-preview-wrapper', 'class' => 'views-admin clearfix'), @@ -1146,7 +1144,7 @@ function views_ui_edit_form($form, &$form_state, $view, $display_id = NULL) { // If relationships had to be fixed, we want to get that into the cache // so that edits work properly, and to try to get the user to save it // so that it's not using weird fixed up relationships. - if (!empty($view->relationships_changed) && empty($_POST)) { + if (!empty($view->relationships_changed) && drupal_container()->get('request')->request->count()) { drupal_set_message(t('This view has been automatically updated to fix missing relationships. While this View should continue to work, you should verify that the automatic updates are correct and save this view.')); views_ui_cache_set($view); } @@ -1420,7 +1418,10 @@ function views_ui_edit_form_submit_preview($form, &$form_state) { * should not yet redirect to the destination. */ function views_ui_edit_form_submit_delay_destination($form, &$form_state) { - if (isset($_GET['destination']) && $form_state['redirect'] !== FALSE) { + $query = drupal_container()->get('request')->query; + // @todo: Revisit this when http://drupal.org/node/1668866 is in. + $destination = $query->get('destination'); + if (isset($destination) && $form_state['redirect'] !== FALSE) { if (!isset($form_state['redirect'])) { $form_state['redirect'] = current_path(); } @@ -1429,10 +1430,10 @@ function views_ui_edit_form_submit_delay_destination($form, &$form_state) { } $options = isset($form_state['redirect'][1]) ? $form_state['redirect'][1] : array(); if (!isset($options['query']['destination'])) { - $options['query']['destination'] = $_GET['destination']; + $options['query']['destination'] = $destination; } $form_state['redirect'][1] = $options; - unset($_GET['destination']); + $query->remove('destination'); } } @@ -2122,8 +2123,10 @@ function views_ui_edit_view_form_submit($form, &$form_state) { } // Direct the user to the right url, if the path of the display has changed. - if (!empty($_GET['destination'])) { - $destination = $_GET['destination']; + $query = drupal_container()->get('request')->query; + // @todo: Revisit this when http://drupal.org/node/1668866 is in. + $destination = $query->get('destination'); + if (!empty($destination)) { // Find out the first display which has a changed path and redirect to this url. $old_view = views_get_view($form_state['view']->name); foreach ($old_view->display as $id => $display) { @@ -2134,7 +2137,7 @@ function views_ui_edit_view_form_submit($form, &$form_state) { $old_path = $display->display_options['path']; if (($display->display_plugin == 'page') && ($old_path == $destination) && ($old_path != $form_state['view']->display[$id]->display_options['path'])) { $destination = $form_state['view']->display[$id]->display_options['path']; - unset($_GET['destination']); + $query->remove('destination'); } } $form_state['redirect'] = $destination; @@ -2161,7 +2164,11 @@ function views_ui_edit_view_form_cancel($form, &$form_state) { } function views_ui_edit_view_form_delete($form, &$form_state) { - unset($_REQUEST['destination']); + $request = drupal_container()->get('request')->request; + // @todo: Revisit this when http://drupal.org/node/1668866 is in. + if ($request->get('destination') !== NULL) { + $request->remove('destination'); + } // Redirect to the delete confirm page $form_state['redirect'] = array('admin/structure/views/view/' . $form_state['view']->name . '/delete', array('query' => drupal_get_destination() + array('cancel' => 'admin/structure/views/view/' . $form_state['view']->name . '/edit'))); } @@ -2870,12 +2877,6 @@ function views_ui_add_form_to_stack($key, &$view, $display_id, $args, $top = FAL * together. */ function views_ui_ajax_form($js, $key, $view, $display_id = '') { - // Reset the cache of IDs. Drupal rather aggressively prevents id duplication - // but this causes it to remember IDs that are no longer even being used. - if (isset($_POST['ajax_html_ids'])) { - unset($_POST['ajax_html_ids']); - } - $form = views_ui_ajax_forms($key); if (empty($form)) { return MENU_NOT_FOUND; @@ -5071,7 +5072,7 @@ function views_ui_autocomplete_tag($string = '') { } } - drupal_json_output($matches); + return new JsonResponse($matches); } // ------------------------------------------------------------------ diff --git a/includes/ajax.inc b/includes/ajax.inc index a23f2b3180a..98d335c66d5 100644 --- a/includes/ajax.inc +++ b/includes/ajax.inc @@ -15,26 +15,28 @@ * Menu callback to load a view via AJAX. */ function views_ajax() { - if (isset($_REQUEST['view_name']) && isset($_REQUEST['view_display_id'])) { - $name = $_REQUEST['view_name']; - $display_id = $_REQUEST['view_display_id']; - $args = isset($_REQUEST['view_args']) && $_REQUEST['view_args'] !== '' ? explode('/', $_REQUEST['view_args']) : array(); - $path = isset($_REQUEST['view_path']) ? rawurldecode($_REQUEST['view_path']) : NULL; - $dom_id = isset($_REQUEST['view_dom_id']) ? preg_replace('/[^a-zA-Z0-9_-]+/', '-', $_REQUEST['view_dom_id']) : NULL; - $pager_element = isset($_REQUEST['pager_element']) ? intval($_REQUEST['pager_element']) : NULL; + $request = drupal_container()->get('request'); + $name = $request->request->get('view_name'); + $display_id = $request->request->get('view_display_id'); + if (isset($name) && isset($display_id)) { + $args = $request->request->get('view_args'); + $args = isset($args) && $args !== '' ? explode('/', $args) : array(); + $path = $request->request->get('view_path'); + $dom_id = $request->request->get('view_dom_id'); + $dom_id = isset($dom_id) ? preg_replace('/[^a-zA-Z0-9_-]+/', '-', $dom_id) : NULL; + $pager_element = $request->request->get('pager_element'); + $pager_element = isset($pager_element) ? intval($pager_element) : NULL; $commands = array(); - // Remove all of this stuff from $_GET so it doesn't end up in pagers and tablesort URLs. + // Remove all of this stuff from the query of the request so it doesn't end + // up in pagers and tablesort URLs. foreach (array('view_name', 'view_display_id', 'view_args', 'view_path', 'view_dom_id', 'pager_element', 'view_base_path', 'ajax_html_ids', 'ajax_page_state') as $key) { - if (isset($_GET[$key])) { - unset($_GET[$key]); + if ($request->query->has($key)) { + $request->query->remove($key); } - if (isset($_REQUEST[$key])) { - unset($_REQUEST[$key]); - } - if (isset($_POST[$key])) { - unset($_POST[$key]); + if ($request->request->has($key)) { + $request->request->remove($key); } } @@ -48,12 +50,14 @@ function views_ajax() { // Add all $_POST data, because AJAX is always a post and many things, // such as tablesorts, exposed filters and paging assume $_GET. - $_GET = $_POST + $_GET; + $request_all = $request->request->all(); + $query_all = $request->query->all(); + $request->query->replace($request_all + $query_all); // Overwrite the destination. // @see drupal_get_destination() $origin_destination = $path; - $query = drupal_http_build_query($_REQUEST); + $query = drupal_http_build_query($request->query->all()); if ($query != '') { $origin_destination .= '?' . $query; } @@ -313,7 +317,7 @@ function views_ajax_autocomplete_user($string = '') { } } - drupal_json_output($matches); + return new JsonResponse($matches); } /** @@ -366,7 +370,7 @@ function views_ajax_autocomplete_taxonomy($vid, $tags_typed = '') { } } - drupal_json_output($term_matches); + return new JsonResponse($term_matches); } /** diff --git a/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php b/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php index a954a2c815b..6edd6a65764 100644 --- a/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php +++ b/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php @@ -1707,8 +1707,8 @@ abstract class DisplayPluginBase extends PluginBase { $form['#title'] .= t('Theming information'); $form['#help_topic'] = 'analyze-theme'; - if (isset($_POST['theme'])) { - $this->theme = $_POST['theme']; + if ($theme = drupal_container()->get('request')->request->get('theme')) { + $this->theme = $theme; } elseif (empty($this->theme)) { $this->theme = variable_get('theme_default', 'bartik'); diff --git a/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php b/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php index cc1cd4cc9cc..8c3718406b5 100644 --- a/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php +++ b/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php @@ -1465,7 +1465,7 @@ If you would like to have the characters \'[\' and \']\' please use the html ent } // Get flattened set of tokens for any array depth in $_GET parameters. - $tokens += $this->get_token_values_recursive($_GET); + $tokens += $this->get_token_values_recursive(drupal_container()->get('request')->query->all()); // Now add replacements for our fields. foreach ($this->view->display_handler->get_handlers('field') as $field => $handler) { diff --git a/lib/Drupal/views/Plugin/views/pager/Full.php b/lib/Drupal/views/Plugin/views/pager/Full.php index b39cd2abbb9..bfd6257068c 100644 --- a/lib/Drupal/views/Plugin/views/pager/Full.php +++ b/lib/Drupal/views/Plugin/views/pager/Full.php @@ -261,16 +261,20 @@ class Full extends PagerPluginBase { function query() { if ($this->items_per_page_exposed()) { - if (!empty($_GET['items_per_page']) && $_GET['items_per_page'] > 0) { - $this->options['items_per_page'] = $_GET['items_per_page']; + $query = drupal_container()->get('request')->query; + $items_per_page = $query->get('items_per_page'); + if ($items_per_page > 0) { + $this->options['items_per_page'] = $items_per_page; } - elseif (!empty($_GET['items_per_page']) && $_GET['items_per_page'] == 'All' && $this->options['expose']['items_per_page_options_all']) { + elseif ($items_per_page == 'All' && $this->options['expose']['items_per_page_options_all']) { $this->options['items_per_page'] = 0; } } if ($this->offset_exposed()) { - if (isset($_GET['offset']) && $_GET['offset'] >= 0) { - $this->options['offset'] = $_GET['offset']; + $query = drupal_container()->get('request')->query; + $offset = $query->get('offset'); + if (isset($offset) && $offset >= 0) { + $this->options['offset'] = $offset; } } @@ -328,7 +332,8 @@ class Full extends PagerPluginBase { // Fill in missing values in the global page array, in case the global page // array hasn't been initialized before. - $page = isset($_GET['page']) ? explode(',', $_GET['page']) : array(); + $page = drupal_container()->get('request')->query->get('page'); + $page = isset($page) ? explode(',', $page) : array(); for ($i = 0; $i <= $this->options['id'] || $i < count($pager_page_array); $i++) { $pager_page_array[$i] = empty($page[$i]) ? 0 : $page[$i]; diff --git a/lib/Drupal/views/Plugin/views/style/Table.php b/lib/Drupal/views/Plugin/views/style/Table.php index cce545206f8..02a9780ab8d 100644 --- a/lib/Drupal/views/Plugin/views/style/Table.php +++ b/lib/Drupal/views/Plugin/views/style/Table.php @@ -81,12 +81,13 @@ class Table extends StylePluginBase { * @return bool */ function build_sort() { - if (!isset($_GET['order']) && ($this->options['default'] == -1 || empty($this->view->field[$this->options['default']]))) { + $order = drupal_container()->get('request')->query->get('order'); + if (!isset($order) && ($this->options['default'] == -1 || empty($this->view->field[$this->options['default']]))) { return TRUE; } // If a sort we don't know anything about gets through, exit gracefully. - if (isset($_GET['order']) && empty($this->view->field[$_GET['order']])) { + if (isset($order) && empty($this->view->field[$order])) { return TRUE; } @@ -98,7 +99,9 @@ class Table extends StylePluginBase { * Add our actual sort criteria */ function build_sort_post() { - if (!isset($_GET['order'])) { + $query = drupal_container()->get('request')->query; + $order = $query->get('order'); + if (!isset($order)) { // check for a 'default' clicksort. If there isn't one, exit gracefully. if (empty($this->options['default'])) { return; @@ -112,9 +115,10 @@ class Table extends StylePluginBase { } } else { - $sort = $_GET['order']; + $sort = $order; // Store the $order for later use. - $this->order = !empty($_GET['sort']) ? strtolower($_GET['sort']) : 'asc'; + $request_sort = $query->get('sort'); + $this->order = !empty($request_sort) ? strtolower($request_sort) : 'asc'; } // If a sort we don't know anything about gets through, exit gracefully. diff --git a/lib/Drupal/views/View.php b/lib/Drupal/views/View.php index f1a41c45a47..80d7d94244f 100644 --- a/lib/Drupal/views/View.php +++ b/lib/Drupal/views/View.php @@ -435,7 +435,7 @@ class View extends ViewsDbObject { // Fill our input either from $_GET or from something previously set on the // view. if (empty($this->exposed_input)) { - $this->exposed_input = $_GET; + $this->exposed_input = drupal_container()->get('request')->query->all(); // unset items that are definitely not our input: foreach (array('page', 'q') as $key) { if (isset($this->exposed_input[$key])) { diff --git a/lib/Views/translation/Plugin/views/field/NodeTranslationLink.php b/lib/Views/translation/Plugin/views/field/NodeTranslationLink.php index e716b7a2622..0d9b0540d37 100644 --- a/lib/Views/translation/Plugin/views/field/NodeTranslationLink.php +++ b/lib/Views/translation/Plugin/views/field/NodeTranslationLink.php @@ -41,7 +41,7 @@ class NodeTranslationLink extends FieldPluginBase { } function render_link($data, $values) { - $language_interface = drupal_container()->get(LANGUAGE_TYPE_INTERFACE); + $language_interface = language(LANGUAGE_TYPE_INTERFACE); $tnid = $this->get_value($values, 'tnid'); // Only load translations if the node isn't in the current language. diff --git a/plugins/export_ui/views_ui.class.php b/plugins/export_ui/views_ui.class.php index 9232ce8119b..48ade75a694 100644 --- a/plugins/export_ui/views_ui.class.php +++ b/plugins/export_ui/views_ui.class.php @@ -254,7 +254,7 @@ class views_ui extends ctools_export_ui { function list_render(&$form_state) { views_include('admin'); views_ui_add_admin_css(); - if (empty($_REQUEST['js'])) { + if (!drupal_container()->get('request')->request->get('js')) { views_ui_check_advanced_help(); } drupal_add_library('system', 'jquery.bbq'); @@ -263,7 +263,7 @@ class views_ui extends ctools_export_ui { $this->active = $form_state['values']['order']; $this->order = $form_state['values']['sort']; - $query = tablesort_get_query_parameters(); + $query = tablesort_get_query_parameters(); $header = array( $this->tablesort_link(t('View name'), 'name', 'views-ui-name'), diff --git a/views.module b/views.module index b39ba44f0c6..9dbb1f0b978 100644 --- a/views.module +++ b/views.module @@ -2122,7 +2122,8 @@ function views_exposed_form($form, &$form_state) { } $form['submit'] = array( - '#name' => '', // prevent from showing up in $_GET. + // Prevent from showing up in $_GET. + '#name' => '', '#type' => 'submit', '#value' => t('Apply'), '#id' => drupal_html_id('edit-submit-' . $view->name),