]> git.mxchange.org Git - friendica.git/blobdiff - include/conversation.php
Merge pull request #2666 from annando/1607-more-logging
[friendica.git] / include / conversation.php
index 8f94d96301653094f46f70e82655f4e3d013b331..86b5ddc8d20b4e667e0ed2fad4412d364e12b291 100644 (file)
@@ -374,53 +374,84 @@ 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`.`object`,
+`item`.`extid`,
+`item`.`received`,
+`item`.`changed`,
+`item`.`moderated`,
+`item`.`target-type`,
+`item`.`target`,
+`item`.`resource-id`,
+`item`.`tag`,
+`item`.`attach`,
+`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`.`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`,
+
+               `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 List of all item fields that are needed for the conversation function
+ * @brief SQL join for contacts 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`.`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_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
+ * @brief SQL condition for items that are needed for displaying items
  */
 function item_condition() {
 
-       $condition = "`item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`";
-
-       return $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'])) {
+                                       $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'])) {
+                                       $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,
@@ -854,8 +881,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
 
 function best_link_url($item,&$sparkle,$ssl_state = false) {
 
-       $a = get_app();
-
        $best_url = '';
        $sparkle  = false;
 
@@ -882,7 +907,6 @@ function best_link_url($item,&$sparkle,$ssl_state = false) {
 
 if(! function_exists('item_photo_menu')){
 function item_photo_menu($item){
-       $a = get_app();
 
        $ssl_state = false;
 
@@ -1258,6 +1282,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'),
        ));