Migrating to WP coding standards
Always call single_active() with true from activate_new_site()

The network_activate variable was undefined because it's not passed to wpmu_new_blog callbacks, and we can infer that the plugin was network-activated because it's being automatically activated when a new site is created.
Remove reference to W3 Total Cache instance

In PHP5, objects are automatically returned by reference.
Assign wpps variable to GLOBALS

This allows it to be accessed from other plugins.
Echo error instead of throwing exception

The exception can't be caught because it's a callback, so we need a different way to handle any errors.