PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.4.2
Jetpack – WP Security, Backup, Speed, & Growth v14.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 / class.jetpack-network-sites-list-table.php
jetpack Last commit date
3rd-party 1 year ago _inc 1 year ago css 1 year ago extensions 1 year ago images 1 year ago jetpack_vendor 16 hours ago json-endpoints 1 year ago modules 1 year ago sal 1 year ago src 1 year ago vendor 1 year ago views 2 years ago CHANGELOG.md 1 year ago LICENSE.txt 5 years ago SECURITY.md 2 years ago class-jetpack-connection-status.php 2 years ago class-jetpack-gallery-settings.php 3 years ago class-jetpack-newsletter-dashboard-widget.php 1 year ago class-jetpack-pre-connection-jitms.php 2 years ago class-jetpack-stats-dashboard-widget.php 1 year ago class-jetpack-xmlrpc-methods.php 1 year ago class.frame-nonce-preview.php 1 year ago class.jetpack-admin.php 1 year ago class.jetpack-affiliate.php 2 years ago class.jetpack-autoupdate.php 2 years ago class.jetpack-bbpress-json-api.compat.php 2 years ago class.jetpack-cli.php 1 year ago class.jetpack-client-server.php 2 years ago class.jetpack-gutenberg.php 1 year ago class.jetpack-heartbeat.php 2 years ago class.jetpack-modules-list-table.php 2 years ago class.jetpack-network-sites-list-table.php 2 years ago class.jetpack-network.php 1 year ago class.jetpack-plan.php 3 years ago class.jetpack-post-images.php 1 year ago class.jetpack-twitter-cards.php 2 years ago class.jetpack-user-agent.php 2 years ago class.jetpack.php 1 year ago class.json-api-endpoints.php 1 year ago class.json-api.php 1 year ago class.photon.php 3 years ago composer.json 1 year ago enhanced-open-graph.php 3 years ago functions.compat.php 2 years ago functions.cookies.php 2 years ago functions.global.php 1 year ago functions.is-mobile.php 2 years ago functions.opengraph.php 1 year ago functions.photon.php 2 years ago global.d.ts 2 years ago jetpack.php 16 hours ago json-api-config.php 3 years ago json-endpoints.php 2 years ago load-jetpack.php 2 years ago locales.php 4 years ago readme.txt 16 hours ago uninstall.php 1 year ago wpml-config.xml 4 years ago
class.jetpack-network-sites-list-table.php
212 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Jetpack network sites list table.
4 *
5 * @package automattic/jetpack
6 */
7
8 if ( ! class_exists( 'WP_List_Table' ) ) {
9 require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
10 }
11
12 /**
13 * Jetpack network sites list table.
14 */
15 class Jetpack_Network_Sites_List_Table extends WP_List_Table {
16
17 /**
18 * Get columns.
19 *
20 * @return array name => header HTML.
21 */
22 public function get_columns() {
23 // site name, status, username connected under.
24 $columns = array(
25 'cb' => '<input type="checkbox" />',
26 'blogname' => __( 'Site Name', 'jetpack' ),
27 'blog_path' => __( 'Path', 'jetpack' ),
28 'connected' => __( 'Connected', 'jetpack' ),
29 );
30
31 return $columns;
32 }
33
34 /**
35 * Prepare items.
36 */
37 public function prepare_items() {
38 // Make sure Jetpack_Network is initialized.
39 Jetpack_Network::init();
40
41 // Deal with bulk actions if any were requested by the user.
42 $this->process_bulk_action();
43
44 $sites = get_sites(
45 array(
46 'site__not_in' => array( get_current_blog_id() ),
47 'archived' => false,
48 'number' => 0,
49 'network_id' => get_current_network_id(),
50 )
51 );
52
53 // Setup pagination.
54 $per_page = 25;
55 $current_page = $this->get_pagenum();
56 $total_items = is_countable( $sites ) ? count( $sites ) : 0;
57 $sites = array_slice( $sites, ( ( $current_page - 1 ) * $per_page ), $per_page );
58 $this->set_pagination_args(
59 array(
60 'total_items' => $total_items,
61 'per_page' => $per_page,
62 )
63 );
64
65 $columns = $this->get_columns();
66 $hidden = array();
67 $sortable = array();
68 $this->_column_headers = array( $columns, $hidden, $sortable );
69 $this->items = $sites;
70 }
71
72 /**
73 * Column blogname.
74 *
75 * @param object|array $item Item.
76 * @return string HTML.
77 */
78 public function column_blogname( $item ) {
79 // <http://jpms/wp-admin/network/site-info.php?id=1>.
80 switch_to_blog( $item->blog_id );
81 $jp_url = admin_url( 'admin.php?page=jetpack' );
82 restore_current_blog();
83
84 $actions = array(
85 'edit' => '<a href="' . esc_url( network_admin_url( 'site-info.php?id=' . $item->blog_id ) ) . '">' . esc_html__( 'Edit', 'jetpack' ) . '</a>',
86 'dashboard' => '<a href="' . esc_url( get_admin_url( $item->blog_id, '', 'admin' ) ) . '">' . esc_html__( 'Dashboard', 'jetpack' ) . '</a>',
87 'view' => '<a href="' . esc_url( get_site_url( $item->blog_id, '', 'admin' ) ) . '">' . esc_html__( 'View', 'jetpack' ) . '</a>',
88 'jetpack-' . $item->blog_id => '<a href="' . esc_url( $jp_url ) . '">Jetpack</a>',
89 );
90
91 return sprintf( '%1$s %2$s', '<strong>' . get_blog_option( $item->blog_id, 'blogname' ) . '</strong>', $this->row_actions( $actions ) );
92 }
93
94 /**
95 * Column blog path.
96 *
97 * @param object|array $item Item.
98 * @return string HTML.
99 */
100 public function column_blog_path( $item ) {
101 return '<a href="' .
102 get_site_url( $item->blog_id, '', 'admin' ) .
103 '">' .
104 str_replace( array( 'http://', 'https://' ), '', get_site_url( $item->blog_id, '', 'admin' ) ) .
105 '</a>';
106 }
107
108 /**
109 * Column connected.
110 *
111 * @param object|array $item Item.
112 * @return string HTML.
113 */
114 public function column_connected( $item ) {
115 $jpms = Jetpack_Network::init();
116 $jp = Jetpack::init();
117
118 switch_to_blog( $item->blog_id );
119
120 // Checks for both the stock version of Jetpack and the one managed by the Jetpack Beta Plugin.
121 if ( ! is_plugin_active( 'jetpack/jetpack.php' ) && ! is_plugin_active( 'jetpack-dev/jetpack.php' ) && ! array_key_exists( 'jetpack.php', get_mu_plugins() ) ) {
122 $title = __( 'Jetpack is not active on this site.', 'jetpack' );
123 $action = array(
124 'manage-plugins' => '<a href="' . get_admin_url( $item->blog_id, 'plugins.php', 'admin' ) . '">' . __( 'Manage Plugins', 'jetpack' ) . '</a>',
125 );
126 restore_current_blog();
127 return sprintf( '%1$s %2$s', $title, $this->row_actions( $action ) );
128 }
129
130 if ( $jp->is_connection_ready() ) {
131 // Build url for disconnecting.
132 $url = $jpms->get_url(
133 array(
134 'name' => 'subsitedisconnect',
135 'site_id' => $item->blog_id,
136
137 )
138 );
139 restore_current_blog();
140 return '<a href="' . wp_nonce_url( $url, 'jetpack-subsite-disconnect' ) . '">' . esc_html__( 'Disconnect', 'jetpack' ) . '</a>';
141 }
142 restore_current_blog();
143
144 // Build URL for connecting.
145 $url = $jpms->get_url(
146 array(
147 'name' => 'subsiteregister',
148 'site_id' => $item->blog_id,
149 )
150 );
151 return '<a href="' . wp_nonce_url( $url, 'jetpack-subsite-register' ) . '">' . esc_html__( 'Connect', 'jetpack' ) . '</a>';
152 }
153
154 /**
155 * Get bulk actions.
156 *
157 * @return array Code => HTML.
158 */
159 public function get_bulk_actions() {
160 $actions = array(
161 'connect' => esc_html__( 'Connect', 'jetpack' ),
162 'disconnect' => esc_html__( 'Disconnect', 'jetpack' ),
163 );
164
165 return $actions;
166 }
167
168 /**
169 * Column checkbox.
170 *
171 * @param object|array $item Item.
172 * @return string HTML.
173 */
174 public function column_cb( $item ) {
175 return sprintf(
176 '<input type="checkbox" name="bulk[]" value="%s" />',
177 $item->blog_id
178 );
179 }
180
181 /**
182 * Process bulk actions.
183 */
184 public function process_bulk_action() {
185 // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Check if we have anything to do before checking the nonce.
186 if ( empty( $_POST['bulk'] ) ) {
187 return; // Thou shall not pass! There is nothing to do.
188 }
189
190 check_admin_referer( 'bulk-toplevel_page_jetpack-network' );
191
192 $jpms = Jetpack_Network::init();
193
194 $action = $this->current_action();
195 switch ( $action ) {
196
197 case 'connect':
198 $bulk = wp_unslash( $_POST['bulk'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
199 foreach ( $bulk as $site ) {
200 $jpms->do_subsiteregister( $site );
201 }
202 break;
203 case 'disconnect':
204 $bulk = wp_unslash( $_POST['bulk'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
205 foreach ( $bulk as $site ) {
206 $jpms->do_subsitedisconnect( $site );
207 }
208 break;
209 }
210 }
211 } // end h
212