From 7a5d9a0f91970ea410075cecf9bdca0e51913d0f Mon Sep 17 00:00:00 2001 From: Martin Konecny <martin.konecny@gmail.com> Date: Mon, 13 Aug 2012 15:26:32 -0400 Subject: [PATCH] CC-1665: Scheduled stream rebroadcasting and recording -don't require 2 digits for minutes or hours --- .../controllers/WebstreamController.php | 4 +- airtime_mvc/application/models/Webstream.php | 37 ++++++++++--------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/airtime_mvc/application/controllers/WebstreamController.php b/airtime_mvc/application/controllers/WebstreamController.php index c04dc64f3..127e23ee2 100644 --- a/airtime_mvc/application/controllers/WebstreamController.php +++ b/airtime_mvc/application/controllers/WebstreamController.php @@ -75,10 +75,10 @@ class WebstreamController extends Zend_Controller_Action return; } - list($analysis, $mime) = Application_Model_Webstream::analyzeFormData($parameters); + list($analysis, $mime, $di) = Application_Model_Webstream::analyzeFormData($parameters); try { if (Application_Model_Webstream::isValid($analysis)) { - Application_Model_Webstream::save($parameters, $mime); + Application_Model_Webstream::save($parameters, $mime, $di); $this->view->statusMessage = "<div class='success'>Webstream saved.</div>"; } else { throw new Exception("isValid returned false"); diff --git a/airtime_mvc/application/models/Webstream.php b/airtime_mvc/application/models/Webstream.php index 51866ebeb..702d2c68d 100644 --- a/airtime_mvc/application/models/Webstream.php +++ b/airtime_mvc/application/models/Webstream.php @@ -96,9 +96,22 @@ class Application_Model_Webstream{ "url" => array(true, ''), "name" => array(true, '')); + $di = null; $length = $parameters["length"]; - $result = preg_match("/^([0-9]{1,2})h ([0-5][0-9])m$/", $length, $matches); - if (!$result == 1 || !count($matches) == 3) { + $result = preg_match("/^([0-9]{1,2})h ([0-5]?[0-9])m$/", $length, $matches); + if ($result == 1 && count($matches) == 3) { + $hours = $matches[1]; + $minutes = $matches[2]; + $di = new DateInterval("PT{$hours}H{$minutes}M"); + + $totalMinutes = $di->h * 60 + $di->i; + + if ($totalMinutes == 0) { + $valid['length'][0] = false; + $valid['length'][1] = 'Length needs to be greater than 0 minutes'; + } + + } else { $valid['length'][0] = false; $valid['length'][1] = 'Length should be of form "00h 00m"'; } @@ -110,6 +123,7 @@ class Application_Model_Webstream{ //and that the domain is at least 1 letter long $result = preg_match("/^(http|https):\/\/.+/", $url, $matches); + $mime = null; if ($result == 0) { $valid['url'][0] = false; $valid['url'][1] = 'URL should be of form "http://domain"'; @@ -140,7 +154,7 @@ class Application_Model_Webstream{ Logging::log("EDIT"); } - return array($valid, $mime); + return array($valid, $mime, $di); } public static function isValid($analysis) @@ -181,29 +195,16 @@ class Application_Model_Webstream{ return $mime; } - public static function save($parameters, $mime) + public static function save($parameters, $mime, $di) { $userInfo = Zend_Auth::getInstance()->getStorage()->read(); - $length = $parameters["length"]; - $result = preg_match("/^([0-9]{1,2})h ([0-5][0-9])m$/", $length, $matches); - - if ($result == 1 && count($matches) == 3) { - $hours = $matches[1]; - $minutes = $matches[2]; - $di = new DateInterval("PT{$hours}H{$minutes}M"); - $dblength = $di->format("%H:%I"); - } else { - //This should never happen because we should have already validated - //in the controller - throw new Exception("Invalid date format: $length"); - } - $webstream = new CcWebstream(); $webstream->setDbName($parameters["name"]); $webstream->setDbDescription($parameters["description"]); $webstream->setDbUrl($parameters["url"]); + $dblength = $di->format("%H:%I"); $webstream->setDbLength($dblength); $webstream->setDbCreatorId($userInfo->id); $webstream->setDbUtime(new DateTime("now", new DateTimeZone('UTC')));