Merge pull request #2624 from annando/1606-contact-id

Item: New fields for author id and owner id - avatar improvement with relocation
This commit is contained in:
rabuzarus 2016-06-22 14:26:39 +02:00 committed by GitHub
commit cd92a0dc34
18 changed files with 224 additions and 171 deletions

View File

@ -38,7 +38,7 @@ define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_CODENAME', 'Asparagus'); define ( 'FRIENDICA_CODENAME', 'Asparagus');
define ( 'FRIENDICA_VERSION', '3.5-dev' ); define ( 'FRIENDICA_VERSION', '3.5-dev' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1196 ); define ( 'DB_UPDATE_VERSION', 1197 );
/** /**
* @brief Constant with a HTML line break. * @brief Constant with a HTML line break.

View File

@ -1,6 +1,6 @@
-- ------------------------------------------ -- ------------------------------------------
-- Friendica 3.5-dev (Asparagus) -- Friendica 3.5-dev (Asparagus)
-- DB_UPDATE_VERSION 1196 -- DB_UPDATE_VERSION 1197
-- ------------------------------------------ -- ------------------------------------------
@ -458,9 +458,11 @@ CREATE TABLE IF NOT EXISTS `item` (
`commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`received` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `received` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`owner-id` int(11) NOT NULL DEFAULT 0,
`owner-name` varchar(255) NOT NULL DEFAULT '', `owner-name` varchar(255) NOT NULL DEFAULT '',
`owner-link` varchar(255) NOT NULL DEFAULT '', `owner-link` varchar(255) NOT NULL DEFAULT '',
`owner-avatar` varchar(255) NOT NULL DEFAULT '', `owner-avatar` varchar(255) NOT NULL DEFAULT '',
`author-id` int(11) NOT NULL DEFAULT 0,
`author-name` varchar(255) NOT NULL DEFAULT '', `author-name` varchar(255) NOT NULL DEFAULT '',
`author-link` varchar(255) NOT NULL DEFAULT '', `author-link` varchar(255) NOT NULL DEFAULT '',
`author-avatar` varchar(255) NOT NULL DEFAULT '', `author-avatar` varchar(255) NOT NULL DEFAULT '',
@ -962,6 +964,8 @@ CREATE TABLE IF NOT EXISTS `thread` (
`uid` int(10) unsigned NOT NULL DEFAULT 0, `uid` int(10) unsigned NOT NULL DEFAULT 0,
`contact-id` int(11) unsigned NOT NULL DEFAULT 0, `contact-id` int(11) unsigned NOT NULL DEFAULT 0,
`gcontact-id` int(11) unsigned NOT NULL DEFAULT 0, `gcontact-id` int(11) unsigned NOT NULL DEFAULT 0,
`owner-id` int(11) unsigned NOT NULL DEFAULT 0,
`author-id` int(11) unsigned NOT NULL DEFAULT 0,
`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

View File

@ -255,11 +255,20 @@ function get_contact_details_by_url($url, $uid = -1, $default = array()) {
$profile["bd"] = (++$current_year)."-".$month."-".$day; $profile["bd"] = (++$current_year)."-".$month."-".$day;
} else } else
$profile["bd"] = "0000-00-00"; $profile["bd"] = "0000-00-00";
} else { } else
$profile = $default; $profile = $default;
if (!isset($profile["thumb"]) AND isset($profile["photo"]))
$profile["thumb"] = $profile["photo"]; if (($profile["photo"] == "") AND isset($default["photo"]))
} $profile["photo"] = $default["photo"];
if (($profile["name"] == "") AND isset($default["name"]))
$profile["name"] = $default["name"];
if (($profile["network"] == "") AND isset($default["network"]))
$profile["network"] = $default["network"];
if (!isset($profile["thumb"]) AND isset($profile["photo"]))
$profile["thumb"] = $profile["photo"];
if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND ($profile["gid"] != 0) AND if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND ($profile["gid"] != 0) AND
in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
@ -451,8 +460,18 @@ function get_contact($url, $uid = 0) {
$data = probe_url($url); $data = probe_url($url);
// Does this address belongs to a valid network? // Does this address belongs to a valid network?
if (!in_array($data["network"], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA))) if (!in_array($data["network"], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA))) {
return 0; if ($uid != 0)
return 0;
// Get data from the gcontact table
$r = q("SELECT `name`, `nick`, `url`, `photo`, `addr`, `alias`, `network` FROM `gcontact` WHERE `nurl` = '%s'",
dbesc(normalise_link($url)));
if (!$r)
return 0;
$data = $r[0];
}
$url = $data["url"]; $url = $data["url"];
@ -490,6 +509,16 @@ function get_contact($url, $uid = 0) {
return 0; return 0;
$contactid = $contact[0]["id"]; $contactid = $contact[0]["id"];
// Update the newly created contact from data in the gcontact table
$r = q("SELECT `location`, `about`, `keywords`, `gender` FROM `gcontact` WHERE `nurl` = '%s'",
dbesc(normalise_link($data["url"])));
if ($r) {
logger("Update contact ".$data["url"]);
q("UPDATE `contact` SET `location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `id` = %d",
dbesc($r["location"]), dbesc($r["about"]), dbesc($r["keywords"]),
dbesc($r["gender"]), intval($contactid));
}
} }
if ((count($contact) > 1) AND ($uid == 0) AND ($contactid != 0) AND ($url != "")) if ((count($contact) > 1) AND ($uid == 0) AND ($contactid != 0) AND ($url != ""))

View File

@ -408,6 +408,11 @@ function bb_ShareAttributes($share, $simplehtml) {
if ($itemcache == "") if ($itemcache == "")
$reldate = (($posted) ? " " . relative_date($posted) : ''); $reldate = (($posted) ? " " . relative_date($posted) : '');
// We only call this so that a previously unknown contact can be added.
// This is important for the function "get_contact_details_by_url".
// This function then can fetch an entry from the contact table.
get_contact($profile, 0);
$data = get_contact_details_by_url($profile); $data = get_contact_details_by_url($profile);
if (isset($data["name"]) AND isset($data["addr"])) if (isset($data["name"]) AND isset($data["addr"]))
@ -423,8 +428,8 @@ function bb_ShareAttributes($share, $simplehtml) {
if (isset($data["name"])) if (isset($data["name"]))
$author = $data["name"]; $author = $data["name"];
if (isset($data["photo"])) if (isset($data["thumb"]))
$avatar = $data["photo"]; $avatar = $data["thumb"];
$preshare = trim($share[1]); $preshare = trim($share[1]);
@ -490,6 +495,8 @@ function bb_ShareAttributes($share, $simplehtml) {
default: default:
$text = trim($share[1])."\n"; $text = trim($share[1])."\n";
$avatar = proxy_url($avatar, false, PROXY_SIZE_THUMB);
$tpl = get_markup_template('shared_content.tpl'); $tpl = get_markup_template('shared_content.tpl');
$text .= replace_macros($tpl, $text .= replace_macros($tpl,
array( array(

View File

@ -374,39 +374,27 @@ function visible_activity($item) {
} }
/** /**
* @brief List of all contact fields that are needed for the conversation function * @brief SQL query for items
*/ */
function contact_fieldlist() { function item_query() {
$fieldlist = "`contact`.`network`, `contact`.`url`, `contact`.`name`, `contact`.`writable`, return "SELECT ".item_fieldlists()." FROM `item` ".
`contact`.`self`, `contact`.`id` AS `cid`, `contact`.`alias`"; item_joins()." WHERE ".item_condition();
return $fieldlist;
} }
/** /**
* @brief SQL condition for contacts * @brief List of all data fields that are needed for displaying items
*/ */
function contact_condition() { function item_fieldlists() {
$condition = "NOT `contact`.`blocked` AND NOT `contact`.`pending`";
return $condition;
}
/**
* @brief List of all item fields that are needed for the conversation function
*/
function item_fieldlist() {
/* /*
These Fields are not added below (yet). They are here to for bug search. These Fields are not added below (yet). They are here to for bug search.
`item`.`type`, `item`.`type`,
`item`.`object`,
`item`.`extid`, `item`.`extid`,
`item`.`received`, `item`.`received`,
`item`.`changed`, `item`.`changed`,
`item`.`author-avatar`, `item`.`moderated`,
`item`.`object`,
`item`.`target-type`, `item`.`target-type`,
`item`.`target`, `item`.`target`,
`item`.`resource-id`, `item`.`resource-id`,
@ -414,10 +402,8 @@ These Fields are not added below (yet). They are here to for bug search.
`item`.`attach`, `item`.`attach`,
`item`.`inform`, `item`.`inform`,
`item`.`pubmail`, `item`.`pubmail`,
`item`.`moderated`,
`item`.`visible`, `item`.`visible`,
`item`.`spam`, `item`.`spam`,
`item`.`starred`,
`item`.`bookmark`, `item`.`bookmark`,
`item`.`unseen`, `item`.`unseen`,
`item`.`deleted`, `item`.`deleted`,
@ -430,28 +416,42 @@ These Fields are not added below (yet). They are here to for bug search.
`item`.`shadow`, `item`.`shadow`,
*/ */
$fieldlist = "`item`.`author-link`, `item`.`verb`, `item`.`id`, `item`.`parent`, `item`.`file`, return "`item`.`author-link`, `item`.`author-name`, `item`.`author-avatar`,
`item`.`uid`, `item`.`author-name`, `item`.`location`, `item`.`coord`, `item`.`owner-link`, `item`.`owner-name`, `item`.`owner-avatar`,
`item`.`title`, `item`.`uri`, `item`.`created`, `item`.`app`, `item`.`guid`, `item`.`contact-id`, `item`.`uid`, `item`.`id`, `item`.`parent`,
`item`.`contact-id`, `item`.`thr-parent`, `item`.`parent-uri`, `item`.`rendered-hash`, `item`.`uri`, `item`.`thr-parent`, `item`.`parent-uri`,
`item`.`body`, `item`.`rendered-html`, `item`.`private`, `item`.`edited`, `item`.`commented`, `item`.`created`, `item`.`edited`,
`item`.`allow_cid`, `item`.`allow_gid`, `item`.`deny_cid`, `item`.`deny_gid`, `item`.`verb`, `item`.`object-type`, `item`.`postopts`, `item`.`plink`,
`item`.`event-id`, `item`.`object-type`, `item`.`starred`, `item`.`created`, `item`.`guid`, `item`.`wall`, `item`.`private`, `item`.`starred`,
`item`.`postopts`, `item`.`owner-link`, `item`.`owner-name`, `item`.`owner-avatar`, `item`.`title`, `item`.`body`, `item`.`file`, `item`.`event-id`,
`item`.`plink`, `item`.`wall`, `item`.`commented`, `item`.`location`, `item`.`coord`, `item`.`app`,
`item`.`id` AS `item_id`, `item`.`network` AS `item_network`"; `item`.`rendered-hash`, `item`.`rendered-html`,
`item`.`allow_cid`, `item`.`allow_gid`, `item`.`deny_cid`, `item`.`deny_gid`,
`item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
return $fieldlist; `author`.`thumb` AS `author-thumb`, `owner`.`thumb` AS `owner-thumb`,
`contact`.`network`, `contact`.`url`, `contact`.`name`, `contact`.`writable`,
`contact`.`self`, `contact`.`id` AS `cid`, `contact`.`alias`";
} }
/** /**
* @brief SQL condition for items * @brief SQL join for contacts that are needed for displaying items
*/
function item_joins() {
return "STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND
NOT `contact`.`blocked` AND NOT `contact`.`pending`
LEFT JOIN `contact` AS `author` ON `author`.`id`=`item`.`author-id`
LEFT JOIN `contact` AS `owner` ON `owner`.`id`=`item`.`owner-id`";
}
/**
* @brief SQL condition for items that are needed for displaying items
*/ */
function item_condition() { function item_condition() {
$condition = "`item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`"; return "`item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`";
return $condition;
} }
/** /**
@ -623,7 +623,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$comment = ''; $comment = '';
$owner_url = ''; $owner_url = '';
$owner_photo = '';
$owner_name = ''; $owner_name = '';
$sparkle = ''; $sparkle = '';
@ -668,18 +667,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$tags[] = $prefix."<a href=\"".$tag["url"]."\" target=\"_blank\">".$tag["term"]."</a>"; $tags[] = $prefix."<a href=\"".$tag["url"]."\" target=\"_blank\">".$tag["term"]."</a>";
} }
/*foreach(explode(',',$item['tag']) as $tag){
$tag = trim($tag);
if ($tag!="") {
$t = bbcode($tag);
$tags[] = $t;
if($t[0] == '#')
$hashtags[] = $t;
elseif($t[0] == '@')
$mentions[] = $t;
}
}*/
$sp = false; $sp = false;
$profile_link = best_link_url($item,$sp); $profile_link = best_link_url($item,$sp);
if($profile_link === 'mailbox') if($profile_link === 'mailbox')
@ -689,12 +676,21 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
else else
$profile_link = zrl($profile_link); $profile_link = zrl($profile_link);
// Don't rely on the author-avatar. It is better to use the data from the contact table if (!isset($item['author-thumb'])) {
$author_contact = get_contact_details_by_url($item['author-link'], $profile_owner); $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
if ($author_contact["thumb"]) if ($author_contact["thumb"])
$profile_avatar = $author_contact["thumb"]; $item['author-thumb'] = $author_contact["thumb"];
else else
$profile_avatar = $item['author-avatar']; $item['author-thumb'] = $item['author-avatar'];
}
if (!isset($item['owner-thumb'])) {
$owner_contact = get_contact_details_by_url($item['owner-link'], $profile_owner);
if ($owner_contact["thumb"])
$item['owner-thumb'] = $owner_contact["thumb"];
else
$item['owner-thumb'] = $item['owner-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);
@ -762,7 +758,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' => App::remove_baseurl(proxy_url($profile_avatar, false, PROXY_SIZE_THUMB)), 'thumb' => App::remove_baseurl(proxy_url($item['author-thumb'], false, PROXY_SIZE_THUMB)),
'title' => $item['title_e'], 'title' => $item['title_e'],
'body' => $body_e, 'body' => $body_e,
'tags' => $tags_e, 'tags' => $tags_e,
@ -781,7 +777,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
'indent' => '', 'indent' => '',
'owner_name' => $owner_name_e, 'owner_name' => $owner_name_e,
'owner_url' => $owner_url, 'owner_url' => $owner_url,
'owner_photo' => proxy_url($owner_photo, false, PROXY_SIZE_THUMB), 'owner_photo' => App::remove_baseurl(proxy_url($item['owner-thumb'], false, PROXY_SIZE_THUMB)),
'plink' => get_plink($item), 'plink' => get_plink($item),
'edpost' => false, 'edpost' => false,
'isstarred' => $isstarred, 'isstarred' => $isstarred,
@ -885,8 +881,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
function best_link_url($item,&$sparkle,$ssl_state = false) { function best_link_url($item,&$sparkle,$ssl_state = false) {
$a = get_app();
$best_url = ''; $best_url = '';
$sparkle = false; $sparkle = false;
@ -913,7 +907,6 @@ function best_link_url($item,&$sparkle,$ssl_state = false) {
if(! function_exists('item_photo_menu')){ if(! function_exists('item_photo_menu')){
function item_photo_menu($item){ function item_photo_menu($item){
$a = get_app();
$ssl_state = false; $ssl_state = false;

View File

@ -792,9 +792,11 @@ function db_definition() {
"commented" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "commented" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
"received" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "received" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
"changed" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "changed" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
"owner-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
"owner-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "owner-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"owner-link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "owner-link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"owner-avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "owner-avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"author-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
"author-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "author-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"author-link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "author-link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"author-avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "author-avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
@ -1296,6 +1298,8 @@ function db_definition() {
"uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"),
"contact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), "contact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
"gcontact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), "gcontact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
"owner-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
"author-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
"created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
"edited" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "edited" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
"commented" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "commented" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),

View File

@ -369,6 +369,7 @@ class dfrn {
xml::add_element($doc, $relocate, "dfrn:url", $owner['url']); xml::add_element($doc, $relocate, "dfrn:url", $owner['url']);
xml::add_element($doc, $relocate, "dfrn:name", $owner['name']); xml::add_element($doc, $relocate, "dfrn:name", $owner['name']);
xml::add_element($doc, $relocate, "dfrn:addr", $owner['addr']); xml::add_element($doc, $relocate, "dfrn:addr", $owner['addr']);
xml::add_element($doc, $relocate, "dfrn:avatar", $owner['avatar']);
xml::add_element($doc, $relocate, "dfrn:photo", $photos[4]); xml::add_element($doc, $relocate, "dfrn:photo", $photos[4]);
xml::add_element($doc, $relocate, "dfrn:thumb", $photos[5]); xml::add_element($doc, $relocate, "dfrn:thumb", $photos[5]);
xml::add_element($doc, $relocate, "dfrn:micro", $photos[6]); xml::add_element($doc, $relocate, "dfrn:micro", $photos[6]);
@ -1548,6 +1549,7 @@ class dfrn {
$relocate["url"] = $xpath->query("dfrn:url/text()", $relocation)->item(0)->nodeValue; $relocate["url"] = $xpath->query("dfrn:url/text()", $relocation)->item(0)->nodeValue;
$relocate["addr"] = $xpath->query("dfrn:addr/text()", $relocation)->item(0)->nodeValue; $relocate["addr"] = $xpath->query("dfrn:addr/text()", $relocation)->item(0)->nodeValue;
$relocate["name"] = $xpath->query("dfrn:name/text()", $relocation)->item(0)->nodeValue; $relocate["name"] = $xpath->query("dfrn:name/text()", $relocation)->item(0)->nodeValue;
$relocate["avatar"] = $xpath->query("dfrn:avatar/text()", $relocation)->item(0)->nodeValue;
$relocate["photo"] = $xpath->query("dfrn:photo/text()", $relocation)->item(0)->nodeValue; $relocate["photo"] = $xpath->query("dfrn:photo/text()", $relocation)->item(0)->nodeValue;
$relocate["thumb"] = $xpath->query("dfrn:thumb/text()", $relocation)->item(0)->nodeValue; $relocate["thumb"] = $xpath->query("dfrn:thumb/text()", $relocation)->item(0)->nodeValue;
$relocate["micro"] = $xpath->query("dfrn:micro/text()", $relocation)->item(0)->nodeValue; $relocate["micro"] = $xpath->query("dfrn:micro/text()", $relocation)->item(0)->nodeValue;
@ -1557,6 +1559,9 @@ class dfrn {
$relocate["poll"] = $xpath->query("dfrn:poll/text()", $relocation)->item(0)->nodeValue; $relocate["poll"] = $xpath->query("dfrn:poll/text()", $relocation)->item(0)->nodeValue;
$relocate["sitepubkey"] = $xpath->query("dfrn:sitepubkey/text()", $relocation)->item(0)->nodeValue; $relocate["sitepubkey"] = $xpath->query("dfrn:sitepubkey/text()", $relocation)->item(0)->nodeValue;
if (($relocate["avatar"] == "") AND ($relocate["photo"] != ""))
$relocate["avatar"] = $relocate["photo"];
if ($relocate["addr"] == "") if ($relocate["addr"] == "")
$relocate["addr"] = preg_replace("=(https?://)(.*)/profile/(.*)=ism", "$3@$2", $relocate["url"]); $relocate["addr"] = preg_replace("=(https?://)(.*)/profile/(.*)=ism", "$3@$2", $relocate["url"]);
@ -1583,7 +1588,7 @@ class dfrn {
`server_url` = '%s' `server_url` = '%s'
WHERE `nurl` = '%s';", WHERE `nurl` = '%s';",
dbesc($relocate["name"]), dbesc($relocate["name"]),
dbesc($relocate["photo"]), dbesc($relocate["avatar"]),
dbesc($relocate["url"]), dbesc($relocate["url"]),
dbesc(normalise_link($relocate["url"])), dbesc(normalise_link($relocate["url"])),
dbesc($relocate["addr"]), dbesc($relocate["addr"]),
@ -1595,9 +1600,7 @@ class dfrn {
// Update the contact table. We try to find every entry. // Update the contact table. We try to find every entry.
$x = q("UPDATE `contact` SET $x = q("UPDATE `contact` SET
`name` = '%s', `name` = '%s',
`photo` = '%s', `avatar` = '%s',
`thumb` = '%s',
`micro` = '%s',
`url` = '%s', `url` = '%s',
`nurl` = '%s', `nurl` = '%s',
`addr` = '%s', `addr` = '%s',
@ -1608,9 +1611,7 @@ class dfrn {
`site-pubkey` = '%s' `site-pubkey` = '%s'
WHERE (`id` = %d AND `uid` = %d) OR (`nurl` = '%s');", WHERE (`id` = %d AND `uid` = %d) OR (`nurl` = '%s');",
dbesc($relocate["name"]), dbesc($relocate["name"]),
dbesc($relocate["photo"]), dbesc($relocate["avatar"]),
dbesc($relocate["thumb"]),
dbesc($relocate["micro"]),
dbesc($relocate["url"]), dbesc($relocate["url"]),
dbesc(normalise_link($relocate["url"])), dbesc(normalise_link($relocate["url"])),
dbesc($relocate["addr"]), dbesc($relocate["addr"]),
@ -1623,6 +1624,8 @@ class dfrn {
intval($importer["importer_uid"]), intval($importer["importer_uid"]),
dbesc(normalise_link($old["url"]))); dbesc(normalise_link($old["url"])));
update_contact_avatar($relocate["avatar"], $importer["importer_uid"], $importer["id"], true);
if ($x === false) if ($x === false)
return false; return false;
@ -1631,17 +1634,23 @@ class dfrn {
$fields = array( $fields = array(
'owner-link' => array($old["url"], $relocate["url"]), 'owner-link' => array($old["url"], $relocate["url"]),
'author-link' => array($old["url"], $relocate["url"]), 'author-link' => array($old["url"], $relocate["url"]),
'owner-avatar' => array($old["photo"], $relocate["photo"]), //'owner-avatar' => array($old["photo"], $relocate["photo"]),
'author-avatar' => array($old["photo"], $relocate["photo"]), //'author-avatar' => array($old["photo"], $relocate["photo"]),
); );
foreach ($fields as $n=>$f){ foreach ($fields as $n=>$f) {
$x = q("UPDATE `item` SET `%s` = '%s' WHERE `%s` = '%s' AND `uid` = %d", $r = q("SELECT `id` FROM `item` WHERE `%s` = '%s' AND `uid` = %d LIMIT 1",
$n, dbesc($f[1]),
$n, dbesc($f[0]), $n, dbesc($f[0]),
intval($importer["importer_uid"])); intval($importer["importer_uid"]));
if ($x === false)
return false; if ($r) {
$x = q("UPDATE `item` SET `%s` = '%s' WHERE `%s` = '%s' AND `uid` = %d",
$n, dbesc($f[1]),
$n, dbesc($f[0]),
intval($importer["importer_uid"]));
if ($x === false)
return false;
} }
}
/// @TODO /// @TODO
/// merge with current record, current contents have priority /// merge with current record, current contents have priority

View File

@ -584,6 +584,12 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
"photo" => $arr['author-avatar'], "name" => $arr['author-name'])); "photo" => $arr['author-avatar'], "name" => $arr['author-name']));
} }
if ($arr["author-id"] == 0)
$arr["author-id"] = get_contact($arr["author-link"], 0);
if ($arr["owner-id"] == 0)
$arr["owner-id"] = get_contact($arr["owner-link"], 0);
if ($arr['guid'] != "") { if ($arr['guid'] != "") {
// Checking if there is already an item with the same guid // Checking if there is already an item with the same guid
logger('checking for an item for user '.$arr['uid'].' on network '.$arr['network'].' with the guid '.$arr['guid'], LOGGER_DEBUG); logger('checking for an item for user '.$arr['uid'].' on network '.$arr['network'].' with the guid '.$arr['guid'], LOGGER_DEBUG);

View File

@ -1,7 +1,9 @@
<?php <?php
function add_thread($itemid, $onlyshadow = false) { function add_thread($itemid, $onlyshadow = false) {
$items = q("SELECT `uid`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`, `gcontact-id`, $items = q("SELECT `uid`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`,
`deleted`, `origin`, `forum_mode`, `mention`, `network` FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid)); `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`, `gcontact-id`,
`deleted`, `origin`, `forum_mode`, `mention`, `network`, `author-id`, `owner-id`
FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid));
if (!$items) if (!$items)
return; return;

View File

@ -120,19 +120,17 @@ function community_getitems($start, $itemspage) {
if (get_config('system','community_page_style') == CP_GLOBAL_COMMUNITY) if (get_config('system','community_page_style') == CP_GLOBAL_COMMUNITY)
return(community_getpublicitems($start, $itemspage)); return(community_getpublicitems($start, $itemspage));
$r = q("SELECT %s, %s, `user`.`nickname` $r = q("SELECT %s
FROM `thread` FORCE INDEX (`wall_private_received`) FROM `thread` FORCE INDEX (`wall_private_received`)
INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND NOT `user`.`hidewall` INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND NOT `user`.`hidewall`
INNER JOIN `item` ON `item`.`id` = `thread`.`iid` INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = ''
AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = ''
INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id` %s AND `contact`.`self`
AND %s AND `contact`.`self`
WHERE `thread`.`visible` AND NOT `thread`.`deleted` AND NOT `thread`.`moderated` WHERE `thread`.`visible` AND NOT `thread`.`deleted` AND NOT `thread`.`moderated`
AND NOT `thread`.`private` AND `thread`.`wall` AND NOT `thread`.`private` AND `thread`.`wall`
ORDER BY `thread`.`received` DESC LIMIT %d, %d", ORDER BY `thread`.`received` DESC LIMIT %d, %d",
item_fieldlist(), contact_fieldlist(), item_fieldlists(), item_joins(),
contact_condition(),
intval($start), intval($itemspage) intval($start), intval($itemspage)
); );
@ -142,14 +140,13 @@ function community_getitems($start, $itemspage) {
function community_getpublicitems($start, $itemspage) { function community_getpublicitems($start, $itemspage) {
$r = q("SELECT %s, `author-name` AS `name`, `owner-avatar` AS `photo`, $r = q("SELECT %s
`owner-link` AS `url`, `owner-avatar` AS `thumb`
FROM `thread` FROM `thread`
INNER JOIN `item` ON `item`.`id` = `thread`.`iid` INNER JOIN `item` ON `item`.`id` = `thread`.`iid` %s
WHERE `thread`.`uid` = 0 WHERE `thread`.`uid` = 0
ORDER BY `thread`.`created` DESC LIMIT %d, %d", ORDER BY `thread`.`created` DESC LIMIT %d, %d",
item_fieldlist(), intval($start), item_fieldlists(), item_joins(),
intval($itemspage) intval($start), intval($itemspage)
); );
return($r); return($r);

View File

@ -362,18 +362,15 @@ function display_content(&$a, $update = 0) {
return ''; return '';
} }
$r = q("SELECT %s, %s FROM `item` $r = q(item_query()." AND `item`.`uid` = %d
INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
WHERE %s AND `item`.`uid` = %d
AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE `id` = %d) AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE `id` = %d)
$sql_extra $sql_extra
ORDER BY `parent` DESC, `gravity` ASC, `id` ASC", ORDER BY `parent` DESC, `gravity` ASC, `id` ASC",
item_fieldlist(), contact_fieldlist(),
contact_condition(), item_condition(),
intval($a->profile['uid']), intval($a->profile['uid']),
intval($item_id) intval($item_id)
); );
if(!$r && local_user()) { if(!$r && local_user()) {
// Check if this is another person's link to a post that we have // Check if this is another person's link to a post that we have
$r = q("SELECT `item`.uri FROM `item` $r = q("SELECT `item`.uri FROM `item`
@ -385,13 +382,9 @@ function display_content(&$a, $update = 0) {
if($r) { if($r) {
$item_uri = $r[0]['uri']; $item_uri = $r[0]['uri'];
$r = q("SELECT %s, %s FROM `item` $r = q(item_query()." AND `item`.`uid` = %d
INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
WHERE %s AND `item`.`uid` = %d
AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE `uri` = '%s' AND uid = %d) AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE `uri` = '%s' AND uid = %d)
ORDER BY `parent` DESC, `gravity` ASC, `id` ASC ", ORDER BY `parent` DESC, `gravity` ASC, `id` ASC ",
item_fieldlist(), contact_fieldlist(),
contact_condition(), item_condition(),
intval(local_user()), intval(local_user()),
dbesc($item_uri), dbesc($item_uri),
intval(local_user()) intval(local_user())
@ -399,7 +392,6 @@ function display_content(&$a, $update = 0) {
} }
} }
if($r) { if($r) {
if((local_user()) && (local_user() == $a->profile['uid'])) { if((local_user()) && (local_user() == $a->profile['uid'])) {

View File

@ -25,6 +25,7 @@ require_once('include/text.php');
require_once('include/items.php'); require_once('include/items.php');
require_once('include/Scrape.php'); require_once('include/Scrape.php');
require_once('include/diaspora.php'); require_once('include/diaspora.php');
require_once('include/Contact.php');
function item_post(&$a) { function item_post(&$a) {
@ -676,9 +677,11 @@ function item_post(&$a) {
$datarray['owner-name'] = $contact_record['name']; $datarray['owner-name'] = $contact_record['name'];
$datarray['owner-link'] = $contact_record['url']; $datarray['owner-link'] = $contact_record['url'];
$datarray['owner-avatar'] = $contact_record['thumb']; $datarray['owner-avatar'] = $contact_record['thumb'];
$datarray["owner-id"] = get_contact($datarray["owner-link"], 0);
$datarray['author-name'] = $author['name']; $datarray['author-name'] = $author['name'];
$datarray['author-link'] = $author['url']; $datarray['author-link'] = $author['url'];
$datarray['author-avatar'] = $author['thumb']; $datarray['author-avatar'] = $author['thumb'];
$datarray["author-id"] = get_contact($datarray["author-link"], 0);
$datarray['created'] = datetime_convert(); $datarray['created'] = datetime_convert();
$datarray['edited'] = datetime_convert(); $datarray['edited'] = datetime_convert();
$datarray['commented'] = datetime_convert(); $datarray['commented'] = datetime_convert();
@ -711,6 +714,7 @@ function item_post(&$a) {
$datarray['moderated'] = $allow_moderated; $datarray['moderated'] = $allow_moderated;
$datarray['gcontact-id'] = get_gcontact_id(array("url" => $datarray['author-link'], "network" => $datarray['network'], $datarray['gcontact-id'] = get_gcontact_id(array("url" => $datarray['author-link'], "network" => $datarray['network'],
"photo" => $datarray['author-avatar'], "name" => $datarray['author-name'])); "photo" => $datarray['author-avatar'], "name" => $datarray['author-name']));
/** /**
* These fields are for the convenience of plugins... * These fields are for the convenience of plugins...
* 'self' if true indicates the owner is posting on their own wall * 'self' if true indicates the owner is posting on their own wall
@ -790,10 +794,24 @@ function item_post(&$a) {
$post_id = 0; $post_id = 0;
$r = q("INSERT INTO `item` (`guid`, `extid`, `uid`,`type`,`wall`,`gravity`, `network`, `contact-id`,`owner-name`,`owner-link`,`owner-avatar`, `author-name`, `author-link`, `author-avatar`, $r = q("INSERT INTO `item` (`guid`, `extid`, `uid`,`type`,`wall`,`gravity`, `network`, `contact-id`,
`created`, `edited`, `commented`, `received`, `changed`, `uri`, `thr-parent`, `title`, `body`, `app`, `location`, `coord`, `tag`, `inform`, `verb`, `object-type`, `postopts`, `owner-name`,`owner-link`,`owner-avatar`, `owner-id`,
`allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`, `pubmail`, `attach`, `bookmark`,`origin`, `moderated`, `file`, `rendered-html`, `rendered-hash`) `author-name`, `author-link`, `author-avatar`, `author-id`,
VALUES( '%s', '%s', %d, '%s', %d, %d, '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, '%s', '%s', '%s')", `created`, `edited`, `commented`, `received`, `changed`,
`uri`, `thr-parent`, `title`, `body`, `app`, `location`, `coord`,
`tag`, `inform`, `verb`, `object-type`, `postopts`,
`allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`,
`pubmail`, `attach`, `bookmark`,`origin`, `moderated`, `file`,
`rendered-html`, `rendered-hash`)
VALUES('%s', '%s', %d, '%s', %d, %d, '%s', %d,
'%s', '%s', '%s', %d,
'%s', '%s', '%s', %d,
'%s', '%s', '%s', '%s', '%s',
'%s', '%s', '%s', '%s', '%s', '%s', '%s',
'%s', '%s', '%s', '%s', '%s',
'%s', '%s', '%s', '%s', %d,
%d, '%s', %d, %d, %d, '%s',
'%s', '%s')",
dbesc($datarray['guid']), dbesc($datarray['guid']),
dbesc($datarray['extid']), dbesc($datarray['extid']),
intval($datarray['uid']), intval($datarray['uid']),
@ -805,9 +823,11 @@ function item_post(&$a) {
dbesc($datarray['owner-name']), dbesc($datarray['owner-name']),
dbesc($datarray['owner-link']), dbesc($datarray['owner-link']),
dbesc($datarray['owner-avatar']), dbesc($datarray['owner-avatar']),
intval($datarray['owner-id']),
dbesc($datarray['author-name']), dbesc($datarray['author-name']),
dbesc($datarray['author-link']), dbesc($datarray['author-link']),
dbesc($datarray['author-avatar']), dbesc($datarray['author-avatar']),
intval($datarray['author-id']),
dbesc($datarray['created']), dbesc($datarray['created']),
dbesc($datarray['edited']), dbesc($datarray['edited']),
dbesc($datarray['commented']), dbesc($datarray['commented']),

View File

@ -682,8 +682,8 @@ function network_content(&$a, $update = 0) {
if(get_config('system', 'old_pager')) { if(get_config('system', 'old_pager')) {
$r = q("SELECT COUNT(*) AS `total` $r = q("SELECT COUNT(*) AS `total`
FROM $sql_table $sql_post_table INNER JOIN `contact` ON `contact`.`id` = $sql_table.`contact-id` FROM $sql_table $sql_post_table INNER JOIN `contact` ON `contact`.`id` = $sql_table.`contact-id`
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
WHERE $sql_table.`uid` = %d AND $sql_table.`visible` = 1 AND $sql_table.`deleted` = 0 WHERE $sql_table.`uid` = %d AND $sql_table.`visible` AND NOT $sql_table.`deleted`
$sql_extra2 $sql_extra3 $sql_extra2 $sql_extra3
$sql_extra $sql_nets ", $sql_extra $sql_nets ",
intval($_SESSION['uid']) intval($_SESSION['uid'])
@ -714,20 +714,18 @@ function network_content(&$a, $update = 0) {
} }
if($nouveau) { if($nouveau) {
$simple_update = (($update) ? " AND `item`.`unseen` = 1 " : ''); $simple_update = (($update) ? " AND `item`.`unseen` " : '');
if ($sql_order == "") if ($sql_order == "")
$sql_order = "`item`.`received`"; $sql_order = "`item`.`received`";
// "New Item View" - show all items unthreaded in reverse created date order // "New Item View" - show all items unthreaded in reverse created date order
$items = q("SELECT %s, %s FROM $sql_table $sql_post_table $items = q("SELECT %s FROM $sql_table $sql_post_table %s
INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
WHERE %s AND `item`.`uid` = %d WHERE %s AND `item`.`uid` = %d
$simple_update $simple_update
$sql_extra $sql_nets $sql_extra $sql_nets
ORDER BY $sql_order DESC $pager_sql ", ORDER BY $sql_order DESC $pager_sql ",
item_fieldlist(), contact_fieldlist(), item_fieldlists(), item_joins(), item_condition(),
contact_condition(), item_condition(),
intval($_SESSION['uid']) intval($_SESSION['uid'])
); );
@ -755,28 +753,26 @@ function network_content(&$a, $update = 0) {
// Fetch a page full of parent items for this page // Fetch a page full of parent items for this page
if($update) { if($update) {
if (!get_config("system", "like_no_comment")) if (get_config("system", "like_no_comment"))
$sql_extra4 = "(`item`.`deleted` = 0 $sql_extra4 = " AND `item`.`verb` = '".ACTIVITY_POST."'";
OR `item`.`verb` = '".ACTIVITY_LIKE."' OR `item`.`verb` = '".ACTIVITY_DISLIKE."'
OR `item`.`verb` = '".ACTIVITY_ATTEND."' OR `item`.`verb` = '".ACTIVITY_ATTENDNO."'
OR `item`.`verb` = '".ACTIVITY_ATTENDMAYBE."')";
else else
$sql_extra4 = "`item`.`deleted` = 0 AND `item`.`verb` = '".ACTIVITY_POST."'"; $sql_extra4 = "";
$r = q("SELECT `item`.`parent` AS `item_id`, `item`.`network` AS `item_network`, `contact`.`uid` AS `contact_uid` $r = q("SELECT `item`.`parent` AS `item_id`, `item`.`network` AS `item_network`, `contact`.`uid` AS `contact_uid`
FROM $sql_table $sql_post_table INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` FROM $sql_table $sql_post_table INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND $sql_extra4 WHERE `item`.`uid` = %d AND `item`.`visible` AND NOT `item`.`deleted` $sql_extra4
AND `item`.`moderated` = 0 AND `item`.`unseen` = 1 AND NOT `item`.`moderated` AND `item`.`unseen`
$sql_extra3 $sql_extra $sql_nets ORDER BY `item_id` DESC LIMIT 100", $sql_extra3 $sql_extra $sql_nets
ORDER BY `item_id` DESC LIMIT 100",
intval(local_user()) intval(local_user())
); );
} else { } else {
$r = q("SELECT `thread`.`iid` AS `item_id`, `thread`.`network` AS `item_network`, `contact`.`uid` AS `contact_uid` $r = q("SELECT `thread`.`iid` AS `item_id`, `thread`.`network` AS `item_network`, `contact`.`uid` AS `contact_uid`
FROM $sql_table $sql_post_table STRAIGHT_JOIN `contact` ON `contact`.`id` = `thread`.`contact-id` FROM $sql_table $sql_post_table STRAIGHT_JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
WHERE `thread`.`uid` = %d AND `thread`.`visible` = 1 AND `thread`.`deleted` = 0 WHERE `thread`.`uid` = %d AND `thread`.`visible` AND NOT `thread`.`deleted`
AND `thread`.`moderated` = 0 AND NOT `thread`.`moderated`
$sql_extra2 $sql_extra3 $sql_extra $sql_nets $sql_extra2 $sql_extra3 $sql_extra $sql_nets
ORDER BY $sql_order DESC $pager_sql ", ORDER BY $sql_order DESC $pager_sql ",
intval(local_user()) intval(local_user())
@ -806,14 +802,9 @@ function network_content(&$a, $update = 0) {
$items = array(); $items = array();
foreach ($parents_arr AS $parents) { foreach ($parents_arr AS $parents) {
// $sql_extra ORDER BY `item`.`commented` DESC LIMIT %d", $thread_items = q(item_query()." AND `item`.`uid` = %d
$thread_items = q("SELECT %s, %s FROM `item`
INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
WHERE %s AND `item`.`uid` = %d
AND `item`.`parent` = %d AND `item`.`parent` = %d
ORDER BY `item`.`commented` DESC LIMIT %d", ORDER BY `item`.`commented` DESC LIMIT %d",
item_fieldlist(), contact_fieldlist(),
contact_condition(), item_condition(),
intval(local_user()), intval(local_user()),
intval($parents), intval($parents),
intval($max_comments + 1) intval($max_comments + 1)

View File

@ -73,11 +73,11 @@ function notes_content(&$a,$update = false) {
$sql_extra = " AND `allow_cid` = '<" . $a->contact['id'] . ">' "; $sql_extra = " AND `allow_cid` = '<" . $a->contact['id'] . ">' ";
$r = q("SELECT COUNT(*) AS `total` $r = q("SELECT COUNT(*) AS `total`
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s FROM `item` %s
WHERE %s AND `item`.`uid` = %d AND `item`.`type` = 'note' WHERE %s AND `item`.`uid` = %d AND `item`.`type` = 'note'
AND `contact`.`self` AND `item`.`id` = `item`.`parent` AND NOT `item`.`wall` AND `contact`.`self` AND `item`.`id` = `item`.`parent` AND NOT `item`.`wall`
$sql_extra ", $sql_extra ",
contact_condition(), item_condition(), item_joins(), item_condition(),
intval(local_user()) intval(local_user())
); );
@ -87,13 +87,12 @@ function notes_content(&$a,$update = false) {
$a->set_pager_itemspage(40); $a->set_pager_itemspage(40);
} }
$r = q("SELECT `item`.`id` AS `item_id` FROM `item` $r = q("SELECT `item`.`id` AS `item_id` FROM `item` %s
LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s AND `contact`.`self`
WHERE %s AND `item`.`uid` = %d AND `item`.`type` = 'note' WHERE %s AND `item`.`uid` = %d AND `item`.`type` = 'note'
AND `item`.`id` = `item`.`parent` AND NOT `item`.`wall` AND `item`.`id` = `item`.`parent` AND NOT `item`.`wall`
$sql_extra $sql_extra
ORDER BY `item`.`created` DESC LIMIT %d ,%d ", ORDER BY `item`.`created` DESC LIMIT %d ,%d ",
contact_condition(), item_condition(), item_joins(), item_condition(),
intval(local_user()), intval(local_user()),
intval($a->pager['start']), intval($a->pager['start']),
intval($a->pager['itemspage']) intval($a->pager['itemspage'])
@ -108,13 +107,11 @@ function notes_content(&$a,$update = false) {
$parents_arr[] = $rr['item_id']; $parents_arr[] = $rr['item_id'];
$parents_str = implode(', ', $parents_arr); $parents_str = implode(', ', $parents_arr);
$r = q("SELECT %s, %s FROM `item` $r = q("SELECT %s FROM `item` %s
LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
WHERE %s AND `item`.`uid` = %d AND `item`.`parent` IN (%s) WHERE %s AND `item`.`uid` = %d AND `item`.`parent` IN (%s)
$sql_extra $sql_extra
ORDER BY `parent` DESC, `gravity` ASC, `item`.`id` ASC ", ORDER BY `parent` DESC, `gravity` ASC, `item`.`id` ASC ",
item_fieldlist(), contact_fieldlist(), item_fieldlists(), item_joins(), item_condition(),
contact_condition(), item_condition(),
intval(local_user()), intval(local_user()),
dbesc($parents_str) dbesc($parents_str)
); );

View File

@ -303,13 +303,9 @@ function profile_content(&$a, $update = 0) {
$parents_arr[] = $rr['item_id']; $parents_arr[] = $rr['item_id'];
$parents_str = implode(', ', $parents_arr); $parents_str = implode(', ', $parents_arr);
$items = q("SELECT %s, %s FROM `item` $items = q(item_query()." AND `item`.`uid` = %d
INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
WHERE %s AND `item`.`uid` = %d
AND `item`.`parent` IN (%s) AND `item`.`parent` IN (%s)
$sql_extra ", $sql_extra ",
item_fieldlist(), contact_fieldlist(),
contact_condition(), item_condition(),
intval($a->profile['profile_uid']), intval($a->profile['profile_uid']),
dbesc($parents_str) dbesc($parents_str)
); );

View File

@ -191,14 +191,12 @@ function search_content(&$a) {
if($tag) { if($tag) {
logger("Start tag search for '".$search."'", LOGGER_DEBUG); logger("Start tag search for '".$search."'", LOGGER_DEBUG);
$r = q("SELECT STRAIGHT_JOIN %s, %s $r = q("SELECT %s
FROM `term` FROM `term`
INNER JOIN `item` ON `item`.`id`=`term`.`oid` STRAIGHT_JOIN `item` ON `item`.`id`=`term`.`oid` %s
INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
WHERE %s AND (`term`.`uid` = 0 OR (`term`.`uid` = %d AND NOT `term`.`global`)) AND `term`.`otype` = %d AND `term`.`type` = %d AND `term`.`term` = '%s' WHERE %s AND (`term`.`uid` = 0 OR (`term`.`uid` = %d AND NOT `term`.`global`)) AND `term`.`otype` = %d AND `term`.`type` = %d AND `term`.`term` = '%s'
ORDER BY term.created DESC LIMIT %d , %d ", ORDER BY term.created DESC LIMIT %d , %d ",
item_fieldlist(), contact_fieldlist(), item_fieldlists(), item_joins(), item_condition(),
contact_condition(), item_condition(),
intval(local_user()), intval(local_user()),
intval(TERM_OBJ_POST), intval(TERM_HASHTAG), dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG), dbesc(protect_sprintf($search)),
intval($a->pager['start']), intval($a->pager['itemspage'])); intval($a->pager['start']), intval($a->pager['itemspage']));
@ -211,14 +209,13 @@ function search_content(&$a) {
$sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search)))); $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search))));
} }
$r = q("SELECT STRAIGHT_JOIN %s, %s
FROM `item` $r = q("SELECT %s
INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s FROM `item` %s
WHERE %s AND (`item`.`uid` = 0 OR (`item`.`uid` = %s AND NOT `item`.`global`)) WHERE %s AND (`item`.`uid` = 0 OR (`item`.`uid` = %s AND NOT `item`.`global`))
$sql_extra $sql_extra
GROUP BY `item`.`uri` ORDER BY `item`.`id` DESC LIMIT %d , %d", GROUP BY `item`.`uri` ORDER BY `item`.`id` DESC LIMIT %d , %d",
item_fieldlist(), contact_fieldlist(), item_fieldlists(), item_joins(), item_condition(),
contact_condition(), item_condition(),
intval(local_user()), intval(local_user()),
intval($a->pager['start']), intval($a->pager['itemspage'])); intval($a->pager['start']), intval($a->pager['itemspage']));
} }

View File

@ -150,12 +150,21 @@ class Item extends BaseObject {
else else
$profile_link = zrl($profile_link); $profile_link = zrl($profile_link);
// Don't rely on the author-avatar. It is better to use the data from the contact table if (!isset($item['author-thumb'])) {
$author_contact = get_contact_details_by_url($item['author-link'], $conv->get_profile_owner()); $author_contact = get_contact_details_by_url($item['author-link'], $conv->get_profile_owner());
if ($author_contact["thumb"]) if ($author_contact["thumb"])
$profile_avatar = $author_contact["thumb"]; $item['author-thumb'] = $author_contact["thumb"];
else else
$profile_avatar = $item['author-avatar']; $item['author-thumb'] = $item['author-avatar'];
}
if (!isset($item['owner-thumb'])) {
$owner_contact = get_contact_details_by_url($item['owner-link'], $conv->get_profile_owner());
if ($owner_contact["thumb"])
$item['owner-thumb'] = $owner_contact["thumb"];
else
$item['owner-thumb'] = $item['owner-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);
@ -364,7 +373,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' => $a->remove_baseurl(proxy_url($profile_avatar, false, PROXY_SIZE_THUMB)), 'thumb' => $a->remove_baseurl(proxy_url($item['author-thumb'], false, PROXY_SIZE_THUMB)),
'osparkle' => $osparkle, 'osparkle' => $osparkle,
'sparkle' => $sparkle, 'sparkle' => $sparkle,
'title' => $title_e, 'title' => $title_e,
@ -377,7 +386,7 @@ class Item extends BaseObject {
'indent' => $indent, 'indent' => $indent,
'shiny' => $shiny, 'shiny' => $shiny,
'owner_url' => $this->get_owner_url(), 'owner_url' => $this->get_owner_url(),
'owner_photo' => proxy_url($this->get_owner_photo(), false, PROXY_SIZE_THUMB), 'owner_photo' => $a->remove_baseurl(proxy_url($item['owner-thumb'], false, PROXY_SIZE_THUMB)),
'owner_name' => htmlentities($owner_name_e), 'owner_name' => htmlentities($owner_name_e),
'plink' => get_plink($item), 'plink' => get_plink($item),
'edpost' => ((feature_enabled($conv->get_profile_owner(),'edit_posts')) ? $edpost : ''), 'edpost' => ((feature_enabled($conv->get_profile_owner(),'edit_posts')) ? $edpost : ''),

View File

@ -1,6 +1,6 @@
<?php <?php
define('UPDATE_VERSION' , 1196); define('UPDATE_VERSION' , 1197);
/** /**
* *