]> git.mxchange.org Git - friendica.git/commitdiff
Optimised the amount of function for the item query
authorMichael Vogel <icarus@dabo.de>
Sun, 19 Jun 2016 06:32:38 +0000 (08:32 +0200)
committerMichael Vogel <icarus@dabo.de>
Sun, 19 Jun 2016 06:32:38 +0000 (08:32 +0200)
include/conversation.php
mod/community.php
mod/notes.php

index 411ffe38847fb4319b9e25e3332423eb7593db6d..ffd9d45e2bd19271810c0994831edb9ed517729d 100644 (file)
@@ -383,68 +383,10 @@ function item_query() {
 }
 
 /**
- * @brief All fieldlists that are needed for the item query
+ * @brief List of all data fields that are needed for displaying items
  */
 function item_fieldlists() {
 
-       return item_fieldlist().", ".zcontact_fieldlist().", ".contact_fieldlist();
-}
-
-/**
- * @brief SQL join for contacts
- */
-function item_joins() {
-
-       return contact_join()." ".zcontact_join();
-}
-
-/**
- * @brief Fieldlist for author and owner
- */
-function zcontact_fieldlist() {
-
-       return "`author`.`thumb` AS `author-thumb`, `owner`.`thumb` AS `owner-thumb`";
-}
-
-/**
- * @brief Join for author and owner
- */
-function zcontact_join() {
-
-       return "LEFT JOIN `contact` AS `author` ON `author`.`id`=`item`.`author-id`
-               LEFT JOIN `contact` AS `owner` ON `owner`.`id`=`item`.`author-id`";
-}
-
-/**
- * @brief List of all contact fields that are needed for the conversation function
- */
-function contact_fieldlist() {
-
-       return "`contact`.`network`, `contact`.`url`, `contact`.`name`, `contact`.`writable`,
-               `contact`.`self`, `contact`.`id` AS `cid`, `contact`.`alias`";
-}
-
-/**
- * @brief SQL condition for contacts
- */
-function contact_condition() {
-
-       return "NOT `contact`.`blocked` AND NOT `contact`.`pending`";
-}
-
-/**
- * @brief SQL join for contacts
- */
-function contact_join() {
-
-       return "INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND ".contact_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.
 `item`.`type`,
@@ -475,21 +417,37 @@ These Fields are not added below (yet). They are here to for bug search.
 */
 
        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`";
+               `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 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`.`author-id`";
 }
 
 /**
- * @brief SQL condition for items
+ * @brief SQL condition for items that are needed for displaying items
  */
 function item_condition() {
 
@@ -923,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;
 
@@ -951,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;
 
index 535e7dc3f796c86647715d53af9a48c0da804dc7..06a96c7403f54ff933efa10c8cbaa1d3406a6830 100644 (file)
@@ -120,18 +120,17 @@ function community_getitems($start, $itemspage) {
        if (get_config('system','community_page_style') == CP_GLOBAL_COMMUNITY)
                return(community_getpublicitems($start, $itemspage));
 
-       $r = q("SELECT %s, %s, `user`.`nickname`
+       $r = q("SELECT %s
                FROM `thread` FORCE INDEX (`wall_private_received`)
                INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND NOT `user`.`hidewall`
                INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
                AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = ''
                AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = ''
-               INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
-               AND %s AND `contact`.`self`
+               %s AND `contact`.`self`
                WHERE `thread`.`visible` AND NOT `thread`.`deleted` AND NOT `thread`.`moderated`
                AND NOT `thread`.`private` AND `thread`.`wall`
                ORDER BY `thread`.`received` DESC LIMIT %d, %d",
-               item_fieldlist(), contact_fieldlist(), contact_condition(),
+               item_fieldlists(), item_joins(),
                intval($start), intval($itemspage)
        );
 
@@ -141,14 +140,12 @@ function community_getitems($start, $itemspage) {
 
 function community_getpublicitems($start, $itemspage) {
 
-       $r = q("SELECT %s, %s, `author-name` AS `name`, `owner-avatar` AS `photo`,
-                       `owner-link` AS `url`, `owner-avatar` AS `thumb`
+       $r = q("SELECT %s
                FROM `thread`
                INNER JOIN `item` ON `item`.`id` = `thread`.`iid` %s
                WHERE `thread`.`uid` = 0
                ORDER BY `thread`.`created` DESC LIMIT %d, %d",
-               item_fieldlist(), zcontact_fieldlist(),
-               zcontact_join(),
+               item_fieldlists(), item_joins(),
                intval($start), intval($itemspage)
        );
 
index 24d541be5df88f3081d5d2c4d5a40438860caae9..a25d090ed701faad32ab49fb2dbc7012b13d8e2f 100644 (file)
@@ -73,11 +73,11 @@ function notes_content(&$a,$update = false) {
        $sql_extra = " AND `allow_cid` = '<" . $a->contact['id'] . ">' ";
 
        $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'
                AND `contact`.`self` AND `item`.`id` = `item`.`parent` AND NOT `item`.`wall`
                $sql_extra ",
-               contact_condition(), item_condition(),
+               item_joins(), item_condition(),
                intval(local_user())
 
        );
@@ -87,13 +87,12 @@ function notes_content(&$a,$update = false) {
                $a->set_pager_itemspage(40);
        }
 
-       $r = q("SELECT `item`.`id` AS `item_id` FROM `item`
-               LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s AND `contact`.`self`
+       $r = q("SELECT `item`.`id` AS `item_id` FROM `item` %s
                WHERE %s AND `item`.`uid` = %d AND `item`.`type` = 'note'
                AND `item`.`id` = `item`.`parent` AND NOT `item`.`wall`
                $sql_extra
                ORDER BY `item`.`created` DESC LIMIT %d ,%d ",
-               contact_condition(), item_condition(),
+               item_joins(), item_condition(),
                intval(local_user()),
                intval($a->pager['start']),
                intval($a->pager['itemspage'])
@@ -108,13 +107,11 @@ function notes_content(&$a,$update = false) {
                        $parents_arr[] = $rr['item_id'];
                $parents_str = implode(', ', $parents_arr);
 
-               $r = q("SELECT %s FROM `item`
-                       LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND %s
+               $r = q("SELECT %s FROM `item` %s
                        WHERE %s AND `item`.`uid` = %d AND `item`.`parent` IN (%s)
                        $sql_extra
                        ORDER BY `parent` DESC, `gravity` ASC, `item`.`id` ASC ",
-                       item_fieldlist(), contact_fieldlist(),
-                       contact_condition(), item_condition(),
+                       item_fieldlists(), item_joins(), item_condition(),
                        intval(local_user()),
                        dbesc($parents_str)
                );