--- /dev/null
+<?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
+ */
+ public static function publishFeed($priority = PRIORITY_HIGH)
+ {
+ // We'll push to each subscriber that has push > 0,
+ // i.e. there has been an update (set in notifier.php).
+ $subscribers = dba::select('push_subscriber', ['id', 'callback_url'], ["`push` > 0 AND `next_try` < UTC_TIMESTAMP()"]);
+
+ while ($subscriber = dba::fetch($subscribers)) {
+ logger("Publish feed to " . $subscriber["callback_url"], LOGGER_DEBUG);
+ Worker::add($priority, 'PubSubPublish', (int)$subscriber["id"]);
+ }
+
+ dba::close($subscribers);
+ }
+}
use Friendica\Model\Contact;
use Friendica\Model\Group;
use Friendica\Model\User;
+use Friendica\Model\PushSubscriber;
use Friendica\Network\Probe;
use Friendica\Protocol\Diaspora;
use Friendica\Protocol\OStatus;
logger('Activating internal PuSH for item '.$item_id, LOGGER_DEBUG);
// Handling the pubsubhubbub requests
- Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
- 'PubSubPublish');
+ PushSubscriber::publishFeed($a->queue['priority']);
}
logger('notifier: calling hooks for ' . $cmd . ' ' . $item_id, LOGGER_DEBUG);
class PubSubPublish {
public static function execute($pubsubpublish_id = 0)
{
- global $a;
-
- if ($pubsubpublish_id != 0) {
- self::publish($pubsubpublish_id);
+ if ($pubsubpublish_id == 0) {
return;
}
- // We'll push to each subscriber that has push > 0,
- // i.e. there has been an update (set in notifier.php).
- $subscribers = dba::select('push_subscriber', ['id', 'callback_url'], ["`push` > 0 AND `next_try` < UTC_TIMESTAMP()"]);
-
- while ($subscriber = dba::fetch($subscribers)) {
- logger("Publish feed to " . $subscriber["callback_url"], LOGGER_DEBUG);
- Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
- 'PubSubPublish', (int)$subscriber["id"]);
- }
-
- dba::close($subscribers);
+ self::publish($pubsubpublish_id);
}
private static function publish($id) {
use Friendica\Core\Worker;
use Friendica\Database\DBM;
use Friendica\Model\Queue as QueueModel;
+use Friendica\Model\PushSubscriber;
use Friendica\Protocol\DFRN;
use Friendica\Protocol\Diaspora;
use Friendica\Protocol\PortableContact;
logger('filling queue jobs - start');
// Handling the pubsubhubbub requests
- Worker::add(['priority' => PRIORITY_LOW, 'dont_fork' => true], 'PubSubPublish');
+ PushSubscriber::publishFeed(PRIORITY_LOW);
$r = dba::inArray(dba::p("SELECT `id` FROM `queue` WHERE `next` < UTC_TIMESTAMP() ORDER BY `batch`, `cid`"));