improved bounces handling; added AOL hack; updates #44
This commit is contained in:
@@ -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`");
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
@@ -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');
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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']);
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
Reference in New Issue
Block a user