X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FWorker%2FPubSubPublish.php;h=eab68b43041e26d4d30eef6270b6d8d96d011ffe;hb=bf8fb215a9cc554b5ec5b774168a52fb56fa43e6;hp=27b6f3d9a16853ef3a398ecd275f4edd08bfb56b;hpb=13ae3436b66665a42ad8c7519afcc95a6cce3957;p=friendica.git diff --git a/src/Worker/PubSubPublish.php b/src/Worker/PubSubPublish.php index 27b6f3d9a1..eab68b4304 100644 --- a/src/Worker/PubSubPublish.php +++ b/src/Worker/PubSubPublish.php @@ -1,23 +1,34 @@ . + * */ namespace Friendica\Worker; -use Friendica\App; -use Friendica\Core\System; -use Friendica\Core\Config; -use Friendica\Core\Worker; -use Friendica\Database\DBM; +use Friendica\Core\Logger; +use Friendica\Database\DBA; +use Friendica\DI; +use Friendica\Model\PushSubscriber; use Friendica\Protocol\OStatus; -use Friendica\Util\Network; -use Friendica\Util\DateTimeFormat; -use dba; -require_once 'include/items.php'; - -class PubSubPublish { +class PubSubPublish +{ public static function execute($pubsubpublish_id = 0) { if ($pubsubpublish_id == 0) { @@ -27,18 +38,17 @@ class PubSubPublish { self::publish($pubsubpublish_id); } - private static function publish($id) { - global $a; - - $subscriber = dba::selectFirst('push_subscriber', [], ['id' => $id]); - if (!DBM::is_result($subscriber)) { + private static function publish($id) + { + $subscriber = DBA::selectFirst('push_subscriber', [], ['id' => $id]); + if (!DBA::isResult($subscriber)) { return; } - /// @todo Check server status with PortableContact::checkServer() + /// @todo Check server status with GServer::check() // Before this can be done we need a way to safely detect the server url. - logger("Generate feed of user " . $subscriber['nickname']. " to " . $subscriber['callback_url']. " - last updated " . $subscriber['last_update'], LOGGER_DEBUG); + Logger::log("Generate feed of user " . $subscriber['nickname']. " to " . $subscriber['callback_url']. " - last updated " . $subscriber['last_update'], Logger::DEBUG); $last_update = $subscriber['last_update']; $params = OStatus::feed($subscriber['nickname'], $last_update); @@ -51,44 +61,23 @@ class PubSubPublish { $headers = ["Content-type: application/atom+xml", sprintf("Link: <%s>;rel=hub,<%s>;rel=self", - System::baseUrl() . '/pubsubhubbub/' . $subscriber['nickname'], + DI::baseUrl() . '/pubsubhubbub/' . $subscriber['nickname'], $subscriber['topic']), "X-Hub-Signature: sha1=" . $hmac_sig]; - logger('POST ' . print_r($headers, true) . "\n" . $params, LOGGER_DATA); - - Network::post($subscriber['callback_url'], $params, $headers); - $ret = $a->get_curl_code(); + Logger::log('POST ' . print_r($headers, true) . "\n" . $params, Logger::DATA); - $condition = ['id' => $subscriber['id']]; + $postResult = DI::httpRequest()->post($subscriber['callback_url'], $params, $headers); + $ret = $postResult->getReturnCode(); if ($ret >= 200 && $ret <= 299) { - logger('Successfully pushed to ' . $subscriber['callback_url']); - - // set last_update to the "created" date of the last item, and reset push=0 - $fields = ['push' => 0, 'next_try' => NULL_DATE, 'last_update' => $last_update]; - dba::update('push_subscriber', $fields, $condition); + Logger::log('Successfully pushed to ' . $subscriber['callback_url']); + PushSubscriber::reset($subscriber['id'], $last_update); } else { - logger('Delivery error when pushing to ' . $subscriber['callback_url'] . ' HTTP: ' . $ret); - - // we use the push variable also as a counter, if we failed we - // increment this until some upper limit where we give up - $retrial = $subscriber['push']; - - if ($retrial > 14) { - dba::update('push_subscriber', ['push' => 0, 'next_try' => NULL_DATE], $condition); - logger('Delivery error: Giving up for ' . $subscriber['callback_url'], LOGGER_DEBUG); - } else { - // Calculate the delay until the next trial - $delay = (($retrial + 3) ** 4) + (rand(1, 30) * ($retrial + 1)); - $next = DateTimeFormat::utc('now + ' . $delay . ' seconds'); - - $retrial = $retrial + 1; + Logger::log('Delivery error when pushing to ' . $subscriber['callback_url'] . ' HTTP: ' . $ret); - dba::update('push_subscriber', ['push' => $retrial, 'next_try' => $next], $condition); - logger('Delivery error: Next try (' . $retrial . ') for ' . $subscriber['callback_url'] . ' at ' . $next, LOGGER_DEBUG); - } + PushSubscriber::delay($subscriber['id']); } } }