Kombination mit Admin Unread Time Addon nicht möglich.
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
Zuletzt geändert von Simpson am Mo 15.Mär, 2004 23:43, insgesamt 1-mal geändert.
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.
Zuletzt geändert von Simpson am Di 16.Mär, 2004 11:48, insgesamt 1-mal geändert.
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
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:
ändere den mal in
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):
ersetzen mit
Das ist die Zeile vor dem mini_img-Block.
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'];
}
}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'];
}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 )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'] )Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
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.
Zuletzt geändert von Simpson am Mi 17.Mär, 2004 08:29, insgesamt 1-mal geändert.
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:
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);
?>- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Manchmal bin ich ein wenig blind
Ist das schlimm?
Öhm ja, hier die Korrektur:
Ö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']) )Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Das ersetzt nochmal
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']) )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'])) )Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
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
bestimmt funktioniert dann wieder irgendwas nicht mehr 
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:
ich habs jetzt gegen das ersetzt und danach kommt das Problem:
Unter Auflisten nach Beiträgen haste das ja schon so hinbekommen das es sowohl mit als auch ohne letzten Beitrag funktioniert.
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 " : ""; 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 " : "";- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
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.
Dabei sollte man aber die Probleme für die neue Version gleich angeben, nicht das andere User wieder eine Support-Welle lostreten.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
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!
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!
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
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.
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.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
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:
Die Suche und deren Ergebnisse kommen umgehend nach.
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 ]------------------------------------------
#
# EoMKarsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
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 ]------------------------------------------
#
# EoMKarsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Dann noch eine Korrektur zu meinen Änderungen, wenn ein Post gelöscht wird:
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.
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 ]------------------------------------------
#
# EoMDie 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.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
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
, 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)...
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
Zuletzt geändert von Simpson am Mo 22.Mär, 2004 14:47, insgesamt 6-mal geändert.
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:
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.
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
//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
Zuletzt geändert von Simpson am Mo 22.Mär, 2004 16:27, insgesamt 4-mal geändert.
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
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.
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.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
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:
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);- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Ja klar, natürlich. Und danach noch eine schliessende Klammer "}", ansonsten der $-End-Error...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
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.
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.
Zuletzt geändert von Simpson am Mo 22.Mär, 2004 22:53, insgesamt 6-mal geändert.