138 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
namespace Nextend\Framework\Font;
 | 
						|
 | 
						|
 | 
						|
use Nextend\Framework\Data\Data;
 | 
						|
use Nextend\Framework\Model\Section;
 | 
						|
 | 
						|
class FontSettings {
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var Data
 | 
						|
     */
 | 
						|
    private static $data;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var Data
 | 
						|
     */
 | 
						|
    private static $pluginsData;
 | 
						|
 | 
						|
    public function __construct() {
 | 
						|
        self::load();
 | 
						|
        FontRenderer::setDefaultFont(self::$data->get('default-family'));
 | 
						|
    }
 | 
						|
 | 
						|
    public static function load() {
 | 
						|
 | 
						|
        self::$data = new Data(array(
 | 
						|
            'default-family'  => n2_x('Roboto,Arial', 'Default font'),
 | 
						|
            'preset-families' => n2_x(implode("\n", array(
 | 
						|
                "Abel",
 | 
						|
                "Arial",
 | 
						|
                "Arimo",
 | 
						|
                "Average",
 | 
						|
                "Bevan",
 | 
						|
                "Bitter",
 | 
						|
                "'Bree Serif'",
 | 
						|
                "Cabin",
 | 
						|
                "Calligraffitti",
 | 
						|
                "Chewy",
 | 
						|
                "Comfortaa",
 | 
						|
                "'Covered By Your Grace'",
 | 
						|
                "'Crafty Girls'",
 | 
						|
                "'Dancing Script'",
 | 
						|
                "'Noto Sans'",
 | 
						|
                "'Noto Serif'",
 | 
						|
                "'Francois One'",
 | 
						|
                "'Fredoka One'",
 | 
						|
                "'Gloria Hallelujah'",
 | 
						|
                "'Happy Monkey'",
 | 
						|
                "'Josefin Slab'",
 | 
						|
                "Lato",
 | 
						|
                "Lobster",
 | 
						|
                "'Luckiest Guy'",
 | 
						|
                "Montserrat",
 | 
						|
                "'Nova Square'",
 | 
						|
                "Nunito",
 | 
						|
                "'Open Sans'",
 | 
						|
                "Oswald",
 | 
						|
                "Oxygen",
 | 
						|
                "Pacifico",
 | 
						|
                "'Permanent Marker'",
 | 
						|
                "'Playfair Display'",
 | 
						|
                "'PT Sans'",
 | 
						|
                "'Poiret One'",
 | 
						|
                "Raleway",
 | 
						|
                "Roboto",
 | 
						|
                "'Rock Salt'",
 | 
						|
                "Quicksand",
 | 
						|
                "Satisfy",
 | 
						|
                "'Squada One'",
 | 
						|
                "'The Girl Next Door'",
 | 
						|
                "'Titillium Web'",
 | 
						|
                "'Varela Round'",
 | 
						|
                "Vollkorn",
 | 
						|
                "'Walter Turncoat'"
 | 
						|
            )), 'Default font family list'),
 | 
						|
            'plugins'         => array()
 | 
						|
        ));
 | 
						|
 | 
						|
        foreach (Section::getAll('system', 'fonts') as $data) {
 | 
						|
            self::$data->set($data['referencekey'], $data['value']);
 | 
						|
        }
 | 
						|
 | 
						|
        self::$pluginsData = new Data(self::$data->get('plugins'), true);
 | 
						|
    }
 | 
						|
 | 
						|
    public static function store($data) {
 | 
						|
        if (is_array($data)) {
 | 
						|
            foreach ($data as $key => $value) {
 | 
						|
                if (self::$data->has($key)) {
 | 
						|
                    self::$data->set($key, $value);
 | 
						|
                    Section::set('system', 'fonts', $key, $value, 1, 1);
 | 
						|
                    unset($data[$key]);
 | 
						|
                }
 | 
						|
            }
 | 
						|
            if (count($data)) {
 | 
						|
                self::$pluginsData = new Data($data);
 | 
						|
                Section::set('system', 'fonts', 'plugins', self::$pluginsData->toJSON(), 1, 1);
 | 
						|
 | 
						|
            }
 | 
						|
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return Data
 | 
						|
     */
 | 
						|
    public static function getData() {
 | 
						|
 | 
						|
        return self::$data;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return Data
 | 
						|
     */
 | 
						|
    public static function getPluginsData() {
 | 
						|
 | 
						|
        return self::$pluginsData;
 | 
						|
    }
 | 
						|
 | 
						|
    public static function getDefaultFamily() {
 | 
						|
        return self::$data->get('default-family');
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    public static function getPresetFamilies() {
 | 
						|
        return array_filter(explode("\n", self::$data->get('preset-families')));
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
new FontSettings(); |