Fixing group import, category edition see BT#7682

1.9.x
Julio Montoya 12 years ago
parent 2f19202b30
commit 9cf2ebe0b0
  1. 4
      main/group/example.csv
  2. 27
      main/group/group.php
  3. 50
      main/group/group_category.php
  4. 7
      main/group/group_creation.php
  5. 4
      main/group/group_edit.php
  6. 34
      main/group/group_space.php
  7. 25
      main/group/import.php
  8. 27
      main/group/settings.php
  9. 97
      main/inc/lib/groupmanager.lib.php
  10. 54
      tests/main/inc/lib/groupmanager.lib.test.php

@ -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"

Can't render this file because it has a wrong number of fields in line 3.

@ -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;

@ -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', '<div class="span6">');
// 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', '</div>');
$form->addElement('html', '<div class="span6">');
// 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', '</div>');
$form->addElement('html', '<div class="span12">');
// 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;

@ -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'])) {
</script>
<?php
}
$group_categories = GroupManager :: get_categories();
$group_categories = GroupManager::get_categories();
$group_id = GroupManager :: get_number_of_groups() + 1;
foreach ($group_categories as $index => $category) {
// Don't allow new groups in the virtual course category!

@ -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'],

@ -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 '<div class="actions">';
echo '<a href="group.php">'.Display::return_icon('back.png',get_lang('BackToGroupList'),'',ICON_SIZE_MEDIUM).'</a>';
@ -98,7 +100,8 @@ echo '<a href="group.php">'.Display::return_icon('back.png',get_lang('BackToGrou
*/
$subscribe_group = '';
if (GroupManager :: is_self_registration_allowed($user_id, $current_group['id'])) {
$subscribe_group = '<a class="btn" href="'.api_get_self().'?selfReg=1&amp;group_id='.$current_group['id'].'" onclick="javascript: if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES))."'".')) return false;">'.get_lang("RegIntoGroup").'</a>';
$subscribe_group = '<a class="btn" href="'.api_get_self().'?selfReg=1&amp;group_id='.$current_group['id'].'" onclick="javascript: if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES))."'".')) return false;">'.
get_lang("RegIntoGroup").'</a>';
}
/*
@ -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 = '<a class="btn" href="'.api_get_self().'?selfUnReg=1" onclick="javascript: if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."'".')) return false;">'.get_lang("StudentUnsubscribe").'</a>';
$unsubscribe_group = '<a class="btn" href="'.api_get_self().'?selfUnReg=1" onclick="javascript: if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."'".')) return false;">'.
get_lang("StudentUnsubscribe").'</a>';
}
echo '&nbsp;</div>';
@ -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 = '<a href="'.api_get_path(WEB_CODE_PATH).'group/settings.php?cidReq='.api_get_course_id().'&origin='.$my_origin.'&gidReq='.api_get_group_id().'">'.
Display::return_icon('edit.png', get_lang('EditGroup'),'',ICON_SIZE_SMALL).'</a>';
@ -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']).'&amp;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(

@ -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 .= " <h3>".get_lang(ucfirst($status)).' </h3>';
if (!empty($data['category'])) {
$html .= "<h4> ".get_lang('Categories').':</h4>';
foreach ($data['category'] as $category) {
@ -61,7 +69,18 @@ if ($form->validate()) {
$html .= "<div>".$group['group']."</div>";
}
}
if ($status == 'error') {
if (!empty($data)) {
foreach ($data as $message) {
if (!empty($message)) {
$html .= "<div>".$message."</div>";
}
}
}
}
}
echo $html;
}
}

@ -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', '<div class="span6">');
// 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) {

@ -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;

@ -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);
}

Loading…
Cancel
Save