Ich habe die Ursache des Problems (siehe HIER gefunden!
Der Fehler liegt in einem modifiziertem Code-Abschnitt in search.php.
Ursprunglich wird bei "get the object list" im modifiziertem Teil eine Liste Foren-IDs erzeugt, die vom User (Gast) gelesen werden dürfen. Sie wird dem $auth_sql hinzugefügt.
Bei der Ausgabe der Suchergebnisse werden aber so die Privaten Foren, die für Gäste gesperrt sind, mit ausgegeben.
Folgende Änderung habe ich vorgenommen:
$auth_sql wird zusätzlich eine Liste von Foren-IDs hinzugefügt, die NICHT gelesen werden dürfen.
In der SQL-Anweisung steht dann:
WHERE f.forum_id IN (zu durchsuchende Foren) AND f.forum_id NOT IN (zu ignorierende Foren)
Wenn es keine zu durchsuchenden Foren gibt, wird "No_searchable_forums" ausgegeben.
In search.php diesen Abschnitt ersetzen:
Code: Alles auswählen
//-- mod : categories hierarchy --------------------------------------------------------------------
//-- delete
// 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) ";
// }
// }
//-- add
// get the object list
$keys = array();
$keys = get_auth_keys($search_where, true, -1, -1, 'auth_read');
$s_flist = '';
for ($i=0; $i < count($keys['id']); $i++)
{
if ( ($tree['type'][ $keys['idx'][$i] ] == POST_FORUM_URL) && $tree['auth'][ $keys['id'][$i] ]['auth_read'] )
{
$s_flist .= (($s_flist != '') ? ', ' : '') . $tree['id'][ $keys['idx'][$i] ];
}
}
if ($s_flist != '')
{
$auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id IN ($s_flist) ";
}
//-- fin mod : categories hierarchy ----------------------------------------------------------------
Code: Alles auswählen
//-- mod : categories hierarchy --------------------------------------------------------------------
//-- delete
// 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) ";
// }
// }
//-- add
// get the object list
$keys = array();
$keys = get_auth_keys($search_where, true, -1, -1, 'auth_read');
$s_flist = '';
$i_flist = '';
for ($i=0; $i < count($keys['id']); $i++)
{
if ( ($tree['type'][ $keys['idx'][$i] ] == POST_FORUM_URL) && $tree['auth'][ $keys['id'][$i] ]['auth_read'] )
{
$s_flist .= (($s_flist != '') ? ', ' : '') . $tree['id'][ $keys['idx'][$i] ];
}
if ( ($tree['type'][ $keys['idx'][$i] ] == POST_FORUM_URL) && !$tree['auth'][ $keys['id'][$i] ]['auth_read'] )
{
$i_flist .= (($i_flist != '') ? ', ' : '') . $tree['id'][ $keys['idx'][$i] ];
}
}
if ($s_flist != '')
{
$auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id IN ($s_flist) ";
}
else
{
message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']);
}
if ($i_flist != '')
{
$auth_sql .= (( $auth_sql != '' ) ? " AND" : '') . " f.forum_id NOT IN ($i_flist) ";
}
//-- fin mod : categories hierarchy ----------------------------------------------------------------