protected function getPaginatorAndQuestion($request, $conditions, $course, $lesson) { if (!isset($conditions['target']) || empty($conditions['target'])) { unset($conditions['target']); $conditions['targetPrefix'] = "course-{$course['id']}"; } if (!empty($conditions['keyword'])) { $conditions['stem'] = $conditions['keyword']; } $conditions['parentId'] = 0; $conditions['types'] = array('determine', 'single_choice', 'uncertain_choice', 'fill', "choice"); $orderBy = array('createdTime', 'DESC'); $paginator = new Paginator($request, $this->getQuestionService()->searchQuestionsCount($conditions), 5); $paginator->setPageRange(4); $questions = $this->getQuestionService()->searchQuestions($conditions, $orderBy, $paginator->getOffsetCount(), $paginator->getPerPageCount()); $markerIds = ArrayToolkit::column($this->getMarkerService()->findMarkersByMediaId($lesson['mediaId']), 'id'); $questionMarkerIds = ArrayToolkit::column($this->getQuestionMarkerService()->findQuestionMarkersByMarkerIds($markerIds), 'questionId'); foreach ($questions as $key => $question) { $questions[$key]['exist'] = in_array($question['id'], $questionMarkerIds) ? true : false; } return array($paginator, $questions); }