From edb50637d7a8c81802c380056c6dcaaff32dc38d Mon Sep 17 00:00:00 2001 From: jerome Date: Thu, 18 Sep 2008 05:21:51 +0000 Subject: [PATCH] MDL-15402: remove has_multiple_instance(), API will know there is multiple instance if the function get_instance_option_names() return a not empty object. --- admin/repository.php | 3 +- admin/settings/plugins.php | 8 ++--- lib/adminlib.php | 8 ++--- repository/boxnet/repository.class.php | 9 ----- repository/flickr/repository.class.php | 16 --------- repository/flickr_public/repository.class.php | 4 --- repository/lib.php | 34 ++++++++----------- 7 files changed, 25 insertions(+), 57 deletions(-) diff --git a/admin/repository.php b/admin/repository.php index 6370142af9..008f55de81 100644 --- a/admin/repository.php +++ b/admin/repository.php @@ -98,7 +98,8 @@ if (!empty($edit) || !empty($new)) { //display instances list and creation form if ($edit){ - if (repository_static_function($edit,"has_multiple_instances")){ + $instanceoptionnames = repository_static_function($edit, 'get_instance_option_names'); + if (!empty($instanceoptionnames)){ repository_display_instances_list(get_context_instance(CONTEXT_SYSTEM), $edit); } } diff --git a/admin/settings/plugins.php b/admin/settings/plugins.php index d11f0b5ba1..583381184f 100644 --- a/admin/settings/plugins.php +++ b/admin/settings/plugins.php @@ -231,10 +231,10 @@ if ($hassiteconfig || has_capability('moodle/question:config', $systemcontext)) foreach (repository_get_types() as $repositorytype) { - //display setup page for plugins with: general options or multiple instances - $adminconfignames = repository_static_function($repositorytype->get_typename(), 'get_type_option_names'); - if (!empty($adminconfignames) - || repository_static_function($repositorytype->get_typename(), 'has_multiple_instances')) { + //display setup page for plugins with: general options or multiple instances (e.g. has instance config) + $typeoptionnames = repository_static_function($repositorytype->get_typename(), 'get_type_option_names'); + $instanceoptionnames = repository_static_function($repositorytype->get_typename(), 'get_instance_option_names'); + if (!empty($typeoptionnames) || !empty($instanceoptionnames)) { $ADMIN->add('repositorysettings', new admin_externalpage('repositorysettings'.$repositorytype->get_typename(), $repositorytype->get_readablename(), diff --git a/lib/adminlib.php b/lib/adminlib.php index e1d5c45985..d86f7e6003 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -6154,10 +6154,10 @@ class admin_setting_managerepository extends admin_setting { $updowncount=1; foreach ($instances as $i) { $settings = ''; - //display edit link only if you can config the type or if it has multiple instances - $adminconfignames = repository_static_function($i->get_typename(), 'get_type_option_names'); - if ( !empty($adminconfignames) - || repository_static_function($i->get_typename(), 'has_multiple_instances')) { + //display edit link only if you can config the type or if it has multiple instances (e.g. has instance config) + $typeoptionnames = repository_static_function($i->get_typename(), 'get_type_option_names'); + $instanceoptionnames = repository_static_function($i->get_typename(), 'get_instance_option_names'); + if ( !empty($typeoptionnames) || !empty($instanceoptionnames)) { $settings .= '' . $settingsstr .'' . "\n"; } diff --git a/repository/boxnet/repository.class.php b/repository/boxnet/repository.class.php index 28456c13a5..583dfaa1aa 100755 --- a/repository/boxnet/repository.class.php +++ b/repository/boxnet/repository.class.php @@ -157,18 +157,10 @@ class repository_boxnet extends repository { } } - public static function has_multiple_instances() { - return false; - } - public static function get_type_option_names() { return array('api_key'); } - public static function get_instance_option_names() { - return array('share_url'); - } - public function type_config_form(&$mform) { $public_account = get_config('boxnet', 'public_account'); $api_key = get_config('boxnet', 'api_key'); @@ -182,7 +174,6 @@ class repository_boxnet extends repository { } public function instance_config_form(&$mform) { - //$share_url = get_config('boxnet', 'share_url'); $mform->addElement('text', 'share_url', get_string('shareurl', 'repository_boxnet')); } } diff --git a/repository/flickr/repository.class.php b/repository/flickr/repository.class.php index 7b0f8e561b..4a99dc7e84 100755 --- a/repository/flickr/repository.class.php +++ b/repository/flickr/repository.class.php @@ -175,26 +175,11 @@ class repository_flickr extends repository { return $dir.$file; } - public static function has_multiple_instances() { - return false; - } - - public function instance_config_form(&$mform) { - $mform->addElement('text', 'email_address', get_string('emailaddress', 'repository_flickr')); - $mform->addRule('email_address', get_string('required'), 'required', null, 'client'); - } - - public static function get_instance_option_names() { - return array('email_address'); - } - public function type_config_form(&$mform) { global $CFG; $api_key = get_config('flickr', 'api_key'); $secret = get_config('flickr', 'secret'); - - if (empty($api_key)) { $api_key = ''; } @@ -217,7 +202,6 @@ class repository_flickr extends repository { $mform->addElement('static', 'callbackurl', '', get_string('callbackurltext', 'repository_flickr', $callbackurl)); } - $mform->addRule('api_key', $strrequired, 'required', null, 'client'); $mform->addRule('secret', $strrequired, 'required', null, 'client'); } diff --git a/repository/flickr_public/repository.class.php b/repository/flickr_public/repository.class.php index 24724362eb..735f4677cf 100644 --- a/repository/flickr_public/repository.class.php +++ b/repository/flickr_public/repository.class.php @@ -169,10 +169,6 @@ class repository_flickr_public extends repository { return $dir.$file; } - public static function has_multiple_instances() { - return true; - } - public function instance_config_form(&$mform) { $mform->addElement('text', 'email_address', get_string('emailaddress', 'repository_flickr_public')); $mform->addRule('email_address', get_string('required'), 'required', null, 'client'); diff --git a/repository/lib.php b/repository/lib.php index 4b57c8d79e..74a849e55e 100644 --- a/repository/lib.php +++ b/repository/lib.php @@ -198,10 +198,11 @@ class repository_type { //save the options in DB $this->update_options(); - //if the plugin type has no multiple so it wont + //if the plugin type has no multiple instance (e.g. has no instance option name) so it wont //be possible for the administrator to create a instance //in this case we need to create an instance - if (!repository_static_function($this->_typename,"has_multiple_instances")) { + $instanceoptionnames = repository_static_function($this->_typename, 'get_instance_option_names'); + if (empty($instanceoptionnames)) { $instanceoptions = array(); $instanceoptions['name'] = $this->_typename; repository_static_function($this->_typename, 'create', $this->_typename, 0, get_system_context(), $instanceoptions); @@ -642,12 +643,11 @@ abstract class repository { $record->userid = $userid; $id = $DB->insert_record('repository_instances', $record); $options = array(); - if (call_user_func($classname . '::has_multiple_instances')) { - $configs = call_user_func($classname . '::get_instance_option_names'); - foreach ($configs as $config) { - $options[$config] = $params[$config]; - } + $configs = call_user_func($classname . '::get_instance_option_names'); + foreach ($configs as $config) { + $options[$config] = $params[$config]; } + if (!empty($id)) { unset($options['name']); $instance = repository_get_instance($id); @@ -927,15 +927,6 @@ abstract class repository { public function instance_config_form(&$mform) { } - /** - * Return true if the plugin can have multiple instances - * By default: false - * @return boolean - */ - public static function has_multiple_instances() { - return false; - } - /** * Return names of the general options * By default: no general option name @@ -1001,7 +992,8 @@ function repository_get_editable_types() { $types= repository_get_types(true); $editabletypes = array(); foreach ($types as $type) { - if (repository_static_function($type->get_typename(), 'has_multiple_instances')) { + $instanceoptionnames = repository_static_function($type->get_typename(), 'get_instance_option_names'); + if (!empty($instanceoptionnames)) { $editabletypes[]=$type; } } @@ -1439,7 +1431,8 @@ function repository_display_instances_list($context, $typename = null) { foreach ($plugins as $p) { $type = repository_get_type_by_typename($p); if (!empty($type) && $type->get_visible()) { - if (repository_static_function($p, 'has_multiple_instances')) { + $instanceoptionnames = repository_static_function($p, 'get_instance_option_names'); + if (!empty($instanceoptionnames)) { $instancehtml .= '
  • '.get_string('create', 'repository') .' "'.get_string('repositoryname', 'repository_'.$p).'" ' .get_string('instance', 'repository').'
  • '; @@ -1449,11 +1442,14 @@ function repository_display_instances_list($context, $typename = null) { } $instancehtml .= ''; - } else if (repository_static_function($typename, 'has_multiple_instances')) { //create a unique type of instance + } else { + $instanceoptionnames = repository_static_function($typename, 'get_instance_option_names'); + if (!empty($instanceoptionnames)) { //create a unique type of instance $addable = 1; $instancehtml .= "

    "; + } } if ($addable) { -- 2.39.5