Webmaster общности: Predpriemach.com | SearchEngines.bg

    Автоматично заключване на темите

    Автор: 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 -->

    Всичко баца както и целия мод тествал съм го !

    Успех !

    Оставете коментар