From ad3ef3ec304e6c56ebcec04197d6bf6c82fb5ef2 Mon Sep 17 00:00:00 2001 From: james Date: Tue, 7 Jun 2011 14:31:39 -0400 Subject: [PATCH] CC-2255: Separate user types admin and program manager - New user type 'Program Manager' added - 'Program Manager' gets same previlage as Admin but doesn't have access to Configure menu - Changed user type name 'Host' to 'DJ' --- airtime_mvc/application/configs/ACL.php | 3 +- .../controllers/ScheduleController.php | 33 +++++++------- airtime_mvc/application/forms/AddUser.php | 3 +- airtime_mvc/application/models/Users.php | 43 +++++++++++++++++-- .../views/scripts/schedule/index.phtml | 2 +- airtime_mvc/public/js/airtime/user/user.js | 3 ++ 6 files changed, 65 insertions(+), 22 deletions(-) diff --git a/airtime_mvc/application/configs/ACL.php b/airtime_mvc/application/configs/ACL.php index 0bf2b6d43..5fa4b7a05 100644 --- a/airtime_mvc/application/configs/ACL.php +++ b/airtime_mvc/application/configs/ACL.php @@ -6,7 +6,8 @@ $ccAcl = new Zend_Acl(); $ccAcl->addRole(new Zend_Acl_Role('G')) ->addRole(new Zend_Acl_Role('H'), 'G') - ->addRole(new Zend_Acl_Role('A'), 'H'); + ->addRole(new Zend_Acl_Role('P'), 'H') + ->addRole(new Zend_Acl_Role('A'), 'P'); $ccAcl->add(new Zend_Acl_Resource('library')) ->add(new Zend_Acl_Resource('index')) diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php index 6377f13a2..2ac07f1c9 100644 --- a/airtime_mvc/application/controllers/ScheduleController.php +++ b/airtime_mvc/application/controllers/ScheduleController.php @@ -59,6 +59,7 @@ class ScheduleController extends Zend_Controller_Action $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new User($userInfo->id); $this->view->isAdmin = $user->isAdmin(); + $this->view->isProgramManager = $user->isUserType('P'); } public function eventFeedAction() @@ -68,7 +69,7 @@ class ScheduleController extends Zend_Controller_Action $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new User($userInfo->id); - if($user->isAdmin()) + if($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) $editable = true; else $editable = false; @@ -85,7 +86,7 @@ class ScheduleController extends Zend_Controller_Action $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new User($userInfo->id); - if($user->isAdmin()) { + if($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) { $show = new ShowInstance($showInstanceId); $error = $show->moveShow($deltaDay, $deltaMin); } @@ -104,7 +105,7 @@ class ScheduleController extends Zend_Controller_Action $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new User($userInfo->id); - if($user->isAdmin()) { + if($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) { $show = new ShowInstance($showInstanceId); $error = $show->resizeShow($deltaDay, $deltaMin); } @@ -120,7 +121,7 @@ class ScheduleController extends Zend_Controller_Action $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new User($userInfo->id); - if($user->isAdmin()) { + if($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) { $show = new ShowInstance($showInstanceId); $show->deleteShow(); } @@ -182,10 +183,10 @@ class ScheduleController extends Zend_Controller_Action $show = new ShowInstance($id); $params = '/format/json/id/#id#'; - + if (strtotime($today_timestamp) < strtotime($show->getShowStart())) { - if (($user->isHost($show->getShowId()) || $user->isAdmin()) && !$show->isRecorded() && !$show->isRebroadcast()) { + if ($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER, UTYPE_HOST),$show->getShowId()) && !$show->isRecorded() && !$show->isRebroadcast()) { $menu[] = array('action' => array('type' => 'ajax', 'url' => '/Schedule/schedule-show-dialog'.$params, 'callback' => 'window["buildScheduleDialog"]'), 'title' => 'Add / Remove Content'); @@ -213,7 +214,7 @@ class ScheduleController extends Zend_Controller_Action if (strtotime($show->getShowStart()) <= strtotime($today_timestamp) && strtotime($today_timestamp) < strtotime($show->getShowEnd()) && - $user->isAdmin()) { + $user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) { $menu[] = array('action' => array('type' => 'fn', 'callback' => "window['confirmCancelShow']($id)"), 'title' => 'Cancel Current Show'); @@ -221,7 +222,7 @@ class ScheduleController extends Zend_Controller_Action if (strtotime($today_timestamp) < strtotime($show->getShowStart())) { - if ($user->isAdmin()) { + if ($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) { $menu[] = array('action' => array('type' => 'ajax', 'url' => '/Schedule/edit-show/format/json/id/'.$id, 'callback' => 'window["beginEditShow"]'), 'title' => 'Edit Show'); @@ -231,7 +232,7 @@ class ScheduleController extends Zend_Controller_Action 'callback' => 'window["scheduleRefetchEvents"]'), 'title' => 'Delete This Instance and All Following'); } } - + //returns format jjmenu is looking for. die(json_encode($menu)); } @@ -250,7 +251,7 @@ class ScheduleController extends Zend_Controller_Action $user = new User($userInfo->id); $show = new ShowInstance($showInstanceId); - if($user->isHost($show->getShowId()) || $user->isAdmin()) { + if($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER, UTYPE_HOST),$show->getShowId())) { $show->scheduleShow(array($plId)); } @@ -269,7 +270,7 @@ class ScheduleController extends Zend_Controller_Action $user = new User($userInfo->id); $show = new ShowInstance($showInstanceId); - if($user->isHost($show->getShowId()) || $user->isAdmin()) + if($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER, UTYPE_HOST),$show->getShowId())) $show->clearShow(); } @@ -299,7 +300,7 @@ class ScheduleController extends Zend_Controller_Action $user = new User($userInfo->id); $show = new ShowInstance($showInstanceId); - if($user->isHost($show->getShowId()) || $user->isAdmin()) { + if($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER, UTYPE_HOST),$show->getShowId())) { $show->removeGroupFromShow($group_id); } @@ -377,7 +378,7 @@ class ScheduleController extends Zend_Controller_Action { $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new User($userInfo->id); - if(!$user->isAdmin()) { + if(!$user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) { return; } @@ -597,7 +598,7 @@ class ScheduleController extends Zend_Controller_Action if ($what && $when && $repeats && $who && $style && $record && $rebroadAb && $rebroad) { $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new User($userInfo->id); - if ($user->isAdmin()) { + if ($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) { Show::create($data); } @@ -635,7 +636,7 @@ class ScheduleController extends Zend_Controller_Action $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new User($userInfo->id); - if($user->isAdmin()) { + if($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) { $showInstanceId = $this->_getParam('id'); $showInstance = new ShowInstance($showInstanceId); @@ -650,7 +651,7 @@ class ScheduleController extends Zend_Controller_Action $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new User($userInfo->id); - if($user->isAdmin()) { + if($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) { $showInstanceId = $this->_getParam('id'); $show = new ShowInstance($showInstanceId); $show->clearShow(); diff --git a/airtime_mvc/application/forms/AddUser.php b/airtime_mvc/application/forms/AddUser.php index 58bc91543..4ff63dc12 100644 --- a/airtime_mvc/application/forms/AddUser.php +++ b/airtime_mvc/application/forms/AddUser.php @@ -73,7 +73,8 @@ class Application_Form_AddUser extends Zend_Form $select->setAttrib('style', 'width: 40%'); $select->setMultiOptions(array( "G" => "Guest", - "H" => "Host", + "H" => "DJ", + "P" => "Program Manager", "A" => "Admin" )); $select->setRequired(true); diff --git a/airtime_mvc/application/models/Users.php b/airtime_mvc/application/models/Users.php index 3da349aee..cf836ded8 100644 --- a/airtime_mvc/application/models/Users.php +++ b/airtime_mvc/application/models/Users.php @@ -1,5 +1,10 @@ _userInstance->getDbId(); - return CcShowHostsQuery::create()->filterByDbShow($showId)->filterByDbHost($userId)->count() > 0; + return $this->isUserType(UTYPE_HOST, $showId); } public function isAdmin() { - return $this->_userInstance->getDbType() === 'A'; + return $this->isUserType(UTYPE_ADMIN); + } + + public function isUserType($type, $showId=''){ + if(is_array($type)){ + $result = false; + foreach($type as $t){ + switch($t){ + case UTYPE_ADMIN: + $result = $this->_userInstance->getDbType() === 'A'; + break; + case UTYPE_HOST: + $userId = $this->_userInstance->getDbId(); + $result = CcShowHostsQuery::create()->filterByDbShow($showId)->filterByDbHost($userId)->count() > 0; + break; + case UTYPE_PROGRAM_MANAGER: + $result = $this->_userInstance->getDbType() === 'P'; + break; + } + if($result){ + return $result; + } + } + }else{ + switch($type){ + case UTYPE_ADMIN: + return $this->_userInstance->getDbType() === 'A'; + case UTYPE_HOST: + $userId = $this->_userInstance->getDbId(); + return CcShowHostsQuery::create()->filterByDbShow($showId)->filterByDbHost($userId)->count() > 0; + case UTYPE_PROGRAM_MANAGER: + return $this->_userInstance->getDbType() === 'P'; + } + } } public function setLogin($login){ diff --git a/airtime_mvc/application/views/scripts/schedule/index.phtml b/airtime_mvc/application/views/scripts/schedule/index.phtml index 917180f68..1987f103e 100644 --- a/airtime_mvc/application/views/scripts/schedule/index.phtml +++ b/airtime_mvc/application/views/scripts/schedule/index.phtml @@ -1,4 +1,4 @@ -isAdmin) : ?> +isAdmin || $this->isProgramManager) : ?> diff --git a/airtime_mvc/public/js/airtime/user/user.js b/airtime_mvc/public/js/airtime/user/user.js index 8d1534519..9eb29096b 100644 --- a/airtime_mvc/public/js/airtime/user/user.js +++ b/airtime_mvc/public/js/airtime/user/user.js @@ -51,6 +51,9 @@ function rowCallback( nRow, aData, iDisplayIndex ){ } else if ( aData[4] == "G" ) { $('td:eq(3)', nRow).html( 'Guest' ); + } else if ( aData[4] == "P" ) + { + $('td:eq(3)', nRow).html( 'Program Manager' ); } return nRow;