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