X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/07b889547d28e68e5fc8f923c166bd607da17ad7..refs/pull/1756/head:/app/Auth/UserRepo.php diff --git a/app/Auth/UserRepo.php b/app/Auth/UserRepo.php index dec973f6c..a903e2c38 100644 --- a/app/Auth/UserRepo.php +++ b/app/Auth/UserRepo.php @@ -1,32 +1,31 @@ user = $user; $this->role = $role; - $this->entityRepo = $entityRepo; } /** @@ -81,7 +80,7 @@ class UserRepo * Creates a new user and attaches a role to them. * @param array $data * @param boolean $verifyEmail - * @return \BookStack\Auth\User + * @return User */ public function registerNew(array $data, $verifyEmail = false) { @@ -121,7 +120,7 @@ class UserRepo /** * Checks if the give user is the only admin. - * @param \BookStack\Auth\User $user + * @param User $user * @return bool */ public function isOnlyAdmin(User $user) @@ -175,7 +174,7 @@ class UserRepo * Create a new basic instance of user. * @param array $data * @param boolean $verifyEmail - * @return \BookStack\Auth\User + * @return User */ public function create(array $data, $verifyEmail = false) { @@ -189,7 +188,7 @@ class UserRepo /** * Remove the given user from storage, Delete all related content. - * @param \BookStack\Auth\User $user + * @param User $user * @throws Exception */ public function destroy(User $user) @@ -206,7 +205,7 @@ class UserRepo /** * Get the latest activity for a user. - * @param \BookStack\Auth\User $user + * @param User $user * @param int $count * @param int $page * @return array @@ -218,36 +217,35 @@ class UserRepo /** * Get the recently created content for this given user. - * @param \BookStack\Auth\User $user - * @param int $count - * @return mixed */ - public function getRecentlyCreated(User $user, $count = 20) + public function getRecentlyCreated(User $user, int $count = 20): array { - $createdByUserQuery = function (Builder $query) use ($user) { - $query->where('created_by', '=', $user->id); + $query = function (Builder $query) use ($user, $count) { + return $query->orderBy('created_at', 'desc') + ->where('created_by', '=', $user->id) + ->take($count) + ->get(); }; return [ - 'pages' => $this->entityRepo->getRecentlyCreated('page', $count, 0, $createdByUserQuery), - 'chapters' => $this->entityRepo->getRecentlyCreated('chapter', $count, 0, $createdByUserQuery), - 'books' => $this->entityRepo->getRecentlyCreated('book', $count, 0, $createdByUserQuery), - 'shelves' => $this->entityRepo->getRecentlyCreated('bookshelf', $count, 0, $createdByUserQuery) + 'pages' => $query(Page::visible()->where('draft', '=', false)), + 'chapters' => $query(Chapter::visible()), + 'books' => $query(Book::visible()), + 'shelves' => $query(Bookshelf::visible()), ]; } /** * Get asset created counts for the give user. - * @param \BookStack\Auth\User $user - * @return array */ - public function getAssetCounts(User $user) + public function getAssetCounts(User $user): array { + $createdBy = ['created_by' => $user->id]; return [ - 'pages' => $this->entityRepo->getUserTotalCreated('page', $user), - 'chapters' => $this->entityRepo->getUserTotalCreated('chapter', $user), - 'books' => $this->entityRepo->getUserTotalCreated('book', $user), - 'shelves' => $this->entityRepo->getUserTotalCreated('bookshelf', $user), + 'pages' => Page::visible()->where($createdBy)->count(), + 'chapters' => Chapter::visible()->where($createdBy)->count(), + 'books' => Book::visible()->where($createdBy)->count(), + 'shelves' => Bookshelf::visible()->where($createdBy)->count(), ]; } @@ -260,16 +258,6 @@ class UserRepo return $this->role->newQuery()->orderBy('name', 'asc')->get(); } - /** - * Get all the roles which can be given restricted access to - * other entities in the system. - * @return mixed - */ - public function getRestrictableRoles() - { - return $this->role->where('system_name', '!=', 'admin')->get(); - } - /** * Get an avatar image for a user and set it as their avatar. * Returns early if avatars disabled or not set in config. @@ -288,7 +276,7 @@ class UserRepo $user->save(); return true; } catch (Exception $e) { - \Log::error('Failed to save user avatar image'); + Log::error('Failed to save user avatar image'); return false; } }