Files
preland/admin/src/Catalog.php
T
2026-10-25 11:33:56 +03:00

15 lines
979 B
PHP

<?php
declare(strict_types=1);
namespace PrelandAdmin;
final class Catalog
{
public static function read(Store $store,\stdClass $config): ?array {
$catalog=$store->read('catalog.json',null);if(!is_array($catalog)||!is_string($catalog['generated_at']??null))return null;
$at=strtotime($catalog['generated_at']);if($at===false||$at<time()-180||$at>time()+30)return null;
$host=static fn($value)=>strtolower(rtrim((string)parse_url(str_contains((string)$value,'://')?(string)$value:'https://'.$value,PHP_URL_HOST),'.'));
if(!$host($config->host??'')||$host($catalog['host']??'')!==$host($config->host??''))return null;
foreach(['degr','tp','cons'] as $group){if(!is_array($catalog['groups'][$group]??null))return null;foreach($catalog['groups'][$group] as $entry)if(!is_array($entry)||!is_int($entry['number']??null)||$entry['number']<1||$entry['number']>9||!is_string($entry['name']??null))return null;}
return $catalog;
}
}