Esempio n. 1
0
 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);
 }
Esempio n. 2
0
 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);
 }