function mailstream_cron($a, $b) { // Only process items older than an hour in cron. This is because // we want to give mailstream_post_remote_hook a fair chance to // send the email itself before cron jumps in. Only if // mailstream_post_remote_hook fails for some reason will this get // used, and in that case it's worth holding off a bit anyway. $ms_item_ids = q("SELECT `mailstream_item`.`message-id`, `mailstream_item`.`uri`, `item`.`id` FROM `mailstream_item` JOIN `item` ON (`mailstream_item`.`uid` = `item`.`uid` AND `mailstream_item`.`uri` = `item`.`uri` AND `mailstream_item`.`contact-id` = `item`.`contact-id`) WHERE `mailstream_item`.`completed` IS NULL AND `mailstream_item`.`created` < DATE_SUB(NOW(), INTERVAL 1 HOUR) AND `item`.`visible` = 1 ORDER BY `mailstream_item`.`created` LIMIT 100"); logger('mailstream_cron processing ' . count($ms_item_ids) . ' items', LOGGER_DEBUG); foreach ($ms_item_ids as $ms_item_id) { if (!$ms_item_id['message-id'] || !strlen($ms_item_id['message-id'])) { logger('mailstream_cron: Item ' . $ms_item_id['id'] . ' URI ' . $ms_item_id['uri'] . ' has no message-id', LOGGER_NORMAL); } $items = q('SELECT * FROM `item` WHERE `id` = %d', $ms_item_id['id']); $item = $items[0]; $users = q("SELECT * FROM `user` WHERE `uid` = %d", intval($item['uid'])); $user = $users[0]; if ($user && $item) { mailstream_send($a, $ms_item_id['message-id'], $item, $user); } else { logger('mailstream_cron: Unable to find item ' . $ms_item_id['id'], LOGGER_NORMAL); q("UPDATE `mailstream_item` SET `completed` = now() WHERE `message-id` = %d", intval($ms_item['message-id'])); } } mailstream_tidy(); }
function mailstream_cron($a, $b) { $ms_items = q("SELECT * FROM `mailstream_item` WHERE `completed` IS NULL LIMIT 100"); logger('mailstream_cron processing ' . count($ms_items) . ' items', LOGGER_DEBUG); foreach ($ms_items as $ms_item) { $items = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' AND `contact-id` = %d", intval($ms_item['uid']), dbesc($ms_item['uri']), intval($ms_item['contact-id'])); $item = $items[0]; $users = q("SELECT * FROM `user` WHERE `uid` = %d", intval($ms_item['uid'])); $user = $users[0]; if ($user && $item) { mailstream_send($a, $ms_item, $item, $user); } else { logger('mailstream_cron: Unable to find item ' . $ms_item['uri'], LOGGER_NORMAL); q("UPDATE `mailstream_item` SET `completed` = now() WHERE `id` = %d", intval($ms_item['id'])); } } mailstream_tidy(); }