IM-733 Create Development timetable for Airtime Development
IM-777 Database structure for new History Feature moving original functionality into the service.
This commit is contained in:
parent
9f7e85b273
commit
e63518f2da
|
@ -70,13 +70,9 @@ class PlayouthistoryController extends Zend_Controller_Action
|
||||||
$startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC"));
|
$startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC"));
|
||||||
$endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC"));
|
$endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC"));
|
||||||
|
|
||||||
Logging::info("history starts {$startsDT->format("Y-m-d H:i:s")}");
|
$historyService = new Application_Service_HistoryService();
|
||||||
Logging::info("history ends {$endsDT->format("Y-m-d H:i:s")}");
|
$r = $historyService->getItems($startsDT, $endsDT, $params);
|
||||||
|
|
||||||
$history = new Application_Model_PlayoutHistory($startsDT, $endsDT, $params);
|
|
||||||
|
|
||||||
$r = $history->getItems();
|
|
||||||
|
|
||||||
$this->view->sEcho = $r["sEcho"];
|
$this->view->sEcho = $r["sEcho"];
|
||||||
$this->view->iTotalDisplayRecords = $r["iTotalDisplayRecords"];
|
$this->view->iTotalDisplayRecords = $r["iTotalDisplayRecords"];
|
||||||
$this->view->iTotalRecords = $r["iTotalRecords"];
|
$this->view->iTotalRecords = $r["iTotalRecords"];
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
require_once 'formatters/LengthFormatter.php';
|
|
||||||
|
|
||||||
class Application_Model_PlayoutHistory
|
|
||||||
{
|
|
||||||
private $con;
|
|
||||||
private $timezone;
|
|
||||||
|
|
||||||
//in UTC timezone
|
|
||||||
private $startDT;
|
|
||||||
//in UTC timezone
|
|
||||||
private $endDT;
|
|
||||||
|
|
||||||
private $epoch_now;
|
|
||||||
private $opts;
|
|
||||||
|
|
||||||
private $mDataPropMap = array(
|
|
||||||
"artist" => "artist_name",
|
|
||||||
"title" => "track_title",
|
|
||||||
"played" => "played",
|
|
||||||
"length" => "length",
|
|
||||||
"composer" => "composer",
|
|
||||||
"copyright" => "copyright",
|
|
||||||
);
|
|
||||||
|
|
||||||
public function __construct($p_startDT, $p_endDT, $p_opts)
|
|
||||||
{
|
|
||||||
$this->con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME);
|
|
||||||
$this->startDT = $p_startDT;
|
|
||||||
$this->endDT = $p_endDT;
|
|
||||||
$this->timezone = date_default_timezone_get();
|
|
||||||
$this->epoch_now = time();
|
|
||||||
$this->opts = $p_opts;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* map front end mDataProp labels to proper column names for searching etc.
|
|
||||||
*/
|
|
||||||
private function translateColumns()
|
|
||||||
{
|
|
||||||
for ($i = 0; $i < $this->opts["iColumns"]; $i++) {
|
|
||||||
|
|
||||||
$this->opts["mDataProp_{$i}"] = $this->mDataPropMap[$this->opts["mDataProp_{$i}"]];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getItems()
|
|
||||||
{
|
|
||||||
$this->translateColumns();
|
|
||||||
|
|
||||||
$select = array(
|
|
||||||
"file.track_title as title",
|
|
||||||
"file.artist_name as artist",
|
|
||||||
"playout.played",
|
|
||||||
"playout.file_id",
|
|
||||||
"file.composer",
|
|
||||||
"file.copyright",
|
|
||||||
"file.length"
|
|
||||||
);
|
|
||||||
|
|
||||||
$start = $this->startDT->format("Y-m-d H:i:s");
|
|
||||||
$end = $this->endDT->format("Y-m-d H:i:s");
|
|
||||||
|
|
||||||
$historyTable = "(
|
|
||||||
select count(schedule.file_id) as played, schedule.file_id as file_id
|
|
||||||
from cc_schedule as schedule
|
|
||||||
where schedule.starts >= '{$start}' and schedule.starts < '{$end}'
|
|
||||||
and schedule.playout_status > 0 and schedule.media_item_played != FALSE and schedule.broadcasted = 1
|
|
||||||
group by schedule.file_id
|
|
||||||
)
|
|
||||||
AS playout left join cc_files as file on (file.id = playout.file_id)";
|
|
||||||
|
|
||||||
$results = Application_Model_Datatables::findEntries($this->con, $select, $historyTable, $this->opts, "history");
|
|
||||||
|
|
||||||
foreach ($results["history"] as &$row) {
|
|
||||||
$formatter = new LengthFormatter($row['length']);
|
|
||||||
$row['length'] = $formatter->format();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $results;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,14 +1,71 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
require_once 'formatters/LengthFormatter.php';
|
||||||
|
|
||||||
class Application_Service_HistoryService
|
class Application_Service_HistoryService
|
||||||
{
|
{
|
||||||
private $con;
|
private $con;
|
||||||
private $timezone;
|
private $timezone;
|
||||||
|
|
||||||
|
private $mDataPropMap = array(
|
||||||
|
"artist" => "artist_name",
|
||||||
|
"title" => "track_title",
|
||||||
|
"played" => "played",
|
||||||
|
"length" => "length",
|
||||||
|
"composer" => "composer",
|
||||||
|
"copyright" => "copyright",
|
||||||
|
);
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->con = isset($con) ? $con : Propel::getConnection(CcPlayoutHistoryPeer::DATABASE_NAME);
|
$this->con = isset($con) ? $con : Propel::getConnection(CcPlayoutHistoryPeer::DATABASE_NAME);
|
||||||
$this->timezone = date_default_timezone_get();
|
$this->timezone = date_default_timezone_get();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* map front end mDataProp labels to proper column names for searching etc.
|
||||||
|
*/
|
||||||
|
private function translateColumns($opts)
|
||||||
|
{
|
||||||
|
for ($i = 0; $i < $opts["iColumns"]; $i++) {
|
||||||
|
|
||||||
|
$opts["mDataProp_{$i}"] = $this->mDataPropMap[$opts["mDataProp_{$i}"]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getItems($startDT, $endDT, $opts)
|
||||||
|
{
|
||||||
|
$this->translateColumns($opts);
|
||||||
|
|
||||||
|
$select = array(
|
||||||
|
"file.track_title as title",
|
||||||
|
"file.artist_name as artist",
|
||||||
|
"playout.played",
|
||||||
|
"playout.file_id",
|
||||||
|
"file.composer",
|
||||||
|
"file.copyright",
|
||||||
|
"file.length"
|
||||||
|
);
|
||||||
|
|
||||||
|
$start = $startDT->format("Y-m-d H:i:s");
|
||||||
|
$end = $endDT->format("Y-m-d H:i:s");
|
||||||
|
|
||||||
|
$historyTable = "(
|
||||||
|
select count(history.file_id) as played, history.file_id as file_id
|
||||||
|
from cc_playout_history as history
|
||||||
|
where history.starts >= '{$start}' and history.starts < '{$end}'
|
||||||
|
group by history.file_id
|
||||||
|
) AS playout
|
||||||
|
left join cc_files as file on (file.id = playout.file_id)";
|
||||||
|
|
||||||
|
$results = Application_Model_Datatables::findEntries($this->con, $select, $historyTable, $opts, "history");
|
||||||
|
|
||||||
|
foreach ($results["history"] as &$row) {
|
||||||
|
$formatter = new LengthFormatter($row['length']);
|
||||||
|
$row['length'] = $formatter->format();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $results;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function insertPlayedItem($schedId) {
|
public function insertPlayedItem($schedId) {
|
||||||
|
|
Loading…
Reference in New Issue