From 9293a26738afcf7fa01e2a515776dc251e7d429b Mon Sep 17 00:00:00 2001 From: james Date: Wed, 31 Oct 2012 12:05:17 -0400 Subject: [PATCH 1/2] CC-4639: Give an option to allow smart blocks to reuse tracks if not enough tracks meet the time limit - code optimazation --- .../controllers/PlaylistController.php | 2 +- airtime_mvc/application/models/Block.php | 27 +++++++++---------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/airtime_mvc/application/controllers/PlaylistController.php b/airtime_mvc/application/controllers/PlaylistController.php index 0d2ead443..38dbd4fd2 100644 --- a/airtime_mvc/application/controllers/PlaylistController.php +++ b/airtime_mvc/application/controllers/PlaylistController.php @@ -513,7 +513,7 @@ class PlaylistController extends Zend_Controller_Action } catch (BlockNotFoundException $e) { $this->playlistNotFound('block', true); } catch (Exception $e) { - Logging::info($e); + //Logging::info($e); $this->playlistUnknownError($e); } } diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index c0a3fe41f..57018ad5f 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -1113,7 +1113,12 @@ SQL; $this->saveSmartBlockCriteria($p_criteria); $insertList = $this->getListOfFilesUnderLimit(); $this->deleteAllFilesFromBlock(); - $this->addAudioClips(array_values($insertList)); + // constrcut id array + $ids = array(); + foreach ($insertList as $ele) { + $ids[] = $ele['id']; + } + $this->addAudioClips(array_values($ids)); // update length in playlist contents. $this->updateBlockLengthInAllPlaylist(); @@ -1157,7 +1162,7 @@ SQL; while ($iterator->valid()) { $id = $iterator->current()->getDbId(); $length = Application_Common_DateHelper::calculateLengthInSeconds($iterator->current()->getDbLength()); - $insertList[] = $id; + $insertList[] = array('id'=>$id, 'length'=>$length); $totalTime += $length; $totalItems++; @@ -1169,26 +1174,18 @@ SQL; $iterator->next(); } + $sizeOfInsert = count($insertList); + // if block is not full and reapeat_track is check, fill up more while (!$isBlockFull && $repeat == 1) { - if (!$iterator->valid()) { - $iterator->closeCursor(); - $info = $this->getListofFilesMeetCriteria(); - $files = $info['files']; - $files->getFirst(); - $iterator = $files->getIterator(); - } - $id = $iterator->current()->getDbId(); - $length = Application_Common_DateHelper::calculateLengthInSeconds($iterator->current()->getDbLength()); - $insertList[] = $id; - $totalTime += $length; + $randomEleKey = array_rand(array_slice($insertList, 0, $sizeOfInsert)); + $insertList[] = $insertList[$randomEleKey]; + $totalTime += $insertList[$randomEleKey]['length']; $totalItems++; if ((!is_null($limit['items']) && $limit['items'] == count($insertList)) || $totalItems > 500 || $totalTime > $limit['time']) { break; } - - $iterator->next(); } return $insertList; From 2e4d5ec14259eb7d7f63a42c5b0d3f93515d796a Mon Sep 17 00:00:00 2001 From: james Date: Wed, 31 Oct 2012 12:32:40 -0400 Subject: [PATCH 2/2] CC-4539: Advanced search: Sample rate searched on Hz, but search results shown in kHz - fixed --- airtime_mvc/application/models/Datatables.php | 6 +++--- airtime_mvc/public/js/airtime/library/library.js | 2 +- .../public/js/datatables/plugin/dataTables.columnFilter.js | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/airtime_mvc/application/models/Datatables.php b/airtime_mvc/application/models/Datatables.php index 65e7b1256..7545aec71 100644 --- a/airtime_mvc/application/models/Datatables.php +++ b/airtime_mvc/application/models/Datatables.php @@ -13,9 +13,9 @@ class Application_Model_Datatables if ($dbname == 'utime' || $dbname == 'mtime') { $input1 = isset($info[0])?Application_Common_DateHelper::ConvertToUtcDateTimeString($info[0]):null; $input2 = isset($info[1])?Application_Common_DateHelper::ConvertToUtcDateTimeString($info[1]):null; - } else if($dbname == 'bit_rate') { - $input1 = isset($info[0])?intval($info[0]) * 1000:null; - $input2 = isset($info[1])?intval($info[1]) * 1000:null; + } else if($dbname == 'bit_rate' || $dbname == 'sample_rate') { + $input1 = isset($info[0])?doubleval($info[0]) * 1000:null; + $input2 = isset($info[1])?doubleval($info[1]) * 1000:null; } else { $input1 = isset($info[0])?$info[0]:null; $input2 = isset($info[1])?$info[1]:null; diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index c50b2a375..6a9b8b459 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -1195,7 +1195,7 @@ var validationTypes = { "owner_id" : "s", "rating" : "i", "replay_gain" : "n", - "sample_rate" : "i", + "sample_rate" : "n", "track_title" : "s", "track_number" : "i", "info_url" : "s", diff --git a/airtime_mvc/public/js/datatables/plugin/dataTables.columnFilter.js b/airtime_mvc/public/js/datatables/plugin/dataTables.columnFilter.js index 4084fbbdb..80cb011cf 100644 --- a/airtime_mvc/public/js/datatables/plugin/dataTables.columnFilter.js +++ b/airtime_mvc/public/js/datatables/plugin/dataTables.columnFilter.js @@ -190,7 +190,7 @@ } else if (th.attr('id') == "length") { label = " hh:mm:ss.t"; } else if (th.attr('id') == "sample_rate") { - label = " Hz"; + label = " kHz"; } th.html(_fnRangeLabelPart(0));