/** * @param SS_HTTPRequest $r * @return SS_HTTPRequest */ public function handlePresentations(SS_HTTPRequest $r) { $presentations = []; $offset = $r->getVar('offset') ?: 0; $m = Member::currentUser(); $list = $m ? $m->getRandomisedPresentations(null, $this->summit) : $this->summit->VoteablePresentations(); if ($list) { if ($r->getVar('category')) { $list = $list->filter(['CategoryID' => $r->getVar('category')]); } if ($r->getVar('search')) { $list = Presentation::apply_search_query($list, $r->getVar('search')); } $total = $list->count(); $list = $list->limit($this->limit, $offset); } else { $list = []; $total = 0; } foreach ($list as $p) { $vote = $p->getUserVote(); $presentations[] = ['id' => $p->ID, 'title' => $p->Title, 'user_vote' => $vote ? $vote->Vote : null]; } $result = ['presentations' => $presentations, 'total' => $total]; return (new SS_HTTPResponse(Convert::array2json($result), 200))->addHeader('Content-Type', 'application/json'); }