<?php
							 | 
						|
								/** 
							 | 
						|
								* @package	uForum 
							 | 
						|
								* @file		search.php
							 | 
						|
								* @version	$Id$ 
							 | 
						|
								* @copyright	2007-2010 (c) PioDer <[email protected]>
							 | 
						|
								* @link    		http://www.pioder.pl/
							 | 
						|
								* @license	see LICENSE.txt
							 | 
						|
								**/
							 | 
						|
								define('IN_uF', true);
							 | 
						|
								//include files
							 | 
						|
								require('./config.php');
							 | 
						|
								require('./includes/constants.php');
							 | 
						|
								require('./includes/db.php');
							 | 
						|
								require('./includes/errors.php');
							 | 
						|
								//connect to database
							 | 
						|
								DataBase::db_connect();
							 | 
						|
								require('./includes/sessions.php');
							 | 
						|
								require('./includes/classes/class_user.php');
							 | 
						|
								require('./common.php');
							 | 
						|
								require('./includes/misc_functions.php');
							 | 
						|
								require('./includes/classes/class_forum.php');
							 | 
						|
								require('./includes/classes/class_topic.php');
							 | 
						|
								require('./includes/classes/secure.php');
							 | 
						|
								$default_lang = DefaultLang();
							 | 
						|
								require('./lngs/'.$default_lang.'/main.php');
							 | 
						|
								$start = TimeGeneration();
							 | 
						|
								$default_skin = ViewSkinName();
							 | 
						|
								SessDelInvalid();	
							 | 
						|
								SessRegister();
							 | 
						|
								SessDeleteOld();	
							 | 
						|
								
							 | 
						|
								if (!isset($_GET['content']))
							 | 
						|
								{
							 | 
						|
									header('Location: search.php?content=posts');
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								//
							 | 
						|
								//generate output pages
							 | 
						|
								//
							 | 
						|
								if ($_SESSION['uid']>0)
							 | 
						|
								{
							 | 
						|
									$limiter = $userdata['limit_ftid'];
							 | 
						|
								}
							 | 
						|
								else
							 | 
						|
								{
							 | 
						|
									$limiter = $forum_config['limit_ftid'];
							 | 
						|
								}
							 | 
						|
								if ($_GET['content'] == 'userposts' || $_GET['content'] == 'lastposts')
							 | 
						|
								{
							 | 
						|
									if (isset($_GET['page'])&&($_GET['page']!=1))
							 | 
						|
									{
							 | 
						|
										if (!is_numeric($_GET['page']))
							 | 
						|
										{
							 | 
						|
											die('Hacking attempt');
							 | 
						|
										}
							 | 
						|
										$value = ($_GET['page']-1)*$limiter;
							 | 
						|
										$limit = 'LIMIT '.$value . ', '.$limiter;
							 | 
						|
										$page = $_GET['page'];
							 | 
						|
									}
							 | 
						|
									else
							 | 
						|
									{
							 | 
						|
										$limit = 'LIMIT 0, '.$limiter;
							 | 
						|
										$page=1;
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								else
							 | 
						|
								{
							 | 
						|
									if (isset($_POST['page'])&&($_POST['page']!=1))
							 | 
						|
									{
							 | 
						|
										if (!is_numeric($_POST['page']))
							 | 
						|
										{
							 | 
						|
											die('Hacking attempt');
							 | 
						|
										}
							 | 
						|
										$value = ($_POST['page']-1)*$limiter;
							 | 
						|
										$limit = 'LIMIT '.$value . ', '.$limiter;
							 | 
						|
										$page = $_POST['page'];
							 | 
						|
									}
							 | 
						|
									else
							 | 
						|
									{
							 | 
						|
										$limit = 'LIMIT 0, '.$limiter;
							 | 
						|
										$page=1;
							 | 
						|
									}	
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								//
							 | 
						|
								//end generating pages
							 | 
						|
								//
							 | 
						|
								
							 | 
						|
								if ((isset($_POST['keywords'])) || ($_GET['content']=='lastposts') || ($_GET['content']=='userposts'))
							 | 
						|
								{
							 | 
						|
									$errors = true;
							 | 
						|
									switch($_GET['content'])
							 | 
						|
									{
							 | 
						|
										case 'lastposts':
							 | 
						|
										{
							 | 
						|
											if ($_SESSION['uid']>0)
							 | 
						|
											{
							 | 
						|
												$time = $_SERVER['REQUEST_TIME']-129600;
							 | 
						|
												$sql = "SELECT  COUNT(`t_id`) as `cnt` FROM ".TOPICS_TABLE." WHERE lastpost_time>$time";
							 | 
						|
												$count = DataBase::fetch(DataBase::sql_query($sql,GENERAL,'Could not obtain count amout of topics'));
							 | 
						|
												$count = $count['cnt'];
							 | 
						|
												$count = ceil($count / $limiter);
							 | 
						|
												if ($count==0)
							 | 
						|
												{
							 | 
						|
													$count +=1;
							 | 
						|
												}
							 | 
						|
												if(isset($_GET['page']) && ($_GET['page']>$count))
							 | 
						|
												{
							 | 
						|
													message_forum($lng['invalidpage'],'index.php');
							 | 
						|
												}
							 | 
						|
												$sql = "SELECT ".TOPICS_TABLE.".*, ".USERS_TABLE.".*, ".TOPICS_TABLE.".posts AS posts
							 | 
						|
												 FROM ".TOPICS_TABLE."
							 | 
						|
												  LEFT JOIN ".USERS_TABLE." ON ".TOPICS_TABLE.".author = ".USERS_TABLE.".u_id
							 | 
						|
												   WHERE lastpost_time>$time
							 | 
						|
												    ORDER BY  `sticky` DESC, `lastpost_time` DESC $limit";
							 | 
						|
												$errors = false;
							 | 
						|
												$window_title = $lng['showlastposts'];
							 | 
						|
												$navigator_title = '<a href="'.$_SERVER['REQUEST_URI'].'" class="navigator">'.$lng['showlastposts'];
							 | 
						|
												break;
							 | 
						|
											}
							 | 
						|
											else
							 | 
						|
											{
							 | 
						|
												message_forum($lng['youarenotlogd'],'login.php?mode=login');
							 | 
						|
												break;
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										case 'userposts':
							 | 
						|
										{
							 | 
						|
											if (isset($_GET['u']))
							 | 
						|
											{
							 | 
						|
												$count = DataBase::fetch(DataBase::sql_query("SELECT COUNT(`t_id`) as `t_id` 
							 | 
						|
												FROM ".TOPICS_TABLE." WHERE `author`='".intval($_GET['u'])."'",GENERAL,'Could not obtain count amout of topics'));
							 | 
						|
												$count = $count['t_id'];
							 | 
						|
												$count = ceil($count / $limiter);
							 | 
						|
												if ($count==0)
							 | 
						|
												{
							 | 
						|
													$count +=1;
							 | 
						|
												}
							 | 
						|
												if(isset($_GET['page']) && ($_GET['page']>$count))
							 | 
						|
												{
							 | 
						|
													message_forum($lng['invalidpage'],'index.php');
							 | 
						|
												}
							 | 
						|
												$sql = "SELECT ".TOPICS_TABLE.".*, ".USERS_TABLE.".* FROM ".TOPICS_TABLE." LEFT JOIN ".USERS_TABLE." ON ".TOPICS_TABLE.".author = ".USERS_TABLE.".u_id WHERE `u_id`='".intval($_GET['u'])."' ORDER BY  `sticky` DESC, `lastpost_time` DESC $limit;";
							 | 
						|
												$errors = false;
							 | 
						|
												$window_title = $lng['view_user_topics'];
							 | 
						|
												$navigator_title = '<a href="'.$_SERVER['REQUEST_URI'].'" class="navigator">'.$lng['view_user_topics'];
							 | 
						|
												break;
							 | 
						|
											}
							 | 
						|
											else
							 | 
						|
											{
							 | 
						|
												message_forum($lng['no_user'],'index.php');
							 | 
						|
												break;
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										case 'posts':
							 | 
						|
										{
							 | 
						|
											if(strlen(trim($_POST['keywords']))>=3)
							 | 
						|
											{
							 | 
						|
												$keyword = explode(' ', strip_tags(addslashes($_POST['keywords'])));
							 | 
						|
												$like_where = ' `text` LIKE \'%'.$keyword[0].'%\'';
							 | 
						|
												for($i=1; $i<count($keyword);$i++)
							 | 
						|
												{
							 | 
						|
													$like_where .=' OR `text` LIKE \'%'.$keyword[$i].'%\'';
							 | 
						|
												}
							 | 
						|
												$sql = "SELECT  ".POSTS_TABLE.".t_id, ".POSTS_TABLE.".text
							 | 
						|
												 FROM ".TOPICS_TABLE."
							 | 
						|
												  LEFT JOIN ".POSTS_TABLE." ON ".POSTS_TABLE.".t_id = ".TOPICS_TABLE.".t_id
							 | 
						|
												   WHERE $like_where GROUP BY `t_id`";
							 | 
						|
												$count = DataBase::sql_query($sql,GENERAL,'Could not obtain count amout of topics');
							 | 
						|
												$count = DataBase::num_rows($count);//$count['count'];
							 | 
						|
												$count = ceil($count / $limiter);
							 | 
						|
												if ($count==0)
							 | 
						|
												{
							 | 
						|
													$count +=1;
							 | 
						|
												}
							 | 
						|
												if(isset($_GET['page']) && ($_GET['page']>$count))
							 | 
						|
												{
							 | 
						|
													message_forum($lng['invalidpage'],'index.php');
							 | 
						|
												}
							 | 
						|
												$sql = "SELECT ".TOPICS_TABLE.".*, ".USERS_TABLE.".*, ".POSTS_TABLE.".*, ".TOPICS_TABLE.".posts AS posts
							 | 
						|
												 FROM ".TOPICS_TABLE."
							 | 
						|
												  LEFT JOIN ".USERS_TABLE." ON ".TOPICS_TABLE.".author = ".USERS_TABLE.".u_id
							 | 
						|
												   LEFT JOIN ".POSTS_TABLE." ON ".POSTS_TABLE.".t_id = ".TOPICS_TABLE.".t_id
							 | 
						|
												    WHERE $like_where
							 | 
						|
												     ORDER BY `sticky` DESC, `lastpost_time` DESC $limit;";
							 | 
						|
											     
							 | 
						|
												$window_title = $lng['search_results'];
							 | 
						|
												$navigator_title = '<a href="'.$_SERVER['REQUEST_URI'].'" class="navigator">'.$lng['search_results'];
							 | 
						|
												$errors = false;
							 | 
						|
												
							 | 
						|
											}
							 | 
						|
											else
							 | 
						|
											{
							 | 
						|
												message_forum($lng['too_short_keywords'],'search.php?content=posts');
							 | 
						|
											}
							 | 
						|
											break;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									if (!$errors)
							 | 
						|
									{
							 | 
						|
										//add skin variables
							 | 
						|
										$skin = array(
							 | 
						|
										'lposts'=>$lng['posts'],
							 | 
						|
										'llastposts'=>$lng['lastpost'],
							 | 
						|
										'lposts'=>$lng['posts'],
							 | 
						|
										'lauthor'=>$lng['author'],
							 | 
						|
										'llastpost'=>$lng['lastpost'],
							 | 
						|
										'ltopicname'=>$lng['ltopicname'],
							 | 
						|
										'lang'=> $default_lang
							 | 
						|
										);
							 | 
						|
										$skin = array_push_assoc($skin,GenerateHeader($window_title,$navigator_title));
							 | 
						|
										require('./skins/'.$default_skin.'/overall_header.tpl');
							 | 
						|
										require('./skins/'.$default_skin.'/forum_body.tpl'); 
							 | 
						|
										$query = DataBase::sql_query($sql,GENERAL, 'Could not obtain topics information');
							 | 
						|
										$value = DataBase::num_rows($query);
							 | 
						|
										if ($value>0)
							 | 
						|
										{
							 | 
						|
											$isset_topics = array();
							 | 
						|
											while($record = DataBase::fetch($query))
							 | 
						|
											{
							 | 
						|
												if (!in_array($record['t_id'], $isset_topics))
							 | 
						|
												{
							 | 
						|
													$last_post = explode(':', $record['lastpost']);
							 | 
						|
													$skin = array(
							 | 
						|
													't_id'=>$record['t_id'],
							 | 
						|
													'fname'=>($record['sticky']=='1') ? '<b>'.$lng['sticky'].'</b>'.$record['name'] : $record['name'],
							 | 
						|
													'author'=>Topic::TopicAuthor($record['author']),
							 | 
						|
													'new_post'=>Topic::LastPostImg(),
							 | 
						|
													'tposts'=>$record['posts'],
							 | 
						|
													'lastpost'=>Topic::LastPostInTopic($record['t_id'])
							 | 
						|
													);
							 | 
						|
													require('./skins/'.$default_skin.'/forum_forum_add.tpl');
							 | 
						|
													array_push($isset_topics, $record['t_id']);
							 | 
						|
												}	
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										else 
							 | 
						|
										{
							 | 
						|
											echo '<tr><td width="'.TABLES_WIDTH.'" colspan="10" height="19" class="fitem"><p class="fstandard" align="center">'.$lng['nopost'].'!</p></td></tr>';
							 | 
						|
										}
							 | 
						|
										$skin = array( 
							 | 
						|
										'option_pages' => ListPages($page, $count),
							 | 
						|
										'lwith' => $lng['with'],
							 | 
						|
										'lpage' => $lng['page'],
							 | 
						|
										'lpages' => $count,
							 | 
						|
										);
							 | 
						|
										
							 | 
						|
										if ($_GET['content']=='posts')
							 | 
						|
										{
							 | 
						|
											$skin['keywords'] = $_POST['keywords'];
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										require('./skins/'.$default_skin.'/search_end_body.tpl');
							 | 
						|
										
							 | 
						|
										 
							 | 
						|
									} 	
							 | 
						|
								}
							 | 
						|
								else
							 | 
						|
								{
							 | 
						|
									$skin = array(
							 | 
						|
									'mainpage'=>$lng['lsearch'],
							 | 
						|
									'lsubmit'=>$lng['search'],
							 | 
						|
									'lreset'=>$lng['reset'],
							 | 
						|
									'insert_keywords'=>$lng['insert_keywords']
							 | 
						|
									);
							 | 
						|
									$window_title = $lng['lsearch'];
							 | 
						|
									$navigator_title =  '<a href="'.$_SERVER['REQUEST_URI'].'" class="navigator">'.$lng['lsearch'];
							 | 
						|
									$skin = array_push_assoc($skin,GenerateHeader($window_title,$navigator_title));
							 | 
						|
									require('./skins/'.$default_skin.'/overall_header.tpl');
							 | 
						|
									require('./skins/'.$default_skin.'/search_body.tpl');
							 | 
						|
								}
							 | 
						|
								if ($_SESSION['uid']>0)
							 | 
						|
								{
							 | 
						|
									if(RANK=='2')
							 | 
						|
									{
							 | 
						|
										$skin['pa_link']='<a href="admin/index.php" class="fsmall"><b>'.$lng['pa_link'].'</b></a>';
							 | 
						|
									}
							 | 
						|
									else
							 | 
						|
									{
							 | 
						|
										$skin['pa_link']='';
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								else
							 | 
						|
								{
							 | 
						|
									$skin['pa_link']='';
							 | 
						|
								}
							 | 
						|
								$stop = TimeGeneration();
							 | 
						|
								$skin['queries'] =  ShowQueries($start, $stop);
							 | 
						|
								require('./skins/'.$default_skin.'/overall_footer.tpl');
							 | 
						|
								?>
							 |