Moved functionality in new model class
This commit is contained in:
parent
5a1e1c1ec9
commit
61824119e4
|
@ -0,0 +1,30 @@
|
||||||
|
<?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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,6 +11,7 @@ use Friendica\Database\DBM;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
use Friendica\Model\Group;
|
use Friendica\Model\Group;
|
||||||
use Friendica\Model\User;
|
use Friendica\Model\User;
|
||||||
|
use Friendica\Model\PushSubscriber;
|
||||||
use Friendica\Network\Probe;
|
use Friendica\Network\Probe;
|
||||||
use Friendica\Protocol\Diaspora;
|
use Friendica\Protocol\Diaspora;
|
||||||
use Friendica\Protocol\OStatus;
|
use Friendica\Protocol\OStatus;
|
||||||
|
@ -506,8 +507,7 @@ class Notifier {
|
||||||
logger('Activating internal PuSH for item '.$item_id, LOGGER_DEBUG);
|
logger('Activating internal PuSH for item '.$item_id, LOGGER_DEBUG);
|
||||||
|
|
||||||
// Handling the pubsubhubbub requests
|
// Handling the pubsubhubbub requests
|
||||||
Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
|
PushSubscriber::publishFeed($a->queue['priority']);
|
||||||
'PubSubPublish');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
logger('notifier: calling hooks for ' . $cmd . ' ' . $item_id, LOGGER_DEBUG);
|
logger('notifier: calling hooks for ' . $cmd . ' ' . $item_id, LOGGER_DEBUG);
|
||||||
|
|
|
@ -20,24 +20,11 @@ require_once 'include/items.php';
|
||||||
class PubSubPublish {
|
class PubSubPublish {
|
||||||
public static function execute($pubsubpublish_id = 0)
|
public static function execute($pubsubpublish_id = 0)
|
||||||
{
|
{
|
||||||
global $a;
|
if ($pubsubpublish_id == 0) {
|
||||||
|
|
||||||
if ($pubsubpublish_id != 0) {
|
|
||||||
self::publish($pubsubpublish_id);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We'll push to each subscriber that has push > 0,
|
self::publish($pubsubpublish_id);
|
||||||
// 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function publish($id) {
|
private static function publish($id) {
|
||||||
|
|
|
@ -10,6 +10,7 @@ use Friendica\Core\Config;
|
||||||
use Friendica\Core\Worker;
|
use Friendica\Core\Worker;
|
||||||
use Friendica\Database\DBM;
|
use Friendica\Database\DBM;
|
||||||
use Friendica\Model\Queue as QueueModel;
|
use Friendica\Model\Queue as QueueModel;
|
||||||
|
use Friendica\Model\PushSubscriber;
|
||||||
use Friendica\Protocol\DFRN;
|
use Friendica\Protocol\DFRN;
|
||||||
use Friendica\Protocol\Diaspora;
|
use Friendica\Protocol\Diaspora;
|
||||||
use Friendica\Protocol\PortableContact;
|
use Friendica\Protocol\PortableContact;
|
||||||
|
@ -34,7 +35,7 @@ class Queue
|
||||||
logger('filling queue jobs - start');
|
logger('filling queue jobs - start');
|
||||||
|
|
||||||
// Handling the pubsubhubbub requests
|
// 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`"));
|
$r = dba::inArray(dba::p("SELECT `id` FROM `queue` WHERE `next` < UTC_TIMESTAMP() ORDER BY `batch`, `cid`"));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user