Автоматично заключване на темите
Автор: djvato
Здравейте … един от най полезните модове за phpbb този мод гласите след колко време да се заключва дадена тема … това е хубаво при големите форуми когато модераторите имат прекалено много работа … е с този мод работата им става минимална Winking сега няма да заключи ако е нещо обиди и т.н. в смисъл тя ще се заключи но няма да е веднага най редовна тема след изчерпането и и тя се заключва автоматично … да неси помислите , че phpbb има такава опция , то има но тя е за зачистване да се трият … а този мод ги заключва да несе обеснявам много много ми да започваме
първо трябва да направите един файл :
auto_lock.php
<?php
/* Modified version of prune.php by Sune Trudslev (www.tanis.dk) */
if ( !defined('IN_PHPBB') )
{
die("Hacking attempt");
}
require($phpbb_root_path . 'includes/functions_search.'.$phpEx);
/* Optimized by Thoul, Sunday, July 03, 2005 */
function lock($forum_id, $lock_date, $lock_all = false)
{
global $db;
$lock_all = ($lock_all) ? '' : 'AND t.topic_vote = 0 AND t.topic_type <> ' . POST_ANNOUNCE;
//
// Those without polls and announcements ... unless told otherwise!
//
$sql = "SELECT t.topic_id
FROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t
WHERE t.forum_id = $forum_id
$lock_all
AND t.topic_moved_id = 0
AND p.post_id = t.topic_last_post_id
UNION
SELECT t.topic_id
FROM " . TOPICS_TABLE . " t
WHERE t.forum_id = $forum_id
$lock_all
AND t.topic_moved_id = 0
AND t.topic_last_post_id = 0";
if ( $lock_date != '' )
{
$sql .= " AND p.post_time < $lock_date";
}
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain list of topics to lock', '', __LINE__, __FILE__, $sql);
}
$sql_topics = '';
while( $row = $db->sql_fetchrow($result) )
{
$sql_topics .= ( ( $sql_topics != '' ) ? ', ' : '' ) . $row['topic_id'];
}
$db->sql_freeresult($result);
if( $sql_topics != '' )
{
$sql = "UPDATE " . TOPICS_TABLE . "
SET topic_status = " . TOPIC_LOCKED . "
WHERE topic_id IN ($sql_topics)";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not lock topics during locking', '', __LINE__, __FILE__, $sql);
}
$locked_topics = $db->sql_affectedrows();
return array ('topics' => $locked_topics);
}
return array('topics' => 0);
}
//
// Function auto_lock(), this function will read the configuration data from
// the auto_lock table and call the lock function with the necessary info.
//
function auto_lock($forum_id = 0)
{
global $db, $lang;
$sql = "SELECT *
FROM " . AUTO_LOCK_TABLE . "
WHERE forum_id = $forum_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not read auto_lock table', '', __LINE__, __FILE__, $sql);
}
if ( $row = $db->sql_fetchrow($result) )
{
if ( $row['auto_lock_freq'] && $row['auto_lock_days'] )
{
$auto_lock_date = time() - ( $row['auto_lock_days'] * 86400 );
$next_auto_lock = time() + ( $row['auto_lock_freq'] * 86400 );
lock($forum_id, $auto_lock_date);
$sql = "UPDATE " . FORUMS_TABLE . "
SET auto_lock_next = $next_auto_lock
WHERE forum_id = $forum_id";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update forum table', '', __LINE__, __FILE__, $sql);
}
}
}
return;
}
?>след направата го качвате в :
форумави/inludes/
и сега нека започнем със самия урок :
#
#-----[ SQL ]------------------------------------------
#
#
CREATE TABLE phpbb_forum_auto_lock (
auto_lock_id mediumint(8) unsigned NOT NULL auto_increment,
forum_id smallint(5) unsigned NOT NULL default '0',
auto_lock_days smallint(5) unsigned NOT NULL default '0',
auto_lock_freq smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY (auto_lock_id),
KEY forum_id (forum_id)
) TYPE=MyISAM;
ALTER TABLE phpbb_forums
ADD auto_lock_enable TINYINT( 1 ) NOT NULL DEFAULT '0',
ADD auto_lock_next INT( 11 );
INSERT INTO phpbb_config ( config_name , config_value ) VALUES ('auto_lock_enable', '0');
#
#-----[ отваряте ]------------------------------------------
#
viewforum.php
#
#-----[ намирате ]------------------------------------------
#
//
// End of forum prune
//
#
#-----[ след него добавяте ]------------------------------------------
#
// Auto Lock MOD Begin
if ( $is_auth['auth_mod'] && $board_config['auto_lock_enable'] )
{
if ( $forum_row['auto_lock_next'] < time() && $forum_row['auto_lock_enable'] )
{
include($phpbb_root_path . 'includes/auto_lock.'.$phpEx);
require($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
auto_lock($forum_id);
}
}
// Auto Lock MOD End
#
#-----[ отваряте ]------------------------------------------
#
admin/admin_board.php
#
#-----[ намирате ]------------------------------------------
#
$prune_no = ( !$new['prune_enable'] ) ? "checked=\"checked\"" : "";
#
#-----[ след него добавяте ]------------------------------------------
#
// Auto Lock MOD Begin
$auto_lock_yes = ( $new['auto_lock_enable'] ) ? "checked=\"checked\"" : "";
$auto_lock_no = ( !$new['auto_lock_enable'] ) ? "checked=\"checked\"" : "";
// Auto Lock MOD End
#
#-----[ намирате ]------------------------------------------
#
"L_ENABLE_PRUNE" => $lang['Enable_prune'],
#
#-----[ след него добавяте ]------------------------------------------
#
// Auto Lock MOD Begin
"L_ENABLE_AUTO_LOCK" => $lang['Enable_auto_lock'],
// Auto Lock MOD End
#
#-----[ намирате ]------------------------------------------
#
"PRUNE_NO" => $prune_no,
#
#-----[ след него добавяте ]------------------------------------------
#
// Auto Lock MOD Begin
"AUTO_LOCK_YES" => $auto_lock_yes,
"AUTO_LOCK_NO" => $auto_lock_no,
// Auto Lock MOD End
#
#-----[ отваряте ]------------------------------------------
#
admin/admin_forums.php
#
#-----[ намирате ]------------------------------------------
#
else
{
$prune_enabled = '';
}
#
#-----[ след него добавяте ]------------------------------------------
#
// Auto Lock MOD Begin
if( $row['auto_lock_enable'] )
{
$auto_lock_enabled = "checked=\"checked\"";
$sql = "SELECT *
FROM " . AUTO_LOCK_TABLE . "
WHERE forum_id = $forum_id";
if(!$pr_result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, "Auto-Lock: Couldn't read auto_lock table.", __LINE__, __FILE__);
}
$pr_row = $db->sql_fetchrow($pr_result);
}
else
{
$auto_lock_enabled = '';
}
// Auto Lock MOD End
#
#-----[ намирате ]------------------------------------------
#
$prune_enabled = '';
#
#-----[ след него добавяте ]------------------------------------------
#
// Auto Lock MOD Begin
$auto_lock_enabled = '';
// Auto Lock MOD End
#
#-----[ намирате ]------------------------------------------
#
'S_PRUNE_ENABLED' => $prune_enabled,
#
#-----[ след него добавяте ]------------------------------------------
#
// Auto Lock MOD Begin
'S_AUTO_LOCK_ENABLED' => $auto_lock_enabled,
// Auto Lock MOD End
#
#-----[ намирате ]------------------------------------------
#
'L_DAYS' => $lang['Days'],
#
#-----[ след него добавяте]------------------------------------------
#
// Auto Lock MOD Begin
'L_AUTO_LOCK' => $lang['Auto_lock'],
'L_AUTO_LOCK_DAYS' => $lang['auto_lock_days'],
'L_AUTO_LOCK_FREQ' => $lang['auto_lock_freq'],
// Auto Lock MOD End
#
#-----[ намирате ]------------------------------------------
#
'PRUNE_FREQ' => ( isset($pr_row['prune_freq']) ) ? $pr_row['prune_freq'] : 1,
#
#-----[ след него добавяте ]------------------------------------------
#
// Auto Lock MOD Begin
'AUTO_LOCK_DAYS' => ( isset($pr_row['auto_lock_days']) ) ? $pr_row['auto_lock_days'] : 7,
'AUTO_LOCK_FREQ' => ( isset($pr_row['auto_lock_freq']) ) ? $pr_row['auto_lock_freq'] : 1,
// Auto Lock MOD End
#
#-----[ намирате ]------------------------------------------
#
$sql = "INSERT INTO " . FORUMS_TABLE . " (forum_id, forum_name, cat_id, forum_desc, forum_order, forum_status, prune_enable
#
#-----[ на същия ред ще намерите ]------------------------------------------
#
, prune_enable
#
#-----[ след него добавяте ]------------------------------------------
#
, auto_lock_enable
#
#-----[ намирате ]------------------------------------------
#
VALUES ('" . $next_id . "', '" . str_replace("\'", "''", $HTTP_POST_VARS['forumname']) .
#
#-----[ на същия ред ще намерите ]------------------------------------------
#
", " . intval($HTTP_POST_VARS['prune_enable']) .
#
#-----[ след него добавяте ]------------------------------------------
#
", " . intval($HTTP_POST_VARS['auto_lock_enable']) .
#
#-----[ намирате ]------------------------------------------
#
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't insert row in prune table", "", __LINE__, __FILE__, $sql);
}
}
#
#-----[ след него добавяте ]------------------------------------------
#
// Auto Lock MOD Begin
if( $HTTP_POST_VARS['auto_lock_enable'] )
{
if( $HTTP_POST_VARS['auto_lock_days'] == "" || $HTTP_POST_VARS['auto_lock_freq'] == "")
{
message_die(GENERAL_MESSAGE, $lang['Set_auto_lock_data']);
}
$sql = "INSERT INTO " . AUTO_LOCK_TABLE . " (forum_id, auto_lock_days, auto_lock_freq)
VALUES('" . $next_id . "', " . intval($HTTP_POST_VARS['auto_lock_days']) . ", " . intval($HTTP_POST_VARS['auto_lock_freq']) . ")";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't insert row in auto lock table", "", __LINE__, __FILE__, $sql);
}
}
// Auto Lock MOD End
#
#-----[ намирате ]------------------------------------------
#
$HTTP_POST_VARS['prune_enable'] = 0;
}
}
#
#-----[ след него добавяте ]------------------------------------------
#
// Auto Lock MOD Begin
if( isset($HTTP_POST_VARS['auto_lock_enable']))
{
if( $HTTP_POST_VARS['auto_lock_enable'] != 1 )
{
$HTTP_POST_VARS['auto_lock_enable'] = 0;
}
}
// Auto Lock MOD End
#
#-----[ намирате ]------------------------------------------
#
SET forum_name = '" . str_replace("\'", "''", $HTTP_POST_VARS['forumname']) . "', cat_id = " . intval($HTTP_POST_VARS[POST_CAT_URL]) . ", forum_desc = '" . str_replace("\'", "''", $HTTP_POST_VARS['forumdesc']) . "', forum_status = " . intval($HTTP_POST_VARS['forumstatus']) . ", prune_enable = " . intval($HTTP_POST_VARS['prune_enable'])
#
#-----[ на същия ред ще намерите ]------------------------------------------
#
", prune_enable = " . intval($HTTP_POST_VARS['prune_enable'])
#
#-----[ след него добавяте ]------------------------------------------
#
. ", auto_lock_enable = " . intval($HTTP_POST_VARS['auto_lock_enable'])
#
#-----[ намирате ]------------------------------------------
#
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't Update Forum Prune Information","",__LINE__, __FILE__, $sql);
}
}
#
#-----[ след него добавяте ]------------------------------------------
#
// Auto Lock MOD Begin
if( $HTTP_POST_VARS['auto_lock_enable'] == 1 )
{
if( $HTTP_POST_VARS['auto_lock_days'] == "" || $HTTP_POST_VARS['auto_lock_freq'] == "" )
{
message_die(GENERAL_MESSAGE, $lang['Set_auto_lock_data']);
}
$sql = "SELECT *
FROM " . AUTO_LOCK_TABLE . "
WHERE forum_id = " . intval($HTTP_POST_VARS[POST_FORUM_URL]);
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't get forum Auto Lock Information","",__LINE__, __FILE__, $sql);
}
if( $db->sql_numrows($result) > 0 )
{
$sql = "UPDATE " . AUTO_LOCK_TABLE . "
SET auto_lock_days = " . intval($HTTP_POST_VARS['auto_lock_days']) . ", auto_lock_freq = " . intval($HTTP_POST_VARS['auto_lock_freq']) . "
WHERE forum_id = " . intval($HTTP_POST_VARS[POST_FORUM_URL]);
}
else
{
$sql = "INSERT INTO " . AUTO_LOCK_TABLE . " (forum_id, auto_lock_days, auto_lock_freq)
VALUES(" . intval($HTTP_POST_VARS[POST_FORUM_URL]) . ", " . intval($HTTP_POST_VARS['auto_lock_days']) . ", " . intval($HTTP_POST_VARS['auto_lock_freq']) . ")";
}
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't Update Forum Auto Lock Information","",__LINE__, __FILE__, $sql);
}
}
// Auto Lock MOD End
#
#-----[ отваряте ]------------------------------------------
#
includes/constants.php
#
#-----[ намирате ]------------------------------------------
#
?>
#
#-----[ преди него добавяте ]-----------------------------------------
#
// Auto Lock MOD Begin
define('AUTO_LOCK_TABLE', $table_prefix.'forum_auto_lock');
// Auto Lock MOD End
#
#-----[ отваряте ]------------------------------------------
#
language/lang_english/lang_admin.php
#
#-----[ намирате ]------------------------------------------
#
//
// That's all Folks!
// -------------------------------------------------
#
#-----[ преди него добавяте ]-----------------------------------------
#
// Auto Lock MOD Begin
$lang['Auto_lock'] = 'Auto-locking';
$lang['auto_lock_freq'] = ' Check for topic age every ';
$lang['auto_lock_days'] = ' Заключете темите, които не са били поставени за да паднат ';
$lang['Set_auto_lock_data'] = 'You have turned on auto-lock for this forum but did not set a frequency or number of days to lock. Please go back and do so.';
$lang['Enable_auto_lock'] = 'Enable Forum Auto-Locking';
// Auto Lock MOD End
#
#-----[ отваряте ]------------------------------------------
#
templates/subSilver/admin/board_config_body.tpl
#
#-----[ намирате ]------------------------------------------
#
<tr>
<td class="row1">{L_ENABLE_PRUNE}</td>
<td class="row2"><input type="radio" name="prune_enable" value="1" {PRUNE_YES} /> {L_YES} <input type="radio" name="prune_enable" value="0" {PRUNE_NO} /> {L_NO}</td>
</tr>
#
#-----[ след него добавяте ]------------------------------------------
#
<!-- Auto Lock MOD Begin -->
<tr>
<td class="row1">{L_ENABLE_AUTO_LOCK}</td>
<td class="row2"><input type="radio" name="auto_lock_enable" value="1" {AUTO_LOCK_YES} /> {L_YES} <input type="radio" name="auto_lock_enable" value="0" {AUTO_LOCK_NO} /> {L_NO}</td>
</tr>
<!-- Auto Lock MOD End -->
#
#-----[ отваряте ]------------------------------------------
#
templates/subSilver/admin/forum_edit_body.tpl
#
#-----[ намирате ]------------------------------------------
#
</tr>
</table></td>
</tr>
#
#-----[ след него добавяте ]------------------------------------------
#
<!-- Auto Lock MOD Begin -->
<tr>
<td class="row1">{L_AUTO_LOCK}</td>
<td class="row2"><table cellspacing="0" cellpadding="1" border="0">
<tr>
<td align="right" valign="middle">{L_ENABLED}</td>
<td align="left" valign="middle"><input type="checkbox" name="auto_lock_enable" value="1" {S_AUTO_LOCK_ENABLED} /></td>
</tr>
<tr>
<td align="right" valign="middle">{L_AUTO_LOCK_DAYS}</td>
<td align="left" valign="middle"> <input type="text" name="auto_lock_days" value="{AUTO_LOCK_DAYS}" size="5" class="post" /> {L_DAYS}</td>
</tr>
<tr>
<td align="right" valign="middle">{L_AUTO_LOCK_FREQ}</td>
<td align="left" valign="middle"> <input type="text" name="auto_lock_freq" value="{AUTO_LOCK_FREQ}" size="5" class="post" /> {L_DAYS}</td>
</tr>
</table></td>
</tr>
<!-- Auto Lock MOD End -->Всичко баца както и целия мод тествал съм го !
Успех !


