PageRenderTime 58ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/system/expressionengine/controllers/cp/search.php

https://gitlab.com/sops21/mt-rubidoux
PHP | 166 lines | 91 code | 24 blank | 51 comment | 8 complexity | 81ceb27f6abca0ab4dc1533e0df66d8c MD5 | raw file
Possible License(s): BSD-3-Clause, Apache-2.0, LGPL-2.1, MPL-2.0-no-copyleft-exception
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. /**
  3. * ExpressionEngine - by EllisLab
  4. *
  5. * @package ExpressionEngine
  6. * @author EllisLab Dev Team
  7. * @copyright Copyright (c) 2003 - 2015, EllisLab, Inc.
  8. * @license http://ellislab.com/expressionengine/user-guide/license.html
  9. * @link http://ellislab.com
  10. * @since Version 2.0
  11. * @filesource
  12. */
  13. // ------------------------------------------------------------------------
  14. /**
  15. * ExpressionEngine CP Home Page Class
  16. *
  17. * @package ExpressionEngine
  18. * @subpackage Control Panel
  19. * @category Control Panel
  20. * @author EllisLab Dev Team
  21. * @link http://ellislab.com
  22. */
  23. class Search extends CP_Controller {
  24. /**
  25. * Constructor
  26. */
  27. function __construct()
  28. {
  29. parent::__construct();
  30. ee()->lang->loadfile('admin');
  31. ee()->load->library('Cp_search');
  32. }
  33. // --------------------------------------------------------------------
  34. /**
  35. * Index function
  36. *
  37. * @access public
  38. * @return void
  39. */
  40. function index()
  41. {
  42. ee()->load->helper('html');
  43. ee()->load->helper('search');
  44. $vars['cp_page_title'] = lang('search_results');
  45. ee()->view->cp_page_title = $vars['cp_page_title'];
  46. // Saved search
  47. if ($search = ee()->input->get('saved'))
  48. {
  49. $search = base64_decode(rawurldecode($search));
  50. }
  51. else
  52. {
  53. $search = ee()->input->get_post('cp_search_keywords', TRUE);
  54. }
  55. if ( ! ee()->cp_search->_check_index())
  56. {
  57. // Save the search
  58. $search = rawurlencode(base64_encode($search));
  59. if (AJAX_REQUEST)
  60. {
  61. // Force a js redirect
  62. $url = cp_url('search/build_index', array(
  63. 'saved' => $search
  64. ));
  65. $url = str_replace('&amp;', '&', $url);
  66. echo '<script type="text/javascript">window.location="'.$url.'";</script>';
  67. exit;
  68. }
  69. // Degrade 'nicely'
  70. ee()->functions->redirect(cp_url('search/build_index', array(
  71. 'saved' => $search
  72. )));
  73. }
  74. $vars['keywords'] = sanitize_search_terms($search);
  75. $vars['can_rebuild'] = ee()->cp->allowed_group('can_access_utilities');
  76. $vars['search_data'] = ee()->cp_search->generate_results($search);
  77. $vars['num_rows'] = count($vars['search_data']);
  78. if (AJAX_REQUEST)
  79. {
  80. echo ee()->load->view('search/sidebar', $vars, TRUE);
  81. exit;
  82. }
  83. ee()->cp->render('search/results', $vars);
  84. }
  85. // --------------------------------------------------------------------
  86. /**
  87. * Build Index
  88. *
  89. * Shows a 'working' page and orchestrates the rebuilding process
  90. *
  91. * @access public
  92. * @return mixed
  93. */
  94. function build_index()
  95. {
  96. // Did they specify a language
  97. $language = ee()->input->get('language') ?: ee()->config->item('deft_lang');
  98. // Show an intermediate page so they don't refresh and make sure we keep any saved searches
  99. $working = ee()->input->get('working');
  100. $saved = ee()->input->get('saved') ?: '';
  101. if ( ! $working)
  102. {
  103. $vars['cp_page_title'] = 'Rebuilding Index';
  104. ee()->view->cp_page_title = $vars['cp_page_title'];
  105. // Meta refresh to start the process
  106. $refresh_url = cp_url('search/build_index', array(
  107. 'language' => $language,
  108. 'working' => 'y',
  109. 'saved' => $saved
  110. ));
  111. $meta = '<meta http-equiv="refresh" content="3;url='.$refresh_url.'" />';
  112. ee()->cp->add_to_head($meta);
  113. ee()->cp->render('search/rebuild', $vars);
  114. }
  115. elseif ($working == 'y')
  116. {
  117. // Clear all keywords for this language
  118. ee()->db->where('language', $language);
  119. ee()->db->delete('cp_search_index');
  120. // And we're on our way
  121. ee()->cp_search->_build_index($language);
  122. ee()->functions->redirect(
  123. cp_url('search/build_index', array(
  124. 'working' => 'n',
  125. 'saved' => $saved
  126. ))
  127. );
  128. }
  129. else
  130. {
  131. if ( ! empty($saved))
  132. {
  133. ee()->functions->redirect(cp_url('search', array(
  134. 'saved' => $saved
  135. )));
  136. }
  137. ee()->functions->redirect(cp_url('homepage'));
  138. }
  139. }
  140. }
  141. /* End of file search.php */
  142. /* Location: ./system/expressionengine/controllers/cp/search.php */