PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.2-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.2-a.1
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-connection / src / class-users-connection-admin.php
jetpack / jetpack_vendor / automattic / jetpack-connection / src Last commit date
abilities 2 days ago connectors 2 days ago health 2 days ago identity-crisis 1 month ago sso 1 month ago traits 8 months ago webhooks 8 months ago class-authorize-json-api.php 1 month ago class-client.php 2 days ago class-connection-assets.php 1 year ago class-connection-notice.php 8 months ago class-error-handler.php 2 days ago class-external-storage.php 4 months ago class-heartbeat.php 1 month ago class-initial-state.php 3 weeks ago class-manager.php 2 days ago class-nonce-handler.php 8 months ago class-package-version-tracker.php 1 month ago class-package-version.php 2 days ago class-partner-coupon.php 2 months ago class-partner.php 2 years ago class-plugin-storage.php 8 months ago class-plugin.php 8 months ago class-rest-authentication.php 2 days ago class-rest-connector.php 2 days ago class-secrets.php 8 months ago class-server-sandbox.php 2 months ago class-site-health.php 2 days ago class-terms-of-service.php 2 days ago class-tokens-locks.php 8 months ago class-tokens.php 2 days ago class-tracking.php 2 days ago class-urls.php 6 months ago class-user-account-status.php 2 days ago class-users-connection-admin.php 2 months ago class-utils.php 2 years ago class-webhooks.php 1 month ago class-xmlrpc-async-call.php 2 years ago class-xmlrpc-connector.php 8 months ago interface-manager.php 4 years ago interface-storage-provider.php 6 months ago
class-users-connection-admin.php
219 lines
1 <?php
2 /**
3 * Handles the WordPress.com account column in the users list table.
4 *
5 * @package automattic/jetpack-connection
6 */
7
8 namespace Automattic\Jetpack\Connection;
9
10 use Automattic\Jetpack\Assets;
11 use Automattic\Jetpack\Status\Host;
12
13 /**
14 * Class Users_Connection_Admin
15 */
16 class Users_Connection_Admin {
17 /**
18 * The column ID used for the WordPress.com account column.
19 *
20 * @var string
21 */
22 const COLUMN_ID = 'user_jetpack';
23
24 /**
25 * Constructor.
26 */
27 public function __construct() {
28 // Only set up hooks if we're in the admin area and user has proper permissions
29 add_action( 'init', array( $this, 'init' ) );
30 }
31
32 /**
33 * Initialize the admin functionality if conditions are met.
34 */
35 public function init() {
36 if ( ! is_admin() || ! current_user_can( 'manage_options' ) || ( new Host() )->is_wpcom_simple() ) {
37 return;
38 }
39
40 add_filter( 'manage_users_columns', array( $this, 'add_connection_column' ) );
41 add_filter( 'manage_users_custom_column', array( $this, 'render_connection_column' ), 9, 3 ); // Priority 9 to run before SSO
42 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
43 add_action( 'admin_print_styles-users.php', array( $this, 'add_connection_column_styles' ) );
44 }
45
46 /**
47 * Add the connection column to the users list table.
48 *
49 * @param array $columns The current columns.
50 * @return array Modified columns.
51 */
52 public function add_connection_column( $columns ) {
53 $columns[ self::COLUMN_ID ] = sprintf(
54 '<span class="jetpack-connection-tooltip-icon" role="tooltip" tabindex="0" aria-label="%2$s: %1$s">
55 %1$s
56 <span class="jetpack-connection-tooltip"></span>
57 </span>',
58 esc_html__( 'WordPress.com account', 'jetpack-connection' ),
59 esc_attr__( 'Tooltip', 'jetpack-connection' )
60 );
61 return $columns;
62 }
63
64 /**
65 * Render the connection column content.
66 *
67 * @param string $output Custom column output.
68 * @param string $column_name Column name.
69 * @param int $user_id ID of the currently-listed user.
70 * @return string
71 */
72 public function render_connection_column( $output, $column_name, $user_id ) {
73 if ( self::COLUMN_ID !== $column_name ) {
74 return $output;
75 }
76
77 if ( ( new Manager() )->is_user_connected( $user_id ) ) {
78 $logo_url = Jetpack_Connector::get_inline_connector_logo_url();
79
80 return sprintf(
81 '<span title="%1$s" class="jetpack-connection-status"><img src="%2$s" alt="" class="jetpack-connection-status__logo" height="18" decoding="async" loading="lazy" />%3$s</span>',
82 esc_attr__( 'This user has connected their WordPress.com account.', 'jetpack-connection' ),
83 esc_url( $logo_url ),
84 esc_html__( 'Connected', 'jetpack-connection' )
85 );
86 }
87
88 return $output;
89 }
90
91 /**
92 * Enqueue scripts and styles.
93 *
94 * @param string $hook The current admin page.
95 */
96 public function enqueue_scripts( $hook ) {
97 if ( 'users.php' !== $hook ) {
98 return;
99 }
100
101 Assets::register_script(
102 'jetpack-users-connection',
103 '../dist/jetpack-users-connection.js',
104 __FILE__,
105 array(
106 'strategy' => 'defer',
107 'in_footer' => true,
108 'enqueue' => true,
109 'version' => Package_Version::PACKAGE_VERSION,
110 'deps' => array( 'wp-i18n' ),
111
112 )
113 );
114
115 wp_localize_script(
116 'jetpack-users-connection',
117 'jetpackConnectionTooltips',
118 array(
119 'columnTooltip' => esc_html( self::get_column_tooltip_text() ),
120 )
121 );
122 }
123
124 /**
125 * Add styles for the connection column.
126 */
127 public function add_connection_column_styles() {
128 ?>
129 <style>
130 .jetpack-connection-tooltip-icon {
131 position: relative;
132 cursor: pointer;
133 }
134 /* Add [?] icon using pseudo-element, only in column header */
135 th.manage-column .jetpack-connection-tooltip-icon::after {
136 content: '[?]';
137 color: #3c434a;
138 font-size: 1em;
139 margin-left: 4px;
140 }
141 .jetpack-connection-tooltip {
142 position: absolute;
143 background: #f6f7f7;
144 top: -85px;
145 width: 250px;
146 padding: 7px;
147 color: #3c434a;
148 font-size: .75rem;
149 line-height: 17px;
150 text-align: left;
151 margin: 0;
152 display: none;
153 border-radius: 4px;
154 font-family: sans-serif;
155 box-shadow: 5px 10px 10px rgba(0, 0, 0, 0.1);
156 left: -170px;
157 }
158 .column-user_jetpack {
159 width: 190px;
160 }
161 @media screen and (max-width: 1100px) {
162 .column-user_jetpack {
163 width: auto;
164 }
165 }
166 td.column-user_jetpack {
167 vertical-align: middle;
168 }
169 .jetpack-connection-status {
170 display: inline-flex;
171 align-items: center;
172 column-gap: 6px;
173 }
174 .jetpack-connection-status__logo {
175 display: block;
176 flex-shrink: 0;
177 }
178 /* Show tooltip on hover and focus */
179 .jetpack-connection-tooltip-icon:hover .jetpack-connection-tooltip,
180 .jetpack-connection-tooltip-icon:focus-within .jetpack-connection-tooltip {
181 display: block;
182 }
183 </style>
184 <?php
185 }
186
187 /**
188 * Build the column header tooltip text based on which plugin families use the connection.
189 *
190 * @return string Tooltip text.
191 */
192 private static function get_column_tooltip_text() {
193 $families = Jetpack_Connector::get_connected_plugin_families();
194
195 if ( $families['has_woo'] && $families['has_a4a'] ) {
196 return __( 'Connecting a WordPress.com account unlocks features for Jetpack, WooCommerce, and Automattic for Agencies including secure logins.', 'jetpack-connection' );
197 }
198
199 if ( $families['has_woo'] ) {
200 return __( 'Connecting a WordPress.com account unlocks features for Jetpack and WooCommerce including secure logins.', 'jetpack-connection' );
201 }
202
203 if ( $families['has_a4a'] ) {
204 return __( 'Connecting a WordPress.com account unlocks features for Jetpack and Automattic for Agencies including secure logins.', 'jetpack-connection' );
205 }
206
207 return __( 'Connecting a WordPress.com account unlocks Jetpack features including secure logins.', 'jetpack-connection' );
208 }
209
210 /**
211 * Get the column ID. Allows other classes to reference the same column.
212 *
213 * @return string
214 */
215 public static function get_column_id() {
216 return self::COLUMN_ID;
217 }
218 }
219