Newer
Older
tonitalia-pluginsoci / includes / class-mailer.php
<?php
/**
 * Email notifications.
 *
 * @package TonItaliaRegistration
 */

defined( 'ABSPATH' ) || exit;

/**
 * Class TON_Reg_Mailer
 */
class TON_Reg_Mailer {

	/**
	 * @param object $registration Registration row.
	 * @param int    $user_id      User ID.
	 */
	public static function send_admin_notification( $registration, $user_id ) {
		$to      = get_option( 'ton_reg_admin_email', get_option( 'admin_email' ) );
		$subject = get_option( 'ton_reg_email_admin_subject', '' );
		$body    = get_option( 'ton_reg_email_admin_body', '' );

		$replacements = self::replacements( $registration, $user_id );
		$subject      = strtr( $subject, $replacements );
		$body         = strtr( $body, $replacements );

		wp_mail( $to, $subject, $body );
	}

	/**
	 * @param object $registration Registration row.
	 * @param int    $user_id      User ID.
	 */
	public static function send_user_confirmation( $registration, $user_id ) {
		$to      = $registration->email;
		$subject = get_option( 'ton_reg_email_user_subject', '' );
		$body    = get_option( 'ton_reg_email_user_body', '' );

		$replacements = self::replacements( $registration, $user_id );
		$subject      = strtr( $subject, $replacements );
		$body         = strtr( $body, $replacements );

		wp_mail( $to, $subject, $body );

		// Standard WP new user notification with password reset link.
		if ( function_exists( 'wp_send_new_user_notifications' ) ) {
			wp_send_new_user_notifications( $user_id, 'user' );
		}
	}

	/**
	 * @param object $registration Registration.
	 * @param int    $user_id      User ID.
	 * @return array<string,string>
	 */
	private static function replacements( $registration, $user_id ) {
		$admin_url = admin_url( 'admin.php?page=ton-registrations&action=view&id=' . (int) $registration->id );

		return array(
			'{nome}'           => $registration->nome,
			'{cognome}'        => $registration->cognome,
			'{email}'          => $registration->email,
			'{codice_fiscale}' => $registration->codice_fiscale,
			'{ip}'             => $registration->registration_ip,
			'{login_url}'      => wp_lostpassword_url(),
			'{gdpr_contact}'   => get_option( 'ton_reg_gdpr_contact', '' ),
			'{admin_url}'      => $admin_url,
		);
	}
}