improved bounces handling; added AOL hack; updates #44

This commit is contained in:
following
2013-06-04 14:33:59 +02:00
parent d7bbc8e14e
commit d658c90384
5 changed files with 20 additions and 6 deletions

View File

@@ -181,4 +181,10 @@
sql("ALTER TABLE `user` ADD COLUMN `mailing_problems` int(10) unsigned NOT NULL default '0' AFTER `last_email_problem`"); sql("ALTER TABLE `user` ADD COLUMN `mailing_problems` int(10) unsigned NOT NULL default '0' AFTER `last_email_problem`");
} }
function dbv_109() // improved email-bounce processiong
{
if (!sql_field_exists('user','first_email_problem'))
sql("ALTER TABLE `user` ADD COLUMN `first_email_problem` date default NULL AFTER `email_problems`");
}
?> ?>

View File

@@ -525,9 +525,8 @@
/* After reaching the 5-bounces limit, we try to send new cache notifications /* After reaching the 5-bounces limit, we try to send new cache notifications
in larger intervals for some more time, and at least on per year. in larger intervals for some more time, and at least on per year.
See also runwatch.php. */ See also runwatch.php. */
WHERE (`email_problems` < 5 WHERE (`email_problems` = 0 OR NOT `email` LIKE '%@aol.%') AND
OR (`email_problems` < 10 AND NOW() > IFNULL(`last_email_problem`,'2013-03-01') + INTERVAL 30 DAY) (`email_problems` < 5 OR (`last_email_problem`-`first_email_problem` <= 90 AND NOW() > `last_email_problem` + INTERVAL 30 DAY))
OR NOW() > IFNULL(`last_email_problem`,'2013-03-01') + INTERVAL 365 DAY)
AND NOT ISNULL(`user`.`latitude`) AND NOT ISNULL(`user`.`latitude`)
AND NOT ISNULL(`user`.`longitude`) AND NOT ISNULL(`user`.`longitude`)
AND `user`.`notify_radius`>0 AND `user`.`notify_radius`>0
@@ -1254,6 +1253,11 @@
SET NEW.`last_modified`=NOW(); SET NEW.`last_modified`=NOW();
END IF; END IF;
END IF; END IF;
IF NEW.`email_problems`>0 AND NEW.`first_email_problem` IS NULL THEN
SET NEW.`first_email_problem` = NEW.`last_email_problem`;
ELSEIF NEW.`email_problems`=0 THEN
SET NEW.`first_email_problem` = NULL;
END IF;
END;"); END;");
sql_dropTrigger('userBeforeDelete'); sql_dropTrigger('userBeforeDelete');

View File

@@ -11,6 +11,7 @@ CREATE TABLE `user` (
`password` varchar(32) default NULL, `password` varchar(32) default NULL,
`email` varchar(60) default NULL, `email` varchar(60) default NULL,
`email_problems` int(10) NOT NULL default '0', `email_problems` int(10) NOT NULL default '0',
`first_email_problem` date default NULL,
`last_email_problem` datetime default NULL, `last_email_problem` datetime default NULL,
`mailing_problems` int(10) unsigned NOT NULL default '0', `mailing_problems` int(10) unsigned NOT NULL default '0',
`latitude` double NOT NULL, `latitude` double NOT NULL,

View File

@@ -81,7 +81,10 @@
// Watch notifications are discarded if the user had some undeliverable emails. // Watch notifications are discarded if the user had some undeliverable emails.
// See also stored procedure sp_notify_new_cache(). // See also stored procedure sp_notify_new_cache().
if (sqlValue("SELECT `email_problems` FROM `user` WHERE `user_id`='" . sql_escape($rcw['user_id']) . "'", 0) < 5) // See http://forum.opencaching-network.org/index.php?topic=3123.0 on AOL.
if (sqlValue("SELECT (`email_problems`=0 OR NOT `email` LIKE '%@aol.%')
AND (`email_problems`<5 OR `last_email_problem`-`first_email_problem` < 10)
FROM `user` WHERE `user_id`='" . sql_escape($rcw['user_id']) . "'", 0))
process_log_watch($rcw['user_id'], $rcw['log_id']); process_log_watch($rcw['user_id'], $rcw['log_id']);
sql("DELETE FROM `watches_logqueue` WHERE `log_id`='&1' AND `user_id`='&2'", $rcw['log_id'], $rcw['user_id']); sql("DELETE FROM `watches_logqueue` WHERE `log_id`='&1' AND `user_id`='&2'", $rcw['log_id'], $rcw['user_id']);

View File

@@ -42,7 +42,7 @@ class maillog
echo $this->name.": could not connect to syslog database\n"; echo $this->name.": could not connect to syslog database\n";
return; return;
} }
if (@mysql_query("USE ".$opt['system']['maillog']['syslog_db_name']) === FALSE) if (@mysql_query("USE ".$opt['system']['maillog']['syslog_db_name'], $dbc) === FALSE)
{ {
echo $this->name.": could not open syslog database: ".mysql_error()."\n"; echo $this->name.": could not open syslog database: ".mysql_error()."\n";
return; return;
@@ -59,7 +59,7 @@ class maillog
WHERE (`id`>'" . mysql_real_escape_string($last_id) . "' OR `created`>'" . mysql_real_escape_string($last_date) . "') WHERE (`id`>'" . mysql_real_escape_string($last_id) . "' OR `created`>'" . mysql_real_escape_string($last_date) . "')
AND `host_name`='" . mysql_real_escape_string($opt['system']['maillog']['syslog_oc_host']) . "' AND `host_name`='" . mysql_real_escape_string($opt['system']['maillog']['syslog_oc_host']) . "'
AND `program`='" . mysql_real_escape_string($opt['system']['maillog']['syslog_mta']) . "' AND `program`='" . mysql_real_escape_string($opt['system']['maillog']['syslog_mta']) . "'
ORDER BY `id`"); ORDER BY `id`", $dbc);
if ($rs === FALSE) if ($rs === FALSE)
{ {
echo $this->name.": syslog query error (".mysql_errno()."): ".mysql_error()."\n"; echo $this->name.": syslog query error (".mysql_errno()."): ".mysql_error()."\n";