public function deleteTrack($request, $db) { // Check for login if (!isset($request->user_id)) { throw new Exception("You must be logged in to delete this track", 401); } $track_id = $this->getItemId($request); $track_mapper = new TrackMapper($db, $request); $tracks = $track_mapper->getTrackById($track_id, true); if (!$tracks) { throw new Exception("Track not found", 404); } $event_mapper = new EventMapper($db, $request); $events = $event_mapper->getEventByTrackId($track_id, true, false, false); if (!$events || !$events[0]['ID']) { throw new Exception("Associated event not found", 404); } $event_id = $events[0]['ID']; if (!$event_mapper->thisUserHasAdminOn($event_id)) { throw new Exception('You do not have permission to delete this track', 403); } $track_mapper->deleteEventTrack($track_id); header("Content-Length: 0", null, 204); exit; }
public function getAction($request, $db) { $track_id = $this->getItemId($request); // verbosity $verbose = $this->getVerbosity($request); if ($track_id) { $mapper = new TrackMapper($db, $request); $list = $mapper->getTrackById($track_id, $verbose); if (false === $list) { throw new Exception('Track not found', 404); } } else { // listing makes no sense throw new Exception('Generic tracks listing not supported', 405); } return $list; }