From c2ad5e387a75ac0d4c7527dd640cb6999012dca7 Mon Sep 17 00:00:00 2001 From: Robbt Date: Wed, 8 May 2019 18:01:06 -0400 Subject: [PATCH 1/3] added sort by last play time but does not work with unplayed tracks --- .../application/forms/SmartBlockCriteria.php | 4 +++- airtime_mvc/application/models/Block.php | 18 ++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/airtime_mvc/application/forms/SmartBlockCriteria.php b/airtime_mvc/application/forms/SmartBlockCriteria.php index 135414fc6..e539c551c 100644 --- a/airtime_mvc/application/forms/SmartBlockCriteria.php +++ b/airtime_mvc/application/forms/SmartBlockCriteria.php @@ -171,7 +171,9 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm $this->sortOptions = array( "random" => _("Randomly"), "newest" => _("Newest"), - "oldest" => _("Oldest") + "oldest" => _("Oldest"), + "mostrecentplay" => ("Most recently played"), + "leastrecentplay" => ("Least recently played") ); } return $this->sortOptions; diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index cfdfba417..7ecea0b57 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -1202,7 +1202,6 @@ SQL; // that might contradict itself we group them based upon their original position on the form $criteriaGroup = $i; foreach ($p_criteriaData['criteria'][$critKeys[$i]] as $d) { - Logging::info($d); $field = $d['sp_criteria_field']; $value = $d['sp_criteria_value']; $modifier = $d['sp_criteria_modifier']; @@ -1586,7 +1585,6 @@ SQL; $storedCrit = array(); foreach ($out as $crit) { - Logging::info($crit); $criteria = $crit->getDbCriteria(); $modifier = $crit->getDbModifier(); $value = $crit->getDbValue(); @@ -1614,8 +1612,6 @@ SQL; "display_modifier"=>$modifierOptions[$modifier]); } } - - Logging::info($storedCrit); return $storedCrit; } @@ -1730,14 +1726,9 @@ SQL; if ($spCriteria == "owner_id") { $spCriteria = "subj.login"; } - Logging::info($i); - Logging::info($group); - Logging::info($prevgroup); if ($i > 0 && $prevgroup == $group) { - Logging::info('adding or'); $qry->addOr($spCriteria, $spCriteriaValue, $spCriteriaModifier); } else { - Logging::info('adding and'); $qry->addAnd($spCriteria, $spCriteriaValue, $spCriteriaModifier); } // only add this NOT LIKE null if you aren't also matching on another criteria @@ -1758,6 +1749,8 @@ SQL; // check if file exists $qry->add("file_exists", "true", Criteria::EQUAL); $qry->add("hidden", "false", Criteria::EQUAL); + + //$qry->addAsColumn('lptime','COALESCE("lptime",\'1970-01-01\')'); $sortTracks = 'random'; if (isset($storedCrit['sort'])) { $sortTracks = $storedCrit['sort']['value']; @@ -1768,6 +1761,12 @@ SQL; else if ($sortTracks == 'oldest') { $qry->addAscendingOrderByColumn('utime'); } + else if ($sortTracks == 'mostrecentplay') { + $qry->addDescendingOrderByColumn('lptime'); + } + else if ($sortTracks == 'leastrecentplay') { + $qry->addAscendingOrderByColumn('lptime'); + } else if ($sortTracks == 'random') { $qry->addAscendingOrderByColumn('random()'); } else { @@ -1812,7 +1811,6 @@ SQL; try { $out = $qry->setFormatter(ModelCriteria::FORMAT_ON_DEMAND)->find(); - return array("files"=>$out, "limit"=>$limits, "repeat_tracks"=> $repeatTracks, "overflow_tracks"=> $overflowTracks, "count"=>$out->count()); } catch (Exception $e) { Logging::info($e); From 1735cfc5b466b91c49003e585c7f73ee47563fc3 Mon Sep 17 00:00:00 2001 From: Robbt Date: Wed, 8 May 2019 18:18:36 -0400 Subject: [PATCH 2/3] Fixed the null sort to work like we want --- airtime_mvc/application/models/Block.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index 7ecea0b57..a6e486746 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -1762,10 +1762,10 @@ SQL; $qry->addAscendingOrderByColumn('utime'); } else if ($sortTracks == 'mostrecentplay') { - $qry->addDescendingOrderByColumn('lptime'); + $qry->addDescendingOrderByColumn('(lptime IS NULL), lptime'); } else if ($sortTracks == 'leastrecentplay') { - $qry->addAscendingOrderByColumn('lptime'); + $qry->addAscendingOrderByColumn('(lptime IS NOT NULL), lptime'); } else if ($sortTracks == 'random') { $qry->addAscendingOrderByColumn('random()'); From 4db93d3cee136435b4c12dfa4ec623e206a3876b Mon Sep 17 00:00:00 2001 From: Robbt Date: Thu, 9 May 2019 10:46:39 -0400 Subject: [PATCH 3/3] remove commented out code and add comment about sort null addition --- airtime_mvc/application/models/Block.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index a6e486746..f40945742 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -1750,7 +1750,6 @@ SQL; $qry->add("file_exists", "true", Criteria::EQUAL); $qry->add("hidden", "false", Criteria::EQUAL); - //$qry->addAsColumn('lptime','COALESCE("lptime",\'1970-01-01\')'); $sortTracks = 'random'; if (isset($storedCrit['sort'])) { $sortTracks = $storedCrit['sort']['value']; @@ -1761,6 +1760,7 @@ SQL; else if ($sortTracks == 'oldest') { $qry->addAscendingOrderByColumn('utime'); } + // these sort additions are needed to override the default postgres NULL sort behavior else if ($sortTracks == 'mostrecentplay') { $qry->addDescendingOrderByColumn('(lptime IS NULL), lptime'); }