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