4, 'default' => 3 ) ); echo ''; } public function plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data, $status ) { if( $plugin_file === plugin_basename( __FILE__ ) ) { $plugin_meta[] = sprintf( '%s', esc_url( 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=L4BFVU5HDJH8S' ), __( 'Donate' ) ); } return $plugin_meta; } /** * Plugin Deactivation * * Note: Support WordPress 4.6+ only * * @param bool $network_wide * * @return void */ public static function deactivation( $network_wide = false ) { if ( self::_check_admin_referer() ) { if ( is_multisite() ) { if ( function_exists( 'get_networks' ) && function_exists( 'get_sites' ) ) { $users = array(); $number_network = 100; $offset_network = 0; // For performace limit query to 100 results while ( is_int( $number_network ) ) { $network_ids = get_networks( array( 'fields' => 'ids', 'number' => $number_network, 'offset' => $offset_network, ) ); if ( count( $network_ids ) ) { foreach ( $network_ids as $network_id ) { $number_sites = 100; $offset_sites = 0; // For performace limit query to 100 results while ( is_int( $number_sites ) ) { $sites = get_sites( array( 'network_id' => $network_id, 'fields' => 'ids', 'number' => $number_network, 'offset' => $offset_network, ) ); if ( count( $sites ) ) { foreach ( $sites as $site_id ) { $users = self::_deactivation( $site_id, $users ); } $offset_sites = $number_sites; $number_sites = ( $number_sites + $number_sites ); } else { $number_sites = false; } } } $offset_network = $number_network; $number_network = ( $number_network + $number_network ); } else { $number_network = false; } } } } else { self::_deactivation(); } } } /** * Delete User meta * * @param int $site_id Current site id (DB = blog_id ) * @param array $users User to exclude * * @return array */ private static function _deactivation( $site_id = null, $users = array() ) { if ( function_exists( 'get_users' ) ) { $meta = array( 'screen_layout_dashboard', 'meta-box-order_dashboard' ); if ( is_multisite() ) $meta = array_merge( array( 'screen_layout_dashboard', 'meta-box-order_dashboard' ), $meta ); foreach ( $meta as $meta_key ) { $number = 100; $offset = 0; // For performace limit query to 100 results while ( is_int( $number ) ) { $site_users = get_users( array( 'blog_id' => $site_id, 'exclude' => $users, 'meta_key' => $meta_key, 'fields' => 'ids', 'number' => $number, 'offset' => $offset, ) ); if ( count( $site_users ) ) { foreach ( $site_users as $user_id ) { delete_user_meta( $user_id, $meta_key ); $users[] = $user_id; } $offset = $number; $number = ( $number + $number ); } else { $number = false; } } } } return $users; } /** * Custom Check Admin Referer for check plugin * * Support single or multiple actions * * @return bool */ private static function _check_admin_referer() { if ( current_user_can( 'activate_plugins' ) ) { global $action; switch ( (string) $action ) { case 'deactivate': if ( isset( $_REQUEST['plugin'] ) ) $referer = "{$action}-plugin_{$_REQUEST['plugin']}"; break; case 'deactivate-selected': $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array(); if ( in_array( plugin_basename( __FILE__ ), $plugins ) ) $referer = 'bulk-plugins'; break; } } if ( isset( $referer ) ) { check_admin_referer( $referer ); return true; } return false; } } register_deactivation_hook( __FILE__, 'Add_Dashboard_Columns::deactivation' ); add_action( 'admin_init', 'Add_Dashboard_Columns::instance' );