data['is_registered'])
{
$username = $user->data['username'];
}
if (!class_exists('Cleantalk'))
{
require $phpbb_root_path . 'includes/cleantalk.' . $phpEx;
require $phpbb_root_path . 'includes/cleantalk.class.' . $phpEx;
}
$moderate = 0; // Flag to start moderation
$ct_admin = 0; // User is an admin
$ct_gmoderator = 0; // User is global moderator
//ct_moderate_guests, ct_moderate_newly_registered,
$sql = 'SELECT enable_stoplist_check, ct_moderate_registered, ct_allow_links FROM ' . FORUMS_TABLE . ' WHERE forum_id = ' . (int) $forum_id;
$result = $db->sql_query($sql);
$ct_forum = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$sql = 'SELECT g.group_name FROM ' . GROUPS_TABLE . ' g, ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . ' ug where
ug.user_id=u.user_id and ug.group_id=g.group_id and g.group_type = ' . GROUP_SPECIAL . ' and u.user_id = ' . (int) $user->data['user_id'];
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
if ($row['group_name'] === 'GLOBAL_MODERATORS')
{
$ct_gmoderator = 1;
}
if ($row['group_name'] === 'ADMINISTRATORS')
{
$ct_admin = 1;
}
if ($moderate)
{
continue; // Skip loop if $moderate is on
}
if (($row['group_name'] === 'GUESTS' && $config['ct_moderate_guests']) || ($row['group_name'] === 'NEWLY_REGISTERED' && $config['ct_moderate_newly_registered']) || ($row['group_name'] === 'REGISTERED' && $ct_forum['ct_moderate_registered']))
{
$moderate = 1;
}
}
// Disable moderation if message from administration
if ($moderate && ($ct_admin || $ct_gmoderator))
{
$moderate = 0;
}
$db->sql_freeresult($result);
if ($moderate)
{
$ct_example = null; // Example text
$message = $message_parser->message; // Post message
if ($topic_id == 0)
{ // First post in topic
$sql = 'SELECT p.post_text FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p, ' . FORUMS_TABLE . ' f
WHERE t.forum_id = f.forum_id and
p.forum_id = f.forum_id and p.topic_id = t.topic_id and p.post_id = t.topic_first_post_id and
p.post_approved = 1 and f.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'] = $row['post_text'];
}
$db->sql_freeresult($result);
$message = $subject . "
" . $message;
}
else
{
$sql = 'SELECT topic_title, topic_first_post_id FROM ' . TOPICS_TABLE . ' WHERE topic_id = ' . (int) $topic_id;
$result = $db->sql_query($sql);
$sql_result = $db->sql_fetchrow($result);
$topic_title = $sql_result['topic_title'];
$topic_first_post_id = $sql_result['topic_first_post_id'];
$db->sql_freeresult($result);
$sql = 'SELECT post_text FROM ' . POSTS_TABLE . ' WHERE post_id = ' . (int) $topic_first_post_id;
$result = $db->sql_query($sql);
$sql_result = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$ct_example['title'] = $topic_title;
$ct_example['body'] = $sql_result['post_text'];
$sql = 'SELECT post_id,post_text FROM ' . POSTS_TABLE . '
WHERE topic_id = ' . (int) $topic_id . ' and post_id <> ' . (int) $topic_first_post_id . ' and
post_approved = 1 ORDER BY post_time desc';
$result = $db->sql_query_limit($sql, $config['ct_post_count']);
$ct_example['comments'] = '';
while ($row = $db->sql_fetchrow($result))
{
$ct_example['comments'] .= $row['post_text'] . "\n";
}
$db->sql_freeresult($result);
}
$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'];
}
if (function_exists('get_ct_checkjs'))
{
$ct_checkjs = get_ct_checkjs();
}
else
{
$ct_checkjs = null;
}
// JSON array with additional senders params
$sender_info = null;
$post_info = null;
if (function_exists('json_encode'))
{
if (function_exists('get_sender_info'))
{
$sender_info = get_sender_info();
}
else
{
$sender_info = null;
}
$sql = 'SELECT max(post_id) as last_post_id FROM ' . POSTS_TABLE;
$result = $db->sql_query($sql);
$ct_row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$ct_post_id = 1;
if (isset($ct_row['last_post_id']))
$ct_post_id = (int) $ct_row['last_post_id'] + 1;
$post_info['post_url'] = generate_board_url() . "/viewtopic.$phpEx?p=" . $ct_post_id . "#p" . $ct_post_id;
$post_info = json_encode($post_info);
$ct_example = json_encode($ct_example);
}
else
{
$ct_example = implode("\n", $ct_example);
}
$ct_request = new CleantalkRequest();
$ct_request->auth_key = $config['ct_auth_key'];
$ct_request->message = $message;
$ct_request->sender_email = $user->data['user_email'];
$ct_request->sender_nickname = $username;
$ct_request->example = $ct_example;
$ct_request->agent = 'ct-phpbb-' . preg_replace("/(\d)\.(\d)\.(\d)/", "$1$2$3", $config['ct_version']);
$ct_request->sender_info = $sender_info;
$ct_request->sender_ip = ct_session_ip($user->data['session_ip']);
$ct_request->stoplist_check = $ct_forum['enable_stoplist_check'];
$ct_request->response_lang = $config['ct_response_lang'];
$ct_request->allow_links = $ct_forum['ct_allow_links'];
$ct_request->submit_time = $submit_time;
$ct_request->js_on = $ct_checkjs;
$ct_request->post_info = $post_info;
$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'];
$ct_result = $ct->isAllowMessage($ct_request);
if ($ct->server_change)
{
set_config('ct_work_url', $ct->work_url);
set_config('ct_server_ttl', $ct->server_ttl);
set_config('ct_server_changed', time());
}
if ($ct_result->errno > 0)
{
ct_error_mail($ct_result->errstr);
}
$ct_cleantalk_id = null;
if (isset($ct_result->id))
$ct_cleantalk_id = $ct_result->id;
if ($ct_result->allow == 0 && isset($ct_result->stop_queue) && $ct_result->stop_queue == 1)
{
add_log('user', null, $ct_result->comment);
$error[] = $ct_result->comment;
}
if (!empty($ct_result->stop_words) && $post_data['enable_bbcode'])
{
foreach ( explode(':', $ct_result->stop_words) as $word )
{
$message_parser->message = preg_replace("/($word)/ui", '[color=#FF1000]' . "$1" . '[/color]', $message_parser->message);
}
$message_parser->parse($post_data['enable_bbcode'], ($config['allow_post_links']) ? $post_data['enable_urls'] : false, $post_data['enable_smilies'], $img_status, $flash_status, $quote_status, $config['allow_post_links']);
}
if ($ct_result->allow == 0)
{
if (isset($ct_result->comment))
{
$message_parser->message = $message_parser->message . "
" . $ct_result->comment;
}
}
}
}
// End: cleantalk.ru moderation]]>
data['is_registered'])
{
$username = $user->data['username'];
}
if (!class_exists('Cleantalk'))
{
require $phpbb_root_path . 'includes/cleantalk.' . $phpEx;
require $phpbb_root_path . 'includes/cleantalk.class.' . $phpEx;
}
$moderate = 0; // Flag to start moderation
$ct_admin = 0; // User is an admin
$ct_gmoderator = 0; // User is global moderator
//ct_moderate_guests, ct_moderate_newly_registered,
$sql = 'SELECT enable_stoplist_check, ct_moderate_registered, ct_allow_links FROM ' . FORUMS_TABLE . ' WHERE forum_id = ' . (int) $forum_id;
$result = $db->sql_query($sql);
$ct_forum = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$sql = 'SELECT g.group_name FROM ' . GROUPS_TABLE . ' g, ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . ' ug where
ug.user_id=u.user_id and ug.group_id=g.group_id and g.group_type = ' . GROUP_SPECIAL . ' and u.user_id = ' . (int) $user->data['user_id'];
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
if ($row['group_name'] === 'GLOBAL_MODERATORS')
{
$ct_gmoderator = 1;
}
if ($row['group_name'] === 'ADMINISTRATORS')
{
$ct_admin = 1;
}
if ($moderate)
{
continue; // Skip loop if $moderate is on
}
if (($row['group_name'] === 'GUESTS' && $config['ct_moderate_guests']) || ($row['group_name'] === 'NEWLY_REGISTERED' && $config['ct_moderate_newly_registered']) || ($row['group_name'] === 'REGISTERED' && $ct_forum['ct_moderate_registered']))
{
$moderate = 1;
}
}
// Disable moderation if message from administration
if ($moderate && ($ct_admin || $ct_gmoderator))
{
$moderate = 0;
}
$db->sql_freeresult($result);
if ($moderate)
{
$ct_example = null; // Example text
$message = $message_parser->message; // Post message
if ($topic_id == 0)
{ // First post in topic
$sql = 'SELECT p.post_text FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p, ' . FORUMS_TABLE . ' f
WHERE t.forum_id = f.forum_id and
p.forum_id = f.forum_id and p.topic_id = t.topic_id and p.post_id = t.topic_first_post_id and
p.post_approved = 1 and f.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'] = $row['post_text'];
}
$db->sql_freeresult($result);
$message = $subject . "
" . $message;
}
else
{
$sql = 'SELECT topic_title, topic_first_post_id FROM ' . TOPICS_TABLE . ' WHERE topic_id = ' . (int) $topic_id;
$result = $db->sql_query($sql);
$sql_result = $db->sql_fetchrow($result);
$topic_title = $sql_result['topic_title'];
$topic_first_post_id = $sql_result['topic_first_post_id'];
$db->sql_freeresult($result);
$sql = 'SELECT post_text FROM ' . POSTS_TABLE . ' WHERE post_id = ' . (int) $topic_first_post_id;
$result = $db->sql_query($sql);
$sql_result = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$ct_example['title'] = $topic_title;
$ct_example['body'] = $sql_result['post_text'];
$sql = 'SELECT post_id,post_text FROM ' . POSTS_TABLE . '
WHERE topic_id = ' . (int) $topic_id . ' and post_id <> ' . (int) $topic_first_post_id . ' and
post_approved = 1 ORDER BY post_time desc';
$result = $db->sql_query_limit($sql, $config['ct_post_count']);
$ct_example['comments'] = '';
while ($row = $db->sql_fetchrow($result))
{
$ct_example['comments'] .= $row['post_text'] . "\n";
}
$db->sql_freeresult($result);
}
$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'];
}
if (function_exists('get_ct_checkjs'))
{
$ct_checkjs = get_ct_checkjs();
}
else
{
$ct_checkjs = null;
}
// JSON array with additional senders params
$sender_info = null;
$post_info = null;
if (function_exists('json_encode'))
{
if (function_exists('get_sender_info'))
{
$sender_info = get_sender_info();
}
else
{
$sender_info = null;
}
$sql = 'SELECT max(post_id) as last_post_id FROM ' . POSTS_TABLE;
$result = $db->sql_query($sql);
$ct_row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$ct_post_id = 1;
if (isset($ct_row['last_post_id']) && $ct_row['last_post_id'] !== NULL)
$ct_post_id = (int) $ct_row['last_post_id'] + 1;
$post_info['post_url'] = generate_board_url() . "/viewtopic.$phpEx?p=" . $ct_post_id . "#p" . $ct_post_id;
$post_info = json_encode($post_info);
$ct_example = json_encode($ct_example);
}
else
{
$ct_example = implode("\n", $ct_example);
}
$ct_request = new CleantalkRequest();
$ct_request->auth_key = $config['ct_auth_key'];
$ct_request->message = $message;
$ct_request->sender_email = $user->data['user_email'];
$ct_request->sender_nickname = $username;
$ct_request->example = $ct_example;
$ct_request->agent = 'ct-phpbb-' . preg_replace("/(\d)\.(\d)\.(\d)/", "$1$2$3", $config['ct_version']);
$ct_request->sender_info = $sender_info;
$ct_request->sender_ip = ct_session_ip($user->data['session_ip']);
$ct_request->stoplist_check = $ct_forum['enable_stoplist_check'];
$ct_request->response_lang = $config['ct_response_lang'];
$ct_request->allow_links = $ct_forum['ct_allow_links'];
$ct_request->submit_time = $submit_time;
$ct_request->js_on = $ct_checkjs;
$ct_request->post_info = $post_info;
$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'];
$ct_result = $ct->isAllowMessage($ct_request);
if ($ct->server_change)
{
set_config('ct_work_url', $ct->work_url);
set_config('ct_server_ttl', $ct->server_ttl);
set_config('ct_server_changed', time());
}
if ($ct_result->errno > 0)
{
ct_error_mail($ct_result->errstr);
}
$ct_cleantalk_id = null;
if (isset($ct_result->id))
$ct_cleantalk_id = $ct_result->id;
if ($ct_result->allow == 0 && isset($ct_result->stop_queue) && $ct_result->stop_queue == 1)
{
add_log('user', null, $ct_result->comment);
$error[] = $ct_result->comment;
}
if (!empty($ct_result->stop_words) && $post_data['enable_bbcode'])
{
foreach ( explode(':', $ct_result->stop_words) as $word )
{
$message_parser->message = preg_replace("/($word)/ui", '[color=#FF1000]' . "$1" . '[/color]', $message_parser->message);
}
$message_parser->parse($post_data['enable_bbcode'], ($config['allow_post_links']) ? $post_data['enable_urls'] : false, $post_data['enable_smilies'], $img_status, $flash_status, $quote_status, $config['allow_post_links']);
}
if ($ct_result->allow == 0)
{
if (isset($ct_result->comment))
{
$message_parser->message = $message_parser->message . "
" . $ct_result->comment;
}
}
}
}
// End: cleantalk.ru moderation]]>
CLEANTALK -> Settings -> CleanTalk. Spam protect
3. Enable New users check at the same place.
4. Enable moderation for selected forums,
ACP -> Forums -> Manage forums -> FORUM_NAME -> CleanTalk. Spam protect
5. Register a new user to check registration proccess.
6. Post a message to forum where have enabled CleanTalk.]]>