Merge pull request #2564 from annando/1606-contact-handling
Fix for mismatching avatars
This commit is contained in:
commit
8932bec614
17 changed files with 166 additions and 250 deletions
25
boot.php
25
boot.php
|
@ -1896,31 +1896,6 @@ function is_site_admin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function load_contact_links($uid) {
|
|
||||||
|
|
||||||
$a = get_app();
|
|
||||||
|
|
||||||
$ret = array();
|
|
||||||
|
|
||||||
if(! $uid || x($a->contacts,'empty'))
|
|
||||||
return;
|
|
||||||
|
|
||||||
$r = q("SELECT `id`,`network`,`url`,`thumb`, `rel` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `thumb` != ''",
|
|
||||||
intval($uid)
|
|
||||||
);
|
|
||||||
if(count($r)) {
|
|
||||||
foreach($r as $rr){
|
|
||||||
$url = normalise_link($rr['url']);
|
|
||||||
$ret[$url] = $rr;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
$ret['empty'] = true;
|
|
||||||
|
|
||||||
$a->contacts = $ret;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Returns querystring as string from a mapped array.
|
* @brief Returns querystring as string from a mapped array.
|
||||||
*
|
*
|
||||||
|
|
|
@ -192,72 +192,86 @@ function unmark_for_death($contact) {
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
|
|
||||||
function get_contact_details_by_url($url, $uid = -1) {
|
/**
|
||||||
|
* @brief Get contact data for a given profile link
|
||||||
|
*
|
||||||
|
* The function looks at several places (contact table and gcontact table) for the contact
|
||||||
|
*
|
||||||
|
* @param string $url The profile link
|
||||||
|
* @param int $uid User id
|
||||||
|
* @param array $default If not data was found take this data as default value
|
||||||
|
*
|
||||||
|
* @return array Contact data
|
||||||
|
*/
|
||||||
|
function get_contact_details_by_url($url, $uid = -1, $default = array()) {
|
||||||
if ($uid == -1)
|
if ($uid == -1)
|
||||||
$uid = local_user();
|
$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",
|
// 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` AS `birthday`, `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` 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`, 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` 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 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`, 0 AS `self`
|
||||||
|
FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
|
||||||
dbesc(normalise_link($url)));
|
dbesc(normalise_link($url)));
|
||||||
|
|
||||||
if ($r) {
|
if ($r) {
|
||||||
$profile = $r[0];
|
$profile = $r[0];
|
||||||
|
|
||||||
if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND
|
// "bd" always contains the upcoming birthday of a contact.
|
||||||
in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
|
// "birthday" might contain the birthday including the year of birth.
|
||||||
proc_run('php',"include/update_gcontact.php", $profile["gid"]);
|
if ($profile["birthday"] != "0000-00-00") {
|
||||||
|
$bd_timestamp = strtotime($profile["birthday"]);
|
||||||
|
$month = date("m", $bd_timestamp);
|
||||||
|
$day = date("d", $bd_timestamp);
|
||||||
|
|
||||||
|
$current_timestamp = time();
|
||||||
|
$current_year = date("Y", $current_timestamp);
|
||||||
|
$current_month = date("m", $current_timestamp);
|
||||||
|
$current_day = date("d", $current_timestamp);
|
||||||
|
|
||||||
|
$profile["bd"] = $current_year."-".$month."-".$day;
|
||||||
|
$current = $current_year."-".$current_month."-".$current_day;
|
||||||
|
|
||||||
|
if ($profile["bd"] < $current)
|
||||||
|
$profile["bd"] = (++$current_year)."-".$month."-".$day;
|
||||||
|
} else
|
||||||
|
$profile["bd"] = "0000-00-00";
|
||||||
|
} else {
|
||||||
|
$profile = $default;
|
||||||
|
if (!isset($profile["thumb"]) AND isset($profile["photo"]))
|
||||||
|
$profile["thumb"] = $profile["photo"];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fetching further contact data from the contact table
|
if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND ($profile["gid"] != 0) AND
|
||||||
$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', '')",
|
in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
|
||||||
dbesc(normalise_link($url)), intval($uid), dbesc($profile["network"]));
|
proc_run('php',"include/update_gcontact.php", $profile["gid"]);
|
||||||
|
|
||||||
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));
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
|
// Show contact details of Diaspora contacts only if connected
|
||||||
if (($profile["cid"] == 0) AND ($profile["network"] == NETWORK_DIASPORA)) {
|
if (($profile["cid"] == 0) AND ($profile["network"] == NETWORK_DIASPORA)) {
|
||||||
$profile["location"] = "";
|
$profile["location"] = "";
|
||||||
$profile["about"] = "";
|
$profile["about"] = "";
|
||||||
|
$profile["gender"] = "";
|
||||||
|
$profile["birthday"] = "0000-00-00";
|
||||||
}
|
}
|
||||||
|
|
||||||
return($profile);
|
return($profile);
|
||||||
|
|
|
@ -270,8 +270,6 @@
|
||||||
api_login($a);
|
api_login($a);
|
||||||
}
|
}
|
||||||
|
|
||||||
load_contact_links(api_user());
|
|
||||||
|
|
||||||
logger('API call for ' . $a->user['username'] . ': ' . $a->query_string);
|
logger('API call for ' . $a->user['username'] . ': ' . $a->query_string);
|
||||||
logger('API parameters: ' . print_r($_REQUEST,true));
|
logger('API parameters: ' . print_r($_REQUEST,true));
|
||||||
|
|
||||||
|
|
|
@ -389,6 +389,7 @@ if(!function_exists('conversation')) {
|
||||||
function conversation(&$a, $items, $mode, $update, $preview = false) {
|
function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||||
|
|
||||||
require_once('include/bbcode.php');
|
require_once('include/bbcode.php');
|
||||||
|
require_once('include/Contact.php');
|
||||||
require_once('mod/proxy.php');
|
require_once('mod/proxy.php');
|
||||||
|
|
||||||
$ssl_state = ((local_user()) ? true : false);
|
$ssl_state = ((local_user()) ? true : false);
|
||||||
|
@ -494,8 +495,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||||
else
|
else
|
||||||
$return_url = $_SESSION['return_url'] = $a->query_string;
|
$return_url = $_SESSION['return_url'] = $a->query_string;
|
||||||
|
|
||||||
load_contact_links(local_user());
|
|
||||||
|
|
||||||
$cb = array('items' => $items, 'mode' => $mode, 'update' => $update, 'preview' => $preview);
|
$cb = array('items' => $items, 'mode' => $mode, 'update' => $update, 'preview' => $preview);
|
||||||
call_hooks('conversation_start',$cb);
|
call_hooks('conversation_start',$cb);
|
||||||
|
|
||||||
|
@ -610,11 +609,12 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||||
else
|
else
|
||||||
$profile_link = zrl($profile_link);
|
$profile_link = zrl($profile_link);
|
||||||
|
|
||||||
$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
|
// Don't rely on the author-avatar. It is better to use the data from the contact table
|
||||||
if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
|
$author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
|
||||||
$profile_avatar = $a->contacts[$normalised]['thumb'];
|
if ($author_contact["thumb"])
|
||||||
|
$profile_avatar = $author_contact["thumb"];
|
||||||
else
|
else
|
||||||
$profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']));
|
$profile_avatar = $item['author-avatar'];
|
||||||
|
|
||||||
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
|
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
|
||||||
call_hooks('render_location',$locate);
|
call_hooks('render_location',$locate);
|
||||||
|
@ -682,7 +682,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||||
'name' => $profile_name_e,
|
'name' => $profile_name_e,
|
||||||
'sparkle' => $sparkle,
|
'sparkle' => $sparkle,
|
||||||
'lock' => $lock,
|
'lock' => $lock,
|
||||||
'thumb' => proxy_url($profile_avatar, false, PROXY_SIZE_THUMB),
|
'thumb' => App::remove_baseurl(proxy_url($profile_avatar, false, PROXY_SIZE_THUMB)),
|
||||||
'title' => $item['title_e'],
|
'title' => $item['title_e'],
|
||||||
'body' => $body_e,
|
'body' => $body_e,
|
||||||
'tags' => $tags_e,
|
'tags' => $tags_e,
|
||||||
|
@ -812,15 +812,7 @@ function best_link_url($item,&$sparkle,$ssl_state = false) {
|
||||||
|
|
||||||
$clean_url = normalise_link($item['author-link']);
|
$clean_url = normalise_link($item['author-link']);
|
||||||
|
|
||||||
if((local_user()) && (local_user() == $item['uid'])) {
|
if (local_user()) {
|
||||||
if(isset($a->contacts) && x($a->contacts,$clean_url)) {
|
|
||||||
if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) {
|
|
||||||
$best_url = 'redir/'.$a->contacts[$clean_url]['id'];
|
|
||||||
$sparkle = true;
|
|
||||||
} else
|
|
||||||
$best_url = $a->contacts[$clean_url]['url'];
|
|
||||||
}
|
|
||||||
} elseif (local_user()) {
|
|
||||||
$r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' LIMIT 1",
|
$r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' LIMIT 1",
|
||||||
dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url)));
|
dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url)));
|
||||||
if ($r) {
|
if ($r) {
|
||||||
|
@ -845,11 +837,9 @@ function item_photo_menu($item){
|
||||||
|
|
||||||
$ssl_state = false;
|
$ssl_state = false;
|
||||||
|
|
||||||
if(local_user()) {
|
if(local_user())
|
||||||
$ssl_state = true;
|
$ssl_state = true;
|
||||||
if(! count($a->contacts))
|
|
||||||
load_contact_links(local_user());
|
|
||||||
}
|
|
||||||
$sub_link="";
|
$sub_link="";
|
||||||
$poke_link="";
|
$poke_link="";
|
||||||
$contact_url="";
|
$contact_url="";
|
||||||
|
@ -857,6 +847,7 @@ function item_photo_menu($item){
|
||||||
$status_link="";
|
$status_link="";
|
||||||
$photos_link="";
|
$photos_link="";
|
||||||
$posts_link="";
|
$posts_link="";
|
||||||
|
$network = "";
|
||||||
|
|
||||||
if((local_user()) && local_user() == $item['uid'] && $item['parent'] == $item['id'] && (! $item['self'])) {
|
if((local_user()) && local_user() == $item['uid'] && $item['parent'] == $item['id'] && (! $item['self'])) {
|
||||||
$sub_link = 'javascript:dosubthread(' . $item['id'] . '); return false;';
|
$sub_link = 'javascript:dosubthread(' . $item['id'] . '); return false;';
|
||||||
|
@ -867,46 +858,32 @@ function item_photo_menu($item){
|
||||||
if($profile_link === 'mailbox')
|
if($profile_link === 'mailbox')
|
||||||
$profile_link = '';
|
$profile_link = '';
|
||||||
|
|
||||||
if($sparkle) {
|
$cid = 0;
|
||||||
$cid = intval(basename($profile_link));
|
$network = "";
|
||||||
$status_link = $profile_link . "?url=status";
|
$rel = 0;
|
||||||
$photos_link = $profile_link . "?url=photos";
|
$r = q("SELECT `id`, `network`, `rel` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' LIMIT 1",
|
||||||
$profile_link = $profile_link . "?url=profile";
|
|
||||||
$pm_url = 'message/new/' . $cid;
|
|
||||||
$zurl = '';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$profile_link = zrl($profile_link);
|
|
||||||
if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) {
|
|
||||||
$cid = $item['contact-id'];
|
|
||||||
} else {
|
|
||||||
$r = q("SELECT `id`, `network` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' LIMIT 1",
|
|
||||||
intval(local_user()), dbesc(normalise_link($item['author-link'])));
|
intval(local_user()), dbesc(normalise_link($item['author-link'])));
|
||||||
if ($r) {
|
if ($r) {
|
||||||
$cid = $r[0]["id"];
|
$cid = $r[0]["id"];
|
||||||
|
$network = $r[0]["network"];
|
||||||
|
$rel = $r[0]["rel"];
|
||||||
|
}
|
||||||
|
|
||||||
if ($r[0]["network"] == NETWORK_DIASPORA)
|
if($sparkle) {
|
||||||
$pm_url = 'message/new/' . $cid;
|
$status_link = $profile_link."?url=status";
|
||||||
|
$photos_link = $profile_link."?url=photos";
|
||||||
|
$profile_link = $profile_link."?url=profile";
|
||||||
|
$zurl = '';
|
||||||
} else
|
} else
|
||||||
$cid = 0;
|
$profile_link = zrl($profile_link);
|
||||||
}
|
|
||||||
}
|
|
||||||
if(($cid) && (! $item['self'])) {
|
|
||||||
$poke_link = 'poke/?f=&c=' . $cid;
|
|
||||||
$contact_url = 'contacts/' . $cid;
|
|
||||||
$posts_link = 'contacts/' . $cid . '/posts';
|
|
||||||
|
|
||||||
$clean_url = normalise_link($item['author-link']);
|
if($cid && !$item['self']) {
|
||||||
|
$poke_link = 'poke/?f=&c='.$cid;
|
||||||
if((local_user()) && (local_user() == $item['uid'])) {
|
$contact_url = 'contacts/'.$cid;
|
||||||
if(isset($a->contacts) && x($a->contacts,$clean_url)) {
|
$posts_link = 'contacts/'.$cid.'/posts';
|
||||||
if($a->contacts[$clean_url]['network'] === NETWORK_DIASPORA) {
|
|
||||||
$pm_url = 'message/new/' . $cid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (in_array($network, array(NETWORK_DFRN, NETWORK_DIASPORA)))
|
||||||
|
$pm_url = 'message/new/'.$cid;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (local_user()) {
|
if (local_user()) {
|
||||||
|
@ -920,10 +897,10 @@ function item_photo_menu($item){
|
||||||
t("Send PM") => $pm_url
|
t("Send PM") => $pm_url
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($a->contacts[$clean_url]['network'] === NETWORK_DFRN)
|
if ($network == NETWORK_DFRN)
|
||||||
$menu[t("Poke")] = $poke_link;
|
$menu[t("Poke")] = $poke_link;
|
||||||
|
|
||||||
if ((($cid == 0) OR ($a->contacts[$clean_url]['rel'] == CONTACT_IS_FOLLOWER)) AND
|
if ((($cid == 0) OR ($rel == CONTACT_IS_FOLLOWER)) AND
|
||||||
in_array($item['network'], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA)))
|
in_array($item['network'], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA)))
|
||||||
$menu[t("Connect/Follow")] = "follow?url=".urlencode($item['author-link']);
|
$menu[t("Connect/Follow")] = "follow?url=".urlencode($item['author-link']);
|
||||||
} else
|
} else
|
||||||
|
|
|
@ -345,6 +345,7 @@ function profile_sidebar($profile, $block = 0) {
|
||||||
? trim(substr($profile['name'],0,strpos($profile['name'],' '))) : $profile['name']);
|
? trim(substr($profile['name'],0,strpos($profile['name'],' '))) : $profile['name']);
|
||||||
$lastname = (($firstname === $profile['name']) ? '' : trim(substr($profile['name'],strlen($firstname))));
|
$lastname = (($firstname === $profile['name']) ? '' : trim(substr($profile['name'],strlen($firstname))));
|
||||||
|
|
||||||
|
if ($profile['guid'] != "")
|
||||||
$diaspora = array(
|
$diaspora = array(
|
||||||
'guid' => $profile['guid'],
|
'guid' => $profile['guid'],
|
||||||
'podloc' => $a->get_baseurl(),
|
'podloc' => $a->get_baseurl(),
|
||||||
|
@ -357,6 +358,8 @@ function profile_sidebar($profile, $block = 0) {
|
||||||
'photo100' => $a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg',
|
'photo100' => $a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg',
|
||||||
'photo50' => $a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg',
|
'photo50' => $a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg',
|
||||||
);
|
);
|
||||||
|
else
|
||||||
|
$diaspora = false;
|
||||||
|
|
||||||
if (!$block){
|
if (!$block){
|
||||||
$contact_block = contact_block();
|
$contact_block = contact_block();
|
||||||
|
|
|
@ -49,7 +49,7 @@ function allfriends_content(&$a) {
|
||||||
foreach($r as $rr) {
|
foreach($r as $rr) {
|
||||||
|
|
||||||
//get further details of the contact
|
//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 = '';
|
$photo_menu = '';
|
||||||
|
|
||||||
|
@ -68,9 +68,9 @@ function allfriends_content(&$a) {
|
||||||
$entry = array(
|
$entry = array(
|
||||||
'url' => $rr['url'],
|
'url' => $rr['url'],
|
||||||
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
|
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
|
||||||
'name' => htmlentities($rr['name']),
|
'name' => htmlentities($contact_details['name']),
|
||||||
'thumb' => proxy_url($rr['photo'], false, PROXY_SIZE_THUMB),
|
'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB),
|
||||||
'img_hover' => htmlentities($rr['name']),
|
'img_hover' => htmlentities($contact_details['name']),
|
||||||
'details' => $contact_details['location'],
|
'details' => $contact_details['location'],
|
||||||
'tags' => $contact_details['keywords'],
|
'tags' => $contact_details['keywords'],
|
||||||
'about' => $contact_details['about'],
|
'about' => $contact_details['about'],
|
||||||
|
|
|
@ -109,14 +109,14 @@ function common_content(&$a) {
|
||||||
$rr[id] = $rr[cid];
|
$rr[id] = $rr[cid];
|
||||||
|
|
||||||
$photo_menu = '';
|
$photo_menu = '';
|
||||||
$photo_menu = contact_photo_menu ($rr);
|
$photo_menu = contact_photo_menu($rr);
|
||||||
|
|
||||||
$entry = array(
|
$entry = array(
|
||||||
'url' => $rr['url'],
|
'url' => $rr['url'],
|
||||||
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
|
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
|
||||||
'name' => $rr['name'],
|
'name' => $contact_details['name'],
|
||||||
'thumb' => proxy_url($rr['photo'], false, PROXY_SIZE_THUMB),
|
'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB),
|
||||||
'img_hover' => htmlentities($rr['name']),
|
'img_hover' => htmlentities($contact_details['name']),
|
||||||
'details' => $contact_details['location'],
|
'details' => $contact_details['location'],
|
||||||
'tags' => $contact_details['keywords'],
|
'tags' => $contact_details['keywords'],
|
||||||
'about' => $contact_details['about'],
|
'about' => $contact_details['about'],
|
||||||
|
|
|
@ -416,11 +416,12 @@ function render_content(&$a, $items, $mode, $update, $preview = false) {
|
||||||
else
|
else
|
||||||
$profile_link = zrl($profile_link);
|
$profile_link = zrl($profile_link);
|
||||||
|
|
||||||
$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
|
// Don't rely on the author-avatar. It is better to use the data from the contact table
|
||||||
if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
|
$author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
|
||||||
$profile_avatar = $a->contacts[$normalised]['thumb'];
|
if ($author_contact["thumb"])
|
||||||
|
$profile_avatar = $author_contact["thumb"];
|
||||||
else
|
else
|
||||||
$profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']));
|
$profile_avatar = $item['author-avatar'];
|
||||||
|
|
||||||
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
|
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
|
||||||
call_hooks('render_location',$locate);
|
call_hooks('render_location',$locate);
|
||||||
|
@ -787,11 +788,12 @@ function render_content(&$a, $items, $mode, $update, $preview = false) {
|
||||||
else
|
else
|
||||||
$profile_link = zrl($profile_link);
|
$profile_link = zrl($profile_link);
|
||||||
|
|
||||||
$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
|
// Don't rely on the author-avatar. It is better to use the data from the contact table
|
||||||
if(($normalised != 'mailbox') && (x($a->contacts,$normalised)))
|
$author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
|
||||||
$profile_avatar = $a->contacts[$normalised]['thumb'];
|
if ($author_contact["thumb"])
|
||||||
|
$profile_avatar = $author_contact["thumb"];
|
||||||
else
|
else
|
||||||
$profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar']) && $diff_author) ? $item['author-avatar'] : $thumb));
|
$profile_avatar = $item['author-avatar'];
|
||||||
|
|
||||||
$like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : '');
|
$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']) : '');
|
$dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : '');
|
||||||
|
|
|
@ -133,6 +133,8 @@ function dirfind_content(&$a, $prefix = "") {
|
||||||
if (poco_alternate_ostatus_url($result["url"]))
|
if (poco_alternate_ostatus_url($result["url"]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
$result = get_contact_details_by_url($result["url"], local_user(), $result);
|
||||||
|
|
||||||
if ($result["name"] == "") {
|
if ($result["name"] == "") {
|
||||||
$urlparts = parse_url($result["url"]);
|
$urlparts = parse_url($result["url"]);
|
||||||
$result["name"] = end(explode("/", $urlparts["path"]));
|
$result["name"] = end(explode("/", $urlparts["path"]));
|
||||||
|
|
|
@ -112,6 +112,8 @@ function display_init(&$a) {
|
||||||
|
|
||||||
function display_fetchauthor($a, $item) {
|
function display_fetchauthor($a, $item) {
|
||||||
|
|
||||||
|
require_once("include/Contact.php");
|
||||||
|
|
||||||
$profiledata = array();
|
$profiledata = array();
|
||||||
$profiledata["uid"] = -1;
|
$profiledata["uid"] = -1;
|
||||||
$profiledata["nickname"] = $item["author-name"];
|
$profiledata["nickname"] = $item["author-name"];
|
||||||
|
@ -176,61 +178,9 @@ function display_fetchauthor($a, $item) {
|
||||||
$profiledata["about"] = "";
|
$profiledata["about"] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't show details from Diaspora contacts if you don't follow the contact
|
$profiledata = get_contact_details_by_url($profiledata["url"], local_user(), $profiledata);
|
||||||
$showdetails = ($profiledata["network"] != NETWORK_DIASPORA);
|
|
||||||
|
|
||||||
// Fetching further contact data from the contact table
|
$profiledata["photo"] = App::remove_baseurl($profiledata["photo"]);
|
||||||
$r = q("SELECT `uid`, `network`, `name`, `photo`, `nick`, `addr`, `location`, `about`, `gender`, `keywords`
|
|
||||||
FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `network` = '%s' AND `rel` IN (%d, %d)",
|
|
||||||
dbesc(normalise_link($profiledata["url"])), intval(local_user()), dbesc($item["network"]),
|
|
||||||
intval(CONTACT_IS_SHARING), intval(CONTACT_IS_FRIEND));
|
|
||||||
if (!count($r))
|
|
||||||
$r = q("SELECT `uid`, `network`, `name`, `photo`, `nick`, `addr`, `location`, `about`, `gender`, `keywords`
|
|
||||||
FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `rel` IN (%d, %d)",
|
|
||||||
dbesc(normalise_link($profiledata["url"])), intval(local_user()),
|
|
||||||
intval(CONTACT_IS_SHARING), intval(CONTACT_IS_FRIEND));
|
|
||||||
|
|
||||||
if (count($r)) {
|
|
||||||
$profiledata["name"] = $r[0]["name"];
|
|
||||||
$profiledata["photo"] = $r[0]["photo"];
|
|
||||||
$profiledata["nickname"] = $r[0]["nick"];
|
|
||||||
$profiledata["addr"] = $r[0]["addr"];
|
|
||||||
$profiledata["keywords"] = $r[0]["keywords"];
|
|
||||||
$profiledata["network"] = $r[0]["network"];
|
|
||||||
|
|
||||||
if (local_user() OR $showdetails) {
|
|
||||||
$showdetails = true;
|
|
||||||
$profiledata["address"] = $r[0]["location"];
|
|
||||||
$profiledata["about"] = $r[0]["about"];
|
|
||||||
$profiledata["gender"] = $r[0]["gender"];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fetching profile data from global contacts
|
|
||||||
if ($profiledata["network"] != NETWORK_FEED) {
|
|
||||||
$r = q("SELECT `name`, `photo`, `nick`, `addr`, `location`, `about`, `gender`, `keywords`, `network` FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($profiledata["url"])));
|
|
||||||
if (count($r)) {
|
|
||||||
$profiledata["name"] = $r[0]["name"];
|
|
||||||
$profiledata["photo"] = $r[0]["photo"];
|
|
||||||
$profiledata["nickname"] = $r[0]["nick"];
|
|
||||||
$profiledata["addr"] = $r[0]["addr"];
|
|
||||||
$profiledata["network"] = $r[0]["network"];
|
|
||||||
|
|
||||||
if ($r[0]["keywords"])
|
|
||||||
$profiledata["keywords"] = $r[0]["keywords"];
|
|
||||||
|
|
||||||
if ($showdetails) {
|
|
||||||
if ($r[0]["location"])
|
|
||||||
$profiledata["address"] = $r[0]["location"];
|
|
||||||
|
|
||||||
if ($r[0]["about"])
|
|
||||||
$profiledata["about"] = $r[0]["about"];
|
|
||||||
|
|
||||||
if ($r[0]["gender"])
|
|
||||||
$profiledata["gender"] = $r[0]["gender"];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (local_user()) {
|
if (local_user()) {
|
||||||
if (in_array($profiledata["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
|
if (in_array($profiledata["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
|
||||||
|
@ -482,9 +432,7 @@ function display_content(&$a, $update = 0) {
|
||||||
$title = trim(html2plain(bbcode($r[0]["title"], false, false), 0, true));
|
$title = trim(html2plain(bbcode($r[0]["title"], false, false), 0, true));
|
||||||
$author_name = $r[0]["author-name"];
|
$author_name = $r[0]["author-name"];
|
||||||
|
|
||||||
$image = "";
|
$image = $a->remove_baseurl($r[0]["thumb"]);
|
||||||
if ($image == "")
|
|
||||||
$image = $r[0]["thumb"];
|
|
||||||
|
|
||||||
if ($title == "")
|
if ($title == "")
|
||||||
$title = $author_name;
|
$title = $author_name;
|
||||||
|
|
|
@ -48,11 +48,6 @@ function hovercard_content() {
|
||||||
if($nurl) {
|
if($nurl) {
|
||||||
// Search for contact data
|
// Search for contact data
|
||||||
$contact = get_contact_details_by_url($nurl);
|
$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))
|
if(!is_array($contact))
|
||||||
|
@ -69,7 +64,7 @@ function hovercard_content() {
|
||||||
'name' => $contact["name"],
|
'name' => $contact["name"],
|
||||||
'nick' => $contact["nick"],
|
'nick' => $contact["nick"],
|
||||||
'addr' => (($contact["addr"] != "") ? $contact["addr"] : $contact["url"]),
|
'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"])),
|
'url' => ($cid ? ("redir/".$cid) : zrl($contact["url"])),
|
||||||
'nurl' => $contact["nurl"], // We additionally store the nurl as identifier
|
'nurl' => $contact["nurl"], // We additionally store the nurl as identifier
|
||||||
// 'alias' => $contact["alias"],
|
// 'alias' => $contact["alias"],
|
||||||
|
|
|
@ -489,7 +489,7 @@ function message_content(&$a) {
|
||||||
'from_name' => $from_name_e,
|
'from_name' => $from_name_e,
|
||||||
'from_url' => $from_url,
|
'from_url' => $from_url,
|
||||||
'sparkle' => $sparkle,
|
'sparkle' => $sparkle,
|
||||||
'from_photo' => $message['from-photo'],
|
'from_photo' => proxy_url($message['from-photo'], false, PROXY_SIZE_THUMB),
|
||||||
'subject' => $subject_e,
|
'subject' => $subject_e,
|
||||||
'body' => $body_e,
|
'body' => $body_e,
|
||||||
'delete' => t('Delete message'),
|
'delete' => t('Delete message'),
|
||||||
|
|
|
@ -35,18 +35,18 @@ function nogroup_content(&$a) {
|
||||||
if(count($r)) {
|
if(count($r)) {
|
||||||
foreach($r as $rr) {
|
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(
|
$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'),
|
'edit_hover' => t('Edit contact'),
|
||||||
'photo_menu' => contact_photo_menu($rr),
|
'photo_menu' => contact_photo_menu($rr),
|
||||||
'id' => $rr['id'],
|
'id' => $rr['id'],
|
||||||
'alt_text' => $alt_text,
|
'alt_text' => $alt_text,
|
||||||
'dir_icon' => $dir_icon,
|
'dir_icon' => $dir_icon,
|
||||||
'thumb' => $rr['thumb'],
|
'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB),
|
||||||
'name' => $rr['name'],
|
'name' => $contact_details['name'],
|
||||||
'username' => $rr['name'],
|
'username' => $contact_details['name'],
|
||||||
'details' => $contact_details['location'],
|
'details' => $contact_details['location'],
|
||||||
'tags' => $contact_details['keywords'],
|
'tags' => $contact_details['keywords'],
|
||||||
'about' => $contact_details['about'],
|
'about' => $contact_details['about'],
|
||||||
|
|
|
@ -81,14 +81,14 @@ function suggest_content(&$a) {
|
||||||
$photo_menu = array(array(t("View Profile"), zrl($rr["url"])));
|
$photo_menu = array(array(t("View Profile"), zrl($rr["url"])));
|
||||||
$photo_menu[] = array(t("Connect/Follow"), $connlnk);
|
$photo_menu[] = array(t("Connect/Follow"), $connlnk);
|
||||||
$photo_menu[] = array(t('Ignore/Hide'), $ignlnk);
|
$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(
|
$entry = array(
|
||||||
'url' => zrl($rr['url']),
|
'url' => zrl($rr['url']),
|
||||||
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
|
'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
|
||||||
'img_hover' => $rr['url'],
|
'img_hover' => $rr['url'],
|
||||||
'name' => $rr['name'],
|
'name' => $contact_details['name'],
|
||||||
'thumb' => proxy_url($rr['photo'], false, PROXY_SIZE_THUMB),
|
'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB),
|
||||||
'details' => $contact_details['location'],
|
'details' => $contact_details['location'],
|
||||||
'tags' => $contact_details['keywords'],
|
'tags' => $contact_details['keywords'],
|
||||||
'about' => $contact_details['about'],
|
'about' => $contact_details['about'],
|
||||||
|
|
|
@ -90,15 +90,15 @@ function viewcontacts_content(&$a) {
|
||||||
else
|
else
|
||||||
$url = zrl($url);
|
$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(
|
$contacts[] = array(
|
||||||
'id' => $rr['id'],
|
'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),
|
'photo_menu' => contact_photo_menu($rr),
|
||||||
'thumb' => proxy_url($rr['thumb'], false, PROXY_SIZE_THUMB),
|
'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB),
|
||||||
'name' => htmlentities(substr($rr['name'],0,20)),
|
'name' => htmlentities(substr($contact_details['name'],0,20)),
|
||||||
'username' => htmlentities($rr['name']),
|
'username' => htmlentities($contact_details['name']),
|
||||||
'details' => $contact_details['location'],
|
'details' => $contact_details['location'],
|
||||||
'tags' => $contact_details['keywords'],
|
'tags' => $contact_details['keywords'],
|
||||||
'about' => $contact_details['about'],
|
'about' => $contact_details['about'],
|
||||||
|
|
|
@ -150,11 +150,12 @@ class Item extends BaseObject {
|
||||||
else
|
else
|
||||||
$profile_link = zrl($profile_link);
|
$profile_link = zrl($profile_link);
|
||||||
|
|
||||||
$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
|
// Don't rely on the author-avatar. It is better to use the data from the contact table
|
||||||
if(($normalised != 'mailbox') && (x($a->contacts,$normalised)))
|
$author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
|
||||||
$profile_avatar = $a->contacts[$normalised]['thumb'];
|
if ($author_contact["thumb"])
|
||||||
|
$profile_avatar = $author_contact["thumb"];
|
||||||
else
|
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'];
|
||||||
|
|
||||||
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
|
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
|
||||||
call_hooks('render_location',$locate);
|
call_hooks('render_location',$locate);
|
||||||
|
@ -363,7 +364,7 @@ class Item extends BaseObject {
|
||||||
'profile_url' => $profile_link,
|
'profile_url' => $profile_link,
|
||||||
'item_photo_menu' => item_photo_menu($item),
|
'item_photo_menu' => item_photo_menu($item),
|
||||||
'name' => $name_e,
|
'name' => $name_e,
|
||||||
'thumb' => proxy_url($profile_avatar, false, PROXY_SIZE_THUMB),
|
'thumb' => $a->remove_baseurl(proxy_url($profile_avatar, false, PROXY_SIZE_THUMB)),
|
||||||
'osparkle' => $osparkle,
|
'osparkle' => $osparkle,
|
||||||
'sparkle' => $sparkle,
|
'sparkle' => $sparkle,
|
||||||
'title' => $title_e,
|
'title' => $title_e,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
{{if $diaspora}}
|
||||||
<div style="display:none;">
|
<div style="display:none;">
|
||||||
<dl class="entity_uid">
|
<dl class="entity_uid">
|
||||||
<dt>Uid</dt>
|
<dt>Uid</dt>
|
||||||
|
@ -61,3 +61,4 @@
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
Loading…
Reference in a new issue