From 0362f24a4e09bf0a884ab600c217ab8b9acef558 Mon Sep 17 00:00:00 2001 From: denise Date: Wed, 1 May 2013 10:30:51 -0400 Subject: [PATCH] CC-5076: Calendar -> Context menu -> Remove all content doesn't remove content from linked instances --- .../controllers/ScheduleController.php | 15 +++----- .../application/services/SchedulerService.php | 36 +++++++++++++++++++ 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php index f2fb9ff70..36b6bbe66 100644 --- a/airtime_mvc/application/controllers/ScheduleController.php +++ b/airtime_mvc/application/controllers/ScheduleController.php @@ -245,19 +245,14 @@ class ScheduleController extends Zend_Controller_Action public function clearShowAction() { - $showInstanceId = $this->_getParam('id'); - $userInfo = Zend_Auth::getInstance()->getStorage()->read(); - $user = new Application_Model_User($userInfo->id); - try { - $show = new Application_Model_ShowInstance($showInstanceId); - } catch (Exception $e) { - $this->view->show_error = true; + $instanceId = $this->_getParam('id'); + $service_scheduler = new Application_Service_SchedulerService(); + + if (!$service_scheduler->emptyShowContent($instanceId)) { + $this->view->show_error = true; return false; } - - if($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER)) || $user->isHostOfShow($show->getShowId())) - $show->clearShow(); } public function getCurrentPlaylistAction() diff --git a/airtime_mvc/application/services/SchedulerService.php b/airtime_mvc/application/services/SchedulerService.php index b8086e4a2..6f1dcb920 100644 --- a/airtime_mvc/application/services/SchedulerService.php +++ b/airtime_mvc/application/services/SchedulerService.php @@ -204,4 +204,40 @@ class Application_Service_SchedulerService } //if at least one linked instance has content } } + + public function emptyShowContent($instanceId) + { + try { + $ccShowInstance = CcShowInstancesQuery::create()->findPk($instanceId); + + $instances = array(); + + if ($ccShowInstance->getCcShow()->isLinked()) { + $instanceIds = array(); + foreach ($ccShowInstance->getCcShow()->getCcShowInstancess() as $instance) { + $instanceIds[] = $instance->getDbId(); + $instances[] = $instance; + } + CcScheduleQuery::create() + ->filterByDbInstanceId($instanceIds, Criteria::IN) + ->delete(); + } else { + $instances[] = $ccShowInstance; + CcScheduleQuery::create() + ->filterByDbInstanceId($ccShowInstance->getDbId()) + ->delete(); + } + + Application_Model_RabbitMq::PushSchedule(); + $con = Propel::getConnection(CcShowInstancesPeer::DATABASE_NAME); + foreach ($instances as $instance) { + $instance->updateDbTimeFilled($con); + } + + return true; + } catch (Exception $e) { + Logging::info($e->getMessage()); + return false; + } + } } \ No newline at end of file