function save_layout_options($saved_options) { $layouts = get_option(XF_LAYOUTS); $templates = get_option(XF_TEMPLATES); $files = xtreme_load_templates(); $desc = xtreme_description_array(); $this->classes = xtreme_classes_array(); $sanitized = sanitize_title($saved_options['xc_templayout']['nicename']['value']); $name = strtolower($sanitized); if ($saved_options['xc_templayout']['mode']['value'] === 'add') { $key = 'xf_layout-' . $name; } if ($saved_options['xc_templayout']['mode']['value'] === 'edit') { $key = $saved_options['xc_templayout']['layoutname']['value']; } $title = strip_tags($saved_options['xc_templayout']['nicename']['value']); $title = apply_filters('wptexturize', $title); $title = apply_filters('convert_chars', $title); $title = apply_filters('trim', $title); $layouts[$key] = $saved_options['xc_templayout']; $layouts[$key]['layoutname']['value'] = $key; $layouts[$key]['nicename']['value'] = $title; $layouts[$key]['description']['value'] = $desc[$saved_options['xc_templayout']['columnlayout']['value']]; $layouts[$key]['mainclass']['value'] = $this->classes[$saved_options['xc_templayout']['columnlayout']['value']]; $i = 0; $templ = false; foreach ($files as $file => $data) { $field = substr($data['metavalue'], 0, -4); if (1 == $_POST['xc_templayout-' . $field . '-value']) { $i++; $templ[$file] = $key; } elseif (0 == $_POST['xc_templayout-' . $field . '-value']) { if ($templates[$file] === $key) { $templ[$file] = 'xf_layout-default'; } } } if ($templ) { $templates = array_merge($templates, $templ); } else { wp_redirect(admin_url('admin.php?page=xtreme_layouts&mode=add_layout&layout=' . esc_attr($key) . '&error=1')); exit; } foreach ($templates as $tpl => $f) { if (!array_key_exists($tpl, $files)) { unset($templates[$tpl]); } } $clear = array_unique(array_values($templates)); $unique_templates = array_count_values($templates); $count_layouts = count($layouts); if ($count_layouts > count($unique_templates)) { foreach ($layouts as $layout => $data) { if (!in_array($layout, $clear)) { if ($layout === 'xf_layout-default') { wp_redirect(admin_url('admin.php?page=xtreme_layouts&mode=edit_layout&layout=' . esc_attr($key) . '&error=2')); exit; } else { unset($layouts[$layout]); } } } } if (!isset($layouts[$key])) { wp_redirect(admin_url('admin.php?page=xtreme_layouts&mode=edit_layout&layout=' . esc_attr($key) . '&error=3')); exit; } if ($layouts[$key]['mode']['value'] === 'add' || $layouts[$key]['mode']['value'] === 'edit') { if ($i === 0) { $redirect = admin_url('admin.php?page=xtreme_layouts&mode=add_layout&error=1'); wp_redirect($redirect); exit; } } update_option(XF_LAYOUTS, $layouts); update_option(XF_TEMPLATES, $templates); }
function save_default_layout() { $this->layouts = get_option(XF_LAYOUTS); $this->options = get_option(XF_OPTIONS); $this->desc = xtreme_description_array(); $this->classes = xtreme_classes_array(); $this->layoutmode = (int) xtreme_is_layout_2(); $default = $this->options['xc_layout']; $this->layouts['xf_layout-default'] = $default; $this->layouts['xf_layout-default']['description']['value'] = $this->desc[$this->options['xc_layout']['columnlayout']['value']]; $this->layouts['xf_layout-default']['mainclass']['value'] = $this->classes[$this->options['xc_layout']['columnlayout']['value']]; $this->layouts['xf_layout-default']['is_layout_2']['value'] = $this->layoutmode; update_option(XF_LAYOUTS, $this->layouts); }