Passed
Push — master ( cbbc27...86f200 )
by Dev
11:12
created

PageRepository::findOneBySlug()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 20
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
cc 3
eloc 13
nc 4
nop 2
dl 0
loc 20
ccs 0
cts 17
cp 0
crap 12
rs 9.8333
c 0
b 0
f 0
1
<?php
2
3
namespace PiedWeb\CMSBundle\Repository;
4
5
use PiedWeb\CMSBundle\Entity\PageInterface as Page;
6
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
7
use Doctrine\ORM\Query;
8
9
/**
10
 * @method Page|null find($id, $lockMode = null, $lockVersion = null)
11
 * @method Page|null findOneBy(array $criteria, array $orderBy = null)
12
 * @method Page[]    findAll()
13
 * @method Page[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
14
 */
15
class PageRepository extends ServiceEntityRepository
16
{
17
    public function getQueryToFindPublished($p)
18
    {
19
        return $this->createQueryBuilder($p)
20
            ->andWhere($p.'.createdAt <=  :nwo')
21
            ->setParameter('nwo', new \DateTime())
22
            ->orderBy($p.'.createdAt', 'DESC')
23
        ;
24
    }
25
26
    public function findOneBySlug($slug, $language = null)
27
    {
28
        $q = $this->createQueryBuilder('p')
29
            ->andWhere('p.slug = :val')
30
            ->setParameter('val', $slug)
31
            ->setMaxResults(1)
32
            ->getQuery()
33
            ->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, 'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker')
34
            ->setHint(
35
                \Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE,
36
                'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker'
37
            );
38
        if (null !== $language) {
39
            $q->setHint(\Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE, $language);
40
        }
41
42
        //var_dump($q->getSql()); exit;
43
        $result = $q->getResult();
44
45
        return isset($result[0]) ? $result[0] : null;
46
    }
47
48
    public function getPagesWithoutParent()
49
    {
50
        $q = $this->createQueryBuilder('p')
51
            ->andWhere('p.parentPage is NULL')
52
            ->orderBy('p.slug', 'DESC')
53
            ->getQuery()
54
        ;
55
56
        return $q->getResult();
57
    }
58
}
59