# give/4.17.0/src/Donors/Actions/CreateUserFromDonor.php

GiveWP – Donation Plugin and Fundraising Platform, version 4.17.0. 45 lines.

- Page: https://pluginprobe.com/plugins/give/4.17.0/code/src/Donors/Actions/CreateUserFromDonor.php
- Raw: https://pluginprobe.com/plugins/give/4.17.0/raw/src/Donors/Actions/CreateUserFromDonor.php
- Modified: 2023-12-06T20:03:58+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/give/4.17.0/code/src/Donors/Actions/CreateUserFromDonor.php#L10-L20`.

```php
<?php

namespace Give\Donors\Actions;

use Give\Donors\Exceptions\FailedDonorUserCreationException;
use Give\Donors\Models\Donor;

/**
 * @since 3.2.0
 */
class CreateUserFromDonor
{
    public function __invoke(Donor $donor): Donor
    {
        $userIdOrError = wp_insert_user(apply_filters(
            'givewp_create_donor_new_user',
            [
                'user_login'      => $donor->email,
                'user_pass'       => wp_generate_password(),
                'user_email'      => $donor->email,
                'first_name'      => $donor->firstName,
                'last_name'       => $donor->lastName,
                'role'            => give_get_option( 'donor_default_user_role', 'give_donor' ),
            ],
            $donor
        ));

        if(!is_wp_error($userIdOrError)) {
            $donor->userId = $userIdOrError;
        } else {
            throw new FailedDonorUserCreationException(
                $donor,
                0,
                new \Exception($userIdOrError->get_error_message())
            );
        }

        do_action('givewp_donor_user_created', $donor);

        $donor->save();

        return $donor;
    }
}

```
