ASDEnvironment = WPASDPlugin::determine_ASDEnvironment();
$this->options_name = $options_name;
$this->textdomain_name = $textdomain_name;
$this->load_textdomain();
$this->options = WPASDPlugin::retrieve_options($this->options_name);
$this->register_initialization();
}
protected function register_initialization() {
add_action('plugins_loaded', array(&$this, 'initialize'));
}
protected function load_textdomain() {
if (!isset($this->textdomain_name) || $this->textdomain_name == '') {
return;
}
load_plugin_textdomain(
$this->textdomain_name,
false,
dirname(plugin_basename(ASD_PLUGIN_FILE)) . '/languages');
}
function initialize() {
$this->pre_init();
//register_activation_hook(ASD_PLUGIN_FILE, array($this, 'activate'));
add_action('admin_init', array(&$this, 'register_settings_group'));
add_action('admin_menu', array(&$this, 'register_settings_page'));
$this->register_actions();
$this->register_filters();
$this->register_scripts();
$this->post_init();
}
function register_settings_group() {
//register_setting($this->options_name . "_group", $this->options_name, array(&$this, 'validate_options') );
$this->add_settings();
}
abstract protected function add_settings();
abstract protected function pre_init();
abstract protected function post_init();
// sub-classes determine what actions and filters to hook
abstract protected function register_actions();
abstract protected function register_filters();
abstract protected function register_scripts();
// ASDEnvironment checking
static function determine_ASDEnvironment() {
global $wpmu_version;
if (function_exists('is_multisite'))
if (is_multisite())
return ASDEnvironment::WordPressMS;
if (!empty($wpmu_version))
return ASDEnvironment::WordPressMU;
return ASDEnvironment::WordPress;
}
// path finding
static function plugins_directory() {
if (WPASDPlugin::determine_ASDEnvironment() == ASDEnvironment::WordPressMU)
return WP_CONTENT_DIR . '/mu-plugins';
else
return WP_CONTENT_DIR . '/plugins';
}
static function plugins_url() {
/**if (WPASDPlugin::determine_ASDEnvironment() == ASDEnvironment::WordPressMU)
return get_option('siteurl') . '/wp-content/mu-plugins';
else*/
return get_option('siteurl') . '/wp-content/plugins';
}
static function path_to_plugin_directory() {
$current_directory = basename(dirname(ASD_PLUGIN_FILE));
return WPASDPlugin::plugins_directory() . "/${current_directory}";
}
static function url_to_plugin_directory() {
$current_directory = basename(dirname(ASD_PLUGIN_FILE));
return WPASDPlugin::plugins_url() . "/${current_directory}";
}
static function path_to_plugin($file_path) {
$file_name = basename(ASD_PLUGIN_FILE); // /etc/blah/file.txt => file.txt
/**if (WPASDPlugin::determine_ASDEnvironment() == ASDEnvironment::WordPressMU)
return WPASDPlugin::plugins_directory() . "/${file_name}";
else*/
return WPASDPlugin::path_to_plugin_directory() . "/${file_name}";
}
function activate() {
$this->register_default_options();
}
// options
abstract protected function register_default_options();
abstract function validate_options($input);
abstract function register_settings_page();
function add_options_page($page_title, $menu_title ) {
/**if ($this->ASDEnvironment == ASDEnvironment::WordPressMU && $this->is_authority()) {
add_submenu_page('wpmu-admin.php', $page_title, $menu_title, 'manage_options', $this->getClassFile(), array(&$this, 'show_page_settings') );
}
if ($this->ASDEnvironment == ASDEnvironment::WordPressMS && $this->is_authority()) {
add_submenu_page('ms-admin.php', $page_title, $menu_title, 'manage_options', $this->getClassFile(), array(&$this, 'show_settings_page') );
}*/
add_options_page($page_title, $menu_title, 'manage_options', $this->getClassFile(), array(&$this, 'show_settings_page') );
}
abstract protected function show_settings_page();
function echo_dropdown($name, $keyvalue, $checked_value) {
echo ' \n";
}
function echo_radios($name, $keyvalue, $checked_value, $default) {
$checked_value = $checked_value ? $checked_value : $default;
foreach ($keyvalue as $key => $value) {
$checked = ($value == $checked_value) ? ' checked ' : '';
echo "\t " . '';
echo '
\n";
$checked = NULL;
}
}
// option retrieval
static function retrieve_options($options_name) {
/**if (WPASDPlugin::determine_ASDEnvironment() == ASDEnvironment::WordPressMU || WPASDPlugin::determine_ASDEnvironment() == ASDEnvironment::WordPressMS)
return get_site_option($options_name);
else*/
return get_option($options_name);
}
static function uninstall_options($options_name) {
unregister_setting("${options_name}_group", $options_name);
WPASDPlugin::remove_options($options_name);
}
static function remove_options($options_name) {
/**if (WPASDPlugin::determine_ASDEnvironment() == ASDEnvironment::WordPressMU || WPASDPlugin::determine_ASDEnvironment() == ASDEnvironment::WordPressMS)
return delete_site_option($options_name);
else*/
return delete_option($options_name);
}
static function update_options($options_name, $options) {
/**if (WPASDPlugin::determine_ASDEnvironment() == ASDEnvironment::WordPressMU || WPASDPlugin::determine_ASDEnvironment() == ASDEnvironment::WordPressMS) {
return update_site_option($options_name, $options);
} else{*/
return update_option($options_name, $options);
//}
}
static function add_options($options_name, $options) {
/**if (WPASDPlugin::determine_ASDEnvironment() == ASDEnvironment::WordPressMU || WPASDPlugin::determine_ASDEnvironment() == ASDEnvironment::WordPressMS)
return add_site_option($options_name, $options);
else*/
return add_option($options_name, $options);
}
protected function is_multi_blog() {
return $this->ASDEnvironment != ASDEnvironment::WordPress;
}
// calls the appropriate 'authority' checking function depending on the ASDEnvironment
protected function is_authority() {
if ($this->ASDEnvironment == ASDEnvironment::WordPress)
return is_admin();
/**if ($this->ASDEnvironment == ASDEnvironment::WordPressMU)
return is_site_admin();
if ($this->ASDEnvironment == ASDEnvironment::WordPressMS)
return is_super_admin();*/
}
protected function validate_dropdown($array, $key, $value) {
// make sure that the capability that was wupplied is a valid capability from the drop-down list
if (in_array($value, $array)) {
return $value;
} else {
return $this->options[$key];
}
}
abstract protected function getClassFile();
}
}
?>