Seite 3 von 6

Verfasst: Mo 15.Mär, 2004 23:42
von Simpson
Hah es funktioniert! Ich musste es vorm schlafen noch mal probieren und jetzt läufts, ich habs jetzt noch nicht genauer ausgetestet aber es scheint alles super zu laufen, das ist ja klasse ^9

Verfasst: Di 16.Mär, 2004 11:48
von Simpson
Dieser Mod ist es echt heftig, hab noch einen Fehler gefunden. Sucht man nach Authoren und lässt nach Beiträgen auflisten, werden alle Beiträge als neu gekennzeichnet, sprich gelbes MiniPost Icon und hinterlegte Titeltextfarbe.

Verfasst: Di 16.Mär, 2004 23:09
von oxpus
Das Ding ist wirklich hartnäckig.
Und genau hier verstehe ich auch nicht, warum das Ganze nicht mehr funktioniert, werden doch die gleichen Punkte durchlaufen.
Gib mir bis Donnerstag Zeit, vorher schaffe ich es nicht da reinzuschauen.

EDIT: Ich glaube der Zufall war schneller:

Ich hatte in einem vorherigen Post diesesn Block in die search.php eingebaut:

Code: Alles auswählen

		if ( count($search_ids_visit) == 0 )
		{
			$topic_set = implode(', ', $topicset);
			$search_ids_visit = array();
			$sql = "SELECT max(visit_time) as last_time, topic_id FROM " . TOPIC_READ_TABLE . "
				WHERE topic_id IN ($topic_set)
				AND user_id = ".$userdata['user_id']."
				GROUP BY topic_id";
			if ( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, 'Could not obtain search results', '', __LINE__, __FILE__, $sql);
			}
			while( $row = $db->sql_fetchrow($result) )
			{
				$search_ids_visit[$row['topic_id']] = $row['last_time'];
			}
		}
ändere den mal in

Code: Alles auswählen

		$topic_set = implode(', ', $topicset);
		$search_ids_visit = array();
		$sql = "SELECT max(visit_time) as last_time, topic_id FROM " . TOPIC_READ_TABLE . "
			WHERE topic_id IN ($topic_set)
			AND user_id = ".$userdata['user_id']."
			GROUP BY topic_id";
		if ( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not obtain search results', '', __LINE__, __FILE__, $sql);
		}
		while( $row = $db->sql_fetchrow($result) )
		{
			$search_ids_visit[$row['topic_id']] = $row['last_time'];
		}
Bei mir funzte das an dieser Stelle. Hoffentlich ist es dann anderswo nicht wieder falsch :(

Mit ist auch aufgefallen, das Beiträge, die älter als die eingestellte ungelesen Zeit ist, wieder so als ungelesen markiert werden. Abhilfe hiermit (auch wieder search.php):

Code: Alles auswählen

					if ( $searchset[$i]['post_time'] > $topic_last_read || $searchset[$i]['post_edit_time'] > $topic_last_read )
ersetzen mit

Code: Alles auswählen

					if ( ($searchset[$i]['post_time'] > $topic_last_read || $searchset[$i]['post_edit_time'] > $topic_last_read) && $searchset[$i]['post_time'] < $board_config['unread_time'] )
Das ist die Zeile vor dem mini_img-Block.

Verfasst: Mi 17.Mär, 2004 08:29
von Simpson
Sorry, dann fehlen wieder die gelben Miniicons und die Hintergrundfarbe des Überschrifttextes bei neuen Beiträgen, wenn man in der Suche nach Beiträgen auflisten lässt.

Verfasst: Mi 17.Mär, 2004 21:51
von oxpus
Genau das ging bei mir aber auch, hatte ich extra vorher geprüft...

Verfasst: Do 18.Mär, 2004 16:30
von Simpson
Eigenartig, bei mir will der Spass nicht mehr, ich habe die search.php genommen die du hochgeladen hattest in dem einen Post und bin alle Anweisungen der Folgeposts durchgegangen aber jetzt streiken Mini-Icons und Hintergrundtextfarbe bei neuen Posts farbig zu werden.


So sieht das Teil jetzt bei mir aus:

Code: Alles auswählen

<?php
/***************************************************************************
 *                                search.php
 *                            -------------------
 *   begin                : Saturday, Feb 13, 2001
 *   copyright            : (C) 2001 The phpBB Group
 *   email                : support@phpbb.com
 *
 *   $Id: search.php,v 1.72.2.11 2003/11/22 22:36:13 ludovic_arnaud Exp $
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'includes/bbcode.'.$phpEx);
include($phpbb_root_path . 'includes/functions_search.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_SEARCH);
init_userprefs($userdata);
//
// End session management
//

//
// Define initial vars
//
if ( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
{
	$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
}
else
{
	$mode = '';
}

if ( isset($HTTP_POST_VARS['search_keywords']) || isset($HTTP_GET_VARS['search_keywords']) )
{
	$search_keywords = ( isset($HTTP_POST_VARS['search_keywords']) ) ? $HTTP_POST_VARS['search_keywords'] : $HTTP_GET_VARS['search_keywords'];
}
else
{
	$search_keywords = '';
}

if ( isset($HTTP_POST_VARS['search_author']) || isset($HTTP_GET_VARS['search_author']))
{
	$search_author = ( isset($HTTP_POST_VARS['search_author']) ) ? $HTTP_POST_VARS['search_author'] : $HTTP_GET_VARS['search_author'];
}
else
{
	$search_author = '';
}

$search_id = ( isset($HTTP_GET_VARS['search_id']) ) ? $HTTP_GET_VARS['search_id'] : '';

$show_results = ( isset($HTTP_POST_VARS['show_results']) ) ? $HTTP_POST_VARS['show_results'] : 'posts';

if ( isset($HTTP_POST_VARS['search_terms']) )
{
	$search_terms = ( $HTTP_POST_VARS['search_terms'] == 'all' ) ? 1 : 0;
}
else
{
	$search_terms = 0;
}

if ( isset($HTTP_POST_VARS['search_fields']) )
{
	$search_fields = ( $HTTP_POST_VARS['search_fields'] == 'all' ) ? 1 : 0;
}
else
{
	$search_fields = 0;
}

$return_chars = ( isset($HTTP_POST_VARS['return_chars']) ) ? intval($HTTP_POST_VARS['return_chars']) : 200;

$search_cat = ( isset($HTTP_POST_VARS['search_cat']) ) ? intval($HTTP_POST_VARS['search_cat']) : -1;
$search_forum = ( isset($HTTP_POST_VARS['search_forum']) ) ? intval($HTTP_POST_VARS['search_forum']) : -1;

$sort_by = ( isset($HTTP_POST_VARS['sort_by']) ) ? intval($HTTP_POST_VARS['sort_by']) : 0;

if ( isset($HTTP_POST_VARS['sort_dir']) )
{
	$sort_dir = ( $HTTP_POST_VARS['sort_dir'] == 'DESC' ) ? 'DESC' : 'ASC';
}
else
{
	$sort_dir =  'DESC';
}

if ( !empty($HTTP_POST_VARS['search_time']) || !empty($HTTP_GET_VARS['search_time']))
{
	$search_time = time() - ( ( ( !empty($HTTP_POST_VARS['search_time']) ) ? intval($HTTP_POST_VARS['search_time']) : intval($HTTP_GET_VARS['search_time']) ) * 86400 );
}
else
{
	$search_time = 0;
}

$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;

$sort_by_types = array($lang['Sort_Time'], $lang['Sort_Post_Subject'], $lang['Sort_Topic_Title'], $lang['Sort_Author'], $lang['Sort_Forum']);

//
// encoding match for workaround
//
$multibyte_charset = 'utf-8, big5, shift_jis, euc-kr, gb2312';

//
// Begin core code
//
if ( $mode == 'searchuser' )
{
	//
	// This handles the simple windowed user search functions called from various other scripts
	//
	if ( isset($HTTP_POST_VARS['search_username']) )
	{
		username_search($HTTP_POST_VARS['search_username']);
	}
	else
	{
		username_search('');
	}

	exit;
}
else if ( $search_keywords != '' || $search_author != '' || $search_id )
{
	$store_vars = array('search_results', 'total_match_count', 'split_search', 'sort_by', 'sort_dir', 'show_results', 'return_chars');
	
	//
	// Search ID Limiter, decrease this value if you experience further timeout problems with searching forums
	$limiter = 5000;

	//
	// Cycle through options ...
	//
	if ( $search_id == 'newposts' || $search_id == 'unread' || $search_id == 'egosearch' || $search_id == 'unanswered' || $search_keywords != '' || $search_author != '')
	{
		if ( $search_id == 'newposts' || $search_id == 'unread' || $search_id == 'egosearch' || ( $search_author != '' && $search_keywords == '' )  )
		{
			if ( $search_id == 'newposts' )
			{
				if ( $userdata['session_logged_in'] )
				{
				       $jetzt_vor_einem_monat = time() - $board_config['unread_time']; 
				       $sql = "SELECT p.post_id, p.topic_id, r.visit_time  
					  FROM " . POSTS_TABLE . " AS p LEFT OUTER JOIN " . TOPIC_READ_TABLE . " AS r 
					  ON ( p.topic_id = r.topic_id AND r.user_id = " . $userdata['user_id'] . ") 
					  WHERE ( (r.user_id = " . $userdata['user_id'] . " OR r.user_id IS NULL) 
					     AND (p.post_time > " . $jetzt_vor_einem_monat . " OR p.post_edit_time > " . $jetzt_vor_einem_monat . ")
					     AND (p.post_time > r.visit_time OR p.post_edit_time > r.visit_time OR r.topic_id IS NULL) )"; 
				}
				else
				{
					redirect(append_sid("login.$phpEx?redirect=search.$phpEx&search_id=newposts", true));
				}

				$show_results = 'topics';
				$sort_by = 0;
				$sort_dir = 'DESC';
			}
         else if ( $search_id == 'unread' ) 
         { 
            if ( $userdata['session_logged_in'] )
            { 
               $jetzt_vor_einem_monat = time() - $board_config['unread_time']; 
               $sql = "SELECT p.post_id, p.topic_id, r.visit_time  
                  FROM " . POSTS_TABLE . " AS p LEFT OUTER JOIN " . TOPIC_READ_TABLE . " AS r 
                  ON ( p.topic_id = r.topic_id AND r.user_id = " . $userdata['user_id'] . ") 
                  WHERE ( (r.user_id = " . $userdata['user_id'] . " OR r.user_id IS NULL) 
                     AND (p.post_time > " . $jetzt_vor_einem_monat . " OR p.post_edit_time > " . $jetzt_vor_einem_monat . ")
                     AND (p.post_time > r.visit_time OR p.post_edit_time > r.visit_time OR r.topic_id IS NULL) )"; 
            } 
            else 
            { 
               header("Location: login.$phpEx?redirect=search&search_id=unread"); 
               exit; 
            } 

            $show_results = ( $show_results == 'latest' ) ? 'latest' : 'topics'; 
             
            $sort_by = 0; 
            $sort_dir = 'DESC'; 
         }
			else if ( $search_id == 'egosearch' )
			{
				if ( $userdata['session_logged_in'] )
				{
					$sql = "SELECT post_id 
						FROM " . POSTS_TABLE . " 
						WHERE poster_id = " . $userdata['user_id'];
				}
				else
				{
					redirect(append_sid("login.$phpEx?redirect=search.$phpEx&search_id=egosearch", true));
				}

				$show_results = 'topics';
				$sort_by = 0;
				$sort_dir = 'DESC';
			}
			else
			{
				$search_author = str_replace('*', '%', trim($search_author));
				
				$sql = "SELECT user_id
					FROM " . USERS_TABLE . "
					WHERE username LIKE '" . str_replace("\'", "''", $search_author) . "'";
				if ( !($result = $db->sql_query($sql)) )
				{
					message_die(GENERAL_ERROR, "Couldn't obtain list of matching users (searching for: $search_author)", "", __LINE__, __FILE__, $sql);
				}

				$matching_userids = '';
				if ( $row = $db->sql_fetchrow($result) )
				{
					do
					{
						$matching_userids .= ( ( $matching_userids != '' ) ? ', ' : '' ) . $row['user_id'];
					}
					while( $row = $db->sql_fetchrow($result) );
				}
				else
				{
					message_die(GENERAL_MESSAGE, $lang['No_search_match']);
				}

				$sql = "SELECT post_id 
					FROM " . POSTS_TABLE . " 
					WHERE poster_id IN ($matching_userids)";
				
				if ($search_time)
				{
					$sql .= " AND post_time >= " . $search_time;
				}
			}

			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not obtain matched posts list', '', __LINE__, __FILE__, $sql);
			}

			$search_ids = array();
			while( $row = $db->sql_fetchrow($result) )
			{
				$search_ids[] = $row['post_id'];
				$search_ids_visit[$row['topic_id']] = $row['visit_time'];
			}
			$db->sql_freeresult($result);

			$total_match_count = count($search_ids);

		}
		else if ( $search_keywords != '' )
		{
			$stopword_array = @file($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/search_stopwords.txt'); 
			$synonym_array = @file($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/search_synonyms.txt'); 

			$split_search = array();
			$split_search = ( !strstr($multibyte_charset, $lang['ENCODING']) ) ?  split_words(clean_words('search', stripslashes($search_keywords), $stopword_array, $synonym_array), 'search') : split(' ', $search_keywords);	

			$search_msg_only = ( !$search_fields ) ? "AND m.title_match = 0" : ( ( strstr($multibyte_charset, $lang['ENCODING']) ) ? '' : '' );

			$word_count = 0;
			$current_match_type = 'or';

			$word_match = array();
			$result_list = array();

			for($i = 0; $i < count($split_search); $i++)
			{
				switch ( $split_search[$i] )
				{
					case 'and':
						$current_match_type = 'and';
						break;

					case 'or':
						$current_match_type = 'or';
						break;

					case 'not':
						$current_match_type = 'not';
						break;

					default:
						if ( !empty($search_terms) )
						{
							$current_match_type = 'and';
						}

						if ( !strstr($multibyte_charset, $lang['ENCODING']) )
						{
							$match_word = str_replace('*', '%', $split_search[$i]);
							$sql = "SELECT m.post_id 
								FROM " . SEARCH_WORD_TABLE . " w, " . SEARCH_MATCH_TABLE . " m 
								WHERE w.word_text LIKE '$match_word' 
									AND m.word_id = w.word_id 
									AND w.word_common <> 1 
									$search_msg_only";
						}
						else
						{
							$match_word =  addslashes('%' . str_replace('*', '', $split_search[$i]) . '%');
							$search_msg_only = ( $search_fields ) ? "OR post_subject LIKE '$match_word'" : '';
							$sql = "SELECT post_id
								FROM " . POSTS_TEXT_TABLE . "
								WHERE post_text LIKE '$match_word'
								$search_msg_only";
						}
						if ( !($result = $db->sql_query($sql)) )
						{
							message_die(GENERAL_ERROR, 'Could not obtain matched posts list', '', __LINE__, __FILE__, $sql);
						}

						$row = array();
						while( $temp_row = $db->sql_fetchrow($result) )
						{
							$row[$temp_row['post_id']] = 1;

							if ( !$word_count )
							{
								$result_list[$temp_row['post_id']] = 1;
							}
							else if ( $current_match_type == 'or' )
							{
								$result_list[$temp_row['post_id']] = 1;
							}
							else if ( $current_match_type == 'not' )
							{
								$result_list[$temp_row['post_id']] = 0;
							}
						}

						if ( $current_match_type == 'and' && $word_count )
						{
							@reset($result_list);
							while( list($post_id, $match_count) = @each($result_list) )
							{
								if ( !$row[$post_id] )
								{
									$result_list[$post_id] = 0;
								}
							}
						}

						$word_count++;

						$db->sql_freeresult($result);
					}
			}

			@reset($result_list);

			$search_ids = array();
			while( list($post_id, $matches) = each($result_list) )
			{
				if ( $matches )
				{
					$search_ids[] = $post_id;
				}
			}	
			
			unset($result_list);
			$total_match_count = count($search_ids);
		}

		//
		// If user is logged in then we'll check to see which (if any) private
		// forums they are allowed to view and include them in the search.
		//
		// If not logged in we explicitly prevent searching of private forums
		//
		$auth_sql = '';
		if ( $search_forum != -1 )
		{
			$is_auth = auth(AUTH_READ, $search_forum, $userdata);

			if ( !$is_auth['auth_read'] )
			{
				message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']);
			}

			$auth_sql = "f.forum_id = $search_forum";
		}
		else
		{
			$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata); 

			if ( $search_cat != -1 )
			{
				$auth_sql = "f.cat_id = $search_cat";
			}

			$ignore_forum_sql = '';
			while( list($key, $value) = each($is_auth_ary) )
			{
				if ( !$value['auth_read'] )
				{
					$ignore_forum_sql .= ( ( $ignore_forum_sql != '' ) ? ', ' : '' ) . $key;
				}
			}

			if ( $ignore_forum_sql != '' )
			{
				$auth_sql .= ( $auth_sql != '' ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) ";
			}
		}

		//
		// Author name search 
		//
		if ( $search_author != '' )
		{
			$search_author = str_replace('*', '%', trim(str_replace("\'", "''", $search_author)));
		}

		if ( $total_match_count )
		{
			if ( $show_results == 'topics' )
			{
				//
				// This one is a beast, try to seperate it a bit (workaround for connection timeouts)
				//
				$search_id_chunks = array();
				$count = 0;
				$chunk = 0;

				if (count($search_ids) > $limiter)
				{
					for ($i = 0; $i < count($search_ids); $i++) 
					{
						if ($count == $limiter)
						{
							$chunk++;
							$count = 0;
						}
					
						$search_id_chunks[$chunk][$count] = $search_ids[$i];
						$count++;
					}
				}
				else
				{
					$search_id_chunks[0] = $search_ids;
				}

				$search_ids = array();

				for ($i = 0; $i < count($search_id_chunks); $i++)
				{
					$where_sql = '';

					if ( $search_time )
					{
						$where_sql .= ( $search_author == '' && $auth_sql == ''  ) ? " AND post_time >= $search_time " : " AND p.post_time >= $search_time ";
					}
	
					if ( $search_author == '' && $auth_sql == '' )
					{
						$sql = "SELECT topic_id 
							FROM " . POSTS_TABLE . "
							WHERE post_id IN (" . implode(", ", $search_id_chunks[$i]) . ") 
							$where_sql 
							GROUP BY topic_id";
					}
					else
					{
						$from_sql = POSTS_TABLE . " p"; 

						if ( $search_author != '' )
						{
							$from_sql .= ", " . USERS_TABLE . " u";
							$where_sql .= " AND u.user_id = p.poster_id AND u.username LIKE '$search_author' ";
						}

						if ( $auth_sql != '' )
						{
							$from_sql .= ", " . FORUMS_TABLE . " f";
							$where_sql .= " AND f.forum_id = p.forum_id AND $auth_sql";
						}

						$sql = "SELECT p.topic_id 
							FROM $from_sql 
							WHERE p.post_id IN (" . implode(", ", $search_id_chunks[$i]) . ") 
								$where_sql 
							GROUP BY p.topic_id";
					}

					if ( !($result = $db->sql_query($sql)) )
					{
						message_die(GENERAL_ERROR, 'Could not obtain topic ids', '', __LINE__, __FILE__, $sql);
					}

					while ($row = $db->sql_fetchrow($result))
					{
						$search_ids[] = $row['topic_id'];
					}
					$db->sql_freeresult($result);
				}

				$total_match_count = sizeof($search_ids);
		
			}
			else if ( $search_author != '' || $search_time || $auth_sql != '' )
			{
				$search_id_chunks = array();
				$count = 0;
				$chunk = 0;

				if (count($search_ids) > $limiter)
				{
					for ($i = 0; $i < count($search_ids); $i++) 
					{
						if ($count == $limiter)
						{
							$chunk++;
							$count = 0;
						}
					
						$search_id_chunks[$chunk][$count] = $search_ids[$i];
						$count++;
					}
				}
				else
				{
					$search_id_chunks[0] = $search_ids;
				}

				$search_ids = array();

				for ($i = 0; $i < count($search_id_chunks); $i++)
				{
					$where_sql = ( $search_author == '' && $auth_sql == '' ) ? 'post_id IN (' . implode(', ', $search_id_chunks[$i]) . ')' : 'p.post_id IN (' . implode(', ', $search_id_chunks[$i]) . ')';
					$select_sql = ( $search_author == '' && $auth_sql == '' ) ? 'post_id' : 'p.post_id';
					$from_sql = (  $search_author == '' && $auth_sql == '' ) ? POSTS_TABLE : POSTS_TABLE . ' p';

					if ( $search_time )
					{
						$where_sql .= ( $search_author == '' && $auth_sql == '' ) ? " AND post_time >= $search_time " : " AND p.post_time >= $search_time";
					}

					if ( $auth_sql != '' )
					{
						$from_sql .= ", " . FORUMS_TABLE . " f";
						$where_sql .= " AND f.forum_id = p.forum_id AND $auth_sql";
					}

					if ( $search_author != '' )
					{
						$from_sql .= ", " . USERS_TABLE . " u";
						$where_sql .= " AND u.user_id = p.poster_id AND u.username LIKE '$search_author'";
					}

					$sql = "SELECT " . $select_sql . " 
						FROM $from_sql 
						WHERE $where_sql";
					if ( !($result = $db->sql_query($sql)) )
					{
						message_die(GENERAL_ERROR, 'Could not obtain post ids', '', __LINE__, __FILE__, $sql);
					}

					while( $row = $db->sql_fetchrow($result) )
					{
						$search_ids[] = $row['post_id'];
					}
					$db->sql_freeresult($result);
				}

				$total_match_count = count($search_ids);
			}
		}
		else if ( $search_id == 'unanswered' )
		{
			if ( $auth_sql != '' )
			{
				$sql = "SELECT t.topic_id, f.forum_id
					FROM " . TOPICS_TABLE . "  t, " . FORUMS_TABLE . " f
					WHERE t.topic_replies = 0 
						AND t.forum_id = f.forum_id
						AND t.topic_moved_id = 0
						AND $auth_sql";
			}
			else
			{
				$sql = "SELECT topic_id 
					FROM " . TOPICS_TABLE . "  
					WHERE topic_replies = 0 
						AND topic_moved_id = 0";
			}
				
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not obtain post ids', '', __LINE__, __FILE__, $sql);
			}

			$search_ids = array();
			while( $row = $db->sql_fetchrow($result) )
			{
				$search_ids[] = $row['topic_id'];
			}
			$db->sql_freeresult($result);

			$total_match_count = count($search_ids);

			//
			// Basic requirements
			//
			$show_results = 'topics';
			$sort_by = 0;
			$sort_dir = 'DESC';
		}
		
// <!--- Heute Neu --->

        else if ( $search_id == 'todaynew' )
		{
			if ( $auth_sql != '' )
			{
			
				$sql = "SELECT t.topic_id, f.forum_id
					FROM " . TOPICS_TABLE . "  t, " . FORUMS_TABLE . " f
					WHERE t.topic_replies = 0 
						AND t.forum_id = f.forum_id
						AND t.topic_moved_id = 0
						AND $auth_sql";
			}
		else
		{
			if ($selorder == las24) {
			$template->assign_vars(array('MSG' => $lang['last_24h']));
			
			$bedingung = "(UNIX_TIMESTAMP(NOW()) - post_time < 86400) OR (UNIX_TIMESTAMP(NOW()) - post_edit_time < 86400)"; }
			
			else if ($selorder == yestr) {
			$template->assign_vars(array('MSG' => $lang['yesterday']));
			$bedingung = "(FROM_UNIXTIME(post_time,'%Y%m%d') = (FROM_UNIXTIME(unix_timestamp(NOW()),'%Y%m%d') -1)) OR (FROM_UNIXTIME(post_edit_time,'%Y%m%d') = (FROM_UNIXTIME(unix_timestamp(NOW()),'%Y%m%d') -1))"; }
			
			else if ($selorder == lweek) {
			$template->assign_vars(array('MSG' => $lang['last_week']));
			$bedingung = "(UNIX_TIMESTAMP(NOW()) - post_time < 691200) OR (UNIX_TIMESTAMP(NOW()) - post_edit_time < 691200)"; }
			
			else if ($selorder == today) {
			$template->assign_vars(array('MSG' => $lang['today']));
			$bedingung = "(FROM_UNIXTIME(post_time,'%Y%m%d') = FROM_UNIXTIME(unix_timestamp(NOW()),'%Y%m%d')) OR (FROM_UNIXTIME(post_edit_time,'%Y%m%d') = FROM_UNIXTIME(unix_timestamp(NOW()),'%Y%m%d'))"; }
			
			else if ($selorder == laday) {
			$template->assign_vars(array("MSG" => $lang['last_xdays1'].$nodays.$lang['last_xdays2']));
			$showdays = 86400 * $nodays;
			$bedingung = "(UNIX_TIMESTAMP(NOW()) - post_time < $showdays) OR (UNIX_TIMESTAMP(NOW()) - post_edit_time < $showdays)"; }
			
			else if ($selorder == new_msg) {
			$template->assign_vars(array('MSG' => $lang['last_new']));
			$bedingung = "post_time > $userdata[user_lastvisit]"; }
			
			else { 
			$template->assign_vars(array('MSG' => $lang['today']));
			$bedingung = "(FROM_UNIXTIME(post_time,'%Y%m%d') = FROM_UNIXTIME(unix_timestamp(NOW()),'%Y%m%d')) OR (FROM_UNIXTIME(post_edit_time,'%Y%m%d') = FROM_UNIXTIME(unix_timestamp(NOW()),'%Y%m%d'))"; }
			
		
			
			
				$sql = "SELECT from_unixtime(post_time, '%d.%m.%y %H:%i:%s'), topic_id, post_edit_time
					FROM " . POSTS_TABLE . "
					WHERE $bedingung";
			}
				
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not obtain post ids', '', __LINE__, __FILE__, $sql);
			}

			$search_ids = array();
			while( $row = $db->sql_fetchrow($result) )
			{
				$search_ids[] = $row['topic_id'];
			}
			$db->sql_freeresult($result);

			$total_match_count = count($search_ids);

			//
			// Basic requirements
			//
			$show_results = 'topics';
			$sort_by = 0;
			$sort_dir = 'DESC';
		}
		
// <!--- Heute Neu Ende --->
		
		else
		{
			message_die(GENERAL_MESSAGE, $lang['No_search_match']);
		}

		//
		// Store new result data
		//
		$search_results = implode(', ', $search_ids);
		$per_page = ( $show_results == 'posts' ) ? $board_config['posts_per_page'] : $board_config['topics_per_page'];

		//
		// Combine both results and search data (apart from original query)
		// so we can serialize it and place it in the DB
		//
		$store_search_data = array();

		//
		// Limit the character length (and with this the results displayed at all following pages) to prevent
		// truncated result arrays. Normally, search results above 12000 are affected.
		// - to include or not to include
		/*
		$max_result_length = 60000;
		if (strlen($search_results) > $max_result_length)
		{
			$search_results = substr($search_results, 0, $max_result_length);
			$search_results = substr($search_results, 0, strrpos($search_results, ','));
			$total_match_count = count(explode(', ', $search_results));
		}
		*/

		for($i = 0; $i < count($store_vars); $i++)
		{
			$store_search_data[$store_vars[$i]] = $$store_vars[$i];
		}

		$result_array = serialize($store_search_data);
		unset($store_search_data);

		mt_srand ((double) microtime() * 1000000);
		$search_id = mt_rand();

		$sql = "UPDATE " . SEARCH_TABLE . " 
			SET search_id = $search_id, search_array = '" . str_replace("\'", "''", $result_array) . "'
			WHERE session_id = '" . $userdata['session_id'] . "'";
		if ( !($result = $db->sql_query($sql)) || !$db->sql_affectedrows() )
		{
			$sql = "INSERT INTO " . SEARCH_TABLE . " (search_id, session_id, search_array) 
				VALUES($search_id, '" . $userdata['session_id'] . "', '" . str_replace("\'", "''", $result_array) . "')";
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not insert search results', '', __LINE__, __FILE__, $sql);
			}
		}
	}
	else
	{
		$search_id = intval($search_id);
		if ( $search_id )
		{
			$sql = "SELECT search_array 
				FROM " . SEARCH_TABLE . " 
				WHERE search_id = $search_id  
					AND session_id = '". $userdata['session_id'] . "'";
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not obtain search results', '', __LINE__, __FILE__, $sql);
			}

			if ( $row = $db->sql_fetchrow($result) )
			{
				$search_data = unserialize($row['search_array']);
				for($i = 0; $i < count($store_vars); $i++)
				{
					$$store_vars[$i] = $search_data[$store_vars[$i]];
				}
			}
		}
	}

	//
	// Look up data ...
	//
	if ( $search_results != '' )
	{
		if ( $show_results == 'posts' )
		{
			$sql = "SELECT pt.post_text, pt.bbcode_uid, pt.post_subject, p.*, f.forum_id, f.forum_name, t.*, u.username, u.user_id, u.user_sig, u.user_sig_bbcode_uid  
				FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt 
				WHERE p.post_id IN ($search_results)
					AND pt.post_id = p.post_id
					AND f.forum_id = p.forum_id
					AND p.topic_id = t.topic_id
					AND p.poster_id = u.user_id";
		}
		else
		{
                       $sql = "SELECT t.*, f.forum_id, f.forum_name, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time, p2.post_edit_time
                              FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2, " . USERS_TABLE . " u2
				WHERE t.topic_id IN ($search_results)
					AND t.topic_poster = u.user_id
					AND f.forum_id = t.forum_id 
					AND p.post_id = t.topic_first_post_id
					AND p2.post_id = t.topic_last_post_id
					AND u2.user_id = p2.poster_id";
		}

		$per_page = ( $show_results == 'posts' ) ? $board_config['posts_per_page'] : $board_config['topics_per_page'];

		$sql .= " ORDER BY ";
		switch ( $sort_by )
		{
			case 1:
				$sql .= ( $show_results == 'posts' ) ? 'pt.post_subject' : 't.topic_title';
				break;
			case 2:
				$sql .= 't.topic_title';
				break;
			case 3:
				$sql .= 'u.username';
				break;
			case 4:
				$sql .= 'f.forum_id';
				break;
			default:
				$sql .= ( $show_results == 'posts' ) ? 'p.post_time' : 'p2.post_time';
				break;
		}
		$sql .= " $sort_dir LIMIT $start, " . $per_page;

		if ( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not obtain search results', '', __LINE__, __FILE__, $sql);
		}

      $searchset = array(); 
      $topicset = array(); 
      while( $row = $db->sql_fetchrow($result) ) 
      { 
         $searchset[] = $row; 
         $topicset[] = $row['topic_id']; 
      } 

      $db->sql_freeresult($result); 

      $topic_set = implode(', ', $topicset); 
      $search_ids_visit = array(); 
      $sql = "SELECT max(visit_time) as last_time, topic_id FROM " . TOPIC_READ_TABLE . " 
         WHERE topic_id IN ($topic_set) 
         AND user_id = ".$userdata['user_id']." 
         GROUP BY topic_id"; 
      if ( !$result = $db->sql_query($sql) ) 
      { 
         message_die(GENERAL_ERROR, 'Could not obtain search results', '', __LINE__, __FILE__, $sql); 
      } 
      while( $row = $db->sql_fetchrow($result) ) 
      { 
         $search_ids_visit[$row['topic_id']] = $row['last_time']; 
      }
		
		//
		// Define censored word matches
		//
		$orig_word = array();
		$replacement_word = array();
		obtain_word_list($orig_word, $replacement_word);

		//
		// Output header
		//
		$page_title = $lang['Search'];
		include($phpbb_root_path . 'includes/page_header.'.$phpEx);	

		if ( $show_results == 'posts' )
		{
			$template->set_filenames(array(
				'body' => 'search_results_posts.tpl')
			);
		}
		else
		{
			$template->set_filenames(array(
				'body' => 'search_results_topics.tpl')
			);
		}
		make_jumpbox('viewforum.'.$phpEx);

		$l_search_matches = ( $total_match_count == 1 ) ? sprintf($lang['Found_search_match'], $total_match_count) : sprintf($lang['Found_search_matches'], $total_match_count);

		$template->assign_vars(array(
			'L_SEARCH_MATCHES' => $l_search_matches, 
			'L_TOPIC' => $lang['Topic'])
		);

		$highlight_active = '';
		$highlight_match = array();
		for($j = 0; $j < count($split_search); $j++ )
		{
			$split_word = $split_search[$j];

			if ( $split_word != 'and' && $split_word != 'or' && $split_word != 'not' )
			{
				$highlight_match[] = '#\b(' . str_replace("*", "([\w]+)?", $split_word) . ')\b#is';
				$highlight_active .= " " . $split_word;

				for ($k = 0; $k < count($synonym_array); $k++)
				{ 
					list($replace_synonym, $match_synonym) = split(' ', trim(strtolower($synonym_array[$k]))); 

					if ( $replace_synonym == $split_word )
					{
						$highlight_match[] = '#\b(' . str_replace("*", "([\w]+)?", $replace_synonym) . ')\b#is';
						$highlight_active .= ' ' . $match_synonym;
					}
				} 
			}
		}

		$highlight_active = urlencode(trim($highlight_active));

		$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
		$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();

		for($i = 0; $i < count($searchset); $i++)
		{
			$forum_url = append_sid("viewforum.$phpEx?" . POST_FORUM_URL . '=' . $searchset[$i]['forum_id']);
			$topic_url = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $searchset[$i]['topic_id'] . "&highlight=$highlight_active");
			$post_url = append_sid("viewtopic.$phpEx?" . POST_POST_URL . '=' . $searchset[$i]['post_id'] . "&highlight=$highlight_active") . '#' . $searchset[$i]['post_id'];

			$post_date = create_date($board_config['default_dateformat'], $searchset[$i]['post_time'], $board_config['board_timezone']);

			$message = $searchset[$i]['post_text'];
			$topic_title = $searchset[$i]['topic_title'];

			$forum_id = $searchset[$i]['forum_id'];
			$topic_id = $searchset[$i]['topic_id'];

			if ( $show_results == 'posts' )
			{
				if ( isset($return_chars) )
				{
					$bbcode_uid = $searchset[$i]['bbcode_uid'];

					//
					// If the board has HTML off but the post has HTML
					// on then we process it, else leave it alone
					//
					if ( $return_chars != -1 )
					{
						$message = strip_tags($message);
						$message = preg_replace("/\[.*?:$bbcode_uid:?.*?\]/si", '', $message);
						$message = preg_replace('/\[url\]|\[\/url\]/si', '', $message);
						$message = ( strlen($message) > $return_chars ) ? substr($message, 0, $return_chars) . ' ...' : $message;
					}
					else
					{
						if ( !$board_config['allow_html'] )
						{
							if ( $postrow[$i]['enable_html'] )
							{
								$message = preg_replace('#(<)([\/]?.*?)(>)#is', '<\\2>', $message);
							}
						}

						if ( $bbcode_uid != '' )
						{
							$message = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($message, $bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $message);
						}

						$message = make_clickable($message);

						if ( $highlight_active )
						{
							if ( preg_match('/<.*>/', $message) )
							{
								$message = preg_replace($highlight_match, '<!-- #sh -->\1<!-- #eh -->', $message);

								$end_html = 0;
								$start_html = 1;
								$temp_message = '';
								$message = ' ' . $message . ' ';

								while( $start_html = strpos($message, '<', $start_html) )
								{
									$grab_length = $start_html - $end_html - 1;
									$temp_message .= substr($message, $end_html + 1, $grab_length);

									if ( $end_html = strpos($message, '>', $start_html) )
									{
										$length = $end_html - $start_html + 1;
										$hold_string = substr($message, $start_html, $length);

										if ( strrpos(' ' . $hold_string, '<') != 1 )
										{
											$end_html = $start_html + 1;
											$end_counter = 1;

											while ( $end_counter && $end_html < strlen($message) )
											{
												if ( substr($message, $end_html, 1) == '>' )
												{
													$end_counter--;
												}
												else if ( substr($message, $end_html, 1) == '<' )
												{
													$end_counter++;
												}

												$end_html++;
											}

											$length = $end_html - $start_html + 1;
											$hold_string = substr($message, $start_html, $length);
											$hold_string = str_replace('<!-- #sh -->', '', $hold_string);
											$hold_string = str_replace('<!-- #eh -->', '', $hold_string);
										}
										else if ( $hold_string == '<!-- #sh -->' )
										{
											$hold_string = str_replace('<!-- #sh -->', '<span style="color:#' . $theme['fontcolor3'] . '"><b>', $hold_string);
										}
										else if ( $hold_string == '<!-- #eh -->' )
										{
											$hold_string = str_replace('<!-- #eh -->', '</b></span>', $hold_string);
										}

										$temp_message .= $hold_string;

										$start_html += $length;
									}
									else
									{
										$start_html = strlen($message);
									}
								}

								$grab_length = strlen($message) - $end_html - 1;
								$temp_message .= substr($message, $end_html + 1, $grab_length);

								$message = trim($temp_message);
							}
							else
							{
								$message = preg_replace($highlight_match, '<span style="color:#' . $theme['fontcolor3'] . '"><b>\1</b></span>', $message);
							}
						}
					}

					if ( count($orig_word) )
					{
						$topic_title = preg_replace($orig_word, $replacement_word, $topic_title);
						$post_subject = ( $searchset[$i]['post_subject'] != "" ) ? preg_replace($orig_word, $replacement_word, $searchset[$i]['post_subject']) : $topic_title;

						$message = preg_replace($orig_word, $replacement_word, $message);
					}
					else
					{
						$post_subject = ( $searchset[$i]['post_subject'] != '' ) ? $searchset[$i]['post_subject'] : $topic_title;
					}

					if ($board_config['allow_smilies'] && $searchset[$i]['enable_smilies'])
					{
						$message = smilies_pass($message);
					}

					$message = str_replace("\n", '<br />', $message);

				}

				$poster = ( $searchset[$i]['user_id'] != ANONYMOUS ) ? '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $searchset[$i]['user_id']) . '">' : '';
				$poster .= ( $searchset[$i]['user_id'] != ANONYMOUS ) ? $searchset[$i]['username'] : ( ( $searchset[$i]['post_username'] != "" ) ? $searchset[$i]['post_username'] : $lang['Guest'] );
				$poster .= ( $searchset[$i]['user_id'] != ANONYMOUS ) ? '</a>' : '';

            $post_new = 'row1'; 
				if ( $userdata['session_logged_in'] )
				{
					if ( !empty($tracking_topics[$topic_id]) && !empty($tracking_forums[$forum_id]) )
					{
						$topic_last_read = ( $tracking_topics[$topic_id] > $tracking_forums[$forum_id] ) ? $tracking_topics[$topic_id] : $tracking_forums[$forum_id];
					}
					else if ( !empty($tracking_topics[$topic_id]) || !empty($tracking_forums[$forum_id]) )
					{
						$topic_last_read = ( !empty($tracking_topics[$topic_id]) ) ? $tracking_topics[$topic_id] : $tracking_forums[$forum_id];
					}

					$topic_last_read = ( !empty($search_ids_visit[$topic_id]) ) ? $search_ids_visit[$topic_id] : 0; 

                               if ( ($searchset[$i]['post_time'] > $topic_last_read || $searchset[$i]['post_edit_time'] > $topic_last_read) && $searchset[$i]['post_time'] < $board_config['unread_time'] )
                               {
                                        $post_new = "bgcolor=" . $board_config['unread_color'];
                                        $mini_post_img = $images['icon_minipost_new'];
                                        $mini_post_alt = $lang['New_post'];
					}
					else
					{
                                                $post_new = 'row1';
						$mini_post_img = $images['icon_minipost'];
						$mini_post_alt = $lang['Post'];
					}
				}
				else
				{
					$mini_post_img = $images['icon_minipost'];
					$mini_post_alt = $lang['Post'];
				}

				$template->assign_block_vars("searchresults", array( 
					'TOPIC_TITLE' => $topic_title,
					'FORUM_NAME' => $searchset[$i]['forum_name'],
					'POST_SUBJECT' => $post_subject,
                                        'POST_NEW' => $post_new,
					'POST_DATE' => $post_date,
					'POSTER_NAME' => $poster,
					'TOPIC_REPLIES' => $searchset[$i]['topic_replies'],
					'TOPIC_VIEWS' => $searchset[$i]['topic_views'],
					'MESSAGE' => $message,
					'MINI_POST_IMG' => $mini_post_img, 

					'L_MINI_POST_ALT' => $mini_post_alt, 

					'U_POST' => $post_url,
					'U_TOPIC' => $topic_url,
					'U_FORUM' => $forum_url)
				);
			}
			else
			{
				$message = '';

				if ( count($orig_word) )
				{
					$topic_title = preg_replace($orig_word, $replacement_word, $searchset[$i]['topic_title']);
				}

				$topic_type = $searchset[$i]['topic_type'];

				if ($topic_type == POST_ANNOUNCE)
				{
					$topic_type = $lang['Topic_Announcement'] . ' ';
				}
				else if ($topic_type == POST_STICKY)
				{
					$topic_type = $lang['Topic_Sticky'] . ' ';
				}
				else
				{
					$topic_type = '';
				}

				if ( $searchset[$i]['topic_vote'] )
				{
					$topic_type .= $lang['Topic_Poll'] . ' ';
				}

				$views = $searchset[$i]['topic_views'];
				$replies = $searchset[$i]['topic_replies'];

				if ( ( $replies + 1 ) > $board_config['posts_per_page'] )
				{
					$total_pages = ceil( ( $replies + 1 ) / $board_config['posts_per_page'] );
					$goto_page = ' [ <img src="' . $images['icon_gotopost'] . '" alt="' . $lang['Goto_page'] . '" title="' . $lang['Goto_page'] . '" />' . $lang['Goto_page'] . ': ';

					$times = 1;
					for($j = 0; $j < $replies + 1; $j += $board_config['posts_per_page'])
					{
						$goto_page .= '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=" . $topic_id . "&start=$j") . '">' . $times . '</a>';
						if ( $times == 1 && $total_pages > 4 )
						{
							$goto_page .= ' ... ';
							$times = $total_pages - 3;
							$j += ( $total_pages - 4 ) * $board_config['posts_per_page'];
						}
						else if ( $times < $total_pages )
						{
							$goto_page .= ', ';
						}
						$times++;
					}
					$goto_page .= ' ] ';
				}
				else
				{
					$goto_page = '';
				}

				if ( $searchset[$i]['topic_status'] == TOPIC_MOVED )
				{
					$topic_type = $lang['Topic_Moved'] . ' ';
					$topic_id = $searchset[$i]['topic_moved_id'];

					$folder_image = '<img src="' . $images['folder'] . '" alt="' . $lang['No_new_posts'] . '" />';
					$newest_post_img = '';
				}
				else
				{
					if ( $searchset[$i]['topic_status'] == TOPIC_LOCKED )
					{
						$folder = $images['folder_locked'];
						$folder_new = $images['folder_locked_new'];
					}
					else if ( $searchset[$i]['topic_type'] == POST_ANNOUNCE )
					{
						$folder = $images['folder_announce'];
						$folder_new = $images['folder_announce_new'];
					}
					else if ( $searchset[$i]['topic_type'] == POST_STICKY )
					{
						$folder = $images['folder_sticky'];
						$folder_new = $images['folder_sticky_new'];
					}
					else
					{
						if ( $replies >= $board_config['hot_threshold'] )
						{
							$folder = $images['folder_hot'];
							$folder_new = $images['folder_hot_new'];
						}
						else
						{
							$folder = $images['folder'];
							$folder_new = $images['folder_new'];
						}
					}


					if ( $userdata['session_logged_in'] )
					{
						
//		<!--- Tread Read Hack On --->

      $zeit_jetzt = time(); 
      $zeit_monat = $zeit_jetzt - $board_config['unread_time'];
		$sql = "SELECT visit_time, topic_id, user_id, post_id
			FROM " . TOPIC_READ_TABLE . "
			WHERE user_id = $userdata[user_id]
			  AND topic_id = $topic_id";

			if( !$result = $db->sql_query($sql) )
			{
			 message_die(GENERAL_ERROR, "Could not get Topic Read from $userdata[user_id] $topic_id.", '', __LINE__, __FILE__, $sql);
			 } else {
			 if( $topic_read = $db->sql_fetchrow($result) ) 	{
			 
			 		$visit_time_forum = $topic_read['visit_time'];}
					
					else {
					$visit_time_forum = "";}}
//		<!--- Tread Read Hack Off --->
					
$post_edit_time = $searchset[$i]['post_edit_time']; 
                  $post_time = $searchset[$i]['post_time']; 
                   
                 
                  if ( ($post_time > $visit_time_forum || $post_edit_time > $visit_time_forum) && ($post_time > $zeit_monat || $post_edit_time > $zeit_monat) )
						{
							if ( !empty($tracking_topics) || !empty($tracking_forums) || isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
							{

								$unread_topics = true;

								if ( !empty($tracking_topics[$topic_id]) )
								{
									if ( $tracking_topics[$topic_id] > $searchset[$i]['post_time'] )
									{
										$unread_topics = false;
									}
								}

								if ( !empty($tracking_forums[$forum_id]) )
								{
									if ( $tracking_forums[$forum_id] > $searchset[$i]['post_time'] )
									{
										$unread_topics = false;
									}
								}

								if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
								{
									if ( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] > $searchset[$i]['post_time'] )
									{
										$unread_topics = false;
									}
								}

								if ( $post_time > $visit_time_forum || $post_edit_time > $visit_time_forum )
								{
									$unread_topics = true;
								}

								if ( $unread_topics )
								{
									$folder_image = $folder_new;
									$folder_alt = $lang['New_posts'];

									$newest_post_img = '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&view=newest") . '"><img src="' . $images['icon_newest_reply'] . '" alt="' . $lang['View_newest_post'] . '" title="' . $lang['View_newest_post'] . '" border="0" /></a> ';
								}
								else
								{
									$folder_alt = ( $searchset[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['No_new_posts'];

									$folder_image = $folder;
									$folder_alt = $folder_alt;
									$newest_post_img = '';
								}

							}
							else if ( $searchset[$i]['post_time'] > $visit_time_forum || $searchset[$i]['post_edit_time'] > $visit_time_forum )
							{
								$folder_image = $folder_new;
								$folder_alt = $lang['New_posts'];

								$newest_post_img = '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&view=newest") . '"><img src="' . $images['icon_newest_reply'] . '" alt="' . $lang['View_newest_post'] . '" title="' . $lang['View_newest_post'] . '" border="0" /></a> ';
							}
							else 
							{
								$folder_image = $folder;
								$folder_alt = ( $searchset[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['No_new_posts'];
								$newest_post_img = '';
							}
						}
						else
						{
							$folder_image = $folder;
							$folder_alt = ( $searchset[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['No_new_posts'];
							$newest_post_img = '';
						}
					}
					else
					{
						$folder_image = $folder;
						$folder_alt = ( $searchset[$i]['topic_status'] == TOPIC_LOCKED ) ? $lang['Topic_locked'] : $lang['No_new_posts'];
						$newest_post_img = '';
					}
				}


				$topic_author = ( $searchset[$i]['user_id'] != ANONYMOUS ) ? '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '=' . $searchset[$i]['user_id']) . '">' : '';
				$topic_author .= ( $searchset[$i]['user_id'] != ANONYMOUS ) ? $searchset[$i]['username'] : ( ( $searchset[$i]['post_username'] != '' ) ? $searchset[$i]['post_username'] : $lang['Guest'] );

				$topic_author .= ( $searchset[$i]['user_id'] != ANONYMOUS ) ? '</a>' : '';

				$first_post_time = create_date($board_config['default_dateformat'], $searchset[$i]['topic_time'], $board_config['board_timezone']);

				$last_post_time = create_date($board_config['default_dateformat'], $searchset[$i]['post_time'], $board_config['board_timezone']);

				$last_post_author = ( $searchset[$i]['id2'] == ANONYMOUS ) ? ( ($searchset[$i]['post_username2'] != '' ) ? $searchset[$i]['post_username2'] . ' ' : $lang['Guest'] . ' ' ) : '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '='  . $searchset[$i]['id2']) . '">' . $searchset[$i]['user2'] . '</a>';

				$last_post_url = '<a href="' . append_sid("viewtopic.$phpEx?"  . POST_POST_URL . '=' . $searchset[$i]['topic_last_post_id']) . '#' . $searchset[$i]['topic_last_post_id'] . '"><img src="' . $images['icon_latest_reply'] . '" alt="' . $lang['View_latest_post'] . '" title="' . $lang['View_latest_post'] . '" border="0" /></a>';

				$template->assign_block_vars('searchresults', array( 
					'FORUM_NAME' => $searchset[$i]['forum_name'],
					'FORUM_ID' => $forum_id,
					'TOPIC_ID' => $topic_id,
					'FOLDER' => $folder_image,
					'NEWEST_POST_IMG' => $newest_post_img, 
					'TOPIC_FOLDER_IMG' => $folder_image, 
					'GOTO_PAGE' => $goto_page,
					'REPLIES' => $replies,
					'TOPIC_TITLE' => $topic_title,
					'TOPIC_TYPE' => $topic_type,
					'VIEWS' => $views,
					'TOPIC_AUTHOR' => $topic_author, 
					'FIRST_POST_TIME' => $first_post_time, 
					'LAST_POST_TIME' => $last_post_time,
					'LAST_POST_AUTHOR' => $last_post_author,
					'LAST_POST_IMG' => $last_post_url,

					'L_TOPIC_FOLDER_ALT' => $folder_alt, 

					'U_VIEW_FORUM' => $forum_url, 
					'U_VIEW_TOPIC' => $topic_url)
				);
			}
		}

		$base_url = "search.$phpEx?search_id=$search_id";

		$template->assign_vars(array(
			'PAGINATION' => generate_pagination($base_url, $total_match_count, $per_page, $start),
			'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $per_page ) + 1 ), ceil( $total_match_count / $per_page )), 

			'L_AUTHOR' => $lang['Author'],
			'L_MESSAGE' => $lang['Message'],
			'L_FORUM' => $lang['Forum'],
			'L_TOPICS' => $lang['Topics'],
			'L_REPLIES' => $lang['Replies'],
			'L_VIEWS' => $lang['Views'],
			'L_POSTS' => $lang['Posts'],
			'L_LASTPOST' => $lang['Last_Post'], 
			'L_POSTED' => $lang['Posted'], 
			'L_SUBJECT' => $lang['Subject'],

			'L_GOTO_PAGE' => $lang['Goto_page'])
		);

		$template->pparse('body');

		include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
	}
	else
	{
		message_die(GENERAL_MESSAGE, $lang['No_search_match']);
	}
}

//
// Search forum
//
$sql = "SELECT c.cat_title, c.cat_id, f.forum_name, f.forum_id  
	FROM " . CATEGORIES_TABLE . " c, " . FORUMS_TABLE . " f
	WHERE f.cat_id = c.cat_id 
	ORDER BY c.cat_id, f.forum_order";
$result = $db->sql_query($sql);
if ( !$result )
{
	message_die(GENERAL_ERROR, 'Could not obtain forum_name/forum_id', '', __LINE__, __FILE__, $sql);
}

$is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata);

$s_forums = '';
while( $row = $db->sql_fetchrow($result) )
{
	if ( $is_auth_ary[$row['forum_id']]['auth_read'] )
	{
		$s_forums .= '<option value="' . $row['forum_id'] . '">' . $row['forum_name'] . '</option>';
		if ( empty($list_cat[$row['cat_id']]) )
		{
			$list_cat[$row['cat_id']] = $row['cat_title'];
		}
	}
}

if ( $s_forums != '' )
{
	$s_forums = '<option value="-1">' . $lang['All_available'] . '</option>' . $s_forums;

	//
	// Category to search
	//
	$s_categories = '<option value="-1">' . $lang['All_available'] . '</option>';
	while( list($cat_id, $cat_title) = @each($list_cat))
	{
		$s_categories .= '<option value="' . $cat_id . '">' . $cat_title . '</option>';
	}
}
else
{
	message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']);
}

//
// Number of chars returned
//
$s_characters = '<option value="-1">' . $lang['All_available'] . '</option>';
$s_characters .= '<option value="0">0</option>';
$s_characters .= '<option value="25">25</option>';
$s_characters .= '<option value="50">50</option>';

for($i = 100; $i < 1100 ; $i += 100)
{
	$selected = ( $i == 200 ) ? ' selected="selected"' : '';
	$s_characters .= '<option value="' . $i . '"' . $selected . '>' . $i . '</option>';
}

//
// Sorting
//
$s_sort_by = "";
for($i = 0; $i < count($sort_by_types); $i++)
{
	$s_sort_by .= '<option value="' . $i . '">' . $sort_by_types[$i] . '</option>';
}

//
// Search time
//
$previous_days = array(0, 1, 7, 14, 30, 90, 180, 364);
$previous_days_text = array($lang['All_Posts'], $lang['1_Day'], $lang['7_Days'], $lang['2_Weeks'], $lang['1_Month'], $lang['3_Months'], $lang['6_Months'], $lang['1_Year']);

$s_time = '';
for($i = 0; $i < count($previous_days); $i++)
{
	$selected = ( $topic_days == $previous_days[$i] ) ? ' selected="selected"' : '';
	$s_time .= '<option value="' . $previous_days[$i] . '"' . $selected . '>' . $previous_days_text[$i] . '</option>';
}

//
// Output the basic page
//
$page_title = $lang['Search'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

$template->set_filenames(array(
	'body' => 'search_body.tpl')
);
make_jumpbox('viewforum.'.$phpEx);

$template->assign_vars(array(
	'L_SEARCH_QUERY' => $lang['Search_query'], 
	'L_SEARCH_OPTIONS' => $lang['Search_options'], 
	'L_SEARCH_KEYWORDS' => $lang['Search_keywords'], 
	'L_SEARCH_KEYWORDS_EXPLAIN' => $lang['Search_keywords_explain'], 
	'L_SEARCH_AUTHOR' => $lang['Search_author'],
	'L_SEARCH_AUTHOR_EXPLAIN' => $lang['Search_author_explain'], 
	'L_SEARCH_ANY_TERMS' => $lang['Search_for_any'],
	'L_SEARCH_ALL_TERMS' => $lang['Search_for_all'], 
	'L_SEARCH_MESSAGE_ONLY' => $lang['Search_msg_only'], 
	'L_SEARCH_MESSAGE_TITLE' => $lang['Search_title_msg'], 
	'L_CATEGORY' => $lang['Category'], 
	'L_RETURN_FIRST' => $lang['Return_first'],
	'L_CHARACTERS' => $lang['characters_posts'], 
	'L_SORT_BY' => $lang['Sort_by'],
	'L_SORT_ASCENDING' => $lang['Sort_Ascending'],
	'L_SORT_DESCENDING' => $lang['Sort_Descending'],
	'L_SEARCH_PREVIOUS' => $lang['Search_previous'], 
	'L_DISPLAY_RESULTS' => $lang['Display_results'], 
	'L_FORUM' => $lang['Forum'],
	'L_TOPICS' => $lang['Topics'],
	'L_POSTS' => $lang['Posts'],

	'S_SEARCH_ACTION' => append_sid("search.$phpEx?mode=results"),
	'S_CHARACTER_OPTIONS' => $s_characters,
	'S_FORUM_OPTIONS' => $s_forums, 
	'S_CATEGORY_OPTIONS' => $s_categories, 
	'S_TIME_OPTIONS' => $s_time, 
	'S_SORT_OPTIONS' => $s_sort_by,
	'S_HIDDEN_FIELDS' => '')
);

$template->pparse('body');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);

?>

Verfasst: Do 18.Mär, 2004 17:42
von oxpus
Manchmal bin ich ein wenig blind :cool: Ist das schlimm?

Öhm ja, hier die Korrektur:

Code: Alles auswählen

Finde

			$search_ids = array();

Lösche

			$search_ids = array();

Finde

				$search_ids_visit[$row['topic_id']] = $row['visit_time'];

Lösche 

				$search_ids_visit[$row['topic_id']] = $row['visit_time'];

Finde

			$search_ids_visit[$row['topic_id']] = $row['last_time']; 
		}

Füge danach ein

		$db->sql_freeresult($result); 

Finde

                               if ( ($searchset[$i]['post_time'] > $topic_last_read || $searchset[$i]['post_edit_time'] > $topic_last_read) && $searchset[$i]['post_time'] < $board_config['unread_time'] )

Ersetze mit

                               if ( ($searchset[$i]['post_time'] > $topic_last_read || $searchset[$i]['post_edit_time'] > $topic_last_read) && $searchset[$i]['post_time'] > (time() - $board_config['unread_time']) )

Verfasst: Do 18.Mär, 2004 18:29
von Simpson
Geänderte search.php hab ich jetzt hochgeladen, den ersten Beitrag eines neuen Threads zeigt er jetzt auch als neu an wenn man nach Beiträgen auflisten lässt, bei Antworten im Thread oder bei Editierungen jedoch bleibts Icon weiss und die Titelhintergrundfarbe auch.

Verfasst: Do 18.Mär, 2004 22:20
von oxpus
Das ersetzt nochmal

Code: Alles auswählen

                               if ( ($searchset[$i]['post_time'] > $topic_last_read || $searchset[$i]['post_edit_time'] > $topic_last_read) && $searchset[$i]['post_time'] > (time() - $board_config['unread_time']) )
mit

Code: Alles auswählen

                               if ( ($searchset[$i]['post_time'] > $topic_last_read || $searchset[$i]['post_edit_time'] > $topic_last_read) && ($searchset[$i]['post_time'] > (time() - $board_config['unread_time']) || $searchset[$i]['post_edit_time'] > (time() - $board_config['unread_time'])) )

Verfasst: Fr 19.Mär, 2004 14:12
von Simpson
Scheint astrein zu laufen :) hab bisher keine Fehler mehr gefunden.

Verfasst: Fr 19.Mär, 2004 15:15
von Simpson
Was ich noch mal ausprobieren wollte, was ich aber gerade da ich auf Arbeit bin und meine Zugangsdaten für FTP vergessen habe nicht ausprobieren kann, war ob man jetzt das ganze auch noch jederzeit in der functions_post.php umschalten kann darauf das alle Beiträge die editiert sind als neu gelten, bis auf der letzte im Thread (momentan ist ja inklusive dem letzten im Thread). Oder sollte ich das besser nicht probieren :D bestimmt funktioniert dann wieder irgendwas nicht mehr ^2

Verfasst: Fr 19.Mär, 2004 18:57
von Simpson
So ich habs jetzt noch mal so probiert das der letzte Beitrag nicht mit dem "Last edited by" versehen wird und somit der letzte Beitrag bei Editierung auch nicht zum Neubeitrag führt.

Da geht alles bei auf noch mal etwas in der Suche. Darf ich dich damit noch mal nerven?

In der Suche fehlt das "Neuicon" und das "SprungZuNeustemPostIcon" bei Auflistung nach Themen (nach Beiträgen gibts keine Probleme).

Bekommst du das auch noch hin?


Bisher hatten wir ja das in der functions_post.php stehen:

Code: Alles auswählen

$edited_sql = ($mode == 'editpost') ? ", post_edit_user = $usr_id, post_edit_time = $current_time, post_edit_count = post_edit_count + 1 " : ""; 
ich habs jetzt gegen das ersetzt und danach kommt das Problem:

Code: Alles auswählen

$edited_sql = ($mode == 'editpost' && !$post_data['last_post']) ? ", post_edit_user = $usr_id, post_edit_time = $current_time, post_edit_count = post_edit_count + 1 " : "";
Unter Auflisten nach Beiträgen haste das ja schon so hinbekommen das es sowohl mit als auch ohne letzten Beitrag funktioniert.

Verfasst: Fr 19.Mär, 2004 19:34
von oxpus
Du solltest die Funktion besser nicht benutzen, denn die search.php ist mittlerweile so verbogen, daß man Gefahr läuft, mit anderen inkompatibel zu werden.
Dabei sollte man aber die Probleme für die neue Version gleich angeben, nicht das andere User wieder eine Support-Welle lostreten.

Verfasst: Fr 19.Mär, 2004 20:24
von Simpson
Genau deswegen fragte ich, wegen anderen Usern, manchen gefällt es nicht das der letzte Beitrag bei Editierung zu einem Newicon führt. Aber okay dann muss sagt man eben, entweder UPItoDB mit Konsequenz grundsätzlich "Edit = Neu" oder auf "Last edited by" verzichten und dann gar keine editierten Beiträge als neu angezeigt bekommen.

Ich selber bin eh der Meinung, jeder Beitrag der editiert wird ist neu, egal ob es der letzte oder erste in einem Thread ist, schliesslich führt auch jeder Ausbesserung zu einer Abänderung, also = neu!

Verfasst: Sa 20.Mär, 2004 13:23
von oxpus
Was ich nur nicht so ganz verstehe: Hier habe ich alle Änderungen an der search.php nachgebaut und kann beim besten Willen keinen Fehler mehr feststellen.
Auch bearbeitete Beiträge werden als "neu" deklariert und erhalten das gelben Icon, egal ob als Topic- oder Beitragsansicht.
Oder bin ich blind?

Ich habe zum Mod aber eine ganz andere Idee: Warum nicht die Zeit für jeden Post tracken, sondern nur die letzte Besuchszeit eines Topics? Und darauf könnte man viel schlanker die ganze Sache aufzäumen.
Zur Erklärung: Man öffnet ein Topic und die aktuelle Zeit wird in der Datenbank gespeichert, bzw. aktualisiert. Eben nur Benutzer- und Topic-ID.
Damit wäre die Tabelle schlanker und man müsste überall nur prüfen, ist in einem Forum oder Topic ein Beiträg jünger als die letzte Besuchszeit gibt. Selbstverständlich auch für editierte Beiträge, also "post_time" und "post_edit_time".
Genau das schau ich gleich mal nach.

Verfasst: Sa 20.Mär, 2004 17:49
von oxpus
Hier erstmal der Teil ohne search.php, um den Mod ohne post_id umzustellen. Die Änderungen basieren auf den Original Mod in Version 1.0.6:

Code: Alles auswählen

#
#-----[ SQL ]------------------------------------------
#
ALTER TABLE phpbb_topic_read DROP COLUMN post_id;

#
#-----[ OPEN ]------------------------------------------
#
viewtopic

#
#-----[ FIND ]------------------------------------------
#
			 if( !$result = $db->sql_query($sql) )
			 {
			 message_die(GENERAL_ERROR, "Could not get Topic Read from .", '', __LINE__, __FILE__, $sql);
			 } else {
			
			 if( $post_read = $db->sql_fetchrow($result) ) 	{
			    		$visit_time_newest = $post_read['visit_time']; 
			 } else {
			    		$visit_time_newest = "0";
			 }}

#
#-----[ REPLACE WITH ]------------------------------------------
#
			if( !$result = $db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Could not get Topic Read from .", '', __LINE__, __FILE__, $sql);
			}

			while( $post_read = $db->sql_fetchrow($result) )
			{
				$visit_time_newest = $post_read['visit_time'];
			}
			$visit_time_newest = ( $visit_time_newest ) ? $visit_time_newest : 0;

#
#-----[ FIND ]------------------------------------------
#
				$sql = "INSERT INTO " . TOPIC_READ_TABLE . " (topic_id, post_id, user_id, visit_time, forum_id) VALUES ('$topic_id' , '$post_id' , '$user_id' , '$visit_time_new', '$forum_id')"; 

#
#-----[ REPLACE WITH ]------------------------------------------
#
				$sql = "INSERT INTO " . TOPIC_READ_TABLE . " (topic_id, user_id, visit_time, forum_id) VALUES ('$topic_id' , '$user_id' , '$visit_time_new' , '$forum_id')";

#
#-----[ OPEN ]------------------------------------------
#
viewforum.php

#
#-----[ FIND ]------------------------------------------
#
$result3 = mysql_query($sql = "INSERT INTO " . TOPIC_READ_TABLE . " (topic_id, post_id, user_id, visit_time, forum_id) VALUES ('$topic_id_make_read' , '$post_id_make_read' , '$user_id_make_read' , '$visit_time_make_read', '$forum_id_make_read')");

#
#-----[ REPLACE WITH ]------------------------------------------
#
$result3 = mysql_query($sql = "INSERT INTO " . TOPIC_READ_TABLE . " (topic_id, user_id, visit_time, forum_id) VALUES ('$topic_id_make_read' , '$user_id_make_read' , '$visit_time_make_read', '$forum_id_make_read')");

#
#-----[ FIND ]------------------------------------------
#
		$sql = "SELECT visit_time, topic_id, user_id, post_id

#
#-----[ REPLACE WITH ]------------------------------------------
#
		$sql = "SELECT visit_time

#
#-----[ OPEN ]------------------------------------------
#
index.php

#
#-----[ FIND ]------------------------------------------
#
if ($result3 = mysql_query($sql = "INSERT INTO " . TOPIC_READ_TABLE . " (topic_id, post_id, user_id, visit_time, forum_id) VALUES ('$topic_id_make_read' , '$post_id_make_read' , '$user_id_make_read' , '$visit_time_make_read', '$forum_id_make_read')")); 

#
#-----[ REPLACE WITH ]------------------------------------------
#
if ($result3 = mysql_query($sql = "INSERT INTO " . TOPIC_READ_TABLE . " (topic_id, user_id, visit_time, forum_id) VALUES ('$topic_id_make_read' , '$user_id_make_read' , '$visit_time_make_read', '$forum_id_make_read')")); 

#
#-----[ FIND ]------------------------------------------
#
			   $result3 = mysql_query("SELECT topic_id, post_id, forum_id, visit_time, user_id FROM " . TOPIC_READ_TABLE . " WHERE topic_id = $topic_read[0] AND user_id = $user_id "); 

#
#-----[ REPLACE WITH ]------------------------------------------
#
			   $result3 = mysql_query("SELECT topic_id, forum_id, visit_time, user_id FROM " . TOPIC_READ_TABLE . " WHERE topic_id = $topic_read[0] AND user_id = $user_id "); 

#
#-----[ OPEN ]------------------------------------------
#
includes/functions_post.php

#
#-----[ FIND ]------------------------------------------
#
	$sql = "INSERT INTO " . TOPIC_READ_TABLE . " (topic_id, post_id, user_id, visit_time, forum_id) VALUES ('$topic_id' , '$post_id', $usr_id, '$visit_time', '$forum_id')";

#
#-----[ REPLACE WITH ]------------------------------------------
#
	$sql = "INSERT INTO " . TOPIC_READ_TABLE . " (topic_id, user_id, visit_time, forum_id) VALUES ('$topic_id', $usr_id, '$visit_time', '$forum_id')";

###############################################################
##
## just for Categories Hierarchy Mod (since 2.0.3)
##
###############################################################

#
#-----[ OPEN ]------------------------------------------
#
includes/functions_categories_hiearchy.php

#
#-----[ FIND ]------------------------------------------
#
		$sql = "SELECT p.forum_id, p.topic_id, p.post_time
			FROM " . POSTS_TABLE . " AS p LEFT OUTER JOIN " . TOPIC_READ_TABLE . " AS r
			ON ( p.topic_id = r.topic_id AND r.user_id = " . $userdata['user_id'] . ")
			WHERE ( (r.user_id = " . $userdata['user_id'] . " OR r.user_id IS NULL)
			AND p.post_time > " . $jetzt_vor_einem_monat . "
			AND (p.post_time > r.visit_time OR p.post_edit_time > r.visit_time OR r.topic_id IS NULL) )";

#
#-----[ REPLACE WITH ]------------------------------------------
#
		$sql = "SELECT p.forum_id, p.topic_id, p.post_time, p.post_edit_time
			FROM " . POSTS_TABLE . " AS p LEFT OUTER JOIN " . TOPIC_READ_TABLE . " AS r
			ON ( p.topic_id = r.topic_id AND r.user_id = " . $userdata['user_id'] . ")
			WHERE ( (r.user_id = " . $userdata['user_id'] . " OR r.user_id IS NULL)
			AND (p.post_time > " . $jetzt_vor_einem_monat . " OR p.post_edit_time > " . $jetzt_vor_einem_monat . ")
			AND (p.post_time > r.visit_time OR p.post_edit_time > r.visit_time OR r.topic_id IS NULL) )";

#
#-----[ FIND ]------------------------------------------
#
			$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time'];

#
#-----[ REPLACE WITH ]------------------------------------------
#
			$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = max($topic_data['post_time'], $topic_data['post_edit_time']);

#
#-----[ FIND ]------------------------------------------
#
						if ( $tracking_topics[$check_topic_id] <= $check_post_time )

#
#-----[ REPLACE WITH ]------------------------------------------
#
						if ( $tracking_topics[$check_topic_id] > $check_post_time )


#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Die Suche und deren Ergebnisse kommen umgehend nach.

Verfasst: Sa 20.Mär, 2004 18:26
von oxpus
Hier die nötigen Änderungen für die Markierung aller Foren als gelesen auf dem Index:

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------
#
index.php

#
#-----[ FIND ]------------------------------------------
#
if( $mark_read == 'forums' )
{
	if ( $viewcat < 0 )
	{
		if( $userdata['session_logged_in'] )
		{
			//		<!--- Tread Read Hack On --->
			if ($result1 = mysql_query("DELETE FROM " . TOPIC_READ_TABLE . "
							WHERE user_id = $user_id"));

			$post_time_vormonat = time() - $board_config['unread_time'];

			if ($result2 = mysql_query("SELECT topic_id, post_id, forum_id, post_time, post_edit_time FROM " . POSTS_TABLE . " WHERE (post_time > $post_time_vormonat OR post_edit_time > $post_time_vormonat) GROUP BY topic_id"));
			{
				while($read = mysql_fetch_row($result2))
				{
					$topic_id_make_read = $read[0];
					$post_id_make_read = $read[1];
					$forum_id_make_read = $read[2];
					$user_id_make_read = $userdata['user_id'];
					$visit_time_make_read = time();

					if ($result3 = mysql_query($sql = "INSERT INTO " . TOPIC_READ_TABLE . " (topic_id, user_id, visit_time, forum_id) VALUES ('$topic_id_make_read' , '$user_id_make_read' , '$visit_time_make_read', '$forum_id_make_read')"));
				}
			}
		}
			//		<!--- Tread Read Hack Off --->

		$template->assign_vars(array(
			"META" => '<meta http-equiv="refresh" content="3;url='  .append_sid("index.$phpEx") . '">')
		);
	}

#
#-----[ REPLACE WITH ]------------------------------------------
#
if( $mark_read == 'forums' )
{
	if ( $viewcat < 0 )
	{
		if( $userdata['session_logged_in'] )
		{
			//		<!--- Tread Read Hack On --->
			if ($result1 = mysql_query("DELETE FROM " . TOPIC_READ_TABLE . "
							WHERE user_id = $user_id"));

			if ($result2 = mysql_query("SELECT topic_id, forum_id FROM " . TOPICS_TABLE))
			{
				while($read = mysql_fetch_row($result2))
				{
					$topic_id_make_read = $read[0];
					$forum_id_make_read = $read[2];
					$user_id_make_read = $userdata['user_id'];
					$visit_time_make_read = time();

					if ($result3 = mysql_query($sql = "INSERT INTO " . TOPIC_READ_TABLE . " (topic_id, user_id, visit_time, forum_id) VALUES ('$topic_id_make_read' , '$user_id_make_read' , '$visit_time_make_read', '$forum_id_make_read')"));
				}
			}
		}
			//		<!--- Tread Read Hack Off --->

		$template->assign_vars(array(
			"META" => '<meta http-equiv="refresh" content="3;url='  .append_sid("index.$phpEx") . '">')
		);
	}


#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM

Verfasst: Sa 20.Mär, 2004 18:32
von oxpus
Dann noch eine Korrektur zu meinen Änderungen, wenn ein Post gelöscht wird:

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------
#
includes/functions_post.php

#
#-----[ FIND ]------------------------------------------
#
		$sql = "DELETE FROM " . TOPIC_READ_TABLE . "
			WHERE post_id = $post_id";
		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql);
		}


#
#-----[ DELETE ]------------------------------------------
#


#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Und zur Suche habe ich jetzt keinen weiteren Fehler mehr gefunden und deklariere von meiner Seite damit alles fehlerfrei.
Die Benutzung der Lesezeiten ist so auch einfacher zu handeln, wenn die Post-ID nicht mit getrackt wird. Dazu kommt auch, das es so genauer wird, da die Besuchszeit des Topics unabhängiger wird und immer Gültigkeit hat, egal, wer was wann wie gemacht hat.
Fazit: Mit diesen Änderungen werden auch editierte Beiträge immer als neu markiert. Somit ist die Option des Last Edited Mod immer an.

Verfasst: Mo 22.Mär, 2004 14:30
von Simpson
Also in der Viewtopic finde ich nur die erste Suchen und Ersetzenangabe.

So sieht meine vietopic jetzt aus: http://www.goettinger-bueroservice.de/b ... wtopic.txt

Ob diese Änderungen überhaupt wohl alle noch abwärtskompatibel sein werden :confused: , ich glaubs nich. Also egal wie bin ich inzwischen sicher eine Updateanleitung von 1.06 auf 1.07 haut nich ein, das wird zu krass, das bekommt doch kaum noch jemand auf die Reihe, habe auch die Befürchtung das dann bei sämtlichen Usern ne Menge Probs auftreten werden, denke wenn kann man die 1.07 nur als Vollversion rausbringen und auch nur für phpBB ab 2.06, nicht darunter (wobei mit 2.07 hab ichs noch nicht probiert)...

Verfasst: Mo 22.Mär, 2004 15:03
von Simpson
HAT SICH ERLEDIGT, HABE FALSCHE GEGUCKT; GLAUBE FINDE DOCH ALLES :)

Verfasst: Mo 22.Mär, 2004 15:12
von Simpson
Hab doch etwas, was ich nicht finde, allerdings in der index.php

In dem vorletzten Post von dir steht da ne Anweisung wegen "Alle Foren als gelesen markieren".

Bei mir sieht der "Handle Marking Posts Teil" so aus:

Code: Alles auswählen

//
// Handle marking posts
//
if( $mark_read == 'forums' )
{
	if( $userdata['session_logged_in'] )
	{
  $user_id = $userdata[user_id];
  $zeit_jetzt = time();
  $zeit_vor_monat = $zeit_jetzt - $board_config['unread_time'];
  $sql = "DELETE FROM " . TOPIC_READ_TABLE . " 
				WHERE visit_time < $zeit_vor_monat";
				
  if (!$result = $db->sql_query($sql) ) {
  	  	 message_die(GENERAL_ERROR, "Couldn't remove Topic Read database", "", __LINE__, __FILE__, $sql); 
  }}
//		<!--- Tread Read Hack Off --->

if( $userdata['session_logged_in'] ) 
{ 
//		<!--- Tread Read Hack On --->	

if ($result1 = mysql_query("DELETE FROM " . TOPIC_READ_TABLE . " 
				WHERE user_id = $user_id"));
					  
			   				
	
	$post_time_vormonat = time() - $board_config['unread_time'];
if ($result2 = mysql_query("SELECT topic_id, post_id, forum_id, post_time, post_edit_time FROM " . POSTS_TABLE . " WHERE (post_time > $post_time_vormonat OR post_edit_time > $post_time_vormonat) GROUP BY topic_id"));
		{	 
			 while($read = mysql_fetch_row($result2))
			 
			     {
      		 
			 
			 		$topic_id_make_read = $read[0];
					$post_id_make_read = $read[1];
					$forum_id_make_read = $read[2];
					$user_id_make_read = $userdata['user_id'];
					$visit_time_make_read = time();
					
if ($result3 = mysql_query($sql = "INSERT INTO " . TOPIC_READ_TABLE . " (topic_id, user_id, visit_time, forum_id) VALUES ('$topic_id_make_read' , '$user_id_make_read' , '$visit_time_make_read', '$forum_id_make_read')")); 
	}

				 
										
					}
					
	
	
		
	}
//		<!--- Tread Read Hack Off --->

	$template->assign_vars(array(
		"META" => '<meta http-equiv="refresh" content="3;url='  .append_sid("index.$phpEx") . '">')
	);

	$message = $lang['Forums_marked_read'] . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a> ');

	message_die(GENERAL_MESSAGE, $message);
}
//
// End handle marking posts
//
Was mach ich da?


Und noch ein Prob, die search.php Änderungen benötige ich noch, sonst bekomm ich nen post_id error wenn ich auf "1 ungelesner Beitrag" klicke.

Code: Alles auswählen

Could not get Topic Read from 4 83.

DEBUG MODE

SQL Error : 1054 Unknown column 'post_id' in 'field list'

SELECT visit_time, topic_id, user_id, post_id FROM phpbb7_topic_read WHERE user_id = 4 AND topic_id = 83

Line : 1247
File : /www/htdocs/xxx/bweiss/xxx/search.php

Verfasst: Mo 22.Mär, 2004 18:09
von oxpus
Zur index.php:
Den ganzen Block mal ersetzen und testen. Ich habe den auch bereits in mehreren Varianten gesehen.

Und zur search.php:
Da ich ja das Feld post_id gelöscht habe, musst Du auch hier die sql-Abfrage anpassen. Also ", post_id" da rauslöschen.

Verfasst: Mo 22.Mär, 2004 20:14
von Simpson
Hab den Block komplett ersetzt in der index - geht leider nicht.

Parse error: parse error, unexpected $ in /www/htdocs/xxx/bweiss/upitodb107-testforum/index.php on line 554

Glaube da mus auch noch irgendwie dies oder so ähnlich integriert werden:

Code: Alles auswählen

	$message = $lang['Forums_marked_read'] . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a> ');

	message_die(GENERAL_MESSAGE, $message);

Verfasst: Mo 22.Mär, 2004 21:06
von oxpus
Ja klar, natürlich. Und danach noch eine schliessende Klammer "}", ansonsten der $-End-Error...

Verfasst: Mo 22.Mär, 2004 22:26
von Simpson
Soweit so gut, jetzt gehts. Nun habe ich jedoch following problem:

Das eine Forum ist als neu markiert, das andere nicht, ein Beitrag ist für alle neu (einer von Whitestar). Beitrag angeguckt, wieder raus, Icon in zweitem Forum bleibt gelb, Klick auf "Alle Beiträge als gelesen markieren", nichts, Forumicon bei Forum2 bleibt gelb.

Unreadtable gelöscht, wieder der eine Beitrag von Whitestar als neu angezeigt bekommen, wieder Beitrag angeklickt, wieder Alle Foren als gelesen markiert, der Beitrag ist dann weiss, aber das Forum bleibt neu.

Aufgefallen ist mir auch das viele Beiträge jetzt das gelbe Mini-Icon haben, wenn ich in diese reinschaue.