/** * 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; }
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; }
/** * @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; }