diff --git a/airtime_mvc/application/controllers/ListenerstatController.php b/airtime_mvc/application/controllers/ListenerstatController.php index 97516e815..6a74e4b43 100644 --- a/airtime_mvc/application/controllers/ListenerstatController.php +++ b/airtime_mvc/application/controllers/ListenerstatController.php @@ -73,4 +73,11 @@ class ListenerstatController extends Zend_Controller_Action $endsDT->format(DEFAULT_TIMESTAMP_FORMAT),$show_id); $this->_helper->json->sendJson($data); } + public function getAllShowDataAction(){ + list($startsDT, $endsDT) = Application_Common_HTTPHelper::getStartEndFromRequest($this->getRequest()); + $show_id = $this->getRequest()->getParam("show_id", null); + $data = Application_Model_ListenerStat::getAllShowDataPointsWithinRange($startsDT->format(DEFAULT_TIMESTAMP_FORMAT), + $endsDT->format(DEFAULT_TIMESTAMP_FORMAT),$show_id); + $this->_helper->json->sendJson($data); + } } diff --git a/airtime_mvc/application/models/ListenerStat.php b/airtime_mvc/application/models/ListenerStat.php index b4e037697..eec14c57d 100644 --- a/airtime_mvc/application/models/ListenerStat.php +++ b/airtime_mvc/application/models/ListenerStat.php @@ -113,6 +113,27 @@ SQL; } return($showData); } + public static function getAllShowDataPointsWithinRange($p_start, $p_end) { + // this query selects the id of all show instances that aired in this date range + $all_show_data = []; + $sql = <<=:p1 AND ends <=:p2 +GROUP BY show_id +SQL; + $data = Application_Common_Database::prepareAndExecute($sql, + array('p1'=>$p_start, 'p2'=>$p_end)); + + foreach($data as $show_id) { + $all_show_data = array_merge(self::getShowDataPointsWithinRange($p_start,$p_end,$show_id['show_id']), $all_show_data); + } + /* option to sort by number of listeners currently commented out + usort($all_show_data, function($a, $b) { + return $a['average_number_of_listeners'] - $b['average_number_of_listeners']; + }); + */ + return $all_show_data; + } public static function insertDataPoints($p_dataPoints) {