FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
latepoint
/
lib
/
helpers
Edit File: notifications_helper.php
<?php class OsNotificationsHelper { public static function get_selected_processor_code_by_type( string $type ): string { return OsSettingsHelper::get_settings_value( 'notifications_' . $type . '_processor', '' ); } public static function get_available_notification_processors_for_type( string $type ): array { $notification_types = self::get_available_notification_types(); return $notification_types[ $type ]['processors'] ?? []; } public static function is_notification_type_enabled( string $type ) { return ! empty( self::get_selected_processor_code_by_type( $type ) ); } public static function is_notification_processor_enabled( string $type, string $processor_code ) { return ( self::get_selected_processor_code_by_type( $type ) == $processor_code ); } public static function get_email_headers_from() { $from_name = OsSettingsHelper::get_settings_value( 'notification_email_setting_from_name', get_bloginfo( 'name' ) ); $from_email = OsSettingsHelper::get_settings_value( 'notification_email_setting_from_email', get_bloginfo( 'admin_email' ) ); return ( ! empty( $from_email ) && ! empty( $from_name ) ) ? ( $from_name . ' <' . $from_email . '>' ) : ( get_bloginfo( 'name' ) . ' <' . get_bloginfo( 'admin_email' ) . '>' ); } public static function get_available_notification_types() { $notification_types = []; $notification_types['email'] = [ 'code' => 'email', 'label' => __( 'Email', 'latepoint' ), 'processors' => [ [ 'label' => __( 'Default WordPress Mailer', 'latepoint' ), 'code' => 'wp_mail', 'image_url' => '', ], ], ]; $notification_types['sms'] = [ 'code' => 'sms', 'label' => __( 'SMS', 'latepoint' ), 'processors' => OsSmsHelper::get_sms_processors(), ]; $notification_types['whatsapp'] = [ 'code' => 'whatsapp', 'label' => __( 'WhatsApp', 'latepoint' ), 'processors' => OsWhatsappHelper::get_whatsapp_processors(), ]; /** * * Returns notification types with processors * * @since 4.7.0 * @hook latepoint_available_notification_types * * @param {array} notification types with processors * @returns {array} list of notification types with processors */ return apply_filters( 'latepoint_available_notification_types', $notification_types ); } /** * * Sends notification based on a type * * @param string $type * @param array $notification_settings * * @return array */ public static function send( string $type, array $notification_settings = [] ): array { $result = [ 'status' => LATEPOINT_STATUS_ERROR, 'message' => __( 'Nothing to run', 'latepoint' ), ]; if ( ! OsNotificationsHelper::is_notification_type_enabled( $type ) ) { $type_label = self::get_available_notification_types()[ $type ]['label'] ?? $type; // translators: %s is the type of notification $result['message'] = sprintf( __( '%s notifications are disabled', 'latepoint' ), $type_label ); return $result; } switch ( $type ) { case 'email': $to = $notification_settings['to'] ?? ''; $subject = $notification_settings['subject'] ?? ''; $content = $notification_settings['content'] ?? ''; $activity_data = $notification_settings['activity_data'] ?? []; $attachments = $notification_settings['attachments'] ?? []; $mailer = new OsMailer(); $result = OsEmailHelper::send_email( $to, $subject, $content, $mailer->get_headers(), $activity_data, $attachments ); break; case 'sms': $to = $notification_settings['to'] ?? ''; $content = $notification_settings['content'] ?? ''; $result = OsSmsHelper::send_sms( $to, $content, ( $notification_settings['activity_data'] ?? [] ) ); break; case 'whatsapp': $to = $notification_settings['to'] ?? ''; $result = OsWhatsappHelper::send_whatsapp( $to, $notification_settings['data'], ( $notification_settings['activity_data'] ?? [] ) ); break; } /** * Send a notification based on type * * @since 4.7.0 * @hook latepoint_notifications_send * * @param {array} $result The array of data describing the send operation * @param {string} $type Type of notificaiton to send * @param {array} $notification_settings Settings for notification * * @returns {array} The array of descriptive data, possibly transformed by hooks */ return apply_filters( 'latepoint_notifications_send', $result, $type, $notification_settings ); } public static function load_templates_for_action_type( string $action_type ): array { $templates = []; require_once ABSPATH . 'wp-admin/includes/file.php'; if ( ! WP_Filesystem() ) { OsDebugHelper::log( __( 'Failed to initialise WC_Filesystem API while trying to show notification templates.', 'latepoint' ) ); return $templates; } global $wp_filesystem; switch ( $action_type ) { case 'send_email': $templates[] = [ 'id' => 'booking__created__to_agent', 'to_user_type' => 'agent', 'name' => 'New Appointment', 'to_email' => '{{agent_full_name}} <{{agent_email}}>', 'subject' => 'New Appointment Received', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/agent/booking_created.html' ) ), ]; $templates[] = [ 'id' => 'booking__created__to_customer', 'to_user_type' => 'customer', 'name' => 'New Appointment', 'to_email' => '{{customer_full_name}} <{{customer_email}}>', 'subject' => 'Appointment Confirmation', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/customer/booking_created.html' ) ), ]; $templates[] = [ 'id' => 'booking__updated__to_customer', 'to_user_type' => 'customer', 'name' => 'Appointment Updated', 'to_email' => '{{customer_full_name}} <{{customer_email}}>', 'subject' => 'Appointment Updated', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/customer/booking_updated.html' ) ), ]; $templates[] = [ 'id' => 'booking__updated__to_agent', 'to_user_type' => 'agent', 'name' => 'Appointment Updated', 'to_email' => '{{agent_full_name}} <{{agent_email}}>', 'subject' => 'Appointment Updated', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/agent/booking_updated.html' ) ), ]; $templates[] = [ 'id' => 'customer__created__to_customer', 'to_user_type' => 'customer', 'name' => 'Customer Created', 'to_email' => '{{customer_full_name}} <{{customer_email}}>', 'subject' => 'Your New Account', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/customer/customer_created.html' ) ), ]; $templates[] = [ 'id' => 'booking__start__to_customer', 'to_user_type' => 'customer', 'name' => 'Appointment Reminder', 'to_email' => '{{customer_full_name}} <{{customer_email}}>', 'subject' => 'Appointment Reminder', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/customer/booking_start.html' ) ), ]; $templates[] = [ 'id' => 'booking__start__to_agent', 'to_user_type' => 'agent', 'name' => 'Appointment Reminder', 'to_email' => '{{agent_full_name}} <{{agent_email}}>', 'subject' => 'Appointment Reminder', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/agent/booking_start.html' ) ), ]; $templates[] = [ 'id' => 'booking__end__to_customer', 'to_user_type' => 'customer', 'name' => 'After Appointment Feedback', 'to_email' => '{{customer_full_name}} <{{customer_email}}>', 'subject' => 'Appointment Feedback', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/customer/booking_end.html' ) ), ]; $templates[] = [ 'id' => 'booking__end__to_agent', 'to_user_type' => 'agent', 'name' => 'After Appointment Feedback', 'to_email' => '{{agent_full_name}} <{{agent_email}}>', 'subject' => 'Appointment Feedback', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/agent/booking_end.html' ) ), ]; $templates[] = [ 'id' => 'order__created__to_agent', 'to_user_type' => 'agent', 'name' => 'New Order', 'to_email' => '{{order_agents_emails}}', 'subject' => 'New Order Received', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/agent/order_created.html' ) ), ]; $templates[] = [ 'id' => 'order__created__to_customer', 'to_user_type' => 'customer', 'name' => 'New Order', 'to_email' => '{{customer_full_name}} <{{customer_email}}>', 'subject' => 'Order Confirmation', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/customer/order_created.html' ) ), ]; $templates[] = [ 'id' => 'payment_request__created__to_customer', 'to_user_type' => 'customer', 'name' => 'New Payment Request', 'to_email' => '{{customer_full_name}} <{{customer_email}}>', 'subject' => 'Payment Request for Order {{order_confirmation_code}}', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/customer/payment_request_created.html' ) ), ]; if ( OsSettingsHelper::is_env_dev() ) { $templates[] = [ 'id' => 'booking__test__to_agent', 'to_user_type' => 'agent', 'name' => 'Test Booking variables', 'to_email' => '{{agent_full_name}} <{{agent_email}}>', 'subject' => 'Test Booking variables', 'content' => OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/agent/booking_test.html' ) ), ]; } break; case 'send_sms': $templates[] = [ 'id' => 'booking__created__to_agent', 'to_user_type' => 'agent', 'name' => 'New Appointment', 'to_phone' => '{{agent_phone}}', 'content' => 'Hi {{agent_first_name}}, your {{service_name}} appointment with {{customer_full_name}} is coming on {{start_date}} at {{start_time}}', ]; $templates[] = [ 'id' => 'booking__updated__to_agent', 'to_user_type' => 'agent', 'name' => 'Appointment Updated', 'to_phone' => '{{agent_phone}}', 'content' => 'Hi {{agent_first_name}}, appointment with ID {{booking_id}} was updated. Date/Time: {{start_date}} at {{start_time}}', ]; $templates[] = [ 'id' => 'booking__created__to_customer', 'to_user_type' => 'customer', 'name' => 'New Appointment', 'to_phone' => '{{customer_phone}}', 'content' => 'Hi {{customer_first_name}}, your {{service_name}} appointment is coming on {{start_date}} at {{start_time}}', ]; $templates[] = [ 'id' => 'booking__updated__to_customer', 'to_user_type' => 'customer', 'name' => 'Appointment Updated', 'to_phone' => '{{customer_phone}}', 'content' => 'Hi {{customer_first_name}}, your {{service_name}} appointment was updated. Date/Time: {{start_date}} at {{start_time}}', ]; $templates[] = [ 'id' => 'customer__created__to_customer', 'to_user_type' => 'customer', 'name' => 'Customer Created', 'to_phone' => '{{customer_phone}}', 'content' => 'Thank you for creating an account. Visit {{customer_dashboard_url}} to manage your appointments.', ]; break; } /** * Get list of templates for action type * * @since 5.1.0 * @hook latepoint_load_templates_for_action_type * * @param {array} $templates array of templates for action type * @param {string} $action_type type of action * @param {WpFilesystem} $action_type type of action * * @returns {array} The filtered array of templates */ $templates = apply_filters( 'latepoint_load_templates_for_action_type', $templates, $action_type, $wp_filesystem ); return $templates; } // Password Reset Request public static function customer_password_reset_request_subject() { $customer_mailer = new OsCustomerMailer(); return $customer_mailer->password_reset_request_subject(); } public static function customer_password_reset_request_content() { $customer_mailer = new OsCustomerMailer(); return $customer_mailer->password_reset_request_content(); } }
Save
Back