123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795 |
- <?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}',
- '{birth_place}',
- '{birth_date}',
- );
- //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,
- $user_record->birth_place,
- $user_record->birth_date,
- );
- $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;
- }
- }
|