CC-3065: When editing a show after changing timezone, the time listed under "When" displays time in old timezone
-fixed
This commit is contained in:
parent
9bbf1fda17
commit
21bbb983ac
2 changed files with 42 additions and 29 deletions
|
@ -491,11 +491,11 @@ class ScheduleController extends Zend_Controller_Action
|
||||||
'add_show_genre' => $show->getGenre(),
|
'add_show_genre' => $show->getGenre(),
|
||||||
'add_show_description' => $show->getDescription()));
|
'add_show_description' => $show->getDescription()));
|
||||||
|
|
||||||
$startsDateTime = new DateTime($show->getStartDate()." ".$show->getStartTime(), new DateTimeZone(date_default_timezone_get()));
|
$startsDateTime = new DateTime($show->getStartDate()." ".$show->getStartTime(), new DateTimeZone("UTC"));
|
||||||
$endsDateTime = new DateTime($show->getEndDate()." ".$show->getEndTime(), new DateTimeZone(date_default_timezone_get()));
|
$endsDateTime = new DateTime($show->getEndDate()." ".$show->getEndTime(), new DateTimeZone("UTC"));
|
||||||
|
|
||||||
//$startsDateTime->setTimezone(new DateTimeZone(date_default_timezone_get()));
|
$startsDateTime->setTimezone(new DateTimeZone(date_default_timezone_get()));
|
||||||
//$endsDateTime->setTimezone(new DateTimeZone(date_default_timezone_get()));
|
$endsDateTime->setTimezone(new DateTimeZone(date_default_timezone_get()));
|
||||||
|
|
||||||
$formWhen->populate(array('add_show_start_date' => $startsDateTime->format("Y-m-d"),
|
$formWhen->populate(array('add_show_start_date' => $startsDateTime->format("Y-m-d"),
|
||||||
'add_show_start_time' => $startsDateTime->format("H:i"),
|
'add_show_start_time' => $startsDateTime->format("H:i"),
|
||||||
|
@ -595,12 +595,14 @@ class ScheduleController extends Zend_Controller_Action
|
||||||
$show = new Application_Model_Show($data['add_show_id']);
|
$show = new Application_Model_Show($data['add_show_id']);
|
||||||
|
|
||||||
$startDateModified = true;
|
$startDateModified = true;
|
||||||
if ($data['add_show_id'] != -1 && !array_key_exists('add_show_start_date', $data)){
|
if ($data['add_show_id'] != -1 && !array_key_exists('add_show_start_date', $data)){
|
||||||
//show is being updated and changing the start date was disabled, since the
|
//show is being updated and changing the start date was disabled, since the
|
||||||
//array key does not exist. We need to repopulate this entry from the db.
|
//array key does not exist. We need to repopulate this entry from the db.
|
||||||
$data['add_show_start_date'] = $show->getStartDate();
|
//The start date will be return in UTC time, so lets convert it to local time.
|
||||||
$startDateModified = false;
|
$dt = Application_Model_DateHelper::ConvertToLocalDateTime($show->getStartDate());
|
||||||
}
|
$data['add_show_start_date'] = $dt->format("Y-m-d");
|
||||||
|
$startDateModified = false;
|
||||||
|
}
|
||||||
|
|
||||||
$data['add_show_hosts'] = $this->_getParam('hosts');
|
$data['add_show_hosts'] = $this->_getParam('hosts');
|
||||||
$data['add_show_day_check'] = $this->_getParam('days');
|
$data['add_show_day_check'] = $this->_getParam('days');
|
||||||
|
|
|
@ -448,7 +448,7 @@ class Application_Model_Show {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the start date of the current show.
|
* Get the start date of the current show in UTC timezone.
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
* The start date in the format YYYY-MM-DD
|
* The start date in the format YYYY-MM-DD
|
||||||
|
@ -457,38 +457,49 @@ class Application_Model_Show {
|
||||||
global $CC_DBC;
|
global $CC_DBC;
|
||||||
|
|
||||||
$showId = $this->getId();
|
$showId = $this->getId();
|
||||||
$sql = "SELECT first_show FROM cc_show_days"
|
$sql = "SELECT first_show, start_time, timezone FROM cc_show_days"
|
||||||
." WHERE show_id = $showId"
|
." WHERE show_id = $showId"
|
||||||
." ORDER BY first_show";
|
." ORDER BY first_show"
|
||||||
|
." LIMIT 1";
|
||||||
|
|
||||||
$firstDate = $CC_DBC->GetOne($sql);
|
$rows = $CC_DBC->GetAll($sql);
|
||||||
|
|
||||||
if (is_null($firstDate)){
|
if (count($rows) == 0){
|
||||||
return "";
|
return "";
|
||||||
} else {
|
} else {
|
||||||
return $firstDate;
|
$row = $rows[0];
|
||||||
|
|
||||||
|
$dt = new DateTime($row["first_show"]." ".$row["start_time"], new DateTimeZone($row["timezone"]));
|
||||||
|
$dt->setTimezone(new DateTimeZone("UTC"));
|
||||||
|
return $dt->format("Y-m-d");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the start time of the current show.
|
* Get the start time of the current show in UTC timezone.
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
* The start time in the format HH:MM:SS
|
* The start time in the format HH:MM
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function getStartTime(){
|
public function getStartTime(){
|
||||||
global $CC_DBC;
|
global $CC_DBC;
|
||||||
|
|
||||||
$showId = $this->getId();
|
$showId = $this->getId();
|
||||||
$sql = "SELECT start_time FROM cc_show_days"
|
$sql = "SELECT first_show, start_time, timezone FROM cc_show_days"
|
||||||
." WHERE show_id = $showId";
|
." WHERE show_id = $showId"
|
||||||
|
." ORDER BY first_show"
|
||||||
|
." LIMIT 1";
|
||||||
|
|
||||||
$startTime = $CC_DBC->GetOne($sql);
|
$rows = $CC_DBC->GetAll($sql);
|
||||||
|
|
||||||
if (is_null($startTime)){
|
if (count($rows) == 0){
|
||||||
return "";
|
return "";
|
||||||
} else {
|
} else {
|
||||||
return $startTime;
|
$row = $rows[0];
|
||||||
|
$dt = new DateTime($row["first_show"]." ".$row["start_time"], new DateTimeZone($row["timezone"]));
|
||||||
|
$dt->setTimezone(new DateTimeZone("UTC"));
|
||||||
|
return $dt->format("H:i");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -540,7 +551,7 @@ class Application_Model_Show {
|
||||||
*/
|
*/
|
||||||
public function isStartDateTimeInPast(){
|
public function isStartDateTimeInPast(){
|
||||||
$date = new Application_Model_DateHelper;
|
$date = new Application_Model_DateHelper;
|
||||||
$current_timestamp = $date->getTimestamp();
|
$current_timestamp = $date->getUtcTimestamp();
|
||||||
return ($current_timestamp > ($this->getStartDate()." ".$this->getStartTime()));
|
return ($current_timestamp > ($this->getStartDate()." ".$this->getStartTime()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -619,9 +630,9 @@ class Application_Model_Show {
|
||||||
$sql .= "WHERE show_id = $p_data[add_show_id]";
|
$sql .= "WHERE show_id = $p_data[add_show_id]";
|
||||||
$CC_DBC->query($sql);
|
$CC_DBC->query($sql);
|
||||||
|
|
||||||
$oldStartDateTimeEpoch = strtotime($this->getStartDate()." ".$this->getStartTime());
|
$dtOld = new DateTime($this->getStartDate()." ".$this->getStartTime(), new DateTimeZone("UTC"));
|
||||||
$newStartDateTimeEpoch = strtotime($p_data['add_show_start_date']." ".$p_data['add_show_start_time']);
|
$dtNew = new DateTime($p_data['add_show_start_date']." ".$p_data['add_show_start_time'], new DateTimeZone(date_default_timezone_get()));
|
||||||
$diff = $newStartDateTimeEpoch - $oldStartDateTimeEpoch;
|
$diff = $dtOld->getTimestamp() - $dtNew->getTimestamp();
|
||||||
|
|
||||||
$sql = "UPDATE cc_show_instances "
|
$sql = "UPDATE cc_show_instances "
|
||||||
."SET starts = starts + INTERVAL '$diff sec', "
|
."SET starts = starts + INTERVAL '$diff sec', "
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue