From 2a2050d7fb4cfc050e02093afec25a35b0f76df9 Mon Sep 17 00:00:00 2001 From: thuijssoon Date: Sat, 15 Jun 2013 21:50:31 +0700 Subject: [PATCH 1/2] Update class-plugin-name.php Added multisite activation/deactivation functionality. --- plugin-name/class-plugin-name.php | 91 ++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 2 deletions(-) diff --git a/plugin-name/class-plugin-name.php b/plugin-name/class-plugin-name.php index eba8267..63ab0bf 100644 --- a/plugin-name/class-plugin-name.php +++ b/plugin-name/class-plugin-name.php @@ -67,6 +67,9 @@ class PluginName { // Load plugin text domain add_action( 'init', array( $this, 'load_plugin_textdomain' ) ); + + // Activate plugin when new blog is added + add_action( 'wpmu_new_blog', array( $this, 'activate_new_site' ) ); // Add the options page and menu item. // add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) ); @@ -110,7 +113,22 @@ class PluginName { * @param boolean $network_wide True if WPMU superadmin uses "Network Activate" action, false if WPMU is disabled or plugin is activated on an individual blog. */ public static function activate( $network_wide ) { - // TODO: Define activation functionality here + if ( function_exists( 'is_multisite' ) && is_multisite() ) { + if ( $network_wide ) { + // Get all blog ids + $blog_ids = self::get_blog_ids(); + + foreach ( $blog_ids as $blog_id ) { + switch_to_blog( $blog_id ); + self::single_activate(); + } + restore_current_blog(); + } else { + self::single_activate(); + } + } else { + self::single_activate(); + } } /** @@ -121,6 +139,75 @@ class PluginName { * @param boolean $network_wide True if WPMU superadmin uses "Network Deactivate" action, false if WPMU is disabled or plugin is deactivated on an individual blog. */ public static function deactivate( $network_wide ) { + if ( function_exists( 'is_multisite' ) && is_multisite() ) { + if ( $network_wide ) { + // Get all blog ids + $blog_ids = self::get_blog_ids(); + + foreach ( $blog_ids as $blog_id ) { + switch_to_blog( $blog_id ); + self::single_deactivate(); + } + restore_current_blog(); + } else { + self::single_deactivate(); + } + } else { + self::single_deactivate(); + } + } + + /** + * Fired when a new site is activated with a WPMU environment. + * + * @since 1.0.0 + * + * @param int $blog_id ID of the new blog. + */ + public function activate_new_site( $blog_id ) { + if ( did_action( 'wpmu_new_blog' ) !== 1 ) + return; + + switch_to_blog( $blog_id ); + self::single_activate(); + restore_current_blog(); + } + + /** + * Get all blog ids of blogs in the current network that are: + * - not archived + * - not spam + * - not deleted + * + * @since 1.0.0 + * + * @return array|false The blog ids, false if no matches. + */ + private static function get_blog_ids() { + global $wpdb; + + // get an array of blog ids + $sql = "SELECT blog_id FROM $wpdb->blogs + WHERE archived = '0' AND spam = '0' + AND deleted = '0'"; + return $wpdb->get_col( $sql ); + } + + /** + * Fired for each blog when the plugin is activated. + * + * @since 1.0.0 + */ + private static function single_activate() { + // TODO: Define activation functionality here + } + + /** + * Fired for each blog when the plugin is deactivated. + * + * @since 1.0.0 + */ + private static function single_deactivate() { // TODO: Define deactivation functionality here } @@ -255,4 +342,4 @@ class PluginName { // TODO: Define your filter hook callback here } -} \ No newline at end of file +} From 772e1365a5663575e835e7d5ed716b6cf990f717 Mon Sep 17 00:00:00 2001 From: thuijssoon Date: Fri, 23 Aug 2013 06:59:43 +0200 Subject: [PATCH 2/2] Update activate_new_site did_action to become Yoda condition --- plugin-name/class-plugin-name.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin-name/class-plugin-name.php b/plugin-name/class-plugin-name.php index 63ab0bf..edae8ba 100644 --- a/plugin-name/class-plugin-name.php +++ b/plugin-name/class-plugin-name.php @@ -165,7 +165,7 @@ class PluginName { * @param int $blog_id ID of the new blog. */ public function activate_new_site( $blog_id ) { - if ( did_action( 'wpmu_new_blog' ) !== 1 ) + if ( 1 !== did_action( 'wpmu_new_blog' ) ) return; switch_to_blog( $blog_id );