/** * Deep magic goes here. * Gets a subject with some of its last messages datas. * * @param ResourceInstance $forum * * @return type */ public function findSubjects(Category $category, $getQuery = false) { $dql = "\n SELECT s.id as id,\n COUNT(m_count.id) AS count_messages,\n MAX(m.creationDate) AS last_message_created,\n s.id as subjectId,\n s.title as title,\n s.isSticked as isSticked,\n s.author as subject_author,\n subjectCreator.lastName as subject_creator_lastname,\n subjectCreator.firstName as subject_creator_firstname,\n subjectCreator.id as subject_creator_id,\n lastUser.lastName as last_message_creator_lastname,\n lastUser.firstName as last_message_creator_firstname,\n s.creationDate as subject_created,\n s.isClosed as is_closed\n FROM Claroline\\ForumBundle\\Entity\\Subject s\n JOIN s.messages m_count\n JOIN s.creator subjectCreator\n JOIN s.category category\n JOIN s.messages m\n JOIN m.creator lastUser WITH lastUser.id =\n (\n SELECT lcu.id FROM Claroline\\ForumBundle\\Entity\\Message m2\n JOIN m2.subject s2\n JOIN m2.creator lcu\n JOIN s2.category c2\n WHERE NOT EXISTS\n (\n SELECT m3 FROM Claroline\\ForumBundle\\Entity\\Message m3\n JOIN m3.subject s3\n WHERE s2.id = s3.id\n AND m2.id < m3.id\n )\n and c2.id = :categoryId\n and m2.id = m.id\n )\n WHERE category.id = :categoryId\n GROUP BY s.id, subjectCreator.lastName, subjectCreator.firstName, lastUser.lastName, lastUser.firstName\n ORDER BY isSticked DESC, last_message_created DESC\n "; $query = $this->_em->createQuery($dql); $query->setParameter('categoryId', $category->getId()); return $getQuery ? $query : $query->getResult(); }
/** * @param \Claroline\ForumBundle\Entity\Category $category */ public function __construct(Category $category) { $details = array('category' => array('id' => $category->getId()), 'forum' => array('id' => $category->getForum()->getId())); parent::__construct($category->getForum()->getResourceNode(), $details); }
/** * @param \Claroline\ForumBundle\Entity\Category $category * @param string $oldName * @param string $newName */ public function __construct(Category $category, $oldName, $newName) { $details = array('category' => array('id' => $category->getId()), 'forum' => array('id' => $category->getForum()->getId()), 'oldName' => $oldName, 'newName' => $newName); parent::__construct($category->getForum()->getResourceNode(), $details); }
/** * @param \Claroline\ForumBundle\Entity\Subject $subject * @param \Claroline\ForumBundle\Entity\Category $oldCategory * @param \Claroline\ForumBundle\Entity\Category $newCategory */ public function __construct(Subject $subject, Category $oldCategory, Category $newCategory) { $details = array('subject' => array('id' => $subject->getId()), 'category' => array('oldCategoryId' => $oldCategory->getId(), 'newCategoryId' => $newCategory->getId()), 'forum' => array('id' => $subject->getCategory()->getForum()->getId())); parent::__construct($subject->getCategory()->getForum()->getResourceNode(), $details); }