123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- <?php
- class AudiopreviewController extends Zend_Controller_Action
- {
- public function init()
- {
- $ajaxContext = $this->_helper->getHelper('AjaxContext');
- $ajaxContext->addActionContext('show-preview', 'json')
- ->addActionContext('audio-preview', 'json')
- ->addActionContext('get-show', 'json')
- ->addActionContext('playlist-preview', 'json')
- ->addActionContext('get-playlist', 'json')
- ->initContext();
- }
-
- public function audioPreviewAction()
- {
- $CC_CONFIG = Config::getConfig();
- $audioFileID = $this->_getParam('audioFileID');
- $audioFileArtist = $this->_getParam('audioFileArtist');
- $audioFileTitle = $this->_getParam('audioFileTitle');
- $type = $this->_getParam('type');
- $baseUrl = Application_Common_OsPath::getBaseDir();
- $this->view->headScript()->appendFile(
- $baseUrl.'js/airtime/audiopreview/preview_jplayer.js?'.$CC_CONFIG['airtime_version'],
- 'text/javascript');
- $this->view->headScript()->appendFile(
- $baseUrl.'js/jplayer/jplayer.playlist.min.js?'.$CC_CONFIG['airtime_version'],
- 'text/javascript');
- $this->view->headLink()->appendStylesheet(
- $baseUrl.'js/jplayer/skin/jplayer.airtime.audio.preview.css?'.$CC_CONFIG['airtime_version']);
- $this->_helper->layout->setLayout('audioPlayer');
- $logo = Application_Model_Preference::GetStationLogo();
- if ($logo) {
- $this->view->logo = "data:image/png;base64,$logo";
- } else {
- $this->view->logo = $baseUrl."css/images/airtime_logo_jp.png";
- }
- if ($type == "audioclip") {
- $uri = $baseUrl."api/get-media/file/".$audioFileID;
- $media = Application_Model_StoredFile::RecallById($audioFileID);
- $mime = $media->getPropelOrm()->getDbMime();
- } elseif ($type == "stream") {
- $webstream = CcWebstreamQuery::create()->findPk($audioFileID);
- $uri = $webstream->getDbUrl();
- $mime = $webstream->getDbMime();
- } else {
- throw new Exception("Unknown type for audio preview!.Type=$type");
- }
- $this->view->uri = $uri;
- $this->view->mime = $mime;
- $this->view->audioFileID = $audioFileID;
-
-
- $this->view->audioFileArtist = htmlspecialchars(urldecode($audioFileArtist));
- $this->view->audioFileTitle = htmlspecialchars(urldecode($audioFileTitle));
- $this->view->type = $type;
- $this->_helper->viewRenderer->setRender('audio-preview');
- }
-
- public function playlistPreviewAction()
- {
- $CC_CONFIG = Config::getConfig();
- $playlistIndex = $this->_getParam('playlistIndex');
- $playlistID = $this->_getParam('playlistID');
- $baseUrl = Application_Common_OsPath::getBaseDir();
- $this->view->headScript()->appendFile($baseUrl.'js/airtime/audiopreview/preview_jplayer.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
- $this->view->headScript()->appendFile($baseUrl.'js/jplayer/jplayer.playlist.min.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
- $this->view->headLink()->appendStylesheet($baseUrl.'js/jplayer/skin/jplayer.airtime.audio.preview.css?'.$CC_CONFIG['airtime_version']);
- $this->_helper->layout->setLayout('audioPlayer');
- $logo = Application_Model_Preference::GetStationLogo();
- if ($logo) {
- $this->view->logo = "data:image/png;base64,$logo";
- } else {
- $this->view->logo = $baseUrl."css/images/airtime_logo_jp.png";
- }
- $this->view->playlistIndex= $playlistIndex;
- $this->view->playlistID = $playlistID;
- $this->_helper->viewRenderer->setRender('audio-preview');
- }
- public function blockPreviewAction()
- {
- $CC_CONFIG = Config::getConfig();
- $blockIndex = $this->_getParam('blockIndex');
- $blockId = $this->_getParam('blockId');
- $baseUrl = Application_Common_OsPath::getBaseDir();
- $this->view->headScript()->appendFile($baseUrl.'js/airtime/audiopreview/preview_jplayer.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
- $this->view->headScript()->appendFile($baseUrl.'js/jplayer/jplayer.playlist.min.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
- $this->view->headLink()->appendStylesheet($baseUrl.'js/jplayer/skin/jplayer.airtime.audio.preview.css?'.$CC_CONFIG['airtime_version']);
- $this->_helper->layout->setLayout('audioPlayer');
- $logo = Application_Model_Preference::GetStationLogo();
- if ($logo) {
- $this->view->logo = "data:image/png;base64,$logo";
- } else {
- $this->view->logo = $baseUrl."css/images/airtime_logo_jp.png";
- }
- $this->view->blockIndex= $blockIndex;
- $this->view->blockId = $blockId;
- $this->_helper->viewRenderer->setRender('audio-preview');
- }
- public function getBlockAction()
- {
-
- $this->view->layout()->disableLayout();
- $this->_helper->viewRenderer->setNoRender(true);
- $blockId = $this->_getParam('blockId');
- if (!isset($blockId)) {
- return;
- }
- $bl = new Application_Model_Block($blockId);
- $result = array();
- foreach ($bl->getContents(true) as $ele) {
- $result[] = $this->createElementMap($ele);
- }
- $this->_helper->json($result);
- }
-
- public function getPlaylistAction()
- {
-
- $this->view->layout()->disableLayout();
- $this->_helper->viewRenderer->setNoRender(true);
- $playlistID = $this->_getParam('playlistID');
- if (!isset($playlistID)) {
- return;
- }
- $pl = new Application_Model_Playlist($playlistID);
- $result = Array();
- foreach ($pl->getContents(true) as $ele) {
- if ($ele['type'] == 2) {
-
- $bl = new Application_Model_Block($ele['item_id']);
- if ($bl->isStatic()) {
- foreach ($bl->getContents(true) as $track) {
- $result[] = $this->createElementMap($track);
- }
- }
- } else {
- $result[] = $this->createElementMap($ele);
- }
- }
- $this->_helper->json($result);
- }
- private function createElementMap($track)
- {
- $baseUrl = Application_Common_OsPath::getBaseDir();
- $elementMap = array( 'element_title' => isset($track['track_title'])?$track['track_title']:"",
- 'element_artist' => isset($track['artist_name'])?$track['artist_name']:"",
- 'element_id' => isset($track['id'])?$track['id']:"",
- 'element_position' => isset($track['position'])?$track['position']:"",
- 'mime' => isset($track['mime'])?$track['mime']:""
- );
-
- if ($track['type'] == 'static') {
- $track['type'] = 0;
- }
- $elementMap['type'] = $track['type'];
- if ($track['type'] == 0) {
- $mime = $track['mime'];
-
- if (strtolower($mime) === 'audio/mp3') {
- $elementMap['element_mp3'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/ogg') {
- $elementMap['element_oga'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/vorbis') {
- $elementMap['element_oga'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/mp4') {
- $elementMap['element_m4a'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/wav') {
- $elementMap['element_wav'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/x-wav') {
- $elementMap['element_wav'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/x-flac') {
- $elementMap['element_flac'] = $track['item_id'];
- } else {
- throw new Exception("Unknown file type: $mime");
- }
- $elementMap['uri'] = $baseUrl."api/get-media/file/".$track['item_id'];
- } else {
- $elementMap['uri'] = $track['path'];
- }
- return $elementMap;
- }
-
- public function showPreviewAction()
- {
- $CC_CONFIG = Config::getConfig();
- $showID = $this->_getParam('showID');
- $showIndex = $this->_getParam('showIndex');
- $baseUrl = Application_Common_OsPath::getBaseDir();
- $this->view->headScript()->appendFile($baseUrl.'js/airtime/audiopreview/preview_jplayer.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
- $this->view->headScript()->appendFile($baseUrl.'js/jplayer/jplayer.playlist.min.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
- $this->view->headLink()->appendStylesheet($baseUrl.'js/jplayer/skin/jplayer.airtime.audio.preview.css?'.$CC_CONFIG['airtime_version']);
- $this->_helper->layout->setLayout('audioPlayer');
- $logo = Application_Model_Preference::GetStationLogo();
- if ($logo) {
- $this->view->logo = "data:image/png;base64,$logo";
- } else {
- $this->view->logo = $baseUrl."css/images/airtime_logo_jp.png";
- }
- $this->view->showID = $showID;
- $this->view->showIndex = $showIndex;
- $this->_helper->viewRenderer->setRender('audio-preview');
- }
-
- public function getShowAction()
- {
- $baseUrl = Application_Common_OsPath::getBaseDir();
-
- $this->view->layout()->disableLayout();
- $this->_helper->viewRenderer->setNoRender(true);
- $showID = $this->_getParam('showID');
- if (!isset($showID)) {
- return;
- }
- $showInstance = new Application_Model_ShowInstance($showID);
- $result = array();
- $position = 0;
- foreach ($showInstance->getShowListContent() as $track) {
- $elementMap = array(
- 'element_title' => isset($track['track_title']) ? $track['track_title'] : "",
- 'element_artist' => isset($track['creator']) ? $track['creator'] : "",
- 'element_position' => $position,
- 'element_id' => ++$position,
- 'mime' => isset($track['mime'])?$track['mime']:""
- );
- $elementMap['type'] = $track['type'];
- if ($track['type'] == 0) {
- $mime = $track['mime'];
- if (strtolower($mime) === 'audio/mp3') {
- $elementMap['element_mp3'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/ogg') {
- $elementMap['element_oga'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/vorbis') {
- $elementMap['element_oga'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/mp4') {
- $elementMap['element_m4a'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/wav') {
- $elementMap['element_wav'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/x-wav') {
- $elementMap['element_wav'] = $track['item_id'];
- } elseif (strtolower($mime) === 'audio/x-flac') {
- $elementMap['element_flac'] = $track['item_id'];
- } else {
- throw new Exception("Unknown file type: $mime");
- }
- $elementMap['uri'] = $baseUrl."api/get-media/file/".$track['item_id'];
- } else {
- $elementMap['uri'] = $track['filepath'];
- }
- $result[] = $elementMap;
- }
- $this->_helper->json($result);
- }
- }
|