Esempio n. 1
0
 /**
  * Validates different kinds of form submissions.
  *
  * Free Registration Forms do NOT require API Credentials.
  *
  * @package optimizeMember\Stripe
  * @since 140617
  *
  * @param string $form The type of Pro Form being submitted.
  * @param array  $s An array of data submitted through the Pro Form.
  *
  * @return null|array Null if there are no errors, else a response array.
  */
 public static function stripe_form_submission_validation_errors($form, $s = array())
 {
     if ($form === 'registration' || !($response = c_ws_plugin__optimizemember_pro_stripe_responses::stripe_form_api_validation_errors())) {
         if ($form === 'cancellation') {
             if (!is_user_logged_in()) {
                 $response = array('response' => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> to cancel your account.', 's2member-front', 's2member'), esc_attr(wp_login_url($_SERVER['REQUEST_URI']))), 'error' => TRUE);
             } else {
                 if ($s['attr']['captcha'] && (empty($s['recaptcha_challenge_field']) || empty($s['recaptcha_response_field']) || !c_ws_plugin__optimizemember_utils_captchas::recaptcha_code_validates($s['recaptcha_challenge_field'], $s['recaptcha_response_field']))) {
                     $response = array('response' => _x('Missing or invalid Security Code. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                 } else {
                     if (is_object($user = wp_get_current_user()) && $user->ID && $user->has_cap('administrator')) {
                         $response = array('response' => _x('Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access.', 's2member-admin', 's2member'), 'error' => TRUE);
                     }
                 }
             }
         } else {
             if ($form === 'update') {
                 if (!is_user_logged_in()) {
                     $response = array('response' => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> to update your billing information.', 's2member-front', 's2member'), esc_attr(wp_login_url($_SERVER['REQUEST_URI']))), 'error' => TRUE);
                 } else {
                     if (is_object($user = wp_get_current_user()) && $user->ID && $user->has_cap('administrator')) {
                         $response = array('response' => _x('Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access.', 's2member-admin', 's2member'), 'error' => TRUE);
                     } else {
                         if (empty($s['card_token']) || !is_string($s['card_token'])) {
                             $response = array('response' => _x('Missing Billing Info. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                         } else {
                             if ($s['attr']['captcha'] && (empty($s['recaptcha_challenge_field']) || empty($s['recaptcha_response_field']) || !c_ws_plugin__optimizemember_utils_captchas::recaptcha_code_validates($s['recaptcha_challenge_field'], $s['recaptcha_response_field']))) {
                                 $response = array('response' => _x('Missing or invalid Security Code. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                             }
                         }
                     }
                 }
             } else {
                 if ($form === 'registration') {
                     /** @var $_errors \WP_Error For IDEs. This variable is used below in at least one place. */
                     if ($GLOBALS['WS_PLUGIN__']['optimizemember']['o']['custom_reg_names'] && (empty($s['first_name']) || !is_string($s['first_name']))) {
                         $response = array('response' => _x('Missing First Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                     } else {
                         if ($GLOBALS['WS_PLUGIN__']['optimizemember']['o']['custom_reg_names'] && (empty($s['last_name']) || !is_string($s['last_name']))) {
                             $response = array('response' => _x('Missing Last Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                         } else {
                             if (empty($s['email']) || !is_string($s['email'])) {
                                 $response = array('response' => _x('Missing or invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                             } else {
                                 if (!is_email($s['email'])) {
                                     $response = array('response' => _x('Invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                 } else {
                                     if (email_exists($s['email']) && (!is_multisite() || !c_ws_plugin__optimizemember_utils_users::ms_user_login_email_can_join_blog(@$s['username'], $s['email']))) {
                                         $response = array('response' => _x('That Email Address is already in use. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                     } else {
                                         if (empty($s['username']) || !is_string($s['username']) || empty($s['_o_username']) || !is_string($s['_o_username'])) {
                                             $response = array('response' => _x('Missing or invalid Username. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                         } else {
                                             if (!validate_username($s['username']) || !validate_username($s['_o_username'])) {
                                                 $response = array('response' => _x('Invalid Username. Please try again. Use ONLY lowercase alphanumerics.', 's2member-front', 's2member'), 'error' => TRUE);
                                             } else {
                                                 if (username_exists($s['username']) && (!is_multisite() || !c_ws_plugin__optimizemember_utils_users::ms_user_login_email_can_join_blog($s['username'], $s['email']))) {
                                                     $response = array('response' => _x('That Username is already in use. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                 } else {
                                                     if (is_multisite() && !c_ws_plugin__optimizemember_utils_users::ms_user_login_email_can_join_blog($s['username'], $s['email']) && ($_response = wpmu_validate_user_signup($s['username'], $s['email'])) && is_wp_error($_errors = $_response['errors']) && $_errors->get_error_message()) {
                                                         $response = array('response' => $_errors->get_error_message(), 'error' => TRUE);
                                                     } else {
                                                         if ((empty($s['password1']) || !is_string($s['password1'])) && $GLOBALS['WS_PLUGIN__']['optimizemember']['o']['custom_reg_password']) {
                                                             $response = array('response' => _x('Missing Password. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                         } else {
                                                             if (strlen($s['password1']) < 6 && $GLOBALS['WS_PLUGIN__']['optimizemember']['o']['custom_reg_password']) {
                                                                 $response = array('response' => _x('Invalid Password. Must be at least 6 characters. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                             } else {
                                                                 if (strlen($s['password1']) > 20 && $GLOBALS['WS_PLUGIN__']['optimizemember']['o']['custom_reg_password']) {
                                                                     $response = array('response' => _x('Invalid Password. Max length is 20 characters. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                 } else {
                                                                     if ((empty($s['password2']) || $s['password2'] !== $s['password1']) && $GLOBALS['WS_PLUGIN__']['optimizemember']['o']['custom_reg_password']) {
                                                                         $response = array('response' => _x('Password fields do NOT match. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                     } else {
                                                                         if ($custom_field_validation_errors = c_ws_plugin__optimizemember_custom_reg_fields::validation_errors(isset($s['custom_fields']) ? $s['custom_fields'] : array(), c_ws_plugin__optimizemember_custom_reg_fields::custom_fields_configured_at_level($s['attr']['level'], 'registration', TRUE))) {
                                                                             $response = array('response' => array_shift($custom_field_validation_errors), 'error' => TRUE);
                                                                         } else {
                                                                             if ($s['attr']['captcha'] && (empty($s['recaptcha_challenge_field']) || empty($s['recaptcha_response_field']) || !c_ws_plugin__optimizemember_utils_captchas::recaptcha_code_validates($s['recaptcha_challenge_field'], $s['recaptcha_response_field']))) {
                                                                                 $response = array('response' => _x('Missing or invalid Security Code. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                             }
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 } else {
                     if ($form === 'sp-checkout') {
                         if (empty($s['first_name']) || !is_string($s['first_name'])) {
                             $response = array('response' => _x('Missing First Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                         } else {
                             if (empty($s['last_name']) || !is_string($s['last_name'])) {
                                 $response = array('response' => _x('Missing Last Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                             } else {
                                 if (empty($s['email']) || !is_string($s['email'])) {
                                     $response = array('response' => _x('Missing or invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                 } else {
                                     if (!is_email($s['email'])) {
                                         $response = array('response' => _x('Invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                     } else {
                                         if (empty($s['card_token']) || !is_string($s['card_token'])) {
                                             $response = array('response' => _x('Missing Billing Info. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                         } else {
                                             if ((empty($s['state']) || !is_string($s['state'])) && c_ws_plugin__optimizemember_pro_stripe_utilities::tax_may_apply()) {
                                                 $response = array('response' => _x('Missing State/Province. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                             } else {
                                                 if ((empty($s['country']) || !is_string($s['country'])) && c_ws_plugin__optimizemember_pro_stripe_utilities::tax_may_apply()) {
                                                     $response = array('response' => _x('Missing Country. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                 } else {
                                                     if ((empty($s['zip']) || !is_string($s['zip'])) && c_ws_plugin__optimizemember_pro_stripe_utilities::tax_may_apply()) {
                                                         $response = array('response' => _x('Missing Postal/Zip Code. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                     } else {
                                                         if ($s['attr']['captcha'] && (empty($s['recaptcha_challenge_field']) || empty($s['recaptcha_response_field']) || !c_ws_plugin__optimizemember_utils_captchas::recaptcha_code_validates($s['recaptcha_challenge_field'], $s['recaptcha_response_field']))) {
                                                             $response = array('response' => _x('Missing or invalid Security Code. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     } else {
                         if ($form === 'checkout') {
                             /** @var $_errors \WP_Error For IDEs. This variable is used below in at least one place. */
                             if ($s['attr']['modify'] && !is_user_logged_in()) {
                                 $response = array('response' => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> to modify your billing plan.', 's2member-front', 's2member'), esc_attr(wp_login_url($_SERVER['REQUEST_URI']))), 'error' => TRUE);
                             } else {
                                 if ($s['attr']['level'] === '*' && !is_user_logged_in()) {
                                     $response = array('response' => sprintf(_x('You must <a href="%s" rel="nofollow">log in</a> before making this purchase.', 's2member-front', 's2member'), esc_attr(wp_login_url($_SERVER['REQUEST_URI']))), 'error' => TRUE);
                                 } else {
                                     if (is_user_logged_in() && is_object($user = wp_get_current_user()) && $user->ID && $user->has_cap('administrator')) {
                                         $response = array('response' => _x('Unable to process. You are an Administrator. Stopping here for security. Otherwise, an Administrator could lose access.', 's2member-admin', 's2member'), 'error' => TRUE);
                                     } else {
                                         if (empty($s['first_name']) || !is_string($s['first_name'])) {
                                             $response = array('response' => _x('Missing First Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                         } else {
                                             if (empty($s['last_name']) || !is_string($s['last_name'])) {
                                                 $response = array('response' => _x('Missing Last Name. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                             } else {
                                                 if (!is_user_logged_in() && (empty($s['email']) || !is_string($s['email']))) {
                                                     $response = array('response' => _x('Missing or invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                 } else {
                                                     if (!is_user_logged_in() && !is_email($s['email'])) {
                                                         $response = array('response' => _x('Invalid Email Address. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                     } else {
                                                         if (!is_user_logged_in() && email_exists($s['email']) && (!is_multisite() || !c_ws_plugin__optimizemember_utils_users::ms_user_login_email_can_join_blog(@$s['username'], $s['email']))) {
                                                             $response = array('response' => _x('That Email Address is already in use. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                         } else {
                                                             if (!is_user_logged_in() && (empty($s['username']) || !is_string($s['username']) || empty($s['_o_username']) || !is_string($s['_o_username']))) {
                                                                 $response = array('response' => _x('Missing or invalid Username. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                             } else {
                                                                 if (!is_user_logged_in() && (!validate_username($s['username']) || !validate_username($s['_o_username']))) {
                                                                     $response = array('response' => _x('Invalid Username. Please try again. Use ONLY lowercase alphanumerics.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                 } else {
                                                                     if (!is_user_logged_in() && username_exists($s['username']) && (!is_multisite() || !c_ws_plugin__optimizemember_utils_users::ms_user_login_email_can_join_blog($s['username'], $s['email']))) {
                                                                         $response = array('response' => _x('That Username is already in use. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                     } else {
                                                                         if (!is_user_logged_in() && is_multisite() && !c_ws_plugin__optimizemember_utils_users::ms_user_login_email_can_join_blog($s['username'], $s['email']) && ($_response = wpmu_validate_user_signup($s['username'], $s['email'])) && is_wp_error($_errors = $_response['errors']) && $_errors->get_error_message()) {
                                                                             $response = array('response' => $_errors->get_error_message(), 'error' => TRUE);
                                                                         } else {
                                                                             if (!is_user_logged_in() && (empty($s['password1']) || !is_string($s['password1'])) && $GLOBALS['WS_PLUGIN__']['optimizemember']['o']['custom_reg_password']) {
                                                                                 $response = array('response' => _x('Missing Password. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                             } else {
                                                                                 if (!is_user_logged_in() && strlen($s['password1']) < 6 && $GLOBALS['WS_PLUGIN__']['optimizemember']['o']['custom_reg_password']) {
                                                                                     $response = array('response' => _x('Invalid Password. Must be at least 6 characters. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                                 } else {
                                                                                     if (!is_user_logged_in() && strlen($s['password1']) > 20 && $GLOBALS['WS_PLUGIN__']['optimizemember']['o']['custom_reg_password']) {
                                                                                         $response = array('response' => _x('Invalid Password. Max length is 20 characters. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                                     } else {
                                                                                         if (!is_user_logged_in() && (empty($s['password2']) || $s['password2'] !== $s['password1']) && $GLOBALS['WS_PLUGIN__']['optimizemember']['o']['custom_reg_password']) {
                                                                                             $response = array('response' => _x('Password fields do NOT match. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                                         } else {
                                                                                             if (!is_user_logged_in() && ($custom_field_validation_errors = c_ws_plugin__optimizemember_custom_reg_fields::validation_errors(isset($s['custom_fields']) ? $s['custom_fields'] : array(), c_ws_plugin__optimizemember_custom_reg_fields::custom_fields_configured_at_level($s['attr']['level'] === '*' ? 'auto-detection' : $s['attr']['level'], 'registration', TRUE)))) {
                                                                                                 $response = array('response' => array_shift($custom_field_validation_errors), 'error' => TRUE);
                                                                                             } else {
                                                                                                 if (empty($s['card_token']) || !is_string($s['card_token'])) {
                                                                                                     $response = array('response' => _x('Missing Billing Method. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                                                 } else {
                                                                                                     if ((empty($s['state']) || !is_string($s['state'])) && c_ws_plugin__optimizemember_pro_stripe_utilities::tax_may_apply()) {
                                                                                                         $response = array('response' => _x('Missing State/Province. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                                                     } else {
                                                                                                         if ((empty($s['country']) || !is_string($s['country'])) && c_ws_plugin__optimizemember_pro_stripe_utilities::tax_may_apply()) {
                                                                                                             $response = array('response' => _x('Missing Country. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                                                         } else {
                                                                                                             if ((empty($s['zip']) || !is_string($s['zip'])) && c_ws_plugin__optimizemember_pro_stripe_utilities::tax_may_apply()) {
                                                                                                                 $response = array('response' => _x('Missing Postal/Zip Code. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                                                             } else {
                                                                                                                 if ($s['attr']['captcha'] && (empty($s['recaptcha_challenge_field']) || empty($s['recaptcha_response_field']) || !c_ws_plugin__optimizemember_utils_captchas::recaptcha_code_validates($s['recaptcha_challenge_field'], $s['recaptcha_response_field']))) {
                                                                                                                     $response = array('response' => _x('Missing or invalid Security Code. Please try again.', 's2member-front', 's2member'), 'error' => TRUE);
                                                                                                                 }
                                                                                                             }
                                                                                                         }
                                                                                                     }
                                                                                                 }
                                                                                             }
                                                                                         }
                                                                                     }
                                                                                 }
                                                                             }
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         } else {
                             // Else we are dealing with an unknown form submission type.
                             $response = array('response' => _x('Unknown form submission type. Please contact Support.', 's2member-front', 's2member'), 'error' => TRUE);
                         }
                     }
                 }
             }
         }
     }
     return apply_filters('ws_plugin__optimizemember_pro_stripe_form_submission_validation_response', empty($response) ? NULL : $response, $form, $s);
 }