PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.31
Booking for Appointments and Events Calendar – Amelia v1.2.31
2.4.9 2.4.8 2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Infrastructure / WP / UserService / CreateWPUser.php
ameliabooking / src / Infrastructure / WP / UserService Last commit date
CreateWPUser.php 1 year ago UserAvatar.php 7 years ago UserService.php 1 year ago
CreateWPUser.php
100 lines
1 <?php
2
3 namespace AmeliaBooking\Infrastructure\WP\UserService;
4
5 use WP_Error;
6
7 /**
8 * Class CreateWPUser
9 *
10 * @package AmeliaBooking\Infrastructure\WP\UserService
11 */
12 class CreateWPUser
13 {
14 /**
15 * @param string $email
16 * @param string $firstName
17 * @param string $lastName
18 * @param string|null $role
19 *
20 * @return mixed
21 */
22 public function create($email, $firstName, $lastName, $role = null)
23 {
24 if (username_exists($email)) {
25 $user = get_user_by('login', $email);
26 if ($user) {
27 $user->add_role($role);
28 return $user->ID;
29 }
30 return null;
31 } elseif (email_exists($email)) {
32 $user = get_user_by('email', $email);
33 if ($user) {
34 $user->add_role($role);
35 return $user->ID;
36 }
37 return null;
38 }
39
40 $userId = wp_create_user($email, wp_generate_password(), $email);
41
42 wp_update_user(
43 [
44 'ID' => $userId,
45 'first_name' => $firstName,
46 'last_name' => $lastName,
47 ]
48 );
49
50 if ($userId instanceof WP_Error) {
51 return null;
52 }
53
54 $this->setRole($role, $userId);
55
56 wp_new_user_notification($userId, null, 'user');
57
58 return (int)$userId;
59 }
60
61 /**
62 * @param int $id
63 * @param string|null $role
64 *
65 * @return mixed
66 */
67 public function update($id, $role = null)
68 {
69 $this->addRole($role, $id);
70 }
71
72 /**
73 * @param string $role
74 * @param int $userId
75 */
76 private function setRole($role, $userId)
77 {
78 if ($role) {
79 $user = new \WP_User($userId);
80 if (get_role($role)) {
81 $user->set_role($role);
82 }
83 }
84 }
85
86 /**
87 * @param string $role
88 * @param int $userId
89 */
90 private function addRole($role, $userId)
91 {
92 if ($role) {
93 $user = new \WP_User($userId);
94 if (get_role($role)) {
95 $user->add_role($role);
96 }
97 }
98 }
99 }
100