/** * Retrieve pagination * * @param integer $page * @param integer $start * @param string $search * @return array */ public function get($page, $search = '', $visibility = null, $ownership = null) { $this->model = $this->setupQuery($this->model); $userId = $this->auth->user()->id; $perPage = config('inoplate.media.library.per_page', 10); if ($search) { $this->model = $this->model->where(function ($query) use($search) { $query->where('title', 'like', "%{$search}%")->orWhere('name', 'like', "%{$search}%"); }); } if ($ownership == 1) { $this->model = $this->model->where('user_id', $userId); } elseif ($ownership == 2) { $this->model = $this->model->where('user_id', '!=', $userId)->whereHas('users', function ($query) use($userId) { $query->where('user_id', $userId); }); } if ($visibility) { $this->model = $this->model->where('visibility', $visibility); } $eloquentLibraries = $this->model->skip(($page - 1) * $perPage)->take($perPage)->orderBy('created_at', 'desc')->get(); $libraries = []; foreach ($eloquentLibraries as $library) { $libraries[] = $this->toDomainModel($library); } return $libraries; }