function create_layout() { $layout_ids = $_POST['data']; $stylesheet = $_POST['stylesheet']; $layout_slug = !empty($_POST['layout_slug']) ? $_POST['layout_slug'] : false; $load_dev = $_POST['load_dev'] == 1 ? true : false; $post_type = isset($_POST['new_post']) ? $_POST['new_post'] : false; $parsed = false; if (empty($layout_ids)) { $this->_out(new Upfront_JsonResponse_Error("No such layout")); } upfront_switch_stylesheet($stylesheet); if (is_string($layout_ids)) { $layout_ids = Upfront_EntityResolver::ids_from_url($layout_ids); $parsed = true; } // Start by nulling out the layout $layout = false; // Check if we're to inherit a layout from a page template if (!empty($_POST['use_existing'])) { // Resolve existing page template to a layout $tpl = preg_replace('/page_tpl-(.*)\\.php/', '\\1', $_POST['use_existing']); $theme = Upfront_ChildTheme::get_instance(); $settings = $theme->get_theme_settings(); if (!empty($tpl) && !empty($settings)) { $required_pages = $settings->get('required_pages'); if (!empty($required_pages)) { $required_pages = json_decode($required_pages, true); } $specificity = !empty($required_pages[$tpl]['layout']) ? $required_pages[$tpl]['layout'] : false; if (!empty($specificity)) { $template_layout = Upfront_Layout::from_entity_ids(array('specificity' => $specificity)); if (!empty($template_layout) && !$template_layout->is_empty()) { $layout = $template_layout; $layout->set('layout', $layout_ids); $layout->set('current_layout', $layout_ids['specificity']); } } } } // If we still don't have a template set, make one up if (empty($layout)) { $layout = Upfront_Layout::create_layout($layout_ids, $layout_slug); } global $post, $upfront_ajax_query; if (!$upfront_ajax_query) { $upfront_ajax_query = false; } if ($post_type) { $post = Upfront_PostModel::create($post_type); // set new layout IDS based on the created post ID $cascade = array('type' => 'single', 'item' => $post_type, 'specificity' => $post->ID); $layout_ids = Upfront_EntityResolver::get_entity_ids($cascade); } else { $post = $post; if ($post && is_singular()) { $layout_ids = Upfront_EntityResolver::get_entity_ids(); } else { if ($_POST['post_id']) { $posts = get_posts(array('include' => $_POST['post_id'], 'suppress_filters' => false)); if (sizeof($posts)) { $post = $posts[0]; } } } } $response = array('post' => $post, 'layout' => $layout->to_php(), 'cascade' => $layout_ids, 'query' => $upfront_ajax_query); $this->_out(new Upfront_JsonResponse_Success($response)); }
function fetch_post($data) { if (is_numeric($data['id'])) { $post = get_post($data['id']); } elseif ($data['id'] === "fake_post") { $posts = get_posts(array('orderby' => 'rand', 'posts_per_page' => 1)); if (!empty($posts[0])) { $post = $posts[0]; } else { return $this->_out(new Upfront_JsonResponse_Error('Error')); } } if ($post) { if (!empty($data['filterContent'])) { $post->post_content = apply_filters('the_content', $post->post_content); $post->post_title = apply_filters('the_title', $post->post_title); $post->post_excerpt = apply_filters('the_excerpt', $post->post_excerpt); } if (!empty($data['withAuthor'])) { $post->author = $this->remove_private_user_fields(new WP_User($post->post_author)); } if (!empty($data['withMeta'])) { $post->meta = $this->parse_single_meta(get_metadata('post', $post->ID)); } $post->permalink = get_permalink($post->ID); $post->sticky = is_sticky($post->ID); $post->is_new = false; $this->_out(new Upfront_JsonResponse_Success($post)); } else { if ($data['id'] === '0') { //New post $post_type = $data['post_type'] ? $data['post_type'] : 'post'; $post = Upfront_PostModel::create($post_type, 'Please enter your new ' . $post_type . ' title here', 'Your ' . $post_type . ' content goes here. Have fun writing :)'); if ($post_type == 'page') { $post->post_content = 'Type your page content here. Feel free to add some elements from the left sidebar.'; } $post->is_new = true; $post->sticky = false; $this->_out(new Upfront_JsonResponse_Success($post)); } } $this->_out(new Upfront_JsonResponse_Error("Post not found.")); }