109 lines
2.6 KiB
PHP
109 lines
2.6 KiB
PHP
<?php
|
|
/*
|
|
* Copyright (c) 2025, Антон Аксенов
|
|
* This file is part of m3u.su project
|
|
* MIT License: https://git.axenov.dev/IPTV/web/src/branch/master/LICENSE
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Core;
|
|
|
|
use Twig\Extension\AbstractExtension;
|
|
use Twig\TwigFilter;
|
|
use Twig\TwigFunction;
|
|
|
|
/**
|
|
* Расширение twig
|
|
*/
|
|
class TwigExtention extends AbstractExtension
|
|
{
|
|
/**
|
|
* @inheritDoc
|
|
* @noinspection PhpUnused
|
|
*/
|
|
public function getFunctions(): array
|
|
{
|
|
return [
|
|
new TwigFunction('config', [$this, 'config']),
|
|
new TwigFunction('version', [$this, 'version']),
|
|
new TwigFunction('is_file', [$this, 'isFile']),
|
|
new TwigFunction('base_url', [$this, 'baseUrl']),
|
|
new TwigFunction('mirror_url', [$this, 'mirrorUrl']),
|
|
new TwigFunction('to_date', [$this, 'toDate']),
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
* @noinspection PhpUnused
|
|
*/
|
|
public function getFilters(): array
|
|
{
|
|
return [
|
|
new TwigFilter('values', [$this, 'arrayValues']),
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Возвращает значение из конфига
|
|
*
|
|
* @param string $key Ключ в формате "config.key"
|
|
* @param mixed|null $default Значение по умолчанию
|
|
* @return mixed
|
|
*/
|
|
public function config(string $key, mixed $default = null): mixed
|
|
{
|
|
return kernel()->config($key, $default);
|
|
}
|
|
|
|
/**
|
|
* Возвращает версию приложения
|
|
*
|
|
* @return string
|
|
*/
|
|
public function version(): string
|
|
{
|
|
return Kernel::VERSION;
|
|
}
|
|
|
|
/**
|
|
* Возвращает базовый URL приложения
|
|
*
|
|
* @param string $path
|
|
* @return string
|
|
*/
|
|
public function baseUrl(string $path = ''): string
|
|
{
|
|
return base_url($path);
|
|
}
|
|
|
|
/**
|
|
* Проверячет существование файла
|
|
*
|
|
* @param string $path Полный путь к файлу
|
|
* @return bool
|
|
*/
|
|
public function isFile(string $path): bool
|
|
{
|
|
return is_file($path);
|
|
}
|
|
|
|
/**
|
|
* Конвертирует unix timestamp в дату и время
|
|
*
|
|
* @param float|null $timestamp
|
|
* @param string $format
|
|
* @return string
|
|
*/
|
|
public function toDate(?float $timestamp, string $format = 'd.m.Y H:i:s'): string
|
|
{
|
|
return $timestamp === null ? '' : date($format, (int)$timestamp);
|
|
}
|
|
|
|
public function arrayValues($value, ...$args)
|
|
{
|
|
return is_array($value) ? array_values($value) : $value;
|
|
}
|
|
}
|