handler_field_saved_search_name.inc 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /**
  3. * @file
  4. * Contains the SearchApiSavedSearchesViewsHandlerFieldName class.
  5. */
  6. /**
  7. * Views field handler for displaying a saved search's name, optionally linked to the search page.
  8. */
  9. class SearchApiSavedSearchesViewsHandlerFieldName extends views_handler_field {
  10. public function option_definition() {
  11. $options = parent::option_definition();
  12. $options['link_to_page'] = array('default' => TRUE);
  13. return $options;
  14. }
  15. public function options_form(&$form, &$form_state) {
  16. parent::options_form($form, $form_state);
  17. $form['link_to_page'] = array(
  18. '#type' => 'checkbox',
  19. '#title' => t('Link to search page'),
  20. '#default_value' => $this->options['link_to_page'],
  21. );
  22. }
  23. public function render($values) {
  24. $value = parent::render($values);
  25. if ($value && $this->options['link_to_page']) {
  26. $this->render_link($values);
  27. }
  28. return $value;
  29. }
  30. public function render_link($values) {
  31. $search = !empty($values->id) ? search_api_saved_search_load($values->id) : NULL;
  32. if (search_api_saved_search_edit_access(NULL, $search) && !empty($search->options['page'])) {
  33. $this->options['alter']['make_link'] = TRUE;
  34. $page = $search->options['page'] + array(
  35. 'path' => NULL,
  36. 'query' => array(),
  37. 'absolute' => TRUE,
  38. );
  39. $this->options['alter']['path'] = url($page['path'], $page);
  40. }
  41. }
  42. }