$groups_per_user) {
return false;
}
return true;
}
if (isset($_GET['id'])) {
$category = GroupManager::get_category($_GET['id']);
$nameTools = get_lang('Edit group category').': '.$category['title'];
} else {
$nameTools = get_lang('Add category');
// Default values for new category
$category = [
'groups_per_user' => 1,
'doc_state' => GroupManager::TOOL_PRIVATE,
'work_state' => GroupManager::TOOL_PRIVATE,
'wiki_state' => GroupManager::TOOL_PRIVATE,
'chat_state' => GroupManager::TOOL_PRIVATE,
'calendar_state' => GroupManager::TOOL_PRIVATE,
'announcements_state' => GroupManager::TOOL_PRIVATE,
'forum_state' => GroupManager::TOOL_PRIVATE,
'max_student' => 0,
'document_access' => 0,
];
}
$htmlHeadXtra[] = '';
$interbreadcrumb[] = ['url' => 'group.php?'.api_get_cidreq(), 'name' => get_lang('Groups')];
$course_id = api_get_course_int_id();
// Build the form
if (isset($_GET['id'])) {
// Update settings of existing category
$action = 'update_settings';
$form = new FormValidator(
'group_category',
'post',
api_get_self().'?id='.$category['id'].'&'.api_get_cidreq()
);
$form->addElement('hidden', 'id');
} else {
// Checks if the field was created in the table Category. It creates it if is neccesary
$table_category = Database::get_course_table(TABLE_GROUP_CATEGORY);
if (!Database::query("SELECT wiki_state FROM $table_category WHERE c_id = $course_id")) {
$sql = "ALTER TABLE $table_category ADD wiki_state tinyint(3) UNSIGNED NOT NULL default '1'
WHERE c_id = $course_id";
Database::query($sql);
}
// Create a new category
$action = 'add_category';
$form = new FormValidator('group_category');
}
$form->addElement('header', $nameTools);
$form->addElement('html', '
');
$form->addText('title', get_lang('Title'));
// Groups per user
$possible_values = [];
for ($i = 1; $i <= 10; $i++) {
$possible_values[$i] = $i;
}
$possible_values[GroupManager::GROUP_PER_MEMBER_NO_LIMIT] = get_lang('All');
$group = [
$form->createElement('select', 'groups_per_user', null, $possible_values, ['id' => 'groups_per_user']),
$form->createElement('static', null, null, get_lang(' groups')),
];
$form->addGroup($group, 'limit_group', get_lang('A user can be member of maximum'), null, false);
$form->addRule('limit_group', get_lang('The maximum number of groups per user you submitted is invalid. There are now users who are subscribed in more groups than the number you propose.'), 'callback', 'check_groups_per_user');
$form->addElement('html', '
');
$form->addElement('html', '
');
$form->addElement('textarea', 'description', get_lang('Description'), ['rows' => 6]);
$form->addElement('html', '
');
$form->addElement('html', '
');
$form->addElement('header', '');
$form->addElement('html', '
');
$form->addElement('html', '
');
// Members per group
$group = [
$form->createElement(
'radio',
'max_member_no_limit',
get_lang('Limit'),
get_lang('No limitation'),
GroupManager::MEMBER_PER_GROUP_NO_LIMIT
),
$form->createElement(
'radio',
'max_member_no_limit',
null,
get_lang('Maximum number of members'),
1,
['id' => 'max_member_selected']
),
$form->createElement('text', 'max_member', null, ['class' => 'span1', 'id' => 'max_member']),
$form->createElement('static', null, null, ' '.get_lang('seats (optional)')),
];
$form->addGroup($group, 'max_member_group', get_lang('Limit'), null, false);
$form->addRule('max_member_group', get_lang('Please enter a valid number for the maximum number of members.'), 'callback', 'check_max_number_of_members');
$form->addElement('html', '
');
$form->addElement('html', '
');
// Self registration
$group = [
$form->createElement(
'checkbox',
'self_reg_allowed',
get_lang('Registration'),
get_lang('Learners are allowed to self-register in groups'),
1
),
$form->createElement('checkbox', 'self_unreg_allowed', null, get_lang('Learners are allowed to unregister themselves from groups'), 1),
];
$form->addGroup(
$group,
'',
Display::return_icon('user.png', get_lang('Registration')).' '.get_lang('Registration'),
null,
false
);
$form->addElement('html', '
');
$form->addElement('hidden', 'action');
$form->addElement('html', '
');
$form->addElement('header', get_lang('Default settings for new groups'));
$form->addElement('html', '
');
$form->addElement('html', '
');
// Documents settings.
$group = [
$form->createElement('radio', 'doc_state', get_lang('Documents'), get_lang('Not available'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'doc_state', null, get_lang('Public access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course)'), GroupManager::TOOL_PUBLIC),
$form->createElement('radio', 'doc_state', null, get_lang('Private access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only)'), GroupManager::TOOL_PRIVATE),
];
$form->addGroup(
$group,
'',
Display::return_icon('folder.png', get_lang('Documents')).' '.get_lang('Documents'),
null,
false
);
$allowDocumentGroupAccess = api_get_configuration_value('group_category_document_access');
if ($allowDocumentGroupAccess) {
$form->addElement('html', '
');
$form->addElement('html', '
');
$group = [
$form->createElement(
'radio',
'document_access',
null,
get_lang('Share mode'),
GroupManager::DOCUMENT_MODE_SHARE
),
$form->createElement(
'radio',
'document_access',
get_lang('Documents'),
get_lang('Collaboration mode'),
GroupManager::DOCUMENT_MODE_COLLABORATION
),
$form->createElement(
'radio',
'document_access',
null,
get_lang('Read only mode'),
GroupManager::DOCUMENT_MODE_READ_ONLY
),
];
$form->addGroup(
$group,
'',
Display::return_icon(
'folder.png',
get_lang('DocumentsAccess')
).''.get_lang('DocumentsAccess').'',
null,
false
);
$form->addElement('html', '
');
}
$form->addElement('html', '
');
$form->addElement('html', '');
$form->addElement('header', '');
$form->addElement('html', '
');
$form->addElement('html', '');
// Work settings.
$group = [
$form->createElement('radio', 'work_state', get_lang('Assignments'), get_lang('Not available'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'work_state', null, get_lang('Public access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course)'), GroupManager::TOOL_PUBLIC),
$form->createElement('radio', 'work_state', null, get_lang('Private access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only)'), GroupManager::TOOL_PRIVATE),
];
$form->addGroup(
$group,
'',
Display::return_icon('work.png', get_lang('Assignments'), [], ICON_SIZE_SMALL).' '.get_lang('Assignments'),
'',
false
);
$form->addElement('html', '
');
$form->addElement('html', '');
// Calendar settings.
$group = [
$form->createElement('radio', 'calendar_state', get_lang('Agenda'), get_lang('Not available'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'calendar_state', null, get_lang('Public access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course)'), GroupManager::TOOL_PUBLIC),
$form->createElement('radio', 'calendar_state', null, get_lang('Private access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only)'), GroupManager::TOOL_PRIVATE),
];
$form->addGroup(
$group,
'',
Display::return_icon('agenda.png', get_lang('Agenda')).' '.get_lang('Agenda'),
null,
false
);
$form->addElement('html', '
');
$form->addElement('html', '');
$form->addElement('header', '');
$form->addElement('html', '
');
$form->addElement('html', '');
// Announcements settings.
$group = [
$form->createElement('radio', 'announcements_state', get_lang('Announcements'), get_lang('Not available'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'announcements_state', null, get_lang('Public access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course)'), GroupManager::TOOL_PUBLIC),
$form->createElement('radio', 'announcements_state', null, get_lang('Private access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only)'), GroupManager::TOOL_PRIVATE),
];
$form->addGroup(
$group,
'',
Display::return_icon('announce.png', get_lang('Announcements')).' '.get_lang('Announcements'),
null,
false
);
$form->addElement('html', '
');
$form->addElement('html', '');
// Forum settings.
$group = [
$form->createElement('radio', 'forum_state', get_lang('Group Forum'), get_lang('Not available'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'forum_state', null, get_lang('Public access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course)'), GroupManager::TOOL_PUBLIC),
$form->createElement('radio', 'forum_state', null, get_lang('Private access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only)'), GroupManager::TOOL_PRIVATE),
];
$form->addGroup(
$group,
'',
Display::return_icon('forum.png', get_lang('Group Forum')).' '.get_lang('Group Forum'),
null,
false
);
$form->addElement('html', '
');
$form->addElement('html', '');
$form->addElement('header', '');
$form->addElement('html', '
');
$form->addElement('html', '');
// Wiki settings.
$group = [
$form->createElement('radio', 'wiki_state', get_lang('Wiki'), get_lang('Not available'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'wiki_state', null, get_lang('Public access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course)'), GroupManager::TOOL_PUBLIC),
$form->createElement('radio', 'wiki_state', null, get_lang('Private access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only)'), GroupManager::TOOL_PRIVATE),
];
$form->addGroup(
$group,
'',
Display::return_icon('wiki.png', get_lang('Wiki')).' '.get_lang('Wiki'),
null,
false
);
$form->addElement('html', '
');
$form->addElement('html', '');
// Chat settings.
$group = [
$form->createElement('radio', 'chat_state', get_lang('Chat'), get_lang('Not available'), GroupManager::TOOL_NOT_AVAILABLE),
$form->createElement('radio', 'chat_state', null, get_lang('Public access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course) access (access authorized to any member of the course)'), GroupManager::TOOL_PUBLIC),
$form->createElement('radio', 'chat_state', null, get_lang('Private access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only) access (access authorized to group members only)'), GroupManager::TOOL_PRIVATE),
];
$form->addGroup(
$group,
'',
Display::return_icon('chat.png', get_lang('Chat')).' '.get_lang('Chat'),
null,
false
);
$form->addElement('html', '
');
// Submit
if (isset($_GET['id'])) {
$form->addButtonUpdate(get_lang('Edit'), 'submit');
} else {
$form->addButtonSave(get_lang('Add'), 'submit');
}
$currentUrl = api_get_path(WEB_CODE_PATH).'group/group.php?'.api_get_cidreq();
// If form validates -> save data
if ($form->validate()) {
$values = $form->exportValues();
if ($values['max_member_no_limit'] == GroupManager::MEMBER_PER_GROUP_NO_LIMIT) {
$max_member = GroupManager::MEMBER_PER_GROUP_NO_LIMIT;
} 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(
$values['id'],
$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'],
isset($values['document_access']) ? $values['document_access'] : 0
);
Display::addFlash(Display::return_message(get_lang('Group settings have been modified')));
header("Location: ".$currentUrl."&category=".$values['id']);
exit;
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'],
isset($values['document_access']) ? $values['document_access'] : 0
);
Display::addFlash(Display::return_message(get_lang('Category created')));
header("Location: ".$currentUrl);
exit;
break;
}
}
// Else display the form
Display::display_header($nameTools, 'Group');
// actions bar
echo '';
$defaults = $category;
$defaults['action'] = $action;
if ($defaults['max_student'] == GroupManager::MEMBER_PER_GROUP_NO_LIMIT) {
$defaults['max_member_no_limit'] = GroupManager::MEMBER_PER_GROUP_NO_LIMIT;
} else {
$defaults['max_member_no_limit'] = 1;
$defaults['max_member'] = $defaults['max_student'];
}
$form->setDefaults($defaults);
$form->display();
Display::display_footer();