/**
* Get the latest books added to the system.
- * @param $count
- * @param $page
+ * @param int $count
+ * @param int $page
+ * @param bool $additionalQuery
+ * @return
*/
- public function getRecentlyCreatedBooks($count = 20, $page = 0)
+ public function getRecentlyCreatedBooks($count = 20, $page = 0, $additionalQuery = false)
{
- return $this->restrictionService->enforceBookRestrictions($this->book)
- ->orderBy('created_at', 'desc')->skip($page * $count)->take($count)->get();
+ $query = $this->restrictionService->enforceBookRestrictions($this->book)
+ ->orderBy('created_at', 'desc');
+ if ($additionalQuery !== false && is_callable($additionalQuery)) {
+ $additionalQuery($query);
+ }
+ return $query->skip($page * $count)->take($count)->get();
}
/**
/**
* Get the latest pages added to the system.
- * @param $count
- * @param $page
+ * @param int $count
+ * @param int $page
+ * @param bool $additionalQuery
+ * @return
*/
- public function getRecentlyCreatedPages($count = 20, $page = 0)
+ public function getRecentlyCreatedPages($count = 20, $page = 0, $additionalQuery = false)
{
- return $this->restrictionService->enforcePageRestrictions($this->page)
- ->orderBy('created_at', 'desc')->skip($page * $count)->take($count)->get();
+ $query = $this->restrictionService->enforcePageRestrictions($this->page)
+ ->orderBy('created_at', 'desc');
+ if ($additionalQuery !== false && is_callable($additionalQuery)) {
+ $additionalQuery($query);
+ }
+ return $query->skip($page * $count)->take($count)->get();
+ }
+
+ /**
+ * Get the latest chapters added to the system.
+ * @param int $count
+ * @param int $page
+ * @param bool $additionalQuery
+ * @return
+ */
+ public function getRecentlyCreatedChapters($count = 20, $page = 0, $additionalQuery = false)
+ {
+ $query = $this->restrictionService->enforceChapterRestrictions($this->chapter)
+ ->orderBy('created_at', 'desc');
+ if ($additionalQuery !== false && is_callable($additionalQuery)) {
+ $additionalQuery($query);
+ }
+ return $query->skip($page * $count)->take($count)->get();
}
/**
foreach ($restrictions as $action => $value) {
$entity->restrictions()->create([
'role_id' => $roleId,
- 'action' => strtolower($action)
+ 'action' => strtolower($action)
]);
}
}
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()
+ 'pages' => $this->entityRepo->getRecentlyCreatedPages($count, 0, function ($query) use ($user) {
+ $query->where('created_by', '=', $user->id);
+ }),
+ 'chapters' => $this->entityRepo->getRecentlyCreatedChapters($count, 0, function ($query) use ($user) {
+ $query->where('created_by', '=', $user->id);
+ }),
+ 'books' => $this->entityRepo->getRecentlyCreatedBooks($count, 0, function ($query) use ($user) {
+ $query->where('created_by', '=', $user->id);
+ })
];
}
public function getAssetCounts(User $user)
{
return [
- 'pages' => $this->entityRepo->page->where('created_by', '=', $user->id)->count(),
+ '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(),
+ 'books' => $this->entityRepo->book->where('created_by', '=', $user->id)->count(),
];
}
* Add activity data to database.
* @param Entity $entity
* @param $activityKey
- * @param int $bookId
- * @param bool $extra
+ * @param int $bookId
+ * @param bool $extra
*/
public function add(Entity $entity, $activityKey, $bookId = 0, $extra = false)
{
/**
* Adds a activity history with a message & without binding to a entity.
* @param $activityKey
- * @param int $bookId
+ * @param int $bookId
* @param bool|false $extra
*/
public function addMessage($activityKey, $bookId = 0, $extra = false)
*/
public function latest($count = 20, $page = 0)
{
- $activityList = $this->restrictionService
+ $activityList = $this->restrictionService
->filterRestrictedEntityRelations($this->activity, 'activities', 'entity_id', 'entity_type')
->orderBy('created_at', 'desc')->skip($count * $page)->take($count)->get();
* Gets the latest activity for an entity, Filtering out similar
* items to prevent a message activity list.
* @param Entity $entity
- * @param int $count
- * @param int $page
+ * @param int $count
+ * @param int $page
* @return array
*/
public function entityActivity($entity, $count = 20, $page = 0)
*/
public function userActivity($user, $count = 20, $page = 0)
{
- $activity = $this->activity->where('user_id', '=', $user->id)
- ->orderBy('created_at', 'desc')->skip($count * $page)->take($count)->get();
- return $this->filterSimilar($activity);
+ $activityList = $this->restrictionService
+ ->filterRestrictedEntityRelations($this->activity, 'activities', 'entity_id', 'entity_type')
+ ->orderBy('created_at', 'desc')->where('user_id', '=', $user->id)->skip($count * $page)->take($count)->get();
+ return $this->filterSimilar($activityList);
}
/**