/**
  * Create a donor. 
  *
  * @param 	array 		$args 				Optional arguments.
  * @return 	int 		$donor_id
  * @access  public
  * @static
  * @since 	1.0.0	 
  */
 public static function create_donor($args = array())
 {
     $defaults = array('user_email' => '*****@*****.**', 'user_login' => 'johndoe', 'first_name' => 'John', 'last_name' => 'Doe', 'address' => 'Unit A', 'address_2' => '164 Studio Street', 'city' => 'Melbourne', 'state' => 'VIC', 'postcode' => '3000', 'country' => 'Australia', 'phone' => '0390009000');
     $args = array_merge($defaults, $args);
     $user = new Charitable_User();
     $user->update_profile($args);
     return $user->ID;
 }
Пример #2
0
 public function setUp()
 {
     parent::setUp();
     /* Campaign 1: $40,000 goal, 300 days till end */
     $campaign_1_id = Charitable_Campaign_Helper::create_campaign(array('post_title' => 'Test Campaign 1', '_campaign_goal' => 40000.0, '_campaign_end_date' => date('Y-m-d H:i:s', strtotime('+300 days'))));
     $this->campaign_1 = new Charitable_Campaign(get_post($campaign_1_id));
     /* Campaign 2: $40,000 goal, 300 days till end */
     $campaign_2_id = Charitable_Campaign_Helper::create_campaign(array('post_title' => 'Test Campaign 2', '_campaign_goal' => 10000.0));
     $this->campaign_2 = new Charitable_Campaign(get_post($campaign_2_id));
     /* Create a couple donations */
     $this->user_id = $this->factory->user->create(array('display_name' => 'John Henry'));
     $user = new Charitable_User($this->user_id);
     $this->donor_id = $user->add_donor();
 }
<?php

/**
 * Renders the Campaign Creator metabox.
 *
 * @since       1.2.0
 * @author      Eric Daams
 * @copyright   Copyright (c) 2015, Studio 164a 
 */
global $post;
$creator = new Charitable_User($post->post_author);
$campaign = new Charitable_Campaign($post);
?>
  
<div id="charitable-campaign-creator-metabox-wrap" class="charitable-metabox-wrap">    
    <div id="campaign-creator" class="charitable-media-block">
        <div class="creator-avatar charitable-media-image">
            <?php 
echo $creator->get_avatar();
?>
        </div><!--.creator-avatar-->
        <div class="creator-facts charitable-media-body">
            <h3 class="creator-name"><a href="<?php 
echo admin_url('user-edit.php?user_id=' . $creator->ID);
?>
"><?php 
printf('%s (%s %d)', $creator->display_name, __('User ID', 'charitable-ambassadors'), $creator->ID);
?>
</a></h3>
            <p><?php 
printf('%s %s', _x('Joined on', 'joined on date', 'charitable-ambassadors'), date('F Y', strtotime($creator->user_registered)));
 /**
  * Save core fields of the user (i.e. the wp_users data)
  *
  * @uses    wp_insert_user
  * @param   array $submitted
  * @return  int User ID
  * @access  public
  * @since   1.0.0
  */
 public function update_core_user($submitted)
 {
     $core_fields = array_intersect(array_keys($submitted), $this->get_core_keys());
     if (empty($core_fields)) {
         return 0;
     }
     $values = array();
     /* If we're updating an active user, set the ID */
     if (0 !== $this->ID) {
         $values['ID'] = $this->ID;
     }
     foreach ($core_fields as $field) {
         $values[$field] = $submitted[$field];
     }
     /* Insert the user */
     if (0 == $this->ID) {
         if (!isset($values['user_pass']) || strlen($values['user_pass']) == 0) {
             charitable_get_notices()->add_error('<strong>ERROR:</strong> Password field is required.');
             return false;
         }
         if (!isset($values['user_login'])) {
             $values['user_login'] = $values['user_email'];
         }
         /**
          * `wp_insert_user` calls `sanitize_user` internally - make the
          * same call here so `$values[ 'user_login' ]` matches what is
          * eventually saved to the database
          */
         $values['user_login'] = sanitize_user($values['user_login'], true);
         $user_id = wp_insert_user($values);
         if (is_wp_error($user_id)) {
             charitable_get_notices()->add_errors_from_wp_error($user_id);
             return false;
         }
         $this->init(self::get_data_by('id', $user_id));
         $signon = Charitable_User::signon($values['user_login'], $values['user_pass']);
         if (is_wp_error($signon)) {
             charitable_get_notices()->add_errors_from_wp_error($signon);
             return false;
         }
         do_action('charitable_after_insert_user', $user_id, $values);
     } else {
         $values['ID'] = $this->ID;
         $user_id = wp_update_user($values);
     }
     /* If there was an error when inserting or updating the user, lodge the error. */
     if (is_wp_error($user_id)) {
         charitable_get_notices()->add_errors_from_wp_error($user_id);
         return false;
     }
     do_action('charitable_after_save_user', $user_id, $values);
     return $user_id;
 }
Пример #5
0
 /** 
  * @depends test_is_donor
  */
 public function test_is_donor_with_non_wpuser()
 {
     $donor_id = charitable_get_table('donors')->insert(array('email' => '*****@*****.**', 'first_name' => 'Fish', 'last_name' => 'Mooney'));
     $user = Charitable_User::init_with_donor($donor_id);
     $this->assertTrue($user->is_donor());
 }
 /**
  * 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;
     }
 }
 /**
  * Returns the donor_id for the current donation. 
  *
  * @return  int
  * @access  public
  * @since   1.0.0
  */
 public function get_donor_id()
 {
     if (!isset($this->donor_id)) {
         $this->donor_id = $this->get_donation_data_value('donor_id', 0);
         if ($this->donor_id) {
             return $this->donor_id;
         }
         $user_id = $this->get_donation_data_value('user_id', get_current_user_id());
         $user_data = $this->get_donation_data_value('user', array());
         if ($user_id) {
             $this->donor_id = charitable_get_table('donors')->get_donor_id($user_id);
         } elseif (isset($user_data['email'])) {
             $this->donor_id = charitable_get_table('donors')->get_donor_id_by_email($user_data['email']);
         }
         /* If we still do not have a donor ID, it means that this is a first-time donor */
         if (0 == $this->donor_id) {
             $user = new Charitable_User($user_id);
             $this->donor_id = $user->add_donor($user_data);
         }
     }
     return $this->donor_id;
 }
 /**
  * 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 the Charitable_User object for this donor.
  *
  * @return  Charitable_User
  * @access  public
  * @since   1.0.0
  */
 public function get_user()
 {
     if (!isset($this->user)) {
         $this->user = $this->user = Charitable_User::init_with_donor($this->donor_id);
     }
     return $this->user;
 }
 /**
  * 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;
     }
 }
 /**
  * Returns the donor who made this donation.
  *
  * @return  Charitable_User
  * @access  public
  * @since   1.0.0
  */
 public function get_donor()
 {
     if (!isset($this->donor)) {
         $this->donor = Charitable_User::init_with_donor($this->get_donor_id());
     }
     return $this->donor;
 }