diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index ccbcc59d9..bb58409fd 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -179,14 +179,19 @@ SQL; if ($deltaDay > 0) { return "Shows can have a max length of 24 hours."; } + + $utc = new DateTimeZone("UTC"); + + $nowDateTime = new DateTime("now", $utc); $showInstances = CcShowInstancesQuery::create() ->filterByDbShowId($this->_showId) ->find($con); - /* Check if the show being resized and any of its repeats * overlap - with other scheduled shows */ - $utc = new DateTimeZone("UTC"); + /* Check two things: + 1. If the show being resized and any of its repeats end in the past + 2. If the show being resized and any of its repeats overlap + with other scheduled shows */ foreach ($showInstances as $si) { $startsDateTime = new DateTime($si->getDbStarts(), new DateTimeZone("UTC")); @@ -201,6 +206,10 @@ SQL; $newStartsDateTime = Application_Model_ShowInstance::addDeltas($startsDateTime, $deltaDay, $deltaMin); $newEndsDateTime = Application_Model_ShowInstance::addDeltas($endsDateTime, $deltaDay, $deltaMin); + + if ($newEndsDateTime->getTimestamp() < $nowDateTime->getTimestamp()) { + return "End date/time cannot be in the past"; + } //convert our new starts/ends to UTC. $newStartsDateTime->setTimezone($utc);