Skip to content
This repository has been archived by the owner on Dec 4, 2018. It is now read-only.

Sue admin #30

Merged
merged 12 commits into from
Apr 16, 2018
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
language: php

php:
- nightly
- 5.4

script: phpunit --configuration tests/phpunit.xml
script: find . -type f -iname "*.php" -print0 | xargs -0 -n1 php -l && phpunit --configuration tests/phpunit.xml
34 changes: 34 additions & 0 deletions ajax/add-update-playlist.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,25 @@
if(!is_null($_REQUEST['name'])) {
$playlist = new Playlist();
$playlist->set_name($_REQUEST['name']);

if(isset($_REQUEST["sue"]) && $_REQUEST["sue"] == "true") {
if(isset($_REQUEST["color"]))
$color = $_REQUEST["color"];
else
$color = "#ffffff";
$sue = "t";
}
else {
$sue = "f";
$color = "#ffffff";
}
$playlist->set_sustainer($sue);

$playlist->save();

$colorData = array("playlistid" => $playlist->get_id(), "colour" => substr($color, 1));
DigiplayDB::insert("playlistcolours", $colorData);

if(Errors::occured()) {
http_response_code(400);
exit(json_encode(array("error" => "Something went wrong. You may have discovered a bug!","detail" => Errors::report("array"))));
Expand All @@ -19,8 +36,25 @@
} else {
if(!($playlist = Playlists::get_by_id($_REQUEST['id']))) exit(json_encode(array('error' => 'Invalid playlist ID.')));
$playlist->set_name($_REQUEST['name']);

if(isset($_REQUEST["sue"]) && $_REQUEST["sue"] == "true") {
$playlist->set_sustainer("t");
$color = $_REQUEST["color"];
}
else {
$playlist->set_sustainer("f");
$color = "#ffffff";
}

$playlist->save();

if(is_null(DigiplayDB::select("colour FROM playlistcolours WHERE playlistid = " . $playlist->get_id()))) {
$colorData = array("playlistid" => $playlist->get_id(), "colour" => substr($color, 1));
DigiplayDB::insert("playlistcolours", $colorData);
}
else
DigiplayDB::update("playlistcolours", array("colour" => substr($color, 1)), "playlistid=" . $playlist->get_id());

if(Errors::occured()) {
http_response_code(400);
exit(json_encode(array("error" => "Something went wrong. You may have discovered a bug!","detail" => Errors::report("array"))));
Expand Down
32 changes: 32 additions & 0 deletions ajax/advert-search.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

Output::set_template();

$query = $_REQUEST['q'];

if($query) $search = Search::adverts(str_replace(" ", " | ", $query),10);
$tracks = $search["results"];
$tracks_array = array();

if($tracks) {
foreach($tracks as $track_id) {
$track_object = Tracks::get($track_id);
$track = array(
'id' => $track_object->get_id(),
'title' => $track_object->get_title(),
'by' => $track_object->get_artists_str(),
'href' => LINK_ABS."music/detail/".$track_object->get_id()
);
array_push($tracks_array, $track);
}
}

$array = array(
"title" => "Adverts",
"href" => LINK_ABS."music/search/?i=title&q=".$query,
"data" => $tracks_array
);

echo json_encode($array);

?>
3 changes: 3 additions & 0 deletions ajax/delete-playlist.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
<?php
if(Session::is_group_user('Playlist Admin')){
if($_REQUEST["id"]) {
DigiplayDB::delete("playlistcolours", "playlistid=" . $_REQUEST["id"]);
$playlist = Playlists::get_by_id($_REQUEST["id"]);
$playlist->delete();


if(Errors::occured()) {
http_response_code(400);
exit(json_encode(array("error" => "Something went wrong. You may have discovered a bug!","detail" => Errors::report("array"))));
Expand Down
2 changes: 1 addition & 1 deletion ajax/prerecord-search.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

$query = $_REQUEST['q'];

if($query) $search = Search::prerecords(str_replace(" ", " | ", $query),5);
if($query) $search = Search::prerecords(str_replace(" ", " | ", $query),10);
$tracks = $search["results"];
$tracks_array = array();

Expand Down
3 changes: 1 addition & 2 deletions ajax/update-sustainer-advert.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@

if(!($advert = Adverts::get_by_id((int) $_REQUEST["advertid"]))) exit(json_encode(array('error' => 'Invalid advert ID.')));

if ($advert->get_sustainer() == 't') $advert->set_sustainer('f');
else $advert->set_sustainer('t');
$advert->set_sustainer($_REQUEST['sue']);

$advert->save();

Expand Down
2 changes: 1 addition & 1 deletion email/index.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

Output::require_group("Administrator");
Output::require_group("Administrators");
Output::set_title("Emails to the Studio");

$limit = (isset($_GET['n']))? $_GET['n'] : 10;
Expand Down
27 changes: 25 additions & 2 deletions includes/Playlist.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,36 @@ public function delete() {
return DigiplayDB::delete("playlists", "id = ".$this->id);
}

public function get_tracks($limit = 0, $offset = 0) { return Tracks::get_playlisted($this,$limit,$offset); }
public function get_tracks($limit = 0, $offset = 0, $censoredFirst = false) { return Tracks::get_playlisted($this,$limit,$offset,$censoredFirst); }
public function count_tracks() { return DigiplayDB::select("count(audioid) FROM audioplaylists WHERE playlistid = ".$this->id); }

public function add_track($track) { return DigiplayDB::insert("audioplaylists", array("audioid" => $track->get_id(), "playlistid" => $this->id)); }
public function del_track($track) { return DigiplayDB::delete("audioplaylists", "audioid = ".$track->get_id()." AND playlistid = ".$this->id); }

public function get_colour() {
return DigiplayDB::select("colour FROM playlistcolours WHERE playlistid = ".$this->id);
$color = DigiplayDB::select("colour FROM playlistcolours WHERE playlistid = ".$this->id);
if(is_null($color))
return "ffffff";
else
return $color;
}

// Return boolean true or false if the playlist contains at least one explcit track
public function contains_censored_tracks() {
$tracks = self::get_tracks();
foreach($tracks as $track) {
if($track->is_censored())
return true;
}
return false;
}

// Return the cumulative time of all the tracks in seconds
public function get_length() {
$length = 0;
foreach(self::get_tracks() as $track) {
$length += $track->get_length();
}
return $length;
}
}
7 changes: 4 additions & 3 deletions includes/Tracks.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ public static function get_by_md5($md5) { return DigiplayDB::select("* FROM audi
public static function get_total_tracks() { return DigiplayDB::select("COUNT(id) FROM audio WHERE type = ".AudioTypes::get("Track")->get_id()); }
public static function get_total_length() { return DigiplayDB::select("SUM(length_smpl) FROM audio WHERE type = ".AudioTypes::get("Track")->get_id()) / 44100; }

public static function get_playlisted($playlist = NULL,$limit = 0,$offset = 0) {
public static function get_playlisted($playlist = NULL,$limit = 0,$offset = 0,$censoredFirst = false) {
$limit = ($limit > 0)? " LIMIT ".$limit : "";
$offset = ($offset > 0)? " OFFSET ".$offset : "";
$censored = ($censoredFirst) ? " ORDER BY audio.censor DESC" : "";
$tracks = array();
if($playlist) return DigiplayDB::select("audio.* FROM audio INNER JOIN audioplaylists ON (audio.id = audioplaylists.audioid) WHERE audioplaylists.playlistid = ".$playlist->get_id().$limit.$offset, "Track", true);
else return DigiplayDB::select("audio.* FROM audio INNER JOIN audioplaylists ON (audio.id = audioplaylists.audioid)".$limit.$offset, "Track", true);
if($playlist) return DigiplayDB::select("audio.* FROM audio INNER JOIN audioplaylists ON (audio.id = audioplaylists.audioid) WHERE audioplaylists.playlistid = ".$playlist->get_id().$censored.$limit.$offset, "Track", true);
else return DigiplayDB::select("audio.* FROM audio INNER JOIN audioplaylists ON (audio.id = audioplaylists.audioid)".$censored.$limit.$offset, "Track", true);
}

public static function get_newest($num=10) { return DigiplayDB::select("audio.* FROM audio INNER JOIN audiodir ON audio.id=audiodir.audioid WHERE audio.type = ".AudioTypes::get("Track")->get_id()." AND audiodir.dirid = 2 ORDER BY audio.id DESC LIMIT ".$num.";", "Track", true); }
Expand Down
4 changes: 2 additions & 2 deletions index.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
<h2>Common Tasks</h2>
".((Session::is_group_user("Importer")) ? "<a href=\"music/upload/\" class=\"btn btn-primary btn-large btn-block\">".Bootstrap::fontawesome("upload", "fa-lg fa-fw fa-pull-left")."Upload Audio</a>" : "")."
<a href=\"playlists/\" class=\"btn btn-primary btn-large btn-block\">".Bootstrap::fontawesome("list-ul", "fa-lg fa-fw fa-pull-left")."View Playlists</a>
".((Session::is_group_user("Sustainer Admin")) ? "<a href=\"sustainer/\" class=\"btn btn-primary btn-large btn-block\">".Bootstrap::fontawesome("clock", "fa-lg fa-fw fa-pull-left")."Schedule Prerecorded Content</a>" : "")."
".((Session::is_group_user("Sustainer Admin")) ? "<a href=\"sustainer/schedule.php\" class=\"btn btn-primary btn-large btn-block\">".Bootstrap::fontawesome("clock", "fa-lg fa-fw fa-pull-left")."Schedule Prerecorded Content</a>" : "")."
<a href=\"faults/\" class=\"btn btn-primary btn-large btn-block\">".Bootstrap::fontawesome("exclamation-triangle", "fa-lg fa-fw fa-pull-left")."Report a Fault</a>
".((Session::is_group_user("Studio Admin")) ? "<a href=\"reset.php\" class=\"btn btn-primary btn-large btn-block\">".Bootstrap::fontawesome("power-off", "fa-lg fa-fw fa-pull-left")."Manage Playout Systems</a>" : "")."
":"
Expand Down Expand Up @@ -80,7 +80,7 @@
");

if(Session::is_group_user("Sustainer Admin")) {
echo("<a class=\"btn btn-primary btn-block\" href=\"".LINK_ABS."sustainer/\">".Bootstrap::fontawesome("headphones", "fa-lg fa-fw fa-pull-left")."Now playing</a>");
echo("<a class=\"btn btn-primary btn-block\" href=\"".LINK_ABS."sustainer/\">".Bootstrap::fontawesome("headphones", "fa-lg fa-fw fa-pull-left")."Sustainer Control Centre</a>");
}

echo("<a class=\"btn btn-primary btn-block\" href=\"".LINK_ABS."playlists/detail/0\">".Bootstrap::fontawesome("list-ul", "fa-lg fa-fw fa-pull-left")."View Sustainer Playlist</a>
Expand Down
5 changes: 3 additions & 2 deletions playlists/detail/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

MainTemplate::set_subtitle("List tracks on a playlist, remove tracks");

$tracks = $playlist->get_tracks($limit, (($page-1)*$limit));
$tracks = $playlist->get_tracks($limit, (($page-1)*$limit), true);
if($tracks) {
$pages = new Paginator;
$pages->items_per_page = $limit;
Expand Down Expand Up @@ -67,8 +67,9 @@
</tr>
</thead>");
foreach($tracks as $track) {
$background = ($track->is_censored()) ? " class=\"danger\"" : "";
echo("
<tr id=\"".$track->get_id()."\">
<tr id=\"".$track->get_id()."\" ".$background.">
<td class=\"icon\">
<a href=\"".LINK_ABS."music/detail/".$track->get_id()."\" class=\"track-info\">
".Bootstrap::fontawesome("info-circle")."
Expand Down
79 changes: 60 additions & 19 deletions playlists/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,18 @@
});

$('.edit-playlist').click(function() {
$('.playlist-edit-name').val($(this).parent().parent().find('.title').html());
$('.update-id').val($(this).attr('data-dps-id'));
$('#edit-playlist-name').val($(this).parent().parent().find('.title').html());
$('#edit-update-id').val($(this).attr('data-dps-id'));
if($(this).attr('data-dps-sue') == 't') {
$('#edit-playlist-color-container').show();
$('#edit-playlist-color').val($(this).attr('data-dps-color'));
$('#edit-playlist-sue').prop('checked', true);
}
else {
$('#edit-playlist-color-container').hide();
$('#edit-playlist-color').val('#ffffff');
$('#edit-playlist-sue').prop('checked', false);
}
});

$('.yes-definitely-delete').click(function() {
Expand All @@ -82,7 +92,7 @@
$('.add-playlist').click(function() {
$.ajax({
url: '".LINK_ABS."ajax/add-update-playlist.php',
data: 'name='+$('.playlist-name').val(),
data: 'name='+$('.playlist-name').val()+'&color='+$('#new-playlist-color').val()+'&sue='+$('#new-playlist-sue').is(':checked'),
type: 'POST',
error: function(xhr,text,error) {
value = $.parseJSON(xhr.responseText);
Expand All @@ -101,7 +111,7 @@
$('.update-playlist').click(function() {
$.ajax({
url: '".LINK_ABS."ajax/add-update-playlist.php',
data: 'id='+$('.update-id').val()+'&name='+$('.playlist-edit-name').val(),
data: 'id='+$('#edit-update-id').val()+'&name='+$('#edit-playlist-name').val()+'&color='+$('#edit-playlist-color').val()+'&sue='+$('#edit-playlist-sue').is(':checked'),
type: 'POST',
error: function(xhr,text,error) {
value = $.parseJSON(xhr.responseText);
Expand All @@ -114,6 +124,26 @@
});

$('.playlist-edit-name').keypress(function(e) { if(e.keyCode == 13) { e.preventDefault(); $('.update-playlist').click(); }});

$('#new-playlist-sue').change(function(){
if($(this).is(':checked')) {
$('#new-playlist-color-container').show();
}
else {
$('#new-playlist-color-container').hide();
$('#new-playlist-color').val('#ffffff');
}
});

$('#edit-playlist-sue').change(function(){
if($(this).is(':checked')) {
$('#edit-playlist-color-container').show();
}
else {
$('#edit-playlist-color-container').hide();
$('#edit-playlist-color').val('#ffffff');
}
});
" : "").
"});
</script>");
Expand Down Expand Up @@ -168,7 +198,7 @@
if(Session::is_group_user("Playlist Admin")) {
echo("
<td>
<a href=\"#\" data-toggle=\"modal\" data-target=\"#update-modal\" data-dps-id=\"".$playlist->get_id()."\" class=\"edit-playlist\" title=\"Edit playlist name\" rel=\"twipsy\">
<a href=\"#\" data-toggle=\"modal\" data-target=\"#update-modal\" data-dps-id=\"".$playlist->get_id()."\" data-dps-color=\"#".$playlist->get_colour()."\" data-dps-sue=\"".$playlist->get_sustainer()."\" class=\"edit-playlist\" title=\"Edit playlist details\" rel=\"twipsy\">
".Bootstrap::fontawesome("pencil-alt")."
</a>
</td>
Expand Down Expand Up @@ -235,7 +265,7 @@
<td class=\"title\">".$playlist->get_name()."</td>
<td>".count($playlist->get_tracks())."</td>
<td>
<a href=\"#\" data-toggle=\"modal\" data-target=\"#update-modal\" data-dps-id=\"".$playlist->get_id()."\" class=\"edit-playlist\" title=\"Edit playlist name\" rel=\"twipsy\">
<a href=\"#\" data-toggle=\"modal\" data-target=\"#update-modal\" data-dps-id=\"".$playlist->get_id()."\" data-dps-color=\"#".$playlist->get_colour()."\" data-dps-sue=\"".$playlist->get_sustainer()."\" class=\"edit-playlist\" title=\"Edit playlist details\" rel=\"twipsy\">
".Bootstrap::fontawesome("pencil-alt")."
</a>
</td>
Expand All @@ -260,16 +290,21 @@
}

if(Session::is_group_user("Playlist Admin")) {
echo("<a href=\"#\" data-toggle=\"modal\" data-target=\"#addnew-modal\" id=\"add\">Add a new playlist &raquo;</a>".
Bootstrap::modal("addnew-modal", "
echo(Bootstrap::modal("addnew-modal", "
<form class=\"form-horizontal\" action=\"".LINK_ABS."/ajax/add-update-playlist.php\" method=\"POST\">
<fieldset>
<div class=\"control-group\">
<label class=\"control-label\" for=\"name\">Name</label>
<div class=\"controls\">
<input type=\"text\" class=\"form-control playlist-name\" id=\"name\">
<p class=\"help-block\">Enter a name for the new playlist.</p>
</div>
<input type=\"text\" class=\"form-control playlist-name\" id=\"name\">
</div>
<div class=\"checkbox\">
<label>
<input type=\"checkbox\" id=\"new-playlist-sue\" name=\"on-sue\"> Sustainer Playlist
</label>
</div>
<div class=\"control-group\" id=\"new-playlist-color-container\" style=\"display:none;\">
<label class=\"control-label\" for=\"new-playlist-color\">Colour</label>
<input class=\"form-control\" type=\"color\" name=\"playlist-color\" id=\"new-playlist-color\" value=\"#ffffff\">
</div>
</fieldset>
</form>
Expand All @@ -280,16 +315,22 @@
<form class=\"form-horizontal\" action=\"".LINK_ABS."/ajax/add-update-playlist.php\" method=\"POST\">
<fieldset>
<div class=\"control-group\">
<label class=\"control-label\" for=\"name\">Name</label>
<div class=\"controls\">
<input type=\"hidden\"class=\"update-id\">
<input type=\"text\" class=\"form-control playlist-edit-name\">
<p class=\"help-block\">Enter a name for the playlist.</p>
</div>
<label class=\"control-label\" for=\"edit-name\">Name</label>
<input type=\"text\" class=\"form-control playlist-name\" id=\"edit-playlist-name\">
</div>
<div class=\"checkbox\">
<label>
<input type=\"checkbox\" id=\"edit-playlist-sue\" name=\"on-sue\"> Sustainer Playlist
</label>
</div>
<div class=\"control-group\" id=\"edit-playlist-color-container\" style=\"display:none;\">
<label class=\"control-label\" for=\"edit-playlist-color\">Colour</label>
<input class=\"form-control\" type=\"color\" name=\"playlist-color\" id=\"edit-playlist-color\" value=\"#ffffff\">
</div>
<input type=\"hidden\" id=\"edit-update-id\">
</fieldset>
</form>
", "Edit playlist name", "<a class=\"btn btn-primary update-playlist\" href=\"#\">Save</a><a class=\"btn btn-default\" data-dismiss=\"modal\">Cancel</a>").
", "Edit playlist details", "<a class=\"btn btn-primary update-playlist\" href=\"#\">Save</a><a class=\"btn btn-default\" data-dismiss=\"modal\">Cancel</a>").
"</div>
</div>".
Bootstrap::modal("delete-modal", "<p>Are you sure you want to permanently delete <span class=\"delete-playlist-title\">this playlist</span>? </p><p>(this does not delete any of the tracks on it)</p>", "Delete playlist", "<a href=\"#\" class=\"btn btn-primary yes-definitely-delete\">Yes</a> <a href=\"#\" class=\"btn btn-default\" data-dismiss=\"modal\">No</a>"));
Expand Down
2 changes: 1 addition & 1 deletion playlists/sidebar.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ function menu() {
);

if(Session::is_group_user("Playlist Admin")) {
$muisic[] = array("url" => LINK_ABS.$site_path_array[0]."/index.php#add", "text" => "Add a new playlist", "icon" => "plus-sign");
$menu[] = array("url" => LINK_ABS.$site_path_array[0]."/index.php#add\" data-toggle=\"modal\" data-target=\"#addnew-modal", "text" => "Add a new playlist", "icon" => "plus-sign");
}

foreach($menu as &$item) if($site_path_array[1] == array_pop(explode("/",$item["url"]))) $item["active"] = true;
Expand Down
Loading