PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.10.4
GiveWP – Donation Plugin and Fundraising Platform v2.10.4
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 5 years ago Exceptions 5 years ago Factories 5 years ago Helpers 5 years ago Pipeline 5 years ago Repositories 5 years ago Routes 5 years ago Tabs 5 years ago resources 5 years ago App.php 5 years ago Block.php 5 years ago Helpers.php 5 years ago Profile.php 5 years ago RequestHandler.php 5 years ago ServiceProvider.php 5 years ago Shortcode.php 5 years ago
Profile.php
169 lines
1 <?php
2
3 namespace Give\DonorDashboards;
4
5 use Give\DonorDashboards\Factories\DonorFactory;
6 use Give\DonorDashboards\Pipeline\DonorProfilePipeline;
7 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorName;
8 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorCompany;
9 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorAvatar;
10 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorEmails;
11 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorAddresses;
12 use Give\DonorDashboards\Pipeline\Stages\UpdateDonorAnonymousGiving;
13
14 use Give\DonorDashboards\Helpers as DonorDashboardHelpers;
15
16 /**
17 * @since 2.10.0
18 */
19 class Profile {
20
21 protected $donor;
22 protected $id;
23
24 public function __construct() {
25 $donorId = DonorDashboardHelpers::getCurrentDonorId();
26 if ( $donorId ) {
27 $donorFactory = new DonorFactory;
28 $this->donor = $donorFactory->make( $donorId );
29 }
30 }
31
32 /**
33 * Handles updating relevant profile fields in donor database and meta database
34 *
35 * @param object $data Object representing profile data to update
36 *
37 * @return array
38 *
39 * @since 2.10.0
40 */
41 public function update( $data ) {
42
43 $pipeline = ( new DonorProfilePipeline )
44 ->pipe( new UpdateDonorName )
45 ->pipe( new UpdateDonorCompany )
46 ->pipe( new UpdateDonorAvatar )
47 ->pipe( new UpdateDonorEmails )
48 ->pipe( new UpdateDonorAddresses )
49 ->pipe( new UpdateDonorAnonymousGiving );
50
51 $pipeline->process(
52 [
53 'data' => $data,
54 'donor' => $this->donor,
55 ]
56 );
57
58 // Return updated donor profile data
59 return $this->getProfileData();
60
61 }
62
63 /**
64 * Return array of donor profile data
65 *
66 * @since 2.10.0
67 *
68 * @return array
69 */
70 public function getProfileData() {
71
72 if ( ! $this->donor ) {
73 return null;
74 }
75
76 $titlePrefix = Give()->donor_meta->get_meta( $this->donor->id, '_give_donor_title_prefix', true );
77
78 return [
79 'name' => give_get_donor_name_with_title_prefixes( $titlePrefix, $this->donor->name ),
80 'firstName' => $this->donor->get_first_name(),
81 'lastName' => $this->donor->get_last_name(),
82 'emails' => $this->donor->emails,
83 'sinceLastDonation' => ! empty( $this->donor->get_last_donation_date() ) ? human_time_diff( strtotime( $this->donor->get_last_donation_date() ) ) : '',
84 'avatarUrl' => $this->getAvatarUrl(),
85 'avatarId' => $this->getAvatarId(),
86 'sinceCreated' => human_time_diff( strtotime( $this->donor->date_created ) ),
87 'company' => $this->donor->get_company_name(),
88 'initials' => $this->donor->get_donor_initals(),
89 'titlePrefix' => $this->getTitlePrefix(),
90 'addresses' => $this->donor->address,
91 'isAnonymous' => $this->donor->get_meta( '_give_anonymous_donor', true ) !== '0' ? '1' : '0',
92 ];
93 }
94
95 /**
96 * Returns profile model's donor id
97 *
98 * @return int
99 *
100 * @since 2.10.0
101 */
102 public function getId() {
103
104 if ( ! $this->donor ) {
105 return null;
106 }
107
108 return $this->donor->id;
109 }
110
111 /**
112 * Returns donor's title prefix
113 * *
114 * @return string
115 *
116 * @since 2.10.0
117 */
118 public function getTitlePrefix() {
119 return Give()->donor_meta->get_meta( $this->donor->id, '_give_donor_title_prefix', true );
120 }
121
122 /**
123 * Returns profile's avatar URL
124 * *
125 * @return string
126 *
127 * @since 2.10.0
128 */
129 public function getAvatarUrl() {
130 $avatarId = $this->getAvatarId();
131 if ( $avatarId ) {
132 return wp_get_attachment_url( $avatarId );
133 } else {
134 return give_validate_gravatar( $this->donor->email ) ? get_avatar_url( $this->donor->email, [ 'size' => 140 ] ) : null;
135 }
136 }
137
138 /**
139 * Returns profile's avatar media ID
140 * *
141 * @return int
142 *
143 * @since 2.10.0
144 */
145 public function getAvatarId() {
146 return $this->donor->get_meta( '_give_donor_avatar_id' );
147 }
148
149 /**
150 * Returns profile's stored country, or global default if none is set
151 * *
152 * @return string
153 *
154 * @since 2.10.0
155 */
156 public function getCountry() {
157 if ( ! $this->donor ) {
158 return give_get_country();
159 }
160
161 $address = $this->donor->get_donor_address();
162 if ( $address ) {
163 return $address['country'];
164 } else {
165 return give_get_country();
166 }
167 }
168 }
169