Test Setup Failed
Pull Request — master (#9)
by
unknown
12:26
created

Breadcrumbs::getGrandParentForPage()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 10
rs 10
1
<?php declare(strict_types = 1);
2
3
namespace Thinktomorrow\ChiefSitestructure\Breadcrumbs;
4
5
use Vine\NodeCollection;
6
use Thinktomorrow\Chief\Pages\Page;
7
use Thinktomorrow\ChiefSitestructure\SiteStructure;
8
9
class Breadcrumbs
10
{
11
    public static function getFor(string $flatreference)
12
    {
13
        return app(SiteStructure::class)->getForReference($flatreference);
14
    }
15
16
    public static function getForPage(Page $page)
17
    {
18
        return collect(static::getFor($page->flatreference()->get())->flatten()->all())->reject(function ($node) {
19
            return !$node->online;
20
        });
21
    }
22
23
    public static function getGrandParentForPage(Page $page)
24
    {
25
        /** @var NodeCollection $tree */
26
        $tree = static::getFor($page->flatreference()->get());
27
28
        if ($tree->first()) {
29
            return $tree->first()->reference;
30
        }
31
32
        return null;
33
    }
34
35
    public static function getParentForPage(Page $page)
36
    {
37
        /** @var NodeCollection $tree */
38
        $tree = static::getFor($page->flatreference()->get());
39
40
        $page = $tree->find('reference', $page->flatreference()->get());
41
42
        if(($page) && $parent = $page->parent()) {
43
            return $parent->reference;
44
        }
45
46
        return null;
47
    }
48
}
49