public function articles(Playlist $playlist, array $languages = array(), $fullArticle = false, $limit = null, $offset = null, $publishedOnly = true, $onlyQuery = false, $orderBy = 'order', $orderDir = 'ASC')
{
$em = $this->getEntityManager();
$query = $em->createQueryBuilder();
if (!$fullArticle) {
$query->select('a.number articleId, l.id languageId, a.name title, a.updated date, a.workflowStatus workflowStatus, a.type type');
} else {
$query->select('p, a');
}
$query->from('Newscoop\\Entity\\PlaylistArticle', 'p')->join('p.article', 'a')->join('a.language', 'l')->where('p.playlist = ?1');
if ($publishedOnly) {
$query->andWhere('a.workflowStatus = \'Y\'');
}
$query->setParameter(1, $playlist);
if (!empty($languages)) {
$query->andWhere('l.code IN(?2)')->setParameter(2, $languages);
} else {
$query->groupBy('p.articleNumber, p.articleLanguage');
}
if (!is_null($limit)) {
$query->setMaxResults($limit);
}
if (!is_null($offset)) {
$query->setFirstResult($offset);
}
$query->orderBy("p.{$orderBy}", $orderDir);
if ($onlyQuery) {
$countQueryBuilder = $em->createQueryBuilder();
$countQueryBuilder->select('count(p)')->from('Newscoop\\Entity\\PlaylistArticle', 'p')->where('p.playlist = ?1')->setParameter(1, $playlist);
$count = $countQueryBuilder->getQuery()->getSingleScalarResult();
$query = $query->getQuery();
$query->setHint('knp_paginator.count', $count);
return $query;
}
$rows = $query->getQuery()->getArrayResult();
return $rows;
}