diff --git a/airtime_mvc/application/controllers/DashboardController.php b/airtime_mvc/application/controllers/DashboardController.php index 54aa1bfa9..9a30348a2 100644 --- a/airtime_mvc/application/controllers/DashboardController.php +++ b/airtime_mvc/application/controllers/DashboardController.php @@ -18,31 +18,66 @@ class DashboardController extends Zend_Controller_Action public function disconnectSourceAction(){ $request = $this->getRequest(); - $sourcename = $request->getParam('sourcename'); - $data = array("sourcename"=>$sourcename); - Application_Model_RabbitMq::SendMessageToPypo("disconnect_source", $data); + + $userInfo = Zend_Auth::getInstance()->getStorage()->read(); + $user = new Application_Model_User($userInfo->id); + + $show = Application_Model_Show::GetCurrentShow(); + + $show_id = isset($show['id'])?$show['id']:0; + + $source_connected = Application_Model_Preference::GetSourceStatus($sourcename); + + if($user->canSchedule($show_id) && $source_connected){ + $data = array("sourcename"=>$sourcename); + Application_Model_RabbitMq::SendMessageToPypo("disconnect_source", $data); + }else{ + if($source_connected){ + $this->view->error = "You don't have permission to disconnect source."; + }else{ + $this->view->error = "There is no source connected to this input."; + } + } } public function switchSourceAction(){ $request = $this->getRequest(); - $sourcename = $this->_getParam('sourcename'); $current_status = $this->_getParam('status'); - $change_status_to = "on"; - if(strtolower($current_status) == "on"){ - $change_status_to = "off"; + $userInfo = Zend_Auth::getInstance()->getStorage()->read(); + $user = new Application_Model_User($userInfo->id); + + $show = Application_Model_Show::GetCurrentShow(); + $show_id = isset($show['id'])?$show['id']:0; + + $source_connected = Application_Model_Preference::GetSourceStatus($sourcename); + + if($user->canSchedule($show_id) && ($source_connected || $sourcename == 'scheduled_play')){ + + $change_status_to = "on"; + + if(strtolower($current_status) == "on"){ + $change_status_to = "off"; + } + + $data = array("sourcename"=>$sourcename, "status"=>$change_status_to); + Application_Model_RabbitMq::SendMessageToPypo("switch_source", $data); + if(strtolower($current_status) == "on"){ + Application_Model_Preference::SetSourceSwitchStatus($sourcename, "off"); + $this->view->status = "OFF"; + }else{ + Application_Model_Preference::SetSourceSwitchStatus($sourcename, "on"); + $this->view->status = "ON"; + } } - - $data = array("sourcename"=>$sourcename, "status"=>$change_status_to); - Application_Model_RabbitMq::SendMessageToPypo("switch_source", $data); - if(strtolower($current_status) == "on"){ - Application_Model_Preference::SetSourceSwitchStatus($sourcename, "off"); - $this->view->status = "OFF"; - }else{ - Application_Model_Preference::SetSourceSwitchStatus($sourcename, "on"); - $this->view->status = "ON"; + else{ + if($source_connected){ + $this->view->error = "You don't have permission to switch source."; + }else{ + $this->view->error = "There is no source connected to this input."; + } } } diff --git a/airtime_mvc/application/layouts/scripts/builder.phtml b/airtime_mvc/application/layouts/scripts/builder.phtml index 5f13b0f67..1293cb873 100644 --- a/airtime_mvc/application/layouts/scripts/builder.phtml +++ b/airtime_mvc/application/layouts/scripts/builder.phtml @@ -13,11 +13,11 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); - $isAdmin = $this->isAdmin(); + $isPermissionAllowed = $this->IsPermissionAllowed(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'], "isAdmin"=>$isAdmin)) ?> + "scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/layouts/scripts/layout.phtml b/airtime_mvc/application/layouts/scripts/layout.phtml index d074b921d..f2cdf2b4b 100644 --- a/airtime_mvc/application/layouts/scripts/layout.phtml +++ b/airtime_mvc/application/layouts/scripts/layout.phtml @@ -14,12 +14,11 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); - $isAdmin = $this->isAdmin(); + $isPermissionAllowed = $this->IsPermissionAllowed(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'], "isAdmin"=>$isAdmin)) ?> - + "scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/layouts/scripts/library.phtml b/airtime_mvc/application/layouts/scripts/library.phtml index e3a2748e1..fb411f40f 100644 --- a/airtime_mvc/application/layouts/scripts/library.phtml +++ b/airtime_mvc/application/layouts/scripts/library.phtml @@ -14,11 +14,11 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); - $isAdmin = $this->isAdmin(); + $isPermissionAllowed = $this->IsPermissionAllowed(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'], "isAdmin"=>$isAdmin)) ?> + "scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/layouts/scripts/playouthistory.phtml b/airtime_mvc/application/layouts/scripts/playouthistory.phtml index 0c9fee73f..47e01b11a 100644 --- a/airtime_mvc/application/layouts/scripts/playouthistory.phtml +++ b/airtime_mvc/application/layouts/scripts/playouthistory.phtml @@ -14,11 +14,11 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); - $isAdmin = $this->isAdmin(); + $isPermissionAllowed = $this->IsPermissionAllowed(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'], "isAdmin"=>$isAdmin)) ?> + "scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/models/User.php b/airtime_mvc/application/models/User.php index b028a87e9..56312d568 100644 --- a/airtime_mvc/application/models/User.php +++ b/airtime_mvc/application/models/User.php @@ -30,6 +30,10 @@ class Application_Model_User { public function isHost($showId) { return $this->isUserType(UTYPE_HOST, $showId); } + + public function isPM() { + return $this->isUserType(UTYPE_PROGRAM_MANAGER); + } public function isAdmin() { return $this->isUserType(UTYPE_ADMIN); diff --git a/airtime_mvc/application/views/helpers/IsAdmin.php b/airtime_mvc/application/views/helpers/IsAdmin.php deleted file mode 100644 index 94c07235a..000000000 --- a/airtime_mvc/application/views/helpers/IsAdmin.php +++ /dev/null @@ -1,11 +0,0 @@ -getStorage()->read(); - $user = new Application_Model_User($userInfo->id); - return $user->isAdmin(); - } -} \ No newline at end of file diff --git a/airtime_mvc/application/views/helpers/IsPermissionAllowed.php b/airtime_mvc/application/views/helpers/IsPermissionAllowed.php new file mode 100644 index 000000000..77d331339 --- /dev/null +++ b/airtime_mvc/application/views/helpers/IsPermissionAllowed.php @@ -0,0 +1,18 @@ +getStorage()->read(); + $user = new Application_Model_User($userInfo->id); + + $show = Application_Model_Show::GetCurrentShow(); + $show_id = isset($show['id'])?$show['id']:0; + if($user->canSchedule($show_id)){ + return true; + }else{ + return false; + } + } +} \ No newline at end of file diff --git a/airtime_mvc/application/views/scripts/partialviews/header.phtml b/airtime_mvc/application/views/scripts/partialviews/header.phtml index 148ad0ab1..dd21e3c11 100644 --- a/airtime_mvc/application/views/scripts/partialviews/header.phtml +++ b/airtime_mvc/application/views/scripts/partialviews/header.phtml @@ -27,25 +27,25 @@