From 57f4284fb973860e4a44c1a37fc893cf5ba6ae5a Mon Sep 17 00:00:00 2001 From: Hoang Huu Date: Thu, 31 Oct 2019 15:21:48 +0700 Subject: [PATCH] Fix submission bug. --- inc/class-opalestate-install.php | 3 +- inc/property/class-metabox-property-admin.php | 2 +- .../class-metabox-property-submission.php | 278 +++++++++-------- .../class-opalestate-submission.php | 288 +++++++++--------- templates/submission/completed.php | 50 +-- 5 files changed, 318 insertions(+), 303 deletions(-) diff --git a/inc/class-opalestate-install.php b/inc/class-opalestate-install.php index 0090625b..19768a24 100755 --- a/inc/class-opalestate-install.php +++ b/inc/class-opalestate-install.php @@ -93,8 +93,6 @@ class Opalestate_Install { $options['currency_position'] = 'before'; $options['measurement_unit'] = 'sqft'; $options['google_map_api_keys'] = 'AIzaSyCfMVNIa7khIqYHCw6VBn8ShUWWm4tjbG8'; - $options['admin_approve'] = 'on'; - $options['require_input_price'] = 'on'; $options['from_name'] = get_bloginfo( 'name' ); $options['from_email'] = get_bloginfo( 'admin_email' ); $options['message_log'] = 1; @@ -129,6 +127,7 @@ class Opalestate_Install { $options['enable_agency_reviews'] = 'on'; $options['enable_agent_reviews'] = 'on'; + $options['admin_approve'] = 'on'; $options['enable_submission_tab_media'] = 'on'; $options['enable_submission_tab_location'] = 'on'; $options['enable_submission_tab_amenities'] = 'on'; diff --git a/inc/property/class-metabox-property-admin.php b/inc/property/class-metabox-property-admin.php index a791201e..1b38fa0a 100755 --- a/inc/property/class-metabox-property-admin.php +++ b/inc/property/class-metabox-property-admin.php @@ -240,7 +240,7 @@ class Opalestate_Property_MetaBox { 'name' => esc_html__( 'Regular Price', 'opalestate-pro' ) . $currency, 'type' => 'text', 'description' => esc_html__( 'Enter amount without currency', 'opalestate-pro' ), - 'attributes' => opalestate_get_option( 'require_input_price' ) ? [ 'required' => 'required' ] : '', + 'attributes' => [ 'required' => 'required' ], 'before_row' => '

' . ( is_admin() ? "" : esc_html__( 'Price', 'opalestate-pro' ) ) . '

', // callback ], [ diff --git a/inc/submission/class-metabox-property-submission.php b/inc/submission/class-metabox-property-submission.php index 153e40b9..8f544e57 100755 --- a/inc/submission/class-metabox-property-submission.php +++ b/inc/submission/class-metabox-property-submission.php @@ -25,12 +25,12 @@ class Opalestate_Property_MetaBox_Submission { * @return array */ public function register_form( array $metaboxes ) { - + $prefix = OPALESTATE_PROPERTY_PREFIX; $fields = array_merge( $this->metaboxes_general_fields_front(), - + $this->is_enabled_tab( 'media' ) ? $this->metaboxes_media_fields() : [], $this->is_enabled_tab( 'location' ) ? $this->metaboxes_location_fields() : [], $this->is_enabled_tab( 'information' ) ? $this->metaboxes_info_fields() : [], @@ -59,14 +59,13 @@ class Opalestate_Property_MetaBox_Submission { public function get_fields_groups() { return [ 'general' => [ 'status' => true, 'title' => esc_html__( 'General', 'opalestate-pro' ) ], - 'media' => [ 'status' => $this->is_enabled_tab( 'media' ), 'title' => esc_html__( 'Media', 'opalestate-pro' ) ], 'location' => [ 'status' => $this->is_enabled_tab( 'location' ), 'title' => esc_html__( 'Location', 'opalestate-pro' ) ], 'information' => [ 'status' => $this->is_enabled_tab( 'information' ), 'title' => esc_html__( 'Information', 'opalestate-pro' ) ], 'amenities' => [ 'status' => $this->is_enabled_tab( 'amenities' ), 'title' => esc_html__( 'Amenities', 'opalestate-pro' ) ], 'facilities' => [ 'status' => $this->is_enabled_tab( 'facilities' ), 'title' => esc_html__( 'Facilities', 'opalestate-pro' ) ], 'apartments' => [ 'status' => $this->is_enabled_tab( 'apartments' ), 'title' => esc_html__( 'Apartments', 'opalestate-pro' ) ], - 'floor_plans' => [ 'status' => $this->is_enabled_tab( 'floor_plans' ), 'title' => esc_html__( 'Floor plans', 'opalestate-pro' ) ] + 'floor_plans' => [ 'status' => $this->is_enabled_tab( 'floor_plans' ), 'title' => esc_html__( 'Floor plans', 'opalestate-pro' ) ], ]; } @@ -77,7 +76,7 @@ class Opalestate_Property_MetaBox_Submission { if ( ! empty( $_GET['id'] ) ) { $post = get_post( intval( $_GET['id'] ) ); $featured_image = wp_get_attachment_image_src( get_post_thumbnail_id( absint( $_GET['id'] ) ) ); - $post_id = $post->ID; + $post_id = $post->ID; } $currency = opalestate_currency_symbol() ? ' (' . opalestate_currency_symbol() . ')' : ' ($)'; @@ -95,7 +94,6 @@ class Opalestate_Property_MetaBox_Submission { 'default' => $post_id, ], - [ 'name' => esc_html__( 'Title', 'opalestate-pro' ) . ' *', 'id' => $prefix . 'title', @@ -107,20 +105,19 @@ class Opalestate_Property_MetaBox_Submission { ], ], [ - 'name' => esc_html__( 'Description', 'opalestate-pro' ), - 'id' => $prefix . 'text', - 'type' => 'wysiwyg', - 'default' => ! empty( $post ) ? $post->post_content : '', + 'name' => esc_html__( 'Description', 'opalestate-pro' ), + 'id' => $prefix . 'text', + 'type' => 'wysiwyg', + 'default' => ! empty( $post ) ? $post->post_content : '', 'before_row' => '
', ], - [ 'id' => $prefix . 'price', 'name' => esc_html__( 'Regular Price', 'opalestate-pro' ) . $currency . ' *', 'type' => 'text', 'description' => esc_html__( 'Enter amount without currency', 'opalestate-pro' ), - 'attributes' => opalestate_get_option( 'require_input_price' ) ? [ 'required' => 'required' ] : '', - 'before_row' => '
', // callback + 'attributes' => [ 'required' => 'required' ], + 'before_row' => '
', ], [ 'id' => $prefix . 'saleprice', @@ -141,26 +138,26 @@ class Opalestate_Property_MetaBox_Submission { 'description' => esc_html__( 'After Price Label (e.g. "per month")', 'opalestate-pro' ), ], [ - 'name' => esc_html__( 'Statuses', 'opalestate-pro' ), - 'id' => $prefix . 'status', - 'type' => 'taxonomy_select', - 'taxonomy' => 'opalestate_status', - 'class' => 'form-control', + 'name' => esc_html__( 'Statuses', 'opalestate-pro' ), + 'id' => $prefix . 'status', + 'type' => 'taxonomy_select', + 'taxonomy' => 'opalestate_status', + 'class' => 'form-control', 'attributes' => [ 'required' => 'required', ], - 'before_row' => '

', // callback + 'before_row' => '

', // callback ], [ - 'name' => esc_html__( 'Types', 'opalestate-pro' ), - 'id' => $prefix . 'type', - 'type' => 'taxonomy_select', - 'taxonomy' => 'opalestate_types', - 'class' => 'form-control', + 'name' => esc_html__( 'Types', 'opalestate-pro' ), + 'id' => $prefix . 'type', + 'type' => 'taxonomy_select', + 'taxonomy' => 'opalestate_types', + 'class' => 'form-control', 'attributes' => [ 'required' => 'required', ], - 'after_row' => '

', // callback + 'after_row' => '

', // callback ], ]; @@ -168,12 +165,11 @@ class Opalestate_Property_MetaBox_Submission { } public function metaboxes_media_fields() { + $id = 0; - $id = 0; - - if( isset($_GET['id']) ){ - $post_id = intval( $_GET['id'] ); - $id = get_post_thumbnail_id( $post_id ); + if ( isset( $_GET['id'] ) ) { + $post_id = intval( $_GET['id'] ); + $id = get_post_thumbnail_id( $post_id ); } $prefix = OPALESTATE_PROPERTY_PREFIX; @@ -183,11 +179,11 @@ class Opalestate_Property_MetaBox_Submission { 'id' => "{$prefix}featured_image", 'name' => esc_html__( 'Featured Image', 'opalestate-pro' ), 'type' => 'uploader', - 'single' => true, - 'value' => $id, + 'single' => true, + 'value' => $id, 'description' => esc_html__( 'Select one or more images to show as gallery', 'opalestate-pro' ), 'before_row' => '
', - + ], [ @@ -195,14 +191,14 @@ class Opalestate_Property_MetaBox_Submission { 'name' => esc_html__( 'Images Gallery', 'opalestate-pro' ), 'type' => 'uploader', 'description' => esc_html__( 'Select one or more images to show as gallery', 'opalestate-pro' ), - + ], [ 'id' => "{$prefix}video", 'name' => esc_html__( 'Video', 'opalestate-pro' ), 'type' => 'text_url', - 'before_row' => '
', + 'before_row' => '
', 'description' => esc_html__( 'Input for videos, audios from Youtube, Vimeo and all supported sites by WordPress. It has preview feature.', 'opalestate-pro' ), ], [ @@ -210,15 +206,15 @@ class Opalestate_Property_MetaBox_Submission { 'name' => esc_html__( '360° Virtual Tour', 'opalestate-pro' ), 'type' => 'textarea_small', 'description' => esc_html__( 'Input iframe to show 360° Virtual Tour.', 'opalestate-pro' ), - 'before_row' => '
' + 'before_row' => '
', ], [ 'id' => "{$prefix}attachments", 'name' => esc_html__( 'Attachments', 'opalestate-pro' ), 'type' => 'uploader', - 'before_row' => '
', - 'show_icon' => true, - 'accept' => 'application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'before_row' => '
', + 'show_icon' => true, + 'accept' => 'application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'options' => [ 'url' => true, // Hide the text input for the url ], @@ -244,40 +240,40 @@ class Opalestate_Property_MetaBox_Submission { 'before_row' => '
', ], [ - 'name' => esc_html__( 'Parking', 'opalestate-pro' ), - 'id' => $prefix . 'parking', - 'type' => 'text', - 'attributes' => array( - 'type' => 'number', + 'name' => esc_html__( 'Parking', 'opalestate-pro' ), + 'id' => $prefix . 'parking', + 'type' => 'text', + 'attributes' => [ + 'type' => 'number', 'pattern' => '\d*', - ), + ], 'sanitization_cb' => 'absint', - 'escape_cb' => 'absint', - 'description' => esc_html__( 'Enter number of Parking', 'opalestate-pro' ), + 'escape_cb' => 'absint', + 'description' => esc_html__( 'Enter number of Parking', 'opalestate-pro' ), ], [ - 'name' => esc_html__( 'Bedrooms', 'opalestate-pro' ), - 'id' => $prefix . 'bedrooms', - 'type' => 'text', - 'attributes' => array( - 'type' => 'number', + 'name' => esc_html__( 'Bedrooms', 'opalestate-pro' ), + 'id' => $prefix . 'bedrooms', + 'type' => 'text', + 'attributes' => [ + 'type' => 'number', 'pattern' => '\d*', - ), + ], 'sanitization_cb' => 'absint', - 'escape_cb' => 'absint', - 'description' => esc_html__( 'Enter number of bedrooms', 'opalestate-pro' ), + 'escape_cb' => 'absint', + 'description' => esc_html__( 'Enter number of bedrooms', 'opalestate-pro' ), ], [ - 'name' => esc_html__( 'Bathrooms', 'opalestate-pro' ), - 'id' => $prefix . 'bathrooms', - 'type' => 'text', - 'attributes' => array( - 'type' => 'number', + 'name' => esc_html__( 'Bathrooms', 'opalestate-pro' ), + 'id' => $prefix . 'bathrooms', + 'type' => 'text', + 'attributes' => [ + 'type' => 'number', 'pattern' => '\d*', - ), + ], 'sanitization_cb' => 'absint', - 'escape_cb' => 'absint', - 'description' => esc_html__( 'Enter number of bathrooms', 'opalestate-pro' ), + 'escape_cb' => 'absint', + 'description' => esc_html__( 'Enter number of bathrooms', 'opalestate-pro' ), ], [ 'name' => esc_html__( 'Plot Size', 'opalestate-pro' ), @@ -286,16 +282,16 @@ class Opalestate_Property_MetaBox_Submission { 'description' => esc_html__( 'Enter size of Plot as 20x30, 20x30x40, 20x30x40x50', 'opalestate-pro' ), ], [ - 'name' => esc_html__( 'Area Size', 'opalestate-pro' ), - 'id' => $prefix . 'areasize', - 'type' => 'text', - 'attributes' => array( - 'type' => 'number', + 'name' => esc_html__( 'Area Size', 'opalestate-pro' ), + 'id' => $prefix . 'areasize', + 'type' => 'text', + 'attributes' => [ + 'type' => 'number', 'pattern' => '\d*', - ), + ], 'sanitization_cb' => 'absint', - 'escape_cb' => 'absint', - 'description' => esc_html__( 'Enter size of area in sqft', 'opalestate-pro' ), + 'escape_cb' => 'absint', + 'description' => esc_html__( 'Enter size of area in sqft', 'opalestate-pro' ), ], [ 'name' => esc_html__( 'Orientation', 'opalestate-pro' ), @@ -304,43 +300,43 @@ class Opalestate_Property_MetaBox_Submission { 'description' => esc_html__( 'Enter Orientation of property', 'opalestate-pro' ), ], [ - 'name' => esc_html__( 'Living Rooms', 'opalestate-pro' ), - 'id' => "{$prefix}livingrooms", - 'type' => 'text', - 'attributes' => array( - 'type' => 'number', + 'name' => esc_html__( 'Living Rooms', 'opalestate-pro' ), + 'id' => "{$prefix}livingrooms", + 'type' => 'text', + 'attributes' => [ + 'type' => 'number', 'pattern' => '\d*', - ), + ], 'sanitization_cb' => 'absint', - 'escape_cb' => 'absint', - 'description' => esc_html__( 'Enter Number of Living Rooms', 'opalestate-pro' ), + 'escape_cb' => 'absint', + 'description' => esc_html__( 'Enter Number of Living Rooms', 'opalestate-pro' ), ], [ - 'name' => esc_html__( 'Kitchens', 'opalestate-pro' ), - 'id' => "{$prefix}kitchens", - 'type' => 'text', - 'attributes' => array( - 'type' => 'number', + 'name' => esc_html__( 'Kitchens', 'opalestate-pro' ), + 'id' => "{$prefix}kitchens", + 'type' => 'text', + 'attributes' => [ + 'type' => 'number', 'pattern' => '\d*', - ), + ], 'sanitization_cb' => 'absint', - 'escape_cb' => 'absint', - 'description' => esc_html__( 'Enter Number of Kitchens', 'opalestate-pro' ), + 'escape_cb' => 'absint', + 'description' => esc_html__( 'Enter Number of Kitchens', 'opalestate-pro' ), ], [ - 'name' => esc_html__( 'Rooms', 'opalestate-pro' ), - 'id' => "{$prefix}amountrooms", - 'type' => 'text', - 'attributes' => array( - 'type' => 'number', + 'name' => esc_html__( 'Rooms', 'opalestate-pro' ), + 'id' => "{$prefix}amountrooms", + 'type' => 'text', + 'attributes' => [ + 'type' => 'number', 'pattern' => '\d*', - ), + ], 'sanitization_cb' => 'absint', - 'escape_cb' => 'absint', - 'description' => esc_html__( 'Enter Number of Amount Rooms', 'opalestate-pro' ), - 'after_row' => '


', ], @@ -372,10 +368,10 @@ class Opalestate_Property_MetaBox_Submission { 'taxonomy' => 'opalestate_city', ], [ - 'name' => esc_html__( 'Postal Code / Zip', 'opalestate-pro' ), - 'id' => $prefix . 'zipcode', - 'type' => 'text', - 'after_row'=> '
' + 'name' => esc_html__( 'Postal Code / Zip', 'opalestate-pro' ), + 'id' => $prefix . 'zipcode', + 'type' => 'text', + 'after_row' => '
', ], [ @@ -387,10 +383,10 @@ class Opalestate_Property_MetaBox_Submission { ], ], [ - 'name' => esc_html__( 'Google Map View', 'opalestate-pro' ), - 'id' => $prefix . 'enablemapview', - 'type' => 'switch', - 'options' => [ + 'name' => esc_html__( 'Google Map View', 'opalestate-pro' ), + 'id' => $prefix . 'enablemapview', + 'type' => 'switch', + 'options' => [ 0 => esc_html__( 'No', 'opalestate-pro' ), 1 => esc_html__( 'Yes', 'opalestate-pro' ), ], @@ -414,13 +410,13 @@ class Opalestate_Property_MetaBox_Submission { $prefix = OPALESTATE_PROPERTY_PREFIX; $fields = [ [ - 'name' => esc_html__( 'Amenities', 'opalestate-pro' ), - 'id' => $prefix . 'amenity', - 'type' => 'taxonomy_multicheck', - 'before_row' => '
', - 'after_row' => '
', - 'taxonomy' => 'opalestate_amenities', + 'name' => esc_html__( 'Amenities', 'opalestate-pro' ), + 'id' => $prefix . 'amenity', + 'type' => 'taxonomy_multicheck', + 'before_row' => '
', + 'after_row' => '
', + 'taxonomy' => 'opalestate_amenities', 'render_row_cb' => [ $this, 'amenities_html_callback' ], ], ]; @@ -437,7 +433,7 @@ class Opalestate_Property_MetaBox_Submission { 'type' => 'group', 'before_group' => '
', 'after_group' => '
', + 'opalestate-pro' ) . '', 'fields' => [ [ 'id' => $prefix . 'public_facilities_key', @@ -480,7 +476,7 @@ class Opalestate_Property_MetaBox_Submission { 'id' => $prefix . 'apartments', 'type' => 'group', 'after_group' => '', + 'opalestate-pro' ) . '', 'fields' => [ [ 'id' => $prefix . 'apartment_plot', @@ -489,7 +485,7 @@ class Opalestate_Property_MetaBox_Submission { 'type' => 'text', ], - + [ 'id' => $prefix . 'apartment_beds', 'name' => esc_html__( 'Beds', 'opalestate-pro' ), @@ -590,11 +586,11 @@ class Opalestate_Property_MetaBox_Submission { 'type' => 'textarea_small', ], [ - 'id' => "{$prefix}floor_image_id", - 'name' => esc_html__( 'Image Preview', 'opalestate-pro' ), - 'type' => 'uploader', - 'single' => 1, - + 'id' => "{$prefix}floor_image_id", + 'name' => esc_html__( 'Image Preview', 'opalestate-pro' ), + 'type' => 'uploader', + 'single' => 1, + 'query_args' => [ 'type' => [ 'image/gif', @@ -625,8 +621,8 @@ class Opalestate_Property_MetaBox_Submission { /** * Manually render a field column display. * - * @param array $field_args Array of field arguments. - * @param CMB2_Field $field The field object + * @param array $field_args Array of field arguments. + * @param CMB2_Field $field The field object */ public function amenities_html_callback( $field_args, $field ) { $id = $field->args( 'id' ); @@ -646,34 +642,34 @@ class Opalestate_Property_MetaBox_Submission { return; } ?> -
-
-
- -
+
+
+
+ +
-
-
    +
    +
      $amenity ) : ?> -
    • - -
    • + + -
    • + + -
    -
    -
- - -
+ +
+
+ + +
[ + 'submission' => [ 'code' => 'submission', 'label' => esc_html__( 'Submission Form', 'opalestate-pro' ), ], - 'submission_list' => [ + 'submission_list' => [ 'code' => 'submission_list', 'label' => esc_html__( 'My Properties', 'opalestate-pro' ), - ] + ], ]; foreach ( $shortcodes as $shortcode ) { @@ -107,7 +107,7 @@ class OpalEstate_Submission { * Is submission page. 'submission_page' option in General Setting */ public function setting_content_tab( $tabs ) { - $tabs['submission_page'] = esc_html__( 'Submission Page', 'opalestate-pro' ); + $tabs['submission_page'] = esc_html__( 'Submission', 'opalestate-pro' ); return $tabs; } @@ -145,23 +145,20 @@ class OpalEstate_Submission { 'type' => 'select', 'default' => '', 'options' => [ - '' => esc_html__( 'Show Login Form', 'opalestate-pro' ), + '' => esc_html__( 'Show Login Form', 'opalestate-pro' ), 'login_submission' => esc_html__( 'Show Login Form and Submission Form', 'opalestate-pro' ), ], ], [ 'name' => esc_html__( 'Enable Admin Approve', 'opalestate-pro' ), - 'desc' => esc_html__( 'the Property will be auto approve when user submit, if you do not enable it.', 'opalestate-pro' ), + 'desc' => esc_html__( 'Admin must review and approve before properties are published.', 'opalestate-pro' ), 'id' => 'admin_approve', - 'type' => 'checkbox', - ], - [ - 'name' => esc_html__( 'Enable Require Price', 'opalestate-pro' ), - 'desc' => esc_html__( 'Enable or Disable require user enter price and price label.', 'opalestate-pro' ), - 'id' => 'require_input_price', - 'type' => 'checkbox', - + 'type' => 'switch', + 'options' => [ + 'on' => esc_html__( 'Enable', 'opalestate-pro' ), + 'off' => esc_html__( 'Disable', 'opalestate-pro' ), + ], ], [ 'name' => esc_html__( 'Submission Tab Settings', 'opalestate-pro' ), @@ -240,6 +237,30 @@ class OpalEstate_Submission { 'off' => esc_html__( 'Disable', 'opalestate-pro' ), ], ], + [ + 'name' => esc_html__( 'Submission Settings', 'opalestate-pro' ), + 'id' => 'opalestate_title_submission_settings', + 'type' => 'title', + 'before_row' => '
', + 'after_row' => '
', + ], + [ + 'name' => esc_html__( 'Generate property SKU', 'opalestate-pro' ), + 'desc' => esc_html__( 'Enable automatic generate property SKU.', 'opalestate-pro' ), + 'id' => 'enable_submission_generate_sku', + 'type' => 'switch', + 'options' => [ + 'on' => esc_html__( 'Enable', 'opalestate-pro' ), + 'off' => esc_html__( 'Disable', 'opalestate-pro' ), + ], + ], + [ + 'name' => esc_html__( 'Property SKU prefix', 'opalestate-pro' ), + 'desc' => esc_html__( 'Prefix for property SKU.', 'opalestate-pro' ), + 'id' => 'submission_sku_prefix', + 'type' => 'text', + 'default' => 'SKU', + ], ] ), ]; @@ -258,8 +279,8 @@ class OpalEstate_Submission { * Is submission page. 'submission_page' option in General Setting */ public function render_button_edit() { - global $post, $current_user; + wp_get_current_user(); if ( $current_user->ID == $post->post_author ) { @@ -281,13 +302,12 @@ class OpalEstate_Submission { return opalestate_get_option( 'submission_page' ) == $post->ID; } - /** + * Register metabox. * - * + * @return \Opalestate_Property_MetaBox_Submission */ public function register_metabox() { - $metabox = new Opalestate_Property_MetaBox_Submission(); add_filter( 'cmb2_meta_boxes', [ $metabox, 'register_form' ], 9999 ); @@ -299,32 +319,30 @@ class OpalEstate_Submission { * FrontEnd Submission */ public function submission() { - global $current_user; if ( ! is_user_logged_in() ) { echo opalestate_load_template_path( 'submission/require-login' ); - if( empty(opalestate_get_option("submission_show_content")) ){ - return ""; + if ( empty( opalestate_get_option( "submission_show_content" ) ) ) { + return ""; } } - if( isset($_GET['do']) && $_GET['do'] == 'completed' ){ - + if ( isset( $_GET['do'] ) && $_GET['do'] == 'completed' ) { OpalEstate()->session->set( 'submission', 'addnew' ); echo opalestate_load_template_path( 'submission/completed' ); - return ; + + return; } // remove all dirty images before edit/create new a property - $this->cleanup(); + $this->cleanup(); wp_enqueue_script( 'opalestate-submission' ); wp_enqueue_style( 'opalesate-submission' ); wp_enqueue_style( 'opalesate-cmb2-front' ); - $metabox = $this->register_metabox(); $metaboxes = apply_filters( 'cmb2_meta_boxes', [] ); @@ -333,8 +351,8 @@ class OpalEstate_Submission { return esc_html__( 'A metabox with the specified \'metabox_id\' doesn\'t exist.', 'opalestate-pro' ); } $post_id = 0; - - if( is_user_logged_in() ) { + + if ( is_user_logged_in() ) { // CMB2 is getting fields values from current post what means it will fetch data from submission page // We need to remove all data before. $post_id = ! empty( $_GET['id'] ) ? absint( $_GET['id'] ) : false; @@ -352,9 +370,10 @@ class OpalEstate_Submission { if ( $post_id && ! opalestate_is_own_property( $post_id, $current_user->ID ) ) { echo opalestate_load_template_path( 'parts/has-warning' ); - return ; + return; } } + return opalestate_load_template_path( 'submission/submission-form', [ 'post_id' => $post_id, @@ -369,6 +388,7 @@ class OpalEstate_Submission { */ public function cmb2_get_metabox() { $object_id = 'fake-oject-id'; + return cmb2_get_metabox( OPALESTATE_PROPERTY_PREFIX . 'front', $object_id ); } @@ -380,35 +400,28 @@ class OpalEstate_Submission { if ( isset( $_POST['submission_action'] ) && ! empty( $_POST['submission_action'] ) ) { if ( wp_verify_nonce( $_POST['submission_action'], 'submitted-property' ) ) { - + $user_id = get_current_user_id(); $edit = false; - $prefix = OPALESTATE_PROPERTY_PREFIX; + $prefix = OPALESTATE_PROPERTY_PREFIX; $blocked = OpalEstate_User::is_blocked(); - + // Setup and sanitize data if ( isset( $_POST[ $prefix . 'title' ] ) && ! $blocked && $user_id ) { - $metabox = $this->register_metabox(); $metaboxes = apply_filters( 'cmb2_meta_boxes', [] ); - - - $post_id = ! empty( $_POST['post_id'] ) ? absint( $_POST['post_id'] ) : false; - if( $post_id ){ + if ( $post_id ) { do_action( 'opalestate_process_edit_submission_before' ); } else { do_action( 'opalestate_process_submission_before' ); } - - - $review_before = opalestate_get_option( 'admin_approve' ); $post_status = 'pending'; - if ( ! $review_before ) { + if ( 'on' != opalestate_get_option( 'admin_approve', 'on' ) ) { $post_status = 'publish'; } @@ -424,8 +437,7 @@ class OpalEstate_Submission { $post_content = isset( $_POST[ $prefix . 'text' ] ) ? wp_kses( $_POST[ $prefix . 'text' ], '

' ) : ''; - - $data = [ + $data = [ 'post_title' => sanitize_text_field( $_POST[ $prefix . 'title' ] ), 'post_author' => $user_id, 'post_status' => $post_status, @@ -457,14 +469,14 @@ class OpalEstate_Submission { if ( empty( $data['post_title'] ) || empty( $data['post_author'] ) ) { return opalestate_output_msg_json( false, - __( 'Please enter data for all require fields before submitting', 'opalestate-pro' ), - array( - 'heading' => esc_html__('Submission Information' ,'opalestate-pro') - )) ; + __( 'Please enter data for all require fields before submitting', 'opalestate-pro' ), + [ + 'heading' => esc_html__( 'Submission Information', 'opalestate-pro' ), + ] ); } - + $post_id = wp_insert_post( $data, true ); - + if ( ! empty( $post_id ) && ! empty( $_POST['object_id'] ) ) { $_POST['object_id'] = (int) $post_id; @@ -478,68 +490,73 @@ class OpalEstate_Submission { /** * Fetch sanitized values */ - cmb2_get_metabox_form( $metaboxes[ $prefix. 'front' ], $post_id ); + cmb2_get_metabox_form( $metaboxes[ $prefix . 'front' ], $post_id ); $cmb = $this->cmb2_get_metabox(); $sanitized_values = $cmb->get_sanitized_values( $_POST ); $cmb->save_fields( $post_id, 'post', $sanitized_values ); // Create featured image $featured_image = get_post_meta( $post_id, $prefix . 'featured_image', true ); - + if ( ! empty( $_POST[ $prefix . 'featured_image' ] ) && isset( $_POST[ $prefix . 'featured_image' ] ) ) { - foreach( $_POST[ $prefix . 'featured_image' ] as $key => $value ) { - set_post_thumbnail( $post_id, $key ); - } - unset( $_POST[ $prefix . 'featured_image' ] ); + foreach ( $_POST[ $prefix . 'featured_image' ] as $key => $value ) { + set_post_thumbnail( $post_id, $key ); + } + unset( $_POST[ $prefix . 'featured_image' ] ); } else { delete_post_thumbnail( $post_id ); } - // remove meta field; + // Remove meta field. update_post_meta( $post_id, $prefix . 'featured_image', null ); + + // Update SKU. + if ( 'on' == opalestate_get_option( 'enable_submission_generate_sku', 'off' ) ) { + $sku_generated = apply_filters( 'opalestate_submission_sku_generated', sanitize_text_field( opalestate_options( 'submission_sku_prefix', 'SKU' ) . $post_id ) ); + update_post_meta( $post_id, $prefix . 'sku', $sku_generated ); + } + //redirect $_SESSION['messages'][] = [ 'success', esc_html__( 'Property has been successfully updated.', 'opalestate-pro' ) ]; do_action( "opalestate_process_submission_after", $user_id, $post_id, $edit ); if ( $edit ) { - $type = OpalEstate()->session->set( 'submission' , 'edit' ); - $message = esc_html__('The property has updated completed with new information', 'opalestate-pro' ); + $type = OpalEstate()->session->set( 'submission', 'edit' ); + $message = esc_html__( 'The property has updated completed with new information', 'opalestate-pro' ); do_action( "opalestate_processed_edit_submission", $user_id, $post_id ); } else { - $type = OpalEstate()->session->get( 'submission' , 'addnew' ); - $message = esc_html__('You have submitted the property successful', 'opalestate-pro' ); + $type = OpalEstate()->session->get( 'submission', 'addnew' ); + $message = esc_html__( 'You have submitted the property successful', 'opalestate-pro' ); do_action( "opalestate_processed_new_submission", $user_id, $post_id ); } // set ready of attachment for use. - if( $this->new_attachmenet_ids ){ + if ( $this->new_attachmenet_ids ) { foreach ( $this->new_attachmenet_ids as $_id ) { delete_post_meta( $_id, '_pending_to_use_', 1 ); } } - // - return opalestate_output_msg_json( true, $message, - array( - 'heading' => esc_html__('Submission Information' ,'opalestate-pro'), - 'redirect' => opalestate_submssion_page( $post_id, array('do' => 'completed') ) - )) ; + [ + 'heading' => esc_html__( 'Submission Information', 'opalestate-pro' ), + 'redirect' => opalestate_submssion_page( $post_id, [ 'do' => 'completed' ] ), + ] ); } } else { return opalestate_output_msg_json( fales, - __('Currently, your account was blocked, please keep contact admin to resolve this!.', 'opalestate-pro' ), - array('heading' => esc_html__('Submission Information' ,'opalestate-pro') ) - ) ; + __( 'Currently, your account was blocked, please keep contact admin to resolve this!.', 'opalestate-pro' ), + [ 'heading' => esc_html__( 'Submission Information', 'opalestate-pro' ) ] + ); } } return opalestate_output_msg_json( fales, - __('Sorry! Your submitted datcould not save a at this time', 'opalestate-pro' ), - array('heading' => esc_html__('Submission Information', 'opalestate-pro') ) - ) ; + __( 'Sorry! Your submitted datcould not save a at this time', 'opalestate-pro' ), + [ 'heading' => esc_html__( 'Submission Information', 'opalestate-pro' ) ] + ); } } @@ -547,57 +564,57 @@ class OpalEstate_Submission { * * */ - private function get_field_name( $field ){ - return OPALESTATE_PROPERTY_PREFIX.$field; + private function get_field_name( $field ) { + return OPALESTATE_PROPERTY_PREFIX . $field; } /** + * Process upload files. * - * + * @param int $post_id Post ID. */ - private function process_upload_files ( $post_id ) { + private function process_upload_files( $post_id ) { //upload images for featured and gallery images - if( isset($_FILES) && !empty($_FILES) ){ + if ( isset( $_FILES ) && ! empty( $_FILES ) ) { /// - $fields = array( - $this->get_field_name('gallery'), - $this->get_field_name('featured_image'), - ); + $fields = [ + $this->get_field_name( 'gallery' ), + $this->get_field_name( 'featured_image' ), + ]; - foreach( $_FILES as $key => $value ) { + foreach ( $_FILES as $key => $value ) { // allow processing in fixed collection - if( in_array($key, $fields) ){ - $ufile = $_FILES[$key]; + if ( in_array( $key, $fields ) ) { + $ufile = $_FILES[ $key ]; /// ///// - if( isset( $ufile['name'] ) && is_array( $ufile['name'] ) ){ - $output = array(); + if ( isset( $ufile['name'] ) && is_array( $ufile['name'] ) ) { + $output = []; - foreach ( $ufile['name'] as $f_key => $f_value ) { - $loop_file = array( - 'name' => $ufile['name'][$f_key], - 'type' => $ufile['type'][$f_key], - 'tmp_name' => $ufile['tmp_name'][$f_key], - 'error' => $ufile['error'][$f_key], - 'size' => $ufile['size'][$f_key] - ); - $new_atm = $this->upload_image( $loop_file, $post_id ); - if( $new_atm ){ - $_POST[$key] = isset($_POST[$key]) ? $_POST[$key] : array(); - $_POST[$key][$new_atm['attachment_id']] = $new_atm['url']; - $this->new_attachmenet_ids[$new_atm['attachment_id']] = $new_atm['attachment_id']; + foreach ( $ufile['name'] as $f_key => $f_value ) { + $loop_file = [ + 'name' => $ufile['name'][ $f_key ], + 'type' => $ufile['type'][ $f_key ], + 'tmp_name' => $ufile['tmp_name'][ $f_key ], + 'error' => $ufile['error'][ $f_key ], + 'size' => $ufile['size'][ $f_key ], + ]; + $new_atm = $this->upload_image( $loop_file, $post_id ); + if ( $new_atm ) { + $_POST[ $key ] = isset( $_POST[ $key ] ) ? $_POST[ $key ] : []; + $_POST[ $key ][ $new_atm['attachment_id'] ] = $new_atm['url']; + $this->new_attachmenet_ids[ $new_atm['attachment_id'] ] = $new_atm['attachment_id']; } } - } - /// - elseif( isset($ufile['name']) ) { - $new_atm = $this->upload_image( $ufile, $post_id ); - if( $new_atm ){ - $_POST[$key][$new_atm['attachment_id']] = $new_atm['url']; - $this->new_attachmenet_ids[$new_atm['attachment_id']] = $new_atm['attachment_id']; + } /// + elseif ( isset( $ufile['name'] ) ) { + $new_atm = $this->upload_image( $ufile, $post_id ); + if ( $new_atm ) { + $_POST[ $key ][ $new_atm['attachment_id'] ] = $new_atm['url']; + $this->new_attachmenet_ids[ $new_atm['attachment_id'] ] = $new_atm['attachment_id']; } } //// / // @@ -605,56 +622,53 @@ class OpalEstate_Submission { } // for group files - $fields = array( - $this->get_field_name('public_floor_group') - ); + $fields = [ + $this->get_field_name( 'public_floor_group' ), + ]; + foreach ( $_FILES as $key => $value ) { + if ( in_array( $key, $fields ) ) { + $ufile = $_FILES[ $key ]; - foreach( $_FILES as $key => $value ) { + if ( isset( $ufile['name'] ) && is_array( $ufile['name'] ) ) { + $output = []; + foreach ( $ufile['name'] as $f_key => $f_value ) { - if( in_array($key, $fields) ){ - $ufile = $_FILES[$key]; + foreach ( $f_value as $u_key => $u_v ) { + $loop_file = [ + 'name' => $ufile['name'][ $f_key ][ $u_key ], + 'type' => $ufile['type'][ $f_key ][ $u_key ], + 'tmp_name' => $ufile['tmp_name'][ $f_key ][ $u_key ], + 'error' => $ufile['error'][ $f_key ][ $u_key ], + 'size' => $ufile['size'][ $f_key ][ $u_key ], + ]; - if( isset( $ufile['name'] ) && is_array( $ufile['name'] ) ){ - $output = array(); - foreach ( $ufile['name'] as $f_key => $f_value ) { + $new_atm = $this->upload_image( $loop_file, $post_id ); + if ( $new_atm ) { - foreach( $f_value as $u_key => $u_v ) { - $loop_file = array( - 'name' => $ufile['name'][$f_key][$u_key], - 'type' => $ufile['type'][$f_key][$u_key], - 'tmp_name' => $ufile['tmp_name'][$f_key][$u_key], - 'error' => $ufile['error'][$f_key][$u_key], - 'size' => $ufile['size'][$f_key][$u_key] - ); - - $new_atm = $this->upload_image( $loop_file, $post_id ); - if( $new_atm ){ - - $_POST[$key][$f_key][$u_key] = $new_atm['attachment_id']; - $this->new_attachmenet_ids[$new_atm['attachment_id']] = $new_atm['attachment_id']; + $_POST[ $key ][ $f_key ][ $u_key ] = $new_atm['attachment_id']; + $this->new_attachmenet_ids[ $new_atm['attachment_id'] ] = $new_atm['attachment_id']; } } } - } + } } } } } - /** * Process upload images for properties */ - public function upload_image( $submitted_file, $parent_id=0 ){ + public function upload_image( $submitted_file, $parent_id = 0 ) { return opalesate_upload_image( $submitted_file, $parent_id ); } /** * FrontEnd Submission */ - private function cleanup() { - $user_id = get_current_user_id(); + private function cleanup() { + $user_id = get_current_user_id(); opalestate_clean_attachments( $user_id ); } diff --git a/templates/submission/completed.php b/templates/submission/completed.php index 43f0780a..90acb5bb 100755 --- a/templates/submission/completed.php +++ b/templates/submission/completed.php @@ -1,27 +1,33 @@ -session->get( 'submission' ); +$post = get_post( $post_id ); +$type = OpalEstate()->session->get( 'submission' ); ?>

-
- -
-
- ', '', - '', '' - ); ?> -
+
+ +
+ +
+ +
+ + + ', '', + '', '' + ); ?> +
-
- - ', '', - '', '' - ); ?> -
- -
+
+ + ', '', + '', '' + ); ?> +
+ +
-session->set( 'submission', null ); ?> \ No newline at end of file + +session->set( 'submission', null ); ?>