Мод, който позволява на потребителите да заключват темите си.
Здравейте,

сега ще ви покажа как може да направите всеки потребител да може да заключва собствените си теми във форума, но веднъж заключени той няма да може да ги отключва. ;)
Урока съм го правил върху форум 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']);
}



И с това урокът свърши.
Запазвате файла и сте готови.
Ако имате въпроси или проблеми пишете във форума или долу в коментарите.


Урокът е авторски и забранявам преписването му в други сайтове!

/ Трябва да сте регистриран за да напишете коментар /
От: prima08
13:20 11-11-2009
Урока е хубав но при мен има проблем.След като го направих вече не мога да заключвам теми.Дори от администраторския юсър не мога да заключвам, места или трия теми.Можеш ли да ми помогнеш?
1