From 2c368601949441fff1b3beb91135d98538f82f82 Mon Sep 17 00:00:00 2001 From: Chamilo-UGA Date: Tue, 30 Sep 2025 08:57:33 +0200 Subject: [PATCH 1/2] desinscrire une classe --- public/main/inc/ajax/model.ajax.php | 63 +++++++++----- public/main/inc/lib/usergroup.lib.php | 116 +++++++++++++------------- public/main/user/class.php | 13 ++- 3 files changed, 110 insertions(+), 82 deletions(-) diff --git a/public/main/inc/ajax/model.ajax.php b/public/main/inc/ajax/model.ajax.php index 298136e4ade..4662c6f2e2c 100644 --- a/public/main/inc/ajax/model.ajax.php +++ b/public/main/inc/ajax/model.ajax.php @@ -2,13 +2,13 @@ /* For licensing terms, see /license.txt */ -use Chamilo\CoreBundle\Enums\ActionIcon; -use Chamilo\CoreBundle\Enums\ObjectIcon; -use Chamilo\CoreBundle\Enums\StateIcon; -use Chamilo\CoreBundle\Enums\ToolIcon; use Chamilo\CoreBundle\Framework\Container; use Chamilo\CourseBundle\Entity\CQuizCategory; use ChamiloSession as Session; +use Chamilo\CoreBundle\Component\Utils\ActionIcon; +use Chamilo\CoreBundle\Component\Utils\ToolIcon; +use Chamilo\CoreBundle\Component\Utils\ObjectIcon; +use Chamilo\CoreBundle\Component\Utils\StateIcon; require_once __DIR__.'/../global.inc.php'; @@ -312,7 +312,7 @@ function getWhereClause($col, $oper, $val) break; case 'get_usergroups_users': $usergroup = new UserGroupModel(); - $usergroup->protectScript(null, true, true); +// $usergroup->protectScript(null, true, true); $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0; $count = $usergroup->getUserGroupUsers($id, true); break; @@ -1226,7 +1226,7 @@ function getWhereClause($col, $oper, $val) $column_names = [ get_lang('Course'), get_lang('User'), - get_lang('E-mail'), + get_lang('e-mail'), get_lang('Man hours'), get_lang('Generated certificate'), get_lang('Approved'), @@ -1440,7 +1440,7 @@ function getWhereClause($col, $oper, $val) break; case 'get_work_user_list_all': $plagiarismColumns = []; - if (('true' === api_get_setting('work.allow_compilatio_tool'))) { + if (('true' === api_get_setting('document.allow_compilatio_tool'))) { $plagiarismColumns = ['compilatio']; } if (isset($_GET['type']) && 'simple' === $_GET['type']) { @@ -1485,7 +1485,7 @@ function getWhereClause($col, $oper, $val) exit; } $plagiarismColumns = []; - if (('true' === api_get_setting('work.allow_compilatio_tool'))) { + if (('true' === api_get_setting('document.allow_compilatio_tool'))) { $plagiarismColumns = ['compilatio']; } $columns = [ @@ -1514,7 +1514,7 @@ function getWhereClause($col, $oper, $val) break; case 'get_work_user_list_others': $plagiarismColumns = []; - if (('true' === api_get_setting('work.allow_compilatio_tool'))) { + if (('true' === api_get_setting('document.allow_compilatio_tool'))) { $plagiarismColumns = ['compilatio']; } @@ -1554,7 +1554,7 @@ function getWhereClause($col, $oper, $val) break; case 'get_work_user_list': $plagiarismColumns = []; - if (('true' === api_get_setting('work.allow_compilatio_tool')) && api_is_allowed_to_edit()) { + if (('true' === api_get_setting('document.allow_compilatio_tool')) && api_is_allowed_to_edit()) { $plagiarismColumns = ['compilatio']; } if (isset($_GET['type']) && 'simple' == $_GET['type']) { @@ -1859,7 +1859,7 @@ function getWhereClause($col, $oper, $val) 'ch-tool-icon', null, ICON_SIZE_SMALL, - get_lang('Certificate of achievement') + get_lang('CertificateOfAchievement') ); foreach ($sessions as $session) { $sessionEntity = api_get_session_entity($session['id']); @@ -1903,7 +1903,7 @@ function getWhereClause($col, $oper, $val) ['target' => '_blank'] ); $detailButtons[] = Display::url( - Display::getMdiIcon(ObjectIcon::ASSIGNMENT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Assignments report')), + Display::getMdiIcon(ObjectIcon::ASSIGNMENT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('WorksReport')), api_get_path(WEB_CODE_PATH).'my_space/works_in_session_report.php?session='.$session['id'] ); $detailButtons[] = Display::url( @@ -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']) { @@ -2609,12 +2621,19 @@ function getWhereClause($col, $oper, $val) if ($isAllow) { if ($obj->allowTeachers() && $group['author_id'] == $currentUserId) { - $group['actions'] .= Display::url( + $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..fe4614010bb 100644 --- a/public/main/inc/lib/usergroup.lib.php +++ b/public/main/inc/lib/usergroup.lib.php @@ -4,11 +4,11 @@ use Chamilo\CoreBundle\Entity\ResourceFile; use Chamilo\CoreBundle\Entity\Usergroup; -use Chamilo\CoreBundle\Enums\ActionIcon; -use Chamilo\CoreBundle\Enums\ObjectIcon; -use Chamilo\CoreBundle\Enums\ToolIcon; use Chamilo\CoreBundle\Framework\Container; use Symfony\Component\HttpFoundation\File\UploadedFile; +use Chamilo\CoreBundle\Component\Utils\ActionIcon; +use Chamilo\CoreBundle\Component\Utils\ObjectIcon; +use Chamilo\CoreBundle\Component\Utils\ToolIcon; /** * Class UserGroup. @@ -206,20 +206,6 @@ public function getUserGroupUsers($id, $getCount = false, $start = 0, $limit = 0 } } - /** - * Returns all user groups (id + title), ordered by title. - * This method ignores multi-URL restrictions because it's used - * for initial assignment of groups to access URLs. - */ - public function getAllUserGroups(): array - { - $sql = "SELECT id, title FROM {$this->table} ORDER BY title"; - - $stmt = Database::getManager()->getConnection()->executeQuery($sql); - - return Database::store_result($stmt, 'ASSOC'); - } - /** * @param string $extraWhereCondition * @@ -1209,6 +1195,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. * @@ -1317,8 +1333,6 @@ public function subscribe_users_to_usergroup( } /** - * @deprecated Use UsergroupRepository::getByTitleInUrl(). - * * @param string $title * * @return bool @@ -1516,34 +1530,36 @@ public function filterByFirstLetter($firstLetter, $limit = 0) /** * Select user group not in list. + * + * @param array $list + * + * @return array */ - public function getUserGroupNotInList(array $list, int $accessUrlId): array + public function getUserGroupNotInList($list) { - $params = []; + if (empty($list)) { + return []; + } - $sql = "SELECT g.* - FROM {$this->table} g"; + $list = array_map('intval', $list); + $listToString = implode("','", $list); + $sql = 'SELECT * '; + $urlCondition = ''; if ($this->getUseMultipleUrl()) { - $sql .= " LEFT JOIN {$this->access_url_rel_usergroup} a - ON (g.id = a.usergroup_id AND a.access_url_id = ?)"; - $params[] = $accessUrlId; - $sql .= " WHERE a.usergroup_id IS NULL"; + $urlId = api_get_current_access_url_id(); + $sql .= " FROM $this->table g + INNER JOIN $this->access_url_rel_usergroup a + ON (g.id = a.usergroup_id)"; + $urlCondition = " AND access_url_id = $urlId "; } else { - $sql .= " WHERE 1=1"; - } - - if (!empty($list)) { - $placeholders = implode(',', array_fill(0, count($list), '?')); - $sql .= " AND g.id NOT IN ($placeholders)"; - $params = array_merge($params, array_map('intval', $list)); + $sql = " FROM $this->table g "; } - $sql .= " ORDER BY g.title"; - - $stmt = Database::getManager()->getConnection()->executeQuery($sql, $params); + $sql .= " WHERE g.id NOT IN ('$listToString') $urlCondition "; + $result = Database::query($sql); - return Database::store_result($stmt, 'ASSOC'); + return Database::store_result($result, 'ASSOC'); } /** @@ -1557,8 +1573,8 @@ public function save($params, $showQuery = false) $params['updated_at'] = $params['created_at'] = api_get_utc_datetime(); $params['group_type'] = isset($params['group_type']) ? Usergroup::SOCIAL_CLASS : Usergroup::NORMAL_CLASS; $params['allow_members_leave_group'] = isset($params['allow_members_leave_group']) ? 1 : 0; - $params['url'] = $params['url'] ?? ""; - $params['visibility'] = $params['visibility'] ?? Usergroup::GROUP_PERMISSION_OPEN; + $params['url'] = isset($params['url']) ? $params['url'] : ""; + $params['visibility'] = isset($params['visibility']) ? $params['visibility'] : Usergroup::GROUP_PERMISSION_OPEN; $userGroupExists = $this->usergroup_exists(trim($params['title'])); if (false === $userGroupExists) { @@ -1853,7 +1869,7 @@ public function setForm($form, $type = 'add', Usergroup $userGroup = null) } // url - $form->addText('url', get_lang('URL'), false); + $form->addText('url', get_lang('Url'), false); // Picture //$allowed_picture_types = $this->getAllowedPictureExtensions(); @@ -3084,22 +3100,4 @@ public function getGroupsByLpCategory($categoryId, $courseId, $sessionId) return Database::store_result($result, 'ASSOC'); } - - public static function getRoleName($relation) - { - switch ((int) $relation) { - case GROUP_USER_PERMISSION_ADMIN: - return get_lang('Admin'); - case GROUP_USER_PERMISSION_READER: - return get_lang('Reader'); - case GROUP_USER_PERMISSION_PENDING_INVITATION: - return get_lang('Pending invitation'); - case GROUP_USER_PERMISSION_MODERATOR: - return get_lang('Moderator'); - case GROUP_USER_PERMISSION_HRM: - return get_lang('Human Resources Manager'); - default: - return get_lang('Custom or undefined role'); - } - } } diff --git a/public/main/user/class.php b/public/main/user/class.php index 7d85ad189a3..b44de341881 100644 --- a/public/main/user/class.php +++ b/public/main/user/class.php @@ -2,7 +2,7 @@ /* For licensing terms, see /license.txt */ -use Chamilo\CoreBundle\Enums\ActionIcon; +use Chamilo\CoreBundle\Component\Utils\ActionIcon; require_once __DIR__.'/../inc/global.inc.php'; $this_section = SECTION_COURSES; @@ -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; + } } From 3f7530e6d44088b868346863380f41b840f35a4d Mon Sep 17 00:00:00 2001 From: Chamilo-UGA Date: Tue, 30 Sep 2025 09:35:49 +0200 Subject: [PATCH 2/2] in course unsubscribe class keeping student registered in course --- public/main/inc/ajax/model.ajax.php | 26 +++--- public/main/inc/lib/usergroup.lib.php | 112 +++++++++++++++++--------- public/main/user/class.php | 2 +- 3 files changed, 86 insertions(+), 54 deletions(-) diff --git a/public/main/inc/ajax/model.ajax.php b/public/main/inc/ajax/model.ajax.php index 4662c6f2e2c..6854fdd9408 100644 --- a/public/main/inc/ajax/model.ajax.php +++ b/public/main/inc/ajax/model.ajax.php @@ -2,13 +2,13 @@ /* For licensing terms, see /license.txt */ +use Chamilo\CoreBundle\Enums\ActionIcon; +use Chamilo\CoreBundle\Enums\ObjectIcon; +use Chamilo\CoreBundle\Enums\StateIcon; +use Chamilo\CoreBundle\Enums\ToolIcon; use Chamilo\CoreBundle\Framework\Container; use Chamilo\CourseBundle\Entity\CQuizCategory; use ChamiloSession as Session; -use Chamilo\CoreBundle\Component\Utils\ActionIcon; -use Chamilo\CoreBundle\Component\Utils\ToolIcon; -use Chamilo\CoreBundle\Component\Utils\ObjectIcon; -use Chamilo\CoreBundle\Component\Utils\StateIcon; require_once __DIR__.'/../global.inc.php'; @@ -312,7 +312,7 @@ function getWhereClause($col, $oper, $val) break; case 'get_usergroups_users': $usergroup = new UserGroupModel(); -// $usergroup->protectScript(null, true, true); + $usergroup->protectScript(null, true, true); $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0; $count = $usergroup->getUserGroupUsers($id, true); break; @@ -1226,7 +1226,7 @@ function getWhereClause($col, $oper, $val) $column_names = [ get_lang('Course'), get_lang('User'), - get_lang('e-mail'), + get_lang('E-mail'), get_lang('Man hours'), get_lang('Generated certificate'), get_lang('Approved'), @@ -1440,7 +1440,7 @@ function getWhereClause($col, $oper, $val) break; case 'get_work_user_list_all': $plagiarismColumns = []; - if (('true' === api_get_setting('document.allow_compilatio_tool'))) { + if (('true' === api_get_setting('work.allow_compilatio_tool'))) { $plagiarismColumns = ['compilatio']; } if (isset($_GET['type']) && 'simple' === $_GET['type']) { @@ -1485,7 +1485,7 @@ function getWhereClause($col, $oper, $val) exit; } $plagiarismColumns = []; - if (('true' === api_get_setting('document.allow_compilatio_tool'))) { + if (('true' === api_get_setting('work.allow_compilatio_tool'))) { $plagiarismColumns = ['compilatio']; } $columns = [ @@ -1514,7 +1514,7 @@ function getWhereClause($col, $oper, $val) break; case 'get_work_user_list_others': $plagiarismColumns = []; - if (('true' === api_get_setting('document.allow_compilatio_tool'))) { + if (('true' === api_get_setting('work.allow_compilatio_tool'))) { $plagiarismColumns = ['compilatio']; } @@ -1554,7 +1554,7 @@ function getWhereClause($col, $oper, $val) break; case 'get_work_user_list': $plagiarismColumns = []; - if (('true' === api_get_setting('document.allow_compilatio_tool')) && api_is_allowed_to_edit()) { + if (('true' === api_get_setting('work.allow_compilatio_tool')) && api_is_allowed_to_edit()) { $plagiarismColumns = ['compilatio']; } if (isset($_GET['type']) && 'simple' == $_GET['type']) { @@ -1859,7 +1859,7 @@ function getWhereClause($col, $oper, $val) 'ch-tool-icon', null, ICON_SIZE_SMALL, - get_lang('CertificateOfAchievement') + get_lang('Certificate of achievement') ); foreach ($sessions as $session) { $sessionEntity = api_get_session_entity($session['id']); @@ -1903,7 +1903,7 @@ function getWhereClause($col, $oper, $val) ['target' => '_blank'] ); $detailButtons[] = Display::url( - Display::getMdiIcon(ObjectIcon::ASSIGNMENT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('WorksReport')), + Display::getMdiIcon(ObjectIcon::ASSIGNMENT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Assignments report')), api_get_path(WEB_CODE_PATH).'my_space/works_in_session_report.php?session='.$session['id'] ); $detailButtons[] = Display::url( @@ -2621,7 +2621,7 @@ function getWhereClause($col, $oper, $val) if ($isAllow) { if ($obj->allowTeachers() && $group['author_id'] == $currentUserId) { - $group['actions'] = Display::url( + $group['actions'] .= Display::url( Display::getMdiIcon(ToolIcon::TRACKING, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Statistics')), $urlUserGroup . '&id=' . $group['id'] ) . ' '; diff --git a/public/main/inc/lib/usergroup.lib.php b/public/main/inc/lib/usergroup.lib.php index fe4614010bb..40ef727ed50 100644 --- a/public/main/inc/lib/usergroup.lib.php +++ b/public/main/inc/lib/usergroup.lib.php @@ -4,11 +4,11 @@ use Chamilo\CoreBundle\Entity\ResourceFile; use Chamilo\CoreBundle\Entity\Usergroup; +use Chamilo\CoreBundle\Enums\ActionIcon; +use Chamilo\CoreBundle\Enums\ObjectIcon; +use Chamilo\CoreBundle\Enums\ToolIcon; use Chamilo\CoreBundle\Framework\Container; use Symfony\Component\HttpFoundation\File\UploadedFile; -use Chamilo\CoreBundle\Component\Utils\ActionIcon; -use Chamilo\CoreBundle\Component\Utils\ObjectIcon; -use Chamilo\CoreBundle\Component\Utils\ToolIcon; /** * Class UserGroup. @@ -206,6 +206,20 @@ public function getUserGroupUsers($id, $getCount = false, $start = 0, $limit = 0 } } + /** + * Returns all user groups (id + title), ordered by title. + * This method ignores multi-URL restrictions because it's used + * for initial assignment of groups to access URLs. + */ + public function getAllUserGroups(): array + { + $sql = "SELECT id, title FROM {$this->table} ORDER BY title"; + + $stmt = Database::getManager()->getConnection()->executeQuery($sql); + + return Database::store_result($stmt, 'ASSOC'); + } + /** * @param string $extraWhereCondition * @@ -1333,6 +1347,8 @@ public function subscribe_users_to_usergroup( } /** + * @deprecated Use UsergroupRepository::getByTitleInUrl(). + * * @param string $title * * @return bool @@ -1530,36 +1546,34 @@ public function filterByFirstLetter($firstLetter, $limit = 0) /** * Select user group not in list. - * - * @param array $list - * - * @return array */ - public function getUserGroupNotInList($list) + public function getUserGroupNotInList(array $list, int $accessUrlId): array { - if (empty($list)) { - return []; - } + $params = []; - $list = array_map('intval', $list); - $listToString = implode("','", $list); + $sql = "SELECT g.* + FROM {$this->table} g"; - $sql = 'SELECT * '; - $urlCondition = ''; if ($this->getUseMultipleUrl()) { - $urlId = api_get_current_access_url_id(); - $sql .= " FROM $this->table g - INNER JOIN $this->access_url_rel_usergroup a - ON (g.id = a.usergroup_id)"; - $urlCondition = " AND access_url_id = $urlId "; + $sql .= " LEFT JOIN {$this->access_url_rel_usergroup} a + ON (g.id = a.usergroup_id AND a.access_url_id = ?)"; + $params[] = $accessUrlId; + $sql .= " WHERE a.usergroup_id IS NULL"; } else { - $sql = " FROM $this->table g "; + $sql .= " WHERE 1=1"; } - $sql .= " WHERE g.id NOT IN ('$listToString') $urlCondition "; - $result = Database::query($sql); + if (!empty($list)) { + $placeholders = implode(',', array_fill(0, count($list), '?')); + $sql .= " AND g.id NOT IN ($placeholders)"; + $params = array_merge($params, array_map('intval', $list)); + } - return Database::store_result($result, 'ASSOC'); + $sql .= " ORDER BY g.title"; + + $stmt = Database::getManager()->getConnection()->executeQuery($sql, $params); + + return Database::store_result($stmt, 'ASSOC'); } /** @@ -1573,8 +1587,8 @@ public function save($params, $showQuery = false) $params['updated_at'] = $params['created_at'] = api_get_utc_datetime(); $params['group_type'] = isset($params['group_type']) ? Usergroup::SOCIAL_CLASS : Usergroup::NORMAL_CLASS; $params['allow_members_leave_group'] = isset($params['allow_members_leave_group']) ? 1 : 0; - $params['url'] = isset($params['url']) ? $params['url'] : ""; - $params['visibility'] = isset($params['visibility']) ? $params['visibility'] : Usergroup::GROUP_PERMISSION_OPEN; + $params['url'] = $params['url'] ?? ""; + $params['visibility'] = $params['visibility'] ?? Usergroup::GROUP_PERMISSION_OPEN; $userGroupExists = $this->usergroup_exists(trim($params['title'])); if (false === $userGroupExists) { @@ -1815,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 "; @@ -1854,7 +1868,7 @@ public function setForm($form, $type = 'add', Usergroup $userGroup = null) true, false, [ - 'ToolbarSet' => 'Minimal', + 'ToolbarSet' => 'Minimal', ] ); $form->applyFilter('description', 'trim'); @@ -1869,7 +1883,7 @@ public function setForm($form, $type = 'add', Usergroup $userGroup = null) } // url - $form->addText('url', get_lang('Url'), false); + $form->addText('url', get_lang('URL'), false); // Picture //$allowed_picture_types = $this->getAllowedPictureExtensions(); @@ -2603,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').'
  • '; @@ -2612,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').'
  • '; @@ -2635,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').'
  • '; @@ -2647,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')).'
  • '; @@ -3100,4 +3114,22 @@ public function getGroupsByLpCategory($categoryId, $courseId, $sessionId) return Database::store_result($result, 'ASSOC'); } + + public static function getRoleName($relation) + { + switch ((int) $relation) { + case GROUP_USER_PERMISSION_ADMIN: + return get_lang('Admin'); + case GROUP_USER_PERMISSION_READER: + return get_lang('Reader'); + case GROUP_USER_PERMISSION_PENDING_INVITATION: + return get_lang('Pending invitation'); + case GROUP_USER_PERMISSION_MODERATOR: + return get_lang('Moderator'); + case GROUP_USER_PERMISSION_HRM: + return get_lang('Human Resources Manager'); + default: + return get_lang('Custom or undefined role'); + } + } } diff --git a/public/main/user/class.php b/public/main/user/class.php index b44de341881..c9179ae6111 100644 --- a/public/main/user/class.php +++ b/public/main/user/class.php @@ -2,7 +2,7 @@ /* For licensing terms, see /license.txt */ -use Chamilo\CoreBundle\Component\Utils\ActionIcon; +use Chamilo\CoreBundle\Enums\ActionIcon; require_once __DIR__.'/../inc/global.inc.php'; $this_section = SECTION_COURSES;