X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fconversation.php;h=63db42d93ad91439b552d7213dfdd1f5fe7b5ffe;hb=00c74a7d6da821e202c6058ce73c5495cbeb8ab7;hp=38f6e76862c5a4bad2faea85b8006ff86bc9ac65;hpb=8932bec614132dfd4daf05985bb09e08fe5f6e07;p=friendica.git diff --git a/include/conversation.php b/include/conversation.php index 38f6e76862..63db42d93a 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -373,6 +373,84 @@ function visible_activity($item) { 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. @@ -543,7 +621,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $comment = ''; $owner_url = ''; - $owner_photo = ''; $owner_name = ''; $sparkle = ''; @@ -588,18 +665,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $tags[] = $prefix."".$tag["term"].""; } - /*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') @@ -609,12 +674,21 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 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']; + } + + 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); @@ -682,7 +756,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'name' => $profile_name_e, 'sparkle' => $sparkle, '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'], 'body' => $body_e, 'tags' => $tags_e, @@ -701,7 +775,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { '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, @@ -805,15 +879,13 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 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()) { - $r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' LIMIT 1", + $r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' AND NOT `pending` LIMIT 1", dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url))); if ($r) { $best_url = 'redir/'.$r[0]['id']; @@ -831,80 +903,86 @@ function best_link_url($item,&$sparkle,$ssl_state = false) { } -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()) + if(local_user()) { $ssl_state = true; + } - $sub_link=""; - $poke_link=""; - $contact_url=""; - $pm_url=""; - $status_link=""; - $photos_link=""; - $posts_link=""; - $network = ""; + $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'])) { + 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 = ""; + $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"]; + $cid = $r[0]['id']; + $network = $r[0]['network']; + $rel = $r[0]['rel']; } if($sparkle) { - $status_link = $profile_link."?url=status"; - $photos_link = $profile_link."?url=photos"; - $profile_link = $profile_link."?url=profile"; + $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($cid && !$item['self']) { - $poke_link = 'poke/?f=&c='.$cid; - $contact_url = 'contacts/'.$cid; - $posts_link = 'contacts/'.$cid.'/posts'; + if ($cid && !$item['self']) { + $poke_link = 'poke/?f=&c=' . $cid; + $contact_url = 'contacts/' . $cid; + $posts_link = 'contacts/' . $cid . '/posts'; - if (in_array($network, array(NETWORK_DFRN, 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 ($network == NETWORK_DFRN) + if ($network == NETWORK_DFRN) { $menu[t("Poke")] = $poke_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']); + 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); @@ -912,13 +990,14 @@ function item_photo_menu($item){ $menu = $args['menu']; - $o = ""; - foreach($menu as $k=>$v){ - if(strpos($v,'javascript:') === 0) { - $v = substr($v,11); - $o .= "
  • $k
  • \n"; + $o = ''; + foreach ($menu as $k => $v) { + if (strpos($v, 'javascript:') === 0) { + $v = substr($v, 11); + $o .= '
  • ' . $k . '
  • ' . PHP_EOL; + } elseif ($v!='') { + $o .= '
  • ' . $k . '
  • ' . PHP_EOL; } - elseif ($v!="") $o .= "
  • $k
  • \n"; } return $o; }} @@ -985,6 +1064,9 @@ function builtin_activity_puller($item, &$conv_responses) { 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 @@ -1065,7 +1147,7 @@ function format_like($cnt,$arr,$type,$id) { $explikers = sprintf( t('%s don\'t attend.'), $likers); break; case 'attendmaybe': - $phrase = sprintf( t('%2$d people anttend maybe'), $spanatts, $cnt); + $phrase = sprintf( t('%2$d people attend maybe'), $spanatts, $cnt); $explikers = sprintf( t('%s anttend maybe.'), $likers); break; } @@ -1209,6 +1291,10 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { '$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'), )); @@ -1360,6 +1446,7 @@ function get_responses($conv_responses,$response_verbs,$ob,$item) { $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'], '