environment = WPPlugin::determine_environment(); $this->options_name = $options_name; $this->options = WPPlugin::retrieve_options($this->options_name); } // sub-classes determine what actions and filters to hook abstract protected function register_actions(); abstract protected function register_filters(); // environment checking static function determine_environment() { global $wpmu_version; if (function_exists('is_multisite')) if (is_multisite()) return Environment::WordPressMS; if (!empty($wpmu_version)) return Environment::WordPressMU; return Environment::WordPress; } // path finding static function plugins_directory() { if (WPPlugin::determine_environment() == Environment::WordPressMU) return WP_CONTENT_DIR . '/mu-plugins'; else return WP_CONTENT_DIR . '/plugins'; } static function plugins_url() { if (WPPlugin::determine_environment() == Environment::WordPressMU) return site_url() . '/wp-content/mu-plugins'; else return site_url() . '/wp-content/plugins'; } static function path_to_plugin_directory() { $current_directory = basename(dirname(__FILE__)); return WPPlugin::plugins_directory() . "/${current_directory}"; } static function url_to_plugin_directory() { $current_directory = basename(dirname(__FILE__)); return WPPlugin::plugins_url() . "/${current_directory}"; } static function path_to_plugin($file_path) { $file_name = basename($file_path); // /etc/blah/file.txt => file.txt if (WPPlugin::determine_environment() == Environment::WordPressMU) return WPPlugin::plugins_directory() . "/${file_name}"; else return WPPlugin::path_to_plugin_directory() . "/${file_name}"; } // options abstract protected function register_default_options(); // option retrieval static function retrieve_options($options_name) { if (WPPlugin::determine_environment() == Environment::WordPressMU) return get_site_option($options_name); else return get_option($options_name); } static function remove_options($options_name) { if (WPPlugin::determine_environment() == Environment::WordPressMU) return delete_site_option($options_name); else return delete_option($options_name); } static function add_options($options_name, $options) { if (WPPlugin::determine_environment() == Environment::WordPressMU) return add_site_option($options_name, $options); else return add_option($options_name, $options); } protected function is_multi_blog() { return $this->environment != Environment::WordPress; } // calls the appropriate 'authority' checking function protected function is_authority() { if ($this->environment == Environment::WordPress) return is_admin(); if ($this->environment == Environment::WordPressMU) return is_site_admin(); if ($this->environment == Environment::WordPressMS) return is_super_admin(); } } } ?>