Allow perform actions from plugin when deleting user/course/session

pull/2757/head^2
Angel Fernando Quiroz Campos 7 years ago
parent 9f4025b944
commit c51a213e5e
  1. 3
      main/inc/lib/course.lib.php
  2. 27
      main/inc/lib/plugin.class.php
  3. 30
      main/inc/lib/plugin.lib.php
  4. 3
      main/inc/lib/sessionmanager.lib.php
  5. 3
      main/inc/lib/usermanager.lib.php

@ -2413,6 +2413,9 @@ class CourseManager
// To prevent fK mix up on some tables
GroupManager::deleteAllGroupsFromCourse($courseId);
$app_plugin = new AppPlugin();
$app_plugin->performActionsWhenDeletingItem('course', $courseId);
// Delete the course from the database
$sql = "DELETE FROM $table_course WHERE id = $courseId";
Database::query($sql);

@ -992,4 +992,31 @@ class Plugin
return $tool;
}
/**
* Overwrite to perform some actions when deleting a user.
*
* @param int $userId
*/
public function doWhenDeletingUser($userId)
{
}
/**
* Overwrite to perform some actions when deleting a course.
*
* @param int $courseId
*/
public function doWhenDeletingCourse($courseId)
{
}
/**
* Overwrite to perform some actions when deleting a session.
*
* @param int $sessionId
*/
public function doWhenDeletingSession($sessionId)
{
}
}

@ -536,6 +536,36 @@ class AppPlugin
}
}
/**
* Trigger for Plugin::doWhenDeleting[Item] functions
*
* @param string $itemType
* @param int $itemId
*/
public function performActionsWhenDeletingItem($itemType, $itemId)
{
$pluginList = $this->getInstalledPluginListObject();
if (empty($pluginList)) {
return;
}
/** @var Plugin $pluginObj */
foreach ($pluginList as $pluginObj) {
switch ($itemType) {
case 'course':
$pluginObj->doWhenDeletingCourse($itemId);
break;
case 'session':
$pluginObj->doWhenDeletingSession($itemId);
break;
case 'user':
$pluginObj->doWhenDeletingUser($itemId);
break;
}
}
}
/**
* Add the course settings to the course settings form.
*

@ -1808,6 +1808,9 @@ class SessionManager
$sql = "UPDATE $ticket SET session_id = NULL WHERE session_id IN ($id_checked)";
Database::query($sql);
$app_plugin = new AppPlugin();
$app_plugin->performActionsWhenDeletingItem('session', $id_checked);
$sql = "DELETE FROM $tbl_session WHERE id IN ($id_checked)";
Database::query($sql);

@ -917,6 +917,9 @@ class UserManager
Database::query($sql);
}
$app_plugin = new AppPlugin();
$app_plugin->performActionsWhenDeletingItem('user', $user_id);
// Delete user from database
$sql = "DELETE FROM $table_user WHERE id = '".$user_id."'";
Database::query($sql);

Loading…
Cancel
Save