xref: /template/strap/ComboStrap/LowQualityCalculatedIndicator.php (revision c3437056399326d621a01da73b649707fbb0ae69)
1*c3437056SNickeau<?php
2*c3437056SNickeau
3*c3437056SNickeau
4*c3437056SNickeaunamespace ComboStrap;
5*c3437056SNickeau
6*c3437056SNickeau
7*c3437056SNickeauclass LowQualityCalculatedIndicator extends MetadataBoolean
8*c3437056SNickeau{
9*c3437056SNickeau
10*c3437056SNickeau    public const LOW_QUALITY_INDICATOR_CALCULATED = "low_quality_indicator_calculated";
11*c3437056SNickeau
12*c3437056SNickeau    public static function createFromPage(Page $page)
13*c3437056SNickeau    {
14*c3437056SNickeau        return (new LowQualityCalculatedIndicator())
15*c3437056SNickeau            ->setResource($page);
16*c3437056SNickeau    }
17*c3437056SNickeau
18*c3437056SNickeau    public function getTab(): ?string
19*c3437056SNickeau    {
20*c3437056SNickeau        // not in a form
21*c3437056SNickeau        return null;
22*c3437056SNickeau    }
23*c3437056SNickeau
24*c3437056SNickeau    public function getDescription(): string
25*c3437056SNickeau    {
26*c3437056SNickeau        return "The indicator calculated by the analytics process that tells if a page is of a low quality";
27*c3437056SNickeau    }
28*c3437056SNickeau
29*c3437056SNickeau    public function getValue(): ?bool
30*c3437056SNickeau    {
31*c3437056SNickeau        $value = parent::getValue();
32*c3437056SNickeau        if ($value !== null) {
33*c3437056SNickeau            return $value;
34*c3437056SNickeau        }
35*c3437056SNickeau
36*c3437056SNickeau        /**
37*c3437056SNickeau         * Migration code
38*c3437056SNickeau         * The indicator {@link LowQualityCalculatedIndicator::LOW_QUALITY_INDICATOR_CALCULATED} is new
39*c3437056SNickeau         * but if the analytics was done, we can get it
40*c3437056SNickeau         */
41*c3437056SNickeau        $resource = $this->getResource();
42*c3437056SNickeau        if (!($resource instanceof Page)) {
43*c3437056SNickeau            return null;
44*c3437056SNickeau        }
45*c3437056SNickeau        $analyticsDocument = $resource->getAnalyticsDocument();
46*c3437056SNickeau        if (!FileSystems::exists($analyticsDocument->getCachePath())) {
47*c3437056SNickeau            return null;
48*c3437056SNickeau        }
49*c3437056SNickeau        try {
50*c3437056SNickeau            return $analyticsDocument->getJson()->toArray()[AnalyticsDocument::QUALITY][AnalyticsDocument::LOW];
51*c3437056SNickeau        } catch (ExceptionCombo $e) {
52*c3437056SNickeau            LogUtility::msg("Error while reading the json analytics. {$e->getMessage()}");
53*c3437056SNickeau            return null;
54*c3437056SNickeau        }
55*c3437056SNickeau
56*c3437056SNickeau    }
57*c3437056SNickeau
58*c3437056SNickeau
59*c3437056SNickeau    public function getLabel(): string
60*c3437056SNickeau    {
61*c3437056SNickeau        return "Low Quality Indicator";
62*c3437056SNickeau    }
63*c3437056SNickeau
64*c3437056SNickeau    static public function getName(): string
65*c3437056SNickeau    {
66*c3437056SNickeau        return self::LOW_QUALITY_INDICATOR_CALCULATED;
67*c3437056SNickeau    }
68*c3437056SNickeau
69*c3437056SNickeau    public function getPersistenceType(): string
70*c3437056SNickeau    {
71*c3437056SNickeau        return Metadata::DERIVED_METADATA;
72*c3437056SNickeau    }
73*c3437056SNickeau
74*c3437056SNickeau    public function getMutable(): bool
75*c3437056SNickeau    {
76*c3437056SNickeau        return false;
77*c3437056SNickeau    }
78*c3437056SNickeau
79*c3437056SNickeau    /**
80*c3437056SNickeau     * By default, if a file has not been through
81*c3437056SNickeau     * a {@link \renderer_plugin_combo_analytics}
82*c3437056SNickeau     * analysis, this is a low page if protection is set
83*c3437056SNickeau     */
84*c3437056SNickeau    public function getDefaultValue(): bool
85*c3437056SNickeau    {
86*c3437056SNickeau
87*c3437056SNickeau        if (!Site::isLowQualityProtectionEnable()) {
88*c3437056SNickeau            return false;
89*c3437056SNickeau        }
90*c3437056SNickeau        return true;
91*c3437056SNickeau    }
92*c3437056SNickeau}
93