PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.20
Booking for Appointments and Events Calendar – Amelia v1.2.20
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 3 years ago UserAvatar.php 7 years ago UserService.php 1 year ago
CreateWPUser.php
96 lines
1 <?php
2
3 namespace AmeliaBooking\Infrastructure\WP\UserService;
4
5 /**
6 * Class CreateWPUser
7 *
8 * @package AmeliaBooking\Infrastructure\WP\UserService
9 */
10 class CreateWPUser
11 {
12 /**
13 * @param string $email
14 * @param string $firstName
15 * @param string $lastName
16 * @param string|null $role
17 *
18 * @return mixed
19 */
20 public function create($email, $firstName, $lastName, $role = null)
21 {
22 if (username_exists($email)) {
23 $user = get_user_by('login', $email);
24 if ($user) {
25 $user->add_role($role);
26 return $user->ID;
27 }
28 return null;
29 } else if (email_exists($email)) {
30 $user = get_user_by('email', $email);
31 if ($user) {
32 $user->add_role($role);
33 return $user->ID;
34 }
35 return null;
36 }
37
38 $userId = wp_create_user($email, wp_generate_password(), $email);
39
40 wp_update_user([
41 'ID' => $userId,
42 'first_name' => $firstName,
43 'last_name' => $lastName,
44 ]);
45
46 if ($userId instanceof WP_Error) {
47 return null;
48 }
49
50 $this->setRole($role, $userId);
51
52 wp_new_user_notification($userId, null, 'user');
53
54 return (int)$userId;
55 }
56
57 /**
58 * @param int $id
59 * @param string|null $role
60 *
61 * @return mixed
62 */
63 public function update($id, $role = null)
64 {
65 $this->addRole($role, $id);
66 }
67
68 /**
69 * @param string $role
70 * @param int $userId
71 */
72 private function setRole($role, $userId)
73 {
74 if ($role) {
75 $user = new \WP_User($userId);
76 if (get_role($role)) {
77 $user->set_role($role);
78 }
79 }
80 }
81
82 /**
83 * @param string $role
84 * @param int $userId
85 */
86 private function addRole($role, $userId)
87 {
88 if ($role) {
89 $user = new \WP_User($userId);
90 if (get_role($role)) {
91 $user->add_role($role);
92 }
93 }
94 }
95 }
96