Navigation Menu

Skip to content

Commit

Permalink
Delete track
Browse files Browse the repository at this point in the history
DELETE to the track's URI to delete the track.
  • Loading branch information
akrabat committed Mar 26, 2016
1 parent 120f764 commit acb4148
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 1 deletion.
6 changes: 6 additions & 0 deletions src/config/routes/2.1.json
Expand Up @@ -109,6 +109,12 @@
"action": "editTrack",
"verbs": ["PUT"]
},
{
"path": "/tracks(/[\\d]+)/?$",
"controller": "TracksController",
"action": "deleteTrack",
"verbs": ["DELETE"]
},

{
"path": "/users/passwords$",
Expand Down
27 changes: 26 additions & 1 deletion src/controllers/TracksController.php
Expand Up @@ -65,11 +65,36 @@ public function editTrack($request, $db)
throw new Exception(implode(". ", $errors), 400);
}


$track_mapper->editEventTrack($track, $track_id);

$uri = $request->base . '/' . $request->version . '/tracks/' . $track_id;
header("Location: $uri", true, 204);
exit;
}

public function deleteTrack($request, $db)
{
$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;
}
}
18 changes: 18 additions & 0 deletions src/models/TrackMapper.php
Expand Up @@ -153,4 +153,22 @@ public function editEventTrack($data, $track_id)

return $track_id;
}

/**
* Delete track and talk associations
*
* @param int $track_id
*/
public function deleteEventTrack($track_id)
{
// delete talk associations
$sql = "delete from event_track where ID = :track_id";
$stmt = $this->_db->prepare($sql);
$stmt->execute(['track_id' => $track_id]);

// delete track
$sql = "delete from talk_track where track_id = :track_id";
$stmt = $this->_db->prepare($sql);
$stmt->execute(['track_id' => $track_id]);
}
}

0 comments on commit acb4148

Please sign in to comment.