<?php namespace BookStack\Services;
-use Illuminate\Support\Facades\Auth;
use BookStack\Activity;
use BookStack\Entity;
use Session;
{
protected $activity;
protected $user;
- protected $restrictionService;
+ protected $permissionService;
/**
* ActivityService constructor.
* @param Activity $activity
- * @param RestrictionService $restrictionService
+ * @param PermissionService $permissionService
*/
- public function __construct(Activity $activity, RestrictionService $restrictionService)
+ public function __construct(Activity $activity, PermissionService $permissionService)
{
$this->activity = $activity;
- $this->restrictionService = $restrictionService;
- $this->user = auth()->user();
+ $this->permissionService = $permissionService;
+ $this->user = user();
}
/**
* 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->permissionService
->filterRestrictedEntityRelations($this->activity, 'activities', 'entity_id', 'entity_type')
- ->orderBy('created_at', 'desc')->skip($count * $page)->take($count)->get();
+ ->orderBy('created_at', 'desc')->with('user', 'entity')->skip($count * $page)->take($count)->get();
return $this->filterSimilar($activityList);
}
* 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)
{
- $activity = $entity->hasMany('BookStack\Activity')->orderBy('created_at', 'desc')
- ->skip($count * $page)->take($count)->get();
+ if ($entity->isA('book')) {
+ $query = $this->activity->where('book_id', '=', $entity->id);
+ } else {
+ $query = $this->activity->where('entity_type', '=', get_class($entity))
+ ->where('entity_id', '=', $entity->id);
+ }
+
+ $activity = $this->permissionService
+ ->filterRestrictedEntityRelations($query, 'activities', 'entity_id', 'entity_type')
+ ->orderBy('created_at', 'desc')->with(['entity', 'user.avatar'])->skip($count * $page)->take($count)->get();
return $this->filterSimilar($activity);
}
*/
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->permissionService
+ ->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);
}
/**