HEX
Server: LiteSpeed
System: Linux server.zepintelhosting.com 4.18.0 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64
User: enamadmin (1026)
PHP: 8.2.30
Disabled: exec,system,passthru,shell_exec,proc_open,popen,apache_child_terminate
Upload Files
File: /home/enamadmin/www/wp-content/plugins/wp-events-manager/inc/class-wpems-booking.php
<?php
/**
 * WP Events Manager Booking class
 *
 * @author        ThimPress, leehld
 * @package       WP-Events-Manager/Class
 * @version       2.1.7
 */

/**
 * Prevent loading this file directly
 */
defined( 'ABSPATH' ) || exit;

/**
 * WPEMS_Booking
 */
class WPEMS_Booking {

	private static $instance = null;
	public $post = null;
	public $ID = null;

	public function __construct( $id = null ) {

		if ( is_numeric( $id ) && get_post_type( $id ) === 'event_auth_book' ) {
			$this->post = get_post( $id );
		} else if ( $id instanceof WP_Post || is_object( $id ) ) {
			$this->post = $id;
		}

		if ( $this->post ) {
			$this->ID = $this->post->ID;
		}

	}

	/**
	 * Megic method
	 *
	 * @param type $key
	 *
	 * @return mixed
	 */
	public function __get( $key = null ) {

		switch ( $key ) {

			default:
				$result = get_post_meta( $this->ID, 'ea_booking_' . $key, true );
				break;
		}

		return $result;
	}

	// create booking
	public function create_booking( $args = array(), $payment = '' ) {

		// current user
		$user = wp_get_current_user();
		// merge argument
		$args       = wp_parse_args( $args, array(
			'user_id'    => $user->ID,
			'event_id'   => 0,
			'qty'        => 1,
			'cost'       => 0,
			'payment_id' => false
		) );
		$booking_id = wp_insert_post( array(
			'post_title'   => sprintf( __( '%s booking event %s', 'wp-events-manager' ), $user->user_nicename, $args['event_id'] ),
			'post_content' => sprintf( __( '%s booking event %s with %s slot', 'wp-events-manager' ), $user->user_nicename, $args['event_id'], $args['qty'] ),
			'post_exceprt' => sprintf( __( '%s booking event %s with %s slot', 'wp-events-manager' ), $user->user_nicename, $args['event_id'], $args['qty'] ),
			'post_status'  => 'ea-pending',
			'post_type'    => 'event_auth_book'
		) );

		if ( is_wp_error( $booking_id ) ) {
			return $booking_id;
		} else {
			foreach ( $args as $key => $val ) {
				update_post_meta( $booking_id, 'ea_booking_' . $key, $val );
			}

			do_action( 'tp_event_create_new_booking', $booking_id, $args );
			return $booking_id;
		}
	}

	// update status
	public function update_status( $status = 'ea-completed' ) {
		if ( !$this->post || $this->post->post_type !== 'event_auth_book' ) {
			return;
		}
		if ( !$this->post || !$this->ID ) {
			throw new Exception( sprintf( __( 'Booking ID #%s is not exists.', 'wp-events-manager' ), $this->ID ) );
		}
		$old_status = get_post_status( $this->ID );

		if ( strpos( $status, 'ea-' ) === false ) {
			$status = 'ea-' . $status;
		}

		$id = wp_update_post( array( 'ID' => $this->ID, 'post_status' => $status ) );

		if ( $id && !is_wp_error( $id ) ) {
			// send email or anythings
			do_action( 'tp_event_updated_status', $id, $old_status, $status );

			do_action( 'tp_event_updated_status_' . $old_status . '_' . $status, $id, $old_status, $status );
		}
	}

	public static function instance( $id = null ) {
		$booking_id = null;
		if ( is_numeric( $id ) && get_post_type( $id ) === 'event_auth_book' ) {
			$post       = get_post( $id );
			$booking_id = $post->ID;
		} else if ( $id instanceof WP_Post || is_object( $id ) ) {
			$booking_id = $id->ID;
		}

		if ( !empty( self::$instance[$booking_id] ) ) {
			return self::$instance[$booking_id];
		}

		return self::$instance[$booking_id] = new self( $booking_id );
	}

}