mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
MDL-27547 When deleting a local plugin containing a built-in service, the built-in service is not deleted
This commit is contained in:
parent
f24ff8f8d4
commit
e8a2384eb6
3 changed files with 27 additions and 17 deletions
|
@ -269,6 +269,10 @@ function uninstall_plugin($type, $name) {
|
||||||
|
|
||||||
// perform clean-up task common for all the plugin/subplugin types
|
// perform clean-up task common for all the plugin/subplugin types
|
||||||
|
|
||||||
|
//delete the web service functions and pre-built services
|
||||||
|
require_once($CFG->dirroot.'/lib/externallib.php');
|
||||||
|
external_delete_descriptions($component);
|
||||||
|
|
||||||
// delete calendar events
|
// delete calendar events
|
||||||
$DB->delete_records('event', array('modulename' => $pluginname));
|
$DB->delete_records('event', array('modulename' => $pluginname));
|
||||||
|
|
||||||
|
|
|
@ -487,4 +487,24 @@ function external_create_service_token($servicename, $context){
|
||||||
global $USER, $DB;
|
global $USER, $DB;
|
||||||
$service = $DB->get_record('external_services', array('name'=>$servicename), '*', MUST_EXIST);
|
$service = $DB->get_record('external_services', array('name'=>$servicename), '*', MUST_EXIST);
|
||||||
return external_generate_token(EXTERNAL_TOKEN_EMBEDDED, $service, $USER->id, $context, 0);
|
return external_generate_token(EXTERNAL_TOKEN_EMBEDDED, $service, $USER->id, $context, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete all pre-built services (+ related tokens) and external functions information defined in the specified component.
|
||||||
|
*
|
||||||
|
* @param string $component name of component (moodle, mod_assignment, etc.)
|
||||||
|
*/
|
||||||
|
function external_delete_descriptions($component) {
|
||||||
|
global $DB;
|
||||||
|
|
||||||
|
$params = array($component);
|
||||||
|
|
||||||
|
$DB->delete_records_select('external_tokens',
|
||||||
|
"externalserviceid IN (SELECT id FROM {external_services} WHERE component = ?)", $params);
|
||||||
|
$DB->delete_records_select('external_services_users',
|
||||||
|
"externalserviceid IN (SELECT id FROM {external_services} WHERE component = ?)", $params);
|
||||||
|
$DB->delete_records_select('external_services_functions',
|
||||||
|
"functionname IN (SELECT name FROM {external_functions} WHERE component = ?)", $params);
|
||||||
|
$DB->delete_records('external_services', array('component'=>$component));
|
||||||
|
$DB->delete_records('external_functions', array('component'=>$component));
|
||||||
}
|
}
|
|
@ -831,11 +831,12 @@ function log_update_descriptions($component) {
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function external_update_descriptions($component) {
|
function external_update_descriptions($component) {
|
||||||
global $DB;
|
global $DB, $CFG;
|
||||||
|
|
||||||
$defpath = get_component_directory($component).'/db/services.php';
|
$defpath = get_component_directory($component).'/db/services.php';
|
||||||
|
|
||||||
if (!file_exists($defpath)) {
|
if (!file_exists($defpath)) {
|
||||||
|
require_once($CFG->dirroot.'/lib/externallib.php');
|
||||||
external_delete_descriptions($component);
|
external_delete_descriptions($component);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -899,6 +900,7 @@ function external_update_descriptions($component) {
|
||||||
$dbservices = $DB->get_records('external_services', array('component'=>$component));
|
$dbservices = $DB->get_records('external_services', array('component'=>$component));
|
||||||
foreach ($dbservices as $dbservice) {
|
foreach ($dbservices as $dbservice) {
|
||||||
if (empty($services[$dbservice->name])) {
|
if (empty($services[$dbservice->name])) {
|
||||||
|
$DB->delete_records('external_tokens', array('externalserviceid'=>$dbservice->id));
|
||||||
$DB->delete_records('external_services_functions', array('externalserviceid'=>$dbservice->id));
|
$DB->delete_records('external_services_functions', array('externalserviceid'=>$dbservice->id));
|
||||||
$DB->delete_records('external_services_users', array('externalserviceid'=>$dbservice->id));
|
$DB->delete_records('external_services_users', array('externalserviceid'=>$dbservice->id));
|
||||||
$DB->delete_records('external_services', array('id'=>$dbservice->id));
|
$DB->delete_records('external_services', array('id'=>$dbservice->id));
|
||||||
|
@ -992,22 +994,6 @@ function external_update_descriptions($component) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Delete all service and external functions information defined in the specified component.
|
|
||||||
* @param string $component name of component (moodle, mod_assignment, etc.)
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function external_delete_descriptions($component) {
|
|
||||||
global $DB;
|
|
||||||
|
|
||||||
$params = array($component);
|
|
||||||
|
|
||||||
$DB->delete_records_select('external_services_users', "externalserviceid IN (SELECT id FROM {external_services} WHERE component = ?)", $params);
|
|
||||||
$DB->delete_records_select('external_services_functions', "externalserviceid IN (SELECT id FROM {external_services} WHERE component = ?)", $params);
|
|
||||||
$DB->delete_records('external_services', array('component'=>$component));
|
|
||||||
$DB->delete_records('external_functions', array('component'=>$component));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* upgrade logging functions
|
* upgrade logging functions
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue