bludit/bl-kernel/boot/rules/99.themes.php

95 lines
2.6 KiB
PHP
Raw Normal View History

2015-08-02 04:47:45 +02:00
<?php defined('BLUDIT') or die('Bludit CMS.');
// ============================================================================
// Variables
// ============================================================================
// ============================================================================
// Functions
// ============================================================================
2016-01-16 15:01:29 +01:00
function buildThemes()
{
global $Site;
$themes = array();
$themesPaths = Filesystem::listDirectories(PATH_THEMES);
foreach($themesPaths as $themePath)
{
// Check if the theme is translated.
$languageFilename = $themePath.DS.'languages'.DS.$Site->locale().'.json';
if( !Sanitize::pathFile($languageFilename) ) {
$languageFilename = $themePath.DS.'languages'.DS.'en_US.json';
}
if( Sanitize::pathFile($languageFilename) )
{
$database = file_get_contents($languageFilename);
$database = json_decode($database, true);
if(empty($database)) {
Log::set('99.themes.php'.LOG_SEP.'JSON Error on theme '.$themePath);
break;
}
2016-01-16 15:01:29 +01:00
$database = $database['theme-data'];
$database['dirname'] = basename($themePath);
2015-08-02 04:47:45 +02:00
2016-01-16 15:01:29 +01:00
// --- Metadata ---
$filenameMetadata = $themePath.DS.'metadata.json';
2015-08-02 04:47:45 +02:00
2016-01-16 15:01:29 +01:00
if( Sanitize::pathFile($filenameMetadata) )
{
$metadataString = file_get_contents($filenameMetadata);
$metadata = json_decode($metadataString, true);
if(empty($metadata)) {
Log::set('99.themes.php'.LOG_SEP.'JSON Error on theme '.$themePath);
break;
}
2016-01-16 15:01:29 +01:00
2016-06-20 02:45:09 +02:00
// Check if the theme is compatible
if(empty($metadata['compatible'])) {
Log::set('99.themes.php'.LOG_SEP.'Metadata error, field compatible invalid '.$themePath);
break;
}
$explode = explode(',', $metadata['compatible']);
if(!in_array(BLUDIT_VERSION, $explode)) {
Log::set('99.themes.php'.LOG_SEP.'Theme incompatible '.$themePath);
break;
}
2016-01-16 15:01:29 +01:00
// Theme data
2016-06-20 02:45:09 +02:00
$database = $database + $metadata;
2016-01-16 15:01:29 +01:00
array_push($themes, $database);
}
}
}
return $themes;
2015-11-29 00:21:04 +01:00
}
2016-01-16 15:01:29 +01:00
// ============================================================================
// Main
// ============================================================================
// Load the language file
$languageFilename = PATH_THEME.'languages'.DS.$Site->locale().'.json';
2016-01-16 15:01:29 +01:00
if( !Sanitize::pathFile($languageFilename) ) {
$languageFilename = PATH_THEME.'languages'.DS.'en_US.json';
2015-08-02 04:47:45 +02:00
}
2016-01-16 15:01:29 +01:00
if( Sanitize::pathFile($languageFilename) )
2015-08-02 04:47:45 +02:00
{
2016-01-16 15:01:29 +01:00
$database = file_get_contents($languageFilename);
$database = json_decode($database, true);
2015-08-02 04:47:45 +02:00
2016-01-16 15:01:29 +01:00
// Remote the name and description.
unset($database['theme-data']);
2015-08-02 04:47:45 +02:00
2016-01-16 15:01:29 +01:00
// Load words from the theme language
if(!empty($database)) {
$Language->add($database);
}
2016-06-20 02:45:09 +02:00
}