@@ -79,7 +79,7 @@ public static function register_connector( $registry ) {
7979 public static function enqueue_script_module () {
8080 $ screen = get_current_screen ();
8181
82- if ( ! $ screen || ' options-connectors ' !== $ screen-> id ) {
82+ if ( ! $ screen || ! static :: is_connectors_screen ( $ screen ) ) {
8383 return ;
8484 }
8585
@@ -162,46 +162,22 @@ private static function get_current_user_data( $manager ) {
162162 return null ;
163163 }
164164
165- $ user = get_userdata ( $ user_id );
166- $ wpcom_user_data = $ manager ->get_connected_user_data ( $ user_id );
165+ $ user = get_userdata ( $ user_id );
166+ $ user_info = static ::resolve_user_fields ( $ user , $ manager ->get_connected_user_data ( $ user_id ) );
167+ $ is_owner = $ manager ->is_connection_owner ( $ user_id );
167168
168- $ display_name = $ user ? $ user ->display_name : '' ;
169- $ login = $ user ? $ user ->user_login : '' ;
170- $ email = $ user ? $ user ->user_email : '' ;
171-
172- if ( is_array ( $ wpcom_user_data ) ) {
173- if ( ! empty ( $ wpcom_user_data ['display_name ' ] ) ) {
174- $ display_name = $ wpcom_user_data ['display_name ' ];
175- }
176- if ( ! empty ( $ wpcom_user_data ['login ' ] ) ) {
177- $ login = $ wpcom_user_data ['login ' ];
178- }
179- if ( ! empty ( $ wpcom_user_data ['email ' ] ) ) {
180- $ email = $ wpcom_user_data ['email ' ];
181- }
182- }
183-
184- $ is_owner = $ manager ->is_connection_owner ( $ user_id );
185169 $ has_other_connected_users = false ;
186-
187170 if ( $ is_owner ) {
188171 $ connected_users = $ manager ->get_connected_users ( 'any ' , 2 );
189172 $ has_other_connected_users = count ( $ connected_users ) > 1 ;
190173 }
191174
192- return array (
193- 'displayName ' => $ display_name ,
194- 'login ' => $ login ,
195- 'email ' => $ email ,
196- 'isOwner ' => $ is_owner ,
197- 'hasOtherConnectedUsers ' => $ has_other_connected_users ,
198- 'avatar ' => get_avatar_url (
199- $ user_id ,
200- array (
201- 'size ' => 48 ,
202- 'default ' => 'mysteryman ' ,
203- )
204- ),
175+ return array_merge (
176+ $ user_info ,
177+ array (
178+ 'isOwner ' => $ is_owner ,
179+ 'hasOtherConnectedUsers ' => $ has_other_connected_users ,
180+ )
205181 );
206182 }
207183
@@ -218,10 +194,27 @@ private static function get_connection_owner_data( $manager ) {
218194 return null ;
219195 }
220196
221- $ wpcom_user_data = $ manager ->get_connected_user_data ( $ owner ->ID );
197+ $ fields = static :: resolve_user_fields ( $ owner , $ manager ->get_connected_user_data ( $ owner ->ID ) );
222198
223- $ display_name = $ owner ->display_name ;
224- $ login = $ owner ->user_login ;
199+ $ fields ['localLogin ' ] = $ owner ->user_login ;
200+
201+ return $ fields ;
202+ }
203+
204+ /**
205+ * Merge local WP user fields with WordPress.com user data.
206+ *
207+ * WPCOM values take precedence when available. Returns the common
208+ * user shape used by both currentUser and connectionOwner.
209+ *
210+ * @param \WP_User|false $wp_user Local WordPress user object (false if unavailable).
211+ * @param array|false $wpcom_user_data WPCOM user data from the connection manager.
212+ * @return array User data with displayName, login, email, and avatar.
213+ */
214+ private static function resolve_user_fields ( $ wp_user , $ wpcom_user_data ) {
215+ $ display_name = $ wp_user ? $ wp_user ->display_name : '' ;
216+ $ login = $ wp_user ? $ wp_user ->user_login : '' ;
217+ $ email = $ wp_user ? $ wp_user ->user_email : '' ;
225218
226219 if ( is_array ( $ wpcom_user_data ) ) {
227220 if ( ! empty ( $ wpcom_user_data ['display_name ' ] ) ) {
@@ -230,21 +223,43 @@ private static function get_connection_owner_data( $manager ) {
230223 if ( ! empty ( $ wpcom_user_data ['login ' ] ) ) {
231224 $ login = $ wpcom_user_data ['login ' ];
232225 }
226+ if ( ! empty ( $ wpcom_user_data ['email ' ] ) ) {
227+ $ email = $ wpcom_user_data ['email ' ];
228+ }
233229 }
234230
231+ $ user_id = $ wp_user ? $ wp_user ->ID : 0 ;
232+
235233 return array (
236234 'displayName ' => $ display_name ,
237235 'login ' => $ login ,
238- 'avatar ' => get_avatar_url (
239- $ owner ->ID ,
240- array (
241- 'size ' => 48 ,
242- 'default ' => 'mysteryman ' ,
236+ 'email ' => $ email ,
237+ 'avatar ' => $ user_id
238+ ? get_avatar_url (
239+ $ user_id ,
240+ array (
241+ 'size ' => 48 ,
242+ 'default ' => 'mysteryman ' ,
243+ )
243244 )
244- ) ,
245+ : '' ,
245246 );
246247 }
247248
249+ /**
250+ * Check whether the given screen is the Connectors settings page.
251+ *
252+ * Handles both WP 7.0 core (`options-connectors`) and the Gutenberg
253+ * plugin (`settings_page_options-connectors-wp-admin`).
254+ *
255+ * @param \WP_Screen $screen Current admin screen.
256+ * @return bool
257+ */
258+ private static function is_connectors_screen ( $ screen ) {
259+ return 'options-connectors ' === $ screen ->id
260+ || 'settings_page_options-connectors-wp-admin ' === $ screen ->id ;
261+ }
262+
248263 /**
249264 * Return the admin-relative path for the Connectors page.
250265 *
@@ -292,7 +307,7 @@ private static function get_connected_plugins_data( $manager ) {
292307 $ result = array ();
293308
294309 foreach ( $ plugins as $ slug => $ plugin_data ) {
295- $ name = isset ( $ plugin_data ['name ' ] ) ? $ plugin_data [ ' name ' ] : $ slug ;
310+ $ name = $ plugin_data ['name ' ] ?? $ slug ;
296311
297312 $ entry = array (
298313 'name ' => $ name ,
0 commit comments