$r = q("SELECT * from `item`,`contact` WHERE
`item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';",
dbesc($item['parent-uri']));
- if(count($r)==0) return;
+ if (!dbm::is_result($r)) return;
$obj=$r[0];
$author = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]';
$r = q("SELECT * from `item`,`contact` WHERE
`item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';",
dbesc($item['parent-uri']));
- if(count($r)==0) return;
+ if (!dbm::is_result($r)) return;
$obj=$r[0];
$author = '[url=' . zrl($item['author-link']) . ']' . $item['author-name'] . '[/url]';
dbesc($obj->id),
intval($item['uid'])
);
- if(count($r) && $r[0]['plink']) {
+ if (dbm::is_result($r) && $r[0]['plink']) {
$target = $r[0];
$Bname = $target['author-name'];
$Blink = $target['author-link'];
return true;
}
+/**
+ * @brief SQL query for items
+ */
+function item_query() {
+
+ return "SELECT ".item_fieldlists()." FROM `item` ".
+ item_joins()." WHERE ".item_condition();
+}
+
+/**
+ * @brief List of all data fields that are needed for displaying items
+ */
+function item_fieldlists() {
+
+/*
+These Fields are not added below (yet). They are here to for bug search.
+`item`.`type`,
+`item`.`extid`,
+`item`.`received`,
+`item`.`changed`,
+`item`.`moderated`,
+`item`.`target-type`,
+`item`.`target`,
+`item`.`resource-id`,
+`item`.`tag`,
+`item`.`inform`,
+`item`.`pubmail`,
+`item`.`visible`,
+`item`.`spam`,
+`item`.`bookmark`,
+`item`.`unseen`,
+`item`.`deleted`,
+`item`.`origin`,
+`item`.`forum_mode`,
+`item`.`last-child`,
+`item`.`mention`,
+`item`.`global`,
+`item`.`gcontact-id`,
+`item`.`shadow`,
+*/
+
+ return "`item`.`author-link`, `item`.`author-name`, `item`.`author-avatar`,
+ `item`.`owner-link`, `item`.`owner-name`, `item`.`owner-avatar`,
+ `item`.`contact-id`, `item`.`uid`, `item`.`id`, `item`.`parent`,
+ `item`.`uri`, `item`.`thr-parent`, `item`.`parent-uri`,
+ `item`.`commented`, `item`.`created`, `item`.`edited`,
+ `item`.`verb`, `item`.`object-type`, `item`.`postopts`, `item`.`plink`,
+ `item`.`guid`, `item`.`wall`, `item`.`private`, `item`.`starred`,
+ `item`.`title`, `item`.`body`, `item`.`file`, `item`.`event-id`,
+ `item`.`location`, `item`.`coord`, `item`.`app`, `item`.`attach`,
+ `item`.`rendered-hash`, `item`.`rendered-html`, `item`.`object`,
+ `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`,
+
+ `contact`.`network`, `contact`.`url`, `contact`.`name`, `contact`.`writable`,
+ `contact`.`self`, `contact`.`id` AS `cid`, `contact`.`alias`";
+}
+
+/**
+ * @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` OR `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() {
+
+ return "`item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`";
+}
/**
* "Render" a conversation or list of items for HTML display.
else
$return_url = $_SESSION['return_url'] = $a->query_string;
- load_contact_links(local_user());
-
$cb = array('items' => $items, 'mode' => $mode, 'update' => $update, 'preview' => $preview);
call_hooks('conversation_start',$cb);
$comment = '';
$owner_url = '';
- $owner_photo = '';
$owner_name = '';
$sparkle = '';
$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;
$profile_link = best_link_url($item,$sp);
if($profile_link === 'mailbox')
else
$profile_link = zrl($profile_link);
- // Don't rely on the author-avatar. It is better to use the data from the contact table
- $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
- if ($author_contact["thumb"])
- $profile_avatar = $author_contact["thumb"];
- else
- $profile_avatar = $item['author-avatar'];
+ if (!isset($item['author-thumb']) OR ($item['author-thumb'] == "")) {
+ $author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
+ if ($author_contact["thumb"])
+ $item['author-thumb'] = $author_contact["thumb"];
+ else
+ $item['author-thumb'] = $item['author-avatar'];
+ }
- // This was the old method. We leave it here at the moment
- //$normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
- //if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
- // $profile_avatar = $a->contacts[$normalised]['thumb'];
- //else
- // $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']));
+ if (!isset($item['owner-thumb']) OR ($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' => '');
call_hooks('render_location',$locate);
'name' => $profile_name_e,
'sparkle' => $sparkle,
'lock' => $lock,
- 'thumb' => 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'],
'body' => $body_e,
'tags' => $tags_e,
'indent' => '',
'owner_name' => $owner_name_e,
'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),
'edpost' => false,
'isstarred' => $isstarred,
function best_link_url($item,&$sparkle,$ssl_state = false) {
- $a = get_app();
-
$best_url = '';
$sparkle = false;
$clean_url = normalise_link($item['author-link']);
- if((local_user()) && (local_user() == $item['uid'])) {
- if(isset($a->contacts) && x($a->contacts,$clean_url)) {
- if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) {
- $best_url = 'redir/'.$a->contacts[$clean_url]['id'];
- $sparkle = true;
- } else
- $best_url = $a->contacts[$clean_url]['url'];
- }
- } elseif (local_user()) {
- $r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' LIMIT 1",
+ if (local_user()) {
+ $r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' AND NOT `pending` LIMIT 1",
dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url)));
if ($r) {
$best_url = 'redir/'.$r[0]['id'];
}
-if(! function_exists('item_photo_menu')){
-function item_photo_menu($item){
- $a = get_app();
-
+if (! function_exists('item_photo_menu')) {
+function item_photo_menu($item)
+{
$ssl_state = false;
if(local_user()) {
$ssl_state = true;
- if(! count($a->contacts))
- load_contact_links(local_user());
}
- $sub_link="";
- $poke_link="";
- $contact_url="";
- $pm_url="";
- $status_link="";
- $photos_link="";
- $posts_link="";
-
- if((local_user()) && local_user() == $item['uid'] && $item['parent'] == $item['id'] && (! $item['self'])) {
+
+ $sub_link = '';
+ $poke_link = '';
+ $contact_url = '';
+ $pm_url = '';
+ $status_link = '';
+ $photos_link = '';
+ $posts_link = '';
+ $network = '';
+
+ if ((local_user()) && local_user() == $item['uid'] && $item['parent'] == $item['id'] && (! $item['self'])) {
$sub_link = 'javascript:dosubthread(' . $item['id'] . '); return false;';
}
$sparkle = false;
- $profile_link = best_link_url($item,$sparkle,$ssl_state);
- if($profile_link === 'mailbox')
+ $profile_link = best_link_url($item, $sparkle, $ssl_state);
+ if ($profile_link === 'mailbox') {
$profile_link = '';
+ }
+
+ $cid = 0;
+ $network = '';
+ $rel = 0;
+ $r = q("SELECT `id`, `network`, `rel` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' LIMIT 1",
+ intval(local_user()), dbesc(normalise_link($item['author-link'])));
+ if ($r) {
+ $cid = $r[0]['id'];
+ $network = $r[0]['network'];
+ $rel = $r[0]['rel'];
+ }
if($sparkle) {
- $cid = intval(basename($profile_link));
- $status_link = $profile_link . "?url=status";
- $photos_link = $profile_link . "?url=photos";
- $profile_link = $profile_link . "?url=profile";
- $pm_url = 'message/new/' . $cid;
+ $status_link = $profile_link . '?url=status';
+ $photos_link = $profile_link . '?url=photos';
+ $profile_link = $profile_link . '?url=profile';
$zurl = '';
- }
- else {
+ } else {
$profile_link = zrl($profile_link);
- if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) {
- $cid = $item['contact-id'];
- } else {
- $r = q("SELECT `id`, `network` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' LIMIT 1",
- intval(local_user()), dbesc(normalise_link($item['author-link'])));
- if ($r) {
- $cid = $r[0]["id"];
-
- if ($r[0]["network"] == NETWORK_DIASPORA)
- $pm_url = 'message/new/' . $cid;
-
- } else
- $cid = 0;
- }
}
- if(($cid) && (! $item['self'])) {
+
+ if ($cid && !$item['self']) {
$poke_link = 'poke/?f=&c=' . $cid;
$contact_url = 'contacts/' . $cid;
$posts_link = 'contacts/' . $cid . '/posts';
- $clean_url = normalise_link($item['author-link']);
-
- if((local_user()) && (local_user() == $item['uid'])) {
- if(isset($a->contacts) && x($a->contacts,$clean_url)) {
- if($a->contacts[$clean_url]['network'] === NETWORK_DIASPORA) {
- $pm_url = 'message/new/' . $cid;
- }
- }
+ if (in_array($network, array(NETWORK_DFRN, NETWORK_DIASPORA))) {
+ $pm_url = 'message/new/' . $cid;
}
-
}
if (local_user()) {
$menu = Array(
- t("Follow Thread") => $sub_link,
- t("View Status") => $status_link,
- t("View Profile") => $profile_link,
- t("View Photos") => $photos_link,
- t("Network Posts") => $posts_link,
- t("Edit Contact") => $contact_url,
- t("Send PM") => $pm_url
+ t('Follow Thread') => $sub_link,
+ t('View Status') => $status_link,
+ t('View Profile') => $profile_link,
+ t('View Photos') => $photos_link,
+ t('Network Posts') => $posts_link,
+ t('View Contact') => $contact_url,
+ t('Send PM') => $pm_url
);
- if ($a->contacts[$clean_url]['network'] === NETWORK_DFRN)
+ if ($network == NETWORK_DFRN) {
$menu[t("Poke")] = $poke_link;
+ }
- if ((($cid == 0) OR ($a->contacts[$clean_url]['rel'] == CONTACT_IS_FOLLOWER)) AND
- in_array($item['network'], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA)))
- $menu[t("Connect/Follow")] = "follow?url=".urlencode($item['author-link']);
- } else
- $menu = array(t("View Profile") => $item['author-link']);
+ if ((($cid == 0) OR ($rel == CONTACT_IS_FOLLOWER)) AND
+ in_array($item['network'], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA))) {
+ $menu[t('Connect/Follow')] = 'follow?url=' . urlencode($item['author-link']);
+ }
+ } else {
+ $menu = array(t('View Profile') => $item['author-link']);
+ }
$args = array('item' => $item, 'menu' => $menu);
$menu = $args['menu'];
- $o = "";
- foreach($menu as $k=>$v){
- if(strpos($v,'javascript:') === 0) {
- $v = substr($v,11);
- $o .= "<li role=\"menuitem\"><a onclick=\"$v\">$k</a></li>\n";
+ $o = '';
+ foreach ($menu as $k => $v) {
+ if (strpos($v, 'javascript:') === 0) {
+ $v = substr($v, 11);
+ $o .= '<li role="menuitem"><a onclick="' . $v . '">' . $k . '</a></li>' . PHP_EOL;
+ } elseif ($v!='') {
+ $o .= '<li role="menuitem"><a href="' . $v . '">' . $k . '</a></li>' . PHP_EOL;
}
- elseif ($v!="") $o .= "<li role=\"menuitem\"><a href=\"$v\">$k</a></li>\n";
}
return $o;
}}
else
$conv_responses[$mode][$item['thr-parent']] ++;
+ if((local_user()) && (local_user() == $item['uid']) && ($item['self']))
+ $conv_responses[$mode][$item['thr-parent'] . '-self'] = 1;
+
$conv_responses[$mode][$item['thr-parent'] . '-l'][] = $url;
// there can only be one activity verb per item so if we found anything, we can stop looking
$explikers = sprintf( t('%s don\'t attend.'), $likers);
break;
case 'attendmaybe':
- $phrase = sprintf( t('<span %1$s>%2$d people</span> anttend maybe'), $spanatts, $cnt);
+ $phrase = sprintf( t('<span %1$s>%2$d people</span> attend maybe'), $spanatts, $cnt);
$explikers = sprintf( t('%s anttend maybe.'), $likers);
break;
}
'$private' => t('Private post'),
'$is_private' => $private_post,
'$public_link' => $public_post_link,
+
+ //jot nav tab (used in some themes)
+ '$message' => t('Message'),
+ '$browser' => t('Browser'),
));
$ret[$v] = array();
$ret[$v]['count'] = ((x($conv_responses[$v],$item['uri'])) ? $conv_responses[$v][$item['uri']] : '');
$ret[$v]['list'] = ((x($conv_responses[$v],$item['uri'])) ? $conv_responses[$v][$item['uri'] . '-l'] : '');
+ $ret[$v]['self'] = ((x($conv_responses[$v],$item['uri'])) ? $conv_responses[$v][$item['uri'] . '-self'] : '0');
if(count($ret[$v]['list']) > MAX_LIKERS) {
$ret[$v]['list_part'] = array_slice($ret[$v]['list'], 0, MAX_LIKERS);
array_push($ret[$v]['list_part'], '<a href="#" data-toggle="modal" data-target="#' . $v . 'Modal-'