]> BookStack Code Mirror - bookstack/blobdiff - app/Repos/UserRepo.php
Added recent pages to home view and made the home content more compact
[bookstack] / app / Repos / UserRepo.php
index 77ad22f3996cf070e5b62c50ed413e326986e81e..48541a51aa341aeb576dab3ef91056bee8d1b39b 100644 (file)
@@ -1,6 +1,5 @@
 <?php namespace BookStack\Repos;
 
-
 use BookStack\Role;
 use BookStack\User;
 use Setting;
@@ -10,15 +9,19 @@ class UserRepo
 
     protected $user;
     protected $role;
+    protected $entityRepo;
 
     /**
      * UserRepo constructor.
-     * @param $user
+     * @param User $user
+     * @param Role $role
+     * @param EntityRepo $entityRepo
      */
-    public function __construct(User $user, Role $role)
+    public function __construct(User $user, Role $role, EntityRepo $entityRepo)
     {
         $this->user = $user;
         $this->role = $role;
+        $this->entityRepo = $entityRepo;
     }
 
     /**
@@ -48,6 +51,14 @@ class UserRepo
     {
         $user = $this->create($data);
         $this->attachDefaultRole($user);
+
+        // Get avatar from gravatar and save
+        if (!config('services.disable_services')) {
+            $avatar = \Images::saveUserGravatar($user);
+            $user->avatar()->associate($avatar);
+            $user->save();
+        }
+
         return $user;
     }
 
@@ -104,4 +115,49 @@ class UserRepo
         $user->socialAccounts()->delete();
         $user->delete();
     }
+
+    /**
+     * Get the latest activity for a user.
+     * @param User $user
+     * @param int $count
+     * @param int $page
+     * @return array
+     */
+    public function getActivity(User $user, $count = 20, $page = 0)
+    {
+        return \Activity::userActivity($user, $count, $page);
+    }
+
+    /**
+     * Get the recently created content for this given user.
+     * @param User $user
+     * @param int $count
+     * @return mixed
+     */
+    public function getRecentlyCreated(User $user, $count = 20)
+    {
+        return [
+            'pages' => $this->entityRepo->page->where('created_by', '=', $user->id)->orderBy('created_at', 'desc')
+                ->take($count)->get(),
+            'chapters' => $this->entityRepo->chapter->where('created_by', '=', $user->id)->orderBy('created_at', 'desc')
+                ->take($count)->get(),
+            'books' => $this->entityRepo->book->where('created_by', '=', $user->id)->orderBy('created_at', 'desc')
+                ->take($count)->get()
+        ];
+    }
+
+    /**
+     * Get asset created counts for the give user.
+     * @param User $user
+     * @return array
+     */
+    public function getAssetCounts(User $user)
+    {
+        return [
+            'pages' => $this->entityRepo->page->where('created_by', '=', $user->id)->count(),
+            'chapters' => $this->entityRepo->chapter->where('created_by', '=', $user->id)->count(),
+            'books' => $this->entityRepo->book->where('created_by', '=', $user->id)->count(),
+        ];
+    }
+
 }
\ No newline at end of file