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.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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(),
|
||||
|
||||
+4
-4
@@ -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 .= '<a href="' . $this->baseurl . '&edit=' . $i->get_typename() . '">'
|
||||
. $settingsstr .'</a>' . "\n";
|
||||
}
|
||||
|
||||
@@ -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'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
|
||||
@@ -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');
|
||||
|
||||
+15
-19
@@ -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 .= '<li><a href="'.$baseurl.'&new='.$p.'">'.get_string('create', 'repository')
|
||||
.' "'.get_string('repositoryname', 'repository_'.$p).'" '
|
||||
.get_string('instance', 'repository').'</a></li>';
|
||||
@@ -1449,11 +1442,14 @@ function repository_display_instances_list($context, $typename = null) {
|
||||
}
|
||||
$instancehtml .= '</ul>';
|
||||
|
||||
} 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 .= "<form action='".$baseurl."&new=".$typename."' method='post'>
|
||||
<p style='text-align:center'><input type='submit' value='".get_string('createinstance', 'repository')."'/></p>
|
||||
</form>";
|
||||
}
|
||||
}
|
||||
|
||||
if ($addable) {
|
||||
|
||||
Reference in New Issue
Block a user