public function save_layouts_css_framework_option_callback() { if (user_can_edit_layouts() === false) { die(WPDD_Utils::ajax_caps_fail(__METHOD__)); } if ($_POST && wp_verify_nonce($_POST['set-layout-css-framework-nonce'], 'set-layout-css-framework-nonce')) { $framework_saved = $this->set_framework($_POST['css_framework']); $current = $this->get_current_framework_name(); $send = wp_json_encode(array('message' => array('text' => sprintf(__('The CSS framework has been set to %s. Please make sure that your theme supports %s.', 'ddl-layouts'), $current, $current), 'is_saved' => $framework_saved))); $this->set_up_features(); $this->options_manager->update_options(self::FRAMEWORK_SET, true, true); } else { $send = wp_json_encode(array('error' => __(sprintf('Nonce problem: apparently we do not know where the request comes from. %s', __METHOD__), 'ddl-layouts'))); } die($send); }
public function duplicate_layout_callback() { // Clear any errors that may have been rendered that we don't have control of. if (ob_get_length()) { ob_clean(); } if (user_can_create_layouts() === false) { die(WPDD_Utils::ajax_caps_fail(__METHOD__)); } if ($_POST && wp_verify_nonce($_POST['layout-duplicate-layout-nonce'], 'layout-duplicate-layout-nonce')) { global $wpdb, $wpddlayout; $result = $wpdb->get_row($wpdb->prepare("SELECT ID, post_name FROM {$wpdb->posts} WHERE post_type=%s AND ID=%d AND post_status = 'publish'", WPDDL_LAYOUTS_POST_TYPE, $_POST['layout_id'])); if ($result) { $layout_json = WPDD_Layouts::get_layout_settings($result->ID); $layout_array = json_decode($layout_json, true); $layout_name_base = __('Copy of ', 'ddl-layouts') . str_replace('\\', '\\\\', $layout_array['name']); $layout_name = $layout_name_base; $count = 1; while ($wpddlayout->does_layout_with_this_name_exist($layout_name)) { $layout_name = $layout_name_base . ' - ' . $count; $count++; } $postarr = array('post_title' => $layout_name, 'post_content' => '', 'post_status' => 'publish', 'post_type' => WPDDL_LAYOUTS_POST_TYPE); $post_id = wp_insert_post($postarr); $post_slug = $wpdb->get_var($wpdb->prepare("SELECT post_name FROM {$wpdb->posts} WHERE post_type=%s AND ID=%d", WPDDL_LAYOUTS_POST_TYPE, $post_id)); $layout_array['name'] = $layout_name; $layout_array['slug'] = $post_slug; WPDD_Layouts::save_layout_settings($post_id, $layout_array); $wpddlayout->register_strings_for_translation($post_id); } $send = $wpddlayout->listing_page->get_send(isset($_GET['status']) && $_GET['status'] === 'trash' ? $_GET['status'] : 'publish', false, $post_id, $post_id, '', $_POST); } else { $send = wp_json_encode(array('error' => __(sprintf('Nonce problem: apparently we do not know where the request comes from. %s', __METHOD__), 'ddl-layouts'))); } die($send); }
function import_layouts_ajax_callback() { if (user_can_edit_layouts() === false) { die(WPDD_Utils::ajax_caps_fail(__METHOD__)); } //if ( !wp_verify_nonce($_POST['nonce'], 'layouts-import-nonce') ){ if (!wp_verify_nonce($_POST['layouts-import-nonce'], 'layouts-import-nonce')) { die(WPDD_Utils::ajax_nonce_fail(__METHOD__)); } /** * TODo: * Show message for old browsers ***/ $message = ''; $status = 'ok'; $continue = 'false'; $stop_file = ''; $overwritten = 0; $deleted = 0; $saved_css = 0; $saved_layouts = 0; $next_file = ''; $total_files = 0; $is_zip = 0; $file_name = ''; $overwrite = $_POST['layouts_overwrite'] == 'false' ? false : true; $delete = $_POST['layouts_delete'] == 'false' ? false : true; $overwrite_assignment = $_POST['overwrite_layouts_assignment'] == 'false' ? false : true; if (isset($_FILES['import-file']) || isset($_POST['file'])) { $first_import = true; if (isset($_FILES['import-file'])) { $upload_dir = wp_upload_dir(); $file_name = $upload_dir['path'] . '/' . $_FILES['import-file']['name']; move_uploaded_file($_FILES['import-file']['tmp_name'], $file_name); $file['tmp_name'] = $file_name; } else { $file['tmp_name'] = $_POST['file_name']; $first_import = false; $file_name = stripcslashes($_POST['file_name']); $next_file = stripcslashes($_POST['file']); if (isset($_POST['skip_file'])) { $skip_file = $_POST['skip_file']; } } $info = pathinfo($file_name); if ($info['extension'] == 'zip') { //Return total and list of files from zip if (isset($_FILES['import-file'])) { $zip_file_list = array(); $zip = zip_open($file['tmp_name']); if (is_resource($zip)) { $is_zip = 1; while (($zip_entry = zip_read($zip)) !== false) { if (self::get_extension(zip_entry_name($zip_entry)) === 'ddl' || self::get_extension(zip_entry_name($zip_entry)) === 'css') { $total_files++; $zip_file_list[] = zip_entry_name($zip_entry); } } } else { $message = __('Incorrect zip file.', 'ddl-layouts'); $status = 'error'; } $out = array('message' => $message, 'status' => $status, 'total_files' => $total_files, 'file_name' => $file_name, 'file_list' => $zip_file_list); die(wp_json_encode($out)); } $zip = zip_open($file['tmp_name']); if (is_resource($zip)) { if (isset($_POST['imported_layouts'])) { $this->imported_layouts = $_POST['imported_layouts']; } while (($zip_entry = zip_read($zip)) !== false) { if ($continue == 'true' && (self::get_extension(zip_entry_name($zip_entry)) === 'ddl' || self::get_extension(zip_entry_name($zip_entry)) === 'css')) { zip_close($zip); break; } if (!empty($next_file) && $next_file != zip_entry_name($zip_entry)) { continue; } if (self::get_extension(zip_entry_name($zip_entry)) === 'ddl') { $data = @zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); $name = self::get_file_nicename(zip_entry_name($zip_entry)); $this->layout_handle_save($data, $name, $overwrite, $delete, $overwrite_assignment); $message = __(sprintf('File %s processed', zip_entry_name($zip_entry)), 'ddl-layouts'); } elseif (self::get_extension(zip_entry_name($zip_entry)) === 'css') { $data = @zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); $this->save_css($data, $overwrite); $message = __(sprintf('File %s processed', zip_entry_name($zip_entry)), 'ddl-layouts'); } if (self::get_extension(zip_entry_name($zip_entry)) === 'ddl' || self::get_extension(zip_entry_name($zip_entry)) === 'css') { $continue = 'true'; if (isset($_POST['last_file']) && $_POST['last_file'] == 1 && $delete) { if ($delete) { $this->handle_layouts_to_be_deleted(); } zip_close($zip); if (file_exists($file_name)) { unlink($file_name); } break; } } } } else { $message = __('Incorrect zip file.', 'ddl-layouts'); $status = 'error'; } } else { if ($info['extension'] == 'ddl') { $result = $this->handle_single_layout($file, $info, $overwrite, $delete, $overwrite_assignment); if ($delete) { $this->handle_layouts_to_be_deleted(); } if (file_exists($file_name)) { unlink($file_name); } $message = "Working with " . $_FILES['import-file']['name']; } else { if ($info['extension'] == 'css') { global $wpddlayout; $data = file_get_contents($file['tmp_name']); $css = $wpddlayout->css_manager->get_layouts_css(); if ($data == $css) { $message = __("The CSS you're trying to import is the same as saved in database.", 'ddl-layouts'); $status = 'error'; } elseif (!empty($data) && !$overwrite) { $message = __("Layouts already has CSS styling. Check "Overwrite any layout if it already exists", if you want to overwrite this CSS.", 'ddl-layouts'); $status = 'error'; } else { $result = $this->handle_single_css($file, $overwrite); if ($result === false) { $message = __('There was a problem saving the CSS.', 'ddl-layouts'); $status = 'error'; } else { if ($overwrite === false) { $css_message = __('The Layouts CSS was created.', 'ddl-layouts'); } else { $css_message = __('The Layouts CSS was overwritten.', 'ddl-layouts'); } $message = $css_message; } $this->handle_messages($result, $overwrite || $overwrite_assignment, $delete, true, $info['extension']); } if (file_exists($file_name)) { unlink($file_name); } } else { $message = __('The file type is not compatible with layouts. The imported files should be a single .ddl file, a single .css file or a .zip archive of .ddl and .css files.', 'ddl-layouts'); $status = 'error'; } } } } else { $message = __('There was a problem uploading the file. Check the file and try again', 'ddl-layouts'); $status = 'error'; } if ($status == 'ok') { } $overwritten = $this->layouts_overwritten; $deleted = $this->layouts_deleted; $saved_css = $this->css_saved; $saved_layouts = $this->layouts_saved; $out = array('message' => $message, 'status' => $status, 'file_name' => $file_name, 'overwritten' => $overwritten, 'deleted' => $deleted, 'saved_css' => $saved_css, 'saved_layouts' => $saved_layouts, 'imported_layouts' => $this->imported_layouts); die(wp_json_encode($out)); }
function save_css_settings() { if ($_POST && $_POST['action'] == 'ddl_layout_save_css_settings') { if (user_can_edit_layouts() === false) { die(WPDD_Utils::ajax_caps_fail(__METHOD__)); } if (!wp_verify_nonce($_POST['ddl_layout_css_settings_nonce'], 'ddl_layout_css_settings_nonce')) { die(WPDD_Utils::ajax_nonce_fail(__METHOD__)); } $mode = $_POST['layout_css_option']; $save_in = $this->css_settings_handle_mode($mode); if (isset($save_in['db_ok']) && $save_in['db_ok'] === false) { die(wp_json_encode(array("error" => __("There are problems saving this option in the database.", 'ddl-layouts')))); } else { if (isset($save_in['db_ok']) && $save_in['db_ok']) { $message = array("message" => __("CSS option saved.", 'ddl-layouts')); } } $copy_css = $save_in != $this->options_manager->get_options('mode'); if ($copy_css) { // we need to copy the css. $css = $this->get_layouts_css(); } $this->options_manager->update_options('mode', $save_in, true); if ($copy_css) { $this->handle_layout_css_save($css); } die(wp_json_encode($message)); } die(wp_json_encode(array("error" => __("Something went wrong communicating with the server", 'ddl-layouts')))); }
public function get_all_layouts_posts() { if (ob_get_length()) { ob_clean(); } if (user_can_edit_layouts() === false) { die(WPDD_Utils::ajax_caps_fail(__METHOD__)); } if ($_POST && wp_verify_nonce($_POST['nonce'], 'ddl_listing_show_posts_nonce')) { $data = json_decode(stripslashes($_POST['data']), true); $layout = (object) $data['layout']; $post_types = isset($data['post_types']) ? $data['post_types'] : array(); $posts = $this->get_posts_where_used((object) $layout, $post_types); $send = wp_json_encode(array('Data' => array('posts' => $posts))); } else { $send = WPDD_Utils::ajax_nonce_fail(__METHOD__); } die($send); }
public function ddl_switch_layout_from_post_callback() { if (WPDD_Utils::user_not_admin()) { die(WPDD_Utils::ajax_caps_fail(__METHOD__)); } if (wp_verify_nonce($_POST['ddl_switch_layout_from_post_nonce'], 'ddl_switch_layout_from_post_nonce')) { $this->post_id = $_POST['post_id']; $meta = $this->update_layout_for_page($_POST['layout_slug'], $_POST['post_id']); $send = wp_json_encode(array('message' => array('meta' => $meta, 'current' => $_POST['layout_id'], 'post_id' => $this->post_id, 'key' => WPDDL_LAYOUTS_META_KEY))); } else { $send = WPDD_Utils::ajax_nonce_fail(__METHOD__); } die($send); }
public function set_layouts_post_types_on_usage_change() { if (user_can_assign_layouts() === false) { die(WPDD_Utils::ajax_caps_fail(__METHOD__)); } if ($_POST && wp_verify_nonce($_POST['layout-set-change-post-types-nonce'], 'layout-set-change-post-types-nonce')) { $post_types = isset($_POST[self::POST_TYPES_OPTION_NAME]) && is_array($_POST[self::POST_TYPES_OPTION_NAME]) ? array_unique($_POST[self::POST_TYPES_OPTION_NAME]) : array(); if (isset($_POST['extras'])) { $extras = $_POST['extras']; if (isset($extras['post_types']) && count($extras['post_types']) > 0) { $types_to_batch = $extras['post_types']; } } if (isset($extras) && isset($types_to_batch)) { $send = wp_json_encode(array('message' => array('changed' => $this->handle_set_option_and_bulk_at_once($_POST['layout_id'], $post_types, null), 'done' => 'yes'))); } else { $send = wp_json_encode(array('message' => array('changed' => $this->handle_post_type_data_save($_POST['layout_id'], $post_types, true), 'done' => 'yes'))); } } else { $send = wp_json_encode(array('error' => __(sprintf('Nonce problem: apparently we do not know where the request comes from. %s', __METHOD__), 'ddl-layouts'))); } die($send); }
function get_posts_for_post_content_json() { if (user_can_edit_layouts() === false) { die(WPDD_Utils::ajax_caps_fail(__METHOD__)); } if ($_POST && wp_verify_nonce($_POST['nonce'], 'ddl-post-content-post-type-select')) { $send = wp_json_encode(array('Data' => $this->show_posts_options($_POST['post_type'], get_ddl_name_attr('selected_post'), $_POST['selected'], $_POST['page'], $_POST['page']))); } else { $send = wp_json_encode(array('error' => __(sprintf('Nonce problem: apparently we do not know where the request comes from. %s', __METHOD__), 'ddl-layouts'))); } die($send); }
public static function ddl_set_max_posts_amount() { if (user_can_edit_layouts() === false) { die(WPDD_Utils::ajax_caps_fail(__METHOD__)); } if ($_POST && wp_verify_nonce($_POST['ddl_max-posts-num_nonce'], 'ddl_max-posts-num_nonce')) { $update = false; $amount = isset($_POST['amount_posts']) ? $_POST['amount_posts'] : self::$max_posts_num_option; if ($amount !== self::$max_posts_num_option) { self::$max_posts_num_option = $amount; $update = self::set_option_max_num_posts($amount); } if ($update) { $send = wp_json_encode(array('Data' => array('message' => __('Updated option', 'ddl-layouts'), 'amount' => $amount))); } else { $send = wp_json_encode(array('Data' => array('error' => __('Option not updated', 'ddl-layouts'), 'amount' => $amount))); } } else { $send = wp_json_encode(array('error' => __(sprintf('Nonce problem: apparently we do not know where the request comes from. %s', __METHOD__), 'ddl-layouts'))); } die($send); }
public function view_layout_from_editor_callback() { global $wpddlayout; if (user_can_assign_layouts() === false) { die(WPDD_Utils::ajax_caps_fail(__METHOD__)); } if ($_POST && wp_verify_nonce($_POST['ddl-view-layout-nonce'], 'ddl-view-layout-nonce')) { $layout = WPDD_Layouts::get_layout_settings($_POST['layout_id'], true); if ($layout && isset($layout->has_child) && ($layout->has_child === 'true' || $layout->has_child === true)) { $send = wp_json_encode(array('message' => __("This layout contains a child layout and can't be viewed directly.", 'ddl-layouts') . '<br />' . __("You'll need to switch to one of the child layouts and view it.", 'ddl-layouts'))); } else { $items = $this->get_where_used_x_amount_of_posts($_POST['layout_id'], false, 3); $posts = $items->posts; $layout_post_types = $wpddlayout->post_types_manager->get_layout_post_types($_POST['layout_id']); $loops = $wpddlayout->layout_post_loop_cell_manager->get_layout_loops($_POST['layout_id']); if (count($posts) === 0 && count($loops) === 0 && count($layout_post_types) === 0) { $send = wp_json_encode(array('message' => __(sprintf("This layout is not assigned to any content. %sFirst, assign it to content and then you can view it on the site's front-end. %sYou can assign this layout to content at the bottom of the layout editor.", '<br>', '<br>'), 'ddl-layouts'))); } else { $items = array(); foreach ($layout_post_types as $post_type) { $push = $this->get_x_posts_of_type($post_type, $_POST['layout_id'], 1); if (is_array($push)) { $posts = array_merge($posts, $push); } } foreach ($posts as $post) { $post_types = $wpddlayout->post_types_manager->get_post_types_from_wp(); $label = $post_types[$post->post_type]->labels->singular_name; $labels = $post_types[$post->post_type]->labels->name; $item = array('href' => get_permalink($post->ID), 'title' => $post->post_title, 'type' => $label, 'types' => $labels); if (in_array($item, $items) === false) { $items[] = $item; } } foreach ($loops as $loop) { $push = $wpddlayout->layout_post_loop_cell_manager->get_loop_display_object($loop); if (null !== $push) { array_push($items, $push); } } $send = wp_json_encode(array('Data' => $items, 'message' => __(sprintf("This layout is not assigned to any content. %sFirst, assign it to content and then you can view it on the site's front-end. %sYou can assign this layout to content at the bottom of the layout editor.", '<br>', '<br>'), 'ddl-layouts'), 'no_preview_message' => __('No previews available', 'ddl-layouts'))); } } } else { $send = wp_json_encode(array('error' => __(sprintf('Nonce problem: apparently we do not know where the request comes from. %s', __METHOD__), 'ddl-layouts'))); } die($send); }