Merge pull request #5166 from annando/unsed-item-fields
Remove unused, unneeded or redundant item fields
This commit is contained in:
commit
0a13ab6b9f
15 changed files with 164 additions and 345 deletions
|
@ -504,7 +504,6 @@ CREATE TABLE IF NOT EXISTS `item` (
|
|||
`pubmail` boolean NOT NULL DEFAULT '0' COMMENT '',
|
||||
`moderated` boolean NOT NULL DEFAULT '0' COMMENT '',
|
||||
`visible` boolean NOT NULL DEFAULT '0' COMMENT '',
|
||||
`spam` boolean NOT NULL DEFAULT '0' COMMENT '',
|
||||
`starred` boolean NOT NULL DEFAULT '0' COMMENT 'item has been favourited',
|
||||
`bookmark` boolean NOT NULL DEFAULT '0' COMMENT 'item has been bookmarked',
|
||||
`unseen` boolean NOT NULL DEFAULT '1' COMMENT 'item has not been seen',
|
||||
|
@ -976,7 +975,6 @@ CREATE TABLE IF NOT EXISTS `thread` (
|
|||
`pubmail` boolean NOT NULL DEFAULT '0' COMMENT '',
|
||||
`moderated` boolean NOT NULL DEFAULT '0' COMMENT '',
|
||||
`visible` boolean NOT NULL DEFAULT '0' COMMENT '',
|
||||
`spam` boolean NOT NULL DEFAULT '0' COMMENT '',
|
||||
`starred` boolean NOT NULL DEFAULT '0' COMMENT '',
|
||||
`ignored` boolean NOT NULL DEFAULT '0' COMMENT '',
|
||||
`bookmark` boolean NOT NULL DEFAULT '0' COMMENT '',
|
||||
|
|
217
include/api.php
217
include/api.php
|
@ -492,7 +492,7 @@ function api_rss_extra(App $a, $arr, $user_info)
|
|||
*/
|
||||
function api_unique_id_to_nurl($id)
|
||||
{
|
||||
$r = dba::selectFirst('contact', ['nurl'], ['uid' => 0, 'id' => $id]);
|
||||
$r = dba::selectFirst('contact', ['nurl'], ['id' => $id]);
|
||||
|
||||
if (DBM::is_result($r)) {
|
||||
return $r["nurl"];
|
||||
|
@ -532,7 +532,7 @@ function api_get_user(App $a, $contact_id = null)
|
|||
$user = dbesc(api_unique_id_to_nurl(intval($contact_id)));
|
||||
|
||||
if ($user == "") {
|
||||
throw new BadRequestException("User not found.");
|
||||
throw new BadRequestException("User ID ".$contact_id." not found.");
|
||||
}
|
||||
|
||||
$url = $user;
|
||||
|
@ -546,7 +546,7 @@ function api_get_user(App $a, $contact_id = null)
|
|||
$user = dbesc(api_unique_id_to_nurl($_GET['user_id']));
|
||||
|
||||
if ($user == "") {
|
||||
throw new BadRequestException("User not found.");
|
||||
throw new BadRequestException("User ID ".$_GET['user_id']." not found.");
|
||||
}
|
||||
|
||||
$url = $user;
|
||||
|
@ -670,13 +670,14 @@ function api_get_user(App $a, $contact_id = null)
|
|||
'statusnet_profile_url' => $r[0]["url"],
|
||||
'uid' => 0,
|
||||
'cid' => Contact::getIdForURL($r[0]["url"], api_user(), true),
|
||||
'pid' => Contact::getIdForURL($r[0]["url"], 0, true),
|
||||
'self' => 0,
|
||||
'network' => $r[0]["network"],
|
||||
];
|
||||
|
||||
return $ret;
|
||||
} else {
|
||||
throw new BadRequestException("User not found.");
|
||||
throw new BadRequestException("User ".$url." not found.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -809,6 +810,7 @@ function api_get_user(App $a, $contact_id = null)
|
|||
'statusnet_profile_url' => $uinfo[0]['url'],
|
||||
'uid' => intval($uinfo[0]['uid']),
|
||||
'cid' => intval($uinfo[0]['cid']),
|
||||
'pid' => Contact::getIdForURL($uinfo[0]["url"], 0, true),
|
||||
'self' => $uinfo[0]['self'],
|
||||
'network' => $uinfo[0]['network'],
|
||||
];
|
||||
|
@ -856,16 +858,12 @@ function api_get_user(App $a, $contact_id = null)
|
|||
*/
|
||||
function api_item_get_user(App $a, $item)
|
||||
{
|
||||
$status_user = api_get_user($a, $item["author-link"]);
|
||||
$status_user = api_get_user($a, $item["author-id"]);
|
||||
|
||||
$status_user["protected"] = (($item["allow_cid"] != "") ||
|
||||
($item["allow_gid"] != "") ||
|
||||
($item["deny_cid"] != "") ||
|
||||
($item["deny_gid"] != "") ||
|
||||
$item["private"]);
|
||||
$status_user["protected"] = $item["private"];
|
||||
|
||||
if ($item['thr-parent'] == $item['uri']) {
|
||||
$owner_user = api_get_user($a, $item["owner-link"]);
|
||||
$owner_user = api_get_user($a, $item["owner-id"]);
|
||||
} else {
|
||||
$owner_user = $status_user;
|
||||
}
|
||||
|
@ -1356,31 +1354,17 @@ function api_status_show($type)
|
|||
logger('api_status_show: user_info: '.print_r($user_info, true), LOGGER_DEBUG);
|
||||
|
||||
if ($type == "raw") {
|
||||
$privacy_sql = "AND `item`.`allow_cid`='' AND `item`.`allow_gid`='' AND `item`.`deny_cid`='' AND `item`.`deny_gid`=''";
|
||||
$privacy_sql = "AND NOT `private`";
|
||||
} else {
|
||||
$privacy_sql = "";
|
||||
}
|
||||
|
||||
// get last public wall message
|
||||
$lastwall = q(
|
||||
"SELECT `item`.*
|
||||
FROM `item`
|
||||
WHERE `item`.`contact-id` = %d AND `item`.`uid` = %d
|
||||
AND ((`item`.`author-link` IN ('%s', '%s')) OR (`item`.`owner-link` IN ('%s', '%s')))
|
||||
AND `item`.`type` != 'activity' $privacy_sql
|
||||
ORDER BY `item`.`id` DESC
|
||||
LIMIT 1",
|
||||
intval($user_info['cid']),
|
||||
intval(api_user()),
|
||||
dbesc($user_info['url']),
|
||||
dbesc(normalise_link($user_info['url'])),
|
||||
dbesc($user_info['url']),
|
||||
dbesc(normalise_link($user_info['url']))
|
||||
);
|
||||
$condition = ["`owner-id` = ? AND `uid` = ? AND `type` != 'activity' ".$privacy_sql,
|
||||
$user_info['pid'], api_user()];
|
||||
$lastwall = dba::selectFirst('item', [], $condition, ['order' => ['id' => true]]);
|
||||
|
||||
if (DBM::is_result($lastwall)) {
|
||||
$lastwall = $lastwall[0];
|
||||
|
||||
$in_reply_to = api_in_reply_to($lastwall);
|
||||
|
||||
$converted = api_convert_item($lastwall);
|
||||
|
@ -1428,10 +1412,10 @@ function api_status_show($type)
|
|||
$status_info["entities"] = $converted["entities"];
|
||||
}
|
||||
|
||||
if (($lastwall['item_network'] != "") && ($status_info["source"] == 'web')) {
|
||||
$status_info["source"] = ContactSelector::networkToName($lastwall['item_network'], $user_info['url']);
|
||||
} elseif (($lastwall['item_network'] != "") && (ContactSelector::networkToName($lastwall['item_network'], $user_info['url']) != $status_info["source"])) {
|
||||
$status_info["source"] = trim($status_info["source"].' ('.ContactSelector::networkToName($lastwall['item_network'], $user_info['url']).')');
|
||||
if ($status_info["source"] == 'web') {
|
||||
$status_info["source"] = ContactSelector::networkToName($lastwall['network'], $user_info['url']);
|
||||
} elseif (ContactSelector::networkToName($lastwall['network'], $user_info['url']) != $status_info["source"]) {
|
||||
$status_info["source"] = trim($status_info["source"].' ('.ContactSelector::networkToName($lastwall['network'], $user_info['url']).')');
|
||||
}
|
||||
|
||||
// "uid" and "self" are only needed for some internal stuff, so remove it from here
|
||||
|
@ -1460,28 +1444,12 @@ function api_users_show($type)
|
|||
$a = get_app();
|
||||
|
||||
$user_info = api_get_user($a);
|
||||
$lastwall = q(
|
||||
"SELECT `item`.*
|
||||
FROM `item`
|
||||
INNER JOIN `contact` ON `contact`.`id`=`item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
|
||||
WHERE `item`.`uid` = %d AND `verb` = '%s' AND `item`.`contact-id` = %d
|
||||
AND ((`item`.`author-link` IN ('%s', '%s')) OR (`item`.`owner-link` IN ('%s', '%s')))
|
||||
AND `type`!='activity'
|
||||
AND `item`.`allow_cid`='' AND `item`.`allow_gid`='' AND `item`.`deny_cid`='' AND `item`.`deny_gid`=''
|
||||
ORDER BY `id` DESC
|
||||
LIMIT 1",
|
||||
intval(api_user()),
|
||||
dbesc(ACTIVITY_POST),
|
||||
intval($user_info['cid']),
|
||||
dbesc($user_info['url']),
|
||||
dbesc(normalise_link($user_info['url'])),
|
||||
dbesc($user_info['url']),
|
||||
dbesc(normalise_link($user_info['url']))
|
||||
);
|
||||
|
||||
$condition = ["`owner-id` = ? AND `uid` = ? AND `verb` = ? AND `type` != 'activity' AND NOT `private`",
|
||||
$user_info['pid'], api_user(), ACTIVITY_POST];
|
||||
$lastwall = dba::selectFirst('item', [], $condition, ['order' => ['id' => true]]);
|
||||
|
||||
if (DBM::is_result($lastwall)) {
|
||||
$lastwall = $lastwall[0];
|
||||
|
||||
$in_reply_to = api_in_reply_to($lastwall);
|
||||
|
||||
$converted = api_convert_item($lastwall);
|
||||
|
@ -1519,12 +1487,12 @@ function api_users_show($type)
|
|||
$user_info["status"]["entities"] = $converted["entities"];
|
||||
}
|
||||
|
||||
if (($lastwall['item_network'] != "") && ($user_info["status"]["source"] == 'web')) {
|
||||
$user_info["status"]["source"] = ContactSelector::networkToName($lastwall['item_network'], $user_info['url']);
|
||||
if ($user_info["status"]["source"] == 'web') {
|
||||
$user_info["status"]["source"] = ContactSelector::networkToName($lastwall['network'], $user_info['url']);
|
||||
}
|
||||
|
||||
if (($lastwall['item_network'] != "") && (ContactSelector::networkToName($lastwall['item_network'], $user_info['url']) != $user_info["status"]["source"])) {
|
||||
$user_info["status"]["source"] = trim($user_info["status"]["source"] . ' (' . ContactSelector::networkToName($lastwall['item_network'], $user_info['url']) . ')');
|
||||
if (ContactSelector::networkToName($lastwall['network'], $user_info['url']) != $user_info["status"]["source"]) {
|
||||
$user_info["status"]["source"] = trim($user_info["status"]["source"] . ' (' . ContactSelector::networkToName($lastwall['network'], $user_info['url']) . ')');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1573,10 +1541,10 @@ function api_users_search($type)
|
|||
}
|
||||
$userlist = ["users" => $userlist];
|
||||
} else {
|
||||
throw new BadRequestException("User not found.");
|
||||
throw new BadRequestException("User ".$_GET["q"]." not found.");
|
||||
}
|
||||
} else {
|
||||
throw new BadRequestException("User not found.");
|
||||
throw new BadRequestException("No user specified.");
|
||||
}
|
||||
|
||||
return api_format_data("users", $type, $userlist);
|
||||
|
@ -1735,13 +1703,8 @@ function api_statuses_home_timeline($type)
|
|||
$sql_extra .= ' AND `item`.`parent` = ' . intval($conversation_id);
|
||||
}
|
||||
|
||||
$r = q(
|
||||
"SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`
|
||||
FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
|
||||
$r = q("SELECT `item`.* FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
AND (NOT `contact`.`blocked` OR `contact`.`pending`)
|
||||
WHERE `item`.`uid` = %d AND `verb` = '%s'
|
||||
AND `item`.`visible` AND NOT `item`.`moderated` AND NOT `item`.`deleted`
|
||||
|
@ -2016,12 +1979,8 @@ function api_statuses_show($type)
|
|||
$id = $item['id'];
|
||||
|
||||
$r = q(
|
||||
"SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`
|
||||
FROM `item`
|
||||
INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
|
||||
"SELECT `item`.* FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
AND (NOT `contact`.`blocked` OR `contact`.`pending`)
|
||||
WHERE `item`.`visible` AND NOT `item`.`moderated` AND NOT `item`.`deleted`
|
||||
AND `item`.`uid` IN (0, %d) AND `item`.`verb` = '%s'
|
||||
|
@ -2107,13 +2066,8 @@ function api_conversation_show($type)
|
|||
$sql_extra = ' AND `item`.`id` <= ' . intval($max_id);
|
||||
}
|
||||
|
||||
$r = q(
|
||||
"SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`
|
||||
FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
|
||||
$r = q("SELECT `item`.* FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
AND (NOT `contact`.`blocked` OR `contact`.`pending`)
|
||||
WHERE `item`.`parent` = %d AND `item`.`visible`
|
||||
AND NOT `item`.`moderated` AND NOT `item`.`deleted`
|
||||
|
@ -2175,17 +2129,11 @@ function api_statuses_repeat($type)
|
|||
|
||||
logger('API: api_statuses_repeat: '.$id);
|
||||
|
||||
$r = q(
|
||||
"SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`, `contact`.`nick` as `reply_author`,
|
||||
`contact`.`name`, `contact`.`photo` as `reply_photo`, `contact`.`url` as `reply_url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`
|
||||
FROM `item`
|
||||
INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
|
||||
$r = q("SELECT `item`.* FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
AND (NOT `contact`.`blocked` OR `contact`.`pending`)
|
||||
WHERE `item`.`visible` AND NOT `item`.`moderated` AND NOT `item`.`deleted`
|
||||
AND NOT `item`.`private` AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = ''
|
||||
AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = ''
|
||||
AND NOT `item`.`private`
|
||||
AND `item`.`id`=%d",
|
||||
intval($id)
|
||||
);
|
||||
|
@ -2299,36 +2247,25 @@ function api_statuses_mentions($type)
|
|||
|
||||
$start = ($page - 1) * $count;
|
||||
|
||||
// Ugly code - should be changed
|
||||
$myurl = System::baseUrl() . '/profile/'. $a->user['nickname'];
|
||||
$myurl = substr($myurl, strpos($myurl, '://') + 3);
|
||||
$myurl = str_replace('www.', '', $myurl);
|
||||
|
||||
$sql_extra = '';
|
||||
|
||||
if ($max_id > 0) {
|
||||
$sql_extra .= ' AND `item`.`id` <= ' . intval($max_id);
|
||||
$sql_extra = ' AND `item`.`id` <= ' . intval($max_id);
|
||||
}
|
||||
|
||||
$r = q(
|
||||
"SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`
|
||||
FROM `item` FORCE INDEX (`uid_id`)
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
|
||||
$r = q("SELECT `item`.* FROM `item` FORCE INDEX (`uid_id`)
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
AND (NOT `contact`.`blocked` OR `contact`.`pending`)
|
||||
WHERE `item`.`uid` = %d AND `verb` = '%s'
|
||||
AND NOT (`item`.`author-link` IN ('https://%s', 'http://%s'))
|
||||
WHERE `item`.`uid` = %d AND `item`.`verb` = '%s'
|
||||
AND `item`.`author-id` != %d
|
||||
AND `item`.`visible` AND NOT `item`.`moderated` AND NOT `item`.`deleted`
|
||||
AND `item`.`parent` IN (SELECT `iid` FROM `thread` WHERE `uid` = %d AND `mention` AND !`ignored`)
|
||||
AND `item`.`parent` IN (SELECT `iid` FROM `thread` WHERE `uid` = %d AND `mention` AND NOT `ignored`)
|
||||
$sql_extra
|
||||
AND `item`.`id` > %d
|
||||
ORDER BY `item`.`id` DESC LIMIT %d ,%d",
|
||||
intval(api_user()),
|
||||
dbesc(ACTIVITY_POST),
|
||||
dbesc(protect_sprintf($myurl)),
|
||||
dbesc(protect_sprintf($myurl)),
|
||||
intval($user_info['pid']),
|
||||
intval(api_user()),
|
||||
intval($since_id),
|
||||
intval($start),
|
||||
|
@ -2408,13 +2345,8 @@ function api_statuses_user_timeline($type)
|
|||
$sql_extra .= ' AND `item`.`id` <= ' . intval($max_id);
|
||||
}
|
||||
|
||||
$r = q(
|
||||
"SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`
|
||||
FROM `item` FORCE INDEX (`uid_contactid_id`)
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
|
||||
$r = q("SELECT `item`.* FROM `item` FORCE INDEX (`uid_contactid_id`)
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
AND (NOT `contact`.`blocked` OR `contact`.`pending`)
|
||||
WHERE `item`.`uid` = %d AND `verb` = '%s'
|
||||
AND `item`.`contact-id` = %d
|
||||
|
@ -2566,17 +2498,12 @@ function api_favorites($type)
|
|||
$sql_extra .= ' AND `item`.`id` <= ' . intval($max_id);
|
||||
}
|
||||
|
||||
$r = q(
|
||||
"SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`
|
||||
FROM `item`, `contact`
|
||||
WHERE `item`.`uid` = %d
|
||||
AND `item`.`visible` = 1 AND `item`.`moderated` = 0 AND `item`.`deleted` = 0
|
||||
AND `item`.`starred` = 1
|
||||
AND `contact`.`id` = `item`.`contact-id`
|
||||
$r = q("SELECT `item`.* FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
AND (NOT `contact`.`blocked` OR `contact`.`pending`)
|
||||
WHERE `item`.`uid` = %d
|
||||
AND `item`.`visible` AND NOT `item`.`moderated` AND NOT `item`.`deleted`
|
||||
AND `item`.`starred`
|
||||
$sql_extra
|
||||
AND `item`.`id`>%d
|
||||
ORDER BY `item`.`id` DESC LIMIT %d ,%d",
|
||||
|
@ -3001,8 +2928,8 @@ function api_format_items_activities(&$item, $type = "json")
|
|||
];
|
||||
|
||||
$items = q(
|
||||
'SELECT * FROM item
|
||||
WHERE uid=%d AND `thr-parent`="%s" AND visible AND NOT deleted',
|
||||
'SELECT * FROM `item`
|
||||
WHERE `uid` = %d AND `thr-parent` = "%s" AND `visible` AND NOT `deleted`',
|
||||
intval($item['uid']),
|
||||
dbesc($item['uri'])
|
||||
);
|
||||
|
@ -3012,7 +2939,7 @@ function api_format_items_activities(&$item, $type = "json")
|
|||
//builtin_activity_puller($i, $activities);
|
||||
|
||||
// get user data and add it to the array of the activity
|
||||
$user = api_get_user($a, $i['author-link']);
|
||||
$user = api_get_user($a, $i['author-id']);
|
||||
switch ($i['verb']) {
|
||||
case ACTIVITY_LIKE:
|
||||
$activities['like'][] = $user;
|
||||
|
@ -3168,26 +3095,18 @@ function api_format_items($r, $user_info, $filter_user = false, $type = "json")
|
|||
$status["entities"] = $converted["entities"];
|
||||
}
|
||||
|
||||
if (($item['item_network'] != "") && ($status["source"] == 'web')) {
|
||||
$status["source"] = ContactSelector::networkToName($item['item_network'], $user_info['url']);
|
||||
} elseif (($item['item_network'] != "") && (ContactSelector::networkToName($item['item_network'], $user_info['url']) != $status["source"])) {
|
||||
$status["source"] = trim($status["source"].' ('.ContactSelector::networkToName($item['item_network'], $user_info['url']).')');
|
||||
if ($status["source"] == 'web') {
|
||||
$status["source"] = ContactSelector::networkToName($item['network'], $user_info['url']);
|
||||
} elseif (ContactSelector::networkToName($item['network'], $user_info['url']) != $status["source"]) {
|
||||
$status["source"] = trim($status["source"].' ('.ContactSelector::networkToName($item['network'], $user_info['url']).')');
|
||||
}
|
||||
|
||||
|
||||
// Retweets are only valid for top postings
|
||||
// It doesn't work reliable with the link if its a feed
|
||||
//$IsRetweet = ($item['owner-link'] != $item['author-link']);
|
||||
//if ($IsRetweet)
|
||||
// $IsRetweet = (($item['owner-name'] != $item['author-name']) || ($item['owner-avatar'] != $item['author-avatar']));
|
||||
|
||||
|
||||
if ($item["id"] == $item["parent"]) {
|
||||
$retweeted_item = api_share_as_retweet($item);
|
||||
if ($retweeted_item !== false) {
|
||||
$retweeted_status = $status;
|
||||
try {
|
||||
$retweeted_status["user"] = api_get_user($a, $retweeted_item["author-link"]);
|
||||
$retweeted_status["user"] = api_get_user($a, $retweeted_item["author-id"]);
|
||||
} catch (BadRequestException $e) {
|
||||
// user not found. should be found?
|
||||
/// @todo check if the user should be always found
|
||||
|
@ -3395,13 +3314,8 @@ function api_lists_statuses($type)
|
|||
$sql_extra .= ' AND `item`.`parent` = ' . intval($conversation_id);
|
||||
}
|
||||
|
||||
$statuses = dba::p(
|
||||
"SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`, `group_member`.`gid`
|
||||
FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
|
||||
$statuses = dba::p("SELECT `item`.* FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
AND (NOT `contact`.`blocked` OR `contact`.`pending`)
|
||||
STRAIGHT_JOIN `group_member` ON `group_member`.`contact-id` = `item`.`contact-id`
|
||||
WHERE `item`.`uid` = ? AND `verb` = ?
|
||||
|
@ -4936,13 +4850,8 @@ function prepare_photo_data($type, $scale, $photo_id)
|
|||
$data['photo']['friendica_activities'] = api_format_items_activities($item[0], $type);
|
||||
|
||||
// retrieve comments on photo
|
||||
$r = q(
|
||||
"SELECT `item`.*, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
|
||||
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
|
||||
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
|
||||
`contact`.`id` AS `cid`
|
||||
FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND `contact`.`uid` = `item`.`uid`
|
||||
$r = q("SELECT `item`.* FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
AND (NOT `contact`.`blocked` OR `contact`.`pending`)
|
||||
WHERE `item`.`parent` = %d AND `item`.`visible`
|
||||
AND NOT `item`.`moderated` AND NOT `item`.`deleted`
|
||||
|
@ -5254,7 +5163,7 @@ function api_in_reply_to($item)
|
|||
$in_reply_to['status_id_str'] = (string) intval($in_reply_to['status_id']);
|
||||
|
||||
$r = q(
|
||||
"SELECT `contact`.`nick`, `contact`.`name`, `contact`.`id`, `contact`.`url` FROM item
|
||||
"SELECT `contact`.`nick`, `contact`.`name`, `contact`.`id`, `contact`.`url` FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`author-id`
|
||||
WHERE `item`.`id` = %d LIMIT 1",
|
||||
intval($in_reply_to['status_id'])
|
||||
|
|
|
@ -418,7 +418,6 @@ These Fields are not added below (yet). They are here to for bug search.
|
|||
`item`.`inform`,
|
||||
`item`.`pubmail`,
|
||||
`item`.`visible`,
|
||||
`item`.`spam`,
|
||||
`item`.`bookmark`,
|
||||
`item`.`unseen`,
|
||||
`item`.`deleted`,
|
||||
|
@ -426,10 +425,12 @@ These Fields are not added below (yet). They are here to for bug search.
|
|||
`item`.`mention`,
|
||||
`item`.`global`,
|
||||
`item`.`shadow`,
|
||||
`item`.`author-link`, `item`.`author-name`, `item`.`author-avatar`,
|
||||
`item`.`owner-link`, `item`.`owner-name`, `item`.`owner-avatar`,
|
||||
*/
|
||||
|
||||
return "`item`.`author-id`, `item`.`author-link`, `item`.`author-name`, `item`.`author-avatar`,
|
||||
`item`.`owner-id`, `item`.`owner-link`, `item`.`owner-name`, `item`.`owner-avatar`,
|
||||
return "`item`.`author-id`,
|
||||
`item`.`owner-id`,
|
||||
`item`.`contact-id`, `item`.`uid`, `item`.`id`, `item`.`parent`,
|
||||
`item`.`uri`, `item`.`thr-parent`, `item`.`parent-uri`, `item`.`content-warning`,
|
||||
`item`.`commented`, `item`.`created`, `item`.`edited`, `item`.`received`,
|
||||
|
@ -441,7 +442,9 @@ These Fields are not added below (yet). They are here to for bug search.
|
|||
`item`.`allow_cid`, `item`.`allow_gid`, `item`.`deny_cid`, `item`.`deny_gid`,
|
||||
`item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
|
||||
|
||||
`author`.`thumb` AS `author-thumb`, `owner`.`thumb` AS `owner-thumb`,
|
||||
`author`.`url` AS `author-link`, `author`.`name` AS `author-name`, `author`.`thumb` AS `author-avatar`,
|
||||
`owner`.`url` AS `owner-link`, `owner`.`name` AS `owner-name`, `owner`.`thumb` AS `owner-avatar`,
|
||||
`contact`.`url` AS `contact-link`, `contact`.`name` AS `contact-name`, `contact`.`thumb` AS `contact-avatar`,
|
||||
|
||||
`contact`.`network`, `contact`.`url`, `contact`.`name`, `contact`.`writable`,
|
||||
`contact`.`self`, `contact`.`id` AS `cid`, `contact`.`alias`,
|
||||
|
@ -532,7 +535,6 @@ function conversation(App $a, $items, $mode, $update, $preview = false, $order =
|
|||
. ((x($_GET, 'bmark')) ? '&bmark=' . $_GET['bmark'] : '')
|
||||
. ((x($_GET, 'liked')) ? '&liked=' . $_GET['liked'] : '')
|
||||
. ((x($_GET, 'conv')) ? '&conv=' . $_GET['conv'] : '')
|
||||
. ((x($_GET, 'spam')) ? '&spam=' . $_GET['spam'] : '')
|
||||
. ((x($_GET, 'nets')) ? '&nets=' . $_GET['nets'] : '')
|
||||
. ((x($_GET, 'cmin')) ? '&cmin=' . $_GET['cmin'] : '')
|
||||
. ((x($_GET, 'cmax')) ? '&cmax=' . $_GET['cmax'] : '')
|
||||
|
@ -658,6 +660,13 @@ function conversation(App $a, $items, $mode, $update, $preview = false, $order =
|
|||
continue;
|
||||
}
|
||||
|
||||
if ($item['network'] == NETWORK_FEED) {
|
||||
$item['author-avatar'] = $item['contact-avatar'];
|
||||
$item['author-name'] = $item['contact-name'];
|
||||
$item['owner-avatar'] = $item['contact-avatar'];
|
||||
$item['owner-name'] = $item['contact-name'];
|
||||
}
|
||||
|
||||
$profile_name = (strlen($item['author-name']) ? $item['author-name'] : $item['name']);
|
||||
if ($item['author-link'] && !$item['author-name']) {
|
||||
$profile_name = $item['author-link'];
|
||||
|
@ -671,24 +680,6 @@ function conversation(App $a, $items, $mode, $update, $preview = false, $order =
|
|||
$sparkle = ' sparkle';
|
||||
}
|
||||
|
||||
if (!x($item, 'author-thumb') || ($item['author-thumb'] == "")) {
|
||||
$author_contact = Contact::getDetailsByURL($item['author-link'], $profile_owner);
|
||||
if ($author_contact["thumb"]) {
|
||||
$item['author-thumb'] = $author_contact["thumb"];
|
||||
} else {
|
||||
$item['author-thumb'] = $item['author-avatar'];
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($item['owner-thumb']) || ($item['owner-thumb'] == "")) {
|
||||
$owner_contact = Contact::getDetailsByURL($item['owner-link'], $profile_owner);
|
||||
if ($owner_contact["thumb"]) {
|
||||
$item['owner-thumb'] = $owner_contact["thumb"];
|
||||
} else {
|
||||
$item['owner-thumb'] = $item['owner-avatar'];
|
||||
}
|
||||
}
|
||||
|
||||
$locate = ['location' => $item['location'], 'coord' => $item['coord'], 'html' => ''];
|
||||
Addon::callHooks('render_location',$locate);
|
||||
|
||||
|
@ -749,7 +740,7 @@ function conversation(App $a, $items, $mode, $update, $preview = false, $order =
|
|||
'name' => $profile_name_e,
|
||||
'sparkle' => $sparkle,
|
||||
'lock' => $lock,
|
||||
'thumb' => System::removedBaseUrl(proxy_url($item['author-thumb'], false, PROXY_SIZE_THUMB)),
|
||||
'thumb' => System::removedBaseUrl(proxy_url($item['author-avatar'], false, PROXY_SIZE_THUMB)),
|
||||
'title' => $title_e,
|
||||
'body' => $body_e,
|
||||
'tags' => $tags_e,
|
||||
|
@ -768,7 +759,7 @@ function conversation(App $a, $items, $mode, $update, $preview = false, $order =
|
|||
'indent' => '',
|
||||
'owner_name' => $owner_name_e,
|
||||
'owner_url' => $owner_url,
|
||||
'owner_photo' => System::removedBaseUrl(proxy_url($item['owner-thumb'], false, PROXY_SIZE_THUMB)),
|
||||
'owner_photo' => System::removedBaseUrl(proxy_url($item['owner-avatar'], false, PROXY_SIZE_THUMB)),
|
||||
'plink' => get_plink($item),
|
||||
'edpost' => false,
|
||||
'isstarred' => $isstarred,
|
||||
|
|
|
@ -152,7 +152,7 @@ function notification($params)
|
|||
}
|
||||
|
||||
// "your post"
|
||||
if (DBM::is_result($item) && $item['owner-name'] == $item['author-name'] && $item['wall']) {
|
||||
if (DBM::is_result($item) && $item['owner-id'] == $item['author-id'] && $item['wall']) {
|
||||
$dest_str = L10n::t('%1$s commented on [url=%2$s]your %3$s[/url]',
|
||||
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]',
|
||||
$itemlink,
|
||||
|
|
|
@ -928,7 +928,7 @@ function admin_page_site_post(App $a)
|
|||
update_table("term", ['url'], $old_url, $new_url);
|
||||
update_table("contact", ['photo', 'thumb', 'micro', 'url', 'nurl', 'alias', 'request', 'notify', 'poll', 'confirm', 'poco', 'avatar'], $old_url, $new_url);
|
||||
update_table("gcontact", ['url', 'nurl', 'photo', 'server_url', 'notify', 'alias'], $old_url, $new_url);
|
||||
update_table("item", ['owner-link', 'owner-avatar', 'author-link', 'author-avatar', 'body', 'plink', 'tag'], $old_url, $new_url);
|
||||
update_table("item", ['owner-link', 'author-link', 'body', 'plink', 'tag'], $old_url, $new_url);
|
||||
|
||||
// update profile addresses in the format "user@server.tld"
|
||||
update_table("contact", ['addr'], $old_host, $new_host);
|
||||
|
|
|
@ -49,8 +49,7 @@ function display_init(App $a)
|
|||
|
||||
// Does the local user have this item?
|
||||
if (local_user()) {
|
||||
$r = dba::fetch_first("SELECT `id`, `parent`, `author-name`, `author-link`,
|
||||
`author-avatar`, `network`, `body`, `uid`, `owner-link`
|
||||
$r = dba::fetch_first("SELECT `id`, `parent`, `author-id`, `body`, `uid`
|
||||
FROM `item` WHERE `visible` AND NOT `deleted` AND NOT `moderated`
|
||||
AND `guid` = ? AND `uid` = ? LIMIT 1", $a->argv[1], local_user());
|
||||
if (DBM::is_result($r)) {
|
||||
|
@ -60,8 +59,7 @@ function display_init(App $a)
|
|||
|
||||
// Is it an item with uid=0?
|
||||
if (!DBM::is_result($r)) {
|
||||
$r = dba::fetch_first("SELECT `id`, `parent`, `author-name`, `author-link`,
|
||||
`author-avatar`, `network`, `body`, `uid`, `owner-link`
|
||||
$r = dba::fetch_first("SELECT `id`, `parent`, `author-id`, `body`, `uid`
|
||||
FROM `item` WHERE `visible` AND NOT `deleted` AND NOT `moderated`
|
||||
AND NOT `private` AND `uid` = 0
|
||||
AND `guid` = ? LIMIT 1", $a->argv[1]);
|
||||
|
@ -73,8 +71,7 @@ function display_init(App $a)
|
|||
return;
|
||||
}
|
||||
} elseif (($a->argc == 3) && ($nick == 'feed-item')) {
|
||||
$r = dba::fetch_first("SELECT `id`, `parent`, `author-name`, `author-link`,
|
||||
`author-avatar`, `network`, `body`, `uid`, `owner-link`
|
||||
$r = dba::fetch_first("SELECT `id`, `parent`, `author-id`, `body`, `uid`
|
||||
FROM `item` WHERE `visible` AND NOT `deleted` AND NOT `moderated`
|
||||
AND NOT `private` AND `uid` = 0
|
||||
AND `id` = ? LIMIT 1", $a->argv[2]);
|
||||
|
@ -87,7 +84,7 @@ function display_init(App $a)
|
|||
}
|
||||
|
||||
if ($r["id"] != $r["parent"]) {
|
||||
$r = dba::fetch_first("SELECT `id`, `author-name`, `author-link`, `author-avatar`, `network`, `body`, `uid`, `owner-link` FROM `item`
|
||||
$r = dba::fetch_first("SELECT `id`, `author-id`, `body`, `uid` FROM `item`
|
||||
WHERE `item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`
|
||||
AND `id` = ?", $r["parent"]);
|
||||
}
|
||||
|
@ -117,14 +114,16 @@ function display_init(App $a)
|
|||
}
|
||||
|
||||
function display_fetchauthor($a, $item) {
|
||||
$author = dba::selectFirst('contact', ['name', 'nick', 'photo', 'network', 'url'], ['id' => $item['author-id']]);
|
||||
|
||||
$profiledata = [];
|
||||
$profiledata["uid"] = -1;
|
||||
$profiledata["nickname"] = $item["author-name"];
|
||||
$profiledata["name"] = $item["author-name"];
|
||||
$profiledata["picdate"] = "";
|
||||
$profiledata["photo"] = $item["author-avatar"];
|
||||
$profiledata["url"] = $item["author-link"];
|
||||
$profiledata["network"] = $item["network"];
|
||||
$profiledata['uid'] = -1;
|
||||
$profiledata['nickname'] = $author['nick'];
|
||||
$profiledata['name'] = $author['name'];
|
||||
$profiledata['picdate'] = '';
|
||||
$profiledata['photo'] = $author['photo'];
|
||||
$profiledata['url'] = $author['url'];
|
||||
$profiledata['network'] = $author['network'];
|
||||
|
||||
// Check for a repeated message
|
||||
$skip = false;
|
||||
|
|
|
@ -103,7 +103,6 @@ function network_init(App $a)
|
|||
'/new', //new
|
||||
'', //starred
|
||||
'', //bookmarked
|
||||
'', //spam
|
||||
];
|
||||
$tab_args = [
|
||||
'f=&order=comment', //all
|
||||
|
@ -112,7 +111,6 @@ function network_init(App $a)
|
|||
'', //new
|
||||
'f=&star=1', //starred
|
||||
'f=&bmark=1', //bookmarked
|
||||
'f=&spam=1', //spam
|
||||
];
|
||||
|
||||
$k = array_search('active', $last_sel_tabs);
|
||||
|
@ -218,9 +216,8 @@ function saved_searches($search)
|
|||
* '/network/new', => $new_active = 'active'
|
||||
* '/network?f=&star=1', => $starred_active = 'active'
|
||||
* '/network?f=&bmark=1', => $bookmarked_active = 'active'
|
||||
* '/network?f=&spam=1', => $spam_active = 'active'
|
||||
*
|
||||
* @return Array ($no_active, $comment_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active);
|
||||
* @return Array ($no_active, $comment_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active);
|
||||
*/
|
||||
function network_query_get_sel_tab(App $a)
|
||||
{
|
||||
|
@ -230,7 +227,6 @@ function network_query_get_sel_tab(App $a)
|
|||
$bookmarked_active = '';
|
||||
$all_active = '';
|
||||
$conv_active = '';
|
||||
$spam_active = '';
|
||||
$postord_active = '';
|
||||
|
||||
if (($a->argc > 1 && $a->argv[1] === 'new') || ($a->argc > 2 && $a->argv[2] === 'new')) {
|
||||
|
@ -249,11 +245,7 @@ function network_query_get_sel_tab(App $a)
|
|||
$conv_active = 'active';
|
||||
}
|
||||
|
||||
if (x($_GET, 'spam')) {
|
||||
$spam_active = 'active';
|
||||
}
|
||||
|
||||
if (($new_active == '') && ($starred_active == '') && ($bookmarked_active == '') && ($conv_active == '') && ($spam_active == '')) {
|
||||
if (($new_active == '') && ($starred_active == '') && ($bookmarked_active == '') && ($conv_active == '')) {
|
||||
$no_active = 'active';
|
||||
}
|
||||
|
||||
|
@ -264,7 +256,7 @@ function network_query_get_sel_tab(App $a)
|
|||
}
|
||||
}
|
||||
|
||||
return [$no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active];
|
||||
return [$no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active];
|
||||
}
|
||||
|
||||
function network_query_get_sel_group(App $a)
|
||||
|
@ -928,7 +920,7 @@ function network_tabs(App $a)
|
|||
// item filter tabs
|
||||
/// @TODO fix this logic, reduce duplication
|
||||
/// $a->page['content'] .= '<div class="tabs-wrapper">';
|
||||
list($no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active) = network_query_get_sel_tab($a);
|
||||
list($no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active) = network_query_get_sel_tab($a);
|
||||
|
||||
// if no tabs are selected, defaults to comments
|
||||
if ($no_active == 'active') {
|
||||
|
@ -1004,7 +996,7 @@ function network_tabs(App $a)
|
|||
// save selected tab, but only if not in file mode
|
||||
if (!x($_GET, 'file')) {
|
||||
PConfig::set(local_user(), 'network.view', 'tab.selected', [
|
||||
$all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active
|
||||
$all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
69
mod/p.php
69
mod/p.php
|
@ -1,69 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
This file is part of the Diaspora protocol. It is used for fetching single public posts.
|
||||
*/
|
||||
|
||||
use Friendica\App;
|
||||
use Friendica\Core\L10n;
|
||||
use Friendica\Core\System;
|
||||
use Friendica\Database\DBM;
|
||||
use Friendica\Protocol\Diaspora;
|
||||
|
||||
function p_init($a){
|
||||
if ($a->argc != 2) {
|
||||
header($_SERVER["SERVER_PROTOCOL"].' 510 '.L10n::t('Not Extended'));
|
||||
killme();
|
||||
}
|
||||
|
||||
$guid = $a->argv[1];
|
||||
|
||||
if (strtolower(substr($guid, -4)) != ".xml") {
|
||||
header($_SERVER["SERVER_PROTOCOL"].' 404 '.L10n::t('Not Found'));
|
||||
killme();
|
||||
}
|
||||
|
||||
$guid = strtolower(substr($guid, 0, -4));
|
||||
|
||||
// Fetch the item
|
||||
$item = q("SELECT `uid`, `title`, `body`, `guid`, `contact-id`, `private`, `created`, `app`, `location`, `coord`
|
||||
FROM `item` WHERE `wall` AND NOT `private` AND `guid` = '%s' AND `network` IN ('%s', '%s') AND `id` = `parent` LIMIT 1",
|
||||
dbesc($guid), NETWORK_DFRN, NETWORK_DIASPORA);
|
||||
if (!$item) {
|
||||
$r = q("SELECT `author-link`
|
||||
FROM `item` WHERE `uid` = 0 AND `guid` = '%s' AND `network` IN ('%s', '%s') AND `id` = `parent` LIMIT 1",
|
||||
dbesc($guid), NETWORK_DFRN, NETWORK_DIASPORA);
|
||||
if ($r) {
|
||||
$parts = parse_url($r[0]["author-link"]);
|
||||
$host = $parts["scheme"]."://".$parts["host"];
|
||||
|
||||
if (normalise_link($host) != normalise_link(System::baseUrl())) {
|
||||
$location = $host."/p/".urlencode($guid).".xml";
|
||||
|
||||
header("HTTP/1.1 301 Moved Permanently");
|
||||
header("Location:".$location);
|
||||
killme();
|
||||
}
|
||||
}
|
||||
|
||||
header($_SERVER["SERVER_PROTOCOL"].' 404 '.L10n::t('Not Found'));
|
||||
killme();
|
||||
}
|
||||
|
||||
// Fetch some data from the author (We could combine both queries - but I think this is more readable)
|
||||
$r = q("SELECT `user`.`prvkey`, `contact`.`addr`, `user`.`nickname`, `contact`.`nick` FROM `user`
|
||||
INNER JOIN `contact` ON `contact`.`uid` = `user`.`uid` AND `contact`.`self`
|
||||
WHERE `user`.`uid` = %d", intval($item[0]["uid"]));
|
||||
if (!DBM::is_result($r)) {
|
||||
header($_SERVER["SERVER_PROTOCOL"].' 404 '.L10n::t('Not Found'));
|
||||
killme();
|
||||
}
|
||||
$user = $r[0];
|
||||
|
||||
$status = Diaspora::buildStatus($item[0], $user);
|
||||
$xml = Diaspora::buildPostXml($status["type"], $status["message"]);
|
||||
|
||||
header("Content-Type: application/xml; charset=utf-8");
|
||||
echo $xml;
|
||||
|
||||
killme();
|
||||
}
|
|
@ -442,7 +442,7 @@ function ping_get_notifications($uid)
|
|||
|
||||
do {
|
||||
$r = q(
|
||||
"SELECT `notify`.*, `item`.`visible`, `item`.`spam`, `item`.`deleted`
|
||||
"SELECT `notify`.*, `item`.`visible`, `item`.`deleted`
|
||||
FROM `notify` LEFT JOIN `item` ON `item`.`id` = `notify`.`iid`
|
||||
WHERE `notify`.`uid` = %d AND `notify`.`msg` != ''
|
||||
AND NOT (`notify`.`type` IN (%d, %d))
|
||||
|
@ -469,10 +469,6 @@ function ping_get_notifications($uid)
|
|||
$notification["visible"] = true;
|
||||
}
|
||||
|
||||
if (is_null($notification["spam"])) {
|
||||
$notification["spam"] = 0;
|
||||
}
|
||||
|
||||
if (is_null($notification["deleted"])) {
|
||||
$notification["deleted"] = 0;
|
||||
}
|
||||
|
@ -495,7 +491,6 @@ function ping_get_notifications($uid)
|
|||
$notification["href"] = System::baseUrl() . "/notify/view/" . $notification["id"];
|
||||
|
||||
if ($notification["visible"]
|
||||
&& !$notification["spam"]
|
||||
&& !$notification["deleted"]
|
||||
&& !(x($result, $notification["parent"]) && is_array($result[$notification["parent"]]))
|
||||
) {
|
||||
|
|
|
@ -1208,7 +1208,6 @@ class DBStructure
|
|||
"pubmail" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
|
||||
"moderated" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
|
||||
"visible" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
|
||||
"spam" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
|
||||
"starred" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "item has been favourited"],
|
||||
"bookmark" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "item has been bookmarked"],
|
||||
"unseen" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => "item has not been seen"],
|
||||
|
@ -1704,7 +1703,6 @@ class DBStructure
|
|||
"pubmail" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
|
||||
"moderated" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
|
||||
"visible" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
|
||||
"spam" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
|
||||
"starred" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
|
||||
"ignored" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
|
||||
"bookmark" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
|
||||
|
|
|
@ -944,21 +944,36 @@ class Contact extends BaseObject
|
|||
'name' => $data['name'],
|
||||
'nick' => $data['nick']];
|
||||
|
||||
// Only fill the pubkey if it was empty before. We have to prevent identity theft.
|
||||
if (!empty($contact['pubkey'])) {
|
||||
unset($contact['pubkey']);
|
||||
} else {
|
||||
$updated['pubkey'] = $data['pubkey'];
|
||||
}
|
||||
|
||||
if ($data['keywords'] != '') {
|
||||
$updated['keywords'] = $data['keywords'];
|
||||
}
|
||||
if ($data['location'] != '') {
|
||||
$updated['location'] = $data['location'];
|
||||
}
|
||||
if ($data['about'] != '') {
|
||||
$updated['about'] = $data['about'];
|
||||
|
||||
// Update the technical stuff as well - if filled
|
||||
if ($data['notify'] != '') {
|
||||
$updated['notify'] = $data['notify'];
|
||||
}
|
||||
if ($data['poll'] != '') {
|
||||
$updated['poll'] = $data['poll'];
|
||||
}
|
||||
if ($data['batch'] != '') {
|
||||
$updated['batch'] = $data['batch'];
|
||||
}
|
||||
if ($data['request'] != '') {
|
||||
$updated['request'] = $data['request'];
|
||||
}
|
||||
if ($data['confirm'] != '') {
|
||||
$updated['confirm'] = $data['confirm'];
|
||||
}
|
||||
if ($data['poco'] != '') {
|
||||
$updated['poco'] = $data['poco'];
|
||||
}
|
||||
|
||||
// Only fill the pubkey if it had been empty before. We have to prevent identity theft.
|
||||
if (empty($contact['pubkey'])) {
|
||||
$updated['pubkey'] = $data['pubkey'];
|
||||
}
|
||||
|
||||
if (($data["addr"] != $contact["addr"]) || ($data["alias"] != $contact["alias"])) {
|
||||
|
|
|
@ -566,6 +566,14 @@ class Item extends BaseObject
|
|||
return 0;
|
||||
}
|
||||
|
||||
//unset($item['author-link']);
|
||||
//unset($item['author-name']);
|
||||
//unset($item['author-avatar']);
|
||||
|
||||
//unset($item['owner-link']);
|
||||
unset($item['owner-name']);
|
||||
unset($item['owner-avatar']);
|
||||
|
||||
if ($item['network'] == NETWORK_PHANTOM) {
|
||||
logger('Missing network. Called by: '.System::callstack(), LOGGER_DEBUG);
|
||||
|
||||
|
@ -1483,8 +1491,7 @@ class Item extends BaseObject
|
|||
$forum_mode = ($prvgroup ? 2 : 1);
|
||||
|
||||
$fields = ['wall' => true, 'origin' => true, 'forum_mode' => $forum_mode, 'contact-id' => $self['id'],
|
||||
'owner-id' => $owner_id, 'owner-name' => $self['name'], 'owner-link' => $self['url'],
|
||||
'owner-avatar' => $self['thumb'], 'private' => $private, 'allow_cid' => $user['allow_cid'],
|
||||
'owner-id' => $owner_id, 'owner-link' => $self['url'], 'private' => $private, 'allow_cid' => $user['allow_cid'],
|
||||
'allow_gid' => $user['allow_gid'], 'deny_cid' => $user['deny_cid'], 'deny_gid' => $user['deny_gid']];
|
||||
dba::update('item', $fields, ['id' => $item_id]);
|
||||
|
||||
|
@ -2075,7 +2082,7 @@ EOT;
|
|||
private static function addThread($itemid, $onlyshadow = false)
|
||||
{
|
||||
$fields = ['uid', 'created', 'edited', 'commented', 'received', 'changed', 'wall', 'private', 'pubmail',
|
||||
'moderated', 'visible', 'spam', 'starred', 'bookmark', 'contact-id',
|
||||
'moderated', 'visible', 'starred', 'bookmark', 'contact-id',
|
||||
'deleted', 'origin', 'forum_mode', 'mention', 'network', 'author-id', 'owner-id'];
|
||||
$condition = ["`id` = ? AND (`parent` = ? OR `parent` = 0)", $itemid, $itemid];
|
||||
$item = dba::selectFirst('item', $fields, $condition);
|
||||
|
@ -2096,7 +2103,7 @@ EOT;
|
|||
private static function updateThread($itemid, $setmention = false)
|
||||
{
|
||||
$fields = ['uid', 'guid', 'title', 'body', 'created', 'edited', 'commented', 'received', 'changed',
|
||||
'wall', 'private', 'pubmail', 'moderated', 'visible', 'spam', 'starred', 'bookmark', 'contact-id',
|
||||
'wall', 'private', 'pubmail', 'moderated', 'visible', 'starred', 'bookmark', 'contact-id',
|
||||
'deleted', 'origin', 'forum_mode', 'network', 'author-id', 'owner-id', 'rendered-html', 'rendered-hash'];
|
||||
$condition = ["`id` = ? AND (`parent` = ? OR `parent` = 0)", $itemid, $itemid];
|
||||
|
||||
|
|
|
@ -198,6 +198,13 @@ class Post extends BaseObject
|
|||
|
||||
$filer = (($conv->getProfileOwner() == local_user() && ($item['uid'] != 0)) ? L10n::t("save to folder") : false);
|
||||
|
||||
if ($item['network'] == NETWORK_FEED) {
|
||||
$item['author-avatar'] = $item['contact-avatar'];
|
||||
$item['author-name'] = $item['contact-name'];
|
||||
$item['owner-avatar'] = $item['contact-avatar'];
|
||||
$item['owner-name'] = $item['contact-name'];
|
||||
}
|
||||
|
||||
$diff_author = !link_compare($item['url'], $item['author-link']);
|
||||
$profile_name = htmlentities(((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']);
|
||||
if ($item['author-link'] && (!$item['author-name'])) {
|
||||
|
@ -209,14 +216,6 @@ class Post extends BaseObject
|
|||
$sparkle = ' sparkle';
|
||||
}
|
||||
|
||||
if (($item['network'] == NETWORK_FEED) || empty($item['author-thumb'])) {
|
||||
$item['author-thumb'] = $item['author-avatar'];
|
||||
}
|
||||
|
||||
if (($item['network'] == NETWORK_FEED) || empty($item['owner-thumb'])) {
|
||||
$item['owner-thumb'] = $item['owner-avatar'];
|
||||
}
|
||||
|
||||
$locate = ['location' => $item['location'], 'coord' => $item['coord'], 'html' => ''];
|
||||
Addon::callHooks('render_location', $locate);
|
||||
$location = ((strlen($locate['html'])) ? $locate['html'] : render_location_dummy($locate));
|
||||
|
@ -369,7 +368,7 @@ class Post extends BaseObject
|
|||
'profile_url' => $profile_link,
|
||||
'item_photo_menu' => item_photo_menu($item),
|
||||
'name' => $name_e,
|
||||
'thumb' => $a->remove_baseurl(proxy_url($item['author-thumb'], false, PROXY_SIZE_THUMB)),
|
||||
'thumb' => $a->remove_baseurl(proxy_url($item['author-avatar'], false, PROXY_SIZE_THUMB)),
|
||||
'osparkle' => $osparkle,
|
||||
'sparkle' => $sparkle,
|
||||
'title' => $title_e,
|
||||
|
@ -382,7 +381,7 @@ class Post extends BaseObject
|
|||
'indent' => $indent,
|
||||
'shiny' => $shiny,
|
||||
'owner_url' => $this->getOwnerUrl(),
|
||||
'owner_photo' => $a->remove_baseurl(proxy_url($item['owner-thumb'], false, PROXY_SIZE_THUMB)),
|
||||
'owner_photo' => $a->remove_baseurl(proxy_url($item['owner-avatar'], false, PROXY_SIZE_THUMB)),
|
||||
'owner_name' => htmlentities($owner_name_e),
|
||||
'plink' => get_plink($item),
|
||||
'edpost' => Feature::isEnabled($conv->getProfileOwner(), 'edit_posts') ? $edpost : '',
|
||||
|
|
|
@ -164,10 +164,11 @@ class Notifier {
|
|||
if (!in_array($cmd, [Delivery::MAIL, Delivery::SUGGESTION, Delivery::RELOCATION])) {
|
||||
$parent = $items[0];
|
||||
|
||||
$thr_parent = q("SELECT `network`, `author-link`, `owner-link` FROM `item` WHERE `uri` = '%s' AND `uid` = %d",
|
||||
dbesc($target_item["thr-parent"]), intval($target_item["uid"]));
|
||||
$fields = ['network', 'author-id', 'owner-id'];
|
||||
$condition = ['uri' => $target_item["thr-parent"], 'uid' => $target_item["uid"]];
|
||||
$thr_parent = dba::selectFirst('item', $fields, $condition);
|
||||
|
||||
logger('GUID: '.$target_item["guid"].': Parent is '.$parent['network'].'. Thread parent is '.$thr_parent[0]['network'], LOGGER_DEBUG);
|
||||
logger('GUID: '.$target_item["guid"].': Parent is '.$parent['network'].'. Thread parent is '.$thr_parent['network'], LOGGER_DEBUG);
|
||||
|
||||
// This is IMPORTANT!!!!
|
||||
|
||||
|
@ -213,7 +214,7 @@ class Notifier {
|
|||
}
|
||||
|
||||
// Special treatment for forum posts
|
||||
if (($target_item['author-link'] != $target_item['owner-link']) &&
|
||||
if (($target_item['author-id'] != $target_item['owner-id']) &&
|
||||
($owner['id'] != $target_item['contact-id']) &&
|
||||
($target_item['uri'] === $target_item['parent-uri'])) {
|
||||
|
||||
|
@ -247,7 +248,7 @@ class Notifier {
|
|||
$target_item['deny_cid'].$target_item['deny_gid']) == 0))
|
||||
$push_notify = true;
|
||||
|
||||
if (($thr_parent && ($thr_parent[0]['network'] == NETWORK_OSTATUS)) || ($parent['network'] == NETWORK_OSTATUS)) {
|
||||
if (($thr_parent && ($thr_parent['network'] == NETWORK_OSTATUS)) || ($parent['network'] == NETWORK_OSTATUS)) {
|
||||
$push_notify = true;
|
||||
|
||||
if ($parent["network"] == NETWORK_OSTATUS) {
|
||||
|
@ -333,37 +334,21 @@ class Notifier {
|
|||
|
||||
// If the thread parent is OStatus then do some magic to distribute the messages.
|
||||
// We have not only to look at the parent, since it could be a Friendica thread.
|
||||
if (($thr_parent && ($thr_parent[0]['network'] == NETWORK_OSTATUS)) || ($parent['network'] == NETWORK_OSTATUS)) {
|
||||
if (($thr_parent && ($thr_parent['network'] == NETWORK_OSTATUS)) || ($parent['network'] == NETWORK_OSTATUS)) {
|
||||
$diaspora_delivery = false;
|
||||
|
||||
logger('Some parent is OStatus for '.$target_item["guid"]." - Author: ".$thr_parent[0]['author-link']." - Owner: ".$thr_parent[0]['owner-link'], LOGGER_DEBUG);
|
||||
logger('Some parent is OStatus for '.$target_item["guid"]." - Author: ".$thr_parent['author-id']." - Owner: ".$thr_parent['owner-id'], LOGGER_DEBUG);
|
||||
|
||||
// Send a salmon to the parent author
|
||||
$r = q("SELECT `url`, `notify` FROM `contact` WHERE `nurl`='%s' AND `uid` IN (0, %d) AND `notify` != ''",
|
||||
dbesc(normalise_link($thr_parent[0]['author-link'])),
|
||||
intval($uid));
|
||||
if (DBM::is_result($r)) {
|
||||
$probed_contact = $r[0];
|
||||
} else {
|
||||
$probed_contact = Probe::uri($thr_parent[0]['author-link']);
|
||||
}
|
||||
|
||||
if ($probed_contact["notify"] != "") {
|
||||
$probed_contact = dba::selectFirst('contact', ['url', 'notify'], ['id' => $thr_parent['author-id']]);
|
||||
if (DBM::is_result($probed_contact) && !empty($probed_contact["notify"])) {
|
||||
logger('Notify parent author '.$probed_contact["url"].': '.$probed_contact["notify"]);
|
||||
$url_recipients[$probed_contact["notify"]] = $probed_contact["notify"];
|
||||
}
|
||||
|
||||
// Send a salmon to the parent owner
|
||||
$r = q("SELECT `url`, `notify` FROM `contact` WHERE `nurl`='%s' AND `uid` IN (0, %d) AND `notify` != ''",
|
||||
dbesc(normalise_link($thr_parent[0]['owner-link'])),
|
||||
intval($uid));
|
||||
if (DBM::is_result($r)) {
|
||||
$probed_contact = $r[0];
|
||||
} else {
|
||||
$probed_contact = Probe::uri($thr_parent[0]['owner-link']);
|
||||
}
|
||||
|
||||
if ($probed_contact["notify"] != "") {
|
||||
$probed_contact = dba::selectFirst('contact', ['url', 'notify'], ['id' => $thr_parent['owner-id']]);
|
||||
if (DBM::is_result($probed_contact) && !empty($probed_contact["notify"])) {
|
||||
logger('Notify parent owner '.$probed_contact["url"].': '.$probed_contact["notify"]);
|
||||
$url_recipients[$probed_contact["notify"]] = $probed_contact["notify"];
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ item:
|
|||
visible: true
|
||||
contact-id: 42
|
||||
author-id: 42
|
||||
owner-id: 42
|
||||
owner-id: 45
|
||||
uid: 42
|
||||
verb: http://activitystrea.ms/schema/1.0/post
|
||||
unseen: true
|
||||
|
@ -83,7 +83,7 @@ item:
|
|||
visible: true
|
||||
contact-id: 42
|
||||
author-id: 42
|
||||
owner-id: 42
|
||||
owner-id: 45
|
||||
uid: 42
|
||||
verb: http://activitystrea.ms/schema/1.0/post
|
||||
unseen: false
|
||||
|
|
Loading…
Reference in a new issue