/** * Constructor. * @throws Command_Exception. */ public function __construct() { global $DB, $STANDARD_PLUGIN_TYPES; // Getting command description. $cmd_name = vmoodle_get_string('cmdpluginsetupname', 'vmoodleadminset_plugins'); $cmd_desc = vmoodle_get_string('cmdpluginsetupdesc', 'vmoodleadminset_plugins'); $pm = \plugin_manager::instance(); $allplugins = $pm->get_plugins(); $pluginlist = array(); foreach ($allplugins as $type => $plugins) { foreach ($plugins as $p) { if (array_key_exists($type, $STANDARD_PLUGIN_TYPES)) { $pluginlist[$type . '/' . $p->name] = $STANDARD_PLUGIN_TYPES[$type] . ' : ' . $p->displayname; } } } asort($pluginlist, SORT_STRING); $plugin_param = new Command_Parameter('plugin', 'enum', vmoodle_get_string('pluginparamdesc', 'vmoodleadminset_plugins'), null, $pluginlist); $states = array(); $states['enable'] = vmoodle_get_string('enable', 'vmoodleadminset_plugins'); $states['disable'] = vmoodle_get_string('disable', 'vmoodleadminset_plugins'); $state_param = new Command_Parameter('state', 'enum', vmoodle_get_string('pluginstateparamdesc', 'vmoodleadminset_plugins'), null, $states); // Creating command. parent::__construct($cmd_name, $cmd_desc, array($plugin_param, $state_param)); }
/** * Constructor. * @throws Command_Exception. */ public function __construct() { global $DB; // Getting command description. $cmd_name = vmoodle_get_string('cmdsynccapabilityname', 'vmoodleadminset_roles'); $cmd_desc = vmoodle_get_string('cmdsynccapabilitydesc', 'vmoodleadminset_roles'); // Creating platform parameter. $platform_param = new Command_Parameter('platform', 'enum', vmoodle_get_string('platformparamsyncdesc', 'vmoodleadminset_roles'), null, get_available_platforms()); // Getting role parameter. $roles = role_fix_names(get_all_roles(), \context_system::instance(), ROLENAME_ORIGINAL); $rolemenu = array(); foreach ($roles as $r) { $rolemenu[$r->shortname] = $r->name; } $role_param = new Command_Parameter('role', 'enum', vmoodle_get_string('roleparamsyncdesc', 'vmoodleadminset_roles'), null, $rolemenu); // Creating capability parameter. $records = $DB->get_records('capabilities', null, 'name', 'name'); $capabilities = array(); foreach ($records as $record) { $capabilities[$record->name] = get_capability_string($record->name); } asort($capabilities); $capability_param = new Command_Parameter('capability', 'enum', vmoodle_get_string('capabilityparamsyncdesc', 'vmoodleadminset_roles'), null, $capabilities); // Creating command. parent::__construct($cmd_name, $cmd_desc, array($platform_param, $role_param, $capability_param)); }
/** * Constructor. * @throws Command_Exception. */ public function __construct() { // Getting command description. $cmd_name = vmoodle_get_string('cmdupgradename', 'vmoodleadminset_upgrade'); $cmd_desc = vmoodle_get_string('cmdupgradedesc', 'vmoodleadminset_upgrade'); // Creating command. parent::__construct($cmd_name, $cmd_desc); }
/** * Constructor. * @param $name string The category's name. * @param $plugin_name string The category's file. */ public function __construct($plugin_name) { global $CFG; // Checking category's name $this->name = vmoodle_get_string('pluginname', 'vmoodleadminset_' . $plugin_name); // Checking category's plugin name if (!is_string($plugin_name) || empty($plugin_name)) { throw new Command_Exception('categorywrongpluginname', $name); } else { $this->plugin_name = $plugin_name; } }
/** * Constructor. * @throws Command_Exception. */ function __construct() { global $DB; // Getting command description. $cmd_name = vmoodle_get_string('cmdsyncname', 'vmoodleadminset_plugins'); $cmd_desc = vmoodle_get_string('cmdsyncdesc', 'vmoodleadminset_plugins'); // Creating platform parameter. This is the source platform. $platform_param = new Command_Parameter('platform', 'enum', vmoodle_get_string('platformparamsyncdesc', 'vmoodleadminset_plugins'), null, get_available_platforms()); // Creating plugins type parameter. If this parameter has a value, // then all plugins in this type will be synchronized $plugintypes = get_plugin_types(); $plugintype_param = new Command_Parameter('plugintype', 'enum', vmoodle_get_string('plugintypeparamsyncdesc', 'vmoodleadminset_plugins'), null, $plugintypes); // Creating command. parent::__construct($cmd_name, $cmd_desc, array($platform_param, $plugintype_param)); }
/** * Constructor. * @throws Command_Exception. */ public function __construct() { global $DB; // Getting command description $cmd_name = vmoodle_get_string('cmdcomparename', 'vmoodleadminset_roles'); $cmd_desc = vmoodle_get_string('cmdcomparedesc', 'vmoodleadminset_roles'); // Getting role parameter $roles = role_fix_names(get_all_roles(), \context_system::instance(), ROLENAME_ORIGINAL); $rolemenu = array(); foreach ($roles as $r) { $rolemenu[$r->shortname] = $r->localname; } $role_param = new Command_Parameter('role', 'enum', vmoodle_get_string('roleparamcomparedesc', 'vmoodleadminset_roles'), null, $rolemenu); // Creating command. parent::__construct($cmd_name, $cmd_desc, $role_param); }
/** * Constructor. * @throws Command_Exception. */ function __construct() { global $DB; // Getting command description. $cmd_name = vmoodle_get_string('cmdallowsyncname', 'vmoodleadminset_roles'); $cmd_desc = vmoodle_get_string('cmdallowsyncdesc', 'vmoodleadminset_roles'); // Creating platform parameter $platform_param = new Command_Parameter('platform', 'enum', vmoodle_get_string('platformparamsyncdesc', 'vmoodleadminset_roles'), null, get_available_platforms()); // Creating table parameter $tables['assign'] = vmoodle_get_string('assigntable', 'vmoodleadminset_roles'); $tables['override'] = vmoodle_get_string('overridetable', 'vmoodleadminset_roles'); $tables['switch'] = vmoodle_get_string('switchtable', 'vmoodleadminset_roles'); $table_param = new Command_Parameter('table', 'enum', vmoodle_get_string('tableparamdesc', 'vmoodleadminset_roles'), null, $tables); // Creating role parameter $roles = role_fix_names(get_all_roles(), \context_system::instance(), ROLENAME_ORIGINAL); $rolemenu = array(); foreach ($roles as $r) { $rolemenu[$r->shortname] = $r->localname; } $role_param = new Command_Parameter('role', 'enum', vmoodle_get_string('roleparamsyncdesc', 'vmoodleadminset_roles'), null, $rolemenu); // Creating command parent::__construct($cmd_name, $cmd_desc, array($platform_param, $table_param, $role_param)); }
<?php header('Content-Type: application/x-javascript'); require_once '../../../../../config.php'; require_once $CFG->dirroot . '/local/vmoodle/lib.php'; echo 'var vmoodle_pluginlib_notinstalled = "' . vmoodle_get_string('notinstalled', 'vmoodleadminset_plugins') . '"; '; echo 'var vmoodle_pluginlib_nosrcpltfrm = "' . vmoodle_get_string('nosrcpltfrm', 'vmoodleadminset_plugins') . '"; '; echo 'var vmoodle_pluginlib_nosyncpltfrm = "' . vmoodle_get_string('nosyncpltfrm', 'vmoodleadminset_plugins') . '"; '; echo 'var vmoodle_pluginlib_confirmpluginvisibilitysync = "' . vmoodle_get_string('confirmpluginvisibilitysync', 'vmoodleadminset_plugins') . '"; ';
$param1 = new Command_Parameter('parameter1', 'ltext', 'The free long text without default value'); $cmd = new Command_Sql('Command 9', 'Command with free long text without default value.', 'SELECT [[?parameter1]] FROM bb', $param1); $category->addCommand($cmd); /*****************************************/ $param1 = new Command_Parameter('parameter1', 'ltext', 'The free long text with default value', 'default value'); $cmd = new Command_Sql('Command 10', 'Command with free long text with default value.', 'SELECT [[?parameter1]] FROM bb', $param1); $category->addCommand($cmd); /*****************************/ $param1 = new Command_Parameter('parameter1', 'boolean', 'A boolean selected by default', true); $param2 = new Command_Parameter('parameter2', 'enum', 'The enum choice values 2 by default', 'value2', array('value1' => vmoodle_get_string('value1', 'vmoodleadminset_test'), 'value2' => vmoodle_get_string('value2', 'vmoodleadminset_test'), 'value3' => vmoodle_get_string('value3', 'vmoodleadminset_test'))); $param3 = new Command_Parameter('parameter3', 'text', 'The free text with default value', 'the default value'); $cmd = new Command_Sql('Command 11', 'Command which combine different fields.', 'SELECT [[?parameter1]], [[?parameter2]], [[?parameter3]] FROM bb', array($param1, $param2, $param3)); $category->addCommand($cmd); /*********************************/ $param1 = new Command_Parameter('parameter1', 'boolean', 'The boolean selected by default', true); $param2 = new Command_Parameter('parameter2', 'enum', 'The enum choice values 2 by default', 'value2', array('value1' => vmoodle_get_string('value1', 'vmoodleadminset_test'), 'value2' => vmoodle_get_string('value2', 'vmoodleadminset_test'), 'value3' => vmoodle_get_string('value3', 'vmoodleadminset_test'))); $param3 = new Command_Parameter_Internal('parameter3', 'explode', array('[[?parameter1]]', '[[?parameter2]]', '[[bibi]]', 'ba[[?parameter1:tot]]be[[prefix]]bi', true, 'aa')); $cmd = new Command_Sql('Command 12', 'Command with a boolean parameter selected and an internal parameter.', 'SELECT [[?parameter1]],[[?parameter2]],[[?parameter3]] FROM bb', array($param1, $param2, $param3)); $category->addCommand($cmd); $cmd = new Command_Sql('Command 13', 'Command to try error handling.', 'SELECT [[?parameter1]] FROM bb', new Command_Parameter_Internal('parameter1', 'vmoodleadminset_test\\CommandWrapper::myTestFunction')); $category->addCommand($cmd); $test_rpcommad = new Command_Sql('Command 14', 'Command with a retrieve platforms command.', 'UPDATE bb SET value = \'aa\' WHERE name = \'cc\'', null); $param1 = new Command_Parameter('param', 'text', 'Name of config directive', 'local_vmoodle_host_source'); $param2 = new Command_Parameter('value', 'text', 'Value of config directive', 'vmoodle'); $cmd = new Command_Sql('Retrieve platforms command', 'Command used to retrieve platforms from their original value.', 'SELECT id FROM {config} WHERE name = [[?param]] AND value = [[?value]] ', array($param1, $param2)); $test_rpcommad->attachRPCommand($cmd); $category->addCommand($test_rpcommad); $category->addCommand(new Command_Role_Sync()); $category->addCommand(new Command_Role_Capability_Sync()); $category->addCommand(new Command_Role_Compare()); $category->addCommand(new Command_Upgrade());
/** * Process the plugin comparison. * @throws Commmand_Exception. */ private function _process() { global $CFG, $DB, $OUTPUT, $STANDARD_PLUGIN_TYPES, $PAGE; $renderer = $PAGE->get_renderer('local_vmoodle'); // Checking if command has been runned. if (!$this->isRunned()) { throw new Command_Exception('commandnotrun'); } // Getting examined plugintype. $plugintype = $this->getParameter('plugintype')->getValue(); // Getting hosts. $hosts = array_keys($this->plugins); $host_labels = get_available_platforms(); // Getting local plugin info. $pm = \plugin_manager::instance(); $localplugins = $pm->get_plugins(); $localtypeplugins = $localplugins[$plugintype]; /* * Creating html report. */ // Creating header. $this->report = '<link href="' . $CFG->wwwroot . '/local/vmoodle/plugins/plugins/theme/styles.css" rel="stylesheet" type="text/css">'; $this->report .= '<h3>' . vmoodle_get_string('compareplugins', 'vmoodleadminset_plugins', $STANDARD_PLUGIN_TYPES[$plugintype]) . '</h3>'; // Adding link to plugin management /* $this->report.= '<center><p>'.$OUTPUT->single_button(new moodle_url($CFG->wwwroot.'/admin/roles/define.php', array('roleid' => $role->id, 'action' => 'edit')), get_string('editrole', 'vmoodleadminset_roles'), 'get').'</p></center>'; */ // Creation form $this->report .= '<form action="' . $CFG->wwwroot . '/local/vmoodle/plugins/plugins/controller.pluginlib.sadmin.php?what=syncplugins" method="post" onsubmit="return validate_syncplugins()">'; $this->report .= '<input id="id_plugin" type="hidden" name="plugin" value=""/>'; $this->report .= '<input id="source_platform" type="hidden" name="source_platform" value=""/>'; // Creating table. $this->report .= '<table id="plugincompare" cellspacing="1" cellpadding="5" class="generaltable boxaligncenter" style="min-width: 75%;">'; $this->report .= '<tbody>'; // Creating header. $this->report .= '<tr><th scope="col" class="header c0" style="vertical-align: bottom; text-align: left;"> </th>'; $col = 1; foreach ($hosts as $host) { $this->report .= '<th id="plug_' . $col . '" scope="col" class="header c' . $col . '" style="vertical-align: bottom; text-align: center;">'; $this->report .= '<label for="platform_' . $col . '"><img src="' . $CFG->wwwroot . '/local/vmoodle/plugins/plugins/draw_platformname.php?caption=' . urlencode($host_labels[$host]) . '" alt="' . $host_labels[$host] . '"/></label><br/>'; $this->report .= '<input id="platform_' . $col . '" type="checkbox" name="platforms[]" value="' . $host . '" disabled="disabled"/></th>'; $col++; } $this->report .= '</tr>'; // Initializing variables. $row = 0; // Creating table data. foreach ($localtypeplugins as $plugin) { $col = 1; $this->report .= '<tr class="r' . $row % 2 . '">'; $this->report .= '<td id="plug_0_' . $row . '" class="cell c0" style="vertical-align: middle; text-align: left;" onClic="setPLugin(' . $col . ',' . $row . ',\'' . $plugin->name . '\',\'' . $host . '\')">'; $this->report .= $plugin->displayname; $this->report .= '</td>'; foreach ($hosts as $host) { $extra_class = false; $title = $plugin->displayname . ' | ' . $host_labels[$host]; if (array_key_exists($host, $this->plugins) && property_exists($this->plugins[$host], $plugin->name)) { $remote_plugin = $this->plugins[$host]->{$plugin->name}; if (is_null($remote_plugin)) { $cell = '<img src="' . $renderer->pix_url('notinstalled', 'vmoodleadminset_plugins') . ' alt="Not installed" title="' . $title . '" />'; } else { if ($remote_plugin->enabled) { $cell = '<img src="' . $renderer->pix_url('enabled', 'vmoodleadminset_plugins') . '" title="' . $title . '" />'; } else { $cell = '<img src="' . $renderer->pix_url('disabled', 'vmoodleadminset_plugins') . '" title="' . $title . '" />'; } if ($localtypeplugins[$plugin->name]->versiondb > $remote_plugin->versiondb) { $cell .= ' <img src="' . $renderer->pix_url('needsupgrade', 'vmoodleadminset_plugins') . '" title="' . $title . '" />'; } if ($remote_plugin->versiondisk > $remote_plugin->versiondb) { $cell .= ' <img src="' . $renderer->pix_url('needslocalupgrade', 'vmoodleadminset_plugins') . '" title="' . $title . '" />'; } } } else { $cell = '<img src="' . $renderer->pix_url('notinstalled', 'vmoodleadminset_plugins') . '" alt="Not installed" title="' . $title . '"/>'; } $this->report .= '<td id="plug_' . $col . '_' . $row . '" class="cell c' . $col . ($extra_class ? ' ' . $extra_class : '') . '" style="vertical-align: middle; text-align: center;" onmouseout="cellOut(' . $col . ',' . $row . ');" onmouseover="cellOver(' . $col . ',' . $row . ');">' . $cell . '</td>'; $col++; } $this->report .= '</tr>'; $row++; } // Closing table $this->report .= '</tboby></table><br/><center><input type="submit" value="' . get_string('synchronize', 'vmoodleadminset_plugins') . '"/><div id="plugincompare_validation_message"></div></center></form><br/><br/>'; }
function mnetadmin_rpc_upgrade($user, $json_response = true) { global $CFG, $USER; // Invoke local user and check his rights if ($auth_response = invoke_local_user((array) $user)) { if ($json_response) { return $auth_response; } else { return json_decode($auth_response); } } // Creating response $response = new stdclass(); $response->status = RPC_SUCCESS; require "{$CFG->dirroot}/version.php"; // defines $version, $release, $branch and $maturity $CFG->target_release = $release; // used during installation and upgrades if ($version < $CFG->version) { $response->status = RPC_FAILURE_RUN; $response->error = get_string('downgradedcore', 'error'); $response->errors[] = get_string('downgradedcore', 'error'); if ($json_response) { return json_encode($response); } else { return $response; } } $oldversion = "{$CFG->release} ({$CFG->version})"; $newversion = "{$release} ({$version})"; if (!moodle_needs_upgrading()) { $response->message = get_string('cliupgradenoneed', 'core_admin', $newversion); if ($json_response) { return json_encode($response); } else { return $response; } } // debug_trace('Remote Upgrade : Environment check'); list($envstatus, $environment_results) = check_moodle_environment(normalize_version($release), ENV_SELECT_NEWER); if (!$envstatus) { $response->status = RPC_FAILURE_RUN; $response->error = vmoodle_get_string('environmentissues', 'vmoodleadminset_upgrade'); $response->errors[] = vmoodle_get_string('environmentissues', 'vmoodleadminset_upgrade'); $response->detail = $environment_results; if ($json_response) { return json_encode($response); } else { return $response; } } // Test plugin dependencies. // debug_trace('Remote Upgrade : Plugins check'); $failed = array(); if (!plugin_manager::instance()->all_plugins_ok($version, $failed)) { $response->status = RPC_FAILURE_RUN; $response->error = get_string('pluginschecktodo', 'admin'); $response->errors[] = get_string('pluginschecktodo', 'admin'); if ($json_response) { return json_encode($response); } else { return $response; } } ob_start(); // debug_trace('Remote Upgrade : Upgrade core'); if ($version > $CFG->version) { upgrade_core($version, false); } set_config('release', $release); set_config('branch', $branch); // unconditionally upgrade // debug_trace('Remote Upgrade : Upgrade other'); upgrade_noncore(false); // log in as admin - we need doanything permission when applying defaults // debug_trace('Remote Upgrade : Turning ADMIN '); session_set_user(get_admin()); // apply all default settings, just in case do it twice to fill all defaults // debug_trace('Remote Upgrade : Applying settings '); admin_apply_default_settings(NULL, false); admin_apply_default_settings(NULL, false); ob_end_clean(); $response->message = vmoodle_get_string('upgradecomplete', 'vmoodleadminset_upgrade', $newversion); if ($json_response) { return json_encode($response); } else { return $response; } }
function action($action) { global $DB; if (!($block = $DB->get_record('block', array('name' => $this->plugin)))) { return vmoodle_get_string('errorblockdoesnotexit', 'vmoodleadminset_plugins', $this->plugin); } switch ($action) { case 'enable': $DB->set_field('block', 'visible', '1', array('id' => $block->id)); // Show block break; case 'disable': $DB->set_field('block', 'visible', '0', array('id' => $block->id)); // Hide block break; } return 0; }
/** * Constructor with localized message. * @param string $identifier The key identifier for the localized string. * @param mixed $a An object, string or number that can be used (optional). */ public function __construct($identifier, $a = null) { parent::__construct(vmoodle_get_string($identifier, 'vmoodleadminset_generic', $a)); }
/** * Process the role comparision. * @throws Commmand_Exception. */ private function _process() { global $CFG, $DB, $OUTPUT; // Checking if command has been runned. if (!$this->isRunned()) { throw new Command_Exception('commandnotrun'); } // Getting table name. $table = $this->getParameter('table')->getValue(); // Getting hosts. $hosts = array_keys($this->capabilities); $host_labels = get_available_platforms(); // Getting local roles. $roles = $DB->get_records('role', null, '', 'sortorder'); /* * processing results */ // Creating header. $this->report = '<h3>' . get_string('allowcompare', 'vmoodleadminset_roles', vmoodle_get_string($table . 'table', 'vmoodleadminset_roles')) . help_button_vml('rolelib', 'allowcompare', 'vmoodleadminset_roles') . '</h3>'; // Adding edit role link $this->report .= '<center><p>' . $OUTPUT->single_button(new moodle_url($CFG->wwwroot . '/admin/roles/allow.php?mode=' . $table, array('roleid' => $role->id, 'action' => 'edit')), vmoodle_get_string('editallowtable', 'vmoodleadminset_roles'), 'get') . '</p></center>'; // Creation form. $this->report .= '<form action="' . $CFG->wwwroot . '/local/vmoodle/plugins/roles/controller.rolelib.sadmin.php?what=syncallow" method="post" onsubmit="return validate_syncrole()">'; $this->report .= '<input id="target" type="hidden" name="target" value=""/>'; $this->report .= '<input id="role" type="hidden" name="role" value=""/>'; $this->report .= '<input id="source_platform" type="hidden" name="source_platform" value=""/>'; // Creating table. $this->report .= '<table id="allowcompare" cellspacing="1" cellpadding="5" class="generaltable boxaligncenter" style="min-width: 75%;"><tbody>'; // Creating header. $this->report .= '<tr><th scope="col" class="header c0" style="vertical-align: bottom; text-align: left;"> </th>'; $col = 1; foreach ($hosts as $host) { $this->report .= '<th id="cap_' . $col . '" scope="col" class="header c' . $col . '" style="vertical-align: bottom; text-align: center;"><label for="platform_' . $col . '"><img src="' . $CFG->wwwroot . '/local/vmoodle/plugins/roles/draw_platformname.php?caption=' . urlencode($host_labels[$host]) . '" alt="' . $host_labels[$host] . '"/></label><br/><input id="platform_' . $col . '" type="checkbox" name="platforms[]" value="' . $host . '" disabled="disabled"/></th>'; $col++; } $this->report .= '</tr>'; // Initializing variables. $row = 0; // Creating table data. foreach ($allroles as $rolename => $role) { $localrole = $DB->get_field('role', 'name', array('shortname' => $rolename)); $displayrole = $localrole ? $localrole : '--' . $rolename . '--'; $this->report .= "<tr valign='top'>{$displayrole}</td>"; $row++; } // Closing table. $this->report .= '</tboby></table><br/>'; $this->report .= '<center><input type="submit" value="' . vmoodle_get_string('synchronize', 'vmoodleadminset_roles') . '"/><div id="allowcompare_validation_message"></div></center></form><br/><br/>'; }
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * This file contains the mnet services for the user_mnet_host plugin * * @since 2.0 * @package local * @subpackage vmoodle * @copyright 2012 Valery Fremaux * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once $CFG->dirroot . '/local/vmoodle/lib.php'; $publishes = array('dataexchange' => array('servicename' => 'dataexchange', 'description' => vmoodle_get_string('dataexchange_name', 'vmoodleadminset_generic'), 'apiversion' => 1, 'classname' => '', 'filename' => 'rpclib.php', 'methods' => array('dataexchange_rpc_fetch_config')), 'mnetadmin' => array('servicename' => 'mnetadmin', 'description' => get_string('mnetadmin_name', 'local_vmoodle'), 'apiversion' => 1, 'classname' => '', 'filename' => 'rpclib.php', 'methods' => array('mnetadmin_rpc_set_config', 'mnetadmin_rpc_set_maintenance', 'mnetadmin_rpc_purge_caches'))); $subscribes = array('dataexchange' => array('dataexchange_rpc_fetch_config' => 'local/vmoodle/plugins/generic/rpclib.php/dataexchange_rpc_fetch_config', 'mnetadmin_rpc_set_maintenance' => 'local/vmoodle/plugins/generic/rpclib.php/mnetadmin_rpc_set_maintenance', 'mnetadmin_rpc_set_config' => 'local/vmoodle/plugins/generic/rpclib.php/mnetadmin_rpc_set_config', 'mnetadmin_rpc_purge_caches' => 'local/vmoodle/plugins/generic/rpclib.php/mnetadmin_rpc_purge_caches'));