Skip to content
Snippets Groups Projects
Commit 0e1abc0c authored by Ron Lucke's avatar Ron Lucke
Browse files

fix #1694

Closes #1694

Merge request studip/studip!2459
parent 9da159cf
No related branches found
No related tags found
No related merge requests found
......@@ -273,12 +273,13 @@ class Admin_UserController extends AuthenticatedController
*/
public function delete_action($user_id = null, $parent = '')
{
$delete_documents = (bool) Request::int('documents');
$delete_content_from_course = (bool) Request::int('coursecontent');
$delete_personal_documents = (bool) Request::int('personaldocuments');
$delete_personal_content = (bool) Request::int('personalcontent');
$delete_names = (bool) Request::int('personalnames');
$delete_memberships = (bool) Request::int('memberships');
$delete_documents = Request::bool('documents');
$delete_courseware = Request::bool('courseware');
$delete_content_from_course = Request::bool('coursecontent');
$delete_personal_documents = Request::bool('personaldocuments');
$delete_personal_content = Request::bool('personalcontent');
$delete_names = Request::bool('personalnames');
$delete_memberships = Request::bool('memberships');
//deleting one user
if (!is_null($user_id)) {
......@@ -299,7 +300,7 @@ class Admin_UserController extends AuthenticatedController
$umanager->getFromDatabase($user_id);
//delete
if ($umanager->deleteUser($delete_documents, $delete_content_from_course, $delete_personal_documents, $delete_personal_content, $delete_names, $delete_memberships, !Request::bool('mail'))) {
if ($umanager->deleteUser($delete_documents, $delete_content_from_course, $delete_personal_documents, $delete_personal_content, $delete_names, $delete_memberships, !Request::bool('mail'), $delete_courseware)) {
$details = explode('§', str_replace(['msg§', 'info§', 'error§'], '', mb_substr($umanager->msg, 0, -1)));
PageLayout::postSuccess(htmlReady(sprintf(_('"%s (%s)" wurde erfolgreich gelöscht.'), $user->getFullName(), $user->username)), $details);
} else {
......
......@@ -51,6 +51,12 @@
<?= tooltipHtmlIcon(_('Dateien in Veranstaltungen und Einrichtungen')) ?>
</label>
<label>
<input type="checkbox" id="courseware" name="courseware" value="1" checked>
<?= _('Lernmaterialien löschen?') ?>
<?= tooltipHtmlIcon(_('Courseware Lernmaterialien, Seiten, Abschnitte und Blöcke')) ?>
</label>
<label>
<input type="checkbox" id="coursecontent" name="coursecontent" value="1" checked>
<?= _('Andere Inhalte löschen?') ?>
......
......@@ -800,7 +800,8 @@ class UserManagement
bool $delete_personal_content = true,
bool $delete_names = true,
bool $delete_memberships = true,
bool $send_email_notification = true
bool $send_email_notification = true,
bool $delete_courseware = true
): bool {
global $perm;
......@@ -983,6 +984,24 @@ class UserManagement
NotificationCenter::postNotification('UserDataDidRemove', $this->user_data['auth_user_md5.user_id'], 'course_documents');
}
// always delete personal courseware elements of this user
\Courseware\Unit::deleteBySQL('range_id = ?', [$this->user_data['auth_user_md5.user_id']]);
\Courseware\UserDataField::deleteBySQL('user_id = ?', [$this->user_data['auth_user_md5.user_id']]);
\Courseware\UserProgress::deleteBySQL('user_id = ?', [$this->user_data['auth_user_md5.user_id']]);
\Courseware\Bookmark::deleteBySQL('user_id = ?', [$this->user_data['auth_user_md5.user_id']]);
// delete courseware elements in courses of this user
if ($delete_courseware) {
\Courseware\Unit::deleteBySQL('creator_id = ?', [$this->user_data['auth_user_md5.user_id']]);
\Courseware\StructuralElement::deleteBySQL('owner_id = ?', [$this->user_data['auth_user_md5.user_id']]);
\Courseware\StructuralElementFeedback::deleteBySQL('user_id = ?', [$this->user_data['auth_user_md5.user_id']]);
\Courseware\StructuralElementComment::deleteBySQL('user_id = ?', [$this->user_data['auth_user_md5.user_id']]);
\Courseware\Container::deleteBySQL('owner_id = ?', [$this->user_data['auth_user_md5.user_id']]);
\Courseware\Block::deleteBySQL('owner_id = ?', [$this->user_data['auth_user_md5.user_id']]);
\Courseware\BlockFeedback::deleteBySQL('user_id = ?', [$this->user_data['auth_user_md5.user_id']]);
\Courseware\BlockComment::deleteBySQL('user_id = ?', [$this->user_data['auth_user_md5.user_id']]);
}
// delete all remaining user data in course context if option selected
if ($delete_content_from_course) {
$queries = [
......
......@@ -196,12 +196,6 @@ class User extends AuthUserMd5 implements Range, PrivacyObject
'order_by' => 'ORDER BY name',
];
$config['has_one']['courseware_units'] = [
'class_name' => \Courseware\Unit::class,
'assoc_foreign_key' => 'range_id',
'on_delete' => 'delete',
];
$config['has_many']['course_notifications'] = [
'class_name' => CourseMemberNotification::class,
'on_delete' => 'delete',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment