removed wrong comments

This commit is contained in:
Rudi Grinberg 2012-07-16 10:31:00 -04:00
commit 3e24b71436
49 changed files with 2098 additions and 1978 deletions

View file

@ -5,6 +5,7 @@ class ApiController extends Zend_Controller_Action
public function init() public function init()
{ {
$this->checkAuth();
/* Initialize action controller here */ /* Initialize action controller here */
$context = $this->_helper->getHelper('contextSwitch'); $context = $this->_helper->getHelper('contextSwitch');
$context->addActionContext('version', 'json') $context->addActionContext('version', 'json')
@ -67,8 +68,6 @@ class ApiController extends Zend_Controller_Action
*/ */
public function versionAction() public function versionAction()
{ {
$this->checkAuth();
// disable the view and the layout // disable the view and the layout
$this->view->layout()->disableLayout(); $this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true); $this->_helper->viewRenderer->setNoRender(true);
@ -81,13 +80,15 @@ class ApiController extends Zend_Controller_Action
* Sets up and send init values used in the Calendar. * Sets up and send init values used in the Calendar.
* This is only being used by schedule.js at the moment. * This is only being used by schedule.js at the moment.
*/ */
public function calendarInitAction(){ public function calendarInitAction()
{
$this->view->layout()->disableLayout(); $this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true); $this->_helper->viewRenderer->setNoRender(true);
if (is_null(Zend_Auth::getInstance()->getStorage()->read())) { if (is_null(Zend_Auth::getInstance()->getStorage()->read())) {
header('HTTP/1.0 401 Unauthorized'); header('HTTP/1.0 401 Unauthorized');
print 'You are not allowed to access this resource.'; print 'You are not allowed to access this resource.';
return; return;
} }
@ -108,8 +109,6 @@ class ApiController extends Zend_Controller_Action
*/ */
public function getMediaAction() public function getMediaAction()
{ {
$this->checkAuth();
// disable the view and the layout // disable the view and the layout
$this->view->layout()->disableLayout(); $this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true); $this->_helper->viewRenderer->setNoRender(true);
@ -117,11 +116,9 @@ class ApiController extends Zend_Controller_Action
$fileID = $this->_getParam("file"); $fileID = $this->_getParam("file");
$file_id = substr($fileID, 0, strpos($fileID, ".")); $file_id = substr($fileID, 0, strpos($fileID, "."));
if (ctype_alnum($file_id) && strlen($file_id) == 32) if (ctype_alnum($file_id) && strlen($file_id) == 32) {
{
$media = Application_Model_StoredFile::RecallByGunid($file_id); $media = Application_Model_StoredFile::RecallByGunid($file_id);
if ( $media != null ) if ($media != null) {
{
$filepath = $media->getFilePath(); $filepath = $media->getFilePath();
if (is_file($filepath)) { if (is_file($filepath)) {
@ -166,6 +163,7 @@ class ApiController extends Zend_Controller_Action
} }
} }
} }
return; return;
} }
@ -181,41 +179,33 @@ class ApiController extends Zend_Controller_Action
* @link https://groups.google.com/d/msg/jplayer/nSM2UmnSKKA/Hu76jDZS4xcJ * @link https://groups.google.com/d/msg/jplayer/nSM2UmnSKKA/Hu76jDZS4xcJ
* @link http://php.net/manual/en/function.readfile.php#86244 * @link http://php.net/manual/en/function.readfile.php#86244
*/ */
function smartReadFile($location, $mimeType = 'audio/mp3') public function smartReadFile($location, $mimeType = 'audio/mp3')
{ {
$this->checkAuth();
$size= filesize($location); $size= filesize($location);
$time= date('r', filemtime($location)); $time= date('r', filemtime($location));
$fm = @fopen($location, 'rb'); $fm = @fopen($location, 'rb');
if (!$fm) if (!$fm) {
{
header ("HTTP/1.1 505 Internal server error"); header ("HTTP/1.1 505 Internal server error");
return; return;
} }
$begin= 0; $begin= 0;
$end= $size - 1; $end= $size - 1;
if (isset($_SERVER['HTTP_RANGE'])) if (isset($_SERVER['HTTP_RANGE'])) {
{ if (preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER['HTTP_RANGE'], $matches)) {
if (preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER['HTTP_RANGE'], $matches))
{
$begin = intval($matches[1]); $begin = intval($matches[1]);
if (!empty($matches[2])) if (!empty($matches[2])) {
{
$end = intval($matches[2]); $end = intval($matches[2]);
} }
} }
} }
if (isset($_SERVER['HTTP_RANGE'])) if (isset($_SERVER['HTTP_RANGE'])) {
{
header('HTTP/1.1 206 Partial Content'); header('HTTP/1.1 206 Partial Content');
} } else {
else
{
header('HTTP/1.1 200 OK'); header('HTTP/1.1 200 OK');
} }
header("Content-Type: $mimeType"); header("Content-Type: $mimeType");
@ -223,8 +213,7 @@ class ApiController extends Zend_Controller_Action
header('Pragma: no-cache'); header('Pragma: no-cache');
header('Accept-Ranges: bytes'); header('Accept-Ranges: bytes');
header('Content-Length:' . (($end - $begin) + 1)); header('Content-Length:' . (($end - $begin) + 1));
if (isset($_SERVER['HTTP_RANGE'])) if (isset($_SERVER['HTTP_RANGE'])) {
{
header("Content-Range: bytes $begin-$end/$size"); header("Content-Range: bytes $begin-$end/$size");
} }
header("Content-Transfer-Encoding: binary"); header("Content-Transfer-Encoding: binary");
@ -238,8 +227,7 @@ class ApiController extends Zend_Controller_Action
$cur = $begin; $cur = $begin;
fseek($fm, $begin, 0); fseek($fm, $begin, 0);
while(!feof($fm) && $cur <= $end && (connection_status() == 0)) while (!feof($fm) && $cur <= $end && (connection_status() == 0)) {
{
echo fread($fm, min(1024 * 16, ($end - $cur) + 1)); echo fread($fm, min(1024 * 16, ($end - $cur) + 1));
$cur += 1024 * 16; $cur += 1024 * 16;
} }
@ -342,8 +330,6 @@ class ApiController extends Zend_Controller_Action
public function scheduleAction() public function scheduleAction()
{ {
$this->checkAuth();
// disable the view and the layout // disable the view and the layout
$this->view->layout()->disableLayout(); $this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true); $this->_helper->viewRenderer->setNoRender(true);
@ -354,8 +340,6 @@ class ApiController extends Zend_Controller_Action
public function notifyMediaItemStartPlayAction() public function notifyMediaItemStartPlayAction()
{ {
$this->checkAuth();
// disable the view and the layout // disable the view and the layout
$this->view->layout()->disableLayout(); $this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true); $this->_helper->viewRenderer->setNoRender(true);
@ -368,8 +352,6 @@ class ApiController extends Zend_Controller_Action
public function recordedShowsAction() public function recordedShowsAction()
{ {
$this->checkAuth();
$today_timestamp = date("Y-m-d H:i:s"); $today_timestamp = date("Y-m-d H:i:s");
$now = new DateTime($today_timestamp); $now = new DateTime($today_timestamp);
$end_timestamp = $now->add(new DateInterval("PT2H")); $end_timestamp = $now->add(new DateInterval("PT2H"));
@ -393,8 +375,6 @@ class ApiController extends Zend_Controller_Action
public function uploadFileAction() public function uploadFileAction()
{ {
$this->checkAuth();
$upload_dir = ini_get("upload_tmp_dir"); $upload_dir = ini_get("upload_tmp_dir");
$tempFilePath = Application_Model_StoredFile::uploadFile($upload_dir); $tempFilePath = Application_Model_StoredFile::uploadFile($upload_dir);
$tempFileName = basename($tempFilePath); $tempFileName = basename($tempFilePath);
@ -409,8 +389,6 @@ class ApiController extends Zend_Controller_Action
public function uploadRecordedAction() public function uploadRecordedAction()
{ {
$this->checkAuth();
//this file id is the recording for this show instance. //this file id is the recording for this show instance.
$show_instance_id = $this->_getParam('showinstanceid'); $show_instance_id = $this->_getParam('showinstanceid');
$file_id = $this->_getParam('fileid'); $file_id = $this->_getParam('fileid');
@ -456,8 +434,7 @@ class ApiController extends Zend_Controller_Action
$new_name[] = $filename_parts[count($filename_parts)-1]; $new_name[] = $filename_parts[count($filename_parts)-1];
$tmpTitle = implode("-", $new_name); $tmpTitle = implode("-", $new_name);
} } else {
else {
$tmpTitle = $file->getName(); $tmpTitle = $file->getName();
} }
@ -465,16 +442,14 @@ class ApiController extends Zend_Controller_Action
$file->setMetadataValue('MDATA_KEY_CREATOR', "Airtime Show Recorder"); $file->setMetadataValue('MDATA_KEY_CREATOR', "Airtime Show Recorder");
$file->setMetadataValue('MDATA_KEY_TRACKNUMBER', $show_instance_id); $file->setMetadataValue('MDATA_KEY_TRACKNUMBER', $show_instance_id);
if (!$showCanceled && Application_Model_Preference::GetAutoUploadRecordedShowToSoundcloud()) if (!$showCanceled && Application_Model_Preference::GetAutoUploadRecordedShowToSoundcloud()) {
{
$id = $file->getId(); $id = $file->getId();
$res = exec("/usr/lib/airtime/utils/soundcloud-uploader $id > /dev/null &"); $res = exec("/usr/lib/airtime/utils/soundcloud-uploader $id > /dev/null &");
} }
} }
public function mediaMonitorSetupAction() { public function mediaMonitorSetupAction()
$this->checkAuth(); {
// disable the view and the layout // disable the view and the layout
$this->view->layout()->disableLayout(); $this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true); $this->_helper->viewRenderer->setNoRender(true);
@ -491,9 +466,6 @@ class ApiController extends Zend_Controller_Action
public function dispatchMetaDataAction($md, $mode) public function dispatchMetaDataAction($md, $mode)
{ {
// NOTE : if you are using this method. Make sure you've checked authorization
// in its caller because this method does not do checkAuth
// update import timestamp
Application_Model_Preference::SetImportTimestamp(); Application_Model_Preference::SetImportTimestamp();
if ($mode == "create") { if ($mode == "create") {
$filepath = $md['MDATA_KEY_FILEPATH']; $filepath = $md['MDATA_KEY_FILEPATH'];
@ -568,9 +540,8 @@ class ApiController extends Zend_Controller_Action
return $file->getId(); return $file->getId();
} }
public function reloadMetadataGroupAction() { public function reloadMetadataGroupAction()
# reload-metadata-group {
$this->checkAuth();
$request = $this->getRequest(); $request = $this->getRequest();
//extract all file metadata params from the request. //extract all file metadata params from the request.
//The value is a json encoded hash that has all the information related to this action //The value is a json encoded hash that has all the information related to this action
@ -589,9 +560,8 @@ class ApiController extends Zend_Controller_Action
die(json_encode( array('successes' => 19, 'fails' => 123) )); die(json_encode( array('successes' => 19, 'fails' => 123) ));
} }
public function reloadMetadataAction() { public function reloadMetadataAction()
$this->checkAuth(); {
$request = $this->getRequest(); $request = $this->getRequest();
$mode = $request->getParam('mode'); $mode = $request->getParam('mode');
@ -616,12 +586,12 @@ class ApiController extends Zend_Controller_Action
$file = Application_Model_StoredFile::RecallByFilepath($filepath); $file = Application_Model_StoredFile::RecallByFilepath($filepath);
if (is_null($file)) { if (is_null($file)) {
$file = Application_Model_StoredFile::Insert($md); $file = Application_Model_StoredFile::Insert($md);
} } else {
else {
// path already exist // path already exist
if ($file->getFileExistsFlag()) { if ($file->getFileExistsFlag()) {
// file marked as exists // file marked as exists
$this->view->error = "File already exists in Airtime."; $this->view->error = "File already exists in Airtime.";
return; return;
} else { } else {
// file marked as not exists // file marked as not exists
@ -629,8 +599,7 @@ class ApiController extends Zend_Controller_Action
$file->setMetadata($md); $file->setMetadata($md);
} }
} }
} } else if ($mode == "modify") {
else if ($mode == "modify") {
$filepath = $md['MDATA_KEY_FILEPATH']; $filepath = $md['MDATA_KEY_FILEPATH'];
//$filepath = str_replace("\\", "", $filepath); //$filepath = str_replace("\\", "", $filepath);
$file = Application_Model_StoredFile::RecallByFilepath($filepath); $file = Application_Model_StoredFile::RecallByFilepath($filepath);
@ -638,41 +607,38 @@ class ApiController extends Zend_Controller_Action
//File is not in database anymore. //File is not in database anymore.
if (is_null($file)) { if (is_null($file)) {
$this->view->error = "File does not exist in Airtime."; $this->view->error = "File does not exist in Airtime.";
return; return;
} } else {
//Updating a metadata change. //Updating a metadata change.
else {
$file->setMetadata($md); $file->setMetadata($md);
} }
} } else if ($mode == "moved") {
else if ($mode == "moved") {
$md5 = $md['MDATA_KEY_MD5']; $md5 = $md['MDATA_KEY_MD5'];
$file = Application_Model_StoredFile::RecallByMd5($md5); $file = Application_Model_StoredFile::RecallByMd5($md5);
if (is_null($file)) { if (is_null($file)) {
$this->view->error = "File doesn't exist in Airtime."; $this->view->error = "File doesn't exist in Airtime.";
return; return;
} } else {
else {
$filepath = $md['MDATA_KEY_FILEPATH']; $filepath = $md['MDATA_KEY_FILEPATH'];
//$filepath = str_replace("\\", "", $filepath); //$filepath = str_replace("\\", "", $filepath);
$file->setFilePath($filepath); $file->setFilePath($filepath);
} }
} } else if ($mode == "delete") {
else if ($mode == "delete") {
$filepath = $md['MDATA_KEY_FILEPATH']; $filepath = $md['MDATA_KEY_FILEPATH'];
//$filepath = str_replace("\\", "", $filepath); //$filepath = str_replace("\\", "", $filepath);
$file = Application_Model_StoredFile::RecallByFilepath($filepath); $file = Application_Model_StoredFile::RecallByFilepath($filepath);
if (is_null($file)) { if (is_null($file)) {
$this->view->error = "File doesn't exist in Airtime."; $this->view->error = "File doesn't exist in Airtime.";
return; return;
} } else {
else {
$file->deleteByMediaMonitor(); $file->deleteByMediaMonitor();
} }
} } else if ($mode == "delete_dir") {
else if ($mode == "delete_dir") {
$filepath = $md['MDATA_KEY_FILEPATH']; $filepath = $md['MDATA_KEY_FILEPATH'];
//$filepath = str_replace("\\", "", $filepath); //$filepath = str_replace("\\", "", $filepath);
$files = Application_Model_StoredFile::RecallByPartialFilepath($filepath); $files = Application_Model_StoredFile::RecallByPartialFilepath($filepath);
@ -680,23 +646,22 @@ class ApiController extends Zend_Controller_Action
foreach ($files as $file) { foreach ($files as $file) {
$file->deleteByMediaMonitor(); $file->deleteByMediaMonitor();
} }
return; return;
} }
$this->view->id = $file->getId(); $this->view->id = $file->getId();
} }
public function listAllFilesAction() { public function listAllFilesAction()
$this->checkAuth(); {
$request = $this->getRequest(); $request = $this->getRequest();
$dir_id = $request->getParam('dir_id'); $dir_id = $request->getParam('dir_id');
$this->view->files = Application_Model_StoredFile::listAllFiles($dir_id); $this->view->files = Application_Model_StoredFile::listAllFiles($dir_id);
} }
public function listAllWatchedDirsAction() { public function listAllWatchedDirsAction()
$this->checkAuth(); {
$request = $this->getRequest(); $request = $this->getRequest();
$result = array(); $result = array();
@ -713,45 +678,40 @@ class ApiController extends Zend_Controller_Action
$this->view->dirs = $result; $this->view->dirs = $result;
} }
public function addWatchedDirAction() { public function addWatchedDirAction()
$this->checkAuth(); {
$request = $this->getRequest(); $request = $this->getRequest();
$path = base64_decode($request->getParam('path')); $path = base64_decode($request->getParam('path'));
$this->view->msg = Application_Model_MusicDir::addWatchedDir($path); $this->view->msg = Application_Model_MusicDir::addWatchedDir($path);
} }
public function removeWatchedDirAction() { public function removeWatchedDirAction()
$this->checkAuth(); {
$request = $this->getRequest(); $request = $this->getRequest();
$path = base64_decode($request->getParam('path')); $path = base64_decode($request->getParam('path'));
$this->view->msg = Application_Model_MusicDir::removeWatchedDir($path); $this->view->msg = Application_Model_MusicDir::removeWatchedDir($path);
} }
public function setStorageDirAction() { public function setStorageDirAction()
$this->checkAuth(); {
$request = $this->getRequest(); $request = $this->getRequest();
$path = base64_decode($request->getParam('path')); $path = base64_decode($request->getParam('path'));
$this->view->msg = Application_Model_MusicDir::setStorDir($path); $this->view->msg = Application_Model_MusicDir::setStorDir($path);
} }
public function getStreamSettingAction() { public function getStreamSettingAction()
$this->checkAuth(); {
$request = $this->getRequest(); $request = $this->getRequest();
$info = Application_Model_StreamSetting::getStreamSetting(); $info = Application_Model_StreamSetting::getStreamSetting();
$this->view->msg = $info; $this->view->msg = $info;
} }
public function statusAction() { public function statusAction()
$this->checkAuth(); {
$request = $this->getRequest(); $request = $this->getRequest();
$getDiskInfo = $request->getParam('diskinfo') == "true"; $getDiskInfo = $request->getParam('diskinfo') == "true";
@ -773,7 +733,8 @@ class ApiController extends Zend_Controller_Action
$this->view->status = $status; $this->view->status = $status;
} }
public function registerComponentAction(){ public function registerComponentAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$component = $request->getParam('component'); $component = $request->getParam('component');
@ -783,7 +744,8 @@ class ApiController extends Zend_Controller_Action
Application_Model_ServiceRegister::Register($component, $remoteAddr); Application_Model_ServiceRegister::Register($component, $remoteAddr);
} }
public function updateLiquidsoapStatusAction(){ public function updateLiquidsoapStatusAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$msg = $request->getParam('msg'); $msg = $request->getParam('msg');
@ -793,7 +755,8 @@ class ApiController extends Zend_Controller_Action
Application_Model_StreamSetting::setLiquidsoapError($stream_id, $msg, $boot_time); Application_Model_StreamSetting::setLiquidsoapError($stream_id, $msg, $boot_time);
} }
public function updateSourceStatusAction(){ public function updateSourceStatusAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$msg = $request->getParam('msg'); $msg = $request->getParam('msg');
@ -819,9 +782,8 @@ class ApiController extends Zend_Controller_Action
} }
// handles addition/deletion of mount point which watched dirs reside // handles addition/deletion of mount point which watched dirs reside
public function updateFileSystemMountAction(){ public function updateFileSystemMountAction()
$this->checkAuth(); {
$request = $this->getRequest(); $request = $this->getRequest();
$params = $request->getParams(); $params = $request->getParams();
@ -875,7 +837,6 @@ class ApiController extends Zend_Controller_Action
$f->delete(); $f->delete();
} }
} }
if ($watchDir) { if ($watchDir) {
Application_Model_MusicDir::removeWatchedDir($rd, false); Application_Model_MusicDir::removeWatchedDir($rd, false);
} }
@ -887,8 +848,6 @@ class ApiController extends Zend_Controller_Action
// handles case where watched dir is missing // handles case where watched dir is missing
public function handleWatchedDirMissingAction() public function handleWatchedDirMissingAction()
{ {
$this->checkAuth();
$request = $this->getRequest(); $request = $this->getRequest();
$dir = base64_decode($request->getParam('dir')); $dir = base64_decode($request->getParam('dir'));
@ -900,8 +859,6 @@ class ApiController extends Zend_Controller_Action
* out a message to pypo that a potential change has been made. */ * out a message to pypo that a potential change has been made. */
public function rabbitmqDoPushAction() public function rabbitmqDoPushAction()
{ {
$this->checkAuth();
$request = $this->getRequest(); $request = $this->getRequest();
Logging::log("Notifying RabbitMQ to send message to pypo"); Logging::log("Notifying RabbitMQ to send message to pypo");
@ -924,8 +881,6 @@ class ApiController extends Zend_Controller_Action
/* This is used but Liquidsoap to check authentication of live streams*/ /* This is used but Liquidsoap to check authentication of live streams*/
public function checkLiveStreamAuthAction() public function checkLiveStreamAuthAction()
{ {
$this->checkAuth();
$request = $this->getRequest(); $request = $this->getRequest();
$username = $request->getParam('username'); $username = $request->getParam('username');
@ -962,6 +917,7 @@ class ApiController extends Zend_Controller_Action
$h = new Application_Model_User($host['subjs_id']); $h = new Application_Model_User($host['subjs_id']);
if ($username == $h->getLogin() && md5($password) == $h->getPassword()) { if ($username == $h->getLogin() && md5($password) == $h->getPassword()) {
$this->view->msg = true; $this->view->msg = true;
return; return;
} }
} }
@ -988,15 +944,36 @@ class ApiController extends Zend_Controller_Action
* out a message to pypo that a potential change has been made. */ * out a message to pypo that a potential change has been made. */
public function getFilesWithoutReplayGainAction() public function getFilesWithoutReplayGainAction()
{ {
$this->checkAuth();
// disable the view and the layout // disable the view and the layout
$this->view->layout()->disableLayout(); $this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$dir_id = $this->_getParam('dir_id'); $dir_id = $this->_getParam('dir_id');
//connect to db and get get sql //connect to db and get get sql
$this->view->rows = Application_Model_StoredFile::listAllFiles2($dir_id, 0); $rows = Application_Model_StoredFile::listAllFiles2($dir_id, 100);
} echo json_encode($rows);
} }
public function updateReplayGainValueAction()
{
$this->checkAuth();
// disable layout
$this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$request = $this->getRequest();
$data = json_decode($request->getParam('data'));
foreach ($data as $pair) {
list($id, $gain) = $pair;
$file = Application_Model_StoredFile::Recall($p_id = $id)->getPropelOrm();
Logging::log("Setting $gain for file id $id");
$file->setDbReplayGain($gain);
$file->save();
}
}
}

View file

@ -84,7 +84,8 @@ class AudiopreviewController extends Zend_Controller_Action
/** /**
*Function will load and return the contents of the requested playlist. *Function will load and return the contents of the requested playlist.
*/ */
public function getPlaylistAction(){ public function getPlaylistAction()
{
// disable the view and the layout // disable the view and the layout
$this->view->layout()->disableLayout(); $this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true); $this->_helper->viewRenderer->setNoRender(true);

View file

@ -16,7 +16,8 @@ class DashboardController extends Zend_Controller_Action
// action body // action body
} }
public function disconnectSourceAction(){ public function disconnectSourceAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$sourcename = $request->getParam('sourcename'); $sourcename = $request->getParam('sourcename');
@ -41,7 +42,8 @@ class DashboardController extends Zend_Controller_Action
} }
} }
public function switchSourceAction(){ public function switchSourceAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$sourcename = $this->_getParam('sourcename'); $sourcename = $this->_getParam('sourcename');
$current_status = $this->_getParam('status'); $current_status = $this->_getParam('status');
@ -78,8 +80,7 @@ class DashboardController extends Zend_Controller_Action
Application_Model_LiveLog::SetNewLogTime($sourcename == 'scheduled_play'?'S':'L', Application_Model_LiveLog::SetNewLogTime($sourcename == 'scheduled_play'?'S':'L',
new DateTime("now", new DateTimeZone('UTC'))); new DateTime("now", new DateTimeZone('UTC')));
} }
} } else {
else{
if ($source_connected) { if ($source_connected) {
$this->view->error = "You don't have permission to switch source."; $this->view->error = "You don't have permission to switch source.";
} else { } else {
@ -92,8 +93,8 @@ class DashboardController extends Zend_Controller_Action
} }
} }
public function switchOffSource(){ public function switchOffSource()
{
} }
public function streamPlayerAction() public function streamPlayerAction()
@ -125,4 +126,3 @@ class DashboardController extends Zend_Controller_Action
} }
} }

View file

@ -43,6 +43,7 @@ class ErrorController extends Zend_Controller_Action
return false; return false;
} }
$log = $bootstrap->getResource('Log'); $log = $bootstrap->getResource('Log');
return $log; return $log;
} }
@ -51,8 +52,4 @@ class ErrorController extends Zend_Controller_Action
// action body // action body
} }
} }

View file

@ -19,10 +19,3 @@ class IndexController extends Zend_Controller_Action
} }
} }

View file

@ -63,8 +63,7 @@ class LibraryController extends Zend_Controller_Action
$url = $file->getRelativeFileUrl($baseUrl).'/download/true'; $url = $file->getRelativeFileUrl($baseUrl).'/download/true';
$menu["download"] = array("name" => "Download", "icon" => "download", "url" => $url); $menu["download"] = array("name" => "Download", "icon" => "download", "url" => $url);
} } elseif ($type === "playlist") {
else if ($type === "playlist") {
$playlist = new Application_Model_Playlist($id); $playlist = new Application_Model_Playlist($id);
if ($this->pl_sess->id !== $id && $screen == "playlist") { if ($this->pl_sess->id !== $id && $screen == "playlist") {
if ($isAdminOrPM || $playlist->getCreatorId() == $user->getId()) { if ($isAdminOrPM || $playlist->getCreatorId() == $user->getId()) {
@ -76,7 +75,6 @@ class LibraryController extends Zend_Controller_Action
} }
} }
//SOUNDCLOUD MENU OPTIONS //SOUNDCLOUD MENU OPTIONS
if ($type === "audioclip" && Application_Model_Preference::GetUploadToSoundcloudOption()) { if ($type === "audioclip" && Application_Model_Preference::GetUploadToSoundcloudOption()) {
@ -95,8 +93,7 @@ class LibraryController extends Zend_Controller_Action
if (!is_null($scid)) { if (!is_null($scid)) {
$text = "Re-upload to SoundCloud"; $text = "Re-upload to SoundCloud";
} } else {
else {
$text = "Upload to SoundCloud"; $text = "Upload to SoundCloud";
} }
@ -123,8 +120,7 @@ class LibraryController extends Zend_Controller_Action
if ($media["type"] === "audioclip") { if ($media["type"] === "audioclip") {
$files[] = intval($media["id"]); $files[] = intval($media["id"]);
} } elseif ($media["type"] === "playlist") {
else if ($media["type"] === "playlist") {
$playlists[] = intval($media["id"]); $playlists[] = intval($media["id"]);
} }
} }
@ -147,6 +143,7 @@ class LibraryController extends Zend_Controller_Action
} }
if (!$hasPermission) { if (!$hasPermission) {
$this->view->message = "You don't have a permission to delete all playlists/files that are selected."; $this->view->message = "You don't have a permission to delete all playlists/files that are selected.";
return; return;
} else { } else {
Application_Model_Playlist::DeletePlaylists($playlists); Application_Model_Playlist::DeletePlaylists($playlists);
@ -186,11 +183,9 @@ class LibraryController extends Zend_Controller_Action
if ($scid == "-2") { if ($scid == "-2") {
$data['track_title'] .= '<span class="small-icon progress"/>'; $data['track_title'] .= '<span class="small-icon progress"/>';
} } elseif ($scid == "-3") {
else if ($scid == "-3"){
$data['track_title'] .= '<span class="small-icon sc-error"/>'; $data['track_title'] .= '<span class="small-icon sc-error"/>';
} } elseif (!is_null($scid)) {
else if (!is_null($scid)){
$data['track_title'] .= '<span class="small-icon soundcloud"/>'; $data['track_title'] .= '<span class="small-icon soundcloud"/>';
} }
} }
@ -266,8 +261,7 @@ class LibraryController extends Zend_Controller_Action
$this->view->md = $md; $this->view->md = $md;
} } elseif ($type == "playlist") {
else if ($type == "playlist") {
$file = new Application_Model_Playlist($id); $file = new Application_Model_Playlist($id);
$this->view->type = $type; $this->view->type = $type;
@ -279,20 +273,21 @@ class LibraryController extends Zend_Controller_Action
$this->view->md = $md; $this->view->md = $md;
$this->view->contents = $file->getContents(); $this->view->contents = $file->getContents();
} }
} } catch (Exception $e) {
catch (Exception $e) {
Logging::log($e->getMessage()); Logging::log($e->getMessage());
} }
} }
public function uploadFileSoundcloudAction(){ public function uploadFileSoundcloudAction()
{
$id = $this->_getParam('id'); $id = $this->_getParam('id');
$res = exec("/usr/lib/airtime/utils/soundcloud-uploader $id > /dev/null &"); $res = exec("/usr/lib/airtime/utils/soundcloud-uploader $id > /dev/null &");
// we should die with ui info // we should die with ui info
die(); die();
} }
public function getUploadToSoundcloudStatusAction(){ public function getUploadToSoundcloudStatusAction()
{
$id = $this->_getParam('id'); $id = $this->_getParam('id');
$type = $this->_getParam('type'); $type = $this->_getParam('type');
@ -302,8 +297,7 @@ class LibraryController extends Zend_Controller_Action
$file = $show_instance->getRecordedFile(); $file = $show_instance->getRecordedFile();
$this->view->error_code = $file->getSoundCloudErrorCode(); $this->view->error_code = $file->getSoundCloudErrorCode();
$this->view->error_msg = $file->getSoundCloudErrorMsg(); $this->view->error_msg = $file->getSoundCloudErrorMsg();
} } elseif ($type == "file") {
else if ($type == "file") {
$file = Application_Model_StoredFile::Recall($id); $file = Application_Model_StoredFile::Recall($id);
$this->view->sc_id = $file->getSoundCloudId(); $this->view->sc_id = $file->getSoundCloudId();
$this->view->error_code = $file->getSoundCloudErrorCode(); $this->view->error_code = $file->getSoundCloudErrorCode();

View file

@ -12,8 +12,7 @@ class LoginController extends Zend_Controller_Action
{ {
global $CC_CONFIG; global $CC_CONFIG;
if (Zend_Auth::getInstance()->hasIdentity()) if (Zend_Auth::getInstance()->hasIdentity()) {
{
$this->_redirect('Showbuilder'); $this->_redirect('Showbuilder');
} }
@ -30,15 +29,13 @@ class LoginController extends Zend_Controller_Action
$message = "Please enter your user name and password"; $message = "Please enter your user name and password";
if($request->isPost()) if ($request->isPost()) {
{
// if the post contains recaptcha field, which means form had recaptcha field. // if the post contains recaptcha field, which means form had recaptcha field.
// Hence add the element for validation. // Hence add the element for validation.
if (array_key_exists('recaptcha_response_field', $request->getPost())) { if (array_key_exists('recaptcha_response_field', $request->getPost())) {
$form->addRecaptcha(); $form->addRecaptcha();
} }
if($form->isValid($request->getPost())) if ($form->isValid($request->getPost())) {
{
//get the username and password from the form //get the username and password from the form
$username = $form->getValue('username'); $username = $form->getValue('username');
$password = $form->getValue('password'); $password = $form->getValue('password');
@ -53,8 +50,7 @@ class LoginController extends Zend_Controller_Action
$auth = Zend_Auth::getInstance(); $auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter); $result = $auth->authenticate($authAdapter);
if($result->isValid()) if ($result->isValid()) {
{
//all info about this user from the login table omit only the password //all info about this user from the login table omit only the password
$userInfo = $authAdapter->getResultRowObject(null, 'password'); $userInfo = $authAdapter->getResultRowObject(null, 'password');
@ -69,9 +65,7 @@ class LoginController extends Zend_Controller_Action
$tempSess->referrer = 'login'; $tempSess->referrer = 'login';
$this->_redirect('Showbuilder'); $this->_redirect('Showbuilder');
} } else {
else
{
$message = "Wrong username or password provided. Please try again."; $message = "Wrong username or password provided. Please try again.";
Application_Model_Subjects::increaseLoginAttempts($username); Application_Model_Subjects::increaseLoginAttempts($username);
Application_Model_LoginAttempts::increaseAttempts($_SERVER['REMOTE_ADDR']); Application_Model_LoginAttempts::increaseAttempts($_SERVER['REMOTE_ADDR']);
@ -108,8 +102,7 @@ class LoginController extends Zend_Controller_Action
if (!Application_Model_Preference::GetEnableSystemEmail()) { if (!Application_Model_Preference::GetEnableSystemEmail()) {
$this->_redirect('login'); $this->_redirect('login');
} } else {
else {
//uses separate layout without a navigation. //uses separate layout without a navigation.
$this->_helper->layout->setLayout('login'); $this->_helper->layout->setLayout('login');
@ -130,8 +123,7 @@ class LoginController extends Zend_Controller_Action
} else { } else {
$form->email->addError($this->view->translate("Email could not be sent. Check your mail server settings and ensure it has been configured properly.")); $form->email->addError($this->view->translate("Email could not be sent. Check your mail server settings and ensure it has been configured properly."));
} }
} } else {
else {
$form->email->addError($this->view->translate("Given email not found.")); $form->email->addError($this->view->translate("Given email not found."));
} }
} }
@ -194,6 +186,3 @@ class LoginController extends Zend_Controller_Action
$this->view->form = $form; $this->view->form = $form;
} }
} }

View file

@ -40,6 +40,7 @@ class PlaylistController extends Zend_Controller_Action
throw new PlaylistOutDatedException("You are viewing an older version of {$pl->getName()}"); throw new PlaylistOutDatedException("You are viewing an older version of {$pl->getName()}");
} }
} }
return $pl; return $pl;
} }
@ -47,8 +48,7 @@ class PlaylistController extends Zend_Controller_Action
{ {
if (is_null($pl_id)) { if (is_null($pl_id)) {
unset($this->pl_sess->id); unset($this->pl_sess->id);
} } else {
else {
$this->pl_sess->id = intval($pl_id); $this->pl_sess->id = intval($pl_id);
} }
} }
@ -77,8 +77,7 @@ class PlaylistController extends Zend_Controller_Action
$this->view->id = $pl->getId(); $this->view->id = $pl->getId();
$this->view->html = $this->view->render('playlist/playlist.phtml'); $this->view->html = $this->view->render('playlist/playlist.phtml');
unset($this->view->pl); unset($this->view->pl);
} } else {
else {
$this->view->html = $this->view->render('playlist/playlist.phtml'); $this->view->html = $this->view->render('playlist/playlist.phtml');
} }
} }
@ -143,11 +142,9 @@ class PlaylistController extends Zend_Controller_Action
$formatter = new LengthFormatter($pl->getLength()); $formatter = new LengthFormatter($pl->getLength());
$this->view->length = $formatter->format(); $this->view->length = $formatter->format();
} }
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
@ -177,11 +174,9 @@ class PlaylistController extends Zend_Controller_Action
try { try {
$pl = new Application_Model_Playlist($id); $pl = new Application_Model_Playlist($id);
$this->createFullResponse($pl); $this->createFullResponse($pl);
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
@ -198,19 +193,16 @@ class PlaylistController extends Zend_Controller_Action
if (in_array($this->pl_sess->id, $ids)) { if (in_array($this->pl_sess->id, $ids)) {
Logging::log("Deleting currently active playlist"); Logging::log("Deleting currently active playlist");
$this->changePlaylist(null); $this->changePlaylist(null);
} } else {
else {
Logging::log("Not deleting currently active playlist"); Logging::log("Not deleting currently active playlist");
$pl = new Application_Model_Playlist($this->pl_sess->id); $pl = new Application_Model_Playlist($this->pl_sess->id);
} }
Application_Model_Playlist::DeletePlaylists($ids); Application_Model_Playlist::DeletePlaylists($ids);
$this->createFullResponse($pl); $this->createFullResponse($pl);
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
@ -226,14 +218,11 @@ class PlaylistController extends Zend_Controller_Action
$pl = $this->getPlaylist(); $pl = $this->getPlaylist();
$pl->addAudioClips($ids, $afterItem, $addType); $pl->addAudioClips($ids, $afterItem, $addType);
$this->createUpdateResponse($pl); $this->createUpdateResponse($pl);
} } catch (PlaylistOutDatedException $e) {
catch (PlaylistOutDatedException $e) {
$this->playlistOutdated($pl, $e); $this->playlistOutdated($pl, $e);
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
@ -249,14 +238,11 @@ class PlaylistController extends Zend_Controller_Action
$pl = $this->getPlaylist(); $pl = $this->getPlaylist();
$pl->moveAudioClips($ids, $afterItem); $pl->moveAudioClips($ids, $afterItem);
$this->createUpdateResponse($pl); $this->createUpdateResponse($pl);
} } catch (PlaylistOutDatedException $e) {
catch (PlaylistOutDatedException $e) {
$this->playlistOutdated($pl, $e); $this->playlistOutdated($pl, $e);
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
@ -271,14 +257,11 @@ class PlaylistController extends Zend_Controller_Action
$pl = $this->getPlaylist(); $pl = $this->getPlaylist();
$pl->delAudioClips($ids); $pl->delAudioClips($ids);
$this->createUpdateResponse($pl); $this->createUpdateResponse($pl);
} } catch (PlaylistOutDatedException $e) {
catch (PlaylistOutDatedException $e) {
$this->playlistOutdated($pl, $e); $this->playlistOutdated($pl, $e);
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
@ -296,18 +279,14 @@ class PlaylistController extends Zend_Controller_Action
if (!isset($response["error"])) { if (!isset($response["error"])) {
$this->view->response = $response; $this->view->response = $response;
$this->createUpdateResponse($pl); $this->createUpdateResponse($pl);
} } else {
else {
$this->view->cue_error = $response["error"]; $this->view->cue_error = $response["error"];
} }
} } catch (PlaylistOutDatedException $e) {
catch (PlaylistOutDatedException $e) {
$this->playlistOutdated($pl, $e); $this->playlistOutdated($pl, $e);
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
@ -325,18 +304,14 @@ class PlaylistController extends Zend_Controller_Action
if (!isset($response["error"])) { if (!isset($response["error"])) {
$this->createUpdateResponse($pl); $this->createUpdateResponse($pl);
$this->view->response = $response; $this->view->response = $response;
} } else {
else {
$this->view->fade_error = $response["error"]; $this->view->fade_error = $response["error"];
} }
} } catch (PlaylistOutDatedException $e) {
catch (PlaylistOutDatedException $e) {
$this->playlistOutdated($pl, $e); $this->playlistOutdated($pl, $e);
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
@ -350,14 +325,11 @@ class PlaylistController extends Zend_Controller_Action
$fades = $pl->getFadeInfo($pl->getSize()-1); $fades = $pl->getFadeInfo($pl->getSize()-1);
$this->view->fadeOut = $fades[1]; $this->view->fadeOut = $fades[1];
} } catch (PlaylistOutDatedException $e) {
catch (PlaylistOutDatedException $e) {
$this->playlistOutdated($pl, $e); $this->playlistOutdated($pl, $e);
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
@ -376,14 +348,11 @@ class PlaylistController extends Zend_Controller_Action
$pl = $this->getPlaylist(); $pl = $this->getPlaylist();
$pl->setPlaylistfades($fadeIn, $fadeOut); $pl->setPlaylistfades($fadeIn, $fadeOut);
$this->view->modified = $pl->getLastModified("U"); $this->view->modified = $pl->getLastModified("U");
} } catch (PlaylistOutDatedException $e) {
catch (PlaylistOutDatedException $e) {
$this->playlistOutdated($pl, $e); $this->playlistOutdated($pl, $e);
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
@ -397,14 +366,11 @@ class PlaylistController extends Zend_Controller_Action
$pl->setName($name); $pl->setName($name);
$this->view->playlistName = $name; $this->view->playlistName = $name;
$this->view->modified = $pl->getLastModified("U"); $this->view->modified = $pl->getLastModified("U");
} } catch (PlaylistOutDatedException $e) {
catch (PlaylistOutDatedException $e) {
$this->playlistOutdated($pl, $e); $this->playlistOutdated($pl, $e);
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
@ -418,16 +384,12 @@ class PlaylistController extends Zend_Controller_Action
$pl->setDescription($description); $pl->setDescription($description);
$this->view->description = $pl->getDescription(); $this->view->description = $pl->getDescription();
$this->view->modified = $pl->getLastModified("U"); $this->view->modified = $pl->getLastModified("U");
} } catch (PlaylistOutDatedException $e) {
catch (PlaylistOutDatedException $e) {
$this->playlistOutdated($pl, $e); $this->playlistOutdated($pl, $e);
} } catch (PlaylistNotFoundException $e) {
catch (PlaylistNotFoundException $e) {
$this->playlistNotFound(); $this->playlistNotFound();
} } catch (Exception $e) {
catch (Exception $e) {
$this->playlistUnknownError($e); $this->playlistUnknownError($e);
} }
} }
} }

View file

@ -1,6 +1,6 @@
<?php <?php
class PlayoutHistoryController extends Zend_Controller_Action class PlayouthistoryController extends Zend_Controller_Action
{ {
public function init() public function init()
{ {

View file

@ -34,7 +34,8 @@ class PluploadController extends Zend_Controller_Action
die('{"jsonrpc" : "2.0", "tempfilepath" : "'.$tempFileName.'" }'); die('{"jsonrpc" : "2.0", "tempfilepath" : "'.$tempFileName.'" }');
} }
public function copyfileAction(){ public function copyfileAction()
{
$upload_dir = ini_get("upload_tmp_dir") . DIRECTORY_SEPARATOR . "plupload"; $upload_dir = ini_get("upload_tmp_dir") . DIRECTORY_SEPARATOR . "plupload";
$filename = $this->_getParam('name'); $filename = $this->_getParam('name');
$tempname = $this->_getParam('tempname'); $tempname = $this->_getParam('tempname');
@ -45,6 +46,3 @@ class PluploadController extends Zend_Controller_Action
die('{"jsonrpc" : "2.0"}'); die('{"jsonrpc" : "2.0"}');
} }
} }

View file

@ -232,8 +232,7 @@ class PreferenceController extends Zend_Controller_Action
$master_connection_url = "http://".$_SERVER['SERVER_NAME'].":".$values["master_harbor_input_port"]."/".$values["master_harbor_input_mount_point"]; $master_connection_url = "http://".$_SERVER['SERVER_NAME'].":".$values["master_harbor_input_port"]."/".$values["master_harbor_input_mount_point"];
if (empty($values["master_harbor_input_port"]) || empty($values["master_harbor_input_mount_point"])) { if (empty($values["master_harbor_input_port"]) || empty($values["master_harbor_input_mount_point"])) {
Application_Model_Preference::SetMasterDJSourceConnectionURL('N/A'); Application_Model_Preference::SetMasterDJSourceConnectionURL('N/A');
} } else {
else {
Application_Model_Preference::SetMasterDJSourceConnectionURL($master_connection_url); Application_Model_Preference::SetMasterDJSourceConnectionURL($master_connection_url);
} }
} else { } else {
@ -244,12 +243,10 @@ class PreferenceController extends Zend_Controller_Action
$live_connection_url = "http://".$_SERVER['SERVER_NAME'].":".$values["dj_harbor_input_port"]."/".$values["dj_harbor_input_mount_point"]; $live_connection_url = "http://".$_SERVER['SERVER_NAME'].":".$values["dj_harbor_input_port"]."/".$values["dj_harbor_input_mount_point"];
if (empty($values["dj_harbor_input_port"]) || empty($values["dj_harbor_input_mount_point"])) { if (empty($values["dj_harbor_input_port"]) || empty($values["dj_harbor_input_mount_point"])) {
Application_Model_Preference::SetLiveDJSourceConnectionURL('N/A'); Application_Model_Preference::SetLiveDJSourceConnectionURL('N/A');
} } else {
else {
Application_Model_Preference::SetLiveDJSourceConnectionURL($live_connection_url); Application_Model_Preference::SetLiveDJSourceConnectionURL($live_connection_url);
} }
} } else {
else {
Application_Model_Preference::SetLiveDJSourceConnectionURL($values["live_dj_connection_url"]); Application_Model_Preference::SetLiveDJSourceConnectionURL($values["live_dj_connection_url"]);
} }
@ -290,16 +287,13 @@ class PreferenceController extends Zend_Controller_Action
$result = array(); $result = array();
if(is_null($path)) if (is_null($path)) {
{
$element = array(); $element = array();
$element["name"] = "path should be specified"; $element["name"] = "path should be specified";
$element["isFolder"] = false; $element["isFolder"] = false;
$element["isError"] = true; $element["isError"] = true;
$result[$path] = $element; $result[$path] = $element;
} } else {
else
{
$path = $path.'/'; $path = $path.'/';
$handle = opendir($path); $handle = opendir($path);
if ($handle !== false) { if ($handle !== false) {
@ -373,7 +367,8 @@ class PreferenceController extends Zend_Controller_Action
$this->view->subform = $watched_dirs_form->render(); $this->view->subform = $watched_dirs_form->render();
} }
public function isImportInProgressAction(){ public function isImportInProgressAction()
{
$now = time(); $now = time();
$res = false; $res = false;
if (Application_Model_Preference::GetImportTimestamp()+10 > $now) { if (Application_Model_Preference::GetImportTimestamp()+10 > $now) {
@ -382,7 +377,8 @@ class PreferenceController extends Zend_Controller_Action
die(json_encode($res)); die(json_encode($res));
} }
public function getLiquidsoapStatusAction(){ public function getLiquidsoapStatusAction()
{
$out = array(); $out = array();
$num_of_stream = intval(Application_Model_Preference::GetNumOfStreams()); $num_of_stream = intval(Application_Model_Preference::GetNumOfStreams());
for ($i=1; $i<=$num_of_stream; $i++) { for ($i=1; $i<=$num_of_stream; $i++) {
@ -396,7 +392,8 @@ class PreferenceController extends Zend_Controller_Action
die(json_encode($out)); die(json_encode($out));
} }
public function setSourceConnectionUrlAction(){ public function setSourceConnectionUrlAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$type = $request->getParam("type", null); $type = $request->getParam("type", null);
$url = urldecode($request->getParam("url", null)); $url = urldecode($request->getParam("url", null));
@ -413,6 +410,3 @@ class PreferenceController extends Zend_Controller_Action
die(); die();
} }
} }

View file

@ -110,15 +110,15 @@ class ScheduleController extends Zend_Controller_Action
$user = new Application_Model_User($userInfo->id); $user = new Application_Model_User($userInfo->id);
if ($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) { if ($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) {
$editable = true; $editable = true;
} } else {
else {
$editable = false; $editable = false;
} }
$this->view->events = Application_Model_Show::getFullCalendarEvents($start, $end, $editable); $this->view->events = Application_Model_Show::getFullCalendarEvents($start, $end, $editable);
} }
public function getCurrentShowAction() { public function getCurrentShowAction()
{
$currentShow = Application_Model_Show::GetCurrentShow(); $currentShow = Application_Model_Show::GetCurrentShow();
if (!empty($currentShow)) { if (!empty($currentShow)) {
$this->view->si_id = $currentShow[0]["instance_id"]; $this->view->si_id = $currentShow[0]["instance_id"];
@ -142,6 +142,7 @@ class ScheduleController extends Zend_Controller_Action
$showInstance = new Application_Model_ShowInstance($showInstanceId); $showInstance = new Application_Model_ShowInstance($showInstanceId);
} catch (Exception $e) { } catch (Exception $e) {
$this->view->show_error = true; $this->view->show_error = true;
return false; return false;
} }
$error = $showInstance->moveShow($deltaDay, $deltaMin); $error = $showInstance->moveShow($deltaDay, $deltaMin);
@ -166,6 +167,7 @@ class ScheduleController extends Zend_Controller_Action
$show = new Application_Model_Show($showId); $show = new Application_Model_Show($showId);
} catch (Exception $e) { } catch (Exception $e) {
$this->view->show_error = true; $this->view->show_error = true;
return false; return false;
} }
$error = $show->resizeShow($deltaDay, $deltaMin); $error = $show->resizeShow($deltaDay, $deltaMin);
@ -187,9 +189,9 @@ class ScheduleController extends Zend_Controller_Action
try { try {
$showInstance = new Application_Model_ShowInstance($showInstanceId); $showInstance = new Application_Model_ShowInstance($showInstanceId);
} } catch (Exception $e) {
catch(Exception $e){
$this->view->show_error = true; $this->view->show_error = true;
return false; return false;
} }
@ -207,6 +209,7 @@ class ScheduleController extends Zend_Controller_Action
$show_inst = new Application_Model_ShowInstance($show_instance); $show_inst = new Application_Model_ShowInstance($show_instance);
} catch (Exception $e) { } catch (Exception $e) {
$this->view->show_error = true; $this->view->show_error = true;
return false; return false;
} }
@ -229,6 +232,7 @@ class ScheduleController extends Zend_Controller_Action
$instance = new Application_Model_ShowInstance($id); $instance = new Application_Model_ShowInstance($id);
} catch (Exception $e) { } catch (Exception $e) {
$this->view->show_error = true; $this->view->show_error = true;
return false; return false;
} }
@ -287,8 +291,7 @@ class ScheduleController extends Zend_Controller_Action
if ($instance->isRecorded()) { if ($instance->isRecorded()) {
$menu["cancel_recorded"] = array("name"=> "Cancel Current Show", "icon" => "delete"); $menu["cancel_recorded"] = array("name"=> "Cancel Current Show", "icon" => "delete");
} } else {
else {
if (!$instance->isRebroadcast()) { if (!$instance->isRebroadcast()) {
$menu["edit"] = array("name"=> "Edit Show", "icon" => "edit", "_type"=>"all", "url" => "/Schedule/populate-show-form"); $menu["edit"] = array("name"=> "Edit Show", "icon" => "edit", "_type"=>"all", "url" => "/Schedule/populate-show-form");
@ -312,8 +315,7 @@ class ScheduleController extends Zend_Controller_Action
$menu["del"]["items"]["single"] = array("name"=> "Delete This Instance", "icon" => "delete", "url" => "/schedule/delete-show"); $menu["del"]["items"]["single"] = array("name"=> "Delete This Instance", "icon" => "delete", "url" => "/schedule/delete-show");
$menu["del"]["items"]["following"] = array("name"=> "Delete This Instance and All Following", "icon" => "delete", "url" => "/schedule/cancel-show"); $menu["del"]["items"]["following"] = array("name"=> "Delete This Instance and All Following", "icon" => "delete", "url" => "/schedule/cancel-show");
} } elseif ($isAdminOrPM) {
else if ($isAdminOrPM){
$menu["del"] = array("name"=> "Delete", "icon" => "delete", "url" => "/schedule/delete-show"); $menu["del"] = array("name"=> "Delete", "icon" => "delete", "url" => "/schedule/delete-show");
} }
@ -331,6 +333,7 @@ class ScheduleController extends Zend_Controller_Action
$show = new Application_Model_ShowInstance($showInstanceId); $show = new Application_Model_ShowInstance($showInstanceId);
} catch (Exception $e) { } catch (Exception $e) {
$this->view->show_error = true; $this->view->show_error = true;
return false; return false;
} }
@ -395,6 +398,7 @@ class ScheduleController extends Zend_Controller_Action
$show = new Application_Model_ShowInstance($showInstanceId); $show = new Application_Model_ShowInstance($showInstanceId);
} catch (Exception $e) { } catch (Exception $e) {
$this->view->show_error = true; $this->view->show_error = true;
return false; return false;
} }
@ -416,6 +420,7 @@ class ScheduleController extends Zend_Controller_Action
$show = new Application_Model_ShowInstance($showInstanceId); $show = new Application_Model_ShowInstance($showInstanceId);
} catch (Exception $e) { } catch (Exception $e) {
$this->view->show_error = true; $this->view->show_error = true;
return false; return false;
} }
@ -425,6 +430,7 @@ class ScheduleController extends Zend_Controller_Action
$originalShow = new Application_Model_ShowInstance($originalShowId); $originalShow = new Application_Model_ShowInstance($originalShowId);
} catch (Exception $e) { } catch (Exception $e) {
$this->view->show_error = true; $this->view->show_error = true;
return false; return false;
} }
$originalShowName = $originalShow->getName(); $originalShowName = $originalShow->getName();
@ -506,12 +512,10 @@ class ScheduleController extends Zend_Controller_Action
$formRepeats->disable(); $formRepeats->disable();
$formStyle->disable(); $formStyle->disable();
//$formRecord->disable(); //$formRecord->disable();
//$formAbsoluteRebroadcast->disable(); //$formAbsoluteRebroadcast->disable();
//$formRebroadcast->disable(); //$formRebroadcast->disable();
$this->view->action = "edit-show-instance"; $this->view->action = "edit-show-instance";
$this->view->newForm = $this->view->render('schedule/add-show-form.phtml'); $this->view->newForm = $this->view->render('schedule/add-show-form.phtml');
}*/ }*/
@ -533,6 +537,7 @@ class ScheduleController extends Zend_Controller_Action
$showInstance = new Application_Model_ShowInstance($showInstanceId); $showInstance = new Application_Model_ShowInstance($showInstanceId);
} catch (Exception $e) { } catch (Exception $e) {
$this->view->show_error = true; $this->view->show_error = true;
return false; return false;
} }
@ -687,8 +692,8 @@ class ScheduleController extends Zend_Controller_Action
$this->view->entries = 5; $this->view->entries = 5;
} }
public function getFormAction() { public function getFormAction()
{
$user = Application_Model_User::getCurrentUser(); $user = Application_Model_User::getCurrentUser();
if ($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) { if ($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) {
@ -697,7 +702,8 @@ class ScheduleController extends Zend_Controller_Action
} }
} }
public function djEditShowAction(){ public function djEditShowAction()
{
$js = $this->_getParam('data'); $js = $this->_getParam('data');
$data = array(); $data = array();
@ -735,8 +741,8 @@ class ScheduleController extends Zend_Controller_Action
} }
}*/ }*/
public function editShowAction(){ public function editShowAction()
{
//1) Get add_show_start_date since it might not have been sent //1) Get add_show_start_date since it might not have been sent
$js = $this->_getParam('data'); $js = $this->_getParam('data');
$data = array(); $data = array();
@ -792,7 +798,8 @@ class ScheduleController extends Zend_Controller_Action
} }
} }
public function addShowAction(){ public function addShowAction()
{
$js = $this->_getParam('data'); $js = $this->_getParam('data');
$data = array(); $data = array();
@ -831,6 +838,7 @@ class ScheduleController extends Zend_Controller_Action
$showInstance = new Application_Model_ShowInstance($showInstanceId); $showInstance = new Application_Model_ShowInstance($showInstanceId);
} catch (Exception $e) { } catch (Exception $e) {
$this->view->show_error = true; $this->view->show_error = true;
return false; return false;
} }
$show = new Application_Model_Show($showInstance->getShowId()); $show = new Application_Model_Show($showInstance->getShowId());
@ -853,8 +861,7 @@ class ScheduleController extends Zend_Controller_Action
// send kick out source stream signal to pypo // send kick out source stream signal to pypo
$data = array("sourcename"=>"live_dj"); $data = array("sourcename"=>"live_dj");
Application_Model_RabbitMq::SendMessageToPypo("disconnect_source", $data); Application_Model_RabbitMq::SendMessageToPypo("disconnect_source", $data);
} } catch (Exception $e) {
catch (Exception $e) {
$this->view->error = $e->getMessage(); $this->view->error = $e->getMessage();
Logging::log($e->getMessage()); Logging::log($e->getMessage());
Logging::log("{$e->getFile()}"); Logging::log("{$e->getFile()}");
@ -863,7 +870,8 @@ class ScheduleController extends Zend_Controller_Action
} }
} }
public function contentContextMenuAction(){ public function contentContextMenuAction()
{
global $CC_CONFIG; global $CC_CONFIG;
$id = $this->_getParam('id'); $id = $this->_getParam('id');
@ -891,7 +899,8 @@ class ScheduleController extends Zend_Controller_Action
* Sets the user specific preference for which time scale to use in Calendar. * Sets the user specific preference for which time scale to use in Calendar.
* This is only being used by schedule.js at the moment. * This is only being used by schedule.js at the moment.
*/ */
public function setTimeScaleAction() { public function setTimeScaleAction()
{
Application_Model_Preference::SetCalendarTimeScale($this->_getParam('timeScale')); Application_Model_Preference::SetCalendarTimeScale($this->_getParam('timeScale'));
} }
@ -899,11 +908,13 @@ class ScheduleController extends Zend_Controller_Action
* Sets the user specific preference for which time interval to use in Calendar. * Sets the user specific preference for which time interval to use in Calendar.
* This is only being used by schedule.js at the moment. * This is only being used by schedule.js at the moment.
*/ */
public function setTimeIntervalAction() { public function setTimeIntervalAction()
{
Application_Model_Preference::SetCalendarTimeInterval($this->_getParam('timeInterval')); Application_Model_Preference::SetCalendarTimeInterval($this->_getParam('timeInterval'));
} }
public function calculateDurationAction() { public function calculateDurationAction()
{
global $CC_CONFIG; global $CC_CONFIG;
$startParam = $this->_getParam('startTime'); $startParam = $this->_getParam('startTime');
@ -937,4 +948,3 @@ class ScheduleController extends Zend_Controller_Action
exit(); exit();
} }
} }

View file

@ -16,8 +16,8 @@ class ShowbuilderController extends Zend_Controller_Action
->initContext(); ->initContext();
} }
public function indexAction() { public function indexAction()
{
global $CC_CONFIG; global $CC_CONFIG;
$request = $this->getRequest(); $request = $this->getRequest();
@ -31,8 +31,7 @@ class ShowbuilderController extends Zend_Controller_Action
if ($data != "") { if ($data != "") {
$libraryTable = json_encode(unserialize($data)); $libraryTable = json_encode(unserialize($data));
$this->view->headScript()->appendScript("localStorage.setItem( 'datatables-library', JSON.stringify($libraryTable) );"); $this->view->headScript()->appendScript("localStorage.setItem( 'datatables-library', JSON.stringify($libraryTable) );");
} } else {
else {
$this->view->headScript()->appendScript("localStorage.setItem( 'datatables-library', '' );"); $this->view->headScript()->appendScript("localStorage.setItem( 'datatables-library', '' );");
} }
@ -40,8 +39,7 @@ class ShowbuilderController extends Zend_Controller_Action
if ($data != "") { if ($data != "") {
$timelineTable = json_encode(unserialize($data)); $timelineTable = json_encode(unserialize($data));
$this->view->headScript()->appendScript("localStorage.setItem( 'datatables-timeline', JSON.stringify($timelineTable) );"); $this->view->headScript()->appendScript("localStorage.setItem( 'datatables-timeline', JSON.stringify($timelineTable) );");
} } else {
else {
$this->view->headScript()->appendScript("localStorage.setItem( 'datatables-timeline', '' );"); $this->view->headScript()->appendScript("localStorage.setItem( 'datatables-timeline', '' );");
} }
@ -79,8 +77,7 @@ class ShowbuilderController extends Zend_Controller_Action
} }
// unset session // unset session
Zend_Session::namespaceUnset('referrer'); Zend_Session::namespaceUnset('referrer');
} } elseif ($values["Publicise"] == '1' && $form->isValid($values)) {
else if ($values["Publicise"] == '1' && $form->isValid($values)) {
Application_Model_Preference::SetHeadTitle($values["stnName"], $this->view); Application_Model_Preference::SetHeadTitle($values["stnName"], $this->view);
Application_Model_Preference::SetPhone($values["Phone"]); Application_Model_Preference::SetPhone($values["Phone"]);
Application_Model_Preference::SetEmail($values["Email"]); Application_Model_Preference::SetEmail($values["Email"]);
@ -101,8 +98,7 @@ class ShowbuilderController extends Zend_Controller_Action
} }
// unset session // unset session
Zend_Session::namespaceUnset('referrer'); Zend_Session::namespaceUnset('referrer');
} } else {
else {
$logo = Application_Model_Preference::GetStationLogo(); $logo = Application_Model_Preference::GetStationLogo();
if ($logo) { if ($logo) {
$this->view->logoImg = $logo; $this->view->logoImg = $logo;
@ -138,8 +134,7 @@ class ShowbuilderController extends Zend_Controller_Action
$showLib = true; $showLib = true;
} }
} }
} } else {
else {
$disableLib = true; $disableLib = true;
} }
$this->view->disableLib = $disableLib; $this->view->disableLib = $disableLib;
@ -203,8 +198,8 @@ class ShowbuilderController extends Zend_Controller_Action
$this->view->items = $menu; $this->view->items = $menu;
} }
public function builderDialogAction() { public function builderDialogAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$id = $request->getParam("id"); $id = $request->getParam("id");
@ -212,6 +207,7 @@ class ShowbuilderController extends Zend_Controller_Action
if (is_null($instance)) { if (is_null($instance)) {
$this->view->error = "show does not exist"; $this->view->error = "show does not exist";
return; return;
} }
@ -231,8 +227,8 @@ class ShowbuilderController extends Zend_Controller_Action
$this->view->dialog = $this->view->render('showbuilder/builderDialog.phtml'); $this->view->dialog = $this->view->render('showbuilder/builderDialog.phtml');
} }
public function checkBuilderFeedAction() { public function checkBuilderFeedAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$current_time = time(); $current_time = time();
@ -254,14 +250,13 @@ class ShowbuilderController extends Zend_Controller_Action
// -1 default will always call the schedule to be sent back if no timestamp is defined. // -1 default will always call the schedule to be sent back if no timestamp is defined.
if ($showBuilder->hasBeenUpdatedSince($timestamp, $instances)) { if ($showBuilder->hasBeenUpdatedSince($timestamp, $instances)) {
$this->view->update = true; $this->view->update = true;
} } else {
else {
$this->view->update = false; $this->view->update = false;
} }
} }
public function builderFeedAction() { public function builderFeedAction()
{
$start = microtime(true); $start = microtime(true);
$request = $this->getRequest(); $request = $this->getRequest();
@ -291,8 +286,8 @@ class ShowbuilderController extends Zend_Controller_Action
Logging::debug(floatval($end) - floatval($start)); Logging::debug(floatval($end) - floatval($start));
} }
public function scheduleAddAction() { public function scheduleAddAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$mediaItems = $request->getParam("mediaIds", array()); $mediaItems = $request->getParam("mediaIds", array());
$scheduledItems = $request->getParam("schedIds", array()); $scheduledItems = $request->getParam("schedIds", array());
@ -300,14 +295,12 @@ class ShowbuilderController extends Zend_Controller_Action
try { try {
$scheduler = new Application_Model_Scheduler(); $scheduler = new Application_Model_Scheduler();
$scheduler->scheduleAfter($scheduledItems, $mediaItems); $scheduler->scheduleAfter($scheduledItems, $mediaItems);
} } catch (OutDatedScheduleException $e) {
catch (OutDatedScheduleException $e) {
$this->view->error = $e->getMessage(); $this->view->error = $e->getMessage();
Logging::log($e->getMessage()); Logging::log($e->getMessage());
Logging::log("{$e->getFile()}"); Logging::log("{$e->getFile()}");
Logging::log("{$e->getLine()}"); Logging::log("{$e->getLine()}");
} } catch (Exception $e) {
catch (Exception $e) {
$this->view->error = $e->getMessage(); $this->view->error = $e->getMessage();
Logging::log($e->getMessage()); Logging::log($e->getMessage());
Logging::log("{$e->getFile()}"); Logging::log("{$e->getFile()}");
@ -323,14 +316,12 @@ class ShowbuilderController extends Zend_Controller_Action
try { try {
$scheduler = new Application_Model_Scheduler(); $scheduler = new Application_Model_Scheduler();
$scheduler->removeItems($items); $scheduler->removeItems($items);
} } catch (OutDatedScheduleException $e) {
catch (OutDatedScheduleException $e) {
$this->view->error = $e->getMessage(); $this->view->error = $e->getMessage();
Logging::log($e->getMessage()); Logging::log($e->getMessage());
Logging::log("{$e->getFile()}"); Logging::log("{$e->getFile()}");
Logging::log("{$e->getLine()}"); Logging::log("{$e->getLine()}");
} } catch (Exception $e) {
catch (Exception $e) {
$this->view->error = $e->getMessage(); $this->view->error = $e->getMessage();
Logging::log($e->getMessage()); Logging::log($e->getMessage());
Logging::log("{$e->getFile()}"); Logging::log("{$e->getFile()}");
@ -338,8 +329,8 @@ class ShowbuilderController extends Zend_Controller_Action
} }
} }
public function scheduleMoveAction() { public function scheduleMoveAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$selectedItems = $request->getParam("selectedItem"); $selectedItems = $request->getParam("selectedItem");
$afterItem = $request->getParam("afterItem"); $afterItem = $request->getParam("afterItem");
@ -347,14 +338,12 @@ class ShowbuilderController extends Zend_Controller_Action
try { try {
$scheduler = new Application_Model_Scheduler(); $scheduler = new Application_Model_Scheduler();
$scheduler->moveItem($selectedItems, $afterItem); $scheduler->moveItem($selectedItems, $afterItem);
} } catch (OutDatedScheduleException $e) {
catch (OutDatedScheduleException $e) {
$this->view->error = $e->getMessage(); $this->view->error = $e->getMessage();
Logging::log($e->getMessage()); Logging::log($e->getMessage());
Logging::log("{$e->getFile()}"); Logging::log("{$e->getFile()}");
Logging::log("{$e->getLine()}"); Logging::log("{$e->getLine()}");
} } catch (Exception $e) {
catch (Exception $e) {
$this->view->error = $e->getMessage(); $this->view->error = $e->getMessage();
Logging::log($e->getMessage()); Logging::log($e->getMessage());
Logging::log("{$e->getFile()}"); Logging::log("{$e->getFile()}");
@ -362,8 +351,8 @@ class ShowbuilderController extends Zend_Controller_Action
} }
} }
public function scheduleReorderAction() { public function scheduleReorderAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$showInstance = $request->getParam("instanceId"); $showInstance = $request->getParam("instanceId");

View file

@ -40,8 +40,7 @@ class UserController extends Zend_Controller_Action
$formdata = $form->getValues(); $formdata = $form->getValues();
if (isset($CC_CONFIG['demo']) && $CC_CONFIG['demo'] == 1 && $formdata['login'] == 'admin' && $formdata['user_id'] != 0) { if (isset($CC_CONFIG['demo']) && $CC_CONFIG['demo'] == 1 && $formdata['login'] == 'admin' && $formdata['user_id'] != 0) {
$this->view->successMessage = "<div class='errors'>Specific action is not allowed in demo version!</div>"; $this->view->successMessage = "<div class='errors'>Specific action is not allowed in demo version!</div>";
} } elseif ($form->validateLogin($formdata)) {
else if ($form->validateLogin($formdata)){
$user = new Application_Model_User($formdata['user_id']); $user = new Application_Model_User($formdata['user_id']);
$user->setFirstName($formdata['first_name']); $user->setFirstName($formdata['first_name']);
$user->setLastName($formdata['last_name']); $user->setLastName($formdata['last_name']);
@ -105,16 +104,4 @@ class UserController extends Zend_Controller_Action
} }
} }

View file

@ -17,8 +17,8 @@ class UsersettingsController extends Zend_Controller_Action
->initContext(); ->initContext();
} }
public function setNowPlayingScreenSettingsAction() { public function setNowPlayingScreenSettingsAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$settings = $request->getParam("settings"); $settings = $request->getParam("settings");
@ -26,16 +26,16 @@ class UsersettingsController extends Zend_Controller_Action
Application_Model_Preference::setValue("nowplaying_screen", $data, true); Application_Model_Preference::setValue("nowplaying_screen", $data, true);
} }
public function getNowPlayingScreenSettingsAction() { public function getNowPlayingScreenSettingsAction()
{
$data = Application_Model_Preference::getValue("nowplaying_screen", true); $data = Application_Model_Preference::getValue("nowplaying_screen", true);
if ($data != "") { if ($data != "") {
$this->view->settings = unserialize($data); $this->view->settings = unserialize($data);
} }
} }
public function setLibraryDatatableAction() { public function setLibraryDatatableAction()
{
$request = $this->getRequest(); $request = $this->getRequest();
$settings = $request->getParam("settings"); $settings = $request->getParam("settings");
@ -43,16 +43,16 @@ class UsersettingsController extends Zend_Controller_Action
Application_Model_Preference::setValue("library_datatable", $data, true); Application_Model_Preference::setValue("library_datatable", $data, true);
} }
public function getLibraryDatatableAction() { public function getLibraryDatatableAction()
{
$data = Application_Model_Preference::getValue("library_datatable", true); $data = Application_Model_Preference::getValue("library_datatable", true);
if ($data != "") { if ($data != "") {
$this->view->settings = unserialize($data); $this->view->settings = unserialize($data);
} }
} }
public function setTimelineDatatableAction() { public function setTimelineDatatableAction()
{
$start = microtime(true); $start = microtime(true);
$request = $this->getRequest(); $request = $this->getRequest();
@ -67,8 +67,8 @@ class UsersettingsController extends Zend_Controller_Action
Logging::debug(floatval($end) - floatval($start)); Logging::debug(floatval($end) - floatval($start));
} }
public function getTimelineDatatableAction() { public function getTimelineDatatableAction()
{
$start = microtime(true); $start = microtime(true);
$data = Application_Model_Preference::getValue("timeline_datatable", true); $data = Application_Model_Preference::getValue("timeline_datatable", true);

View file

@ -113,8 +113,7 @@ class Zend_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract
if (in_array($controller, array("api", "auth"))) { if (in_array($controller, array("api", "auth"))) {
$this->setRoleName("G"); $this->setRoleName("G");
} } elseif (!Zend_Auth::getInstance()->hasIdentity()) {
else if (!Zend_Auth::getInstance()->hasIdentity()){
if ($controller !== 'login') { if ($controller !== 'login') {
@ -131,14 +130,12 @@ class Zend_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract
//redirectAndExit() cleans up, sends the headers and stops the script //redirectAndExit() cleans up, sends the headers and stops the script
Zend_Controller_Action_HelperBroker::getStaticHelper('redirector')->redirectAndExit(); Zend_Controller_Action_HelperBroker::getStaticHelper('redirector')->redirectAndExit();
} } else {
else {
$r = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); $r = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
$r->gotoSimpleAndExit('index', 'login', $request->getModuleName()); $r->gotoSimpleAndExit('index', 'login', $request->getModuleName());
} }
} }
} } else {
else {
$userInfo = Zend_Auth::getInstance()->getStorage()->read(); $userInfo = Zend_Auth::getInstance()->getStorage()->read();
$this->setRoleName($userInfo->type); $this->setRoleName($userInfo->type);

View file

@ -1,7 +1,7 @@
<?php <?php
class Application_Model_Auth { class Application_Model_Auth
{
const TOKEN_LIFETIME = 'P2D'; // DateInterval syntax const TOKEN_LIFETIME = 'P2D'; // DateInterval syntax
private function generateToken($action, $user_id) private function generateToken($action, $user_id)

View file

@ -3,7 +3,8 @@
class Application_Model_Dashboard class Application_Model_Dashboard
{ {
public static function GetPreviousItem($p_timeNow){ public static function GetPreviousItem($p_timeNow)
{
//get previous show and previous item in the schedule table. //get previous show and previous item in the schedule table.
//Compare the two and if the last show was recorded and started //Compare the two and if the last show was recorded and started
//after the last item in the schedule table, then return the show's //after the last item in the schedule table, then return the show's
@ -46,7 +47,8 @@ class Application_Model_Dashboard
} }
} }
public static function GetCurrentItem($p_timeNow){ public static function GetCurrentItem($p_timeNow)
{
//get previous show and previous item in the schedule table. //get previous show and previous item in the schedule table.
//Compare the two and if the last show was recorded and started //Compare the two and if the last show was recorded and started
//after the last item in the schedule table, then return the show's //after the last item in the schedule table, then return the show's
@ -66,6 +68,7 @@ class Application_Model_Dashboard
* just in case we allow tracks to be scheduled without a show * just in case we allow tracks to be scheduled without a show
* in the future. * in the future.
*/ */
return array("name"=>$row[0]["artist_name"]." - ".$row[0]["track_title"], return array("name"=>$row[0]["artist_name"]." - ".$row[0]["track_title"],
"starts"=>$row[0]["starts"], "starts"=>$row[0]["starts"],
"ends"=>$row[0]["ends"]); "ends"=>$row[0]["ends"]);
@ -92,7 +95,8 @@ class Application_Model_Dashboard
} }
} }
public static function GetNextItem($p_timeNow){ public static function GetNextItem($p_timeNow)
{
//get previous show and previous item in the schedule table. //get previous show and previous item in the schedule table.
//Compare the two and if the last show was recorded and started //Compare the two and if the last show was recorded and started
//after the last item in the schedule table, then return the show's //after the last item in the schedule table, then return the show's

View file

@ -1,7 +1,7 @@
<?php <?php
class Application_Model_Datatables { class Application_Model_Datatables
{
/* /*
* query used to return data for a paginated/searchable datatable. * query used to return data for a paginated/searchable datatable.
*/ */
@ -64,8 +64,7 @@ class Application_Model_Datatables {
if ($displayLength !== -1) { if ($displayLength !== -1) {
$sql .= " OFFSET ".$data["iDisplayStart"]." LIMIT ".$displayLength; $sql .= " OFFSET ".$data["iDisplayStart"]." LIMIT ".$displayLength;
} }
} } else {
else {
$sql = $selectorRows." FROM ".$fromTable." ORDER BY ".$orderby; $sql = $selectorRows." FROM ".$fromTable." ORDER BY ".$orderby;
//limit the results returned. //limit the results returned.
@ -81,16 +80,14 @@ class Application_Model_Datatables {
if (isset($sqlTotalDisplayRows)) { if (isset($sqlTotalDisplayRows)) {
$r = $con->query($sqlTotalDisplayRows); $r = $con->query($sqlTotalDisplayRows);
$totalDisplayRows = $r->fetchColumn(0); $totalDisplayRows = $r->fetchColumn(0);
} } else {
else {
$totalDisplayRows = $totalRows; $totalDisplayRows = $totalRows;
} }
$r = $con->query($sql); $r = $con->query($sql);
$r->setFetchMode(PDO::FETCH_ASSOC); $r->setFetchMode(PDO::FETCH_ASSOC);
$results = $r->fetchAll(); $results = $r->fetchAll();
} } catch (Exception $e) {
catch (Exception $e) {
Logging::debug($e->getMessage()); Logging::debug($e->getMessage());
} }

View file

@ -1,7 +1,7 @@
<?php <?php
class Application_Model_Email { class Application_Model_Email
{
/** /**
* Send email * Send email
* *

View file

@ -3,7 +3,8 @@
class Application_Model_LiveLog class Application_Model_LiveLog
{ {
public static function GetLiveShowDuration($p_keepData=false) { public static function GetLiveShowDuration($p_keepData=false)
{
try { try {
$con = Propel::getConnection(); $con = Propel::getConnection();
@ -87,11 +88,11 @@ class Application_Model_LiveLog
$seconds = explode(".", $seconds); $seconds = explode(".", $seconds);
if (isset($seconds[0])) { if (isset($seconds[0])) {
$minutes = (double) (($hours*60)+$minutes . "." . $seconds[0]); $minutes = (double) (($hours*60)+$minutes . "." . $seconds[0]);
} } else {
else {
$minutes = (double) (($hours*60)+$minutes); $minutes = (double) (($hours*60)+$minutes);
} }
} }
return $minutes; return $minutes;
} catch (Exception $e) { } catch (Exception $e) {
header('HTTP/1.0 503 Service Unavailable'); header('HTTP/1.0 503 Service Unavailable');
@ -119,8 +120,7 @@ class Application_Model_LiveLog
$last_row = self::UpdateLastLogEndTime(array_pop($rows)); $last_row = self::UpdateLastLogEndTime(array_pop($rows));
array_push($rows, $last_row); array_push($rows, $last_row);
$skip = false; $skip = false;
} } else {
else {
$sql = "SELECT * FROM CC_LIVE_LOG" $sql = "SELECT * FROM CC_LIVE_LOG"
." WHERE state = 'S'" ." WHERE state = 'S'"
." ORDER BY id"; ." ORDER BY id";
@ -191,22 +191,19 @@ class Application_Model_LiveLog
if ($clip_length_seconds / 3600 >= 1) { if ($clip_length_seconds / 3600 >= 1) {
array_push($clip_length_arr, str_pad(floor($clip_length_seconds / 3600), 2, "0", STR_PAD_LEFT)); array_push($clip_length_arr, str_pad(floor($clip_length_seconds / 3600), 2, "0", STR_PAD_LEFT));
$clip_length_seconds -= floor($clip_length_seconds / 3600); $clip_length_seconds -= floor($clip_length_seconds / 3600);
} } else {
else {
array_push($clip_length_arr, "00"); array_push($clip_length_arr, "00");
} }
if ($clip_length_seconds / 60 >= 1) { if ($clip_length_seconds / 60 >= 1) {
array_push($clip_length_arr, str_pad(floor($clip_length_seconds / 60), 2, "0", STR_PAD_LEFT)); array_push($clip_length_arr, str_pad(floor($clip_length_seconds / 60), 2, "0", STR_PAD_LEFT));
$clip_length_seconds -= floor($clip_length_seconds / 60); $clip_length_seconds -= floor($clip_length_seconds / 60);
} } else {
else {
array_push($clip_length_arr, "00"); array_push($clip_length_arr, "00");
} }
array_push($clip_length_arr, str_pad($clip_length_seconds, 2, "0", STR_PAD_LEFT)); array_push($clip_length_arr, str_pad($clip_length_seconds, 2, "0", STR_PAD_LEFT));
$clip_length = implode(":", $clip_length_arr); $clip_length = implode(":", $clip_length_arr);
} } else {
else {
$clip_length = $track['clip_length']; $clip_length = $track['clip_length'];
} }
@ -249,11 +246,11 @@ class Application_Model_LiveLog
$seconds = explode(".", $seconds); $seconds = explode(".", $seconds);
if (isset($seconds[0])) { if (isset($seconds[0])) {
$minutes = (double) (($hours*60)+$minutes . "." . $seconds[0]); $minutes = (double) (($hours*60)+$minutes . "." . $seconds[0]);
} } else {
else {
$minutes = (double) (($hours*60)+$minutes); $minutes = (double) (($hours*60)+$minutes);
} }
} }
return $minutes; return $minutes;
} catch (Exception $e) { } catch (Exception $e) {
header('HTTP/1.0 503 Service Unavailable'); header('HTTP/1.0 503 Service Unavailable');
@ -262,7 +259,8 @@ class Application_Model_LiveLog
} }
} }
public static function UpdateLastLogEndTime($log) { public static function UpdateLastLogEndTime($log)
{
if ($log['end_time'] == null) { if ($log['end_time'] == null) {
$current_time = new DateTime("now", new DateTimeZone('UTC')); $current_time = new DateTime("now", new DateTimeZone('UTC'));
$log['end_time'] = $current_time; $log['end_time'] = $current_time;
@ -270,10 +268,12 @@ class Application_Model_LiveLog
self::SetEndTime($log['state'], $current_time, true); self::SetEndTime($log['state'], $current_time, true);
self::SetNewLogTime($log['state'], $current_time); self::SetNewLogTime($log['state'], $current_time);
} }
return $log; return $log;
} }
public static function SetNewLogTime($state, $dateTime){ public static function SetNewLogTime($state, $dateTime)
{
try { try {
$con = Propel::getConnection(); $con = Propel::getConnection();
@ -306,7 +306,8 @@ class Application_Model_LiveLog
} }
} }
public static function SetEndTime($state, $dateTime, $override=false){ public static function SetEndTime($state, $dateTime, $override=false)
{
try { try {
$con = Propel::getConnection(); $con = Propel::getConnection();

View file

@ -1,10 +1,12 @@
<?php <?php
class Application_Model_LoginAttempts { class Application_Model_LoginAttempts
public function __construct(){ {
public function __construct()
{
} }
public static function increaseAttempts($ip){ public static function increaseAttempts($ip)
{
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = "select count(*) from cc_login_attempts WHERE ip='$ip'"; $sql = "select count(*) from cc_login_attempts WHERE ip='$ip'";
$res = $con->query($sql)->fetchColumn(0); $res = $con->query($sql)->fetchColumn(0);
@ -17,14 +19,17 @@ class Application_Model_LoginAttempts {
} }
} }
public static function getAttempts($ip){ public static function getAttempts($ip)
{
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = "select attempts from cc_login_attempts WHERE ip='$ip'"; $sql = "select attempts from cc_login_attempts WHERE ip='$ip'";
$res = $con->query($sql)->fetchColumn(0); $res = $con->query($sql)->fetchColumn(0);
return $res ? $res : 0; return $res ? $res : 0;
} }
public static function resetAttempts($ip){ public static function resetAttempts($ip)
{
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = "select count(*) from cc_login_attempts WHERE ip='$ip'"; $sql = "select count(*) from cc_login_attempts WHERE ip='$ip'";
$res = $con->query($sql)->fetchColumn(0); $res = $con->query($sql)->fetchColumn(0);

View file

@ -2,8 +2,8 @@
class NestedDirectoryException extends Exception { } class NestedDirectoryException extends Exception { }
class Application_Model_MusicDir { class Application_Model_MusicDir
{
/** /**
* @holds propel database object * @holds propel database object
*/ */
@ -40,21 +40,25 @@ class Application_Model_MusicDir {
$this->_dir->save(); $this->_dir->save();
} }
public function setExistsFlag($flag){ public function setExistsFlag($flag)
{
$this->_dir->setExists($flag); $this->_dir->setExists($flag);
$this->_dir->save(); $this->_dir->save();
} }
public function setWatchedFlag($flag){ public function setWatchedFlag($flag)
{
$this->_dir->setWatched($flag); $this->_dir->setWatched($flag);
$this->_dir->save(); $this->_dir->save();
} }
public function getWatchedFlag(){ public function getWatchedFlag()
{
return $this->_dir->getWatched(); return $this->_dir->getWatched();
} }
public function getExistsFlag(){ public function getExistsFlag()
{
return $this->_dir->getExists(); return $this->_dir->getExists();
} }
@ -113,7 +117,8 @@ class Application_Model_MusicDir {
* @return boolean * @return boolean
* Returns true if it is the ancestor, false otherwise. * Returns true if it is the ancestor, false otherwise.
*/ */
private static function isAncestorDir($p_dir1, $p_dir2){ private static function isAncestorDir($p_dir1, $p_dir2)
{
if (strlen($p_dir1) > strlen($p_dir2)) { if (strlen($p_dir1) > strlen($p_dir2)) {
return false; return false;
} }
@ -130,7 +135,8 @@ class Application_Model_MusicDir {
* The path we want to validate * The path we want to validate
* @return void * @return void
*/ */
public static function isPathValid($p_path){ public static function isPathValid($p_path)
{
$dirs = self::getWatchedDirs(); $dirs = self::getWatchedDirs();
$dirs[] = self::getStorDir(); $dirs[] = self::getStorDir();
@ -187,7 +193,6 @@ class Application_Model_MusicDir {
$dir->setType($p_type); $dir->setType($p_type);
$p_path = Application_Common_OsPath::normpath($p_path)."/"; $p_path = Application_Common_OsPath::normpath($p_path)."/";
try { try {
/* isPathValid() checks if path is a substring or a superstring of an /* isPathValid() checks if path is a substring or a superstring of an
* existing dir and if not, throws NestedDirectoryException */ * existing dir and if not, throws NestedDirectoryException */
@ -207,6 +212,7 @@ class Application_Model_MusicDir {
return array("code"=>0); return array("code"=>0);
} catch (NestedDirectoryException $nde) { } catch (NestedDirectoryException $nde) {
$msg = $nde->getMessage(); $msg = $nde->getMessage();
return array("code"=>1, "error"=>"$msg"); return array("code"=>1, "error"=>"$msg");
} catch (Exception $e) { } catch (Exception $e) {
return array("code"=>1, "error"=>"'$p_path' is already set as the current storage dir or in the watched folders list"); return array("code"=>1, "error"=>"'$p_path' is already set as the current storage dir or in the watched folders list");
@ -271,6 +277,7 @@ class Application_Model_MusicDir {
$data["directory"] = $p_path; $data["directory"] = $p_path;
Application_Model_RabbitMq::SendMessageToMediaMonitor("new_watch", $data); Application_Model_RabbitMq::SendMessageToMediaMonitor("new_watch", $data);
} }
return $res; return $res;
} }
@ -290,9 +297,9 @@ class Application_Model_MusicDir {
->findOne(); ->findOne();
if ($dir == NULL) { if ($dir == NULL) {
return null; return null;
} } else {
else{
$mus_dir = new Application_Model_MusicDir($dir); $mus_dir = new Application_Model_MusicDir($dir);
return $mus_dir; return $mus_dir;
} }
} }
@ -355,6 +362,7 @@ class Application_Model_MusicDir {
$data["directory"] = $p_dir; $data["directory"] = $p_dir;
$data["dir_id"] = $dirId; $data["dir_id"] = $dirId;
Application_Model_RabbitMq::SendMessageToMediaMonitor("change_stor", $data); Application_Model_RabbitMq::SendMessageToMediaMonitor("change_stor", $data);
return array("code"=>0); return array("code"=>0);
} else { } else {
return array("code"=>1, "error"=>"'$p_dir' is already set as the current storage dir or in the watched folders list."); return array("code"=>1, "error"=>"'$p_dir' is already set as the current storage dir or in the watched folders list.");
@ -373,6 +381,7 @@ class Application_Model_MusicDir {
$directory = $dir->getDirectory(); $directory = $dir->getDirectory();
if (substr($p_filepath, 0, strlen($directory)) === $directory) { if (substr($p_filepath, 0, strlen($directory)) === $directory) {
$mus_dir = new Application_Model_MusicDir($dir); $mus_dir = new Application_Model_MusicDir($dir);
return $mus_dir; return $mus_dir;
} }
} }
@ -390,8 +399,8 @@ class Application_Model_MusicDir {
* When $userAddedWatchedDir is true, it will set "Watched" flag to false * When $userAddedWatchedDir is true, it will set "Watched" flag to false
* otherwise, it will set "Exists" flag to true * otherwise, it will set "Exists" flag to true
**/ **/
public static function removeWatchedDir($p_dir, $userAddedWatchedDir=true){ public static function removeWatchedDir($p_dir, $userAddedWatchedDir=true)
{
//make sure that $p_dir has a trailing "/" //make sure that $p_dir has a trailing "/"
$real_path = Application_Common_OsPath::normpath($p_dir)."/"; $real_path = Application_Common_OsPath::normpath($p_dir)."/";
if ($real_path != "/") { if ($real_path != "/") {
@ -405,6 +414,7 @@ class Application_Model_MusicDir {
$data = array(); $data = array();
$data["directory"] = $p_dir; $data["directory"] = $p_dir;
Application_Model_RabbitMq::SendMessageToMediaMonitor("remove_watch", $data); Application_Model_RabbitMq::SendMessageToMediaMonitor("remove_watch", $data);
return array("code"=>0); return array("code"=>0);
} }
} }

View file

@ -8,8 +8,8 @@ require_once 'formatters/LengthFormatter.php';
* @copyright 2010 Sourcefabric O.P.S. * @copyright 2010 Sourcefabric O.P.S.
* @license http://www.gnu.org/licenses/gpl.txt * @license http://www.gnu.org/licenses/gpl.txt
*/ */
class Application_Model_Playlist { class Application_Model_Playlist
{
/** /**
* propel connection object. * propel connection object.
*/ */
@ -55,8 +55,7 @@ class Application_Model_Playlist {
if (is_null($this->pl)) { if (is_null($this->pl)) {
throw new PlaylistNotFoundException(); throw new PlaylistNotFoundException();
} }
} } else {
else {
$this->pl = new CcPlaylist(); $this->pl = new CcPlaylist();
$this->pl->setDbUTime("now", new DateTimeZone("UTC")); $this->pl->setDbUTime("now", new DateTimeZone("UTC"));
$this->pl->save(); $this->pl->save();
@ -79,7 +78,8 @@ class Application_Model_Playlist {
* *
* @return int * @return int
*/ */
public function getId() { public function getId()
{
return $this->id; return $this->id;
} }
@ -117,28 +117,30 @@ class Application_Model_Playlist {
return $this->pl->getDbDescription(); return $this->pl->getDbDescription();
} }
public function getCreator() { public function getCreator()
{
return $this->pl->getCcSubjs()->getDbLogin(); return $this->pl->getCcSubjs()->getDbLogin();
} }
public function getCreatorId() { public function getCreatorId()
{
return $this->pl->getCcSubjs()->getDbId(); return $this->pl->getCcSubjs()->getDbId();
} }
public function setCreator($p_id) { public function setCreator($p_id)
{
$this->pl->setDbCreatorId($p_id); $this->pl->setDbCreatorId($p_id);
$this->pl->setDbMtime(new DateTime("now", new DateTimeZone("UTC"))); $this->pl->setDbMtime(new DateTime("now", new DateTimeZone("UTC")));
$this->pl->save($this->con); $this->pl->save($this->con);
} }
public function getLastModified($format = null) { public function getLastModified($format = null)
{
return $this->pl->getDbMtime($format); return $this->pl->getDbMtime($format);
} }
public function getSize() { public function getSize()
{
return $this->pl->countCcPlaylistcontentss(); return $this->pl->countCcPlaylistcontentss();
} }
@ -148,8 +150,8 @@ class Application_Model_Playlist {
* file_exists flag set to true * file_exists flag set to true
* @return array * @return array
*/ */
public function getContents($filterFiles=false) { public function getContents($filterFiles=false)
{
Logging::log("Getting contents for playlist {$this->id}"); Logging::log("Getting contents for playlist {$this->id}");
$files = array(); $files = array();
@ -193,8 +195,8 @@ class Application_Model_Playlist {
* but this isn't practical since fades shouldn't be very long usuall 1 second or less. This function * but this isn't practical since fades shouldn't be very long usuall 1 second or less. This function
* will normalize the fade so that it looks like 00.000000 to the user. * will normalize the fade so that it looks like 00.000000 to the user.
**/ **/
public function normalizeFade($fade) { public function normalizeFade($fade)
{
//First get rid of the first six characters 00:00: which will be added back later for db update //First get rid of the first six characters 00:00: which will be added back later for db update
$fade = substr($fade, 6); $fade = substr($fade, 6);
@ -211,12 +213,11 @@ class Application_Model_Playlist {
} }
//aggregate column on playlistcontents cliplength column. //aggregate column on playlistcontents cliplength column.
public function getLength() { public function getLength()
{
return $this->pl->getDbLength(); return $this->pl->getDbLength();
} }
private function insertPlaylistElement($info) private function insertPlaylistElement($info)
{ {
$row = new CcPlaylistcontents(); $row = new CcPlaylistcontents();
@ -246,8 +247,7 @@ class Application_Model_Playlist {
$entry["cueout"] = $file->getDbLength(); $entry["cueout"] = $file->getDbLength();
return $entry; return $entry;
} } else {
else {
throw new Exception("trying to add a file that does not exist."); throw new Exception("trying to add a file that does not exist.");
} }
} }
@ -275,7 +275,6 @@ class Application_Model_Playlist {
Logging::log("index is {$index}"); Logging::log("index is {$index}");
$pos = ($addType == 'after') ? $index + 1 : $index; $pos = ($addType == 'after') ? $index + 1 : $index;
$contentsToUpdate = CcPlaylistcontentsQuery::create() $contentsToUpdate = CcPlaylistcontentsQuery::create()
->filterByDbPlaylistId($this->id) ->filterByDbPlaylistId($this->id)
->filterByDbPosition($pos, Criteria::GREATER_EQUAL) ->filterByDbPosition($pos, Criteria::GREATER_EQUAL)
@ -284,8 +283,7 @@ class Application_Model_Playlist {
Logging::log("Adding to playlist"); Logging::log("Adding to playlist");
Logging::log("at position {$pos}"); Logging::log("at position {$pos}");
} } else {
else {
//add to the end of the playlist //add to the end of the playlist
if ($addType == 'after') { if ($addType == 'after') {
@ -329,8 +327,7 @@ class Application_Model_Playlist {
$this->pl->save($this->con); $this->pl->save($this->con);
$this->con->commit(); $this->con->commit();
} } catch (Exception $e) {
catch (Exception $e) {
$this->con->rollback(); $this->con->rollback();
throw $e; throw $e;
} }
@ -378,8 +375,7 @@ class Application_Model_Playlist {
$item->save($this->con); $item->save($this->con);
$pos = $pos + 1; $pos = $pos + 1;
} }
} } else {
else {
Logging::log("moving items after {$p_afterItem}"); Logging::log("moving items after {$p_afterItem}");
foreach ($otherContent as $item) { foreach ($otherContent as $item) {
@ -400,13 +396,11 @@ class Application_Model_Playlist {
} }
$this->con->commit(); $this->con->commit();
} } catch (Exception $e) {
catch (Exception $e) {
$this->con->rollback(); $this->con->rollback();
throw $e; throw $e;
} }
$this->pl = CcPlaylistQuery::create()->findPK($this->id); $this->pl = CcPlaylistQuery::create()->findPK($this->id);
$this->pl->setDbMtime(new DateTime("now", new DateTimeZone("UTC"))); $this->pl->setDbMtime(new DateTime("now", new DateTimeZone("UTC")));
$this->pl->save($this->con); $this->pl->save($this->con);
@ -444,16 +438,14 @@ class Application_Model_Playlist {
$this->pl->save($this->con); $this->pl->save($this->con);
$this->con->commit(); $this->con->commit();
} } catch (Exception $e) {
catch (Exception $e) {
$this->con->rollback(); $this->con->rollback();
throw $e; throw $e;
} }
} }
public function getFadeInfo($pos)
public function getFadeInfo($pos) { {
Logging::log("Getting fade info for pos {$pos}"); Logging::log("Getting fade info for pos {$pos}");
$row = CcPlaylistcontentsQuery::create() $row = CcPlaylistcontentsQuery::create()
@ -465,6 +457,7 @@ class Application_Model_Playlist {
#Propel returns values in form 00.000000 format which is for only seconds. #Propel returns values in form 00.000000 format which is for only seconds.
$fadeIn = $row->getDbFadein(); $fadeIn = $row->getDbFadein();
$fadeOut = $row->getDbFadeout(); $fadeOut = $row->getDbFadeout();
return array($fadeIn, $fadeOut); return array($fadeIn, $fadeOut);
} }
@ -526,8 +519,7 @@ class Application_Model_Playlist {
$this->pl->save($this->con); $this->pl->save($this->con);
$this->con->commit(); $this->con->commit();
} } catch (Exception $e) {
catch (Exception $e) {
$this->con->rollback(); $this->con->rollback();
throw $e; throw $e;
} }
@ -535,8 +527,8 @@ class Application_Model_Playlist {
return array("fadeIn" => $fadeIn, "fadeOut" => $fadeOut); return array("fadeIn" => $fadeIn, "fadeOut" => $fadeOut);
} }
public function setPlaylistfades($fadein, $fadeout) { public function setPlaylistfades($fadein, $fadeout)
{
if (isset($fadein)) { if (isset($fadein)) {
Logging::log("Setting playlist fade in {$fadein}"); Logging::log("Setting playlist fade in {$fadein}");
$row = CcPlaylistcontentsQuery::create() $row = CcPlaylistcontentsQuery::create()
@ -578,6 +570,7 @@ class Application_Model_Playlist {
try { try {
if (is_null($cueIn) && is_null($cueOut)) { if (is_null($cueIn) && is_null($cueOut)) {
$errArray["error"] = "Cue in and cue out are null."; $errArray["error"] = "Cue in and cue out are null.";
return $errArray; return $errArray;
} }
@ -608,6 +601,7 @@ class Application_Model_Playlist {
$r = $this->con->query($sql); $r = $this->con->query($sql);
if ($r->fetchColumn(0)) { if ($r->fetchColumn(0)) {
$errArray["error"] = "Can't set cue in to be larger than cue out."; $errArray["error"] = "Can't set cue in to be larger than cue out.";
return $errArray; return $errArray;
} }
@ -615,6 +609,7 @@ class Application_Model_Playlist {
$r = $this->con->query($sql); $r = $this->con->query($sql);
if ($r->fetchColumn(0)) { if ($r->fetchColumn(0)) {
$errArray["error"] = "Can't set cue out to be greater than file length."; $errArray["error"] = "Can't set cue out to be greater than file length.";
return $errArray; return $errArray;
} }
@ -626,13 +621,13 @@ class Application_Model_Playlist {
$row->setDbCueout($cueOut); $row->setDbCueout($cueOut);
$row->setDBCliplength($cliplength); $row->setDBCliplength($cliplength);
} } elseif (!is_null($cueIn)) {
else if (!is_null($cueIn)) {
$sql = "SELECT INTERVAL '{$cueIn}' > INTERVAL '{$oldCueOut}'"; $sql = "SELECT INTERVAL '{$cueIn}' > INTERVAL '{$oldCueOut}'";
$r = $this->con->query($sql); $r = $this->con->query($sql);
if ($r->fetchColumn(0)) { if ($r->fetchColumn(0)) {
$errArray["error"] = "Can't set cue in to be larger than cue out."; $errArray["error"] = "Can't set cue in to be larger than cue out.";
return $errArray; return $errArray;
} }
@ -642,8 +637,7 @@ class Application_Model_Playlist {
$row->setDbCuein($cueIn); $row->setDbCuein($cueIn);
$row->setDBCliplength($cliplength); $row->setDBCliplength($cliplength);
} } elseif (!is_null($cueOut)) {
else if (!is_null($cueOut)) {
if ($cueOut === "") { if ($cueOut === "") {
$cueOut = $origLength; $cueOut = $origLength;
@ -653,6 +647,7 @@ class Application_Model_Playlist {
$r = $this->con->query($sql); $r = $this->con->query($sql);
if ($r->fetchColumn(0)) { if ($r->fetchColumn(0)) {
$errArray["error"] = "Can't set cue out to be smaller than cue in."; $errArray["error"] = "Can't set cue out to be smaller than cue in.";
return $errArray; return $errArray;
} }
@ -660,6 +655,7 @@ class Application_Model_Playlist {
$r = $this->con->query($sql); $r = $this->con->query($sql);
if ($r->fetchColumn(0)) { if ($r->fetchColumn(0)) {
$errArray["error"] = "Can't set cue out to be greater than file length."; $errArray["error"] = "Can't set cue out to be greater than file length.";
return $errArray; return $errArray;
} }
@ -692,8 +688,7 @@ class Application_Model_Playlist {
$this->pl->save($this->con); $this->pl->save($this->con);
$this->con->commit(); $this->con->commit();
} } catch (Exception $e) {
catch (Exception $e) {
$this->con->rollback(); $this->con->rollback();
throw $e; throw $e;
} }
@ -719,6 +714,7 @@ class Application_Model_Playlist {
{ {
$cat = $this->categories[$category]; $cat = $this->categories[$category];
$method = 'get' . $cat; $method = 'get' . $cat;
return $this->$method(); return $this->$method();
} }
@ -749,6 +745,7 @@ class Application_Model_Playlist {
if (isset($arr[1])) { if (isset($arr[1])) {
return intval($arr[0])*60 + floatval($arr[1]); return intval($arr[0])*60 + floatval($arr[1]);
} }
return floatval($arr[0]); return floatval($arr[0]);
} }
@ -786,6 +783,7 @@ class Application_Model_Playlist {
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = 'SELECT count(*) as cnt FROM '.$CC_CONFIG["playListTable"]; $sql = 'SELECT count(*) as cnt FROM '.$CC_CONFIG["playListTable"];
return $con->query($sql)->fetchColumn(0); return $con->query($sql)->fetchColumn(0);
} }

View file

@ -2,8 +2,8 @@
require_once 'formatters/LengthFormatter.php'; require_once 'formatters/LengthFormatter.php';
class Application_Model_PlayoutHistory { class Application_Model_PlayoutHistory
{
private $con; private $con;
private $timezone; private $timezone;
@ -24,8 +24,8 @@ class Application_Model_PlayoutHistory {
"copyright" => "file.copyright", "copyright" => "file.copyright",
); );
public function __construct($p_startDT, $p_endDT, $p_opts) { public function __construct($p_startDT, $p_endDT, $p_opts)
{
$this->con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME); $this->con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME);
$this->startDT = $p_startDT; $this->startDT = $p_startDT;
$this->endDT = $p_endDT; $this->endDT = $p_endDT;
@ -37,16 +37,16 @@ class Application_Model_PlayoutHistory {
/* /*
* map front end mDataProp labels to proper column names for searching etc. * map front end mDataProp labels to proper column names for searching etc.
*/ */
private function translateColumns() { private function translateColumns()
{
for ($i = 0; $i < $this->opts["iColumns"]; $i++) { for ($i = 0; $i < $this->opts["iColumns"]; $i++) {
$this->opts["mDataProp_{$i}"] = $this->mDataPropMap[$this->opts["mDataProp_{$i}"]]; $this->opts["mDataProp_{$i}"] = $this->mDataPropMap[$this->opts["mDataProp_{$i}"]];
} }
} }
public function getItems() { public function getItems()
{
$this->translateColumns(); $this->translateColumns();
$select = array( $select = array(

View file

@ -3,15 +3,15 @@
class Application_Model_Preference class Application_Model_Preference
{ {
public static function setValue($key, $value, $isUserValue = false){ public static function setValue($key, $value, $isUserValue = false)
{
try { try {
$con = Propel::getConnection(); $con = Propel::getConnection();
//called from a daemon process //called from a daemon process
if (!class_exists("Zend_Auth", false) || !Zend_Auth::getInstance()->hasIdentity()) { if (!class_exists("Zend_Auth", false) || !Zend_Auth::getInstance()->hasIdentity()) {
$id = NULL; $id = NULL;
} } else {
else {
$auth = Zend_Auth::getInstance(); $auth = Zend_Auth::getInstance();
$id = $auth->getIdentity()->id; $id = $auth->getIdentity()->id;
} }
@ -72,7 +72,8 @@ class Application_Model_Preference
} }
public static function getValue($key, $isUserValue = false){ public static function getValue($key, $isUserValue = false)
{
try { try {
$con = Propel::getConnection(); $con = Propel::getConnection();
@ -89,6 +90,7 @@ class Application_Model_Preference
} }
$result = $con->query($sql)->fetchColumn(0); $result = $con->query($sql)->fetchColumn(0);
if ($result == 0) if ($result == 0)
return ""; return "";
else { else {
$sql = "SELECT valstr FROM cc_pref" $sql = "SELECT valstr FROM cc_pref"
@ -100,6 +102,7 @@ class Application_Model_Preference
} }
$result = $con->query($sql)->fetchColumn(0); $result = $con->query($sql)->fetchColumn(0);
return ($result !== false) ? $result : ""; return ($result !== false) ? $result : "";
} }
} catch (Exception $e) { } catch (Exception $e) {
@ -109,7 +112,8 @@ class Application_Model_Preference
} }
} }
public static function GetHeadTitle(){ public static function GetHeadTitle()
{
$title = self::getValue("station_name"); $title = self::getValue("station_name");
$defaultNamespace->title = $title; $defaultNamespace->title = $title;
if (strlen($title) > 0) if (strlen($title) > 0)
@ -118,7 +122,8 @@ class Application_Model_Preference
return $title."Airtime"; return $title."Airtime";
} }
public static function SetHeadTitle($title, $view=null){ public static function SetHeadTitle($title, $view=null)
{
self::setValue("station_name", $title); self::setValue("station_name", $title);
// in case this is called from airtime-saas script // in case this is called from airtime-saas script
@ -142,7 +147,8 @@ class Application_Model_Preference
* @param DateTime $dateTime * @param DateTime $dateTime
* A row from cc_show_days table * A row from cc_show_days table
*/ */
public static function SetShowsPopulatedUntil($dateTime) { public static function SetShowsPopulatedUntil($dateTime)
{
self::setValue("shows_populated_until", $dateTime->format("Y-m-d H:i:s")); self::setValue("shows_populated_until", $dateTime->format("Y-m-d H:i:s"));
} }
@ -155,7 +161,8 @@ class Application_Model_Preference
* *
* @return DateTime (in UTC Timezone) * @return DateTime (in UTC Timezone)
*/ */
public static function GetShowsPopulatedUntil() { public static function GetShowsPopulatedUntil()
{
$date = self::getValue("shows_populated_until"); $date = self::getValue("shows_populated_until");
if ($date == "") { if ($date == "") {
@ -165,11 +172,13 @@ class Application_Model_Preference
} }
} }
public static function SetDefaultFade($fade) { public static function SetDefaultFade($fade)
{
self::setValue("default_fade", $fade); self::setValue("default_fade", $fade);
} }
public static function GetDefaultFade() { public static function GetDefaultFade()
{
$fade = self::getValue("default_fade"); $fade = self::getValue("default_fade");
if ($fade === "") { if ($fade === "") {
@ -191,10 +200,12 @@ class Application_Model_Preference
$fade = number_format($fade, 6); $fade = number_format($fade, 6);
//fades need 2 leading zeros for DateTime conversion //fades need 2 leading zeros for DateTime conversion
$fade = str_pad($fade, 9, "0", STR_PAD_LEFT); $fade = str_pad($fade, 9, "0", STR_PAD_LEFT);
return $fade; return $fade;
} }
public static function SetDefaultTransitionFade($fade) { public static function SetDefaultTransitionFade($fade)
{
self::setValue("default_transition_fade", $fade); self::setValue("default_transition_fade", $fade);
$eventType = "update_transition_fade"; $eventType = "update_transition_fade";
@ -202,15 +213,18 @@ class Application_Model_Preference
Application_Model_RabbitMq::SendMessageToPypo($eventType, $md); Application_Model_RabbitMq::SendMessageToPypo($eventType, $md);
} }
public static function GetDefaultTransitionFade() { public static function GetDefaultTransitionFade()
{
$transition_fade = self::getValue("default_transition_fade"); $transition_fade = self::getValue("default_transition_fade");
if ($transition_fade == "") { if ($transition_fade == "") {
$transition_fade = "00.000000"; $transition_fade = "00.000000";
} }
return $transition_fade; return $transition_fade;
} }
public static function SetStreamLabelFormat($type){ public static function SetStreamLabelFormat($type)
{
self::setValue("stream_label_format", $type); self::setValue("stream_label_format", $type);
$eventType = "update_stream_format"; $eventType = "update_stream_format";
@ -219,76 +233,94 @@ class Application_Model_Preference
Application_Model_RabbitMq::SendMessageToPypo($eventType, $md); Application_Model_RabbitMq::SendMessageToPypo($eventType, $md);
} }
public static function GetStreamLabelFormat(){ public static function GetStreamLabelFormat()
{
return self::getValue("stream_label_format"); return self::getValue("stream_label_format");
} }
public static function GetStationName(){ public static function GetStationName()
{
return self::getValue("station_name"); return self::getValue("station_name");
} }
public static function SetAutoUploadRecordedShowToSoundcloud($upload) { public static function SetAutoUploadRecordedShowToSoundcloud($upload)
{
self::setValue("soundcloud_auto_upload_recorded_show", $upload); self::setValue("soundcloud_auto_upload_recorded_show", $upload);
} }
public static function GetAutoUploadRecordedShowToSoundcloud() { public static function GetAutoUploadRecordedShowToSoundcloud()
{
return self::getValue("soundcloud_auto_upload_recorded_show"); return self::getValue("soundcloud_auto_upload_recorded_show");
} }
public static function SetSoundCloudUser($user) { public static function SetSoundCloudUser($user)
{
self::setValue("soundcloud_user", $user); self::setValue("soundcloud_user", $user);
} }
public static function GetSoundCloudUser() { public static function GetSoundCloudUser()
{
return self::getValue("soundcloud_user"); return self::getValue("soundcloud_user");
} }
public static function SetSoundCloudPassword($password) { public static function SetSoundCloudPassword($password)
{
if (strlen($password) > 0) if (strlen($password) > 0)
self::setValue("soundcloud_password", $password); self::setValue("soundcloud_password", $password);
} }
public static function GetSoundCloudPassword() { public static function GetSoundCloudPassword()
{
return self::getValue("soundcloud_password"); return self::getValue("soundcloud_password");
} }
public static function SetSoundCloudTags($tags) { public static function SetSoundCloudTags($tags)
{
self::setValue("soundcloud_tags", $tags); self::setValue("soundcloud_tags", $tags);
} }
public static function GetSoundCloudTags() { public static function GetSoundCloudTags()
{
return self::getValue("soundcloud_tags"); return self::getValue("soundcloud_tags");
} }
public static function SetSoundCloudGenre($genre) { public static function SetSoundCloudGenre($genre)
{
self::setValue("soundcloud_genre", $genre); self::setValue("soundcloud_genre", $genre);
} }
public static function GetSoundCloudGenre() { public static function GetSoundCloudGenre()
{
return self::getValue("soundcloud_genre"); return self::getValue("soundcloud_genre");
} }
public static function SetSoundCloudTrackType($track_type) { public static function SetSoundCloudTrackType($track_type)
{
self::setValue("soundcloud_tracktype", $track_type); self::setValue("soundcloud_tracktype", $track_type);
} }
public static function GetSoundCloudTrackType() { public static function GetSoundCloudTrackType()
{
return self::getValue("soundcloud_tracktype"); return self::getValue("soundcloud_tracktype");
} }
public static function SetSoundCloudLicense($license) { public static function SetSoundCloudLicense($license)
{
self::setValue("soundcloud_license", $license); self::setValue("soundcloud_license", $license);
} }
public static function GetSoundCloudLicense() { public static function GetSoundCloudLicense()
{
return self::getValue("soundcloud_license"); return self::getValue("soundcloud_license");
} }
public static function SetAllow3rdPartyApi($bool) { public static function SetAllow3rdPartyApi($bool)
{
self::setValue("third_party_api", $bool); self::setValue("third_party_api", $bool);
} }
public static function GetAllow3rdPartyApi() { public static function GetAllow3rdPartyApi()
{
$val = self::getValue("third_party_api"); $val = self::getValue("third_party_api");
if (strlen($val) == 0) { if (strlen($val) == 0) {
return "0"; return "0";
@ -297,89 +329,110 @@ class Application_Model_Preference
} }
} }
public static function SetPhone($phone){ public static function SetPhone($phone)
{
self::setValue("phone", $phone); self::setValue("phone", $phone);
} }
public static function GetPhone(){ public static function GetPhone()
{
return self::getValue("phone"); return self::getValue("phone");
} }
public static function SetEmail($email){ public static function SetEmail($email)
{
self::setValue("email", $email); self::setValue("email", $email);
} }
public static function GetEmail(){ public static function GetEmail()
{
return self::getValue("email"); return self::getValue("email");
} }
public static function SetStationWebSite($site){ public static function SetStationWebSite($site)
{
self::setValue("station_website", $site); self::setValue("station_website", $site);
} }
public static function GetStationWebSite(){ public static function GetStationWebSite()
{
return self::getValue("station_website"); return self::getValue("station_website");
} }
public static function SetSupportFeedback($feedback){ public static function SetSupportFeedback($feedback)
{
self::setValue("support_feedback", $feedback); self::setValue("support_feedback", $feedback);
} }
public static function GetSupportFeedback(){ public static function GetSupportFeedback()
{
return self::getValue("support_feedback"); return self::getValue("support_feedback");
} }
public static function SetPublicise($publicise){ public static function SetPublicise($publicise)
{
self::setValue("publicise", $publicise); self::setValue("publicise", $publicise);
} }
public static function GetPublicise(){ public static function GetPublicise()
{
return self::getValue("publicise"); return self::getValue("publicise");
} }
public static function SetRegistered($registered){ public static function SetRegistered($registered)
{
self::setValue("registered", $registered); self::setValue("registered", $registered);
} }
public static function GetRegistered(){ public static function GetRegistered()
{
return self::getValue("registered"); return self::getValue("registered");
} }
public static function SetStationCountry($country){ public static function SetStationCountry($country)
{
self::setValue("country", $country); self::setValue("country", $country);
} }
public static function GetStationCountry(){ public static function GetStationCountry()
{
return self::getValue("country"); return self::getValue("country");
} }
public static function SetStationCity($city){ public static function SetStationCity($city)
{
self::setValue("city", $city); self::setValue("city", $city);
} }
public static function GetStationCity(){ public static function GetStationCity()
{
return self::getValue("city"); return self::getValue("city");
} }
public static function SetStationDescription($description){ public static function SetStationDescription($description)
{
self::setValue("description", $description); self::setValue("description", $description);
} }
public static function GetStationDescription(){ public static function GetStationDescription()
{
return self::getValue("description"); return self::getValue("description");
} }
public static function SetTimezone($timezone){ public static function SetTimezone($timezone)
{
self::setValue("timezone", $timezone); self::setValue("timezone", $timezone);
date_default_timezone_set($timezone); date_default_timezone_set($timezone);
$md = array("timezone" => $timezone); $md = array("timezone" => $timezone);
} }
public static function GetTimezone(){ public static function GetTimezone()
{
return self::getValue("timezone"); return self::getValue("timezone");
} }
public static function SetStationLogo($imagePath){ public static function SetStationLogo($imagePath)
{
if (!empty($imagePath)) { if (!empty($imagePath)) {
$image = @file_get_contents($imagePath); $image = @file_get_contents($imagePath);
$image = base64_encode($image); $image = base64_encode($image);
@ -387,11 +440,13 @@ class Application_Model_Preference
} }
} }
public static function GetStationLogo(){ public static function GetStationLogo()
{
return self::getValue("logoImage"); return self::getValue("logoImage");
} }
public static function GetUniqueId(){ public static function GetUniqueId()
{
return self::getValue("uniqueId"); return self::getValue("uniqueId");
} }
@ -405,6 +460,7 @@ class Application_Model_Preference
foreach ($res as $r) { foreach ($res as $r) {
$out[$r["isocode"]] = $r["name"]; $out[$r["isocode"]] = $r["name"];
} }
return $out; return $out;
} }
@ -509,13 +565,15 @@ class Application_Model_Preference
if ($returnArray) { if ($returnArray) {
$outputArray['PROMOTE'] = self::GetPublicise(); $outputArray['PROMOTE'] = self::GetPublicise();
$outputArray['LOGOIMG'] = self::GetStationLogo(); $outputArray['LOGOIMG'] = self::GetStationLogo();
return $outputArray; return $outputArray;
} else { } else {
return $outputString; return $outputString;
} }
} }
public static function GetInstallMethod(){ public static function GetInstallMethod()
{
$easy_install = file_exists('/usr/bin/airtime-easy-setup'); $easy_install = file_exists('/usr/bin/airtime-easy-setup');
$debian_install = file_exists('/var/lib/dpkg/info/airtime.config'); $debian_install = file_exists('/var/lib/dpkg/info/airtime.config');
if ($debian_install) { if ($debian_install) {
@ -529,102 +587,127 @@ class Application_Model_Preference
} }
} }
public static function SetRemindMeDate(){ public static function SetRemindMeDate()
{
$weekAfter = mktime(0, 0, 0, gmdate("m"), gmdate("d")+7, gmdate("Y")); $weekAfter = mktime(0, 0, 0, gmdate("m"), gmdate("d")+7, gmdate("Y"));
self::setValue("remindme", $weekAfter); self::setValue("remindme", $weekAfter);
} }
public static function GetRemindMeDate(){ public static function GetRemindMeDate()
{
return self::getValue("remindme"); return self::getValue("remindme");
} }
public static function SetImportTimestamp(){ public static function SetImportTimestamp()
{
$now = time(); $now = time();
if (self::GetImportTimestamp()+5 < $now) { if (self::GetImportTimestamp()+5 < $now) {
self::setValue("import_timestamp", $now); self::setValue("import_timestamp", $now);
} }
} }
public static function GetImportTimestamp(){ public static function GetImportTimestamp()
{
return self::getValue("import_timestamp"); return self::getValue("import_timestamp");
} }
public static function GetStreamType(){ public static function GetStreamType()
{
$st = self::getValue("stream_type"); $st = self::getValue("stream_type");
return explode(',', $st); return explode(',', $st);
} }
public static function GetStreamBitrate(){ public static function GetStreamBitrate()
{
$sb = self::getValue("stream_bitrate"); $sb = self::getValue("stream_bitrate");
return explode(',', $sb); return explode(',', $sb);
} }
public static function SetPrivacyPolicyCheck($flag){ public static function SetPrivacyPolicyCheck($flag)
{
self::setValue("privacy_policy", $flag); self::setValue("privacy_policy", $flag);
} }
public static function GetPrivacyPolicyCheck(){ public static function GetPrivacyPolicyCheck()
{
return self::getValue("privacy_policy"); return self::getValue("privacy_policy");
} }
public static function SetNumOfStreams($num){ public static function SetNumOfStreams($num)
{
self::setValue("num_of_streams", intval($num)); self::setValue("num_of_streams", intval($num));
} }
public static function GetNumOfStreams(){ public static function GetNumOfStreams()
{
return self::getValue("num_of_streams"); return self::getValue("num_of_streams");
} }
public static function SetMaxBitrate($bitrate){ public static function SetMaxBitrate($bitrate)
{
self::setValue("max_bitrate", intval($bitrate)); self::setValue("max_bitrate", intval($bitrate));
} }
public static function GetMaxBitrate(){ public static function GetMaxBitrate()
{
return self::getValue("max_bitrate"); return self::getValue("max_bitrate");
} }
public static function SetPlanLevel($plan){ public static function SetPlanLevel($plan)
{
self::setValue("plan_level", $plan); self::setValue("plan_level", $plan);
} }
public static function GetPlanLevel(){ public static function GetPlanLevel()
{
$plan = self::getValue("plan_level"); $plan = self::getValue("plan_level");
if (trim($plan) == '') { if (trim($plan) == '') {
$plan = 'disabled'; $plan = 'disabled';
} }
return $plan; return $plan;
} }
public static function SetTrialEndingDate($date){ public static function SetTrialEndingDate($date)
{
self::setValue("trial_end_date", $date); self::setValue("trial_end_date", $date);
} }
public static function GetTrialEndingDate(){ public static function GetTrialEndingDate()
{
return self::getValue("trial_end_date"); return self::getValue("trial_end_date");
} }
public static function SetEnableStreamConf($bool){ public static function SetEnableStreamConf($bool)
{
self::setValue("enable_stream_conf", $bool); self::setValue("enable_stream_conf", $bool);
} }
public static function GetEnableStreamConf(){ public static function GetEnableStreamConf()
{
if (self::getValue("enable_stream_conf") == Null) { if (self::getValue("enable_stream_conf") == Null) {
return "true"; return "true";
} }
return self::getValue("enable_stream_conf"); return self::getValue("enable_stream_conf");
} }
public static function GetAirtimeVersion(){ public static function GetAirtimeVersion()
{
if (defined('APPLICATION_ENV') && APPLICATION_ENV == "development" && function_exists('exec')) { if (defined('APPLICATION_ENV') && APPLICATION_ENV == "development" && function_exists('exec')) {
$version = exec("git rev-parse --short HEAD 2>/dev/null", $out, $return_code); $version = exec("git rev-parse --short HEAD 2>/dev/null", $out, $return_code);
if ($return_code == 0) { if ($return_code == 0) {
return self::getValue("system_version")."+".$version.":".time(); return self::getValue("system_version")."+".$version.":".time();
} }
} }
return self::getValue("system_version"); return self::getValue("system_version");
} }
public static function GetLatestVersion(){ public static function GetLatestVersion()
{
$latest = self::getValue("latest_version"); $latest = self::getValue("latest_version");
if ($latest == null || strlen($latest) == 0) { if ($latest == null || strlen($latest) == 0) {
return self::GetAirtimeVersion(); return self::GetAirtimeVersion();
@ -633,14 +716,16 @@ class Application_Model_Preference
} }
} }
public static function SetLatestVersion($version){ public static function SetLatestVersion($version)
{
$pattern = "/^[0-9]+\.[0-9]+\.[0-9]+/"; $pattern = "/^[0-9]+\.[0-9]+\.[0-9]+/";
if (preg_match($pattern, $version)) { if (preg_match($pattern, $version)) {
self::setValue("latest_version", $version); self::setValue("latest_version", $version);
} }
} }
public static function GetLatestLink(){ public static function GetLatestLink()
{
$link = self::getValue("latest_link"); $link = self::getValue("latest_link");
if ($link == null || strlen($link) == 0) { if ($link == null || strlen($link) == 0) {
return 'http://airtime.sourcefabric.org'; return 'http://airtime.sourcefabric.org';
@ -649,7 +734,8 @@ class Application_Model_Preference
} }
} }
public static function SetLatestLink($link){ public static function SetLatestLink($link)
{
$pattern = "#^(http|https|ftp)://" . $pattern = "#^(http|https|ftp)://" .
"([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+" . "([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+" .
"(/[a-zA-Z0-9\-\.\_\~\:\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=]+)*/?$#"; "(/[a-zA-Z0-9\-\.\_\~\:\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=]+)*/?$#";
@ -658,27 +744,33 @@ class Application_Model_Preference
} }
} }
public static function SetUploadToSoundcloudOption($upload) { public static function SetUploadToSoundcloudOption($upload)
{
self::setValue("soundcloud_upload_option", $upload); self::setValue("soundcloud_upload_option", $upload);
} }
public static function GetUploadToSoundcloudOption() { public static function GetUploadToSoundcloudOption()
{
return self::getValue("soundcloud_upload_option"); return self::getValue("soundcloud_upload_option");
} }
public static function SetSoundCloudDownloadbleOption($upload) { public static function SetSoundCloudDownloadbleOption($upload)
{
self::setValue("soundcloud_downloadable", $upload); self::setValue("soundcloud_downloadable", $upload);
} }
public static function GetSoundCloudDownloadbleOption() { public static function GetSoundCloudDownloadbleOption()
{
return self::getValue("soundcloud_downloadable"); return self::getValue("soundcloud_downloadable");
} }
public static function SetWeekStartDay($day) { public static function SetWeekStartDay($day)
{
self::setValue("week_start_day", $day); self::setValue("week_start_day", $day);
} }
public static function GetWeekStartDay() { public static function GetWeekStartDay()
{
$val = self::getValue("week_start_day"); $val = self::getValue("week_start_day");
if (strlen($val) == 0) { if (strlen($val) == 0) {
return "0"; return "0";
@ -690,7 +782,8 @@ class Application_Model_Preference
/** /**
* Stores the last timestamp of user updating stream setting * Stores the last timestamp of user updating stream setting
*/ */
public static function SetStreamUpdateTimestamp() { public static function SetStreamUpdateTimestamp()
{
$now = time(); $now = time();
self::setValue("stream_update_timestamp", $now); self::setValue("stream_update_timestamp", $now);
} }
@ -698,19 +791,23 @@ class Application_Model_Preference
/** /**
* Gets the last timestamp of user updating stream setting * Gets the last timestamp of user updating stream setting
*/ */
public static function GetStreamUpdateTimestemp() { public static function GetStreamUpdateTimestemp()
{
$update_time = self::getValue("stream_update_timestamp"); $update_time = self::getValue("stream_update_timestamp");
if ($update_time == null) { if ($update_time == null) {
$update_time = 0; $update_time = 0;
} }
return $update_time; return $update_time;
} }
public static function GetClientId() { public static function GetClientId()
{
return self::getValue("client_id"); return self::getValue("client_id");
} }
public static function SetClientId($id) { public static function SetClientId($id)
{
if (is_numeric($id)) { if (is_numeric($id)) {
self::setValue("client_id", $id); self::setValue("client_id", $id);
} }
@ -723,7 +820,8 @@ class Application_Model_Preference
* *
* @param $timeScale new time scale * @param $timeScale new time scale
*/ */
public static function SetCalendarTimeScale($timeScale) { public static function SetCalendarTimeScale($timeScale)
{
self::setValue("calendar_time_scale", $timeScale, true /* user specific */); self::setValue("calendar_time_scale", $timeScale, true /* user specific */);
} }
@ -731,11 +829,13 @@ class Application_Model_Preference
* Retrieves the time scale preference for the current user. * Retrieves the time scale preference for the current user.
* Defaults to month if no entry exists * Defaults to month if no entry exists
*/ */
public static function GetCalendarTimeScale() { public static function GetCalendarTimeScale()
{
$val = self::getValue("calendar_time_scale", true /* user specific */); $val = self::getValue("calendar_time_scale", true /* user specific */);
if (strlen($val) == 0) { if (strlen($val) == 0) {
$val = "month"; $val = "month";
} }
return $val; return $val;
} }
@ -744,7 +844,8 @@ class Application_Model_Preference
* *
* @param $numEntries new number of entries to show * @param $numEntries new number of entries to show
*/ */
public static function SetLibraryNumEntries($numEntries) { public static function SetLibraryNumEntries($numEntries)
{
self::setValue("library_num_entries", $numEntries, true /* user specific */); self::setValue("library_num_entries", $numEntries, true /* user specific */);
} }
@ -752,11 +853,13 @@ class Application_Model_Preference
* Retrieves the number of entries to show preference in library under Playlist Builder. * Retrieves the number of entries to show preference in library under Playlist Builder.
* Defaults to 10 if no entry exists * Defaults to 10 if no entry exists
*/ */
public static function GetLibraryNumEntries() { public static function GetLibraryNumEntries()
{
$val = self::getValue("library_num_entries", true /* user specific */); $val = self::getValue("library_num_entries", true /* user specific */);
if (strlen($val) == 0) { if (strlen($val) == 0) {
$val = "10"; $val = "10";
} }
return $val; return $val;
} }
@ -765,7 +868,8 @@ class Application_Model_Preference
* *
* @param $timeInterval new time interval * @param $timeInterval new time interval
*/ */
public static function SetCalendarTimeInterval($timeInterval) { public static function SetCalendarTimeInterval($timeInterval)
{
self::setValue("calendar_time_interval", $timeInterval, true /* user specific */); self::setValue("calendar_time_interval", $timeInterval, true /* user specific */);
} }
@ -773,47 +877,58 @@ class Application_Model_Preference
* Retrieves the time interval preference for the current user. * Retrieves the time interval preference for the current user.
* Defaults to 30 min if no entry exists * Defaults to 30 min if no entry exists
*/ */
public static function GetCalendarTimeInterval() { public static function GetCalendarTimeInterval()
{
$val = self::getValue("calendar_time_interval", true /* user specific */); $val = self::getValue("calendar_time_interval", true /* user specific */);
if (strlen($val) == 0) { if (strlen($val) == 0) {
$val = "30"; $val = "30";
} }
return $val; return $val;
} }
public static function SetDiskQuota($value){ public static function SetDiskQuota($value)
{
self::setValue("disk_quota", $value, false); self::setValue("disk_quota", $value, false);
} }
public static function GetDiskQuota(){ public static function GetDiskQuota()
{
$val = self::getValue("disk_quota"); $val = self::getValue("disk_quota");
if (strlen($val) == 0) { if (strlen($val) == 0) {
$val = "0"; $val = "0";
} }
return $val; return $val;
} }
public static function SetLiveSteamMasterUsername($value){ public static function SetLiveSteamMasterUsername($value)
{
self::setValue("live_stream_master_username", $value, false); self::setValue("live_stream_master_username", $value, false);
} }
public static function GetLiveSteamMasterUsername(){ public static function GetLiveSteamMasterUsername()
{
return self::getValue("live_stream_master_username"); return self::getValue("live_stream_master_username");
} }
public static function SetLiveSteamMasterPassword($value){ public static function SetLiveSteamMasterPassword($value)
{
self::setValue("live_stream_master_password", $value, false); self::setValue("live_stream_master_password", $value, false);
} }
public static function GetLiveSteamMasterPassword(){ public static function GetLiveSteamMasterPassword()
{
return self::getValue("live_stream_master_password"); return self::getValue("live_stream_master_password");
} }
public static function SetSourceStatus($sourcename, $status){ public static function SetSourceStatus($sourcename, $status)
{
self::setValue($sourcename, $status, false); self::setValue($sourcename, $status, false);
} }
public static function GetSourceStatus($sourcename){ public static function GetSourceStatus($sourcename)
{
$value = self::getValue($sourcename); $value = self::getValue($sourcename);
if ($value == null || $value == "false") { if ($value == null || $value == "false") {
return false; return false;
@ -822,11 +937,13 @@ class Application_Model_Preference
} }
} }
public static function SetSourceSwitchStatus($sourcename, $status){ public static function SetSourceSwitchStatus($sourcename, $status)
{
self::setValue($sourcename."_switch", $status, false); self::setValue($sourcename."_switch", $status, false);
} }
public static function GetSourceSwitchStatus($sourcename){ public static function GetSourceSwitchStatus($sourcename)
{
$value = self::getValue($sourcename."_switch"); $value = self::getValue($sourcename."_switch");
if ($value == null || $value == "off") { if ($value == null || $value == "off") {
return "off"; return "off";
@ -835,61 +952,75 @@ class Application_Model_Preference
} }
} }
public static function SetMasterDJSourceConnectionURL($value){ public static function SetMasterDJSourceConnectionURL($value)
{
self::setValue("master_dj_source_connection_url", $value, false); self::setValue("master_dj_source_connection_url", $value, false);
} }
public static function GetMasterDJSourceConnectionURL(){ public static function GetMasterDJSourceConnectionURL()
{
return self::getValue("master_dj_source_connection_url"); return self::getValue("master_dj_source_connection_url");
} }
public static function SetLiveDJSourceConnectionURL($value){ public static function SetLiveDJSourceConnectionURL($value)
{
self::setValue("live_dj_source_connection_url", $value, false); self::setValue("live_dj_source_connection_url", $value, false);
} }
public static function GetLiveDJSourceConnectionURL(){ public static function GetLiveDJSourceConnectionURL()
{
return self::getValue("live_dj_source_connection_url"); return self::getValue("live_dj_source_connection_url");
} }
/* Source Connection URL override status starts */ /* Source Connection URL override status starts */
public static function GetLiveDjConnectionUrlOverride(){ public static function GetLiveDjConnectionUrlOverride()
{
return self::getValue("live_dj_connection_url_override"); return self::getValue("live_dj_connection_url_override");
} }
public static function SetLiveDjConnectionUrlOverride($value){ public static function SetLiveDjConnectionUrlOverride($value)
{
self::setValue("live_dj_connection_url_override", $value, false); self::setValue("live_dj_connection_url_override", $value, false);
} }
public static function GetMasterDjConnectionUrlOverride(){ public static function GetMasterDjConnectionUrlOverride()
{
return self::getValue("master_dj_connection_url_override"); return self::getValue("master_dj_connection_url_override");
} }
public static function SetMasterDjConnectionUrlOverride($value){ public static function SetMasterDjConnectionUrlOverride($value)
{
self::setValue("master_dj_connection_url_override", $value, false); self::setValue("master_dj_connection_url_override", $value, false);
} }
/* Source Connection URL override status ends */ /* Source Connection URL override status ends */
public static function SetAutoTransition($value){ public static function SetAutoTransition($value)
{
self::setValue("auto_transition", $value, false); self::setValue("auto_transition", $value, false);
} }
public static function GetAutoTransition(){ public static function GetAutoTransition()
{
return self::getValue("auto_transition"); return self::getValue("auto_transition");
} }
public static function SetAutoSwitch($value){ public static function SetAutoSwitch($value)
{
self::setValue("auto_switch", $value, false); self::setValue("auto_switch", $value, false);
} }
public static function GetAutoSwitch(){ public static function GetAutoSwitch()
{
return self::getValue("auto_switch"); return self::getValue("auto_switch");
} }
public static function SetEnableSystemEmail($upload) { public static function SetEnableSystemEmail($upload)
{
self::setValue("enable_system_email", $upload); self::setValue("enable_system_email", $upload);
} }
public static function GetEnableSystemEmail() { public static function GetEnableSystemEmail()
{
$v = self::getValue("enable_system_email"); $v = self::getValue("enable_system_email");
if ($v === "") { if ($v === "") {
@ -899,56 +1030,69 @@ class Application_Model_Preference
return $v; return $v;
} }
public static function SetSystemEmail($value) { public static function SetSystemEmail($value)
{
self::setValue("system_email", $value, false); self::setValue("system_email", $value, false);
} }
public static function GetSystemEmail() { public static function GetSystemEmail()
{
return self::getValue("system_email"); return self::getValue("system_email");
} }
public static function SetMailServerConfigured($value) { public static function SetMailServerConfigured($value)
{
self::setValue("mail_server_configured", $value, false); self::setValue("mail_server_configured", $value, false);
} }
public static function GetMailServerConfigured() { public static function GetMailServerConfigured()
{
return self::getValue("mail_server_configured"); return self::getValue("mail_server_configured");
} }
public static function SetMailServer($value) { public static function SetMailServer($value)
{
self::setValue("mail_server", $value, false); self::setValue("mail_server", $value, false);
} }
public static function GetMailServer() { public static function GetMailServer()
{
return self::getValue("mail_server"); return self::getValue("mail_server");
} }
public static function SetMailServerEmailAddress($value) { public static function SetMailServerEmailAddress($value)
{
self::setValue("mail_server_email_address", $value, false); self::setValue("mail_server_email_address", $value, false);
} }
public static function GetMailServerEmailAddress() { public static function GetMailServerEmailAddress()
{
return self::getValue("mail_server_email_address"); return self::getValue("mail_server_email_address");
} }
public static function SetMailServerPassword($value) { public static function SetMailServerPassword($value)
{
self::setValue("mail_server_password", $value, false); self::setValue("mail_server_password", $value, false);
} }
public static function GetMailServerPassword() { public static function GetMailServerPassword()
{
return self::getValue("mail_server_password"); return self::getValue("mail_server_password");
} }
public static function SetMailServerPort($value) { public static function SetMailServerPort($value)
{
self::setValue("mail_server_port", $value, false); self::setValue("mail_server_port", $value, false);
} }
public static function GetMailServerPort() { public static function GetMailServerPort()
{
return self::getValue("mail_server_port"); return self::getValue("mail_server_port");
} }
/* User specific preferences end */ /* User specific preferences end */
public static function ShouldShowPopUp(){ public static function ShouldShowPopUp()
{
$today = mktime(0, 0, 0, gmdate("m"), gmdate("d"), gmdate("Y")); $today = mktime(0, 0, 0, gmdate("m"), gmdate("d"), gmdate("Y"));
$remindDate = Application_Model_Preference::GetRemindMeDate(); $remindDate = Application_Model_Preference::GetRemindMeDate();
if ($remindDate == NULL || $today >= $remindDate) { if ($remindDate == NULL || $today >= $remindDate) {
@ -956,4 +1100,3 @@ class Application_Model_Preference
} }
} }
} }

View file

@ -3,12 +3,13 @@ require_once 'php-amqplib/amqp.inc';
class Application_Model_RabbitMq class Application_Model_RabbitMq
{ {
static public $doPush = FALSE; public static $doPush = FALSE;
/** /**
* Sets a flag to push the schedule at the end of the request. * Sets a flag to push the schedule at the end of the request.
*/ */
public static function PushSchedule() { public static function PushSchedule()
{
Application_Model_RabbitMq::$doPush = TRUE; Application_Model_RabbitMq::$doPush = TRUE;
} }
@ -93,4 +94,3 @@ class Application_Model_RabbitMq
$conn->close(); $conn->close();
} }
} }

View file

@ -1,7 +1,7 @@
<?php <?php
class Application_Model_Schedule { class Application_Model_Schedule
{
/** /**
* Return TRUE if file is going to be played in the future. * Return TRUE if file is going to be played in the future.
* *
@ -70,8 +70,8 @@ class Application_Model_Schedule {
public static function GetPrevCurrentNext($p_previousShowID, $p_currentShowID, $p_nextShowID, $p_timeNow) public static function GetPrevCurrentNext($p_previousShowID, $p_currentShowID, $p_nextShowID, $p_timeNow)
{ {
if ($p_previousShowID == null && $p_currentShowID == null && $p_nextShowID == null) if ($p_previousShowID == null && $p_currentShowID == null && $p_nextShowID == null)
return;
return;
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
@ -161,10 +161,12 @@ class Application_Model_Schedule {
"starts"=>$rows[$previousIndex]["starts"], "starts"=>$rows[$previousIndex]["starts"],
"ends"=>$rows[$previousIndex]["ends"]);; "ends"=>$rows[$previousIndex]["ends"]);;
} }
return $results; return $results;
} }
public static function GetLastScheduleItem($p_timeNow){ public static function GetLastScheduleItem($p_timeNow)
{
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = "SELECT" $sql = "SELECT"
@ -182,11 +184,13 @@ class Application_Model_Schedule {
." LIMIT 1"; ." LIMIT 1";
$row = $con->query($sql)->fetchAll(); $row = $con->query($sql)->fetchAll();
return $row; return $row;
} }
public static function GetCurrentScheduleItem($p_timeNow, $p_instanceId){ public static function GetCurrentScheduleItem($p_timeNow, $p_instanceId)
{
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
/* Note that usually there will be one result returned. In some /* Note that usually there will be one result returned. In some
@ -207,10 +211,12 @@ class Application_Model_Schedule {
." LIMIT 1"; ." LIMIT 1";
$row = $con->query($sql)->fetchAll(); $row = $con->query($sql)->fetchAll();
return $row; return $row;
} }
public static function GetNextScheduleItem($p_timeNow){ public static function GetNextScheduleItem($p_timeNow)
{
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = "SELECT" $sql = "SELECT"
@ -228,6 +234,7 @@ class Application_Model_Schedule {
." LIMIT 1"; ." LIMIT 1";
$row = $con->query($sql)->fetchAll(); $row = $con->query($sql)->fetchAll();
return $row; return $row;
} }
@ -273,7 +280,6 @@ class Application_Model_Schedule {
OR (si.ends > '{$p_start}' AND si.ends <= '{$p_end}') OR (si.ends > '{$p_start}' AND si.ends <= '{$p_end}')
OR (si.starts <= '{$p_start}' AND si.ends >= '{$p_end}'))"; OR (si.starts <= '{$p_start}' AND si.ends >= '{$p_end}'))";
if (count($p_shows) > 0) { if (count($p_shows) > 0) {
$sql .= " AND show_id IN (".implode(",", $p_shows).")"; $sql .= " AND show_id IN (".implode(",", $p_shows).")";
} }
@ -283,6 +289,7 @@ class Application_Model_Schedule {
Logging::debug($sql); Logging::debug($sql);
$rows = $con->query($sql)->fetchAll(); $rows = $con->query($sql)->fetchAll();
return $rows; return $rows;
} }
@ -305,10 +312,12 @@ class Application_Model_Schedule {
$sql .= " WHERE id=$p_id"; $sql .= " WHERE id=$p_id";
$retVal = $con->exec($sql); $retVal = $con->exec($sql);
return $retVal; return $retVal;
} }
public static function UpdateBrodcastedStatus($dateTime, $value){ public static function UpdateBrodcastedStatus($dateTime, $value)
{
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
$now = $dateTime->format("Y-m-d H:i:s"); $now = $dateTime->format("Y-m-d H:i:s");
@ -316,6 +325,7 @@ class Application_Model_Schedule {
." SET broadcasted=$value" ." SET broadcasted=$value"
." WHERE starts <= '$now' AND ends >= '$now'"; ." WHERE starts <= '$now' AND ends >= '$now'";
$retVal = $con->exec($sql); $retVal = $con->exec($sql);
return $retVal; return $retVal;
} }
@ -324,10 +334,10 @@ class Application_Model_Schedule {
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = "SELECT count(*) as cnt FROM ".$CC_CONFIG['scheduleTable']; $sql = "SELECT count(*) as cnt FROM ".$CC_CONFIG['scheduleTable'];
return $con->query($sql)->fetchColumn(0); return $con->query($sql)->fetchColumn(0);
} }
/** /**
* Convert a time string in the format "YYYY-MM-DD HH:mm:SS" * Convert a time string in the format "YYYY-MM-DD HH:mm:SS"
* to "YYYY-MM-DD-HH-mm-SS". * to "YYYY-MM-DD-HH-mm-SS".
@ -340,6 +350,7 @@ class Application_Model_Schedule {
$p_time = substr($p_time, 0, 19); $p_time = substr($p_time, 0, 19);
$p_time = str_replace(" ", "-", $p_time); $p_time = str_replace(" ", "-", $p_time);
$p_time = str_replace(":", "-", $p_time); $p_time = str_replace(":", "-", $p_time);
return $p_time; return $p_time;
} }
@ -353,6 +364,7 @@ class Application_Model_Schedule {
private static function PypoTimeToAirtimeTime($p_time) private static function PypoTimeToAirtimeTime($p_time)
{ {
$t = explode("-", $p_time); $t = explode("-", $p_time);
return $t[0]."-".$t[1]."-".$t[2]." ".$t[3].":".$t[4].":00"; return $t[0]."-".$t[1]."-".$t[2]." ".$t[3].":".$t[4].":00";
} }
@ -373,6 +385,7 @@ class Application_Model_Schedule {
return false; return false;
} }
} }
return true; return true;
} }
@ -397,10 +410,10 @@ class Application_Model_Schedule {
$seconds = intval($t[2]); $seconds = intval($t[2]);
} }
$ret = $millisecs + ($seconds * 1000) + ($t[1] * 60 * 1000) + ($t[0] * 60 * 60 * 1000); $ret = $millisecs + ($seconds * 1000) + ($t[1] * 60 * 1000) + ($t[0] * 60 * 60 * 1000);
return $ret; return $ret;
} }
/** /**
* Compute the difference between two times in the format "HH:MM:SS.mmmmmm". * Compute the difference between two times in the format "HH:MM:SS.mmmmmm".
* Note: currently only supports calculating millisec differences. * Note: currently only supports calculating millisec differences.
@ -423,6 +436,7 @@ class Application_Model_Schedule {
$millisec2 = intval($millisec2); $millisec2 = intval($millisec2);
$diff = abs($millisec1 - $millisec2)/1000; $diff = abs($millisec1 - $millisec2)/1000;
} }
return $diff; return $diff;
} }
@ -442,7 +456,8 @@ class Application_Model_Schedule {
* Returns null if nothing found, else an array of associative * Returns null if nothing found, else an array of associative
* arrays representing each row. * arrays representing each row.
*/ */
public static function GetItems($p_startTime, $p_endTime) { public static function GetItems($p_startTime, $p_endTime)
{
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
@ -464,7 +479,6 @@ class Application_Model_Schedule {
." LEFT JOIN $CC_CONFIG[filesTable] AS f" ." LEFT JOIN $CC_CONFIG[filesTable] AS f"
." ON st.file_id = f.id"; ." ON st.file_id = f.id";
$predicates = " WHERE st.ends > '$p_startTime'" $predicates = " WHERE st.ends > '$p_startTime'"
." AND st.starts < '$p_endTime'" ." AND st.starts < '$p_endTime'"
." AND st.playout_status > 0" ." AND st.playout_status > 0"
@ -496,8 +510,8 @@ class Application_Model_Schedule {
return $rows; return $rows;
} }
public static function GetScheduledPlaylists($p_fromDateTime = null, $p_toDateTime = null){ public static function GetScheduledPlaylists($p_fromDateTime = null, $p_toDateTime = null)
{
global $CC_CONFIG; global $CC_CONFIG;
/* if $p_fromDateTime and $p_toDateTime function parameters are null, then set range /* if $p_fromDateTime and $p_toDateTime function parameters are null, then set range
@ -601,7 +615,7 @@ class Application_Model_Schedule {
'start' => $start, 'start' => $start,
'end' => Application_Model_Schedule::AirtimeTimeToPypoTime($item["end"]), 'end' => Application_Model_Schedule::AirtimeTimeToPypoTime($item["end"]),
'show_name' => $showName, 'show_name' => $showName,
'replay_gain' => $item["replay_gain"] 'replay_gain' => is_null($item["replay_gain"]) ? "0": $item["replay_gain"]
); );
} }
@ -615,14 +629,16 @@ class Application_Model_Schedule {
$con->exec("TRUNCATE TABLE ".$CC_CONFIG["scheduleTable"]); $con->exec("TRUNCATE TABLE ".$CC_CONFIG["scheduleTable"]);
} }
public static function deleteWithFileId($fileId){ public static function deleteWithFileId($fileId)
{
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = "DELETE FROM ".$CC_CONFIG["scheduleTable"]." WHERE file_id=$fileId"; $sql = "DELETE FROM ".$CC_CONFIG["scheduleTable"]." WHERE file_id=$fileId";
$res = $con->query($sql); $res = $con->query($sql);
} }
public static function createNewFormSections($p_view){ public static function createNewFormSections($p_view)
{
$isSaas = Application_Model_Preference::GetPlanLevel() == 'disabled'?false:true; $isSaas = Application_Model_Preference::GetPlanLevel() == 'disabled'?false:true;
$formWhat = new Application_Form_AddShowWhat(); $formWhat = new Application_Form_AddShowWhat();
@ -677,7 +693,8 @@ class Application_Model_Schedule {
* There is still lots of clean-up to do. For example we shouldn't be passing $controller into * There is still lots of clean-up to do. For example we shouldn't be passing $controller into
* this method to manipulate the view (this should be done inside the controller function). With * this method to manipulate the view (this should be done inside the controller function). With
* 2.1 deadline looming, this is OK for now. -Martin */ * 2.1 deadline looming, this is OK for now. -Martin */
public static function updateShowInstance($data, $controller){ public static function updateShowInstance($data, $controller)
{
$isSaas = (Application_Model_Preference::GetPlanLevel() != 'disabled'); $isSaas = (Application_Model_Preference::GetPlanLevel() != 'disabled');
$formWhat = new Application_Form_AddShowWhat(); $formWhat = new Application_Form_AddShowWhat();
@ -743,6 +760,7 @@ class Application_Model_Schedule {
//$formAbsoluteRebroadcast->disable(); //$formAbsoluteRebroadcast->disable();
//$formRebroadcast->disable(); //$formRebroadcast->disable();
} }
return false; return false;
} }
} }
@ -755,8 +773,8 @@ class Application_Model_Schedule {
* Another clean-up is to move all the form manipulation to the proper form class..... * Another clean-up is to move all the form manipulation to the proper form class.....
* -Martin * -Martin
*/ */
public static function addUpdateShow($data, $controller, $validateStartDate, $originalStartDate=null, $update=false, $instanceId=null){ public static function addUpdateShow($data, $controller, $validateStartDate, $originalStartDate=null, $update=false, $instanceId=null)
{
$userInfo = Zend_Auth::getInstance()->getStorage()->read(); $userInfo = Zend_Auth::getInstance()->getStorage()->read();
$user = new Application_Model_User($userInfo->id); $user = new Application_Model_User($userInfo->id);
$isAdminOrPM = $user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER)); $isAdminOrPM = $user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER));
@ -917,7 +935,8 @@ class Application_Model_Schedule {
} }
} }
public static function checkOverlappingShows($show_start, $show_end, $update=false, $instanceId=null) { public static function checkOverlappingShows($show_start, $show_end, $update=false, $instanceId=null)
{
global $CC_CONFIG; global $CC_CONFIG;
$overlapping = false; $overlapping = false;
@ -944,6 +963,7 @@ class Application_Model_Schedule {
break; break;
} }
} }
return $overlapping; return $overlapping;
} }
} }

View file

@ -1,7 +1,7 @@
<?php <?php
class Application_Model_Scheduler { class Application_Model_Scheduler
{
private $con; private $con;
private $fileInfo = array( private $fileInfo = array(
"id" => "", "id" => "",
@ -19,8 +19,8 @@ class Application_Model_Scheduler {
private $checkUserPermissions = true; private $checkUserPermissions = true;
public function __construct() { public function __construct()
{
$this->con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME); $this->con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME);
$this->epochNow = microtime(true); $this->epochNow = microtime(true);
@ -35,18 +35,18 @@ class Application_Model_Scheduler {
$this->user = Application_Model_User::getCurrentUser(); $this->user = Application_Model_User::getCurrentUser();
} }
public function setCheckUserPermissions($value) { public function setCheckUserPermissions($value)
{
$this->checkUserPermissions = $value; $this->checkUserPermissions = $value;
} }
/* /*
* make sure any incoming requests for scheduling are ligit. * make sure any incoming requests for scheduling are ligit.
* *
* @param array $items, an array containing pks of cc_schedule items. * @param array $items, an array containing pks of cc_schedule items.
*/ */
private function validateRequest($items) { private function validateRequest($items)
{
$nowEpoch = floatval($this->nowDT->format("U.u")); $nowEpoch = floatval($this->nowDT->format("U.u"));
for ($i = 0; $i < count($items); $i++) { for ($i = 0; $i < count($items); $i++) {
@ -121,8 +121,8 @@ class Application_Model_Scheduler {
* *
* @return $files * @return $files
*/ */
private function retrieveMediaFiles($id, $type) { private function retrieveMediaFiles($id, $type)
{
$files = array(); $files = array();
if ($type === "audioclip") { if ($type === "audioclip") {
@ -130,8 +130,7 @@ class Application_Model_Scheduler {
if (is_null($file) || !$file->getDbFileExists()) { if (is_null($file) || !$file->getDbFileExists()) {
throw new Exception("A selected File does not exist!"); throw new Exception("A selected File does not exist!");
} } else {
else {
$data = $this->fileInfo; $data = $this->fileInfo;
$data["id"] = $id; $data["id"] = $id;
$data["cliplength"] = $file->getDbLength(); $data["cliplength"] = $file->getDbLength();
@ -146,8 +145,7 @@ class Application_Model_Scheduler {
$files[] = $data; $files[] = $data;
} }
} } elseif ($type === "playlist") {
else if ($type === "playlist") {
$contents = CcPlaylistcontentsQuery::create() $contents = CcPlaylistcontentsQuery::create()
->orderByDbPosition() ->orderByDbPosition()
@ -186,8 +184,8 @@ class Application_Model_Scheduler {
* *
* @return DateTime endDT in UTC * @return DateTime endDT in UTC
*/ */
private function findEndTime($p_startDT, $p_duration) { private function findEndTime($p_startDT, $p_duration)
{
$startEpoch = $p_startDT->format("U.u"); $startEpoch = $p_startDT->format("U.u");
$durationSeconds = Application_Model_Playlist::playlistTimeToSeconds($p_duration); $durationSeconds = Application_Model_Playlist::playlistTimeToSeconds($p_duration);
@ -205,8 +203,8 @@ class Application_Model_Scheduler {
return $dt; return $dt;
} }
private function findNextStartTime($DT, $instance) { private function findNextStartTime($DT, $instance)
{
$sEpoch = $DT->format("U.u"); $sEpoch = $DT->format("U.u");
$nEpoch = $this->epochNow; $nEpoch = $this->epochNow;
@ -227,8 +225,7 @@ class Application_Model_Scheduler {
->setDbPlayoutStatus(-1) ->setDbPlayoutStatus(-1)
->setDbInstanceId($instance->getDbId()) ->setDbInstanceId($instance->getDbId())
->save($this->con); ->save($this->con);
} } else {
else {
$nextDT = $DT; $nextDT = $DT;
} }
@ -240,8 +237,8 @@ class Application_Model_Scheduler {
* @param array $exclude * @param array $exclude
* ids of sched items to remove from the calulation. * ids of sched items to remove from the calulation.
*/ */
private function removeGaps($showInstance, $exclude=null) { private function removeGaps($showInstance, $exclude=null)
{
Logging::log("removing gaps from show instance #".$showInstance); Logging::log("removing gaps from show instance #".$showInstance);
$instance = CcShowInstancesQuery::create()->findPK($showInstance, $this->con); $instance = CcShowInstancesQuery::create()->findPK($showInstance, $this->con);
@ -257,7 +254,6 @@ class Application_Model_Scheduler {
->orderByDbStarts() ->orderByDbStarts()
->find($this->con); ->find($this->con);
foreach ($schedule as $item) { foreach ($schedule as $item) {
$itemEndDT = $this->findEndTime($itemStartDT, $item->getDbClipLength()); $itemEndDT = $this->findEndTime($itemStartDT, $item->getDbClipLength());
@ -276,8 +272,8 @@ class Application_Model_Scheduler {
* @param array $fileIds * @param array $fileIds
* @param array $playlistIds * @param array $playlistIds
*/ */
private function insertAfter($scheduleItems, $schedFiles, $adjustSched = true) { private function insertAfter($scheduleItems, $schedFiles, $adjustSched = true)
{
try { try {
$affectedShowInstances = array(); $affectedShowInstances = array();
@ -339,8 +335,7 @@ class Application_Model_Scheduler {
//need to keep same id for resources if we want REST. //need to keep same id for resources if we want REST.
if (isset($file['sched_id'])) { if (isset($file['sched_id'])) {
$sched = CcScheduleQuery::create()->findPK($file['sched_id'], $this->con); $sched = CcScheduleQuery::create()->findPK($file['sched_id'], $this->con);
} } else {
else {
$sched = new CcSchedule(); $sched = new CcSchedule();
} }
Logging::log(print_r($file,true)); Logging::log(print_r($file,true));
@ -408,8 +403,7 @@ class Application_Model_Scheduler {
$endProfile = microtime(true); $endProfile = microtime(true);
Logging::debug("updating last scheduled timestamp."); Logging::debug("updating last scheduled timestamp.");
Logging::debug(floatval($endProfile) - floatval($startProfile)); Logging::debug(floatval($endProfile) - floatval($startProfile));
} } catch (Exception $e) {
catch (Exception $e) {
Logging::debug($e->getMessage()); Logging::debug($e->getMessage());
throw $e; throw $e;
} }
@ -419,8 +413,8 @@ class Application_Model_Scheduler {
* @param array $scheduleItems * @param array $scheduleItems
* @param array $mediaItems * @param array $mediaItems
*/ */
public function scheduleAfter($scheduleItems, $mediaItems, $adjustSched = true) { public function scheduleAfter($scheduleItems, $mediaItems, $adjustSched = true)
{
$this->con->beginTransaction(); $this->con->beginTransaction();
$schedFiles = array(); $schedFiles = array();
@ -437,8 +431,7 @@ class Application_Model_Scheduler {
$this->con->commit(); $this->con->commit();
Application_Model_RabbitMq::PushSchedule(); Application_Model_RabbitMq::PushSchedule();
} } catch (Exception $e) {
catch (Exception $e) {
$this->con->rollback(); $this->con->rollback();
throw $e; throw $e;
} }
@ -448,8 +441,8 @@ class Application_Model_Scheduler {
* @param array $selectedItem * @param array $selectedItem
* @param array $afterItem * @param array $afterItem
*/ */
public function moveItem($selectedItems, $afterItems, $adjustSched = true) { public function moveItem($selectedItems, $afterItems, $adjustSched = true)
{
$startProfile = microtime(true); $startProfile = microtime(true);
$this->con->beginTransaction(); $this->con->beginTransaction();
@ -492,8 +485,7 @@ class Application_Model_Scheduler {
$schedId = $selected->getDbId(); $schedId = $selected->getDbId();
if (isset($modifiedMap[$showInstanceId])) { if (isset($modifiedMap[$showInstanceId])) {
array_push($modifiedMap[$showInstanceId], $schedId); array_push($modifiedMap[$showInstanceId], $schedId);
} } else {
else {
$modifiedMap[$showInstanceId] = array($schedId); $modifiedMap[$showInstanceId] = array($schedId);
} }
} }
@ -530,15 +522,14 @@ class Application_Model_Scheduler {
$this->con->commit(); $this->con->commit();
Application_Model_RabbitMq::PushSchedule(); Application_Model_RabbitMq::PushSchedule();
} } catch (Exception $e) {
catch (Exception $e) {
$this->con->rollback(); $this->con->rollback();
throw $e; throw $e;
} }
} }
public function removeItems($scheduledItems, $adjustSched = true) { public function removeItems($scheduledItems, $adjustSched = true)
{
$showInstances = array(); $showInstances = array();
$this->con->beginTransaction(); $this->con->beginTransaction();
@ -575,8 +566,7 @@ class Application_Model_Scheduler {
->setDbClipLength($cliplength) ->setDbClipLength($cliplength)
->setDbEnds($this->nowDT) ->setDbEnds($this->nowDT)
->save($this->con); ->save($this->con);
} } else {
else {
$removedItem->delete($this->con); $removedItem->delete($this->con);
} }
} }
@ -613,8 +603,7 @@ class Application_Model_Scheduler {
$this->con->commit(); $this->con->commit();
Application_Model_RabbitMq::PushSchedule(); Application_Model_RabbitMq::PushSchedule();
} } catch (Exception $e) {
catch (Exception $e) {
$this->con->rollback(); $this->con->rollback();
throw $e; throw $e;
} }
@ -625,8 +614,8 @@ class Application_Model_Scheduler {
* *
* @param $p_id id of the show instance to cancel. * @param $p_id id of the show instance to cancel.
*/ */
public function cancelShow($p_id) { public function cancelShow($p_id)
{
$this->con->beginTransaction(); $this->con->beginTransaction();
try { try {
@ -652,8 +641,7 @@ class Application_Model_Scheduler {
$this->removeItems($remove, false); $this->removeItems($remove, false);
} }
} } else {
else {
$rebroadcasts = $instance->getCcShowInstancessRelatedByDbId(null, $this->con); $rebroadcasts = $instance->getCcShowInstancessRelatedByDbId(null, $this->con);
$rebroadcasts->delete($this->con); $rebroadcasts->delete($this->con);
} }
@ -666,8 +654,7 @@ class Application_Model_Scheduler {
if ($instance->getDbRecord()) { if ($instance->getDbRecord()) {
Application_Model_RabbitMq::SendMessageToShowRecorder("cancel_recording"); Application_Model_RabbitMq::SendMessageToShowRecorder("cancel_recording");
} }
} } catch (Exception $e) {
catch (Exception $e) {
$this->con->rollback(); $this->con->rollback();
throw $e; throw $e;
} }

View file

@ -1,8 +1,8 @@
<?php <?php
class Application_Model_ServiceRegister { class Application_Model_ServiceRegister
{
public static function Register($p_componentName, $p_ipAddress){ public static function Register($p_componentName, $p_ipAddress)
{
$component = CcServiceRegisterQuery::create()->findOneByDbName($p_componentName); $component = CcServiceRegisterQuery::create()->findOneByDbName($p_componentName);
if ($component == NULL) { if ($component == NULL) {

View file

@ -1,7 +1,7 @@
<?php <?php
class Application_Model_Show { class Application_Model_Show
{
private $_showId; private $_showId;
public function __construct($showId=NULL) public function __construct($showId=NULL)
@ -12,6 +12,7 @@ class Application_Model_Show {
public function getName() public function getName()
{ {
$show = CcShowQuery::create()->findPK($this->_showId); $show = CcShowQuery::create()->findPK($this->_showId);
return $show->getDbName(); return $show->getDbName();
} }
@ -22,25 +23,29 @@ class Application_Model_Show {
Application_Model_RabbitMq::PushSchedule(); Application_Model_RabbitMq::PushSchedule();
} }
public function setAirtimeAuthFlag($flag){ public function setAirtimeAuthFlag($flag)
{
$show = CcShowQuery::create()->findPK($this->_showId); $show = CcShowQuery::create()->findPK($this->_showId);
$show->setDbLiveStreamUsingAirtimeAuth($flag); $show->setDbLiveStreamUsingAirtimeAuth($flag);
$show->save(); $show->save();
} }
public function setCustomAuthFlag($flag){ public function setCustomAuthFlag($flag)
{
$show = CcShowQuery::create()->findPK($this->_showId); $show = CcShowQuery::create()->findPK($this->_showId);
$show->setDbLiveStreamUsingCustomAuth($flag); $show->setDbLiveStreamUsingCustomAuth($flag);
$show->save(); $show->save();
} }
public function setCustomUsername($username){ public function setCustomUsername($username)
{
$show = CcShowQuery::create()->findPK($this->_showId); $show = CcShowQuery::create()->findPK($this->_showId);
$show->setDbLiveStreamUser($username); $show->setDbLiveStreamUser($username);
$show->save(); $show->save();
} }
public function setCustomPassword($password){ public function setCustomPassword($password)
{
$show = CcShowQuery::create()->findPK($this->_showId); $show = CcShowQuery::create()->findPK($this->_showId);
$show->setDbLiveStreamPass($password); $show->setDbLiveStreamPass($password);
$show->save(); $show->save();
@ -49,6 +54,7 @@ class Application_Model_Show {
public function getDescription() public function getDescription()
{ {
$show = CcShowQuery::create()->findPK($this->_showId); $show = CcShowQuery::create()->findPK($this->_showId);
return $show->getDbDescription(); return $show->getDbDescription();
} }
@ -61,6 +67,7 @@ class Application_Model_Show {
public function getColor() public function getColor()
{ {
$show = CcShowQuery::create()->findPK($this->_showId); $show = CcShowQuery::create()->findPK($this->_showId);
return $show->getDbColor(); return $show->getDbColor();
} }
@ -73,6 +80,7 @@ class Application_Model_Show {
public function getUrl() public function getUrl()
{ {
$show = CcShowQuery::create()->findPK($this->_showId); $show = CcShowQuery::create()->findPK($this->_showId);
return $show->getDbUrl(); return $show->getDbUrl();
} }
@ -85,6 +93,7 @@ class Application_Model_Show {
public function getGenre() public function getGenre()
{ {
$show = CcShowQuery::create()->findPK($this->_showId); $show = CcShowQuery::create()->findPK($this->_showId);
return $show->getDbGenre(); return $show->getDbGenre();
} }
@ -97,6 +106,7 @@ class Application_Model_Show {
public function getBackgroundColor() public function getBackgroundColor()
{ {
$show = CcShowQuery::create()->findPK($this->_showId); $show = CcShowQuery::create()->findPK($this->_showId);
return $show->getDbBackgroundColor(); return $show->getDbBackgroundColor();
} }
@ -166,8 +176,7 @@ class Application_Model_Show {
$hours = $deltaMin/60; $hours = $deltaMin/60;
if ($hours > 0) { if ($hours > 0) {
$hours = floor($hours); $hours = floor($hours);
} } else {
else {
$hours = ceil($hours); $hours = ceil($hours);
} }
@ -205,8 +214,7 @@ class Application_Model_Show {
} }
$con->commit(); $con->commit();
} } catch (Exception $e) {
catch (Exception $e) {
$con->rollback(); $con->rollback();
Logging::log("Couldn't update schedule status."); Logging::log("Couldn't update schedule status.");
Logging::log($e->getMessage()); Logging::log($e->getMessage());
@ -313,7 +321,8 @@ class Application_Model_Show {
* @return boolean * @return boolean
* true if originated from recording, otherwise false. * true if originated from recording, otherwise false.
*/ */
public function isRecorded(){ public function isRecorded()
{
$showInstancesRow = CcShowInstancesQuery::create() $showInstancesRow = CcShowInstancesQuery::create()
->filterByDbShowId($this->getId()) ->filterByDbShowId($this->getId())
->filterByDbRecord(1) ->filterByDbRecord(1)
@ -414,8 +423,7 @@ class Application_Model_Show {
if (!is_null($showDaysRow)) { if (!is_null($showDaysRow)) {
return ($showDaysRow->getDbRepeatType() != -1); return ($showDaysRow->getDbRepeatType() != -1);
} } else {
else {
return false; return false;
} }
} }
@ -437,6 +445,7 @@ class Application_Model_Show {
if (!is_null($showDaysRow)) { if (!is_null($showDaysRow)) {
return $showDaysRow->getDbRepeatType(); return $showDaysRow->getDbRepeatType();
} else } else
return -1; return -1;
} }
@ -457,6 +466,7 @@ class Application_Model_Show {
." ORDER BY last_show DESC"; ." ORDER BY last_show DESC";
$query = $con->query($sql)->fetchColumn(0); $query = $con->query($sql)->fetchColumn(0);
return ($query !== false) ? $query : ""; return ($query !== false) ? $query : "";
} }
@ -470,7 +480,8 @@ class Application_Model_Show {
* it cause any scheduled playlists within those show instances to * it cause any scheduled playlists within those show instances to
* be gone for good. * be gone for good.
*/ */
public function deleteAllInstances(){ public function deleteAllInstances()
{
$con = Propel::getConnection(); $con = Propel::getConnection();
$timestamp = gmdate("Y-m-d H:i:s"); $timestamp = gmdate("Y-m-d H:i:s");
@ -487,7 +498,8 @@ class Application_Model_Show {
* Deletes all future rebroadcast instances of the current * Deletes all future rebroadcast instances of the current
* show object from the show_instances table. * show object from the show_instances table.
*/ */
public function deleteAllRebroadcasts(){ public function deleteAllRebroadcasts()
{
$con = Propel::getConnection(); $con = Propel::getConnection();
$timestamp = gmdate("Y-m-d H:i:s"); $timestamp = gmdate("Y-m-d H:i:s");
@ -510,7 +522,8 @@ class Application_Model_Show {
* @param string $p_date * @param string $p_date
* The date which to delete after, if null deletes from the current timestamp. * The date which to delete after, if null deletes from the current timestamp.
*/ */
public function removeAllInstancesFromDate($p_date=null){ public function removeAllInstancesFromDate($p_date=null)
{
$con = Propel::getConnection(); $con = Propel::getConnection();
$timestamp = gmdate("Y-m-d H:i:s"); $timestamp = gmdate("Y-m-d H:i:s");
@ -542,7 +555,8 @@ class Application_Model_Show {
* @param string $p_date * @param string $p_date
* The date which to delete before * The date which to delete before
*/ */
public function removeAllInstancesBeforeDate($p_date){ public function removeAllInstancesBeforeDate($p_date)
{
$con = Propel::getConnection(); $con = Propel::getConnection();
$timestamp = gmdate("Y-m-d H:i:s"); $timestamp = gmdate("Y-m-d H:i:s");
@ -562,7 +576,8 @@ class Application_Model_Show {
* @return string * @return string
* The start date in the format YYYY-MM-DD * The start date in the format YYYY-MM-DD
*/ */
public function getStartDateAndTime(){ public function getStartDateAndTime()
{
$con = Propel::getConnection(); $con = Propel::getConnection();
$showId = $this->getId(); $showId = $this->getId();
@ -581,6 +596,7 @@ class Application_Model_Show {
$dt = new DateTime($row["first_show"]." ".$row["start_time"], new DateTimeZone($row["timezone"])); $dt = new DateTime($row["first_show"]." ".$row["start_time"], new DateTimeZone($row["timezone"]));
$dt->setTimezone(new DateTimeZone("UTC")); $dt->setTimezone(new DateTimeZone("UTC"));
return $dt->format("Y-m-d H:i"); return $dt->format("Y-m-d H:i");
} }
} }
@ -591,8 +607,10 @@ class Application_Model_Show {
* @return string * @return string
* The start date in the format YYYY-MM-DD * The start date in the format YYYY-MM-DD
*/ */
public function getStartDate(){ public function getStartDate()
{
list($date,) = explode(" ", $this->getStartDateAndTime()); list($date,) = explode(" ", $this->getStartDateAndTime());
return $date; return $date;
} }
@ -603,8 +621,10 @@ class Application_Model_Show {
* The start time in the format HH:MM * The start time in the format HH:MM
*/ */
public function getStartTime(){ public function getStartTime()
{
list(,$time) = explode(" ", $this->getStartDateAndTime()); list(,$time) = explode(" ", $this->getStartDateAndTime());
return $time; return $time;
} }
@ -615,7 +635,8 @@ class Application_Model_Show {
* @return string * @return string
* The end date in the format YYYY-MM-DD * The end date in the format YYYY-MM-DD
*/ */
public function getEndDate(){ public function getEndDate()
{
$startDate = $this->getStartDate(); $startDate = $this->getStartDate();
$startTime = $this->getStartTime(); $startTime = $this->getStartTime();
$duration = $this->getDuration(); $duration = $this->getDuration();
@ -634,7 +655,8 @@ class Application_Model_Show {
* @return string * @return string
* The start time in the format HH:MM:SS * The start time in the format HH:MM:SS
*/ */
public function getEndTime(){ public function getEndTime()
{
$startDate = $this->getStartDate(); $startDate = $this->getStartDate();
$startTime = $this->getStartTime(); $startTime = $this->getStartTime();
$duration = $this->getDuration(); $duration = $this->getDuration();
@ -654,9 +676,11 @@ class Application_Model_Show {
* @return boolean * @return boolean
* true if the StartDate is in the past, false otherwise * true if the StartDate is in the past, false otherwise
*/ */
public function isStartDateTimeInPast(){ public function isStartDateTimeInPast()
{
$date = new Application_Common_DateHelper; $date = new Application_Common_DateHelper;
$current_timestamp = $date->getUtcTimestamp(); $current_timestamp = $date->getUtcTimestamp();
return ($current_timestamp > ($this->getStartDate()." ".$this->getStartTime())); return ($current_timestamp > ($this->getStartDate()." ".$this->getStartTime()));
} }
@ -667,7 +691,8 @@ class Application_Model_Show {
* A simple array containing all ID's of show instance * A simple array containing all ID's of show instance
* scheduled in the future. * scheduled in the future.
*/ */
public function getAllFutureInstanceIds(){ public function getAllFutureInstanceIds()
{
$con = Propel::getConnection(); $con = Propel::getConnection();
$date = new Application_Common_DateHelper; $date = new Application_Common_DateHelper;
@ -685,6 +710,7 @@ class Application_Model_Show {
foreach ($rows as $row) { foreach ($rows as $row) {
$instance_ids[] = $row["id"]; $instance_ids[] = $row["id"];
} }
return $instance_ids; return $instance_ids;
} }
@ -695,7 +721,8 @@ class Application_Model_Show {
* browser. * browser.
* *
*/ */
private function updateDurationTime($p_data){ private function updateDurationTime($p_data)
{
//need to update cc_show_instances, cc_show_days //need to update cc_show_instances, cc_show_days
$con = Propel::getConnection(); $con = Propel::getConnection();
@ -713,10 +740,10 @@ class Application_Model_Show {
."AND ends > TIMESTAMP '$timestamp'"; ."AND ends > TIMESTAMP '$timestamp'";
$con->exec($sql); $con->exec($sql);
} }
private function updateStartDateTime($p_data, $p_endDate){ private function updateStartDateTime($p_data, $p_endDate)
{
//need to update cc_schedule, cc_show_instances, cc_show_days //need to update cc_schedule, cc_show_instances, cc_show_days
$con = Propel::getConnection(); $con = Propel::getConnection();
@ -757,17 +784,20 @@ class Application_Model_Show {
} }
} }
public function getDuration($format=false){ public function getDuration($format=false)
{
$showDay = CcShowDaysQuery::create()->filterByDbShowId($this->getId())->findOne(); $showDay = CcShowDaysQuery::create()->filterByDbShowId($this->getId())->findOne();
if (!$format) { if (!$format) {
return $showDay->getDbDuration(); return $showDay->getDbDuration();
} else { } else {
$info = explode(':',$showDay->getDbDuration()); $info = explode(':',$showDay->getDbDuration());
return str_pad(intval($info[0]),2,'0',STR_PAD_LEFT).'h '.str_pad(intval($info[1]),2,'0',STR_PAD_LEFT).'m'; return str_pad(intval($info[0]),2,'0',STR_PAD_LEFT).'h '.str_pad(intval($info[1]),2,'0',STR_PAD_LEFT).'m';
} }
} }
public function getShowDays(){ public function getShowDays()
{
$showDays = CcShowDaysQuery::create()->filterByDbShowId($this->getId())->find(); $showDays = CcShowDaysQuery::create()->filterByDbShowId($this->getId())->find();
$days = array(); $days = array();
@ -781,7 +811,8 @@ class Application_Model_Show {
/* Only used for shows that aren't repeating. /* Only used for shows that aren't repeating.
* *
* @return Boolean: true if show has an instance, otherwise false. */ * @return Boolean: true if show has an instance, otherwise false. */
public function hasInstance(){ public function hasInstance()
{
return (!is_null($this->getInstance())); return (!is_null($this->getInstance()));
} }
@ -789,7 +820,8 @@ class Application_Model_Show {
* *
* @return CcShowInstancesQuery: An propel object representing a * @return CcShowInstancesQuery: An propel object representing a
* row in the cc_show_instances table. */ * row in the cc_show_instances table. */
public function getInstance(){ public function getInstance()
{
$showInstance = CcShowInstancesQuery::create() $showInstance = CcShowInstancesQuery::create()
->filterByDbShowId($this->getId()) ->filterByDbShowId($this->getId())
->findOne(); ->findOne();
@ -800,7 +832,8 @@ class Application_Model_Show {
/** /**
* returns info about live stream override info * returns info about live stream override info
*/ */
public function getLiveStreamInfo(){ public function getLiveStreamInfo()
{
$info = array(); $info = array();
if ($this->_showId == null) { if ($this->_showId == null) {
return $info; return $info;
@ -811,6 +844,7 @@ class Application_Model_Show {
$info['cb_custom_auth'] = $ccShow->getDbLiveStreamUsingCustomAuth(); $info['cb_custom_auth'] = $ccShow->getDbLiveStreamUsingCustomAuth();
$info['custom_username'] = $ccShow->getDbLiveStreamUser(); $info['custom_username'] = $ccShow->getDbLiveStreamUser();
$info['custom_password'] = $ccShow->getDbLiveStreamPass(); $info['custom_password'] = $ccShow->getDbLiveStreamPass();
return $info; return $info;
} }
} }
@ -825,11 +859,11 @@ class Application_Model_Show {
* *
* @return Boolean: true if show has an instance on $p_dateTime, * @return Boolean: true if show has an instance on $p_dateTime,
* otherwise false. */ * otherwise false. */
public function hasInstanceOnDate($p_dateTime){ public function hasInstanceOnDate($p_dateTime)
{
return (!is_null($this->getInstanceOnDate($p_dateTime))); return (!is_null($this->getInstanceOnDate($p_dateTime)));
} }
/* Only used for shows that are repeating. Note that this will return /* Only used for shows that are repeating. Note that this will return
* shows that have been "modified" (does not check if the "modified_instance" * shows that have been "modified" (does not check if the "modified_instance"
* column is set to true). This is intended behaviour. * column is set to true). This is intended behaviour.
@ -838,7 +872,8 @@ class Application_Model_Show {
* *
* @return CcShowInstancesQuery: An propel object representing a * @return CcShowInstancesQuery: An propel object representing a
* row in the cc_show_instances table. */ * row in the cc_show_instances table. */
public function getInstanceOnDate($p_dateTime){ public function getInstanceOnDate($p_dateTime)
{
$con = Propel::getConnection(); $con = Propel::getConnection();
$timestamp = $p_dateTime->format("Y-m-d H:i:s"); $timestamp = $p_dateTime->format("Y-m-d H:i:s");
@ -850,6 +885,7 @@ class Application_Model_Show {
$query = $con->query($sql); $query = $con->query($sql);
$row = ($query !== false) ? $query->fetchColumn(0) : null; $row = ($query !== false) ? $query->fetchColumn(0) : null;
return CcShowInstancesQuery::create() return CcShowInstancesQuery::create()
->findPk($row); ->findPk($row);
} }
@ -890,8 +926,7 @@ class Application_Model_Show {
if (count($intersect) != count($p_data['add_show_day_check'])) { if (count($intersect) != count($p_data['add_show_day_check'])) {
$repeatingDaysChanged = true; $repeatingDaysChanged = true;
} }
} } else {
else {
$repeatingDaysChanged = true; $repeatingDaysChanged = true;
} }
@ -923,8 +958,7 @@ class Application_Model_Show {
if ((strlen($this->getRepeatingEndDate()) == 0) == $p_data['add_show_no_end']) { if ((strlen($this->getRepeatingEndDate()) == 0) == $p_data['add_show_no_end']) {
//show "Never Ends" option was toggled. //show "Never Ends" option was toggled.
if ($p_data['add_show_no_end']) { if ($p_data['add_show_no_end']) {
} } else {
else {
$this->removeAllInstancesFromDate($p_endDate); $this->removeAllInstancesFromDate($p_endDate);
} }
} }
@ -957,14 +991,12 @@ class Application_Model_Show {
if ($data['add_show_no_end']) { if ($data['add_show_no_end']) {
$endDate = NULL; $endDate = NULL;
} } elseif ($data['add_show_repeats']) {
else if ($data['add_show_repeats']) {
$endDateTime = new DateTime($data['add_show_end_date']); $endDateTime = new DateTime($data['add_show_end_date']);
//$endDateTime->setTimezone(new DateTimeZone('UTC')); //$endDateTime->setTimezone(new DateTimeZone('UTC'));
$endDateTime->add(new DateInterval("P1D")); $endDateTime->add(new DateInterval("P1D"));
$endDate = $endDateTime->format("Y-m-d"); $endDate = $endDateTime->format("Y-m-d");
} } else {
else {
$endDateTime = new DateTime($data['add_show_start_date']); $endDateTime = new DateTime($data['add_show_start_date']);
//$endDateTime->setTimezone(new DateTimeZone('UTC')); //$endDateTime->setTimezone(new DateTimeZone('UTC'));
$endDateTime->add(new DateInterval("P1D")); $endDateTime->add(new DateInterval("P1D"));
@ -1075,8 +1107,7 @@ class Application_Model_Show {
$showRebroad->save(); $showRebroad->save();
} }
} }
} } elseif ($isRecorded && $data['add_show_rebroadcast'] && ($repeatType == -1)) {
else if ($isRecorded && $data['add_show_rebroadcast'] && ($repeatType == -1)){
for ($i=1; $i<=10; $i++) { for ($i=1; $i<=10; $i++) {
if ($data['add_show_rebroadcast_date_absolute_'.$i]) { if ($data['add_show_rebroadcast_date_absolute_'.$i]) {
$con = Propel::getConnection(CcShowPeer::DATABASE_NAME); $con = Propel::getConnection(CcShowPeer::DATABASE_NAME);
@ -1127,8 +1158,7 @@ class Application_Model_Show {
} }
$con->commit(); $con->commit();
} } catch (Exception $e) {
catch (Exception $e) {
$con->rollback(); $con->rollback();
Logging::log("Couldn't update schedule status."); Logging::log("Couldn't update schedule status.");
Logging::log($e->getMessage()); Logging::log($e->getMessage());
@ -1137,6 +1167,7 @@ class Application_Model_Show {
Application_Model_Show::populateShowUntil($showId); Application_Model_Show::populateShowUntil($showId);
Application_Model_RabbitMq::PushSchedule(); Application_Model_RabbitMq::PushSchedule();
return $showId; return $showId;
} }
@ -1178,17 +1209,15 @@ class Application_Model_Show {
* @param DateTime $p_populateUntilDateTime * @param DateTime $p_populateUntilDateTime
* DateTime object in UTC time. * DateTime object in UTC time.
*/ */
private static function populateShow($p_showDaysRow, $p_populateUntilDateTime) { private static function populateShow($p_showDaysRow, $p_populateUntilDateTime)
{
if ($p_showDaysRow["repeat_type"] == -1) { if ($p_showDaysRow["repeat_type"] == -1) {
Application_Model_Show::populateNonRepeatingShow($p_showDaysRow, $p_populateUntilDateTime); Application_Model_Show::populateNonRepeatingShow($p_showDaysRow, $p_populateUntilDateTime);
} } elseif ($p_showDaysRow["repeat_type"] == 0) {
else if($p_showDaysRow["repeat_type"] == 0) {
Application_Model_Show::populateRepeatingShow($p_showDaysRow, $p_populateUntilDateTime, 'P7D'); Application_Model_Show::populateRepeatingShow($p_showDaysRow, $p_populateUntilDateTime, 'P7D');
} } elseif ($p_showDaysRow["repeat_type"] == 1) {
else if($p_showDaysRow["repeat_type"] == 1) {
Application_Model_Show::populateRepeatingShow($p_showDaysRow, $p_populateUntilDateTime, 'P14D'); Application_Model_Show::populateRepeatingShow($p_showDaysRow, $p_populateUntilDateTime, 'P14D');
} } elseif ($p_showDaysRow["repeat_type"] == 2) {
else if($p_showDaysRow["repeat_type"] == 2) {
Application_Model_Show::populateRepeatingShow($p_showDaysRow, $p_populateUntilDateTime, 'P1M'); Application_Model_Show::populateRepeatingShow($p_showDaysRow, $p_populateUntilDateTime, 'P1M');
} }
Application_Model_RabbitMq::PushSchedule(); Application_Model_RabbitMq::PushSchedule();
@ -1348,7 +1377,8 @@ class Application_Model_Show {
Application_Model_Show::setNextPop($start, $show_id, $day); Application_Model_Show::setNextPop($start, $show_id, $day);
} }
private static function advanceRepeatingDate($p_interval, $start, $timezone){ private static function advanceRepeatingDate($p_interval, $start, $timezone)
{
$startDt = new DateTime($start, new DateTimeZone($timezone)); $startDt = new DateTime($start, new DateTimeZone($timezone));
if ($p_interval == 'P1M') { if ($p_interval == 'P1M') {
/* When adding months, there is a problem if we are on January 31st and add one month with PHP. /* When adding months, there is a problem if we are on January 31st and add one month with PHP.
@ -1411,6 +1441,7 @@ class Application_Model_Show {
$duration = explode(":", $p_duration); $duration = explode(":", $p_duration);
list($hours, $mins) = array_slice($duration, 0, 2); list($hours, $mins) = array_slice($duration, 0, 2);
$endDateTime->add(new DateInterval("PT{$hours}H{$mins}M")); $endDateTime->add(new DateInterval("PT{$hours}H{$mins}M"));
return array($startDateTime, $endDateTime); return array($startDateTime, $endDateTime);
} }
@ -1433,8 +1464,8 @@ class Application_Model_Show {
* string of user's timezone "Europe/Prague" * string of user's timezone "Europe/Prague"
* *
*/ */
private static function createRebroadcastInstances($p_rebroadcasts, $p_currentUtcTimestamp, $p_showId, $p_showInstanceId, $p_startTime, $p_duration, $p_timezone=null){ private static function createRebroadcastInstances($p_rebroadcasts, $p_currentUtcTimestamp, $p_showId, $p_showInstanceId, $p_startTime, $p_duration, $p_timezone=null)
{
//Y-m-d //Y-m-d
//use only the date part of the show start time stamp for the offsets to work properly. //use only the date part of the show start time stamp for the offsets to work properly.
$date = explode(" ", $p_startTime); $date = explode(" ", $p_startTime);
@ -1500,8 +1531,7 @@ class Application_Model_Show {
$sql = $sql." AND (si1.starts >= '{$start_string}' AND si1.starts < timestamp '{$end_string}')"; $sql = $sql." AND (si1.starts >= '{$start_string}' AND si1.starts < timestamp '{$end_string}')";
$sql = $sql." AND (si1.record = 1)"; $sql = $sql." AND (si1.record = 1)";
} } else {
else {
$sql = $sql." AND ((si1.starts >= '{$start_string}' AND si1.starts < '{$end_string}') $sql = $sql." AND ((si1.starts >= '{$start_string}' AND si1.starts < '{$end_string}')
OR (si1.ends > '{$start_string}' AND si1.ends <= '{$end_string}') OR (si1.ends > '{$start_string}' AND si1.ends <= '{$end_string}')
@ -1520,6 +1550,7 @@ class Application_Model_Show {
} }
$result = $con->query($sql)->fetchAll(); $result = $con->query($sql)->fetchAll();
return $result; return $result;
} }
@ -1551,8 +1582,7 @@ class Application_Model_Show {
$endTimeString = $p_endTimestamp->format("Y-m-d H:i:s"); $endTimeString = $p_endTimestamp->format("Y-m-d H:i:s");
if (!is_null($p_startTimestamp)) { if (!is_null($p_startTimestamp)) {
$startTimeString = $p_startTimestamp->format("Y-m-d H:i:s"); $startTimeString = $p_startTimestamp->format("Y-m-d H:i:s");
} } else {
else {
$today_timestamp = new DateTime("now", new DateTimeZone("UTC")); $today_timestamp = new DateTime("now", new DateTimeZone("UTC"));
$startTimeString = $today_timestamp->format("Y-m-d H:i:s"); $startTimeString = $today_timestamp->format("Y-m-d H:i:s");
} }
@ -1605,11 +1635,9 @@ class Application_Model_Show {
if ($p_editable && $show["record"] && $nowEpoch > $startsEpoch) { if ($p_editable && $show["record"] && $nowEpoch > $startsEpoch) {
$options["editable"] = false; $options["editable"] = false;
} } elseif ($p_editable && $show["rebroadcast"] && $nowEpoch > $parentStartsEpoch) {
else if ($p_editable && $show["rebroadcast"] && $nowEpoch > $parentStartsEpoch) {
$options["editable"] = false; $options["editable"] = false;
} } elseif ($p_editable && $nowEpoch < $endsEpoch) {
else if ($p_editable && $nowEpoch < $endsEpoch) {
$options["editable"] = true; $options["editable"] = true;
} }
$events[] = Application_Model_Show::makeFullCalendarEvent($show, $options); $events[] = Application_Model_Show::makeFullCalendarEvent($show, $options);
@ -1622,7 +1650,8 @@ class Application_Model_Show {
* Calculates the percentage of a show scheduled given the start and end times in date/time format * Calculates the percentage of a show scheduled given the start and end times in date/time format
* and the time_filled as the total time the schow is scheduled for in time format. * and the time_filled as the total time the schow is scheduled for in time format.
**/ **/
private static function getPercentScheduled($p_starts, $p_ends, $p_time_filled){ private static function getPercentScheduled($p_starts, $p_ends, $p_time_filled)
{
$durationSeconds = (strtotime($p_ends) - strtotime($p_starts)); $durationSeconds = (strtotime($p_ends) - strtotime($p_starts));
$time_filled = Application_Model_Schedule::WallTimeToMillisecs($p_time_filled) / 1000; $time_filled = Application_Model_Schedule::WallTimeToMillisecs($p_time_filled) / 1000;
$percent = ceil(( $time_filled / $durationSeconds) * 100); $percent = ceil(( $time_filled / $durationSeconds) * 100);
@ -1677,8 +1706,8 @@ class Application_Model_Show {
/* Takes in a UTC DateTime object. /* Takes in a UTC DateTime object.
* Converts this to local time, since cc_show days * Converts this to local time, since cc_show days
* requires local time. */ * requires local time. */
public function setShowFirstShow($p_dt){ public function setShowFirstShow($p_dt)
{
//clone object since we are modifying it and it was passed by reference. //clone object since we are modifying it and it was passed by reference.
$dt = clone $p_dt; $dt = clone $p_dt;
@ -1697,8 +1726,8 @@ class Application_Model_Show {
/* Takes in a UTC DateTime object /* Takes in a UTC DateTime object
* Converts this to local time, since cc_show days * Converts this to local time, since cc_show days
* requires local time. */ * requires local time. */
public function setShowLastShow($p_dt){ public function setShowLastShow($p_dt)
{
//clone object since we are modifying it and it was passed by reference. //clone object since we are modifying it and it was passed by reference.
$dt = clone $p_dt; $dt = clone $p_dt;
@ -1741,6 +1770,7 @@ class Application_Model_Show {
// Convert back to local timezone // Convert back to local timezone
$rows = $con->query($sql)->fetchAll(); $rows = $con->query($sql)->fetchAll();
return $rows; return $rows;
} }
@ -1884,6 +1914,7 @@ class Application_Model_Show {
} }
$rows = $con->query($sql)->fetchAll(); $rows = $con->query($sql)->fetchAll();
return $rows; return $rows;
} }

View file

@ -3,8 +3,8 @@
require_once 'formatters/LengthFormatter.php'; require_once 'formatters/LengthFormatter.php';
require_once 'formatters/TimeFilledFormatter.php'; require_once 'formatters/TimeFilledFormatter.php';
class Application_Model_ShowBuilder { class Application_Model_ShowBuilder
{
private $timezone; private $timezone;
//in UTC timezone //in UTC timezone
@ -49,8 +49,8 @@ class Application_Model_ShowBuilder {
* @param DateTime $p_startsDT * @param DateTime $p_startsDT
* @param DateTime $p_endsDT * @param DateTime $p_endsDT
*/ */
public function __construct($p_startDT, $p_endDT, $p_opts) { public function __construct($p_startDT, $p_endDT, $p_opts)
{
$this->startDT = $p_startDT; $this->startDT = $p_startDT;
$this->endDT = $p_endDT; $this->endDT = $p_endDT;
$this->timezone = date_default_timezone_get(); $this->timezone = date_default_timezone_get();
@ -60,8 +60,8 @@ class Application_Model_ShowBuilder {
$this->currentShow = false; $this->currentShow = false;
} }
private function getUsersShows() { private function getUsersShows()
{
$shows = array(); $shows = array();
$host_shows = CcShowHostsQuery::create() $host_shows = CcShowHostsQuery::create()
@ -77,8 +77,8 @@ class Application_Model_ShowBuilder {
} }
//check to see if this row should be editable by the user. //check to see if this row should be editable by the user.
private function isAllowed($p_item, &$row) { private function isAllowed($p_item, &$row)
{
//cannot schedule in a recorded show. //cannot schedule in a recorded show.
if (intval($p_item["si_record"]) === 1) { if (intval($p_item["si_record"]) === 1) {
return; return;
@ -89,7 +89,8 @@ class Application_Model_ShowBuilder {
} }
} }
private function getItemColor($p_item, &$row) { private function getItemColor($p_item, &$row)
{
$defaultColor = "ffffff"; $defaultColor = "ffffff";
$defaultBackground = "3366cc"; $defaultBackground = "3366cc";
@ -107,17 +108,16 @@ class Application_Model_ShowBuilder {
} }
//information about whether a track is inside|boundary|outside a show. //information about whether a track is inside|boundary|outside a show.
private function getItemStatus($p_item, &$row) { private function getItemStatus($p_item, &$row)
{
$row["status"] = intval($p_item["playout_status"]); $row["status"] = intval($p_item["playout_status"]);
} }
private function getRowTimestamp($p_item, &$row) { private function getRowTimestamp($p_item, &$row)
{
if (is_null($p_item["si_last_scheduled"])) { if (is_null($p_item["si_last_scheduled"])) {
$ts = 0; $ts = 0;
} } else {
else {
$dt = new DateTime($p_item["si_last_scheduled"], new DateTimeZone("UTC")); $dt = new DateTime($p_item["si_last_scheduled"], new DateTimeZone("UTC"));
$ts = intval($dt->format("U")); $ts = intval($dt->format("U"));
} }
@ -130,18 +130,15 @@ class Application_Model_ShowBuilder {
* 1 = current * 1 = current
* 2 = future * 2 = future
*/ */
private function getScheduledStatus($p_epochItemStart, $p_epochItemEnd, &$row) { private function getScheduledStatus($p_epochItemStart, $p_epochItemEnd, &$row)
{
if ($row["footer"] === true && $this->epoch_now > $p_epochItemStart && $this->epoch_now > $p_epochItemEnd) { if ($row["footer"] === true && $this->epoch_now > $p_epochItemStart && $this->epoch_now > $p_epochItemEnd) {
$row["scheduled"] = 0; $row["scheduled"] = 0;
} } elseif ($row["footer"] === true && $this->epoch_now < $p_epochItemEnd) {
else if ($row["footer"] === true && $this->epoch_now < $p_epochItemEnd) {
$row["scheduled"] = 2; $row["scheduled"] = 2;
} } elseif ($row["header"] === true && $this->epoch_now >= $p_epochItemStart) {
else if ($row["header"] === true && $this->epoch_now >= $p_epochItemStart) {
$row["scheduled"] = 0; $row["scheduled"] = 0;
} } elseif ($row["header"] === true && $this->epoch_now < $p_epochItemEnd) {
else if ($row["header"] === true && $this->epoch_now < $p_epochItemEnd) {
$row["scheduled"] = 2; $row["scheduled"] = 2;
} }
@ -163,8 +160,8 @@ class Application_Model_ShowBuilder {
} }
} }
private function makeHeaderRow($p_item) { private function makeHeaderRow($p_item)
{
$row = $this->defaultRowArray; $row = $this->defaultRowArray;
$this->isAllowed($p_item, $row); $this->isAllowed($p_item, $row);
$this->getRowTimestamp($p_item, $row); $this->getRowTimestamp($p_item, $row);
@ -188,8 +185,7 @@ class Application_Model_ShowBuilder {
$time = $dt->format("Y-m-d H:i"); $time = $dt->format("Y-m-d H:i");
$row["rebroadcast_title"] = "Rebroadcast of {$name} from {$time}"; $row["rebroadcast_title"] = "Rebroadcast of {$name} from {$time}";
} } elseif (intval($p_item["si_record"]) === 1) {
else if (intval($p_item["si_record"]) === 1) {
$row["record"] = true; $row["record"] = true;
if (Application_Model_Preference::GetUploadToSoundcloudOption()) { if (Application_Model_Preference::GetUploadToSoundcloudOption()) {
@ -204,8 +200,7 @@ class Application_Model_ShowBuilder {
if ($startsEpoch < $this->epoch_now && $endsEpoch > $this->epoch_now) { if ($startsEpoch < $this->epoch_now && $endsEpoch > $this->epoch_now) {
$row["currentShow"] = true; $row["currentShow"] = true;
$this->currentShow = true; $this->currentShow = true;
} } else {
else {
$this->currentShow = false; $this->currentShow = false;
} }
@ -229,7 +224,8 @@ class Application_Model_ShowBuilder {
return $row; return $row;
} }
private function makeScheduledItemRow($p_item) { private function makeScheduledItemRow($p_item)
{
$row = $this->defaultRowArray; $row = $this->defaultRowArray;
if (isset($p_item["sched_starts"])) { if (isset($p_item["sched_starts"])) {
@ -283,8 +279,7 @@ class Application_Model_ShowBuilder {
$endsEpoch = floatval($showEndDT->format("U.u")); $endsEpoch = floatval($showEndDT->format("U.u"));
$this->getScheduledStatus($startsEpoch, $endsEpoch, $row); $this->getScheduledStatus($startsEpoch, $endsEpoch, $row);
} } else {
else {
$row["empty"] = true; $row["empty"] = true;
$row["id"] = 0 ; $row["id"] = 0 ;
$row["instance"] = intval($p_item["si_id"]); $row["instance"] = intval($p_item["si_id"]);
@ -305,8 +300,8 @@ class Application_Model_ShowBuilder {
return $row; return $row;
} }
private function makeFooterRow($p_item) { private function makeFooterRow($p_item)
{
$row = $this->defaultRowArray; $row = $this->defaultRowArray;
$row["footer"] = true; $row["footer"] = true;
$row["instance"] = intval($p_item["si_id"]); $row["instance"] = intval($p_item["si_id"]);
@ -346,14 +341,14 @@ class Application_Model_ShowBuilder {
* @return boolean whether the schedule in the show builder's range has been updated. * @return boolean whether the schedule in the show builder's range has been updated.
* *
*/ */
public function hasBeenUpdatedSince($timestamp, $instances) { public function hasBeenUpdatedSince($timestamp, $instances)
{
$outdated = false; $outdated = false;
$shows = Application_Model_Show::getShows($this->startDT, $this->endDT); $shows = Application_Model_Show::getShows($this->startDT, $this->endDT);
if ($this->opts["showFilter"] !== 0) { if ($this->opts["showFilter"] !== 0) {
$include[] = $this->opts["showFilter"]; $include[] = $this->opts["showFilter"];
} } elseif ($this->opts["myShows"] === 1) {
else if ($this->opts["myShows"] === 1) {
$include = $this->getUsersShows(); $include = $this->getUsersShows();
} }
@ -368,8 +363,7 @@ class Application_Model_ShowBuilder {
if (isset($show["last_scheduled"])) { if (isset($show["last_scheduled"])) {
$dt = new DateTime($show["last_scheduled"], new DateTimeZone("UTC")); $dt = new DateTime($show["last_scheduled"], new DateTimeZone("UTC"));
} } else {
else {
$dt = new DateTime($show["created"], new DateTimeZone("UTC")); $dt = new DateTime($show["created"], new DateTimeZone("UTC"));
} }
@ -392,8 +386,8 @@ class Application_Model_ShowBuilder {
return $outdated; return $outdated;
} }
public function GetItems() { public function GetItems()
{
$current_id = -1; $current_id = -1;
$display_items = array(); $display_items = array();
@ -401,8 +395,7 @@ class Application_Model_ShowBuilder {
if ($this->opts["myShows"] === 1) { if ($this->opts["myShows"] === 1) {
$shows = $this->getUsersShows(); $shows = $this->getUsersShows();
} } elseif ($this->opts["showFilter"] !== 0) {
else if ($this->opts["showFilter"] !== 0) {
$shows[] = $this->opts["showFilter"]; $shows[] = $this->opts["showFilter"];
} }

View file

@ -2,8 +2,8 @@
require_once 'formatters/LengthFormatter.php'; require_once 'formatters/LengthFormatter.php';
class Application_Model_ShowInstance { class Application_Model_ShowInstance
{
private $_instanceId; private $_instanceId;
private $_showInstance; private $_showInstance;
@ -27,11 +27,13 @@ class Application_Model_ShowInstance {
return $this->_instanceId; return $this->_instanceId;
} }
public function getShow(){ public function getShow()
{
return new Application_Model_Show($this->getShowId()); return new Application_Model_Show($this->getShowId());
} }
public function deleteRebroadcasts(){ public function deleteRebroadcasts()
{
$con = Propel::getConnection(); $con = Propel::getConnection();
$timestamp = gmdate("Y-m-d H:i:s"); $timestamp = gmdate("Y-m-d H:i:s");
@ -62,12 +64,14 @@ class Application_Model_ShowInstance {
public function getName() public function getName()
{ {
$show = CcShowQuery::create()->findPK($this->getShowId()); $show = CcShowQuery::create()->findPK($this->getShowId());
return $show->getDbName(); return $show->getDbName();
} }
public function getGenre() public function getGenre()
{ {
$show = CcShowQuery::create()->findPK($this->getShowId()); $show = CcShowQuery::create()->findPK($this->getShowId());
return $show->getDbGenre(); return $show->getDbGenre();
} }
@ -93,6 +97,7 @@ class Application_Model_ShowInstance {
{ {
$showStart = $this->getShowInstanceStart(); $showStart = $this->getShowInstanceStart();
$showStartExplode = explode(" ", $showStart); $showStartExplode = explode(" ", $showStart);
return $showStartExplode[0]; return $showStartExplode[0];
} }
@ -113,6 +118,7 @@ class Application_Model_ShowInstance {
public function getSoundCloudFileId() public function getSoundCloudFileId()
{ {
$file = Application_Model_StoredFile::Recall($this->_showInstance->getDbRecordedFile()); $file = Application_Model_StoredFile::Recall($this->_showInstance->getDbRecordedFile());
return $file->getSoundCloudId(); return $file->getSoundCloudId();
} }
@ -199,8 +205,8 @@ class Application_Model_ShowInstance {
* @return $newDateTime * @return $newDateTime
* php DateTime, $dateTime with the added time deltas. * php DateTime, $dateTime with the added time deltas.
*/ */
private static function addDeltas($dateTime, $deltaDay, $deltaMin) { private static function addDeltas($dateTime, $deltaDay, $deltaMin)
{
$newDateTime = clone $dateTime; $newDateTime = clone $dateTime;
$days = abs($deltaDay); $days = abs($deltaDay);
@ -211,15 +217,13 @@ class Application_Model_ShowInstance {
if ($deltaDay > 0) { if ($deltaDay > 0) {
$newDateTime->add($dayInterval); $newDateTime->add($dayInterval);
} } elseif ($deltaDay < 0) {
else if ($deltaDay < 0){
$newDateTime->sub($dayInterval); $newDateTime->sub($dayInterval);
} }
if ($deltaMin > 0) { if ($deltaMin > 0) {
$newDateTime->add($minInterval); $newDateTime->add($minInterval);
} } elseif ($deltaMin < 0) {
else if ($deltaMin < 0) {
$newDateTime->sub($minInterval); $newDateTime->sub($minInterval);
} }
@ -286,6 +290,7 @@ class Application_Model_ShowInstance {
//recorded show doesn't exist. //recorded show doesn't exist.
catch (Exception $e) { catch (Exception $e) {
$this->_showInstance->delete(); $this->_showInstance->delete();
return "Show was deleted because recorded show does not exist!"; return "Show was deleted because recorded show does not exist!";
} }
@ -537,12 +542,10 @@ class Application_Model_ShowInstance {
->filterByDbId($showId) ->filterByDbId($showId)
->delete(); ->delete();
} }
} } else {
else {
if ($this->isRebroadcast()) { if ($this->isRebroadcast()) {
$this->_showInstance->delete(); $this->_showInstance->delete();
} } else {
else {
$show->delete(); $show->delete();
} }
} }
@ -567,8 +570,7 @@ class Application_Model_ShowInstance {
try { try {
$rebroad = new Application_Model_ShowInstance($rebroadcast->getDbId()); $rebroad = new Application_Model_ShowInstance($rebroadcast->getDbId());
$rebroad->addFileToShow($file_id, false); $rebroad->addFileToShow($file_id, false);
} } catch (Exception $e) {
catch (Exception $e) {
Logging::log("{$e->getFile()}"); Logging::log("{$e->getFile()}");
Logging::log("{$e->getLine()}"); Logging::log("{$e->getLine()}");
Logging::log("{$e->getMessage()}"); Logging::log("{$e->getMessage()}");
@ -586,8 +588,7 @@ class Application_Model_ShowInstance {
$time_arr[1] = "." . $time_arr[1]; $time_arr[1] = "." . $time_arr[1];
$milliseconds = number_format(round($time_arr[1], 2), 2); $milliseconds = number_format(round($time_arr[1], 2), 2);
$time = $time_arr[0] . substr($milliseconds, 1); $time = $time_arr[0] . substr($milliseconds, 1);
} } else {
else {
$time = $time_arr[0] . ".00"; $time = $time_arr[0] . ".00";
} }
} else { } else {
@ -601,6 +602,7 @@ class Application_Model_ShowInstance {
public function getTimeScheduledSecs() public function getTimeScheduledSecs()
{ {
$time_filled = $this->getTimeScheduled(); $time_filled = $this->getTimeScheduled();
return Application_Model_Playlist::playlistTimeToSeconds($time_filled); return Application_Model_Playlist::playlistTimeToSeconds($time_filled);
} }
@ -608,6 +610,7 @@ class Application_Model_ShowInstance {
{ {
$ends = $this->getShowInstanceEnd(null); $ends = $this->getShowInstanceEnd(null);
$starts = $this->getShowInstanceStart(null); $starts = $this->getShowInstanceStart(null);
return intval($ends->format('U')) - intval($starts->format('U')); return intval($ends->format('U')) - intval($starts->format('U'));
} }
@ -678,10 +681,12 @@ class Application_Model_ShowInstance {
."LIMIT 1"; ."LIMIT 1";
$query = $con->query($sql)->fetchColumn(0); $query = $con->query($sql)->fetchColumn(0);
return ($query !== false) ? $query : NULL; return ($query !== false) ? $query : NULL;
} }
public function getShowEndGapTime(){ public function getShowEndGapTime()
{
$showEnd = $this->getShowInstanceEnd(); $showEnd = $this->getShowInstanceEnd();
$lastItemEnd = $this->getLastAudioItemEnd(); $lastItemEnd = $this->getLastAudioItemEnd();
@ -695,7 +700,8 @@ class Application_Model_ShowInstance {
return ($diff < 0) ? 0 : $diff; return ($diff < 0) ? 0 : $diff;
} }
public static function GetLastShowInstance($p_timeNow){ public static function GetLastShowInstance($p_timeNow)
{
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
@ -767,6 +773,7 @@ class Application_Model_ShowInstance {
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = "SELECT count(*) as cnt FROM $CC_CONFIG[showInstances] WHERE ends < '$day'"; $sql = "SELECT count(*) as cnt FROM $CC_CONFIG[showInstances] WHERE ends < '$day'";
return $con->query($sql)->fetchColumn(0); return $con->query($sql)->fetchColumn(0);
} }
@ -785,7 +792,8 @@ class Application_Model_ShowInstance {
return $con->query($sql)->fetchAll(); return $con->query($sql)->fetchAll();
} }
function isRepeating(){ public function isRepeating()
{
if ($this->getShow()->isRepeating()) { if ($this->getShow()->isRepeating()) {
return true; return true;
} else { } else {

View file

@ -1,8 +1,8 @@
<?php <?php
require_once 'soundcloud-api/Services/Soundcloud.php'; require_once 'soundcloud-api/Services/Soundcloud.php';
class Application_Model_Soundcloud { class Application_Model_Soundcloud
{
private $_soundcloud; private $_soundcloud;
public function __construct() public function __construct()
@ -24,13 +24,11 @@ class Application_Model_Soundcloud {
public function uploadTrack($filepath, $filename, $description, $tags=array(), $release=null, $genre=null) public function uploadTrack($filepath, $filename, $description, $tags=array(), $release=null, $genre=null)
{ {
if($this->getToken()) if ($this->getToken()) {
{
if (count($tags)) { if (count($tags)) {
$tags = join(" ", $tags); $tags = join(" ", $tags);
$tags = $tags." ".Application_Model_Preference::GetSoundCloudTags(); $tags = $tags." ".Application_Model_Preference::GetSoundCloudTags();
} } else {
else {
$tags = Application_Model_Preference::GetSoundCloudTags(); $tags = Application_Model_Preference::GetSoundCloudTags();
} }
@ -60,8 +58,7 @@ class Application_Model_Soundcloud {
if (isset($genre) && $genre != "") { if (isset($genre) && $genre != "") {
$track_data['track[genre]'] = $genre; $track_data['track[genre]'] = $genre;
} } else {
else {
$default_genre = Application_Model_Preference::GetSoundCloudGenre(); $default_genre = Application_Model_Preference::GetSoundCloudGenre();
if ($default_genre != "") { if ($default_genre != "") {
$track_data['track[genre]'] = $default_genre; $track_data['track[genre]'] = $default_genre;

View file

@ -13,8 +13,8 @@ require_once 'formatters/BitrateFormatter.php';
* @license http://www.gnu.org/licenses/gpl.txt * @license http://www.gnu.org/licenses/gpl.txt
* @see MetaData * @see MetaData
*/ */
class Application_Model_StoredFile { class Application_Model_StoredFile
{
/** /**
* @holds propel database object * @holds propel database object
*/ */
@ -60,7 +60,8 @@ class Application_Model_StoredFile {
return $this->_file->getDbId(); return $this->_file->getDbId();
} }
public function getGunId() { public function getGunId()
{
return $this->_file->getDbGunid(); return $this->_file->getDbGunid();
} }
@ -69,7 +70,8 @@ class Application_Model_StoredFile {
return $this->_file->getDbFtype(); return $this->_file->getDbFtype();
} }
public function getPropelOrm(){ public function getPropelOrm()
{
return $this->_file; return $this->_file;
} }
@ -88,8 +90,7 @@ class Application_Model_StoredFile {
{ {
if (is_null($p_md)) { if (is_null($p_md)) {
$this->setDbColMetadata(); $this->setDbColMetadata();
} } else {
else {
$dbMd = array(); $dbMd = array();
if (isset($p_md["MDATA_KEY_YEAR"])) { if (isset($p_md["MDATA_KEY_YEAR"])) {
@ -137,8 +138,7 @@ class Application_Model_StoredFile {
$method = "set$propelColumn"; $method = "set$propelColumn";
$this->_file->$method(null); $this->_file->$method(null);
} }
} } else {
else {
foreach ($p_md as $dbColumn => $mdValue) { foreach ($p_md as $dbColumn => $mdValue) {
//don't blank out name, defaults to original filename on first insertion to database. //don't blank out name, defaults to original filename on first insertion to database.
if ($dbColumn == "track_title" && (is_null($mdValue) || $mdValue == "")) { if ($dbColumn == "track_title" && (is_null($mdValue) || $mdValue == "")) {
@ -217,6 +217,7 @@ class Application_Model_StoredFile {
{ {
$propelColumn = $this->_dbMD[$p_category]; $propelColumn = $this->_dbMD[$p_category];
$method = "get$propelColumn"; $method = "get$propelColumn";
return $this->_file->$method(); return $this->_file->$method();
} }
@ -290,6 +291,7 @@ class Application_Model_StoredFile {
$res = $con->exec($sql); $res = $con->exec($sql);
$this->state = $p_state; $this->state = $p_state;
$this->editedby = $p_editedby; $this->editedby = $p_editedby;
return TRUE; return TRUE;
} }
@ -297,7 +299,8 @@ class Application_Model_StoredFile {
* Returns an array of playlist objects that this file is a part of. * Returns an array of playlist objects that this file is a part of.
* @return array * @return array
*/ */
public function getPlaylists() { public function getPlaylists()
{
global $CC_CONFIG; global $CC_CONFIG;
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = "SELECT playlist_id " $sql = "SELECT playlist_id "
@ -310,6 +313,7 @@ class Application_Model_StoredFile {
$playlists[] = Application_Model_Playlist::Recall($id); $playlists[] = Application_Model_Playlist::Recall($id);
} }
} }
return $playlists; return $playlists;
} }
@ -375,8 +379,7 @@ class Application_Model_StoredFile {
if ($mime == "audio/vorbis" || $mime == "application/ogg") { if ($mime == "audio/vorbis" || $mime == "application/ogg") {
return "ogg"; return "ogg";
} } elseif ($mime == "audio/mp3" || $mime == "audio/mpeg") {
else if ($mime == "audio/mp3" || $mime == "audio/mpeg") {
return "mp3"; return "mp3";
} }
} }
@ -432,7 +435,8 @@ class Application_Model_StoredFile {
* is specified in the airtime.conf config file. If either of these is * is specified in the airtime.conf config file. If either of these is
* not specified, then use values provided by the $_SERVER global variable. * not specified, then use values provided by the $_SERVER global variable.
*/ */
public function getFileUrlUsingConfigAddress(){ public function getFileUrlUsingConfigAddress()
{
global $CC_CONFIG; global $CC_CONFIG;
if (isset($CC_CONFIG['baseUrl'])) { if (isset($CC_CONFIG['baseUrl'])) {
@ -450,8 +454,10 @@ class Application_Model_StoredFile {
return $this->constructGetFileUrl($serverName, $serverPort); return $this->constructGetFileUrl($serverName, $serverPort);
} }
private function constructGetFileUrl($p_serverName, $p_serverPort){ private function constructGetFileUrl($p_serverName, $p_serverPort)
{
Logging::log("getting media! - 2"); Logging::log("getting media! - 2");
return "http://$p_serverName:$p_serverPort/api/get-media/file/".$this->getGunId().".".$this->getFileExtension(); return "http://$p_serverName:$p_serverPort/api/get-media/file/".$this->getGunId().".".$this->getFileExtension();
} }
@ -462,6 +468,7 @@ Logging::log("getting media! - 2");
public function getRelativeFileUrl($baseUrl) public function getRelativeFileUrl($baseUrl)
{ {
Logging::log("getting media!"); Logging::log("getting media!");
return $baseUrl."/api/get-media/file/".$this->getGunId().".".$this->getFileExtension(); return $baseUrl."/api/get-media/file/".$this->getGunId().".".$this->getFileExtension();
} }
@ -482,8 +489,7 @@ Logging::log("getting media! - 2");
if ($res === -1) { if ($res === -1) {
return null; return null;
} }
} } else {
else {
return null; return null;
} }
@ -514,13 +520,11 @@ Logging::log("getting media! - 2");
{ {
if (isset($p_id)) { if (isset($p_id)) {
$file = CcFilesQuery::create()->findPK(intval($p_id)); $file = CcFilesQuery::create()->findPK(intval($p_id));
} } elseif (isset($p_gunid)) {
else if (isset($p_gunid)) {
$file = CcFilesQuery::create() $file = CcFilesQuery::create()
->filterByDbGunid($p_gunid) ->filterByDbGunid($p_gunid)
->findOne(); ->findOne();
} } elseif (isset($p_md5sum)) {
else if (isset($p_md5sum)) {
if ($exist) { if ($exist) {
$file = CcFilesQuery::create() $file = CcFilesQuery::create()
->filterByDbMd5($p_md5sum) ->filterByDbMd5($p_md5sum)
@ -531,8 +535,7 @@ Logging::log("getting media! - 2");
->filterByDbMd5($p_md5sum) ->filterByDbMd5($p_md5sum)
->findOne(); ->findOne();
} }
} } elseif (isset($p_filepath)) {
else if (isset($p_filepath)) {
$path_info = Application_Model_MusicDir::splitFilePath($p_filepath); $path_info = Application_Model_MusicDir::splitFilePath($p_filepath);
if (is_null($path_info)) { if (is_null($path_info)) {
@ -544,8 +547,7 @@ Logging::log("getting media! - 2");
->filterByDbDirectory($music_dir->getId()) ->filterByDbDirectory($music_dir->getId())
->filterByDbFilepath($path_info[1]) ->filterByDbFilepath($path_info[1])
->findOne(); ->findOne();
} } else {
else {
return null; return null;
} }
@ -554,14 +556,15 @@ Logging::log("getting media! - 2");
$storedFile->_file = $file; $storedFile->_file = $file;
return $storedFile; return $storedFile;
} } else {
else {
return null; return null;
} }
} }
public function getName(){ public function getName()
{
$info = pathinfo($this->getFilePath()); $info = pathinfo($this->getFilePath());
return $info['filename']; return $info['filename'];
} }
@ -601,7 +604,8 @@ Logging::log("getting media! - 2");
return Application_Model_StoredFile::Recall(null, null, null, $p_filepath); return Application_Model_StoredFile::Recall(null, null, null, $p_filepath);
} }
public static function RecallByPartialFilepath($partial_path){ public static function RecallByPartialFilepath($partial_path)
{
$path_info = Application_Model_MusicDir::splitFilePath($partial_path); $path_info = Application_Model_MusicDir::splitFilePath($partial_path);
if (is_null($path_info)) { if (is_null($path_info)) {
@ -619,11 +623,12 @@ Logging::log("getting media! - 2");
$storedFile->_file = $file; $storedFile->_file = $file;
$res[] = $storedFile; $res[] = $storedFile;
} }
return $res; return $res;
} }
public static function searchLibraryFiles($datatables) { public static function searchLibraryFiles($datatables)
{
$con = Propel::getConnection(CcFilesPeer::DATABASE_NAME); $con = Propel::getConnection(CcFilesPeer::DATABASE_NAME);
$displayColumns = array("id", "track_title", "artist_name", "album_title", "genre", "length", $displayColumns = array("id", "track_title", "artist_name", "album_title", "genre", "length",
@ -639,16 +644,13 @@ Logging::log("getting media! - 2");
if ($key === "id") { if ($key === "id") {
$plSelect[] = "PL.id AS ".$key; $plSelect[] = "PL.id AS ".$key;
$fileSelect[] = $key; $fileSelect[] = $key;
} } elseif ($key === "track_title") {
else if ($key === "track_title") {
$plSelect[] = "name AS ".$key; $plSelect[] = "name AS ".$key;
$fileSelect[] = $key; $fileSelect[] = $key;
} } elseif ($key === "ftype") {
else if ($key === "ftype") {
$plSelect[] = "'playlist'::varchar AS ".$key; $plSelect[] = "'playlist'::varchar AS ".$key;
$fileSelect[] = $key; $fileSelect[] = $key;
} } elseif ($key === "artist_name") {
else if ($key === "artist_name") {
$plSelect[] = "login AS ".$key; $plSelect[] = "login AS ".$key;
$fileSelect[] = $key; $fileSelect[] = $key;
} }
@ -656,8 +658,7 @@ Logging::log("getting media! - 2");
else if (in_array($key, array("length", "utime", "mtime"))) { else if (in_array($key, array("length", "utime", "mtime"))) {
$plSelect[] = $key; $plSelect[] = $key;
$fileSelect[] = $key; $fileSelect[] = $key;
} } elseif ($key === "year") {
else if ($key === "year") {
$plSelect[] = "EXTRACT(YEAR FROM utime)::varchar AS ".$key; $plSelect[] = "EXTRACT(YEAR FROM utime)::varchar AS ".$key;
$fileSelect[] = "year AS ".$key; $fileSelect[] = "year AS ".$key;
@ -666,8 +667,7 @@ Logging::log("getting media! - 2");
else if (in_array($key, array("track_number", "bit_rate", "sample_rate"))) { else if (in_array($key, array("track_number", "bit_rate", "sample_rate"))) {
$plSelect[] = "NULL::int AS ".$key; $plSelect[] = "NULL::int AS ".$key;
$fileSelect[] = $key; $fileSelect[] = $key;
} } else {
else {
$plSelect[] = "NULL::text AS ".$key; $plSelect[] = "NULL::text AS ".$key;
$fileSelect[] = $key; $fileSelect[] = $key;
} }
@ -728,8 +728,7 @@ Logging::log("getting media! - 2");
if ($type == "au") {//&& isset( $audioResults )) { if ($type == "au") {//&& isset( $audioResults )) {
$row['audioFile'] = $row['gunid'].".".pathinfo($row['filepath'], PATHINFO_EXTENSION); $row['audioFile'] = $row['gunid'].".".pathinfo($row['filepath'], PATHINFO_EXTENSION);
$row['image'] = '<img title="Track preview" src="/css/images/icon_audioclip.png">'; $row['image'] = '<img title="Track preview" src="/css/images/icon_audioclip.png">';
} } else {
else {
$row['image'] = '<img title="Playlist preview" src="/css/images/icon_playlist.png">'; $row['image'] = '<img title="Playlist preview" src="/css/images/icon_playlist.png">';
} }
} }
@ -839,7 +838,8 @@ Logging::log("getting media! - 2");
* Check, using disk_free_space, the space available in the $destination_folder folder to see if it has * Check, using disk_free_space, the space available in the $destination_folder folder to see if it has
* enough space to move the $audio_file into and report back to the user if not. * enough space to move the $audio_file into and report back to the user if not.
**/ **/
public static function isEnoughDiskSpaceToCopy($destination_folder, $audio_file){ public static function isEnoughDiskSpaceToCopy($destination_folder, $audio_file)
{
//check to see if we have enough space in the /organize directory to copy the file //check to see if we have enough space in the /organize directory to copy the file
$freeSpace = disk_free_space($destination_folder); $freeSpace = disk_free_space($destination_folder);
$fileSize = filesize($audio_file); $fileSize = filesize($audio_file);
@ -847,7 +847,8 @@ Logging::log("getting media! - 2");
return $freeSpace >= $fileSize; return $freeSpace >= $fileSize;
} }
public static function copyFileToStor($p_targetDir, $fileName, $tempname){ public static function copyFileToStor($p_targetDir, $fileName, $tempname)
{
$audio_file = $p_targetDir . DIRECTORY_SEPARATOR . $tempname; $audio_file = $p_targetDir . DIRECTORY_SEPARATOR . $tempname;
Logging::log('copyFileToStor: moving file '.$audio_file); Logging::log('copyFileToStor: moving file '.$audio_file);
$md5 = md5_file($audio_file); $md5 = md5_file($audio_file);
@ -868,6 +869,7 @@ Logging::log("getting media! - 2");
if (!file_exists($stor."/organize")) { if (!file_exists($stor."/organize")) {
if (!mkdir($stor."/organize", 0777)) { if (!mkdir($stor."/organize", 0777)) {
$result = array("code" => 109, "message" => "Failed to create 'organize' directory."); $result = array("code" => 109, "message" => "Failed to create 'organize' directory.");
return $result; return $result;
} }
} }
@ -899,14 +901,15 @@ Logging::log("getting media! - 2");
$result = array("code" => 107, "message" => "The file was not uploaded, there is ".$freeSpace."MB of disk space left and the file you are uploading has a size of ".$fileSize."MB."); $result = array("code" => 107, "message" => "The file was not uploaded, there is ".$freeSpace."MB of disk space left and the file you are uploading has a size of ".$fileSize."MB.");
} }
} }
return $result; return $result;
} }
/* /*
* Pass the file through Liquidsoap and test if it is readable. Return True if readable, and False otherwise. * Pass the file through Liquidsoap and test if it is readable. Return True if readable, and False otherwise.
*/ */
public static function liquidsoapFilePlayabilityTest($audio_file){ public static function liquidsoapFilePlayabilityTest($audio_file)
{
$LIQUIDSOAP_ERRORS = array('TagLib: MPEG::Properties::read() -- Could not find a valid last MPEG frame in the stream.'); $LIQUIDSOAP_ERRORS = array('TagLib: MPEG::Properties::read() -- Could not find a valid last MPEG frame in the stream.');
// Ask Liquidsoap if file is playable // Ask Liquidsoap if file is playable
@ -915,6 +918,7 @@ Logging::log("getting media! - 2");
exec($command, $output, $rv); exec($command, $output, $rv);
$isError = count($output) > 0 && in_array($output[0], $LIQUIDSOAP_ERRORS); $isError = count($output) > 0 && in_array($output[0], $LIQUIDSOAP_ERRORS);
return ($rv == 0 && !$isError); return ($rv == 0 && !$isError);
} }
@ -924,6 +928,7 @@ Logging::log("getting media! - 2");
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = "SELECT count(*) as cnt FROM ".$CC_CONFIG["filesTable"]." WHERE file_exists"; $sql = "SELECT count(*) as cnt FROM ".$CC_CONFIG["filesTable"]." WHERE file_exists";
return $con->query($sql)->fetchColumn(0); return $con->query($sql)->fetchColumn(0);
} }
@ -969,13 +974,13 @@ Logging::log("getting media! - 2");
$sql = "SELECT id, filepath as fp" $sql = "SELECT id, filepath as fp"
." FROM CC_FILES" ." FROM CC_FILES"
." WHERE directory = $dir_id" ." WHERE directory = $dir_id"
." AND file_exists = 'TRUE'"; ." AND file_exists = 'TRUE'"
." AND replay_gain is NULL";
if (!is_null($limit) && is_int($limit)) { if (!is_null($limit) && is_int($limit)) {
$sql .= " LIMIT $limit"; $sql .= " LIMIT $limit";
} }
$rows = $con->query($sql, PDO::FETCH_ASSOC); $rows = $con->query($sql, PDO::FETCH_ASSOC)->fetchAll();
return $rows; return $rows;
} }
@ -993,6 +998,7 @@ Logging::log("getting media! - 2");
." (soundcloud_upload_time >= (now() - (INTERVAL '1 day')))"; ." (soundcloud_upload_time >= (now() - (INTERVAL '1 day')))";
$rows = $con->query($sql)->fetchAll(); $rows = $con->query($sql)->fetchAll();
return count($rows); return count($rows);
} catch (Exception $e) { } catch (Exception $e) {
header('HTTP/1.0 503 Service Unavailable'); header('HTTP/1.0 503 Service Unavailable');
@ -1008,7 +1014,8 @@ Logging::log("getting media! - 2");
->save(); ->save();
} }
public function getSoundCloudLinkToFile(){ public function getSoundCloudLinkToFile()
{
return $this->_file->getDbSoundCloudLinkToFile(); return $this->_file->getDbSoundCloudLinkToFile();
} }
@ -1018,42 +1025,51 @@ Logging::log("getting media! - 2");
->save(); ->save();
} }
public function getSoundCloudId(){ public function getSoundCloudId()
{
return $this->_file->getDbSoundCloudId(); return $this->_file->getDbSoundCloudId();
} }
public function setSoundCloudErrorCode($code){ public function setSoundCloudErrorCode($code)
{
$this->_file->setDbSoundCloudErrorCode($code) $this->_file->setDbSoundCloudErrorCode($code)
->save(); ->save();
} }
public function getSoundCloudErrorCode(){ public function getSoundCloudErrorCode()
{
return $this->_file->getDbSoundCloudErrorCode(); return $this->_file->getDbSoundCloudErrorCode();
} }
public function setSoundCloudErrorMsg($msg){ public function setSoundCloudErrorMsg($msg)
{
$this->_file->setDbSoundCloudErrorMsg($msg) $this->_file->setDbSoundCloudErrorMsg($msg)
->save(); ->save();
} }
public function getSoundCloudErrorMsg(){ public function getSoundCloudErrorMsg()
{
return $this->_file->getDbSoundCloudErrorMsg(); return $this->_file->getDbSoundCloudErrorMsg();
} }
public function getDirectory(){ public function getDirectory()
{
return $this->_file->getDbDirectory(); return $this->_file->getDbDirectory();
} }
public function setFileExistsFlag($flag){ public function setFileExistsFlag($flag)
{
$this->_file->setDbFileExists($flag) $this->_file->setDbFileExists($flag)
->save(); ->save();
} }
public function setSoundCloudUploadTime($time){ public function setSoundCloudUploadTime($time)
{
$this->_file->setDbSoundCloundUploadTime($time) $this->_file->setDbSoundCloundUploadTime($time)
->save(); ->save();
} }
public function getFileExistsFlag(){ public function getFileExistsFlag()
{
return $this->_file->getDbFileExists(); return $this->_file->getDbFileExists();
} }
@ -1065,8 +1081,7 @@ Logging::log("getting media! - 2");
if (is_null($file)) { if (is_null($file)) {
return "File does not exist"; return "File does not exist";
} }
if(Application_Model_Preference::GetUploadToSoundcloudOption()) if (Application_Model_Preference::GetUploadToSoundcloudOption()) {
{
for ($i=0; $i<$CC_CONFIG['soundcloud-connection-retries']; $i++) { for ($i=0; $i<$CC_CONFIG['soundcloud-connection-retries']; $i++) {
$description = $file->getDbTrackTitle(); $description = $file->getDbTrackTitle();
$tag = array(); $tag = array();
@ -1079,8 +1094,7 @@ Logging::log("getting media! - 2");
$this->setSoundCloudLinkToFile($soundcloud_res['permalink_url']); $this->setSoundCloudLinkToFile($soundcloud_res['permalink_url']);
$this->setSoundCloudUploadTime(new DateTime("now"), new DateTimeZone("UTC")); $this->setSoundCloudUploadTime(new DateTime("now"), new DateTimeZone("UTC"));
break; break;
} } catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
$code = $e->getHttpCode(); $code = $e->getHttpCode();
$msg = $e->getHttpBody(); $msg = $e->getHttpBody();
$temp = explode('"error":',$msg); $temp = explode('"error":',$msg);

View file

@ -1,6 +1,6 @@
<?php <?php
class Application_Model_StreamSetting { class Application_Model_StreamSetting
{
public static function setValue($key, $value, $type) public static function setValue($key, $value, $type)
{ {
global $CC_CONFIG; global $CC_CONFIG;
@ -44,6 +44,7 @@ class Application_Model_StreamSetting {
." WHERE keyname = '$key'"; ." WHERE keyname = '$key'";
$result = $con->query($sql)->fetchColumn(0); $result = $con->query($sql)->fetchColumn(0);
return ($result !== false) ? $result : null; return ($result !== false) ? $result : null;
} }
} }
@ -149,6 +150,7 @@ class Application_Model_StreamSetting {
"value"=>self::getDjLiveStreamMountPoint(), "value"=>self::getDjLiveStreamMountPoint(),
"type"=>"string"); "type"=>"string");
} }
return $rows; return $rows;
} }
@ -257,6 +259,7 @@ class Application_Model_StreamSetting {
} else { } else {
$result = true; $result = true;
} }
return $result; return $result;
} }
@ -286,6 +289,7 @@ class Application_Model_StreamSetting {
$out[$stream] = $info; $out[$stream] = $info;
} }
} }
return $out; return $out;
} }

View file

@ -14,8 +14,8 @@ define('ALIBERR_BADSMEMB', 21);
* @copyright 2010 Sourcefabric O.P.S. * @copyright 2010 Sourcefabric O.P.S.
* @license http://www.gnu.org/licenses/gpl.txt * @license http://www.gnu.org/licenses/gpl.txt
*/ */
class Application_Model_Subjects { class Application_Model_Subjects
{
/* ======================================================= public methods */ /* ======================================================= public methods */
public static function increaseLoginAttempts($login) public static function increaseLoginAttempts($login)
@ -25,6 +25,7 @@ class Application_Model_Subjects {
$sql = "UPDATE ".$CC_CONFIG['subjTable']." SET login_attempts = login_attempts+1" $sql = "UPDATE ".$CC_CONFIG['subjTable']." SET login_attempts = login_attempts+1"
." WHERE login='$login'"; ." WHERE login='$login'";
$res = $con->exec($sql); $res = $con->exec($sql);
return (intval($res) > 0); return (intval($res) > 0);
} }
@ -35,6 +36,7 @@ class Application_Model_Subjects {
$sql = "UPDATE ".$CC_CONFIG['subjTable']." SET login_attempts = '0'" $sql = "UPDATE ".$CC_CONFIG['subjTable']." SET login_attempts = '0'"
." WHERE login='$login'"; ." WHERE login='$login'";
$res = $con->exec($sql); $res = $con->exec($sql);
return true; return true;
} }
@ -44,8 +46,8 @@ class Application_Model_Subjects {
$con = Propel::getConnection(); $con = Propel::getConnection();
$sql = "SELECT login_attempts FROM ".$CC_CONFIG['subjTable']." WHERE login='$login'"; $sql = "SELECT login_attempts FROM ".$CC_CONFIG['subjTable']." WHERE login='$login'";
$res = $con->query($sql)->fetchColumn(0); $res = $con->query($sql)->fetchColumn(0);
return ($res !== false) ? $res : 0; return ($res !== false) ? $res : 0;
} }
} // class Subjects } // class Subjects

View file

@ -3,7 +3,8 @@
class Application_Model_Systemstatus class Application_Model_Systemstatus
{ {
public static function GetMonitStatus($p_ip){ public static function GetMonitStatus($p_ip)
{
global $CC_CONFIG; global $CC_CONFIG;
$monit_user = $CC_CONFIG['monit_user']; $monit_user = $CC_CONFIG['monit_user'];
$monit_password = $CC_CONFIG['monit_password']; $monit_password = $CC_CONFIG['monit_password'];
@ -33,8 +34,8 @@ class Application_Model_Systemstatus
return $docRoot; return $docRoot;
} }
public static function ExtractServiceInformation($p_docRoot, $p_serviceName){ public static function ExtractServiceInformation($p_docRoot, $p_serviceName)
{
$starting = array( $starting = array(
"name"=>"", "name"=>"",
"process_id"=>"STARTING...", "process_id"=>"STARTING...",
@ -65,10 +66,8 @@ class Application_Model_Systemstatus
); );
$data = $notRunning; $data = $notRunning;
if (!is_null($p_docRoot)) { if (!is_null($p_docRoot)) {
foreach ($p_docRoot->getElementsByTagName("service") AS $item) foreach ($p_docRoot->getElementsByTagName("service") AS $item) {
{
if ($item->getElementsByTagName("name")->item(0)->nodeValue == $p_serviceName) { if ($item->getElementsByTagName("name")->item(0)->nodeValue == $p_serviceName) {
$monitor = $item->getElementsByTagName("monitor"); $monitor = $item->getElementsByTagName("monitor");
@ -119,10 +118,12 @@ class Application_Model_Systemstatus
} }
} }
} }
return $data; return $data;
} }
public static function GetPlatformInfo(){ public static function GetPlatformInfo()
{
$keys = array("release", "machine", "memory", "swap"); $keys = array("release", "machine", "memory", "swap");
foreach ($keys as $key) { foreach ($keys as $key) {
$data[$key] = "UNKNOWN"; $data[$key] = "UNKNOWN";
@ -130,8 +131,7 @@ class Application_Model_Systemstatus
$docRoot = self::GetMonitStatus("localhost"); $docRoot = self::GetMonitStatus("localhost");
if (!is_null($docRoot)) { if (!is_null($docRoot)) {
foreach ($docRoot->getElementsByTagName("platform") AS $item) foreach ($docRoot->getElementsByTagName("platform") AS $item) {
{
foreach ($keys as $key) { foreach ($keys as $key) {
$keyElement = $item->getElementsByTagName($key); $keyElement = $item->getElementsByTagName($key);
if ($keyElement->length > 0) { if ($keyElement->length > 0) {
@ -144,8 +144,8 @@ class Application_Model_Systemstatus
return $data; return $data;
} }
public static function GetPypoStatus(){ public static function GetPypoStatus()
{
$component = CcServiceRegisterQuery::create()->findOneByDbName("pypo"); $component = CcServiceRegisterQuery::create()->findOneByDbName("pypo");
if (is_null($component)) { if (is_null($component)) {
return null; return null;
@ -159,8 +159,8 @@ class Application_Model_Systemstatus
} }
} }
public static function GetLiquidsoapStatus(){ public static function GetLiquidsoapStatus()
{
$component = CcServiceRegisterQuery::create()->findOneByDbName("pypo"); $component = CcServiceRegisterQuery::create()->findOneByDbName("pypo");
if (is_null($component)) { if (is_null($component)) {
return null; return null;
@ -174,8 +174,8 @@ class Application_Model_Systemstatus
} }
} }
public static function GetMediaMonitorStatus(){ public static function GetMediaMonitorStatus()
{
$component = CcServiceRegisterQuery::create()->findOneByDbName("media-monitor"); $component = CcServiceRegisterQuery::create()->findOneByDbName("media-monitor");
if (is_null($component)) { if (is_null($component)) {
return null; return null;
@ -189,15 +189,16 @@ class Application_Model_Systemstatus
} }
} }
public static function GetIcecastStatus(){ public static function GetIcecastStatus()
{
$docRoot = self::GetMonitStatus("localhost"); $docRoot = self::GetMonitStatus("localhost");
$data = self::ExtractServiceInformation($docRoot, "icecast2"); $data = self::ExtractServiceInformation($docRoot, "icecast2");
return $data; return $data;
} }
public static function GetRabbitMqStatus(){ public static function GetRabbitMqStatus()
{
if (isset($_SERVER["RABBITMQ_HOST"])) { if (isset($_SERVER["RABBITMQ_HOST"])) {
$rabbitmq_host = $_SERVER["RABBITMQ_HOST"]; $rabbitmq_host = $_SERVER["RABBITMQ_HOST"];
} else { } else {
@ -209,7 +210,8 @@ class Application_Model_Systemstatus
return $data; return $data;
} }
public static function GetDiskInfo(){ public static function GetDiskInfo()
{
$partions = array(); $partions = array();
if (isset($_SERVER['AIRTIME_SRV'])) { if (isset($_SERVER['AIRTIME_SRV'])) {

View file

@ -5,8 +5,8 @@ define('UTYPE_ADMIN', 'A');
define('UTYPE_GUEST', 'G'); define('UTYPE_GUEST', 'G');
define('UTYPE_PROGRAM_MANAGER', 'P'); define('UTYPE_PROGRAM_MANAGER', 'P');
class Application_Model_User { class Application_Model_User
{
private $_userInstance; private $_userInstance;
public function __construct($userId) public function __construct($userId)
@ -90,6 +90,7 @@ class Application_Model_User {
return $this->_userInstance->getDbType() === 'A'; return $this->_userInstance->getDbType() === 'A';
case UTYPE_HOST: case UTYPE_HOST:
$userId = $this->_userInstance->getDbId(); $userId = $this->_userInstance->getDbId();
return CcShowHostsQuery::create()->filterByDbShow($showId)->filterByDbHost($userId)->count() > 0; return CcShowHostsQuery::create()->filterByDbShow($showId)->filterByDbHost($userId)->count() > 0;
case UTYPE_PROGRAM_MANAGER: case UTYPE_PROGRAM_MANAGER:
return $this->_userInstance->getDbType() === 'P'; return $this->_userInstance->getDbType() === 'P';
@ -154,54 +155,63 @@ class Application_Model_User {
public function getLogin() public function getLogin()
{ {
$user = $this->_userInstance; $user = $this->_userInstance;
return $user->getDbLogin(); return $user->getDbLogin();
} }
public function getPassword() public function getPassword()
{ {
$user = $this->_userInstance; $user = $this->_userInstance;
return $user->getDbPass(); return $user->getDbPass();
} }
public function getFirstName() public function getFirstName()
{ {
$user = $this->_userInstance; $user = $this->_userInstance;
return $user->getDbFirstName(); return $user->getDbFirstName();
} }
public function getLastName() public function getLastName()
{ {
$user = $this->_userInstance; $user = $this->_userInstance;
return $user->getDbLastName(); return $user->getDbLastName();
} }
public function getType() public function getType()
{ {
$user = $this->_userInstance; $user = $this->_userInstance;
return $user->getDbType(); return $user->getDbType();
} }
public function getEmail() public function getEmail()
{ {
$user = $this->_userInstance; $user = $this->_userInstance;
return $user->getDbEmail(); return $user->getDbEmail();
} }
public function getCellPhone() public function getCellPhone()
{ {
$user = $this->_userInstance; $user = $this->_userInstance;
return $user->getDbCellPhone(); return $user->getDbCellPhone();
} }
public function getSkype() public function getSkype()
{ {
$user = $this->_userInstance; $user = $this->_userInstance;
return $user->getDbSkypeContact(); return $user->getDbSkypeContact();
} }
public function getJabber() public function getJabber()
{ {
$user = $this->_userInstance; $user = $this->_userInstance;
return $user->getDbJabberContact(); return $user->getDbJabberContact();
} }
@ -221,6 +231,7 @@ class Application_Model_User {
private function createUser() private function createUser()
{ {
$user = new CcSubjs(); $user = new CcSubjs();
return $user; return $user;
} }
@ -275,6 +286,7 @@ class Application_Model_User {
} }
$query = $con->query($sql)->fetchColumn(0); $query = $con->query($sql)->fetchColumn(0);
return ($query !== false) ? $query : null; return ($query !== false) ? $query : null;
} }
@ -337,6 +349,7 @@ class Application_Model_User {
//we get here if $userinfo->id is defined, but doesn't exist //we get here if $userinfo->id is defined, but doesn't exist
//in the database anymore. //in the database anymore.
Zend_Auth::getInstance()->clearIdentity(); Zend_Auth::getInstance()->clearIdentity();
return null; return null;
} }
} }

View file

@ -1,8 +0,0 @@
<?php
//disable buffering so that data is sent as we retrieve it from the database
while (@ob_end_flush());
foreach($this->rows as $row) {
echo json_encode($row)."\n";
}

View file

@ -98,7 +98,7 @@
<column name="soundcloud_error_msg" phpName="DbSoundcloudErrorMsg" type="VARCHAR" size="512" required="false"/> <column name="soundcloud_error_msg" phpName="DbSoundcloudErrorMsg" type="VARCHAR" size="512" required="false"/>
<column name="soundcloud_link_to_file" phpName="DbSoundcloudLinkToFile" type="VARCHAR" size="4096" required="false"/> <column name="soundcloud_link_to_file" phpName="DbSoundcloudLinkToFile" type="VARCHAR" size="4096" required="false"/>
<column name="soundcloud_upload_time" phpName="DbSoundCloundUploadTime" type="TIMESTAMP" size="6" required="false"/> <column name="soundcloud_upload_time" phpName="DbSoundCloundUploadTime" type="TIMESTAMP" size="6" required="false"/>
<column name="replay_gain" phpName="DbReplayGain" type="VARCHAR" size="16" required="false" defaultValue="0"/> <column name="replay_gain" phpName="DbReplayGain" type="VARCHAR" size="16" required="false"/>
<foreign-key foreignTable="cc_subjs" name="cc_files_editedby_fkey"> <foreign-key foreignTable="cc_subjs" name="cc_files_editedby_fkey">
<reference local="editedby" foreign="id"/> <reference local="editedby" foreign="id"/>
</foreign-key> </foreign-key>

View file

@ -6,4 +6,4 @@ flac
vorbis-tools vorbis-tools
calculate Replay Gain dB on upgrade. calculate Replay Gain dB on upgrade: the default value should be NULL.

View file

@ -96,9 +96,6 @@ update_item_url = 'notify-schedule-group-play/api_key/%%api_key%%/schedule_id/%%
# Update whether an audio clip is currently playing. # Update whether an audio clip is currently playing.
update_start_playing_url = 'notify-media-item-start-play/api_key/%%api_key%%/media_id/%%media_id%%/schedule_id/%%schedule_id%%' update_start_playing_url = 'notify-media-item-start-play/api_key/%%api_key%%/media_id/%%media_id%%/schedule_id/%%schedule_id%%'
# ???
generate_range_url = 'generate_range_dp.php'
# URL to tell Airtime we want to get stream setting # URL to tell Airtime we want to get stream setting
get_stream_setting = 'get-stream-setting/format/json/api_key/%%api_key%%/' get_stream_setting = 'get-stream-setting/format/json/api_key/%%api_key%%/'
@ -113,5 +110,6 @@ update_source_status = 'update-source-status/format/json/api_key/%%api_key%%/sou
get_bootstrap_info = 'get-bootstrap-info/format/json/api_key/%%api_key%%' get_bootstrap_info = 'get-bootstrap-info/format/json/api_key/%%api_key%%'
get-files-without-replay-gain = 'get-files-without-replay-gain/api_key/%%api_key%%/dir_id/%%dir_id%%'' get_files_without_replay_gain = 'get-files-without-replay-gain/api_key/%%api_key%%/dir_id/%%dir_id%%'
update_replay_gain_value = 'update-replay-gain-value/api_key/%%api_key%%'

View file

@ -381,7 +381,9 @@ class AirTimeApiClient():
self.logger.debug("Warning: Sending a request element without a 'mode'") self.logger.debug("Warning: Sending a request element without a 'mode'")
self.logger.debug("Here is the the request: '%s'" % str(action) ) self.logger.debug("Here is the the request: '%s'" % str(action) )
else: valid_actions.append(action) else: valid_actions.append(action)
md_list = { i : json.dumps(convert_dict_value_to_utf8(md)) for i,md in enumerate(valid_actions) }
md_list = dict((i, json.dumps(convert_dict_value_to_utf8(md))) for i,md in enumerate(valid_actions))
data = urllib.urlencode(md_list) data = urllib.urlencode(md_list)
req = urllib2.Request(url, data) req = urllib2.Request(url, data)
response = self.get_response_from_server(req) response = self.get_response_from_server(req)
@ -621,15 +623,35 @@ class AirTimeApiClient():
logger = self.logger logger = self.logger
try: try:
url = "http://%(base_url)s:%(base_port)s/%(api_base)s/%(get-files-without-replay-gain)s/" % (self.config) url = "http://%(base_url)s:%(base_port)s/%(api_base)s/%(get_files_without_replay_gain)s/" % (self.config)
url = url.replace("%%api_key%%", self.config["api_key"]) url = url.replace("%%api_key%%", self.config["api_key"])
url = url.replace("%%dir_id%%", dir_id) url = url.replace("%%dir_id%%", dir_id)
response = self.get_response_from_server(url)
file_path = self.get_response_into_file(url) logger.info("update file system mount: %s", response)
response = json.loads(response)
#file_path = self.get_response_into_file(url)
except Exception, e: except Exception, e:
file_path = None response = None
logger.error('Exception: %s', e) logger.error('Exception: %s', e)
logger.error("traceback: %s", traceback.format_exc()) logger.error("traceback: %s", traceback.format_exc())
return file_path return response
def update_replay_gain_values(self, pairs):
"""
'pairs' is a list of pairs in (x, y), where x is the file's database row id
and y is the file's replay_gain value in dB
"""
#http://localhost/api/update-replay-gain-value/
try:
url = "http://%(base_url)s:%(base_port)s/%(api_base)s/%(update_replay_gain_value)s/" % (self.config)
url = url.replace("%%api_key%%", self.config["api_key"])
data = urllib.urlencode({'data': json.dumps(pairs)})
request = urllib2.Request(url, data)
self.get_response_from_server(request)
except Exception, e:
self.logger.error("Exception: %s", e)
raise

View file

@ -10,5 +10,6 @@ class Loggable(object):
# TODO : replace this boilerplate with LazyProperty # TODO : replace this boilerplate with LazyProperty
@LazyProperty @LazyProperty
def logger(self): def logger(self):
# TODO : Clean this up
if not hasattr(self,"_logger"): self._logger = logging.getLogger('mediamonitor2') if not hasattr(self,"_logger"): self._logger = logging.getLogger('mediamonitor2')
return self._logger return self._logger

View file

@ -6,14 +6,14 @@ import logging
import json import json
from api_clients import api_client from api_clients import api_client
import replaygain from media.update import replaygain
class ReplayGainUpdater(Thread): class ReplayGainUpdater(Thread):
""" """
The purpose of the class is to query the server for a list of files which do not have a ReplayGain The purpose of the class is to query the server for a list of files which do not have a ReplayGain
value calculated. This class will iterate over the list calculate the values, update the server and value calculated. This class will iterate over the list calculate the values, update the server and
repeat the process until the the server reports there are no files left. repeat the process until the server reports there are no files left.
This class will see heavy activity right after a 2.1->2.2 upgrade since 2.2 introduces ReplayGain This class will see heavy activity right after a 2.1->2.2 upgrade since 2.2 introduces ReplayGain
normalization. A fresh install of Airtime 2.2 will see this class not used at all since a file normalization. A fresh install of Airtime 2.2 will see this class not used at all since a file
@ -27,42 +27,32 @@ class ReplayGainUpdater(Thread):
def main(self): def main(self):
#TODO #TODO make sure object has 'dirs' attr
directories = self.api_client.list_all_watched_dirs()['dirs'] directories = self.api_client.list_all_watched_dirs()['dirs']
for dir_id, dir_path in directories.iteritems(): for dir_id, dir_path in directories.iteritems():
try: try:
processed_data = [] processed_data = []
#keep getting 100 rows at a time for current music_dir (stor or watched folder). #keep getting few rows at a time for current music_dir (stor or watched folder).
#When we get a response with 0 rows, then we will set response to True. #When we get a response with 0 rows, then we will set 'finished' to True.
finished = False finished = False
while not finished: while not finished:
# return a list of pairs where the first value is the file's database row id # return a list of pairs where the first value is the file's database row id
# and the second value is the filepath # and the second value is the filepath
file_path = self.api_client.get_files_without_replay_gain_value(dir_id) files = self.api_client.get_files_without_replay_gain_value(dir_id)
print "temp file saved to %s" % file_path
num_lines = 0 for f in files:
full_path = os.path.join(dir_path, f['fp'])
processed_data.append((f['id'], replaygain.calculate_replay_gain(full_path)))
with open(file_path) as f: self.api_client.update_replay_gain_values(processed_data)
for line in f: finished = (len(files) == 0)
num_lines += 1
data = json.loads(line.strip())
track_path = os.path.join(dir_path, data['fp'])
processed_data.append((data['id'], replaygain.calculate_replay_gain(track_path)))
if num_lines == 0:
finished = True
os.remove(file_path)
#send data here
pass
except Exception, e: except Exception, e:
print e self.logger.error(e)
self.logger.debug(traceback.format_exc())
def run(self): def run(self):
try: self.main() try: self.main()
except Exception, e: except Exception, e:
@ -72,7 +62,7 @@ class ReplayGainUpdater(Thread):
if __name__ == "__main__": if __name__ == "__main__":
try: try:
rgu = ReplayGainUpdater(logging) rgu = ReplayGainUpdater(logging)
print rgu.main() rgu.main()
except Exception, e: except Exception, e:
print e print e
print traceback.format_exc() print traceback.format_exc()