If a post is a pure reshare, then show the profile of the original author on the display page.
This commit is contained in:
parent
4976b1c153
commit
4ad2bbddc7
2 changed files with 128 additions and 55 deletions
|
@ -586,11 +586,13 @@ function bb_ShareAttributes($share, $simplehtml) {
|
|||
return($text);
|
||||
}
|
||||
|
||||
function GetProfileUsername($profile, $username, $compact = false) {
|
||||
function GetProfileUsername($profile, $username, $compact = false, $getnetwork = false) {
|
||||
|
||||
$twitter = preg_replace("=https?://twitter.com/(.*)=ism", "$1@twitter.com", $profile);
|
||||
if ($twitter != $profile) {
|
||||
if ($compact)
|
||||
if ($getnetwork)
|
||||
return(NETWORK_TWITTER);
|
||||
elseif ($compact)
|
||||
return($twitter);
|
||||
else
|
||||
return($username." (".$twitter.")");
|
||||
|
@ -598,7 +600,9 @@ function GetProfileUsername($profile, $username, $compact = false) {
|
|||
|
||||
$appnet = preg_replace("=https?://alpha.app.net/(.*)=ism", "$1@alpha.app.net", $profile);
|
||||
if ($appnet != $profile) {
|
||||
if ($compact)
|
||||
if ($getnetwork)
|
||||
return(NETWORK_APPNET);
|
||||
elseif ($compact)
|
||||
return($appnet);
|
||||
else
|
||||
return($username." (".$appnet.")");
|
||||
|
@ -606,7 +610,9 @@ function GetProfileUsername($profile, $username, $compact = false) {
|
|||
|
||||
$gplus = preg_replace("=https?://plus.google.com/(.*)=ism", "$1@plus.google.com", $profile);
|
||||
if ($gplus != $profile) {
|
||||
if ($compact)
|
||||
if ($getnetwork)
|
||||
return(NETWORK_GPLUS);
|
||||
elseif ($compact)
|
||||
return($gplususername." (".$username.")");
|
||||
else
|
||||
return($username." (".$gplus.")");
|
||||
|
@ -614,7 +620,9 @@ function GetProfileUsername($profile, $username, $compact = false) {
|
|||
|
||||
$friendica = preg_replace("=https?://(.*)/profile/(.*)=ism", "$2@$1", $profile);
|
||||
if ($friendica != $profile) {
|
||||
if ($compact)
|
||||
if ($getnetwork)
|
||||
return(NETWORK_DFRN);
|
||||
elseif ($compact)
|
||||
return($friendica);
|
||||
else
|
||||
return($username." (".$friendica.")");
|
||||
|
@ -622,7 +630,9 @@ function GetProfileUsername($profile, $username, $compact = false) {
|
|||
|
||||
$diaspora = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile);
|
||||
if ($diaspora != $profile) {
|
||||
if ($compact)
|
||||
if ($getnetwork)
|
||||
return(NETWORK_DIASPORA);
|
||||
elseif ($compact)
|
||||
return($diaspora);
|
||||
else
|
||||
return($username." (".$diaspora.")");
|
||||
|
@ -635,7 +645,9 @@ function GetProfileUsername($profile, $username, $compact = false) {
|
|||
$UserData = fetch_url("http://".$StatusnetHost."/api/users/show.json?user_id=".$StatusnetUser);
|
||||
$user = json_decode($UserData);
|
||||
if ($user) {
|
||||
if ($compact)
|
||||
if ($getnetwork)
|
||||
return(NETWORK_STATUSNET);
|
||||
elseif ($compact)
|
||||
return($user->screen_name."@".$StatusnetHost);
|
||||
else
|
||||
return($username." (".$user->screen_name."@".$StatusnetHost.")");
|
||||
|
@ -648,7 +660,9 @@ function GetProfileUsername($profile, $username, $compact = false) {
|
|||
if ($rest == "") {
|
||||
$pumpio = preg_replace("=https?://([\.\w]+)/([\.\w]+)(.*)=ism", "$2@$1", $profile);
|
||||
if ($pumpio != $profile) {
|
||||
if ($compact)
|
||||
if ($getnetwork)
|
||||
return(NETWORK_PUMPIO);
|
||||
elseif ($compact)
|
||||
return($pumpio);
|
||||
else
|
||||
return($username." (".$pumpio.")");
|
||||
|
|
119
mod/display.php
119
mod/display.php
|
@ -16,7 +16,7 @@ function display_init(&$a) {
|
|||
|
||||
// Does the local user have this item?
|
||||
if (local_user()) {
|
||||
$r = q("SELECT `id`, `parent`, `author-name`, `author-link`, `author-avatar`, `network` FROM `item`
|
||||
$r = q("SELECT `id`, `parent`, `author-name`, `author-link`, `author-avatar`, `network`, `body` FROM `item`
|
||||
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
|
||||
AND `guid` = '%s' AND `uid` = %d", $a->argv[1], local_user());
|
||||
if (count($r)) {
|
||||
|
@ -28,7 +28,7 @@ function display_init(&$a) {
|
|||
// Or is it anywhere on the server?
|
||||
if ($nick == "") {
|
||||
$r = q("SELECT `user`.`nickname`, `item`.`id`, `item`.`parent`, `item`.`author-name`,
|
||||
`item`.`author-link`, `item`.`author-avatar`, `item`.`network`, `item`.`uid`
|
||||
`item`.`author-link`, `item`.`author-avatar`, `item`.`network`, `item`.`uid`, `item`.`body`
|
||||
FROM `item` INNER JOIN `user` ON `user`.`uid` = `item`.`uid`
|
||||
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
|
||||
AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = ''
|
||||
|
@ -43,20 +43,47 @@ function display_init(&$a) {
|
|||
}
|
||||
if (count($r)) {
|
||||
if ($r[0]["id"] != $r[0]["parent"])
|
||||
$r = q("SELECT `id`, `author-name`, `author-link`, `author-avatar`, `network` FROM `item`
|
||||
$r = q("SELECT `id`, `author-name`, `author-link`, `author-avatar`, `network`, `body` FROM `item`
|
||||
WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
|
||||
AND `id` = %d", $r[0]["parent"]);
|
||||
|
||||
if (!strstr(normalise_link($r[0]["author-link"]), normalise_link($a->get_baseurl()))) {
|
||||
$profiledata = display_fetchauthor($a, $r[0]);
|
||||
|
||||
if (strstr(normalise_link($profiledata["url"]), normalise_link($a->get_baseurl()))) {
|
||||
$nickname = str_replace(normalise_link($a->get_baseurl())."/profile/", "", normalise_link($profiledata["url"]));
|
||||
|
||||
if (($nickname != $a->user["nickname"])) {
|
||||
$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `contact`.`avatar-date` AS picdate, `user`.* FROM `profile`
|
||||
INNER JOIN `contact` on `contact`.`uid` = `profile`.`uid` INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
|
||||
WHERE `user`.`nickname` = '%s' AND `profile`.`is-default` = 1 and `contact`.`self` = 1 LIMIT 1",
|
||||
dbesc($nickname)
|
||||
);
|
||||
if (count($r))
|
||||
$profiledata = $r[0];
|
||||
|
||||
$profiledata["network"] = NETWORK_DFRN;
|
||||
} else
|
||||
$profiledata = array();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
profile_load($a, $nick, 0, $profiledata);
|
||||
|
||||
}
|
||||
|
||||
function display_fetchauthor($a, $item) {
|
||||
require_once("mod/proxy.php");
|
||||
require_once("include/bbcode.php");
|
||||
|
||||
$profiledata = array();
|
||||
$profiledata["uid"] = -1;
|
||||
$profiledata["nickname"] = $r[0]["author-name"];
|
||||
$profiledata["name"] = $r[0]["author-name"];
|
||||
$profiledata["nickname"] = $item["author-name"];
|
||||
$profiledata["name"] = $item["author-name"];
|
||||
$profiledata["picdate"] = "";
|
||||
$profiledata["photo"] = proxy_url($r[0]["author-avatar"]);
|
||||
$profiledata["url"] = $r[0]["author-link"];
|
||||
$profiledata["network"] = $r[0]["network"];
|
||||
$profiledata["photo"] = proxy_url($item["author-avatar"]);
|
||||
$profiledata["url"] = $item["author-link"];
|
||||
$profiledata["network"] = $item["network"];
|
||||
|
||||
// Fetching profile data from unique contacts
|
||||
// To-do: Extend "unique contacts" table for further contact data like location, ...
|
||||
|
@ -77,6 +104,58 @@ function display_init(&$a) {
|
|||
}
|
||||
}
|
||||
|
||||
// Check for a repeated message
|
||||
$skip = false;
|
||||
$body = trim($item["body"]);
|
||||
|
||||
// Skip if it isn't a pure repeated messages
|
||||
// Does it start with a share?
|
||||
if (!$skip AND strpos($body, "[share") > 0)
|
||||
$skip = true;
|
||||
|
||||
// Does it end with a share?
|
||||
if (!$skip AND (strlen($body) > (strrpos($body, "[/share]") + 8)))
|
||||
$skip = true;
|
||||
|
||||
if (!$skip) {
|
||||
$attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","$1",$body);
|
||||
// Skip if there is no shared message in there
|
||||
if ($body == $attributes)
|
||||
$skip = true;
|
||||
}
|
||||
|
||||
if (!$skip) {
|
||||
$author = "";
|
||||
preg_match("/author='(.*?)'/ism", $attributes, $matches);
|
||||
if ($matches[1] != "")
|
||||
$profiledata["name"] = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8');
|
||||
|
||||
preg_match('/author="(.*?)"/ism', $attributes, $matches);
|
||||
if ($matches[1] != "")
|
||||
$profiledata["name"] = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8');
|
||||
|
||||
$profile = "";
|
||||
preg_match("/profile='(.*?)'/ism", $attributes, $matches);
|
||||
if ($matches[1] != "")
|
||||
$profiledata["url"] = $matches[1];
|
||||
|
||||
preg_match('/profile="(.*?)"/ism', $attributes, $matches);
|
||||
if ($matches[1] != "")
|
||||
$profiledata["url"] = $matches[1];
|
||||
|
||||
$avatar = "";
|
||||
preg_match("/avatar='(.*?)'/ism", $attributes, $matches);
|
||||
if ($matches[1] != "")
|
||||
$profiledata["photo"] = $matches[1];
|
||||
|
||||
preg_match('/avatar="(.*?)"/ism', $attributes, $matches);
|
||||
if ($matches[1] != "")
|
||||
$profiledata["photo"] = $matches[1];
|
||||
|
||||
$profiledata["nickname"] = $profiledata["name"];
|
||||
$profiledata["network"] = GetProfileUsername($profiledata["url"], "", false, true);
|
||||
}
|
||||
|
||||
if (local_user()) {
|
||||
if ($profiledata["network"] == NETWORK_DFRN) {
|
||||
$connect = str_replace("/profile/", "/dfrn_request/", $profiledata["url"])."&addr=".bin2hex($a->get_baseurl()."/profile/".$a->user["nickname"]);
|
||||
|
@ -87,30 +166,10 @@ function display_init(&$a) {
|
|||
$connect = str_replace("/profile/", "/dfrn_request/", $profiledata["url"]);
|
||||
$profiledata["remoteconnect"] = $connect;
|
||||
}
|
||||
} else {
|
||||
$nickname = str_replace(normalise_link($a->get_baseurl())."/profile/", "", normalise_link($r[0]["author-link"]));
|
||||
|
||||
if (($nickname != $a->user["nickname"])) {
|
||||
$profiledata["url"] = $r[0]["author-link"];
|
||||
|
||||
$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `contact`.`avatar-date` AS picdate, `user`.* FROM `profile`
|
||||
INNER JOIN `contact` on `contact`.`uid` = `profile`.`uid` INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
|
||||
WHERE `user`.`nickname` = '%s' AND `profile`.`is-default` = 1 and `contact`.`self` = 1 LIMIT 1",
|
||||
dbesc($nickname)
|
||||
);
|
||||
if (count($r))
|
||||
$profiledata = $r[0];
|
||||
$profiledata["network"] = NETWORK_DFRN;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
profile_load($a, $nick, 0, $profiledata);
|
||||
|
||||
return($profiledata);
|
||||
}
|
||||
|
||||
|
||||
function display_content(&$a, $update = 0) {
|
||||
|
||||
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
|
||||
|
|
Loading…
Reference in a new issue