]> git.mxchange.org Git - friendica.git/commitdiff
Second followup for profile issue
authorMichael <heluecht@pirati.ca>
Sun, 5 Mar 2017 11:07:10 +0000 (11:07 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 5 Mar 2017 11:07:10 +0000 (11:07 +0000)
mod/profile.php

index cfac80ffd0d7e175e171e8a4e7eed7a333a9d99c..d2864d838a3ea7eafe7a04a858e7a51411931e2c 100644 (file)
@@ -240,6 +240,17 @@ function profile_content(App $a, $update = 0) {
                        $sql_extra2 .= protect_sprintf(sprintf(" AND `thread`.`created` >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
                }
 
+               // Belongs the profile page to a forum?
+               // If not then we can improve the performance with an additional condition
+               $r = q("SELECT `uid` FROM `user` WHERE `uid` = %d AND `page-flags` IN (%d, %d)",
+                       intval($a->profile['profile_uid']),
+                       intval(PAGE_COMMUNITY),
+                       intval(PAGE_PRVGROUP));
+
+               if (!dbm::is_result($r)) {
+                       $sql_extra3 = sprintf(" AND `thread`.`contact-id` = %d ", intval(intval($a->profile['contact_id'])));
+               }
+
                if(get_config('system', 'old_pager')) {
                    $r = q("SELECT COUNT(*) AS `total`
                            FROM `thread` INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
@@ -248,7 +259,7 @@ function profile_content(App $a, $update = 0) {
                            WHERE `thread`.`uid` = %d AND `thread`.`visible` = 1 AND `thread`.`deleted` = 0
                            and `thread`.`moderated` = 0
                            AND `thread`.`wall` = 1
-                           $sql_extra $sql_extra2 ",
+                           $sql_extra3 $sql_extra $sql_extra2 ",
                            intval($a->profile['profile_uid'])
                        );
 
@@ -276,7 +287,7 @@ function profile_content(App $a, $update = 0) {
                $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
 
                $r = q("SELECT `thread`.`iid` AS `item_id`, `thread`.`network` AS `item_network`
-                       FROM `thread` USE INDEX (`uid_wall_created`)
+                       FROM `thread`
                        STRAIGHT_JOIN `item` ON `item`.`id` = `thread`.`iid`
                        $sql_post_table
                        STRAIGHT_JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
@@ -285,7 +296,7 @@ function profile_content(App $a, $update = 0) {
                                AND NOT `thread`.`deleted`
                                AND NOT `thread`.`moderated`
                                AND `thread`.`wall`
-                               $sql_extra $sql_extra2
+                               $sql_extra3 $sql_extra $sql_extra2
                        ORDER BY `thread`.`created` DESC $pager_sql",
                        intval($a->profile['profile_uid'])
                );