/components/com_search/views/search/view.html.php
PHP | 178 lines | 111 code | 34 blank | 33 comment | 14 complexity | e8451cf4ab3528eb7c52edba085db958 MD5 | raw file
- <?php
- /**
- * @version $Id: view.html.php 14401 2010-01-26 14:10:00Z louis $
- * @package Joomla
- * @subpackage Weblinks
- * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
- * @license GNU/GPL, see LICENSE.php
- * Joomla! is free software. This version may have been modified pursuant
- * to the GNU General Public License, and as distributed it includes or
- * is derivative of works licensed under the GNU General Public License or
- * other free or open source software licenses.
- * See COPYRIGHT.php for copyright notices and details.
- */
- // Check to ensure this file is included in Joomla!
- defined('_JEXEC') or die( 'Restricted access' );
- jimport( 'joomla.application.component.view');
- /**
- * HTML View class for the WebLinks component
- *
- * @static
- * @package Joomla
- * @subpackage Weblinks
- * @since 1.0
- */
- class SearchViewSearch extends JView
- {
- function display($tpl = null)
- {
- global $mainframe;
- require_once(JPATH_COMPONENT_ADMINISTRATOR.DS.'helpers'.DS.'search.php' );
- // Initialize some variables
- $pathway =& $mainframe->getPathway();
- $uri =& JFactory::getURI();
- $error = '';
- $rows = null;
- $total = 0;
- // Get some data from the model
- $areas = &$this->get('areas');
- $state = &$this->get('state');
- $searchword = $state->get('keyword');
- $params = &$mainframe->getParams();
- $menus = &JSite::getMenu();
- $menu = $menus->getActive();
- // because the application sets a default page title, we need to get it
- // right from the menu item itself
- if (is_object( $menu )) {
- $menu_params = new JParameter( $menu->params );
- if (!$menu_params->get( 'page_title')) {
- $params->set('page_title', JText::_( 'Search' ));
- }
- } else {
- $params->set('page_title', JText::_( 'Search' ));
- }
- $document = &JFactory::getDocument();
- $document->setTitle( $params->get( 'page_title' ) );
- // Get the parameters of the active menu item
- $params = &$mainframe->getParams();
- // built select lists
- $orders = array();
- $orders[] = JHTML::_('select.option', 'newest', JText::_( 'Newest first' ) );
- $orders[] = JHTML::_('select.option', 'oldest', JText::_( 'Oldest first' ) );
- $orders[] = JHTML::_('select.option', 'popular', JText::_( 'Most popular' ) );
- $orders[] = JHTML::_('select.option', 'alpha', JText::_( 'Alphabetical' ) );
- $orders[] = JHTML::_('select.option', 'category', JText::_( 'Section/Category' ) );
- $lists = array();
- $lists['ordering'] = JHTML::_('select.genericlist', $orders, 'ordering', 'class="inputbox"', 'value', 'text', $state->get('ordering') );
- $searchphrases = array();
- $searchphrases[] = JHTML::_('select.option', 'all', JText::_( 'All words' ) );
- $searchphrases[] = JHTML::_('select.option', 'any', JText::_( 'Any words' ) );
- $searchphrases[] = JHTML::_('select.option', 'exact', JText::_( 'Exact phrase' ) );
- $lists['searchphrase' ]= JHTML::_('select.radiolist', $searchphrases, 'searchphrase', '', 'value', 'text', $state->get('match') );
- // log the search
- SearchHelper::logSearch( $searchword);
- //limit searchword
- if(SearchHelper::limitSearchWord($searchword)) {
- $error = JText::_( 'SEARCH_MESSAGE' );
- }
- //sanatise searchword
- if(SearchHelper::santiseSearchWord($searchword, $state->get('match'))) {
- $error = JText::_( 'IGNOREKEYWORD' );
- }
- if (!$searchword && count( JRequest::get('post') ) ) {
- //$error = JText::_( 'Enter a search keyword' );
- }
- // put the filtered results back into the model
- // for next release, the checks should be done in the model perhaps...
- $state->set('keyword', $searchword);
- if(!$error)
- {
- $results = &$this->get('data' );
- $total = &$this->get('total');
- $pagination = &$this->get('pagination');
- require_once (JPATH_SITE.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php');
- for ($i=0; $i < count($results); $i++)
- {
- $row = &$results[$i]->text;
- if ($state->get('match') == 'exact')
- {
- $searchwords = array($searchword);
- $needle = $searchword;
- }
- else
- {
- $searchwords = preg_split("/\s+/u", $searchword);
- $needle = $searchwords[0];
- }
- $row = SearchHelper::prepareSearchContent( $row, 200, $needle );
- $searchwords = array_unique( $searchwords );
- $searchRegex = '#(';
- $x = 0;
- foreach ($searchwords as $k => $hlword)
- {
- $searchRegex .= ($x == 0 ? '' : '|');
- $searchRegex .= preg_quote($hlword, '#');
- $x++;
- }
- $searchRegex .= ')#iu';
- $row = preg_replace($searchRegex, '<span class="highlight">\0</span>', $row );
- $result =& $results[$i];
- if ($result->created) {
- $created = JHTML::Date ( $result->created );
- }
- else {
- $created = '';
- }
- $result->created = $created;
- $result->count = $i + 1;
- }
- }
- $this->result = JText::sprintf( 'TOTALRESULTSFOUND', $total );
- $this->assignRef('pagination', $pagination);
- $this->assignRef('results', $results);
- $this->assignRef('lists', $lists);
- $this->assignRef('params', $params);
- $this->assign('ordering', $state->get('ordering'));
- $this->assign('searchword', $searchword);
- $this->assign('searchphrase', $state->get('match'));
- $this->assign('searchareas', $areas);
- $this->assign('total', $total);
- $this->assign('error', $error);
- $this->assign('action', $uri->toString());
- parent::display($tpl);
- }
- }