CC-5450 : Refactor Media Management (Classes/DB) in Airtime
finishing up last relative date rules.
This commit is contained in:
parent
5d236c5311
commit
b15e1e638c
|
@ -156,12 +156,18 @@ class PlaylistController extends Zend_Controller_Action
|
|||
{
|
||||
$content = $this->_getParam('content');
|
||||
|
||||
$con = Propel::getConnection(PlaylistPeer::DATABASE_NAME);
|
||||
$con->beginTransaction();
|
||||
|
||||
try {
|
||||
$playlist = $this->getPlaylist();
|
||||
$playlist->savePlaylistContent($content);
|
||||
$playlist->savePlaylistContent($con, $content);
|
||||
$this->createUpdateResponse($playlist);
|
||||
|
||||
$con->commit();
|
||||
}
|
||||
catch (Exception $e) {
|
||||
$con->rollBack();
|
||||
$this->view->error = $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,6 +66,10 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
|
||||
protected function getCriteriaRules(&$query) {
|
||||
|
||||
$displayTimezone = new DateTimeZone(\Application_Model_Preference::GetUserTimezone());
|
||||
$utcTimezone = new DateTimeZone("UTC");
|
||||
$now = new DateTime("now", $displayTimezone);
|
||||
|
||||
/*
|
||||
* @param DateTime $now
|
||||
*/
|
||||
|
@ -116,15 +120,13 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
return $yearStart;
|
||||
};
|
||||
|
||||
$displayTimezone = new DateTimeZone(\Application_Model_Preference::GetUserTimezone());
|
||||
$utcTimezone = new DateTimeZone("UTC");
|
||||
$now = new DateTime("now", $displayTimezone);
|
||||
|
||||
//$pattern is like "%VALUE%", or just "VALUE" if % is not needed.
|
||||
function createRule(&$query, $comparison, $pattern = "VALUE") {
|
||||
return function($col, $value1, $value2 = null) use (&$query, $comparison, $pattern) {
|
||||
return function($col, $data) use (&$query, $comparison, $pattern) {
|
||||
|
||||
$m = $query->getModelName();
|
||||
|
||||
$value1 = $data["input1"];
|
||||
|
||||
$name = mt_rand(10000, 99999);
|
||||
$cond = "{$m}.{$col} {$comparison} ?";
|
||||
|
@ -146,12 +148,15 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
$isGreaterThanEqualTo = createRule($query, Criteria::GREATER_EQUAL);
|
||||
$isLessThanEqualTo = createRule($query, Criteria::LESS_EQUAL);
|
||||
|
||||
$range = function ($col, $value1, $value2) use (&$query) {
|
||||
$range = function ($col, $data) use (&$query) {
|
||||
|
||||
$name1 = mt_rand(10000, 99999);
|
||||
$name2 = mt_rand(10000, 99999);
|
||||
$name3 = mt_rand(10000, 99999);
|
||||
|
||||
$value1 = $data["input1"];
|
||||
$value2 = $data["input2"];
|
||||
|
||||
$m = $query->getModelName();
|
||||
|
||||
$comparison1 = Criteria::GREATER_EQUAL;
|
||||
|
@ -182,7 +187,12 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
$from = $now->format('Y-m-d H:i:s');
|
||||
$to = $tomorrow->format('Y-m-d H:i:s');
|
||||
|
||||
return $range($col, $from, $to);
|
||||
$data = array(
|
||||
"input1" => $from,
|
||||
"input2" => $to
|
||||
);
|
||||
|
||||
return $range($col, $data);
|
||||
};
|
||||
|
||||
$yesterday = function($col) use (&$query, $utcTimezone, $now, $range) {
|
||||
|
@ -199,7 +209,12 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
$from = $yesterday->format('Y-m-d H:i:s');
|
||||
$to = $now->format('Y-m-d H:i:s');
|
||||
|
||||
return $range($col, $from, $to);
|
||||
$data = array(
|
||||
"input1" => $from,
|
||||
"input2" => $to
|
||||
);
|
||||
|
||||
return $range($col, $data);
|
||||
};
|
||||
|
||||
$thisWeek = function($col) use (&$query, $utcTimezone, $now, $range, $getWeekStartDateTime) {
|
||||
|
@ -212,7 +227,12 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
$from = $weekStart->format('Y-m-d H:i:s');
|
||||
$to = $now->format('Y-m-d H:i:s');
|
||||
|
||||
return $range($col, $from, $to);
|
||||
$data = array(
|
||||
"input1" => $from,
|
||||
"input2" => $to
|
||||
);
|
||||
|
||||
return $range($col, $data);
|
||||
};
|
||||
|
||||
$lastWeek = function($col) use (&$query, $utcTimezone, $now, $range, $getWeekStartDateTime) {
|
||||
|
@ -229,7 +249,12 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
$from = $weekStart->format('Y-m-d H:i:s');
|
||||
$to = $weekEnd->format('Y-m-d H:i:s');
|
||||
|
||||
return $range($col, $from, $to);
|
||||
$data = array(
|
||||
"input1" => $from,
|
||||
"input2" => $to
|
||||
);
|
||||
|
||||
return $range($col, $data);
|
||||
};
|
||||
|
||||
$thisMonth = function($col) use (&$query, $utcTimezone, $now, $range, $getMonthStartDateTime) {
|
||||
|
@ -242,7 +267,12 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
$from = $monthStart->format('Y-m-d H:i:s');
|
||||
$to = $now->format('Y-m-d H:i:s');
|
||||
|
||||
return $range($col, $from, $to);
|
||||
$data = array(
|
||||
"input1" => $from,
|
||||
"input2" => $to
|
||||
);
|
||||
|
||||
return $range($col, $data);
|
||||
};
|
||||
|
||||
$lastMonth = function($col) use (&$query, $utcTimezone, $now, $range, $getMonthStartDateTime) {
|
||||
|
@ -259,7 +289,12 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
$from = $monthStart->format('Y-m-d H:i:s');
|
||||
$to = $monthEnd->format('Y-m-d H:i:s');
|
||||
|
||||
return $range($col, $from, $to);
|
||||
$data = array(
|
||||
"input1" => $from,
|
||||
"input2" => $to
|
||||
);
|
||||
|
||||
return $range($col, $data);
|
||||
};
|
||||
|
||||
$thisYear = function($col) use (&$query, $utcTimezone, $now, $range, $getYearStartDateTime) {
|
||||
|
@ -272,7 +307,12 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
$from = $yearStart->format('Y-m-d H:i:s');
|
||||
$to = $now->format('Y-m-d H:i:s');
|
||||
|
||||
return $range($col, $from, $to);
|
||||
$data = array(
|
||||
"input1" => $from,
|
||||
"input2" => $to
|
||||
);
|
||||
|
||||
return $range($col, $data);
|
||||
};
|
||||
|
||||
$lastYear = function($col) use (&$query, $utcTimezone, $now, $range, $getYearStartDateTime) {
|
||||
|
@ -289,27 +329,115 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
$from = $yearStart->format('Y-m-d H:i:s');
|
||||
$to = $yearEnd->format('Y-m-d H:i:s');
|
||||
|
||||
return $range($col, $from, $to);
|
||||
$data = array(
|
||||
"input1" => $from,
|
||||
"input2" => $to
|
||||
);
|
||||
|
||||
return $range($col, $data);
|
||||
};
|
||||
|
||||
//time is like hh:mm(:ss)
|
||||
$inTheLast = function($col, $value, $unit) use (&$query, $utcTimezone, $now, $range) {
|
||||
|
||||
$info = explode(":", $now);
|
||||
$hours = $info[0];
|
||||
$minutes = isset($info[1]) ? intval($info[1]) : 0;
|
||||
$seconds = isset($info[2]) ? intval($info[2]) : 0;
|
||||
/*
|
||||
1 => _("seconds"),
|
||||
2 => _("minutes"),
|
||||
3 => _("hours"),
|
||||
4 => _("days"),
|
||||
5 => _("weeks"),
|
||||
6 => _("months"),
|
||||
7 => _("years"),
|
||||
*/
|
||||
$convertRelativeUnit = function($duration, $unit) {
|
||||
|
||||
$timespan = $seconds + $minutes*60 + $hours*3600;
|
||||
$timespan = intval($duration);
|
||||
|
||||
$interval = new DateInterval("PT{$timespan}S");
|
||||
$last = clone $now;
|
||||
$last->sub($interval);
|
||||
switch($unit) {
|
||||
|
||||
case 1:
|
||||
$format = "PT{$timespan}S";
|
||||
break;
|
||||
case 2:
|
||||
$format = "PT{$timespan}M";
|
||||
break;
|
||||
case 3:
|
||||
$format = "PT{$timespan}H";
|
||||
break;
|
||||
case 4:
|
||||
$format = "P{$timespan}D";
|
||||
break;
|
||||
case 5:
|
||||
$timespan *= 7;
|
||||
$format = "P{$timespan}D";
|
||||
break;
|
||||
case 6:
|
||||
$format = "P{$timespan}M";
|
||||
break;
|
||||
case 7:
|
||||
$format = "P{$timespan}Y";
|
||||
break;
|
||||
}
|
||||
|
||||
return new DateInterval($format);
|
||||
};
|
||||
|
||||
$from = $last->format('Y-m-d H:i:s');
|
||||
$to = $now->format('Y-m-d H:i:s');
|
||||
$getRelativeDateTimes = function($now, $data, $utcTimezone, $convertRelativeUnit) {
|
||||
|
||||
$value1 = $data["input1"];
|
||||
$unit1 = $data["unit1"];
|
||||
$interval1 = $convertRelativeUnit($value1, $unit1);
|
||||
|
||||
$from = clone $now;
|
||||
$to = clone $now;
|
||||
|
||||
//relative range rule.
|
||||
if (isset($data["input2"]) && isset($data["unit2"])) {
|
||||
$value2 = $data["input2"];
|
||||
$unit2 = $data["unit2"];
|
||||
$interval2 = $convertRelativeUnit($value2, $unit2);
|
||||
|
||||
$from->sub($interval2);
|
||||
$to->sub($interval1);
|
||||
}
|
||||
else {
|
||||
$from->sub($interval1);
|
||||
}
|
||||
|
||||
$from->setTimezone($utcTimezone);
|
||||
$to->setTimezone($utcTimezone);
|
||||
|
||||
return array($from, $to);
|
||||
};
|
||||
|
||||
$inTheLast = function($col, $data) use (&$query, $utcTimezone, $now, $getRelativeDateTimes, $convertRelativeUnit, $range) {
|
||||
|
||||
return $range($col, $from, $to);
|
||||
list($from, $to) = $getRelativeDateTimes($now, $data, $utcTimezone, $convertRelativeUnit);
|
||||
|
||||
$data = array(
|
||||
"input1" => $from->format('Y-m-d H:i:s'),
|
||||
"input2" => $to->format('Y-m-d H:i:s')
|
||||
);
|
||||
|
||||
return $range($col, $data);
|
||||
};
|
||||
|
||||
$notInTheLast = function($col, $data) use (&$query, $utcTimezone, $now, $getRelativeDateTimes, $convertRelativeUnit, $isLessThan, $isGreaterThan) {
|
||||
|
||||
list($from, $to) = $getRelativeDateTimes($now, $data, $utcTimezone, $convertRelativeUnit);
|
||||
|
||||
$data1 = array(
|
||||
"input1" => $from->format('Y-m-d H:i:s')
|
||||
);
|
||||
|
||||
$data2 = array(
|
||||
"input1" => $to->format('Y-m-d H:i:s')
|
||||
);
|
||||
|
||||
$name1 = $isLessThan($col, $data1);
|
||||
$name2 = $isGreaterThan($col, $data2);
|
||||
$name3 = mt_rand(10000, 99999);
|
||||
|
||||
$query->combine(array($name1, $name2), 'or', $name3);
|
||||
|
||||
return $name3;
|
||||
};
|
||||
|
||||
return array(
|
||||
|
@ -333,7 +461,8 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
$lastMonth,
|
||||
$thisYear,
|
||||
$lastYear,
|
||||
$inTheLast
|
||||
$inTheLast,
|
||||
$notInTheLast
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -439,10 +568,7 @@ abstract class Playlist extends BasePlaylist implements \Interface_Playlistable
|
|||
$rule = $criteriaRules[$orBlock["modifier"]];
|
||||
|
||||
$column = $orBlock["criteria"];
|
||||
$input1 = isset($orBlock["input1"]) ? $orBlock["input1"] : null;
|
||||
$input2 = isset($orBlock["input2"]) ? $orBlock["input2"] : null;
|
||||
|
||||
$condition = $rule($column, $input1, $input2);
|
||||
$condition = $rule($column, $orBlock);
|
||||
|
||||
$conditionOr[] = $condition;
|
||||
}
|
||||
|
|
|
@ -20,25 +20,33 @@
|
|||
<?php echo $this->element->getElement("sp_criteria_field_{$suffix}") ?>
|
||||
<?php echo $this->element->getElement("sp_criteria_modifier_{$suffix}") ?>
|
||||
|
||||
<?php $input = $this->element->getElement("sp_criteria_value_{$suffix}") ?>
|
||||
<?php if(isset($input)): ?>
|
||||
<?php echo $input; ?>
|
||||
<?php
|
||||
$input1 = $this->element->getElement("sp_criteria_value_{$suffix}");
|
||||
$input2 = $this->element->getElement("sp_criteria_extra_{$suffix}");
|
||||
$unit1 = $this->element->getElement("sp_rel_date_unit_1_{$suffix}");
|
||||
$unit2 = $this->element->getElement("sp_rel_date_unit_2_{$suffix}")
|
||||
?>
|
||||
|
||||
<?php if (isset($input1)): ?>
|
||||
<?php echo $input1; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php $unit1 = $this->element->getElement("sp_rel_date_unit_1_{$suffix}") ?>
|
||||
<?php if(isset($unit1)): ?>
|
||||
<?php if (isset($unit1)): ?>
|
||||
<?php echo $unit1; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php $extra = $this->element->getElement("sp_criteria_extra_{$suffix}") ?>
|
||||
<?php if(isset($extra)): ?>
|
||||
<span class='sp_text_font' id="extra_criteria"><?php echo _("to"); ?>
|
||||
<?php echo $extra; ?>
|
||||
<?php if (isset($input2)): ?>
|
||||
<span class='sp_text_font' id="extra_criteria">
|
||||
<?php echo _("to"); ?>
|
||||
<?php echo $input2; ?>
|
||||
</span>
|
||||
<?php else: ?>
|
||||
<a class="btn btn-small btn-range">
|
||||
<span>TO</span>
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php $unit2 = $this->element->getElement("sp_rel_date_unit_2_{$suffix}") ?>
|
||||
<?php if(isset($unit2)): ?>
|
||||
<?php if (isset($unit2)): ?>
|
||||
<?php echo $unit2; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
|
|
Loading…
Reference in New Issue