Здравейте,
сега ще ви покажа как може да направите всеки потребител да може да
заключва собствените си теми във форума, но веднъж заключени той няма
да може да ги отключва. ;)
Урока съм го правил върху форум PhpBB 2.0.23 и не знам дали ще е същото при по-стари версии.
Файлове за промяна: 2 - modcp.php и viewtopic.php
Ниво на трудност на урока: Лесно
Моля направете си резервни файлове на тези, които ще променяме за да няма после пострадали :)
Така нека започваме :)
Отваряте файла viewtopic.php, който се намира във главната директория на форума.
Намирате следният код:
$sql = "SELECT t.topic_id, t.topic_title, t.topic_status,
t.topic_replies, t.topic_time, t.topic_type, t.topic_vote,
t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id,
f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit,
f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate,
f.auth_vote, f.auth_attachments" . $count_sql . "
FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f" . $join_sql_table . "
WHERE $join_sql
AND f.forum_id = t.forum_id
$order_sql";
Той се намира на ред 150. Замествате го с:
$sql = "SELECT t.topic_id, t.topic_title, t.topic_poster,
t.topic_status, t.topic_replies, t.topic_time, t.topic_type,
t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status,
f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply,
f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce,
f.auth_pollcreate, f.auth_vote, f.auth_attachments" . $count_sql . "
FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f" . $join_sql_table . "
WHERE $join_sql
AND f.forum_id = t.forum_id
$order_sql";
След, което в същият файл на около 200 ред намирате следният ред:
$topic_time = $forum_topic_data['topic_time'];
Под него слагате:
$topic_poster = $forum_topic_data['topic_poster'];
Някъде към средата на файла към 605 ред трябва да намерите следните редове:
//
// Topic watch information
//
Точно над тях поставяте следният код:
elseif ($userdata['user_id'] == $topic_poster)
{
$topic_mod .= ( $forum_topic_data['topic_status'] == TOPIC_UNLOCKED ) ?
"<a href="modcp.$phpEx?" . POST_TOPIC_URL .
"=$topic_id&mode=lock&sid=" . $userdata['session_id'] .
'"><img src="' . $images['topic_mod_lock'] . '" alt="' .
$lang['Lock_topic'] . '" title="' . $lang['Lock_topic'] . '" border="0"
/></a>' : '';
}
С това сме готови с този файл. Запазвате го и отваряте файла modcp.php, който също се намира в главната директория на форума.
Намирате във файла следните редове. Намират се на ред 205.
//
// Start auth check
//
$is_auth = auth(AUTH_ALL, $forum_id, $userdata);
Точно под тях добавяте:
if ($mode == "lock") {
$query = mysql_query("SELECT topic_poster FROM ".TOPICS_TABLE." WHERE topic_id = '$topic_id'");
$row = mysql_fetch_array($query);
if ($userdata['user_id'] == $row['topic_poster']) { $lock_tema = TRUE; } else { $lock_tema = FALSE; }
} else { $lock_tema = FALSE; }
След, което един ред по-надолу трябва да видите това:
if ( !$is_auth['auth_mod'] )
{
message_die(GENERAL_MESSAGE, $lang['Not_Moderator'], $lang['Not_Authorised']);
}
Променяте го на:
if ( !$is_auth['auth_mod'] && !$lock_tema )
{
message_die(GENERAL_MESSAGE, $lang['Not_Moderator'], $lang['Not_Authorised']);
}
И с това урокът свърши.
Запазвате файла и сте готови.
Ако имате въпроси или проблеми пишете във форума или долу в коментарите.
Урокът е авторски и забранявам преписването му в други сайтове!