X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FWorker%2FUpdateContact.php;h=c2e443282056381cae6594c1c88d7a618e1d7e1f;hb=4139134cfd2f86ba6fec2adef37bca16ab466514;hp=7679431fd90d573dc1f7e962c066c7afd6287568;hpb=037cf01a1505f0f2e163c2ed1832ce5cd5f0fe71;p=friendica.git diff --git a/src/Worker/UpdateContact.php b/src/Worker/UpdateContact.php index 7679431fd9..c2e4432820 100644 --- a/src/Worker/UpdateContact.php +++ b/src/Worker/UpdateContact.php @@ -1,38 +1,71 @@ . + * */ namespace Friendica\Worker; use Friendica\Core\Logger; +use Friendica\Core\Worker; use Friendica\Model\Contact; -use Friendica\Util\DateTimeFormat; -use Friendica\Database\DBA; +use Friendica\Network\HTTPException\InternalServerErrorException; +use Friendica\Util\Network; class UpdateContact { - public static function execute($contact_id, $command = '') + /** + * Update contact data via probe + * + * @param int $contact_id Contact ID + * @return void + * @throws InternalServerErrorException + * @throws \ImagickException + */ + public static function execute(int $contact_id) { - $force = ($command == "force"); + // Silently dropping the task if the contact is blocked + if (Contact::isBlocked($contact_id)) { + return; + } - $success = Contact::updateFromProbe($contact_id, '', $force); + $success = Contact::updateFromProbe($contact_id); - Logger::info('Updated from probe', ['id' => $contact_id, 'force' => $force, 'success' => $success]); + Logger::info('Updated from probe', ['id' => $contact_id, 'success' => $success]); + } - // Update the update date fields only when we are forcing the update - if (!$force) { - return; + /** + * @param array|int $run_parameters Priority constant or array of options described in Worker::add + * @param int $contact_id + * @return int + * @throws InternalServerErrorException + */ + public static function add($run_parameters, int $contact_id): int + { + if (!$contact_id) { + throw new \InvalidArgumentException('Invalid value provided for contact_id'); } - // Update the "last-update", "success_update" and "failure_update" field only when it is a public contact. - // These fields are set in OnePoll for all non public contacts. - $updated = DateTimeFormat::utcNow(); - if ($success) { - DBA::update('contact', ['last-update' => $updated, 'success_update' => $updated], ['id' => $contact_id, 'uid' => 0]); - } else { - DBA::update('contact', ['last-update' => $updated, 'failure_update' => $updated], ['id' => $contact_id, 'uid' => 0]); + // Dropping the task if the contact is blocked + if (Contact::isBlocked($contact_id)) { + return 0; } + + return Worker::add($run_parameters, 'UpdateContact', $contact_id); } }