]> git.mxchange.org Git - friendica.git/commitdiff
Improved profile page, improved "limit" handling (#5639)
authorMichael Vogel <icarus@dabo.de>
Mon, 20 Aug 2018 04:26:05 +0000 (06:26 +0200)
committerTobias Diekershoff <tobias.diekershoff@gmx.net>
Mon, 20 Aug 2018 04:26:05 +0000 (06:26 +0200)
* Improved profile page, improved "limit" handling

* Update will now work again

* Update will work now

include/conversation.php
mod/community.php
mod/profile.php
mod/redir.php
src/Database/DBA.php
src/Worker/DBClean.php

index 665d9d48316484d2e03cae9ef37405bb2797b0bf..db14558871cff7665605ab38f4727c50eb82237f 100644 (file)
@@ -471,6 +471,7 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o
                                . "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
                }
        } elseif ($mode === 'profile') {
+               $items = conversation_add_children($items, false, $order, $uid);
                $profile_owner = $a->profile['profile_uid'];
 
                if (!$update) {
index cb4f69c9173c8e87158d1a8cb0adaa0a9380acc3..f148191bbcf4ca00705372be4e9a90d5922ca888 100644 (file)
@@ -195,15 +195,14 @@ function community_getitems($start, $itemspage, $content)
                        INNER JOIN `contact` AS `author` ON `author`.`id`=`item`.`author-id`
                        WHERE `thread`.`visible` AND NOT `thread`.`deleted` AND NOT `thread`.`moderated`
                        AND NOT `thread`.`private` AND `thread`.`wall` AND `thread`.`origin`
-                       ORDER BY `thread`.`commented` DESC LIMIT " . intval($start) . ", " . intval($itemspage)
-               );
+                       ORDER BY `thread`.`commented` DESC LIMIT ?, ?", $start, $itemspage);
                return DBA::toArray($r);
        } elseif ($content == 'global') {
                $r = DBA::p("SELECT `uri` FROM `thread`
                                INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
                                INNER JOIN `contact` AS `author` ON `author`.`id`=`item`.`author-id`
                                WHERE `thread`.`uid` = 0 AND NOT `author`.`hidden` AND NOT `author`.`blocked`
-                               ORDER BY `thread`.`commented` DESC LIMIT " . intval($start) . ", " . intval($itemspage));
+                               ORDER BY `thread`.`commented` DESC LIMIT ?, ?", $start, $itemspage);
                return DBA::toArray($r);
        }
 
index 5d7489ebb4159aaaae337fa5ab884ebf0a01641c..4f2e22d67464b3e6190ae2d97502ea82f15cd8cc 100644 (file)
@@ -23,7 +23,7 @@ use Friendica\Util\DateTimeFormat;
 
 function profile_init(App $a)
 {
-       if (!x($a->page, 'aside')) {
+       if (empty($a->page['aside'])) {
                $a->page['aside'] = '';
        }
 
@@ -54,15 +54,15 @@ function profile_init(App $a)
        $blocked   = !local_user() && !remote_user() && Config::get('system', 'block_public');
        $userblock = !local_user() && !remote_user() && $a->profile['hidewall'];
 
-       if (x($a->profile, 'page-flags') && $a->profile['page-flags'] == Contact::PAGE_COMMUNITY) {
+       if (!empty($a->profile['page-flags']) && $a->profile['page-flags'] == Contact::PAGE_COMMUNITY) {
                $a->page['htmlhead'] .= '<meta name="friendica.community" content="true" />';
        }
 
-       if (x($a->profile, 'openidserver')) {
+       if (!empty($a->profile['openidserver'])) {
                $a->page['htmlhead'] .= '<link rel="openid.server" href="' . $a->profile['openidserver'] . '" />' . "\r\n";
        }
 
-       if (x($a->profile, 'openid')) {
+       if (!empty($a->profile['openid'])) {
                $delegate = strstr($a->profile['openid'], '://') ? $a->profile['openid'] : 'https://' . $a->profile['openid'];
                $a->page['htmlhead'] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . "\r\n";
        }
@@ -109,7 +109,7 @@ function profile_content(App $a, $update = 0)
                }
        }
 
-       if (!x($category)) {
+       if (empty($category)) {
                $category = defaults($_GET, 'category', '');
        }
 
@@ -140,7 +140,7 @@ function profile_content(App $a, $update = 0)
 
        $contact_id = 0;
 
-       if (x($_SESSION, 'remote') && is_array($_SESSION['remote'])) {
+       if (!empty($_SESSION['remote'])) {
                foreach ($_SESSION['remote'] as $v) {
                        if ($v['uid'] == $a->profile['profile_uid']) {
                                $contact_id = $v['cid'];
@@ -171,14 +171,14 @@ function profile_content(App $a, $update = 0)
        $is_owner = local_user() == $a->profile['profile_uid'];
        $last_updated_key = "profile:" . $a->profile['profile_uid'] . ":" . local_user() . ":" . remote_user();
 
-       if (x($a->profile, 'hidewall') && !$is_owner && !$remote_contact) {
+       if (!empty($a->profile['hidewall']) && !$is_owner && !$remote_contact) {
                notice(L10n::t('Access to this profile has been restricted.') . EOL);
                return;
        }
 
        if (!$update) {
                $tab = false;
-               if (x($_GET, 'tab')) {
+               if (!empty($_GET['tab'])) {
                        $tab = notags(trim($_GET['tab']));
                }
 
@@ -196,7 +196,7 @@ function profile_content(App $a, $update = 0)
                $commvisitor = $commpage && $remote_contact;
 
                $a->page['aside'] .= posted_date_widget(System::baseUrl(true) . '/profile/' . $a->profile['nickname'], $a->profile['profile_uid'], true);
-               $a->page['aside'] .= Widget::categories(System::baseUrl(true) . '/profile/' . $a->profile['nickname'], (x($category) ? xmlify($category) : ''));
+               $a->page['aside'] .= Widget::categories(System::baseUrl(true) . '/profile/' . $a->profile['nickname'], (!empty($category) ? xmlify($category) : ''));
                $a->page['aside'] .= Widget::tagCloud();
 
                if (can_write_wall($a->profile['profile_uid'])) {
@@ -227,7 +227,7 @@ function profile_content(App $a, $update = 0)
        $sql_extra2 = '';
 
        if ($update) {
-               $last_updated = (x($_SESSION['last_updated'], $last_updated_key) ? $_SESSION['last_updated'][$last_updated_key] : 0);
+               $last_updated = (!empty($_SESSION['last_updated'][$last_updated_key]) ? $_SESSION['last_updated'][$last_updated_key] : 0);
 
                // If the page user is the owner of the page we should query for unseen
                // items. Otherwise use a timestamp of the last succesful update request.
@@ -238,7 +238,7 @@ function profile_content(App $a, $update = 0)
                        $sql_extra4 = " AND `item`.`received` > '" . $gmupdate . "'";
                }
 
-               $r = q("SELECT distinct(parent) AS `item_id`, `item`.`network` AS `item_network`, `item`.`created`
+               $items = q("SELECT DISTINCT(`parent-uri`) AS `uri`
                        FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
                        AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
                        WHERE `item`.`uid` = %d AND `item`.`visible` AND
@@ -250,38 +250,33 @@ function profile_content(App $a, $update = 0)
                        intval($a->profile['profile_uid']), intval(GRAVITY_ACTIVITY)
                );
 
-               if (!DBA::isResult($r)) {
+               if (!DBA::isResult($items)) {
                        return '';
                }
        } else {
                $sql_post_table = "";
 
-               if (x($category)) {
+               if (!empty($category)) {
                        $sql_post_table = sprintf("INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ",
                                DBA::escape(protect_sprintf($category)), intval(TERM_OBJ_POST), intval(TERM_CATEGORY), intval($a->profile['profile_uid']));
                }
 
-               if (x($hashtags)) {
+               if (!empty($hashtags)) {
                        $sql_post_table .= sprintf("INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ",
                                DBA::escape(protect_sprintf($hashtags)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG), intval($a->profile['profile_uid']));
                }
 
-               if ($datequery) {
+               if (!empty($datequery)) {
                        $sql_extra2 .= protect_sprintf(sprintf(" AND `thread`.`created` <= '%s' ", DBA::escape(DateTimeFormat::convert($datequery, 'UTC', date_default_timezone_get()))));
                }
-               if ($datequery2) {
+               if (!empty($datequery2)) {
                        $sql_extra2 .= protect_sprintf(sprintf(" AND `thread`.`created` >= '%s' ", DBA::escape(DateTimeFormat::convert($datequery2, 'UTC', date_default_timezone_get()))));
                }
 
-               // Belongs the profile page to a forum?
+               // Does the profile page belong 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(Contact::PAGE_COMMUNITY),
-                       intval(Contact::PAGE_PRVGROUP)
-               );
-
-               if (!DBA::isResult($r)) {
+               $condition = ['uid' => $a->profile['profile_uid'], 'page-flags' => [Contact::PAGE_COMMUNITY, Contact::PAGE_PRVGROUP]];
+               if (!DBA::exists('user', $condition)) {
                        $sql_extra3 = sprintf(" AND `thread`.`contact-id` = %d ", intval(intval($a->profile['contact_id'])));
                } else {
                        $sql_extra3 = "";
@@ -305,7 +300,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`
+               $items = q("SELECT `item`.`uri`
                        FROM `thread`
                        STRAIGHT_JOIN `item` ON `item`.`id` = `thread`.`iid`
                        $sql_post_table
@@ -321,31 +316,15 @@ function profile_content(App $a, $update = 0)
                );
        }
 
-       $parents_arr = [];
-       $parents_str = '';
-
        // Set a time stamp for this page. We will make use of it when we
        // search for new items (update routine)
        $_SESSION['last_updated'][$last_updated_key] = time();
 
-       if (DBA::isResult($r)) {
-               foreach ($r as $rr) {
-                       $parents_arr[] = $rr['item_id'];
-               }
-
-               $condition = ['uid' => $a->profile['profile_uid'], 'parent' => $parents_arr];
-               $result = Item::selectForUser($a->profile['profile_uid'], [], $condition);
-               $items = conv_sort(Item::inArray($result), 'created');
-       } else {
-               $items = [];
-       }
-
        if ($is_owner && !$update && !Config::get('theme', 'hide_eventlist')) {
                $o .= Profile::getBirthdays();
                $o .= Profile::getEventsReminderHTML();
        }
 
-
        if ($is_owner) {
                $unseen = Item::exists(['wall' => true, 'unseen' => true, 'uid' => local_user()]);
                if ($unseen) {
index 727b70d660b17242b269327ddc8a803ea87ab8ee..28d20b65a2175a8a92d5aba8d14fe3e2d648ba1b 100644 (file)
@@ -80,7 +80,7 @@ function redir_init(App $a) {
                }
 
                // Doing remote auth with dfrn.
-               if (local_user()&& (!empty($contact['dfrn-id']) || !empty($contact['issued-id']))) {
+               if (local_user() && (!empty($contact['dfrn-id']) || !empty($contact['issued-id']))) {
                        $dfrn_id = $orig_id = (($contact['issued-id']) ? $contact['issued-id'] : $contact['dfrn-id']);
 
                        if ($contact['duplex'] && $contact['issued-id']) {
index c0b783c29dccc6e8101b94e080c992a5cfa73083..9dc1984afb130eb2551170a4415daa0289c6df80 100644 (file)
@@ -1459,7 +1459,7 @@ class DBA
 
                $limit_string = '';
                if (isset($params['limit']) && is_int($params['limit'])) {
-                       $limit_string = " LIMIT " . $params['limit'];
+                       $limit_string = " LIMIT " . intval($params['limit']);
                }
 
                if (isset($params['limit']) && is_array($params['limit'])) {
index c839bced195dc0827bd13cc1a6d54ca986f89fec..ca0da954c010ff08c51f3e1876ae13383b2ba620 100644 (file)
@@ -84,7 +84,7 @@ class DBClean {
                        $r = DBA::p("SELECT `id` FROM `item` WHERE `uid` = 0 AND
                                                NOT EXISTS (SELECT `guid` FROM `item` AS `i` WHERE `item`.`guid` = `i`.`guid` AND `i`.`uid` != 0) AND
                                                `received` < UTC_TIMESTAMP() - INTERVAL ? DAY AND `id` >= ?
-                                       ORDER BY `id` LIMIT ".intval($limit), $days_unclaimed, $last_id);
+                                       ORDER BY `id` LIMIT ?", $days_unclaimed, $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
                                logger("found global item orphans: ".$count);
@@ -106,7 +106,7 @@ class DBClean {
                        logger("Deleting items without parents. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `id` FROM `item`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` AS `i` WHERE `item`.`parent` = `i`.`id`)
-                                       AND `id` >= ? ORDER BY `id` LIMIT ".intval($limit), $last_id);
+                                       AND `id` >= ? ORDER BY `id` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
                                logger("found item orphans without parents: ".$count);
@@ -132,7 +132,7 @@ class DBClean {
                        logger("Deleting orphaned data from thread table. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `iid` FROM `thread`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `thread`.`iid`) AND `iid` >= ?
-                                       ORDER BY `iid` LIMIT ".intval($limit), $last_id);
+                                       ORDER BY `iid` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
                                logger("found thread orphans: ".$count);
@@ -158,7 +158,7 @@ class DBClean {
                        logger("Deleting orphaned data from notify table. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `iid`, `id` FROM `notify`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `notify`.`iid`) AND `id` >= ?
-                                       ORDER BY `id` LIMIT ".intval($limit), $last_id);
+                                       ORDER BY `id` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
                                logger("found notify orphans: ".$count);
@@ -184,7 +184,7 @@ class DBClean {
                        logger("Deleting orphaned data from notify-threads table. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `id` FROM `notify-threads`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `notify-threads`.`master-parent-item`) AND `id` >= ?
-                                       ORDER BY `id` LIMIT ".intval($limit), $last_id);
+                                       ORDER BY `id` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
                                logger("found notify-threads orphans: ".$count);
@@ -210,7 +210,7 @@ class DBClean {
                        logger("Deleting orphaned data from sign table. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `iid`, `id` FROM `sign`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `sign`.`iid`) AND `id` >= ?
-                                       ORDER BY `id` LIMIT ".intval($limit), $last_id);
+                                       ORDER BY `id` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
                                logger("found sign orphans: ".$count);
@@ -236,7 +236,7 @@ class DBClean {
                        logger("Deleting orphaned data from term table. Last ID: ".$last_id);
                        $r = DBA::p("SELECT `oid`, `tid` FROM `term`
                                        WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `term`.`oid`) AND `tid` >= ?
-                                       ORDER BY `tid` LIMIT ".intval($limit), $last_id);
+                                       ORDER BY `tid` LIMIT ?", $last_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
                                logger("found term orphans: ".$count);
@@ -303,7 +303,7 @@ class DBClean {
                        $r = DBA::p("SELECT `id` FROM `item` WHERE `uid` = 0 AND
                                                NOT EXISTS (SELECT `guid` FROM `item` AS `i` WHERE `item`.`guid` = `i`.`guid` AND `i`.`uid` != 0) AND
                                                `received` < UTC_TIMESTAMP() - INTERVAL 90 DAY AND `id` >= ? AND `id` <= ?
-                                       ORDER BY `id` LIMIT ".intval($limit), $last_id, $till_id);
+                                       ORDER BY `id` LIMIT ?", $last_id, $till_id, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
                                logger("found global item entries from expired threads: ".$count);
@@ -326,7 +326,7 @@ class DBClean {
                        logger("Deleting old conversations. Last created: ".$last_id);
                        $r = DBA::p("SELECT `received`, `item-uri` FROM `conversation`
                                        WHERE `received` < UTC_TIMESTAMP() - INTERVAL ? DAY
-                                       ORDER BY `received` LIMIT ".intval($limit), $days);
+                                       ORDER BY `received` LIMIT ?", $days, $limit);
                        $count = DBA::numRows($r);
                        if ($count > 0) {
                                logger("found old conversations: ".$count);