diff --git a/main/group/example.csv b/main/group/example.csv
index 95598bd0de..1f22f95304 100644
--- a/main/group/example.csv
+++ b/main/group/example.csv
@@ -1,5 +1,5 @@
"category";"group";"description";"announcements_state";"calendar_state";"chat_state";"doc_state";"forum_state";"work_state";"wiki_state";"max_student";"self_reg_allowed";"self_unreg_allowed";"groups_per_user";
"Category 1";"";"This is a category";"2";"2";"2";"2";"2";"2";"2";"0";"0";"0";"0";
-"";"This is a group with no category";"";"2";"2";"2";"2";"2";"2";"2";"0";"0";"0"
-"Category 1";"This is a group in a Category 1";"";"2";"2";"2";"2";"2";"2";"2";"0";"0";"0"
+"";"Group 1";"This is a group with no category";"2";"2";"2";"2";"2";"2";"2";"0";"0";"0"
+"Category 1";"Group 2";"This is a group in a category 1";"2";"2";"2";"2";"2";"2";"2";"0";"0";"0"
diff --git a/main/group/group.php b/main/group/group.php
index 48e7c0d3b7..80cb3638a7 100644
--- a/main/group/group.php
+++ b/main/group/group.php
@@ -21,6 +21,7 @@ $language_file = 'group';
require_once '../inc/global.inc.php';
$is_allowed_in_course = api_is_allowed_in_course();
+$userId = api_get_user_id();
$this_section = SECTION_COURSES;
$current_course_tool = TOOL_GROUP;
@@ -64,34 +65,34 @@ Display::display_introduction_section(TOOL_GROUP);
* Self-registration and un-registration
*/
$my_group_id = isset($_GET['group_id']) ? intval($_GET['group_id']) : null;
-$my_msg = isset($_GET['msg']) ? Security::remove_XSS($_GET['msg']) : null;
-$my_group = isset($_REQUEST['group']) ? Security::remove_XSS($_REQUEST['group']) : null;
-$my_get_id1 = isset($_GET['id1']) ? Security::remove_XSS($_GET['id1']) : null;
-$my_get_id2 = isset($_GET['id2']) ? Security::remove_XSS($_GET['id2']) : null;
-$my_get_id = isset($_GET['id']) ? Security::remove_XSS($_GET['id']) : null;
+$my_msg = isset($_GET['msg']) ? Security::remove_XSS($_GET['msg']) : null;
+$my_group = isset($_REQUEST['group']) ? Security::remove_XSS($_REQUEST['group']) : null;
+$my_get_id1 = isset($_GET['id1']) ? Security::remove_XSS($_GET['id1']) : null;
+$my_get_id2 = isset($_GET['id2']) ? Security::remove_XSS($_GET['id2']) : null;
+$my_get_id = isset($_GET['id']) ? Security::remove_XSS($_GET['id']) : null;
if (isset($_GET['action']) && $is_allowed_in_course) {
switch ($_GET['action']) {
case 'self_reg':
- if (GroupManager :: is_self_registration_allowed($_SESSION['_user']['user_id'], $my_group_id)) {
- GroupManager :: subscribe_users($_SESSION['_user']['user_id'], $my_group_id);
+ if (GroupManager::is_self_registration_allowed($userId, $my_group_id)) {
+ GroupManager::subscribe_users($userId, $my_group_id);
Display :: display_confirmation_message(get_lang('GroupNowMember'));
}
break;
case 'self_unreg':
- if (GroupManager :: is_self_unregistration_allowed($_SESSION['_user']['user_id'], $my_group_id)) {
- GroupManager :: unsubscribe_users($_SESSION['_user']['user_id'], $my_group_id);
+ if (GroupManager::is_self_unregistration_allowed($userId, $my_group_id)) {
+ GroupManager::unsubscribe_users($userId, $my_group_id);
Display :: display_confirmation_message(get_lang('StudentDeletesHimself'));
}
break;
case 'show_msg':
- Display :: display_confirmation_message($my_msg);
+ Display::display_confirmation_message($my_msg);
break;
case 'warning_message':
- Display :: display_warning_message($my_msg);
+ Display::display_warning_message($my_msg);
break;
case 'success_message':
- Display :: display_confirmation_message($my_msg);
+ Display::display_confirmation_message($my_msg);
break;
}
}
@@ -107,7 +108,7 @@ if (api_is_allowed_to_edit(false, true)) {
switch ($_POST['action']) {
case 'delete_selected':
if (is_array($_POST['group'])) {
- GroupManager :: delete_groups($my_group);
+ GroupManager::delete_groups($my_group);
Display :: display_confirmation_message(get_lang('SelectedGroupsDeleted'));
}
break;
diff --git a/main/group/group_category.php b/main/group/group_category.php
index a3423824fe..285f474215 100644
--- a/main/group/group_category.php
+++ b/main/group/group_category.php
@@ -15,7 +15,12 @@ $current_course_tool = TOOL_GROUP;
// Notice for unauthorized people.
api_protect_course_script(true);
-if (!api_is_allowed_to_edit(false,true) || !(isset ($_GET['id']) || isset ($_POST['id']) || isset ($_GET['action']) || isset ($_POST['action']))) {
+if (!api_is_allowed_to_edit(false,true) ||
+ !(isset ($_GET['id']) ||
+ isset ($_POST['id']) ||
+ isset ($_GET['action']) ||
+ isset ($_POST['action']))
+) {
api_not_allowed();
}
@@ -141,20 +146,17 @@ if (api_get_setting('allow_group_categories') == 'true') {
}
$form->addElement('header', get_lang('DefaultSettingsForNewGroups'));
-// Action
$form->addElement('hidden', 'action');
-
-
$form->addElement('html', '
');
// Self registration
$group = array(
- $form->createElement('checkbox', 'self_registration_allowed', get_lang('GroupSelfRegistration'), get_lang('GroupAllowStudentRegistration'), 1),
- $form->createElement('checkbox', 'self_unregistration_allowed', null, get_lang('GroupAllowStudentUnregistration'), 1)
+ $form->createElement('checkbox', 'self_reg_allowed', get_lang('GroupSelfRegistration'), get_lang('GroupAllowStudentRegistration'), 1),
+ $form->createElement('checkbox', 'self_unreg_allowed', null, get_lang('GroupAllowStudentUnregistration'), 1)
);
$form->addGroup($group, '', Display::return_icon('user.png', get_lang('GroupSelfRegistration'), array(), ICON_SIZE_SMALL).' '.get_lang('GroupSelfRegistration'), '', false);
-// Documents settings
+// Documents settings.
$group = array(
$form->createElement('radio', 'doc_state', get_lang('GroupDocument'), get_lang('NotAvailable'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'doc_state', null, get_lang('Public'), GroupManager::TOOL_PUBLIC),
@@ -162,7 +164,7 @@ $group = array(
);
$form->addGroup($group, '', Display::return_icon('folder.png', get_lang('GroupDocument'), array(), ICON_SIZE_SMALL).' '.get_lang('GroupDocument'), '', false);
-// Work settings
+// Work settings.
$group = array(
$form->createElement('radio', 'work_state', get_lang('GroupWork'), get_lang('NotAvailable'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'work_state', null, get_lang('Public'), GroupManager::TOOL_PUBLIC),
@@ -170,8 +172,7 @@ $group = array(
);
$form->addGroup($group, '', Display::return_icon('work.png', get_lang('GroupWork'), array(), ICON_SIZE_SMALL).' '.get_lang('GroupWork'), '', false);
-
-// Calendar settings
+// Calendar settings.
$group = array(
$form->createElement('radio', 'calendar_state', get_lang('GroupCalendar'), get_lang('NotAvailable'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'calendar_state', null, get_lang('Public'), GroupManager::TOOL_PUBLIC),
@@ -179,11 +180,10 @@ $group = array(
);
$form->addGroup($group, '', Display::return_icon('agenda.png', get_lang('GroupCalendar'), array(), ICON_SIZE_SMALL).' '.get_lang('GroupCalendar'), '', false);
-
$form->addElement('html', '
');
$form->addElement('html', '');
-// Announcements settings
+// Announcements settings.
$group = array(
$form->createElement('radio', 'announcements_state', get_lang('GroupAnnouncements'), get_lang('NotAvailable'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'announcements_state', null, get_lang('Public'), GroupManager::TOOL_PUBLIC),
@@ -191,7 +191,7 @@ $group = array(
);
$form->addGroup($group, '', Display::return_icon('announce.png', get_lang('GroupAnnouncements'), array(), ICON_SIZE_SMALL).' '.get_lang('GroupAnnouncements'), '', false);
-// Forum settings
+// Forum settings.
$group = array(
$form->createElement('radio', 'forum_state', get_lang('GroupForum'), get_lang('NotAvailable'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'forum_state', null, get_lang('Public'), GroupManager::TOOL_PUBLIC),
@@ -199,7 +199,7 @@ $group = array(
);
$form->addGroup($group, '', Display::return_icon('forum.png', get_lang('GroupForum'), array(), ICON_SIZE_SMALL).' '.get_lang('GroupForum'), '', false);
-// Wiki settings
+// Wiki settings.
$group = array(
$form->createElement('radio', 'wiki_state', get_lang('GroupWiki'), get_lang('NotAvailable'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'wiki_state', null, get_lang('Public'), GroupManager::TOOL_PUBLIC),
@@ -207,7 +207,7 @@ $group = array(
);
$form->addGroup($group, '', Display::return_icon('wiki.png', get_lang('GroupWiki'), array(), ICON_SIZE_SMALL).' '.get_lang('GroupWiki'), '', false);
-// Chat settings
+// Chat settings.
$group = array(
$form->createElement('radio', 'chat_state', get_lang('Chat'), get_lang('NotAvailable'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'chat_state', null, get_lang('Public'), GroupManager::TOOL_PUBLIC),
@@ -215,9 +215,7 @@ $group = array(
);
$form->addGroup($group, '', Display::return_icon('chat.png', get_lang('Chat'), array(), ICON_SIZE_SMALL).' '.get_lang('Chat'), '', false);
-
$form->addElement('html', '
');
-
$form->addElement('html', '');
// Submit
@@ -231,8 +229,10 @@ if ($form->validate()) {
} else {
$max_member = $values['max_member'];
}
+
$self_reg_allowed = isset($values['self_reg_allowed']) ? $values['self_reg_allowed'] : 0;
$self_unreg_allowed = isset($values['self_unreg_allowed']) ? $values['self_unreg_allowed'] : 0;
+
switch ($values['action']) {
case 'update_settings':
GroupManager::update_category(
@@ -255,7 +255,21 @@ if ($form->validate()) {
header('Location: group.php?action=show_msg&msg='.$msg.'&category='.$values['id']);
break;
case 'add_category':
- GroupManager :: create_category($values['title'], $values['description'], $values['doc_state'], $values['work_state'], $values['calendar_state'], $values['announcements_state'], $values['forum_state'], $values['wiki_state'], $values['chat_state'], $self_reg_allowed, $self_unreg_allowed, $max_member, $values['groups_per_user']);
+ GroupManager :: create_category(
+ $values['title'],
+ $values['description'],
+ $values['doc_state'],
+ $values['work_state'],
+ $values['calendar_state'],
+ $values['announcements_state'],
+ $values['forum_state'],
+ $values['wiki_state'],
+ $values['chat_state'],
+ $self_reg_allowed,
+ $self_unreg_allowed,
+ $max_member,
+ $values['groups_per_user']
+ );
$msg = urlencode(get_lang('CategoryCreated'));
header('Location: group.php?action=show_msg&msg='.$msg);
break;
diff --git a/main/group/group_creation.php b/main/group/group_creation.php
index 71a95f5af8..518f0d1bd1 100644
--- a/main/group/group_creation.php
+++ b/main/group/group_creation.php
@@ -17,10 +17,9 @@ $current_course_tool = TOOL_GROUP;
// Notice for unauthorized people.
api_protect_course_script(true);
-
/* Create the groups */
-if (isset ($_POST['action'])) {
+if (isset($_POST['action'])) {
switch ($_POST['action']) {
case 'create_groups':
$groups = array();
@@ -45,7 +44,7 @@ if (isset ($_POST['action'])) {
} elseif ($_POST['same_category']) {
$group['category'] = $_POST['group_0_category'];
}
- GroupManager :: create_group($group['name'], $group['category'], $group['tutor'], $group['places']);
+ GroupManager::create_group($group['name'], $group['category'], $group['tutor'], $group['places']);
}
$msg = urlencode(count($groups).' '.get_lang('GroupsAdded'));
header('Location: group.php?action=show_msg&msg='.$msg);
@@ -126,7 +125,7 @@ elseif (isset($_POST['number_of_groups'])) {
$category) {
// Don't allow new groups in the virtual course category!
diff --git a/main/group/group_edit.php b/main/group/group_edit.php
index 1c84a00373..09ee8d2e99 100644
--- a/main/group/group_edit.php
+++ b/main/group/group_edit.php
@@ -286,8 +286,8 @@ if ($form->validate()) {
GroupManager::set_group_properties(
$current_group['id'],
- strip_tags($values['name']),
- strip_tags($values['description']),
+ $values['name'],
+ $values['description'],
$max_member,
$values['doc_state'],
$values['work_state'],
diff --git a/main/group/group_space.php b/main/group/group_space.php
index ed8c1202d3..c9ff1bbc1e 100644
--- a/main/group/group_space.php
+++ b/main/group/group_space.php
@@ -60,7 +60,8 @@ if ($current_group['doc_state'] != 1 &&
$current_group['chat_state'] != 1 &&
$forum_state_public != 1
) {
- if (!api_is_allowed_to_edit(null,true) && !GroupManager::is_user_in_group($user_id, $group_id)) {
+ if (!api_is_allowed_to_edit(null,true) &&
+ !GroupManager::is_user_in_group($user_id, $group_id)) {
api_not_allowed($print_headers);
}
}
@@ -90,6 +91,7 @@ if (!empty($_GET['selfUnReg']) && GroupManager :: is_self_unregistration_allowed
GroupManager :: unsubscribe_users($user_id, $current_group['id']);
Display::display_normal_message(get_lang('StudentDeletesHimself'));
}
+
echo '
';
echo '
'.Display::return_icon('back.png',get_lang('BackToGroupList'),'',ICON_SIZE_MEDIUM).'';
@@ -98,7 +100,8 @@ echo '
'.Display::return_icon('back.png',get_lang('BackToGrou
*/
$subscribe_group = '';
if (GroupManager :: is_self_registration_allowed($user_id, $current_group['id'])) {
- $subscribe_group = ''.get_lang("RegIntoGroup").'';
+ $subscribe_group = '
'.
+ get_lang("RegIntoGroup").'';
}
/*
@@ -106,7 +109,8 @@ if (GroupManager :: is_self_registration_allowed($user_id, $current_group['id'])
*/
$unsubscribe_group = '';
if (GroupManager :: is_self_unregistration_allowed($user_id, $current_group['id'])) {
- $unsubscribe_group = '
'.get_lang("StudentUnsubscribe").'';
+ $unsubscribe_group = '
'.
+ get_lang("StudentUnsubscribe").'';
}
echo '
';
@@ -121,12 +125,17 @@ if (isset($_GET['action'])) {
/* Main Display Area */
$course_code = api_get_course_id();
-$is_course_member = CourseManager :: is_user_subscribed_in_real_or_linked_course(api_get_user_id(), $course_code);
+$is_course_member = CourseManager::is_user_subscribed_in_real_or_linked_course(
+ api_get_user_id(),
+ $course_code
+);
// Edit the group.
$edit_url = '';
-if (api_is_allowed_to_edit(false, true) or GroupManager :: is_tutor_of_group(api_get_user_id(), api_get_group_id())) {
+if (api_is_allowed_to_edit(false, true) or
+ GroupManager::is_tutor_of_group(api_get_user_id(), api_get_group_id())
+) {
$my_origin = isset($origin) ? $origin : '';
$edit_url = '
'.
Display::return_icon('edit.png', get_lang('EditGroup'),'',ICON_SIZE_SMALL).'';
@@ -144,7 +153,9 @@ 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) OR GroupManager :: is_user_in_group(api_get_user_id(), $current_group['id'])) {
+if (api_is_allowed_to_edit(false, true) OR
+ GroupManager::is_user_in_group(api_get_user_id(), $current_group['id'])
+) {
$actions_array = array();
// Link to the forum of this group
$forums_of_groups = get_forums_of_group($current_group['id']);
@@ -152,7 +163,12 @@ if (api_is_allowed_to_edit(false, true) OR GroupManager :: is_user_in_group(api_
if (is_array($forums_of_groups)) {
if ($current_group['forum_state'] != GroupManager::TOOL_NOT_AVAILABLE ) {
foreach ($forums_of_groups as $key => $value) {
- if ($value['forum_group_public_private'] == 'public' || (/*!empty($user_subscribe_to_current_group) && */ $value['forum_group_public_private'] == 'private') || !empty($user_is_tutor) || api_is_allowed_to_edit(false, true)) {
+ //*!empty($user_subscribe_to_current_group) && */
+ if ($value['forum_group_public_private'] == 'public' ||
+ ($value['forum_group_public_private'] == 'private') ||
+ !empty($user_is_tutor) ||
+ api_is_allowed_to_edit(false, true)
+ ) {
$actions_array[] = array(
'url' => '../forum/viewforum.php?forum='.$value['forum_id'].'&gidReq='.Security::remove_XSS($current_group['id']).'&origin=group',
'content' => Display::return_icon('forum.png', get_lang('Forum').': '.$value['forum_title'] , array(), 32)
@@ -161,7 +177,7 @@ if (api_is_allowed_to_edit(false, true) OR GroupManager :: is_user_in_group(api_
}
}
}
- if ($current_group['doc_state'] != GroupManager::TOOL_NOT_AVAILABLE ) {
+ if ($current_group['doc_state'] != GroupManager::TOOL_NOT_AVAILABLE) {
// Link to the documents area of this group
$actions_array[] = array(
'url' => '../document/document.php?'.api_get_cidreq(),
@@ -222,6 +238,7 @@ if (api_is_allowed_to_edit(false, true) OR GroupManager :: is_user_in_group(api_
// Link to the forum of this group
$forums_of_groups = get_forums_of_group($current_group['id']);
+
if (is_array($forums_of_groups)) {
if ( $current_group['forum_state'] == GroupManager::TOOL_PUBLIC ) {
foreach ($forums_of_groups as $key => $value) {
@@ -234,6 +251,7 @@ if (api_is_allowed_to_edit(false, true) OR GroupManager :: is_user_in_group(api_
}
}
}
+
if ($current_group['doc_state'] == GroupManager::TOOL_PUBLIC) {
// Link to the documents area of this group
$actions_array[] = array(
diff --git a/main/group/import.php b/main/group/import.php
index fe1765308f..de90233327 100644
--- a/main/group/import.php
+++ b/main/group/import.php
@@ -39,15 +39,23 @@ if ($form->validate()) {
$groupData = Import::csv_reader($_FILES['file']['tmp_name']);
$deleteNotInArray = $form->getSubmitValue('delete_not_in_file') == 1 ? true : false;
- $result = GroupManager::importCategoriesAndGroupsFromArray($groupData, $deleteNotInArray);
+ $result = GroupManager::importCategoriesAndGroupsFromArray(
+ $groupData,
+ $deleteNotInArray
+ );
+
if (!empty($result)) {
$html = null;
+
foreach ($result as $status => $data) {
- if (empty($data['category']) && empty($data['group'])) {
- continue;
+ if ($status != 'error') {
+ if (empty($data['category']) && empty($data['group'])) {
+ continue;
+ }
}
$html .= "
".get_lang(ucfirst($status)).'
';
+
if (!empty($data['category'])) {
$html .= "
".get_lang('Categories').':
';
foreach ($data['category'] as $category) {
@@ -61,7 +69,18 @@ if ($form->validate()) {
$html .= "
".$group['group']."
";
}
}
+
+ if ($status == 'error') {
+ if (!empty($data)) {
+ foreach ($data as $message) {
+ if (!empty($message)) {
+ $html .= "
".$message."
";
+ }
+ }
+ }
+ }
}
+
echo $html;
}
}
diff --git a/main/group/settings.php b/main/group/settings.php
index 6f7aab335b..9c707611bf 100644
--- a/main/group/settings.php
+++ b/main/group/settings.php
@@ -24,12 +24,12 @@ $current_course_tool = TOOL_GROUP;
api_protect_course_script(true);
$group_id = api_get_group_id();
-$current_group = GroupManager :: get_group_properties($group_id);
+$current_group = GroupManager::get_group_properties($group_id);
$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(), $group_id);
+$is_group_member = GroupManager::is_tutor_of_group(api_get_user_id(), $group_id);
if (!api_is_allowed_to_edit(false, true) && !$is_group_member) {
api_not_allowed(true);
@@ -46,6 +46,16 @@ $form->addElement('html', '
');
// Group name
$form->addElement('text', 'name', get_lang('GroupName'));
+if (api_get_setting('allow_group_categories') == 'true') {
+ $groupCategories = GroupManager::get_categories();
+ $categoryList = array();
+ //$categoryList[] = null;
+ foreach ($groupCategories as $category) {
+ $categoryList[$category['id']] = $category['title'];
+ }
+ $form->addElement('select', 'category_id', get_lang('Category'), $categoryList);
+}
+
// Members per group
$group = array(
$form->createElement('radio', 'max_member_no_limit', get_lang('GroupLimit'), get_lang('NoLimit'), GroupManager::MEMBER_PER_GROUP_NO_LIMIT),
@@ -150,11 +160,12 @@ if ($form->validate()) {
}
$self_registration_allowed = isset($values['self_registration_allowed']) ? 1 : 0;
$self_unregistration_allowed = isset($values['self_unregistration_allowed']) ? 1 : 0;
+ $categoryId = isset($values['category_id']) ? $values['category_id'] : null;
GroupManager::set_group_properties(
$current_group['id'],
- strip_tags($values['name']),
- strip_tags($values['description']),
+ $values['name'],
+ $values['description'],
$max_member,
$values['doc_state'],
$values['work_state'],
@@ -164,7 +175,8 @@ if ($form->validate()) {
$values['wiki_state'],
$values['chat_state'],
$self_registration_allowed,
- $self_unregistration_allowed
+ $self_unregistration_allowed,
+ $categoryId
);
if (isset($_POST['group_members']) && count($_POST['group_members']) > $max_member && $max_member != GroupManager::MEMBER_PER_GROUP_NO_LIMIT) {
header('Location: group.php?'.api_get_cidreq(true, false).'&action=warning_message&msg='.get_lang('GroupTooMuchMembers'));
@@ -175,6 +187,11 @@ if ($form->validate()) {
}
$defaults = $current_group;
+$category = GroupManager::get_category_from_group($group_id);
+if (!empty($category)) {
+ $defaults['category_id'] = $category['id'];
+}
+
$action = isset($_GET['action']) ? $_GET['action'] : '';
$defaults['action'] = $action;
if ($defaults['maximum_number_of_students'] == GroupManager::MEMBER_PER_GROUP_NO_LIMIT) {
diff --git a/main/inc/lib/groupmanager.lib.php b/main/inc/lib/groupmanager.lib.php
index e35b5ff5fe..d12ad7dfbe 100644
--- a/main/inc/lib/groupmanager.lib.php
+++ b/main/inc/lib/groupmanager.lib.php
@@ -534,19 +534,20 @@ class GroupManager
/**
* Set group properties
* Changes the group's properties.
- * @param int Group Id
- * @param string Group name
+ * @param int Group Id
+ * @param string Group name
* @param string Group description
- * @param int Max number of students in group
- * @param int Document tool's visibility (0=none,1=private,2=public)
- * @param int Work tool's visibility (0=none,1=private,2=public)
- * @param int Calendar tool's visibility (0=none,1=private,2=public)
- * @param int Announcement tool's visibility (0=none,1=private,2=public)
- * @param int Forum tool's visibility (0=none,1=private,2=public)
- * @param int Wiki tool's visibility (0=none,1=private,2=public)
- * @param int Chat tool's visibility (0=none,1=private,2=public)
- * @param bool Whether self registration is allowed or not
- * @param bool Whether self unregistration is allowed or not
+ * @param int Max number of students in group
+ * @param int Document tool's visibility (0=none,1=private,2=public)
+ * @param int Work tool's visibility (0=none,1=private,2=public)
+ * @param int Calendar tool's visibility (0=none,1=private,2=public)
+ * @param int Announcement tool's visibility (0=none,1=private,2=public)
+ * @param int Forum tool's visibility (0=none,1=private,2=public)
+ * @param int Wiki tool's visibility (0=none,1=private,2=public)
+ * @param int Chat tool's visibility (0=none,1=private,2=public)
+ * @param bool Whether self registration is allowed or not
+ * @param bool Whether self unregistration is allowed or not
+ * @param int $categoryId
* @return bool TRUE if properties are successfully changed, false otherwise
*/
public static function set_group_properties(
@@ -562,14 +563,14 @@ class GroupManager
$wiki_state,
$chat_state,
$self_registration_allowed,
- $self_unregistration_allowed
+ $self_unregistration_allowed,
+ $categoryId = null
) {
$table_group = Database :: get_course_table(TABLE_GROUP);
$table_forum = Database :: get_course_table(TABLE_FORUM);
- //$forum_id = get_forums_of_group($group_id);
- $group_id = Database::escape_string($group_id);
- $category = self::get_category_from_group($group_id);
+ $categoryId = intval($categoryId);
+ $group_id = Database::escape_string($group_id);
$course_id = api_get_course_int_id();
$sql = "UPDATE ".$table_group." SET
@@ -581,20 +582,21 @@ class GroupManager
forum_state = '".Database::escape_string($forum_state)."',
wiki_state = '".Database::escape_string($wiki_state)."',
chat_state = '".Database::escape_string($chat_state)."',
- description='".Database::escape_string(trim($description))."',
- max_student= '".Database::escape_string($maximum_number_of_students)."',
- self_registration_allowed='".Database::escape_string($self_registration_allowed)."',
- self_unregistration_allowed='".Database::escape_string($self_unregistration_allowed)."'
+ description ='".Database::escape_string(trim($description))."',
+ max_student = '".Database::escape_string($maximum_number_of_students)."',
+ self_registration_allowed = '".Database::escape_string($self_registration_allowed)."',
+ self_unregistration_allowed = '".Database::escape_string($self_unregistration_allowed)."',
+ category_id = '".Database::escape_string($categoryId)."'
WHERE c_id = $course_id AND id=".$group_id;
$result = Database::query($sql);
//Here we are updating a field in the table forum_forum that perhaps duplicates the table group_info.forum_state cvargas
$forum_state = (int) $forum_state;
$sql2 = "UPDATE ".$table_forum." SET ";
- if ($forum_state===1) {
+ if ($forum_state === 1) {
$sql2 .= " forum_group_public_private='public' ";
- } elseif ($forum_state===2) {
+ } elseif ($forum_state === 2) {
$sql2 .= " forum_group_public_private='private' ";
- } elseif ($forum_state===0) {
+ } elseif ($forum_state === 0) {
$sql2 .= " forum_group_public_private='unavailable' ";
}
$sql2 .=" WHERE c_id = $course_id AND forum_of_group=".$group_id;
@@ -767,8 +769,10 @@ class GroupManager
$maximum_number_of_students = 8,
$groups_per_user = 0
) {
+ if (empty($title)) {
+ return false;
+ }
$table_group_category = Database :: get_course_table(TABLE_GROUP_CATEGORY);
-
$course_id = api_get_course_int_id();
$sql = "SELECT MAX(display_order)+1 as new_order FROM $table_group_category WHERE c_id = $course_id ";
@@ -842,7 +846,7 @@ class GroupManager
$course_id = api_get_course_int_id();
- $sql = "UPDATE ".$table_group_category."SET
+ $sql = "UPDATE ".$table_group_category." SET
title='".Database::escape_string($title)."',
description='".Database::escape_string($description)."',
doc_state = '".Database::escape_string($doc_state)."',
@@ -857,6 +861,7 @@ class GroupManager
self_unreg_allowed = '".Database::escape_string($self_unregistration_allowed)."',
max_student = ".Database::escape_string($maximum_number_of_students)."
WHERE c_id = $course_id AND id = $id";
+
Database::query($sql);
// Updating all groups inside this category
@@ -877,7 +882,8 @@ class GroupManager
$wiki_state,
$chat_state,
$self_registration_allowed,
- $self_unregistration_allowed
+ $self_unregistration_allowed,
+ $id
);
}
}
@@ -2204,14 +2210,19 @@ class GroupManager
'groups' => array()
);
- $groupCategories = GroupManager :: get_categories();
+ $groupCategories = GroupManager::get_categories();
+
+ if (empty($groupCategories)) {
+ $result['error'][] = get_lang('CreateACategory');
+ return $result;
+ }
foreach ($groupData as $data) {
$isCategory = empty($data['group']) ? true : false;
-
if ($isCategory) {
$categoryInfo = self::getCategoryByTitle($data['category']);
$categoryId = $categoryInfo['id'];
+
if (!empty($categoryInfo)) {
// Update
self::update_category(
@@ -2233,6 +2244,7 @@ class GroupManager
$data['category_id'] = $categoryId;
$result['updated']['category'][] = $data;
} else {
+
// Add
$categoryId = self::create_category(
$data['category'],
@@ -2257,21 +2269,20 @@ class GroupManager
}
$elementsFound['categories'][] = $categoryId;
} else {
-
$groupInfo = self::getGroupByName($data['group']);
- if (empty($groupInfo)) {
- $categoryInfo = self::getCategoryByTitle($data['category']);
-
- $categoryId = null;
- if (!empty($categoryInfo)) {
- $categoryId = $categoryInfo['id'];
- } else {
- if (!empty($groupCategories) && isset($groupCategories[0])) {
- $defaultGroupCategory = $groupCategories[0];
- $categoryId = $defaultGroupCategory['id'];
- }
+ $categoryInfo = self::getCategoryByTitle($data['category']);
+ $categoryId = null;
+ if (!empty($categoryInfo)) {
+ $categoryId = $categoryInfo['id'];
+ } else {
+ if (!empty($groupCategories) && isset($groupCategories[0])) {
+ $defaultGroupCategory = $groupCategories[0];
+ $categoryId = $defaultGroupCategory['id'];
}
+ }
+
+ if (empty($groupInfo)) {
// Add
$groupId = self::create_group(
@@ -2295,7 +2306,8 @@ class GroupManager
$data['wiki_state'],
$data['chat_state'],
$data['self_reg_allowed'],
- $data['self_unreg_allowed']
+ $data['self_unreg_allowed'],
+ $categoryId
);
$data['group_id'] = $groupId;
$result['added']['group'][] = $data;
@@ -2316,7 +2328,8 @@ class GroupManager
$data['wiki_state'],
$data['chat_state'],
$data['self_reg_allowed'],
- $data['self_unreg_allowed']
+ $data['self_unreg_allowed'],
+ $categoryId
);
$data['group_id'] = $groupId;
diff --git a/tests/main/inc/lib/groupmanager.lib.test.php b/tests/main/inc/lib/groupmanager.lib.test.php
index 19308ea28b..a9c3f9c077 100755
--- a/tests/main/inc/lib/groupmanager.lib.test.php
+++ b/tests/main/inc/lib/groupmanager.lib.test.php
@@ -80,25 +80,41 @@ class TestGroupManager extends UnitTestCase {
//var_dump($res);
}
- public function testSetGroupProperties(){
- $group= array('group_id'=>'01',
- 'name'=>'1',
- 'description'=>'',
- 'maximum_number_of_students'=>'2',
- 'doc_state' =>'',
- 'work_state' =>'',
- 'calendar_state' =>'',
- 'announcements_state'=>'',
- 'forum_state'=>'',
- 'wiki_state'=>'',
- 'chat_state' =>'',
- 'self_registration_allowed'=>'',
- 'self_unregistration_allowed'=>'');
- $res = GroupManager::set_group_properties($group['group_id'], $group['name'], $group['description'],
- $group['maximum_number_of_students'], $group['doc_state'],
- $group['work_state'], $group['calendar_state'], $group['announcements_state'],
- $group['forum_state'],$group['wiki_state'],$group['chat_state'], $group['self_registration_allowed'],
- $group['self_unregistration_allowed']);
+ public function testSetGroupProperties()
+ {
+ $group = array(
+ 'group_id'=>'01',
+ 'name'=>'1',
+ 'description'=>'',
+ 'maximum_number_of_students'=>'2',
+ 'doc_state' =>'',
+ 'work_state' =>'',
+ 'calendar_state' =>'',
+ 'announcements_state'=>'',
+ 'forum_state'=>'',
+ 'wiki_state'=>'',
+ 'chat_state' =>'',
+ 'self_registration_allowed'=>'',
+ 'self_unregistration_allowed'=>'',
+ 'category_id' => null
+ );
+
+ $res = GroupManager::set_group_properties(
+ $group['group_id'],
+ $group['name'],
+ $group['description'],
+ $group['maximum_number_of_students'],
+ $group['doc_state'],
+ $group['work_state'],
+ $group['calendar_state'],
+ $group['announcements_state'],
+ $group['forum_state'],
+ $group['wiki_state'],
+ $group['chat_state'],
+ $group['self_registration_allowed'],
+ $group['self_unregistration_allowed'],
+ $group['category_id']
+ );
$this->assertTrue(is_bool($res));
//var_dump($res);
}