check into issue that propel doesn't return DateTime object in UTC. using table tools to keep track of selected rows.
136 lines
No EOL
4.3 KiB
PHP
136 lines
No EOL
4.3 KiB
PHP
<?php
|
|
|
|
class ShowbuilderController extends Zend_Controller_Action
|
|
{
|
|
|
|
public function init()
|
|
{
|
|
$ajaxContext = $this->_helper->getHelper('AjaxContext');
|
|
$ajaxContext->addActionContext('schedule-update', 'json')
|
|
->addActionContext('schedule-add', 'json')
|
|
->addActionContext('schedule-remove', 'json')
|
|
->addActionContext('builder-feed', 'json')
|
|
->initContext();
|
|
}
|
|
|
|
public function indexAction() {
|
|
|
|
$this->_helper->layout->setLayout('builder');
|
|
|
|
$this->view->headScript()->appendFile($this->view->baseUrl('/js/airtime/library/events/library_showbuilder.js'),'text/javascript');
|
|
|
|
$this->_helper->actionStack('library', 'library');
|
|
$this->_helper->actionStack('builder', 'showbuilder');
|
|
}
|
|
|
|
public function builderAction() {
|
|
|
|
$request = $this->getRequest();
|
|
$baseUrl = $request->getBaseUrl();
|
|
|
|
$this->view->headScript()->appendScript("var serverTimezoneOffset = ".date("Z")."; //in seconds");
|
|
$this->view->headScript()->appendFile($baseUrl.'/js/timepicker/jquery.ui.timepicker.js','text/javascript');
|
|
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/showbuilder/builder.js','text/javascript');
|
|
|
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/jquery.ui.timepicker.css');
|
|
|
|
$this->_helper->viewRenderer->setResponseSegment('builder');
|
|
}
|
|
|
|
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));
|
|
|
|
$startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC"));
|
|
$endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC"));
|
|
|
|
Logging::log("showbuilder starts {$startsDT->format("Y-m-d H:i:s")}");
|
|
Logging::log("showbuilder ends {$endsDT->format("Y-m-d H:i:s")}");
|
|
|
|
$showBuilder = new Application_Model_ShowBuilder($startsDT, $endsDT);
|
|
|
|
$this->view->schedule = $showBuilder->GetItems();
|
|
}
|
|
|
|
public function scheduleAddAction() {
|
|
|
|
$request = $this->getRequest();
|
|
|
|
$id = $request->getParam("id", null);
|
|
$instance = $request->getParam("instance", null);
|
|
|
|
$items = $request->getParam("items", array());
|
|
}
|
|
|
|
public function scheduleRemoveAction()
|
|
{
|
|
$request = $this->getRequest();
|
|
|
|
$ids = $request->getParam("ids", null);
|
|
|
|
Logging::log($ids);
|
|
|
|
$json = array();
|
|
|
|
try {
|
|
Application_Model_Scheduler::removeItems($ids);
|
|
$json["message"]="success... maybe";
|
|
}
|
|
catch (Exception $e) {
|
|
$json["message"]=$e->getMessage();
|
|
Logging::log($e->getMessage());
|
|
}
|
|
|
|
$this->view->data = $json;
|
|
}
|
|
|
|
public function scheduleAction() {
|
|
|
|
$request = $this->getRequest();
|
|
|
|
$instance = $request->getParam("instance", null);
|
|
$id = $request->getParam("id", null);
|
|
$starts_epoch = $request->getParam("start", null);
|
|
$file_id = $request->getParam("file", null);
|
|
|
|
$startDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC"));
|
|
|
|
//invalid request
|
|
if (is_null($start)) {
|
|
return;
|
|
}
|
|
|
|
//updating a scheduled item.
|
|
if (isset($id)) {
|
|
$schedItem = CcScheduleQuery::create()->findPK($id);
|
|
$duration = $schedItem->getDbEnds('U') - $schedItem->getDbStarts('U');
|
|
|
|
$endDT = DateTime::createFromFormat("U", $starts_epoch + $duration, new DateTimeZone("UTC"));
|
|
|
|
$oldInstance = $schedItem->getDbInstanceId();
|
|
|
|
if ($instance === $oldInstance) {
|
|
CcScheduleQuery::create()
|
|
->filterByDbInstanceId($oldInstance)
|
|
->find();
|
|
}
|
|
//file was dragged out of the show into another show or scheduled not within a show.
|
|
else {
|
|
}
|
|
|
|
|
|
}
|
|
else {
|
|
$schedItem = new CcSchedule();
|
|
}
|
|
|
|
$schedItem->setDbStarts($startDT);
|
|
$schedItem->setDbEnds($endDT);
|
|
$schedItem->save();
|
|
}
|
|
} |