/** * Save View configuration * * @access public * @param mixed $post_id * @return void */ function save_postdata($post_id) { if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } // validate post_type if (!isset($_POST['post_type']) || 'gravityview' != $_POST['post_type']) { return; } // validate user can edit and save post/page if ('page' == $_POST['post_type']) { if (!current_user_can('edit_page', $post_id)) { return; } } else { if (!current_user_can('edit_post', $post_id)) { return; } } do_action('gravityview_log_debug', '[save_postdata] Saving View post type.', $_POST); $statii = array(); // check if this is a start fresh View if (isset($_POST['gravityview_select_form_nonce']) && wp_verify_nonce($_POST['gravityview_select_form_nonce'], 'gravityview_select_form')) { $form_id = !empty($_POST['gravityview_form_id']) ? $_POST['gravityview_form_id'] : ''; // save form id $statii['form_id'] = update_post_meta($post_id, '_gravityview_form_id', $form_id); } // Was this a start fresh? if (!empty($_POST['gravityview_form_id_start_fresh'])) { $statii['start_fresh'] = add_post_meta($post_id, '_gravityview_start_fresh', 1); } else { $statii['start_fresh'] = delete_post_meta($post_id, '_gravityview_start_fresh'); } // Check if we have a template id if (isset($_POST['gravityview_select_template_nonce']) && wp_verify_nonce($_POST['gravityview_select_template_nonce'], 'gravityview_select_template')) { $template_id = !empty($_POST['gravityview_directory_template']) ? $_POST['gravityview_directory_template'] : ''; // now save template id $statii['directory_template'] = update_post_meta($post_id, '_gravityview_directory_template', $template_id); } // save View Configuration metabox if (isset($_POST['gravityview_view_configuration_nonce']) && wp_verify_nonce($_POST['gravityview_view_configuration_nonce'], 'gravityview_view_configuration')) { // template settings if (empty($_POST['template_settings'])) { $_POST['template_settings'] = array(); } $statii['template_settings'] = update_post_meta($post_id, '_gravityview_template_settings', $_POST['template_settings']); $fields = array(); // Directory&single Visible Fields if (!empty($preset_fields)) { $fields = $preset_fields; } elseif (!empty($_POST['fields'])) { if (!is_array($_POST['fields'])) { // Fields are passed as a jQuery-serialized array, created in admin-views.js in the serializeForm method // Not using parse_str due to max_input_vars limitation $fields_holder = array(); GVCommon::gv_parse_str($_POST['fields'], $fields_holder); if (isset($fields_holder['fields'])) { // When parsed, there's a m $fields = $fields_holder['fields']; } else { do_action('gravityview_log_error', '[save_postdata] No `fields` key was found after parsing $fields string', $fields_holder); } } else { $fields = $_POST['fields']; } } $statii['directory_fields'] = update_post_meta($post_id, '_gravityview_directory_fields', $fields); // Directory Visible Widgets if (empty($_POST['widgets'])) { $_POST['widgets'] = array(); } $statii['directory_widgets'] = update_post_meta($post_id, '_gravityview_directory_widgets', $_POST['widgets']); } // end save view configuration do_action('gravityview_log_debug', '[save_postdata] Update Post Meta Statuses (also returns false if nothing changed)', array_map('intval', $statii)); }
/** * Maybe convert jQuery-serialized fields into array, otherwise return $_POST['fields'] array * * Fields are passed as a jQuery-serialized array, created in admin-views.js in the serializeForm method. * * @since 1.16.5 * * @uses GVCommon::gv_parse_str * * @return array Array of fields */ function _gravityview_process_posted_fields() { $fields = array(); if (!empty($_POST['fields'])) { if (!is_array($_POST['fields'])) { // We are not using parse_str() due to max_input_vars limitation with large View configurations $fields_holder = array(); GVCommon::gv_parse_str($_POST['fields'], $fields_holder); if (isset($fields_holder['fields'])) { $fields = $fields_holder['fields']; } else { do_action('gravityview_log_error', '[save_postdata] No `fields` key was found after parsing $fields string', $fields_holder); } } else { $fields = $_POST['fields']; } } return $fields; }