2018-05-18 01:30:49 +02:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* @file src/Model/PushSubscriber.php
|
|
|
|
*/
|
|
|
|
namespace Friendica\Model;
|
|
|
|
|
|
|
|
use Friendica\Core\Worker;
|
|
|
|
use dba;
|
|
|
|
|
|
|
|
require_once 'include/dba.php';
|
|
|
|
|
|
|
|
class PushSubscriber
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @param string $priority Priority for push workers
|
|
|
|
*/
|
2018-05-18 01:47:15 +02:00
|
|
|
public static function publishFeed($default_priority = PRIORITY_HIGH)
|
2018-05-18 01:30:49 +02:00
|
|
|
{
|
|
|
|
// We'll push to each subscriber that has push > 0,
|
|
|
|
// i.e. there has been an update (set in notifier.php).
|
2018-05-18 01:43:44 +02:00
|
|
|
$subscribers = dba::select('push_subscriber', ['id', 'push', 'callback_url'], ["`push` > 0 AND `next_try` < UTC_TIMESTAMP()"]);
|
2018-05-18 01:30:49 +02:00
|
|
|
|
|
|
|
while ($subscriber = dba::fetch($subscribers)) {
|
2018-05-18 01:43:44 +02:00
|
|
|
// We always handle retries with low priority
|
|
|
|
if ($subscriber["push"] > 1) {
|
|
|
|
$priority = PRIORITY_LOW;
|
2018-05-18 01:47:15 +02:00
|
|
|
} else {
|
|
|
|
$priority = $default_priority;
|
2018-05-18 01:43:44 +02:00
|
|
|
}
|
2018-05-18 01:47:15 +02:00
|
|
|
|
2018-05-18 01:43:44 +02:00
|
|
|
logger("Publish feed to " . $subscriber["callback_url"] . " with priority " . $priority, LOGGER_DEBUG);
|
2018-05-18 01:30:49 +02:00
|
|
|
Worker::add($priority, 'PubSubPublish', (int)$subscriber["id"]);
|
|
|
|
}
|
|
|
|
|
|
|
|
dba::close($subscribers);
|
|
|
|
}
|
|
|
|
}
|