function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $filetype, $visibility = false)
{
// get data about the api authenticated user
- $uri = item_new_uri(get_app()->get_hostname(), intval(api_user()));
+ $uri = Item::newURI(intval(api_user()));
$owner_record = q("SELECT * FROM `contact` WHERE `uid`= %d AND `self` LIMIT 1", intval(api_user()));
$arr = [];
return $ret;
}
-
-/**
- * generate a guaranteed unique (for this domain) item ID for ATOM
- * safe from birthday paradox
- *
- * @param string $hostname
- * @param int $uid
- * @return string
- */
-function item_new_uri($hostname, $uid, $guid = "") {
-
- do {
- if ($guid == "") {
- $hash = get_guid(32);
- } else {
- $hash = $guid;
- $guid = "";
- }
-
- $uri = "urn:X-dfrn:" . $hostname . ':' . $uid . ':' . $hash;
-
- $dups = dba::exists('item', ['uri' => $uri]);
- } while ($dups == true);
-
- return $uri;
-}
-
/**
* @deprecated
* wrapper to load a view template, checking for alternate
$notify_type = ($parent ? 'comment-new' : 'wall-new');
- $uri = ($message_id ? $message_id : item_new_uri($a->get_hostname(), $profile_uid, $guid));
+ $uri = ($message_id ? $message_id : Item::newURI($profile_uid, $guid));
// Fallback so that we alway have a parent uri
if (!$thr_parent_uri || !$parent) {
if (!$item_id) {
// Create item container
$title = '';
- $uri = item_new_uri($a->get_hostname(),$page_owner_uid);
+ $uri = Item::newURI($page_owner_uid);
$arr = [];
$arr['guid'] = get_guid(32);
if (count($taginfo)) {
foreach ($taginfo as $tagged) {
- $uri = item_new_uri($a->get_hostname(), $page_owner_uid);
+ $uri = Item::newURI($page_owner_uid);
$arr = [];
$arr['guid'] = get_guid(32);
$smallest = 2;
}
- $uri = item_new_uri($a->get_hostname(), $page_owner_uid);
+ $uri = Item::newURI($page_owner_uid);
// Create item container
$lat = $lon = null;
$poster = $a->contact;
- $uri = item_new_uri($a->get_hostname(), $uid);
+ $uri = Item::newURI($uid);
$arr = [];
return;
}
- $uri = item_new_uri($a->get_hostname(),$owner_uid);
+ $uri = Item::newURI($owner_uid);
$post_type = (($item['resource-id']) ? L10n::t('photo') : L10n::t('status'));
$objtype = (($item['resource-id']) ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE );
return;
}
- $uri = item_new_uri($a->get_hostname(),$owner_uid);
+ $uri = Item::newURI($owner_uid);
$xterm = xmlify($term);
$post_type = (($item['resource-id']) ? L10n::t('photo') : L10n::t('status'));
$targettype = (($item['resource-id']) ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE );
$event['id'] = intval(defaults($arr, 'id' , 0));
$event['uid'] = intval(defaults($arr, 'uid' , 0));
$event['cid'] = intval(defaults($arr, 'cid' , 0));
- $event['uri'] = defaults($arr, 'uri' , item_new_uri($a->get_hostname(), $event['uid']));
+ $event['uri'] = defaults($arr, 'uri' , Item::newURI($event['uid']));
$event['type'] = defaults($arr, 'type' , 'event');
$event['summary'] = defaults($arr, 'summary' , '');
$event['desc'] = defaults($arr, 'desc' , '');
}
$item['guid'] = self::guid($item, $notify);
- $item['uri'] = notags(trim(defaults($item, 'uri', item_new_uri($a->get_hostname(), $item['uid'], $item['guid']))));
+ $item['uri'] = notags(trim(defaults($item, 'uri', self::newURI($item['uid'], $item['guid']))));
// Store conversation data
$item = Conversation::insert($item);
}
//unset($item['author-link']);
- //unset($item['author-name']);
- //unset($item['author-avatar']);
+ unset($item['author-name']);
+ unset($item['author-avatar']);
//unset($item['owner-link']);
unset($item['owner-name']);
return $guid_prefix.$host_hash;
}
+ /**
+ * generate an unique URI
+ *
+ * @param integer $uid User id
+ * @param string $guid An existing GUID (Otherwise it will be generated)
+ *
+ * @return string
+ */
+ public static function newURI($uid, $guid = "")
+ {
+ if ($guid == "") {
+ $guid = get_guid(32);
+ }
+
+ $hostname = self::getApp()->get_hostname();
+
+ $user = dba::selectFirst('user', ['nickname'], ['uid' => $uid]);
+
+ $uri = "urn:X-dfrn:" . $hostname . ':' . $user['nickname'] . ':' . $guid;
+
+ return $uri;
+ }
+
/**
* @brief Set "success_update" and "last-item" to the date of the last time we heard from this contact
*
if ($contact['network'] != NETWORK_FEED) {
$datarray["guid"] = get_guid(32);
unset($datarray["plink"]);
- $datarray["uri"] = item_new_uri($a->get_hostname(), $contact['uid'], $datarray["guid"]);
+ $datarray["uri"] = self::newURI($contact['uid'], $datarray["guid"]);
$datarray["parent-uri"] = $datarray["uri"];
$datarray["thr-parent"] = $datarray["uri"];
$datarray["extid"] = NETWORK_DFRN;
$new_item = [
'guid' => get_guid(32),
- 'uri' => item_new_uri(self::getApp()->get_hostname(), $item['uid']),
+ 'uri' => self::newURI($item['uid']),
'uid' => $item['uid'],
'contact-id' => $item_contact_id,
'type' => 'activity',
*/
private static function getUriFromGuid($author, $guid, $onlyfound = false)
{
- $r = q("SELECT `uri` FROM `item` WHERE `guid` = '%s' LIMIT 1", dbesc($guid));
- if (DBM::is_result($r)) {
- return $r[0]["uri"];
+ $item = dba::selectFirst('item', ['uri'], ['guid' => $guid]);
+ if (DBM::is_result($item)) {
+ return $item["uri"];
} elseif (!$onlyfound) {
- return $author.":".$guid;
+ $contact = Contact::getDetailsByAddr($author, 0);
+ if (!empty($contact['network'])) {
+ $prefix = 'urn:X-' . $contact['network'] . ':';
+ } else {
+ // This fallback should happen most unlikely
+ $prefix = 'urn:X-dspr:';
+ }
+
+ $author_parts = explode('@', $author);
+
+ return $prefix . $author_parts[1] . ':' . $author_parts[0] . ':'. $guid;
}
return "";