Example #1
0
/**
 * Upgrades vendor permissions
 *
 * @since 2.2
 * @return void
 */
function fes_22_upgrade_vendor_permissions()
{
    $fes_version = get_option('fes_db_version', '2.1');
    if (version_compare($fes_version, '2.2', '>=')) {
        return;
    }
    ignore_user_abort(true);
    if (!edd_is_func_disabled('set_time_limit') && !ini_get('safe_mode')) {
        set_time_limit(0);
    }
    $step = isset($_GET['step']) ? absint($_GET['step']) : 1;
    $offset = $step == 1 ? 0 : $step * 100;
    $users = new WP_User_Query(array('fields' => 'ID', 'number' => 100, 'offset' => $offset));
    $users = $users->results;
    if ($users && count($users) > 0) {
        foreach ($users as $user => $id) {
            if (user_can($id, 'fes_is_vendor') && !user_can($id, 'fes_is_admin') && !user_can($id, 'administrator') && !user_can($id, 'editor')) {
                $user = new WP_User($id);
                $user->add_role('frontend_vendor');
            }
        }
        // Keys found so upgrade them
        $step++;
        $redirect = add_query_arg(array('page' => 'fes-upgrades', 'edd_upgrade' => 'upgrade_vendor_permissions', 'step' => $step), admin_url('index.php'));
        wp_redirect($redirect);
        exit;
    } else {
        // No more keys found, update the DB version and finish up
        update_option('fes_db_version', fes_plugin_version);
        wp_redirect(admin_url('admin.php?page=fes-about'));
        exit;
    }
}
 function bp_course_convert_customer_to_student($order_id)
 {
     $order = new WC_Order($order_id);
     if ($order->user_id > 0) {
         $user = new WP_User($order->user_id);
         $user->remove_role('customer');
         $user->add_role('student');
     }
 }
function ao_edd_set_customer_role($payment_id)
{
    $email = edd_get_payment_user_email($payment_id);
    $downloads = edd_get_payment_meta_downloads($payment_id);
    $user_id = edd_get_payment_user_id($payment_id);
    if ($user_id) {
        $user = new WP_User($user_id);
        // Add role
        $user->add_role('buyer');
    }
}
function wpec_members_save_user($user_id, $length, $role)
{
    $add_user = new WP_User($user_id);
    //$members_lengths = array();
    $members_lengths = get_user_meta($user_id, '_subscription_ends', true);
    $members_starts = get_user_meta($user_id, '_subscription_starts', true);
    $future_time = mktime(date('h'), date('m'), date('s') + $length, date('m'), date('d'), date('Y'));
    $current_time = time();
    $members_lengths[$role] = $future_time;
    $members_starts[$role] = $current_time;
    $add_user->add_cap($role, true);
    //$subscription_lengths = array();
    $subscription_lengths = get_user_meta($user_id, '_subscription_length', true);
    $subscription_lengths[$role] = $length;
    // dont think we need this line...
    $add_user->add_role('subscriber');
    update_user_meta($user_id, '_subscription_ends', $members_lengths);
    update_user_meta($user_id, '_subscription_length', $subscription_lengths);
    update_user_meta($user_id, '_subscription_starts', $members_starts);
    update_user_meta($user_id, '_has_current_subscription', 'true');
}
Example #5
0
 static function ProcessNewUser($user_id)
 {
     if (@$_POST["dsidxpress"] != "1") {
         return;
     }
     $new_user = new WP_User($user_id);
     $new_user->add_role(dsSearchAgent_Roles::$Role_Name);
     $referring_url = $_SERVER['HTTP_REFERER'];
     $post_vars = array();
     $post_vars["propertyID"] = $_POST["propertyID"];
     $post_vars["firstName"] = $_POST["first_name"];
     $post_vars["lastName"] = $_POST["last_name"];
     $post_vars["phoneNumber"] = $_POST["phone_number"];
     $post_vars["emailAddress"] = $_POST["user_email"];
     $post_vars["scheduleYesNo"] = "";
     $post_vars["scheduleDateDay"] = "1";
     $post_vars["scheduleDateMonth"] = "1";
     $post_vars["comments"] = "";
     $post_vars["referringURL"] = $referring_url;
     //$post_vars["returnURL"] = $_POST[""];
     $apiHttpResponse = dsSearchAgent_ApiRequest::FetchData("ContactForm", $post_vars, false, 0);
     wp_set_auth_cookie($user_id, true, is_ssl());
 }
/**
 * Plugin Name: AffiliateWP - Affiliate role on registration
 * Plugin URI: http://affiliatewp.com
 * Description: Sets an affiliate user's role to a specific role when being added as an affiliate
 * Author: Pippin Williamson
 * Author URI: http://pippinsplugins.com
 * Version: 1.0
 */
function pw_affwp_set_role_on_registration($affiliate_id = 0)
{
    $user_id = affwp_get_affiliate_user_id($affiliate_id);
    $user = new WP_User($user_id);
    $user->add_role('affiliate');
}
 /**
  * D�saffecte des utilisateurs � un role
  * @param $code identifiant du role
  */
 function unaffectUsersToGroup($code)
 {
     // ROLES
     $roles = get_option('wp_user_roles', array());
     // Si le role existe
     if (isset($roles[$code])) {
         $wps_customer_mdl = new wps_customer_mdl();
         $users = $wps_customer_mdl->getUserList();
         if (!empty($users)) {
             foreach ($users as $user) {
                 $u = new WP_User($user->ID);
                 // Si l'utilisateur poss�de le role, on le retire de sa liste de droits
                 if (isset($u->roles[0]) && $u->roles[0] == $code) {
                     $u->remove_role($u->roles[0]);
                     $u->add_role('subscriber');
                 }
             }
         }
     }
 }
	function test_user_level_update() {
		// make sure the user_level is correctly set and changed with the user's role

		// user starts as an author
		$id = $this->factory->user->create( array( 'role' => 'author' ) );
		$user = new WP_User($id);
		$this->assertTrue($user->exists(), "Problem getting user $id");

		// author = user level 2
		$this->assertEquals( 2, $user->user_level );

		// they get promoted to editor - level should get bumped to 7
		$user->set_role('editor');
		$this->assertEquals( 7, $user->user_level );

		// demoted to contributor - level is reduced to 1
		$user->set_role('contributor');
		$this->assertEquals( 1, $user->user_level );

		// if they have two roles, user_level should be the max of the two
		$user->add_role('editor');
		$this->assertEquals(array('contributor', 'editor'), $user->roles);
		$this->assertEquals( 7, $user->user_level );
	}
/**
 * Register a new user
 *
 * @access      public
 * @since       1.0
 */
function rcp_process_registration()
{
    // check nonce
    if (!(isset($_POST["rcp_register_nonce"]) && wp_verify_nonce($_POST['rcp_register_nonce'], 'rcp-register-nonce'))) {
        return;
    }
    global $rcp_options, $rcp_levels_db;
    $subscription_id = rcp_get_registration()->get_subscription();
    $discount = isset($_POST['rcp_discount']) ? sanitize_text_field($_POST['rcp_discount']) : '';
    $price = number_format((double) $rcp_levels_db->get_level_field($subscription_id, 'price'), 2);
    $price = str_replace(',', '', $price);
    $subscription = $rcp_levels_db->get_level($subscription_id);
    $auto_renew = rcp_registration_is_recurring();
    // if both today's total and the recurring total are 0, the there is a full discount
    // if this is not a recurring subscription only check today's total
    $full_discount = $auto_renew ? rcp_get_registration()->get_total() == 0 && rcp_get_registration()->get_recurring_total() == 0 : rcp_get_registration()->get_total() == 0;
    // get the selected payment method/gateway
    if (!isset($_POST['rcp_gateway'])) {
        $gateway = 'paypal';
    } else {
        $gateway = sanitize_text_field($_POST['rcp_gateway']);
    }
    /***********************
     * validate the form
     ***********************/
    do_action('rcp_before_form_errors', $_POST);
    $is_ajax = isset($_POST['rcp_ajax']);
    $user_data = rcp_validate_user_data();
    if (!rcp_is_registration()) {
        // no subscription level was chosen
        rcp_errors()->add('no_level', __('Please choose a subscription level', 'rcp'), 'register');
    }
    if ($subscription_id && $price == 0 && $subscription->duration > 0 && rcp_has_used_trial($user_data['id'])) {
        // this ensures that users only sign up for a free trial once
        rcp_errors()->add('free_trial_used', __('You may only sign up for a free trial once', 'rcp'), 'register');
    }
    if (!empty($discount)) {
        // make sure we have a valid discount
        if (rcp_validate_discount($discount, $subscription_id)) {
            // check if the user has already used this discount
            if ($price > 0 && !$user_data['need_new'] && rcp_user_has_used_discount($user_data['id'], $discount) && apply_filters('rcp_discounts_once_per_user', false)) {
                rcp_errors()->add('discount_already_used', __('You can only use the discount code once', 'rcp'), 'register');
            }
        } else {
            // the entered discount code is incorrect
            rcp_errors()->add('invalid_discount', __('The discount you entered is invalid', 'rcp'), 'register');
        }
    }
    // Validate extra fields in gateways with the 2.1+ gateway API
    if (!has_action('rcp_gateway_' . $gateway) && $price > 0 && !$full_discount) {
        $gateways = new RCP_Payment_Gateways();
        $gateway_var = $gateways->get_gateway($gateway);
        $gateway_obj = new $gateway_var['class']();
        $gateway_obj->validate_fields();
    }
    do_action('rcp_form_errors', $_POST);
    // retrieve all error messages, if any
    $errors = rcp_errors()->get_error_messages();
    if (!empty($errors) && $is_ajax) {
        wp_send_json_error(array('success' => false, 'errors' => rcp_get_error_messages_html('register'), 'nonce' => wp_create_nonce('rcp-register-nonce')));
    } elseif ($is_ajax) {
        wp_send_json_success(array('success' => true));
    }
    // only create the user if there are no errors
    if (!empty($errors)) {
        return;
    }
    if ($user_data['need_new']) {
        $user_data['id'] = wp_insert_user(array('user_login' => $user_data['login'], 'user_pass' => $user_data['password'], 'user_email' => $user_data['email'], 'first_name' => $user_data['first_name'], 'last_name' => $user_data['last_name'], 'display_name' => $user_data['first_name'] . ' ' . $user_data['last_name'], 'user_registered' => date('Y-m-d H:i:s')));
    }
    if (empty($user_data['id'])) {
        return;
    }
    // Setup the member object
    $member = new RCP_Member($user_data['id']);
    update_user_meta($user_data['id'], '_rcp_new_subscription', '1');
    $subscription_key = rcp_generate_subscription_key();
    $old_subscription_id = $member->get_subscription_id();
    if ($old_subscription_id) {
        update_user_meta($user_data['id'], '_rcp_old_subscription_id', $old_subscription_id);
    }
    if (!$member->is_active()) {
        update_user_meta($user_data['id'], 'rcp_subscription_level', $subscription_id);
        update_user_meta($user_data['id'], 'rcp_subscription_key', $subscription_key);
        // Ensure no pending level details are set
        delete_user_meta($user_data['id'], 'rcp_pending_subscription_level');
        delete_user_meta($user_data['id'], 'rcp_pending_subscription_key');
        $member->set_status('pending');
    } else {
        // If the member is already active, we need to set these as pending changes
        update_user_meta($user_data['id'], 'rcp_pending_subscription_level', $subscription_id);
        update_user_meta($user_data['id'], 'rcp_pending_subscription_key', $subscription_key);
        // Flag the member as having just upgraded
        update_user_meta($user_data['id'], '_rcp_just_upgraded', current_time('timestamp'));
    }
    $member->set_joined_date('', $subscription_id);
    // Calculate the expiration date for the member
    $member_expires = $member->calculate_expiration($auto_renew);
    update_user_meta($user_data['id'], 'rcp_pending_expiration_date', $member_expires);
    // remove the user's old role, if this is a new user, we need to replace the default role
    $old_role = get_option('default_role', 'subscriber');
    if ($old_subscription_id) {
        $old_level = $rcp_levels_db->get_level($old_subscription_id);
        $old_role = !empty($old_level->role) ? $old_level->role : $old_role;
    }
    $member->remove_role($old_role);
    // Set the user's role
    $role = !empty($subscription->role) ? $subscription->role : 'subscriber';
    $user = new WP_User($user_data['id']);
    $user->add_role(apply_filters('rcp_default_user_level', $role, $subscription_id));
    do_action('rcp_form_processing', $_POST, $user_data['id'], $price);
    // process a paid subscription
    if ($price > '0') {
        if (!empty($discount)) {
            $discounts = new RCP_Discounts();
            $discount_obj = $discounts->get_by('code', $discount);
            // record the usage of this discount code
            $discounts->add_to_user($user_data['id'], $discount);
            // increase the usage count for the code
            $discounts->increase_uses($discount_obj->id);
            // if the discount is 100%, log the user in and redirect to success page
            if ($full_discount) {
                $member->set_expiration_date($member_expires);
                $member->set_status('active');
                rcp_login_user_in($user_data['id'], $user_data['login']);
                wp_redirect(rcp_get_return_url($user_data['id']));
                exit;
            }
        }
        // Remove trialing status, if it exists
        delete_user_meta($user_data['id'], 'rcp_is_trialing');
        // log the new user in
        rcp_login_user_in($user_data['id'], $user_data['login']);
        $redirect = rcp_get_return_url($user_data['id']);
        $subscription_data = array('price' => rcp_get_registration()->get_total(true, false), 'discount' => rcp_get_registration()->get_total_discounts(), 'discount_code' => $discount, 'fee' => rcp_get_registration()->get_total_fees(), 'length' => $subscription->duration, 'length_unit' => strtolower($subscription->duration_unit), 'subscription_id' => $subscription->id, 'subscription_name' => $subscription->name, 'key' => $subscription_key, 'user_id' => $user_data['id'], 'user_name' => $user_data['login'], 'user_email' => $user_data['email'], 'currency' => $rcp_options['currency'], 'auto_renew' => $auto_renew, 'return_url' => $redirect, 'new_user' => $user_data['need_new'], 'post_data' => $_POST);
        // if giving the user a credit, make sure the credit does not exceed the first payment
        if ($subscription_data['fee'] < 0 && abs($subscription_data['fee']) > $subscription_data['price']) {
            $subscription_data['fee'] = -1 * $subscription_data['price'];
        }
        update_user_meta($user_data['id'], 'rcp_pending_subscription_amount', $subscription_data['price'] + $subscription_data['fee']);
        // send all of the subscription data off for processing by the gateway
        rcp_send_to_gateway($gateway, apply_filters('rcp_subscription_data', $subscription_data));
        // process a free or trial subscription
    } else {
        // This is a free user registration or trial
        $member->set_expiration_date($member_expires);
        // if the subscription is a free trial, we need to record it in the user meta
        if ($member_expires != 'none') {
            // activate the user's trial subscription
            $member->set_status('active');
            // this is so that users can only sign up for one trial
            update_user_meta($user_data['id'], 'rcp_has_trialed', 'yes');
            update_user_meta($user_data['id'], 'rcp_is_trialing', 'yes');
            rcp_email_subscription_status($user_data['id'], 'trial');
        } else {
            update_user_meta($user_data['id'], 'rcp_subscription_level', $subscription_id);
            update_user_meta($user_data['id'], 'rcp_subscription_key', $subscription_key);
            // Ensure no pending level details are set
            delete_user_meta($user_data['id'], 'rcp_pending_subscription_level');
            delete_user_meta($user_data['id'], 'rcp_pending_subscription_key');
            // set the user's status to free
            $member->set_status('free');
            rcp_email_subscription_status($user_data['id'], 'free');
        }
        if ($user_data['need_new']) {
            if (!isset($rcp_options['disable_new_user_notices'])) {
                // send an email to the admin alerting them of the registration
                wp_new_user_notification($user_data['id']);
            }
            // log the new user in
            rcp_login_user_in($user_data['id'], $user_data['login']);
        }
        // send the newly created user to the redirect page after logging them in
        wp_redirect(rcp_get_return_url($user_data['id']));
        exit;
    }
    // end price check
}
/**
 * Register a new user
 *
 * @access      public
 * @since       1.0
 */
function rcp_process_registration() {

  	if ( isset( $_POST["rcp_register_nonce"] ) && wp_verify_nonce( $_POST['rcp_register_nonce'], 'rcp-register-nonce' ) ) {

		global $rcp_options, $user_ID;

		$subscription_id = isset( $_POST['rcp_level'] ) ? absint( $_POST['rcp_level'] ) : false;
		$discount        = isset( $_POST['rcp_discount'] ) ? sanitize_text_field( $_POST['rcp_discount'] ) : '';
		$discount_valid  = false;
		$price           = number_format( (float) rcp_get_subscription_price( $subscription_id ), 2 );
		$price           = str_replace( ',', '', $price );
		$base_price      = $price; // Used for discount calculations later
		$expiration      = rcp_get_subscription_length( $subscription_id );
		$subscription    = rcp_get_subscription_details( $subscription_id );

		// get the selected payment method/gateway
		if( ! isset( $_POST['rcp_gateway'] ) ) {
			$gateway = 'paypal';
		} else {
			$gateway = sanitize_text_field( $_POST['rcp_gateway'] );
		}

		/***********************
		* validate the form
		***********************/

		do_action( 'rcp_before_form_errors', $_POST );

		$is_ajax   = isset( $_POST['rcp_ajax'] );

		$user_data = rcp_validate_user_data();

		if( ! $subscription_id ) {
			// no subscription level was chosen
			rcp_errors()->add( 'no_level', __( 'Please choose a subscription level', 'rcp' ), 'register' );
		}

		if( $subscription_id ) {

			if( $price == 0 && $expiration->duration > 0 && rcp_has_used_trial( $user_data['id'] ) ) {
				// this ensures that users only sign up for a free trial once
				rcp_errors()->add( 'free_trial_used', __( 'You may only sign up for a free trial once', 'rcp' ), 'register' );
			}
		}

		if( ! empty( $discount ) ) {

			if( rcp_validate_discount( $discount, $subscription_id ) ) {

				$discount_valid = true;

			} else {

				// the entered discount code is incorrect
				rcp_errors()->add( 'invalid_discount', __( 'The discount you entered is invalid', 'rcp' ), 'register' );

			}

			if( $discount_valid && $price > 0 ) {

				if( ! $user_data['need_new'] && rcp_user_has_used_discount( $user_data['id'] , $discount ) && apply_filters( 'rcp_discounts_once_per_user', true ) ) {

					$discount_valid = false;
					rcp_errors()->add( 'discount_already_used', __( 'You can only use the discount code once', 'rcp' ), 'register' );
				}

				if( $discount_valid ) {

					$discounts    = new RCP_Discounts();
					$discount_obj = $discounts->get_by( 'code', $discount );

					if( is_object( $discount_obj ) ) {
						// calculate the after-discount price
						$price = $discounts->calc_discounted_price( $base_price, $discount_obj->amount, $discount_obj->unit );
					}

				}
			
			}

		}

		if( $price == 0 && isset( $_POST['rcp_auto_renew'] ) ) {
			// since free subscriptions do not go through PayPal, they cannot be auto renewed
			rcp_errors()->add( 'invalid_auto_renew', __( 'Free subscriptions cannot be automatically renewed', 'rcp' ), 'register' );
		}

		// Validate extra fields in gateways with the 2.1+ gateway API
		if( ! has_action( 'rcp_gateway_' . $gateway ) && $price > 0 ) {
		
			$gateways    = new RCP_Payment_Gateways;
			$gateway_var = $gateways->get_gateway( $gateway );
			$gateway_obj = new $gateway_var['class'];
			$gateway_obj->validate_fields();
		}

		do_action( 'rcp_form_errors', $_POST );

		// retrieve all error messages, if any
		$errors = rcp_errors()->get_error_messages();

		if ( ! empty( $errors ) && $is_ajax ) {
			wp_send_json_error( array( 'success' => false, 'errors' => rcp_get_error_messages_html( 'register' ), 'nonce' => wp_create_nonce( 'rcp-register-nonce' ) ) );
		} elseif( $is_ajax ) {
			wp_send_json_success( array( 'success' => true ) );
		}

		// only create the user if there are no errors
		if( ! empty( $errors ) ) {
			return;
		}

		// deterime the expiration date of the user's subscription
		if( $expiration->duration > 0 ) {

			$member_expires = rcp_calc_member_expiration( $expiration );

		} else {

			$member_expires = 'none';

		}

		if( $user_data['need_new'] ) {

			$user_data['id'] = wp_insert_user( array(
					'user_login'		=> $user_data['login'],
					'user_pass'	 		=> $user_data['password'],
					'user_email'		=> $user_data['email'],
					'first_name'		=> $user_data['first_name'],
					'last_name'			=> $user_data['last_name'],
					'user_registered'	=> date( 'Y-m-d H:i:s' )
				)
			);
		}

		if( $user_data['id'] ) {

			if( ! rcp_is_active( $user_data['id'] ) ) {

				rcp_set_status( $user_data['id'], 'pending' );
	
			}

			// setup a unique key for this subscription
			$subscription_key = rcp_generate_subscription_key();
			update_user_meta( $user_data['id'], 'rcp_subscription_key', $subscription_key );
			update_user_meta( $user_data['id'], 'rcp_subscription_level', $subscription_id );

			rcp_set_expiration_date( $user_data['id'], $member_expires );

			// Set the user's role
			$role = ! empty( $subscription->role ) ? $subscription->role : 'subscriber';
			$user = new WP_User( $user_data['id'] );
			$user->add_role( apply_filters( 'rcp_default_user_level', $role, $subscription_id ) );

			do_action( 'rcp_form_processing', $_POST, $user_data['id'], $price );

			// process a paid subscription
			if( $price > '0' ) {

				if( ! empty( $discount ) ) {

					// record the usage of this discount code
					$discounts->add_to_user( $user_data['id'], $discount );

					// incrase the usage count for the code
					$discounts->increase_uses( $discount_obj->id );

					// if the discount is 100%, log the user in and redirect to success page
					if( $price == '0' ) {
						rcp_set_status( $user_data['id'], 'active' );
						rcp_email_subscription_status( $user_data['id'], 'active' );
						rcp_login_user_in( $user_data['id'], $user_data['login'] );
						wp_redirect( rcp_get_return_url( $user_data['id'] ) ); exit;
					}

				}

				// Determine auto renew behavior
				if( '3' == rcp_get_auto_renew_behavior() && isset( $_POST['rcp_auto_renew'] ) ) {

					$auto_renew = true;

				} elseif( '1' == rcp_get_auto_renew_behavior() ) {

					$auto_renew = true;

				} else {

					$auto_renew = false;

				}

				// Remove trialing status, if it exists
				delete_user_meta( $user_data['id'], 'rcp_is_trialing' );

				// log the new user in
				rcp_login_user_in( $user_data['id'], $user_data['login'] );

				$redirect = rcp_get_return_url( $user_data['id'] );

				$subscription_data = array(
					'price'             => $price,
					'discount'          => $base_price - $price,
					'discount_code'     => $discount,
					'fee' 			    => ! empty( $subscription->fee ) ? number_format( $subscription->fee, 2 ) : 0,
					'length' 			=> $expiration->duration,
					'length_unit' 		=> strtolower( $expiration->duration_unit ),
					'subscription_id'   => $subscription->id,
					'subscription_name' => $subscription->name,
					'key' 				=> $subscription_key,
					'user_id' 			=> $user_data['id'],
					'user_name' 		=> $user_data['login'],
					'user_email' 		=> $user_data['email'],
					'currency' 			=> $rcp_options['currency'],
					'auto_renew' 		=> $auto_renew,
					'return_url' 		=> $redirect,
					'new_user' 			=> $user_data['need_new'],
					'post_data' 		=> $_POST
				);

				// send all of the subscription data off for processing by the gateway
				rcp_send_to_gateway( $gateway, apply_filters( 'rcp_subscription_data', $subscription_data ) );

			// process a free or trial subscription
			} else {

				// This is a free user registration or trial

				// if the subscription is a free trial, we need to record it in the user meta
				if( $member_expires != 'none' ) {

					// this is so that users can only sign up for one trial
					update_user_meta( $user_data['id'], 'rcp_has_trialed', 'yes' );
					update_user_meta( $user_data['id'], 'rcp_is_trialing', 'yes' );

					// activate the user's trial subscription
					rcp_set_status( $user_data['id'], 'active' );
					rcp_email_subscription_status( $user_data['id'], 'trial' );

				} else {

					// set the user's status to free
					rcp_set_status( $user_data['id'], 'free' );
					rcp_email_subscription_status( $user_data['id'], 'free' );

				}

				// date for trial / paid users, "none" for free users
				rcp_set_expiration_date( $user_data['id'], $member_expires );

				if( $user_data['need_new'] ) {

					if( ! isset( $rcp_options['disable_new_user_notices'] ) ) {

						// send an email to the admin alerting them of the registration
						wp_new_user_notification( $user_data['id']) ;

					}

					// log the new user in
					rcp_login_user_in( $user_data['id'], $user_data['login'] );

				}
				// send the newly created user to the redirect page after logging them in
				wp_redirect( rcp_get_return_url( $user_data['id'] ) ); exit;

			} // end price check

		} // end if new user id

	} // end nonce check
}
/**
 * Maybe add a child from the "Children" section
 *
 * @since 0.1.0
 */
function wp_user_parents_add_child()
{
    // Bail if no signup nonce
    if (empty($_REQUEST['signup_nonce'])) {
        return;
    }
    // Bail if nonce fails
    if (!wp_verify_nonce($_REQUEST['signup_nonce'], 'wp_user_dashboard_child_signup')) {
        return;
    }
    // Bail if current user cannot have children
    if (!current_user_can('have_user_children')) {
        return;
    }
    // Sanitize fields
    $redirect = false;
    $email = sanitize_email($_REQUEST['email']);
    $firstname = !empty($_REQUEST['firstname']) ? $_REQUEST['firstname'] : '';
    $lastname = !empty($_REQUEST['lastname']) ? $_REQUEST['lastname'] : '';
    $password = !empty($_REQUEST['password']) ? $_REQUEST['password'] : wp_generate_password(12, false);
    $username = !empty($_REQUEST['username']) ? $_REQUEST['username'] : "******";
    // Names are empty
    if (empty($firstname) || empty($lastname) || strlen($firstname) < 2 || strlen($lastname) < 2) {
        $args = array('error' => 'name');
        $url = wp_get_user_dashboard_url('children');
        $redirect = add_query_arg($args, $url);
    }
    // Username exists
    if (username_exists($username) || strlen($username) < 4) {
        $args = array('error' => 'username');
        $url = wp_get_user_dashboard_url('children');
        $redirect = add_query_arg($args, $url);
    }
    // Email exists
    if (email_exists($email)) {
        $args = array('error' => 'username');
        $url = wp_get_user_dashboard_url('children');
        $redirect = add_query_arg($args, $url);
    }
    // Redirect
    if (!empty($redirect)) {
        wp_safe_redirect($redirect);
        exit;
    }
    // Requires activation
    if (is_multisite() && apply_filters('wp_join_page_requires_activation', true)) {
        wpmu_signup_user($username, $email, array('add_to_blog' => get_current_blog_id(), 'new_role' => get_option('default_role'), 'first_name' => $firstname, 'last_name' => $lastname));
    }
    // Create the user account
    $user_id = wpmu_create_user(esc_html(sanitize_key($username)), $password, $email);
    // Bail if no user ID for site
    if (empty($user_id)) {
        $args = array('error' => 'unknown');
        $url = wp_get_user_dashboard_url('children');
        $redirect = add_query_arg($args, $url);
    }
    // Get new userdata
    $user = new WP_User($user_id);
    $user->add_role('pending');
    // Get the current user ID
    $current_user_id = get_current_user_id();
    // Save fullname to usermeta
    update_user_meta($user->ID, 'first_name', $firstname);
    update_user_meta($user->ID, 'last_name', $lastname);
    add_user_meta($user->ID, 'user_parent', $current_user_id, false);
    // Do action
    do_action('wp_user_parents_added_child', $user, $current_user_id);
    // Redirect
    $args = array('success' => 'yay');
    $url = wp_get_user_dashboard_url('children');
    $redirect = add_query_arg($args, $url);
    wp_safe_redirect($redirect);
    die;
}
Example #12
0
 function process_bulk_action()
 {
     $ids = isset($_GET['vendor']) ? $_GET['vendor'] : false;
     if (empty($ids)) {
         return;
     }
     if (!is_array($ids)) {
         $ids = array($ids);
     }
     $current_action = $_GET['action'];
     foreach ($ids as $id) {
         if ('approve_vendor' === $current_action) {
             if ($id < 2) {
                 break;
             }
             if (user_can($id, 'fes_is_admin') || user_can($id, 'frontend_vendor')) {
                 break;
             }
             if (!user_can($id, 'pending_vendor')) {
                 break;
             }
             $user = new WP_User($id);
             $user->remove_role('pending_vendor');
             $user->add_role('frontend_vendor');
             $from_name = isset($edd_options['from_name']) ? $edd_options['from_name'] : get_bloginfo('name');
             $from_email = isset($edd_options['from_email']) ? $edd_options['from_email'] : get_option('admin_email');
             $subject = apply_filters('fes_application_approved_message_subj', __('Application Approved', 'edd_fes'), 0);
             $message = EDD_FES()->helper->get_option('fes-vendor-app-approved-email', '');
             $type = "user";
             $args['permissions'] = 'fes-vendor-app-approved-email-toggle';
             EDD_FES()->emails->send_email($user->user_email, $from_name, $from_email, $subject, $message, $type, $id, $args);
             do_action('fes_approve_vendor_admin', $id);
             if (isset($_GET['redirect']) && $_GET['redirect'] == '2') {
                 wp_redirect(admin_url('admin.php?page=fes-vendors&vendor=' . $id . '&action=edit&approved=2'));
                 exit;
             }
         }
         if ('revoke_vendor' === $current_action) {
             if ($id < 2) {
                 break;
             }
             if (!(user_can($id, 'fes_is_admin') || user_can($id, 'frontend_vendor'))) {
                 break;
             }
             $user = new WP_User($id);
             $user->remove_role('frontend_vendor');
             $user->remove_cap('fes_is_admin');
             $user->add_role('subscriber');
             // remove all their posts
             $args = array('post_type' => 'download', 'author' => $id, 'posts_per_page' => -1, 'fields' => 'ids', 'post_status' => 'any');
             $query = new WP_Query($args);
             foreach ($query->posts as $id) {
                 wp_delete_post($id, false);
             }
             $to = $user->user_email;
             $from_name = isset($edd_options['from_name']) ? $edd_options['from_name'] : get_bloginfo('name');
             $from_email = isset($edd_options['from_email']) ? $edd_options['from_email'] : get_option('admin_email');
             $subject = apply_filters('fes_application_revoked_message_subj', __('Application Revoked', 'edd_fes'), 0);
             $message = EDD_FES()->helper->get_option('fes-vendor-app-revoked-email', '');
             $type = "user";
             $id = $id;
             $args['permissions'] = 'fes-vendor-app-revoked-email-toggle';
             EDD_FES()->emails->send_email($to, $from_name, $from_email, $subject, $message, $type, $id, $args);
             do_action('fes_revoke_vendor_admin', $id);
         }
         if ('decline_vendor' === $current_action) {
             if ($id < 2) {
                 break;
             }
             if (user_can($id, 'fes_is_admin') || user_can($id, 'frontend_vendor')) {
                 break;
             }
             if (!user_can($id, 'pending_vendor')) {
                 break;
             }
             $user = new WP_User($id);
             $user->remove_role('pending_vendor');
             $to = $user->user_email;
             $from_name = isset($edd_options['from_name']) ? $edd_options['from_name'] : get_bloginfo('name');
             $from_email = isset($edd_options['from_email']) ? $edd_options['from_email'] : get_option('admin_email');
             $subject = apply_filters('fes_application_declined_message_subj', __('Application Declined', 'edd_fes'), 0);
             $message = EDD_FES()->helper->get_option('fes-vendor-app-declined-email', '');
             $type = "user";
             $id = $id;
             $args['permissions'] = 'fes-vendor-app-declined-email-toggle';
             EDD_FES()->emails->send_email($to, $from_name, $from_email, $subject, $message, $type, $id, $args);
             do_action('fes_decline_vendor_admin', $id);
         }
         if ('suspend_vendor' === $current_action) {
             if ($id < 2) {
                 break;
             }
             if (user_can($id, 'pending_vendor')) {
                 break;
             }
             if (user_can($id, 'suspended_vendor')) {
                 break;
             }
             $user = new WP_User($id);
             $user->remove_role('frontend_vendor');
             $user->add_role('suspended_vendor');
             // remove all their posts
             $args = array('post_type' => 'download', 'author' => $id, 'posts_per_page' => -1, 'fields' => 'ids', 'post_status' => 'any');
             $query = new WP_Query($args);
             foreach ($query->posts as $id) {
                 $post = get_post($id);
                 update_post_meta($id, 'fes_previous_status', $post->post_status);
                 wp_delete_post($id, false);
             }
             $to = $user->user_email;
             $from_name = isset($edd_options['from_name']) ? $edd_options['from_name'] : get_bloginfo('name');
             $from_email = isset($edd_options['from_email']) ? $edd_options['from_email'] : get_option('admin_email');
             $subject = apply_filters('fes_vendor_suspended_message_subj', __('Suspended', 'edd_fes'), 0);
             $message = EDD_FES()->helper->get_option('fes-vendor-suspended-email', '');
             $type = "user";
             $id = $id;
             $args['permissions'] = 'fes-vendor-suspended-email-toggle';
             EDD_FES()->emails->send_email($to, $from_name, $from_email, $subject, $message, $type, $id, $args);
             do_action('fes_vendor_suspended_admin', $id);
             if (isset($_GET['redirect']) && $_GET['redirect'] == '2') {
                 wp_redirect(admin_url('admin.php?page=fes-vendors&vendor=' . $id . '&action=edit&approved=2'));
                 exit;
             }
         }
         if ('unsuspend_vendor' === $current_action) {
             if ($id < 2) {
                 break;
             }
             if (user_can($id, 'pending_vendor')) {
                 break;
             }
             if (user_can($id, 'frontend_vendor')) {
                 break;
             }
             $user = new WP_User($id);
             $user->add_role('frontend_vendor');
             $user->remove_role('suspended_vendor');
             // remove all their posts
             $args = array('post_type' => 'download', 'author' => $id, 'posts_per_page' => -1, 'fields' => 'ids', 'post_status' => 'trash');
             $query = new WP_Query($args);
             foreach ($query->posts as $id) {
                 $status = get_post_meta($id, 'fes_previous_status', true);
                 if (!$status) {
                     $status = 'publish';
                 }
                 wp_update_post(array('ID' => $id, 'post_status' => $status));
             }
             $to = $user->user_email;
             $from_name = isset($edd_options['from_name']) ? $edd_options['from_name'] : get_bloginfo('name');
             $from_email = isset($edd_options['from_email']) ? $edd_options['from_email'] : get_option('admin_email');
             $subject = apply_filters('fes_vendor_unsuspended_message_subj', __('Unsuspended', 'edd_fes'), 0);
             $message = EDD_FES()->helper->get_option('fes-vendor-unsuspended-email', '');
             $type = "user";
             $id = $id;
             $args['permissions'] = 'fes-vendor-unsuspended-email-toggle';
             EDD_FES()->emails->send_email($to, $from_name, $from_email, $subject, $message, $type, $id, $args);
             do_action('fes_vendor_unsuspended_admin', $id);
             if (isset($_GET['redirect']) && $_GET['redirect'] == '2') {
                 wp_redirect(admin_url('admin.php?page=fes-vendors&vendor=' . $id . '&action=edit&approved=2'));
                 exit;
             }
         }
     }
 }
 function merge_user($user_id, $merged_user_id)
 {
     $user = new WP_User($user_id);
     $merged_user = new WP_User($merged_user_id);
     $roles = $merged_user->roles;
     foreach ($roles as $role) {
         $user->add_role($role);
     }
     wp_delete_user($merged_user_id, $user_id);
     if (get_userdata($merged_user_id)) {
         echo 'Please contact the site administrator.  During the DaCDb update, a duplicate user failed to be deleted. The duplicate is  ' . $merged_user_id . ' Trying to merge to user ' . $user_id . ' Current user logged in is ' . get_current_user_id();
     }
 }
 /**
  * update user roles and capabilities
  * @param type $user
  * @return boolean
  */
 public function solvease_roles_capabilities_update_user_role_cap($user_id)
 {
     // check if its a valid POST
     if (!isset($_POST['solvease_user_role_cap_nonce']) || !wp_verify_nonce($_POST['solvease_user_role_cap_nonce'], 'solvease_user_role_cap') || $_POST['user_id'] != $user_id) {
         return;
     }
     $user = new WP_User($user_id);
     // capabilities
     $capabilities = isset($_POST['cap']) ? array_keys($_POST['cap']) : array();
     // all user roles
     $all_roles = $this->solvease_roles_capabilities_get_roles();
     // primary roles
     $primary_role = $_POST['primary_role'];
     // secondary roles
     $secondary_roles = isset($_POST['secondary_roles']) ? array_keys($_POST['secondary_roles']) : array();
     // blank user roles
     $user->roles = array();
     // remove all user roles
     $user->remove_all_caps();
     // add primary roles
     if ($primary_role != '' && isset($all_roles[$primary_role])) {
         $user->add_role($primary_role);
     } else {
         return FALSE;
     }
     // add secondary roles
     if (!empty($secondary_roles)) {
         foreach ($secondary_roles as $secondary_role) {
             if (isset($all_roles[$secondary_role]) && $primary_role != $secondary_role) {
                 $user->add_role($secondary_role);
             }
         }
     }
     // add capabilities of user roles
     $user->update_user_level_from_caps();
     // add capabilities
     if (!empty($capabilities)) {
         foreach ($capabilities as $capability) {
             $user->add_cap($capability);
         }
     }
     return $user;
 }
Example #15
0
 /**
  * Import a single user
  * 
  * @param array $user
  * @return array
  */
 protected function import_user($user)
 {
     $local_user = get_user_by('login', $user['data']['user_login']);
     $local_user_object = new WP_User($local_user->ID);
     $update = !empty($local_user) ? true : false;
     if (!function_exists('wp_insert_user')) {
         include_once ABSPATH . 'wp-includes/registration.php';
     }
     // args used by wp_insert_user & wp_update_user
     // makes for an easy merge and a reminder of just what is handled at that time
     $insert_user_args = array('user_login' => null, 'user_nicename' => null, 'user_url' => null, 'user_email' => null, 'display_name' => null, 'nickname' => null, 'first_name' => null, 'last_name' => null, 'description' => null, 'rich_editing' => null, 'user_registered' => null, 'role' => null, 'use_ssl' => 0, 'admin_color' => null, 'comment_shortcuts' => null);
     foreach (_wp_get_user_contactmethods() as $contact_method => $contact_method_name) {
         $insert_user_args[$contact_method] = null;
     }
     cfd_tmp_dbg('importing_user.txt', $user, 'print');
     foreach ($insert_user_args as $key => &$arg) {
         if ($key == 'role') {
             $arg = $user['roles'][0];
         } else {
             if (!empty($user['data'][$key])) {
                 $arg = $user['data'][$key];
             }
         }
     }
     cfd_tmp_dbg('importing_user_args.txt', $insert_user_args, 'print');
     if ($update) {
         $local_userdata = get_object_vars(get_userdata($local_user->ID));
         $insert_user_args = array_merge($local_userdata, $insert_user_args);
         unset($insert_user_args['user_pass']);
         $user_id = wp_update_user($insert_user_args);
     } else {
         if (email_exists($user['data']['user_email'])) {
             $this->add_import_message('users', '__error__', sprintf(__('Email address "%s" already exists for another user', 'cf-deploy'), $user['data']['user_email']));
             return false;
         }
         // set generic password for new user
         $insert_user_args['user_password'] = time();
         $user_id = wp_insert_user($insert_user_args);
     }
     if (empty($user_id) || is_wp_error($user_id)) {
         $errstring = sprintf(__('Import failed for user "%s".', 'cf-deploy'), $user['data']['user_nicename']);
         if (is_wp_error($user_id)) {
             $errstring .= ' ' . __('Error:', 'cf-deploy') . ' ' . $user_id->get_error_message();
         }
         $this->add_import_message('users', '__error__', $errstring);
         $ret = false;
     } else {
         // Set/Update Capabilities & Roles
         $u = new WP_User($user_id);
         // set roles, remove all existing and replace with what is being brought in
         foreach ($u->roles as $role) {
             $u->remove_role($role);
         }
         foreach ($user['roles'] as $role) {
             $u->add_role($role);
         }
         // set caps, remove all existing caps before setting them anew
         $u->remove_all_caps();
         foreach ($user['caps'] as $cap => $value) {
             $u->add_cap($cap, (bool) $value);
         }
         $this->add_import_message('users', '__notice__', sprintf(__('User "%s" successfully imported.', 'cf-deploy'), $user['data']['user_login']));
         $ret = true;
     }
     $item_change['users'][$user['data']['user_login']] = 'new';
     if (!empty($local_user)) {
         $log_users = array($local_user_object);
         array_walk_recursive($log_users, array($this, 'object_to_array'));
         $item_change['users'][$user['data']['user_login']] = current($log_users);
     }
     $this->log_item_change($item_change);
     return $ret;
 }
Example #16
0
 /**
  * Reject Pending Vendor via AJAX
  *
  * @return void
  */
 function reject_pending_vendor()
 {
     global $WCMp;
     $user_id = $_POST['user_id'];
     $user = new WP_User(absint($user_id));
     if (is_array($user->roles) && in_array('dc_pending_vendor', $user->roles)) {
         $user->remove_role('dc_pending_vendor');
     }
     $user->add_role('dc_rejected_vendor');
     $user_dtl = get_userdata(absint($user_id));
     $email = WC()->mailer()->emails['WC_Email_Rejected_New_Vendor_Account'];
     $email->trigger($user_id, $user_dtl->user_pass);
     if (in_array('dc_vendor', $old_role)) {
         $vendor = get_wcmp_vendor($user_id);
         if ($vendor) {
             wp_delete_term($vendor->term_id, 'dc_vendor_shop');
         }
     }
     wp_delete_user($user_id);
     die;
 }
Example #17
0
 /**
  * Activates user
  *
  * @access public
  * @return void
  */
 public static function activateUser()
 {
     if (isset($_GET['activate']) && isset($_GET['user']) && intval($_GET['user']) != 0) {
         $users = get_users(array('meta_key' => '_' . THEMEX_PREFIX . 'activation_key', 'meta_value' => sanitize_text_field($_GET['activate']), 'include' => intval($_GET['user'])));
         if (!empty($users)) {
             $user = reset($users);
             $user = new WP_User($user->ID);
             $user->remove_role('inactive');
             $user->add_role(get_option('default_role'));
             wp_set_auth_cookie($user->ID, true);
             ThemexCore::updateUserMeta($user->ID, 'activation_key', '');
             $redirect = ThemexCore::getUserMeta($user->ID, 'redirect');
             if (!empty($redirect)) {
                 $redirect = ThemexCore::getURL('redirect', intval($redirect));
                 ThemexCore::updateUserMeta($user->ID, 'redirect', '');
             } else {
                 $redirect = get_author_posts_url($user->ID);
             }
             wp_redirect($redirect);
             exit;
         }
     }
 }
Example #18
0
 function rename_role($role)
 {
     global $wp_roles, $wpdb;
     if ($_POST['role-name']) {
         $oldrole = $wp_roles->get_role($role);
         $roletitle = sanitize_title($_POST['role-name']);
         $wp_roles->remove_role($role);
         $wp_roles->add_role($roletitle, stripslashes($_POST['role-name']), $oldrole->capabilities);
         if ($userids = $wpdb->get_col("SELECT ID FROM {$wpdb->users}")) {
             foreach ($userids as $userid) {
                 $user = new WP_User($userid);
                 if (in_array($role, array_keys($user->caps))) {
                     $theirroles = $user->roles;
                     $user->set_role($roletitle);
                     foreach ($theirroles as $theirrole) {
                         $user->add_role($theirrole);
                     }
                     $user->roles = array_values($user->roles);
                     $this->debug('after', $user);
                 }
             }
         }
         //die('test');
         header('Location: ' . $this->manage_roles_uri() . '&role-renamed=true');
     }
 }
function wskl_deactivate_account(WP_User $user, $timestamp, array $meta_keys_preserve, $role_to_dismiss)
{
    /** @var wpdb $wpdb */
    global $wpdb;
    // wipe out all user metadata.
    $query = "DELETE FROM `{$wpdb->usermeta}` WHERE `user_id` = '%d' ";
    if (count($meta_keys_preserve)) {
        $quoted = implode(',', array_map(function ($key) {
            return str_pad($key, strlen($key + 2), '\'', STR_PAD_BOTH);
        }, $meta_keys_preserve));
        $query .= $wpdb->prepare('AND `meta_key` NOT IN (%s)', $quoted);
    }
    $prepared_query = $wpdb->prepare($query, $user->ID);
    $wpdb->query($prepared_query);
    // create random password, and replace an existing one.
    wp_set_password(wp_generate_password(22, TRUE, TRUE), $user->ID);
    // update user's role as wskl_deactivated
    $user->remove_role($role_to_dismiss);
    $user->add_role('wskl_deactivated');
    wskl_set_user_deactivated($user->ID, $timestamp);
}
Example #20
0
 /**
  * Save for user role adding
  *
  * @param $user_id int
  */
 public function save_profile_update($user_id)
 {
     global $wp_roles;
     if (!is_super_admin() && !current_user_can('backwpup_admin')) {
         return;
     }
     if (empty($user_id)) {
         return;
     }
     if (!isset($_POST['backwpup_role'])) {
         return;
     }
     // get BackWPup roles
     $backwpup_roles = array();
     foreach (array_keys($wp_roles->roles) as $role) {
         if (!strstr($role, 'backwpup_')) {
             continue;
         }
         $backwpup_roles[] = $role;
     }
     //get user for adding/removing role
     $user = new WP_User($user_id);
     //remove BackWPup role from user
     foreach ($user->roles as $role) {
         if (!strstr($role, 'backwpup_')) {
             continue;
         }
         $user->remove_role($role);
     }
     //add new role to user
     if (!empty($_POST['backwpup_role']) && in_array($_POST['backwpup_role'], $backwpup_roles)) {
         $user->add_role($_POST['backwpup_role']);
     }
     return;
 }
Example #21
0
 /**
  * Saves additional user fields to the database
  * function save_vendor_data
  * @access private
  * @param int $user_id
  * @return void
  */
 function save_vendor_data($user_id)
 {
     global $WCMp;
     $user = new WP_User($user_id);
     // only saves if the current user can edit user profiles
     if (!current_user_can('edit_user', $user_id)) {
         return false;
     }
     $errors = new WP_Error();
     if (!is_user_wcmp_vendor($user_id) && $_POST['role'] == 'dc_vendor') {
         $user->add_role('dc_vendor');
         $this->update_vendor_meta($user_id);
         $this->add_vendor_caps($user_id);
         $vendor = get_wcmp_vendor($user_id);
         $vendor->generate_term();
         $user_dtl = get_userdata(absint($user_id));
         $email = WC()->mailer()->emails['WC_Email_Approved_New_Vendor_Account'];
         $email->trigger($user_id, $user_dtl->user_pass);
     }
     $fields = $this->get_vendor_fields($user_id);
     $vendor = get_wcmp_vendor($user_id);
     foreach ($fields as $fieldkey => $value) {
         if (isset($_POST[$fieldkey])) {
             if ($fieldkey == 'vendor_page_title') {
                 if ($vendor && !$vendor->update_page_title(wc_clean($_POST[$fieldkey]))) {
                     $errors->add('vendor_title_exists', __('Title Update Error', $WCMp->text_domain));
                 } else {
                     wp_update_user(array('ID' => $user_id, 'display_name' => $_POST[$fieldkey]));
                 }
             } elseif ($fieldkey == 'vendor_page_slug') {
                 if ($vendor && !$vendor->update_page_slug(wc_clean($_POST[$fieldkey]))) {
                     $errors->add('vendor_slug_exists', __('Slug already exists', $WCMp->text_domain));
                 }
             } elseif ($fieldkey == 'vendor_publish_product') {
                 $user->remove_cap('publish_products');
                 update_user_meta($user_id, '_' . $fieldkey, wc_clean($_POST[$fieldkey]));
             } elseif ($fieldkey == 'vendor_publish_coupon') {
                 $user->remove_cap('publish_shop_coupons');
                 update_user_meta($user_id, '_' . $fieldkey, wc_clean($_POST[$fieldkey]));
             } else {
                 update_user_meta($user_id, '_' . $fieldkey, wc_clean($_POST[$fieldkey]));
             }
         } else {
             if (!isset($_POST['vendor_submit_product']) && $fieldkey == 'vendor_submit_product') {
                 delete_user_meta($user_id, '_vendor_submit_product');
             } else {
                 if (!isset($_POST['vendor_submit_coupon']) && $fieldkey == 'vendor_submit_coupon') {
                     delete_user_meta($user_id, '_vendor_submit_coupon');
                 } else {
                     if (!isset($_POST['vendor_hide_description']) && $fieldkey == 'vendor_hide_description') {
                         delete_user_meta($user_id, '_vendor_hide_description');
                     } else {
                         if (!isset($_POST['vendor_hide_address']) && $fieldkey == 'vendor_hide_address') {
                             delete_user_meta($user_id, '_vendor_hide_address');
                         } else {
                             if (!isset($_POST['vendor_hide_message_to_buyers']) && $fieldkey == 'vendor_hide_message_to_buyers') {
                                 delete_user_meta($user_id, '_vendor_hide_message_to_buyers');
                             } else {
                                 if (!isset($_POST['vendor_hide_phone']) && $fieldkey == 'vendor_hide_phone') {
                                     delete_user_meta($user_id, '_vendor_hide_phone');
                                 } else {
                                     if (!isset($_POST['vendor_hide_email']) && $fieldkey == 'vendor_hide_email') {
                                         delete_user_meta($user_id, '_vendor_hide_email');
                                     } else {
                                         if (!isset($_POST['vendor_give_tax']) && $fieldkey == 'vendor_give_tax') {
                                             delete_user_meta($user_id, '_vendor_give_tax');
                                         } else {
                                             if (!isset($_POST['vendor_give_shipping']) && $fieldkey == 'vendor_give_shipping') {
                                                 delete_user_meta($user_id, '_vendor_give_shipping');
                                             } else {
                                                 if (!isset($_POST['vendor_turn_off']) && $fieldkey == 'vendor_turn_off') {
                                                     delete_user_meta($user_id, '_vendor_turn_off');
                                                 } else {
                                                     if (!isset($_POST['vendor_publish_product']) && $fieldkey == 'vendor_publish_product') {
                                                         delete_user_meta($user_id, '_vendor_publish_product');
                                                         if ($WCMp->vendor_caps->vendor_capabilities_settings('is_published_product')) {
                                                             $user->add_cap('publish_products');
                                                         }
                                                     } else {
                                                         if (!isset($_POST['vendor_publish_coupon']) && $fieldkey == 'vendor_publish_coupon') {
                                                             if ($WCMp->vendor_caps->vendor_capabilities_settings('is_published_coupon')) {
                                                                 $user->add_cap('publish_shop_coupons');
                                                             }
                                                             delete_user_meta($user_id, '_vendor_publish_coupon');
                                                         } else {
                                                             if (!isset($_POST['vendor_is_policy_off']) && $fieldkey == 'vendor_is_policy_off') {
                                                                 delete_user_meta($user_id, '_vendor_is_policy_off');
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     $this->user_change_cap($user_id);
     if (is_user_wcmp_vendor($user_id) && isset($_POST['role']) && $_POST['role'] != 'dc_vendor') {
         $vendor = get_wcmp_vendor($user_id);
         $user->remove_role('dc_vendor');
         if ($_POST['role'] != 'dc_pending_vendor') {
             $user->remove_role('dc_pending_vendor');
         }
         wp_delete_term($vendor->term_id, 'dc_vendor_shop');
     }
 }
Example #22
0
 /**
  * Save for user role adding
  *
  * @param $user_id int
  */
 public function save_profile_update($user_id)
 {
     global $wp_roles;
     if (!is_super_admin() && !current_user_can('backwpup_admin')) {
         return;
     }
     if (empty($user_id)) {
         return;
     }
     if (!isset($_POST['backwpup_role'])) {
         return;
     }
     $backwpup_role = esc_attr($_POST['backwpup_role']);
     //get BackWPup roles
     $backwpup_roles = array();
     foreach (array_keys($wp_roles->roles) as $role) {
         if (!strstr($role, 'backwpup_')) {
             continue;
         }
         $backwpup_roles[] = $role;
     }
     //get user for adding/removing role
     $user = new WP_User($user_id);
     //a admin needs no extra role
     if ($user->has_cap('administrator') && $user->has_cap('backwpup_settings')) {
         $backwpup_role = '';
     }
     //remove BackWPup role from user if it not the actual
     foreach ($user->roles as $role) {
         if (!strstr($role, 'backwpup_')) {
             continue;
         }
         if ($role !== $backwpup_role) {
             $user->remove_role($role);
         } else {
             $backwpup_role = '';
         }
     }
     //add new role to user if it not the actual
     if ($backwpup_role && in_array($backwpup_role, $backwpup_roles)) {
         $user->add_role($backwpup_role);
     }
     return;
 }
Example #23
0
 function submit_registration_form($args = array())
 {
     global $edd_options;
     if (is_admin() && (!isset($_REQUEST['_wpnonce']) || !wp_verify_nonce($_REQUEST['_wpnonce'], 'fes-form-registration'))) {
         return;
     }
     check_ajax_referer('fes-form-registration');
     @header('Content-Type: application/json; charset=' . get_option('blog_charset'));
     $form_id = isset($_POST['form_id']) ? intval($_POST['form_id']) : 0;
     $db_form_id = EDD_FES()->helper->get_option('fes-registration-form', false);
     $form_vars = $this->get_input_fields($form_id);
     list($user_vars, $taxonomy_vars, $meta_vars) = $form_vars;
     $merged_user_meta = array_merge($user_vars, $meta_vars);
     do_action('fes_pre_process_registration_form', $this, $form_id, $form_vars);
     if ($form_id != $db_form_id && !is_admin()) {
         $response = array('success' => false, 'redirect_to' => get_permalink($_POST['page_id']), 'message' => __('Access Denied: ' . $form_id . ' != ' . $db_form_id, 'edd_fes'), 'is_post' => true);
         echo json_encode($response);
         exit;
     }
     //echo json_encode( $user_vars ); exit;
     // if admin side lets get them out of the way
     if (is_admin() && !empty($_REQUEST['is_admin']) && '1' == $_REQUEST['is_admin']) {
         $user = get_userdata(absint($_REQUEST['user_id']));
         if (!current_user_can('edit_users')) {
             $response = array('success' => false, 'redirect_to' => admin_url('admin.php?page=fes-vendors&vendor=' . $user->ID . '&result=denied&action=edit'), 'message' => __('Access denied!', 'edd_fes'), 'is_post' => true);
             $response = apply_filters('fes_registration_form_denied_admin_redirect', $response, $user->ID, $form_id);
             do_action('fes_registration_form_denied_admin', $user->ID);
             echo json_encode($response);
             exit;
         }
         $userdata = array();
         if ($this->search_array($merged_user_meta, 'name', 'first_name')) {
             $userdata['first_name'] = sanitize_text_field($_POST['first_name']);
         }
         if ($this->search_array($merged_user_meta, 'name', 'last_name')) {
             $userdata['last_name'] = sanitize_text_field($_POST['last_name']);
         }
         if ($this->search_array($merged_user_meta, 'name', 'user_email')) {
             if (!empty($_POST['user_email']) && !is_email($_POST['user_email'])) {
                 $this->signal_error(__('Please enter a valid email!', 'edd_fes'));
             } elseif (!empty($_POST['user_email'])) {
                 $userdata['user_email'] = sanitize_email($_POST['user_email']);
             }
         }
         if ($this->search_array($merged_user_meta, 'name', 'display_name')) {
             $userdata['display_name'] = sanitize_text_field($_POST['display_name']);
         }
         if ($this->search_array($merged_user_meta, 'name', 'user_url')) {
             if (isset($_POST['user_url'])) {
                 $userdata['user_url'] = sanitize_text_field($_POST['user_url']);
             }
         }
         $userdata['ID'] = $user->ID;
         wp_update_user($userdata);
         // save app data to vendor
         $counter = 0;
         foreach ($meta_vars as $meta) {
             if ($meta['name'] == 'password') {
                 unset($meta_vars[$counter]);
             }
             $counter++;
         }
         $this->update_user_meta($meta_vars, $user->ID);
         // redirect to dashboard
         $response = array('success' => true, 'redirect_to' => admin_url('admin.php?page=fes-vendors&vendor=' . $user->ID . '&result=success&action=edit'), 'message' => __('Successfully Updated', 'edd_fes'), 'is_post' => true);
         $response = apply_filters('fes_registration_form_admin_redirect', $response, $user->ID, $form_id);
         do_action('fes_registration_form_admin_success', $user->ID);
         echo json_encode($response);
         exit;
     }
     // End is_admin()
     // check recaptcha
     if ($this->search_array($form_vars, 'input_type', 'recaptcha')) {
         $this->validate_re_captcha();
     }
     // if user logged in skip verification & creation of new user
     if (is_user_logged_in()) {
         $user = new WP_User(get_current_user_id());
         $userdata = array();
         $userdata['user_email'] = $user->user_email;
         if ($this->search_array($merged_user_meta, 'name', 'first_name')) {
             if (!isset($_POST['first_name']) || $_POST['first_name'] === '') {
                 $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
             } else {
                 $userdata['first_name'] = sanitize_text_field($_POST['first_name']);
             }
         }
         if ($this->search_array($merged_user_meta, 'name', 'last_name')) {
             if (!isset($_POST['last_name']) || $_POST['last_name'] === '') {
                 $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
             } else {
                 $userdata['last_name'] = sanitize_text_field($_POST['last_name']);
             }
         }
         if ($this->search_array($merged_user_meta, 'name', 'display_name')) {
             if (!isset($_POST['display_name']) || $_POST['display_name'] === '') {
                 $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
             } else {
                 $userdata['display_name'] = sanitize_text_field($_POST['display_name']);
             }
         }
         if ($this->search_array($merged_user_meta, 'name', 'user_url')) {
             if (isset($_POST['user_url'])) {
                 $userdata['user_url'] = sanitize_text_field($_POST['user_url']);
             }
         }
         $userdata['ID'] = $user->ID;
         wp_update_user($userdata);
     } else {
         if ($this->is_valid_user($merged_user_meta)) {
             $userdata = array();
             if ($this->search_array($merged_user_meta, 'name', 'first_name')) {
                 if (!isset($_POST['first_name']) || $_POST['first_name'] === '') {
                     $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
                 } else {
                     $userdata['first_name'] = sanitize_text_field($_POST['first_name']);
                 }
             }
             if ($this->search_array($merged_user_meta, 'name', 'last_name')) {
                 if (!isset($_POST['last_name']) || $_POST['last_name'] === '') {
                     $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
                 } else {
                     $userdata['last_name'] = sanitize_text_field($_POST['last_name']);
                 }
             }
             if ($this->search_array($merged_user_meta, 'name', 'user_email')) {
                 if (!isset($_POST['user_email']) || $_POST['user_email'] === '') {
                     $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
                 }
                 if (!is_email($_POST['user_email'])) {
                     $this->signal_error(__('Please enter a valid email!', 'edd_fes'));
                 } else {
                     $userdata['user_email'] = sanitize_email($_POST['user_email']);
                 }
             }
             if ($this->search_array($merged_user_meta, 'name', 'display_name')) {
                 if (!isset($_POST['display_name']) || $_POST['display_name'] === '') {
                     $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
                 } else {
                     $userdata['display_name'] = sanitize_text_field($_POST['display_name']);
                 }
             }
             if ($this->search_array($merged_user_meta, 'name', 'user_url')) {
                 if (isset($_POST['user_url'])) {
                     $userdata['user_url'] = sanitize_text_field($_POST['user_url']);
                 }
             }
             if ($this->search_array($merged_user_meta, 'name', 'description')) {
                 if (isset($_POST['description'])) {
                     $userdata['description'] = wp_kses($_POST['description'], fes_allowed_html_tags());
                 }
             }
             $user = get_user_by('login', $_REQUEST['user_login']);
             if ($user) {
                 $userdata['ID'] = $user->ID;
                 wp_update_user($userdata);
                 wp_set_auth_cookie($user->ID, true);
                 wp_set_current_user($user->ID, $_REQUEST['user_login']);
                 do_action('wp_login', $_REQUEST['user_login']);
             } else {
                 $this->signal_error(__('Sorry! Registration is currently disabled at this time!', 'edd_fes'));
             }
         } else {
             if (!(bool) EDD_FES()->helper->get_option('fes-allow-applications', true)) {
                 $this->signal_error(__('Sorry! Registration is currently disabled at this time!', 'edd_fes'));
             } else {
                 $userdata = array();
                 if ($this->search_array($merged_user_meta, 'name', 'first_name')) {
                     if (!isset($_POST['first_name']) || $_POST['first_name'] === '') {
                         $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
                     } else {
                         $userdata['first_name'] = sanitize_text_field($_POST['first_name']);
                     }
                 }
                 if ($this->search_array($merged_user_meta, 'name', 'last_name')) {
                     if (!isset($_POST['last_name']) || $_POST['last_name'] === '') {
                         $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
                     } else {
                         $userdata['last_name'] = sanitize_text_field($_POST['last_name']);
                     }
                 }
                 if ($this->search_array($merged_user_meta, 'name', 'user_email')) {
                     if (!isset($_POST['user_email']) || $_POST['user_email'] === '') {
                         $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
                     }
                     if (!is_email($_POST['user_email'])) {
                         $this->signal_error(__('Please enter a valid email!', 'edd_fes'));
                     } else {
                         $userdata['user_email'] = sanitize_email($_POST['user_email']);
                     }
                 }
                 if ($this->search_array($merged_user_meta, 'name', 'user_login')) {
                     if (!isset($_POST['user_login']) || $_POST['user_login'] === '') {
                         $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
                     } else {
                         $userdata['user_login'] = sanitize_user($_POST['user_login']);
                     }
                 }
                 if ($this->search_array($merged_user_meta, 'name', 'display_name')) {
                     if (!isset($_POST['display_name']) || $_POST['display_name'] === '') {
                         $this->signal_error(__('Please fill out the registration form!', 'edd_fes'));
                     } else {
                         $userdata['display_name'] = sanitize_text_field($_POST['display_name']);
                     }
                 }
                 if ($this->search_array($merged_user_meta, 'name', 'user_url')) {
                     if (isset($_POST['user_url'])) {
                         $userdata['user_url'] = sanitize_text_field($_POST['user_url']);
                     }
                 }
                 if ($this->search_array($merged_user_meta, 'name', 'description')) {
                     if (isset($_POST['description'])) {
                         $userdata['description'] = wp_kses($_POST['description'], fes_allowed_html_tags());
                     }
                 }
                 // verify password
                 if ($pass_element = $this->search_array($merged_user_meta, 'name', 'password')) {
                     $pass_element = current($pass_element);
                     $password = isset($_POST['pass1']) ? sanitize_text_field($_POST['pass1']) : '';
                     $password_repeat = isset($_POST['pass2']) ? sanitize_text_field($_POST['pass2']) : '';
                     // check only if it's filled
                     if ($pass_length = strlen($password)) {
                         // min length check
                         if ($pass_length < intval($pass_element['min_length'])) {
                             $this->signal_error(sprintf(__('Password must be %s character long', 'edd_fes'), $pass_element['min_length']));
                         }
                         // repeat password check
                         if (isset($_POST['pass2']) && $password != $password_repeat) {
                             $this->signal_error(__('Password didn\'t match', 'edd_fes'));
                         }
                         // password is good
                         $userdata['user_pass'] = $password;
                     }
                 }
                 // see if an account? If so log in
                 $user = get_user_by('login', $userdata['user_login']);
                 if ($user) {
                     $password = wp_check_password($userdata['user_pass'], $user->data->user_pass, $user->ID);
                     // if username + password is account log them in
                     if ($password) {
                         wp_set_auth_cookie($user->ID, true);
                         wp_set_current_user($user->ID, $userdata['user_login']);
                         do_action('wp_login', $userdata['user_login']);
                     } else {
                         $this->signal_error(__('Username already in use and password incorrect!', 'edd_fes'));
                     }
                 } else {
                     $userdata['role'] = 'subscriber';
                     $userdata['user_registered'] = date('Y-m-d H:i:s');
                     $user_id = wp_insert_user($userdata);
                     if (is_wp_error($user_id)) {
                         $this->signal_error($user_id->get_error_message());
                     }
                     wp_new_user_notification($user_id);
                     $user = new WP_User($user_id);
                     $user_login = $userdata['user_login'];
                     // log the new user in
                     wp_set_auth_cookie($user_id, true);
                     wp_set_current_user($user_id, $user_login);
                     do_action('wp_login', $user_login);
                 }
             }
         }
     }
     // at this point should have user_id
     $user_id = get_current_user_id();
     // if auto approved
     if ((bool) EDD_FES()->helper->get_option('fes-auto-approve-vendors', true)) {
         $role = 'frontend_vendor';
         // save app data to vendor
         $counter = 0;
         foreach ($meta_vars as $meta) {
             if ($meta['name'] == 'password') {
                 unset($meta_vars[$counter]);
             }
             $counter++;
         }
         $this->update_user_meta($meta_vars, $user_id);
         // email user
         $to = apply_filters('fes_registration_form_frontend_vendor_to', $userdata['user_email'], $userdata);
         $from_name = isset($edd_options['from_name']) ? $edd_options['from_name'] : get_bloginfo('name');
         $from_email = isset($edd_options['from_email']) ? $edd_options['from_email'] : get_option('admin_email');
         $subject = apply_filters('fes_registration_form_to_vendor_accepted_subject', __('Application Accepted', 'edd_fes'));
         $message = EDD_FES()->helper->get_option('fes-vendor-new-auto-vendor-email', '');
         $type = "user";
         $id = $user_id;
         $args = array('permissions' => 'fes-vendor-new-auto-vendor-email-toggle');
         EDD_FES()->emails->send_email($to, $from_name, $from_email, $subject, $message, $type, $id, $args);
         // add frontend_vendor role
         $user->add_role('frontend_vendor');
         // remove pending_vendor role
         $user->remove_role('pending_vendor');
         // redirect to dashboard
         $response = array('success' => true, 'redirect_to' => get_permalink(EDD_FES()->helper->get_option('fes-vendor-dashboard-page', false)), 'message' => __('Your Application has been Approved!', 'edd_fes'), 'is_post' => true);
         do_action('fes_registration_form_frontend_vendor', $user_id, $userdata);
         $response = apply_filters('fes_register_form_frontend_vendor', $response, $user_id, $form_id, $_REQUEST);
         echo json_encode($response);
         exit;
         // else pending vendor
     } else {
         // save app data to vendor
         $counter = 0;
         foreach ($meta_vars as $meta) {
             if ($meta['name'] == 'password') {
                 unset($meta_vars[$counter]);
             }
             $counter++;
         }
         $this->update_user_meta($meta_vars, $user_id);
         // email admin
         $to = apply_filters('fes_registration_form_pending_vendor_to_admin', edd_get_admin_notice_emails(), $userdata);
         $from_name = isset($edd_options['from_name']) ? $edd_options['from_name'] : get_bloginfo('name');
         $from_email = isset($edd_options['from_email']) ? $edd_options['from_email'] : get_option('admin_email');
         $subject = apply_filters('fes_registration_form_to_admin_subject', __('New Vendor Application Received', 'edd_fes'));
         $message = EDD_FES()->helper->get_option('fes-admin-new-app-email', '');
         $type = "user";
         $id = $user_id;
         $args = array('permissions' => 'fes-admin-new-app-email-toggle');
         EDD_FES()->emails->send_email($to, $from_name, $from_email, $subject, $message, $type, $id, $args);
         // email user
         $to = apply_filters('fes_registration_form_pending_vendor_to', $userdata['user_email'], $userdata);
         $from_name = isset($edd_options['from_name']) ? $edd_options['from_name'] : get_bloginfo('name');
         $from_email = isset($edd_options['from_email']) ? $edd_options['from_email'] : get_option('admin_email');
         $subject = apply_filters('fes_registration_form_to_vendor_received_subject', __('Application Received', 'edd_fes'));
         $message = EDD_FES()->helper->get_option('fes-vendor-new-app-email', '');
         $type = "user";
         $id = $user_id;
         $args = array('permissions' => 'fes-vendor-new-app-email-toggle');
         EDD_FES()->emails->send_email($to, $from_name, $from_email, $subject, $message, $type, $id, $args);
         // add pending vendor cap
         $user->add_role('pending_vendor');
         // redirect to app under view
         $response = array('success' => true, 'redirect_to' => get_permalink(EDD_FES()->helper->get_option('fes-vendor-dashboard-page', false)), 'message' => __('Application Submitted', 'edd_fes'), 'is_post' => true);
         do_action('fes_registration_form_pending_vendor', $user_id, $userdata);
         $response = apply_filters('fes_register_form_pending_vendor', $response, $user_id, $form_id, $_REQUEST);
         echo json_encode($response);
         exit;
     }
 }
 /**
  * delete a given role from wordpress
  * R22
  * @param str $role
  */
 function delete_role($role)
 {
     global $wp_roles, $iwg_rolemanagement;
     if ($_POST['confirm']) {
         $iwg_rolemanagement->check_admin_ref('iwg_rolemanager_delete_role_' . $role);
         // no: underscore, space
         // yes: minus
         $role_name = $iwg_rolemanagement->check_input($role, null, false, false, true);
         if (!$role_name) {
             $iwg_rolemanagement->error_number += 1000;
             $iwg_rolemanagement->handle_error();
         }
         $defaultrole = get_option('default_role');
         if ($role_name == $defaultrole) {
             //LAZY CODE ALERT! we should give the option of changing the default role
             $iwg_rolemanagement->error_number = 1020;
             $iwg_rolemanagement->handle_error();
         }
         //remove the role from all the users
         $uids_with_role = $iwg_rolemanagement->get_all_userids_with_role($role_name);
         if (count($uids_with_role) > 0) {
             foreach ($uids_with_role as $id) {
                 $user = new WP_User($id);
                 $user->roles = $iwg_rolemanagement->fill_array_keys_with_true($user->roles);
                 //if this role removal would end them up with no roles, assign the default role instead of removing
                 if (count($user->roles) <= 1) {
                     $user->add_role($defaultrole);
                     $user->roles = $iwg_rolemanagement->fill_array_keys_with_true($user->roles);
                 }
                 $user->remove_role($role_name);
             }
         }
         $wp_roles->remove_role($role_name);
         header('Location: ' . $this->manage_roles_uri . '&role-deleted=true');
     }
 }
 public static function multiple_roles($user_id, $roles = false)
 {
     global $wpdb, $wp_roles, $current_user, $pagenow;
     $roles = $roles ? $roles : (isset($_POST['roles']) && isset($_POST['roles'][0]) ? $_POST['roles'][0] : false);
     if ($roles && current_user_can('edit_user', $current_user->ID)) {
         $editable_roles = get_editable_roles();
         $user = new WP_User($user_id);
         $user_roles = array_intersect(array_values($user->roles), array_keys($editable_roles));
         $_user_role_log = get_user_meta($user_id, $wpdb->prefix . 'capabilities_log', true);
         $user_role_log = $_user_role_log ? $_user_role_log : array();
         $roles = is_array($roles) ? $roles : array($roles);
         foreach ($roles as $role) {
             if (!in_array($role, $user_roles) && $wp_roles->is_role($role)) {
                 $user->add_role($role);
                 array_push($user_role_log, array('action' => 'add', 'role' => $role, 'timestamp' => time()));
             }
         }
         foreach ($user_roles as $role) {
             if (!in_array($role, $roles) && $wp_roles->is_role($role)) {
                 $user->remove_role($role);
                 array_push($user_role_log, array('action' => 'remove', 'role' => $role, 'timestamp' => time()));
             }
         }
         update_user_meta($user_id, $wpdb->prefix . 'capabilities_log', $user_role_log);
     }
 }
/**
 * Sets the user membership role and removes other membership roles.
 *
 * @since  1.0.0
 * @access public
 * @param  int     $user_id
 * @param  string  $role
 * @return void
 */
function role_map_edd_set_user_role($user_id, $role)
{
    $allowed = role_map_edd_get_membership_role_names();
    // If not an allowed role, bail.
    if (!isset($allowed[$role])) {
        return;
    }
    // Get the user object.
    $user = new WP_User($user_id);
    // If the user doesn't have the new role, add it.
    if (!in_array($role, (array) $user->roles)) {
        $user->add_role($role);
    }
    // Loop through the membership roles.
    foreach ($allowed as $allowed_role => $name) {
        // If the user has another membership role other than the purchased role, remove it.
        if ($role !== $allowed_role && in_array($allowed_role, (array) $user->roles)) {
            $user->remove_role($allowed_role);
        }
    }
}
function acui_import_users($file, $form_data, $attach_id = 0, $is_cron = false)
{
    ?>
	<div class="wrap">
		<h2>Importing users</h2>	
		<?php 
    set_time_limit(0);
    add_filter('send_password_change_email', '__return_false');
    global $wpdb;
    global $wp_users_fields;
    global $wp_min_fields;
    if (is_plugin_active('wp-access-areas/wp-access-areas.php')) {
        $wpaa_labels = WPAA_AccessArea::get_available_userlabels();
    }
    $buddypress_fields = array();
    if (is_plugin_active('buddypress/bp-loader.php')) {
        $profile_groups = BP_XProfile_Group::get(array('fetch_fields' => true));
        if (!empty($profile_groups)) {
            foreach ($profile_groups as $profile_group) {
                if (!empty($profile_group->fields)) {
                    foreach ($profile_group->fields as $field) {
                        $buddypress_fields[] = $field->name;
                    }
                }
            }
        }
    }
    $users_registered = array();
    $headers = array();
    $headers_filtered = array();
    $role = $form_data["role"];
    $empty_cell_action = $form_data["empty_cell_action"];
    if (empty($form_data["activate_users_wp_members"])) {
        $activate_users_wp_members = "no_activate";
    } else {
        $activate_users_wp_members = $form_data["activate_users_wp_members"];
    }
    if (empty($form_data["allow_multiple_accounts"])) {
        $allow_multiple_accounts = "not_allowed";
    } else {
        $allow_multiple_accounts = $form_data["allow_multiple_accounts"];
    }
    echo "<h3>Ready to registers</h3>";
    echo "<p>First row represents the form of sheet</p>";
    $row = 0;
    $positions = array();
    ini_set('auto_detect_line_endings', TRUE);
    $delimiter = acui_detect_delimiter($file);
    $manager = new SplFileObject($file);
    while ($data = $manager->fgetcsv($delimiter)) {
        if (empty($data[0])) {
            continue;
        }
        if (count($data) == 1) {
            $data = $data[0];
        }
        foreach ($data as $key => $value) {
            $data[$key] = trim($value);
        }
        for ($i = 0; $i < count($data); $i++) {
            $data[$i] = acui_string_conversion($data[$i]);
        }
        if ($row == 0) {
            // check min columns username - email
            if (count($data) < 2) {
                echo "<div id='message' class='error'>File must contain at least 2 columns: username and email</div>";
                break;
            }
            $i = 0;
            $password_position = false;
            foreach ($wp_users_fields as $wp_users_field) {
                $positions[$wp_users_field] = false;
            }
            foreach ($data as $element) {
                $headers[] = $element;
                if (in_array(strtolower($element), $wp_users_fields)) {
                    $positions[strtolower($element)] = $i;
                }
                if (!in_array(strtolower($element), $wp_users_fields) && !in_array($element, $wp_min_fields) && !in_array($element, $buddypress_fields)) {
                    $headers_filtered[] = $element;
                }
                $i++;
            }
            $columns = count($data);
            update_option("acui_columns", $headers_filtered);
            ?>
					<h3>Inserting and updating data</h3>
					<table>
						<tr><th>Row</th><?php 
            foreach ($headers as $element) {
                echo "<th>" . $element . "</th>";
            }
            ?>
</tr>
					<?php 
            $row++;
        } else {
            if (count($data) != $columns) {
                // if number of columns is not the same that columns in header
                echo '<script>alert("Row number: ' . $row . ' has no the same columns than header, we are going to skip");</script>';
                continue;
            }
            $username = $data[0];
            $email = $data[1];
            $user_id = 0;
            $problematic_row = false;
            $password_position = $positions["password"];
            $password = "";
            $created = true;
            if ($password_position === false) {
                $password = wp_generate_password();
            } else {
                $password = $data[$password_position];
            }
            if (username_exists($username)) {
                // if user exists, we take his ID by login, we will update his mail if it has changed
                $user_object = get_user_by("login", $username);
                $user_id = $user_object->ID;
                if (!empty($password)) {
                    wp_set_password($password, $user_id);
                }
                $updateEmailArgs = array('ID' => $user_id, 'user_email' => $email);
                wp_update_user($updateEmailArgs);
                $created = false;
            } elseif (email_exists($email) && $allow_multiple_accounts == "not_allowed") {
                // if the email is registered, we take the user from this and we don't allow repeated emails
                $user_object = get_user_by("email", $email);
                $user_id = $user_object->ID;
                $data[0] = "User already exists as: " . $user_object->user_login . "<br/>(in this CSV file is called: " . $username . ")";
                $problematic_row = true;
                if (!empty($password)) {
                    wp_set_password($password, $user_id);
                }
                $created = false;
            } elseif (email_exists($email) && $allow_multiple_accounts == "allowed") {
                // if the email is registered and repeated emails are allowed
                if (empty($password)) {
                    // if user not exist and password is empty but the column is set, it will be generated
                    $password = wp_generate_password();
                }
                $hacked_email = acui_hack_email($email);
                $user_id = wp_create_user($username, $password, $hacked_email);
                acui_hack_restore_remapped_email_address($user_id, $email);
            } else {
                if (empty($password)) {
                    // if user not exist and password is empty but the column is set, it will be generated
                    $password = wp_generate_password();
                }
                $user_id = wp_create_user($username, $password, $email);
            }
            if (is_wp_error($user_id)) {
                // in case the user is generating errors after this checks
                $error_string = $user_id->get_error_message();
                echo '<script>alert("Problems with user: '******', we are going to skip. \\r\\nError: ' . $error_string . '");</script>';
                continue;
            }
            $users_registered[] = $user_id;
            $user_object = new WP_User($user_id);
            if (!(in_array("administrator", acui_get_roles($user_id), FALSE) || is_multisite() && is_super_admin($user_id))) {
                $default_roles = $user_object->roles;
                foreach ($default_roles as $default_role) {
                    $user_object->remove_role($default_role);
                }
                if (is_array($role)) {
                    foreach ($role as $single_role) {
                        $user_object->add_role($single_role);
                    }
                } else {
                    $user_object->add_role($role);
                }
            }
            // WP Members activation
            if ($activate_users_wp_members == "activate") {
                update_user_meta($user_id, "active", true);
            }
            if ($columns > 2) {
                for ($i = 2; $i < $columns; $i++) {
                    if (!empty($data)) {
                        if (strtolower($headers[$i]) == "password") {
                            // passwords -> continue
                            continue;
                        } else {
                            if (in_array($headers[$i], $wp_users_fields)) {
                                // wp_user data
                                if (empty($data[$i]) && $empty_cell_action == "leave") {
                                    continue;
                                } else {
                                    wp_update_user(array('ID' => $user_id, $headers[$i] => $data[$i]));
                                }
                            } elseif (strtolower($headers[$i]) == "wp-access-areas" && is_plugin_active('wp-access-areas/wp-access-areas.php')) {
                                // wp-access-areas
                                $active_labels = array_map('trim', explode("#", $data[$i]));
                                foreach ($wpaa_labels as $wpa_label) {
                                    if (in_array($wpa_label->cap_title, $active_labels)) {
                                        acui_set_cap_for_user($wpa_label->capability, $user_object, true);
                                    } else {
                                        acui_set_cap_for_user($wpa_label->capability, $user_object, false);
                                    }
                                }
                            } elseif (in_array($headers[$i], $buddypress_fields)) {
                                // buddypress
                                xprofile_set_field_data($headers[$i], $user_id, $data[$i]);
                            } else {
                                // wp_usermeta data
                                if (empty($data[$i])) {
                                    if ($empty_cell_action == "delete") {
                                        delete_user_meta($user_id, $headers[$i]);
                                    } else {
                                        continue;
                                    }
                                } else {
                                    update_user_meta($user_id, $headers[$i], $data[$i]);
                                }
                            }
                        }
                    }
                }
            }
            $styles = "";
            if ($problematic_row) {
                $styles = "background-color:red; color:white;";
            }
            echo "<tr style='{$styles}' ><td>" . ($row - 1) . "</td>";
            foreach ($data as $element) {
                echo "<td>{$element}</td>";
            }
            echo "</tr>\n";
            flush();
            $mail_for_this_user = false;
            if ($created) {
                $mail_for_this_user = true;
            } else {
                if (!$is_cron && isset($form_data["send_email_updated"]) && $form_data["send_email_updated"]) {
                    $mail_for_this_user = true;
                } else {
                    if ($is_cron && get_option("acui_send_mail_cron")) {
                        $mail_for_this_user = true;
                    }
                }
            }
            // send mail
            if (isset($form_data["sends_email"]) && $form_data["sends_email"] && $mail_for_this_user) {
                $body_mail = get_option("acui_mail_body");
                $subject = get_option("acui_mail_subject");
                $body_mail = str_replace("**loginurl**", "<a href='" . home_url() . "/wp-login.php" . "'>" . home_url() . "/wp-login.php" . "</a>", $body_mail);
                $body_mail = str_replace("**username**", $username, $body_mail);
                if (empty($password) && !$created) {
                    $password = "******";
                }
                $body_mail = str_replace("**password**", $password, $body_mail);
                $body_mail = str_replace("**email**", $email, $body_mail);
                foreach ($wp_users_fields as $wp_users_field) {
                    if ($positions[$wp_users_field] != false && $wp_users_field != "password") {
                        $body_mail = str_replace("**" . $wp_users_field . "**", $data[$positions[$wp_users_field]], $body_mail);
                    }
                }
                for ($i = 0; $i < count($headers); $i++) {
                    $body_mail = str_replace("**" . $headers[$i] . "**", $data[$i], $body_mail);
                }
                add_filter('wp_mail_content_type', 'set_html_content_type');
                if (get_option("acui_settings") == "plugin") {
                    add_action('phpmailer_init', 'acui_mailer_init');
                    add_filter('wp_mail_from', 'acui_mail_from');
                    add_filter('wp_mail_from_name', 'acui_mail_from_name');
                    wp_mail($email, $subject, $body_mail);
                    remove_filter('wp_mail_from', 'acui_mail_from');
                    remove_filter('wp_mail_from_name', 'acui_mail_from_name');
                    remove_action('phpmailer_init', 'acui_mailer_init');
                } else {
                    wp_mail($email, $subject, $body_mail);
                }
                remove_filter('wp_mail_content_type', 'set_html_content_type');
            }
        }
        $row++;
    }
    if ($attach_id != 0) {
        wp_delete_attachment($attach_id);
    }
    // delete all users that have not been imported
    if ($is_cron && get_option("acui_cron_delete_users")) {
        $all_users = get_users(array('fields' => array('ID')));
        foreach ($all_users as $user) {
            if (!in_array($user->ID, $users_registered)) {
                wp_delete_user($user->ID);
            }
        }
    }
    ?>
			</table>
			<br/>
			<p>Process finished you can go <a href="<?php 
    echo get_admin_url() . '/users.php';
    ?>
">here to see results</a></p>
			<?php 
    ini_set('auto_detect_line_endings', FALSE);
    add_filter('send_password_change_email', '__return_true');
    ?>
	</div>
<?php 
}
 /**
  * @group groups_leave_group
  * @group group_membership
  */
 public function test_groups_leave_group_basic_leave_site_admin_initiated()
 {
     $old_current_user = get_current_user_id();
     $u1 = $this->factory->user->create();
     $u1_siteadmin = new WP_User($u1);
     $u1_siteadmin->add_role('administrator');
     $g = $this->factory->group->create(array('creator_id' => $u1));
     $u2 = $this->factory->user->create();
     $this->add_user_to_group($u2, $g);
     $before = groups_get_total_member_count($g);
     $this->set_current_user($u1);
     groups_leave_group($g, $u2);
     $after = groups_get_total_member_count($g);
     $this->assertEquals($before - 1, $after);
     $this->set_current_user($old_current_user);
 }
 /**
  * SyndicatedPost::author_id (): get the ID for an author name from
  * the feed. Create the author if necessary.
  *
  * @param string $unfamiliar_author
  *
  * @return NULL|int The numeric ID of the author to attribute the post to
  *	NULL if the post should be filtered out.
  */
 function author_id($unfamiliar_author = 'create')
 {
     global $wpdb;
     $a = $this->named['author'];
     $source = $this->source();
     $forbidden = apply_filters('feedwordpress_forbidden_author_names', array('admin', 'administrator', 'www', 'root'));
     // Prepare the list of candidates to try for author name: name from
     // feed, original source title (if any), immediate source title live
     // from feed, subscription title, prettied version of feed homepage URL,
     // prettied version of feed URL, or, failing all, use "unknown author"
     // as last resort
     $candidates = array();
     $candidates[] = $a['name'];
     if (!is_null($source)) {
         $candidates[] = $source['title'];
     }
     $candidates[] = $this->link->name(true);
     $candidates[] = $this->link->name(false);
     if (strlen($this->link->homepage()) > 0) {
         $candidates[] = feedwordpress_display_url($this->link->homepage());
     }
     $candidates[] = feedwordpress_display_url($this->link->uri());
     $candidates[] = 'unknown author';
     // Pick the first one that works from the list, screening against empty
     // or forbidden names.
     $author = NULL;
     while (is_null($author) and $candidate = each($candidates)) {
         if (!is_null($candidate['value']) and strlen(trim($candidate['value'])) > 0 and !in_array(strtolower(trim($candidate['value'])), $forbidden)) {
             $author = $candidate['value'];
         }
     }
     $email = isset($a['email']) ? $a['email'] : NULL;
     $authorUrl = isset($a['uri']) ? $a['uri'] : NULL;
     $hostUrl = $this->link->homepage();
     if (is_null($hostUrl) or strlen($hostUrl) < 0) {
         $hostUrl = $this->link->uri();
     }
     $match_author_by_email = !('yes' == get_option("feedwordpress_do_not_match_author_by_email"));
     if ($match_author_by_email and !FeedWordPress::is_null_email($email)) {
         $test_email = $email;
     } else {
         $test_email = NULL;
     }
     // Never can be too careful...
     $login = sanitize_user($author, true);
     // Possible for, e.g., foreign script author names
     if (strlen($login) < 1) {
         // No usable characters in author name for a login.
         // (Sometimes results from, e.g., foreign scripts.)
         //
         // We just need *something* in Western alphanumerics,
         // so let's try the domain name.
         //
         // Uniqueness will be guaranteed below if necessary.
         $url = parse_url($hostUrl);
         $login = sanitize_user($url['host'], true);
         if (strlen($login) < 1) {
             // This isn't working. Frak it.
             $login = '******';
         }
     }
     $login = apply_filters('pre_user_login', $login);
     $nice_author = sanitize_title($author);
     $nice_author = apply_filters('pre_user_nicename', $nice_author);
     $reg_author = esc_sql(preg_quote($author));
     $author = esc_sql($author);
     $email = esc_sql($email);
     $test_email = esc_sql($test_email);
     $authorUrl = esc_sql($authorUrl);
     // Check for an existing author rule....
     if (isset($this->link->settings['map authors']['name']['*'])) {
         $author_rule = $this->link->settings['map authors']['name']['*'];
     } elseif (isset($this->link->settings['map authors']['name'][strtolower(trim($author))])) {
         $author_rule = $this->link->settings['map authors']['name'][strtolower(trim($author))];
     } else {
         $author_rule = NULL;
     }
     // User name is mapped to a particular author. If that author ID exists, use it.
     if (is_numeric($author_rule) and get_userdata((int) $author_rule)) {
         $id = (int) $author_rule;
         // User name is filtered out
     } elseif ('filter' == $author_rule) {
         $id = NULL;
     } else {
         // Check the database for an existing author record that might fit
         // First try the user core data table.
         $id = $wpdb->get_var("SELECT ID FROM {$wpdb->users}\n\t\t\tWHERE TRIM(LCASE(display_name)) = TRIM(LCASE('{$author}'))\n\t\t\tOR TRIM(LCASE(user_login)) = TRIM(LCASE('{$author}'))\n\t\t\tOR (\n\t\t\t\tLENGTH(TRIM(LCASE(user_email))) > 0\n\t\t\t\tAND TRIM(LCASE(user_email)) = TRIM(LCASE('{$test_email}'))\n\t\t\t)");
         // If that fails, look for aliases in the user meta data table
         if (is_null($id)) {
             $id = $wpdb->get_var("SELECT user_id FROM {$wpdb->usermeta}\n\t\t\t\tWHERE\n\t\t\t\t\t(meta_key = 'description' AND TRIM(LCASE(meta_value)) = TRIM(LCASE('{$author}')))\n\t\t\t\t\tOR (\n\t\t\t\t\t\tmeta_key = 'description'\n\t\t\t\t\t\tAND TRIM(LCASE(meta_value))\n\t\t\t\t\t\tRLIKE CONCAT(\n\t\t\t\t\t\t\t'(^|\\n)a\\.?k\\.?a\\.?( |\\t)*:?( |\\t)*',\n\t\t\t\t\t\t\tTRIM(LCASE('{$reg_author}')),\n\t\t\t\t\t\t\t'( |\\t|\\r)*(\\n|\$)'\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t");
         }
         // ... if you don't find one, then do what you need to do
         if (is_null($id)) {
             if ($unfamiliar_author === 'create') {
                 $userdata = array();
                 // WordPress 3 is going to pitch a fit if we attempt to register
                 // more than one user account with an empty e-mail address, so we
                 // need *something* here. Ugh.
                 if (strlen($email) == 0 or FeedWordPress::is_null_email($email)) {
                     $url = parse_url($hostUrl);
                     $email = $nice_author . '@' . $url['host'];
                 }
                 #-- user table data
                 $userdata['ID'] = NULL;
                 // new user
                 $userdata['user_login'] = $login;
                 $userdata['user_nicename'] = $nice_author;
                 $userdata['user_pass'] = substr(md5(uniqid(microtime())), 0, 6);
                 // just something random to lock it up
                 $userdata['user_email'] = $email;
                 $userdata['user_url'] = $authorUrl;
                 $userdata['nickname'] = $author;
                 $parts = preg_split('/\\s+/', trim($author), 2);
                 if (isset($parts[0])) {
                     $userdata['first_name'] = $parts[0];
                 }
                 if (isset($parts[1])) {
                     $userdata['last_name'] = $parts[1];
                 }
                 $userdata['display_name'] = $author;
                 $userdata['role'] = 'contributor';
                 do {
                     // Keep trying until you get it right. Or until PHP crashes, I guess.
                     $id = wp_insert_user($userdata);
                     if (is_wp_error($id)) {
                         $codes = $id->get_error_code();
                         switch ($codes) {
                             case 'empty_user_login':
                             case 'existing_user_login':
                                 // Add a random disambiguator
                                 $userdata['user_login'] .= substr(md5(uniqid(microtime())), 0, 6);
                                 break;
                             case 'existing_user_email':
                                 // No disassemble!
                                 $parts = explode('@', $userdata['user_email'], 2);
                                 // Add a random disambiguator as a gmail-style username extension
                                 $parts[0] .= '+' . substr(md5(uniqid(microtime())), 0, 6);
                                 // Reassemble
                                 $userdata['user_email'] = $parts[0] . '@' . $parts[1];
                                 break;
                         }
                     }
                 } while (is_wp_error($id));
             } elseif (is_numeric($unfamiliar_author) and get_userdata((int) $unfamiliar_author)) {
                 $id = (int) $unfamiliar_author;
             } elseif ($unfamiliar_author === 'default') {
                 $id = 1;
             }
         }
     }
     if ($id) {
         $this->link->settings['map authors']['name'][strtolower(trim($author))] = $id;
         // Multisite: Check whether the author has been recorded
         // on *this* blog before. If not, put her down as a
         // Contributor for *this* blog.
         $user = new WP_User((int) $id);
         if (empty($user->roles)) {
             $user->add_role('contributor');
         }
     }
     return $id;
 }
Example #30
0
/**
 * Patch user info to make DJs authors too.
 */
function river_profile_update($user_id)
{
    $user = new WP_User($user_id);
    if (in_array("dj", $user->roles)) {
        $user->add_role("author");
    }
}