]> git.mxchange.org Git - friendica.git/blobdiff - include/api.php
Merge pull request #9901 from annando/post-thread-user
[friendica.git] / include / api.php
index f1698e975979b56d756451b76adadad8c13ffeb0..4c90ab80dc1083cf363c6ebefd1473f310f59462 100644 (file)
@@ -39,13 +39,11 @@ use Friendica\Model\Contact;
 use Friendica\Model\Group;
 use Friendica\Model\Item;
 use Friendica\Model\Mail;
-use Friendica\Model\Notify;
+use Friendica\Model\Notification;
 use Friendica\Model\Photo;
 use Friendica\Model\Post;
 use Friendica\Model\User;
-use Friendica\Model\UserItem;
 use Friendica\Model\Verb;
-use Friendica\Security\FKOAuth1;
 use Friendica\Network\HTTPException;
 use Friendica\Network\HTTPException\BadRequestException;
 use Friendica\Network\HTTPException\ExpectationFailedException;
@@ -53,12 +51,12 @@ use Friendica\Network\HTTPException\ForbiddenException;
 use Friendica\Network\HTTPException\InternalServerErrorException;
 use Friendica\Network\HTTPException\MethodNotAllowedException;
 use Friendica\Network\HTTPException\NotFoundException;
-use Friendica\Network\HTTPException\NotImplementedException;
 use Friendica\Network\HTTPException\TooManyRequestsException;
 use Friendica\Network\HTTPException\UnauthorizedException;
 use Friendica\Object\Image;
 use Friendica\Protocol\Activity;
 use Friendica\Protocol\Diaspora;
+use Friendica\Security\FKOAuth1;
 use Friendica\Security\OAuth1\OAuthRequest;
 use Friendica\Security\OAuth1\OAuthUtil;
 use Friendica\Util\DateTimeFormat;
@@ -1733,11 +1731,11 @@ function api_statuses_public_timeline($type)
        $start = max(0, ($page - 1) * $count);
 
        if ($exclude_replies && !$conversation_id) {
-               $condition = ["`gravity` IN (?, ?) AND `iid` > ? AND `private` = ? AND `wall` AND NOT `author`.`hidden`",
+               $condition = ["`gravity` IN (?, ?) AND `iid` > ? AND `private` = ? AND `wall` AND NOT `author-hidden`",
                        GRAVITY_PARENT, GRAVITY_COMMENT, $since_id, Item::PUBLIC];
 
                if ($max_id > 0) {
-                       $condition[0] .= " AND `thread`.`iid` <= ?";
+                       $condition[0] .= " AND `iid` <= ?";
                        $condition[] = $max_id;
                }
 
@@ -1812,11 +1810,11 @@ function api_statuses_networkpublic_timeline($type)
 
        $start = max(0, ($page - 1) * $count);
 
-       $condition = ["`uid` = 0 AND `gravity` IN (?, ?) AND `thread`.`iid` > ? AND `private` = ?",
+       $condition = ["`uid` = 0 AND `gravity` IN (?, ?) AND `iid` > ? AND `private` = ?",
                GRAVITY_PARENT, GRAVITY_COMMENT, $since_id, Item::PUBLIC];
 
        if ($max_id > 0) {
-               $condition[0] .= " AND `thread`.`iid` <= ?";
+               $condition[0] .= " AND `iid` <= ?";
                $condition[] = $max_id;
        }
 
@@ -2171,24 +2169,21 @@ function api_statuses_mentions($type)
 
        $start = max(0, ($page - 1) * $count);
 
-       $query = "`gravity` IN (?, ?) AND `id` IN (SELECT `iid` FROM `user-item`                
-               WHERE (`hidden` IS NULL OR NOT `hidden`) AND
-                       `uid` = ? AND `notification-type` & ? != 0
-                       AND `iid` > ?";
+       $query = "`gravity` IN (?, ?) AND `uri-id` IN
+               (SELECT `uri-id` FROM `post-user-notification` WHERE `uid` = ? AND `notification-type` & ? != 0 ORDER BY `uri-id`)
+               AND (`uid` = 0 OR (`uid` = ? AND NOT `global`)) AND `id` > ?";
 
        $condition = [GRAVITY_PARENT, GRAVITY_COMMENT, api_user(),
-               UserItem::NOTIF_EXPLICIT_TAGGED | UserItem::NOTIF_IMPLICIT_TAGGED |
-               UserItem::NOTIF_THREAD_COMMENT | UserItem::NOTIF_DIRECT_COMMENT |
-               UserItem::NOTIF_DIRECT_THREAD_COMMENT,
-               $since_id];
+               Post\UserNotification::NOTIF_EXPLICIT_TAGGED | Post\UserNotification::NOTIF_IMPLICIT_TAGGED |
+               Post\UserNotification::NOTIF_THREAD_COMMENT | Post\UserNotification::NOTIF_DIRECT_COMMENT |
+               Post\UserNotification::NOTIF_DIRECT_THREAD_COMMENT,
+               api_user(), $since_id];
 
        if ($max_id > 0) {
-               $query .= " AND `iid` <= ?";
+               $query .= " AND `id` <= ?";
                $condition[] = $max_id;
        }
 
-       $query .= ")";
-
        array_unshift($condition, $query);
 
        $params = ['order' => ['id' => true], 'limit' => [$start, $count]];
@@ -5809,7 +5804,7 @@ function api_friendica_notification_seen($type)
                $notify = DI::notify()->getByID($id, api_user());
                DI::notify()->setSeen(true, $notify);
 
-               if ($notify->otype === Notify\ObjectType::ITEM) {
+               if ($notify->otype === Notification\ObjectType::ITEM) {
                        $item = Post::selectFirstForUser(api_user(), [], ['id' => $notify->iid, 'uid' => api_user()]);
                        if (DBA::isResult($item)) {
                                // we found the item, return it to the user