<?php /**
* @version 1.0
* @package Booking Calendar
* @category Booking Calendar Widgets
* @author wpdevelop
*
* @web-site https://wpbookingcalendar.com/
* @email [email protected]
*
* @modified 2024-10-08
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Exit, if accessed directly // FixIn: 10.6.2.1.
// BookingWidget Class
class BookingWidget extends WP_Widget {
function __construct() {
parent::__construct( false, $name = 'Booking Calendar' );
}
/** @see WP_Widget::widget */
function widget($args, $instance) {
extract( $args );
// FixIn: 6.1.1.11.
$booking_widget_title = ( isset( $instance['booking_widget_title'] ) )
? apply_filters( 'widget_title', $instance['booking_widget_title'] )
: __( 'Booking Calendar', 'booking' );
if ( function_exists( 'icl_translate' ) ) {
$booking_widget_title = icl_translate( 'wpml_custom', 'wpbc_custom_widget_booking_title1', $booking_widget_title );
}
$booking_widget_show = ( isset( $instance['booking_widget_show'] ) )
? $instance['booking_widget_show']
: 'booking_form';
$resource_id = ( isset( $instance['booking_widget_type'] ) )
? intval( $instance['booking_widget_type'] )
: 1;
$resource_id = ( empty( $resource_id ) ) ? 1 : $resource_id;
$booking_widget_calendar_count = ( isset( $instance['booking_widget_calendar_count'] ) )
? intval( $instance['booking_widget_calendar_count'] )
: 1;
$booking_widget_last_field = ( isset( $instance['booking_widget_last_field'] ) )
? $instance['booking_widget_last_field']
: '';
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo $before_widget ;
// phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing
if ( isset( $_GET['booking_hash'] ) ) {
esc_html_e( 'You need to use special shortcode [bookingedit] for booking editing.', 'booking' );
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo $after_widget ;
return;
}
if ( $booking_widget_title != '' ) {
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo $before_title . wp_kses_post( $booking_widget_title ) . $after_title ;
}
echo "<div class='widget_wpdev_booking wpdevelop months_num_in_row_1'>"; // FixIn: 8.4.2.3.
if ( $booking_widget_show == 'booking_form' ) {
$my_booking_form_name = apply_bk_filter( 'wpbc_get_default_custom_form', 'standard', $resource_id );
make_bk_action( 'wpdevbk_add_form', $resource_id, $booking_widget_calendar_count, true, $my_booking_form_name );
} else {
echo "<div class='wpbc_only_calendar wpbc_container'>"; // FixIn: 8.0.1.2.
echo "<div id='calendar_booking_unselectable" . esc_attr( $resource_id ) . "'></div>"; // FixIn: 6.1.1.13.
do_action( 'wpdev_bk_add_calendar', $resource_id, $booking_widget_calendar_count );
echo '</div>';
}
if ( $booking_widget_last_field !== '' ) {
echo '<br/>' . esc_js( $booking_widget_last_field );
}
echo "</div>";
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo $after_widget;
}
/** @see WP_Widget::update */
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['booking_widget_title'] = sanitize_textarea_field( $new_instance['booking_widget_title'] );
$instance['booking_widget_show'] = sanitize_textarea_field( $new_instance['booking_widget_show'] );
$instance['booking_widget_type'] = ( empty( $new_instance['booking_widget_type'] ) ? 1 : intval( $new_instance['booking_widget_type'] ) );
$instance['booking_widget_calendar_count'] = intval( $new_instance['booking_widget_calendar_count'] );
$instance['booking_widget_last_field'] = $new_instance['booking_widget_last_field'];
return $instance;
}
/** @see WP_Widget::form */
function form($instance) {
if ( isset( $instance['booking_widget_title'] ) ) {
$booking_widget_title = esc_attr( $instance['booking_widget_title'] );
} else {
$booking_widget_title = '';
}
if ( isset( $instance['booking_widget_show'] ) ) {
$booking_widget_show = esc_attr( $instance['booking_widget_show'] );
} else {
$booking_widget_show = '';
}
if ( ( class_exists( 'wpdev_bk_personal' ) ) && ( isset( $instance['booking_widget_type'] ) ) ) {
$resource_id = intval( $instance['booking_widget_type'] );
} else {
$resource_id = 1;
}
if ( isset( $instance['booking_widget_calendar_count'] ) ) {
$booking_widget_calendar_count = esc_attr( $instance['booking_widget_calendar_count'] );
} else {
$booking_widget_calendar_count = 1;
}
if ( isset( $instance['booking_widget_last_field'] ) ) {
$booking_widget_last_field = esc_attr( $instance['booking_widget_last_field'] );
} else {
$booking_widget_last_field = '';
}
?>
<p>
<label for="<?php echo esc_attr( $this->get_field_id('booking_widget_title') ); ?>"><?php esc_html_e('Title' ,'booking'); ?>:</label><br/>
<input value="<?php echo esc_attr( $booking_widget_title ); ?>"
name="<?php echo esc_attr( $this->get_field_name('booking_widget_title') ); ?>"
id="<?php echo esc_attr( $this->get_field_id('booking_widget_title') ); ?>"
type="text" class="widefat" style="width:100%;line-height: 1.5em;" />
</p>
<p>
<label for="<?php echo esc_attr( $this->get_field_id('booking_widget_show') ); ?>"><?php esc_html_e('Show' ,'booking'); ?>:</label><br/>
<select
name="<?php echo esc_attr( $this->get_field_name('booking_widget_show') ); ?>"
id="<?php echo esc_attr( $this->get_field_id('booking_widget_show') ); ?>" style="width:100%;line-height: 1.5em;">
<option <?php if($booking_widget_show == 'booking_form') echo "selected"; ?> value="booking_form"><?php esc_html_e('Booking form with calendar' ,'booking'); ?></option>
<option <?php if($booking_widget_show == 'booking_calendar') echo "selected"; ?> value="booking_calendar"><?php esc_html_e('Only availability calendar' ,'booking'); ?></option>
</select>
</p>
<?php
if ( class_exists('wpdev_bk_personal')) {
$types_list = wpbc_get_br_as_objects(); ?>
<p>
<label for="<?php echo esc_attr( $this->get_field_id('booking_widget_type') ); ?>"><?php esc_html_e('Booking resource' ,'booking'); ?>:</label><br/>
<!--input id="calendar_type" name="calendar_type" class="input" type="text" -->
<select
name="<?php echo esc_attr( $this->get_field_name('booking_widget_type') ); ?>"
id="<?php echo esc_attr( $this->get_field_id('booking_widget_type') ); ?>"
style="width:100%;line-height: 1.5em;">
<?php foreach ($types_list as $tl) { ?>
<option <?php if($resource_id == $tl->id ) echo "selected"; ?>
style="<?php if (isset($tl->parent)) if ($tl->parent == 0 ) { echo 'font-weight:600;'; } else { echo 'font-size:11px;padding-left:20px;'; } ?>"
value="<?php echo esc_attr( $tl->id ); ?>"><?php echo esc_html( $tl->title ); ?></option>
<?php } ?>
</select>
</p>
<?php } ?>
<p>
<label for="<?php echo esc_attr( $this->get_field_id('booking_widget_calendar_count') ); ?>"><?php esc_html_e('Visible months' ,'booking'); ?>:</label><br/>
<select style="width:100%;line-height: 1.5em;"
name="<?php echo esc_attr( $this->get_field_name('booking_widget_calendar_count') ); ?>"
id="<?php echo esc_attr( $this->get_field_id('booking_widget_calendar_count') ); ?>"
>
<?php foreach ( array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ) as $tl ) { ?>
<option
<?php if ( $booking_widget_calendar_count == $tl ) { echo "selected"; } ?>
style="font-weight:600;"
value="<?php echo esc_attr( $tl ); ?>"><?php echo esc_html( $tl ); ?></option>
<?php } ?>
</select>
</p>
<p>
<label for="<?php echo esc_attr( $this->get_field_id('booking_widget_last_field') ); ?>"><?php esc_html_e('Footer' ,'booking'); ?>:</label><br/>
<input value="<?php echo esc_attr( $booking_widget_last_field ); ?>"
name="<?php echo esc_attr( $this->get_field_name('booking_widget_last_field') ); ?>"
id="<?php echo esc_attr( $this->get_field_id('booking_widget_last_field') ); ?>"
type="text" style="width:100%;line-height: 1.5em;" /><br/>
<em style="font-size:11px;"><?php
/* translators: 1: ... */
echo wp_kses_post( sprintf( __( 'Example: %1$sMake booking here%2$s', 'booking' ), "<code><a href='" . get_site_url() . "'>", '</a></code>' ) ); ?></em>
</p>
<p style="font-size:10px;"><?php
/* translators: 1: ... */
echo wp_kses_post( sprintf( __( '%1$sImportant!!!%2$s Please note, if you show booking calendar (inserted into post/page) with widget at the same page, then the last will not be visible.', 'booking' ), '<strong>', '</strong>' ) );
if ( ! class_exists( 'wpdev_bk_personal' ) ) {
?><em><?php
/* translators: 1: ... */
echo wp_kses_post( sprintf( __( '%1$sSeveral widgets are supported at %2$spaid versions%3$s.', 'booking' ), '<span style="">', '<a href="https://wpbookingcalendar.com/" target="_blank" style="text-decoration:none;color:#3A5670;">', '</a>', '</span>' ) );
?></em> <?php
}
?></p><?php
}
}
function register_wpbc_widget() {
// FixIn: 8.1.3.18.
register_widget( "BookingWidget" );
}
add_action( 'widgets_init', 'register_wpbc_widget' );