PATH:
home
/
letacommog
/
camarsac
/
wp-content
/
plugins
/
jet-booking
/
includes
/
dashboard
<?php namespace JET_ABAF\Dashboard; use JET_ABAF\Plugin; /** * Post meta manager class */ class Order_Meta { public $post_type = null; public $column = null; /** * Constructir or the class */ public function __construct() { $this->post_type = Plugin::instance()->settings->get( 'related_post_type' ); $this->column = Plugin::instance()->settings->get( 'related_post_type_column' ); if ( $this->post_type && $this->column ) { add_action( 'add_meta_boxes_' . $this->post_type, array( $this, 'register_meta_box' ) ); add_action( 'wp_ajax_jet_abaf_update_booking', array( $this, 'update_booking' ) ); add_action( 'delete_post', array( $this, 'delete_booking_on_related_post_delete' ) ); } } /** * Register * @return [type] [description] */ public function register_meta_box() { add_meta_box( 'jet-abaf', __( 'Booking Data' ), array( $this, 'render_meta_box' ), null, 'side', 'high' ); } /** * Render bookings metabox * * @return [type] [description] */ public function render_meta_box( $post ) { echo '<div class="jet-abaf-booking">'; $booking = $this->render_booking( $post ); echo '</div>'; if ( ! $booking ) { return; } ?> <script> jQuery( document ).ready( function( $ ) { "use strict"; $( document ).on( 'click', '.jet-abaf-edit-booking', function() { $( '.jet-abaf-booking-form' ).show(); $( '.jet-abaf-booking-info' ).hide(); } ); $( document ).on( 'click', '.jet-abaf-cancel-edit', function() { $( '.jet-abaf-booking-form' ).hide(); $( '.jet-abaf-booking-info' ).show(); } ); $( document ).on( 'click', '.jet-abaf-update-booking', function() { var fields = {}, $this = $( this ), label = $this.html(); $( '.jet-abaf-booking-input' ).each(function() { var $this = $( this ); if ( 'booking_id' !== $this.attr( 'name' ) ) { fields[ $this.attr( 'name' ) ] = $this.val(); } }); $this.html( $this.data( 'loading' ) ) $.ajax({ url: ajaxurl, type: 'POST', dataType: 'json', data: { action: 'jet_abaf_update_booking', post: <?php echo $post->ID; ?>, booking: <?php echo $booking['booking_id'] ?>, fields: fields, }, }).done(function( response ) { if ( response.success ) { $( '.jet-abaf-booking' ).html( response.data.html ); } else { $( '.jet-abaf-booking' ).append( '<p>' + response.data.html + '</p>' ); } $this.html( label ); }).fail(function( response ) { $this.html( label ); alert( response.statusText ); }); } ); }); </script> <?php } /** * UPdate booking information * * @return [type] [description] */ public function update_booking() { if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( __( 'Access denied. Not enough permissions' ) ); } $post_id = ! empty( $_REQUEST['post'] ) ? absint( $_REQUEST['post'] ) : false; $booking = ! empty( $_REQUEST['booking'] ) ? absint( $_REQUEST['booking'] ) : false; $fields = ! empty( $_REQUEST['fields'] ) ? $_REQUEST['fields'] : false; if ( ! $post_id ) { wp_send_json_error( array( 'html' => __( 'Updated post ID not found in request' ) ) ); } if ( ! $fields ) { wp_send_json_error( array( 'html' => __( 'Updated fields not found in request' ) ) ); } $fields['check_out_date'] = ! empty( $fields['check_out_date'] ) ? strtotime( $fields['check_out_date'] ) : false; $fields['check_in_date'] = ! empty( $fields['check_in_date'] ) ? strtotime( $fields['check_in_date'] ) : false; if ( empty( $fields['check_out_date'] ) || empty( $fields['check_in_date'] ) ) { wp_send_json_error( array( 'html' => __( 'check_in_date and check_out_date fields can\'t be empty' ) ) ); } $fields['apartment_id'] = ! empty( $fields['apartment_id'] ) ? absint( $fields['apartment_id'] ) : 0; if ( ! $fields['apartment_id'] ) { wp_send_json_error( array( 'html' => __( 'apartment_id field can\'t be empty' ) ) ); } if ( ! empty( $fields['booking_id'] ) ) { unset( $fields['booking_id'] ); } $is_available = Plugin::instance()->db->check_availability_on_update( $booking, $fields['apartment_id'], $fields['check_in_date'], $fields['check_out_date'] ); if ( ! $is_available ) { ob_start(); echo __( 'New dates are not available.' ) . '<br>'; if ( Plugin::instance()->db->latest_result ) { echo __( 'Overlapping bookings: ' ); foreach ( Plugin::instance()->db->latest_result as $ob ) { $result = array(); if ( absint( $ob['booking_id'] ) !== $booking && ! empty( $ob[ $this->column ] ) ) { $result[] = sprintf( '<a href="%1$s" target="_blank">#%2$s</a>', get_edit_post_link( $ob[ $this->column ] ), $ob[ $this->column ] ); } echo implode( ', ', $result ); } } wp_send_json_error( array( 'html' => ob_get_clean() ) ); } Plugin::instance()->db->update_booking( $booking, $fields ); ob_start(); $this->render_booking( get_post( $post_id ) ); wp_send_json_success( array( 'html' => ob_get_clean() ) ); } /** * Render information about current booking and return booking data * * @return [type] [description] */ public function render_booking( $post ) { $booking = Plugin::instance()->db->query( array( $this->column => $post->ID, ) ); if ( empty( $booking ) ) { echo '<p>' . __( 'Related booking not found' ) . '</p>'; return false; } $booking = $booking[0]; echo '<div class="jet-abaf-booking-info">'; foreach ( $booking as $col => $value ) { if ( $col === $this->column ) { continue; } if ( in_array( $col, array( 'check_in_date', 'check_out_date' ) ) ) { $value = date_i18n( get_option( 'date_format' ), $value ); } if ( 'apartment_id' === $col ) { $new_value = sprintf( '<a href="%1$s" target="_blank">%2$s</a>', get_permalink( $value ), get_the_title( $value ) ); $value = $new_value; } echo '<p><b>' . $col . '</b>: ' . $value . '</p>'; } echo '<p><button type="button" class="button button-default jet-abaf-edit-booking">' . __( 'Edit' ) . '</button></p>'; echo '</div>'; echo '<div class="jet-abaf-booking-form" style="display:none;">'; foreach ( $booking as $col => $value ) { if ( $col === $this->column ) { continue; } if ( in_array( $col, array( 'check_in_date', 'check_out_date' ) ) ) { $value = date_i18n( get_option( 'date_format' ), $value ); } $disabled = ''; if ( 'booking_id' === $col ) { $disabled = ' disabled'; } echo '<p><b>' . $col . '</b>: <input type="text" class="jet-abaf-booking-input" name="' . $col . '" value="' . $value . '"' . $disabled . '></p>'; } echo '<p><button type="button" class="button button-primary jet-abaf-update-booking" data-loading="' . __( 'Saving ...' ) . '">' . __( 'Save' ) . '</button> <button type="button" class="button button-default jet-abaf-cancel-edit">' . __( 'Cancel' ) . '</button></p>'; echo '</div>'; return $booking; } /** * Delete booking on related post deleteion * * @return [type] [description] */ public function delete_booking_on_related_post_delete( $post_id ) { if ( $this->post_type !== get_post_type( $post_id ) ) { return; } Plugin::instance()->db->delete_booking( array( $this->column => $post_id, ) ); } }
[+]
..
[+]
helpers
[-] units-manager.php
[edit]
[-] manager.php
[edit]
[+]
pages
[-] order-meta.php
[edit]
[-] booking-meta.php
[edit]