fipamo/app/Services/Data/ThemeService.php

79 lines
2.1 KiB
PHP
Raw Normal View History

<?php
namespace App\Services\Data;
class ThemeService
{
protected $themes = [];
protected $settings;
public function __construct(SettingsService $settingsService)
{
$this->settings = $settingsService;
$_themes = glob(env('THEMES_PATH') . '/*', GLOB_ONLYDIR);
foreach ($_themes as $theme) {
array_push(
$this->themes,
json_decode(file_get_contents($theme . '/theme.json'), true)
);
}
}
public function getCurrentTheme()
{
return $this->settings->getGlobal()['theme'];
}
public function getThemes()
{
return $this->themes;
}
public function getCustomViews($layout)
{
$views = [];
if (str_contains($layout, 'index')) {
$views = $this->findCustomIndex();
} else {
$views = $this->findCustomViews();
}
return $views;
}
public function findCustomIndex()
{
$currentTheme = $this->settings->getGlobal()['theme'];
$folder = '../content/themes/' . $currentTheme;
$files = array_filter(glob("$folder/*blade.php"), 'is_file');
$views = [];
foreach ($files as $file) {
$path = explode('/', $file);
$fileName = $path[4];
if (str_contains($fileName, 'index')) {
$page = explode('.', $fileName);
$views[] = $page[0];
}
}
return $views;
}
public function findCustomViews()
{
$currentTheme = $this->settings->getGlobal()['theme'];
$folder = '../content/themes/' . $currentTheme;
$files = array_filter(glob("$folder/*blade.php"), 'is_file');
$views = [];
foreach ($files as $file) {
$path = explode('/', $file);
$fileName = $path[4];
if (str_contains($fileName, 'page')) {
$page = explode('.', $fileName);
$views[] = $page[0];
}
}
return $views;
}
}