array( 'name' => __( 'Zapytania', 'yacht-booking' ), 'singular_name' => __( 'Zapytanie', 'yacht-booking' ), ), 'public' => false, 'publicly_queryable' => false, 'show_ui' => false, 'show_in_menu' => false, 'show_in_rest' => false, 'capability_type' => 'post', 'capabilities' => array( 'edit_post' => 'yacht_booking_manage_bookings', 'read_post' => 'yacht_booking_manage_bookings', 'delete_post' => 'yacht_booking_manage_bookings', 'edit_posts' => 'yacht_booking_manage_bookings', 'edit_others_posts' => 'yacht_booking_manage_bookings', 'publish_posts' => 'yacht_booking_manage_bookings', 'read_private_posts' => 'yacht_booking_manage_bookings', 'delete_posts' => 'yacht_booking_manage_bookings', ), 'has_archive' => false, 'supports' => array( 'title', 'custom-fields' ), ) ); } /** * Get yacht ID. * * @param int $inquiry_id Inquiry post ID. * @return int */ public static function get_yacht_id( $inquiry_id ) { return (int) get_post_meta( $inquiry_id, '_inquiry_yacht_id', true ); } /** * Get customer name. * * @param int $inquiry_id Inquiry post ID. * @return string */ public static function get_customer_name( $inquiry_id ) { return get_post_meta( $inquiry_id, '_inquiry_customer_name', true ); } /** * Get customer email. * * @param int $inquiry_id Inquiry post ID. * @return string */ public static function get_customer_email( $inquiry_id ) { return get_post_meta( $inquiry_id, '_inquiry_customer_email', true ); } /** * Get customer phone. * * @param int $inquiry_id Inquiry post ID. * @return string */ public static function get_customer_phone( $inquiry_id ) { return get_post_meta( $inquiry_id, '_inquiry_customer_phone', true ); } /** * Get message. * * @param int $inquiry_id Inquiry post ID. * @return string */ public static function get_message( $inquiry_id ) { return get_post_meta( $inquiry_id, '_inquiry_message', true ); } /** * Get preferred dates. * * @param int $inquiry_id Inquiry post ID. * @return string */ public static function get_preferred_dates( $inquiry_id ) { return get_post_meta( $inquiry_id, '_inquiry_preferred_dates', true ); } /** * Get email sent to admin body. * * @param int $inquiry_id Inquiry post ID. * @return string */ public static function get_admin_email_body( $inquiry_id ) { return get_post_meta( $inquiry_id, '_inquiry_admin_email_body', true ); } /** * Get email sent to customer body. * * @param int $inquiry_id Inquiry post ID. * @return string */ public static function get_customer_email_body( $inquiry_id ) { return get_post_meta( $inquiry_id, '_inquiry_customer_email_body', true ); } /** * Create new inquiry. * * @param array $data Inquiry data. * @return int|false Inquiry ID on success, false on failure. */ public static function create( $data ) { $required = array( 'yacht_id', 'customer_name', 'customer_email', 'customer_phone' ); foreach ( $required as $field ) { if ( empty( $data[ $field ] ) ) { return false; } } $yacht = get_post( $data['yacht_id'] ); if ( ! $yacht || 'yacht' !== $yacht->post_type ) { return false; } $inquiry_id = wp_insert_post( array( 'post_type' => 'yacht_inquiry', 'post_title' => sprintf( __( 'Zapytanie #%s - %s', 'yacht-booking' ), time(), $yacht->post_title ), 'post_status' => 'publish', ) ); if ( is_wp_error( $inquiry_id ) ) { return false; } update_post_meta( $inquiry_id, '_inquiry_yacht_id', (int) $data['yacht_id'] ); update_post_meta( $inquiry_id, '_inquiry_customer_name', sanitize_text_field( $data['customer_name'] ) ); update_post_meta( $inquiry_id, '_inquiry_customer_email', sanitize_email( $data['customer_email'] ) ); update_post_meta( $inquiry_id, '_inquiry_customer_phone', sanitize_text_field( $data['customer_phone'] ) ); if ( ! empty( $data['message'] ) ) { update_post_meta( $inquiry_id, '_inquiry_message', sanitize_textarea_field( $data['message'] ) ); } if ( ! empty( $data['preferred_dates'] ) ) { update_post_meta( $inquiry_id, '_inquiry_preferred_dates', sanitize_text_field( $data['preferred_dates'] ) ); } return $inquiry_id; } /** * Send inquiry emails (admin + customer) and store copies. * * @param int $inquiry_id Inquiry ID. */ public static function send_emails( $inquiry_id ) { $inquiry_id = absint( $inquiry_id ); $yacht_id = self::get_yacht_id( $inquiry_id ); $yacht = get_post( $yacht_id ); $yacht_name = $yacht ? $yacht->post_title : __( 'Nieznany', 'yacht-booking' ); $customer_name = self::get_customer_name( $inquiry_id ); $customer_email = self::get_customer_email( $inquiry_id ); $customer_phone = self::get_customer_phone( $inquiry_id ); $message = self::get_message( $inquiry_id ); $preferred_dates = self::get_preferred_dates( $inquiry_id ); $site_name = get_bloginfo( 'name' ); $from_name = Settings::get_email_from_name(); $from_address = Settings::get_email_from_address(); $headers = array( 'Content-Type: text/html; charset=UTF-8', 'From: ' . $from_name . ' <' . $from_address . '>', ); // --- Admin email --- $admin_subject = sprintf( /* translators: 1: inquiry ID, 2: site name */ __( '[Zapytanie o rezerwację] #%1$d - %2$s', 'yacht-booking' ), $inquiry_id, $site_name ); $admin_body = '
' . __( 'Otrzymano nowe zapytanie o rezerwację jachtu.', 'yacht-booking' ) . '
'; $admin_body .= '' . __( 'Jacht:', 'yacht-booking' ) . ' ' . esc_html( $yacht_name ) . '
'; if ( $preferred_dates ) { $admin_body .= '' . __( 'Preferowane terminy:', 'yacht-booking' ) . ' ' . esc_html( $preferred_dates ) . '
'; } $admin_body .= '' . __( 'Dane klienta:', 'yacht-booking' ) . '
';
$admin_body .= esc_html__( 'Imię i nazwisko:', 'yacht-booking' ) . ' ' . esc_html( $customer_name ) . '
';
$admin_body .= esc_html__( 'Email:', 'yacht-booking' ) . ' ' . esc_html( $customer_email ) . '
';
$admin_body .= esc_html__( 'Telefon:', 'yacht-booking' ) . ' ' . esc_html( $customer_phone ) . '
' . __( 'Wiadomość:', 'yacht-booking' ) . '
' . nl2br( esc_html( $message ) ) . '
' . __( 'Przejdź do listy zapytań', 'yacht-booking' ) . '
'; $admin_headers = $headers; $admin_headers[] = 'Reply-To: ' . $customer_name . ' <' . $customer_email . '>'; wp_mail( get_option( 'admin_email' ), $admin_subject, $admin_body, $admin_headers ); update_post_meta( $inquiry_id, '_inquiry_admin_email_body', $admin_body ); // --- Customer confirmation email --- $customer_subject = sprintf( /* translators: 1: site name */ __( 'Potwierdzenie zapytania o rezerwację - %s', 'yacht-booking' ), $site_name ); $customer_body = '' . sprintf( /* translators: %s: customer name */ __( 'Witaj %s,', 'yacht-booking' ), esc_html( $customer_name ) ) . '
'; $customer_body .= '' . __( 'Dziękujemy za przesłanie zapytania o rezerwację jachtu. Otrzymaliśmy Twoje zgłoszenie i skontaktujemy się z Tobą najszybciej jak to możliwe.', 'yacht-booking' ) . '
'; $customer_body .= '' . __( 'Szczegóły zapytania:', 'yacht-booking' ) . '
';
$customer_body .= esc_html__( 'Jacht:', 'yacht-booking' ) . ' ' . esc_html( $yacht_name ) . '
' . esc_html__( 'Preferowane terminy:', 'yacht-booking' ) . ' ' . esc_html( $preferred_dates ) . '
'; } if ( $message ) { $customer_body .= '' . esc_html__( 'Twoja wiadomość:', 'yacht-booking' ) . '
' . nl2br( esc_html( $message ) ) . '
' . __( 'Pozdrawiamy,', 'yacht-booking' ) . '
' . esc_html( $site_name ) . '