Newscoop\Entity\Repository\PlaylistRepository::articles PHP Method

articles() public method

Returns articles for a given playlist.
public articles ( Playlist $playlist, array $languages = [], boolean $fullArticle = false, integer $limit = null, integer $offset = null, boolean $publishedOnly = true, $onlyQuery = false, $orderBy = 'order', $orderDir = 'ASC' )
$playlist Newscoop\Entity\Playlist
$languages array
$fullArticle boolean
$limit integer
$offset integer
$publishedOnly boolean
    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;
    }