Spade
Mini Shell
| Directory:~$ /proc/self/root/home/lmsyaran/public_html/j3/modules/mod_vertical_menu/helpers/ |
| [Home] [System Details] [Kill Me] |
<?php
/**
* mod_vertical_menu - Vertical Menu
*
* @author Balint Polgarfi
* @copyright 2014-2019 Offlajn.com
* @license https://gnu.org/licenses/gpl-2.0.html
* @link https://offlajn.com
*/
?><?php
// no direct access
defined('_JEXEC') or die('Restricted access');
if (!class_exists('OfflajnMiniFontHelper')) {
class OfflajnMiniFontHelper
{
public function __construct($params)
{
$this->_params = &$params;
$this->_parser = new OfflajnParser();
}
public function parseFonts()
{
$fonts = array();
foreach ($this->_params->toArray() as $k => $f) {
if (strpos($k, 'font') !== false && isset($f[0])
&& $f[0] == '{') {
$f = json_decode($f, true);
$tabs = array_keys($f);
$default_tab = $tabs[0];
$f['default_tab'] = $default_tab;
if (version_compare(JVERSION, '3.0', 'ge'))
{
$this->_params->set($k, $f);
} else {
$this->_params->setValue($k, $f);
}
// if(!isset($f[$default_tab]['bold']))
$f[$default_tab]['bold'] = 400;
// $weight = $f[$default_tab]['bold'] ? 700 : 400;
// $weight =
(strtoupper($t['textdecor'])=='LIGHTER') ? 300 :
((strtoupper($t['textdecor'])=='NORMAL') ? 400 : 700);
$weight = @$f[$default_tab]['textdecor'];
if (!isset($f[$default_tab]['italic'])) {
$f[$default_tab]['italic'] = '';
}
$italic = $f[$default_tab]['italic'] ?
'italic' : '';
$subset =
$this->_getSubset(isset($f[$default_tab]['subset']) ?
$f[$default_tab]['subset'] : 'latin');
foreach ($f as $k => $t) {
if ($k == 'default_tab') {
continue;
}
if (isset($t['type']) && $t['type']
== '0' || !isset($t['type']) &&
$f[$default_tab]['type'] == '0') {
continue;
}
$_family = isset($t['family']) ?
$t['family'] : $f[$default_tab]['family'];
$_subset = (isset($t['subset']) ?
$this->_getSubset($t['subset']) : $subset);
// $_weight = (isset($t['bold']) ?
($t['bold'] ? 700 : 400) : $weight);
// $_weight = (isset($t['textdecor']) ?
((strtoupper($t['textdecor'])=='LIGHTER') ? 300 :
((strtoupper($t['textdecor'])=='NORMAL') ? 400 : 700))
: $weight);
$_weight = @$t['textdecor'];
$_italic = (isset($t['italic']) ?
($t['italic'] ? 'italic' : '') : $italic);
if (!isset($fonts[$_family])) {
$fonts[$_family] = array('subset' => array());
}
$fonts[$_family]['subset'][] = $_subset;
$fonts[$_family]['options'][] = $_weight . $_italic;
}
}
}
$query = '';
foreach ($fonts as $k => $font) {
if ($k == '') continue;
if ($query != '') $query .= '|';
$query .= $k . ':' . implode(',',
array_unique(array_filter($font['options'])));
}
if ($query == '') return '';
$url = 'https://fonts.googleapis.com/css?family=' .
$query;
return "@import url('" . $url .
"');\n";
}
/*
Ha $loadDefaultTab true, akkor az aktuális tab hiányzó értékeibe
beletölti a default tabból az értékeket.
Ha a $justValue true, akkor csak az adott css tulajdonság értékét
jeleníti meg.
*/
public function _printFont($name, $tab, $excl = null, $incl = null,
$loadDefaultTab = false, $justValue = false)
{
global $ratio;
if (!$ratio) {
$ratio = 1;
}
$f = $this->_params->get($name);
if (!$tab) {
$tab = $f['default_tab'];
}
$t = $f[$tab];
if ($loadDefaultTab && $tab != $f['default_tab'])
{
foreach ($f[$f['default_tab']] as $k => $v) {
if (!isset($t[$k])) {
$t[$k] = $v;
}
}
}
$family = '';
if (isset($t['type']) && $t['type'] !=
'0' && isset($t['family'])) {
$family = "'" . $t['family'] .
"'";
}
if (isset($t['afont']) && $t['afont'] !=
'') {
$afont = OfflajnParser::parse($t['afont']);
if ($afont[1]) {
if ($family != '') {
$family .= ',';
}
$family .= $afont[0];
}
}
if ((!$excl || !in_array('font-family', $excl)) &&
(!$incl || in_array('font-family', $incl))) {
if ($family != '') {
if (!$justValue) {
echo 'font-family: ' . $family . ";\n";
} else {
echo $family;
}
}
}
if ((!$excl || !in_array('font-size', $excl)) &&
(!$incl || in_array('font-size', $incl))) {
if (isset($t['size']) && $t['size'] !=
'') {
if (!$justValue) {
$s = OfflajnParser::parse($t['size']);
$s[0] = intval($s[0] * $ratio);
echo 'font-size: ' . implode('', $s) .
";\n";
} else {
$s = OfflajnParser::parse($t['size']);
$s[0] = intval($s[0] * $ratio);
echo implode('', $s);
}
}
}
if ((!$excl || !in_array('color', $excl)) &&
(!$incl || in_array('color', $incl))) {
if (isset($t['color']) && $t['color']
!= '') {
echo "color: " . $t['color'] .
";\n";
}
}
if ((!$excl || !in_array('font-weight', $excl)) &&
(!$incl || in_array('font-weight', $incl))) {
if (isset($t['bold'])) {
if (!$justValue) {
echo 'font-weight: ' . ($t['bold'] ==
'1' ? 'bold' : 'normal') . ";\n";
} else {
echo ($t['bold'] == '1' ? 'bold'
: 'normal');
}
}
}
if ((!$excl || !in_array('font-weight', $excl)) &&
(!$incl || in_array('font-weight', $incl))) {
if (isset($t['textdecor'])) {
if (!$justValue) {
echo 'font-weight: ' . $t['textdecor'] .
";\n";
} else {
echo $t['textdecor'];
}
}
}
if ((!$excl || !in_array('font-style', $excl)) &&
(!$incl || in_array('font-style', $incl))) {
if (isset($t['italic'])) {
if (!$justValue) {
echo 'font-style: ' . ($t['italic'] ==
'1' ? 'italic' : 'normal') .
";\n";
} else {
echo ($t['italic'] == '1' ?
'italic' : 'normal');
}
}
}
if ((!$excl || !in_array('text-decoration', $excl))
&& (!$incl || in_array('text-decoration', $incl))) {
if (isset($t['underline'])) {
if (!$justValue) {
echo 'text-decoration: ' . ($t['underline']
== '1' ? 'underline' : 'none') .
";\n";
} else {
echo ($t['underline'] == '1' ?
'underline' : 'none');
}
}
if (isset($t['linethrough'])) {
if (!$justValue) {
echo 'text-decoration: ' .
($t['linethrough'] == '1' ? 'linethrough' :
'none') . ";\n";
} else {
echo ($t['linethrough'] == '1' ?
'linethrough' : 'none');
}
}
}
if ((!$excl || !in_array('text-transform', $excl))
&& (!$incl || in_array('text-transform', $incl))) {
if (isset($t['uppercase'])) {
if (!$justValue) {
echo 'text-transform: ' . ($t['uppercase']
== '1' ? 'uppercase' : 'none') .
";\n";
} else {
echo ($t['uppercase'] == '1' ?
'uppercase' : 'none');
}
}
}
if ((!$excl || !in_array('text-align', $excl)) &&
(!$incl || in_array('text-align', $incl))) {
if (isset($t['align'])) {
if (!$justValue) {
echo 'text-align: ' . $t['align'] .
";\n";
} else {
echo $t['align'];
}
}
}
if ((!$excl || !in_array('text-shadow', $excl)) &&
(!$incl || in_array('text-shadow', $incl))) {
echo isset($t['tshadow']) ?
$this->getTextShadow($t['tshadow']) : '';
}
if ((!$excl || !in_array('line-height', $excl)) &&
(!$incl || in_array('line-height', $incl))) {
if (isset($t['lineheight'])) {
if (!$justValue) {
if ($ratio == 1) {
echo 'line-height: ' . $t['lineheight'] .
";\n";
} else {
$lht = $t['lineheight'];
$lh = intval($t['lineheight']);
if ($lh > 0) {
$lhu = str_replace($lh, '',
$t['lineheight']);
$lh = intval($lh * $ratio);
echo 'line-height: ' . $lh . $lhu .
";\n";
} else {
echo 'line-height: ' . $t['lineheight']
. ";\n";
}
}
} else {
echo $t['lineheight'];
}
}
}
}
public function printFont($name, $tab, $loadDefaultTab = false)
{
$this->_printFont($name, $tab, null, null, $loadDefaultTab);
}
public function printFontExcl($name, $tab, $excl, $loadDefaultTab =
false)
{
$this->_printFont($name, $tab, $excl, null, $loadDefaultTab);
}
public function printFontIncl($name, $tab, $incl, $loadDefaultTab =
false)
{
$this->_printFont($name, $tab, null, $incl, $loadDefaultTab);
}
public function getTextShadow($s)
{
$ts = OfflajnParser::parse($s);
if (!$ts[4]) {
return "text-shadow: none;\n";
}
while (count($ts) > 4) {
array_pop($ts);
}
foreach ($ts as &$v) {
if (!is_string($v)) {
$v = implode('', $v);
}
}
return 'text-shadow: ' . implode(' ', $ts) .
";\n";
}
public function _getSubset($subset)
{
if ($subset == 'LatinExtended') {
$subset = 'latin,latin-ext';
} elseif ($subset == 'CyrillicExtended') {
$subset = 'cyrillic,cyrillic-ext';
} elseif ($subset == 'GreekExtended') {
$subset = 'greek,greek-ext';
}
return $subset;
}
public function printPropertyValue($name, $tab, $prop, $loadDefaultTab
= false)
{
$this->_printFont($name, $tab, null, array($prop),
$loadDefaultTab, true);
}
}
}