Current Path : /var/www/html/clients/kampol.e-nk.ru/OLD/components/com_search/ |
Current File : /var/www/html/clients/kampol.e-nk.ru/OLD/components/com_search/search.php |
<?php /** * @version $Id: search.php 5317 2006-10-04 01:50:49Z pasamio $ * @package Joomla * @subpackage Search * @copyright Copyright (C) 2005 Open Source Matters. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html 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. */ // no direct access defined( '_VALID_MOS' ) or die( 'Äîñòóï çàïðåùåí' ); require_once( $mainframe->getPath( 'front_html' ) ); $_GET['limit'] = 25; // page title $mainframe->setPageTitle( _SEARCH_TITLE ); switch ( $task ) { default: viewSearch(); break; } function viewSearch() { global $mainframe, $mosConfig_absolute_path, $mosConfig_lang, $my; global $Itemid, $database, $_MAMBOTS; global $mosConfig_list_limit; $restriction = 0; // try to find search component's Itemid // Only search if we don't have a valid Itemid (e.g. from module) if(!intval($Itemid) || intval($Itemid) == 99999999) { $query = "SELECT id" . "\n FROM #__menu" . "\n WHERE type = 'components'" . "\n AND published = 1" . "\n AND link = 'index.php?option=com_search'" ; $database->setQuery( $query ); $_Itemid = $database->loadResult(); if ($_Itemid != "") { $Itemid = $_Itemid; } } $gid = $my->gid; // Adds parameter handling if( $Itemid > 0 && $Itemid != 99999999 ) { $menu = $mainframe->get( 'menu' ); $params = new mosParameters( $menu->params ); $params->def( 'page_title', 1 ); $params->def( 'pageclass_sfx', '' ); $params->def( 'header', $menu->name, _SEARCH_TITLE ); $params->def( 'back_button', $mainframe->getCfg( 'back_button' ) ); } else { $params = new mosParameters(''); $params->def( 'page_title', 1 ); $params->def( 'pageclass_sfx', '' ); $params->def( 'header', _SEARCH_TITLE ); $params->def( 'back_button', $mainframe->getCfg( 'back_button' ) ); } // html output search_html::openhtml( $params ); $searchword = strval( mosGetParam( $_REQUEST, 'searchword', '' ) ); $searchword = trim( stripslashes( $searchword ) ); // limit searchword to 20 characters if ( strlen( $searchword ) > 20 ) { $searchword = substr( $searchword, 0, 19 ); $restriction = 1; } // searchword must contain a minimum of 3 characters if ( $searchword && strlen( $searchword ) < 3 ) { $searchword = ''; $restriction = 1; } $search_ignore = array(); @include "$mosConfig_absolute_path/language/$mosConfig_lang.ignore.php"; $orders = array(); $orders[] = mosHTML::makeOption( 'newest', _SEARCH_NEWEST ); $orders[] = mosHTML::makeOption( 'oldest', _SEARCH_OLDEST ); $orders[] = mosHTML::makeOption( 'popular', _SEARCH_POPULAR ); $orders[] = mosHTML::makeOption( 'alpha', _SEARCH_ALPHABETICAL ); $orders[] = mosHTML::makeOption( 'category', _SEARCH_CATEGORY ); $ordering = strtolower( strval( mosGetParam( $_REQUEST, 'ordering', 'newest') ) ); $lists = array(); $lists['ordering'] = mosHTML::selectList( $orders, 'ordering', 'id="search_ordering" class="inputbox"', 'value', 'text', $ordering ); $searchphrase = strtolower( strval( mosGetParam( $_REQUEST, 'searchphrase', 'any' ) ) ); $searchphrases = array(); $phrase = new stdClass(); $phrase->value = 'any'; $phrase->text = _SEARCH_ANYWORDS; $searchphrases[] = $phrase; $phrase = new stdClass(); $phrase->value = 'all'; $phrase->text = _SEARCH_ALLWORDS; $searchphrases[] = $phrase; $phrase = new stdClass(); $phrase->value = 'exact'; $phrase->text = _SEARCH_PHRASE; $searchphrases[] = $phrase; $lists['searchphrase']= mosHTML::radioList( $searchphrases, 'searchphrase', '', $searchphrase ); // html output search_html::searchbox( htmlspecialchars( $searchword ), $lists, $params ); if (!$searchword) { if ( count( $_POST ) ) { // html output // no matches found search_html::message( _NOKEYWORD, $params ); } else if ( $restriction ) { // html output search_html::message( _SEARCH_MESSAGE, $params ); } } else if ( in_array( $searchword, $search_ignore ) ) { // html output search_html::message( _IGNOREKEYWORD, $params ); } else { // html output if ( $restriction ) { // html output search_html::message( _SEARCH_MESSAGE, $params ); } $searchword_clean = htmlspecialchars( $searchword ); search_html::searchintro( $searchword_clean, $params ); mosLogSearch( $searchword ); $phrase = strval( mosGetParam( $_REQUEST, 'searchphrase', '' ) ); $ordering = strval( mosGetParam( $_REQUEST, 'ordering', '' ) ); $_MAMBOTS->loadBotGroup( 'search' ); $results = $_MAMBOTS->trigger( 'onSearch', array( $database->getEscaped( $searchword ), $phrase, $ordering ) ); $totalRows = 0; $rows = array(); for ($i = 0, $n = count( $results); $i < $n; $i++) { $rows = array_merge( (array)$rows, (array)$results[$i] ); } $totalRows = count( $rows ); for ($i=0; $i < $totalRows; $i++) { $text = &$rows[$i]->text; if ($phrase == 'exact') { $searchwords = array($searchword); $needle = $searchword; } else { $searchwords = explode(' ', $searchword); $needle = $searchwords[0]; } $text = mosPrepareSearchContent( $text, 200, $needle ); foreach ($searchwords as $hlword) { $text = preg_replace( '/' . preg_quote( $hlword, '/' ) . '/i', '<span class="highlight">\0</span>', $text ); } if ( strpos( $rows[$i]->href, 'http' ) == false ) { $url = parse_url( $rows[$i]->href ); parse_str( @$url['query'], $link ); // determines Itemid for Content items where itemid has not been included if ( isset($rows[$i]->type) && @$link['task'] == 'view' && isset($link['id']) && !isset($link['Itemid']) ) { $itemid = ''; $_itemid = $mainframe->getItemid( $link['id'], 0 ); if ($_itemid) { $itemid = '&Itemid='. $_itemid; } $rows[$i]->href = $rows[$i]->href . $itemid; } } } $mainframe->setPageTitle( _SEARCH_TITLE ); $total = $totalRows; $limit = intval( mosGetParam( $_GET, 'limit', $mosConfig_list_limit ) ); $limitstart = intval( mosGetParam( $_GET, 'limitstart', 0 ) ); // prepares searchword for proper display in url $searchword_clean = urlencode( $searchword_clean ); if ( $n ) { // html output require_once( $GLOBALS['mosConfig_absolute_path'] . '/includes/pageNavigation.php' ); $pageNav = new mosPageNav( $total, $limitstart, $limit ); search_html::display( $rows, $params, $pageNav, $limitstart, $limit, $total, $totalRows, $searchword_clean ); } else { // html output search_html::displaynoresult(); } // html output search_html::conclusion( $searchword_clean, $pageNav ); } // displays back button echo '<br/>'; mosHTML::BackButton ( $params, 0 ); } function mosLogSearch( $search_term ) { global $database; global $mosConfig_enable_log_searches; if ( @$mosConfig_enable_log_searches ) { $query = "SELECT hits" . "\n FROM #__core_log_searches" . "\n WHERE LOWER( search_term ) = " . $database->Quote( $search_term ) ; $database->setQuery( $query ); $hits = intval( $database->loadResult() ); if ( $hits ) { $query = "UPDATE #__core_log_searches" . "\n SET hits = ( hits + 1 )" . "\n WHERE LOWER( search_term ) = " . $database->Quote( $search_term ) ; $database->setQuery( $query ); $database->query(); } else { $query = "INSERT INTO #__core_log_searches VALUES ( " . $database->Quote( $search_term ) . ", 1 )" ; $database->setQuery( $query ); $database->query(); } } } ?>