⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search_func.php

📁 简介:IceBB是一个强大
💻 PHP
字号:
<?php//******************************************************//
//           /////////                 ////   /////
//              //                    // //  //  //
//             //      /////  ////// ////   ////
//            //      //     ////   //  // //  //
//        /////////  /////  ////// /////  /////
//******************************************************//
// icebb.net // 1.0
//******************************************************//
// search functions class
// $Id: search_func.php 563 2006-10-22 02:31:31Z mutantmonkey0 $
//******************************************************//class search_func extends search{	var $search;	var $add_to_url;	var $per_page;	var $fulltext;	function search_func($meine_lieblingsmutter) // O_O	{		global $post_parser;			$this->search				= $meine_lieblingsmutter;		$this->start				= $this->search->start;		$this->per_page				= $this->search->per_page;	}	function do_search_forum($query,$author)	{	}		function do_search()	{		global $icebb,$db,$std,$timer,$post_parser;				$ret							= array();				if(empty($icebb->input['search_id']))		{			if($this->fulltext			== 0)			{				$can_fulltext			= 0;			}			else {				$mysql_version			= $db->get_version();								if($mysql_version	   >= 32323)				{					$can_fulltext		= 1;				}				else {					$can_fulltext		= 0;				}							if($mysql_version	   >= 40010)				{					$ftext_boolean		= " IN BOOLEAN MODE";				}			}						$query						= trim($icebb->input['q']);						////////////////////////////////////////////////////////			// Used everywhere			////////////////////////////////////////////////////////						$where_clauses				= array();						// are we searching in a specific forum?			if(is_array($icebb->input['search_forums']))			{				foreach($icebb->input['search_forums'] as $k => $v)				{					$forums[$k]			= intval($v);				}							$forums					= implode(',',$forums);			}						if(!empty($forums))			{				$where_clauses[]		= "t.forum IN ({$forums})";			}						// prevent passworded things from showing up			$where_clauses[]			= "f.password=''";						// are we searching for topics or posts?			if($icebb->input['search_limit_post_type'] == 'topics')			{				$where_clauses[]		= "p.pis_firstpost=1";			}						// limit date			if($icebb->input['search_limit_how_long_ago'] > 0)			{				$subtract				= intval($icebb->input['search_limit_how_long_ago'])*86400;				$start_date				= time()-$subtract;				$where_clauses[]		= "p.pdate>={$start_date}";			}						////////////////////////////////////////////////////////			// Special cases			////////////////////////////////////////////////////////						// searching for a user?			$icebb->input['search_user']= trim($icebb->input['search_user']);			if(!empty($icebb->input['search_user']))			{				$db->query("SELECT id FROM icebb_users WHERE username='{$icebb->input['search_user']}'");				$id						= $db->fetch_row();								if($db->get_num_rows() <= 0)				{					return false;				}							$where_clauses[]		= "p.pauthor_id={$id['id']}";			}						// searching in a topic?			if(!empty($icebb->input['topic']))			{				$where_clauses[]		= "p.ptopicid='{$icebb->input['topic']}'";			}						if(count($where_clauses)   >= 1)			{				$extra_where			= "AND ".implode(' AND ',$where_clauses);			}			else if(empty($query))			{				// wtf are you trying to do... you can't view EVERY post...				return false;			}						if($can_fulltext			== 1)			{				$total_query			= "				SELECT COUNT(*) as total FROM icebb_posts AS p 				LEFT JOIN icebb_topics AS t ON p.ptopicid=t.tid				LEFT JOIN icebb_forums AS f ON f.fid=t.forum				WHERE MATCH (ptext) AGAINST('{$query}'{$ftext_boolean})				{$extra_where}				";								$orderby				= "score DESC";				$t3h_query				= "				SELECT p.*,t.*,f.perms,MATCH (p.ptext) AGAINST('{$query}') as score 				FROM icebb_posts AS p 				LEFT JOIN icebb_topics AS t ON p.ptopicid=t.tid				LEFT JOIN icebb_forums AS f ON f.fid=t.forum				WHERE MATCH (p.ptext) AGAINST('{$query}'{$ftext_boolean})				{$extra_where}				ORDER BY {$orderby}{$this->qextra}";			}			else {				$total_query			= "				SELECT COUNT(*) as total FROM icebb_posts AS p 				LEFT JOIN icebb_topics AS t ON p.ptopicid=t.tid				LEFT JOIN icebb_forums AS f ON f.fid=t.forum				WHERE ptext LIKE '%{$query}%'				{$extra_where}				";								$t3h_query				= "				SELECT p.*,t.*,f.perms,MATCH (p.ptext) AGAINST('{$query}') as score 				FROM icebb_posts AS p 				LEFT JOIN icebb_topics AS t ON p.ptopicid=t.tid				LEFT JOIN icebb_forums AS f ON f.fid=t.forum				WHERE p.ptext LIKE '%{$query}%'				{$extra_where}				{$this->qextra}";			}						$total_query				= preg_replace('`\s+`',' ',trim($total_query));			$teh_query					= preg_replace('`\s+`',' ',trim($t3h_query));				$db->query($total_query);			$result_count				= $db->fetch_row();			if($result_count['total']	== 0)			{				if($can_fulltext		== 1)				{					$this->fulltext		= 0;					return $this->do_search();				}				else {					return false;				}			}						$search_id					= md5(uniqid(microtime(),1));				/*if($db->get_num_rows($t3h_query)<= 0)			{				$query					= preg_replace("#[\+\?\*]#",'',$query);			}*/						$db->insert('icebb_search_results',array(				'search_id'						=> $search_id,				'search_query'					=> $query,				'topic_ids'						=> '',				'topic_num'						=> $result_count['total'],				'post_ids'						=> '',				'search_date'					=> time(),				'search_uid'					=> $icebb->user['id'],				'search_uip'					=> $icebb->client_ip,				'search_sort'					=> $orderby,				'search_query_cache'			=> addslashes($t3h_query),			));						$std->redirect("{$icebb->base_url}act=search{$this->add_to_url}&search_id={$search_id}");			exit();		}		else {			$search_id							= $icebb->input['search_id'];			$start								= $this->start;						$db->query("SELECT * FROM icebb_search_results WHERE search_id='{$search_id}'");			$search								= $db->fetch_row();						$search_query						= $search['search_query_cache'];													// time it			$timer->start('search');			// run query			$db->query($search_query." LIMIT {$start},{$this->per_page}");			// stop timing it			$search_time						= $timer->stop('search');						while($p							= $db->fetch_row())			{				$p['perms']						= unserialize($p['perms']);				if($p['perms'][$icebb->user['g_permgroup']]['read']=='1')				{					$icebb->config['date_format_post'] = 'l, F j, Y @ g:i A';					$icebb->config['date_format_joindate']= 'F j, Y';									$p['pdate_formatted']		= date($icebb->config['date_format_post'],$p['pdate']+$std->get_offset());					$p['joindate_formatted']	= date($icebb->config['date_format_joindate'],$p['joindate']+$std->get_offset());									//$p['ptext']					= substr($post_parser->parse($p['ptext'],$p),0,255).'...';					$p['ptext']					= $post_parser->parse($p['ptext']);									$search_results[]			= $p;				}			}						$ret['start']						= $start;			$ret['search_id']					= $search_id;			$ret['search_query']				= $search['search_query'];			$ret['topic_num']					= $search['topic_num'];			$ret['search_time']					= $search_time;			$ret['posts']						= $search_results;		}				return $ret;	}}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -