Files
@ f43d1a4680a9
Branch filter:
Location: hot67beta/administrator/components/com_search/models/search.php
f43d1a4680a9
3.5 KiB
text/x-php
menubar 0 to 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | <?php
/**
* @version $Id: search.php 10381 2008-06-01 03:35:53Z pasamio $
* @package Joomla
* @subpackage Search
* @copyright Copyright (C) 2005 - 2008 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.model' );
/**
* @package Joomla
* @subpackage Search
*/
class SearchModelSearch extends JModel
{
var $lists = '';
/**
* Overridden constructor
* @access protected
*/
function __construct()
{
parent::__construct();
}
function reset()
{
$db =& JFactory::getDBO();
$db->setQuery( 'DELETE FROM #__core_log_searches' );
$db->query();
}
function getItems( )
{
global $mainframe, $option;
$db =& JFactory::getDBO();
$filter_order = $mainframe->getUserStateFromRequest( 'com_search.filter_order', 'filter_order', 'hits', 'cmd' );
$filter_order_Dir = $mainframe->getUserStateFromRequest( 'com_search.filter_order_Dir', 'filter_order_Dir', '', 'word' );
$limit = $mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int' );
$limitstart = $mainframe->getUserStateFromRequest( 'com_search.limitstart', 'limitstart', 0, 'int' );
$search = $mainframe->getUserStateFromRequest( 'com_search.search', 'search', '', 'string' );
$search = JString::strtolower( $search );
$showResults = JRequest::getInt('search_results');
// table ordering
if ( $filter_order_Dir == 'ASC' ) {
$this->lists['order_Dir'] = 'ASC';
} else {
$this->lists['order_Dir'] = 'DESC';
}
$this->lists['order'] = $filter_order;
// search filter
$this->lists['search']= $search;
$where = array();
if ($search) {
$where[] = 'LOWER( search_term ) LIKE '.$db->Quote( '%'.$db->getEscaped( $search, true ).'%', false );
}
$where = ( count( $where ) ? ' WHERE ' . implode( ' AND ', $where ) : '' );
$orderby = ' ORDER BY '. $filter_order .' '. $filter_order_Dir .', hits DESC';
// get the total number of records
$query = 'SELECT COUNT(*)'
. ' FROM #__core_log_searches'
. $where;
$db->setQuery( $query );
$total = $db->loadResult();
jimport( 'joomla.html.pagination' );
$pageNav = new JPagination( $total, $limitstart, $limit );
$query = ' SELECT * '
. ' FROM #__core_log_searches '
. $where
. $orderby;
$db->setQuery( $query, $pageNav->limitstart, $pageNav->limit );
$rows = $db->loadObjectList();
JPluginHelper::importPlugin( 'search' );
if (!class_exists( 'JSite' ))
{
// This fools the routers in the search plugins into thinking it's in the frontend
require_once( JPATH_COMPONENT.DS.'helpers'.DS.'site.php' );
}
for ($i=0, $n = count($rows); $i < $n; $i++) {
// determine if number of results for search item should be calculated
// by default it is `off` as it is highly query intensive
if ( $showResults ) {
$results = $mainframe->triggerEvent( 'onSearch', array( $rows[$i]->search_term ) );
$count = 0;
for ($j = 0, $n2 = count( $results ); $j < $n2; $j++) {
$count += count( $results[$j] );
}
$rows[$i]->returns = $count;
} else {
$rows[$i]->returns = null;
}
}
return $rows;
}
}
|