xref: /template/strap/ComboStrap/References.php (revision c3437056399326d621a01da73b649707fbb0ae69)
1*c3437056SNickeau<?php
2*c3437056SNickeau
3*c3437056SNickeau
4*c3437056SNickeaunamespace ComboStrap;
5*c3437056SNickeau
6*c3437056SNickeau
7*c3437056SNickeauclass References extends MetadataTabular
8*c3437056SNickeau{
9*c3437056SNickeau
10*c3437056SNickeau
11*c3437056SNickeau    public static function createFromResource(Page $page)
12*c3437056SNickeau    {
13*c3437056SNickeau        return (new References())
14*c3437056SNickeau            ->setResource($page);
15*c3437056SNickeau    }
16*c3437056SNickeau
17*c3437056SNickeau    public function getDescription(): string
18*c3437056SNickeau    {
19*c3437056SNickeau        return "The link of the page that references another resources";
20*c3437056SNickeau    }
21*c3437056SNickeau
22*c3437056SNickeau    public function getLabel(): string
23*c3437056SNickeau    {
24*c3437056SNickeau        return "References";
25*c3437056SNickeau    }
26*c3437056SNickeau
27*c3437056SNickeau    public static function getName(): string
28*c3437056SNickeau    {
29*c3437056SNickeau        return "references";
30*c3437056SNickeau    }
31*c3437056SNickeau
32*c3437056SNickeau    public function getPersistenceType(): string
33*c3437056SNickeau    {
34*c3437056SNickeau        return Metadata::DERIVED_METADATA;
35*c3437056SNickeau    }
36*c3437056SNickeau
37*c3437056SNickeau    public function getMutable(): bool
38*c3437056SNickeau    {
39*c3437056SNickeau        return false;
40*c3437056SNickeau    }
41*c3437056SNickeau
42*c3437056SNickeau    public function getDefaultValue()
43*c3437056SNickeau    {
44*c3437056SNickeau        return null;
45*c3437056SNickeau    }
46*c3437056SNickeau
47*c3437056SNickeau    public function getUidClass(): ?string
48*c3437056SNickeau    {
49*c3437056SNickeau        return Reference::class;
50*c3437056SNickeau    }
51*c3437056SNickeau
52*c3437056SNickeau    public function getChildrenClass(): ?array
53*c3437056SNickeau    {
54*c3437056SNickeau        return [Reference::class];
55*c3437056SNickeau    }
56*c3437056SNickeau
57*c3437056SNickeau    public function buildFromReadStore(): References
58*c3437056SNickeau    {
59*c3437056SNickeau        $metadataStore = $this->getReadStore();
60*c3437056SNickeau        if ($metadataStore === null) {
61*c3437056SNickeau            LogUtility::msg("The metadata store is unknown. You need to define a resource or a store to build from it");
62*c3437056SNickeau            return $this;
63*c3437056SNickeau        }
64*c3437056SNickeau        if ($metadataStore instanceof MetadataDokuWikiStore) {
65*c3437056SNickeau
66*c3437056SNickeau            $relation = $metadataStore->getCurrentFromName("relation");
67*c3437056SNickeau            if ($relation !== null) {
68*c3437056SNickeau
69*c3437056SNickeau                $this->wasBuild = true;
70*c3437056SNickeau                $referencesArray = $relation["references"];
71*c3437056SNickeau                if($referencesArray!==null) {
72*c3437056SNickeau                    $references = array_keys($referencesArray);
73*c3437056SNickeau                }
74*c3437056SNickeau                $this->buildFromStoreValue($references);
75*c3437056SNickeau                return $this;
76*c3437056SNickeau
77*c3437056SNickeau            }
78*c3437056SNickeau
79*c3437056SNickeau        }
80*c3437056SNickeau
81*c3437056SNickeau        return parent::buildFromReadStore();
82*c3437056SNickeau    }
83*c3437056SNickeau
84*c3437056SNickeau
85*c3437056SNickeau}
86