/**
  * Does the student has access?
  *
  * Checks if this is a correct demo access or if the real user has access
  * @param \_OurBrand_\Quiz\Domain\Model\StudentQuizSession $studentQuizSession
  * @return bool
  */
 protected function studentHasAccess($studentQuizSession)
 {
     if (true === $this->currentUser->IsDemoUser() && true === $studentQuizSession->getQuizSession()->getIsDemo() || $studentQuizSession->getStudent() === $this->currentUser->getIdentifier()) {
         return true;
     }
     return false;
 }
Example #2
0
 /**
  * @param \_OurBrand_\My\Domain\Model\User $user
  * @param \_OurBrand_\Quiz\Domain\Model\Quiz   $quiz
  *
  * @return bool
  */
 public function canUserEditQuiz(\_OurBrand_\My\Domain\Model\User $user, \_OurBrand_\Quiz\Domain\Model\Quiz $quiz)
 {
     if ($user->isWorker()) {
         return true;
     }
     return $user->isInstructor() && $user->getIdentifier() == $quiz->getCreator();
 }
Example #3
0
 /**
  * Return all the subjects available after filtering by a list of quiz filters
  *
  * @param string $option
  * @param array $filters
  * @param int $type
  * @param \_OurBrand_\My\Domain\Model\User $user
  * @return array
  */
 public function findFilterOptionsByFilters($option, $filters, $type, $user)
 {
     // Don't filter on the options we want
     unset($filters[$option]);
     /** @var $conn \Doctrine\DBAL\Connection * */
     $conn = $this->entityManager->getConnection();
     /** @var $queryBuilder \Doctrine\DBAL\Query\QueryBuilder * */
     $queryBuilder = $conn->createQueryBuilder();
     $queryBuilder->select($option . '.persistence_object_identifier as identifier');
     switch ($option) {
         case "examTypes":
             $queryBuilder->from('_OurBrand__quiz_domain_model_examtype', $option)->join($option, '_OurBrand__quiz_domain_model_quiz', 'quiz', 'quiz.examtype = ' . $option . '.persistence_object_identifier')->leftJoin('quiz', '_OurBrand__quiz_domain_model_quiz_levels_join', 'quiz_levels', 'quiz_levels.quiz_quiz = quiz.persistence_object_identifier')->leftJoin('quiz', '_OurBrand__quiz_domain_model_quiz_subjects_join', 'quiz_subjects', 'quiz_subjects.quiz_quiz = quiz.persistence_object_identifier')->leftJoin('quiz', '_OurBrand__quiz_domain_model_quizcategory', 'category', 'category.persistence_object_identifier = quiz.quizcategory');
             break;
         case "subjects":
             $queryBuilder->from('_OurBrand__quiz_domain_model_subject', $option)->join($option, '_OurBrand__quiz_domain_model_quiz_subjects_join', 'quiz_subjects', 'quiz_subjects.quiz_subject = ' . $option . '.persistence_object_identifier')->join('quiz_subjects', '_OurBrand__quiz_domain_model_quiz', 'quiz', 'quiz.persistence_object_identifier = quiz_subjects.quiz_quiz')->leftJoin('quiz', '_OurBrand__quiz_domain_model_quiz_levels_join', 'quiz_levels', 'quiz_levels.quiz_quiz = quiz.persistence_object_identifier')->leftJoin('quiz', '_OurBrand__quiz_domain_model_quizcategory', 'category', 'category.persistence_object_identifier = quiz.quizcategory');
             break;
         case "teamLevels":
             $queryBuilder->from('_OurBrand__quiz_domain_model_teamlevel', $option)->join($option, '_OurBrand__quiz_domain_model_quiz_levels_join', 'quiz_levels', 'quiz_levels.quiz_teamlevel = ' . $option . '.persistence_object_identifier')->join('quiz_levels', '_OurBrand__quiz_domain_model_quiz', 'quiz', 'quiz.persistence_object_identifier = quiz_levels.quiz_quiz')->leftJoin('quiz', '_OurBrand__quiz_domain_model_quiz_subjects_join', 'quiz_subjects', 'quiz_subjects.quiz_quiz = quiz.persistence_object_identifier')->leftJoin('quiz', '_OurBrand__quiz_domain_model_quizcategory', 'category', 'category.persistence_object_identifier = quiz.quizcategory');
             break;
         case "categories":
             $queryBuilder->from('_OurBrand__quiz_domain_model_quizcategory', $option)->join($option, '_OurBrand__quiz_domain_model_quiz', 'quiz', 'quiz.quizcategory = ' . $option . '.persistence_object_identifier')->leftJoin('quiz', '_OurBrand__quiz_domain_model_quiz_levels_join', 'quiz_levels', 'quiz_levels.quiz_quiz = quiz.persistence_object_identifier')->leftJoin('quiz', '_OurBrand__quiz_domain_model_quiz_subjects_join', 'quiz_subjects', 'quiz_subjects.quiz_quiz = quiz.persistence_object_identifier');
             break;
     }
     if ($user->isWorker()) {
         $expression = $queryBuilder->expr()->eq('quiz.Quiz', 1);
     } else {
         $expression = $queryBuilder->expr()->andX($queryBuilder->expr()->eq('quiz.Quiz', 1), $queryBuilder->expr()->eq('quiz.isDraft', 0));
     }
     $constraints = array();
     $constraints[] = $queryBuilder->expr()->andX($queryBuilder->expr()->orX($queryBuilder->expr()->eq('quiz.creator', '"' . $user->getIdentifier() . '"'), $expression));
     $constraints[] = $queryBuilder->expr()->andX($queryBuilder->expr()->isNull('quiz.snapshotOf'), $queryBuilder->expr()->eq('quiz.type', intval($type)), $queryBuilder->expr()->eq('quiz.isDeleted', 0));
     $expression = $queryBuilder->expr()->andX();
     foreach ($constraints as $expr) {
         $expression->add($expr);
     }
     $queryBuilder->where($expression);
     $queryBuilder = $this->applyFilters($queryBuilder, $filters);
     $queryBuilder->groupBy('identifier');
     $queryBuilder->orderBy('identifier', 'ASC');
     $data = $conn->fetchAll($queryBuilder->getSQL());
     $results = array();
     foreach ($data as $row) {
         $results[] = $row['identifier'];
     }
     return $results;
 }