CC-4961: Show linking
-moved show deletion into show service
This commit is contained in:
parent
ab10ae68a2
commit
81dbb17922
|
@ -16,14 +16,14 @@ class ScheduleController extends Zend_Controller_Action
|
||||||
->addActionContext('edit-show', 'json')
|
->addActionContext('edit-show', 'json')
|
||||||
->addActionContext('move-show', 'json')
|
->addActionContext('move-show', 'json')
|
||||||
->addActionContext('resize-show', 'json')
|
->addActionContext('resize-show', 'json')
|
||||||
->addActionContext('delete-show', 'json')
|
->addActionContext('delete-show-instance', 'json')
|
||||||
->addActionContext('show-content-dialog', 'json')
|
->addActionContext('show-content-dialog', 'json')
|
||||||
->addActionContext('clear-show', 'json')
|
->addActionContext('clear-show', 'json')
|
||||||
->addActionContext('get-current-playlist', 'json')
|
->addActionContext('get-current-playlist', 'json')
|
||||||
->addActionContext('remove-group', 'json')
|
->addActionContext('remove-group', 'json')
|
||||||
->addActionContext('populate-show-form', 'json')
|
->addActionContext('populate-show-form', 'json')
|
||||||
->addActionContext('populate-repeating-show-instance-form', 'json')
|
->addActionContext('populate-repeating-show-instance-form', 'json')
|
||||||
->addActionContext('cancel-show', 'json')
|
->addActionContext('delete-show', 'json')
|
||||||
->addActionContext('cancel-current-show', 'json')
|
->addActionContext('cancel-current-show', 'json')
|
||||||
->addActionContext('get-form', 'json')
|
->addActionContext('get-form', 'json')
|
||||||
->addActionContext('upload-to-sound-cloud', 'json')
|
->addActionContext('upload-to-sound-cloud', 'json')
|
||||||
|
@ -209,28 +209,17 @@ class ScheduleController extends Zend_Controller_Action
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteShowAction()
|
public function deleteShowInstanceAction()
|
||||||
{
|
{
|
||||||
$showInstanceId = $this->_getParam('id');
|
$instanceId = $this->_getParam('id');
|
||||||
|
|
||||||
$userInfo = Zend_Auth::getInstance()->getStorage()->read();
|
$service_show = new Application_Service_ShowService();
|
||||||
$user = new Application_Model_User($userInfo->id);
|
$showId = $service_show->deleteShow($instanceId, true);
|
||||||
|
|
||||||
if ($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) {
|
if (!$showId) {
|
||||||
|
|
||||||
try {
|
|
||||||
$showInstance = new Application_Model_ShowInstance($showInstanceId);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
Logging::info($e->getMessage());
|
|
||||||
$this->view->show_error = true;
|
$this->view->show_error = true;
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$showInstance->delete();
|
|
||||||
|
|
||||||
$this->view->show_id = $showInstance->getShowId();
|
|
||||||
}
|
}
|
||||||
|
$this->view->show_id = $showId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function uploadToSoundCloudAction()
|
public function uploadToSoundCloudAction()
|
||||||
|
@ -254,7 +243,6 @@ class ScheduleController extends Zend_Controller_Action
|
||||||
public function makeContextMenuAction()
|
public function makeContextMenuAction()
|
||||||
{
|
{
|
||||||
$instanceId = $this->_getParam('instanceId');
|
$instanceId = $this->_getParam('instanceId');
|
||||||
$showId = $this->_getParam('showId');
|
|
||||||
|
|
||||||
$service_calendar = new Application_Service_CalendarService($instanceId);
|
$service_calendar = new Application_Service_CalendarService($instanceId);
|
||||||
|
|
||||||
|
@ -598,25 +586,17 @@ class ScheduleController extends Zend_Controller_Action
|
||||||
return $forms;
|
return $forms;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function cancelShowAction()
|
public function deleteShowAction()
|
||||||
{
|
{
|
||||||
$user = Application_Model_User::getCurrentUser();
|
$instanceId = $this->_getParam('id');
|
||||||
|
|
||||||
if ($user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) {
|
$service_show = new Application_Service_ShowService();
|
||||||
$showInstanceId = $this->_getParam('id');
|
$showId = $service_show->deleteShow($instanceId);
|
||||||
|
|
||||||
try {
|
if (!$showId) {
|
||||||
$showInstance = new Application_Model_ShowInstance($showInstanceId);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
$this->view->show_error = true;
|
$this->view->show_error = true;
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$show = new Application_Model_Show($showInstance->getShowId());
|
|
||||||
|
|
||||||
$show->cancelShow($showInstance->getShowInstanceStart());
|
|
||||||
$this->view->show_id = $showInstance->getShowId();
|
|
||||||
}
|
}
|
||||||
|
$this->view->show_id = $showId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function cancelCurrentShowAction()
|
public function cancelCurrentShowAction()
|
||||||
|
|
|
@ -147,12 +147,12 @@ class Application_Service_CalendarService
|
||||||
$menu["del"]["items"]["single"] = array(
|
$menu["del"]["items"]["single"] = array(
|
||||||
"name"=> _("Delete This Instance"),
|
"name"=> _("Delete This Instance"),
|
||||||
"icon" => "delete",
|
"icon" => "delete",
|
||||||
"url" => $baseUrl."schedule/delete-show");
|
"url" => $baseUrl."schedule/delete-show-instance");
|
||||||
|
|
||||||
$menu["del"]["items"]["following"] = array(
|
$menu["del"]["items"]["following"] = array(
|
||||||
"name"=> _("Delete This Instance and All Following"),
|
"name"=> _("Delete This Instance and All Following"),
|
||||||
"icon" => "delete",
|
"icon" => "delete",
|
||||||
"url" => $baseUrl."schedule/cancel-show");
|
"url" => $baseUrl."schedule/delete-show");
|
||||||
} else {
|
} else {
|
||||||
$menu["del"] = array(
|
$menu["del"] = array(
|
||||||
"name"=> _("Delete"),
|
"name"=> _("Delete"),
|
||||||
|
@ -164,4 +164,42 @@ class Application_Service_CalendarService
|
||||||
return $menu;
|
return $menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @param $dateTime
|
||||||
|
* php Datetime object to add deltas to
|
||||||
|
*
|
||||||
|
* @param $deltaDay
|
||||||
|
* php int, delta days show moved
|
||||||
|
*
|
||||||
|
* @param $deltaMin
|
||||||
|
* php int, delta mins show moved
|
||||||
|
*
|
||||||
|
* @return $newDateTime
|
||||||
|
* php DateTime, $dateTime with the added time deltas.
|
||||||
|
*/
|
||||||
|
public static function addDeltas($dateTime, $deltaDay, $deltaMin)
|
||||||
|
{
|
||||||
|
$newDateTime = clone $dateTime;
|
||||||
|
|
||||||
|
$days = abs($deltaDay);
|
||||||
|
$mins = abs($deltaMin);
|
||||||
|
|
||||||
|
$dayInterval = new DateInterval("P{$days}D");
|
||||||
|
$minInterval = new DateInterval("PT{$mins}M");
|
||||||
|
|
||||||
|
if ($deltaDay > 0) {
|
||||||
|
$newDateTime->add($dayInterval);
|
||||||
|
} elseif ($deltaDay < 0) {
|
||||||
|
$newDateTime->sub($dayInterval);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($deltaMin > 0) {
|
||||||
|
$newDateTime->add($minInterval);
|
||||||
|
} elseif ($deltaMin < 0) {
|
||||||
|
$newDateTime->sub($minInterval);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $newDateTime;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -342,6 +342,7 @@ class Application_Service_ShowFormService
|
||||||
SELECT starts, ends FROM cc_show_instances
|
SELECT starts, ends FROM cc_show_instances
|
||||||
WHERE ends > now() at time zone 'UTC'
|
WHERE ends > now() at time zone 'UTC'
|
||||||
AND show_id = :showId
|
AND show_id = :showId
|
||||||
|
AND modified_instance = FALSE
|
||||||
ORDER BY starts
|
ORDER BY starts
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
SQL;
|
SQL;
|
||||||
|
|
|
@ -73,7 +73,10 @@ class Application_Service_ShowService
|
||||||
}
|
}
|
||||||
|
|
||||||
//delete the edited instance from the repeating sequence
|
//delete the edited instance from the repeating sequence
|
||||||
CcShowInstancesQuery::create()->findPk($showData["add_show_instance_id"])->delete();
|
CcShowInstancesQuery::create()
|
||||||
|
->findPk($showData["add_show_instance_id"])
|
||||||
|
->setDbModifiedInstance(true)
|
||||||
|
->save();
|
||||||
|
|
||||||
$con->commit();
|
$con->commit();
|
||||||
Application_Model_RabbitMq::PushSchedule();
|
Application_Model_RabbitMq::PushSchedule();
|
||||||
|
@ -484,6 +487,124 @@ SQL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function deleteShow($instanceId, $singleInstance=false)
|
||||||
|
{
|
||||||
|
$service_user = new Application_Service_UserService();
|
||||||
|
$currentUser = $service_user->getCurrentUser();
|
||||||
|
|
||||||
|
$con = Propel::getConnection();
|
||||||
|
$con->beginTransaction();
|
||||||
|
try {
|
||||||
|
if (!$currentUser->isAdminOrPM()) {
|
||||||
|
throw new Exception("Permission denied");
|
||||||
|
}
|
||||||
|
|
||||||
|
$ccShowInstance = CcShowInstancesQuery::create()
|
||||||
|
->findPk($instanceId);
|
||||||
|
if (!$ccShowInstance) {
|
||||||
|
throw new Exception("Could not find show instance");
|
||||||
|
}
|
||||||
|
|
||||||
|
$showId = $ccShowInstance->getDbShowId();
|
||||||
|
if ($singleInstance) {
|
||||||
|
$ccShowInstances = CcShowInstancesQuery::create()
|
||||||
|
->filterByDbShowId($showId)
|
||||||
|
->filterByDbStarts($ccShowInstance->getDbStarts(), Criteria::GREATER_EQUAL)
|
||||||
|
->filterByDbEnds($ccShowInstance->getDbEnds(), Criteria::LESS_EQUAL)
|
||||||
|
->find();
|
||||||
|
} else {
|
||||||
|
$ccShowInstances = CcShowInstancesQuery::create()
|
||||||
|
->filterByDbShowId($showId)
|
||||||
|
->filterByDbStarts($ccShowInstance->getDbStarts(), Criteria::GREATER_EQUAL)
|
||||||
|
->find();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gmdate("Y-m-d H:i:s") <= $ccShowInstance->getDbEnds()) {
|
||||||
|
$this->deleteShowInstances($ccShowInstances, $ccShowInstance->getDbShowId());
|
||||||
|
}
|
||||||
|
|
||||||
|
Application_Model_RabbitMq::PushSchedule();
|
||||||
|
|
||||||
|
$con->commit();
|
||||||
|
return $showId;
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$con->rollback();
|
||||||
|
Logging::info("Delete show instance failed");
|
||||||
|
Logging::info($e->getMessage());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deleteShowInstances($ccShowInstances, $showId)
|
||||||
|
{
|
||||||
|
foreach ($ccShowInstances as $ccShowInstance) {
|
||||||
|
$instanceId = $ccShowInstance->getDbId();
|
||||||
|
|
||||||
|
$ccShowInstance
|
||||||
|
->setDbModifiedInstance(true)
|
||||||
|
->save();
|
||||||
|
|
||||||
|
//delete the rebroadcasts of the removed recorded show
|
||||||
|
if ($ccShowInstance->isRecorded()) {
|
||||||
|
CcShowInstancesQuery::create()
|
||||||
|
->filterByDbOriginalShow($instanceId)
|
||||||
|
->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
//delete all files scheduled in cc_schedules table
|
||||||
|
CcScheduleQuery::create()
|
||||||
|
->filterByDbInstanceId($instanceId)
|
||||||
|
->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->checkToDeleteCcShow($showId)) {
|
||||||
|
CcShowQuery::create()
|
||||||
|
->filterByDbId($showId)
|
||||||
|
->delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function checkToDeleteCcShow($showId)
|
||||||
|
{
|
||||||
|
// check if there are any non deleted show instances remaining.
|
||||||
|
$ccShowInstances = CcShowInstancesQuery::create()
|
||||||
|
->filterByDbShowId($showId)
|
||||||
|
->filterByDbModifiedInstance(false)
|
||||||
|
->filterByDbRebroadcast(0)
|
||||||
|
->find();
|
||||||
|
|
||||||
|
if ($ccShowInstances->isEmpty()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//only 1 show instance left of the show, make it non repeating.
|
||||||
|
else if (count($ccShowInstances) === 1) {
|
||||||
|
$ccShowInstance = $ccShowInstances[0];
|
||||||
|
|
||||||
|
$ccShowDay = CcShowDaysQuery::create()
|
||||||
|
->filterByDbShowId($showId)
|
||||||
|
->findOne();
|
||||||
|
$tz = $ccShowDay->getDbTimezone();
|
||||||
|
|
||||||
|
$startDate = new DateTime($ccShowInstance->getDbStarts(), new DateTimeZone("UTC"));
|
||||||
|
$startDate->setTimeZone(new DateTimeZone($tz));
|
||||||
|
$endDate = Application_Service_CalendarService::addDeltas($startDate, 1, 0);
|
||||||
|
|
||||||
|
$ccShowDay->setDbFirstShow($startDate->format("Y-m-d"));
|
||||||
|
$ccShowDay->setDbLastShow($endDate->format("Y-m-d"));
|
||||||
|
$ccShowDay->setDbStartTime($startDate->format("H:i:s"));
|
||||||
|
$ccShowDay->setDbRepeatType(-1);
|
||||||
|
$ccShowDay->save();
|
||||||
|
|
||||||
|
//remove the old repeating deleted instances.
|
||||||
|
CcShowInstancesQuery::create()
|
||||||
|
->filterByDbShowId($showId)
|
||||||
|
->filterByDbModifiedInstance(true)
|
||||||
|
->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private function deleteAllInstances($showId)
|
private function deleteAllInstances($showId)
|
||||||
{
|
{
|
||||||
$sql = <<<SQL
|
$sql = <<<SQL
|
||||||
|
|
Loading…
Reference in New Issue