diff --git a/config/dbstructure.config.php b/config/dbstructure.config.php index b2f451b04e..398f671b22 100644 --- a/config/dbstructure.config.php +++ b/config/dbstructure.config.php @@ -537,7 +537,8 @@ return [ "success" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date of the last successful delivery"], "failure" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date of the last failed delivery"], "previous" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Previous delivery date"], - "archive" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Is the inbox archived?"] + "archive" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Is the inbox archived?"], + "shared" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Is it a shared inbox?"] ], "indexes" => [ "PRIMARY" => ["url"] diff --git a/src/Model/APContact.php b/src/Model/APContact.php index 4ae6dbd1dc..97178f697c 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -123,14 +123,14 @@ class APContact extends BaseObject $apcontact['following'] = JsonLD::fetchElement($compacted, 'as:following', '@id'); $apcontact['followers'] = JsonLD::fetchElement($compacted, 'as:followers', '@id'); $apcontact['inbox'] = JsonLD::fetchElement($compacted, 'ldp:inbox', '@id'); - self::unarchiveInbox($apcontact['inbox']); + self::unarchiveInbox($apcontact['inbox'], false); $apcontact['outbox'] = JsonLD::fetchElement($compacted, 'as:outbox', '@id'); $apcontact['sharedinbox'] = ''; if (!empty($compacted['as:endpoints'])) { $apcontact['sharedinbox'] = JsonLD::fetchElement($compacted['as:endpoints'], 'as:sharedInbox', '@id'); - self::unarchiveInbox($apcontact['sharedinbox']); + self::unarchiveInbox($apcontact['sharedinbox'], true); } $apcontact['nick'] = JsonLD::fetchElement($compacted, 'as:preferredUsername'); @@ -240,7 +240,7 @@ class APContact extends BaseObject * * @param string $url inbox url */ - private static function unarchiveInbox($url) + private static function unarchiveInbox($url, $shared) { if (empty($url)) { return; @@ -248,12 +248,12 @@ class APContact extends BaseObject $now = DateTimeFormat::utcNow(); + $fields = ['archive' => false, 'success' => $now, 'shared' => $shared]; + if (!DBA::exists('inbox-status', ['url' => $url])) { - $fields = ['archive' => false, 'success' => $now, - 'url' => $url, 'created' => $now]; + $fields = array_merge($fields, ['url' => $url, 'created' => $now]); DBA::insert('inbox-status', $fields); } else { - $fields = ['archive' => false, 'success' => $now]; DBA::update('inbox-status', $fields, ['url' => $url]); } }