File "cssparser.class.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/unlimited-elements-for-elementor/inc_php/framework/cssparser.class.php
File size: 8.11 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
class UniteCssParserUC
{
    private $cssContent;
    public function __construct()
    {
    }
    public function initContent($cssContent)
    {
        $this->cssContent = $cssContent;
    }
    public function getArrClasses($startText = "", $endText = "")
    {
        $content = $this->cssContent;
        if (!empty($startText)) {
            $posStart = strpos($content, $startText);
            if ($posStart !== false) {
                $content = substr($content, $posStart, strlen($content) - $posStart);
            }
        }
        if (!empty($endText)) {
            $posEnd = strpos($content, $endText);
            if ($posEnd !== false) {
                $content = substr($content, 0, $posEnd);
            }
        }
        $lines = explode("\n", $content);
        $arrClasses = array();
        foreach ($lines as $key => $line) {
            $line = trim($line);
            if (strpos($line, "{") === false) {
                continue;
            }
            if (strpos($line, ".caption a") !== false) {
                continue;
            }
            if (strpos($line, ".tp-caption a") !== false) {
                continue;
            }
            $class = str_replace("{", "", $line);
            $class = trim($class);
            if (strpos($class, " ") !== false) {
                continue;
            }
            if (strpos($class, ":") !== false) {
                continue;
            }
            $class = str_replace(".caption.", ".", $class);
            $class = str_replace(".tp-caption.", ".", $class);
            $class = str_replace(".", "", $class);
            $class = trim($class);
            $arrWords = explode(" ", $class);
            $class = $arrWords[count($arrWords) - 1];
            $class = trim($class);
            $arrClasses[] = $class;
        }
        sort($arrClasses);
        return $arrClasses;
    }
    public static function parseCssToArray($css)
    {
        while (strpos($css, '/*') !== false) {
            if (strpos($css, '*/') === false) {
                return false;
            }
            $start = strpos($css, '/*');
            $end = strpos($css, '*/') + 2;
            $css = str_replace(substr($css, $start, $end - $start), '', $css);
        }
        preg_match_all('/(?ims)([a-z0-9\\s\\.\\:#_\\-@]+)\\{([^\\}]*)\\}/', $css, $arr);
        $result = array();
        foreach ($arr[0] as $i => $x) {
            $selector = trim($arr[1][$i]);
            if (strpos($selector, '{') !== false || strpos($selector, '}') !== false) {
                return false;
            }
            $rules = explode(';', trim($arr[2][$i]));
            $result[$selector] = array();
            foreach ($rules as $strRule) {
                if (!empty($strRule)) {
                    $rule = explode(":", $strRule);
                    if (strpos($rule[0], '{') !== false || strpos($rule[0], '}') !== false || strpos($rule[1], '{') !== false || strpos($rule[1], '}') !== false) {
                        return false;
                    }
                    $key = trim($rule[0]);
                    unset($rule[0]);
                    $values = implode(':', $rule);
                    $result[$selector][trim($key)] = trim(str_replace("'", '"', $values));
                }
            }
        }
        return $result;
    }
    public static function parseDbArrayToCss($cssArray, $nl = "\n\r")
    {
        $css = '';
        foreach ($cssArray as $id => $attr) {
            $params = $attr['params'];
            $styles = json_decode($params);
            if (empty($styles)) {
                $styles = json_decode($params);
            }
            if (!empty($styles)) {
                $styles = (array) $styles;
            }
            $css .= $attr['handle'] . " {" . $nl;
            if (is_array($styles)) {
                foreach ($styles as $name => $style) {
                    $css .= $name . ':' . $style . ";" . $nl;
                }
            }
            $css .= "}" . $nl . $nl;
            $setting = json_decode($attr['settings'], true);
            if (@$setting['hover'] == 'true') {
                $hover = json_decode($attr['hover'], true);
                if (is_array($hover)) {
                    $css .= $attr['handle'] . ":hover {" . $nl;
                    foreach ($hover as $name => $style) {
                        $css .= $name . ':' . $style . ";" . $nl;
                    }
                    $css .= "}" . $nl . $nl;
                }
            }
        }
        return $css;
    }
    public static function parseArrayToCss($cssArray, $nl = "\n\r")
    {
        $css = '';
        foreach ($cssArray as $id => $attr) {
            $styles = (array) $attr['params'];
            $css .= $attr['handle'] . " {" . $nl;
            if (is_array($styles) && !empty($styles)) {
                foreach ($styles as $name => $style) {
                    if ($name == 'background-color' && strpos($style, 'rgba') !== false) {
                        $rgb = explode(',', str_replace('rgba', 'rgb', $style));
                        unset($rgb[count($rgb) - 1]);
                        $rgb = implode(',', $rgb) . ')';
                        $css .= $name . ':' . $rgb . ";" . $nl;
                    }
                    $css .= $name . ':' . $style . ";" . $nl;
                }
            }
            $css .= "}" . $nl . $nl;
            $setting = (array) $attr['settings'];
            if (@$setting['hover'] == 'true') {
                $hover = (array) $attr['hover'];
                if (is_array($hover)) {
                    $css .= $attr['handle'] . ":hover {" . $nl;
                    foreach ($hover as $name => $style) {
                        if ($name == 'background-color' && strpos($style, 'rgba') !== false) {
                            $rgb = explode(',', str_replace('rgba', 'rgb', $style));
                            unset($rgb[count($rgb) - 1]);
                            $rgb = implode(',', $rgb) . ')';
                            $css .= $name . ':' . $rgb . ";" . $nl;
                        }
                        $css .= $name . ':' . $style . ";" . $nl;
                    }
                    $css .= "}" . $nl . $nl;
                }
            }
        }
        return $css;
    }
    public static function parseStaticArrayToCss($cssArray, $nl = "\n")
    {
        $css = '';
        foreach ($cssArray as $class => $styles) {
            $css .= $class . " {" . $nl;
            if (is_array($styles) && !empty($styles)) {
                foreach ($styles as $name => $style) {
                    $css .= $name . ':' . $style . ";" . $nl;
                }
            }
            $css .= "}" . $nl . $nl;
        }
        return $css;
    }
    public static function parseDbArrayToArray($cssArray, $handle = false)
    {
        if (!is_array($cssArray) || empty($cssArray)) {
            return false;
        }
        foreach ($cssArray as $key => $css) {
            if ($handle != false) {
                if ($cssArray[$key]['handle'] == '.tp-caption.' . $handle) {
                    $cssArray[$key]['params'] = json_decode($css['params']);
                    $cssArray[$key]['hover'] = json_decode($css['hover']);
                    $cssArray[$key]['settings'] = json_decode($css['settings']);
                    return $cssArray[$key];
                } else {
                    unset($cssArray[$key]);
                }
            } else {
                $cssArray[$key]['params'] = json_decode($css['params']);
                $cssArray[$key]['hover'] = json_decode($css['hover']);
                $cssArray[$key]['settings'] = json_decode($css['settings']);
            }
        }
        return $cssArray;
    }
    public static function compress_css($buffer)
    {
        $buffer = preg_replace("!/\\*[^*]*\\*+([^/][^*]*\\*+)*/!", "", $buffer);
        $arr = array("\r\n", "\r", "\n", "\t", "  ", "    ", "    ");
        $rep = array("", "", "", "", " ", " ", " ");
        $buffer = str_replace($arr, $rep, $buffer);
        $buffer = preg_replace("/\\s*([\\{\\}:,])\\s*/", "\$1", $buffer);
        $buffer = str_replace(';}', "}", $buffer);
        return $buffer;
    }
}