* @return bool The communication with this contact has currently problems
*/
function was_recently_delayed($cid) {
-
- $r = q("SELECT `id` FROM `queue` WHERE `cid` = %d
- and last > UTC_TIMESTAMP() - interval 15 minute limit 1",
- intval($cid)
- );
- if (dbm::is_result($r))
- return true;
+ $was_delayed = false;
// Are there queue entries that were recently added?
$r = q("SELECT `id` FROM `queue` WHERE `cid` = %d
- AND `last` > UTC_TIMESTAMP() - interval 15 minute LIMIT 1",
+ AND `last` > UTC_TIMESTAMP() - INTERVAL 15 MINUTE LIMIT 1",
intval($cid)
);
- return (dbm::is_result($r));
+ $was_delayed = dbm::is_result($r);
+
+ // We set "term-date" to a current date if the communication has problems.
+ // If the communication works again we reset this value.
+ if ($was_delayed) {
+ $r = q("SELECT `term-date` FROM `contact` WHERE `id` = %d AND `term-date` <= '1000-01-01' LIMIT 1",
+ intval($cid)
+ );
+ $was_delayed = !dbm::is_result($r);
+ }
+
+ return $was_delayed;
}