Fix group id after migration see BT#12609

pull/2487/head
jmontoyaa 9 years ago
parent 0daa9b46b5
commit 3c285f525f
  1. 2
      main/announcements/announcements.php
  2. 2
      main/calendar/agenda_js.php
  3. 10
      main/document/document.php
  4. 2
      main/document/edit_document.php
  5. 2
      main/document/upload.php
  6. 2
      main/forum/editpost.php
  7. 15
      main/forum/forumfunction.inc.php
  8. 6
      main/forum/viewforum.php
  9. 4
      main/forum/viewthread.php
  10. 6
      main/forum/viewthread_flat.inc.php
  11. 2
      main/forum/viewthread_nested.inc.php
  12. 4
      main/forum/viewthread_threaded.inc.php
  13. 19
      main/group/group.php
  14. 2
      main/group/group_creation.php
  15. 14
      main/group/group_edit.php
  16. 51
      main/group/group_space.php
  17. 14
      main/group/member_settings.php
  18. 2
      main/group/settings.php
  19. 11
      main/group/tutor_settings.php
  20. 2
      main/inc/ajax/document.ajax.php
  21. 2
      main/inc/ajax/forum.ajax.php
  22. 8
      main/inc/lib/agenda.lib.php
  23. 14
      main/inc/lib/course.lib.php
  24. 265
      main/inc/lib/groupmanager.lib.php
  25. 2
      main/inc/lib/javascript/svgedit/extensions/imagelib/groups.php
  26. 12
      main/inc/lib/sessionmanager.lib.php
  27. 2
      main/inc/lib/svg-edit/extensions/imagelib/groups.php
  28. 1
      main/social/profile.php
  29. 2
      main/wiki/index.php
  30. 30
      main/wiki/wiki.inc.php
  31. 6
      main/work/work.lib.php

@ -436,7 +436,7 @@ switch ($action) {
$element = CourseManager::addUserGroupMultiSelect($form, array());
} else {
$element = CourseManager::addGroupMultiSelect($form, $group_properties['iid'], array());
$element = CourseManager::addGroupMultiSelect($form, $group_properties, array());
}
$form->addHtml('</div>');

@ -55,7 +55,7 @@ $courseId = api_get_course_int_id();
if (!empty($group_id)) {
$group_properties = GroupManager::get_group_properties($group_id);
$is_group_tutor = GroupManager::is_tutor_of_group(api_get_user_id(), $group_properties['iid']);
$is_group_tutor = GroupManager::is_tutor_of_group(api_get_user_id(), $group_properties);
$interbreadcrumb[] = array(
"url" => api_get_path(WEB_CODE_PATH)."group/group.php?".api_get_cidreq(),
"name" => get_lang('Groups')

@ -160,7 +160,7 @@ if (!empty($groupId)) {
$groupIid = isset($group_properties['iid']) ? $group_properties['iid'] : 0;
$isTutorGroup = GroupManager::is_tutor_of_group(
$userId,
$group_properties['iid'],
$group_properties,
$courseId
);
$groupMemberWithEditRights = $isAllowedToEdit || $isTutorGroup;
@ -170,7 +170,7 @@ if (!empty($groupId)) {
if ($group_properties['doc_state'] == 2) {
// Documents are private
if ($isAllowedToEdit || GroupManager::is_user_in_group($userId, $group_properties['iid'])) {
if ($isAllowedToEdit || GroupManager::is_user_in_group($userId, $group_properties)) {
// Only courseadmin or group members (members + tutors) allowed
$interbreadcrumb[] = array(
'url' => api_get_path(WEB_CODE_PATH).'group/group.php?'.api_get_cidreq(),
@ -198,8 +198,8 @@ if (!empty($groupId)) {
// Allowed to upload?
if ($isAllowedToEdit ||
GroupManager::is_subscribed($userId, $group_properties['iid']) ||
GroupManager::is_tutor_of_group($userId, $group_properties['iid'], $courseId)
GroupManager::is_subscribed($userId, $group_properties) ||
GroupManager::is_tutor_of_group($userId, $group_properties, $courseId)
) {
// Only course admin or group members can upload
$group_member_with_upload_rights = true;
@ -1975,7 +1975,7 @@ if (!$is_certificate_mode && !isset($_GET['move'])) {
$selector = DocumentManager::build_directory_selector(
$folders,
$document_id,
(isset($group_properties['directory']) ? $group_properties['directory'] : array())
(isset($group_properties['directory']) ? $group_properties['directory'] : array())
);
}

@ -425,7 +425,7 @@ if ($owner_id == api_get_user_id() ||
api_is_platform_admin() ||
$is_allowed_to_edit || GroupManager:: is_user_in_group(
api_get_user_id(),
$groupInfo['iid']
$groupInfo
)
) {
$action = api_get_self().'?id='.$document_data['id'].'&'.api_get_cidreq();

@ -112,7 +112,7 @@ if (!empty($groupId)) {
$groupIid = $group_properties['iid'];
// Only courseadmin or group members allowed
if ($is_allowed_to_edit || GroupManager::is_user_in_group(api_get_user_id(), $group_properties['iid'])) {
if ($is_allowed_to_edit || GroupManager::is_user_in_group(api_get_user_id(), $group_properties)) {
$interbreadcrumb[] = array(
'url' => api_get_path(WEB_CODE_PATH).'group/group_space.php?'.api_get_cidreq(),
'name' => get_lang('GroupSpace'),

@ -165,7 +165,7 @@ $group_id = api_get_group_id();
if (!api_is_allowed_to_edit(null, true) &&
$current_forum['allow_edit'] == 0 &&
!GroupManager::is_tutor_of_group(api_get_user_id(), $group_properties['iid'])
!GroupManager::is_tutor_of_group(api_get_user_id(), $group_properties)
) {
api_not_allowed(true);
}

@ -1817,12 +1817,18 @@ function get_threads($forum_id, $courseId = null, $sessionId = null)
$courseId = $courseId !== null ? intval($courseId) : api_get_course_int_id();
$groupInfo = GroupManager::get_group_properties($groupId);
$groupCondition = '';
if (!empty($groupInfo)) {
$groupIid = $groupInfo['iid'];
$groupCondition = " AND item_properties.to_group_id = '$groupIid' ";
}
$sessionCondition = api_get_session_condition($sessionId, true, false, 'item_properties.session_id');
$sessionCondition = api_get_session_condition(
$sessionId,
true,
false,
'item_properties.session_id'
);
// important note: it might seem a little bit awkward that we have 'thread.locked as locked' in the sql statement
// because we also have thread.* in it. This is because thread has a field locked and post also has the same field
@ -1874,6 +1880,7 @@ function get_threads($forum_id, $courseId = null, $sessionId = null)
thread.forum_id = ".intval($forum_id)." AND
thread.c_id = $courseId
ORDER BY thread.thread_sticky DESC, thread.thread_date DESC";
}
$result = Database::query($sql);
$list = array();
@ -1964,7 +1971,7 @@ function getPosts(
$filterModerated = false;
}
} else {
if (GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo['iid']) || api_is_allowed_to_edit(false, true)) {
if (GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo) || api_is_allowed_to_edit(false, true)) {
$filterModerated = false;
}
}
@ -4915,14 +4922,14 @@ function delete_attachment($post_id, $id_attach = 0, $display = true)
*
* @todo this is basically the same code as the get_forums function. Consider merging the two.
*/
function get_forums_of_group($groupId)
function get_forums_of_group($groupInfo)
{
$table_forums = Database :: get_course_table(TABLE_FORUM);
$table_threads = Database :: get_course_table(TABLE_FORUM_THREAD);
$table_posts = Database :: get_course_table(TABLE_FORUM_POST);
$table_item_property = Database :: get_course_table(TABLE_ITEM_PROPERTY);
$course_id = api_get_course_int_id();
$groupId = (int) $groupId;
$groupId = (int) $groupInfo['id'];
// Student
// Select all the forum information of all forums (that are visible to students).

@ -47,8 +47,7 @@ $sessionId = api_get_session_id();
$groupId = api_get_group_id();
$courseId = api_get_course_int_id();
$groupInfo = GroupManager::get_group_properties($groupId);
$isTutor = GroupManager::is_tutor_of_group($userId, $groupInfo['iid'], $courseId);
$isTutor = GroupManager::is_tutor_of_group($userId, $groupInfo, $courseId);
/* MAIN DISPLAY SECTION */
@ -83,7 +82,7 @@ if (!empty($groupId)) {
);
$is_group_tutor = GroupManager::is_tutor_of_group(
api_get_user_id(),
$group_properties['iid']
$group_properties
);
// Course
@ -440,6 +439,7 @@ echo '<div class="forum_display">';
if (is_array($threads)) {
$html = '';
$count = 1;
foreach ($threads as $row) {
// Thread who have no replies yet and the only post is invisible should not be displayed to students.
if (api_is_allowed_to_edit(false, true) ||

@ -139,14 +139,14 @@ if (
isset($_GET['content']) &&
isset($_GET['id']) &&
(api_is_allowed_to_edit(false, true) ||
(isset($group_properties['iid']) && GroupManager::is_tutor_of_group(api_get_user_id(), $group_properties['iid'])))
(isset($group_properties['iid']) && GroupManager::is_tutor_of_group(api_get_user_id(), $group_properties)))
) {
$message = delete_post($_GET['id']);
}
if (($my_action == 'invisible' || $my_action == 'visible') &&
isset($_GET['id']) &&
(api_is_allowed_to_edit(false, true) ||
(isset($group_properties['iid']) && GroupManager::is_tutor_of_group(api_get_user_id(), $group_properties['iid'])))
(isset($group_properties['iid']) && GroupManager::is_tutor_of_group(api_get_user_id(), $group_properties)))
) {
$message = approve_post($_GET['id'], $_GET['action']);
}

@ -163,7 +163,7 @@ if (isset($current_thread['thread_id'])) {
// this in the properties of the forum
// The course admin him/herself can do this off course always
$groupInfo = GroupManager::get_group_properties($groupId);
if ((isset($groupInfo['iid']) && GroupManager::is_tutor_of_group($userId, $groupInfo['iid'])) ||
if ((isset($groupInfo['iid']) && GroupManager::is_tutor_of_group($userId, $groupInfo)) ||
($current_forum['allow_edit'] == 1 && $row['user_id'] == $_user['user_id']) ||
(
api_is_allowed_to_edit(false, true) &&
@ -181,7 +181,7 @@ if (isset($current_thread['thread_id'])) {
}
if ($origin != 'learnpath') {
if (GroupManager::is_tutor_of_group($userId, $groupInfo['iid']) ||
if (GroupManager::is_tutor_of_group($userId, $groupInfo) ||
api_is_allowed_to_edit(false, true) &&
!(api_is_course_coach() && $current_forum['session_id'] != $sessionId)
) {
@ -207,7 +207,7 @@ if (isset($current_thread['thread_id'])) {
}
if (
GroupManager::is_tutor_of_group($userId, $groupInfo['iid']) ||
GroupManager::is_tutor_of_group($userId, $groupInfo) ||
(api_is_allowed_to_edit(false, true) &&
!(api_is_course_coach() && $current_forum['session_id'] != $sessionId)
)

@ -113,7 +113,7 @@ foreach ($rows as $post) {
// The user who posted it can edit his thread only if the course admin allowed this in the properties of the forum
// The course admin him/herself can do this off course always
$tutorGroup = GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo['iid']);
$tutorGroup = GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo);
if ((isset($groupInfo['iid']) && $tutorGroup) ||
($current_forum['allow_edit'] == 1 && $post['user_id'] == $userId) ||

@ -237,7 +237,7 @@ $groupInfo = GroupManager::get_group_properties($groupId);
// The user who posted it can edit his thread only if the course admin allowed this in the properties of the forum
// The course admin him/herself can do this off course always
if (
(isset($groupInfo['iid']) && GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo['iid'])) || (
(isset($groupInfo['iid']) && GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo)) || (
$current_forum['allow_edit'] == 1 &&
$row['user_id'] == $_user['user_id']
) || (
@ -277,7 +277,7 @@ if (!empty($my_post) && is_array($my_post)) {
}
if (
(isset($groupInfo['iid']) && GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo['iid'])) ||
(isset($groupInfo['iid']) && GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo)) ||
api_is_allowed_to_edit(false, true) &&
!(api_is_course_coach() && $current_forum['session_id'] != $sessionId)
) {

@ -72,8 +72,8 @@ if (isset($_GET['action']) && $is_allowed_in_course) {
}
break;
case 'self_reg':
if (GroupManager::is_self_registration_allowed($userId, $groupInfo['iid'])) {
GroupManager::subscribe_users($userId, $groupInfo['iid']);
if (GroupManager::is_self_registration_allowed($userId, $groupInfo)) {
GroupManager::subscribe_users($userId, $groupInfo);
Display::addFlash(Display::return_message(get_lang('GroupNowMember')));
header("Location: $currentUrl");
exit;
@ -84,9 +84,8 @@ if (isset($_GET['action']) && $is_allowed_in_course) {
}
break;
case 'self_unreg':
if (GroupManager::is_self_unregistration_allowed($userId, $groupInfo['iid'])) {
GroupManager::unsubscribe_users($userId, $groupInfo['iid']);
if (GroupManager::is_self_unregistration_allowed($userId, $groupInfo)) {
GroupManager::unsubscribe_users($userId, $groupInfo);
Display::addFlash(Display::return_message(get_lang('StudentDeletesHimself')));
header("Location: $currentUrl");
exit;
@ -107,7 +106,7 @@ if (api_is_allowed_to_edit(false, true)) {
if (is_array($_POST['group'])) {
foreach ($_POST['group'] as $myGroupId) {
$groupInfo = GroupManager::get_group_properties($myGroupId);
GroupManager::delete_groups($groupInfo['iid']);
GroupManager::delete_groups($groupInfo);
}
Display::addFlash(Display::return_message(get_lang('SelectedGroupsDeleted')));
@ -119,7 +118,7 @@ if (api_is_allowed_to_edit(false, true)) {
if (is_array($_POST['group'])) {
foreach ($_POST['group'] as $myGroupId) {
$groupInfo = GroupManager::get_group_properties($myGroupId);
GroupManager :: unsubscribe_all_users($groupInfo['iid']);
GroupManager :: unsubscribe_all_users($groupInfo);
}
Display::addFlash(Display::return_message(get_lang('SelectedGroupsEmptied')));
@ -131,7 +130,7 @@ if (api_is_allowed_to_edit(false, true)) {
if (is_array($_POST['group'])) {
foreach ($_POST['group'] as $myGroupId) {
$groupInfo = GroupManager::get_group_properties($myGroupId);
GroupManager:: fill_groups($groupInfo['iid']);
GroupManager:: fill_groups($groupInfo);
}
Display::addFlash(Display::return_message(get_lang('SelectedGroupsFilled')));
header("Location: $currentUrl");
@ -152,14 +151,14 @@ if (api_is_allowed_to_edit(false, true)) {
break;
case 'delete_one':
$groupInfo = GroupManager::get_group_properties($my_get_id);
GroupManager :: delete_groups($groupInfo['iid']);
GroupManager :: delete_groups($groupInfo);
Display::addFlash(Display::return_message(get_lang('GroupDel')));
header("Location: $currentUrl");
exit;
break;
case 'fill_one':
$groupInfo = GroupManager::get_group_properties($my_get_id);
GroupManager :: fill_groups($groupInfo['iid']);
GroupManager :: fill_groups($groupInfo);
Display::addFlash(Display::return_message(get_lang('GroupFilledGroups')));
header("Location: $currentUrl");
exit;

@ -246,7 +246,7 @@ EOT;
$base_group_options = array();
$groups = GroupManager :: get_group_list();
foreach ($groups as $index => $group) {
$number_of_students = GroupManager :: number_of_students($group['iid']);
$number_of_students = GroupManager :: number_of_students($group['id']);
if ($number_of_students > 0) {
$base_group_options[$group['id']] = $group['name'].' ('.$number_of_students.' '.get_lang('Users').')';
}

@ -25,7 +25,7 @@ $nameTools = get_lang('EditGroup');
$interbreadcrumb[] = array ('url' => 'group.php?'.api_get_cidreq(), 'name' => get_lang('Groups'));
$interbreadcrumb[] = array ('url' => 'group_space.php?'.api_get_cidreq(), 'name' => $current_group['name']);
$is_group_member = GroupManager :: is_tutor_of_group(api_get_user_id(), $current_group['iid']);
$is_group_member = GroupManager :: is_tutor_of_group(api_get_user_id(), $current_group);
if (!api_is_allowed_to_edit(false, true) && !$is_group_member) {
api_not_allowed(true);
@ -132,7 +132,7 @@ $form->addText('name', get_lang('GroupName'));
// Description
$form->addElement('textarea', 'description', get_lang('Description'), array ('rows' => 6));
$complete_user_list = GroupManager :: fill_groups_list($current_group['iid']);
$complete_user_list = GroupManager :: fill_groups_list($current_group);
usort($complete_user_list, 'sort_users');
$possible_users = array();
@ -141,7 +141,7 @@ foreach ($complete_user_list as $index => $user) {
}
// Group tutors
$group_tutor_list = GroupManager :: get_subscribed_tutors($current_group['iid']);
$group_tutor_list = GroupManager :: get_subscribed_tutors($current_group);
$selected_users = array();
$selected_tutors = array();
foreach ($group_tutor_list as $index => $user) {
@ -157,7 +157,7 @@ $group_tutors_element = $form->addElement(
);
// Group members
$group_member_list = GroupManager::get_subscribed_users($current_group['iid']);
$group_member_list = GroupManager::get_subscribed_users($current_group);
$selected_users = array ();
foreach ($group_member_list as $index => $user) {
@ -335,13 +335,13 @@ if ($form->validate()) {
// Storing the tutors (we first remove all the tutors and then add only those who were selected)
GroupManager :: unsubscribe_all_tutors($current_group['iid']);
if (isset($_POST['group_tutors']) && count($_POST['group_tutors']) > 0) {
GroupManager :: subscribe_tutors($values['group_tutors'], $current_group['iid']);
GroupManager :: subscribe_tutors($values['group_tutors'], $current_group);
}
// Storing the users (we first remove all users and then add only those who were selected)
GroupManager :: unsubscribe_all_users($current_group['iid']);
GroupManager :: unsubscribe_all_users($current_group);
if (isset($_POST['group_members']) && count($_POST['group_members']) > 0) {
GroupManager :: subscribe_users($values['group_members'], $current_group['iid']);
GroupManager :: subscribe_users($values['group_members'], $current_group);
}
// Returning to the group area (note: this is inconsistent with the rest of chamilo)

@ -33,7 +33,7 @@ $interbreadcrumb[] = array('url' => 'group.php?'.api_get_cidreq(), 'name' => get
/* Ensure all private groups // Juan Carlos Raña Trabado */
$forums_of_groups = get_forums_of_group($current_group['iid']);
$forums_of_groups = get_forums_of_group($current_group);
if (!GroupManager::userHasAccessToBrowse($user_id, $current_group, api_get_session_id())) {
api_not_allowed(true);
@ -50,9 +50,9 @@ Display::display_introduction_section(TOOL_GROUP);
* User wants to register in this group
*/
if (!empty($_GET['selfReg']) &&
GroupManager :: is_self_registration_allowed($user_id, $current_group['iid'])
GroupManager :: is_self_registration_allowed($user_id, $current_group)
) {
GroupManager :: subscribe_users($user_id, $current_group['iid']);
GroupManager :: subscribe_users($user_id, $current_group);
Display :: display_normal_message(get_lang('GroupNowMember'));
}
@ -60,9 +60,9 @@ if (!empty($_GET['selfReg']) &&
* User wants to unregister from this group
*/
if (!empty($_GET['selfUnReg']) &&
GroupManager :: is_self_unregistration_allowed($user_id, $current_group['iid'])
GroupManager :: is_self_unregistration_allowed($user_id, $current_group)
) {
GroupManager::unsubscribe_users($user_id, $current_group['iid']);
GroupManager::unsubscribe_users($user_id, $current_group);
Display::display_normal_message(get_lang('StudentDeletesHimself'));
}
@ -75,7 +75,7 @@ echo '<a href="group.php">'.
* Register to group
*/
$subscribe_group = '';
if (GroupManager :: is_self_registration_allowed($user_id, $current_group['iid'])) {
if (GroupManager :: is_self_registration_allowed($user_id, $current_group)) {
$subscribe_group = '<a class="btn btn-default" href="'.api_get_self().'?selfReg=1&group_id='.$current_group['id'].'" onclick="javascript: if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES))."'".')) return false;">'.
get_lang("RegIntoGroup").'</a>';
}
@ -84,7 +84,7 @@ if (GroupManager :: is_self_registration_allowed($user_id, $current_group['iid']
* Unregister from group
*/
$unsubscribe_group = '';
if (GroupManager :: is_self_unregistration_allowed($user_id, $current_group['iid'])) {
if (GroupManager :: is_self_unregistration_allowed($user_id, $current_group)) {
$unsubscribe_group = '<a class="btn btn-default" href="'.api_get_self().'?selfUnReg=1" onclick="javascript: if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES))."'".')) return false;">'.
get_lang("StudentUnsubscribe").'</a>';
}
@ -94,7 +94,7 @@ echo '&nbsp;</div>';
$edit_url = '';
if (api_is_allowed_to_edit(false, true) ||
GroupManager::is_tutor_of_group(api_get_user_id(), $current_group['iid'])
GroupManager::is_tutor_of_group(api_get_user_id(), $current_group)
) {
$edit_url = '<a href="'.api_get_path(WEB_CODE_PATH).'group/settings.php?'.api_get_cidreq().'">'.
Display::return_icon('edit.png', get_lang('EditGroup'), '', ICON_SIZE_SMALL).'</a>';
@ -111,13 +111,14 @@ if (!empty($current_group['description'])) {
/*
* Group Tools
*/
// If the user is subscribed to the group or the user is a tutor of the group then
if (api_is_allowed_to_edit(false, true) ||
GroupManager::is_user_in_group(api_get_user_id(), $current_group['iid'])
GroupManager::is_user_in_group(api_get_user_id(), $current_group)
) {
$actions_array = array();
// Link to the forum of this group
$forums_of_groups = get_forums_of_group($current_group['iid']);
$forums_of_groups = get_forums_of_group($current_group);
if (is_array($forums_of_groups)) {
if ($current_group['forum_state'] != GroupManager::TOOL_NOT_AVAILABLE) {
@ -222,7 +223,7 @@ if (api_is_allowed_to_edit(false, true) ||
$actions_array = array();
// Link to the forum of this group
$forums_of_groups = get_forums_of_group($current_group['iid']);
$forums_of_groups = get_forums_of_group($current_group);
if (is_array($forums_of_groups)) {
if ($current_group['forum_state'] == GroupManager::TOOL_PUBLIC) {
@ -300,7 +301,7 @@ if (api_is_allowed_to_edit(false, true) ||
/*
* List all the tutors of the current group
*/
$tutors = GroupManager::get_subscribed_tutors($current_group['iid']);
$tutors = GroupManager::get_subscribed_tutors($current_group);
$tutor_info = '';
if (count($tutors) == 0) {
@ -425,6 +426,7 @@ function get_group_user_data($from, $number_of_items, $column, $direction)
// Database table definition
$table_group_user = Database:: get_course_table(TABLE_GROUP_USER);
$table_user = Database:: get_main_table(TABLE_MAIN_USER);
$tableGroup = Database:: get_course_table(TABLE_GROUP);
// Query
if (api_get_setting('show_email_addresses') === 'true') {
@ -437,12 +439,14 @@ function get_group_user_data($from, $number_of_items, $column, $direction)
user.firstname AS col2,"
)."
user.email AS col3
FROM $table_user user,
FROM $table_user user INNER JOIN
$table_group_user group_rel_user
ON (group_rel_user.user_id = user.id)
INNER JOIN $tableGroup g
ON (group_rel_user.group_id = g.id)
WHERE
group_rel_user.c_id = $course_id AND
group_rel_user.user_id = user.id AND
group_rel_user.group_id = '".$groupInfo['iid']."'
g.iid = '".$groupInfo['iid']."'
ORDER BY col$column $direction
LIMIT $from, $number_of_items";
} else {
@ -458,8 +462,12 @@ function get_group_user_data($from, $number_of_items, $column, $direction)
u.email AS col3
FROM $table_user u
INNER JOIN $table_group_user gu
ON (gu.user_id = u.id) AND gu.c_id = $course_id
WHERE gu.group_id = '".$groupInfo['iid']."'
ON (gu.user_id = u.id)
INNER JOIN $tableGroup g
ON (gu.group_id = g.id)
WHERE
g.iid = '".$groupInfo['iid']."' AND
gu.c_id = $course_id
ORDER BY col$column $direction
LIMIT $from, $number_of_items";
} else {
@ -472,11 +480,16 @@ function get_group_user_data($from, $number_of_items, $column, $direction)
"user.lastname AS col1,
user.firstname AS col2 "
)."
FROM $table_user user, $table_group_user group_rel_user
FROM $table_user user
INNER JOIN $table_group_user group_rel_user
ON (group_rel_user.user_id = user.id)
INNER JOIN $tableGroup g
ON (group_rel_user.group_id = g.id)
WHERE
g.iid = '".$groupInfo['iid']."' AND
group_rel_user.c_id = $course_id AND
group_rel_user.user_id = user.id AND
group_rel_user.group_id = '".$groupInfo['iid']."'
g.iid = '".$groupInfo['iid']."'
ORDER BY col$column $direction
LIMIT $from, $number_of_items";
}

@ -25,7 +25,7 @@ $nameTools = get_lang('EditGroup');
$interbreadcrumb[] = array('url' => 'group.php', 'name' => get_lang('Groups'));
$interbreadcrumb[] = array('url' => 'group_space.php?'.api_get_cidreq(), 'name' => $current_group['name']);
$is_group_member = GroupManager::is_tutor_of_group(api_get_user_id(), $current_group['iid']);
$is_group_member = GroupManager::is_tutor_of_group(api_get_user_id(), $current_group);
if (!api_is_allowed_to_edit(false, true) && !$is_group_member) {
api_not_allowed(true);
@ -125,8 +125,8 @@ $(document).ready( function() {
$form = new FormValidator('group_edit', 'post', api_get_self().'?'.api_get_cidreq());
$form->addElement('hidden', 'action');
$form->addElement('hidden', 'max_student', $current_group['max_student']);
$complete_user_list = GroupManager::fill_groups_list($current_group['iid']);
$subscribedTutors = GroupManager::getTutors($current_group['iid']);
$complete_user_list = GroupManager::fill_groups_list($current_group);
$subscribedTutors = GroupManager::getTutors($current_group);
if ($subscribedTutors) {
$subscribedTutors = array_column($subscribedTutors, 'user_id');
}
@ -165,7 +165,7 @@ if (!empty($complete_user_list)) {
}
// Group members
$group_member_list = GroupManager::get_subscribed_users($current_group['iid']);
$group_member_list = GroupManager::get_subscribed_users($current_group);
$selected_users = array();
if (!empty($group_member_list)) {
@ -190,12 +190,12 @@ if ($form->validate()) {
$values = $form->exportValues();
// Storing the users (we first remove all users and then add only those who were selected)
GroupManager:: unsubscribe_all_users($current_group['iid']);
GroupManager:: unsubscribe_all_users($current_group);
if (isset($_POST['group_members']) && count($_POST['group_members']) > 0) {
GroupManager:: subscribe_users(
$values['group_members'],
$current_group['iid']
$current_group
);
}
@ -218,7 +218,7 @@ $action = isset($_GET['action']) ? $_GET['action'] : null;
switch ($action) {
case 'empty':
if (api_is_allowed_to_edit(false, true)) {
GroupManager:: unsubscribe_all_users($current_group['iid']);
GroupManager:: unsubscribe_all_users($current_group);
Display :: display_confirmation_message(get_lang('GroupEmptied'));
}
break;

@ -23,7 +23,7 @@ $current_group = GroupManager::get_group_properties($group_id);
$nameTools = get_lang('EditGroup');
$interbreadcrumb[] = array('url' => 'group.php?'.api_get_cidreq(), 'name' => get_lang('Groups'));
$interbreadcrumb[] = array('url' => 'group_space.php?'.api_get_cidreq(), 'name' => $current_group['name']);
$is_group_member = GroupManager::is_tutor_of_group(api_get_user_id(), $current_group['iid']);
$is_group_member = GroupManager::is_tutor_of_group(api_get_user_id(), $current_group);
if (!api_is_allowed_to_edit(false, true) && !$is_group_member) {
api_not_allowed(true);

@ -25,7 +25,7 @@ $nameTools = get_lang('EditGroup');
$interbreadcrumb[] = array('url' => 'group.php?'.api_get_cidreq(), 'name' => get_lang('Groups'));
$interbreadcrumb[] = array('url' => 'group_space.php?'.api_get_cidreq(), 'name' => $current_group['name']);
$is_group_member = GroupManager::is_tutor_of_group(api_get_user_id(), $current_group['iid']);
$is_group_member = GroupManager::is_tutor_of_group(api_get_user_id(), $current_group);
if (!api_is_allowed_to_edit(false, true) && !$is_group_member) {
api_not_allowed(true);
@ -110,18 +110,18 @@ $form = new FormValidator('group_edit', 'post', api_get_self().'?'.api_get_cidre
$form->addElement('hidden', 'action');
// Group tutors
$group_tutor_list = GroupManager :: get_subscribed_tutors($current_group['iid']);
$group_tutor_list = GroupManager::get_subscribed_tutors($current_group);
$selected_tutors = array();
foreach ($group_tutor_list as $index => $user) {
$selected_tutors[] = $user['user_id'];
}
$complete_user_list = GroupManager::fill_groups_list($current_group['iid']);
$complete_user_list = GroupManager::fill_groups_list($current_group);
$possible_users = array();
$userGroup = new UserGroup();
$subscribedUsers = GroupManager::get_subscribed_users($current_group['iid']);
$subscribedUsers = GroupManager::get_subscribed_users($current_group);
if ($subscribedUsers) {
$subscribedUsers = array_column($subscribedUsers, 'user_id');
}
@ -130,7 +130,6 @@ $orderUserListByOfficialCode = api_get_setting('order_user_list_by_official_code
if (!empty($complete_user_list)) {
usort($complete_user_list, 'sort_users');
foreach ($complete_user_list as $index => $user) {
if (in_array($user['user_id'], $subscribedUsers)) {
continue;
}
@ -181,7 +180,7 @@ if ($form->validate()) {
// Storing the tutors (we first remove all the tutors and then add only those who were selected)
GroupManager :: unsubscribe_all_tutors($current_group['iid']);
if (isset($_POST['group_tutors']) && count($_POST['group_tutors']) > 0) {
GroupManager::subscribe_tutors($values['group_tutors'], $current_group['iid']);
GroupManager::subscribe_tutors($values['group_tutors'], $current_group);
}
// Returning to the group area (note: this is inconsistent with the rest of chamilo)

@ -39,7 +39,7 @@ switch ($action) {
if (api_get_group_id()) {
$groupInfo = GroupManager::get_group_properties(api_get_group_id());
// Only course admin or group members allowed
if ($is_allowed_to_edit || GroupManager::is_user_in_group(api_get_user_id(), $groupInfo['iid'])) {
if ($is_allowed_to_edit || GroupManager::is_user_in_group(api_get_user_id(), $groupInfo)) {
} else {
exit;
}

@ -136,7 +136,7 @@ if (!empty($action)) {
$groupInfo = GroupManager::get_group_properties($group_id);
if (!api_is_allowed_to_edit(null, true) &&
$current_forum['allow_edit'] == 0 &&
($group_id && !GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo['iid']))
($group_id && !GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo))
) {
$json['errorMessage'] = '4. if editing of replies is not allowed';
break;

@ -85,7 +85,7 @@ class Agenda
) &&
GroupManager::is_tutor_of_group(
api_get_user_id(),
$groupInfo['iid']
$groupInfo
);
if ($isGroupAccess) {
$isAllowToEdit = true;
@ -2955,16 +2955,14 @@ class Agenda
$form = '';
if (api_is_allowed_to_edit(false, true) ||
(api_get_course_setting(
'allow_user_edit_agenda'
) && !api_is_anonymous()) &&
(api_get_course_setting('allow_user_edit_agenda') && !api_is_anonymous()) &&
api_is_allowed_to_session_edit(false, true) ||
(GroupManager::user_has_access(
api_get_user_id(),
$groupIid,
GroupManager::GROUP_TOOL_CALENDAR
) &&
GroupManager::is_tutor_of_group(api_get_user_id(), $groupIid))
GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo))
) {
$actionsLeft .= Display::url(
Display::return_icon(

@ -2163,7 +2163,7 @@ class CourseManager
$result = Database::query($sql);
while ($group_data = Database::fetch_array($result)) {
$group_data['userNb'] = GroupManager::number_of_students($group_data['iid'], $course_id);
$group_data['userNb'] = GroupManager::number_of_students($group_data['id'], $course_id);
$group_list[$group_data['id']] = $group_data;
}
return $group_list;
@ -2252,11 +2252,9 @@ class CourseManager
// Cleaning groups
$groups = GroupManager::get_groups($courseId);
if (!empty($groups)) {
$groupList = array_column($groups, 'iid');
foreach ($groupList as $groupId) {
GroupManager::delete_groups($groupId, $course['code']);
foreach ($groups as $group) {
GroupManager::delete_groups($group, $course['code']);
}
}
// Cleaning c_x tables
@ -5755,12 +5753,12 @@ class CourseManager
/**
* Shows the form for sending a message to a specific group or user.
* @param FormValidator $form
* @param int $group_id iid
* @param int $group_id id
* @param array $to
*/
public static function addGroupMultiSelect($form, $group_id, $to = array())
public static function addGroupMultiSelect($form, $groupInfo, $to = array())
{
$group_users = GroupManager::get_subscribed_users($group_id);
$group_users = GroupManager::get_subscribed_users($groupInfo);
$array = self::buildSelectOptions(null, $group_users, $to);
$result = array();

@ -131,7 +131,7 @@ class GroupManager
$groups = array();
while ($thisGroup = Database::fetch_array($groupList)) {
$thisGroup['number_of_members'] = count(self::get_subscribed_users($thisGroup['iid']));
$thisGroup['number_of_members'] = count(self::get_subscribed_users($thisGroup));
if ($thisGroup['session_id'] != 0) {
$sql = 'SELECT name FROM '.Database::get_main_table(TABLE_MAIN_SESSION).'
WHERE id='.$thisGroup['session_id'];
@ -330,11 +330,13 @@ class GroupManager
$members = array();
foreach ($users as $index => $user_id) {
$groupId = $group_ids[$index % $number_of_groups];
$groupInfo = self::get_group_properties($groupId);
self::subscribe_users(
$user_id,
$group_ids[$index % $number_of_groups]
$groupInfo
);
$members[$group_ids[$index % $number_of_groups]]++;
$members[$group_ids[$groupId]]++;
}
foreach ($members as $group_id => $places) {
@ -363,7 +365,8 @@ class GroupManager
0,
count($users_ids)
);
self::subscribe_users($users_ids, $group_id);
$groupInfo = self::get_group_properties($group_id);
self::subscribe_users($users_ids, $groupInfo);
$group_ids[] = $group_id;
}
return $group_ids;
@ -374,11 +377,11 @@ class GroupManager
* @author Christophe Gesche <christophe.gesche@claroline.net>
* @author Hugues Peeters <hugues.peeters@claroline.net>
* @author Bart Mollet
* @param int $groupId iid
* @param array $groupInfo iid
* @param string $course_code Default is current course
* @return integer - number of groups deleted.
*/
public static function delete_groups($groupId, $course_code = null)
public static function delete_groups($groupInfo, $course_code = null)
{
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
@ -386,26 +389,26 @@ class GroupManager
// Database table definitions
$group_table = Database:: get_course_table(TABLE_GROUP);
$forum_table = Database:: get_course_table(TABLE_FORUM);
$groupId = (int) $groupId;
$sql = "SELECT id, iid, secret_directory, session_id
FROM $group_table
WHERE c_id = $course_id AND iid = $groupId";
$db_result = Database::query($sql);
$group = Database::fetch_object($db_result);
if ($group) {
$groupInfo = self::get_group_properties($groupInfo['iid'], true);
if ($groupInfo) {
$groupIid = $groupInfo['iid'];
$groupId = $groupInfo['id'];
$directory = $groupInfo['secret_directory'];
// Unsubscribe all users
self::unsubscribe_all_users($groupId);
self::unsubscribe_all_tutors($groupId);
self::unsubscribe_all_users($groupInfo);
self::unsubscribe_all_tutors($groupInfo);
// move group-documents to garbage
$source_directory = api_get_path(SYS_COURSE_PATH).$course_info['path']."/document".$group->secret_directory;
$source_directory = api_get_path(SYS_COURSE_PATH).$course_info['path']."/document".$directory;
// File to renamed
$destination_dir = api_get_path(SYS_COURSE_PATH).$course_info['path']."/document".$group->secret_directory.'_DELETED_'.$group->id;
$destination_dir = api_get_path(SYS_COURSE_PATH).$course_info['path']."/document".$directory.'_DELETED_'.$groupInfo['id'];
if (!empty($group->secret_directory)) {
if (!empty($directory)) {
//Deleting from document tool
DocumentManager::delete_document($course_info, $group->secret_directory, $source_directory);
DocumentManager::delete_document(
$course_info,
$directory,
$source_directory
);
if (file_exists($source_directory)) {
if (api_get_setting('permanently_remove_deleted_files') === 'true') {
@ -430,7 +433,7 @@ class GroupManager
// delete the groups
$sql = "DELETE FROM $group_table
WHERE c_id = $course_id AND iid = $groupId ";
WHERE c_id = $course_id AND iid = $groupIid ";
Database::query($sql);
}
@ -440,6 +443,7 @@ class GroupManager
/**
* Get group properties
* @param int $group_id The group from which properties are requested.
* @param bool $useIid
* @return array All properties. Array-keys are:
* name, tutor_id, description, maximum_number_of_students,
* directory and visibility of tools
@ -483,10 +487,10 @@ class GroupManager
$result['self_registration_allowed'] = $db_object->self_registration_allowed;
$result['self_unregistration_allowed'] = $db_object->self_unregistration_allowed;
$result['count_users'] = count(
self::get_subscribed_users($db_object->iid)
self::get_subscribed_users($result)
);
$result['count_tutor'] = count(
self::get_subscribed_tutors($db_object->iid)
self::get_subscribed_tutors($result)
);
$result['count_all'] = $result['count_users'] + $result['count_tutor'];
}
@ -775,7 +779,8 @@ class GroupManager
$res = Database::query($sql);
if (Database::num_rows($res) > 0) {
while ($group = Database::fetch_object($res)) {
self::delete_groups($group->iid, $course_code);
$groupInfo = self::get_group_properties($group->iid, true);
self::delete_groups($groupInfo, $course_code);
}
}
$sql = "DELETE FROM $table_group_cat
@ -948,7 +953,7 @@ class GroupManager
*/
public static function get_current_max_groups_per_user($category_id = null, $course_code = null)
{
$course_info = api_get_course_info ($course_code);
$course_info = api_get_course_info($course_code);
$group_table = Database::get_course_table(TABLE_GROUP);
$group_user_table = Database::get_course_table(TABLE_GROUP_USER);
$sql = 'SELECT COUNT(gu.group_id) AS current_max
@ -1018,7 +1023,6 @@ class GroupManager
$group_user_table = Database::get_course_table(TABLE_GROUP_USER);
$groupTable = Database::get_course_table(TABLE_GROUP);
$user_table = Database::get_main_table(TABLE_MAIN_USER);
$group_id = intval($group_id);
if (empty($courseId)) {
@ -1071,7 +1075,7 @@ class GroupManager
}
/**
* @param int $group_id
* @param int $group_id id
* @return array
*/
public static function getStudentsAndTutors($group_id)
@ -1109,21 +1113,21 @@ class GroupManager
/**
* Get only tutors from a group
* @param int $group_id iid
* @param array $groupInfo
* @return array
*/
public static function getTutors($group_id)
public static function getTutors($groupInfo)
{
$groupTable = Database::get_course_table(TABLE_GROUP);
$tutor_user_table = Database::get_course_table(TABLE_GROUP_TUTOR);
$course_id = api_get_course_int_id();
$group_id = intval($group_id);
$group_id = intval($groupInfo['iid']);
$sql = "SELECT user_id
FROM $tutor_user_table gu
INNER JOIN $groupTable g
ON (gu.group_id = g.id and g.c_id = gu.c_id)
WHERE gu.c_id = $course_id AND g.id = $group_id";
WHERE gu.c_id = $course_id AND g.iid = $group_id";
$res = Database::query($sql);
$users = array();
@ -1209,25 +1213,30 @@ class GroupManager
* ywarnier:> Now the course_id has been removed (25/1/2005)
* The databases are als very inconsistent in this.
*
* @param int $groupId iid
* @param array $groupInfo
* @author Chrisptophe Gesche <christophe.geshe@claroline.net>,
* Hugues Peeters <hugues.peeters@claroline.net> - original version
* @author Roan Embrechts - virtual course support, code cleaning
* @author Bart Mollet - code cleaning, use other GroupManager-functions
* @return void
*/
public static function fill_groups($groupId)
public static function fill_groups($groupInfo)
{
$_course = api_get_course_info();
$groupId = (int) $groupId;
$groupIid = $groupInfo['iid'];
$groupId = $groupInfo['id'];
$category = self::get_category_from_group($groupId);
$category = self::get_category_from_group($groupIid);
$groups_per_user = isset($category['groups_per_user']) ? $category['groups_per_user'] : self::GROUP_PER_MEMBER_NO_LIMIT;
$group_table = Database:: get_course_table(TABLE_GROUP);
$group_user_table = Database:: get_course_table(TABLE_GROUP_USER);
$session_id = api_get_session_id();
$complete_user_list = CourseManager::get_real_and_linked_user_list($_course['code'], true, $session_id);
$complete_user_list = CourseManager::get_real_and_linked_user_list(
$_course['code'],
true,
$session_id
);
$number_groups_per_user = $groups_per_user == self::GROUP_PER_MEMBER_NO_LIMIT ? self::INFINITE : $groups_per_user;
/*
@ -1241,9 +1250,9 @@ class GroupManager
LEFT JOIN $group_user_table ug ON
g.c_id = $course_id AND
ug.c_id = $course_id AND
g.iid = ug.group_id
g.id = ug.group_id
WHERE
g.iid = $groupId
g.id = $groupId
GROUP BY (g.iid)
HAVING (nbPlaces > 0 OR g.max_student = ".self::MEMBER_PER_GROUP_NO_LIMIT.")
ORDER BY nbPlaces DESC";
@ -1267,7 +1276,6 @@ class GroupManager
$complete_user_list[$i]['number_groups_left'] = $number_groups_per_user - $number_of_groups;
}
//first sort by user_id to filter out duplicates
$complete_user_list = TableSort::sort_table($complete_user_list, 'user_id');
$complete_user_list = self::filter_duplicates($complete_user_list, 'user_id');
@ -1291,11 +1299,12 @@ class GroupManager
reset($userToken);
arsort($userToken);
foreach ($group_available_place as $group_id => $place) {
foreach ($group_available_place as $groupIid => $place) {
foreach ($userToken as $user_id => $places) {
if (self::can_user_subscribe($user_id, $group_id)) {
self::subscribe_users($user_id, $group_id);
$group_available_place[$group_id]--;
$groupInfo = self::get_group_properties($groupIid, true);
if (self::can_user_subscribe($user_id, $groupInfo)) {
self::subscribe_users($user_id, $groupInfo);
$group_available_place[$groupIid]--;
unset($userToken[$user_id]);
$changed = true;
break;
@ -1310,7 +1319,7 @@ class GroupManager
/**
* Get the number of students in a group.
* @param int $group_id iid
* @param int $group_id id
* @return int Number of students in the given group.
*/
public static function number_of_students($group_id, $course_id = null)
@ -1322,7 +1331,7 @@ class GroupManager
} else {
$course_id = intval($course_id);
}
$sql = "SELECT COUNT(*) AS number_of_students
$sql = "SELECT COUNT(*) AS number_of_students
FROM $table_group_user
WHERE c_id = $course_id AND group_id = $group_id";
$result = Database::query($sql);
@ -1385,30 +1394,31 @@ class GroupManager
/**
* Is sef-registration allowed?
* @param int $user_id
* @param int $group_id iid
* @param array $groupInfo
* @return bool TRUE if self-registration is allowed in the given group.
*/
public static function is_self_registration_allowed($user_id, $group_id)
public static function is_self_registration_allowed($user_id, $groupInfo)
{
$course_id = api_get_course_int_id();
if (!$user_id > 0) {
return false;
}
$groupIid = $groupInfo['iid'];
$groupId = $groupInfo['id'];
$table_group = Database::get_course_table(TABLE_GROUP);
$group_id = intval($group_id);
if (isset($group_id)) {
$sql = "SELECT status, self_registration_allowed
FROM $table_group
WHERE c_id = $course_id AND iid = $group_id";
WHERE c_id = $course_id AND iid = $groupIid";
$result = Database::query($sql);
$group = Database::fetch_object($result);
if ($group->status == 0 || $group->self_registration_allowed != 1) {
return false;
}
return self::can_user_subscribe($user_id, $group_id);
return self::can_user_subscribe($user_id, $groupInfo);
} else {
return false;
}
@ -1417,46 +1427,45 @@ class GroupManager
/**
* Is sef-unregistration allowed?
* @param int $user_id
* @param int $group_id iid
* @param array $groupInfo
* @return bool TRUE if self-unregistration is allowed in the given group.
*/
public static function is_self_unregistration_allowed($user_id, $group_id)
public static function is_self_unregistration_allowed($user_id, $groupInfo)
{
if (!$user_id > 0) {
if (!$user_id > 0 || empty($groupInfo)) {
return false;
}
$groupIid = $groupInfo['iid'];
$table_group = Database::get_course_table(TABLE_GROUP);
$group_id = intval($group_id);
$course_id = api_get_course_int_id();
$sql = "SELECT status, self_unregistration_allowed
FROM $table_group
WHERE c_id = $course_id AND iid = $group_id";
WHERE c_id = $course_id AND iid = $groupIid";
$result = Database::query($sql);
$group = Database::fetch_object($result);
if ($group->status == 0 || $group->self_unregistration_allowed != 1) {
return false;
}
return self::is_subscribed($user_id, $group_id);
return self::is_subscribed($user_id, $groupInfo);
}
/**
* Is user subscribed in group?
* @param int $user_id
* @param int $group_id iid
* @param array $groupInfo
* @return bool TRUE if given user is subscribed in given group
*/
public static function is_subscribed($user_id, $group_id)
public static function is_subscribed($user_id, $groupInfo)
{
$course_id = api_get_course_int_id();
if (empty($user_id) || empty($group_id) || empty($course_id)) {
return false;
}
$table_group_user = Database::get_course_table(TABLE_GROUP_USER);
$group_id = intval($group_id);
$group_id = intval($groupInfo['id']);
$user_id = intval($user_id);
$sql = "SELECT 1 FROM $table_group_user
@ -1473,39 +1482,41 @@ class GroupManager
/**
* Can a user subscribe to a specified group in a course
* @param int $user_id
* @param int $group_id iid
* @param array $groupInfo
* @param bool $checkMaxNumberStudents
*
* @return bool TRUE if given user can be subscribed in given group
*/
public static function can_user_subscribe($user_id, $group_id, $checkMaxNumberStudents = true)
public static function can_user_subscribe($user_id, $groupInfo, $checkMaxNumberStudents = true)
{
$group_id = $groupInfo['id'];
$groupIid = $groupInfo['iid'];
if ($checkMaxNumberStudents) {
$category = self:: get_category_from_group($group_id);
$category = self::get_category_from_group($groupIid);
if ($category) {
if ($category['groups_per_user'] == self::GROUP_PER_MEMBER_NO_LIMIT) {
$category['groups_per_user'] = self::INFINITE;
}
$result = self:: user_in_number_of_groups($user_id, $category['id'] ) < $category['groups_per_user'];
$result = self:: user_in_number_of_groups($user_id, $category['id']) < $category['groups_per_user'];
if ($result == false) {
return false;
}
}
$result = self:: number_of_students($group_id) < self:: maximum_number_of_students($group_id);
$result = self::number_of_students($group_id) < self:: maximum_number_of_students($groupIid);
if ($result == false) {
return false;
}
}
$result = self::is_tutor_of_group($user_id, $group_id);
$result = self::is_tutor_of_group($user_id, $groupInfo);
if ($result) {
return false;
}
$result = self::is_subscribed($user_id, $group_id);
$result = self::is_subscribed($user_id, $groupInfo);
if ($result) {
return false;
@ -1516,11 +1527,11 @@ class GroupManager
/**
* Get all subscribed users (members) from a group
* @param int $group_id (iid)
* @param array $groupInfo
* @return array An array with information of all users from the given group.
* (user_id, firstname, lastname, email)
*/
public static function get_subscribed_users($group_id)
public static function get_subscribed_users($groupInfo)
{
$table_user = Database::get_main_table(TABLE_MAIN_USER);
$table_group_user = Database::get_course_table(TABLE_GROUP_USER);
@ -1530,18 +1541,28 @@ class GroupManager
$order_clause = " ORDER BY u.official_code, u.firstname, u.lastname";
}
$group_id = intval($groupInfo['id']);
if (empty($group_id)) {
return array();
}
$group_id = intval($group_id);
$course_id = api_get_course_int_id();
$sql = "SELECT ug.id, u.user_id, u.lastname, u.firstname, u.email, u.username
FROM $table_user u INNER JOIN $table_group_user ug
$sql = "SELECT
ug.id,
u.user_id,
u.lastname,
u.firstname,
u.email,
u.username
FROM $table_user u
INNER JOIN $table_group_user ug
ON (ug.user_id = u.user_id)
WHERE ug.c_id = $course_id AND
ug.group_id = $group_id
$order_clause";
$db_result = Database::query($sql);
$users = array();
while ($user = Database::fetch_object($db_result)) {
@ -1560,11 +1581,11 @@ class GroupManager
/**
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
* Get all subscribed tutors of a group
* @param int $group_id (iid)
* @param array $groupInfo
* @return array An array with information of all users from the given group.
* (user_id, firstname, lastname, email)
*/
public static function get_subscribed_tutors($group_id, $id_only = false)
public static function get_subscribed_tutors($groupInfo, $id_only = false)
{
$table_user = Database::get_main_table(TABLE_MAIN_USER);
$table_group_tutor = Database::get_course_table(TABLE_GROUP_TUTOR);
@ -1575,7 +1596,7 @@ class GroupManager
$order_clause = " ORDER BY u.official_code, u.firstname, u.lastname";
}
$group_id = intval($group_id);
$group_id = intval($groupInfo['id']);
$course_id = api_get_course_int_id();
$sql = "SELECT tg.id, u.user_id, u.lastname, u.firstname, u.email
@ -1606,20 +1627,20 @@ class GroupManager
/**
* Subscribe user(s) to a specified group in current course (as a student)
* @param mixed $user_ids Can be an array with user-id's or a single user-id
* @param int $group_id iid
* @param array $groupInfo
* @param int $course_id
* @return bool TRUE if successful
*/
public static function subscribe_users($user_ids, $group_id, $course_id = null)
public static function subscribe_users($user_ids, $groupInfo, $course_id = null)
{
$user_ids = is_array($user_ids) ? $user_ids : array($user_ids);
$course_id = isset($course_id) && !empty($course_id) ? intval($course_id) : api_get_course_int_id();
$group_id = intval($group_id);
$group_id = $groupInfo['id'];
$table_group_user = Database::get_course_table(TABLE_GROUP_USER);
if (!empty($user_ids)) {
foreach ($user_ids as $user_id) {
if (self::can_user_subscribe($user_id, $group_id)) {
if (self::can_user_subscribe($user_id, $groupInfo)) {
$user_id = intval($user_id);
$sql = "INSERT INTO ".$table_group_user." (c_id, user_id, group_id)
VALUES ('$course_id', '".$user_id."', '".$group_id."')";
@ -1634,24 +1655,24 @@ class GroupManager
/**
* Subscribe tutor(s) to a specified group in current course
* @param mixed $user_ids Can be an array with user-id's or a single user-id
* @param int $group_id iid
* @param int $group_id id
* @param int $course_id
*
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
* @see subscribe_users. This function is almost an exact copy of that function.
* @return bool TRUE if successful
*/
public static function subscribe_tutors($user_ids, $groupId, $course_id = null)
public static function subscribe_tutors($user_ids, $groupInfo, $course_id = null)
{
$user_ids = is_array($user_ids) ? $user_ids : array($user_ids);
$result = true;
$course_id = isset($course_id) && !empty($course_id) ? intval($course_id) : api_get_course_int_id();
$table_group_tutor = Database::get_course_table(TABLE_GROUP_TUTOR);
$groupId = (int) $groupId;
$groupId = (int) $groupInfo['id'];
foreach ($user_ids as $user_id) {
$user_id = intval($user_id);
if (self::can_user_subscribe($user_id, $groupId, false)) {
if (self::can_user_subscribe($user_id, $groupInfo, false)) {
$sql = "INSERT INTO " . $table_group_tutor . " (c_id, user_id, group_id)
VALUES ('$course_id', '" . $user_id . "', '" . $groupId . "')";
$result = Database::query($sql);
@ -1664,14 +1685,14 @@ class GroupManager
/**
* Unsubscribe user(s) from a specified group in current course
* @param mixed $user_ids Can be an array with user-id's or a single user-id
* @param int $group_id iid
* @param array $groupInfo
* @return bool TRUE if successful
*/
public static function unsubscribe_users($user_ids, $group_id)
public static function unsubscribe_users($user_ids, $groupInfo)
{
$user_ids = is_array($user_ids) ? $user_ids : array ($user_ids);
$table_group_user = Database::get_course_table(TABLE_GROUP_USER);
$group_id = intval($group_id);
$group_id = intval($groupInfo['id']);
$course_id = api_get_course_int_id();
$sql = 'DELETE FROM '.$table_group_user.'
WHERE
@ -1684,15 +1705,13 @@ class GroupManager
/**
* Unsubscribe all users from one or more groups
* @param int $group_id iid
* @param array $groupInfo
* @return bool TRUE if successful
*/
public static function unsubscribe_all_users($groupId)
public static function unsubscribe_all_users($groupInfo)
{
$course_id = api_get_course_int_id();
//api_is_element_in_the_session(TOOL_GROUP, $group_ids[$i])
$groupId = (int) $groupId;
$groupId = (int) $groupInfo['id'];
if (empty($course_id) || empty($groupId)) {
return false;
}
@ -1736,16 +1755,20 @@ class GroupManager
/**
* Is the user a tutor of this group?
* @param int $user_id the id of the user
* @param int $group_id the iid of the group
* @param array $groupInfo
* @return boolean true/false
* @todo use the function user_has_access that includes this function
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
*/
public static function is_tutor_of_group($user_id, $group_id)
public static function is_tutor_of_group($user_id, $groupInfo)
{
if (empty($groupInfo)) {
return false;
}
$table_group_tutor = Database::get_course_table(TABLE_GROUP_TUTOR);
$user_id = intval($user_id);
$group_id = intval($group_id);
$group_id = intval($groupInfo['id']);
$course_id = api_get_course_int_id();
$sql = "SELECT * FROM $table_group_tutor
@ -1769,14 +1792,14 @@ class GroupManager
* 1. a member of the group OR
* 2. a tutor of the group. This function combines both
* @param int $user_id the id of the user
* @param int $group_id the iid of the group
* @param array $groupInfo
* @return boolean true/false
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
*/
public static function is_user_in_group($user_id, $group_id)
public static function is_user_in_group($user_id, $groupInfo)
{
$member = self::is_subscribed($user_id, $group_id);
$tutor = self::is_tutor_of_group($user_id, $group_id);
$member = self::is_subscribed($user_id, $groupInfo);
$tutor = self::is_tutor_of_group($user_id, $groupInfo);
if ($member || $tutor) {
return true;
} else {
@ -1946,7 +1969,7 @@ class GroupManager
return true;
break;
case self::TOOL_PRIVATE:
$userIsInGroup = self::is_user_in_group($user_id, $groupInfo['iid']);
$userIsInGroup = self::is_user_in_group($user_id, $groupInfo);
if ($userIsInGroup) {
return true;
}
@ -1978,7 +2001,7 @@ class GroupManager
}
$groupId = $groupInfo['iid'];
$tutors = self::get_subscribed_tutors($groupId, true);
$tutors = self::get_subscribed_tutors($groupInfo, true);
if (in_array($userId, $tutors)) {
return true;
@ -2072,19 +2095,23 @@ class GroupManager
* Fill the groups with students.
*
* note : optimize fill_groups_list <--> fill_groups
* @param int $groupId (group iid)
* @param array $groupInfo
* @return array|bool
*/
public static function fill_groups_list($groupId)
public static function fill_groups_list($groupInfo)
{
$groupId = (int) $groupId;
$_course = api_get_course_info();
if (empty($groupInfo)) {
return [];
}
$groupIid = (int) $groupInfo['iid'];
$groupId = (int) $groupInfo['id'];
$_course = api_get_course_info();
if (empty($_course) || empty($groupId)) {
return [];
}
$category = self::get_category_from_group($groupId);
$category = self::get_category_from_group($groupIid);
$number_groups_per_user = self::GROUP_PER_MEMBER_NO_LIMIT;
$categoryId = 0;
if ($category) {
@ -2107,7 +2134,7 @@ class GroupManager
for ($i = 0; $i < count($complete_user_list); $i ++) {
// find # of groups the user is enrolled in
$number_of_groups = self:: user_in_number_of_groups(
$complete_user_list[$i]["user_id"],
$complete_user_list[$i]['user_id'],
$categoryId
);
// add # of groups to user list
@ -2145,8 +2172,8 @@ class GroupManager
$session_img = api_get_session_image($this_group['session_id'], $user_info['status']);
// All the tutors of this group
$tutorsids_of_group = self::get_subscribed_tutors($this_group['iid'], true);
$isMember = self::is_subscribed($user_id, $this_group['iid']);
$tutorsids_of_group = self::get_subscribed_tutors($this_group, true);
$isMember = self::is_subscribed($user_id, $this_group);
// Create a new table-row
$row = array();
@ -2225,9 +2252,9 @@ class GroupManager
// Self-registration / unregistration
if (!api_is_allowed_to_edit(false, true)) {
if (self::is_self_registration_allowed($user_id, $this_group['iid'])) {
if (self::is_self_registration_allowed($user_id, $this_group)) {
$row[] = '<a class = "btn btn-default" href="group.php?'.api_get_cidreq().'&category='.$category_id.'&action=self_reg&group_id='.$this_group['id'].'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES, $charset))."'".')) return false;">'.get_lang('GroupSelfRegInf').'</a>';
} elseif (self::is_self_unregistration_allowed($user_id, $this_group['iid'])) {
} elseif (self::is_self_unregistration_allowed($user_id, $this_group)) {
$row[] = '<a class = "btn btn-default" href="group.php?'.api_get_cidreq().'&category='.$category_id.'&action=self_unreg&group_id='.$this_group['id'].'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES, $charset))."'".')) return false;">'.get_lang('GroupSelfUnRegInf').'</a>';
} else {
$row[] = '-';
@ -2426,6 +2453,7 @@ class GroupManager
$data['group_id'] = $groupId;
$result['added']['group'][] = $data;
}
$groupInfo = self::get_group_properties($groupId, true);
} else {
// Update
$groupId = $groupInfo['id'];
@ -2448,8 +2476,11 @@ class GroupManager
$data['group_id'] = $groupId;
$result['updated']['group'][] = $data;
$groupInfo = self::get_group_properties($groupId);
}
$students = isset($data['students']) ? explode(',', $data['students']) : [];
if (!empty($students)) {
$studentUserIdList = array();
@ -2457,7 +2488,7 @@ class GroupManager
$userInfo = api_get_user_info_from_username($student);
$studentUserIdList[] = $userInfo['user_id'];
}
self::subscribe_users($studentUserIdList, $groupId);
self::subscribe_users($studentUserIdList, $groupInfo);
}
$tutors = isset($data['tutors']) ? explode(',', $data['tutors']) : [];
@ -2467,7 +2498,7 @@ class GroupManager
$userInfo = api_get_user_info_from_username($tutor);
$tutorIdList[] = $userInfo['user_id'];
}
self::subscribe_tutors($tutorIdList, $groupId);
self::subscribe_tutors($tutorIdList, $groupInfo);
}
$elementsFound['groups'][] = $groupId;
@ -2488,7 +2519,7 @@ class GroupManager
$groups = self::get_groups();
foreach ($groups as $group) {
if (!in_array($group['iid'], $elementsFound['groups'])) {
self::delete_groups($group['iid']);
self::delete_groups($group);
$group['group'] = $group['name'];
$result['deleted']['group'][] = $group;
}
@ -2573,7 +2604,7 @@ class GroupManager
$userList[] = $user['username'];
}
$tutors = self::getTutors($groupInfo['iid']);
$tutors = self::getTutors($groupInfo);
$tutorList = array();
foreach ($tutors as $user) {
$user = api_get_user_info($user['user_id']);
@ -2696,7 +2727,7 @@ class GroupManager
foreach ($groups as $group) {
$content .= '<li>';
$content .= Display::tag('h3', Security::remove_XSS($group['name']));
$users = self::getTutors($group['iid']);
$users = self::getTutors($group);
if (!empty($users)) {
$content .= '<ul>';
$content .= "<li>".Display::tag('h4', get_lang('Tutors'))."</li><ul>";

@ -68,7 +68,7 @@ echo '<h2>'.get_lang('GroupSingle').': '.$group_properties['name'].'</h2>';
if ((
$group_properties['doc_state'] == 2 &&
($is_allowed_to_edit || GroupManager :: is_user_in_group($_user['user_id'], $group_properties['iid']))) ||
($is_allowed_to_edit || GroupManager :: is_user_in_group($_user['user_id'], $group_properties))) ||
$group_properties['doc_state'] == 1
){

@ -4962,9 +4962,10 @@ class SessionManager
!empty($groupBackup['user'][$teacherToAdd][$course_code])
) {
foreach ($groupBackup['user'][$teacherToAdd][$course_code] as $data) {
$groupInfo = GroupManager::get_group_properties($data['group_id']);
GroupManager::subscribe_users(
$teacherToAdd,
$data['group_id'],
$groupInfo,
$data['c_id']
);
}
@ -4975,9 +4976,10 @@ class SessionManager
!empty($groupBackup['tutor'][$teacherToAdd][$course_code])
) {
foreach ($groupBackup['tutor'][$teacherToAdd][$course_code] as $data) {
$groupInfo = GroupManager::get_group_properties($data['group_id']);
GroupManager::subscribe_tutors(
$teacherToAdd,
$data['group_id'],
$groupInfo,
$data['c_id']
);
}
@ -5083,9 +5085,10 @@ class SessionManager
!empty($groupBackup['user'][$teacherId][$course_code])
) {
foreach ($groupBackup['user'][$teacherId][$course_code] as $data) {
$groupInfo = GroupManager::get_group_properties($data['group_id']);
GroupManager::subscribe_users(
$teacherId,
$data['group_id'],
$groupInfo,
$data['c_id']
);
}
@ -5096,9 +5099,10 @@ class SessionManager
!empty($groupBackup['tutor'][$teacherId][$course_code])
) {
foreach ($groupBackup['tutor'][$teacherId][$course_code] as $data) {
$groupInfo = GroupManager::get_group_properties($data['group_id']);
GroupManager::subscribe_tutors(
$teacherId,
$data['group_id'],
$groupInfo,
$data['c_id']
);
}

@ -71,7 +71,7 @@ echo '<h2>'.get_lang('GroupSingle').': '.$group_properties['name'].'</h2>';
if ((
$group_properties['doc_state'] == 2 &&
($is_allowed_to_edit || GroupManager :: is_user_in_group($_user['user_id'], $group_properties['iid']))) || $group_properties['doc_state'] == 1
($is_allowed_to_edit || GroupManager :: is_user_in_group($_user['user_id'], $group_properties))) || $group_properties['doc_state'] == 1
){
if (!empty($png_svg_files)) {

@ -219,7 +219,6 @@ $_SESSION['social_user_id'] = intval($user_id);
// Setting some course info
$my_user_id = isset($_GET['u']) ? intval($_GET['u']) : api_get_user_id();
$personal_course_list = UserManager::get_personal_session_course_list($my_user_id, 50);
$course_list_code = array();
$i = 1;
$list = [];

@ -74,7 +74,7 @@ if ($groupId) {
api_not_allowed();
} elseif ($group_properties['wiki_state'] == 2) {
if (!api_is_allowed_to_edit(false, true) and
!GroupManager :: is_user_in_group(api_get_user_id(), $group_properties['iid'])
!GroupManager :: is_user_in_group(api_get_user_id(), $group_properties)
) {
api_not_allowed();
}

@ -939,7 +939,7 @@ class Wiki
if ($row['content'] == '' && $row['title'] == '' && $page == 'index') {
if (api_is_allowed_to_edit(false, true) ||
api_is_platform_admin() ||
GroupManager::is_user_in_group(api_get_user_id(), $groupInfo['iid']) ||
GroupManager::is_user_in_group(api_get_user_id(), $groupInfo) ||
api_is_allowed_in_course()
) {
//Table structure for better export to pdf
@ -1002,7 +1002,7 @@ class Wiki
$actionsLeft .= $editLink;
} else {
if ((api_is_allowed_in_course() ||
GroupManager::is_user_in_group(api_get_user_id(), $groupInfo['iid']))
GroupManager::is_user_in_group(api_get_user_id(), $groupInfo))
) {
$actionsLeft .= $editLink;
} else {
@ -1063,7 +1063,7 @@ class Wiki
// Only available if row['id'] is set
if ($row['id']) {
if (api_is_allowed_to_session_edit(false, true) && api_is_allowed_to_edit() ||
GroupManager::is_user_in_group(api_get_user_id(), $groupInfo['iid'])
GroupManager::is_user_in_group(api_get_user_id(), $groupInfo)
) {
// menu discuss page
$actionsRight .= '<a href="index.php?'.api_get_cidreq().'&action=discuss&title='.api_htmlentities(urlencode($page)).'" '.self::is_active_navigation_tab('discuss').'>'.
@ -2122,8 +2122,8 @@ class Wiki
}
} else {
//extract group members
$subscribed_users = GroupManager::get_subscribed_users($groupInfo['iid']);
$subscribed_tutors = GroupManager::get_subscribed_tutors($groupInfo['iid']);
$subscribed_users = GroupManager::get_subscribed_users($groupInfo);
$subscribed_tutors = GroupManager::get_subscribed_tutors($groupInfo);
$a_users_to_add_with_duplicates = array_merge($subscribed_users, $subscribed_tutors);
//remove duplicates
$a_users_to_add = $a_users_to_add_with_duplicates;
@ -2171,15 +2171,15 @@ class Wiki
$name = api_get_person_name($o_user_to_add['firstname'], $o_user_to_add['lastname'])." . ".$username;
$photo= '<img src="'.$userPicture.'" alt="'.$name.'" width="40" height="50" align="bottom" title="'.$name.'" />';
$is_tutor_of_group = GroupManager::is_tutor_of_group($assig_user_id, $groupInfo['iid']); //student is tutor
$is_tutor_and_member = GroupManager::is_tutor_of_group($assig_user_id, $groupInfo['iid']) &&
GroupManager::is_subscribed($assig_user_id, $groupInfo['iid']);
$is_tutor_of_group = GroupManager::is_tutor_of_group($assig_user_id, $groupInfo); //student is tutor
$is_tutor_and_member = GroupManager::is_tutor_of_group($assig_user_id, $groupInfo) &&
GroupManager::is_subscribed($assig_user_id, $groupInfo);
// student is tutor and member
if ($is_tutor_and_member) {
$status_in_group=get_lang('GroupTutorAndMember');
} else {
if($is_tutor_of_group) {
if ($is_tutor_of_group) {
$status_in_group=get_lang('GroupTutor');
} else {
$status_in_group=" "; //get_lang('GroupStandardMember')
@ -3498,7 +3498,7 @@ class Wiki
<label class="col-sm-2 control-label"><?php echo get_lang('Comments');?>:</label>
<div class="col-sm-10">
<?php echo '<input type="hidden" name="wpost_id" value="'.md5(uniqid(rand(), true)).'">';//prevent double post ?>
<textarea class="form-control" name="comment" cols="80" rows="5" id="comment"></textarea>
<textarea class="form-control" name="comment" cols="80" rows="5" id="comment"></textarea>
</div>
</div>
<div class="form-group">
@ -3528,7 +3528,7 @@ class Wiki
echo '<input type=hidden name="rating" value="-">';// must pass a default value to avoid rate automatically
}
?>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
@ -4252,7 +4252,7 @@ class Wiki
//Only teacher, platform admin and group members can edit a wiki group
if (api_is_allowed_to_edit(false,true) ||
api_is_platform_admin() ||
GroupManager::is_user_in_group($userId, $groupInfo['iid']) ||
GroupManager::is_user_in_group($userId, $groupInfo) ||
api_is_allowed_in_course()
) {
$PassEdit = true;
@ -4901,7 +4901,7 @@ class Wiki
//Only teacher, platform admin and group members can edit a wiki group
if (api_is_allowed_to_edit(false,true) ||
api_is_platform_admin() ||
GroupManager::is_user_in_group($userId, $groupInfo['iid'])
GroupManager::is_user_in_group($userId, $groupInfo)
) {
$PassEdit = true;
} else {
@ -5521,7 +5521,7 @@ class Wiki
if (self::checktitle('index')) {
if (api_is_allowed_to_edit(false,true) ||
api_is_platform_admin() ||
GroupManager::is_user_in_group(api_get_user_id(), $groupInfo['iid']) ||
GroupManager::is_user_in_group(api_get_user_id(), $groupInfo) ||
api_is_allowed_in_course()
) {
Display::addFlash(Display::return_message(get_lang('GoAndEditMainPage'), 'normal', false));
@ -5534,7 +5534,7 @@ class Wiki
$groupInfo = GroupManager::get_group_properties(api_get_group_id());
if (api_is_allowed_to_edit(false,true) ||
api_is_platform_admin() ||
GroupManager::is_user_in_group(api_get_user_id(), $groupInfo['iid']) ||
GroupManager::is_user_in_group(api_get_user_id(), $groupInfo) ||
$_GET['group_id'] == 0
) {
self::display_new_wiki_form();

@ -1565,7 +1565,7 @@ function getWorkListTeacher(
$condition_session AND
$active_condition AND
parent_id = 0 AND
post_group_id = $groupIid
post_group_id = $group_id
$where_condition
ORDER BY $column $direction
LIMIT $start, $limit";
@ -1944,7 +1944,7 @@ function get_work_user_list(
if (!empty($work_data)) {
if (!empty($group_id)) {
$extra_conditions = " work.post_group_id = '".intval($groupIid)."' ";
$extra_conditions = " work.post_group_id = '".intval($group_id)."' ";
// set to select only messages posted by the user's group
} else {
$extra_conditions = " (work.post_group_id = '0' OR work.post_group_id is NULL) ";
@ -2516,7 +2516,7 @@ function get_list_users_without_publication($task_id, $studentId = null)
if ($group_id) {
$groupInfo = GroupManager::get_group_properties($group_id);
$group_user_list = GroupManager::get_subscribed_users($groupInfo['iid']);
$group_user_list = GroupManager::get_subscribed_users($groupInfo);
if (!empty($group_user_list)) {
foreach($group_user_list as $group_user) {
$new_group_user_list[] = $group_user['user_id'];

Loading…
Cancel
Save