diff --git a/CREDITS b/CREDITS
index 826799c992..3c084e0442 100644
--- a/CREDITS
+++ b/CREDITS
@@ -2,6 +2,19 @@
CREDITS
=======
+Version 2.5.2
+
+Albert Santoni (albert.santoni@sourcefabric.org)
+Denise Rigato (denise.rigato@sourcefabric.org)
+Cliff Wang (cliff.wang@sourcefabric.org)
+Nareg Asmarian (nareg.asmarian@sourcefabric.org)
+Daniel James (daniel.james@sourcefabric.org)
+
+Community Contributors:
+Robbt E
+
+
+
Version 2.5.1
Albert Santoni (albert.santoni@sourcefabric.org)
@@ -25,6 +38,7 @@ Community Contributors:
John Chewter
+
Version 2.5.0
-------------
diff --git a/airtime_mvc/application/forms/SmartBlockCriteria.php b/airtime_mvc/application/forms/SmartBlockCriteria.php
index 990d5bde94..5423ab657b 100644
--- a/airtime_mvc/application/forms/SmartBlockCriteria.php
+++ b/airtime_mvc/application/forms/SmartBlockCriteria.php
@@ -4,6 +4,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
private $criteriaOptions;
private $stringCriteriaOptions;
private $numericCriteriaOptions;
+ private $sortOptions;
private $limitOptions;
/* We need to know if the criteria value will be a string
@@ -122,6 +123,17 @@ private function getLimitOptions()
}
return $this->limitOptions;
}
+ private function getSortOptions()
+ {
+ if (!isset($this->sortOptions)) {
+ $this->sortOptions = array(
+ "random" => _("random"),
+ "newest" => _("newest"),
+ "oldest" => _("oldest")
+ );
+ }
+ return $this->sortOptions;
+ }
public function init()
@@ -288,6 +300,15 @@ public function startForm($p_blockId, $p_isValid = false)
}
$this->addElement($repeatTracks);
+ $sort = new Zend_Form_Element_Select('sp_sort_options');
+ $sort->setAttrib('class', 'sp_input_select')
+ ->setDecorators(array('viewHelper'))
+ ->setMultiOptions($this->getSortOptions());
+ if (isset($storedCrit["sort"])) {
+ $sort->setValue($storedCrit["sort"]["value"]);
+ }
+ $this->addElement($sort);
+
$limit = new Zend_Form_Element_Select('sp_limit_options');
$limit->setAttrib('class', 'sp_input_select')
->setDecorators(array('viewHelper'))
@@ -344,7 +365,7 @@ public function startForm($p_blockId, $p_isValid = false)
public function preValidation($params)
{
- $data = Application_Model_Block::organizeSmartPlyalistCriteria($params['data']);
+ $data = Application_Model_Block::organizeSmartPlaylistCriteria($params['data']);
// add elelments that needs to be added
// set multioption for modifier according to criteria_field
$modRowMap = array();
diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php
index babef06a56..4cb183569a 100644
--- a/airtime_mvc/application/models/Block.php
+++ b/airtime_mvc/application/models/Block.php
@@ -1156,7 +1156,7 @@ public function setLength($value)
*/
public function saveSmartBlockCriteria($p_criteria)
{
- $data = $this->organizeSmartPlyalistCriteria($p_criteria);
+ $data = $this->organizeSmartPlaylistCriteria($p_criteria);
// saving dynamic/static flag
$blockType = $data['etc']['sp_type'] == 0 ? 'static':'dynamic';
$this->saveType($blockType);
@@ -1224,6 +1224,16 @@ public function storeCriteriaIntoDb($p_criteriaData)
}
}
+ // insert sort info
+ $qry = new CcBlockcriteria();
+ $qry->setDbCriteria("sort")
+ ->setDbModifier("N/A")
+ ->setDbValue($p_criteriaData['etc']['sp_sort_options'])
+ ->setDbBlockId($this->id)
+ ->save();
+
+
+
// insert limit info
$qry = new CcBlockcriteria();
$qry->setDbCriteria("limit")
@@ -1231,7 +1241,8 @@ public function storeCriteriaIntoDb($p_criteriaData)
->setDbValue($p_criteriaData['etc']['sp_limit_value'])
->setDbBlockId($this->id)
->save();
-
+
+
// insert repeate track option
$qry = new CcBlockcriteria();
$qry->setDbCriteria("repeat_tracks")
@@ -1352,6 +1363,7 @@ public function getCriteria()
"isrc_number" => _("ISRC"),
"label" => _("Label"),
"language" => _("Language"),
+ "utime" => _("Upload Time"),
"mtime" => _("Last Modified"),
"lptime" => _("Last Played"),
"length" => _("Length"),
@@ -1399,6 +1411,8 @@ public function getCriteria()
"display_modifier"=>_($modifier));
} else if($criteria == "repeat_tracks") {
$storedCrit["repeat_tracks"] = array("value"=>$value);
+ } else if($criteria == "sort") {
+ $storedCrit["sort"] = array("value"=>$value);
} else {
$storedCrit["crit"][$criteria][] = array(
"criteria"=>$criteria,
@@ -1507,8 +1521,20 @@ public function getListofFilesMeetCriteria()
// check if file exists
$qry->add("file_exists", "true", Criteria::EQUAL);
$qry->add("hidden", "false", Criteria::EQUAL);
+ if (isset($storedCrit['sort'])) {
+ $sortTracks = $storedCrit['sort']['value'];
+ }
+ if ($sortTracks == 'newest') {
+ $qry->addDescendingOrderByColumn('utime');
+ }
+ else if ($sortTracks == 'oldest') {
+ $qry->addAscendingOrderByColumn('utime');
+ }
+ else {
$qry->addAscendingOrderByColumn('random()');
}
+
+ }
// construct limit restriction
$limits = array();
@@ -1537,9 +1563,8 @@ public function getListofFilesMeetCriteria()
Logging::info($e);
}
}
-
- public static function organizeSmartPlyalistCriteria($p_criteria)
- {
+ public static function organizeSmartPlaylistCriteria($p_criteria)
+ {
$fieldNames = array('sp_criteria_field', 'sp_criteria_modifier', 'sp_criteria_value', 'sp_criteria_extra');
$output = array();
foreach ($p_criteria as $ele) {
diff --git a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml
index b0ccc274a3..9da7ca765e 100644
--- a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml
+++ b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml
@@ -95,7 +95,18 @@
-
+