Вход Регистрация
Файл: sys/plugins/classes/themes.class.php
Строк: 54
<?php

/**
 * Список тем оформления
 */
abstract class themes
{

    
/**
     * Проверка на существование темы оформления
     * @param string $name имя темы оформления (название папки с темой)
     * @param string $type
     * @return boolean
     */
    
static public function exists($name$type 'all')
    {
        return !!
self::getThemeByName($name$type);
    }

    
/**
     * @param bool $nocache
     * @return theme[]
     */
    
static public function getAllThemes($nocache false)
    {
        static 
$themes false;
        if (!
$themes && !$nocache) {
            
$themes cache::get('themes_obj');
        }

        if (!
$themes) {
            
$themes = array();
            
$themes_path '/sys/themes';
            
$od opendir($themes_path);
            while (
$el_name readdir($od)) {
                if (
$el_name{0} === '.') {
                    continue;
                }
                if (!
is_dir($themes_path '/' $el_name)) {
                    continue;
                }
                try {
                    
$theme = new theme($themes_path '/' $el_name);
                    if (
$theme->getVersion() != dcms::getInstance()->theme_version) {
                        continue;
                    }
                    
$themes[] = $theme;
                } catch (
Exception $e) {
                    throw 
$e;
                }
            }
            
closedir($od);
            
cache::set('themes_obj'$themes60);
        }
        return 
$themes;
    }

    
/**
     * @param string $type
     * @return theme[]
     */
    
static public function getThemesByType($type)
    {
        
$themes_all self::getAllThemes();
        
$themes = array();

        foreach (
$themes_all as $theme) {
            if (
$type === 'all' || $theme->browserSupport($type)) {
                
$themes[] = $theme;
            }
        }

        return 
$themes;
    }

    
/**
     * @param string $name
     * @param string $type
     * @return null|theme
     */
    
static public function getThemeByName($name$type 'all')
    {
        
$themes_all self::getThemesByType($type);
        foreach (
$themes_all as $theme) {
            if (
$theme->getName() === $name) {
                return 
$theme;
            }
        }
        return 
null;
    }

    
/**
     * очистка кэша списка тем
     */
    
static public function clearCache()
    {
        
cache::set('themes_obj'false);
    }

}
Онлайн: 0
Реклама