/**
  * The callback method for the campaigns shortcode.
  *
  * This receives the user-defined attributes and passes the logic off to the class.
  *
  * @param   array $atts User-defined shortcode attributes.
  * @return  string
  * @access  public
  * @static
  * @since   1.0.0
  */
 public static function display($atts = array())
 {
     $defaults = array('logged_in_message' => __('You are already logged in!', 'charitable'), 'redirect' => esc_url(charitable_get_login_redirect_url()), 'registration_link_text' => __('Register', 'charitable'));
     $args = shortcode_atts($defaults, $atts, 'charitable_login');
     $args['login_form_args'] = self::get_login_form_args($args);
     if (is_user_logged_in()) {
         ob_start();
         charitable_template('shortcodes/logged-in.php', $args);
         return ob_get_clean();
     }
     if (false == $args['registration_link_text'] || 'false' == $args['registration_link_text']) {
         $args['registration_link'] = false;
     } else {
         $registration_link = charitable_get_permalink('registration_page');
         if (charitable_get_permalink('login_page') === $registration_link) {
             $args['registration_link'] = false;
         } else {
             if (isset($_GET['redirect_to'])) {
                 $registration_link = add_query_arg('redirect_to', $_GET['redirect_to'], $registration_link);
             }
             $args['registration_link'] = $registration_link;
         }
     }
     ob_start();
     charitable_template('shortcodes/login.php', $args);
     return apply_filters('charitable_login_shortcode', ob_get_clean());
 }
 /**
  * The callback method for the campaigns shortcode.
  *
  * This receives the user-defined attributes and passes the logic off to the class. 
  *
  * @param   array $atts User-defined shortcode attributes.
  * @return  string
  * @access  public
  * @static
  * @since   1.0.0
  */
 public static function display($atts = array())
 {
     global $wp;
     $defaults = array('logged_in_message' => __('You are already logged in!', 'charitable'), 'redirect' => esc_url_raw(charitable_get_login_redirect_url()));
     $args = shortcode_atts($defaults, $atts, 'charitable_login');
     $args['login_form_args'] = self::get_login_form_args($args);
     if (is_user_logged_in()) {
         ob_start();
         charitable_template('shortcodes/logged-in.php', $args);
         return ob_get_clean();
     }
     ob_start();
     charitable_template('shortcodes/login.php', $args);
     return apply_filters('charitable_login_shortcode', ob_get_clean());
 }
 /**
  * Update registration after form submission.
  *
  * @return  void
  * @access  public
  * @static
  * @since   1.0.0
  */
 public static function save_registration()
 {
     $form = new Charitable_Registration_Form();
     if (!$form->validate_nonce() || !$form->validate_honeypot()) {
         charitable_get_notices()->add_error(__('There was an error with processing your form submission. Please reload the page and try again.', 'charitable'));
         return;
     }
     $fields = $form->get_fields();
     $valid = $form->check_required_fields($fields);
     if (!$valid) {
         return;
     }
     $submitted = apply_filters('charitable_registration_values', $_POST, $fields, $form);
     if (!isset($submitted['user_email']) || !is_email($submitted['user_email'])) {
         charitable_get_notices()->add_error(sprintf(__('%s is not a valid email address.', 'charitable'), $submitted['user_email']));
         return false;
     }
     $user = new Charitable_User();
     $user_id = $user->update_profile($submitted, array_keys($fields));
     /**
      * If the user was successfully created, redirect to the login redirect URL.
      * If there was a problem, this simply falls through and keeps the user on the
      * registration page.
      */
     if ($user_id) {
         wp_safe_redirect(charitable_get_login_redirect_url());
         exit;
     }
 }
 /**
  * Update registration after form submission. 
  *
  * @return  void
  * @access  public
  * @static
  * @since   1.0.0
  */
 public static function save_registration()
 {
     $form = new Charitable_Registration_Form();
     if (!$form->validate_nonce()) {
         return;
     }
     $fields = $form->get_fields();
     $valid = $form->check_required_fields($fields);
     if (!$valid) {
         return;
     }
     $submitted = apply_filters('charitable_registration_values', $_POST, $fields, $form);
     $user = new Charitable_User();
     $user->update_profile($submitted, array_keys($fields));
     if (isset($submitted['user_pass'])) {
         $creds = array();
         $creds['user_login'] = isset($submitted['user_login']) ? $submitted['user_login'] : $user->user_login;
         $creds['user_password'] = $submitted['user_pass'];
         $creds['remember'] = true;
         wp_signon($creds, false);
     }
     wp_safe_redirect(charitable_get_login_redirect_url());
     exit;
 }
 /**
  * Return donations to display with the shortcode. 
  *
  * @param   array $args 
  * @return  mixed[] $args
  * @access  protected
  * @static
  * @since   1.0.0
  */
 protected static function get_login_form_args($args)
 {
     return apply_filters('charitable_login_form_args', array('redirect' => esc_url(charitable_get_login_redirect_url())), $args);
 }
 /**
  * Update registration after form submission.
  *
  * @return  void
  * @access  public
  * @static
  * @since   1.0.0
  */
 public static function save_registration()
 {
     $form = new Charitable_Registration_Form();
     if (!$form->validate_nonce()) {
         return;
     }
     $fields = $form->get_fields();
     $valid = $form->check_required_fields($fields);
     if (!$valid) {
         return;
     }
     $submitted = apply_filters('charitable_registration_values', $_POST, $fields, $form);
     $user = new Charitable_User();
     $user_id = $user->update_profile($submitted, array_keys($fields));
     /**
      * If the user was successfully created, redirect to the login redirect URL.
      * If there was a problem, this simply falls through and keeps the user on the
      * registration page.
      */
     if ($user_id) {
         wp_safe_redirect(charitable_get_login_redirect_url());
         exit;
     }
 }