File "class-webhooks.php"

Full Path: /home/romayxjt/public_html/wp-content/plugins/orderable/inc/class-webhooks.php
File size: 1.44 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * Webhooks.
 *
 * @package Orderable/Classes
 */

defined( 'ABSPATH' ) || exit;

/**
 * Settings class.
 */
class Orderable_Webhooks {
	/**
	 * Webhook server URL.
	 *
	 * @var string
	 */
	public static $server_url = 'https://my.orderable.com/';

	/**
	 * Subscribe to email list.
	 *
	 * @param string $email
	 */
	public static function subscribe( $email = null ) {
		$email = ! $email ? get_option( 'admin_email' ) : $email;

		if ( empty( $email ) ) {
			return;
		}

		$user_id = get_current_user_id();

		$webook_url = self::$server_url . '?orderable-webhook=subscribe';

		$url_data = array(
			'email'      => $email,
			'first_name' => get_user_meta( $user_id, 'first_name', true ),
			'last_name'  => get_user_meta( $user_id, 'last_name', true ),
			'full_name'  => get_user_meta( $user_id, 'display_name', true ),
			'website'    => get_site_url(),
		);

		foreach ( $url_data as $url_data_key => $url_data_item ) {
			$webook_url .= sprintf( '&%s=%s', urlencode( $url_data_key ), urlencode( $url_data_item ) );
		}

		$opt_in_response      = wp_remote_post( $webook_url );
		$opt_in_response_body = ! is_wp_error( $opt_in_response ) ? json_decode( wp_remote_retrieve_body( $opt_in_response ), true ) : array();

		if ( ! empty( $opt_in_response_body['success'] ) ) {
			// Log opt in status for processing later.
			update_option( 'orderable_opt_in', 1 );
		}

		// Opt in successful so delete the flag.
		delete_option( 'orderable_opt_in' );
	}
}