Отключение учета сообщений в форумах (флуд-форумы) 1.0.0

Добавляет возможность отключить учет сообщений в конкретных форумах (создать флуд-форумы).

  1. Exile
    Совместимость:
    не проверялся на совместимость
    Изменения в БД:
    требуются
    Автор:
    Gemini_13
    Общественное достояние:
    нет
    Описание: добавляет возможность отключить учет сообщений в конкретных форумах (создать флуд-форумы). Сообщения, созданные в таких разделах, не зачисляются в статистику пользователям.
    Инструкция по установке:
    PHP:
    # ---- [ SQL ] -------------------

    ALTER TABLE bb_forums ADD forum_postcount TINYINT(1) DEFAULT '1' NOT NULL;
    ALTER TABLE bb_posts ADD posts_count TINYINT(1) DEFAULT '1' NOT NULL;

    # ---- [ Открыть ] -------------------

    admin/admin_forums.php

    # ---- [ Найти ] -------------------

                    
    'S_STATUS_LIST' => $statuslist,

    # ---- [ Вставить после ] -------------------

                    
    'S_FORUM_POSTCOUNT' => ( isset($row) && isset($row['forum_postcount']) && ($row['forum_postcount'] == 0) ) ? '' 'checked="checked"',

    # ---- [ Найти ] -------------------

    $columns '

    # ---- [ Вставить до ] -------------------

                $forum_postcount = isset($_POST['
    forum_postcount']) ? intval($_POST['forum_postcount']) : 0;

    # ---- [ Найти ] -------------------

    $columns = '

    # ---- [ В строке найти ] -------------------

    ,  forum_display_order

    # ---- [ В строке добавить после ] -------------------

    forum_postcount

    # ---- [ Найти ] -------------------

    $values "

    # ---- [ В строке найти ] -------------------

    $forum_display_order

    # ---- [ В строке добавить после ] -------------------

    $forum_postcount

    # ---- [ Найти ] -------------------

                    
    $prune_days = $row['prune_days'];

    # ---- [ Вставить после ] -------------------

                    
    $forum_postcount = ($row['forum_postcount']) ? HTML_CHECKED : '';

    # ---- [ Найти ] -------------------

                    
    $prune_days = 0;

    # ---- [ Вставить после ] -------------------

                    
    $forum_postcount = '';

    # ---- [ Найти ] -------------------

                
    $forum_data = get_forum_data($forum_id);
                
    $old_cat_id = $forum_data['cat_id'];
                
    $forum_order = $forum_data['forum_order'];

    # ---- [ Вставить после ] -------------------

                
    $forum_postcount = '';

    # ---- [ Найти ] -------------------

                DB()->query("
                    
    UPDATE ". BB_FORUMS ." SET
                        forum_name          
    '$forum_name',
                        
    cat_id              $cat_id,

    # ---- [ Вставить до ] -------------------

                
    $forum_postcount = isset($_POST['forum_postcount']) ? intval($_POST['forum_postcount']) : 0;
                
    $forum_postcount_old DB()->query("
                    SELECT forum_postcount
                    FROM bb_forums
                    WHERE forum_id = 
    $forum_id
                "
    );

                
    // Update posts count options if changed forum_postcount
                
    if ($forum_postcount != $forum_postcount_old)
                {
                    
    DB()->query("
                        UPDATE "
    BB_POSTS ."
                        SET posts_count = 
    $forum_postcount
                        WHERE forum_id = 
    $forum_id
                    "
    );
                }

    # ---- [ Найти ] -------------------

                
    DB()->query("
                    UPDATE "
    BB_FORUMS ." SET
                        forum_name          = '
    $forum_name',
                        cat_id              = 
    $cat_id,

    # ---- [ В строке найти ] -------------------

                        prune_days    = 
    $prune_days,

    # ---- [ В строке добавить после ] -------------------

                        forum_postcount = 
    $forum_postcount,

    # ---- [ Найти ] -------------------

                    // Update topics
                    DB()->query("
                        
    UPDATE ". BB_TOPICS ." SET
                            forum_id 
    $to_id
                        WHERE forum_id 
    $from_id
                    
    ");

    # ---- [ Вставить после ] -------------------

                    // Update posts count options
                    DB()->query("
                        
    UPDATE ". BB_POSTS ." p
                        SET p
    .posts_count = (
                            
    SELECT f.forum_postcount
                            FROM 
    ". BB_FORUMS ." f
                            WHERE f
    .forum_id $to_id
                        
    )
                        
    WHERE p.forum_id $from_id
                    
    ");

    # ---- [ Открыть ] -------------------

    includes/functions_admin.php

    # ---- [ Найти ] -------------------

                            DB()->query("
                                    
    REPLACE INTO $tmp_user_posts
                                            SELECT user_id
    0
                                            FROM 
    ". BB_USERS ."
                                            
    WHERE user_id != ". GUEST_UID ."
                                                    
    $where_user_sql
                                    UNION
                                            SELECT poster_id
    COUNT(*)
                                            
    FROM ". BB_POSTS ."
                                            
    WHERE poster_id != ". GUEST_UID ."

    # ---- [ Вставить после ] -------------------

    AND posts_count != 0

    # ---- [ Найти ] -------------------

        
    DB()->query("
            INSERT INTO 
    $tmp_user_posts

    # ---- [ В строке найти ] -------------------

                    AND p.poster_id != "
    GUEST_UID ."

    # ---- [ В строке добавить после ] -------------------

                    AND p.posts_count != 0

    # ---- [ Найти ] -------------------

        // Update torrents
        DB()->query("
            
    UPDATE ". BB_BT_TORRENTS ." SET
                forum_id 
    $to_forum_id
            WHERE topic_id IN
    ($topic_csv)
        
    ");

    # ---- [ Вставить после ] -------------------

        // Update posts count options
        DB()->query("
            
    UPDATE ". BB_POSTS ." p
            SET p
    .posts_count = (
                
    SELECT f.forum_postcount
                FROM 
    ". BB_FORUMS ." f
                WHERE f
    .forum_id $to_forum_id
            
    )
            
    WHERE p.topic_id IN ($topic_csv)
        
    ");

    # ---- [ Открыть ] -------------------

    includes/functions_post.php

    # ---- [ Найти ] -------------------

        // Flood control
        
    $row = null;
        
    $where_sql = (IS_GUEST) ? "p.poster_ip '". USER_IP ."'" : "p.poster_id = {$userdata['user_id']}";
         
    # ---- [ Вставить до ] -------------------

        // Check post count option
        
    $sql = "SELECT forum_postcount AS forum_post_count FROM ". BB_FORUMS ." WHERE forum_id '" . $forum_id . "'";
        if (!
    $forum_posts_count = DB()->fetch_row($sql))
        {
            message_die(GENERAL_ERROR, 
    $forum_posts_count['forum_post_count']);
        }
        
    $posts_count = (intval($forum_posts_count['forum_post_count'])) ? intval($forum_posts_count['forum_post_count']) : 0;

    # ---- [ Найти ] -------------------

        
    $sql = ($mode != "editpost") ? "INSERT INTO " . BB_POSTS

    # ---- [ В строке найти ] -------------------

    post_time, poster_ip

    # ---- [ В строке добавить после ] -------------------

    , posts_count

    # ---- [ В строке найти ] -------------------

    $current_time, '"USER_IP ."'

    # ---- [ В строке добавить после ] -------------------

    $posts_count

    # ---- [ Найти ] -------------------

            
    $sql = "UPDATE " . BB_USERS . "

    # ---- [ Вставить до ] -------------------

            
    $sql "SELECT forum_postcount
                FROM " 
    BB_FORUMS "
                WHERE forum_id = 
    $forum_id
                AND forum_postcount = 0"
    ;
            if (!
    $result DB()->sql_query($sql))
            {
                
    message_die(GENERAL_ERROR'Error in deleting post'''__LINE____FILE__$sql);
            }
            if (
    $row DB()->sql_fetchrow($result))
            {
                return;
            }

    # ---- [ Открыть ] -------------------

    language/lang_russian/lang_admin.php

    # ---- [ Найти ] -------------------

    $lang['PRUNE_DAYS']

    # ---- [ Вставить до ] -------------------

    $lang['FORUM_POSTCOUNT'] = 'Считать сообщения пользователей';

    # ---- [ Открыть ] -------------------

    templates/admin/admin_forums.tpl

    # ---- [ Найти ] -------------------

        
    <tr>
            <
    td class="catBottom" colspan="2">
                <
    input type="submit" name="submit" value="{S_SUBMIT_VALUE}" class="mainoption" />
            </
    td>
        </
    tr>

    # ---- [ Вставить до ] -------------------

        
    <tr>
            <
    td class="row1">{L_FORUM_POSTCOUNT}</td>
            <
    td class="row2">{L_ENABLED}<input type="checkbox" name="forum_postcount" value="1" {S_FORUM_POSTCOUNT} /></td>
        </
    tr>

    # ---- [ Конец ] -------------------