From fc6dd280707ec8f1be4d08c57c2ec432c627600d Mon Sep 17 00:00:00 2001 From: znaeff Date: Mon, 16 May 2016 12:46:28 +0500 Subject: [PATCH] Added SSI support. --- CleantalkMod.php | 238 +++++++++++++++++++++++++++++------------------ 1 file changed, 147 insertions(+), 91 deletions(-) diff --git a/CleantalkMod.php b/CleantalkMod.php index ef70702..b110007 100644 --- a/CleantalkMod.php +++ b/CleantalkMod.php @@ -31,6 +31,10 @@ function cleantalk_check_register(&$regOptions, $theme_vars) { global $language, $user_info, $modSettings; + if (SMF == 'SSI') { + return; + } + if ($regOptions['interface'] == 'admin') { return; } @@ -117,7 +121,11 @@ function cleantalk_check_register(&$regOptions, $theme_vars) */ function cleantalk_check_message(&$msgOptions, $topicOptions, $posterOptions) { - global $language, $user_info, $modSettings, $smcFunc; + global $language, $user_info, $modSettings, $smcFunc, $db_connection; + + if (SMF == 'SSI') { + return; + } if (!$modSettings['cleantalk_first_post_checking']) { // post checking off @@ -156,14 +164,18 @@ function cleantalk_check_message(&$msgOptions, $topicOptions, $posterOptions) ); if (isset($topicOptions['id'])) { - // disable query check for UNION operator - $oldQueryCheck = isset($modSettings['disableQueryCheck']) ? $modSettings['disableQueryCheck'] : false; - $modSettings['disableQueryCheck'] = true; - - // find first and last 5 messages - $posts = $smcFunc['db_query']( - '', - 'SELECT m.id_msg, m.body + if (!isset($db_connection) || $db_connection === false) { + loadDatabase(); + } + if (isset($db_connection) && $db_connection != false) { + // disable query check for UNION operator + $oldQueryCheck = isset($modSettings['disableQueryCheck']) ? $modSettings['disableQueryCheck'] : false; + $modSettings['disableQueryCheck'] = true; + + // find first and last 5 messages + $posts = $smcFunc['db_query']( + '', + 'SELECT m.id_msg, m.body FROM {db_prefix}messages AS m JOIN {db_prefix}topics AS t ON t.id_first_msg=m.id_msg WHERE t.id_topic = {int:id_topic} @@ -174,19 +186,20 @@ function cleantalk_check_message(&$msgOptions, $topicOptions, $posterOptions) ORDER BY id_msg desc limit 5) ORDER BY id_msg', - array( - 'id_topic' => $topicOptions['id'], - 'id_topic2' => $topicOptions['id'], - ) - ); - $messages = array(); - while ($post = $smcFunc['db_fetch_assoc']($posts)) { - $messages[] = $post['body']; - } - $smcFunc['db_free_result']($posts); - $modSettings['disableQueryCheck'] = $oldQueryCheck; - - $ct_request->example = implode("\n", $messages); + array( + 'id_topic' => $topicOptions['id'], + 'id_topic2' => $topicOptions['id'], + ) + ); + $messages = array(); + while ($post = $smcFunc['db_fetch_assoc']($posts)) { + $messages[] = $post['body']; + } + $smcFunc['db_free_result']($posts); + $modSettings['disableQueryCheck'] = $oldQueryCheck; + + $ct_request->example = implode("\n", $messages); + } } if (defined('CT_DEBUG') && CT_DEBUG) { @@ -236,6 +249,11 @@ function cleantalk_check_message(&$msgOptions, $topicOptions, $posterOptions) function cleantalk_after_create_topic($msgOptions, $topicOptions, $posterOptions) { global $sourcedir, $scripturl; + + if (SMF == 'SSI') { + return; + } + if (isset($msgOptions['cleantalk_check_message_result'])) { require_once($sourcedir . '/Subs-Admin.php'); @@ -333,7 +351,11 @@ function cleantalk_log($message) */ function cleantalk_load() { - global $context, $user_info, $modSettings, $smcFunc; + global $context, $user_info, $modSettings, $smcFunc, $db_connection; + + if (SMF == 'SSI') { + return; + } if ( isset($context['template_layers']) && @@ -344,29 +366,39 @@ function cleantalk_load() ) { $context ['html_headers'] .= cleantalk_print_js_input(); } - + if($user_info['is_admin'] && isset($_POST['ct_del_user'])) - { + { checkSession('request'); - foreach($_POST['ct_del_user'] as $key=>$value) - { + if (!isset($db_connection) || $db_connection === false) { + loadDatabase(); + } + if (isset($db_connection) && $db_connection != false) { + foreach($_POST['ct_del_user'] as $key=>$value) + { $result = $smcFunc['db_query']('', 'delete from {db_prefix}members where id_member='.intval($key),Array('db_error_skip' => true)); $result = $smcFunc['db_query']('', 'delete from {db_prefix}topics where id_member_started='.intval($key),Array('db_error_skip' => true)); $result = $smcFunc['db_query']('', 'delete from {db_prefix}messages where id_member='.intval($key),Array('db_error_skip' => true)); + } } - } - - if($user_info['is_admin'] && isset($_POST['ct_delete_all'])) - { + } + + if($user_info['is_admin'] && isset($_POST['ct_delete_all'])) + { checkSession('request'); - $result = $smcFunc['db_query']('', 'select * from {db_prefix}members where ct_marked=1',Array()); - while($row = $smcFunc['db_fetch_assoc'] ($result)) - { + if (!isset($db_connection) || $db_connection === false) { + loadDatabase(); + } + if (isset($db_connection) && $db_connection != false) { + $result = $smcFunc['db_query']('', 'select * from {db_prefix}members where ct_marked=1',Array()); + while($row = $smcFunc['db_fetch_assoc'] ($result)) + { $tmp = $smcFunc['db_query']('', 'delete from {db_prefix}topics where id_member_started='.$row['id_member'],Array('db_error_skip' => true)); $tmp = $smcFunc['db_query']('', 'delete from {db_prefix}messages where id_member='.$row['id_member'],Array('db_error_skip' => true)); + } + $result = $smcFunc['db_query']('', 'delete from {db_prefix}members where ct_marked=1',Array('db_error_skip' => true)); } - $result = $smcFunc['db_query']('', 'delete from {db_prefix}members where ct_marked=1',Array('db_error_skip' => true)); - } + } if ( isset($context['template_layers']) && @@ -377,6 +409,7 @@ function cleantalk_load() // add "tell others" templates $context['template_layers'][] = 'cleantalk'; } + if($user_info['is_admin'] && isset($_POST['cleantalk_api_key'])) { checkSession('request'); @@ -402,19 +435,22 @@ function cleantalk_load() $ct_request->js_on = 1; $ct_result = $ct->isAllowMessage($ct_request); - } + if($user_info['is_admin'] && isset($_POST['cleantalk_sfw']) && (int)$_POST['cleantalk_sfw'] == 1) { checkSession('request'); - $data = Array( 'auth_key' => cleantalk_get_api_key(), + if (!isset($db_connection) || $db_connection === false) { + loadDatabase(); + } + if (isset($db_connection) && $db_connection != false) { + $data = Array( 'auth_key' => cleantalk_get_api_key(), 'method_name' => '2s_blacklists_db' - ); - - $result=sendRawRequest('https://api.cleantalk.org/2.1',$data,false); - $result=json_decode($result, true); - if(isset($result['data'])) - { + ); + $result=sendRawRequest('https://api.cleantalk.org/2.1',$data,false); + $result=json_decode($result, true); + if(isset($result['data'])) + { $query='DELETE FROM {db_prefix}cleantalk_sfw'; $tmp = $smcFunc['db_query']('', $query, Array()); $result=$result['data']; @@ -431,19 +467,24 @@ function cleantalk_load() } } $result = $smcFunc['db_query']('', $query, Array()); + } } } - + if(isset($modSettings['cleantalk_sfw']) && $modSettings['cleantalk_sfw'] == 1) { - include_once("cleantalk-sfw.class.php"); - $sfw = new CleanTalkSFW(); - $sfw->cleantalk_get_real_ip(); - - $is_sfw_check=true; - $key=cleantalk_get_api_key(); - for($i=0;$iip_array);$i++) - { + if (!isset($db_connection) || $db_connection === false) { + loadDatabase(); + } + if (isset($db_connection) && $db_connection != false) { + include_once("cleantalk-sfw.class.php"); + $sfw = new CleanTalkSFW(); + $sfw->cleantalk_get_real_ip(); + + $is_sfw_check=true; + $key=cleantalk_get_api_key(); + for($i=0;$iip_array);$i++) + { if(isset($_COOKIE['ct_sfw_pass_key']) && isset($sfw->ip_array[$i]) && $_COOKIE['ct_sfw_pass_key']==md5($sfw->ip_array[$i].$key)) { $is_sfw_check=false; @@ -452,17 +493,17 @@ function cleantalk_load() @setcookie ('ct_sfw_passed', '0', 1, "/"); } } - } - if($is_sfw_check) - { + } + if($is_sfw_check) + { $sfw->check_ip(); if($sfw->result) { $sfw->sfw_die(); } + } } } - } /** @@ -503,20 +544,29 @@ function template_cleantalk_above() */ function template_cleantalk_below() { - global $modSettings, $txt; - if(!empty($modSettings['cleantalk_tell_others'])) - { - $message = $txt['cleantalk_tell_others_footer_message']; - echo '
', $message, '
'; - } + global $modSettings, $txt; + + if (SMF == 'SSI') { + return; + } + + if(!empty($modSettings['cleantalk_tell_others'])) + { + $message = $txt['cleantalk_tell_others_footer_message']; + echo '
', $message, '
'; + } } function cleantalk_buffer($buffer) { - global $modSettings, $user_info, $smcFunc, $txt; + global $modSettings, $user_info, $smcFunc, $txt, $forum_version, $db_connection; + + if (SMF == 'SSI') { + return; + } + if($user_info['is_admin'] && isset($_GET['action']) && $_GET['action'] == 'admin') { - global $forum_version; if(strpos($forum_version, 'SMF 2.0')===false) { $html=''; @@ -529,12 +579,17 @@ function cleantalk_buffer($buffer) document.getElementById("ct_anchor").parentElement.style.border="0px"; '; } - db_extend('packages'); - $cols = $smcFunc['db_list_columns'] ('{db_prefix}members', 0); - if(in_array('ct_marked', $cols)) + if (!isset($db_connection) || $db_connection === false) { + loadDatabase(); + } + if (isset($db_connection) && $db_connection != false) { - if(isset($_GET['ctcheckspam'])) + db_extend('packages'); + $cols = $smcFunc['db_list_columns'] ('{db_prefix}members', 0); + if(in_array('ct_marked', $cols)) { + if(isset($_GET['ctcheckspam'])) + { $sql = 'UPDATE {db_prefix}members set ct_marked=0'; $result = $smcFunc['db_query']('', $sql, Array()); $sql = 'SELECT * FROM {db_prefix}members where passwd<>""'; @@ -608,29 +663,29 @@ function cleantalk_buffer($buffer) } } - } + } - if($error!='') - { + if($error!='') + { $html.='
'.$error.'

'; - } + } - } + } - $sql = 'SELECT * FROM {db_prefix}members where ct_marked=1'; - $result = $smcFunc['db_query']('', $sql, Array()); + $sql = 'SELECT * FROM {db_prefix}members where ct_marked=1'; + $result = $smcFunc['db_query']('', $sql, Array()); - if($smcFunc['db_num_rows'] ($result) == 0 && isset($_GET['ctcheckspam'])) - { - $html.='
'.$txt['cleantalk_check_users_nofound'].'


'; - } - else if($smcFunc['db_num_rows'] ($result) > 0) - { - if(isset($_GET['ctcheckspam'])) + if($smcFunc['db_num_rows'] ($result) == 0 && isset($_GET['ctcheckspam'])) { - $html.='

'.$txt['cleantalk_check_users_done'].'



'; + $html.='
'.$txt['cleantalk_check_users_nofound'].'


'; } - $html.='
+ else if($smcFunc['db_num_rows'] ($result) > 0) + { + if(isset($_GET['ctcheckspam'])) + { + $html.='

'.$txt['cleantalk_check_users_done'].'



'; + } + $html.='
@@ -642,9 +697,9 @@ function cleantalk_buffer($buffer) '; - $found=false; - while($row = $smcFunc['db_fetch_assoc'] ($result)) - { + $found=false; + while($row = $smcFunc['db_fetch_assoc'] ($result)) + { $found=true; $html.=" @@ -655,12 +710,13 @@ function cleantalk_buffer($buffer) "; + } + $html.="
'.$txt['cleantalk_check_users_tbl_select'].'
".date("Y-m-d H:i:s",$row['last_login'])."


".$txt['cleantalk_check_users_tbl_delnotice']."

"; } - $html.="

".$txt['cleantalk_check_users_tbl_delnotice']."

"; } - } - $html.="

".$txt['cleantalk_check_users_button_after']."
"; + $html.="

".$txt['cleantalk_check_users_button_after']."
"; + } $buffer = str_replace("%CLEANTALK_CHECK_USERS%", $html, $buffer); }