public function exportVideoReport(SS_HTTPRequest $request)
 {
     try {
         $query_string = $request->getVars();
         $venues = isset($query_string['venues']) ? $query_string['venues'] : '';
         $tracks = isset($query_string['tracks']) ? html_entity_decode($query_string['tracks']) : 'all';
         $start_date = isset($query_string['start_date']) && $query_string['start_date'] ? date('Y-m-d', strtotime($query_string['start_date'])) : '';
         $end_date = isset($query_string['end_date']) && $query_string['end_date'] ? date('Y-m-d', strtotime($query_string['end_date'])) : '';
         $search_term = isset($query_string['term']) ? $query_string['term'] : '';
         $summit_id = intval($request->param('SUMMIT_ID'));
         $summit = $this->summit_repository->getById($summit_id);
         if (is_null($summit)) {
             throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id));
         }
         $filename = "video_report-" . date('Ymd') . ".xlsx";
         $objPHPExcel = new PHPExcel();
         $objPHPExcel->getProperties()->setCreator("OpenStack");
         $objPHPExcel->getProperties()->setTitle("Video Output List");
         // day sheets
         $days = $summit->getDates();
         foreach ($days as $day) {
             $active_sheet = $objPHPExcel->createSheet();
             $active_sheet->setTitle(date('n-d', strtotime($day->Date)));
             $active_sheet->fromArray(array('Date', 'Time', 'Tags', 'Event', 'Description', 'Room', 'Venue', 'Display', 'YoutubeID'), NULL, 'A1');
             $day_report = $this->presentation_repository->getPresentationMaterialBySummitAndDay($summit_id, $day->Date, $tracks, $venues, $start_date, $end_date, $search_term);
             foreach ($day_report as $key2 => $val) {
                 $row = $key2 + 2;
                 $start_time = $summit->convertDateFromUTC2TimeZone($val['start_date'], 'g:ia');
                 $end_time = $summit->convertDateFromUTC2TimeZone($val['end_date'], 'g:ia');
                 $date = $summit->convertDateFromUTC2TimeZone($val['start_date'], 'm/d/Y');
                 $time = $start_time . ' - ' . $end_time;
                 unset($val['start_date']);
                 unset($val['end_date']);
                 unset($val['id']);
                 $val['date'] = $date;
                 $val['time'] = $time;
                 $val['tags'] .= ',' . $val['speakers'] . ',OpenStack Summit Austin';
                 unset($val['speakers']);
                 $active_sheet->fromArray($val, NULL, 'A' . $row);
             }
         }
         $objPHPExcel->removeSheetByIndex(0);
         $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
         header('Content-type: application/vnd.ms-excel');
         header('Content-Disposition: attachment; filename="' . $filename . '"');
         $objWriter->save('php://output');
         return;
     } catch (NotFoundEntityException $ex2) {
         SS_Log::log($ex2->getMessage(), SS_Log::WARN);
         return $this->notFound($ex2->getMessage());
     } catch (Exception $ex) {
         SS_Log::log($ex->getMessage(), SS_Log::ERR);
         return $this->serverError();
     }
 }
 public function getVideoReport(SS_HTTPRequest $request)
 {
     try {
         $summit_id = intval($request->param('SUMMIT_ID'));
         $summit = $this->summit_repository->getById($summit_id);
         $query_string = $request->getVars();
         $report = $this->report_repository->getByName('video_report');
         $tracks = '';
         if (isset($query_string['tracks']) && $query_string['tracks'] != '') {
             $tracks = html_entity_decode($query_string['tracks']);
         } else {
             if ($report) {
                 $tracks = $report->getConfigByName('Tracks');
             }
         }
         $venues = isset($query_string['venues']) ? $query_string['venues'] : '';
         $start_date = isset($query_string['start_date']) && $query_string['start_date'] ? date('Y-m-d', strtotime($query_string['start_date'])) : '';
         $end_date = isset($query_string['end_date']) && $query_string['end_date'] ? date('Y-m-d', strtotime($query_string['end_date'])) : '';
         $search_term = isset($query_string['search_term']) ? $query_string['search_term'] : '';
         if (is_null($summit)) {
             throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id));
         }
         $days = $summit->getDates();
         $report_array = array();
         foreach ($days as $day) {
             $day_report = $this->presentation_repository->getPresentationMaterialBySummitAndDay($summit_id, $day->Date, $tracks, $venues, $start_date, $end_date, $search_term);
             $report_array[$day->Label] = array();
             foreach ($day_report as $videos) {
                 $report_array[$day->Label][] = array('id' => intVal($videos['id']), 'date' => $summit->convertDateFromUTC2TimeZone($videos['start_date'], 'm/d/Y'), 'start_time' => $summit->convertDateFromUTC2TimeZone($videos['start_date'], 'g:ia'), 'end_time' => $summit->convertDateFromUTC2TimeZone($videos['end_date'], 'g:ia'), 'tags' => $videos['tags'] . ',' . $videos['speakers'] . ',OpenStack Summit Austin', 'title' => $videos['event'], 'description' => $videos['description'], 'room' => $videos['room'], 'venue' => $videos['venue'], 'display' => intval($videos['display']), 'youtube' => $videos['youtube_id']);
             }
         }
         $return_array['tracks'] = $tracks ? explode(',', $tracks) : '';
         $return_array['report'] = $report_array;
         return $this->ok($return_array);
     } catch (NotFoundEntityException $ex2) {
         SS_Log::log($ex2->getMessage(), SS_Log::WARN);
         return $this->notFound($ex2->getMessage());
     } catch (Exception $ex) {
         SS_Log::log($ex->getMessage(), SS_Log::ERR);
         return $this->serverError();
     }
 }