From d89166e2ffa177d1843da51744ecd138550468b2 Mon Sep 17 00:00:00 2001 From: Martin Konecny Date: Mon, 5 Nov 2012 11:52:11 -0500 Subject: [PATCH 01/19] CC-4665: ReplayGain does not work for FLAC files -fixed --- python_apps/media-monitor2/media/update/replaygain.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/python_apps/media-monitor2/media/update/replaygain.py b/python_apps/media-monitor2/media/update/replaygain.py index a630a2655..5239bf1e2 100644 --- a/python_apps/media-monitor2/media/update/replaygain.py +++ b/python_apps/media-monitor2/media/update/replaygain.py @@ -105,7 +105,16 @@ def calculate_replay_gain(file_path): logger.warn("vorbisgain/ogginfo not found") elif file_type == 'flac': if run_process("which metaflac > /dev/null") == 0: - out = get_process_output('nice -n %s metaflac --show-tag=REPLAYGAIN_TRACK_GAIN "%s"' % (nice_level, temp_file_path)) + + command = 'nice -n %s metaflac --add-replay-gain "%s"' \ + % (nice_level, temp_file_path) + run_process(command) + + command = 'nice -n %s metaflac \ + --show-tag=REPLAYGAIN_TRACK_GAIN "%s"' \ + % (nice_level, temp_file_path) + + out = get_process_output() search = re.search(r'REPLAYGAIN_TRACK_GAIN=(.*) dB', out) else: logger.warn("metaflac not found") From af7e94a44d027524977347bc45d1625f08dc808a Mon Sep 17 00:00:00 2001 From: Martin Konecny Date: Mon, 5 Nov 2012 11:52:28 -0500 Subject: [PATCH 02/19] don't break 80 character line limit --- .../media-monitor2/media/update/replaygain.py | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/python_apps/media-monitor2/media/update/replaygain.py b/python_apps/media-monitor2/media/update/replaygain.py index 5239bf1e2..0a9d8a224 100644 --- a/python_apps/media-monitor2/media/update/replaygain.py +++ b/python_apps/media-monitor2/media/update/replaygain.py @@ -71,8 +71,10 @@ def get_file_type(file_path): def calculate_replay_gain(file_path): """ - This function accepts files of type mp3/ogg/flac and returns a calculated ReplayGain value in dB. - If the value cannot be calculated for some reason, then we default to 0 (Unity Gain). + This function accepts files of type mp3/ogg/flac and returns a calculated + ReplayGain value in dB. + If the value cannot be calculated for some reason, then we default to 0 + (Unity Gain). http://wiki.hydrogenaudio.org/index.php?title=ReplayGain_1.0_specification """ @@ -92,13 +94,21 @@ def calculate_replay_gain(file_path): if file_type: if file_type == 'mp3': if run_process("which mp3gain > /dev/null") == 0: - out = get_process_output('nice -n %s mp3gain -q "%s" 2> /dev/null' % (nice_level, temp_file_path)) - search = re.search(r'Recommended "Track" dB change: (.*)', out) + command = 'nice -n %s mp3gain -q "%s" 2> /dev/null' \ + % (nice_level, temp_file_path) + out = get_process_output() + search = re.search(r'Recommended "Track" dB change: (.*)', \ + out) else: logger.warn("mp3gain not found") elif file_type == 'vorbis': - if run_process("which vorbisgain > /dev/null && which ogginfo > /dev/null") == 0: - run_process('nice -n %s vorbisgain -q -f "%s" 2>/dev/null >/dev/null' % (nice_level,temp_file_path)) + command = "which vorbisgain > /dev/null && which ogginfo > \ + /dev/null" + if run_process() == 0: + command = 'nice -n %s vorbisgain -q -f "%s" 2>/dev/null \ + >/dev/null' % (nice_level,temp_file_path) + run_process(command) + out = get_process_output('ogginfo "%s"' % temp_file_path) search = re.search(r'REPLAYGAIN_TRACK_GAIN=(.*) dB', out) else: From c051e0671d3e98b8473e14743d83645c45e93486 Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 5 Nov 2012 12:00:37 -0500 Subject: [PATCH 03/19] CC-4625: On tablet you cannot create a playlist, smart block or webstream -attempt #2 --- airtime_mvc/public/js/bootstrap/bootstrap.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/airtime_mvc/public/js/bootstrap/bootstrap.js b/airtime_mvc/public/js/bootstrap/bootstrap.js index 3ba659d60..411ca794f 100644 --- a/airtime_mvc/public/js/bootstrap/bootstrap.js +++ b/airtime_mvc/public/js/bootstrap/bootstrap.js @@ -715,7 +715,11 @@ * =================================== */ $(document) - .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus) + + // menu options don't work on tablet so trying this hack for now: + // https://github.com/twitter/bootstrap/issues/4550 + //.on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus) + .on('click.dropdown.data-api', clearMenus) .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle) .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) From f6ee2afb88f16880ffe2ca6b883ed1204c34b5c3 Mon Sep 17 00:00:00 2001 From: Martin Konecny Date: Mon, 5 Nov 2012 12:03:25 -0500 Subject: [PATCH 04/19] CC-4665: ReplayGain does not work for FLAC files -fixed --- python_apps/media-monitor2/media/update/replaygain.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python_apps/media-monitor2/media/update/replaygain.py b/python_apps/media-monitor2/media/update/replaygain.py index 0a9d8a224..5af7cd4a1 100644 --- a/python_apps/media-monitor2/media/update/replaygain.py +++ b/python_apps/media-monitor2/media/update/replaygain.py @@ -96,7 +96,7 @@ def calculate_replay_gain(file_path): if run_process("which mp3gain > /dev/null") == 0: command = 'nice -n %s mp3gain -q "%s" 2> /dev/null' \ % (nice_level, temp_file_path) - out = get_process_output() + out = get_process_output(command) search = re.search(r'Recommended "Track" dB change: (.*)', \ out) else: @@ -104,7 +104,7 @@ def calculate_replay_gain(file_path): elif file_type == 'vorbis': command = "which vorbisgain > /dev/null && which ogginfo > \ /dev/null" - if run_process() == 0: + if run_process(command) == 0: command = 'nice -n %s vorbisgain -q -f "%s" 2>/dev/null \ >/dev/null' % (nice_level,temp_file_path) run_process(command) @@ -124,7 +124,7 @@ def calculate_replay_gain(file_path): --show-tag=REPLAYGAIN_TRACK_GAIN "%s"' \ % (nice_level, temp_file_path) - out = get_process_output() + out = get_process_output(command) search = re.search(r'REPLAYGAIN_TRACK_GAIN=(.*) dB', out) else: logger.warn("metaflac not found") From 90a93e9a6c326c91d69a0de6b523ec1bee4b8846 Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 5 Nov 2012 13:58:11 -0500 Subject: [PATCH 05/19] CC-4664: Playlist/Block preview: Tracks deleted from library still get played -fixed --- airtime_mvc/application/models/Block.php | 17 +++++++++++++++-- airtime_mvc/application/models/Playlist.php | 16 +++++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index 57018ad5f..da1972f81 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -210,10 +210,23 @@ FROM cc_blockcontents AS pc LEFT JOIN cc_files AS f ON pc.file_id=f.id LEFT JOIN cc_block AS bl ON pc.block_id = bl.id WHERE pc.block_id = :block_id -ORDER BY pc.position + SQL; - $rows = Application_Common_Database::prepareAndExecute($sql, array(':block_id'=>$this->id)); + if ($filterFiles) { + $sql .= <<$this->id); + if ($filterFiles) { + $params[':file_exists'] = $filterFiles; + } + $rows = Application_Common_Database::prepareAndExecute($sql, $params); $offset = 0; foreach ($rows as &$row) { diff --git a/airtime_mvc/application/models/Playlist.php b/airtime_mvc/application/models/Playlist.php index c99fbb019..f70012b73 100644 --- a/airtime_mvc/application/models/Playlist.php +++ b/airtime_mvc/application/models/Playlist.php @@ -176,6 +176,14 @@ class Application_Model_Playlist implements Application_Model_LibraryEditable FROM cc_playlistcontents AS pc JOIN cc_files AS f ON pc.file_id=f.id WHERE pc.playlist_id = :playlist_id1 +SQL; + + if ($filterFiles) { + $sql .= <<$this->id, ':playlist_id2'=>$this->id, ':playlist_id3'=>$this->id)); + $params = array( + ':playlist_id1'=>$this->id, ':playlist_id2'=>$this->id, ':playlist_id3'=>$this->id); + if ($filterFiles) { + $params[':file_exists'] = $filterFiles; + } + + $rows = Application_Common_Database::prepareAndExecute($sql, $params); $offset = 0; foreach ($rows as &$row) { From 6ef646124ed4f8549d9f1c599f8184bba0f14d3b Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 6 Nov 2012 10:58:25 -0500 Subject: [PATCH 06/19] CC-4668: Blocks/Playlists: Length includes deleted tracks -fixed --- airtime_mvc/application/models/StoredFile.php | 19 ++++++++++++++++++- .../application/models/airtime/CcBlock.php | 10 ++++++++-- .../application/models/airtime/CcPlaylist.php | 8 +++++++- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index 51693f46d..fb924ac5c 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -359,9 +359,26 @@ SQL; Application_Model_RabbitMq::SendMessageToMediaMonitor("file_delete", $data); } - // set file_exists falg to false + // set file_exists flag to false $this->_file->setDbFileExists(false); $this->_file->save(); + + // need to explicitly update any playlist's and block's length + // that contains the file getting deleted + $fileId = $this->_file->getDbId(); + $plRows = CcPlaylistcontentsQuery::create()->filterByDbFileId()->find(); + foreach ($plRows as $row) { + $pl = CcPlaylistQuery::create()->filterByDbId($row->getDbPlaylistId($fileId))->findOne(); + $pl->setDbLength($pl->computeDbLength(Propel::getConnection(CcPlaylistPeer::DATABASE_NAME))); + $pl->save(); + } + + $blRows = CcBlockcontentsQuery::create()->filterByDbFileId($fileId)->find(); + foreach ($blRows as $row) { + $bl = CcBlockQuery::create()->filterByDbId($row->getDbBlockId())->findOne(); + $bl->setDbLength($bl->computeDbLength(Propel::getConnection(CcBlockPeer::DATABASE_NAME))); + $bl->save(); + } } /** diff --git a/airtime_mvc/application/models/airtime/CcBlock.php b/airtime_mvc/application/models/airtime/CcBlock.php index da43e76f0..84a3cb8c8 100644 --- a/airtime_mvc/application/models/airtime/CcBlock.php +++ b/airtime_mvc/application/models/airtime/CcBlock.php @@ -86,8 +86,14 @@ class CcBlock extends BaseCcBlock { */ public function computeDbLength(PropelPDO $con) { - $stmt = $con->prepare('SELECT SUM(cliplength) FROM "cc_blockcontents" WHERE cc_blockcontents.BLOCK_ID = :p1'); - $stmt->bindValue(':p1', $this->getDbId()); + $sql = <<prepare($sql); + $stmt->bindValue(':b1', $this->getDbId()); $stmt->execute(); $length = $stmt->fetchColumn(); diff --git a/airtime_mvc/application/models/airtime/CcPlaylist.php b/airtime_mvc/application/models/airtime/CcPlaylist.php index d152cf61f..bfa1e5354 100644 --- a/airtime_mvc/application/models/airtime/CcPlaylist.php +++ b/airtime_mvc/application/models/airtime/CcPlaylist.php @@ -87,7 +87,13 @@ class CcPlaylist extends BaseCcPlaylist { */ public function computeDbLength(PropelPDO $con) { - $stmt = $con->prepare('SELECT SUM(cliplength) FROM "cc_playlistcontents" WHERE cc_playlistcontents.PLAYLIST_ID = :p1'); + $sql = <<prepare($sql); $stmt->bindValue(':p1', $this->getDbId()); $stmt->execute(); $length = $stmt->fetchColumn(); From a99191f4bd868f29d45cc2074884218c7b2bf391 Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 6 Nov 2012 11:14:40 -0500 Subject: [PATCH 07/19] CC-4669: Smart Blocks: Dynamic length of less than 1 hour shows 0.0 -fixed --- airtime_mvc/application/models/Block.php | 1 + 1 file changed, 1 insertion(+) diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index da1972f81..3aa0a1882 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -323,6 +323,7 @@ SQL; $hour = "00"; $mins = "00"; if ($modifier == "minutes") { + $mins = $value; if ($value >59) { $hour = intval($value/60); $mins = $value%60; From 2cbba6003729276a0665cd7fc28b6a8b37ac6119 Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 6 Nov 2012 11:54:24 -0500 Subject: [PATCH 08/19] CC-4673: Smart Block: Exception happens when create a smart block with 5 criteria -fixed --- .../application/views/scripts/form/smart-block-criteria.phtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml index 3c5ab4643..05f8bbb26 100644 --- a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml +++ b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml @@ -38,7 +38,7 @@ if ($j == $this->modRowMap[$i]-1 && $i < 25) { $n = $i+1; $nextIndex = $n."_0"; - } elseif ($j+1 < $this->modRowMap[$i]-1) { + } elseif ($j+1 <= $this->modRowMap[$i]-1) { $n = $j+1; $nextIndex = $i."_".$n; From de89686d484836ce062a6606e9a749eb42fda3ac Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 6 Nov 2012 12:03:49 -0500 Subject: [PATCH 09/19] CC-4536: Smart block criteria use AND logic, but additional modifiers use OR logic, without labels to show the difference -added comments --- .../views/scripts/form/smart-block-criteria.phtml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml index 05f8bbb26..1e95b6e04 100644 --- a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml +++ b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml @@ -29,10 +29,16 @@
- criteriasLength; $i++) {?> + criteriasLength; $i++) { + // modRowMap holds the number of modifier rows for each criteria element + // i.e. if we have 'Album contains 1' and 'Album contains 2' the modRowMap + // for Album is 2 + ?> modRowMap[$i]; $j++) { + // determine if logic label should be 'and' or 'or' if ($this->modRowMap[$i] > 1 && $j != $this->modRowMap[$i]-1) $logicLabel = 'or'; else $logicLabel = 'and'; + $disabled = $this->element->getElement("sp_criteria_field_".$i."_".$j)->getAttrib('disabled') == 'disabled'?true:false; // determine if the next row is disabled and only display the logic label if it isn't if ($j == $this->modRowMap[$i]-1 && $i < 25) { From e262d48eec36bf4ccedd25cf79de5d05d15b7cd1 Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 6 Nov 2012 12:17:45 -0500 Subject: [PATCH 10/19] CC-4675: Preferences: Error messages are hidden -fixed --- airtime_mvc/application/views/scripts/form/preferences.phtml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/views/scripts/form/preferences.phtml b/airtime_mvc/application/views/scripts/form/preferences.phtml index 1e1589117..9baf71cf5 100644 --- a/airtime_mvc/application/views/scripts/form/preferences.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences.phtml @@ -4,14 +4,14 @@ isSaas) { ?>

Email / Mail Server Settings

-
- isSaas ){?>
@@ -105,14 +104,13 @@ -
element->getElement('master_dj_connection_url')->setValue($this->master_dj_connection_url) ?> - isSaas && !$this->isDemo){?> + isDemo){?> Override  
@@ -121,7 +119,6 @@ OK RESET
- isSaas ){?>
@@ -150,14 +147,13 @@ -
element->getElement('live_dj_connection_url')->setValue($this->live_dj_connection_url) ?> - isSaas && !$this->isDemo ){?> + isDemo ){?> Override  
diff --git a/airtime_mvc/application/views/scripts/form/support-setting.phtml b/airtime_mvc/application/views/scripts/form/support-setting.phtml index f35a6eab1..ad15671f6 100644 --- a/airtime_mvc/application/views/scripts/form/support-setting.phtml +++ b/airtime_mvc/application/views/scripts/form/support-setting.phtml @@ -1,5 +1,4 @@
-isSaas ){?>
@@ -38,8 +37,7 @@
(In order to promote your station, "Send support feedback" must be enabled).

- -
;"> +
;">
-isSaas ){?>
Show me what I am sending @@ -182,5 +179,4 @@ Sourcefabric Privacy Policy
- diff --git a/airtime_mvc/application/views/scripts/menu.phtml b/airtime_mvc/application/views/scripts/menu.phtml index 0e6eb8dc1..f6f82c173 100644 --- a/airtime_mvc/application/views/scripts/menu.phtml +++ b/airtime_mvc/application/views/scripts/menu.phtml @@ -1,9 +1,3 @@ -