| Current Path : /home/zieirix/www/components/com_jce/editor/tiny_mce/plugins/fontselect/ |
| Current File : /home/zieirix/www/components/com_jce/editor/tiny_mce/plugins/fontselect/config.php |
<?php
/**
* @copyright Copyright (c) 2009-2021 Ryan Demmer. All rights reserved
* @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* JCE is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses
*/
class WFFontselectPluginConfig
{
protected static $fonts = array('Andale Mono=andale mono,times', 'Arial=arial,helvetica,sans-serif', 'Arial Black=arial black,avant garde', 'Book Antiqua=book antiqua,palatino', 'Comic Sans MS=comic sans ms,sans-serif', 'Courier New=courier new,courier', 'Georgia=georgia,palatino', 'Helvetica=helvetica', 'Impact=impact,chicago', 'Symbol=symbol', 'Tahoma=tahoma,arial,helvetica,sans-serif', 'Terminal=terminal,monaco', 'Times New Roman=times new roman,times', 'Trebuchet MS=trebuchet ms,geneva', 'Verdana=verdana,geneva', 'Webdings=webdings', 'Wingdings=wingdings,zapf dingbats');
public static function getConfig(&$settings)
{
$wf = WFApplication::getInstance();
$settings['fontselect_fonts'] = self::getFonts();
}
/**
* Get a list of editor font families.
*
* @return string font family list
*
* @param string $add Font family to add
* @param string $remove Font family to remove
*/
protected static function getFonts()
{
$wf = WFApplication::getInstance();
$fonts = $wf->getParam('fontselect.fonts');
// decode string
if (is_string($fonts)) {
$fonts = htmlspecialchars_decode($fonts);
}
// map for new format, where fonts are saved as an array of an associative array, eg: [['Andale Mono' => 'andale mono,times', 'Arial' => 'arial,helvetica,sans-serif']]
if (is_array($fonts)) {
$values = $fonts;
// reset array
$fonts = array();
// map associative array to array of key value pairs
foreach ($values as $key => $value) {
if (is_numeric($key) && is_array($value)) {
$fonts = array_merge($fonts, $value);
} else {
$fonts = array_merge($fonts, array($key => $value));
}
}
}
// get fonts using legacy parameters
if (empty($fonts)) {
$fonts = self::$fonts;
$add = $wf->getParam('editor.theme_advanced_fonts_add');
$remove = $wf->getParam('editor.theme_advanced_fonts_remove');
if (empty($remove) && empty($add)) {
return '';
}
$remove = preg_split('/[;,]+/', $remove);
if (count($remove)) {
foreach ($fonts as $key => $value) {
foreach ($remove as $gone) {
if ($gone && preg_match('/^'.$gone.'=/i', $value)) {
// Remove family
unset($fonts[$key]);
}
}
}
}
foreach (explode(';', $add) as $new) {
// Add new font family
if (preg_match('/([^\=]+)(\=)([^\=]+)/', trim($new)) && !in_array($new, $fonts)) {
$fonts[] = $new;
}
}
natcasesort($fonts);
$fonts = implode(';', $fonts);
}
return $fonts;
}
}