xref: /template/strap/ComboStrap/Locale.php (revision c3437056399326d621a01da73b649707fbb0ae69)
1*c3437056SNickeau<?php
2*c3437056SNickeau
3*c3437056SNickeau
4*c3437056SNickeaunamespace ComboStrap;
5*c3437056SNickeau
6*c3437056SNickeau
7*c3437056SNickeauclass Locale extends MetadataText
8*c3437056SNickeau{
9*c3437056SNickeau
10*c3437056SNickeau    const PROPERTY_NAME = "locale";
11*c3437056SNickeau
12*c3437056SNickeau    public static function createForPage(Page $page)
13*c3437056SNickeau    {
14*c3437056SNickeau        return (new Locale())
15*c3437056SNickeau            ->setResource($page);
16*c3437056SNickeau    }
17*c3437056SNickeau
18*c3437056SNickeau    public function getTab(): string
19*c3437056SNickeau    {
20*c3437056SNickeau        return MetaManagerForm::TAB_LANGUAGE_VALUE;
21*c3437056SNickeau    }
22*c3437056SNickeau
23*c3437056SNickeau    public function getDescription(): string
24*c3437056SNickeau    {
25*c3437056SNickeau        return "The locale define the language and the formatting of numbers and time for the page. It's generated from the language and region metadata.";
26*c3437056SNickeau    }
27*c3437056SNickeau
28*c3437056SNickeau    public function getLabel(): string
29*c3437056SNickeau    {
30*c3437056SNickeau        return "Locale";
31*c3437056SNickeau    }
32*c3437056SNickeau
33*c3437056SNickeau    public function getValue(): ?string
34*c3437056SNickeau    {
35*c3437056SNickeau
36*c3437056SNickeau        $resourceCombo = $this->getResource();
37*c3437056SNickeau        if (!($resourceCombo instanceof Page)) {
38*c3437056SNickeau            return null;
39*c3437056SNickeau        }
40*c3437056SNickeau        $lang = $resourceCombo->getLangOrDefault();
41*c3437056SNickeau        if (!empty($lang)) {
42*c3437056SNickeau
43*c3437056SNickeau            $country = $resourceCombo->getRegionOrDefault();
44*c3437056SNickeau            if (empty($country)) {
45*c3437056SNickeau                $country = $lang;
46*c3437056SNickeau            }
47*c3437056SNickeau            return $lang . "_" . strtoupper($country);
48*c3437056SNickeau        }
49*c3437056SNickeau        return null;
50*c3437056SNickeau    }
51*c3437056SNickeau
52*c3437056SNickeau
53*c3437056SNickeau    public static function getName(): string
54*c3437056SNickeau    {
55*c3437056SNickeau        return self::PROPERTY_NAME;
56*c3437056SNickeau    }
57*c3437056SNickeau
58*c3437056SNickeau    public function getPersistenceType(): string
59*c3437056SNickeau    {
60*c3437056SNickeau        return Metadata::DERIVED_METADATA;
61*c3437056SNickeau    }
62*c3437056SNickeau
63*c3437056SNickeau    public function getMutable(): bool
64*c3437056SNickeau    {
65*c3437056SNickeau        return false;
66*c3437056SNickeau    }
67*c3437056SNickeau
68*c3437056SNickeau    public function getDefaultValue(): ?string
69*c3437056SNickeau    {
70*c3437056SNickeau        /**
71*c3437056SNickeau         * The value of {@link locale_get_default()} is with an underscore
72*c3437056SNickeau         * We follow this lead
73*c3437056SNickeau         */
74*c3437056SNickeau        return Site::getLocale("_");
75*c3437056SNickeau    }
76*c3437056SNickeau
77*c3437056SNickeau    public function getCanonical(): string
78*c3437056SNickeau    {
79*c3437056SNickeau        return "locale";
80*c3437056SNickeau    }
81*c3437056SNickeau
82*c3437056SNickeau
83*c3437056SNickeau}
84