Example #1
0
 /**
  * 获取节目单HTML字符串
  *
  * @param string $keyword
  * @return string
  */
 private function getProgramsArchiveHtml($keyword = '')
 {
     // query program list, and sort by date
     $programs = Program::with('participants')->enabled()->orderBy('date', 'desc')->get();
     // search
     if ($keyword) {
         $keywords = array_filter(explode(' ', $keyword));
         foreach ($keywords as $keyword) {
             $participantIds = Participant::searched($keyword)->lists('id');
             $programIds = ProgramParticipant::whereIn('participant_id', $participantIds)->lists('program_id')->flip()->toArray();
             foreach ($programs as $i => $program) {
                 if (false === strpos(strtolower($program->topic), $keyword) and empty($programIds[$program->id])) {
                     unset($programs[$i]);
                 }
             }
         }
     }
     // collect
     $list = [];
     foreach ($programs as $program) {
         $list[$program->dates->year][$program->dates->month][] = $program;
     }
     // render page
     return (string) View::make('program.index.archive')->with('list', $list);
 }