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;
}
}
}