Склеивание сообщений

killer

Пользователь
Gemini_13, Перепроверил все файлы, вставлял все по инструкции, за исключением posts.php, там поставил где ты говорил. Склейка по прежнему не работает, обратил внимание что в админке "Интервал склеивания сообщений" пустая графа, и даже если указать число, оно не сохраняется.
Незнаю куда рыть.
Интервал сохраняется только не отображается.
 

Alexander.S

Пользователь
Это что же получается, под каждую новую ревизию инструкции переделывать? :D

Было бы не плохо просто на просто включить это в основной двиг, хоть опционально и включить и потом сразу на лету править.
 

Lynx

Пользователь
posts.php на TorrentPier_II_R400_(Stable):

Найти:
Код:
case 'add':
        if (!isset($this->request['topic_id']))
        {
            $this->ajax_die('empty topic_id');
        }

После добавить:
Код:
$topic_id = (int) $this->request['topic_id'];
        $t_data = DB()->fetch_row("SELECT t.*, f.*
            FROM ". BB_TOPICS ." t, ". BB_FORUMS ." f
            WHERE t.topic_id = $topic_id
                AND f.forum_id = t.forum_id
            LIMIT 1");
            $t_data['points_disabled'] = $userdata['user_id'];
            $t_data['admin_allow_points'] = $userdata['admin_allow_points'];
        if(!$t_data) $this->ajax_die($lang['TOPIC_POST_NOT_EXIST']);

После вставить:

Код:
        if ($userdata['user_id'] != ANONYMOUS )
        {
            $poster_id = $userdata['user_id'];
 
            $sql = "SELECT post_id, poster_id, post_time, MAX(post_time) FROM " . BB_POSTS . " WHERE topic_id = $topic_id GROUP BY post_time ORDER BY post_time DESC LIMIT 1";
 
            if ( !($result = DB()->sql_query($sql)) )
            {
                message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql);
            }
            $post_id_last_row = DB()->sql_fetchrow($result);
            $post_data['poster_post'] = ($post_id_last_row['poster_id'] == $userdata['user_id']);
            $post_id = $post_id_last_row['post_id'];
            $current_time = time();
            $difference_time = $current_time - $post_id_last_row['post_time'];
            $hours = floor($difference_time/60/60);
            $minutes = floor($difference_time/60%60);
            $seconds = $difference_time%60;
            $separator = '[br][size=9][color=#999999]' . $lang['ADDED_LATER'] . delta_time($post_id_last_row['post_time'], TIMENOW, 'seconds'). ':[/color][/size][br]';
 
            if ($post_id_last_row['poster_id'] == $poster_id && $post_data['poster_post'] && $t_data['topic_replies'] >= 1 && ( $difference_time < ( $bb_cfg['join_interval'] * 3600 ) ) )
            {
                $sql = "SELECT post_text FROM " . BB_POSTS_TEXT . " WHERE post_id = $post_id";
                if ( !($result = DB()->sql_query($sql)) )
                    {
                        message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql);
                    }
                $last_message_row = DB()->sql_fetchrow($result);
 
                // i don't know much about parsing the message, so it may well be that, there are some wrongs, anyway all seems to work fine
                $last_message = str_replace(':', '', $last_message_row['post_text']);
                $last_message = preg_replace('/:[0-9a-z:]+]/si', ']', $last_message);
                $last_message = addslashes($last_message);
 
            }
        }

Так работает.
 

Lange

Легенда
Так то работает, а вот в админке не поймёшь порой сколько выставил, ибо там цифра не сохраняется, а это не есть комильфо...
 

Lynx

Пользователь
цифра не сохраняется
В админке не отображается, но сохраняется в базе. Таблица bb_config: join_interval 18

Возьми шаблог админки проверь, тут рабочий вариант (у меня так стоит): http://torrentpier.com/threads/beta-Склеивание-сообщений.1136/page-3#post-14485
Я по этому варианту и ставил. Работает. Но выставлять значение приходится в базе.
 
G

Gemini_13

Гость
Lynx, ну так пересмотри шаблон, не верно указана переменная и всё будет работать. скинь куски с admin_board.php и admin_board.tpl
 

Lynx

Пользователь
вот так в мануале:
admin\admin_board.php

Код:
#
#-----[ FIND ]------------------------------------------
#
 
'FLOOD_INTERVAL' => $new['flood_interval'],
 
#
#-----[ AFTER, ADD ]------------------------------------------
#
'JOIN_INTERVAL' => $new['join_interval'],

templates\admin\admin_board.tpl

Код:
#
#-----[ FIND ]------------------------------------------
#
 
<!-- ENDIF / CONFIG_MODS -->
 
#
#-----[ BEFORE, ADD ]------------------------------------------
#
 
<tr class="row3 med">
    <td class="bold tCenter" colspan="2">{L_JOIN}</td>
</tr>
<tr>
    <td><h4>{L_JOIN_INTERVAL}</h4><h6>{L_JOIN_INTERVAL_EXPLAIN}</h6></td>
    <td><input class="post" type="text" size="3" maxlength="4" name="join_interval" value="{JOIN_INTERVAL}" /></td>
</tr>

вот так у меня:
Код:
            'FLOOD_INTERVAL' => $new['flood_interval'],
            'JOIN_INTERVAL' => $new['join_interval'],
            'TOPICS_PER_PAGE' => $new['topics_per_page'],

Код:
<tr class="row3 med">
    <td class="bold tCenter" colspan="2">{L_JOIN}</td>
</tr>
<tr>
    <td><h4>{L_JOIN_INTERVAL}</h4><h6>{L_JOIN_INTERVAL_EXPLAIN}</h6></td>
    <td><input class="post" type="text" size="3" maxlength="4" name="join_interval" value="{JOIN_INTERVAL}" /></td>
</tr>
<!-- ENDIF / CONFIG_MODS -->
 
Сверху