]> git.mxchange.org Git - friendica.git/blobdiff - include/conversation.php
added spaces + curly braces
[friendica.git] / include / conversation.php
index ac0bd69e4ce109fbc7f6205291988f4a5dab72e5..ccfc070d4e2d416be818e142fa65a73486cfb8b6 100644 (file)
@@ -109,7 +109,7 @@ function localize_item(&$item){
                $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]';
@@ -245,7 +245,7 @@ function localize_item(&$item){
                $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]';
@@ -294,7 +294,7 @@ function localize_item(&$item){
                                        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'];
@@ -324,11 +324,13 @@ function localize_item(&$item){
        // add sparkle links to appropriate permalinks
 
        $x = stristr($item['plink'],'/display/');
-       if($x) {
+       if ($x) {
                $sparkle = false;
                $y = best_link_url($item,$sparkle,true);
-               if(strstr($y,'/redir/'))
+
+               if (strstr($y,'/redir/')) {
                        $item['plink'] = $y . '?f=&url=' . $item['plink'];
+               }
        }
 
 
@@ -374,53 +376,82 @@ 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`,
-                       `contact`.`self`, `contact`.`id` AS `cid`, `contact`.`alias`";
-
-       return $fieldlist;
+       return "SELECT ".item_fieldlists()." FROM `item` ".
+               item_joins()." WHERE ".item_condition();
 }
 
 /**
- * @brief SQL condition for contacts
+ * @brief List of all data fields that are needed for displaying items
  */
-function contact_condition() {
-
-       $condition = "NOT `contact`.`blocked` AND NOT `contact`.`pending`";
-
-       return $condition;
+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 condition for items
+ * @brief SQL join for contacts that are needed for displaying items
  */
-function item_condition() {
+function item_joins() {
 
-       $condition = "`item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`";
-
-       return $condition;
+       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 List of all item fields that are needed for the conversation function
+ * @brief SQL condition for items that are needed for displaying items
  */
-function item_fieldlist() {
-
-       $fieldlist = "`item`.`author-link`, `item`.`verb`, `item`.`id`, `item`.`parent`,
-                       `item`.`uid`, `item`.`author-name`, `item`.`tag`, `item`.`location`, `item`.`coord`,
-                       `item`.`title`, `item`.`uri`, `item`.`created`, `item`.`app`, `item`.`guid`,
-                       `item`.`contact-id`, `item`.`thr-parent`, `item`.`parent-uri`, `item`.`rendered-hash`,
-                       `item`.`body`, `item`.`rendered-html`, `item`.`private`, `item`.`edited`,
-                       `item`.`allow_cid`, `item`.`allow_gid`, `item`.`deny_cid`, `item`.`deny_gid`,
-                       `item`.`event-id`, `item`.`object-type`, `item`.`starred`, `item`.`created`,
-                       `item`.`postopts`, `item`.`owner-link`, `item`.`owner-name`, `item`.`owner-avatar`,
-                       `item`.`plink`, `item`.`wall`,
-                       `item`.`id` AS `item_id`, `item`.`network` AS `item_network`";
-
-       return $fieldlist;
+function item_condition() {
+
+       return "`item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`";
 }
 
 /**
@@ -592,7 +623,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
 
                                $comment     = '';
                                $owner_url   = '';
-                               $owner_photo = '';
                                $owner_name  = '';
                                $sparkle     = '';
 
@@ -637,18 +667,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
                                        $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')
@@ -658,12 +676,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);
@@ -731,7 +758,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,
@@ -750,7 +777,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,
@@ -839,7 +866,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
        }
 
        $o = replace_macros($page_template, array(
-               '$baseurl' => $a->get_baseurl($ssl_state),
+               '$baseurl' => App::get_baseurl($ssl_state),
                '$return_path' => $a->query_string,
                '$live_update' => $live_update_div,
                '$remove' => t('remove'),
@@ -854,15 +881,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'];
@@ -880,80 +905,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);
 
@@ -961,13 +992,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 .= "<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;
 }}
@@ -1034,6 +1066,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
@@ -1114,7 +1149,7 @@ function format_like($cnt,$arr,$type,$id) {
                                $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;
                }
@@ -1150,7 +1185,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
        $tpl = get_markup_template('jot-header.tpl');
        $a->page['htmlhead'] .= replace_macros($tpl, array(
                '$newpost' => 'true',
-               '$baseurl' => $a->get_baseurl(true),
+               '$baseurl' => App::get_baseurl(true),
                '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
                '$geotag' => $geotag,
                '$nickname' => $x['nickname'],
@@ -1168,7 +1203,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
        $tpl = get_markup_template('jot-end.tpl');
        $a->page['end'] .= replace_macros($tpl, array(
                '$newpost' => 'true',
-               '$baseurl' => $a->get_baseurl(true),
+               '$baseurl' => App::get_baseurl(true),
                '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
                '$geotag' => $geotag,
                '$nickname' => $x['nickname'],
@@ -1234,7 +1269,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
                '$ptyp' => (($notes_cid) ? 'note' : 'wall'),
                '$content' => $x['content'],
                '$post_id' => $x['post_id'],
-               '$baseurl' => $a->get_baseurl(true),
+               '$baseurl' => App::get_baseurl(true),
                '$defloc' => $x['default_location'],
                '$visitor' => $x['visitor'],
                '$pvisit' => (($notes_cid) ? 'none' : $x['visitor']),
@@ -1258,6 +1293,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'),
        ));
 
 
@@ -1409,6 +1448,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'], '<a href="#" data-toggle="modal" data-target="#' . $v . 'Modal-'