From 51c384fa3391bea97e2306ed5a4a8a620bc104e3 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Tue, 28 Jan 2014 17:46:22 +0000 Subject: [PATCH 01/39] Updated install instructions for 2.5.x --- README | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README b/README index 3b4f0147f..a10995073 100644 --- a/README +++ b/README @@ -24,22 +24,22 @@ Major features: INSTALLATION ------------ -For the fastest, most painless installation on Ubuntu 12.04 and up, run: - +Please see this chapter to begin a typical installation: +http://sourcefabric.booktype.pro/airtime-25-for-broadcasters/preparing-the-server/ + +If you are a developer, please see this page: +http://wiki.sourcefabric.org/display/CC/Airtime+Dev+Site + +For installation direct from a git checkout on Ubuntu 12.04 LTS, run: + cd install_full/ubuntu sudo ./airtime-full-install -For Debian, run: +For installation from git on Debian wheezy, run: cd install_full/debian sudo ./airtime-full-install -For custom installation and other distributions of Linux, please see this -chapter to begin a typical installation: -http://sourcefabric.booktype.pro/airtime-24-for-broadcasters/preparing-the-server/ - -If you are a developer, please see this page: -http://wiki.sourcefabric.org/display/CC/Airtime+Dev+Site Quick links to our resources ---------------------------- From b7b92fc19ed7e0521fef8cce0a9fae8c16a2ace5 Mon Sep 17 00:00:00 2001 From: localizer Date: Tue, 11 Feb 2014 20:09:12 +0000 Subject: [PATCH 02/39] updated translation resources --- .../locale/de_AT/LC_MESSAGES/airtime.mo | Bin 67609 -> 67790 bytes .../locale/de_AT/LC_MESSAGES/airtime.po | 4 ++-- .../locale/it_IT/LC_MESSAGES/airtime.mo | Bin 55871 -> 55871 bytes .../locale/it_IT/LC_MESSAGES/airtime.po | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.mo index ff53fb10fc34af7fb5a50d0c0902d8c168def23e..174cead59df0c077c0f09e0272d9366791493cad 100644 GIT binary patch delta 14578 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\n" "Language-Team: German (Austria) (http://www.transifex.com/projects/p/airtime/language/de_AT/)\n" "MIME-Version: 1.0\n" @@ -2210,7 +2210,7 @@ msgstr "Das sind Admin Benutzername und Passwort, für die Hörerstatistiken von #: airtime_mvc/application/controllers/LocaleController.php:180 msgid "" "Warning: You cannot change this field while the show is currently playing" -msgstr "" +msgstr "Warnung: Dieses Feld kann nicht geändert werden, während die Sendung wiedergegeben wird." #: airtime_mvc/application/controllers/LocaleController.php:181 msgid "No result found" diff --git a/airtime_mvc/locale/it_IT/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/it_IT/LC_MESSAGES/airtime.mo index 5cd970a4a2e82094040a5bfe86c6cb1edb183de8..eea8736e5f9ca4b6ad6fa93cdda14f829c0872d6 100644 GIT binary patch delta 19 acmdnLg?axL<_%V@EJg-aCY$YA8AAb2wFdkE delta 19 acmdnLg?axL<_%V@EQS_VhMVnL8AAb2+6Mpt diff --git a/airtime_mvc/locale/it_IT/LC_MESSAGES/airtime.po b/airtime_mvc/locale/it_IT/LC_MESSAGES/airtime.po index f52e7f354..d1e1ab52c 100644 --- a/airtime_mvc/locale/it_IT/LC_MESSAGES/airtime.po +++ b/airtime_mvc/locale/it_IT/LC_MESSAGES/airtime.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: Airtime\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-13 12:58-0500\n" -"PO-Revision-Date: 2014-02-04 18:10+0000\n" +"PO-Revision-Date: 2014-02-04 20:40+0000\n" "Last-Translator: danse \n" "Language-Team: Italian (Italy) (http://www.transifex.com/projects/p/airtime/language/it_IT/)\n" "MIME-Version: 1.0\n" From 003f9ed6b20c17155f292337d4d4d0bc81b0c6ea Mon Sep 17 00:00:00 2001 From: localizer Date: Wed, 12 Feb 2014 10:54:11 +0000 Subject: [PATCH 03/39] updated translation resources --- .../locale/de_AT/LC_MESSAGES/airtime.mo | Bin 67790 -> 67790 bytes .../locale/de_AT/LC_MESSAGES/airtime.po | 2 +- .../locale/de_DE/LC_MESSAGES/airtime.mo | Bin 67791 -> 67801 bytes .../locale/de_DE/LC_MESSAGES/airtime.po | 5 +++-- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.mo index 174cead59df0c077c0f09e0272d9366791493cad..774cf14927bddd1263b063b123a7261bc1a67878 100644 GIT binary patch delta 17 ZcmX>%k>%V(mJKuKFc}(bo;}An2LMO<2bcf= delta 17 ZcmX>%k>%V(mJKuKFd0~Eo;}An2LMPT2cG}{ diff --git a/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.po b/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.po index bfa129c50..28661b50e 100644 --- a/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.po +++ b/airtime_mvc/locale/de_AT/LC_MESSAGES/airtime.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: Airtime\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-13 12:58-0500\n" -"PO-Revision-Date: 2014-02-11 20:08+0000\n" +"PO-Revision-Date: 2014-02-11 20:10+0000\n" "Last-Translator: hoerich \n" "Language-Team: German (Austria) (http://www.transifex.com/projects/p/airtime/language/de_AT/)\n" "MIME-Version: 1.0\n" diff --git a/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.mo index f1a6cf35d485b89607ba62ed4d1122e53b27bcff..833f4b18067149d01bcab81eb11bc3b0a2c8f552 100644 GIT binary patch delta 6850 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 delta 6840 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 diff --git a/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.po b/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.po index 3688db239..368321c48 100644 --- a/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.po +++ b/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the Airtime package. # # Translators: +# danielhjames , 2014 # hoerich , 2014 # Sourcefabric , 2013 msgid "" @@ -10,8 +11,8 @@ msgstr "" "Project-Id-Version: Airtime\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-13 12:58-0500\n" -"PO-Revision-Date: 2014-02-04 18:19+0000\n" -"Last-Translator: hoerich \n" +"PO-Revision-Date: 2014-02-12 10:53+0000\n" +"Last-Translator: danielhjames \n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/airtime/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" From 86dafaf61c40269b5ca10466b7c0eb45ad7bb570 Mon Sep 17 00:00:00 2001 From: Albert Santoni Date: Fri, 14 Feb 2014 16:22:15 -0500 Subject: [PATCH 04/39] SAAS-404: Separate the Airtime API version from the Airtime version * Airtime PHP side can be version bumped without pypo freaking out now --- .../application/controllers/ApiController.php | 3 +- python_apps/api_clients/api_client.py | 29 ++++++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index d75b64b45..4ce7a5583 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -65,7 +65,8 @@ class ApiController extends Zend_Controller_Action public function versionAction() { $this->_helper->json->sendJson( array( - "version" => Application_Model_Preference::GetAirtimeVersion())); + "airtime_version" => Application_Model_Preference::GetAirtimeVersion(), + "api_version" => AIRTIME_API_VERSION)); } /** diff --git a/python_apps/api_clients/api_client.py b/python_apps/api_clients/api_client.py index 4b333268b..6c12e6fb6 100644 --- a/python_apps/api_clients/api_client.py +++ b/python_apps/api_clients/api_client.py @@ -17,7 +17,7 @@ import base64 import traceback from configobj import ConfigObj -AIRTIME_VERSION = "2.5.1" +AIRTIME_API_VERSION = "1.1" # TODO : Place these functions in some common module. Right now, media @@ -218,27 +218,30 @@ class AirtimeApiClient(object): sys.exit(1) def __get_airtime_version(self): - try: return self.services.version_url()[u'version'] + try: return self.services.version_url()[u'airtime_version'] + except Exception: return -1 + + def __get_api_version(self): + try: return self.services.version_url()[u'api_version'] except Exception: return -1 def is_server_compatible(self, verbose=True): logger = self.logger - version = self.__get_airtime_version() + api_version = self.__get_api_version() # logger.info('Airtime version found: ' + str(version)) - if version == -1: - if (verbose): - logger.info('Unable to get Airtime version number.\n') - return False - elif version[0:3] != AIRTIME_VERSION[0:3]: + if api_version == -1: if verbose: - logger.info('Airtime version found: ' + str(version)) - logger.info('pypo is at version ' + AIRTIME_VERSION + - ' and is not compatible with this version of Airtime.\n') + logger.info('Unable to get Airtime API version number.\n') + return False + elif api_version[0:3] != AIRTIME_API_VERSION[0:3]: + if verbose: + logger.info('Airtime API version found: ' + str(api_version)) + logger.info('pypo is only compatible with API version: ' + AIRTIME_API_VERSION) return False else: if verbose: - logger.info('Airtime version: ' + str(version)) - logger.info('pypo is at version ' + AIRTIME_VERSION + ' and is compatible with this version of Airtime.') + logger.info('Airtime API version found: ' + str(api_version)) + logger.info('pypo is only compatible with API version: ' + AIRTIME_API_VERSION) return True From 787f19f69ab249d863ad73f82d912d8c12e464f7 Mon Sep 17 00:00:00 2001 From: drigato Date: Mon, 24 Feb 2014 14:49:11 -0500 Subject: [PATCH 05/39] CC-5697: Editing a linked show's repeat day sets wrong day for show content When a user edits a show and changes the repeat day, we are really deleting the instances from the original repeat day and creating new instances. Therefore, we don't need to update the show content's start/end time in this case. --- .../application/services/ShowService.php | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index f206a4abb..ea4007267 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -20,6 +20,7 @@ class Application_Service_ShowService private $localShowStartHour; private $localShowStartMin; private $origCcShowDay; + private $instanceIdsForScheduleUpdates; public function __construct($showId=null, $showData=null, $isUpdate=false) { @@ -39,6 +40,7 @@ class Application_Service_ShowService $this->isRecorded = (isset($showData['add_show_record']) && $showData['add_show_record']) ? 1 : 0; $this->isRebroadcast = (isset($showData['add_show_rebroadcast']) && $showData['add_show_rebroadcast']) ? 1 : 0; $this->isUpdate = $isUpdate; + $this->instanceIdsForScheduleUpdates = array(); } public function editRepeatingShowInstance($showData) { @@ -230,12 +232,10 @@ class Application_Service_ShowService private function adjustSchedule($showData) { $con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME); - $ccShowInstances = CcShowInstancesQuery::create() - ->filterByDbShowId($this->ccShow->getDbId()) - ->find(); $this->updateScheduleStartEndTimes($showData); + $ccShowInstances = $this->ccShow->getCcShowInstancess(); foreach ($ccShowInstances as $instance) { $instance->updateScheduleStatus($con); } @@ -271,6 +271,7 @@ class Application_Service_ShowService $ccShows = array(); foreach ($ccShowDays as $day) { + $this->instanceIdsForScheduleUpdates = array(); $this->ccShow = $day->getCcShow(); $this->isRecorded = $this->ccShow->isRecorded(); @@ -881,7 +882,6 @@ SQL; private function updateScheduleStartEndTimes($showData) { $showId = $this->ccShow->getDbId(); - //DateTime in show's local time $newStartDateTime = new DateTime($showData["add_show_start_date"]." ". $showData["add_show_start_time"], @@ -890,12 +890,9 @@ SQL; $diff = $this->calculateShowStartDiff($newStartDateTime, $this->origCcShowDay->getLocalStartDateAndTime()); - $ccShowInstances = $this->ccShow->getFutureCcShowInstancess(); - $instanceIds = array(); - foreach ($ccShowInstances as $ccShowInstance) { - array_push($instanceIds, $ccShowInstance->getDbId()); - } - Application_Service_SchedulerService::updateScheduleStartTime($instanceIds, $diff); + Application_Service_SchedulerService::updateScheduleStartTime( + $this->instanceIdsForScheduleUpdates, + $diff); } /** @@ -1070,6 +1067,7 @@ SQL; $ccShowInstance = $this->getInstance($utcStartDateTime); $newInstance = false; $updateScheduleStatus = true; + array_push($this->instanceIdsForScheduleUpdates, $ccShowInstance->getDbId()); } else { $newInstance = true; $ccShowInstance = new CcShowInstances(); From 6cd84363a6f2ee48f80f286315c2a03be8baeb93 Mon Sep 17 00:00:00 2001 From: drigato Date: Mon, 24 Feb 2014 16:04:48 -0500 Subject: [PATCH 06/39] CC-5697: Editing a linked show's repeat day sets wrong day for show content Added comment --- airtime_mvc/application/services/ShowService.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index ea4007267..d142636fc 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -1067,6 +1067,11 @@ SQL; $ccShowInstance = $this->getInstance($utcStartDateTime); $newInstance = false; $updateScheduleStatus = true; + /* Keep track of which instances in the cc_show are being + * updated. We are not interested in which instances are + * new because we won't need to update the scheduled content + * for those shows + */ array_push($this->instanceIdsForScheduleUpdates, $ccShowInstance->getDbId()); } else { $newInstance = true; From cd592827fd7377d5af9d5aa27c80dc99707072c3 Mon Sep 17 00:00:00 2001 From: drigato Date: Mon, 24 Feb 2014 17:46:16 -0500 Subject: [PATCH 07/39] CC-5698: Library -> Scheduled column doesn't get updated when bulk adding items Array storing file ids of scheduled files was in wrong place and was getting re-created everytime a file was inserted into a show --- airtime_mvc/application/models/Scheduler.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/airtime_mvc/application/models/Scheduler.php b/airtime_mvc/application/models/Scheduler.php index d57ef0090..4af3efd5c 100644 --- a/airtime_mvc/application/models/Scheduler.php +++ b/airtime_mvc/application/models/Scheduler.php @@ -706,6 +706,9 @@ class Application_Model_Scheduler $doUpdate = false; $values = array(); + //array that stores the cc_file ids so we can update the is_scheduled flag + $fileIds = array(); + foreach ($filesToInsert as &$file) { //item existed previously and is being moved. //need to keep same id for resources if we want REST. @@ -761,9 +764,6 @@ class Application_Model_Scheduler $file['fadein'] = Application_Common_DateHelper::secondsToPlaylistTime($file['fadein']); $file['fadeout'] = Application_Common_DateHelper::secondsToPlaylistTime($file['fadeout']); - //array that stores the cc_file ids so we can update the is_scheduled flag - $fileIds = array(); - switch ($file["type"]) { case 0: $fileId = $file["id"]; From 3db1cd412a15fbb4652e0aeb7e4948f62080f6b3 Mon Sep 17 00:00:00 2001 From: drigato Date: Tue, 25 Feb 2014 16:51:48 -0500 Subject: [PATCH 08/39] CC-5697: Editing a linked show's repeat day sets wrong day for show content Optimized how we store the instance ids that already exist --- .../application/services/ShowService.php | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index d142636fc..3b129599d 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -201,6 +201,8 @@ class Application_Service_ShowService //delete entry in cc_show_rebroadcast $this->deleteCcShowRebroadcasts(); } + + $this->storeInstanceIds(); } //update ccShowDays @@ -229,6 +231,21 @@ class Application_Service_ShowService } } + /** + * + * Returns an array of instance ids that already exist + * We need this if a show is being updated so we can separate the + * instances that already exist and any new instances that + * get created (by adding a new repeat show day) + */ + private function storeInstanceIds() + { + $instances = $this->ccShow->getCcShowInstancess(); + foreach ($instances as $instance) { + $this->instanceIdsForScheduleUpdates[] = $instance->getDbId(); + } + } + private function adjustSchedule($showData) { $con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME); @@ -271,7 +288,6 @@ class Application_Service_ShowService $ccShows = array(); foreach ($ccShowDays as $day) { - $this->instanceIdsForScheduleUpdates = array(); $this->ccShow = $day->getCcShow(); $this->isRecorded = $this->ccShow->isRecorded(); @@ -1067,12 +1083,6 @@ SQL; $ccShowInstance = $this->getInstance($utcStartDateTime); $newInstance = false; $updateScheduleStatus = true; - /* Keep track of which instances in the cc_show are being - * updated. We are not interested in which instances are - * new because we won't need to update the scheduled content - * for those shows - */ - array_push($this->instanceIdsForScheduleUpdates, $ccShowInstance->getDbId()); } else { $newInstance = true; $ccShowInstance = new CcShowInstances(); From f1658f649061abe4ee6d882cf868cf69ca02bd08 Mon Sep 17 00:00:00 2001 From: drigato Date: Tue, 25 Feb 2014 17:16:14 -0500 Subject: [PATCH 09/39] CC-5697: Editing a linked show's repeat day sets wrong day for show content Fixed a problem where we can't store the original cc_show_day data because none can exist at some points. If the user changes the only repeat day, the cc_show_day rule is deleted first then recreated --- airtime_mvc/application/services/ShowService.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index 3b129599d..b4c31a676 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -189,9 +189,11 @@ class Application_Service_ShowService $daysAdded = array(); if ($this->isUpdate) { - $daysAdded = $this->delegateInstanceCleanup($showData); + if (!$this->ccShow->getCcShowDayss()->isEmpty()) { + $this->storeOrigLocalShowInfo(); + } - $this->storeOrigLocalShowInfo(); + $daysAdded = $this->delegateInstanceCleanup($showData); $this->deleteRebroadcastInstances(); From 753003639f5284785fd58f589866ce1bea7a4681 Mon Sep 17 00:00:00 2001 From: drigato Date: Tue, 25 Feb 2014 17:22:17 -0500 Subject: [PATCH 10/39] CC-5696: Two shows or even three shows playing at once. Unstopable even after reboot The problem was that we weren't updating the first show's start time if deleting a repeat show day changes it. This affected the difference between the original show start time and the new one. --- airtime_mvc/application/models/airtime/CcShow.php | 3 +++ airtime_mvc/application/services/ShowService.php | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/airtime_mvc/application/models/airtime/CcShow.php b/airtime_mvc/application/models/airtime/CcShow.php index 91874eed6..59da9b35a 100644 --- a/airtime_mvc/application/models/airtime/CcShow.php +++ b/airtime_mvc/application/models/airtime/CcShow.php @@ -47,6 +47,9 @@ class CcShow extends BaseCcShow { */ public function getFirstCcShowDay($criteria = null, PropelPDO $con = null) { + CcShowPeer::clearInstancePool(); + CcShowPeer::clearRelatedInstancePool(); + if(null === $this->collCcShowDayss || null !== $criteria) { if ($this->isNew() && null === $this->collCcShowDayss) { // return empty collection diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index b4c31a676..afb630f9d 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -220,6 +220,13 @@ class Application_Service_ShowService $this->delegateInstanceCreation($daysAdded); if ($this->isUpdate) { + /* Set the show's start date to the start date of the first instance. + * We need to do this so we get the correct time diff for + * updating show content. CC-5696 + */ + $showData["add_show_start_date"] = $this->ccShow->getFirstCcShowDay()->getDbFirstShow(); + $showData["add_show_start_time"] = $this->ccShow->getFirstCcShowDay()->getDbStartTime(); + $this->adjustSchedule($showData); } From 1acdf2ca800cd832a2f9ee792d9d680a5bdf0197 Mon Sep 17 00:00:00 2001 From: drigato Date: Thu, 27 Feb 2014 07:35:08 -0500 Subject: [PATCH 11/39] CC-5716: Write database test to check the show content after editing a repeating show and removing a repeat day --- .../services/database/ShowServiceDbTest.php | 56 +++++++ ...tRepeatShowDayUpdatesScheduleCorrectly.xml | 137 ++++++++++++++++++ 2 files changed, 193 insertions(+) create mode 100644 airtime_mvc/tests/application/services/database/datasets/test_removeFirstRepeatShowDayUpdatesScheduleCorrectly.xml diff --git a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php index 3fdf769f3..718b55c14 100644 --- a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php +++ b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php @@ -542,4 +542,60 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $ds ); } + + /** + * Tests that when you remove the first repeat show day, which changes + * the show's first instance start date, updates the scheduled content + * correctly + */ + public function testRemoveFirstRepeatShowDayUpdatesScheduleCorrectly() + { + TestHelper::loginUser(); + + $data = ShowServiceData::getWeeklyRepeatNoEndNoRRData(); + $data["add_show_day_check"] = array(3,4); + $data["add_show_linked"] = 1; + $showService = new Application_Service_ShowService(null, $data); + $showService->addUpdateShow($data); + + //insert some fake tracks into cc_schedule table + $scheduleItems = array( + 0 => array( + "id" => 0, + "instance" => 1 + ) + ); + $mediaItems = array( + 0 => array( + "id" => 1, + "cliplength" => "00:04:32", + "cuein" => "00:00:00", + "cueout" => "00:04:32", + "fadein" => 00.5, + "fadeout" => 00.5, + "sched_id" => null, + "type" => 0 + ), + 1 => array( + "id" => 2, + "cliplength" => "00:03:21", + "cuein" => "00:00:00", + "cueout" => "00:03:21", + "fadein" => 00.5, + "fadeout" => 00.5, + "sched_id" => null, + "type" => 0 + ) + ); + $scheduler = new Application_Model_Scheduler(); + $scheduler->scheduleAfter($scheduleItems, $mediaItems); + + //delete the first repeat day + $data["add_show_day_check"] = array(4); + $data["add_show_id"] = 1; + $showService = new Application_Service_ShowService(null, $data, true); + $showService->addUpdateShow($data); + + + } } diff --git a/airtime_mvc/tests/application/services/database/datasets/test_removeFirstRepeatShowDayUpdatesScheduleCorrectly.xml b/airtime_mvc/tests/application/services/database/datasets/test_removeFirstRepeatShowDayUpdatesScheduleCorrectly.xml new file mode 100644 index 000000000..871729009 --- /dev/null +++ b/airtime_mvc/tests/application/services/database/datasets/test_removeFirstRepeatShowDayUpdatesScheduleCorrectly.xml @@ -0,0 +1,137 @@ + + + + id + name + url + genre + description + color + background_color + live_stream_using_airtime_auth + live_stream_using_custom_auth + live_stream_user + live_stream_pass + linked + is_linkable + + 1 + test show + + + + ffffff + 364492 + + + + + 1 + 1 + +
+ + + id + first_show + last_show + start_time + timezone + duration + day + repeat_type + next_pop_date + show_id + record + + 1 + 2016-01-01 + + 00:00:00 + UTC + 01:00 + 5 + 0 + 2016-02-12 + 1 + 0 + +
+ + + id + starts + ends + show_id + record + rebroadcast + instance_id + modified_instance + + 1 + 2016-01-01 00:00:00 + 2016-01-01 01:00:00 + 1 + 0 + 0 + + + + + 2 + 2016-01-08 00:00:00 + 2016-01-08 01:00:00 + 1 + 0 + 0 + + + + + 3 + 2016-01-15 00:00:00 + 2016-01-15 01:00:00 + 1 + 0 + 0 + + + + + 4 + 2016-01-22 00:00:00 + 2016-01-22 01:00:00 + 1 + 0 + 0 + + + + + 5 + 2016-01-29 00:00:00 + 2016-01-29 01:00:00 + 1 + 0 + 0 + + + + + 6 + 2016-02-05 00:00:00 + 2016-02-05 01:00:00 + 1 + 0 + 0 + + + +
+ + +
+ + +
+
\ No newline at end of file From e5cdaf37858791f150472c2066f6decc9326079c Mon Sep 17 00:00:00 2001 From: drigato Date: Thu, 27 Feb 2014 09:32:28 -0500 Subject: [PATCH 12/39] Temporarily commenting out test --- .../tests/application/services/database/ShowServiceDbTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php index 718b55c14..83b5ca648 100644 --- a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php +++ b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php @@ -548,7 +548,7 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase * the show's first instance start date, updates the scheduled content * correctly */ - public function testRemoveFirstRepeatShowDayUpdatesScheduleCorrectly() + /*public function testRemoveFirstRepeatShowDayUpdatesScheduleCorrectly() { TestHelper::loginUser(); @@ -597,5 +597,5 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $showService->addUpdateShow($data); - } + }*/ } From 4cb785a062743bb0ac930fbc05caeb9ae60221a1 Mon Sep 17 00:00:00 2001 From: drigato Date: Thu, 27 Feb 2014 12:10:28 -0500 Subject: [PATCH 13/39] CC-5716: Write database test to check the show content after editing a repeating show and removing a repeat day --- .../services/database/ShowServiceDbTest.php | 102 +++++++++--------- ...tRepeatShowDayUpdatesScheduleCorrectly.xml | 96 ++++++++--------- 2 files changed, 102 insertions(+), 96 deletions(-) diff --git a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php index 83b5ca648..f23120808 100644 --- a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php +++ b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php @@ -25,7 +25,7 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase TestHelper::setupZendBootstrap(); //$this->_nowDT = new DateTime("now", new DateTimeZone("UTC")); - + parent::setUp(); } @@ -37,10 +37,10 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $connection = Zend_Db::factory('pdo_pgsql', $config); $this->_connectionMock = $this->createZendDbConnection( - $connection, + $connection, 'airtimeunittests' - ); - Zend_Db_Table_Abstract::setDefaultAdapter($connection); + ); + Zend_Db_Table_Abstract::setDefaultAdapter($connection); } return $this->_connectionMock; } @@ -51,12 +51,12 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase public function getDataSet() { $xml_dataset = $this->createXmlDataSet( - dirname(__FILE__) . '/datasets/seed_show_service.xml' + dirname(__FILE__) . '/datasets/seed_show_service.xml' ); /*$xml_dataset_fixed = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet( - $xml_dataset, array('SIX_WEEKS' => $this->_nowDT->add(new DateInterval("P42D"))->format("Y-m-d H:i:s"))); + $xml_dataset, array('SIX_WEEKS' => $this->_nowDT->add(new DateInterval("P42D"))->format("Y-m-d H:i:s"))); - return $xml_dataset_fixed;*/ + return $xml_dataset_fixed;*/ return $xml_dataset; } @@ -421,26 +421,26 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase public function testLinkedShow() { TestHelper::loginUser(); - + /** Test creating a linked show **/ $data = ShowServiceData::getWeeklyRepeatNoEndNoRRData(); $data["add_show_linked"] = 1; $showService = new Application_Service_ShowService(null, $data); - + $showService->addUpdateShow($data); - + $ds = new Zend_Test_PHPUnit_Db_DataSet_QueryDataSet( - $this->getConnection() + $this->getConnection() ); $ds->addTable('cc_show', 'select * from cc_show'); $ds->addTable('cc_show_days', 'select * from cc_show_days'); $ds->addTable('cc_show_instances', 'select id, starts, ends, show_id, record, rebroadcast, instance_id, modified_instance from cc_show_instances'); $ds->addTable('cc_show_rebroadcast', 'select * from cc_show_rebroadcast'); $ds->addTable('cc_show_hosts', 'select * from cc_show_hosts'); - + $this->assertDataSetsEqual( $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_createLinkedShow.xml"), - $ds + $ds ); /** Test unlinking a show **/ @@ -450,17 +450,17 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $showService->addUpdateShow($data); $ds = new Zend_Test_PHPUnit_Db_DataSet_QueryDataSet( - $this->getConnection() + $this->getConnection() ); $ds->addTable('cc_show', 'select * from cc_show'); $ds->addTable('cc_show_days', 'select * from cc_show_days'); $ds->addTable('cc_show_instances', 'select id, starts, ends, show_id, record, rebroadcast, instance_id, modified_instance from cc_show_instances order by id'); $ds->addTable('cc_show_rebroadcast', 'select * from cc_show_rebroadcast'); $ds->addTable('cc_show_hosts', 'select * from cc_show_hosts'); - + $this->assertDataSetsEqual( - $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_unlinkLinkedShow.xml"), - $ds + $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_unlinkLinkedShow.xml"), + $ds ); } @@ -474,14 +474,14 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $showService->addUpdateShow($data); $ds = new Zend_Test_PHPUnit_Db_DataSet_QueryDataSet( - $this->getConnection() + $this->getConnection() ); $ds->addTable('cc_show', 'select * from cc_show'); $ds->addTable('cc_show_days', 'select * from cc_show_days'); $ds->addTable('cc_show_instances', 'select id, starts, ends, show_id, record, rebroadcast, instance_id, modified_instance from cc_show_instances'); $ds->addTable('cc_show_rebroadcast', 'select * from cc_show_rebroadcast'); $ds->addTable('cc_show_hosts', 'select * from cc_show_hosts'); - + $this->assertDataSetsEqual( $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_createNoRepeatRRShow.xml"), $ds @@ -498,14 +498,14 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $showService->addUpdateShow($data); $ds = new Zend_Test_PHPUnit_Db_DataSet_QueryDataSet( - $this->getConnection() + $this->getConnection() ); $ds->addTable('cc_show', 'select * from cc_show'); $ds->addTable('cc_show_days', 'select * from cc_show_days'); $ds->addTable('cc_show_instances', 'select id, starts, ends, show_id, record, rebroadcast, instance_id, modified_instance from cc_show_instances'); $ds->addTable('cc_show_rebroadcast', 'select * from cc_show_rebroadcast'); $ds->addTable('cc_show_hosts', 'select * from cc_show_hosts'); - + $this->assertDataSetsEqual( $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_createWeeklyRepeatRRShow.xml"), $ds @@ -529,14 +529,14 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $showService->addUpdateShow($data); $ds = new Zend_Test_PHPUnit_Db_DataSet_QueryDataSet( - $this->getConnection() + $this->getConnection() ); $ds->addTable('cc_show', 'select * from cc_show'); $ds->addTable('cc_show_days', 'select * from cc_show_days'); $ds->addTable('cc_show_instances', 'select id, starts, ends, show_id, record, rebroadcast, instance_id, modified_instance from cc_show_instances'); $ds->addTable('cc_show_rebroadcast', 'select * from cc_show_rebroadcast'); $ds->addTable('cc_show_hosts', 'select * from cc_show_hosts'); - + $this->assertDataSetsEqual( $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_editRepeatingShowChangeNoEndOption.xml"), $ds @@ -548,54 +548,60 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase * the show's first instance start date, updates the scheduled content * correctly */ - /*public function testRemoveFirstRepeatShowDayUpdatesScheduleCorrectly() + public function testRemoveFirstRepeatShowDayUpdatesScheduleCorrectly() { TestHelper::loginUser(); $data = ShowServiceData::getWeeklyRepeatNoEndNoRRData(); - $data["add_show_day_check"] = array(3,4); + $data["add_show_start_date"] = "2016-01-29"; + $data["add_show_day_check"] = array(5,6); $data["add_show_linked"] = 1; $showService = new Application_Service_ShowService(null, $data); $showService->addUpdateShow($data); //insert some fake tracks into cc_schedule table + $ccFiles = new CcFiles(); + $ccFiles + ->setDbCueIn("00:00:00") + ->setDbCueOut("00:04:32") + ->save(); + $scheduleItems = array( 0 => array( - "id" => 0, - "instance" => 1 + "id" => 0, + "instance" => 1, + "timestamp" => time() ) ); $mediaItems = array( 0 => array( - "id" => 1, - "cliplength" => "00:04:32", - "cuein" => "00:00:00", - "cueout" => "00:04:32", - "fadein" => 00.5, - "fadeout" => 00.5, - "sched_id" => null, - "type" => 0 - ), - 1 => array( - "id" => 2, - "cliplength" => "00:03:21", - "cuein" => "00:00:00", - "cueout" => "00:03:21", - "fadein" => 00.5, - "fadeout" => 00.5, - "sched_id" => null, - "type" => 0 + "id" => 1, + "type" => "audioclip" ) ); $scheduler = new Application_Model_Scheduler(); $scheduler->scheduleAfter($scheduleItems, $mediaItems); //delete the first repeat day - $data["add_show_day_check"] = array(4); + $data["add_show_day_check"] = array(6); $data["add_show_id"] = 1; $showService = new Application_Service_ShowService(null, $data, true); $showService->addUpdateShow($data); - - }*/ + $ds = new Zend_Test_PHPUnit_Db_DataSet_QueryDataSet( + $this->getConnection() + ); + + $ds->addTable('cc_show', 'select * from cc_show'); + $ds->addTable('cc_show_days', 'select * from cc_show_days'); + $ds->addTable('cc_show_instances', 'select id, starts, ends, show_id, record, rebroadcast, instance_id, modified_instance from cc_show_instances'); + $ds->addTable('cc_show_rebroadcast', 'select * from cc_show_rebroadcast'); + $ds->addTable('cc_show_hosts', 'select * from cc_show_hosts'); + $ds->addTable('cc_schedule', 'select id, starts, ends, file_id, clip_length, fade_in, fade_out, cue_in, cue_out, instance_id, playout_status from cc_schedule'); + + $this->assertDataSetsEqual( + $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_removeFirstRepeatShowDayUpdatesScheduleCorrectly.xml"), + $ds + ); + } } diff --git a/airtime_mvc/tests/application/services/database/datasets/test_removeFirstRepeatShowDayUpdatesScheduleCorrectly.xml b/airtime_mvc/tests/application/services/database/datasets/test_removeFirstRepeatShowDayUpdatesScheduleCorrectly.xml index 871729009..3de4e16d9 100644 --- a/airtime_mvc/tests/application/services/database/datasets/test_removeFirstRepeatShowDayUpdatesScheduleCorrectly.xml +++ b/airtime_mvc/tests/application/services/database/datasets/test_removeFirstRepeatShowDayUpdatesScheduleCorrectly.xml @@ -44,15 +44,15 @@ show_id record - 1 - 2016-01-01 + 2 + 2016-01-30 00:00:00 UTC 01:00 - 5 + 6 0 - 2016-02-12 + 2016-02-13 1 0 @@ -67,30 +67,10 @@ rebroadcast instance_id modified_instance - - 1 - 2016-01-01 00:00:00 - 2016-01-01 01:00:00 - 1 - 0 - 0 - - - - - 2 - 2016-01-08 00:00:00 - 2016-01-08 01:00:00 - 1 - 0 - 0 - - - 3 - 2016-01-15 00:00:00 - 2016-01-15 01:00:00 + 2016-01-30 00:00:00 + 2016-01-30 01:00:00 1 0 0 @@ -99,28 +79,8 @@ 4 - 2016-01-22 00:00:00 - 2016-01-22 01:00:00 - 1 - 0 - 0 - - - - - 5 - 2016-01-29 00:00:00 - 2016-01-29 01:00:00 - 1 - 0 - 0 - - - - - 6 - 2016-02-05 00:00:00 - 2016-02-05 01:00:00 + 2016-02-06 00:00:00 + 2016-02-06 01:00:00 1 0 0 @@ -134,4 +94,44 @@
+ + + id + starts + ends + file_id + clip_length + fade_in + fade_out + cue_in + cue_out + instance_id + playout_status + + 3 + 2016-01-30 00:00:00 + 2016-01-30 00:04:32 + 1 + 00:04:32 + 00:00:00.5 + 00:00:00.5 + 00:00:00 + 00:04:32 + 3 + 1 + + + 4 + 2016-02-06 00:00:00 + 2016-02-06 00:04:32 + 1 + 00:04:32 + 00:00:00.5 + 00:00:00.5 + 00:00:00 + 00:04:32 + 4 + 1 + +
\ No newline at end of file From 1715f2187d3d6e7c1504049b2480a0610e281379 Mon Sep 17 00:00:00 2001 From: drigato Date: Thu, 27 Feb 2014 13:08:41 -0500 Subject: [PATCH 14/39] CC-5715: Write database test to check the schedule start times after editing a repeating show and changing the repeat day --- .../services/database/ShowServiceDbTest.php | 67 ++++++++- ...hangeRepeatDayUpdatesScheduleCorrectly.xml | 137 ++++++++++++++++++ 2 files changed, 199 insertions(+), 5 deletions(-) create mode 100644 airtime_mvc/tests/application/services/database/datasets/test_changeRepeatDayUpdatesScheduleCorrectly.xml diff --git a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php index f23120808..576ac7ca1 100644 --- a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php +++ b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php @@ -568,15 +568,15 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $scheduleItems = array( 0 => array( - "id" => 0, - "instance" => 1, - "timestamp" => time() + "id" => 0, + "instance" => 1, + "timestamp" => time() ) ); $mediaItems = array( 0 => array( - "id" => 1, - "type" => "audioclip" + "id" => 1, + "type" => "audioclip" ) ); $scheduler = new Application_Model_Scheduler(); @@ -604,4 +604,61 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $ds ); } + + public function testChangeRepeatDayUpdatesScheduleCorrectly() + { + TestHelper::loginUser(); + + $data = ShowServiceData::getWeeklyRepeatNoEndNoRRData(); + $data["add_show_start_date"] = "2016-01-29"; + $data["add_show_day_check"] = array(5); + $data["add_show_linked"] = 1; + $showService = new Application_Service_ShowService(null, $data); + $showService->addUpdateShow($data); + + //insert some fake tracks into cc_schedule table + $ccFiles = new CcFiles(); + $ccFiles + ->setDbCueIn("00:00:00") + ->setDbCueOut("00:04:32") + ->save(); + + $scheduleItems = array( + 0 => array( + "id" => 0, + "instance" => 1, + "timestamp" => time() + ) + ); + $mediaItems = array( + 0 => array( + "id" => 1, + "type" => "audioclip" + ) + ); + $scheduler = new Application_Model_Scheduler(); + $scheduler->scheduleAfter($scheduleItems, $mediaItems); + + //delete the first repeat day + $data["add_show_day_check"] = array(6); + $data["add_show_id"] = 1; + $showService = new Application_Service_ShowService(null, $data, true); + $showService->addUpdateShow($data); + + $ds = new Zend_Test_PHPUnit_Db_DataSet_QueryDataSet( + $this->getConnection() + ); + + $ds->addTable('cc_show', 'select * from cc_show'); + $ds->addTable('cc_show_days', 'select * from cc_show_days'); + $ds->addTable('cc_show_instances', 'select id, starts, ends, show_id, record, rebroadcast, instance_id, modified_instance from cc_show_instances'); + $ds->addTable('cc_show_rebroadcast', 'select * from cc_show_rebroadcast'); + $ds->addTable('cc_show_hosts', 'select * from cc_show_hosts'); + $ds->addTable('cc_schedule', 'select id, starts, ends, file_id, clip_length, fade_in, fade_out, cue_in, cue_out, instance_id, playout_status from cc_schedule'); + + $this->assertDataSetsEqual( + $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_changeRepeatDayUpdatesScheduleCorrectly.xml"), + $ds + ); + } } diff --git a/airtime_mvc/tests/application/services/database/datasets/test_changeRepeatDayUpdatesScheduleCorrectly.xml b/airtime_mvc/tests/application/services/database/datasets/test_changeRepeatDayUpdatesScheduleCorrectly.xml new file mode 100644 index 000000000..3de4e16d9 --- /dev/null +++ b/airtime_mvc/tests/application/services/database/datasets/test_changeRepeatDayUpdatesScheduleCorrectly.xml @@ -0,0 +1,137 @@ + + + + id + name + url + genre + description + color + background_color + live_stream_using_airtime_auth + live_stream_using_custom_auth + live_stream_user + live_stream_pass + linked + is_linkable + + 1 + test show + + + + ffffff + 364492 + + + + + 1 + 1 + +
+ + + id + first_show + last_show + start_time + timezone + duration + day + repeat_type + next_pop_date + show_id + record + + 2 + 2016-01-30 + + 00:00:00 + UTC + 01:00 + 6 + 0 + 2016-02-13 + 1 + 0 + +
+ + + id + starts + ends + show_id + record + rebroadcast + instance_id + modified_instance + + 3 + 2016-01-30 00:00:00 + 2016-01-30 01:00:00 + 1 + 0 + 0 + + + + + 4 + 2016-02-06 00:00:00 + 2016-02-06 01:00:00 + 1 + 0 + 0 + + + +
+ + +
+ + +
+ + + id + starts + ends + file_id + clip_length + fade_in + fade_out + cue_in + cue_out + instance_id + playout_status + + 3 + 2016-01-30 00:00:00 + 2016-01-30 00:04:32 + 1 + 00:04:32 + 00:00:00.5 + 00:00:00.5 + 00:00:00 + 00:04:32 + 3 + 1 + + + 4 + 2016-02-06 00:00:00 + 2016-02-06 00:04:32 + 1 + 00:04:32 + 00:00:00.5 + 00:00:00.5 + 00:00:00 + 00:04:32 + 4 + 1 + +
+
\ No newline at end of file From b433a529ab102eaac18176ba154575f38ddc7513 Mon Sep 17 00:00:00 2001 From: drigato Date: Mon, 3 Mar 2014 16:42:52 -0500 Subject: [PATCH 15/39] CC-5696: Two shows or even three shows playing at once. Unstopable even after reboot --- airtime_mvc/application/models/airtime/CcShow.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/models/airtime/CcShow.php b/airtime_mvc/application/models/airtime/CcShow.php index 59da9b35a..99d3649bc 100644 --- a/airtime_mvc/application/models/airtime/CcShow.php +++ b/airtime_mvc/application/models/airtime/CcShow.php @@ -47,8 +47,8 @@ class CcShow extends BaseCcShow { */ public function getFirstCcShowDay($criteria = null, PropelPDO $con = null) { - CcShowPeer::clearInstancePool(); - CcShowPeer::clearRelatedInstancePool(); + /*CcShowPeer::clearInstancePool(); + CcShowPeer::clearRelatedInstancePool();*/ if(null === $this->collCcShowDayss || null !== $criteria) { if ($this->isNew() && null === $this->collCcShowDayss) { From 7660e0cd84d3ee5c10dc0f9f23d2a8e3bdeb076f Mon Sep 17 00:00:00 2001 From: drigato Date: Tue, 4 Mar 2014 11:29:49 -0500 Subject: [PATCH 16/39] CC-5719: Incorrect show content start time The show content was getting recalculated twice sometimes. So if the difference between the original and now show start date-time and was 2 hours, the scheduled content would have a difference of 4 hours --- .../application/services/SchedulerService.php | 24 ++++++++----------- .../application/services/ShowService.php | 5 ++-- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/airtime_mvc/application/services/SchedulerService.php b/airtime_mvc/application/services/SchedulerService.php index 60206c112..4b558cfc6 100644 --- a/airtime_mvc/application/services/SchedulerService.php +++ b/airtime_mvc/application/services/SchedulerService.php @@ -304,24 +304,20 @@ class Application_Service_SchedulerService private static function replaceInstanceContentCheck($currentShowStamp, $showStamp) { - /*$currentShowStamp = CcScheduleQuery::create() - ->filterByDbInstanceId($ccShowInstance->getDbId()) - ->orderByDbStarts() - ->find();*/ - $counter = 0; foreach ($showStamp as $item) { if ($item["file_id"] != $currentShowStamp[$counter]["file_id"] || $item["stream_id"] != $currentShowStamp[$counter]["stream_id"]) { - /*CcScheduleQuery::create() - ->filterByDbInstanceId($ccShowInstance->getDbId()) - ->delete();*/ - $delete_sql = "DELETE FROM cc_schedule ". - "WHERE instance_id = {$currentShowStamp[$counter]["instance_id"]}"; - Application_Common_Database::prepareAndExecute( - $delete_sql, array(), Application_Common_Database::EXECUTE); - return true; - } + /*CcScheduleQuery::create() + ->filterByDbInstanceId($ccShowInstance->getDbId()) + ->delete();*/ + $delete_sql = "DELETE FROM cc_schedule ". + "WHERE instance_id = {$currentShowStamp[$counter]["instance_id"]}"; + Application_Common_Database::prepareAndExecute( + $delete_sql, array(), Application_Common_Database::EXECUTE); + return true; + } + $counter += 1; } /* If we get here, the content in the show instance is the same diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index afb630f9d..5fdaf4f19 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -534,12 +534,11 @@ SQL; //check if this is null if "no end" $currentShowEndDateTime = $this->getRepeatingEndDate(); - if ($currentShowEndDateTime != $endDateTime) { - + if ($endDateTime && $currentShowEndDateTime != $endDateTime) { $endDate = clone $endDateTime; $endDate->setTimezone(new DateTimeZone("UTC")); - //show "No End" option was toggled + //show's "No End" option was toggled //or the end date comes earlier if (is_null($currentShowEndDateTime) || ($endDateTime < $currentShowEndDateTime)) { //"No End" option was unchecked so we need to delete the From ebc68b980c55c617f711fa30f467418effa08b78 Mon Sep 17 00:00:00 2001 From: drigato Date: Wed, 5 Mar 2014 13:12:27 -0500 Subject: [PATCH 17/39] CC-5718: Show content can get scheduled in instances that are in the past Disabled scheduled content into instances that have already played out Removed setting the show's start date to the first repeating instance's start date because we already fixed that in CC-5697 --- airtime_mvc/application/models/Scheduler.php | 15 ++++++++------- airtime_mvc/application/services/ShowService.php | 5 +++-- .../application/models/unit/ScheduleUnitTest.php | 4 ++-- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/airtime_mvc/application/models/Scheduler.php b/airtime_mvc/application/models/Scheduler.php index 4af3efd5c..7923889fb 100644 --- a/airtime_mvc/application/models/Scheduler.php +++ b/airtime_mvc/application/models/Scheduler.php @@ -590,10 +590,10 @@ class Application_Model_Scheduler * to that show */ if ($linked) { - $instance_sql = "SELECT * FROM cc_show_instances ". - "WHERE show_id = ".$ccShow["id"]; - $instances = Application_Common_Database::prepareAndExecute( - $instance_sql); + $instances = CcShowInstancesQuery::create() + ->filterByDbShowId($ccShow["id"]) + ->filterByDbStarts(gmdate("Y-m-d H:i:s"), Criteria::GREATER_THAN) + ->find(); } else { $instance_sql = "SELECT * FROM cc_show_instances ". "WHERE id = ".$schedule["instance"]; @@ -606,7 +606,8 @@ class Application_Model_Scheduler //reset $this->applyCrossfades = true; - $instanceId = $instance["id"]; + //$instanceId = $instance["id"]; + $instanceId = $instance->getDbId(); if ($id !== 0) { /* We use the selected cursor's position to find the same * positions in every other linked instance @@ -632,7 +633,7 @@ class Application_Model_Scheduler //show instance has no scheduled tracks if (empty($pos)) { $pos = 0; - $nextStartDT = new DateTime($instance["starts"], new DateTimeZone("UTC")); + $nextStartDT = new DateTime($instance->getDbStarts(), new DateTimeZone("UTC")); } else { $linkedItem_sql = "SELECT ends FROM cc_schedule ". @@ -658,7 +659,7 @@ class Application_Model_Scheduler } //selected empty row to add after else { - $showStartDT = new DateTime($instance["starts"], new DateTimeZone("UTC")); + $showStartDT = new DateTime($instance->getDbStarts(), new DateTimeZone("UTC")); $nextStartDT = $this->findNextStartTime($showStartDT, $instanceId); //first item in show so start position counter at 0 diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index 5fdaf4f19..e3bec88bf 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -183,6 +183,7 @@ class Application_Service_ShowService if (!$currentUser->isAdminOrPM()) { throw new Exception("Permission denied"); } + //update ccShow $this->setCcShow($showData); @@ -224,8 +225,8 @@ class Application_Service_ShowService * We need to do this so we get the correct time diff for * updating show content. CC-5696 */ - $showData["add_show_start_date"] = $this->ccShow->getFirstCcShowDay()->getDbFirstShow(); - $showData["add_show_start_time"] = $this->ccShow->getFirstCcShowDay()->getDbStartTime(); + //$showData["add_show_start_date"] = $this->ccShow->getFirstCcShowDay()->getDbFirstShow(); + //$showData["add_show_start_time"] = $this->ccShow->getFirstCcShowDay()->getDbStartTime(); $this->adjustSchedule($showData); } diff --git a/airtime_mvc/tests/application/models/unit/ScheduleUnitTest.php b/airtime_mvc/tests/application/models/unit/ScheduleUnitTest.php index 63bc8b283..d645b545e 100644 --- a/airtime_mvc/tests/application/models/unit/ScheduleUnitTest.php +++ b/airtime_mvc/tests/application/models/unit/ScheduleUnitTest.php @@ -22,7 +22,7 @@ class ScheduleUnitTest extends Zend_Test_PHPUnit_ControllerTestCase //PHPUnit_Fr } - public function testIsFileScheduledInTheFuture() + /*public function testIsFileScheduledInTheFuture() { TestHelper::loginUser(); $CC_CONFIG = Config::getConfig(); @@ -92,6 +92,6 @@ class ScheduleUnitTest extends Zend_Test_PHPUnit_ControllerTestCase //PHPUnit_Fr //Test the function we actually want to test. :-) $this->assertEquals($scheduleModel->IsFileScheduledInTheFuture($fileId), true); - } + }*/ } From 426b75b63570c31b0edaf5f01c75a31c9984fc3e Mon Sep 17 00:00:00 2001 From: drigato Date: Wed, 5 Mar 2014 14:37:07 -0500 Subject: [PATCH 18/39] CC-5724: Changing start date of a repeating show will update content incorrectly --- airtime_mvc/application/services/ShowService.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index e3bec88bf..d03820a53 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -221,12 +221,15 @@ class Application_Service_ShowService $this->delegateInstanceCreation($daysAdded); if ($this->isUpdate) { - /* Set the show's start date to the start date of the first instance. - * We need to do this so we get the correct time diff for - * updating show content. CC-5696 + + /* If the show is repeating and the start date changes we need + * to ignore that difference when re-calculating schedule start times. + * Otherwise it might calculate a difference of a week, for example. */ - //$showData["add_show_start_date"] = $this->ccShow->getFirstCcShowDay()->getDbFirstShow(); - //$showData["add_show_start_time"] = $this->ccShow->getFirstCcShowDay()->getDbStartTime(); + if ($this->ccShow->isRepeating() && + $this->origCcShowDay->getLocalStartDateAndTime()->format("Y-m-d") != $showData["add_show_start_date"]) { + $showData["add_show_start_date"] = $this->origCcShowDay->getLocalStartDateAndTime()->format("Y-m-d"); + } $this->adjustSchedule($showData); } From bcda9ea5e6857faaae768b963446be6fc5cbcc27 Mon Sep 17 00:00:00 2001 From: drigato Date: Wed, 5 Mar 2014 14:50:35 -0500 Subject: [PATCH 19/39] Broke unit test for adding content to single show --- airtime_mvc/application/models/Scheduler.php | 7 +++---- .../tests/application/models/unit/ScheduleUnitTest.php | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/airtime_mvc/application/models/Scheduler.php b/airtime_mvc/application/models/Scheduler.php index 7923889fb..85e8f6f24 100644 --- a/airtime_mvc/application/models/Scheduler.php +++ b/airtime_mvc/application/models/Scheduler.php @@ -595,10 +595,9 @@ class Application_Model_Scheduler ->filterByDbStarts(gmdate("Y-m-d H:i:s"), Criteria::GREATER_THAN) ->find(); } else { - $instance_sql = "SELECT * FROM cc_show_instances ". - "WHERE id = ".$schedule["instance"]; - $instances = Application_Common_Database::prepareAndExecute( - $instance_sql); + $instances = CcShowInstancesQuery::create() + ->filterByDbId($schedule["instance"]) + ->find(); } $excludePositions = array(); diff --git a/airtime_mvc/tests/application/models/unit/ScheduleUnitTest.php b/airtime_mvc/tests/application/models/unit/ScheduleUnitTest.php index d645b545e..63bc8b283 100644 --- a/airtime_mvc/tests/application/models/unit/ScheduleUnitTest.php +++ b/airtime_mvc/tests/application/models/unit/ScheduleUnitTest.php @@ -22,7 +22,7 @@ class ScheduleUnitTest extends Zend_Test_PHPUnit_ControllerTestCase //PHPUnit_Fr } - /*public function testIsFileScheduledInTheFuture() + public function testIsFileScheduledInTheFuture() { TestHelper::loginUser(); $CC_CONFIG = Config::getConfig(); @@ -92,6 +92,6 @@ class ScheduleUnitTest extends Zend_Test_PHPUnit_ControllerTestCase //PHPUnit_Fr //Test the function we actually want to test. :-) $this->assertEquals($scheduleModel->IsFileScheduledInTheFuture($fileId), true); - }*/ + } } From 51b5cc205237e719e4d75176f3b12e178bc1d774 Mon Sep 17 00:00:00 2001 From: drigato Date: Thu, 6 Mar 2014 10:54:40 -0500 Subject: [PATCH 20/39] CC-5725: Changing a show's repeat type removes first instance from repeating series --- airtime_mvc/application/services/ShowService.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index d03820a53..379a3f526 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -1547,8 +1547,8 @@ SQL; if ($this->isUpdate) { $showDay = CcShowDaysQuery::create() ->filterByDbShowId($showId) - ->filterByDbRepeatType($this->repeatType) - ->filterByDbDay($day) + ->filterByDbRepeatType($this->origCcShowDay->getDbRepeatType()) + ->filterByDbDay($this->origCcShowDay->getDbDay()) ->findOne(); if (!$showDay) { //if no show day object was found it is because a new From 35fd639c1c8c2740738e9b142de159b1b4591c75 Mon Sep 17 00:00:00 2001 From: drigato Date: Thu, 6 Mar 2014 11:18:13 -0500 Subject: [PATCH 21/39] CC-5725: Changing a show's repeat type removes first instance from repeating series --- .../application/services/ShowService.php | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index 379a3f526..e004e07bf 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -1545,15 +1545,23 @@ SQL; if (is_null($endDate) || $startDateTimeClone->getTimestamp() <= $endDateTime->getTimestamp()) { if ($this->isUpdate) { - $showDay = CcShowDaysQuery::create() - ->filterByDbShowId($showId) - ->filterByDbRepeatType($this->origCcShowDay->getDbRepeatType()) - ->filterByDbDay($this->origCcShowDay->getDbDay()) - ->findOne(); - if (!$showDay) { - //if no show day object was found it is because a new - //repeating day of the week was added - $showDay = new CcShowDays(); + if ($this->repeatType >= 0) { + $showDay = CcShowDaysQuery::create() + ->filterByDbShowId($showId) + ->filterByDbRepeatType($this->repeatType) + ->filterByDbDay($day) + ->findOne(); + if (!$showDay) { + //if no show day object was found it is because a new + //repeating day of the week was added + $showDay = new CcShowDays(); + } + } else { + $showDay = CcShowDaysQuery::create() + ->filterByDbShowId($showId) + ->filterByDbRepeatType($this->origCcShowDay->getDbRepeatType()) + ->filterByDbDay($this->origCcShowDay->getDbDay()) + ->findOne(); } } else { $showDay = new CcShowDays(); From 6b91d2daf89ee2312db4ad19b298bd91464d34e7 Mon Sep 17 00:00:00 2001 From: drigato Date: Fri, 7 Mar 2014 14:52:32 -0500 Subject: [PATCH 22/39] CC-5725: Changing a show's repeat type removes first instance from repeating series --- .../application/services/ShowService.php | 64 +++++++++++-------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index e004e07bf..f0c547ff5 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -415,6 +415,13 @@ SQL; ':timestamp' => gmdate("Y-m-d H:i:s")), 'execute'); } + private function deleteAllShowDays($showId) + { + CcShowDaysQuery::create() + ->filterByDbShowId($showId) + ->delete(); + } + /** * TODO: This function is messy. Needs refactoring * @@ -436,8 +443,14 @@ SQL; //CcShowDay object if ($this->ccShow->isRepeating()) { $currentShowDay = $this->ccShow->getFirstRepeatingCcShowDay(); + + //all cc_show_days + $ccShowDays = $this->ccShow->getRepeatingCcShowDays(); } else { $currentShowDay = $this->ccShow->getFirstCcShowDay(); + + //all cc_show_days + $ccShowDays = $this->ccShow->getCcShowDayss(); } //new end date in the show's timezone (from the select box) @@ -446,6 +459,7 @@ SQL; //repeat option was toggled if ($showData['add_show_repeats'] != $currentShowDay->isRepeating()) { $this->deleteAllRepeatInstances($currentShowDay, $showId); + //if repeat option was checked we need to treat the current show day //as a new show day so the repeat instances get created properly //in createWeeklyRepeatInstances() @@ -477,17 +491,13 @@ SQL; //and the repeat type changed if ($currentRepeatType != -1 && $this->repeatType != $currentRepeatType) { $this->deleteAllInstances($showId); + $this->deleteAllShowDays($showId); + // when repeating by day of the month (1st, 2nd, etc.) we do not store the repeat week days } elseif ($currentRepeatType != 2) { //repeat type is the same, check if the days of the week are the same $repeatingDaysChanged = false; - if ($this->ccShow->isRepeating()) { - $ccShowDays = $this->ccShow->getRepeatingCcShowDays(); - } else { - $ccShowDays = $this->ccShow->getCcShowDayss(); - } - $showDays = array(); foreach ($ccShowDays as $day) { $showDays[] = $day->getDbDay(); @@ -560,11 +570,14 @@ SQL; private function preserveLinkedShowContent() { - /* Get show content from any linekd instance. It doesn't + /* Get show content from any linked instance. It doesn't * matter which instance since content is the same in all. */ $ccShowInstance = $this->ccShow->getCcShowInstancess()->getFirst(); + if (!$ccShowInstance) { + return; + } $ccSchedules = CcScheduleQuery::create() ->filterByDbInstanceId($ccShowInstance->getDbId()) ->find(); @@ -1512,8 +1525,12 @@ SQL; if ($this->isUpdate) { $showDay = CcShowDaysQuery::create() ->filterByDbShowId($showId) - ->filterByDbRepeatType($showData['add_show_repeat_type']) + ->filterByDbRepeatType($this->origCcShowDay->getDbRepeatType()) ->findOne(); + if (!$showDay) { + //repeat type changed so we have to create a new show_day rule + $showDay = new CcShowDays(); + } } else { $showDay = new CcShowDays(); } @@ -1545,23 +1562,20 @@ SQL; if (is_null($endDate) || $startDateTimeClone->getTimestamp() <= $endDateTime->getTimestamp()) { if ($this->isUpdate) { - if ($this->repeatType >= 0) { - $showDay = CcShowDaysQuery::create() - ->filterByDbShowId($showId) - ->filterByDbRepeatType($this->repeatType) - ->filterByDbDay($day) - ->findOne(); - if (!$showDay) { - //if no show day object was found it is because a new - //repeating day of the week was added - $showDay = new CcShowDays(); - } - } else { - $showDay = CcShowDaysQuery::create() - ->filterByDbShowId($showId) - ->filterByDbRepeatType($this->origCcShowDay->getDbRepeatType()) - ->filterByDbDay($this->origCcShowDay->getDbDay()) - ->findOne(); + if ($this->origCcShowDay->getDbRepeatType() == 2 || + $this->origCcShowDay->getDbRepeatType() == 3) { + $day = null; + } + $showDay = CcShowDaysQuery::create() + ->filterByDbShowId($showId) + ->filterByDbRepeatType($this->origCcShowDay->getDbRepeatType()) + ->filterByDbDay($day) + ->findOne(); + if (!$showDay) { + //if no show day object was found it is because a new + //repeating day of the week was added OR the repeat + //type has changed + $showDay = new CcShowDays(); } } else { $showDay = new CcShowDays(); From 03bb0e1df93439f9be57ec298b89d458c514328b Mon Sep 17 00:00:00 2001 From: drigato Date: Fri, 7 Mar 2014 15:59:57 -0500 Subject: [PATCH 23/39] CC-5725 Changing a show's repeat type removes first instance from repeating seriesCC-5726: Write database test cases for CC-5725 --- .../services/database/ShowServiceDbTest.php | 65 +++++++++++ .../datasets/test_weeklyToBiWeekly.xml | 107 ++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 airtime_mvc/tests/application/services/database/datasets/test_weeklyToBiWeekly.xml diff --git a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php index 576ac7ca1..0531bbbe0 100644 --- a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php +++ b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php @@ -661,4 +661,69 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $ds ); } + + public function testChangeRepeatTypeFromWeeklyToNoRepeat() + { + TestHelper::loginUser(); + + //test change repeat type from weekly to no-repeat + $data = ShowServiceData::getWeeklyRepeatNoEndNoRRData(); + $showService = new Application_Service_ShowService(null, $data); + $showService->addUpdateShow($data); + + $data["add_show_repeats"] = 0; + $data["add_show_id"] = 1; + $showService = new Application_Service_ShowService(null, $data, true); + $showService->addUpdateShow($data); + + $ds = new Zend_Test_PHPUnit_Db_DataSet_QueryDataSet( + $this->getConnection() + ); + + $ds->addTable('cc_show', 'select * from cc_show'); + $ds->addTable('cc_show_days', 'select * from cc_show_days'); + $ds->addTable('cc_show_instances', 'select id, starts, ends, show_id, record, rebroadcast, instance_id, modified_instance from cc_show_instances'); + $ds->addTable('cc_show_rebroadcast', 'select * from cc_show_rebroadcast'); + $ds->addTable('cc_show_hosts', 'select * from cc_show_hosts'); + + $this->assertDataSetsEqual( + $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_createNoRepeatNoRRShow.xml"), + $ds + ); + } + + public function testChangeRepeatTypeFromWeeklyToBiWeekly() + { + TestHelper::loginUser(); + + //test change repeat type weekly to bi-weekly + $data = ShowServiceData::getWeeklyRepeatNoEndNoRRData(); + $showService = new Application_Service_ShowService(null, $data); + $showService->addUpdateShow($data); + + $data["add_show_id"] = 1; + $data["add_show_repeat_type"] = 1; + $showService = new Application_Service_ShowService(null, $data, true); + $showService->addUpdateShow($data); + + $ds = new Zend_Test_PHPUnit_Db_DataSet_QueryDataSet( + $this->getConnection() + ); + + $ds->addTable('cc_show', 'select * from cc_show'); + $ds->addTable('cc_show_days', 'select * from cc_show_days'); + $ds->addTable('cc_show_instances', 'select id, starts, ends, show_id, record, rebroadcast, instance_id, modified_instance from cc_show_instances'); + $ds->addTable('cc_show_rebroadcast', 'select * from cc_show_rebroadcast'); + $ds->addTable('cc_show_hosts', 'select * from cc_show_hosts'); + + $this->assertDataSetsEqual( + $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_weeklyToBiWeekly.xml"), + $ds + ); + } + + public function testChangeRepeatTypeFromMonthlyWeeklyToNoRepeat() + { + + } } diff --git a/airtime_mvc/tests/application/services/database/datasets/test_weeklyToBiWeekly.xml b/airtime_mvc/tests/application/services/database/datasets/test_weeklyToBiWeekly.xml new file mode 100644 index 000000000..9e65db067 --- /dev/null +++ b/airtime_mvc/tests/application/services/database/datasets/test_weeklyToBiWeekly.xml @@ -0,0 +1,107 @@ + + + + id + name + url + genre + description + color + background_color + live_stream_using_airtime_auth + live_stream_using_custom_auth + live_stream_user + live_stream_pass + linked + is_linkable + + 1 + test show + + + + ffffff + 364492 + + + + + + 1 + +
+ + + id + first_show + last_show + start_time + timezone + duration + day + repeat_type + next_pop_date + show_id + record + + 2 + 2016-01-01 + + 00:00:00 + UTC + 01:00 + 5 + 1 + 2016-02-12 + 1 + 0 + +
+ + + id + starts + ends + show_id + record + rebroadcast + instance_id + modified_instance + + 7 + 2016-01-01 00:00:00 + 2016-01-01 01:00:00 + 1 + 0 + 0 + + + + + 8 + 2016-01-15 00:00:00 + 2016-01-15 01:00:00 + 1 + 0 + 0 + + + + + 9 + 2016-01-29 00:00:00 + 2016-01-29 01:00:00 + 1 + 0 + 0 + + + +
+ + +
+ + +
+
\ No newline at end of file From 78d34a6d169b0252b5711d4e7f06a17fb9a43530 Mon Sep 17 00:00:00 2001 From: drigato Date: Mon, 10 Mar 2014 17:31:24 -0400 Subject: [PATCH 24/39] Fixed broken test --- .../tests/application/services/database/ShowServiceDbTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php index 0531bbbe0..0cb424778 100644 --- a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php +++ b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php @@ -611,7 +611,7 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $data = ShowServiceData::getWeeklyRepeatNoEndNoRRData(); $data["add_show_start_date"] = "2016-01-29"; - $data["add_show_day_check"] = array(5); + $data["add_show_day_check"] = array(5, 6); $data["add_show_linked"] = 1; $showService = new Application_Service_ShowService(null, $data); $showService->addUpdateShow($data); From 8ad866c2a258b0bd4b98dd99de540e651cb93fef Mon Sep 17 00:00:00 2001 From: drigato Date: Mon, 10 Mar 2014 17:32:54 -0400 Subject: [PATCH 25/39] Fixed changing the start date on a non-repeating show --- airtime_mvc/application/services/ShowService.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index f0c547ff5..de134f2fa 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -20,6 +20,7 @@ class Application_Service_ShowService private $localShowStartHour; private $localShowStartMin; private $origCcShowDay; + private $origShowRepeatStatus; private $instanceIdsForScheduleUpdates; public function __construct($showId=null, $showData=null, $isUpdate=false) @@ -158,8 +159,10 @@ class Application_Service_ShowService { if ($this->ccShow->isRepeating()) { $this->origCcShowDay = clone $this->ccShow->getFirstRepeatingCcShowDay(); + $this->origShowRepeatStatus = true; } else { $this->origCcShowDay = clone $this->ccShow->getFirstCcShowDay(); + $this->origShowRepeatStatus = false; } $this->oldShowTimezone = $this->origCcShowDay->getDbTimezone(); @@ -1565,6 +1568,10 @@ SQL; if ($this->origCcShowDay->getDbRepeatType() == 2 || $this->origCcShowDay->getDbRepeatType() == 3) { $day = null; + } else if (!$this->origShowRepeatStatus) { + //keep current show day to use for updating cc_show_day rule + $keepDay = $day; + $day = $this->origCcShowDay->getDbDay(); } $showDay = CcShowDaysQuery::create() ->filterByDbShowId($showId) @@ -1577,6 +1584,10 @@ SQL; //type has changed $showDay = new CcShowDays(); } + + if (isset($keepDay)) { + $day = $keepDay; + } } else { $showDay = new CcShowDays(); } From 5f3199b4bb197cf8177fca8456e85c0abc6d3aa9 Mon Sep 17 00:00:00 2001 From: Naomi Date: Mon, 10 Mar 2014 17:39:17 -0400 Subject: [PATCH 26/39] CC-5727 : History search range using incorrect timezone offset --- .../controllers/PlayouthistoryController.php | 84 +++++++++++++------ .../js/airtime/playouthistory/historytable.js | 52 +++++++++--- 2 files changed, 99 insertions(+), 37 deletions(-) diff --git a/airtime_mvc/application/controllers/PlayouthistoryController.php b/airtime_mvc/application/controllers/PlayouthistoryController.php index cbd15517f..a2352f4b7 100644 --- a/airtime_mvc/application/controllers/PlayouthistoryController.php +++ b/airtime_mvc/application/controllers/PlayouthistoryController.php @@ -82,20 +82,58 @@ class PlayouthistoryController extends Zend_Controller_Action $user = Application_Model_User::getCurrentUser(); $this->view->userType = $user->getType(); } + + private function getStartEnd() + { + $request = $this->getRequest(); + + $userTimezone = new DateTimeZone(Application_Model_Preference::GetUserTimezone()); + $utcTimezone = new DateTimeZone("UTC"); + $utcNow = new DateTime("now", $utcTimezone); + + $start = $request->getParam("start"); + $end = $request->getParam("end"); + + if (empty($start) || empty($end)) { + $startsDT = clone $utcNow; + $startsDT->sub(new DateInterval("P1D")); + $endsDT = clone $utcNow; + } + else { + + try { + $startsDT = new DateTime($start, $userTimezone); + $startsDT->setTimezone($utcTimezone); + + $endsDT = new DateTime($end, $userTimezone); + $endsDT->setTimezone($utcTimezone); + + if ($startsDT > $endsDT) { + throw new Exception("start greater than end"); + } + } + catch (Exception $e) { + Logging::info($e); + Logging::info($e->getMessage()); + + $startsDT = clone $utcNow; + $startsDT->sub(new DateInterval("P1D")); + $endsDT = clone $utcNow; + } + + } + + return array($startsDT, $endsDT); + } public function fileHistoryFeedAction() { try { $request = $this->getRequest(); - $current_time = time(); - - $params = $request->getParams(); - - $starts_epoch = $request->getParam("start", $current_time - (60*60*24)); - $ends_epoch = $request->getParam("end", $current_time); - - $startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC")); - $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); + $params = $request->getParams(); + $instance = $request->getParam("instance_id", null); + + list($startsDT, $endsDT) = $this->getStartEnd(); $historyService = new Application_Service_HistoryService(); $r = $historyService->getFileSummaryData($startsDT, $endsDT, $params); @@ -114,18 +152,12 @@ class PlayouthistoryController extends Zend_Controller_Action public function itemHistoryFeedAction() { try { - $request = $this->getRequest(); - $current_time = time(); - - $params = $request->getParams(); - - $starts_epoch = $request->getParam("start", $current_time - (60*60*24)); - $ends_epoch = $request->getParam("end", $current_time); - $instance = $request->getParam("instance_id", null); - - $startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC")); - $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); - + $request = $this->getRequest(); + $params = $request->getParams(); + $instance = $request->getParam("instance_id", null); + + list($startsDT, $endsDT) = $this->getStartEnd(); + $historyService = new Application_Service_HistoryService(); $r = $historyService->getPlayedItemData($startsDT, $endsDT, $params, $instance); @@ -144,12 +176,10 @@ class PlayouthistoryController extends Zend_Controller_Action { try { $request = $this->getRequest(); - $current_time = time(); - $starts_epoch = $request->getParam("start", $current_time - (60*60*24)); - $ends_epoch = $request->getParam("end", $current_time); - - $startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC")); - $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); + $params = $request->getParams(); + $instance = $request->getParam("instance_id", null); + + list($startsDT, $endsDT) = $this->getStartEnd(); $historyService = new Application_Service_HistoryService(); $shows = $historyService->getShowList($startsDT, $endsDT); diff --git a/airtime_mvc/public/js/airtime/playouthistory/historytable.js b/airtime_mvc/public/js/airtime/playouthistory/historytable.js index 056de9a30..b5a43e38c 100644 --- a/airtime_mvc/public/js/airtime/playouthistory/historytable.js +++ b/airtime_mvc/public/js/airtime/playouthistory/historytable.js @@ -401,13 +401,12 @@ var AIRTIME = (function(AIRTIME) { return oTable; } - function showSummaryList() { + function showSummaryList(start, end) { var url = baseUrl+"playouthistory/show-history-feed", - oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId), data = { format: "json", - start: oRange.start, - end: oRange.end + start: start, + end: end }; $.post(url, data, function(json) { @@ -460,7 +459,9 @@ var AIRTIME = (function(AIRTIME) { }, always: function() { inShowsTab = true; - showSummaryList(); + + var info = getStartEnd(); + showSummaryList(info.start, info.end); emptySelectedLogItems(); } } @@ -710,18 +711,49 @@ var AIRTIME = (function(AIRTIME) { }); }); + function getStartEnd() { + var start, + end, + time; + + start = $(dateStartId).val(); + start = start === "" ? null : start; + + time = $(timeStartId).val(); + time = time === "" ? "00:00" : time; + + if (start) { + start = start + " " + time; + } + + end = $(dateEndId).val(); + end = end === "" ? null : end; + + time = $(timeEndId).val(); + time = time === "" ? "00:00" : time; + + if (end) { + end = end + " " + time; + } + + return { + start: start, + end: end + }; + } + $historyContentDiv.find("#his_submit").click(function(ev){ var fn, - oRange; + info; - oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId); + info = getStartEnd(); fn = fnServerData; - fn.start = oRange.start; - fn.end = oRange.end; + fn.start = info.start; + fn.end = info.end; if (inShowsTab) { - showSummaryList(); + showSummaryList(info.start, info.end); } else { redrawTables(); From 14c670aa2035949d17587aaface0b8e50df705f0 Mon Sep 17 00:00:00 2001 From: drigato Date: Mon, 10 Mar 2014 17:41:57 -0400 Subject: [PATCH 27/39] CC-5728: Problem when removing repeat option and changing start date --- airtime_mvc/application/services/ShowService.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index de134f2fa..e71ecc568 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -463,6 +463,10 @@ SQL; if ($showData['add_show_repeats'] != $currentShowDay->isRepeating()) { $this->deleteAllRepeatInstances($currentShowDay, $showId); + if (!$showData["add_show_repeats"]) { + $this->deleteAllShowDays($showId); + } + //if repeat option was checked we need to treat the current show day //as a new show day so the repeat instances get created properly //in createWeeklyRepeatInstances() @@ -1573,6 +1577,7 @@ SQL; $keepDay = $day; $day = $this->origCcShowDay->getDbDay(); } + $showDay = CcShowDaysQuery::create() ->filterByDbShowId($showId) ->filterByDbRepeatType($this->origCcShowDay->getDbRepeatType()) From 8d2926aeeda2dcd70e0ccfccfcfa191792326d18 Mon Sep 17 00:00:00 2001 From: Naomi Date: Mon, 10 Mar 2014 18:33:07 -0400 Subject: [PATCH 28/39] CC-5727 : History search range using incorrect timezone offset (also Nowplaying) sending the timestamp string back for nowplaying as well. added error class to history page if end is < start. --- .../controllers/ShowbuilderController.php | 75 +++++++++++++----- airtime_mvc/public/css/history_styles.css | 4 + .../js/airtime/playouthistory/historytable.js | 79 +++++++++++-------- .../js/airtime/showbuilder/main_builder.js | 3 +- .../public/js/airtime/utilities/utilities.js | 34 +++++--- 5 files changed, 129 insertions(+), 66 deletions(-) diff --git a/airtime_mvc/application/controllers/ShowbuilderController.php b/airtime_mvc/application/controllers/ShowbuilderController.php index dd1a19e13..c7de2cdc6 100644 --- a/airtime_mvc/application/controllers/ShowbuilderController.php +++ b/airtime_mvc/application/controllers/ShowbuilderController.php @@ -235,24 +235,61 @@ class ShowbuilderController extends Zend_Controller_Action $this->view->dialog = $this->view->render('showbuilder/builderDialog.phtml'); } + + private function getStartEnd() + { + $request = $this->getRequest(); + + $userTimezone = new DateTimeZone(Application_Model_Preference::GetUserTimezone()); + $utcTimezone = new DateTimeZone("UTC"); + $utcNow = new DateTime("now", $utcTimezone); + + $start = $request->getParam("start"); + $end = $request->getParam("end"); + + if (empty($start) || empty($end)) { + $startsDT = clone $utcNow; + $startsDT->sub(new DateInterval("P1D")); + $endsDT = clone $utcNow; + } + else { + + try { + $startsDT = new DateTime($start, $userTimezone); + $startsDT->setTimezone($utcTimezone); + + $endsDT = new DateTime($end, $userTimezone); + $endsDT->setTimezone($utcTimezone); + + if ($startsDT > $endsDT) { + throw new Exception("start greater than end"); + } + } + catch (Exception $e) { + Logging::info($e); + Logging::info($e->getMessage()); + + $startsDT = clone $utcNow; + $startsDT->sub(new DateInterval("P1D")); + $endsDT = clone $utcNow; + } + + } + + return array($startsDT, $endsDT); + } public function checkBuilderFeedAction() { - $request = $this->getRequest(); - $current_time = time(); - - $starts_epoch = $request->getParam("start", $current_time); - //default ends is 24 hours after starts. - $ends_epoch = $request->getParam("end", $current_time + (60*60*24)); + $request = $this->getRequest(); $show_filter = intval($request->getParam("showFilter", 0)); - $my_shows = intval($request->getParam("myShows", 0)); - $timestamp = intval($request->getParam("timestamp", -1)); - $instances = $request->getParam("instances", array()); + $my_shows = intval($request->getParam("myShows", 0)); + $timestamp = intval($request->getParam("timestamp", -1)); + $instances = $request->getParam("instances", array()); - $startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC")); - $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); + list($startsDT, $endsDT) = $this->getStartEnd(); - $opts = array("myShows" => $my_shows, "showFilter" => $show_filter); + $opts = array("myShows" => $my_shows, "showFilter" => $show_filter); $showBuilder = new Application_Model_ShowBuilder($startsDT, $endsDT, $opts); //only send the schedule back if updates have been made. @@ -263,18 +300,14 @@ class ShowbuilderController extends Zend_Controller_Action public function builderFeedAction() { - $request = $this->getRequest(); - $current_time = time(); - - $starts_epoch = $request->getParam("start", $current_time); - //default ends is 24 hours after starts. - $ends_epoch = $request->getParam("end", $current_time + (60*60*24)); + $current_time = time(); + + $request = $this->getRequest(); $show_filter = intval($request->getParam("showFilter", 0)); $show_instance_filter = intval($request->getParam("showInstanceFilter", 0)); - $my_shows = intval($request->getParam("myShows", 0)); + $my_shows = intval($request->getParam("myShows", 0)); - $startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC")); - $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); + list($startsDT, $endsDT) = $this->getStartEnd(); $opts = array("myShows" => $my_shows, "showFilter" => $show_filter, diff --git a/airtime_mvc/public/css/history_styles.css b/airtime_mvc/public/css/history_styles.css index fb44d4677..2d0c70d58 100644 --- a/airtime_mvc/public/css/history_styles.css +++ b/airtime_mvc/public/css/history_styles.css @@ -194,3 +194,7 @@ #history_content .ui-tabs .ui-tabs-panel { padding-top: 10px; } + +div.his-timerange input.error { + background-color: rgba(255,0,0,0.2); +} diff --git a/airtime_mvc/public/js/airtime/playouthistory/historytable.js b/airtime_mvc/public/js/airtime/playouthistory/historytable.js index b5a43e38c..854b0dfc4 100644 --- a/airtime_mvc/public/js/airtime/playouthistory/historytable.js +++ b/airtime_mvc/public/js/airtime/playouthistory/historytable.js @@ -60,6 +60,30 @@ var AIRTIME = (function(AIRTIME) { oTableShow, inShowsTab = false; + function validateTimeRange() { + var oRange, + inputs = $('.his-timerange > input'), + start, end; + + oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId); + + start = oRange.start; + end = oRange.end; + + if (end >= start) { + inputs.removeClass('error'); + } + else { + inputs.addClass('error'); + } + + return { + start: start, + end: end, + isValid: end >= start + }; + } + function getSelectedLogItems() { var items = Object.keys(selectedLogItems); @@ -545,7 +569,8 @@ var AIRTIME = (function(AIRTIME) { dayNamesMin: i18n_days_short, onSelect: function(sDate, oDatePicker) { $(this).datepicker( "setDate", sDate ); - } + }, + onClose: validateTimeRange }; oBaseTimePickerSettings = { @@ -555,13 +580,25 @@ var AIRTIME = (function(AIRTIME) { showLeadingZero: false, defaultTime: '0:00', hourText: $.i18n._("Hour"), - minuteText: $.i18n._("Minute") + minuteText: $.i18n._("Minute"), + onClose: validateTimeRange }; - $historyContentDiv.find(dateStartId).datepicker(oBaseDatePickerSettings); - $historyContentDiv.find(timeStartId).timepicker(oBaseTimePickerSettings); - $historyContentDiv.find(dateEndId).datepicker(oBaseDatePickerSettings); - $historyContentDiv.find(timeEndId).timepicker(oBaseTimePickerSettings); + $historyContentDiv.find(dateStartId) + .datepicker(oBaseDatePickerSettings) + .blur(validateTimeRange); + + $historyContentDiv.find(timeStartId) + .timepicker(oBaseTimePickerSettings) + .blur(validateTimeRange); + + $historyContentDiv.find(dateEndId) + .datepicker(oBaseDatePickerSettings) + .blur(validateTimeRange); + + $historyContentDiv.find(timeEndId) + .timepicker(oBaseTimePickerSettings) + .blur(validateTimeRange); $historyContentDiv.on("click", "#his_create", function(e) { var url = baseUrl+"playouthistory/edit-list-item/format/json" ; @@ -711,35 +748,9 @@ var AIRTIME = (function(AIRTIME) { }); }); - function getStartEnd() { - var start, - end, - time; + function getStartEnd() { - start = $(dateStartId).val(); - start = start === "" ? null : start; - - time = $(timeStartId).val(); - time = time === "" ? "00:00" : time; - - if (start) { - start = start + " " + time; - } - - end = $(dateEndId).val(); - end = end === "" ? null : end; - - time = $(timeEndId).val(); - time = time === "" ? "00:00" : time; - - if (end) { - end = end + " " + time; - } - - return { - start: start, - end: end - }; + return AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId); } $historyContentDiv.find("#his_submit").click(function(ev){ diff --git a/airtime_mvc/public/js/airtime/showbuilder/main_builder.js b/airtime_mvc/public/js/airtime/showbuilder/main_builder.js index f59d0f32a..625464bb0 100644 --- a/airtime_mvc/public/js/airtime/showbuilder/main_builder.js +++ b/airtime_mvc/public/js/airtime/showbuilder/main_builder.js @@ -46,7 +46,8 @@ AIRTIME = (function(AIRTIME) { showLeadingZero: false, defaultTime: '0:00', hourText: $.i18n._("Hour"), - minuteText: $.i18n._("Minute") + minuteText: $.i18n._("Minute"), + onClose: validateTimeRange }; function setWidgetSize() { diff --git a/airtime_mvc/public/js/airtime/utilities/utilities.js b/airtime_mvc/public/js/airtime/utilities/utilities.js index 148f81fb1..4084e0e3b 100644 --- a/airtime_mvc/public/js/airtime/utilities/utilities.js +++ b/airtime_mvc/public/js/airtime/utilities/utilities.js @@ -90,20 +90,34 @@ var AIRTIME = (function(AIRTIME){ * * @return Object {"start", "end", "range"} */ - mod.fnGetScheduleRange = function(dateStart, timeStart, dateEnd, timeEnd) { - var iStart, - iEnd, - iRange; + mod.fnGetScheduleRange = function(dateStartId, timeStartId, dateEndId, timeEndId) { + var start, + end, + time; - iStart = AIRTIME.utilities.fnGetTimestamp(dateStart, timeStart); - iEnd = AIRTIME.utilities.fnGetTimestamp(dateEnd, timeEnd); + start = $(dateStartId).val(); + start = start === "" ? null : start; - iRange = iEnd - iStart; + time = $(timeStartId).val(); + time = time === "" ? "00:00" : time; + + if (start) { + start = start + " " + time; + } + + end = $(dateEndId).val(); + end = end === "" ? null : end; + + time = $(timeEndId).val(); + time = time === "" ? "00:00" : time; + + if (end) { + end = end + " " + time; + } return { - start: iStart, - end: iEnd, - range: iRange + start: start, + end: end }; }; From cd55ed5ee49d3f5d4544339c79c80d0c546d7850 Mon Sep 17 00:00:00 2001 From: Naomi Date: Mon, 10 Mar 2014 18:48:40 -0400 Subject: [PATCH 29/39] CC-5727 : History search range using incorrect timezone offset fixing show fetching times. --- .../js/airtime/playouthistory/historytable.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/airtime_mvc/public/js/airtime/playouthistory/historytable.js b/airtime_mvc/public/js/airtime/playouthistory/historytable.js index 854b0dfc4..bb1547e65 100644 --- a/airtime_mvc/public/js/airtime/playouthistory/historytable.js +++ b/airtime_mvc/public/js/airtime/playouthistory/historytable.js @@ -703,17 +703,16 @@ var AIRTIME = (function(AIRTIME) { }); $('body').on("click", "#his_instance_retrieve", function(e) { - var startPicker = $hisDialogEl.find('#his_item_starts_datetimepicker').data('datetimepicker'), - endPicker = $hisDialogEl.find('#his_item_ends_datetimepicker').data('datetimepicker'), + var startPicker = $hisDialogEl.find('#his_item_starts'), + endPicker = $hisDialogEl.find('#his_item_ends'), url = baseUrl+"playouthistory/show-history-feed", - startDate = startPicker.getLocalDate(), - endDate = endPicker.getLocalDate(), - getEpochSeconds = AIRTIME.utilities.fnGetSecondsEpoch, + startDate = startPicker.val(), + endDate = endPicker.val(), data; data = { - start: getEpochSeconds(startDate), - end: getEpochSeconds(endDate), + start: startDate, + end: endDate, format: "json" }; From f8935a312fbe962b7a108e210af2917223f64d1f Mon Sep 17 00:00:00 2001 From: Naomi Date: Tue, 11 Mar 2014 13:24:22 -0400 Subject: [PATCH 30/39] CC-5727 : History search range using incorrect timezone offset (also Nowplaying & Listener Stats) fixing listener stat search --- .../controllers/ListenerstatController.php | 80 ++++++++---- .../controllers/PlayouthistoryController.php | 116 ++++++++---------- .../js/airtime/listenerstat/listenerstat.js | 10 +- 3 files changed, 112 insertions(+), 94 deletions(-) diff --git a/airtime_mvc/application/controllers/ListenerstatController.php b/airtime_mvc/application/controllers/ListenerstatController.php index 178aec631..5f5250b9c 100644 --- a/airtime_mvc/application/controllers/ListenerstatController.php +++ b/airtime_mvc/application/controllers/ListenerstatController.php @@ -9,6 +9,49 @@ class ListenerstatController extends Zend_Controller_Action ->addActionContext('get-data', 'json') ->initContext(); } + + private function getStartEnd() + { + $request = $this->getRequest(); + + $userTimezone = new DateTimeZone(Application_Model_Preference::GetUserTimezone()); + $utcTimezone = new DateTimeZone("UTC"); + $utcNow = new DateTime("now", $utcTimezone); + + $start = $request->getParam("start"); + $end = $request->getParam("end"); + + if (empty($start) || empty($end)) { + $startsDT = clone $utcNow; + $startsDT->sub(new DateInterval("P1D")); + $endsDT = clone $utcNow; + } + else { + + try { + $startsDT = new DateTime($start, $userTimezone); + $startsDT->setTimezone($utcTimezone); + + $endsDT = new DateTime($end, $userTimezone); + $endsDT->setTimezone($utcTimezone); + + if ($startsDT > $endsDT) { + throw new Exception("start greater than end"); + } + } + catch (Exception $e) { + Logging::info($e); + Logging::info($e->getMessage()); + + $startsDT = clone $utcNow; + $startsDT->sub(new DateInterval("P1D")); + $endsDT = clone $utcNow; + } + + } + + return array($startsDT, $endsDT); + } public function indexAction() { @@ -26,25 +69,17 @@ class ListenerstatController extends Zend_Controller_Action $this->view->headLink()->appendStylesheet($baseUrl.'css/jquery.ui.timepicker.css?'.$CC_CONFIG['airtime_version']); - //default time is the last 24 hours. - $now = time(); - $from = $request->getParam("from", $now - (24*60*60)); - $to = $request->getParam("to", $now); - - $utcTimezone = new DateTimeZone("UTC"); - $displayTimeZone = new DateTimeZone(Application_Model_Preference::GetTimezone()); - - $start = DateTime::createFromFormat("U", $from, $utcTimezone); - $start->setTimezone($displayTimeZone); - $end = DateTime::createFromFormat("U", $to, $utcTimezone); - $end->setTimezone($displayTimeZone); + list($startsDT, $endsDT) = $this->getStartEnd(); + $userTimezone = new DateTimeZone(Application_Model_Preference::GetUserTimezone()); + $startsDT->setTimezone($userTimezone); + $endsDT->setTimezone($userTimezone); $form = new Application_Form_DateRange(); $form->populate(array( - 'his_date_start' => $start->format("Y-m-d"), - 'his_time_start' => $start->format("H:i"), - 'his_date_end' => $end->format("Y-m-d"), - 'his_time_end' => $end->format("H:i") + 'his_date_start' => $startsDT->format("Y-m-d"), + 'his_time_start' => $startsDT->format("H:i"), + 'his_date_end' => $endsDT->format("Y-m-d"), + 'his_time_end' => $endsDT->format("H:i") )); $errorStatus = Application_Model_StreamSetting::GetAllListenerStatErrors(); @@ -63,17 +98,8 @@ class ListenerstatController extends Zend_Controller_Action } public function getDataAction(){ - $request = $this->getRequest(); - $current_time = time(); - - $params = $request->getParams(); - - $starts_epoch = $request->getParam("startTimestamp", $current_time - (60*60*24)); - $ends_epoch = $request->getParam("endTimestamp", $current_time); - - $startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC")); - $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); - + list($startsDT, $endsDT) = $this->getStartEnd(); + $data = Application_Model_ListenerStat::getDataPointsWithinRange($startsDT->format("Y-m-d H:i:s"), $endsDT->format("Y-m-d H:i:s")); $this->_helper->json->sendJson($data); } diff --git a/airtime_mvc/application/controllers/PlayouthistoryController.php b/airtime_mvc/application/controllers/PlayouthistoryController.php index a2352f4b7..077cce0b2 100644 --- a/airtime_mvc/application/controllers/PlayouthistoryController.php +++ b/airtime_mvc/application/controllers/PlayouthistoryController.php @@ -17,35 +17,68 @@ class PlayouthistoryController extends Zend_Controller_Action ->addActionContext('update-list-item', 'json') ->addActionContext('update-file-item', 'json') ->initContext(); - } + } + + private function getStartEnd() + { + $request = $this->getRequest(); + + $userTimezone = new DateTimeZone(Application_Model_Preference::GetUserTimezone()); + $utcTimezone = new DateTimeZone("UTC"); + $utcNow = new DateTime("now", $utcTimezone); + + $start = $request->getParam("start"); + $end = $request->getParam("end"); + + if (empty($start) || empty($end)) { + $startsDT = clone $utcNow; + $startsDT->sub(new DateInterval("P1D")); + $endsDT = clone $utcNow; + } + else { + + try { + $startsDT = new DateTime($start, $userTimezone); + $startsDT->setTimezone($utcTimezone); + + $endsDT = new DateTime($end, $userTimezone); + $endsDT->setTimezone($utcTimezone); + + if ($startsDT > $endsDT) { + throw new Exception("start greater than end"); + } + } + catch (Exception $e) { + Logging::info($e); + Logging::info($e->getMessage()); + + $startsDT = clone $utcNow; + $startsDT->sub(new DateInterval("P1D")); + $endsDT = clone $utcNow; + } + + } + + return array($startsDT, $endsDT); + } public function indexAction() { $CC_CONFIG = Config::getConfig(); - - $request = $this->getRequest(); - $baseUrl = Application_Common_OsPath::getBaseDir(); - //default time is the last 24 hours. - $now = time(); - $from = $request->getParam("from", $now - (24*60*60)); - $to = $request->getParam("to", $now); - - $utcTimezone = new DateTimeZone("UTC"); - $displayTimeZone = new DateTimeZone(Application_Model_Preference::GetTimezone()); - - $start = DateTime::createFromFormat("U", $from, $utcTimezone); - $start->setTimezone($displayTimeZone); - $end = DateTime::createFromFormat("U", $to, $utcTimezone); - $end->setTimezone($displayTimeZone); + list($startsDT, $endsDT) = $this->getStartEnd(); + + $userTimezone = new DateTimeZone(Application_Model_Preference::GetUserTimezone()); + $startsDT->setTimezone($userTimezone); + $endsDT->setTimezone($userTimezone); $form = new Application_Form_DateRange(); $form->populate(array( - 'his_date_start' => $start->format("Y-m-d"), - 'his_time_start' => $start->format("H:i"), - 'his_date_end' => $end->format("Y-m-d"), - 'his_time_end' => $end->format("H:i") + 'his_date_start' => $startsDT->format("Y-m-d"), + 'his_time_start' => $startsDT->format("H:i"), + 'his_date_end' => $endsDT->format("Y-m-d"), + 'his_time_end' => $endsDT->format("H:i") )); $this->view->date_form = $form; @@ -82,49 +115,6 @@ class PlayouthistoryController extends Zend_Controller_Action $user = Application_Model_User::getCurrentUser(); $this->view->userType = $user->getType(); } - - private function getStartEnd() - { - $request = $this->getRequest(); - - $userTimezone = new DateTimeZone(Application_Model_Preference::GetUserTimezone()); - $utcTimezone = new DateTimeZone("UTC"); - $utcNow = new DateTime("now", $utcTimezone); - - $start = $request->getParam("start"); - $end = $request->getParam("end"); - - if (empty($start) || empty($end)) { - $startsDT = clone $utcNow; - $startsDT->sub(new DateInterval("P1D")); - $endsDT = clone $utcNow; - } - else { - - try { - $startsDT = new DateTime($start, $userTimezone); - $startsDT->setTimezone($utcTimezone); - - $endsDT = new DateTime($end, $userTimezone); - $endsDT->setTimezone($utcTimezone); - - if ($startsDT > $endsDT) { - throw new Exception("start greater than end"); - } - } - catch (Exception $e) { - Logging::info($e); - Logging::info($e->getMessage()); - - $startsDT = clone $utcNow; - $startsDT->sub(new DateInterval("P1D")); - $endsDT = clone $utcNow; - } - - } - - return array($startsDT, $endsDT); - } public function fileHistoryFeedAction() { diff --git a/airtime_mvc/public/js/airtime/listenerstat/listenerstat.js b/airtime_mvc/public/js/airtime/listenerstat/listenerstat.js index bebfd1471..3c1cfc9df 100644 --- a/airtime_mvc/public/js/airtime/listenerstat/listenerstat.js +++ b/airtime_mvc/public/js/airtime/listenerstat/listenerstat.js @@ -14,15 +14,17 @@ $(document).ready(function() { getDataAndPlot(); listenerstat_content.find("#his_submit").click(function(){ - startTimestamp = AIRTIME.utilities.fnGetTimestamp(dateStartId, timeStartId); - endTimestamp = AIRTIME.utilities.fnGetTimestamp(dateEndId, timeEndId); - getDataAndPlot(startTimestamp, endTimestamp); + var oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId); + var start = oRange.start; + var end = oRange.end; + + getDataAndPlot(start, end); }); }); function getDataAndPlot(startTimestamp, endTimestamp){ // get data - $.get(baseUrl+'Listenerstat/get-data', {startTimestamp: startTimestamp, endTimestamp: endTimestamp}, function(data){ + $.get(baseUrl+'Listenerstat/get-data', {start: startTimestamp, end: endTimestamp}, function(data){ out = new Object(); $.each(data, function(mpName, v){ plotData = new Object(); From 7078180da0e59121616b866aacccc4be4a447ec9 Mon Sep 17 00:00:00 2001 From: Naomi Date: Tue, 11 Mar 2014 13:26:05 -0400 Subject: [PATCH 31/39] CC-5727 : History search range using incorrect timezone offset (also Nowplaying & Listener Stats) removing flawed functions. --- .../public/js/airtime/utilities/utilities.js | 50 ------------------- 1 file changed, 50 deletions(-) diff --git a/airtime_mvc/public/js/airtime/utilities/utilities.js b/airtime_mvc/public/js/airtime/utilities/utilities.js index 4084e0e3b..bddba5b7d 100644 --- a/airtime_mvc/public/js/airtime/utilities/utilities.js +++ b/airtime_mvc/public/js/airtime/utilities/utilities.js @@ -35,56 +35,6 @@ var AIRTIME = (function(AIRTIME){ }; }; - mod.fnGetSecondsEpoch = function(oDate) { - var iTime, - iUserOffset, - iClientOffset; - - iTime = oDate.getTime(); //value is in millisec. - iTime = Math.round(iTime / 1000); - iUserOffset = userTimezoneOffset; - iClientOffset = oDate.getTimezoneOffset() * -60;//function returns minutes - - //adjust for the fact the the Date object is in client time. - iTime = iTime + iClientOffset + iUserOffset; - - return iTime; - }; - - /* - * Get the schedule range start in unix timestamp form (in seconds). - * defaults to NOW if nothing is selected. - * - * @param String sDatePickerId - * - * @param String sTimePickerId - * - * @return Number iTime - */ - mod.fnGetTimestamp = function(sDateId, sTimeId) { - var date, - time, - temp; - - temp = $(sDateId).val(); - if ( temp === "") { - return 0; - } - else { - date = temp; - } - - time = $(sTimeId).val(); - - date = date.split("-"); - time = time.split(":"); - - //0 based month in js. - oDate = new Date(date[0], date[1]-1, date[2], time[0], time[1]); - - return mod.fnGetSecondsEpoch(oDate); - }; - /* * Returns an object containing a unix timestamp in seconds for the start/end range * From 73cbead4c3c6ed285c1f0fd49e6f36ccb9589730 Mon Sep 17 00:00:00 2001 From: Albert Santoni Date: Tue, 11 Mar 2014 18:01:29 -0400 Subject: [PATCH 32/39] CC-5729: Pypo race condition on show source kick event kills playout * Fixed a race condition in pypo which could kill playout. Input kick events and non-file/webstream events could result in an exception being thrown. Fixed the logic error behind this, caught the exception just in case, and added some code to prevent uncaught pypopush exceptions from terminating the thread. * Could prevent playout breakage in similar situations --- python_apps/pypo/pypoliquidsoap.py | 130 +++++++++++++++-------------- python_apps/pypo/pypopush.py | 10 ++- 2 files changed, 72 insertions(+), 68 deletions(-) diff --git a/python_apps/pypo/pypoliquidsoap.py b/python_apps/pypo/pypoliquidsoap.py index 93647b3b6..74211fddd 100644 --- a/python_apps/pypo/pypoliquidsoap.py +++ b/python_apps/pypo/pypoliquidsoap.py @@ -117,76 +117,79 @@ class PypoLiquidsoap(): #independent_event: true #}, + try: + scheduled_now_files = \ + filter(lambda x: x["type"] == eventtypes.FILE, scheduled_now) - scheduled_now_files = \ - filter(lambda x: x["type"] == eventtypes.FILE, scheduled_now) + scheduled_now_webstream = \ + filter(lambda x: x["type"] == eventtypes.STREAM_OUTPUT_START, \ + scheduled_now) - scheduled_now_webstream = \ - filter(lambda x: x["type"] == eventtypes.STREAM_OUTPUT_START, \ - scheduled_now) + schedule_ids = set(map(lambda x: x["row_id"], scheduled_now_files)) - schedule_ids = set(map(lambda x: x["row_id"], scheduled_now_files)) - - row_id_map = {} - liq_queue_ids = set() - for i in self.liq_queue_tracker: - mi = self.liq_queue_tracker[i] - if not self.is_media_item_finished(mi): - liq_queue_ids.add(mi["row_id"]) - row_id_map[mi["row_id"]] = mi - - to_be_removed = set() - to_be_added = set() - - #Iterate over the new files, and compare them to currently scheduled - #tracks. If already in liquidsoap queue still need to make sure they don't - #have different attributes - #if replay gain changes, it shouldn't change the amplification of the currently playing song - for i in scheduled_now_files: - if i["row_id"] in row_id_map: - mi = row_id_map[i["row_id"]] - correct = mi['start'] == i['start'] and \ - mi['end'] == i['end'] and \ - mi['row_id'] == i['row_id'] - - if not correct: - #need to re-add - self.logger.info("Track %s found to have new attr." % i) - to_be_removed.add(i["row_id"]) - to_be_added.add(i["row_id"]) - - - to_be_removed.update(liq_queue_ids - schedule_ids) - to_be_added.update(schedule_ids - liq_queue_ids) - - if to_be_removed: - self.logger.info("Need to remove items from Liquidsoap: %s" % \ - to_be_removed) - - #remove files from Liquidsoap's queue + row_id_map = {} + liq_queue_ids = set() for i in self.liq_queue_tracker: mi = self.liq_queue_tracker[i] - if mi is not None and mi["row_id"] in to_be_removed: - self.stop(i) + if not self.is_media_item_finished(mi): + liq_queue_ids.add(mi["row_id"]) + row_id_map[mi["row_id"]] = mi - if to_be_added: - self.logger.info("Need to add items to Liquidsoap *now*: %s" % \ - to_be_added) + to_be_removed = set() + to_be_added = set() - for i in scheduled_now: - if i["row_id"] in to_be_added: - self.modify_cue_point(i) - self.play(i) + #Iterate over the new files, and compare them to currently scheduled + #tracks. If already in liquidsoap queue still need to make sure they don't + #have different attributes + #if replay gain changes, it shouldn't change the amplification of the currently playing song + for i in scheduled_now_files: + if i["row_id"] in row_id_map: + mi = row_id_map[i["row_id"]] + correct = mi['start'] == i['start'] and \ + mi['end'] == i['end'] and \ + mi['row_id'] == i['row_id'] + + if not correct: + #need to re-add + self.logger.info("Track %s found to have new attr." % i) + to_be_removed.add(i["row_id"]) + to_be_added.add(i["row_id"]) + + + to_be_removed.update(liq_queue_ids - schedule_ids) + to_be_added.update(schedule_ids - liq_queue_ids) + + if to_be_removed: + self.logger.info("Need to remove items from Liquidsoap: %s" % \ + to_be_removed) + + #remove files from Liquidsoap's queue + for i in self.liq_queue_tracker: + mi = self.liq_queue_tracker[i] + if mi is not None and mi["row_id"] in to_be_removed: + self.stop(i) + + if to_be_added: + self.logger.info("Need to add items to Liquidsoap *now*: %s" % \ + to_be_added) + + for i in scheduled_now_files: + if i["row_id"] in to_be_added: + self.modify_cue_point(i) + self.play(i) + + #handle webstreams + current_stream_id = self.telnet_liquidsoap.get_current_stream_id() + if scheduled_now_webstream: + if int(current_stream_id) != int(scheduled_now_webstream[0]["row_id"]): + self.play(scheduled_now_webstream[0]) + elif current_stream_id != "-1": + #something is playing and it shouldn't be. + self.telnet_liquidsoap.stop_web_stream_buffer() + self.telnet_liquidsoap.stop_web_stream_output() + except KeyError as e: + self.logger.error("Error: Malformed event in schedule. " + str(e)) - #handle webstreams - current_stream_id = self.telnet_liquidsoap.get_current_stream_id() - if scheduled_now_webstream: - if int(current_stream_id) != int(scheduled_now_webstream[0]["row_id"]): - self.play(scheduled_now_webstream[0]) - elif current_stream_id != "-1": - #something is playing and it shouldn't be. - self.telnet_liquidsoap.stop_web_stream_buffer() - self.telnet_liquidsoap.stop_web_stream_output() def stop(self, queue): self.telnet_liquidsoap.queue_remove(queue) @@ -200,8 +203,7 @@ class PypoLiquidsoap(): self.liq_queue_tracker[i] = None def modify_cue_point(self, link): - if not self.is_file(link): - return + assert self.is_file(link) tnow = datetime.utcnow() diff --git a/python_apps/pypo/pypopush.py b/python_apps/pypo/pypopush.py index 8a5600258..75079ca1f 100644 --- a/python_apps/pypo/pypopush.py +++ b/python_apps/pypo/pypopush.py @@ -153,8 +153,10 @@ class PypoPush(Thread): self.telnet_lock.release() def run(self): - try: self.main() - except Exception, e: - top = traceback.format_exc() - self.logger.error('Pypo Push Exception: %s', top) + while True: + try: self.main() + except Exception, e: + top = traceback.format_exc() + self.logger.error('Pypo Push Exception: %s', top) + time.sleep(5) From 9a803b1da5eca9022f7c929eed4c2fa9247f66ec Mon Sep 17 00:00:00 2001 From: localizer Date: Wed, 12 Mar 2014 09:30:20 +0000 Subject: [PATCH 33/39] updated translation resources --- airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.po b/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.po index 368321c48..cab178abf 100644 --- a/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.po +++ b/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: Airtime\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-13 12:58-0500\n" -"PO-Revision-Date: 2014-02-12 10:53+0000\n" +"PO-Revision-Date: 2014-02-12 11:00+0000\n" "Last-Translator: danielhjames \n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/airtime/language/de_DE/)\n" "MIME-Version: 1.0\n" @@ -2211,7 +2211,7 @@ msgstr "Admin Benutzer und Passwort, wird zur Abfrage der Zuhörerdaten in Iceca #: airtime_mvc/application/controllers/LocaleController.php:180 msgid "" "Warning: You cannot change this field while the show is currently playing" -msgstr "" +msgstr "Warnung: Dieses Feld kann nicht geändert werden, während die Sendung wiedergegeben wird." #: airtime_mvc/application/controllers/LocaleController.php:181 msgid "No result found" From e0386f9752fc8838a27752fc2f7803af94546d99 Mon Sep 17 00:00:00 2001 From: localizer Date: Wed, 12 Mar 2014 09:34:44 +0000 Subject: [PATCH 34/39] updated translation resources --- .../locale/de_DE/LC_MESSAGES/airtime.mo | Bin 67801 -> 67982 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/de_DE/LC_MESSAGES/airtime.mo index 833f4b18067149d01bcab81eb11bc3b0a2c8f552..f06c930fe8b649f01967189437920b5bf4384897 100644 GIT binary patch delta 14593 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 AIsgCw From f7602cadd8df50d99803ddb994165cf45b93b96d Mon Sep 17 00:00:00 2001 From: drigato Date: Wed, 12 Mar 2014 17:32:22 -0400 Subject: [PATCH 35/39] Fixed broken test --- .../services/database/ShowServiceDbTest.php | 2 +- .../datasets/test_weeklyToNoRepeat.xml | 87 +++++++++++++++++++ 2 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 airtime_mvc/tests/application/services/database/datasets/test_weeklyToNoRepeat.xml diff --git a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php index 0cb424778..8a7f54f1b 100644 --- a/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php +++ b/airtime_mvc/tests/application/services/database/ShowServiceDbTest.php @@ -687,7 +687,7 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase $ds->addTable('cc_show_hosts', 'select * from cc_show_hosts'); $this->assertDataSetsEqual( - $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_createNoRepeatNoRRShow.xml"), + $this->createXmlDataSet(dirname(__FILE__)."/datasets/test_weeklyToNoRepeat.xml"), $ds ); } diff --git a/airtime_mvc/tests/application/services/database/datasets/test_weeklyToNoRepeat.xml b/airtime_mvc/tests/application/services/database/datasets/test_weeklyToNoRepeat.xml new file mode 100644 index 000000000..d1522d546 --- /dev/null +++ b/airtime_mvc/tests/application/services/database/datasets/test_weeklyToNoRepeat.xml @@ -0,0 +1,87 @@ + + + + id + name + url + genre + description + color + background_color + live_stream_using_airtime_auth + live_stream_using_custom_auth + live_stream_user + live_stream_pass + linked + is_linkable + + 1 + test show + + + + ffffff + 364492 + + + + + + 1 + +
+ + + id + first_show + last_show + start_time + timezone + duration + day + repeat_type + next_pop_date + show_id + record + + 2 + 2016-01-01 + + 00:00:00 + UTC + 01:00 + 5 + -1 + 2016-01-01 + 1 + 0 + +
+ + + id + starts + ends + show_id + record + rebroadcast + instance_id + modified_instance + + 1 + 2016-01-01 00:00:00 + 2016-01-01 01:00:00 + 1 + 0 + 0 + + + +
+ + +
+ + +
+
\ No newline at end of file From 97989953c87bb47d229dc8e597bfcb9077a0650e Mon Sep 17 00:00:00 2001 From: Naomi Date: Wed, 12 Mar 2014 18:00:01 -0400 Subject: [PATCH 36/39] CC-5727 : History search range using incorrect timezone offset (also Nowplaying & Listener Stats) need to modify these to user timezone strings to match the new changes. --- airtime_mvc/application/controllers/ShowbuilderController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/controllers/ShowbuilderController.php b/airtime_mvc/application/controllers/ShowbuilderController.php index c7de2cdc6..7df1bb7ad 100644 --- a/airtime_mvc/application/controllers/ShowbuilderController.php +++ b/airtime_mvc/application/controllers/ShowbuilderController.php @@ -230,8 +230,8 @@ class ShowbuilderController extends Zend_Controller_Action $end_time = $end->format("Y-m-d H:i:s"); $this->view->title = "{$show_name}: {$start_time} - {$end_time}"; - $this->view->start = $instance->getDbStarts("U"); - $this->view->end = $instance->getDbEnds("U"); + $this->view->start = $start_time; + $this->view->end = $end_time; $this->view->dialog = $this->view->render('showbuilder/builderDialog.phtml'); } From 5b9ceb8d2d2f3549cbc1b270122c05c3e7e68734 Mon Sep 17 00:00:00 2001 From: Albert Santoni Date: Wed, 12 Mar 2014 18:01:27 -0400 Subject: [PATCH 37/39] Made the runtests.sh script work regardless of CWD --- airtime_mvc/tests/runtests.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/airtime_mvc/tests/runtests.sh b/airtime_mvc/tests/runtests.sh index 31b8588dc..faf6628ef 100755 --- a/airtime_mvc/tests/runtests.sh +++ b/airtime_mvc/tests/runtests.sh @@ -27,5 +27,11 @@ export RABBITMQ_PASSWORD export RABBITMQ_VHOST export AIRTIME_UNIT_TEST="1" + +#Change the working directory to this script's directory +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +cd $DIR + +#Run the unit tests phpunit --log-junit test_results.xml From b209108604dcbd4815abe0380909090c83e3e455 Mon Sep 17 00:00:00 2001 From: Naomi Date: Thu, 13 Mar 2014 12:37:56 -0400 Subject: [PATCH 38/39] CC-5732 : History -> Playout History: live chat banner blocks navigator buttons avoid livechat problems --- airtime_mvc/public/css/playouthistory.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airtime_mvc/public/css/playouthistory.css b/airtime_mvc/public/css/playouthistory.css index 1f80dc252..49d870cf6 100644 --- a/airtime_mvc/public/css/playouthistory.css +++ b/airtime_mvc/public/css/playouthistory.css @@ -2,7 +2,7 @@ #history_content { width: 100%; - margin: 0px; + margin: 0 0 30px 0; height: auto; box-sizing: border-box; } From 5dca00c5939d91e8bc16532a014f801c37c501f2 Mon Sep 17 00:00:00 2001 From: localizer Date: Thu, 13 Mar 2014 16:49:36 +0000 Subject: [PATCH 39/39] updated translation resources --- .../locale/es_ES/LC_MESSAGES/airtime.mo | Bin 63141 -> 63202 bytes .../locale/es_ES/LC_MESSAGES/airtime.po | 41 +++++++++--------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/airtime_mvc/locale/es_ES/LC_MESSAGES/airtime.mo b/airtime_mvc/locale/es_ES/LC_MESSAGES/airtime.mo index 4d397637b515caf7edc85234290356ee47b8590c..d9257784c8f71a77d81c775c9988b5d403728bc3 100644 GIT binary patch delta 6666 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 B0m}dY delta 6662 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, 2012 +# vmcarranza , 2014 msgid "" msgstr "" "Project-Id-Version: Airtime\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-12-13 12:58-0500\n" -"PO-Revision-Date: 2014-01-29 15:11+0000\n" -"Last-Translator: andrey.podshivalov\n" +"PO-Revision-Date: 2014-03-12 16:10+0000\n" +"Last-Translator: vmcarranza \n" "Language-Team: Spanish (Spain) (http://www.transifex.com/projects/p/airtime/language/es_ES/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -120,7 +121,7 @@ msgstr "Álbum" #: airtime_mvc/application/controllers/LocaleController.php:81 #: airtime_mvc/application/forms/SmartBlockCriteria.php:65 msgid "Length" -msgstr "Duración:" +msgstr "Duración" #: airtime_mvc/application/services/HistoryService.php:1109 #: airtime_mvc/application/views/scripts/schedule/show-content-dialog.phtml:10 @@ -136,7 +137,7 @@ msgstr "Género" #: airtime_mvc/application/controllers/LocaleController.php:83 #: airtime_mvc/application/forms/SmartBlockCriteria.php:67 msgid "Mood" -msgstr "Estado de ánimo/estilo (mood)" +msgstr "Estilo (mood)" #: airtime_mvc/application/services/HistoryService.php:1111 #: airtime_mvc/application/models/Block.php:1353 @@ -184,7 +185,7 @@ msgstr "" #: airtime_mvc/application/controllers/LocaleController.php:72 #: airtime_mvc/application/forms/SmartBlockCriteria.php:53 msgid "Conductor" -msgstr "Conductor" +msgstr "Director" #: airtime_mvc/application/services/HistoryService.php:1118 #: airtime_mvc/application/models/Block.php:1354 @@ -228,7 +229,7 @@ msgstr "Cargar a SoundCloud" #: airtime_mvc/application/services/CalendarService.php:70 #: airtime_mvc/application/controllers/LibraryController.php:286 msgid "Re-upload to SoundCloud" -msgstr "Recargar a SoundCloud" +msgstr "Volver a cargar a SoundCloud" #: airtime_mvc/application/services/CalendarService.php:77 #: airtime_mvc/application/services/CalendarService.php:121 @@ -298,11 +299,11 @@ msgstr "No es posible arrastrar y soltar shows que se repiten" #: airtime_mvc/application/services/CalendarService.php:263 msgid "Can't move a past show" -msgstr "No puedes mover un show pasado" +msgstr "No se puede mover un show pasado" #: airtime_mvc/application/services/CalendarService.php:281 msgid "Can't move show into past" -msgstr "No puedes mover un show al pasado" +msgstr "No se puede mover un show al pasado" #: airtime_mvc/application/services/CalendarService.php:288 #: airtime_mvc/application/forms/AddShowWhen.php:280 @@ -311,19 +312,19 @@ msgstr "No puedes mover un show al pasado" #: airtime_mvc/application/forms/AddShowWhen.php:324 #: airtime_mvc/application/forms/AddShowWhen.php:329 msgid "Cannot schedule overlapping shows" -msgstr "No puedes programar shows traslapados" +msgstr "No se pueden programar shows traslapados" #: airtime_mvc/application/services/CalendarService.php:301 msgid "Can't move a recorded show less than 1 hour before its rebroadcasts." -msgstr "No puedes mover shows grabados menos de 1 hora antes de su retransmisión." +msgstr "No se pueden mover shows grabados a menos de 1 hora antes de su retransmisión." #: airtime_mvc/application/services/CalendarService.php:311 msgid "Show was deleted because recorded show does not exist!" -msgstr "El show se eliminó porque el show grabado no existe." +msgstr "El show se eliminó porque el show grabado no existe!" #: airtime_mvc/application/services/CalendarService.php:318 msgid "Must wait 1 hour to rebroadcast." -msgstr "Debes esperar 1 hora para retransmitir" +msgstr "Debe esperar 1 hora para retransmitir." #: airtime_mvc/application/views/scripts/preference/index.phtml:2 #: airtime_mvc/application/configs/navigation.php:45 @@ -354,7 +355,7 @@ msgstr "Administrar las Carpetas de Medios" #: airtime_mvc/application/views/scripts/preference/stream-setting.phtml:2 msgid "Stream Settings" -msgstr "Configuración del stream" +msgstr "Configuración de stream" #: airtime_mvc/application/views/scripts/preference/stream-setting.phtml:12 msgid "Global Settings" @@ -371,11 +372,11 @@ msgstr "Configuración de los streams de salida" #: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:9 #: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:27 msgid "Choose folder" -msgstr "Elige carpeta" +msgstr "Elija la carpeta" #: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:10 msgid "Set" -msgstr "Crear" +msgstr "Fijar" #: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:19 msgid "Current Import Folder:" @@ -386,13 +387,13 @@ msgstr "Carpeta actual de importación:" #: airtime_mvc/application/views/scripts/form/add-show-rebroadcast.phtml:41 #: airtime_mvc/application/views/scripts/playouthistorytemplate/template-contents.phtml:75 msgid "Add" -msgstr "Añadir:" +msgstr "Añadir" #: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:43 msgid "" "Rescan watched directory (This is useful if it is network mount and may be " "out of sync with Airtime)" -msgstr "Re escanear el directorio monitoreado (esto es útil si está instalado en una red o si no está sincronizado con Airtime)" +msgstr "Re-escanear el directorio monitoreado (esto es útil si es un directorio montado sobre una red y pudiera no estar en sincronía con Airtime)" #: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:44 msgid "Remove watched directory" @@ -400,11 +401,11 @@ msgstr "Remover el directorio monitoreado" #: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:50 msgid "You are not watching any media folders." -msgstr "No estás monitoreando ninguna carpeta de medios." +msgstr "No está monitoreando ninguna carpeta de medios." #: airtime_mvc/application/views/scripts/form/register-dialog.phtml:1 msgid "Register Airtime" -msgstr "Registra Airtime" +msgstr "Registrar Airtime" #: airtime_mvc/application/views/scripts/form/register-dialog.phtml:6 #, php-format @@ -413,7 +414,7 @@ msgid "" " be collected regularly in order to enhance your user experience.%sClick " "'Yes, help Airtime' and we'll make sure the features you use are constantly " "improving." -msgstr "Ayuda a Airtime dándonos a conocer cómo lo estas usado. Esta información se recopila con regularidad para mejorar la experiencia de los usuarios.%s Da clic a 'Sí, ayudar a Airtime' y nos aseguraremos de que las funciones que más utilizas se mantengan bajo constante mejora." +msgstr "Ayúdenos a mejorar Airtime dándonos a conocer cómo lo está usando. Esta información se recopila con regularidad para mejorar la experiencia de los usuarios.%s Haga clic en 'Sí, ayudar a Airtime' y nos aseguraremos de que las funciones que más utiliza se mantengan bajo constante mejora." #: airtime_mvc/application/views/scripts/form/register-dialog.phtml:25 #, php-format