Source of file HealthAnalysisField.php
Size: 2,666 Bytes - Last Modified: 2021-12-23T10:11:23+00:00
/var/www/docs.ssmods.com/process/src/src/Forms/HealthAnalysisField.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 | <?php namespace QuinnInteractive\Seo\Forms; use QuinnInteractive\Seo\Analysis\Analysis; use QuinnInteractive\Seo\Extensions\PageHealthExtension; use SilverStripe\CMS\Model\SiteTree; use SilverStripe\Core\ClassInfo; use SilverStripe\Forms\LiteralField; use SilverStripe\ORM\ArrayList; use SilverStripe\View\ArrayData; use SilverStripe\View\Requirements; /** * Class HealthAnalysisField * @package QuinnInteractive\Seo\Forms */ class HealthAnalysisField extends LiteralField { /** * @var \Page */ protected $page; /** * @var int */ protected $result; protected $schemaComponent = 'HealthAnalysisField'; protected $template = self::class; /** * HealthAnalysisField constructor. * * @param string $name * @param \SilverStripe\Forms\FormField|string $title * @param \Page $page */ public function __construct($name, $title, SiteTree $page) { $this->setPage($page); Requirements::javascript('quinninteractive/silverstripe-seo:dist/javascript/main.min.js'); Requirements::css('quinninteractive/silverstripe-seo:dist/css/styles.min.css'); parent::__construct($name, ArrayData::create( [ 'Title' => $title, 'Results' => $this->runAnalyses(), ] )->renderWith(self::class)); } /** * Fetches a list of all Analysis subclasses * * @return array */ public function getAnalyses() { $classes = ClassInfo::subclassesFor(Analysis::class); $output = []; /** @var Analysis $class */ foreach ($classes as $class) { if ($class === Analysis::class) { continue; } $output[] = $class; } return $output; } /** * @return SiteTree|PageHealthExtension */ public function getPage() { return $this->page; } /** * Runs all analyses and returns an ArrayList * * @return ArrayList */ public function runAnalyses() { $analyses = $this->getAnalyses(); $output = ArrayList::create([]); foreach ($analyses as $analysisClass) { /** @var Analysis $analysis */ $analysis = $analysisClass::create($this->getPage()); $output->push($analysis->inspect()); } return $output; } /** * @param SiteTree $page * @return $this */ public function setPage(SiteTree $page) { $this->page = $page; return $this; } } |