butterfly/inc/theme.class.php
Claude 26127bf736 Baseline: plugin butterfly v2.1.0 como recebido (pré-fixes GLPI 11)
Estado original vindo do servidor de origem via tar.gz, antes da
rodada de conformidade com a knowledge-base e fixes de GLPI 11.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 15:34:10 -03:00

78 lines
1.9 KiB
PHP

<?php
class PluginButterflyTheme {
public static function getThemeFolder() {
return dirname(__DIR__) . '/themes';
}
public static function isLoginTheme($dir) {
$path = static::getThemeFolder() . '/' . $dir . '/login.scss';
return file_exists($path);
}
public static function getThemePath($dir, $type) {
$path = static::getThemeFolder() . '/' . $dir . '/' . $type;
if (!file_exists($path)) {
return false;
}
return $dir . '/' . $type;
}
public static function getThemeInfo($dir) {
$dirPath = static::getThemeFolder() . '/' . $dir;
$path = $dirPath . '/theme.json';
if (!file_exists($path)) {
return false;
}
$json = file_get_contents($path);
if (!$json) {
return false;
}
$info = @json_decode($json, true);
if (!$info) {
return false;
}
$info['id'] = $dir;
$info['path'] = $dirPath;
if (static::getThemePath($dir, 'login.background.jpg')) {
$info['login-background'] = 'login.background.jpg';
}
if (static::getThemePath($dir, 'login.logo.png')) {
$info['login-logo'] = 'login.logo.png';
}
if (static::getThemePath($dir, 'login.preview.jpg')) {
$info['login-preview'] = 'login.preview.jpg';
}
if (static::getThemePath($dir, 'login.scss')) {
$info['login-scss'] = 'login.scss';
} else if (static::getThemePath($dir, 'login.css')) {
$info['login-css'] = 'login.css';
}
return $info;
}
public static function getLoginThemes() {
$themes = [];
$dirs = scandir(static::getThemeFolder());
foreach ($dirs as $dir) {
if (!static::isLoginTheme($dir)) {
continue;
}
$info = static::getThemeInfo($dir);
if (!$info) {
continue;
}
$themes[$dir] = $info;
}
return $themes;
}
}