public function getInfoFromParams($params = array()) { $filters = Filter::getQueryFilters($params); $sort = Filter::getQuerySort($params); $pageNo = Filter::getPage($params); $sortField = ''; $sortClass = ''; if (isset($params['sort'])) { $sortDetails = Filter::getSortFieldAndDirection($params['sort']); $sortField = $sortDetails['field']; $sortClass = Filter::getSortClass($sortDetails['direction']); } return compact('filters', 'sort', 'pageNo', 'sortField', 'sortClass'); }
/** * Random * @param Request $request */ public function randomAction(Request $request) { $em = $this->getDoctrine()->getManager(); $finder = $this->container->get('course_finder'); $query = $em->createQueryBuilder(); // Find the top 250 courses. $sort = array(); $sort[] = array('ratingSort' => array('order' => 'desc')); $filters = array('session' => 'upcoming,selfpaced,recent'); $results = $finder->byLanguage('english', Filter::getQueryFilters($filters), $sort, -1); $courseIds = array(); // Capture the top 250 foreach ($results['hits']['hits'] as $course) { $courseIds[] = $course['_source']['id']; } $id = rand(0, 250); $course = $em->getRepository('ClassCentralSiteBundle:Course')->find($courseIds[$id]); if ($course && $course->getStatus() == CourseStatus::AVAILABLE) { return $this->redirect($this->generateUrl('ClassCentralSiteBundle_mooc', array('id' => $courseIds[$id], 'slug' => $course->getSlug()))); } else { return $this->randomAction($request); } }