Skip to content
Snippets Groups Projects
Commit 1f79bbfd authored by Ron Lucke's avatar Ron Lucke Committed by Jan-Hendrik Willms
Browse files

fix #1694

Closes #1694

Merge request studip/studip!2459
parent 260f0ce2
No related branches found
No related tags found
No related merge requests found
...@@ -273,12 +273,13 @@ class Admin_UserController extends AuthenticatedController ...@@ -273,12 +273,13 @@ class Admin_UserController extends AuthenticatedController
*/ */
public function delete_action($user_id = null, $parent = '') public function delete_action($user_id = null, $parent = '')
{ {
$delete_documents = (bool) Request::int('documents'); $delete_documents = Request::bool('documents');
$delete_content_from_course = (bool) Request::int('coursecontent'); $delete_courseware = Request::bool('courseware');
$delete_personal_documents = (bool) Request::int('personaldocuments'); $delete_content_from_course = Request::bool('coursecontent');
$delete_personal_content = (bool) Request::int('personalcontent'); $delete_personal_documents = Request::bool('personaldocuments');
$delete_names = (bool) Request::int('personalnames'); $delete_personal_content = Request::bool('personalcontent');
$delete_memberships = (bool) Request::int('memberships'); $delete_names = Request::bool('personalnames');
$delete_memberships = Request::bool('memberships');
//deleting one user //deleting one user
if (!is_null($user_id)) { if (!is_null($user_id)) {
...@@ -305,7 +306,7 @@ class Admin_UserController extends AuthenticatedController ...@@ -305,7 +306,7 @@ class Admin_UserController extends AuthenticatedController
$umanager->getFromDatabase($user_id); $umanager->getFromDatabase($user_id);
//delete //delete
if ($umanager->deleteUser($delete_documents, $delete_content_from_course, $delete_personal_documents, $delete_personal_content, $delete_names, $delete_memberships)) { if ($umanager->deleteUser($delete_documents, $delete_content_from_course, $delete_personal_documents, $delete_personal_content, $delete_names, $delete_memberships, $delete_courseware)) {
$details = explode('§', str_replace(['msg§', 'info§', 'error§'], '', mb_substr($umanager->msg, 0, -1))); $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); PageLayout::postSuccess(htmlReady(sprintf(_('"%s (%s)" wurde erfolgreich gelöscht.'), $user->getFullName(), $user->username)), $details);
} else { } else {
......
...@@ -51,6 +51,12 @@ ...@@ -51,6 +51,12 @@
<?= tooltipHtmlIcon(_('Dateien in Veranstaltungen und Einrichtungen')) ?> <?= tooltipHtmlIcon(_('Dateien in Veranstaltungen und Einrichtungen')) ?>
</label> </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> <label>
<input type="checkbox" id="coursecontent" name="coursecontent" value="1" checked> <input type="checkbox" id="coursecontent" name="coursecontent" value="1" checked>
<?= _('Andere Inhalte löschen?') ?> <?= _('Andere Inhalte löschen?') ?>
......
...@@ -789,10 +789,18 @@ class UserManagement ...@@ -789,10 +789,18 @@ class UserManagement
* @param bool delete all personal content belonging to the user * @param bool delete all personal content belonging to the user
* @param bool delete all names identifying the user * @param bool delete all names identifying the user
* @param bool delete all memberships of the user * @param bool delete all memberships of the user
* @param bool delete all courseware of the user
* @return bool Removal successful? * @return bool Removal successful?
*/ */
public function deleteUser($delete_documents = true, $delete_content_from_course = true, $delete_personal_documents = true, $delete_personal_content = true, $delete_names = true, $delete_memberships = true) public function deleteUser(
{ bool $delete_documents = true,
bool $delete_content_from_course = true,
bool $delete_personal_documents = true,
bool $delete_personal_content = true,
bool $delete_names = true,
bool $delete_memberships = true,
bool $delete_courseware = true
): bool {
global $perm; global $perm;
// Do we have permission to do so? // Do we have permission to do so?
...@@ -974,6 +982,24 @@ class UserManagement ...@@ -974,6 +982,24 @@ class UserManagement
NotificationCenter::postNotification('UserDataDidRemove', $this->user_data['auth_user_md5.user_id'], 'course_documents'); 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 // delete all remaining user data in course context if option selected
if ($delete_content_from_course) { if ($delete_content_from_course) {
$queries = [ $queries = [
......
...@@ -190,12 +190,6 @@ class User extends AuthUserMd5 implements Range, PrivacyObject ...@@ -190,12 +190,6 @@ class User extends AuthUserMd5 implements Range, PrivacyObject
'order_by' => 'ORDER BY name', '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'] = [ $config['has_many']['course_notifications'] = [
'class_name' => CourseMemberNotification::class, 'class_name' => CourseMemberNotification::class,
'on_delete' => 'delete', 'on_delete' => 'delete',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment