);
}}
-function get_contact_details_by_url($url, $uid = -1) {
+function get_contact_details_by_url($url, $uid = -1, $default = array()) {
if ($uid == -1)
$uid = local_user();
- $r = q("SELECT `id` AS `gid`, `url`, `name`, `nick`, `addr`, `photo`, `location`, `about`, `keywords`, `gender`, `community`, `network` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
- dbesc(normalise_link($url)));
+ // community, nurl, alias, nsfw, birthday
- if ($r) {
- $profile = $r[0];
-
- if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND
- in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
- proc_run('php',"include/update_gcontact.php", $profile["gid"]);
- }
+ // Fetch contact data from the contact table for the user and given network
+ $r = q("SELECT `id`, `id` AS `cid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`,
+ `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd`, `bd` AS `birthday`, `self`
+ FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `network` IN ('%s', '')",
+ dbesc(normalise_link($url)), intval($uid), dbesc($profile["network"]));
- // Fetching further contact data from the contact table
- $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `thumb`, `addr`, `forum`, `prv`, `bd`, `self` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `network` IN ('%s', '')",
- dbesc(normalise_link($url)), intval($uid), dbesc($profile["network"]));
+ // Is the contact present for the user in a different network? (Can happen with OStatus and the "Statusnet" addon)
+ if (!count($r) AND !isset($profile))
+ $r = q("SELECT `id`, `id` AS `cid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`,
+ `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd`, `bd` AS `birthday`, `self`
+ FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d",
+ dbesc(normalise_link($url)), intval($uid));
+ // Fetch the data from the contact table with "uid=0" (which is filled automatically)
if (!count($r) AND !isset($profile))
- $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `thumb`, `addr`, `forum`, `prv`, `bd`, `self` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d",
- dbesc(normalise_link($url)), intval($uid));
+ $r = q("SELECT `id`, 0 AS `cid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`,
+ `keywords`, `gender`, `photo`, `thumb`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd`, `bd` AS `birthday`, 0 AS `self`
+ FROM `contact` WHERE `nurl` = '%s' AND `uid` = 0",
+ dbesc(normalise_link($url)));
+ // Fetch the data from the gcontact table
if (!count($r) AND !isset($profile))
- $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `thumb`, `addr`, `forum`, `prv`, `bd` FROM `contact` WHERE `nurl` = '%s' AND `uid` = 0",
- dbesc(normalise_link($url)));
-
- if ($r) {
- if (!isset($profile["url"]) AND $r[0]["url"])
- $profile["url"] = $r[0]["url"];
- if (!isset($profile["name"]) AND $r[0]["name"])
- $profile["name"] = $r[0]["name"];
- if (!isset($profile["nick"]) AND $r[0]["nick"])
- $profile["nick"] = $r[0]["nick"];
- if (!isset($profile["addr"]) AND $r[0]["addr"])
- $profile["addr"] = $r[0]["addr"];
- if ((!isset($profile["photo"]) OR $r[0]["self"]) AND $r[0]["photo"])
- $profile["photo"] = $r[0]["photo"];
- if (!isset($profile["location"]) AND $r[0]["location"])
- $profile["location"] = $r[0]["location"];
- if (!isset($profile["about"]) AND $r[0]["about"])
- $profile["about"] = $r[0]["about"];
- if (!isset($profile["keywords"]) AND $r[0]["keywords"])
- $profile["keywords"] = $r[0]["keywords"];
- if (!isset($profile["gender"]) AND $r[0]["gender"])
- $profile["gender"] = $r[0]["gender"];
- if (isset($r[0]["forum"]) OR isset($r[0]["prv"]))
- $profile["community"] = ($r[0]["forum"] OR $r[0]["prv"]);
- if (!isset($profile["network"]) AND $r[0]["network"])
- $profile["network"] = $r[0]["network"];
- if (!isset($profile["addr"]) AND $r[0]["addr"])
- $profile["addr"] = $r[0]["addr"];
- if (!isset($profile["bd"]) AND $r[0]["bd"])
- $profile["bd"] = $r[0]["bd"];
- if (isset($r[0]["thumb"]))
- $profile["thumb"] = $r[0]["thumb"];
- if ($r[0]["uid"] == 0)
- $profile["cid"] = 0;
- else
- $profile["cid"] = $r[0]["id"];
- } else
- $profile["cid"] = 0;
+ $r = q("SELECT 0 AS `id`, 0 AS `cid`, `id` AS `gid`, 0 AS `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`,
+ `keywords`, `gender`, `photo`, `photo` AS `thumb`, `community` AS `forum`, 0 AS `prv`, `community`, `birthday` AS `bd`, `birthday`, 0 AS `self`
+ FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
+ dbesc(normalise_link($url)));
+
+ if ($r)
+ $profile = $r[0];
+ else {
+ $profile = $default;
+ if (!isset($profile["thumb"]) AND isset($profile["photo"]))
+ $profile["thumb"] = $profile["photo"];
+ }
+
+ if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND ($profile["gid"] != 0) AND
+ in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) {
+ proc_run('php',"include/update_gcontact.php", $profile["gid"]);
+ }
+ // Show contact details of Diaspora contacts only if connected
if (($profile["cid"] == 0) AND ($profile["network"] == NETWORK_DIASPORA)) {
$profile["location"] = "";
$profile["about"] = "";
+ $profile["gender"] = "";
+ $profile["birthday"] = "0000-00-00";
}
return($profile);
function conversation(&$a, $items, $mode, $update, $preview = false) {
require_once('include/bbcode.php');
+ require_once('include/Contact.php');
require_once('mod/proxy.php');
$ssl_state = ((local_user()) ? true : false);
else
$profile_link = zrl($profile_link);
- $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
- if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
- $profile_avatar = $a->contacts[$normalised]['thumb'];
+ // Don't rely on the author-avatar. It is better to use the data from the contact table
+ $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
+ if ($author_contact["thumb"])
+ $profile_avatar = $author_contact["thumb"];
else
- $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']));
+ $profile_avatar = $item['author-avatar'];
+
+ // This was the old method. We leave it here at the moment
+ //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
+ //if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
+ // $profile_avatar = $a->contacts[$normalised]['thumb'];
+ //else
+ // $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']));
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
call_hooks('render_location',$locate);
foreach($r as $rr) {
//get further details of the contact
- $contact_details = get_contact_details_by_url($rr['url'], $uid);
+ $contact_details = get_contact_details_by_url($rr['url'], $uid, $rr);
$photo_menu = '';
$entry = array(
'url' => $rr['url'],
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
- 'name' => htmlentities($rr['name']),
- 'thumb' => proxy_url($rr['photo'], false, PROXY_SIZE_THUMB),
- 'img_hover' => htmlentities($rr['name']),
+ 'name' => htmlentities($contact_details['name']),
+ 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB),
+ 'img_hover' => htmlentities($contact_details['name']),
'details' => $contact_details['location'],
'tags' => $contact_details['keywords'],
'about' => $contact_details['about'],
$rr[id] = $rr[cid];
$photo_menu = '';
- $photo_menu = contact_photo_menu ($rr);
+ $photo_menu = contact_photo_menu($rr);
$entry = array(
'url' => $rr['url'],
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
- 'name' => $rr['name'],
- 'thumb' => proxy_url($rr['photo'], false, PROXY_SIZE_THUMB),
- 'img_hover' => htmlentities($rr['name']),
+ 'name' => $contact_details['name'],
+ 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB),
+ 'img_hover' => htmlentities($contact_details['name']),
'details' => $contact_details['location'],
'tags' => $contact_details['keywords'],
'about' => $contact_details['about'],
else
$profile_link = zrl($profile_link);
- $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
- if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
- $profile_avatar = $a->contacts[$normalised]['thumb'];
+ // Don't rely on the author-avatar. It is better to use the data from the contact table
+ $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
+ if ($author_contact["thumb"])
+ $profile_avatar = $author_contact["thumb"];
else
- $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']));
+ $profile_avatar = $item['author-avatar'];
+
+ //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
+ //if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
+ // $profile_avatar = $a->contacts[$normalised]['thumb'];
+ //else
+ // $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']));
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
call_hooks('render_location',$locate);
else
$profile_link = zrl($profile_link);
- $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
- if(($normalised != 'mailbox') && (x($a->contacts,$normalised)))
- $profile_avatar = $a->contacts[$normalised]['thumb'];
+ // Don't rely on the author-avatar. It is better to use the data from the contact table
+ $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
+ if ($author_contact["thumb"])
+ $profile_avatar = $author_contact["thumb"];
else
- $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar']) && $diff_author) ? $item['author-avatar'] : $thumb));
+ $profile_avatar = $item['author-avatar'];
+
+ //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
+ //if(($normalised != 'mailbox') && (x($a->contacts,$normalised)))
+ // $profile_avatar = $a->contacts[$normalised]['thumb'];
+ //else
+ // $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar']) && $diff_author) ? $item['author-avatar'] : $thumb));
$like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : '');
$dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : '');
$shiny = "";
if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
- $shiny = 'shiny';
+ $shiny = 'shiny';
- //
+ //
localize_item($item);
if($nurl) {
// Search for contact data
$contact = get_contact_details_by_url($nurl);
-
- // Get_contact_details_by_url() doesn't provide the nurl but we
- // need it for the photo_menu, so we copy it to the contact array
- if (!isset($contact["nurl"]))
- $contact["nurl"] = $nurl;
}
if(!is_array($contact))
'name' => $contact["name"],
'nick' => $contact["nick"],
'addr' => (($contact["addr"] != "") ? $contact["addr"] : $contact["url"]),
- 'thumb' => proxy_url($contact["photo"], false, PROXY_SIZE_THUMB),
+ 'thumb' => proxy_url($contact["thumb"], false, PROXY_SIZE_THUMB),
'url' => ($cid ? ("redir/".$cid) : zrl($contact["url"])),
'nurl' => $contact["nurl"], // We additionally store the nurl as identifier
// 'alias' => $contact["alias"],
'from_name' => $from_name_e,
'from_url' => $from_url,
'sparkle' => $sparkle,
- 'from_photo' => $message['from-photo'],
+ 'from_photo' => proxy_url($message['from-photo'], false, PROXY_SIZE_THUMB),
'subject' => $subject_e,
'body' => $body_e,
'delete' => t('Delete message'),
if(count($r)) {
foreach($r as $rr) {
- $contact_details = get_contact_details_by_url($rr['url'], local_user());
+ $contact_details = get_contact_details_by_url($rr['url'], local_user(), $rr);
$contacts[] = array(
- 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'),$rr['name'],$rr['url']),
+ 'img_hover' => sprintf(t('Visit %s\'s profile [%s]'), $contact_details['name'], $rr['url']),
'edit_hover' => t('Edit contact'),
'photo_menu' => contact_photo_menu($rr),
'id' => $rr['id'],
'alt_text' => $alt_text,
'dir_icon' => $dir_icon,
- 'thumb' => $rr['thumb'],
- 'name' => $rr['name'],
- 'username' => $rr['name'],
+ 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB),
+ 'name' => $contact_details['name'],
+ 'username' => $contact_details['name'],
'details' => $contact_details['location'],
'tags' => $contact_details['keywords'],
'about' => $contact_details['about'],
$photo_menu = array(array(t("View Profile"), zrl($rr["url"])));
$photo_menu[] = array(t("Connect/Follow"), $connlnk);
$photo_menu[] = array(t('Ignore/Hide'), $ignlnk);
- $contact_details = get_contact_details_by_url($rr["url"], local_user());
+ $contact_details = get_contact_details_by_url($rr["url"], local_user(), $rr);
$entry = array(
'url' => zrl($rr['url']),
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
'img_hover' => $rr['url'],
- 'name' => $rr['name'],
- 'thumb' => proxy_url($rr['photo'], false, PROXY_SIZE_THUMB),
+ 'name' => $contact_details['name'],
+ 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB),
'details' => $contact_details['location'],
'tags' => $contact_details['keywords'],
'about' => $contact_details['about'],
else
$url = zrl($url);
- $contact_details = get_contact_details_by_url($rr['url'], $a->profile['uid']);
+ $contact_details = get_contact_details_by_url($rr['url'], $a->profile['uid'], $rr);
$contacts[] = array(
'id' => $rr['id'],
- 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'), $rr['name'], $rr['url']),
+ 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'), $contact_details['name'], $rr['url']),
'photo_menu' => contact_photo_menu($rr),
- 'thumb' => proxy_url($rr['thumb'], false, PROXY_SIZE_THUMB),
- 'name' => htmlentities(substr($rr['name'],0,20)),
- 'username' => htmlentities($rr['name']),
+ 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB),
+ 'name' => htmlentities(substr($contact_details['name'],0,20)),
+ 'username' => htmlentities($contact_details['name']),
'details' => $contact_details['location'],
'tags' => $contact_details['keywords'],
'about' => $contact_details['about'],
else
$profile_link = zrl($profile_link);
- $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
- if(($normalised != 'mailbox') && (x($a->contacts,$normalised)))
- $profile_avatar = $a->contacts[$normalised]['thumb'];
+ // Don't rely on the author-avatar. It is better to use the data from the contact table
+ $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
+ if ($author_contact["thumb"])
+ $profile_avatar = $author_contact["thumb"];
else
- $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->remove_baseurl($this->get_data_value('thumb')));
+ $profile_avatar = $item['author-avatar'];
+
+ // This was the old method. We leave it here at the moment
+ //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
+ //if(($normalised != 'mailbox') && (x($a->contacts,$normalised)))
+ // $profile_avatar = $a->contacts[$normalised]['thumb'];
+ //else
+ // $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->remove_baseurl($this->get_data_value('thumb')));
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
call_hooks('render_location',$locate);