/** * Store the values selected in the Metaboxes * * @since 0.1.0 */ public function rb_store_mb_values($post_id) { $post = get_post($post_id); // Verify the nonce if (!isset($_POST[self::NONCE_NAME]) || !wp_verify_nonce($_POST[self::NONCE_NAME], basename(__FILE__))) { return $post_id; } // Get the post type $post_type = get_post_type_object($post->post_type); // Check current user permission if (!current_user_can($post_type->cap->edit_post, $post_id)) { return $post_id; } $fields = array(Resource_Booking_Res_Mb::$resource_type, Resource_Booking_Res_Mb::$resource_page_description_id, Resource_Booking_Res_Mb::$resource_open_from, Resource_Booking_Res_Mb::$resource_open_till, Resource_Booking_Res_Mb::$resource_works_overnight, Resource_Booking_Res_Mb::$resource_works_holidays, Resource_Booking_Res_Mb::$resource_slot_min, Resource_Booking_Res_Mb::$resource_slot_max, Resource_Booking_Res_Mb::$resource_slot_length); $fields_db_value = array(); foreach ($fields as $field) { $fields_db_value[$field["const"]] = get_post_meta($post->ID, $field["const"], true); } $fields_post_value = array(); foreach ($fields as $field) { $fields_post_value[$field["const"]] = isset($_REQUEST[$field["id"]]) ? $_REQUEST[$field["id"]] : $field["default"]; } // Validate the values $fields = array(Resource_Booking_Res_Mb::$resource_type); foreach ($fields as $field) { $fields_post_value[$field["const"]] = sanitize_text_field($fields_post_value[$field["const"]]); } $fields = array(Resource_Booking_Res_Mb::$resource_page_description_id); foreach ($fields as $field) { $fields_post_value[$field["const"]] = is_numeric($fields_post_value[$field["const"]]) ? $fields_post_value[$field["const"]] : $field["default"]; } $fields = array(Resource_Booking_Res_Mb::$resource_open_from, Resource_Booking_Res_Mb::$resource_open_till, Resource_Booking_Res_Mb::$resource_slot_min, Resource_Booking_Res_Mb::$resource_slot_max, Resource_Booking_Res_Mb::$resource_slot_length); foreach ($fields as $field) { $fields_post_value[$field["const"]] = Resource_Booking_Res_Mb::check_if_valid_time_or_default($fields_post_value[$field["const"]], $field["default"]); } $fields = array(Resource_Booking_Res_Mb::$resource_works_overnight, Resource_Booking_Res_Mb::$resource_works_holidays); foreach ($fields as $field) { $fields_post_value[$field["const"]] = Resource_Booking_Res_Mb::check_if_valid_checkbox_or_default($fields_post_value[$field["const"]], $field["default"]); } $fields = array(Resource_Booking_Res_Mb::$resource_type, Resource_Booking_Res_Mb::$resource_page_description_id, Resource_Booking_Res_Mb::$resource_open_from, Resource_Booking_Res_Mb::$resource_open_till, Resource_Booking_Res_Mb::$resource_works_overnight, Resource_Booking_Res_Mb::$resource_works_holidays, Resource_Booking_Res_Mb::$resource_slot_min, Resource_Booking_Res_Mb::$resource_slot_max, Resource_Booking_Res_Mb::$resource_slot_length); foreach ($fields as $field) { if ($fields_post_value[$field["const"]] != $fields_db_value[$field["const"]]) { update_post_meta($post_id, $field["const"], $fields_post_value[$field["const"]]); } } $rb_db = new Resource_Booking_DB(); $resource_name = $post->post_title; $resource_type = $fields_post_value[self::RESOURCE_TYPE]; $rb_db->insert_update_resources_table($post_id, $resource_name, $resource_type); return $post_id; }