X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FPost.php;h=c5309b5bd4eb3db5ae61cc1305630404ac4cccf8;hb=6dbbd081795fa1c8fe57db2248ac162efeeada88;hp=4adc5728dd89defc971821be9d16ee768800238c;hpb=5863fd881df1ae89f3c42fdd36767c7ab30f0f71;p=friendica.git diff --git a/src/Model/Post.php b/src/Model/Post.php index 4adc5728dd..c5309b5bd4 100644 --- a/src/Model/Post.php +++ b/src/Model/Post.php @@ -1,6 +1,6 @@ 1, "network" => 'dspr']; + * or: + * $condition = ["`uid` = ? AND `network` IN (?, ?)", 1, 'dfrn', 'dspr']; + * + * $count = Post::count($condition); + * @throws \Exception + */ + public static function countThread(array $condition = [], array $params = []) + { + return DBA::count('post-thread-user-view', $condition, $params); + } + + /** + * Counts the post-view records satisfying the provided condition + * + * @param array $condition array of fields for condition + * @param array $params Array of several parameters + * + * @return int + * + * Example: + * $condition = ["network" => 'dspr']; + * or: + * $condition = ["`network` IN (?, ?)", 1, 'dfrn', 'dspr']; + * + * $count = Post::count($condition); + * @throws \Exception + */ + public static function countPosts(array $condition = [], array $params = []) + { + return DBA::count('post-view', $condition, $params); + } + + /** + * Retrieve a single record from the post-user-view view and returns it in an associative array * * @param array $fields * @param array $condition * @param array $params + * @param bool $user_mode true = post-user-view, false = post-view * @return bool|array * @throws \Exception * @see DBA::select @@ -182,7 +225,32 @@ class Post } /** - * Retrieve a single record from the post-thread table and returns it in an associative array + * Retrieve a single record from the post-view view and returns it in an associative array + * + * @param array $fields + * @param array $condition + * @param array $params + * @return bool|array + * @throws \Exception + * @see DBA::select + */ + public static function selectFirstPost(array $fields = [], array $condition = [], $params = []) + { + $params['limit'] = 1; + + $result = self::selectPosts($fields, $condition, $params); + + if (is_bool($result)) { + return $result; + } else { + $row = self::fetch($result); + DBA::close($result); + return $row; + } + } + + /** + * Retrieve a single record from the post-thread-user-view view and returns it in an associative array * * @param array $fields * @param array $condition @@ -207,7 +275,7 @@ class Post } /** - * Select rows from the post table and returns them as an array + * Select rows from the post-user-view view and returns them as an array * * @param array $selected Array of selected fields, empty for all * @param array $condition Array of fields for condition @@ -260,7 +328,7 @@ class Post } /** - * Select rows from the post table + * Select rows from the post-user-view view * * @param array $selected Array of selected fields, empty for all * @param array $condition Array of fields for condition @@ -275,7 +343,22 @@ class Post } /** - * Select rows from the post table + * Select rows from the post-view view + * + * @param array $selected Array of selected fields, empty for all + * @param array $condition Array of fields for condition + * @param array $params Array of several parameters + * + * @return boolean|object + * @throws \Exception + */ + public static function selectPosts(array $selected = [], array $condition = [], $params = []) + { + return self::selectView('post-view', $selected, $condition, $params); + } + + /** + * Select rows from the post-thread-user-view view * * @param array $selected Array of selected fields, empty for all * @param array $condition Array of fields for condition @@ -313,24 +396,14 @@ class Post AND (NOT `causer-blocked` OR `causer-id` = ? OR `causer-id` IS NULL) AND NOT `contact-blocked` AND ((NOT `contact-readonly` AND NOT `contact-pending` AND (`contact-rel` IN (?, ?))) OR `self` OR `gravity` != ? OR `contact-uid` = ?) - AND NOT EXISTS (SELECT `uri-id` FROM `post-user` USE INDEX (`uid_uri-id`) WHERE `uid` = ? AND `uri-id` = `" . $view . "`.`uri-id` AND `hidden`) + AND NOT EXISTS (SELECT `uri-id` FROM `post-user` WHERE `uid` = ? AND `uri-id` = `" . $view . "`.`uri-id` AND `hidden`) AND NOT EXISTS (SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND `cid` = `author-id` AND `blocked`) AND NOT EXISTS (SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND `cid` = `owner-id` AND `blocked`) AND NOT EXISTS (SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND `cid` = `author-id` AND `ignored` AND `gravity` = ?) AND NOT EXISTS (SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND `cid` = `owner-id` AND `ignored` AND `gravity` = ?)", 0, Contact::SHARING, Contact::FRIEND, GRAVITY_PARENT, 0, $uid, $uid, $uid, $uid, GRAVITY_PARENT, $uid, GRAVITY_PARENT]); - $select_string = ''; - - if (in_array('pinned', $selected)) { - $selected = array_flip($selected); - unset($selected['pinned']); - $selected = array_flip($selected); - - $select_string = "(SELECT `pinned` FROM `post-thread-user` WHERE `uri-id` = `" . $view . "`.`uri-id` AND uid=`" . $view . "`.`uid`) AS `pinned`, "; - } - - $select_string .= implode(', ', array_map([DBA::class, 'quoteIdentifier'], $selected)); + $select_string = implode(', ', array_map([DBA::class, 'quoteIdentifier'], $selected)); $condition_string = DBA::buildCondition($condition); $param_string = DBA::buildParameter($params); @@ -342,7 +415,7 @@ class Post } /** - * Select rows from the post view for a given user + * Select rows from the post-user-view view for a given user * * @param integer $uid User ID * @param array $selected Array of selected fields, empty for all @@ -357,8 +430,24 @@ class Post return self::selectViewForUser('post-user-view', $uid, $selected, $condition, $params); } - /** - * Select rows from the post view for a given user + /** + * Select rows from the post-view view for a given user + * + * @param integer $uid User ID + * @param array $selected Array of selected fields, empty for all + * @param array $condition Array of fields for condition + * @param array $params Array of several parameters + * + * @return boolean|object + * @throws \Exception + */ + public static function selectPostsForUser($uid, array $selected = [], array $condition = [], $params = []) + { + return self::selectViewForUser('post-view', $uid, $selected, $condition, $params); + } + + /** + * Select rows from the post-thread-user-view view for a given user * * @param integer $uid User ID * @param array $selected Array of selected fields, empty for all @@ -374,7 +463,7 @@ class Post } /** - * Retrieve a single record from the post view for a given user and returns it in an associative array + * Retrieve a single record from the post-user-view view for a given user and returns it in an associative array * * @param integer $uid User ID * @param array $selected @@ -400,7 +489,7 @@ class Post } /** - * Select pinned rows from the item table for a given user + * Select pinned rows from the post-thread-user table for a given user * * @param integer $uid User ID * @param array $selected Array of selected fields, empty for all @@ -416,7 +505,7 @@ class Post if (!DBA::isResult($postthreaduser)) { return $postthreaduser; } - + $pinned = []; while ($useritem = DBA::fetch($postthreaduser)) { $pinned[] = $useritem['uri-id'];