2021-03-15 01:40:52 +01:00
< ? php
class SwpmMiscUtils {
public static $stripe_sca_frontend_scripts_printed = false ;
public static function create_mandatory_wp_pages () {
$settings = SwpmSettings :: get_instance ();
//Create join us page
$swpm_join_page_content = '<p style="color:red;font-weight:bold;">This page and the content has been automatically generated for you to give you a basic idea of how a "Join Us" page should look like. You can customize this page however you like it by editing this page from your WordPress page editor.</p>' ;
$swpm_join_page_content .= '<p style="font-weight:bold;">If you end up changing the URL of this page then make sure to update the URL value in the settings menu of the plugin.</p>' ;
$swpm_join_page_content .= ' < p style = " border-top:1px solid #ccc;padding-top:10px;margin-top:10px; " ></ p >
< strong > Free Membership </ strong >
< br />
You get unlimited access to free membership content
< br />
< em >< strong > Price : Free !</ strong ></ em >
< br />< br /> Link the following image to go to the Registration Page if you want your visitors to be able to create a free membership account < br />< br />
< img title = " Join Now " src = " ' . SIMPLE_WP_MEMBERSHIP_URL . '/images/join-now-button-image.gif " alt = " Join Now Button " width = " 277 " height = " 82 " />
< p style = " border-bottom:1px solid #ccc;padding-bottom:10px;margin-bottom:10px; " ></ p > ' ;
$swpm_join_page_content .= '<p><strong>You can register for a Free Membership or pay for one of the following membership options</strong></p>' ;
$swpm_join_page_content .= ' < p style = " border-top:1px solid #ccc;padding-top:10px;margin-top:10px; " ></ p >
[ ==> Insert Payment Button For Your Paid Membership Levels Here <== ]
< p style = " border-bottom:1px solid #ccc;padding-bottom:10px;margin-bottom:10px; " ></ p > ' ;
$swpm_join_page = array (
'post_title' => 'Join Us' ,
'post_name' => 'membership-join' ,
'post_content' => $swpm_join_page_content ,
'post_parent' => 0 ,
'post_status' => 'publish' ,
'post_type' => 'page' ,
'comment_status' => 'closed' ,
'ping_status' => 'closed' ,
);
$join_page_obj = get_page_by_path ( 'membership-join' );
if ( ! $join_page_obj ) {
$join_page_id = wp_insert_post ( $swpm_join_page );
} else {
$join_page_id = $join_page_obj -> ID ;
if ( $join_page_obj -> post_status == 'trash' ) { //For cases where page may be in trash, bring it out of trash
wp_update_post (
array (
'ID' => $join_page_obj -> ID ,
'post_status' => 'publish' ,
)
);
}
}
$swpm_join_page_permalink = get_permalink ( $join_page_id );
$settings -> set_value ( 'join-us-page-url' , $swpm_join_page_permalink );
//Create registration page
$swpm_rego_page = array (
'post_title' => SwpmUtils :: _ ( 'Registration' ),
'post_name' => 'membership-registration' ,
'post_content' => '[swpm_registration_form]' ,
'post_parent' => $join_page_id ,
'post_status' => 'publish' ,
'post_type' => 'page' ,
'comment_status' => 'closed' ,
'ping_status' => 'closed' ,
);
$rego_page_obj = get_page_by_path ( 'membership-registration' );
if ( ! $rego_page_obj ) {
$rego_page_id = wp_insert_post ( $swpm_rego_page );
} else {
$rego_page_id = $rego_page_obj -> ID ;
if ( $rego_page_obj -> post_status == 'trash' ) { //For cases where page may be in trash, bring it out of trash
wp_update_post (
array (
'ID' => $rego_page_obj -> ID ,
'post_status' => 'publish' ,
)
);
}
}
$swpm_rego_page_permalink = get_permalink ( $rego_page_id );
$settings -> set_value ( 'registration-page-url' , $swpm_rego_page_permalink );
//Create login page
$swpm_login_page = array (
'post_title' => SwpmUtils :: _ ( 'Member Login' ),
'post_name' => 'membership-login' ,
'post_content' => '[swpm_login_form]' ,
'post_parent' => 0 ,
'post_status' => 'publish' ,
'post_type' => 'page' ,
'comment_status' => 'closed' ,
'ping_status' => 'closed' ,
);
$login_page_obj = get_page_by_path ( 'membership-login' );
if ( ! $login_page_obj ) {
$login_page_id = wp_insert_post ( $swpm_login_page );
} else {
$login_page_id = $login_page_obj -> ID ;
if ( $login_page_obj -> post_status == 'trash' ) { //For cases where page may be in trash, bring it out of trash
wp_update_post (
array (
'ID' => $login_page_obj -> ID ,
'post_status' => 'publish' ,
)
);
}
}
$swpm_login_page_permalink = get_permalink ( $login_page_id );
$settings -> set_value ( 'login-page-url' , $swpm_login_page_permalink );
//Create profile page
$swpm_profile_page = array (
'post_title' => SwpmUtils :: _ ( 'Profile' ),
'post_name' => 'membership-profile' ,
'post_content' => '[swpm_profile_form]' ,
'post_parent' => $login_page_id ,
'post_status' => 'publish' ,
'post_type' => 'page' ,
'comment_status' => 'closed' ,
'ping_status' => 'closed' ,
);
$profile_page_obj = get_page_by_path ( 'membership-profile' );
if ( ! $profile_page_obj ) {
$profile_page_id = wp_insert_post ( $swpm_profile_page );
} else {
$profile_page_id = $profile_page_obj -> ID ;
if ( $profile_page_obj -> post_status == 'trash' ) { //For cases where page may be in trash, bring it out of trash
wp_update_post (
array (
'ID' => $profile_page_obj -> ID ,
'post_status' => 'publish' ,
)
);
}
}
$swpm_profile_page_permalink = get_permalink ( $profile_page_id );
$settings -> set_value ( 'profile-page-url' , $swpm_profile_page_permalink );
//Create reset page
$swpm_reset_page = array (
'post_title' => SwpmUtils :: _ ( 'Password Reset' ),
'post_name' => 'password-reset' ,
'post_content' => '[swpm_reset_form]' ,
'post_parent' => $login_page_id ,
'post_status' => 'publish' ,
'post_type' => 'page' ,
'comment_status' => 'closed' ,
'ping_status' => 'closed' ,
);
$reset_page_obj = get_page_by_path ( 'password-reset' );
if ( ! $profile_page_obj ) {
$reset_page_id = wp_insert_post ( $swpm_reset_page );
} else {
$reset_page_id = $reset_page_obj -> ID ;
if ( $reset_page_obj -> post_status == 'trash' ) { //For cases where page may be in trash, bring it out of trash
wp_update_post (
array (
'ID' => $reset_page_obj -> ID ,
'post_status' => 'publish' ,
)
);
}
}
$swpm_reset_page_permalink = get_permalink ( $reset_page_id );
$settings -> set_value ( 'reset-page-url' , $swpm_reset_page_permalink );
$settings -> save (); //Save all settings object changes
}
public static function redirect_to_url ( $url ) {
if ( empty ( $url ) ) {
return ;
}
$url = apply_filters ( 'swpm_redirect_to_url' , $url );
if ( ! preg_match ( '/http/' , $url ) ) { //URL value is incorrect
echo '<p>Error! The URL value you entered in the plugin configuration is incorrect.</p>' ;
echo '<p>A URL must always have the "http" keyword in it.</p>' ;
echo '<p style="font-weight: bold;">The URL value you currently configured is: <br />' . $url . '</p>' ;
echo '<p>Here are some examples of correctly formatted URL values for your reference: <br />http://www.example.com<br/>http://example.com<br />https://www.example.com</p>' ;
echo '<p>Find the field where you entered this incorrect URL value and correct the mistake then try again.</p>' ;
exit ;
}
if ( ! headers_sent () ) {
header ( 'Location: ' . $url );
} else {
echo '<meta http-equiv="refresh" content="0;url=' . $url . '" />' ;
}
exit ;
}
public static function show_temporary_message_then_redirect ( $msg , $redirect_url , $timeout = 5 ) {
$timeout = absint ( $timeout );
$redirect_html = sprintf ( '<meta http-equiv="refresh" content="%d; url=\'%s\'" />' , $timeout , $redirect_url );
$redir_msg = SwpmUtils :: _ ( 'You will be automatically redirected in a few seconds. If not, please %s.' );
$redir_msg = sprintf ( $redir_msg , '<a href="' . $redirect_url . '">' . SwpmUtils :: _ ( 'click here' ) . '</a>' );
$msg = $msg . '<br/><br/>' . $redir_msg . $redirect_html ;
$title = SwpmUtils :: _ ( 'Action Status' );
wp_die ( $msg , $title );
}
public static function get_current_page_url () {
$pageURL = 'http' ;
if ( isset ( $_SERVER [ 'SCRIPT_URI' ] ) && ! empty ( $_SERVER [ 'SCRIPT_URI' ] ) ) {
$pageURL = $_SERVER [ 'SCRIPT_URI' ];
$pageURL = str_replace ( ':443' , '' , $pageURL ); //remove any port number from the URL value (some hosts include the port number with this).
$pageURL = apply_filters ( 'swpm_get_current_page_url_filter' , $pageURL );
return $pageURL ;
}
if ( isset ( $_SERVER [ 'HTTPS' ] ) && ( $_SERVER [ 'HTTPS' ] == 'on' ) ) {
$pageURL .= 's' ;
}
$pageURL .= '://' ;
if ( isset ( $_SERVER [ 'SERVER_PORT' ] ) && ( $_SERVER [ 'SERVER_PORT' ] != '80' ) && ( $_SERVER [ 'SERVER_PORT' ] != '443' ) ) {
$pageURL .= ltrim ( $_SERVER [ 'SERVER_NAME' ], '.*' ) . ':' . $_SERVER [ 'SERVER_PORT' ] . $_SERVER [ 'REQUEST_URI' ];
} else {
$pageURL .= ltrim ( $_SERVER [ 'SERVER_NAME' ], '.*' ) . $_SERVER [ 'REQUEST_URI' ];
}
$pageURL = apply_filters ( 'swpm_get_current_page_url_filter' , $pageURL );
return $pageURL ;
}
/*
* This is an alternative to the get_current_page_url () function . It needs to be tested on many different server conditions before it can be utilized
*/
public static function get_current_page_url_alt () {
$url_parts = array ();
$url_parts [ 'proto' ] = 'http' ;
if ( isset ( $_SERVER [ 'SCRIPT_URI' ] ) && ! empty ( $_SERVER [ 'SCRIPT_URI' ] ) ) {
return $_SERVER [ 'SCRIPT_URI' ];
}
if ( isset ( $_SERVER [ 'HTTPS' ] ) && ( $_SERVER [ 'HTTPS' ] == 'on' ) ) {
$url_parts [ 'proto' ] = 'https' ;
}
$url_parts [ 'port' ] = '' ;
if ( isset ( $_SERVER [ 'SERVER_PORT' ] ) && ( $_SERVER [ 'SERVER_PORT' ] != '80' ) && ( $_SERVER [ 'SERVER_PORT' ] != '443' ) ) {
$url_parts [ 'port' ] = $_SERVER [ 'SERVER_PORT' ];
}
$url_parts [ 'domain' ] = ltrim ( $_SERVER [ 'SERVER_NAME' ], '.*' );
$url_parts [ 'uri' ] = $_SERVER [ 'REQUEST_URI' ];
$url_parts = apply_filters ( 'swpm_get_current_page_url_alt_filter' , $url_parts );
$pageURL = sprintf ( '%s://%s%s%s' , $url_parts [ 'proto' ], $url_parts [ 'domain' ], ! empty ( $url_parts [ 'port' ] ) ? ':' . $url_parts [ 'port' ] : '' , $url_parts [ 'uri' ] );
return $pageURL ;
}
/*
* Returns just the domain name . Something like example . com
*/
public static function get_home_url_without_http_and_www () {
$site_url = get_site_url ();
$parse = parse_url ( $site_url );
$site_url = $parse [ 'host' ];
$site_url = str_replace ( 'https://' , '' , $site_url );
$site_url = str_replace ( 'http://' , '' , $site_url );
if ( preg_match ( '/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i' , $site_url , $regs ) ) {
$site_url = $regs [ 'domain' ];
}
return $site_url ;
}
public static function replace_dynamic_tags ( $msg_body , $member_id , $additional_args = '' ) {
$settings = SwpmSettings :: get_instance ();
$user_record = SwpmMemberUtils :: get_user_by_id ( $member_id );
$password = '' ;
$reg_link = '' ;
if ( ! empty ( $additional_args ) ) {
$password = isset ( $additional_args [ 'password' ] ) ? $additional_args [ 'password' ] : $password ;
$reg_link = isset ( $additional_args [ 'reg_link' ] ) ? $additional_args [ 'reg_link' ] : $reg_link ;
}
$login_link = $settings -> get_value ( 'login-page-url' );
//Construct the primary address value
$primary_address = '' ;
if ( ! empty ( $user_record -> address_street ) && ! empty ( $user_record -> address_city ) ) {
//An address value is present.
$primary_address .= $user_record -> address_street ;
$primary_address .= " \n " . $user_record -> address_city ;
if ( ! empty ( $user_record -> address_state ) ) {
$primary_address .= ' ' . $user_record -> address_state ;
}
if ( ! empty ( $user_record -> address_zipcode ) ) {
$primary_address .= ' ' . $user_record -> address_zipcode ;
}
if ( ! empty ( $user_record -> country ) ) {
$primary_address .= " \n " . $user_record -> country ;
}
}
$membership_level_name = SwpmMembershipLevelUtils :: get_membership_level_name_of_a_member ( $member_id );
//Format some field values
$member_since_formatted = SwpmUtils :: get_formatted_date_according_to_wp_settings ( $user_record -> member_since );
$subsc_starts_formatted = SwpmUtils :: get_formatted_date_according_to_wp_settings ( $user_record -> subscription_starts );
//Define the replacable tags
$tags = array (
'{member_id}' ,
'{user_name}' ,
'{first_name}' ,
'{last_name}' ,
'{membership_level}' ,
'{membership_level_name}' ,
'{account_state}' ,
'{email}' ,
'{phone}' ,
'{member_since}' ,
'{subscription_starts}' ,
'{company_name}' ,
'{password}' ,
'{login_link}' ,
'{reg_link}' ,
'{primary_address}' ,
2021-03-15 01:47:35 +01:00
'{birth_place}' ,
'{birth_date}' ,
2021-03-15 01:40:52 +01:00
);
//Define the values
$vals = array (
$member_id ,
$user_record -> user_name ,
$user_record -> first_name ,
$user_record -> last_name ,
$user_record -> membership_level ,
$membership_level_name ,
$user_record -> account_state ,
$user_record -> email ,
$user_record -> phone ,
$member_since_formatted ,
$subsc_starts_formatted ,
$user_record -> company_name ,
$password ,
$login_link ,
$reg_link ,
$primary_address ,
2021-03-15 01:47:35 +01:00
$user_record -> birth_place ,
$user_record -> birth_date ,
2021-03-15 01:40:52 +01:00
);
$msg_body = str_replace ( $tags , $vals , $msg_body );
return $msg_body ;
}
public static function get_login_link () {
$login_url = SwpmSettings :: get_instance () -> get_value ( 'login-page-url' );
$joinus_url = SwpmSettings :: get_instance () -> get_value ( 'join-us-page-url' );
if ( empty ( $login_url ) || empty ( $joinus_url ) ) {
return '<span style="color:red;">Simple Membership is not configured correctly. The login page or the join us page URL is missing in the settings configuration. '
. 'Please contact <a href="mailto:' . get_option ( 'admin_email' ) . '">Admin</a>' ;
}
//Create the login/protection message
$filtered_login_url = apply_filters ( 'swpm_get_login_link_url' , $login_url ); //Addons can override the login URL value using this filter.
$login_msg = '' ;
$login_msg .= SwpmUtils :: _ ( 'Please' ) . ' <a class="swpm-login-link" href="' . $filtered_login_url . '">' . SwpmUtils :: _ ( 'Login' ) . '</a>. ' ;
$login_msg .= SwpmUtils :: _ ( 'Not a Member?' ) . ' <a href="' . $joinus_url . '">' . SwpmUtils :: _ ( 'Join Us' ) . '</a>' ;
return $login_msg ;
}
public static function get_renewal_link () {
$renewal = SwpmSettings :: get_instance () -> get_value ( 'renewal-page-url' );
if ( empty ( $renewal ) ) {
//No renewal page is configured so don't show any renewal page link. It is okay to have no renewal page configured.
return '' ;
}
return SwpmUtils :: _ ( 'Please' ) . ' <a class="swpm-renewal-link" href="' . $renewal . '">' . SwpmUtils :: _ ( 'renew' ) . '</a> ' . SwpmUtils :: _ ( ' your account to gain access to this content.' );
}
public static function compare_url ( $url1 , $url2 ) {
$url1 = trailingslashit ( strtolower ( $url1 ) );
$url2 = trailingslashit ( strtolower ( $url2 ) );
if ( $url1 == $url2 ) {
return true ;
}
$url1 = parse_url ( $url1 );
$url2 = parse_url ( $url2 );
$components = array ( 'scheme' , 'host' , 'port' , 'path' );
foreach ( $components as $key => $value ) {
if ( ! isset ( $url1 [ $value ] ) && ! isset ( $url2 [ $value ] ) ) {
continue ;
}
if ( ! isset ( $url2 [ $value ] ) ) {
return false ;
}
if ( ! isset ( $url1 [ $value ] ) ) {
return false ;
}
if ( $url1 [ $value ] != $url2 [ $value ] ) {
return false ;
}
}
if ( ! isset ( $url1 [ 'query' ] ) && ! isset ( $url2 [ 'query' ] ) ) {
return true ;
}
if ( ! isset ( $url2 [ 'query' ] ) ) {
return false ;
}
if ( ! isset ( $url1 [ 'query' ] ) ) {
return false ;
}
return strpos ( $url1 [ 'query' ], $url2 [ 'query' ] ) || strpos ( $url2 [ 'query' ], $url1 [ 'query' ] );
}
public static function is_swpm_admin_page () {
if ( isset ( $_GET [ 'page' ] ) && ( stripos ( $_GET [ 'page' ], 'simple_wp_membership' ) !== false ) ) {
//This is an admin page of the SWPM plugin
return true ;
}
return false ;
}
public static function check_user_permission_and_is_admin ( $action_name ) {
//Check we are on the admin end
if ( ! is_admin () ) {
//Error! This is not on the admin end. This can only be done from the admin side
wp_die ( SwpmUtils :: _ ( 'Error! This action (' . $action_name . ') can only be done from admin end.' ) );
}
//Check user has management permission
if ( ! current_user_can ( SWPM_MANAGEMENT_PERMISSION ) ) {
//Error! Only management users can do this
wp_die ( SwpmUtils :: _ ( 'Error! This action (' . $action_name . ') can only be done by an user with management permission.' ) );
}
}
public static function format_raw_content_for_front_end_display ( $raw_content ) {
$formatted_content = wptexturize ( $raw_content );
$formatted_content = convert_smilies ( $formatted_content );
$formatted_content = convert_chars ( $formatted_content );
$formatted_content = wpautop ( $formatted_content );
$formatted_content = shortcode_unautop ( $formatted_content );
$formatted_content = prepend_attachment ( $formatted_content );
$formatted_content = capital_P_dangit ( $formatted_content );
$formatted_content = do_shortcode ( $formatted_content );
return $formatted_content ;
}
public static function get_countries_dropdown ( $country = '' ) {
$countries = array (
'Afghanistan' ,
'Albania' ,
'Algeria' ,
'Andorra' ,
'Angola' ,
'Antigua and Barbuda' ,
'Argentina' ,
'Armenia' ,
'Aruba' ,
'Australia' ,
'Austria' ,
'Azerbaijan' ,
'Bahamas' ,
'Bahrain' ,
'Bangladesh' ,
'Barbados' ,
'Belarus' ,
'Belgium' ,
'Belize' ,
'Benin' ,
'Bhutan' ,
'Bolivia' ,
'Bonaire' ,
'Bosnia and Herzegovina' ,
'Botswana' ,
'Brazil' ,
'Brunei' ,
'Bulgaria' ,
'Burkina Faso' ,
'Burundi' ,
'Cambodia' ,
'Cameroon' ,
'Canada' ,
'Cape Verde' ,
'Central African Republic' ,
'Chad' ,
'Chile' ,
'China' ,
'Colombia' ,
'Comoros' ,
'Congo (Brazzaville)' ,
'Congo' ,
'Costa Rica' ,
" Cote d \ 'Ivoire " ,
'Croatia' ,
'Cuba' ,
'Curacao' ,
'Cyprus' ,
'Czech Republic' ,
'Denmark' ,
'Djibouti' ,
'Dominica' ,
'Dominican Republic' ,
'East Timor (Timor Timur)' ,
'Ecuador' ,
'Egypt' ,
'El Salvador' ,
'Equatorial Guinea' ,
'Eritrea' ,
'Estonia' ,
'Eswatini' ,
'Ethiopia' ,
'Fiji' ,
'Finland' ,
'France' ,
'Gabon' ,
'Gambia, The' ,
'Georgia' ,
'Germany' ,
'Ghana' ,
'Greece' ,
'Grenada' ,
'Guatemala' ,
'Guinea' ,
'Guinea-Bissau' ,
'Guyana' ,
'Haiti' ,
'Honduras' ,
'Hong Kong' ,
'Hungary' ,
'Iceland' ,
'India' ,
'Indonesia' ,
'Iran' ,
'Iraq' ,
'Ireland' ,
'Israel' ,
'Italy' ,
'Jamaica' ,
'Japan' ,
'Jordan' ,
'Kazakhstan' ,
'Kenya' ,
'Kiribati' ,
'Korea, North' ,
'Korea, South' ,
'Kuwait' ,
'Kyrgyzstan' ,
'Laos' ,
'Latvia' ,
'Lebanon' ,
'Lesotho' ,
'Liberia' ,
'Libya' ,
'Liechtenstein' ,
'Lithuania' ,
'Luxembourg' ,
'Macedonia' ,
'Madagascar' ,
'Malawi' ,
'Malaysia' ,
'Maldives' ,
'Mali' ,
'Malta' ,
'Marshall Islands' ,
'Mauritania' ,
'Mauritius' ,
'Mexico' ,
'Micronesia' ,
'Moldova' ,
'Monaco' ,
'Mongolia' ,
'Montenegro' ,
'Morocco' ,
'Mozambique' ,
'Myanmar' ,
'Namibia' ,
'Nauru' ,
'Nepa' ,
'Netherlands' ,
'New Zealand' ,
'Nicaragua' ,
'Niger' ,
'Nigeria' ,
'Norway' ,
'Oman' ,
'Pakistan' ,
'Palau' ,
'Palestine' ,
'Panama' ,
'Papua New Guinea' ,
'Paraguay' ,
'Peru' ,
'Philippines' ,
'Poland' ,
'Portugal' ,
'Qatar' ,
'Romania' ,
'Russia' ,
'Rwanda' ,
'Saint Kitts and Nevis' ,
'Saint Lucia' ,
'Saint Vincent' ,
'Samoa' ,
'San Marino' ,
'Sao Tome and Principe' ,
'Saudi Arabia' ,
'Senegal' ,
'Serbia' ,
'Seychelles' ,
'Sierra Leone' ,
'Singapore' ,
'Slovakia' ,
'Slovenia' ,
'Solomon Islands' ,
'Somalia' ,
'South Africa' ,
'Spain' ,
'Sri Lanka' ,
'Sudan' ,
'Suriname' ,
'Swaziland' ,
'Sweden' ,
'Switzerland' ,
'Syria' ,
'Taiwan' ,
'Tajikistan' ,
'Tanzania' ,
'Thailand' ,
'Togo' ,
'Tonga' ,
'Trinidad and Tobago' ,
'Tunisia' ,
'Turkey' ,
'Turkmenistan' ,
'Tuvalu' ,
'Uganda' ,
'Ukraine' ,
'United Arab Emirates' ,
'United Kingdom' ,
'United States of America' ,
'Uruguay' ,
'Uzbekistan' ,
'Vanuatu' ,
'Vatican City' ,
'Venezuela' ,
'Vietnam' ,
'Yemen' ,
'Zambia' ,
'Zimbabwe' ,
);
//let's try to "guess" country name
$curr_lev = - 1 ;
$guess_country = '' ;
foreach ( $countries as $country_name ) {
similar_text ( strtolower ( $country ), strtolower ( $country_name ), $lev );
if ( $lev >= $curr_lev ) {
//this is closest match so far
$curr_lev = $lev ;
$guess_country = $country_name ;
}
if ( $curr_lev == 100 ) {
//exact match
break ;
}
}
if ( $curr_lev <= 80 ) {
// probably bad guess
$guess_country = '' ;
}
$countries_dropdown = '' ;
//let's add "(Please select)" option
$countries_dropdown .= " \r \n " . '<option value=""' . ( $country == '' ? ' selected' : '' ) . '>' . SwpmUtils :: _ ( '(Please Select)' ) . '</option>' ;
if ( $guess_country == '' && $country != '' ) {
//since we haven't guessed the country name, let's add current value to the options
$countries_dropdown .= " \r \n " . '<option value="' . $country . '" selected>' . $country . '</option>' ;
}
if ( $guess_country != '' ) {
$country = $guess_country ;
}
foreach ( $countries as $country_name ) {
$countries_dropdown .= " \r \n " . '<option value="' . $country_name . '"' . ( strtolower ( $country_name ) == strtolower ( $country ) ? ' selected' : '' ) . '>' . $country_name . '</option>' ;
}
return $countries_dropdown ;
}
public static function get_button_type_name ( $button_type ) {
$btnTypesNames = array (
'pp_buy_now' => SwpmUtils :: _ ( 'PayPal Buy Now' ),
'pp_subscription' => SwpmUtils :: _ ( 'PayPal Subscription' ),
'pp_smart_checkout' => SwpmUtils :: _ ( 'PayPal Smart Checkout' ),
'stripe_buy_now' => SwpmUtils :: _ ( 'Stripe Buy Now' ),
'stripe_subscription' => SwpmUtils :: _ ( 'Stripe Subscription' ),
'stripe_sca_buy_now' => SwpmUtils :: _ ( 'Stripe SCA Buy Now' ),
'stripe_sca_subscription' => SwpmUtils :: _ ( 'Stripe SCA Subscription' ),
'braintree_buy_now' => SwpmUtils :: _ ( 'Braintree Buy Now' ),
);
$button_type_name = $button_type ;
if ( array_key_exists ( $button_type , $btnTypesNames ) ) {
$button_type_name = $btnTypesNames [ $button_type ];
}
return $button_type_name ;
}
public static function format_money ( $amount , $currency = false ) {
$formatted = number_format ( $amount , 2 );
if ( $currency ) {
$formatted .= ' ' . $currency ;
}
return $formatted ;
}
public static function load_stripe_lib () {
//this function loads Stripe PHP SDK and ensures only once instance is loaded
if ( ! class_exists ( '\Stripe\Stripe' ) ) {
require_once SIMPLE_WP_MEMBERSHIP_PATH . 'lib/stripe-gateway/init.php' ;
\Stripe\Stripe :: setAppInfo ( 'Simple Membership' , SIMPLE_WP_MEMBERSHIP_VER , 'https://simple-membership-plugin.com/' , 'pp_partner_Fvas9OJ0jQ2oNQ' );
}
}
public static function get_stripe_api_keys_from_payment_button ( $button_id , $live = false ) {
$keys = array (
'public' => '' ,
'secret' => '' ,
);
$button = get_post ( $button_id );
if ( $button ) {
$opts = get_option ( 'swpm-settings' );
$use_global_keys = get_post_meta ( $button_id , 'stripe_use_global_keys' , true );
if ( $use_global_keys ) {
if ( $live ) {
$keys [ 'public' ] = isset ( $opts [ 'stripe-live-public-key' ] ) ? $opts [ 'stripe-live-public-key' ] : '' ;
$keys [ 'secret' ] = isset ( $opts [ 'stripe-live-secret-key' ] ) ? $opts [ 'stripe-live-secret-key' ] : '' ;
} else {
$keys [ 'public' ] = isset ( $opts [ 'stripe-test-public-key' ] ) ? $opts [ 'stripe-test-public-key' ] : '' ;
$keys [ 'secret' ] = isset ( $opts [ 'stripe-test-secret-key' ] ) ? $opts [ 'stripe-test-secret-key' ] : '' ;
}
} else {
if ( $live ) {
$stripe_live_secret_key = get_post_meta ( $button_id , 'stripe_live_secret_key' , true );
$stripe_live_publishable_key = get_post_meta ( $button_id , 'stripe_live_publishable_key' , true );
$keys [ 'public' ] = $stripe_live_publishable_key ;
$keys [ 'secret' ] = $stripe_live_secret_key ;
} else {
$stripe_test_secret_key = get_post_meta ( $button_id , 'stripe_test_secret_key' , true );
$stripe_test_publishable_key = get_post_meta ( $button_id , 'stripe_test_publishable_key' , true );
$keys [ 'public' ] = $stripe_test_publishable_key ;
$keys [ 'secret' ] = $stripe_test_secret_key ;
}
}
}
return $keys ;
}
public static function mail ( $email , $subject , $email_body , $headers ) {
$settings = SwpmSettings :: get_instance ();
$html_enabled = $settings -> get_value ( 'email-enable-html' );
if ( ! empty ( $html_enabled ) ) {
$headers .= " Content-Type: text/html; charset=UTF-8 \r \n " ;
$email_body = nl2br ( $email_body );
}
wp_mail ( $email , $subject , $email_body , $headers );
}
/**
* Outputs Stripe SCA frontend scripts and styles once
*/
public static function output_stripe_sca_frontend_scripts_once () {
$out = '' ;
if ( ! self :: $stripe_sca_frontend_scripts_printed ) {
$out .= '<script src="https://js.stripe.com/v3/"></script>' ;
$out .= " <link rel='stylesheet' href='https://checkout.stripe.com/v3/checkout/button.css' type='text/css' media='all' /> " ;
self :: $stripe_sca_frontend_scripts_printed = true ;
}
return $out ;
}
}