Центр пользователя  |  Ваши сообщения  |  FAQ
Форум поддержки phpBB » phpBB 3.0.x » Модификация phpBB 3.0.x » Моды каталога

Cleantalk Spam protect

Обсуждение и поддержка модов, размещённых в каталоге
Пожалуйста, помните, что существуют: Поиск, Правила форума
Возможно, ответ на Ваш вопрос уже имеется: Документация, Статьи, Накопленный опыт
Полезные материалы по этой теме: Инструкция по установке модов

Сообщение 02 окт 2013, 14:55

Да и еще в новом релизе замените
Код: выделить все
      // Begin: cleantalk.ru moderation
      $user->add_lang(array('acp/users'));
      $user->add_lang('mods/info_acp_cleantalk');
      $user_row = $member;

      // You can't delete the founder
      if ($action === 'user_del' && $user_row['user_type'] != USER_FOUNDER)
      {
         $delete_type = 'remove'; // Remove all posts

         if (!$auth->acl_get('a_userdel'))
         {
            trigger_error($user->lang['NO_AUTH_OPERATION']);
         }

         // Check if the user wants to remove himself or the guest user account
         if ($user_id == ANONYMOUS)
         {
            trigger_error($user->lang['CANNOT_REMOVE_ANONYMOUS']);
         }
         if ($user_id == $user->data['user_id'])
         {
            trigger_error($user->lang['CANNOT_REMOVE_YOURSELF']);
         }

         if (confirm_box(true))
         {
            if (!function_exists('user_delete'))
            {
               include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
            }

            user_delete($delete_type, $user_id, $user_row['username']);

            add_log('admin', 'LOG_USER_DELETED', $user_row['username']);

            $redirect_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", null, true, $user->session_id);

            meta_refresh(5, $redirect_url);

            trigger_error($user->lang['USER_DELETED'] . '<br /><br />' . sprintf($user->lang['CT_RETURN_MEMBERLIST'], $redirect_url));
         }
         else
         {
            confirm_box(false, sprintf($user->lang['CT_CONFIRM_DELETE_USER'], $user_row['username']), build_hidden_fields(array(
               'u'            => $user_id,
               'mode'         => $mode,
               'action'      => $action,
               'delete_type'   => $delete_type))
            );
         }
      }
      // End: cleantalk.ru moderation
на
Код: выделить все
      // Begin: cleantalk.ru moderation
      $user->add_lang(array('acp/users'));
      $user->add_lang('mods/info_acp_cleantalk');

      // You can't delete the founder
      if ($action === 'user_del' && $member['user_type'] != USER_FOUNDER && $auth->acl_get('a_userdel') && !in_array($user_id, array(ANONYMOUS,$user->data['user_id'])))
      {
         $delete_type = 'remove'; // Remove all posts

         if (confirm_box(true))
         {
            if (!function_exists('user_delete'))
            {
               include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
            }

            user_delete($delete_type, $user_id, $member['username']);

            add_log('admin', 'LOG_USER_DELETED', $member['username']);

            $redirect_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", null, true, $user->session_id);

            meta_refresh(5, $redirect_url);

            trigger_error($user->lang['USER_DELETED'] . '<br /><br />' . sprintf($user->lang['CT_RETURN_MEMBERLIST'], $redirect_url));
         }
         else
         {
            confirm_box(false, sprintf($user->lang['CT_CONFIRM_DELETE_USER'], $member['username']), build_hidden_fields(array(
               'u'            => $user_id,
               'mode'         => $mode,
               'action'      => $action,
               'delete_type'   => $delete_type))
            );
         }
      }
      // End: cleantalk.ru moderation
и
Код: выделить все
         // Begin: cleantalk.ru moderation
         'U_USER_DEL'         => ($auth->acl_get('a_user')) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;action=user_del&amp;u=' . $user_id, true, $user->session_id) : '',
         // End: cleantalk.ru moderation
на код
Код: выделить все
         // Begin: cleantalk.ru moderation
         'U_USER_DEL'         => ($member['user_type'] != USER_FOUNDER && $auth->acl_get('a_userdel') && !in_array($user_id, array(ANONYMOUS,$user->data['user_id']))) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;action=user_del&amp;u=' . $user_id, true, $user->session_id) : '',
         // End: cleantalk.ru moderation
Аватар пользователя
serjan
Разработчик модов
 
Сообщений: 480
Зарегистрирован:
12 янв 2009, 19:18
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.

Сообщение 02 окт 2013, 15:35

Ok!
Аватар пользователя
shagimuratov
Активный участник
 
Сообщений: 92
Зарегистрирован:
12 май 2012, 09:51
Откуда:
Челябинск
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.

Сообщение 08 окт 2013, 16:09

Прикладываю бету следующего релиза.
Вложения
cleantalk_spam_protect_v_3.7.17.zip
(224.81 KiB) Скачиваний: 199
Аватар пользователя
shagimuratov
Активный участник
 
Сообщений: 92
Зарегистрирован:
12 май 2012, 09:51
Откуда:
Челябинск
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.

Сообщение 09 окт 2013, 13:20

Изменения следующие:

1. API переключено на версию 2.0.
2. Сделаны множественные правки/оптимизации кода в файлах posting.php, memberlist.php.
3. Удалена ссылка на сайт проекта из футера форума.
4. Мод протестирован на совместимость с phpBB 3.0.12.
Аватар пользователя
shagimuratov
Активный участник
 
Сообщений: 92
Зарегистрирован:
12 май 2012, 09:51
Откуда:
Челябинск
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.

Сообщение 21 окт 2013, 15:21

В новой инструкцие в фрагмете
Код: выделить все
         if ($topic_id == 0)
         { // First post in topic
                $sql    = 'SELECT p.post_text
                                FROM ' . TOPICS_TABLE . ' t
                                    JOIN ' . POSTS_TABLE . ' p ON (p.post_id = t.topic_first_post_id)
                                WHERE  p.post_approved = 1 and t.forum_id = ' . (int) $forum_id . '
                                ORDER BY p.post_time desc';

            $result    = $db->sql_query_limit($sql, $config['ct_post_count']);
            while ($row    = $db->sql_fetchrow($result))
            {
               $ct_example['body'] .= "<br />" . $row['post_text'];
            }
            $db->sql_freeresult($result);

            $message = $post_data['post_subject'] . " <br /> " . $message;
                var_dump($message);
         }
вот это
Код: выделить все
var_dump($message);
явно лишнее.
Аватар пользователя
serjan
Разработчик модов
 
Сообщений: 480
Зарегистрирован:
12 янв 2009, 19:18
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.

Сообщение 21 окт 2013, 16:21

Спасибо, исправил!
Вложения
cleantalk_spam_protect_v_3.7.17.zip
(222.21 KiB) Скачиваний: 215
Аватар пользователя
shagimuratov
Активный участник
 
Сообщений: 92
Зарегистрирован:
12 май 2012, 09:51
Откуда:
Челябинск
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.

Сообщение 22 окт 2013, 21:34

Скажите, а зачем вот этот велосипед
Код: выделить все
         $submit_time = null;
         if (isset($user->data['ct_submit_time']) && preg_match("/^\d+$/", $user->data['ct_submit_time']))
         {
            $submit_time = time() - $user->data['ct_submit_time'];
         }
при том, что в инсталяторе
Код: выделить все
array(SESSIONS_TABLE, 'ct_submit_time', array('INT:11', '0'))
т.е. в базе в этом поле могут храниться только не отрицательные числа :?: . Этот фрагмент встречается в инструкцие дважды. Замените на
Код: выделить все
$submit_time = (!empty($user->data['ct_submit_time'])) ? time() - $user->data['ct_submit_time'] : null;


Далее, коль вы уже определили в /includes/cleantalk.class.php функции json_decode и json_encode на случай отсутствия таковых в целевой конфигурации php, то зачем тогда оставили проверки
Код: выделить все
if (function_exists('json_encode'))
в инструкции и в файле /includes/cleantalk.php :?: Просто измените порядок подключения файлов на
Код: выделить все
      if (!class_exists('Cleantalk'))
      {
         require $phpbb_root_path . 'includes/cleantalk.class.' . $phpEx;
         require $phpbb_root_path . 'includes/cleantalk.' . $phpEx;
      }
, а проверки уберите.

В инструкции попадаются повторяющиеся куски кода. Например
Код: выделить все
         $ct                = new Cleantalk();
         $ct->work_url       = $config['ct_work_url'];
         $ct->server_url       = $config['ct_server_url'];
         $ct->server_ttl       = $config['ct_server_ttl'];
         $ct->server_changed    = $config['ct_server_changed'];
который встречается раз 9. Если код класса Cleantalk должен оставаться переносимым между разными системами напишите функции, которые реализуют повторяющийся код и потом вызывайте их вместо много кратного дублирования одних и тех же кусков кода.
Аватар пользователя
serjan
Разработчик модов
 
Сообщений: 480
Зарегистрирован:
12 янв 2009, 19:18
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.

Сообщение 14 дек 2013, 12:11

Модуль обновлен до версии 3.72, изменения:

  • Оптимизирован PHP код модуля.
  • Удалена функция верификации регистраций пользователей через SMS код.
  • Удалена функция проверки на спам сообщений зарегистрированных пользователей (более 5ти одобренных сообщений).
Вложения
cleantalk_spam_protect_v_3.72.zip
(214.86 KiB) Скачиваний: 204
Аватар пользователя
shagimuratov
Активный участник
 
Сообщений: 92
Зарегистрирован:
12 май 2012, 09:51
Откуда:
Челябинск
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.

Сообщение 14 дек 2013, 12:14

serjan писал(а):Скажите, а зачем вот этот велосипед
Код: выделить все
         $submit_time = null;
         if (isset($user->data['ct_submit_time']) && preg_match("/^\d+$/", $user->data['ct_submit_time']))
         {
            $submit_time = time() - $user->data['ct_submit_time'];
         }
при том, что в инсталяторе
Код: выделить все
array(SESSIONS_TABLE, 'ct_submit_time', array('INT:11', '0'))
т.е. в базе в этом поле могут храниться только не отрицательные числа :?: . Этот фрагмент встречается в инструкцие дважды. Замените на
Код: выделить все
$submit_time = (!empty($user->data['ct_submit_time'])) ? time() - $user->data['ct_submit_time'] : null;


Далее, коль вы уже определили в /includes/cleantalk.class.php функции json_decode и json_encode на случай отсутствия таковых в целевой конфигурации php, то зачем тогда оставили проверки
Код: выделить все
if (function_exists('json_encode'))
в инструкции и в файле /includes/cleantalk.php :?: Просто измените порядок подключения файлов на
Код: выделить все
      if (!class_exists('Cleantalk'))
      {
         require $phpbb_root_path . 'includes/cleantalk.class.' . $phpEx;
         require $phpbb_root_path . 'includes/cleantalk.' . $phpEx;
      }
, а проверки уберите.


Спасибо, исправленно!

serjan писал(а):В инструкции попадаются повторяющиеся куски кода. Например
Код: выделить все
         $ct                = new Cleantalk();
         $ct->work_url       = $config['ct_work_url'];
         $ct->server_url       = $config['ct_server_url'];
         $ct->server_ttl       = $config['ct_server_ttl'];
         $ct->server_changed    = $config['ct_server_changed'];
который встречается раз 9. Если код класса Cleantalk должен оставаться переносимым между разными системами напишите функции, которые реализуют повторяющийся код и потом вызывайте их вместо много кратного дублирования одних и тех же кусков кода.

Исправим к следующему релизу. Спасибо большое за подсказки, новый код гораздо удобнее получается!
Аватар пользователя
shagimuratov
Активный участник
 
Сообщений: 92
Зарегистрирован:
12 май 2012, 09:51
Откуда:
Челябинск
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.

Сообщение 14 фев 2014, 10:10

Модуль обновлен до версии 3.73, изменения,

  • пофиксен код и оформление модуля в соответствии с рекомендациями команды phpbb.com,
  • добавлены переводы на Немецкий, Французский, Испанские языки меню управления модулем,
  • добавлено уведомление о проверки регистрации нового акаунта на спам,
  • добавлено уведомление об автоматической публикации сообщений от Гостей и Новых пользователей форума.
  • добавленно описание для модуля контроля версий MOD Version Check.

Архив с модулем cleantalk_spam_protect_v_3.73.zip.
Аватар пользователя
shagimuratov
Активный участник
 
Сообщений: 92
Зарегистрирован:
12 май 2012, 09:51
Откуда:
Челябинск
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.


Вернуться в Моды каталога

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Форум поддержки phpBB
2008 - 2017 © BB3x.ru - русская поддержка форума phpBB3
Создано на основе phpBB® Forum Software © phpBB Group
авторов модов
разработчиков скинов
русификаторов
и всех поклонников phpBB3