PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta.3
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta.3
16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / jetpack_vendor / automattic / jetpack-masterbar / src / profile-edit / class-wpcom-user-profile-fields-revert.php
jetpack / jetpack_vendor / automattic / jetpack-masterbar / src / profile-edit Last commit date
bootstrap.php 9 months ago class-wpcom-user-profile-fields-revert.php 9 months ago profile-edit.php 2 months ago
class-wpcom-user-profile-fields-revert.php
172 lines
1 <?php
2 /**
3 * Manage User profile fields.
4 *
5 * @package automattic/jetpack-masterbar
6 */
7
8 namespace Automattic\Jetpack\Masterbar;
9
10 use Automattic\Jetpack\Connection\Manager as Connection_Manager;
11
12 /**
13 * Responsible with preventing the back-end default implementation to save the fields that are managed on WP.com profiles.
14 *
15 * Class Profile_Edit_Filter_Fields
16 *
17 * @phan-constructor-used-for-side-effects
18 */
19 class WPCOM_User_Profile_Fields_Revert {
20
21 /**
22 * Jetpack connection manager object.
23 *
24 * @var Connection_Manager
25 */
26 private $connection_manager;
27
28 /**
29 * Profile_Edit_Filter_Fields constructor.
30 *
31 * @param Connection_Manager $connection_manager The connection manager.
32 */
33 public function __construct( Connection_Manager $connection_manager ) {
34 $this->connection_manager = $connection_manager;
35
36 \add_filter( 'wp_pre_insert_user_data', array( $this, 'revert_user_data_on_wp_admin_profile_update' ), 10, 3 );
37 \add_filter( 'insert_user_meta', array( $this, 'revert_user_meta_on_wp_admin_profile_change' ), 10, 3 );
38
39 /**
40 * Core sends two E-mail notifications that have to be disabled:
41 * - To the existing e-mail address
42 * - To the new email address
43 */
44 \add_filter( 'send_email_change_email', array( $this, 'disable_send_email_change_email' ), 10, 3 );
45 \add_action( 'personal_options_update', array( $this, 'disable_email_notification' ), 1, 1 );
46 }
47
48 /**
49 * Filter the built-in user profile fields.
50 *
51 * @param array $data {
52 * Values and keys for the user.
53 *
54 * @type string $user_login The user's login. Only included if $update == false
55 * @type string $user_pass The user's password.
56 * @type string $user_email The user's email.
57 * @type string $user_url The user's url.
58 * @type string $user_nicename The user's nice name. Defaults to a URL-safe version of user's login
59 * @type string $display_name The user's display name.
60 * @type string $user_registered MySQL timestamp describing the moment when the user registered. Defaults to
61 * the current UTC timestamp.
62 * }
63 *
64 * @param bool $update Whether the user is being updated rather than created.
65 * @param int|null $id ID of the user to be updated, or NULL if the user is being created.
66 *
67 * @return array
68 */
69 public function revert_user_data_on_wp_admin_profile_update( $data, $update, $id ) {
70
71 // bail if the id is null, meaning that this was triggered in the context of user create.
72 // bail if the user is not connected (e.g. non-WP.com users or disconnected users).
73 if ( ! $update || null === $id || ! $this->connection_manager->is_user_connected( $id ) ) {
74 return $data;
75 }
76
77 /**
78 * Revert the data in the form submission with the data from the database.
79 */
80 $user = \get_userdata( $id );
81
82 /**
83 * E-mail has a different flow for changing it's value. It stores it in an option until the user confirms it via e-mail.
84 * Based on this, it displays in the UI a section mentioning the e-mail pending change.
85 * We hide the entire section, but we should also clean it up just in case.
86 */
87 \delete_user_meta( $id, '_new_email' );
88
89 $data['user_email'] = $user->user_email;
90 $data['user_url'] = $user->user_url;
91 $data['user_nicename'] = $user->user_nicename;
92 $data['display_name'] = $user->display_name;
93
94 return $data;
95 }
96
97 /**
98 * Revert the first_name, last_name and description since this is managed by WP.com.
99 *
100 * @param array $meta {
101 * Default meta values and keys for the user.
102 *
103 * @type string $nickname The user's nickname. Default is the user's username.
104 * @type string $first_name The user's first name.
105 * @type string $last_name The user's last name.
106 * @type string $description The user's description.
107 * @type string $rich_editing Whether to enable the rich-editor for the user. Default 'true'.
108 * @type string $syntax_highlighting Whether to enable the rich code editor for the user. Default 'true'.
109 * @type string $comment_shortcuts Whether to enable keyboard shortcuts for the user. Default 'false'.
110 * @type string $admin_color The color scheme for a user's admin screen. Default 'fresh'.
111 * @type int|bool $use_ssl Whether to force SSL on the user's admin area. 0|false if SSL
112 * is not forced.
113 * @type string $show_admin_bar_front Whether to show the admin bar on the front end for the user.
114 * Default 'true'.
115 * @type string $locale User's locale. Default empty.
116 * }
117 * @param \WP_User $user User object.
118 * @param bool $update Whether the user is being updated rather than created.
119 *
120 * @return array
121 */
122 public function revert_user_meta_on_wp_admin_profile_change( $meta, $user, $update ) {
123
124 // bail if not in update context.
125 if ( ! $update || ! $this->connection_manager->is_user_connected( $user->ID ) ) {
126 return $meta;
127 }
128
129 /**
130 * Revert the data in the form submission with the data from the database.
131 */
132 $database_user = \get_userdata( $user->ID );
133
134 $meta['first_name'] = $database_user->first_name;
135 $meta['last_name'] = $database_user->last_name;
136 $meta['description'] = $database_user->description;
137 $meta['nickname'] = $database_user->nickname;
138
139 return $meta;
140 }
141
142 /**
143 * Disable the e-mail notification.
144 *
145 * @param bool $send Whether to send or not the email.
146 * @param array $user User data.
147 */
148 public function disable_send_email_change_email( $send, $user ) {
149 if ( ! isset( $user['ID'] ) || ! $this->connection_manager->is_user_connected( $user['ID'] ) ) {
150 return $send;
151 }
152
153 return false;
154 }
155
156 /**
157 * Disable notification on E-mail changes for Atomic WP-Admin Edit Profile. (for WP.com we use a different section for changing the E-mail).
158 *
159 * We need this because WP.org uses a custom flow for E-mail changes.
160 *
161 * @param int $user_id The id of the user that's updated.
162 */
163 public function disable_email_notification( $user_id ) {
164 // Don't remove the notification for non-WP.com connected users.
165 if ( ! $this->connection_manager->is_user_connected( $user_id ) ) {
166 return;
167 }
168
169 \remove_action( 'personal_options_update', 'send_confirmation_on_profile_email' );
170 }
171 }
172