diff --git a/include/api.php b/include/api.php index 5510eddb4..52f8e7ad8 100644 --- a/include/api.php +++ b/include/api.php @@ -4534,7 +4534,7 @@ function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $f $owner_record = DBA::selectFirst('contact', [], ['uid' => api_user(), 'self' => true]); $arr = []; - $arr['guid'] = System::createGUID(32); + $arr['guid'] = System::UUID(); $arr['uid'] = intval(api_user()); $arr['uri'] = $uri; $arr['parent-uri'] = $uri; diff --git a/mod/item.php b/mod/item.php index 213a99078..c8207984a 100644 --- a/mod/item.php +++ b/mod/item.php @@ -240,7 +240,7 @@ function item_post(App $a) { $emailcc = notags(trim(defaults($_REQUEST, 'emailcc' , ''))); $body = escape_tags(trim(defaults($_REQUEST, 'body' , ''))); $network = notags(trim(defaults($_REQUEST, 'network' , Protocol::DFRN))); - $guid = System::createGUID(32); + $guid = System::UUID(); $postopts = defaults($_REQUEST, 'postopts', ''); diff --git a/mod/photos.php b/mod/photos.php index e205d72c6..9794e9e7c 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -472,7 +472,7 @@ function photos_post(App $a) $uri = Item::newURI($page_owner_uid); $arr = []; - $arr['guid'] = System::createGUID(32); + $arr['guid'] = System::UUID(); $arr['uid'] = $page_owner_uid; $arr['uri'] = $uri; $arr['parent-uri'] = $uri; @@ -651,7 +651,7 @@ function photos_post(App $a) $uri = Item::newURI($page_owner_uid); $arr = []; - $arr['guid'] = System::createGUID(32); + $arr['guid'] = System::UUID(); $arr['uid'] = $page_owner_uid; $arr['uri'] = $uri; $arr['parent-uri'] = $uri; @@ -889,7 +889,7 @@ function photos_post(App $a) $arr['coord'] = $lat . ' ' . $lon; } - $arr['guid'] = System::createGUID(32); + $arr['guid'] = System::UUID(); $arr['uid'] = $page_owner_uid; $arr['uri'] = $uri; $arr['parent-uri'] = $uri; diff --git a/mod/poke.php b/mod/poke.php index 91f33c0de..46c9d2f4a 100644 --- a/mod/poke.php +++ b/mod/poke.php @@ -97,7 +97,7 @@ function poke_init(App $a) $arr = []; - $arr['guid'] = System::createGUID(32); + $arr['guid'] = System::UUID(); $arr['uid'] = $uid; $arr['uri'] = $uri; $arr['parent-uri'] = (!empty($parent_uri) ? $parent_uri : $uri); diff --git a/mod/subthread.php b/mod/subthread.php index 1153f2147..901bb0129 100644 --- a/mod/subthread.php +++ b/mod/subthread.php @@ -108,7 +108,7 @@ EOT; $arr = []; - $arr['guid'] = System::createGUID(32); + $arr['guid'] = System::UUID(); $arr['uri'] = $uri; $arr['uid'] = $owner_uid; $arr['contact-id'] = $contact['id']; diff --git a/mod/tagger.php b/mod/tagger.php index 959394c07..889ccd16f 100644 --- a/mod/tagger.php +++ b/mod/tagger.php @@ -115,7 +115,7 @@ EOT; $arr = []; - $arr['guid'] = System::createGUID(32); + $arr['guid'] = System::UUID(); $arr['uri'] = $uri; $arr['uid'] = $owner_uid; $arr['contact-id'] = $contact['id']; diff --git a/src/Core/System.php b/src/Core/System.php index 88b89cda2..4eb6be080 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -161,6 +161,18 @@ class System extends BaseObject killme(); } + /** + * Generates a random string in the UUID format + * + * @param bool|string $prefix A given prefix (default is empty) + * @return string a generated UUID + */ + public static function UUID($prefix = '') + { + $guid = System::createGUID(32, $prefix); + return substr($guid, 0, 8). '-' . substr($guid, 8, 4) . '-' . substr($guid, 12, 4) . '-' . substr($guid, 16, 4) . '-' . substr($guid, 20, 12); + } + /** * Generates a GUID with the given parameters * diff --git a/src/Model/Event.php b/src/Model/Event.php index 016d1f8d9..f08e12989 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -314,7 +314,7 @@ class Event extends BaseObject Addon::callHooks('event_updated', $event['id']); } else { - $event['guid'] = defaults($arr, 'guid', System::createGUID(32)); + $event['guid'] = defaults($arr, 'guid', System::UUID()); // New event. Store it. DBA::insert('event', $event); diff --git a/src/Model/Item.php b/src/Model/Item.php index e33cf020d..d8e814b8e 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1205,7 +1205,7 @@ class Item extends BaseObject } elseif (!empty($item['uri'])) { $guid = self::guidFromUri($item['uri'], $prefix_host); } else { - $guid = System::createGUID(32, hash('crc32', $prefix_host)); + $guid = System::UUID(hash('crc32', $prefix_host)); } return $guid; @@ -2359,7 +2359,7 @@ class Item extends BaseObject public static function newURI($uid, $guid = "") { if ($guid == "") { - $guid = System::createGUID(32); + $guid = System::UUID(); } return self::getApp()->get_baseurl() . '/object/' . $guid; @@ -2686,7 +2686,7 @@ class Item extends BaseObject } if ($contact['network'] != Protocol::FEED) { - $datarray["guid"] = System::createGUID(32); + $datarray["guid"] = System::UUID(); unset($datarray["plink"]); $datarray["uri"] = self::newURI($contact['uid'], $datarray["guid"]); $datarray["parent-uri"] = $datarray["uri"]; @@ -3115,7 +3115,7 @@ class Item extends BaseObject $objtype = $item['resource-id'] ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE ; $new_item = [ - 'guid' => System::createGUID(32), + 'guid' => System::UUID(), 'uri' => self::newURI($item['uid']), 'uid' => $item['uid'], 'contact-id' => $item_contact_id, diff --git a/src/Model/Mail.php b/src/Model/Mail.php index 24a174b6b..64a99d4de 100644 --- a/src/Model/Mail.php +++ b/src/Model/Mail.php @@ -46,7 +46,7 @@ class Mail return -2; } - $guid = System::createGUID(32); + $guid = System::UUID(); $uri = 'urn:X-dfrn:' . System::baseUrl() . ':' . local_user() . ':' . $guid; $convid = 0; @@ -73,7 +73,7 @@ class Mail $recip_handle = (($contact['addr']) ? $contact['addr'] : $contact['nick'] . '@' . $recip_host); $sender_handle = $a->user['nickname'] . '@' . substr(System::baseUrl(), strpos(System::baseUrl(), '://') + 3); - $conv_guid = System::createGUID(32); + $conv_guid = System::UUID(); $convuri = $recip_handle . ':' . $conv_guid; $handles = $recip_handle . ';' . $sender_handle; @@ -171,7 +171,7 @@ class Mail $subject = L10n::t('[no subject]'); } - $guid = System::createGUID(32); + $guid = System::UUID(); $uri = 'urn:X-dfrn:' . System::baseUrl() . ':' . local_user() . ':' . $guid; $me = Probe::uri($replyto); @@ -180,7 +180,7 @@ class Mail return -2; } - $conv_guid = System::createGUID(32); + $conv_guid = System::UUID(); $recip_handle = $recipient['nickname'] . '@' . substr(System::baseUrl(), strpos(System::baseUrl(), '://') + 3); diff --git a/src/Model/User.php b/src/Model/User.php index d65e7d8f9..366490bfc 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -495,7 +495,7 @@ class User $spubkey = $sres['pubkey']; $insert_result = DBA::insert('user', [ - 'guid' => System::createGUID(32), + 'guid' => System::UUID(), 'username' => $username, 'password' => $new_password_encoded, 'email' => $email, diff --git a/src/Protocol/ActivityPub.php b/src/Protocol/ActivityPub.php index 0229aaac3..539a7302b 100644 --- a/src/Protocol/ActivityPub.php +++ b/src/Protocol/ActivityPub.php @@ -78,9 +78,10 @@ class ActivityPub const PUBLIC = 'https://www.w3.org/ns/activitystreams#Public'; const CONTEXT = ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1', ['ostatus' => 'http://ostatus.org#', 'uuid' => 'http://schema.org/identifier', - 'sensitive' => 'as:sensitive', 'Hashtag' => 'as:Hashtag', - 'atomUri' => 'ostatus:atomUri', 'conversation' => 'ostatus:conversation', - 'inReplyToAtomUri' => 'ostatus:inReplyToAtomUri']]; + 'vcard' => 'http://www.w3.org/2006/vcard/ns#', + 'diaspora' => 'https://diasporafoundation.org#', + 'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers', + 'sensitive' => 'as:sensitive', 'Hashtag' => 'as:Hashtag']]; public static function isRequest() { @@ -235,12 +236,9 @@ class ActivityPub return []; } - $data = ['@context' => ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1', - ['vcard' => 'http://www.w3.org/2006/vcard/ns#', 'uuid' => 'http://schema.org/identifier', - 'sensitive' => 'as:sensitive', 'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers']]]; - + $data = ['@context' => self::CONTEXT]; $data['id'] = $contact['url']; - $data['uuid'] = $user['guid']; + $data['diaspora:guid'] = $user['guid']; $data['type'] = $accounttype[$user['account-type']]; $data['following'] = System::baseUrl() . '/following/' . $user['nickname']; $data['followers'] = System::baseUrl() . '/followers/' . $user['nickname']; @@ -562,19 +560,6 @@ class ActivityPub return $tags; } - private static function fetchConversationURLForItem($item) - { - $conversation = DBA::selectFirst('conversation', ['conversation-href', 'conversation-uri'], ['item-uri' => $item['parent-uri']]); - if (DBA::isResult($conversation) && !empty($conversation['conversation-uri'])) { - $conversation_uri = $conversation['conversation-uri']; - } elseif (DBA::isResult($conversation) && !empty($conversation['conversation-href'])) { - $conversation_uri = $conversation['conversation-href']; - } else { - $conversation_uri = str_replace('/object/', '/context/', $item['parent-uri']); - } - return $conversation_uri; - } - private static function fetchContextURLForItem($item) { $conversation = DBA::selectFirst('conversation', ['conversation-href', 'conversation-uri'], ['item-uri' => $item['parent-uri']]); @@ -616,7 +601,7 @@ class ActivityPub $data['inReplyTo'] = null; } - $data['uuid'] = $item['guid']; + $data['diaspora:guid'] = $item['guid']; $data['published'] = DateTimeFormat::utc($item["created"]."+00:00", DateTimeFormat::ATOM); if ($item["created"] != $item["edited"]) { @@ -627,7 +612,6 @@ class ActivityPub $data['attributedTo'] = $item['author-link']; $data['actor'] = $item['author-link']; $data['sensitive'] = false; // - Query NSFW - $data['conversation'] = self::fetchConversationURLForItem($item); $data['context'] = self::fetchContextURLForItem($item); if (!empty($item['title'])) { @@ -755,7 +739,7 @@ class ActivityPub $profile = ['network' => Protocol::ACTIVITYPUB]; $profile['nick'] = $apcontact['nick']; $profile['name'] = $apcontact['name']; - $profile['guid'] = $apcontact['uuid']; + $profile['guid'] = $apcontact['diaspora:guid']; $profile['url'] = $apcontact['url']; $profile['addr'] = $apcontact['addr']; $profile['alias'] = $apcontact['alias']; @@ -1232,9 +1216,6 @@ class ActivityPub // Data in Notes: - // To-Do? - // emoji, atomUri, inReplyToAtomUri - // Unhandled // contentMap, announcement_count, announcements, context_id, likes, like_count // inReplyToStatusId, shares, quoteUrl, statusnetConversationId @@ -1368,7 +1349,7 @@ class ActivityPub $item['uri'] = $activity['id']; $item['created'] = $activity['published']; $item['edited'] = $activity['updated']; - $item['guid'] = $activity['uuid']; + $item['guid'] = $activity['diaspora:guid']; $item['title'] = HTML::toBBCode($activity['name']); $item['content-warning'] = HTML::toBBCode($activity['summary']); $item['body'] = self::convertMentions(HTML::toBBCode($activity['content'])); diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index e7edcdc49..5239255fe 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -3200,7 +3200,7 @@ class Diaspora $author = self::myHandle($owner); $message = ["author" => $author, - "guid" => System::createGUID(32), + "guid" => System::UUID(), "parent_type" => "Post", "parent_guid" => $item["guid"]];