PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.9-a.7
Jetpack – WP Security, Backup, Speed, & Growth v15.9-a.7
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 week ago _inc 2 days ago css 2 weeks ago extensions 2 days ago images 1 month ago jetpack_vendor 2 days ago json-endpoints 1 week ago modules 2 days ago sal 1 week ago src 2 days ago vendor 2 days ago views 1 month ago CHANGELOG.md 2 days ago LICENSE.txt 5 months ago SECURITY.md 2 days ago class-jetpack-connection-status.php 2 years ago class-jetpack-gallery-settings.php 6 months ago class-jetpack-newsletter-dashboard-widget.php 6 months ago class-jetpack-pre-connection-jitms.php 2 years ago class-jetpack-stats-dashboard-widget.php 3 months ago class-jetpack-xmlrpc-methods.php 1 week ago class.frame-nonce-preview.php 6 months ago class.jetpack-admin.php 2 days ago class.jetpack-autoupdate.php 6 months ago class.jetpack-cli.php 2 days ago class.jetpack-client-server.php 2 years ago class.jetpack-gutenberg.php 1 week ago class.jetpack-heartbeat.php 3 months ago class.jetpack-modules-list-table.php 6 months ago class.jetpack-network-sites-list-table.php 6 months ago class.jetpack-network.php 1 month ago class.jetpack-plan.php 2 years ago class.jetpack-post-images.php 2 months ago class.jetpack-twitter-cards.php 3 months ago class.jetpack-user-agent.php 2 years ago class.jetpack.php 2 days ago class.json-api-endpoints.php 1 week ago class.json-api.php 2 weeks ago class.photon.php 3 years ago composer.json 2 days ago enhanced-open-graph.php 1 week ago functions.compat.php 3 months ago functions.cookies.php 2 years ago functions.global.php 2 days ago functions.is-mobile.php 2 years ago functions.opengraph.php 2 months ago functions.photon.php 2 years ago jetpack.php 2 days ago json-api-config.php 3 years ago json-endpoints.php 2 years ago load-jetpack.php 1 week ago locales.php 6 months ago readme.txt 2 days ago unauth-file-upload.php 6 months ago uninstall.php 6 months ago wpml-config.xml 3 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