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')).''.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; + } }