Skip to content

Commit

Permalink
Added sort tracks by upload time to smart blocks criteria
Browse files Browse the repository at this point in the history
  • Loading branch information
Robbt committed Oct 20, 2014
1 parent 05096dc commit fe291cd
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 7 deletions.
23 changes: 22 additions & 1 deletion airtime_mvc/application/forms/SmartBlockCriteria.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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'))
Expand Down Expand Up @@ -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();
Expand Down
35 changes: 30 additions & 5 deletions airtime_mvc/application/models/Block.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -1224,14 +1224,25 @@ 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")
->setDbModifier($p_criteriaData['etc']['sp_limit_options'])
->setDbValue($p_criteriaData['etc']['sp_limit_value'])
->setDbBlockId($this->id)
->save();



// insert repeate track option
$qry = new CcBlockcriteria();
$qry->setDbCriteria("repeat_tracks")
Expand Down Expand Up @@ -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"),
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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();

Expand Down Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,18 @@
<?php endif; ?>
<br />
</dd>

<dd id='sp_sort-element'>
<span class='sp_text_font'>Sort tracks by</span>
<?php echo $this->element->getElement('sp_sort_options') ?>
<?php if($this->element->getElement("sp_sort_options")->hasErrors()) : ?>
<?php foreach($this->element->getElement("sp_sort_options")->getMessages() as $error): ?>
<span class='errors sp-errors'>
<?php echo $error; ?>
</span>
<?php endforeach; ?>
<?php endif; ?>
<br />
</dd>
<dd id='sp_limit-element'>
<span class='sp_text_font'><?php echo $this->element->getElement('sp_limit_value')->getLabel() ?></span>
<?php echo $this->element->getElement('sp_limit_value')?>
Expand Down

0 comments on commit fe291cd

Please sign in to comment.