Skip to content

Commit 3a8e0cb

Browse files
author
CleanTalk
committed
Merge pull request #26 from znaeff/master
Version 1.94. Extended SQLite support.
2 parents 4ca457c + fbf4d62 commit 3a8e0cb

File tree

4 files changed

+87
-75
lines changed

4 files changed

+87
-75
lines changed

CHANGELOG

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
Version 1.94 April 18, 2016
2+
------------------------------
3+
- Fixed SQL error of Spam FileWall feature in SQLite
4+
15
Version 1.93 March 17, 2016
26
------------------------------
37
- Fixed SQL error with Spam FileWall feature

CleantalkMod.php

+40-63
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
require_once(dirname(__FILE__) . '/cleantalk.class.php');
1717

1818
// define same CleanTalk options
19-
define('CT_AGENT_VERSION', 'smf-193');
19+
define('CT_AGENT_VERSION', 'smf-194');
2020
define('CT_SERVER_URL', 'http://moderate.cleantalk.org');
2121
define('CT_DEBUG', false);
2222

@@ -348,9 +348,9 @@ function cleantalk_load()
348348
{
349349
foreach($_POST['ct_del_user'] as $key=>$value)
350350
{
351-
$result = $smcFunc['db_query']('', 'delete from {db_prefix}members where id_member='.intval($key),Array());
352-
$result = $smcFunc['db_query']('', 'delete from {db_prefix}topics where id_member_started='.intval($key),Array());
353-
$result = $smcFunc['db_query']('', 'delete from {db_prefix}messages where id_member='.intval($key),Array());
351+
$result = $smcFunc['db_query']('', 'delete from {db_prefix}members where id_member='.intval($key),Array('db_error_skip' => true));
352+
$result = $smcFunc['db_query']('', 'delete from {db_prefix}topics where id_member_started='.intval($key),Array('db_error_skip' => true));
353+
$result = $smcFunc['db_query']('', 'delete from {db_prefix}messages where id_member='.intval($key),Array('db_error_skip' => true));
354354
}
355355
}
356356

@@ -359,10 +359,10 @@ function cleantalk_load()
359359
$result = $smcFunc['db_query']('', 'select * from {db_prefix}members where ct_marked=1',Array());
360360
while($row = $smcFunc['db_fetch_assoc'] ($result))
361361
{
362-
$tmp = $smcFunc['db_query']('', 'delete from {db_prefix}topics where id_member_started='.$row['id_member'],Array());
363-
$tmp = $smcFunc['db_query']('', 'delete from {db_prefix}messages where id_member='.$row['id_member'],Array());
362+
$tmp = $smcFunc['db_query']('', 'delete from {db_prefix}topics where id_member_started='.$row['id_member'],Array('db_error_skip' => true));
363+
$tmp = $smcFunc['db_query']('', 'delete from {db_prefix}messages where id_member='.$row['id_member'],Array('db_error_skip' => true));
364364
}
365-
$result = $smcFunc['db_query']('', 'delete from {db_prefix}members where ct_marked=1',Array());
365+
$result = $smcFunc['db_query']('', 'delete from {db_prefix}members where ct_marked=1',Array('db_error_skip' => true));
366366
}
367367

368368
if (
@@ -409,6 +409,8 @@ function cleantalk_load()
409409
$result=json_decode($result, true);
410410
if(isset($result['data']))
411411
{
412+
$query='DELETE FROM {db_prefix}cleantalk_sfw';
413+
$tmp = $smcFunc['db_query']('', $query, Array());
412414
$result=$result['data'];
413415
$query='INSERT INTO {db_prefix}cleantalk_sfw VALUES ';
414416
for($i=0;$i<sizeof($result);$i++)
@@ -428,7 +430,6 @@ function cleantalk_load()
428430

429431
if(isset($modSettings['cleantalk_sfw']) && $modSettings['cleantalk_sfw'] == 1)
430432
{
431-
//$log_str = 'CT_DEBUG sfw=1';
432433
include_once("cleantalk-sfw.class.php");
433434
$sfw = new CleanTalkSFW();
434435
$sfw->cleantalk_get_real_ip();
@@ -440,26 +441,20 @@ function cleantalk_load()
440441
if(isset($_COOKIE['ct_sfw_pass_key']) && isset($sfw->ip_array[$i]) && $_COOKIE['ct_sfw_pass_key']==md5($sfw->ip_array[$i].$key))
441442
{
442443
$is_sfw_check=false;
443-
//$log_str .= ' _key ' . $sfw->ip_array[$i];
444444
if(isset($_COOKIE['ct_sfw_passed']))
445445
{
446446
@setcookie ('ct_sfw_passed', '0', 1, "/");
447-
//$log_str .= ' _passed ' . $sfw->ip_array[$i];
448447
}
449448
}
450449
}
451450
if($is_sfw_check)
452451
{
453-
//$log_str .= ' check';
454452
$sfw->check_ip();
455453
if($sfw->result)
456454
{
457-
//$log_str .= ' die ' . $sfw->blocked_ip;
458-
//log_error($log_str);
459455
$sfw->sfw_die();
460456
}
461457
}
462-
//log_error($log_str);
463458
}
464459
}
465460

@@ -534,34 +529,23 @@ function cleantalk_buffer($buffer)
534529
$result = $smcFunc['db_query']('', 'delete from {db_prefix}members where id_member='.intval($key),Array());
535530
}
536531
}
537-
if(isset($_GET['ctcheckspam']))
532+
db_extend('packages');
533+
$cols = $smcFunc['db_list_columns'] ('{db_prefix}members', 0);
534+
if(in_array('ct_marked', $cols))
538535
{
539-
$result = $smcFunc['db_query']('', 'select * from {db_prefix}members limit 1',Array());
540-
$row = $smcFunc['db_fetch_assoc'] ($result);
541-
if(!isset($row['ct_marked']))
542-
{
543-
$sql = 'ALTER TABLE {db_prefix}members ADD `ct_marked` INT DEFAULT 0 ';
544-
$result = $smcFunc['db_query']('', $sql, Array());
545-
}
546-
else
547-
{
548-
$sql = 'ALTER TABLE {db_prefix}members DROP COLUMN `ct_marked`';
549-
$result = $smcFunc['db_query']('', $sql, Array());
550-
$sql = 'ALTER TABLE {db_prefix}members ADD `ct_marked` INT DEFAULT 0 ';
551-
$result = $smcFunc['db_query']('', $sql, Array());
552-
}
553-
554-
$sql = 'UPDATE {db_prefix}members set ct_marked=0';
555-
$result = $smcFunc['db_query']('', $sql, Array());
556-
$sql = 'SELECT * FROM {db_prefix}members where passwd<>""';
557-
$result = $smcFunc['db_query']('', $sql, Array());
558-
$users=Array();
559-
$users[0]=Array();
560-
$data=Array();
561-
$data[0]=Array();
562-
$cnt=0;
563-
while($row = $smcFunc['db_fetch_assoc'] ($result))
564-
{
536+
if(isset($_GET['ctcheckspam']))
537+
{
538+
$sql = 'UPDATE {db_prefix}members set ct_marked=0';
539+
$result = $smcFunc['db_query']('', $sql, Array());
540+
$sql = 'SELECT * FROM {db_prefix}members where passwd<>""';
541+
$result = $smcFunc['db_query']('', $sql, Array());
542+
$users=Array();
543+
$users[0]=Array();
544+
$data=Array();
545+
$data[0]=Array();
546+
$cnt=0;
547+
while($row = $smcFunc['db_fetch_assoc'] ($result))
548+
{
565549
//$html.=serialize($row);
566550
$users[$cnt][] = Array('name' => $row['member_name'],
567551
'id' => $row['id_member'],
@@ -578,12 +562,12 @@ function cleantalk_buffer($buffer)
578562
$users[$cnt]=Array();
579563
$data[$cnt]=Array();
580564
}
581-
}
565+
}
582566

583-
$error="";
567+
$error="";
584568

585-
for($i=0;$i<sizeof($users);$i++)
586-
{
569+
for($i=0;$i<sizeof($users);$i++)
570+
{
587571
$send=implode(',',$data[$i]);
588572
$req="data=$send";
589573
$opts = array(
@@ -610,15 +594,15 @@ function cleantalk_buffer($buffer)
610594
if($value->appears==1)
611595
{
612596
$sql = 'UPDATE {db_prefix}members set ct_marked=1 where member_ip="'.$key.'"';
613-
$result = $smcFunc['db_query']('', $sql, Array());
597+
$result = $smcFunc['db_query']('', $sql, Array('db_error_skip' => true));
614598
}
615599
}
616600
else
617601
{
618602
if($value->appears==1)
619603
{
620604
$sql = 'UPDATE {db_prefix}members set ct_marked=1 where email_address="'.$key.'"';
621-
$result = $smcFunc['db_query']('', $sql, Array());
605+
$result = $smcFunc['db_query']('', $sql, Array('db_error_skip' => true));
622606
}
623607
}
624608
}
@@ -632,25 +616,17 @@ function cleantalk_buffer($buffer)
632616
$html.='<center><div style="border:2px solid red;color:red;font-size:16px;width:300px;padding:5px;"><b>'.$error.'</b></div><br></center>';
633617
}
634618

635-
}
619+
}
636620

637-
$result = $smcFunc['db_query']('', 'select * from {db_prefix}members limit 1',Array());
638-
$row = $smcFunc['db_fetch_assoc'] ($result);
639-
if(!isset($row['ct_marked']))
640-
{
641-
$sql = 'ALTER TABLE {db_prefix}members ADD `ct_marked` INT DEFAULT 0 ';
642-
$result = $smcFunc['db_query']('', $sql, Array());
643-
}
644-
645-
$sql = 'SELECT * FROM {db_prefix}members where ct_marked=1';
646-
$result = $smcFunc['db_query']('', $sql, Array());
621+
$sql = 'SELECT * FROM {db_prefix}members where ct_marked=1';
622+
$result = $smcFunc['db_query']('', $sql, Array());
647623

648-
if($smcFunc['db_num_rows'] ($result) == 0 && isset($_GET['ctcheckspam']))
649-
{
624+
if($smcFunc['db_num_rows'] ($result) == 0 && isset($_GET['ctcheckspam']))
625+
{
650626
$html.='<center><div><b>'.$txt['cleantalk_check_users_nofound'].'</b></div><br><br></center>';
651-
}
652-
else if($smcFunc['db_num_rows'] ($result) > 0)
653-
{
627+
}
628+
else if($smcFunc['db_num_rows'] ($result) > 0)
629+
{
654630
if(isset($_GET['ctcheckspam']))
655631
{
656632
$html.='<center><h3>'.$txt['cleantalk_check_users_done'].'</h3><br /><br /></center>';
@@ -682,6 +658,7 @@ function cleantalk_buffer($buffer)
682658

683659
}
684660
$html.="</tbody></table><br /><input type=submit name='ct_delete_checked' value='".$txt['cleantalk_check_users_tbl_delselect']."' onclick='return confirm(\"".$txt['cleantalk_check_users_confirm']."\")'> <input type=submit name='ct_delete_all' value='".$txt['cleantalk_check_users_tbl_delall']."' onclick='return confirm(\"".$txt['cleantalk_check_users_confirm']."\")'><br />".$txt['cleantalk_check_users_tbl_delnotice']."<br /><br /></center>";
661+
}
685662
}
686663

687664
$html.="<center><button style=\"width:20%;\" id=\"check_spam\" onclick=\"location.href=location.href.replace('&finishcheck=1','').replace('&ctcheckspam=1','')+'&ctcheckspam=1';return false;\">".$txt['cleantalk_check_users_button']."</button><br />".$txt['cleantalk_check_users_button_after']."</center>";

cleantalk-sfw.class.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ public function check_ip()
5353
}
5454
$table_exists = false;
5555
if (isset($db_connection) && $db_connection != false) {
56-
$sql="SHOW TABLES LIKE '{db_prefix}cleantalk_sfw'";
56+
if(strpos('sqlite', strtolower($smcFunc['db_title'])) === FALSE) {
57+
$sql="SHOW TABLES LIKE '{db_prefix}cleantalk_sfw'";
58+
} else {
59+
$sql="SELECT name FROM sqlite_master WHERE type='table' AND name='{db_prefix}cleantalk_sfw'";
60+
}
5761
$result = $smcFunc['db_query']('', $sql, Array());
5862
$row = $smcFunc['db_fetch_assoc'] ($result);
5963
if (isset($row) && is_array($row)) {

install.php

+38-11
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* @license GNU/GPL: http://www.gnu.org/copyleft/gpl.html
1010
*/
1111

12-
global $db_connection;
12+
global $db_connection, $smcFunc;
1313

1414
$hooks = array(
1515
'integrate_pre_include' => '$sourcedir/cleantalk/CleantalkMod.php',
@@ -48,14 +48,40 @@
4848
if (!isset($db_connection) || $db_connection === false) {
4949
trigger_error('CleanTalk install: you need to be connected to the database, please verify connection', E_USER_NOTICE);
5050
} else {
51-
$sql='DROP TABLE IF EXISTS {db_prefix}cleantalk_sfw';
52-
$result = $smcFunc['db_query']('', $sql, Array());
53-
$sql='CREATE TABLE IF NOT EXISTS {db_prefix}cleantalk_sfw (
54-
network int(11) unsigned NOT NULL,
55-
mask int(11) unsigned NOT NULL,
56-
INDEX (network, mask)
57-
)';
58-
$result = $smcFunc['db_query']('', $sql, Array());
51+
db_extend('packages');
52+
53+
$smcFunc['db_drop_table']('{db_prefix}cleantalk_sfw');
54+
55+
$columns = array(
56+
array(
57+
'name' => 'network',
58+
'type' => 'int',
59+
'size' => 11,
60+
'unsigned' => true,
61+
),
62+
array(
63+
'name' => 'mask',
64+
'type' => 'int',
65+
'size' => 11,
66+
'unsigned' => true,
67+
),
68+
);
69+
$indexes = array(
70+
array(
71+
'type' => 'primary',
72+
'columns' => array('network', 'mask')
73+
),
74+
);
75+
$smcFunc['db_create_table']('{db_prefix}cleantalk_sfw', $columns, $indexes, array(), 'update_remove');
76+
77+
$smcFunc['db_add_column'](
78+
'{db_prefix}members',
79+
array(
80+
'name' => 'ct_marked',
81+
'type' => 'int',
82+
'default' => 0
83+
)
84+
);
5985
}
6086
} else {
6187
// Anti-Spam Verification captcha
@@ -67,7 +93,8 @@
6793
if (!isset($db_connection) || $db_connection === false) {
6894
trigger_error('CleanTalk uninstall: you need to be connected to the database, please verify connection', E_USER_NOTICE);
6995
} else {
70-
$sql='DROP TABLE IF EXISTS {db_prefix}cleantalk_sfw';
71-
$result = $smcFunc['db_query']('', $sql, Array());
96+
db_extend('packages');
97+
$smcFunc['db_drop_table']('{db_prefix}cleantalk_sfw');
98+
$smcFunc['db_remove_column']('{db_prefix}members', 'ct_marked', array(), '');
7299
}
73100
}

0 commit comments

Comments
 (0)