Microweber\Providers\LayoutsManager::template_save_css PHP Method

template_save_css() public method

public template_save_css ( $params )
    public function template_save_css($params)
    {
        $is_admin = $this->app->user_manager->is_admin();
        if ($is_admin == false) {
            return false;
        }
        if (is_string($params)) {
            $params = parse_params($params);
        }
        $ref_page = false;
        if (!isset($params['active_site_template'])) {
            if (!isset($params['content_id'])) {
                if (isset($_SERVER['HTTP_REFERER'])) {
                    $ref_page_url = $_SERVER['HTTP_REFERER'];
                    if ($ref_page_url != '') {
                        $ref_page_url_rel = str_ireplace(site_url(), '', $ref_page_url);
                        if ($ref_page_url_rel == '') {
                            $ref_page1 = $this->app->content_manager->homepage();
                        } else {
                            $ref_page1 = $this->app->content_manager->get_by_url($ref_page_url, true);
                        }
                        if (isset($ref_page1['id'])) {
                            $ref_page = $this->app->content_manager->get_by_id(intval($ref_page1['id']));
                        }
                    }
                }
            } else {
                $ref_page = $this->app->content_manager->get_by_id(intval($params['content_id']));
            }
            if (isset($ref_page['id']) and isset($ref_page['content_type']) and $ref_page['content_type'] != 'page') {
                $ref_page_parent = $this->app->content_manager->get_by_id(intval($ref_page['id']));
                if (isset($ref_page_partent['parent']) and intval($ref_page_partent['parent']) != 0) {
                    $ref_page = $this->app->content_manager->get_by_id(intval($ref_page_partent['id']));
                } else {
                    $ref_page_parents = $this->app->content_manager->get_parents(intval($ref_page['id']));
                    if (!empty($ref_page_parents)) {
                        $ref_page_parent = array_pop($ref_page_parents);
                        $ref_page = $this->app->content_manager->get_by_id($ref_page_parent);
                    }
                }
            }
        } else {
            $ref_page = $params;
        }
        if (!is_array($ref_page) or empty($ref_page)) {
            return false;
        }
        $pd = $ref_page;
        if ($is_admin == true and is_array($pd)) {
            $save_page = $pd;
            if (isset($save_page['layout_file']) and $save_page['layout_file'] == 'inherit') {
                $inherit_from_id = $this->app->content_manager->get_inherited_parent($save_page['id']);
                $inherit_from = $this->app->content_manager->get_by_id($inherit_from_id);
                if (is_array($inherit_from) and isset($inherit_from['active_site_template'])) {
                    $save_page['active_site_template'] = $inherit_from['active_site_template'];
                    $save_page['layout_file'] = $inherit_from['layout_file'];
                }
            }
            $template = false;
            if (!isset($save_page['active_site_template']) or $save_page['active_site_template'] == '') {
                $template = 'default';
            } elseif (isset($save_page['active_site_template'])) {
                $template = $save_page['active_site_template'];
            }
            if ($template == 'default') {
                $site_template_settings = $this->app->option_manager->get('current_template', 'template');
                if ($site_template_settings != false and $site_template_settings != 'default') {
                    $template = $site_template_settings;
                }
            }
            $final_file_blocks = array();
            if ($template != false) {
                if (isset($_POST['save_template_settings'])) {
                    $json = json_encode($_POST);
                    $option = array();
                    $option['option_value'] = $json;
                    $option['option_key'] = 'template_settings';
                    $option['option_group'] = 'template_' . $template;
                    save_option($option);
                }
                $template_folder = templates_path() . $template . DS;
                $template_url = templates_url() . $template . '/';
                $this_template_url = THIS_TEMPLATE_URL;
                $template_folder = userfiles_path() . 'css' . DS . $template . DS;
                if (!is_dir($template_folder)) {
                    mkdir_recursive($template_folder);
                }
                $live_edit_css = $template_folder . 'live_edit.css';
                $fcont = '';
                if (is_file($live_edit_css)) {
                    $fcont = file_get_contents($live_edit_css);
                }
                $css_cont = $fcont;
                $css_cont_new = $css_cont;
                //@import on top
                $sort_params = array();
                $sort_params2 = array();
                foreach ($params as $item) {
                    if (isset($item['selector']) and trim($item['selector']) == '@import' and isset($item['value'])) {
                        if ($item['value'] != 'reset') {
                            $sort_params[] = $item;
                        }
                    } else {
                        $sort_params2[] = $item;
                    }
                }
                $params = array_merge($sort_params, $sort_params2);
                foreach ($params as $item) {
                    $curr = '';
                    if (!isset($item['css']) and isset($item['property']) and isset($item['value'])) {
                        if ($item['value'] == 'reset') {
                            $item['css'] = 'reset';
                        } else {
                            if (isset($item['selector']) and trim($item['selector']) == '@import' and isset($item['value'])) {
                                $props = explode(',', $item['property']);
                                foreach ($props as $prop) {
                                    $curr .= $prop . ' ' . $item['value'] . ';';
                                }
                            } else {
                                $props = explode(',', $item['property']);
                                $curr = '';
                                foreach ($props as $prop) {
                                    if (isset($item['value']) and trim($item['value']) != '') {
                                        $curr .= $prop . ':' . $item['value'] . ';';
                                    }
                                }
                            }
                            if ($curr != '') {
                                $item['css'] = $curr;
                            }
                        }
                    }
                    if (isset($item['selector']) and trim($item['selector']) != '' and isset($item['css'])) {
                        $item['selector'] = str_ireplace('.element-current', '', $item['selector']);
                        $item['selector'] = str_ireplace('.mwfx', '', $item['selector']);
                        $item['selector'] = str_ireplace('.mw_image_resizer', '', $item['selector']);
                        $item['selector'] = str_ireplace('.ui-resizable', '', $item['selector']);
                        $item['selector'] = str_ireplace('.ui-draggable', '', $item['selector']);
                        $item['css'] = str_ireplace('background:url(;', '', $item['css']);
                        $item['css'] = str_ireplace('background:;', '', $item['css']);
                        $item['css'] = str_ireplace('background-image:url(;', '', $item['css']);
                        $item['css'] = str_ireplace('background-image: url("");', 'background-image: none;', $item['css']);
                        $sel = trim($item['selector']);
                        $css = trim($item['css']);
                        if (trim($sel) != '' and strlen($sel) > 2 and strlen($css) > 2) {
                            $delim = "\n /* {$sel} */ \n";
                            //$item["css"] = str_ireplace($this_template_url, '', $item["css"]);
                            //$item["css"] = str_ireplace($template_url, '', $item["css"]);
                            $item['css'] = str_ireplace('http://', '//', $item['css']);
                            $item['css'] = str_ireplace('https://', '//', $item['css']);
                            $is_existing = explode($delim, $css_cont_new);
                            if (!empty($is_existing)) {
                                $srings = $this->app->format->string_between($css_cont_new, $delim, $delim);
                                if ($srings != false) {
                                    $css_cont_new = str_ireplace($srings, '', $css_cont_new);
                                    $css_cont_new = str_ireplace($delim, '', $css_cont_new);
                                }
                            }
                            if (trim($item['css']) != 'reset' and trim($item['css']) != 'reset;') {
                                $css_cont_new .= $delim;
                                if (isset($sel) and trim($sel) == '@import') {
                                    $css_cont_new .= $sel . ' ' . $item['css'] . ' ';
                                } else {
                                    $css_cont_new .= $sel . ' { ' . $item['css'] . ' }';
                                }
                                $css_cont_new .= $delim;
                            }
                        }
                    }
                }
                $resp = array();
                $resp['url'] = $this->app->url_manager->link_to_file($live_edit_css);
                if ($css_cont_new != '' and $css_cont != $css_cont_new) {
                    file_put_contents($live_edit_css, $css_cont_new);
                    //  print $css_cont_new;
                }
                $resp['content'] = $css_cont_new;
                return $resp;
            }
        }
    }