Das erfordert eine weitere Berechtigung, die Vorgehensweise ist aber ähnlich:
1.Schritt: Backup!
Diese Datei ausführen (zusätzlich zu allen bisher beschriebenen Dingen):
Code: Alles auswählen
<?php
// Setup $auth_admin class so we can add permission options
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
$auth_admin = new auth_admin();
// Add permissions
$auth_admin->acl_add_option(array(
'local' => array('f_view_own_topics'),
'global' => array()
));
?>
in der bereits angelegten Sprachdatei das hier:
Code: Alles auswählen
// Adding the permissions
$lang = array_merge($lang, array(
'acl_f_answer_own_topics' => array('lang' => 'Kann eigene Themen beantworten', 'cat' => 'post')
));
ersetzen durch das:
Code: Alles auswählen
// Adding the permissions
$lang = array_merge($lang, array(
'acl_f_answer_own_topics' => array('lang' => 'Kann eigene Themen beantworten', 'cat' => 'post'),
'acl_f_view_own_topics' => array('lang' => 'Kann eigene Themen sehen', 'cat' => 'post')
));
Dann in der Viewforum das hier suchen:
Code: Alles auswählen
if (!$auth->acl_gets('f_list', 'f_read', $forum_id) || ($forum_data['forum_type'] == FORUM_LINK && $forum_data['forum_link'] && !$auth->acl_get('f_read', $forum_id)))
{
if ($user->data['user_id'] != ANONYMOUS)
{
trigger_error('SORRY_AUTH_READ');
}
login_box('', $user->lang['LOGIN_VIEWFORUM']);
}
austauschen gegen folgendes:
Code: Alles auswählen
if (!$auth->acl_gets('f_list', 'f_read', $forum_id) || ($forum_data['forum_type'] == FORUM_LINK && $forum_data['forum_link'] && !$auth->acl_get('f_read', $forum_id)))
{
if($auth->acl_get('f_view_own_topics', $forum_id))
{
$view_own_topics = true;
}
elseif ($user->data['user_id'] != ANONYMOUS)
{
trigger_error('SORRY_AUTH_READ');
}
else
{
login_box('', $user->lang['LOGIN_VIEWFORUM']);
}
}
else
{
$view_own_topics = false;
}
Dann etwas später das hier
Code: Alles auswählen
if ($sort_days)
{
$min_post_time = time() - ($sort_days * 86400);
$sql = 'SELECT COUNT(topic_id) AS num_topics
FROM ' . TOPICS_TABLE . "
WHERE forum_id = $forum_id
AND topic_type NOT IN (" . POST_ANNOUNCE . ', ' . POST_GLOBAL . ")
AND topic_last_post_time >= $min_post_time
" . (($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND topic_approved = 1');
ersetzen durch das hier:
Code: Alles auswählen
if ($sort_days)
{
$min_post_time = time() - ($sort_days * 86400);
if($view_own_topics)
{
$view_own_sql = ' AND topic_poster = '.$user->data['user_id'] . ' ';
}
$sql = 'SELECT COUNT(topic_id) AS num_topics
FROM ' . TOPICS_TABLE . "
WHERE forum_id = $forum_id
$view_own_sql
AND topic_type NOT IN (" . POST_ANNOUNCE . ', ' . POST_GLOBAL . ")
AND topic_last_post_time >= $min_post_time
" . (($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND topic_approved = 1');
wenig später vor
das hier einfügen:
Code: Alles auswählen
elseif($view_own_topics)
{
$sql = 'SELECT COUNT(topic_id) AS num_topics FROM ' . TOPICS_TABLE . "WHERE forum_id = $forum_id AND topic_type NOT IN (" . POST_ANNOUNCE . ', ' . POST_GLOBAL . ") AND topic_poster = ". $user->data['user_id'] . "" . (($auth->acl_get('m_approve', $forum_id)) ? '' : ' AND topic_approved = 1');
$result = $db->sql_query($sql);
$topics_count = (int) $db->sql_fetchfield('num_topics');
$db->sql_freeresult($result);
}
Als nächstes noch nach
Code: Alles auswählen
// SQL array for obtaining topics/stickies
$sql_array = array(
suchen und davor einfügen:
Code: Alles auswählen
if($view_own_topics)
{
$sql_where .= ' AND t.topic_poster = '.$user->data['user_id'];
}
Soweit sollten diese Änderungen erst einmal alle Themen die der User nicht sehen darf in der Themenübersicht ausblenden. (Testen wäre hier vielleicht schon mal angebracht).
Jetzt müssen noch die direkten Aufrufe unterbunden werden, da habe ich jetzt gerade allerdings keine Zeit zu da das ebenfalls recht umfangreich ist.
Ach ja: Die Berechtigung muss so eingestellt werden, dass das Lesen des Forums verboten ist, das neue Recht aber gegeben ist. Dann sollte man in der Themenübersicht des Forums nur die eigenen Themen sehen können aber weil es noch nicht fertig ist kein Zugriff darauf möglich sein.