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