X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FWorker%2FPubSubPublish.php;h=b6061f819995264c0abc83b1ba89f6ae3d1f106c;hb=066ad8c01b25b7101ad6fb36878d85c97db51a6f;hp=27b6f3d9a16853ef3a398ecd275f4edd08bfb56b;hpb=1d2b0c0a812b64152bbcc62969fcbd1ca33bcf4b;p=friendica.git diff --git a/src/Worker/PubSubPublish.php b/src/Worker/PubSubPublish.php index 27b6f3d9a1..b6061f8199 100644 --- a/src/Worker/PubSubPublish.php +++ b/src/Worker/PubSubPublish.php @@ -5,19 +5,15 @@ namespace Friendica\Worker; -use Friendica\App; +use Friendica\Core\Logger; use Friendica\Core\System; -use Friendica\Core\Config; -use Friendica\Core\Worker; -use Friendica\Database\DBM; +use Friendica\Database\DBA; +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 +23,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() // 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); @@ -55,40 +50,19 @@ class PubSubPublish { $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 = Network::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']); } } }