Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Repository/PWA.php
<?php

namespace XF\Repository;

use
XF\Entity\Style;
use
XF\Entity\StylePropertyMap;
use
XF\Mvc\Entity\AbstractCollection;
use
XF\Mvc\Entity\Repository;

class
PWA extends Repository
{
    public function
isInstallable(): bool
   
{
       
$request = $this->app()->request();
        if (!
$request->isSecure() && !$request->isHostLocal())
        {
            return
false;
        }

       
$options = $this->options();
        if (!
$options->boardTitle && !$options->boardShortTitle)
        {
            return
false;
        }

       
$style = $this->app()->style(0);
        if (
            !
$style->getProperty('publicIconUrl') ||
            !
$style->getProperty('publicIconUrlLarge')
        )
        {
            return
false;
        }

        return
true;
    }

   
/**
     * @return StylePropertyMap[]|\XF\Mvc\Entity\AbstractCollection
     */
   
public function getApplicableStylePropertyMaps(Style $style): AbstractCollection
   
{
       
$stylePropertyNames = $this->getApplicableStylePropertyNames();
       
$stylePropertyOrders = array_flip($stylePropertyNames);

       
$stylePropertyRepo = $this->repository('XF:StyleProperty');
       
$stylePropertyMapFinder = $stylePropertyRepo->findPropertyMapForEditing($style)
            ->
where('property_name', $stylePropertyNames);
       
$stylePropertyMaps = $stylePropertyMapFinder->fetch();

       
$stylePropertyMaps = $stylePropertyMaps->toArray();
       
uasort(
           
$stylePropertyMaps,
            function(
StylePropertyMap $a, StylePropertyMap $b) use ($stylePropertyOrders)
            {
                return
$stylePropertyOrders[$a->property_name] <=> $stylePropertyOrders[$b->property_name];
            }
        );
        return
$this->em->getBasicCollection($stylePropertyMaps);
    }

   
/**
     * @return string[]
     */
   
public function getApplicableStylePropertyNames(): array
    {
        return [
           
'metaThemeColor',
           
'pageBg',
           
'publicIconUrl',
           
'publicIconUrlLarge',
           
'publicIconsMaskable'
       
];
    }
}