joomla_test/components/com_search/controller.php

92 lines
2.6 KiB
PHP
Raw Permalink Normal View History

2020-01-02 22:20:31 +07:00
<?php
/**
* @package Joomla.Site
* @subpackage com_search
*
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Search Component Controller
*
* @package Joomla.Site
* @subpackage com_search
* @since 1.5
*/
class SearchController extends JControllerLegacy
{
/**
* Method to display a view.
*
* @param boolean If true, the view output will be cached
* @param array An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}.
*
* @return JController This object to support chaining.
* @since 1.5
*/
public function display($cachable = false, $urlparams = false)
{
$this->input->set('view', 'search'); // force it to be the search view
return parent::display($cachable, $urlparams);
}
public function search()
{
// slashes cause errors, <> get stripped anyway later on. # causes problems.
$badchars = array('#', '>', '<', '\\');
$searchword = trim(str_replace($badchars, '', $this->input->getString('searchword', null, 'post')));
// if searchword enclosed in double quotes, strip quotes and do exact match
if (substr($searchword, 0, 1) == '"' && substr($searchword, -1) == '"')
{
$post['searchword'] = substr($searchword, 1, -1);
$this->input->set('searchphrase', 'exact');
}
else
{
$post['searchword'] = $searchword;
}
$post['ordering'] = $this->input->getWord('ordering', null, 'post');
$post['searchphrase'] = $this->input->getWord('searchphrase', 'all', 'post');
$post['limit'] = $this->input->getUInt('limit', null, 'post');
if ($post['limit'] === null)
{
unset($post['limit']);
}
$areas = $this->input->post->get('areas', null, 'array');
if ($areas)
{
foreach ($areas as $area)
{
$post['areas'][] = JFilterInput::getInstance()->clean($area, 'cmd');
}
}
// set Itemid id for links from menu
$app = JFactory::getApplication();
$menu = $app->getMenu();
$items = $menu->getItems('link', 'index.php?option=com_search&view=search');
if (isset($items[0]))
{
$post['Itemid'] = $items[0]->id;
} elseif ($this->input->getInt('Itemid') > 0) { //use Itemid from requesting page only if there is no existing menu
$post['Itemid'] = $this->input->getInt('Itemid');
}
unset($post['task']);
unset($post['submit']);
$uri = JUri::getInstance();
$uri->setQuery($post);
$uri->setVar('option', 'com_search');
$this->setRedirect(JRoute::_('index.php'.$uri->toString(array('query', 'fragment')), false));
}
}