Exemplo n.º 1
0
function pl_editor_actions()
{
    $postdata = $_POST;
    $response = array();
    $response['post'] = $postdata;
    $mode = $postdata['mode'];
    $run = $postdata['run'];
    $pageID = $postdata['pageID'];
    $typeID = $postdata['typeID'];
    $response['dataAmount'] = isset($_SERVER['CONTENT_LENGTH']) ? (int) $_SERVER['CONTENT_LENGTH'] : 'No Value';
    if ($mode == 'save') {
        $draft = new EditorDraft();
        $tpl = new EditorTemplates();
        $map = $postdata['map_object'] = new PageLinesTemplates($tpl);
        if ($run == 'map' || $run == 'all' || $run == 'draft' || $run == 'publish') {
            $draft->save_draft($pageID, $typeID, $postdata['pageData']);
        } elseif ($run == 'revert') {
            $draft->revert($postdata, $map);
        }
        $response['state'] = $draft->get_state($pageID, $typeID, $map);
    } elseif ($mode == 'sections') {
        if ($run == 'reload') {
            global $editorsections;
            $editorsections->reset_sections();
            $available = $editorsections->get_sections();
            $response['result'] = $available;
        } elseif ($run == 'load') {
            $section_object = $postdata['object'];
            $section_unique_id = $postdata['uniqueID'];
            $draw = $postdata['draw'];
            global $pl_section_factory;
            if (is_object($pl_section_factory->sections[$section_object])) {
                global $post;
                $post = get_post($postdata['pageID']);
                $s = $pl_section_factory->sections[$section_object];
                // needs to be set.. ??
                $s->meta['content'] = array();
                $s->meta['unique'] = '';
                $s->meta['draw'] = $draw;
                $opts = $s->section_opts();
                $opts = is_array($opts) ? $opts : array();
                $response['opts'] = array_merge($opts, pl_standard_section_options($s));
                ob_start();
                $s->active_loading = true;
                $s->section_template();
                $section_template = ob_get_clean();
                ob_start();
                $s->section_head();
                $s->section_foot();
                $head_foot = ob_get_clean();
                if ($head_foot) {
                    $response['notice'] = true;
                } else {
                    $response['notice'] = false;
                }
                $response['template'] = $section_template == '' ? pl_blank_template() : $section_template;
            }
        }
    } elseif ($mode == 'settings') {
        $plpg = new PageLinesPage(array('mode' => 'ajax', 'pageID' => $pageID, 'typeID' => $typeID));
        $draft = new EditorDraft();
        $settings = new PageLinesOpts();
        if ($run == 'reset_global') {
            reset_global_settings();
        } elseif ($run == 'reset_local') {
            pl_reset_meta_settings($pageID);
        } elseif ($run == 'reset_type') {
            pl_reset_meta_settings($typeID);
        } elseif ($run == 'delete') {
            // delete clone index by keys
        } elseif ($run == 'exporter') {
            $data = $postdata['formData'];
            $data = stripslashes_deep($data);
            $fileOpts = new EditorFileOpts();
            $response['export'] = $fileOpts->init($data);
            $response['export_data'] = $data;
        } elseif ($run == 'reset_global_child') {
            $opts = array();
            $opts['global_import'] = $_POST['global_import'];
            $opts['type_import'] = $_POST['type_import'];
            $opts['page_tpl_import'] = $_POST['page_tpl_import'];
            $settings->reset_global_child($opts);
        } elseif ('reset_cache' == $run) {
            $settings->reset_caches();
        }
    } else {
        $response = apply_filters('pl_ajax_' . $mode, $response, $postdata);
    }
    // RESPONSE
    echo json_encode(pl_arrays_to_objects($response));
    die;
    // don't forget this, always returns 0 w/o
}
Exemplo n.º 2
0
 function get_options_config()
 {
     $opts_config = array();
     // BACKWARDS COMPATIBILITY
     add_action('override_metatab_register', array($this, 'get_opts_from_optionator'), 10, 2);
     foreach ($this->section_list as $key => $meta) {
         if ($this->in_factory($meta['object'])) {
             $s = $this->factory[$meta['object']];
             $s->meta = $meta;
             $opts_config[$s->meta['clone']] = array('name' => $s->name);
             $opts = array();
             // Grab the options
             $opts = $s->section_opts();
             // Deal with special case flags...
             if (is_array($opts)) {
                 foreach ($opts as $index => $opt) {
                     if (isset($opt['case'])) {
                         // Special Page Only Option (e.g. used in post loop)
                         if ($opt['case'] == 'special' && !$this->page->is_special()) {
                             unset($opts[$index]);
                         }
                         if ($opt['case'] == 'page' && !is_page()) {
                             unset($opts[$index]);
                         }
                         if ($opt['case'] == 'post' && !is_post()) {
                             unset($opts[$index]);
                         }
                     }
                 }
             }
             // For backwards compatibility with the older optionator format
             // It works by using a hook to hijack the 'register_metapanel' function
             // The hook then sets an attribute of this class to the array of options from the section
             if (!$opts || empty($opts)) {
                 $this->current_option_array = array();
                 // backwards comp
                 $s->section_optionator(array());
                 if (isset($this->current_option_array)) {
                     $opts = process_to_new_option_format($this->current_option_array);
                 }
             }
             // deals with legacy special stuff
             if (!empty($opts)) {
                 foreach ($opts as $okey => &$o) {
                     if ($o['type'] == 'multi') {
                         if (isset($o['opts']) && is_array($o['opts'])) {
                             foreach ($o['opts'] as $okeysub => &$osub) {
                                 if (!isset($osub['key'])) {
                                     $osub['key'] = $okeysub;
                                 }
                                 $this->opts_list[] = $osub['key'];
                             }
                             unset($osub);
                             // set by reference
                         }
                     } else {
                         if (!isset($o['key'])) {
                             $o['key'] = $okey;
                         }
                         $this->opts_list[] = $o['key'];
                     }
                 }
                 unset($o);
                 // set by reference
             }
             $opts = array_merge($opts, pl_standard_section_options($s));
             $opts_config[$s->meta['clone']]['opts'] = $opts;
         }
     }
     remove_action('override_metatab_register', array($this, 'get_opts_from_optionator'), 10, 2);
     foreach ($opts_config as $item => &$i) {
         $i['opts'] = $this->opts_add_values($i['opts']);
     }
     unset($i);
     return apply_filters('get_options_config', $opts_config);
 }