PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.23.2
GiveWP – Donation Plugin and Fundraising Platform v2.23.2
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonorDashboards / Profile.php
give / src / DonorDashboards Last commit date
Admin 4 years ago Exceptions 4 years ago Factories 4 years ago Helpers 4 years ago Pipeline 4 years ago Repositories 3 years ago Routes 4 years ago Tabs 3 years ago resources 3 years ago App.php 4 years ago Block.php 3 years ago Helpers.php 4 years ago Profile.php 4 years ago RequestHandler.php 4 years ago ServiceProvider.php 4 years ago Shortcode.php 4 years ago
Profile.php
177 lines
1 <?php
2
3 namespace Give\DonorDashboards;
4
5 use Give\DonorDashboards\Factories\DonorFactory;
6 use Give\DonorDashboards\Helpers as DonorDashboardHelpers;
7 use Give\DonorDashboards\Pipeline\DonorProfilePipeline;
8 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorAddresses;
9 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorAnonymousGiving;
10 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorAvatar;
11 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorCompany;
12 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorEmails;
13 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorName;
14
15 /**
16 * @since 2.10.0
17 */
18 class Profile
19 {
20
21 protected $donor;
22 protected $id;
23
24 public function __construct()
25 {
26 $donorId = DonorDashboardHelpers::getCurrentDonorId();
27 if ($donorId) {
28 $donorFactory = new DonorFactory;
29 $this->donor = $donorFactory->make($donorId);
30 }
31 }
32
33 /**
34 * Handles updating relevant profile fields in donor database and meta database
35 *
36 * @since 2.10.0
37 *
38 * @param object $data Object representing profile data to update
39 *
40 * @return array
41 *
42 */
43 public function update($data)
44 {
45 $pipeline = (new DonorProfilePipeline)
46 ->pipe(new UpdateDonorName)
47 ->pipe(new UpdateDonorCompany)
48 ->pipe(new UpdateDonorAvatar)
49 ->pipe(new UpdateDonorEmails)
50 ->pipe(new UpdateDonorAddresses)
51 ->pipe(new UpdateDonorAnonymousGiving);
52
53 $pipeline->process(
54 [
55 'data' => $data,
56 'donor' => $this->donor,
57 ]
58 );
59
60 // Return updated donor profile data
61 return $this->getProfileData();
62 }
63
64 /**
65 * Return array of donor profile data
66 *
67 * @since 2.10.0
68 *
69 * @return array
70 */
71 public function getProfileData()
72 {
73 if ( ! $this->donor) {
74 return null;
75 }
76
77 $titlePrefix = Give()->donor_meta->get_meta($this->donor->id, '_give_donor_title_prefix', true);
78
79 return [
80 'name' => give_get_donor_name_with_title_prefixes($titlePrefix, $this->donor->name),
81 'firstName' => $this->donor->get_first_name(),
82 'lastName' => $this->donor->get_last_name(),
83 'emails' => $this->donor->emails,
84 'sinceLastDonation' => ! empty($this->donor->get_last_donation_date()) ? human_time_diff(
85 strtotime($this->donor->get_last_donation_date())
86 ) : '',
87 'avatarUrl' => $this->getAvatarUrl(),
88 'avatarId' => $this->getAvatarId(),
89 'sinceCreated' => human_time_diff(strtotime($this->donor->date_created)),
90 'company' => $this->donor->get_company_name(),
91 'initials' => $this->donor->get_donor_initals(),
92 'titlePrefix' => $this->getTitlePrefix(),
93 'addresses' => $this->donor->address,
94 'isAnonymous' => $this->donor->get_meta('_give_anonymous_donor', true) !== '0' ? '1' : '0',
95 ];
96 }
97
98 /**
99 * Returns profile model's donor id
100 *
101 * @since 2.10.0
102 * @return int
103 *
104 */
105 public function getId()
106 {
107 if ( ! $this->donor) {
108 return null;
109 }
110
111 return $this->donor->id;
112 }
113
114 /**
115 * Returns donor's title prefix
116 * *
117 * @since 2.10.0
118 * @return string
119 *
120 */
121 public function getTitlePrefix()
122 {
123 return Give()->donor_meta->get_meta($this->donor->id, '_give_donor_title_prefix', true);
124 }
125
126 /**
127 * Returns profile's avatar URL
128 * *
129 * @since 2.10.0
130 * @return string
131 *
132 */
133 public function getAvatarUrl()
134 {
135 $avatarId = $this->getAvatarId();
136 if ($avatarId) {
137 return wp_get_attachment_url($avatarId);
138 } else {
139 return give_validate_gravatar($this->donor->email) ? get_avatar_url($this->donor->email, ['size' => 140]
140 ) : null;
141 }
142 }
143
144 /**
145 * Returns profile's avatar media ID
146 * *
147 * @since 2.10.0
148 * @return int
149 *
150 */
151 public function getAvatarId()
152 {
153 return $this->donor->get_meta('_give_donor_avatar_id');
154 }
155
156 /**
157 * Returns profile's stored country, or global default if none is set
158 * *
159 * @since 2.10.0
160 * @return string
161 *
162 */
163 public function getCountry()
164 {
165 if ( ! $this->donor) {
166 return give_get_country();
167 }
168
169 $address = $this->donor->get_donor_address();
170 if ($address) {
171 return $address['country'];
172 } else {
173 return give_get_country();
174 }
175 }
176 }
177