Merge pull request #5230 from annando/new-item-uri
New function for generating item URI
This commit is contained in:
commit
7d1bb9ecf4
10 changed files with 51 additions and 45 deletions
|
@ -4599,7 +4599,7 @@ function save_media_to_database($mediatype, $media, $type, $album, $allow_cid, $
|
||||||
function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $filetype, $visibility = false)
|
function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $filetype, $visibility = false)
|
||||||
{
|
{
|
||||||
// get data about the api authenticated user
|
// 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()));
|
$owner_record = q("SELECT * FROM `contact` WHERE `uid`= %d AND `self` LIMIT 1", intval(api_user()));
|
||||||
|
|
||||||
$arr = [];
|
$arr = [];
|
||||||
|
|
|
@ -462,33 +462,6 @@ function perms2str($p) {
|
||||||
return $ret;
|
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
|
* @deprecated
|
||||||
* wrapper to load a view template, checking for alternate
|
* wrapper to load a view template, checking for alternate
|
||||||
|
|
|
@ -576,7 +576,7 @@ function item_post(App $a) {
|
||||||
|
|
||||||
$notify_type = ($parent ? 'comment-new' : 'wall-new');
|
$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
|
// Fallback so that we alway have a parent uri
|
||||||
if (!$thr_parent_uri || !$parent) {
|
if (!$thr_parent_uri || !$parent) {
|
||||||
|
|
|
@ -454,7 +454,7 @@ function photos_post(App $a)
|
||||||
if (!$item_id) {
|
if (!$item_id) {
|
||||||
// Create item container
|
// Create item container
|
||||||
$title = '';
|
$title = '';
|
||||||
$uri = item_new_uri($a->get_hostname(),$page_owner_uid);
|
$uri = Item::newURI($page_owner_uid);
|
||||||
|
|
||||||
$arr = [];
|
$arr = [];
|
||||||
$arr['guid'] = get_guid(32);
|
$arr['guid'] = get_guid(32);
|
||||||
|
@ -624,7 +624,7 @@ function photos_post(App $a)
|
||||||
|
|
||||||
if (count($taginfo)) {
|
if (count($taginfo)) {
|
||||||
foreach ($taginfo as $tagged) {
|
foreach ($taginfo as $tagged) {
|
||||||
$uri = item_new_uri($a->get_hostname(), $page_owner_uid);
|
$uri = Item::newURI($page_owner_uid);
|
||||||
|
|
||||||
$arr = [];
|
$arr = [];
|
||||||
$arr['guid'] = get_guid(32);
|
$arr['guid'] = get_guid(32);
|
||||||
|
@ -848,7 +848,7 @@ function photos_post(App $a)
|
||||||
$smallest = 2;
|
$smallest = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
$uri = item_new_uri($a->get_hostname(), $page_owner_uid);
|
$uri = Item::newURI($page_owner_uid);
|
||||||
|
|
||||||
// Create item container
|
// Create item container
|
||||||
$lat = $lon = null;
|
$lat = $lon = null;
|
||||||
|
|
|
@ -92,7 +92,7 @@ function poke_init(App $a) {
|
||||||
|
|
||||||
$poster = $a->contact;
|
$poster = $a->contact;
|
||||||
|
|
||||||
$uri = item_new_uri($a->get_hostname(), $uid);
|
$uri = Item::newURI($uid);
|
||||||
|
|
||||||
$arr = [];
|
$arr = [];
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ function subthread_content(App $a) {
|
||||||
return;
|
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'));
|
$post_type = (($item['resource-id']) ? L10n::t('photo') : L10n::t('status'));
|
||||||
$objtype = (($item['resource-id']) ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE );
|
$objtype = (($item['resource-id']) ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE );
|
||||||
|
|
|
@ -65,7 +65,7 @@ function tagger_content(App $a) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$uri = item_new_uri($a->get_hostname(),$owner_uid);
|
$uri = Item::newURI($owner_uid);
|
||||||
$xterm = xmlify($term);
|
$xterm = xmlify($term);
|
||||||
$post_type = (($item['resource-id']) ? L10n::t('photo') : L10n::t('status'));
|
$post_type = (($item['resource-id']) ? L10n::t('photo') : L10n::t('status'));
|
||||||
$targettype = (($item['resource-id']) ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE );
|
$targettype = (($item['resource-id']) ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE );
|
||||||
|
|
|
@ -234,7 +234,7 @@ class Event extends BaseObject
|
||||||
$event['id'] = intval(defaults($arr, 'id' , 0));
|
$event['id'] = intval(defaults($arr, 'id' , 0));
|
||||||
$event['uid'] = intval(defaults($arr, 'uid' , 0));
|
$event['uid'] = intval(defaults($arr, 'uid' , 0));
|
||||||
$event['cid'] = intval(defaults($arr, 'cid' , 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['type'] = defaults($arr, 'type' , 'event');
|
||||||
$event['summary'] = defaults($arr, 'summary' , '');
|
$event['summary'] = defaults($arr, 'summary' , '');
|
||||||
$event['desc'] = defaults($arr, 'desc' , '');
|
$event['desc'] = defaults($arr, 'desc' , '');
|
||||||
|
|
|
@ -675,7 +675,7 @@ class Item extends BaseObject
|
||||||
}
|
}
|
||||||
|
|
||||||
$item['guid'] = self::guid($item, $notify);
|
$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
|
// Store conversation data
|
||||||
$item = Conversation::insert($item);
|
$item = Conversation::insert($item);
|
||||||
|
@ -853,8 +853,8 @@ class Item extends BaseObject
|
||||||
}
|
}
|
||||||
|
|
||||||
//unset($item['author-link']);
|
//unset($item['author-link']);
|
||||||
//unset($item['author-name']);
|
unset($item['author-name']);
|
||||||
//unset($item['author-avatar']);
|
unset($item['author-avatar']);
|
||||||
|
|
||||||
//unset($item['owner-link']);
|
//unset($item['owner-link']);
|
||||||
unset($item['owner-name']);
|
unset($item['owner-name']);
|
||||||
|
@ -1528,6 +1528,29 @@ class Item extends BaseObject
|
||||||
return $guid_prefix.$host_hash;
|
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
|
* @brief Set "success_update" and "last-item" to the date of the last time we heard from this contact
|
||||||
*
|
*
|
||||||
|
@ -1844,7 +1867,7 @@ class Item extends BaseObject
|
||||||
if ($contact['network'] != NETWORK_FEED) {
|
if ($contact['network'] != NETWORK_FEED) {
|
||||||
$datarray["guid"] = get_guid(32);
|
$datarray["guid"] = get_guid(32);
|
||||||
unset($datarray["plink"]);
|
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["parent-uri"] = $datarray["uri"];
|
||||||
$datarray["thr-parent"] = $datarray["uri"];
|
$datarray["thr-parent"] = $datarray["uri"];
|
||||||
$datarray["extid"] = NETWORK_DFRN;
|
$datarray["extid"] = NETWORK_DFRN;
|
||||||
|
@ -2316,7 +2339,7 @@ EOT;
|
||||||
|
|
||||||
$new_item = [
|
$new_item = [
|
||||||
'guid' => get_guid(32),
|
'guid' => get_guid(32),
|
||||||
'uri' => item_new_uri(self::getApp()->get_hostname(), $item['uid']),
|
'uri' => self::newURI($item['uid']),
|
||||||
'uid' => $item['uid'],
|
'uid' => $item['uid'],
|
||||||
'contact-id' => $item_contact_id,
|
'contact-id' => $item_contact_id,
|
||||||
'type' => 'activity',
|
'type' => 'activity',
|
||||||
|
|
|
@ -1602,11 +1602,21 @@ class Diaspora
|
||||||
*/
|
*/
|
||||||
private static function getUriFromGuid($author, $guid, $onlyfound = false)
|
private static function getUriFromGuid($author, $guid, $onlyfound = false)
|
||||||
{
|
{
|
||||||
$r = q("SELECT `uri` FROM `item` WHERE `guid` = '%s' LIMIT 1", dbesc($guid));
|
$item = dba::selectFirst('item', ['uri'], ['guid' => $guid]);
|
||||||
if (DBM::is_result($r)) {
|
if (DBM::is_result($item)) {
|
||||||
return $r[0]["uri"];
|
return $item["uri"];
|
||||||
} elseif (!$onlyfound) {
|
} 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 "";
|
return "";
|
||||||
|
|
Loading…
Reference in a new issue