/** * @throws \Exception * @return CommandResponse */ public function execute() { $rules = ['title' => 'required|min:3|max:50', 'cover' => 'image|mimes:png|min_width:350|min_height:350', 'cover_id' => 'exists:images,id', 'track_ids' => 'exists:tracks,id']; $validator = Validator::make($this->_input, $rules); if ($validator->fails()) { return CommandResponse::fail($validator); } $this->_album->title = $this->_input['title']; $this->_album->description = $this->_input['description']; if (isset($this->_input['cover_id'])) { $this->_album->cover_id = $this->_input['cover_id']; } else { if (isset($this->_input['cover'])) { $cover = $this->_input['cover']; $this->_album->cover_id = Image::upload($cover, Auth::user())->id; } else { if (isset($this->_input['remove_cover']) && $this->_input['remove_cover'] == 'true') { $this->_album->cover_id = null; } } } $trackIds = explode(',', $this->_input['track_ids']); $this->_album->syncTrackIds($trackIds); $this->_album->save(); return CommandResponse::succeed(['real_cover_url' => $this->_album->getCoverUrl(Image::NORMAL)]); }
public static function mapPublicAlbumSummary(Album $album) { $userData = ['stats' => ['views' => 0, 'downloads' => 0], 'is_favourited' => false]; if (Auth::check() && $album->users->count()) { $userRow = $album->users[0]; $userData = ['stats' => ['views' => (int) $userRow->view_count, 'downloads' => (int) $userRow->download_count], 'is_favourited' => (bool) $userRow->is_favourited]; } return ['id' => (int) $album->id, 'track_count' => (int) $album->track_count, 'title' => $album->title, 'slug' => $album->slug, 'created_at' => $album->created_at->format('c'), 'stats' => ['views' => (int) $album->view_count, 'downloads' => (int) $album->download_count, 'comments' => (int) $album->comment_count, 'favourites' => (int) $album->favourite_count], 'covers' => ['small' => $album->getCoverUrl(Image::SMALL), 'normal' => $album->getCoverUrl(Image::NORMAL), 'original' => $album->getCoverUrl(Image::ORIGINAL)], 'url' => $album->url, 'user' => ['id' => (int) $album->user->id, 'name' => $album->user->display_name, 'url' => $album->user->url], 'user_data' => $userData, 'permissions' => ['delete' => Auth::check() && Auth::user()->id == $album->user_id, 'edit' => Auth::check() && Auth::user()->id == $album->user_id]]; }