PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.3.2
Jetpack – WP Security, Backup, Speed, & Growth v13.3.2
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 2 years ago _inc 2 years ago css 2 years ago extensions 2 years ago images 2 years ago jetpack_vendor 1 year ago json-endpoints 2 years ago modules 2 years ago sal 2 years ago src 2 years ago vendor 2 years ago views 3 years ago CHANGELOG.md 2 years 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-pre-connection-jitms.php 2 years ago class-jetpack-stats-dashboard-widget.php 2 years ago class-jetpack-xmlrpc-methods.php 2 years ago class.frame-nonce-preview.php 4 years ago class.jetpack-admin.php 2 years 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 2 years ago class.jetpack-client-server.php 2 years ago class.jetpack-gutenberg.php 2 years 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 2 years ago class.jetpack-plan.php 2 years ago class.jetpack-post-images.php 2 years ago class.jetpack-twitter-cards.php 2 years ago class.jetpack-user-agent.php 2 years ago class.jetpack.php 2 years ago class.json-api-endpoints.php 2 years ago class.json-api.php 2 years ago class.photon.php 3 years ago composer.json 2 years ago enhanced-open-graph.php 3 years ago functions.compat.php 2 years ago functions.cookies.php 2 years ago functions.global.php 2 years ago functions.is-mobile.php 2 years ago functions.opengraph.php 2 years ago functions.photon.php 2 years ago jetpack.php 1 year 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 1 year ago uninstall.php 2 years ago wpml-config.xml 3 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