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