/** * @param Course $course * @return Course */ public function addToolsInCourse(Course $course) { $tools = $this->getTools(); /** @var BaseTool $tool */ foreach ($tools as $tool) { $toolEntity = new CTool(); $toolEntity->setCId($course->getId())->setImage($tool->getImage())->setName($tool->getName())->setVisibility(1)->setLink($tool->getLink())->setTarget($tool->getTarget())->setCategory($tool->getCategory()); $course->addTools($toolEntity); } return $course; }
/** * Get the last acquired skill by a user on course and/or session * @param User $user The user * @param Course $course The course * @param Session $session The session * @return Skill */ public function getLastByUser(User $user, Course $course = null, Session $session = null) { $qb = $this->createQueryBuilder('s'); $qb->innerJoin('ChamiloCoreBundle:SkillRelUser', 'su', Join::WITH, $qb->expr()->eq('s', 'su.skill'))->where($qb->expr()->eq('su.user', $user->getId())); if ($course) { $qb->andWhere($qb->expr()->eq('su.course', $course->getId())); } if ($session) { $qb->andWhere($qb->expr()->eq('su.session', $session->getId())); } $qb->setMaxResults(1)->orderBy('su.id', 'DESC'); return $qb->getQuery()->getOneOrNullResult(); }
/** * Get all users that are registered in the course. No matter the status * * @param Course $course * * @return \Doctrine\ORM\QueryBuilder */ public function getSubscribedUsers(Course $course) { $queryBuilder = $this->createQueryBuilder('a'); // Selecting user info. $queryBuilder->select('DISTINCT u'); // Loading EntityUser. $queryBuilder->from('Chamilo\\UserBundle\\Entity\\User', 'u'); // Selecting courses for users. $queryBuilder->innerJoin('u.courses', 'c'); //@todo check app settings $queryBuilder->add('orderBy', 'u.lastname ASC'); $wherePart = $queryBuilder->expr()->andx(); // Get only users subscribed to this course $wherePart->add($queryBuilder->expr()->eq('c.cId', $course->getId())); // $wherePart->add($queryBuilder->expr()->eq('c.status', $status)); $queryBuilder->where($wherePart); //$q = $queryBuilder->getQuery(); //return $q->execute(); return $queryBuilder; }
/** * Get all users that are registered in the course. No matter the status * * @param Course $course * * @return \Doctrine\ORM\QueryBuilder */ public function getSubscribedUsers(Course $course) { // Course builder $queryBuilder = $this->createQueryBuilder('c'); // Selecting user info. $queryBuilder->select('DISTINCT user'); // Selecting courses for users. $queryBuilder->innerJoin('c.users', 'subscriptions'); $queryBuilder->innerJoin('ChamiloUserBundle:User', 'user', Join::WITH, 'subscriptions.user = user.id'); if (api_is_western_name_order()) { $queryBuilder->add('orderBy', 'user.firstname ASC'); } else { $queryBuilder->add('orderBy', 'user.lastname ASC'); } $wherePart = $queryBuilder->expr()->andx(); // Get only users subscribed to this course $wherePart->add($queryBuilder->expr()->eq('c.id', $course->getId())); // $wherePart->add($queryBuilder->expr()->eq('c.status', $status)); $queryBuilder->where($wherePart); //var_dump($queryBuilder->getQuery()->getSQL()); //$q = $queryBuilder->getQuery(); //return $q->execute(); return $queryBuilder; }
/** * Get the coaches for a course within a session * @param Session $session The session * @param Course $course The course * @return \Doctrine\ORM\QueryBuilder */ public function getCoachesForSessionCourse(Session $session, Course $course) { $queryBuilder = $this->createQueryBuilder('u'); $queryBuilder->select('u')->innerJoin('ChamiloCoreBundle:SessionRelCourseRelUser', 'scu', Join::WITH, 'scu.user = u')->where($queryBuilder->expr()->andX($queryBuilder->expr()->eq('scu.session', $session->getId()), $queryBuilder->expr()->eq('scu.course', $course->getId()), $queryBuilder->expr()->eq('scu.status', SessionRelCourseRelUser::STATUS_COURSE_COACH))); return $queryBuilder->getQuery()->getResult(); }
/** * @param Course $course * @return $this */ public function setCurrentCourse(Course $course) { // If the session is registered in the course session list. if ($this->getCourses()->contains($course->getId())) { $this->currentCourse = $course; } return $this; }
/** * Convert the course info to array with necessary course data for save item * @param \Chamilo\CoreBundle\Entity\Course $course * @param array $defaultCurrency Optional. Currency data * @return array */ public function getCourseForConfiguration(\Chamilo\CoreBundle\Entity\Course $course, $defaultCurrency = null) { $courseItem = ['item_id' => null, 'course_id' => $course->getId(), 'course_visual_code' => $course->getVisualCode(), 'course_code' => $course->getCode(), 'course_title' => $course->getTitle(), 'course_visibility' => $course->getVisibility(), 'visible' => false, 'currency' => empty($defaultCurrency) ? null : $defaultCurrency['iso_code'], 'price' => 0.0]; $item = $this->getItemByProduct($course->getId(), self::PRODUCT_TYPE_COURSE); if ($item !== false) { $courseItem['item_id'] = $item['id']; $courseItem['visible'] = true; $courseItem['currency'] = $item['iso_code']; $courseItem['price'] = $item['price']; } return $courseItem; }
/** * Get the course template for a user * @param Course $course * @param User $user * @return ArrayCollection */ public function getCourseTemplates(Course $course, User $user) { $qb = $this->createQueryBuilder('t'); $qb->select('t', 'd.path')->innerJoin('ChamiloCoreBundle:Course', 'c', Join::WITH, $qb->expr()->eq('t.courseCode', 'c.code'))->innerJoin('ChamiloCourseBundle:CDocument', 'd', Join::WITH, $qb->expr()->eq('c.id', 'd.cId'))->where($qb->expr()->eq('d.iid', 't.refDoc'))->andWhere($qb->expr()->eq('c.id', $course->getId()))->andWhere($qb->expr()->eq('t.userId', $user->getId())); return $qb->getQuery()->getResult(); }