libretime/legacy/application/controllers/EmbedController.php

98 lines
3.9 KiB
PHP

<?php
class EmbedController extends Zend_Controller_Action
{
public function init()
{
// translate widgets to station default language
$locale = Application_Model_Preference::GetDefaultLocale();
if ($locale) {
Application_Model_Locale::configureLocalization($locale);
}
}
/**
* This is the action that is called to insert the player onto a web page.
* It passes all the js and css files to the view, as well as all the
* stream customization information.
*
* The view for this action contains all the inline javascript needed to
* create the player.
*/
public function playerAction()
{
$this->view->layout()->disableLayout();
$request = $this->getRequest();
$this->view->playerhtml5_js = Assets::url('js/airtime/player/playerhtml5.js');
$this->view->jquery = Assets::url('js/libs/jquery-1.10.2.min.js');
$this->view->metadata_api_url = '/api/live-info';
$this->view->player_title = json_encode($this->view->escape($request->getParam('title')));
$this->view->jquery_i18n = Assets::url('js/i18n/jquery.i18n.js');
$styleParam = $request->getParam('style');
$player_style = isset($styleParam) ? $styleParam : 'basic';
if ($player_style == 'premium') {
$this->view->css = Assets::url('css/radio-page/premium_player.css');
} else {
$this->view->css = Assets::url('css/player.css');
}
$this->view->player_style = $player_style;
$stream = $request->getParam('stream');
$streamData = Application_Model_StreamSetting::getEnabledStreamData();
$availableMobileStreams = [];
$availableDesktopStreams = [];
if ($stream == 'auto') {
$this->view->playerMode = 'auto';
$this->view->streamURL = json_encode('');
foreach ($streamData as $s) {
if ($s['mobile']) {
array_push($availableMobileStreams, $s);
} elseif (!$s['mobile']) {
array_push($availableDesktopStreams, $s);
}
}
} elseif ($stream == 'file') {
$this->view->playerMode = 'file';
$this->view->streamURL = json_encode($request->getParam('file_url'));
$this->view->codec = $request->getParam('file_codec');
} elseif (!empty($stream)) {
$this->view->playerMode = 'manual';
$selectedStreamData = $streamData[$stream];
$this->view->streamURL = json_encode($selectedStreamData['url']);
$this->view->codec = $selectedStreamData['codec'];
}
$this->view->availableMobileStreams = json_encode($availableMobileStreams);
$this->view->availableDesktopStreams = json_encode($availableDesktopStreams);
}
public function weeklyProgramAction()
{
$this->view->layout()->disableLayout();
$request = $this->getRequest();
$this->view->angular = Config::getPublicUrl() . Assets::url('js/libs/angular.min.js');
$widgetStyle = $request->getParam('style');
if ($widgetStyle == 'premium') {
$this->view->widgetStyle = 'premium';
$this->view->css = Assets::url('css/embed/weekly-schedule-widget.css');
} else {
$this->view->widgetStyle = 'basic';
$this->view->css = Assets::url('css/embed/weekly-schedule-widget-basic.css');
}
$this->view->jquery = Assets::url('js/libs/jquery-1.8.3.min.js');
$weeklyScheduleData = WidgetHelper::getWeekInfoV2();
$this->view->schedule_data = json_encode($weeklyScheduleData);
$currentDay = new DateTime('now', new DateTimeZone(Application_Model_Preference::GetTimezone()));
// day of the month without leading zeros (1 to 31)
$this->view->currentDayOfMonth = $currentDay->format('j');
}
}