Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » IkonBoard и другие форумы » Другие форумы » vBulletin - движок конференции. Установка.

Модерирует : Antuan, Dekker

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

ANDROID



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Название хака:  Предотвращение даблпостинга
Версия хака:  1.1
Автор хака:  Stefan 'Xenon' Kaeser (доработано AnTekapb'ем)
Релиз:  20 сентября 2005 года
Последнее обновление:  ----  
Описание: Этот хак предотвращает даблпостинг путём "склеивания" нового и последнего написанного постов темы, если их  
      написал один и тот же пользователь, и если последний пост не был написан не позднее указанного Вами срока.  
      Этот хак очень полезен для линейного вида просмотра тем.
      Если новое сообщение имеет какие-нибудь вложения, то они будут добавлены к старому посту
      С помощью изменения параметра timespan в массиве настроек $dp_settings, Вы сможете определить время, на  
      протяжение которого размещение новых постов будет считаться даблпостингом.
 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++  редактирование файла includes/functions_newpost.php ++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
найдите: (в функции build_new_post)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    $id = $dataman->save();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
замените это на:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ########### Хак предотвращения даблпостинга #########
    $dp_settings = array(
        'timespan' => 3600 * 24, //сколько секунд отсчитывать с последнего поста, чтобы защитать даблпостинг
        'spacer' => "\n\nДобавлено через ",
        'sec' => 0,
        'min' => 0,
        'hour' => 0,
        'timetonewpost' => 0,
        'strsec' => ' секунд',
        'strmin' => ' минут ',
        'strhour' => ' часов ',
    );
    
    $isdoublepost = false;
    $oldmsg = $post['message'];
 
    if ($type != 'thread'  
        AND $threadinfo['lastpost'] > TIMENOW - $dp_settings['timespan']  
        AND $threadinfo['lastpost'] < TIMENOW
        AND $threadinfo['lastposter'] == $vbulletin->userinfo['username'])
    {
        $doublepost = $vbulletin->db->query_first("
            SELECT post.*
            FROM " . TABLE_PREFIX . "post AS post
            LEFT JOIN " . TABLE_PREFIX . "deletionlog AS deletionlog ON(deletionlog.primaryid = post.postid AND type = 'post')
            WHERE threadid = $threadinfo[threadid]
                AND dateline > " . (TIMENOW - $dp_settings['timespan']) . "
                AND visible = 1 AND deletionlog.primaryid IS NULL
            ORDER BY dateline DESC
            LIMIT 1
        ");
        $dp_settings['hour'] = bcdiv((TIMENOW - $threadinfo['lastpost']) , 3600 , 0);
        $dp_settings['min'] = bcdiv((TIMENOW - $threadinfo['lastpost']) , 60 , 0) - 60 * $dp_settings['hour'];
        $dp_settings['sec'] = (TIMENOW - $threadinfo['lastpost']) - 60 * 60 * $dp_settings['hour'] - 60 * $dp_settings['min'];
        if ((bcdiv($dp_settings['hour'] , 100 , 2) - bcdiv($dp_settings['hour'] , 100 , 0)) * 100 > 10 AND (bcdiv($dp_settings['hour'] , 100 , 2) - bcdiv($dp_settings['hour'] , 100 , 0)) * 100 < 20)
        {
            $dp_settings['strhour'] = ' часов ';
        }
        elseif (bcdiv($dp_settings['hour'] , 10 , 1) * 10 - bcdiv($dp_settings['hour'] , 100 , 1) * 100 == 1)
        {
            $dp_settings['strhour'] = ' час ';
        }
        elseif (bcdiv($dp_settings['hour'] , 10 , 1) * 10 - bcdiv($dp_settings['hour'] , 100 , 1) * 100 > 1 AND bcdiv($dp_settings['hour'] , 10 , 1) * 10 - bcdiv($dp_settings['hour'] , 100 , 1) * 100 < 5)
        {
            $dp_settings['strhour'] = ' часа ';
        }
        else
        {
            $dp_settings['strhour'] = ' часов ';
        }
        if ((bcdiv($dp_settings['min'] , 100 , 2) - bcdiv($dp_settings['min'] , 100 , 0)) * 100 > 10 AND (bcdiv($dp_settings['min'] , 100 , 2) - bcdiv($dp_settings['min'] , 100 , 0)) * 100 < 20)
        {
            $dp_settings['strmin'] = ' минут ';
        }
        elseif (bcdiv($dp_settings['min'] , 10 , 1) * 10 - bcdiv($dp_settings['min'] , 100 , 1) * 100 == 1)
        {
            $dp_settings['strmin'] = ' минуту ';
        }
        elseif (bcdiv($dp_settings['min'] , 10 , 1) * 10 - bcdiv($dp_settings['min'] , 100 , 1) * 100 > 1 AND bcdiv($dp_settings['min'] , 10 , 1) * 10 - bcdiv($dp_settings['min'] , 100 , 1) * 100 < 5)
        {
            $dp_settings['strmin'] = ' минуты ';
        }
        else
        {
            $dp_settings['strmin'] = ' минут ';
        }
        if ((bcdiv($dp_settings['sec'] , 100 , 2) - bcdiv($dp_settings['sec'] , 100 , 0)) * 100 > 10 AND (bcdiv($dp_settings['sec'] , 100 , 2) - bcdiv($dp_settings['sec'] , 100 , 0)) * 100 < 20)
        {
            $dp_settings['strsec'] = ' секунд ';
        }
        elseif (bcdiv($dp_settings['sec'] , 10 , 1) * 10 - bcdiv($dp_settings['sec'] , 100 , 1) * 100 == 1)
        {
            $dp_settings['strsec'] = ' секунду ';
        }
        elseif (bcdiv($dp_settings['sec'] , 10 , 1) * 10 - bcdiv($dp_settings['sec'] , 100 , 1) * 100 > 1 AND bcdiv($dp_settings['sec'] , 10 , 1) * 10 - bcdiv($dp_settings['sec'] , 100 , 1) * 100 < 5)
        {
            $dp_settings['strsec'] = ' секунды ';
        }
        else
        {
            $dp_settings['strsec'] = ' секунд ';
        }
        if ($dp_settings['hour'] <> 0)
        {
            $dp_settings['spacer'] = $dp_settings['spacer'] . $dp_settings['hour'] . $dp_settings['strhour'];
        }
        if ($dp_settings['min'] <> 0 or $dp_settings['hour'] <> 0)
        {
            $dp_settings['spacer'] = $dp_settings['spacer'] . $dp_settings['min'] . $dp_settings['strmin'];
        }
        $dp_settings['spacer'] = "" . $dp_settings['spacer'] . $dp_settings['sec'] . $dp_settings['strsec'] . "\n";
 
        if ($doublepost['userid'] == $vbulletin->userinfo['userid'])
        {
            $dataman2 =& datamanager_init('Post', $vbulletin, ERRTYPE_ARRAY, 'threadpost');
            $dataman2->set_existing($doublepost);
            $post['message'] = $doublepost['pagetext'] . $dp_settings['spacer'] . $post['message'];
            
            $dataman2->set_info('preview', $post['preview']);
            $dataman2->set_info('parseurl', $post['parseurl']);
            $dataman2->set_info('posthash', $post['posthash']);
            $dataman2->set_info('forum', $foruminfo);
            $dataman2->set_info('thread', $threadinfo);
 
            $dataman2->setr('showsignature', $post['signature']);
            $dataman2->setr('allowsmilie', $post['enablesmilies']);
    
            $dataman2->setr('pagetext', $post['message']);
            $dataman2->setr('iconid', $post['iconid']);
    
            $dataman2->pre_save();
            if (!$dataman2->errors)
            {
                $isdoublepost = true;
                unset($dataman);
                $dataman =& $dataman2;
                $post['postid'] = $doublepost['postid'];
            }
            else
            {
                $isdoublepost = false;
            }
        }
    }
    
    if ($isdoublepost)
    {
        $id = $doublepost['postid'];
        $dataman->save();
    }
    else
    {
        $post['message'] = $oldmsg;
        $id = $dataman->save();
    }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Это всё, мы изменили всего 1 файл


----------
О нас помнят, пока мы мешаем другим...

Всего записей: 1853 | Зарегистр. 02-11-2003 | Отправлено: 19:27 08-05-2006 | Исправлено: ANDROID, 19:30 08-05-2006
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Другие форумы » vBulletin - движок конференции. Установка.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru