diff --git a/airtime_mvc/application/models/Scheduler.php b/airtime_mvc/application/models/Scheduler.php index 39415beaa..4208ff5c7 100644 --- a/airtime_mvc/application/models/Scheduler.php +++ b/airtime_mvc/application/models/Scheduler.php @@ -1112,35 +1112,36 @@ class Application_Model_Scheduler $removedItems = CcScheduleQuery::create()->findPks($scheduledIds); - //check to make sure all items selected are up to date - foreach ($removedItems as $removedItem) { + // This array is used to keep track of every show instance that was + // effected by the track deletion. It will be used later on to + // remove gaps in the schedule and adjust crossfade times. + $effectedInstanceIds = array(); + foreach ($removedItems as $removedItem) { $instance = $removedItem->getCcShowInstances($this->con); + $effectedInstanceIds[] = $instance->getDbId(); //check if instance is linked and if so get the schedule items //for all linked instances so we can delete them too if (!$cancelShow && $instance->getCcShow()->isLinked()) { //returns all linked instances if linked $ccShowInstances = $this->getInstances($instance->getDbId()); + $instanceIds = array(); foreach ($ccShowInstances as $ccShowInstance) { $instanceIds[] = $ccShowInstance->getDbId(); } - /* - * Find all the schedule items that are in the same position - * as the selected item by the user. - * The position of each track is the same across each linked instance - */ + $effectedInstanceIds = array_merge($effectedInstanceIds, $instanceIds); + + // Delete the same track, represented by $removedItem, in + // each linked show instance. $itemsToDelete = CcScheduleQuery::create() ->filterByDbPosition($removedItem->getDbPosition()) ->filterByDbInstanceId($instanceIds, Criteria::IN) - ->find(); - foreach ($itemsToDelete as $item) { - if (!$removedItems->contains($item)) { - $removedItems->append($item); - } - } + ->filterByDbId($removedItem->getDbId(), Criteria::NOT_EQUAL) + ->delete($this->con); } + //check to truncate the currently playing item instead of deleting it. if ($removedItem->isCurrentItem($this->epochNow)) { @@ -1165,29 +1166,11 @@ class Application_Model_Scheduler } else { $removedItem->delete($this->con); } - - // update is_scheduled in cc_files but only if - // the file is not scheduled somewhere else - $fileId = $removedItem->getDbFileId(); - // check if the removed item is scheduled somewhere else - $futureScheduledFiles = Application_Model_Schedule::getAllFutureScheduledFiles(); - if (!is_null($fileId) && !in_array($fileId, $futureScheduledFiles)) { - $db_file = CcFilesQuery::create()->findPk($fileId, $this->con); - $db_file->setDbIsScheduled(false)->save($this->con); - } } + Application_Model_StoredFile::updatePastFilesIsScheduled(); if ($adjustSched === true) { - //get the show instances of the shows we must adjust times for. - foreach ($removedItems as $item) { - - $instance = $item->getDBInstanceId(); - if (!in_array($instance, $showInstances)) { - $showInstances[] = $instance; - } - } - - foreach ($showInstances as $instance) { + foreach ($effectedInstanceIds as $instance) { $this->removeGaps($instance); $this->calculateCrossfades($instance); } @@ -1195,7 +1178,7 @@ class Application_Model_Scheduler //update the status flag in cc_schedule. $instances = CcShowInstancesQuery::create() - ->filterByPrimaryKeys($showInstances) + ->filterByPrimaryKeys($effectedInstanceIds) ->find($this->con); foreach ($instances as $instance) { diff --git a/tests/selenium/Account Plans.html b/tests/selenium/Account Plans.html deleted file mode 100644 index a320b9dfb..000000000 --- a/tests/selenium/Account Plans.html +++ /dev/null @@ -1,196 +0,0 @@ - - - -
- - -| Account Plans | ||
| open | -/billing/upgrade | -- |
| clickAndWait | -link=Account Plans | -- |
| verifyElementPresent | -id=hobbyist_grid_price | -- |
| verifyElementPresent | -id=starter_grid_price | -- |
| verifyElementPresent | -id=plus_grid_price | -- |
| verifyElementPresent | -id=premium_grid_price | -- |
| verifyText | -id=hobbyist_grid_price | -$9.95 / month | -
| verifyText | -id=starter_grid_price | -$39.95 / month | -
| verifyText | -id=plus_grid_price | -$64.95 / month | -
| verifyText | -id=premium_grid_price | -$99.95 / month | -
| verifyElementPresent | -id=current_plan | -- |
| verifyElementPresent | -id=newproductbillingcycle-monthly | -- |
| verifyElementPresent | -id=newproductbillingcycle-annually | -- |
| verifyElementPresent | -id=newproductid-25 | -- |
| verifyElementPresent | -id=newproductid-26 | -- |
| verifyElementPresent | -id=newproductid-27 | -- |
| verifyElementPresent | -id=newproductid-28 | -- |
| verifyElementPresent | -css=span.subtotal | -- |
| verifyElementPresent | -id=firstname | -- |
| verifyElementPresent | -id=lastname | -- |
| verifyElementPresent | -id=companyname | -- |
| verifyElementPresent | -id=email | -- |
| verifyElementPresent | -id=address1 | -- |
| verifyElementPresent | -id=address2 | -- |
| verifyElementPresent | -id=city | -- |
| verifyElementPresent | -id=state | -- |
| verifyElementPresent | -id=postcode | -- |
| verifyElementPresent | -id=country | -- |
| verifyElementPresent | -id=phonenumber | -- |
| verifyElementPresent | -id=securityqid | -- |
| verifyElementPresent | -id=securityqans | -- |
| verifyElementPresent | -id=customfields-7 | -- |
| verifyElementPresent | -id=customfields-71 | -- |
| verifyElementPresent | -id=paymentmethod-paypal | -- |
| verifyElementPresent | -//div[@id='total_box']/b[2] | -- |
| verifyElementPresent | -css=input[type="submit"] | -- |