Index: plugin.php
===================================================================
--- plugin.php	(revision 6603)
+++ plugin.php	(working copy)
@@ -99,10 +99,13 @@
 				wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); // we'll override this later if the plugin can be included without fatal error
 			ob_start();
 			@include(ABSPATH . PLUGINDIR . '/' . $plugin);
-			$current[] = $plugin;
-			sort($current);
-			update_option('active_plugins', $current);
-			do_action('activate_' . $plugin);
+			$can_activate = apply_filters( 'before_activate_' . $plugin, true );
+			if( $can_activate ) {
+				$current[] = $plugin;
+				sort($current);
+				update_option('active_plugins', $current);
+				do_action('activate_' . $plugin);
+			}
 			ob_end_clean();
 		}
 
