PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.4.2
Jetpack – WP Security, Backup, Speed, & Growth v12.4.2
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 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 / modules / masterbar / profile-edit / class-wpcom-user-profile-fields-revert.php
jetpack / modules / masterbar / profile-edit Last commit date
bootstrap.php 5 years ago class-wpcom-user-profile-fields-revert.php 5 years ago profile-edit.php 5 years ago
class-wpcom-user-profile-fields-revert.php
170 lines
1 <?php
2 /**
3 * Manage User profile fields.
4 *
5 * @package automattic/jetpack
6 */
7
8 namespace Automattic\Jetpack\Dashboard_Customizations;
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 class WPCOM_User_Profile_Fields_Revert {
18
19 /**
20 * Jetpack connection manager object.
21 *
22 * @var Connection_Manager
23 */
24 private $connection_manager;
25
26 /**
27 * Profile_Edit_Filter_Fields constructor.
28 *
29 * @param Connection_Manager $connection_manager The connection manager.
30 */
31 public function __construct( Connection_Manager $connection_manager ) {
32 $this->connection_manager = $connection_manager;
33
34 \add_filter( 'wp_pre_insert_user_data', array( $this, 'revert_user_data_on_wp_admin_profile_update' ), 10, 3 );
35 \add_filter( 'insert_user_meta', array( $this, 'revert_user_meta_on_wp_admin_profile_change' ), 10, 3 );
36
37 /**
38 * Core sends two E-mail notifications that have to be disabled:
39 * - To the existing e-mail address
40 * - To the new email address
41 */
42 \add_filter( 'send_email_change_email', array( $this, 'disable_send_email_change_email' ), 10, 3 );
43 \add_action( 'personal_options_update', array( $this, 'disable_email_notification' ), 1, 1 );
44 }
45
46 /**
47 * Filter the built-in user profile fields.
48 *
49 * @param array $data {
50 * Values and keys for the user.
51 *
52 * @type string $user_login The user's login. Only included if $update == false
53 * @type string $user_pass The user's password.
54 * @type string $user_email The user's email.
55 * @type string $user_url The user's url.
56 * @type string $user_nicename The user's nice name. Defaults to a URL-safe version of user's login
57 * @type string $display_name The user's display name.
58 * @type string $user_registered MySQL timestamp describing the moment when the user registered. Defaults to
59 * the current UTC timestamp.
60 * }
61 *
62 * @param bool $update Whether the user is being updated rather than created.
63 * @param int|null $id ID of the user to be updated, or NULL if the user is being created.
64 *
65 * @return array
66 */
67 public function revert_user_data_on_wp_admin_profile_update( $data, $update, $id ) {
68
69 // bail if the id is null, meaning that this was triggered in the context of user create.
70 // bail if the user is not connected (e.g. non-WP.com users or disconnected users).
71 if ( ! $update || null === $id || ! $this->connection_manager->is_user_connected( $id ) ) {
72 return $data;
73 }
74
75 /**
76 * Revert the data in the form submission with the data from the database.
77 */
78 $user = \get_userdata( $id );
79
80 /**
81 * 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.
82 * Based on this, it displays in the UI a section mentioning the e-mail pending change.
83 * We hide the entire section, but we should also clean it up just in case.
84 */
85 \delete_user_meta( $id, '_new_email' );
86
87 $data['user_email'] = $user->user_email;
88 $data['user_url'] = $user->user_url;
89 $data['user_nicename'] = $user->user_nicename;
90 $data['display_name'] = $user->display_name;
91
92 return $data;
93 }
94
95 /**
96 * Revert the first_name, last_name and description since this is managed by WP.com.
97 *
98 * @param array $meta {
99 * Default meta values and keys for the user.
100 *
101 * @type string $nickname The user's nickname. Default is the user's username.
102 * @type string $first_name The user's first name.
103 * @type string $last_name The user's last name.
104 * @type string $description The user's description.
105 * @type string $rich_editing Whether to enable the rich-editor for the user. Default 'true'.
106 * @type string $syntax_highlighting Whether to enable the rich code editor for the user. Default 'true'.
107 * @type string $comment_shortcuts Whether to enable keyboard shortcuts for the user. Default 'false'.
108 * @type string $admin_color The color scheme for a user's admin screen. Default 'fresh'.
109 * @type int|bool $use_ssl Whether to force SSL on the user's admin area. 0|false if SSL
110 * is not forced.
111 * @type string $show_admin_bar_front Whether to show the admin bar on the front end for the user.
112 * Default 'true'.
113 * @type string $locale User's locale. Default empty.
114 * }
115 * @param \WP_User $user User object.
116 * @param bool $update Whether the user is being updated rather than created.
117 *
118 * @return array
119 */
120 public function revert_user_meta_on_wp_admin_profile_change( $meta, $user, $update ) {
121
122 // bail if not in update context.
123 if ( ! $update || ! $this->connection_manager->is_user_connected( $user->ID ) ) {
124 return $meta;
125 }
126
127 /**
128 * Revert the data in the form submission with the data from the database.
129 */
130 $database_user = \get_userdata( $user->ID );
131
132 $meta['first_name'] = $database_user->first_name;
133 $meta['last_name'] = $database_user->last_name;
134 $meta['description'] = $database_user->description;
135 $meta['nickname'] = $database_user->nickname;
136
137 return $meta;
138 }
139
140 /**
141 * Disable the e-mail notification.
142 *
143 * @param bool $send Whether to send or not the email.
144 * @param array $user User data.
145 */
146 public function disable_send_email_change_email( $send, $user ) {
147 if ( ! isset( $user['ID'] ) || ! $this->connection_manager->is_user_connected( $user['ID'] ) ) {
148 return $send;
149 }
150
151 return false;
152 }
153
154 /**
155 * 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).
156 *
157 * We need this because WP.org uses a custom flow for E-mail changes.
158 *
159 * @param int $user_id The id of the user that's updated.
160 */
161 public function disable_email_notification( $user_id ) {
162 // Don't remove the notification for non-WP.com connected users.
163 if ( ! $this->connection_manager->is_user_connected( $user_id ) ) {
164 return;
165 }
166
167 \remove_action( 'personal_options_update', 'send_confirmation_on_profile_email' );
168 }
169 }
170