diff --git a/public/main/inc/ajax/model.ajax.php b/public/main/inc/ajax/model.ajax.php
index 298136e4ade..6854fdd9408 100644
--- a/public/main/inc/ajax/model.ajax.php
+++ b/public/main/inc/ajax/model.ajax.php
@@ -2585,13 +2585,25 @@ function getWhereClause($col, $oper, $val)
$course_id,
api_get_session_id()
)) {
- $url = 'class.php?action=remove_class_from_course&id='.$group['id'].'&'.api_get_cidreq(
- ).'&id_session='.api_get_session_id();
- $icon = Display::getMdiIcon(ActionIcon::DELETE, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Remove'));
+ $actions = [
+ [
+ 'icon' => Display::getMdiIcon(ActionIcon::RESET, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Remove the class without removing students')),
+ 'url' => 'class.php?action=remove_only_class_from_course&id=' . $group['id'] . '&' . api_get_cidreq() . '&id_session=' . api_get_session_id(),
+ 'onclick' => "if (!confirm('". get_lang('Are you sure you want to remove the class without removing students') . "')) return false;"
+ ],
+ [
+ 'icon' => Display::getMdiIcon(ActionIcon::DELETE, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Remove')),
+ 'url' => 'class.php?action=remove_class_from_course&id=' . $group['id'] . '&' . api_get_cidreq() . '&id_session=' . api_get_session_id(),
+ 'onclick' => "if (!confirm('". get_lang('Are you sure you want to remove the class') . "')) return false;"
+ ],
+ ];
} else {
- $url = 'class.php?action=add_class_to_course&id='.$group['id'].'&'.api_get_cidreq(
- ).'&type=not_registered';
- $icon = Display::getMdiIcon(ActionIcon::ADD, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Add'));
+ $actions = [
+ [
+ 'icon' => Display::getMdiIcon(ActionIcon::ADD, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Add')),
+ 'url' => 'class.php?action=add_class_to_course&id=' . $group['id'] . '&' . api_get_cidreq() . '&type=not_registered',
+ ]
+ ];
}
switch ($group['group_type']) {
@@ -2611,10 +2623,17 @@ function getWhereClause($col, $oper, $val)
if ($obj->allowTeachers() && $group['author_id'] == $currentUserId) {
$group['actions'] .= Display::url(
Display::getMdiIcon(ToolIcon::TRACKING, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Statistics')),
- $urlUserGroup.'&id='.$group['id']
- ).' ';
+ $urlUserGroup . '&id=' . $group['id']
+ ) . ' ';
+ }
+
+ for ($i = 0; $i < count($actions); $i++) {
+ $group['actions'] .= Display::url(
+ $actions[$i]['icon'],
+ $actions[$i]['url'] ?? null,
+ ['onclick' => $actions[$i]['onclick'] ?? '']
+ );
}
- $group['actions'] .= Display::url($icon, $url);
}
$new_result[] = $group;
}
diff --git a/public/main/inc/lib/usergroup.lib.php b/public/main/inc/lib/usergroup.lib.php
index 36d3177a5f6..40ef727ed50 100644
--- a/public/main/inc/lib/usergroup.lib.php
+++ b/public/main/inc/lib/usergroup.lib.php
@@ -1209,6 +1209,36 @@ public function unsubscribe_courses_from_usergroup($usergroup_id, $delete_items,
}
}
+ public function unsubscribe_only_courses_from_usergroup($usergroup_id, $delete_items, $sessionId = 0)
+ {
+ $sessionId = (int) $sessionId;
+ // Deleting items.
+ if (!empty($delete_items)) {
+ $user_list = $this->get_users_by_usergroup($usergroup_id);
+
+ $groupId = isset($_GET['id']) ? (int) $_GET['id'] : 0;
+ foreach ($delete_items as $course_id) {
+ $course_info = api_get_course_info_by_id($course_id);
+ if ($course_info) {
+ Database::delete(
+ $this->usergroup_rel_course_table,
+ [
+ 'usergroup_id = ? AND course_id = ?' => [
+ $usergroup_id,
+ $course_id,
+ ],
+ ]
+ );
+ }
+ if (0 != $sessionId && 0 != $groupId) {
+ $this->subscribe_sessions_to_usergroup($groupId, [0]);
+ } else {
+ $s = $sessionId;
+ }
+ }
+ }
+ }
+
/**
* Subscribe users to a group.
*
@@ -1799,7 +1829,7 @@ public function getUserListByUserGroup($id, $orderBy = '')
INNER JOIN $this->usergroup_rel_user_table c
ON c.user_id = u.id
WHERE u.active <> ".USER_SOFT_DELETED." AND c.usergroup_id = $id"
- ;
+ ;
if (!empty($orderBy)) {
$orderBy = Database::escape_string($orderBy);
$sql .= " ORDER BY $orderBy ";
@@ -1838,7 +1868,7 @@ public function setForm($form, $type = 'add', Usergroup $userGroup = null)
true,
false,
[
- 'ToolbarSet' => 'Minimal',
+ 'ToolbarSet' => 'Minimal',
]
);
$form->applyFilter('description', 'trim');
@@ -2587,7 +2617,7 @@ public function show_group_column_information($group_id, $user_id, $show = '')
// I'm just a reader
$relation_group_title = get_lang('I am a reader');
$links .= '
'.
- Display::getMdiIcon(ObjectIcon::INVITATION, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Invite friends')).get_lang('Invite friends').'';
+ Display::getMdiIcon(ObjectIcon::INVITATION, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Invite friends')).get_lang('Invite friends').'';
if (self::canLeave($group_info)) {
$links .= ''.
Display::getMdiIcon(ActionIcon::EXIT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Leave group')).get_lang('Leave group').'';
@@ -2596,11 +2626,11 @@ public function show_group_column_information($group_id, $user_id, $show = '')
case GROUP_USER_PERMISSION_ADMIN:
$relation_group_title = get_lang('I am an admin');
$links .= ''.
- Display::getMdiIcon(ActionIcon::EDIT, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Edit this group')).get_lang('Edit this group').'';
+ Display::getMdiIcon(ActionIcon::EDIT, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Edit this group')).get_lang('Edit this group').'';
$links .= ''.
- Display::getMdiIcon(ObjectIcon::WAITING_LIST, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Waiting list')).get_lang('Waiting list').'';
+ Display::getMdiIcon(ObjectIcon::WAITING_LIST, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Waiting list')).get_lang('Waiting list').'';
$links .= ''.
- Display::getMdiIcon(ObjectIcon::INVITATION, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Invite friends')).get_lang('Invite friends').'';
+ Display::getMdiIcon(ObjectIcon::INVITATION, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Invite friends')).get_lang('Invite friends').'';
if (self::canLeave($group_info)) {
$links .= ''.
Display::getMdiIcon(ActionIcon::EXIT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Leave group')).get_lang('Leave group').'';
@@ -2619,10 +2649,10 @@ public function show_group_column_information($group_id, $user_id, $show = '')
//$links .= ''. Display::getMdiIcon(ObjectIcon::GROUP, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Members list')).'';
if (GROUP_PERMISSION_CLOSED == $group_info['visibility']) {
$links .= ''.
- Display::getMdiIcon(ObjectIcon::WAITING_LIST, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Waiting list')).get_lang('Waiting list').'';
+ Display::getMdiIcon(ObjectIcon::WAITING_LIST, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Waiting list')).get_lang('Waiting list').'';
}
$links .= ''.
- Display::getMdiIcon(ObjectIcon::INVITATION, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Invite friends')).get_lang('Invite friends').'';
+ Display::getMdiIcon(ObjectIcon::INVITATION, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Invite friends')).get_lang('Invite friends').'';
if (self::canLeave($group_info)) {
$links .= ''.
Display::getMdiIcon(ActionIcon::EXIT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Leave group')).get_lang('Leave group').'';
@@ -2631,15 +2661,15 @@ public function show_group_column_information($group_id, $user_id, $show = '')
case GROUP_USER_PERMISSION_HRM:
$relation_group_title = get_lang('I am a human resources manager');
$links .= ''.
- Display::getMdiIcon(ActionIcon::EDIT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Create thread')).get_lang('Create thread').'';
+ Display::getMdiIcon(ActionIcon::EDIT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Create thread')).get_lang('Create thread').'';
$links .= ''.
- Display::getMdiIcon(ToolIcon::MESSAGE, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Messages list')).get_lang('Messages list').'';
+ Display::getMdiIcon(ToolIcon::MESSAGE, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Messages list')).get_lang('Messages list').'';
$links .= ''.
- Display::getMdiIcon(ObjectIcon::INVITATION, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Invite friends')).get_lang('Invite friends').'';
+ Display::getMdiIcon(ObjectIcon::INVITATION, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Invite friends')).get_lang('Invite friends').'';
$links .= ''.
- Display::getMdiIcon(ObjectIcon::GROUP, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Members list')).get_lang('Members list').'';
+ Display::getMdiIcon(ObjectIcon::GROUP, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Members list')).get_lang('Members list').'';
$links .= ''.
- Display::getMdiIcon(ActionIcon::EXIT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Leave group')).get_lang('Leave group').'';
+ Display::getMdiIcon(ActionIcon::EXIT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Leave group')).get_lang('Leave group').'';
break;
default:
//$links .= ''.Display::return_icon('addd.gif', get_lang('Join group'), array('hspace'=>'6')).'';
diff --git a/public/main/user/class.php b/public/main/user/class.php
index 7d85ad189a3..c9179ae6111 100644
--- a/public/main/user/class.php
+++ b/public/main/user/class.php
@@ -111,6 +111,17 @@
Display::addFlash(Display::return_message(get_lang('Deleted')));
}
break;
+ case 'remove_only_class_from_course':
+ $id = $_GET['id'];
+ if (!empty($id)) {
+ $usergroup->unsubscribe_only_courses_from_usergroup(
+ $id,
+ [api_get_course_int_id()]
+ );
+ Display::addFlash(Display::return_message(get_lang('Removed')));
+ }
+ break;
+
}
}