Delete unused group code see #8210

pull/2487/head
Julio 9 years ago
parent c85a7abb2b
commit 59c1a9cb74
  1. 6
      app/Migrations/Schema/V111/Version111.php
  2. 570
      main/admin/add_users_to_group.php
  3. 181
      main/admin/group_add.php
  4. 176
      main/admin/group_edit.php
  5. 407
      main/admin/group_list.php
  6. 4
      main/course_description/listing.php
  7. 8
      main/inc/lib/database.constants.inc.php
  8. 1502
      main/inc/lib/group_portal_manager.lib.php
  9. 555
      main/install/install.lib.php
  10. 10
      main/social/invitations.php
  11. 16
      main/webservices/registration.soap.php
  12. 10
      src/Chamilo/CoreBundle/Composer/ScriptHandler.php
  13. 125
      src/Chamilo/CoreBundle/Entity/GroupRelGroup.php
  14. 95
      src/Chamilo/CoreBundle/Entity/GroupRelTag.php
  15. 125
      src/Chamilo/CoreBundle/Entity/GroupRelUser.php
  16. 245
      src/Chamilo/CoreBundle/Entity/Groups.php
  17. 6
      tests/scripts/userfields_to_groups.php

@ -131,8 +131,12 @@ class Version111 extends AbstractMigrationChamilo
$this->addSql('UPDATE track_e_default SET default_date = NULL WHERE default_date = "0000-00-00 00:00:00"');
$this->addSql('ALTER TABLE track_e_default CHANGE default_date default_date DATETIME');
$this->addSql('ALTER TABLE track_e_exercises CHANGE expired_time_control expired_time_control DATETIME');
$this->addSql('DROP TABLE group_rel_user');
$this->addSql('DROP TABLE group_rel_tag');
$this->addSql('DROP TABLE group_rel_group');
$this->addSql('DROP TABLE groups');
}
/**

@ -1,570 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.admin
*/
// resetting the course id
$cidReset = true;
// including some necessary files
require_once '../inc/global.inc.php';
// setting the section (for the tabs)
$this_section = SECTION_PLATFORM_ADMIN;
// Access restrictions
api_protect_admin_script(true);
// setting breadcrumbs
$interbreadcrumb[] = array('url' => 'index.php','name' => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array('url' => 'group_list.php','name' => get_lang('GroupList'));
// Database Table Definitions
$tbl_group = Database::get_main_table(TABLE_MAIN_GROUP);
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_group_rel_user = Database::get_main_table(TABLE_USERGROUP_REL_USER);
$tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$needle = null;
$user_anonymous = api_get_anonymous_id();
// setting the name of the tool
$tool_name = get_lang('SubscribeUsersToGroup');
$group_id = intval($_GET['id']);
$without_user_id = null;
$add_type = 'multiple';
if (isset($_REQUEST['add_type']) && $_REQUEST['add_type'] != '') {
$add_type = Security::remove_XSS($_REQUEST['add_type']);
}
//checking for extra field with filter on
$xajax = new xajax();
$xajax->registerFunction('search_users');
function search_users($needle, $type, $relation_type)
{
global $tbl_user, $tbl_user_rel_access_url, $tbl_group_rel_user, $group_id;
$xajax_response = new xajaxResponse();
$return = $return_origin = $return_destination = '';
$without_user_id = $without_user_id = $condition_relation = '';
if (!empty($group_id) && !empty($relation_type)) {
$group_id = intval($group_id);
$relation_type = intval($relation_type);
// get user_id from relation type and group id
$sql = "SELECT user_id FROM $tbl_group_rel_user
WHERE group_id = '$group_id'
AND relation_type IN (".GROUP_USER_PERMISSION_ADMIN.",".GROUP_USER_PERMISSION_READER.",".GROUP_USER_PERMISSION_PENDING_INVITATION.",".GROUP_USER_PERMISSION_MODERATOR.", ".GROUP_USER_PERMISSION_HRM.") ";
$res = Database::query($sql);
$user_ids = array();
if (Database::num_rows($res) > 0) {
while ($row = Database::fetch_row($res)) {
$user_ids[] = $row[0];
}
$without_user_id = " AND user.user_id NOT IN(".implode(',', $user_ids).") ";
}
$condition_relation = " AND groups.relation_type = '$relation_type' ";
// data for destination user list
$sql = "SELECT user.user_id, user.username, user.lastname, user.firstname
FROM $tbl_group_rel_user groups
INNER JOIN $tbl_user user ON user.user_id = groups.user_id
WHERE groups.group_id = '$group_id' $condition_relation ";
$rs_destination = Database::query($sql);
if (Database::num_rows($rs_destination) > 0) {
$return_destination .= '<select id="destination_users" name="sessionUsersList[]" multiple="multiple" size="15" style="width:360px;">';
while ($row = Database::fetch_array($rs_destination)) {
$person_name = api_get_person_name($row['firstname'], $row['lastname']);
$return_destination .= '<option value="'.$row['user_id'].'">'.
$person_name.' ('.$row['username'].')</option>';
}
$return_destination .= '</select>';
} else {
$return_destination .= '<select id="destination_users" name="sessionUsersList[]" multiple="multiple" size="15" style="width:360px;"></select>';
}
$xajax_response->addAssign('ajax_destination_list','innerHTML', api_utf8_encode($return_destination));
} else {
$return_destination .= '<select id="destination_users" name="sessionUsersList[]" multiple="multiple" size="15" style="width:360px;"></select>';
$xajax_response->addAssign('ajax_destination_list','innerHTML', api_utf8_encode($return_destination));
if ($type == 'single') {
$return.= '';
$xajax_response->addAssign('ajax_list_users_single','innerHTML',api_utf8_encode($return));
} else {
$return_origin .= '<select id="origin_users" name="nosessionUsersList[]" multiple="multiple" size="15" style="width:360px;"></select>';
$xajax_response->addAssign('ajax_origin_list_multiple', 'innerHTML', api_utf8_encode($return_origin));
}
}
if (!empty($needle) && !empty($type)) {
$user_anonymous = api_get_anonymous_id();
$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username';
if ($type == 'single') {
if (!empty($group_id) && !empty($relation_type)) {
// search users where username or firstname or lastname begins likes $needle
$sql = "SELECT user_id, username, lastname, firstname
FROM $tbl_user user
WHERE (username LIKE '$needle%' OR firstname LIKE '$needle%' OR lastname LIKE '$needle%')
AND user_id<>'$user_anonymous' $without_user_id $order_clause LIMIT 11";
if (api_is_multiple_url_enabled()) {
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$sql = "SELECT user.user_id, username, lastname, firstname FROM $tbl_user user
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=user.user_id)
WHERE access_url_id = '$access_url_id' AND (username LIKE '$needle%' OR firstname LIKE '$needle%' OR lastname LIKE '$needle%')
AND user.user_id<>'$user_anonymous' $without_user_id $order_clause LIMIT 11 ";
}
}
$rs_single = Database::query($sql);
$i=0;
while ($user = Database :: fetch_array($rs_single)) {
$i++;
if ($i<=10) {
$person_name = api_get_person_name($user['firstname'], $user['lastname']);
$return .= '<a href="javascript: void(0);" onclick="javascript: add_user(\''.$user['user_id'].'\',\''.$person_name.' ('.$user['username'].')'.'\')">'.$person_name.' ('.$user['username'].')</a><br />';
} else {
$return .= '...<br />';
}
}
$xajax_response->addAssign('ajax_list_users_single','innerHTML',api_utf8_encode($return));
} else {
$xajax_response->addAlert(get_lang('YouMustChooseARelationType'));
$xajax_response->addClear('user_to_add', 'value');
}
} else {
// multiple
if (!empty($group_id) && !empty($relation_type)) {
$sql = "SELECT user_id, username, lastname, firstname FROM $tbl_user user
WHERE ".(api_sort_by_first_name() ? 'firstname' : 'lastname')." LIKE '$needle%' AND user_id<>'$user_anonymous' $without_user_id $order_clause ";
if (api_is_multiple_url_enabled()) {
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$sql = "SELECT user.user_id, username, lastname, firstname
FROM $tbl_user user
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=user.user_id)
WHERE
access_url_id = '$access_url_id' AND
".(api_sort_by_first_name() ? 'firstname' : 'lastname')." LIKE '$needle%' AND
user.user_id<>'$user_anonymous' $without_user_id $order_clause ";
}
}
$rs_multiple = Database::query($sql);
$return_origin .= '<select id="origin_users" name="nosessionUsersList[]" multiple="multiple" size="15" style="width:360px;">';
while ($user = Database :: fetch_array($rs_multiple)) {
$person_name = api_get_person_name($user['firstname'], $user['lastname']);
$return_origin .= '<option value="'.$user['user_id'].'">'.
$person_name.' ('.$user['username'].')</option>';
}
$return_origin .= '</select>';
$xajax_response->addAssign('ajax_origin_list_multiple', 'innerHTML', api_utf8_encode($return_origin));
}
}
}
return $xajax_response;
}
$xajax->processRequests();
$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
$htmlHeadXtra[] = '
<script>
function add_user (code, content) {
destination = document.getElementById("destination_users");
for (i=0;i<destination.length;i++) {
if (destination.options[i].text == content) {
return false;
}
}
destination.options[destination.length] = new Option(content,code);
destination.selectedIndex = -1;
sortOptions(destination.options);
}
function remove_item(origin)
{
for(var i = 0 ; i<origin.options.length ; i++) {
if(origin.options[i].selected) {
origin.options[i]=null;
i = i-1;
}
}
}
function validate_filter() {
document.formulaire.add_type.value = \''.$add_type.'\';
document.formulaire.form_sent.value=0;
document.formulaire.submit();
}
</script>';
$form_sent = 0;
$errorMsg = $firstLetterUser = $firstLetterSession='';
$UserList = $SessionList = array();
$users = $sessions = array();
$noPHP_SELF = true;
$group_info = GroupPortalManager::get_group_data($group_id);
$group_name = $group_info['name'];
Display::display_header($group_name);
if (isset($_POST['form_sent']) && $_POST['form_sent']) {
$form_sent = $_POST['form_sent'];
$firstLetterUser = isset($_POST['firstLetterUser']) ? $_POST['firstLetterUser'] : null;
$UserList = $_POST['sessionUsersList'];
$group_id = intval($_POST['id']);
$relation_type = intval($_POST['relation']);
if (!is_array($UserList)) {
$UserList = array();
}
if ($form_sent == 1) {
$users_by_group = GroupPortalManager::get_users_by_group($group_id, null, array($relation_type));
$user_id_relation = array_keys($users_by_group);
$user_relation_diff = array_diff($user_id_relation, $UserList);
if (!empty($user_relation_diff)) {
foreach ($user_relation_diff as $user_id) {
GroupPortalManager::delete_user_rel_group($user_id, $group_id);
}
}
$result = GroupPortalManager::add_users_to_groups($UserList, array($group_id), $relation_type);
Display :: display_confirmation_message(get_lang('UsersEdited'));
}
}
$nosessionUsersList = $sessionUsersList = array();
$ajax_search = $add_type == 'unique' ? true : false;
$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username';
if ($ajax_search) {
// data for destination list
if (isset($_POST['id']) && isset($_POST['relation'])) {
// data for destination user list
$id = intval($_POST['id']);
$relation_type = intval($_POST['relation']);
$condition_relation = " AND groups.relation_type = '$relation_type' ";
$sql = "SELECT user.user_id, user.username, user.lastname, user.firstname
FROM $tbl_group_rel_user groups
INNER JOIN $tbl_user user ON user.user_id = groups.user_id
WHERE groups.group_id = '$id' $condition_relation ";
$rs_destination = Database::query($sql);
if (Database::num_rows($rs_destination) > 0) {
while ($row_destination_list = Database::fetch_array($rs_destination)) {
$sessionUsersList[$row_destination_list['user_id']] = $row_destination_list ;
}
}
}
} else {
$many_users = false;
$sql = "SELECT count(user_id) FROM $tbl_user user
WHERE ".(api_sort_by_first_name() ? 'firstname' : 'lastname')." LIKE '$needle%' AND
user_id<>'$user_anonymous' $without_user_id ";
if (api_is_multiple_url_enabled()) {
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$sql = "SELECT count(user.user_id) FROM $tbl_user user
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=user.user_id)
WHERE
access_url_id = '$access_url_id' AND
".(api_sort_by_first_name() ? 'firstname' : 'lastname')." LIKE '$needle%' AND
user.user_id<>'$user_anonymous' $without_user_id ";
}
}
$rs_count = Database::query($sql);
$row_count = 0;
if (Database::num_rows($rs_count)) {
$row_count = Database::fetch_row($rs_count);
$row_count = $row_count[0];
}
if ($row_count > 2) {
$many_users = true;
}
// data for origin list
if (isset($_GET['id'])) {
$id = intval($_GET['id']);
$needle = isset($_POST['firstLetterUser']) ? Database::escape_string($_POST['firstLetterUser']) : null;
$needle = api_convert_encoding($needle, $charset, 'utf-8');
$user_anonymous = api_get_anonymous_id();
// get user_id from relation type and group id
$sql = "SELECT user_id FROM $tbl_group_rel_user
WHERE group_id = $id
AND relation_type IN (".GROUP_USER_PERMISSION_ADMIN.", ".GROUP_USER_PERMISSION_READER.",".GROUP_USER_PERMISSION_PENDING_INVITATION.",".GROUP_USER_PERMISSION_MODERATOR.", ".GROUP_USER_PERMISSION_HRM.") ";
$res = Database::query($sql);
$user_ids = array();
if (Database::num_rows($res) > 0) {
while ($row = Database::fetch_row($res)) {
$user_ids[] = $row[0];
}
$without_user_id = " AND user.user_id NOT IN(".implode(',', $user_ids).") ";
}
$sql = "SELECT user_id, username, lastname, firstname FROM $tbl_user user
WHERE ".(api_sort_by_first_name() ? 'firstname' : 'lastname')." LIKE '$needle%' AND user_id<>'$user_anonymous' $without_user_id $order_clause ";
if (api_is_multiple_url_enabled()) {
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$sql = "SELECT user.user_id, username, lastname, firstname FROM $tbl_user user
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=user.user_id)
WHERE access_url_id = '$access_url_id'
AND ".(api_sort_by_first_name() ? 'firstname' : 'lastname')." LIKE '$needle%'
AND user.user_id<>'$user_anonymous' $without_user_id $order_clause ";
}
}
$rs_origin_list = Database::query($sql);
while ($row_origin_list = Database::fetch_array($rs_origin_list)) {
$nosessionUsersList[$row_origin_list['user_id']] = $row_origin_list;
}
}
// data for destination list
if (isset($_POST['id']) && isset($_POST['relation'])) {
// data for destination user list
$id = intval($_POST['id']);
$relation_type = intval($_POST['relation']);
$condition_relation = " AND groups.relation_type = '$relation_type' ";
$sql = "SELECT user.user_id, user.username, user.lastname, user.firstname
FROM $tbl_group_rel_user groups
INNER JOIN $tbl_user user ON user.user_id = groups.user_id
WHERE groups.group_id = '$id' $condition_relation ";
$rs_destination = Database::query($sql);
if (Database::num_rows($rs_destination) > 0) {
while ($row_destination_list = Database::fetch_array($rs_destination)) {
$sessionUsersList[$row_destination_list['user_id']] = $row_destination_list ;
}
}
}
}
if ($add_type == 'multiple') {
$link_add_type_unique = '<a href="'.api_get_self().'?id='.$group_id.'&add_type=unique">'.Display::return_icon('single.gif').get_lang('SessionAddTypeUnique').'</a>';
$link_add_type_multiple = Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple');
} else {
$link_add_type_unique = Display::return_icon('single.gif').get_lang('SessionAddTypeUnique');
$link_add_type_multiple = '<a href="'.api_get_self().'?id='.$group_id.'&add_type=multiple">'.Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple').'</a>';
}
?>
<div class="actions">
<?php echo $link_add_type_unique ?>&nbsp;|&nbsp;<?php echo $link_add_type_multiple ?>
</div>
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>?id=<?php echo $group_id; ?>" style="margin:0px;" <?php if($ajax_search){echo ' onsubmit="valide();"';}?>>
<?php echo '<legend>'.$tool_name.' ('.$group_info['name'].')</legend>'; ?>
<?php if ($add_type=='multiple') { ?>
<select name="relation" id="relation" onchange="xajax_search_users(document.getElementById('firstLetterUser').value,'multiple',this.value)">
<?php } else { ?>
<select name="relation" id="relation" onchange="xajax_search_users(document.getElementById('user_to_add').value,'single',this.value);">
<?php } ?>
<option value=""><?php echo get_lang('SelectARelationType')?></option>
<option value="<?php echo GROUP_USER_PERMISSION_ADMIN ?>" <?php echo ((isset($_POST['relation']) && $_POST['relation']==GROUP_USER_PERMISSION_ADMIN)?'selected=selected':'') ?> > <?php echo get_lang('Admin') ?></option>
<option value="<?php echo GROUP_USER_PERMISSION_READER ?>" <?php echo ((isset($_POST['relation']) && $_POST['relation']==GROUP_USER_PERMISSION_READER)?'selected=selected':'') ?> > <?php echo get_lang('Reader') ?></option>
<option value="<?php echo GROUP_USER_PERMISSION_PENDING_INVITATION ?>" <?php echo ((isset($_POST['relation']) && $_POST['relation']==GROUP_USER_PERMISSION_PENDING_INVITATION)?'selected=selected':'') ?> > <?php echo get_lang('PendingInvitation') ?></option>
<option value="<?php echo GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER ?>" <?php echo ((isset($_POST['relation']) && $_POST['relation']==GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER)?'selected=selected':'') ?> > <?php echo get_lang('WaitingForAdminResponse') ?></option>
<option value="<?php echo GROUP_USER_PERMISSION_MODERATOR ?>" <?php echo ((isset($_POST['relation']) && $_POST['relation']==GROUP_USER_PERMISSION_MODERATOR)?'selected=selected':'') ?> > <?php echo get_lang('Moderator') ?></option>
<option value="<?php echo GROUP_USER_PERMISSION_HRM ?>" <?php echo ((isset($_POST['relation']) && $_POST['relation']==GROUP_USER_PERMISSION_HRM)?'selected=selected':'') ?> > <?php echo get_lang('Drh') ?></option>
</select>
<input type="hidden" name="form_sent" value="1" />
<input type="hidden" name="id" value="<?php echo $group_id ?>" />
<input type="hidden" name="add_type" value="<?php echo $add_type ?>" />
<?php
if (!empty($errorMsg)) {
Display::display_normal_message($errorMsg);
}
?>
<table border="0" cellpadding="5" cellspacing="0" width="100%">
<tr>
<td align="center"><b><?php echo get_lang('UserListInPlatform') ?> :</b>
</td>
<td>&nbsp;</td>
<td align="center"><b><?php echo get_lang('UsersInGroup') ?> :</b></td>
</tr>
<?php if ($add_type=='multiple') { ?>
<tr>
<td align="center">
<?php echo get_lang('FirstLetterUser'); ?> :
<div id="firstLetter">
<select name="firstLetterUser" id="firstLetterUser" onchange = "xajax_search_users(this.value,'multiple',document.getElementById('relation').value)" >
<option value = "%"><?php echo get_lang('All') ?></option>
<?php
$selected_letter = isset($_POST['firstLetterUser']) ? $_POST['firstLetterUser'] : null;
echo Display :: get_alphabet_options($selected_letter);
?>
</select>
</div>
</td>
<td align="center">&nbsp;</td>
</tr>
<?php } ?>
<tr>
<td align="center">
<div id="content_source">
<?php
if (!($add_type=='multiple')) {
?>
<input type="text" id="user_to_add" onkeyup="xajax_search_users(this.value,'single',document.getElementById('relation').value)" />
<div id="ajax_list_users_single"></div>
<?php
} else {
?>
<div id="ajax_origin_list_multiple">
<select id="origin_users" name="nosessionUsersList[]" multiple="multiple" size="15" style="width:360px;">
<?php
if (!empty($nosessionUsersList)) {
foreach($nosessionUsersList as $enreg) {
?>
<option value="<?php echo $enreg['user_id']; ?>" > <?php echo $enreg['firstname'].' '.$enreg['lastname'].' ('.$enreg['username'].')'; ?></option>
<?php
}
}
?>
</select>
</div>
<?php
}
unset($nosessionUsersList);
?>
</div>
</td>
<td width="10%" valign="middle" align="center">
<?php
if ($ajax_search) {
?>
<button class="btn btn-default" type="button" onclick="remove_item(document.getElementById('destination_users'))" ><em class="fa fa-arrow-left"></em></button>
<?php
} else {
?>
<button class="btn btn-default" type="button" onclick="moveItem(document.getElementById('origin_users'), document.getElementById('destination_users'))" onclick="moveItem(document.getElementById('origin_users'), document.getElementById('destination_users'))"><em class="fa fa-arrow-right"></em></button>
<br /><br />
<button class="btn btn-default" type="button" onclick="moveItem(document.getElementById('destination_users'), document.getElementById('origin_users'))" onclick="moveItem(document.getElementById('destination_users'), document.getElementById('origin_users'))"><em class="fa fa-arrow-left"></em></button>
<?php
}
?>
<br /><br /><br /><br /><br />
</td>
<td align="center">
<div id="ajax_destination_list">
<select id="destination_users" name="sessionUsersList[]" multiple="multiple" size="15" style="width:360px;">
<?php
if (!empty($sessionUsersList)) {
foreach($sessionUsersList as $enreg) { ?>
<option value="<?php echo $enreg['user_id']; ?>">
<?php echo $enreg['firstname'].' '.$enreg['lastname'].' ('.$enreg['username'].')'; ?>
</option>
<?php }
} unset($sessionUsersList);
?>
</select>
</div>
</td>
</tr>
<tr>
<td colspan="3" align="center">
<br />
<?php
echo '<button class="btn btn-success" type="button" value="" onclick="valide()" ><em class="fa fa-floppy-o"></em> '.get_lang('SubscribeUsersToGroup').'</button>';
?>
</td>
</tr>
</table>
</form>
<script>
function moveItem(origin , destination) {
for (var i = 0 ; i<origin.options.length ; i++) {
if (origin.options[i].selected) {
destination.options[destination.length] = new Option(origin.options[i].text,origin.options[i].value);
origin.options[i]=null;
i = i-1;
}
}
destination.selectedIndex = -1;
sortOptions(destination.options);
}
function sortOptions(options) {
newOptions = new Array();
for (i = 0 ; i<options.length ; i++)
newOptions[i] = options[i];
newOptions = newOptions.sort(mysort);
options.length = 0;
for(i = 0 ; i < newOptions.length ; i++)
options[i] = newOptions[i];
}
function mysort(a, b) {
if (a.text.toLowerCase() > b.text.toLowerCase()){
return 1;
}
if (a.text.toLowerCase() < b.text.toLowerCase()){
return -1;
}
return 0;
}
function valide() {
var relation_select = document.getElementById('relation');
if (relation_select && relation_select.value=="") {
alert("<?php echo get_lang('YouMustChooseARelationType')?>");
return false;
} else {
var options = document.getElementById('destination_users').options;
for (i = 0 ; i<options.length ; i++)
options[i].selected = true;
document.forms.formulaire.submit();
}
}
function loadUsersInSelect(select) {
var xhr_object = null;
if (window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr_object.open("POST", "loadUsersInSelect.ajax.php");
xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
nosessionUsers = makepost(document.getElementById('origin_users'));
sessionUsers = makepost(document.getElementById('destination_users'));
nosessionClasses = makepost(document.getElementById('origin_classes'));
sessionClasses = makepost(document.getElementById('destination_classes'));
xhr_object.send("nosessionusers="+nosessionUsers+"&sessionusers="+sessionUsers+"&nosessionclasses="+nosessionClasses+"&sessionclasses="+sessionClasses);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
document.getElementById('content_source').innerHTML = result = xhr_object.responseText;
//alert(xhr_object.responseText);
}
}
}
function makepost(select) {
var options = select.options;
var ret = "";
for (i = 0 ; i<options.length ; i++)
ret = ret + options[i].value +'::'+options[i].text+";;";
return ret;
}
</script>
<?php
Display::display_footer();

@ -1,181 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.admin
*/
$cidReset = true;
// Including necessary libraries.
require_once '../inc/global.inc.php';
$libpath = api_get_path(LIBRARY_PATH);
// Section for the tabs
$this_section = SECTION_PLATFORM_ADMIN;
// User permissions
api_protect_admin_script();
$group_id = 0;
$htmlHeadXtra[] = '<script>
textarea = "";
num_characters_permited = 255;
function text_longitud(){
num_characters = document.forms[0].description.value.length;
if (num_characters > num_characters_permited){
document.forms[0].description.value = textarea;
}else{
textarea = document.forms[0].description.value;
}
}
</script>';
// Database table definitions
if (!empty($_GET['message'])) {
$message = urldecode($_GET['message']);
}
$interbreadcrumb[] = array('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));
$tool_name = get_lang('AddGroups');
// Create the form
$form = new FormValidator('group_add');
$form->addElement('header', $tool_name);
// name
$form->addElement('text', 'name', get_lang('Name'), array('size' => 60, 'maxlength' => 120));
$form->applyFilter('name', 'html_filter');
$form->applyFilter('name', 'trim');
$form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
// Description
$form->addElement(
'textarea',
'description',
get_lang('Description'),
array('rows' => 3, 'cols' => 58, 'onKeyDown' => "text_longitud()", 'onKeyUp' => "text_longitud()")
);
$form->applyFilter('description', 'html_filter');
$form->applyFilter('description', 'trim');
// url
$form->addElement('text', 'url', get_lang('Url'), array('size' => 35));
$form->applyFilter('url', 'html_filter');
$form->applyFilter('url', 'trim');
// Picture
$form->addElement('file', 'picture', get_lang('AddPicture'));
$allowed_picture_types = array('jpg', 'jpeg', 'png', 'gif');
$form->addRule(
'picture',
get_lang('OnlyImagesAllowed').' ('.implode(', ', $allowed_picture_types).')',
'filetype',
$allowed_picture_types
);
//Group Parentship
$groups = array();
$groups[0] = get_lang('NoParentship');
$groups = $groups + GroupPortalManager::get_groups_list($group_id);
$group_data['parent_group'] = GroupPortalManager::get_parent_group($group_id);
$form->addElement('select', 'parent_group', get_lang('GroupParentship'), $groups, array());
// Status
$status = array();
$status[GROUP_PERMISSION_OPEN] = get_lang('Open');
$status[GROUP_PERMISSION_CLOSED] = get_lang('Closed');
$form->addElement('select', 'visibility', get_lang('GroupPermissions'), $status);
// Set default values
$defaults['status'] = GROUP_PERMISSION_OPEN;
$form->setDefaults($defaults);
// Submit button
$form->addButtonCreate(get_lang('Add'));
// Validate form
if ($form->validate()) {
$check = Security::check_token('post');
if ($check) {
$values = $form->exportValues();
$picture_element = $form->getElement('picture');
$picture = $picture_element->getValue();
$picture_uri = '';
$name = $values['name'];
$description = $values['description'];
$url = $values['url'];
$status = intval($values['visibility']);
$picture = $_FILES['picture'];
$parent_group_id = intval($values['parent_group']);
$group_id = GroupPortalManager::add($name, $description, $url, $status);
GroupPortalManager::set_parent_group($group_id,$parent_group_id);
if (!empty($picture['name'])) {
$picture_uri = GroupPortalManager::update_group_picture(
$group_id,
$_FILES['picture']['name'],
$_FILES['picture']['tmp_name']
);
GroupPortalManager::update(
$group_id,
$name,
$description,
$url,
$status,
$picture_uri
);
}
//@todo send emails
/* if (!empty($email) && $send_mail) {
$recipient_name = api_get_person_name($firstname, $lastname, null, PERSON_NAME_EMAIL_ADDRESS);
$emailsubject = '['.api_get_setting('siteName').'] '.get_lang('YourReg').' '.api_get_setting('siteName');
$sender_name = api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, PERSON_NAME_EMAIL_ADDRESS);
$email_admin = api_get_setting('emailAdministrator');
if ($_configuration['multiple_access_urls']) {
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$url = api_get_access_url($access_url_id);
$emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($firstname, $lastname)).",\n\n".get_lang('YouAreReg')." ".api_get_setting('siteName') ." ".get_lang('WithTheFollowingSettings')."\n\n".get_lang('Username')." : ". $username ."\n". get_lang('Pass')." : ".stripslashes($password)."\n\n" .get_lang('Address') ." ". api_get_setting('siteName') ." ". get_lang('Is') ." : ". $url['url'] ."\n\n". get_lang('Problem'). "\n\n". get_lang('SignatureFormula').",\n\n".api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'))."\n". get_lang('Manager'). " ".api_get_setting('siteName')."\nT. ".api_get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".api_get_setting('emailAdministrator');
}
}
else {
$emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($firstname, $lastname)).",\n\n".get_lang('YouAreReg')." ".api_get_setting('siteName') ." ".get_lang('WithTheFollowingSettings')."\n\n".get_lang('Username')." : ". $username ."\n". get_lang('Pass')." : ".stripslashes($password)."\n\n" .get_lang('Address') ." ". api_get_setting('siteName') ." ". get_lang('Is') ." : ". $_configuration['root_web'] ."\n\n". get_lang('Problem'). "\n\n". get_lang('SignatureFormula').",\n\n".api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'))."\n". get_lang('Manager'). " ".api_get_setting('siteName')."\nT. ".api_get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".api_get_setting('emailAdministrator');
}
@api_mail_html($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);
}*/
Security::clear_token();
$tok = Security::get_token();
header('Location: group_list.php?action=show_message&message='.urlencode(get_lang('GroupAdded')).'&sec_token='.$tok);
exit ();
}
} else {
if (isset($_POST['submit'])) {
Security::clear_token();
}
$token = Security::get_token();
$form->addElement('hidden', 'sec_token');
$form->setConstants(array('sec_token' => $token));
}
// Display form
Display::display_header($tool_name);
if (!empty($message)) {
Display::display_normal_message(stripslashes($message));
}
$form->display();
// Footer
Display::display_footer();

@ -1,176 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.admin
*/
$cidReset = true;
require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script();
$libpath = api_get_path(LIBRARY_PATH);
$group_id = isset($_GET['id']) ? intval($_GET['id']) : intval($_POST['id']);
$tool_name = get_lang('GroupEdit');
$interbreadcrumb[] = array('url' => 'index.php','name' => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array('url' => 'group_list.php','name' => get_lang('GroupList'));
$table_group = Database::get_main_table(TABLE_MAIN_GROUP);
$htmlHeadXtra[] = '<script type="text/javascript">
textarea = "";
num_characters_permited = 255;
function text_longitud(){
num_characters = document.forms[0].description.value.length;
if (num_characters > num_characters_permited){
document.forms[0].description.value = textarea;
}else{
textarea = document.forms[0].description.value;
}
}
</script>';
$sql = "SELECT * FROM $table_group WHERE id = '".$group_id."'";
$res = Database::query($sql);
if (Database::num_rows($res) != 1) {
header('Location: group_list.php');
exit;
}
$group_data = Database::fetch_array($res, 'ASSOC');
// Create the form
$form = new FormValidator('group_edit', 'post', '', '', array('style' => 'width: 60%; float: '.($text_dir == 'rtl' ? 'right;' : 'left;')));
$form->addElement('header', '', $tool_name);
$form->addElement('hidden', 'id', $group_id);
// name
$form->addElement('text', 'name', get_lang('Name'), array('size'=>60, 'maxlength'=>120));
$form->applyFilter('name', 'html_filter');
$form->applyFilter('name', 'trim');
$form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
// Description
$form->addElement(
'textarea',
'description',
get_lang('Description'),
array(
'rows' => 3,
'cols' => 58,
'onKeyDown' => "text_longitud()",
'onKeyUp' => "text_longitud()",
)
);
$form->applyFilter('description', 'html_filter');
$form->applyFilter('description', 'trim');
// url
$form->addElement('text', 'url', get_lang('Url'), array('size' => 35));
$form->applyFilter('url', 'html_filter');
$form->applyFilter('url', 'trim');
// Picture
$form->addElement('file', 'picture', get_lang('AddPicture'));
$allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif');
$form->addRule('picture', get_lang('OnlyImagesAllowed').' ('.implode(',', $allowed_picture_types).')', 'filetype', $allowed_picture_types);
if (strlen($group_data['picture_uri']) > 0) {
$form->addElement('checkbox', 'delete_picture', '', get_lang('DelImage'));
}
// Group parent
$groups = array();
$groups = GroupPortalManager::get_groups_list($group_id);
$groups[0] = get_lang('NoParentship');
$group_data['parent_group'] = GroupPortalManager::get_parent_group($group_id);
$form->addElement('select', 'parent_group', get_lang('GroupParentship'), $groups, array());
// Status
$status = array();
$status[GROUP_PERMISSION_OPEN] = get_lang('Open');
$status[GROUP_PERMISSION_CLOSED] = get_lang('Closed');
$form->addElement('select', 'visibility', get_lang('GroupPermissions'), $status, array());
// Submit button
$form->addButtonUpdate(get_lang('ModifyInformation'));
// Set default values
$form->setDefaults($group_data);
// Validate form
if ( $form->validate()) {
$group = $form->exportValues();
$picture_element = $form->getElement('picture');
$picture = $picture_element->getValue();
$picture_uri = $group_data['picture_uri'];
if ($group['delete_picture']) {
$picture_uri = GroupPortalManager::delete_group_picture($group_id);
}
elseif (!empty($picture['name'])) {
$picture_uri = GroupPortalManager::update_group_picture(
$group_id,
$_FILES['picture']['name'],
$_FILES['picture']['tmp_name']
);
}
$name = $group['name'];
$description = $group['description'];
$url = $group['url'];
$status = intval($group['visibility']);
$parent_group_id = intval($group['parent_group']);
GroupPortalManager::update(
$group_id,
$name,
$description,
$url,
$status,
$picture_uri
);
GroupPortalManager::set_parent_group($group_id, $parent_group_id);
$tok = Security::get_token();
header('Location: group_list.php?action=show_message&message='.urlencode(get_lang('GroupUpdated')).'&sec_token='.$tok);
exit();
}
Display::display_header($tool_name);
// Group picture
$image_path = GroupPortalManager::get_group_picture_path_by_id($group_id, 'web');
$image_dir = $image_path['dir'];
$image = $image_path['file'];
$image_file = ($image != '' ? $image_dir.$image : Display::returnIconPath('unknown_group.jpg'));
$image_size = api_getimagesize($image_file);
$img_attributes = 'src="'.$image_file.'?rand='.time().'" '
.'style="float:'.($text_dir == 'rtl' ? 'left' : 'right').'; padding:5px;" ';
if ($image_size['width'] > 300) {
// limit display width to 300px
$img_attributes .= 'width="300" ';
}
// get the path,width and height from original picture
$big_image = $image_dir.'big_'.$image;
$big_image_size = api_getimagesize($big_image);
$big_image_width = $big_image_size['width'];
$big_image_height = $big_image_size['height'];
$url_big_image = $big_image.'?rnd='.time();
if ($image == '') {
echo '<img '.$img_attributes.' />';
} else {
echo '<input type="image" '.$img_attributes.' onclick="javascript: return show_image(\''.$url_big_image.'\',\''.$big_image_width.'\',\''.$big_image_height.'\');"/>';
}
// Display form
$form->display();
// Footer
Display::display_footer();

@ -1,407 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
/**
@author Bart Mollet
* @package chamilo.admin
*/
$cidReset = true;
require_once '../inc/global.inc.php';
$this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script(true);
/**
* Get the total number of users on the platform
* @see SortableTable#get_total_number_of_items()
*/
function get_number_of_groups() {
$group_table = Database :: get_main_table(TABLE_MAIN_GROUP);
$sql = "SELECT COUNT(g.id) AS total_number_of_items FROM $group_table g";
// adding the filter to see the user's only of the current access_url
/*
global $_configuration;
if ((api_is_platform_admin() || api_is_session_admin()) && $_configuration['multiple_access_urls'] && api_get_current_access_url_id()!=-1) {
$access_url_rel_user_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql.= " INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id=url_rel_user.user_id)";
}
*/
if (isset($_GET['keyword'])) {
$keyword = Database::escape_string(trim($_GET['keyword']));
$sql .= " WHERE (g.name LIKE '%".$keyword."%' OR g.description LIKE '%".$keyword."%' OR g.url LIKE '%".$keyword."%' )";
}
// adding the filter to see the user's only of the current access_url
/*
if ((api_is_platform_admin() || api_is_session_admin()) && $_configuration['multiple_access_urls'] && api_get_current_access_url_id()!=-1) {
$sql.= " AND url_rel_user.access_url_id=".api_get_current_access_url_id();
} */
$res = Database::query($sql);
$obj = Database::fetch_object($res);
return $obj->total_number_of_items;
}
/**
* Get the users to display on the current page (fill the sortable-table)
* @param int offset of first user to recover
* @param int Number of users to get
* @param int Column to sort on
* @param string Order (ASC,DESC)
* @see SortableTable#get_table_data($from)
*/
function get_group_data($from, $number_of_items, $column, $direction) {
$group_table = Database :: get_main_table(TABLE_MAIN_GROUP);
$sql = "SELECT
g.id AS col0,
g.name AS col1,
g.description AS col2,
g.visibility AS col3,
g.id AS col4
FROM $group_table g ";
// adding the filter to see the user's only of the current access_url
/* global $_configuration;
if ((api_is_platform_admin() || api_is_session_admin()) && $_configuration['multiple_access_urls'] && api_get_current_access_url_id()!=-1) {
$access_url_rel_user_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql.= " INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id=url_rel_user.user_id)";
} */
if (isset($_GET['keyword'])) {
$keyword = Database::escape_string(trim($_GET['keyword']));
$sql .= " WHERE (g.name LIKE '%".$keyword."%' OR g.description LIKE '%".$keyword."%' OR g.url LIKE '%".$keyword."%' )";
}
/*
// adding the filter to see the user's only of the current access_url
if ((api_is_platform_admin() || api_is_session_admin()) && $_configuration['multiple_access_urls'] && api_get_current_access_url_id()!=-1) {
$sql.= " AND url_rel_user.access_url_id=".api_get_current_access_url_id();
} */
if (!in_array($direction, array('ASC', 'DESC'))) {
$direction = 'ASC';
}
$column = intval($column);
$from = intval($from);
$number_of_items = intval($number_of_items);
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from,$number_of_items";
$res = Database::query($sql);
$users = array();
$t = time();
// Status
$status = array();
$status[GROUP_PERMISSION_OPEN] = get_lang('Open');
$status[GROUP_PERMISSION_CLOSED] = get_lang('Closed');
$result = Database::select(
'tGroupRelGroup.group_id, tGroup.id, tGroup.name',
Database::get_main_table(TABLE_MAIN_GROUP_REL_GROUP).
" AS tGroupRelGroup RIGHT JOIN ".Database::get_main_table(TABLE_MAIN_GROUP).
" AS tGroup ON tGroupRelGroup.subgroup_id = tGroup.id"
);
$groupRelations = array();
foreach ($result as $row) {
$groupRelations[$row['id']] = $row;
}
$groups = array();
while ($group = Database::fetch_row($res)) {
$name = null;
$id = $group[0];
// Loops while the current group is a subgroup
while (isset($groupRelations[$id]['group_id'])) {
$name = $name ?
$groupRelations[$id]['name'] . " > " . $name :
$groupRelations[$id]['name'];
$id = $groupRelations[$id]['group_id'];
}
// The base group
$name = $name ?
$groupRelations[$id]['name'] . " > " . $name :
$groupRelations[$id]['name'];
$group[3] = $status[$group[3]];
$group['1'] = '<a href="'.api_get_path(WEB_CODE_PATH).'social/group_view.php?id='.$group['0'].'">'.$name.'</a>';
$groups[] = $group;
}
return $groups;
}
function get_recent_group_data($from = 0, $number_of_items = 5, $column, $direction) {
$group_table = Database :: get_main_table(TABLE_MAIN_GROUP);
$sql = "SELECT
g.id AS col0,
g.name AS col1,
g.description AS col2,
g.visibility AS col3,
g.id AS col4
FROM $group_table g ";
// adding the filter to see the user's only of the current access_url
/* global $_configuration;
if ((api_is_platform_admin() || api_is_session_admin()) && $_configuration['multiple_access_urls'] && api_get_current_access_url_id()!=-1) {
$access_url_rel_user_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql.= " INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id=url_rel_user.user_id)";
} */
if (isset($_GET['keyword'])) {
$keyword = Database::escape_string(trim($_GET['keyword']));
$sql .= " WHERE (g.name LIKE '%".$keyword."%' OR g.description LIKE '%".$keyword."%' OR g.url LIKE '%".$keyword."%' )";
}
/*
// adding the filter to see the user's only of the current access_url
if ((api_is_platform_admin() || api_is_session_admin()) && $_configuration['multiple_access_urls'] && api_get_current_access_url_id()!=-1) {
$sql.= " AND url_rel_user.access_url_id=".api_get_current_access_url_id();
} */
if (!in_array($direction, array('ASC', 'DESC'))) {
$direction = 'ASC';
}
$column = intval($column);
$from = intval($from);
$number_of_items = intval($number_of_items);
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from,$number_of_items";
$res = Database::query($sql);
$users = array();
$t = time();
while ($group = Database::fetch_row($res)) {
// forget about the expiration date field
$groups[] = $group;
}
return $groups;
}
/**
* Build the modify-column of the table
* @param int The user id
* @param string URL params to add to table links
* @param array Row of elements to alter
* @return string Some HTML-code with modify-buttons
*/
function modify_filter($group_id, $url_params, $row) {
global $charset;
$result = null;
if (api_is_platform_admin()) {
$result .= '<a href="'.api_get_path(WEB_CODE_PATH).'admin/add_users_to_group.php?id='.$group_id.'">'.Display::return_icon('subscribe_users_social_network.png', get_lang('AddUsersToGroup'), '', ICON_SIZE_SMALL).'</a>';
$result .= '<a href="group_edit.php?id='.$group_id.'">'.Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).'</a>&nbsp;&nbsp;';
$result .= '<a href="group_list.php?action=delete_group&group_id='.$group_id.'&'.$url_params.'&sec_token='.$_SESSION['sec_token'].'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES, $charset))."'".')) return false;">'.Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL).'</a>';
}
return $result;
}
/**
* Build the active-column of the table to lock or unlock a certain user
* lock = the user can no longer use this account
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
* @param int $active the current state of the account
* @param int $user_id The user id
* @param string $url_params
* @return string Some HTML-code with the lock/unlock button
*/
function active_filter($active, $url_params, $row)
{
$_user = api_get_user_info();
if ($active == '1') {
$action = 'lock';
$image = 'right';
} elseif ($active == '-1') {
$action = 'edit';
$image = 'expired';
} elseif ($active == '0') {
$action = 'unlock';
$image = 'wrong';
}
if ($action == 'edit') {
$result = Display::return_icon($image.'.gif', get_lang('AccountExpired'));
} elseif ($row['0'] <> $_user['user_id']) { // you cannot lock yourself out otherwise you could disable all the accounts including your own => everybody is locked out and nobody can change it anymore.
$result = '<a href="user_list.php?action='.$action.'&user_id='.$row['0'].'&'.$url_params.'&sec_token='.$_SESSION['sec_token'].'">'.Display::return_icon($image.'.gif', get_lang(ucfirst($action))).'</a>';
}
return $result;
}
/**
* Lock or unlock a user
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
* @param int $status, do we want to lock the user ($status=lock) or unlock it ($status=unlock)
* @param int $user_id The user id
* @return language variable
*/
function lock_unlock_user($status, $user_id) {
$user_table = Database :: get_main_table(TABLE_MAIN_USER);
if ($status == 'lock') {
$status_db = '0';
$return_message = get_lang('UserLocked');
}
if ($status == 'unlock') {
$status_db = '1';
$return_message = get_lang('UserUnlocked');
}
if (($status_db == '1' OR $status_db == '0') AND is_numeric($user_id)) {
$sql = "UPDATE $user_table SET active=".intval($status_db)."
WHERE user_id=".intval($user_id)."";
$result = Database::query($sql);
}
if ($result) {
return $return_message;
}
}
/**
* Instead of displaying the integer of the status, we give a translation for the status
*
* @param integer $status
* @return string translation
*
* @version march 2008
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University, Belgium
*/
function status_filter($status) {
$statusname = api_get_status_langvars();
return $statusname[$status];
}
// INIT SECTION
$action = isset($_GET["action"]) ? $_GET["action"] : null;
if (isset($_GET['search']) && $_GET['search'] == 'advanced') {
$interbreadcrumb[] = array("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array("url" => 'group_list.php', "name" => get_lang('GroupList'));
$tool_name = get_lang('SearchAUser');
Display :: display_header($tool_name);
//api_display_tool_title($tool_name);
$form = new FormValidator('advanced_search', 'get');
$form->addElement('header', '', $tool_name);
$form->addText('keyword_firstname', get_lang('FirstName'), false);
$form->addText('keyword_lastname', get_lang('LastName'), false);
$form->addText('keyword_username', get_lang('LoginName'), false);
$form->addText('keyword_email', get_lang('Email'), false);
$form->addText('keyword_officialcode', get_lang('OfficialCode'), false);
$status_options = array();
$status_options['%'] = get_lang('All');
$status_options[STUDENT] = get_lang('Student');
$status_options[COURSEMANAGER] = get_lang('Teacher');
$status_options[SESSIONADMIN] = get_lang('Administrator'); //
$form->addElement('select', 'keyword_status', get_lang('Status'), $status_options);
$active_group = array();
$active_group[] = $form->createElement('checkbox', 'keyword_active', '', get_lang('Active'));
$active_group[] = $form->createElement('checkbox', 'keyword_inactive', '', get_lang('Inactive'));
$form->addGroup($active_group, '', get_lang('ActiveAccount'), '<br/>', false);
$form->addButtonSearch(get_lang('SearchUsers'));
$defaults['keyword_active'] = 1;
$defaults['keyword_inactive'] = 1;
$form->setDefaults($defaults);
$form->display();
} else {
$interbreadcrumb[] = array("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
$tool_name = get_lang('GroupList');
Display :: display_header($tool_name, "");
//api_display_tool_title($tool_name);
if (isset($_GET['action'])) {
$check = Security::check_token('get');
if ($check) {
switch ($_GET['action']) {
case 'delete_group':
if (api_is_platform_admin()) {
if (GroupPortalManager :: delete($_GET['group_id'])) {
Display :: display_confirmation_message(get_lang('GroupDeleted'));
} else {
Display :: display_error_message(get_lang('CannotDeleteGroup'));
}
}
break;
case 'lock':
$message = lock_unlock_user('lock', $_GET['user_id']);
Display :: display_normal_message($message);
break;
case 'unlock':
$message = lock_unlock_user('unlock', $_GET['user_id']);
Display :: display_normal_message($message);
break;
}
Security::clear_token();
}
}
if (isset($_POST['action'])) {
$check = Security::check_token('get');
if ($check) {
switch ($_POST['action']) {
case 'delete' :
if (api_is_platform_admin()) {
$number_of_selected_groups = count($_POST['id']);
$number_of_deleted_groups = 0;
foreach ($_POST['id'] as $index => $group_id) {
if (GroupPortalManager :: delete($group_id)) {
$number_of_deleted_groups++;
}
}
}
if ($number_of_selected_groups == $number_of_deleted_groups) {
Display :: display_confirmation_message(get_lang('SelectedGroupsDeleted'));
} else {
Display :: display_error_message(get_lang('SomeGroupsNotDeleted'));
}
break;
}
Security::clear_token();
}
}
// Create a search-box
$form = new FormValidator('search_simple', 'get', '', '', null, false);
$renderer = & $form->defaultRenderer();
$renderer->setCustomElementTemplate('<span>{element}</span> ');
$form->addElement('text', 'keyword', get_lang('Keyword'));
$form->addButtonSearch(get_lang('Search'));
echo '<div class="actions" style="width:100%;">';
if (api_is_platform_admin()) {
echo '<span style="float:right;">'.
'<a href="'.api_get_path(WEB_CODE_PATH).'admin/group_add.php">'.Display::return_icon('create_group_social_network.png', get_lang('AddGroups'), '', ICON_SIZE_MEDIUM).'</a>'.
'</span>';
}
$form->display();
echo '</div>';
if (isset($_GET['keyword'])) {
$parameters = array('keyword' => Security::remove_XSS($_GET['keyword']));
}
// Create a sortable table with user-data
$parameters['sec_token'] = Security::get_token();
// get the list of all admins to mark them in the users list
$admin_table = Database::get_main_table(TABLE_MAIN_ADMIN);
$sql_admin = "SELECT user_id FROM $admin_table";
$res_admin = Database::query($sql_admin);
$_admins_list = array();
while ($row_admin = Database::fetch_row($res_admin)) {
$_admins_list[] = $row_admin[0];
}
$table = new SortableTable('group_list', 'get_number_of_groups', 'get_group_data', 2);
$table->set_additional_parameters($parameters);
$table->set_header(0, '', false);
$table->set_header(1, get_lang('Name'));
$table->set_header(2, get_lang('Description'));
$table->set_header(3, get_lang('Visibility'));
$table->set_header(4, '', false);
$table->set_column_filter(4, 'modify_filter');
//$table->set_column_filter(6, 'status_filter');
//$table->set_column_filter(7, 'active_filter');
//$table->set_column_filter(8, 'modify_filter');
if (api_is_platform_admin())
$table->set_form_actions(array('delete' => get_lang('DeleteFromPlatform')));
$table->display();
}
Display :: display_footer();

@ -57,12 +57,12 @@ if (isset($descriptions) && count($descriptions) > 0) {
$description['title'] = $description['title'].' '.api_get_session_image(api_get_session_id(), $user_info['status']);
// delete
$actions .= '<a href="'.api_get_self().'?id='.$description['id'].'&cidReq='.api_get_course_id().'&id_session='.$description['session_id'].'&action=delete&description_type='.$description['description_type'].'" onclick="javascript:if(!confirm(\''.addslashes(api_htmlentities(get_lang('ConfirmYourChoice'),ENT_QUOTES,api_get_system_encoding())).'\')) return false;">';
$actions .= '<a href="'.api_get_self().'?id='.$description['id'].'&'.api_get_cidreq_params(api_get_course_id(), $description['session_id']).'&action=delete&description_type='.$description['description_type'].'" onclick="javascript:if(!confirm(\''.addslashes(api_htmlentities(get_lang('ConfirmYourChoice'),ENT_QUOTES,api_get_system_encoding())).'\')) return false;">';
$actions .= Display::return_icon('delete.png', get_lang('Delete'), array('style' => 'vertical-align:middle;float:right;'),ICON_SIZE_SMALL);
$actions .= '</a> ';
// edit
$actions .= '<a href="'.api_get_self().'?id='.$description['id'].'&cidReq='.api_get_course_id().'&id_session='.$description['session_id'].'&action=edit&description_type='.$description['description_type'].'">';
$actions .= '<a href="'.api_get_self().'?id='.$description['id'].'&'.api_get_cidreq_params(api_get_course_id(), $description['session_id']).'&action=edit&description_type='.$description['description_type'].'">';
$actions .= Display::return_icon('edit.png', get_lang('Edit'), array('style' => 'vertical-align:middle;float:right; padding-right:4px;'),ICON_SIZE_SMALL);
$actions .= '</a> ';
} else {

@ -82,14 +82,6 @@ define('TABLE_MAIN_TAG', 'tag');
define('TABLE_MAIN_USER_REL_TAG', 'user_rel_tag');
define('TABLE_MAIN_EXTRA_FIELD_REL_TAG', 'extra_field_rel_tag');
define('TABLE_MAIN_GROUP', 'groups');
//User groups
/*
define('TABLE_MAIN_USER_REL_GROUP', 'group_rel_user');
define('TABLE_MAIN_GROUP_REL_TAG', 'group_rel_tag');
define('TABLE_MAIN_GROUP_REL_GROUP', 'group_rel_group');*/
// Search engine
define('TABLE_MAIN_SPECIFIC_FIELD', 'specific_field');
define('TABLE_MAIN_SPECIFIC_FIELD_VALUES', 'specific_field_values');

File diff suppressed because it is too large Load Diff

@ -2064,561 +2064,6 @@ function fixIds(EntityManager $em)
error_log('fixIds');
}
// Create temporary indexes to increase speed of the following operations
// Adding and removing indexes will usually take much less time than
// the execution without indexes of the queries in this function, particularly
// for large tables
$sql = "ALTER TABLE c_document ADD INDEX tmpidx_doc(c_id, id)";
$connection->executeQuery($sql);
$sql = "ALTER TABLE c_student_publication ADD INDEX tmpidx_stud (c_id, id)";
$connection->executeQuery($sql);
$sql = "ALTER TABLE c_quiz ADD INDEX tmpidx_quiz (c_id, id)";
$connection->executeQuery($sql);
$sql = "ALTER TABLE c_item_property ADD INDEX tmpidx_ip (to_group_id)";
$connection->executeQuery($sql);
$sql = "SELECT * FROM c_lp_item";
$result = $connection->fetchAll($sql);
foreach ($result as $item) {
$courseId = $item['c_id'];
$iid = isset($item['iid']) ? intval($item['iid']) : 0;
$ref = isset($item['ref']) ? intval($item['ref']) : 0;
$sql = null;
$newId = '';
switch ($item['item_type']) {
case TOOL_LINK:
$sql = "SELECT * FROM c_link WHERE c_id = $courseId AND id = $ref";
$data = $connection->fetchAssoc($sql);
if ($data) {
$newId = $data['iid'];
}
break;
case TOOL_STUDENTPUBLICATION:
$sql = "SELECT * FROM c_student_publication WHERE c_id = $courseId AND id = $ref";
$data = $connection->fetchAssoc($sql);
if ($data) {
$newId = $data['iid'];
}
break;
case TOOL_QUIZ:
$sql = "SELECT * FROM c_quiz WHERE c_id = $courseId AND id = $ref";
$data = $connection->fetchAssoc($sql);
if ($data) {
$newId = $data['iid'];
}
break;
case TOOL_DOCUMENT:
$sql = "SELECT * FROM c_document WHERE c_id = $courseId AND id = $ref";
$data = $connection->fetchAssoc($sql);
if ($data) {
$newId = $data['iid'];
}
break;
case TOOL_FORUM:
$sql = "SELECT * FROM c_forum_forum WHERE c_id = $courseId AND forum_id = $ref";
$data = $connection->fetchAssoc($sql);
if ($data) {
$newId = $data['iid'];
}
break;
case 'thread':
$sql = "SELECT * FROM c_forum_thread WHERE c_id = $courseId AND thread_id = $ref";
$data = $connection->fetchAssoc($sql);
if ($data) {
$newId = $data['iid'];
}
break;
}
if (!empty($sql) && !empty($newId) && !empty($iid)) {
$sql = "UPDATE c_lp_item SET ref = $newId WHERE iid = $iid";
$connection->executeQuery($sql);
}
}
// Set NULL if session = 0
$sql = "UPDATE c_item_property SET session_id = NULL WHERE session_id = 0";
$connection->executeQuery($sql);
// Set NULL if group = 0
$sql = "UPDATE c_item_property SET to_group_id = NULL WHERE to_group_id = 0";
$connection->executeQuery($sql);
// Set NULL if insert_user_id = 0
$sql = "UPDATE c_item_property SET insert_user_id = NULL WHERE insert_user_id = 0";
$connection->executeQuery($sql);
// Delete session data of sessions that don't exist.
$sql = "DELETE FROM c_item_property
WHERE session_id IS NOT NULL AND session_id NOT IN (SELECT id FROM session)";
$connection->executeQuery($sql);
// Delete group data of groups that don't exist.
$sql = "DELETE FROM c_item_property
WHERE to_group_id IS NOT NULL AND to_group_id NOT IN (SELECT DISTINCT id FROM c_group_info)";
$connection->executeQuery($sql);
// This updates the group_id with c_group_info.iid instead of c_group_info.id
if ($debug) {
error_log('update iids');
}
$groupTableToFix = [
'c_group_rel_user',
'c_group_rel_tutor',
'c_permission_group',
'c_role_group',
'c_survey_invitation',
'c_attendance_calendar_rel_group'
];
foreach ($groupTableToFix as $table) {
$sql = "SELECT * FROM $table";
$result = $connection->fetchAll($sql);
foreach ($result as $item) {
$iid = $item['iid'];
$courseId = $item['c_id'];
$groupId = intval($item['group_id']);
// Fix group id
if (!empty($groupId)) {
$sql = "SELECT * FROM c_group_info
WHERE c_id = $courseId AND id = $groupId
LIMIT 1";
$data = $connection->fetchAssoc($sql);
if (!empty($data)) {
$newGroupId = $data['iid'];
$sql = "UPDATE $table SET group_id = $newGroupId
WHERE iid = $iid";
$connection->executeQuery($sql);
} else {
// The group does not exists clean this record
$sql = "DELETE FROM $table WHERE iid = $iid";
$connection->executeQuery($sql);
}
}
}
}
// Fix c_item_property
if ($debug) {
error_log('update c_item_property');
}
$sql = "SELECT * FROM course";
$courseList = $connection->fetchAll($sql);
if ($debug) {
error_log('Getting course list');
}
$totalCourse = count($courseList);
$counter = 0;
foreach ($courseList as $courseData) {
$courseId = $courseData['id'];
if ($debug) {
error_log('Updating course: '.$courseData['code']);
}
$sql = "SELECT * FROM c_item_property WHERE c_id = $courseId";
$result = $connection->fetchAll($sql);
foreach ($result as $item) {
//$courseId = $item['c_id'];
$sessionId = intval($item['session_id']);
$groupId = intval($item['to_group_id']);
$iid = $item['iid'];
$ref = $item['ref'];
// Fix group id
if (!empty($groupId)) {
$sql = "SELECT * FROM c_group_info
WHERE c_id = $courseId AND id = $groupId";
$data = $connection->fetchAssoc($sql);
if (!empty($data)) {
$newGroupId = $data['iid'];
$sql = "UPDATE c_item_property SET to_group_id = $newGroupId
WHERE iid = $iid";
$connection->executeQuery($sql);
} else {
// The group does not exists clean this record
$sql = "DELETE FROM c_item_property WHERE iid = $iid";
$connection->executeQuery($sql);
}
}
$sql = '';
$newId = '';
switch ($item['tool']) {
case TOOL_LINK:
$sql = "SELECT * FROM c_link WHERE c_id = $courseId AND id = $ref ";
break;
case TOOL_STUDENTPUBLICATION:
$sql = "SELECT * FROM c_student_publication WHERE c_id = $courseId AND id = $ref";
break;
case TOOL_QUIZ:
$sql = "SELECT * FROM c_quiz WHERE c_id = $courseId AND id = $ref";
break;
case TOOL_DOCUMENT:
$sql = "SELECT * FROM c_document WHERE c_id = $courseId AND id = $ref";
break;
case TOOL_FORUM:
$sql = "SELECT * FROM c_forum_forum WHERE c_id = $courseId AND id = $ref";
break;
case 'thread':
$sql = "SELECT * FROM c_forum_thread WHERE c_id = $courseId AND id = $ref";
break;
}
if (!empty($sql) && !empty($newId)) {
$data = $connection->fetchAssoc($sql);
if (isset($data['iid'])) {
$newId = $data['iid'];
}
$sql = "UPDATE c_item_property SET ref = $newId WHERE iid = $iid";
$connection->executeQuery($sql);
}
if ($debug) {
// Print a status in the log once in a while
error_log("Process item #$counter/$totalCourse");
}
$counter++;
}
}
if ($debug) {
error_log('update gradebook_link');
}
// Fix gradebook_link
$sql = "SELECT * FROM gradebook_link";
$result = $connection->fetchAll($sql);
foreach ($result as $item) {
$courseCode = $item['course_code'];
$courseInfo = api_get_course_info($courseCode);
if (empty($courseInfo)) {
continue;
}
$courseId = $courseInfo['real_id'];
$ref = $item['ref_id'];
$iid = $item['id'];
$sql = '';
switch ($item['type']) {
case LINK_LEARNPATH:
$sql = "SELECT * FROM c_link WHERE c_id = $courseId AND id = $ref ";
break;
case LINK_STUDENTPUBLICATION:
$sql = "SELECT * FROM c_student_publication WHERE c_id = $courseId AND id = $ref";
break;
case LINK_EXERCISE:
$sql = "SELECT * FROM c_quiz WHERE c_id = $courseId AND id = $ref";
break;
case LINK_ATTENDANCE:
//$sql = "SELECT * FROM c_document WHERE c_id = $courseId AND id = $ref";
break;
case LINK_FORUM_THREAD:
$sql = "SELECT * FROM c_forum_thread WHERE c_id = $courseId AND thread_id = $ref";
break;
}
if (!empty($sql)) {
$data = $connection->fetchAssoc($sql);
if (isset($data) && isset($data['iid'])) {
$newId = $data['iid'];
$sql = "UPDATE gradebook_link SET ref_id = $newId
WHERE id = $iid";
$connection->executeQuery($sql);
}
}
}
if ($debug) {
error_log('update groups');
}
$sql = "SELECT * FROM groups";
$result = $connection->executeQuery($sql);
$groups = $result->fetchAll();
$oldGroups = array();
if (!empty($groups)) {
foreach ($groups as $group) {
if (empty($group['name'])) {
continue;
}
/*$group['description'] = Database::escape_string($group['description']);
$group['name'] = Database::escape_string($group['name']);
$sql = "INSERT INTO usergroup (name, group_type, description, picture, url, visibility, updated_at, created_at)
VALUES ('{$group['name']}', '1', '{$group['description']}', '{$group['picture_uri']}', '{$group['url']}', '{$group['visibility']}', '{$group['updated_on']}', '{$group['created_on']}')";
*/
$params = [
'name' => $group['name'],
'description' => $group['description'],
'group_type' => 1,
'picture' => $group['picture_uri'],
'url' => $group['url'],
'visibility' => $group['visibility'],
'updated_at' => $group['updated_on'],
'created_at' => $group['created_on']
];
$connection->insert('usergroup', $params);
//$connection->executeQuery($sql);
$id = $connection->lastInsertId('id');
$oldGroups[$group['id']] = $id;
}
}
if (!empty($oldGroups)) {
foreach ($oldGroups as $oldId => $newId) {
$path = \GroupPortalManager::get_group_picture_path_by_id(
$oldId,
'system'
);
if (!empty($path)) {
$newPath = str_replace(
"groups/$oldId/",
"groups/$newId/",
$path['dir']
);
$command = "mv {$path['dir']} $newPath ";
system($command);
}
}
$sql = "SELECT * FROM group_rel_user";
$result = $connection->executeQuery($sql);
$dataList = $result->fetchAll();
if (!empty($dataList)) {
foreach ($dataList as $data) {
if (isset($oldGroups[$data['group_id']])) {
$data['group_id'] = $oldGroups[$data['group_id']];
$userId = $data['user_id'];
$sql = "SELECT id FROM user WHERE user_id = $userId";
$userResult = $connection->executeQuery($sql);
$userInfo = $userResult->fetch();
if (empty($userInfo)) {
continue;
}
$sql = "INSERT INTO usergroup_rel_user (usergroup_id, user_id, relation_type)
VALUES ('{$data['group_id']}', '{$userId}', '{$data['relation_type']}')";
$connection->executeQuery($sql);
}
}
}
$sql = "SELECT * FROM group_rel_group";
$result = $connection->executeQuery($sql);
$dataList = $result->fetchAll();
if (!empty($dataList)) {
foreach ($dataList as $data) {
if (isset($oldGroups[$data['group_id']]) && isset($oldGroups[$data['subgroup_id']])) {
$data['group_id'] = $oldGroups[$data['group_id']];
$data['subgroup_id'] = $oldGroups[$data['subgroup_id']];
$sql = "INSERT INTO usergroup_rel_usergroup (group_id, subgroup_id, relation_type)
VALUES ('{$data['group_id']}', '{$data['subgroup_id']}', '{$data['relation_type']}')";
$connection->executeQuery($sql);
}
}
}
$sql = "SELECT * FROM announcement_rel_group";
$result = $connection->executeQuery($sql);
$dataList = $result->fetchAll();
if (!empty($dataList)) {
foreach ($dataList as $data) {
if (isset($oldGroups[$data['group_id']])) {
// Deleting relation
$sql = "DELETE FROM announcement_rel_group WHERE group_id = {$data['group_id']}";
$connection->executeQuery($sql);
// Add new relation
$data['group_id'] = $oldGroups[$data['group_id']];
$sql = "INSERT INTO announcement_rel_group(group_id, announcement_id)
VALUES ('{$data['group_id']}', '{$data['announcement_id']}')";
$connection->executeQuery($sql);
}
}
}
$sql = "SELECT * FROM group_rel_tag";
$result = $connection->executeQuery($sql);
$dataList = $result->fetchAll();
if (!empty($dataList)) {
foreach ($dataList as $data) {
if (isset($oldGroups[$data['group_id']])) {
$data['group_id'] = $oldGroups[$data['group_id']];
$sql = "INSERT INTO usergroup_rel_tag (tag_id, usergroup_id)
VALUES ('{$data['tag_id']}', '{$data['group_id']}')";
$connection->executeQuery($sql);
}
}
}
}
if ($debug) {
error_log('update extra fields');
}
// Extra fields
$extraFieldTables = [
ExtraField::USER_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_USER_FIELD),
ExtraField::COURSE_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_COURSE_FIELD),
//ExtraField::LP_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_LP_FIELD),
ExtraField::SESSION_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_SESSION_FIELD),
//ExtraField::CALENDAR_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_CALENDAR_EVENT_FIELD),
//ExtraField::QUESTION_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_CALENDAR_EVENT_FIELD),
//ExtraField::USER_FIELD_TYPE => //Database::get_main_table(TABLE_MAIN_SPECIFIC_FIELD),
];
foreach ($extraFieldTables as $type => $table) {
//continue;
$sql = "SELECT * FROM $table ";
if ($debug) {
error_log($sql);
}
$result = $connection->query($sql);
$fields = $result->fetchAll();
foreach ($fields as $field) {
if ($debug) {
error_log("Loading field: ".$field['field_variable']);
}
$originalId = $field['id'];
$extraField = new ExtraField();
$extraField
->setExtraFieldType($type)
->setVariable($field['field_variable'])
->setFieldType($field['field_type'])
->setDisplayText($field['field_display_text'])
->setDefaultValue($field['field_default_value'])
->setFieldOrder($field['field_order'])
->setVisible($field['field_visible'])
->setChangeable($field['field_changeable'])
->setFilter($field['field_filter']);
$em->persist($extraField);
$em->flush();
$values = array();
$handlerId = null;
switch ($type) {
case ExtraField::USER_FIELD_TYPE:
$optionTable = Database::get_main_table(
TABLE_MAIN_USER_FIELD_OPTIONS
);
$valueTable = Database::get_main_table(
TABLE_MAIN_USER_FIELD_VALUES
);
$handlerId = 'user_id';
break;
case ExtraField::COURSE_FIELD_TYPE:
$optionTable = Database::get_main_table(
TABLE_MAIN_COURSE_FIELD_OPTIONS
);
$valueTable = Database::get_main_table(
TABLE_MAIN_COURSE_FIELD_VALUES
);
$handlerId = 'c_id';
break;
case ExtraField::SESSION_FIELD_TYPE:
$optionTable = Database::get_main_table(
TABLE_MAIN_SESSION_FIELD_OPTIONS
);
$valueTable = Database::get_main_table(
TABLE_MAIN_SESSION_FIELD_VALUES
);
$handlerId = 'session_id';
break;
}
if (!empty($optionTable)) {
$sql = "SELECT * FROM $optionTable WHERE field_id = $originalId ";
$result = $connection->query($sql);
$options = $result->fetchAll();
foreach ($options as $option) {
$extraFieldOption = new ExtraFieldOptions();
$extraFieldOption
->setDisplayText($option['option_display_text'])
->setField($extraField)
->setOptionOrder($option['option_order'])
->setValue($option['option_value']);
$em->persist($extraFieldOption);
$em->flush();
}
$sql = "SELECT * FROM $valueTable WHERE field_id = $originalId ";
$result = $connection->query($sql);
$values = $result->fetchAll();
if ($debug) {
error_log("Fetch all values for field");
}
}
if (!empty($values)) {
if ($debug) {
error_log("Saving field value in new table");
}
$k = 0;
foreach ($values as $value) {
if (isset($value[$handlerId])) {
/*
$extraFieldValue = new ExtraFieldValues();
$extraFieldValue
->setValue($value['field_value'])
->setField($extraField)
->setItemId($value[$handlerId]);
$em->persist($extraFieldValue);
$em->flush();
*/
// Insert without the use of the entity as it reduces
// speed to 2 records per second (much too slow)
$params = [
'field_id' => $extraField->getId(),
'value' => $value['field_value'],
'item_id' => $value[$handlerId]
];
$connection->insert('extra_field_values', $params);
if ($debug && ($k % 10000 == 0)) {
error_log("Saving field $k");
}
$k++;
}
}
}
}
}
if ($debug) {
error_log('Remove index');
}
// Drop temporary indexes added to increase speed of this function's queries
$sql = "ALTER TABLE c_document DROP INDEX tmpidx_doc";
$connection->executeQuery($sql);
$sql = "ALTER TABLE c_student_publication DROP INDEX tmpidx_stud";
$connection->executeQuery($sql);
$sql = "ALTER TABLE c_quiz DROP INDEX tmpidx_quiz";
$connection->executeQuery($sql);
$sql = "ALTER TABLE c_item_property DROP INDEX tmpidx_ip";
$connection->executeQuery($sql);
if ($debug) {
error_log('Finish fixId function');
}

@ -23,7 +23,7 @@ if (is_array($_GET) && count($_GET) > 0) {
foreach ($_GET as $key => $value) {
switch ($key) {
case 'accept':
$useRole = GroupPortalManager::get_user_group_role(api_get_user_id(), $value);
$useRole = UserGroup::get_user_group_role(api_get_user_id(), $value);
if (in_array(
$useRole,
@ -32,13 +32,13 @@ if (is_array($_GET) && count($_GET) > 0) {
GROUP_USER_PERMISSION_PENDING_INVITATION
)
)) {
GroupPortalManager::update_user_role(api_get_user_id(), $value, GROUP_USER_PERMISSION_READER);
UserGroup::update_user_role(api_get_user_id(), $value, GROUP_USER_PERMISSION_READER);
Display::addFlash(
Display::return_message(get_lang('UserIsSubscribedToThisGroup'), 'success')
);
header('Location: ' . api_get_path(WEB_CODE_PATH) . 'social/invitations.php');
header('Location: '.api_get_path(WEB_CODE_PATH).'social/invitations.php');
exit;
}
@ -54,7 +54,7 @@ if (is_array($_GET) && count($_GET) > 0) {
Display::return_message(get_lang('UserIsAlreadySubscribedToThisGroup'), 'warning')
);
header('Location: ' . api_get_path(WEB_CODE_PATH) . 'social/invitations.php');
header('Location: '.api_get_path(WEB_CODE_PATH).'social/invitations.php');
exit;
}
@ -66,7 +66,7 @@ if (is_array($_GET) && count($_GET) > 0) {
exit;
break;
case 'deny':
GroupPortalManager::delete_user_rel_group(api_get_user_id(), $value);
UserGroup::delete_user_rel_group(api_get_user_id(), $value);
Display::addFlash(
Display::return_message(get_lang('GroupInvitationWasDeny'))

@ -6461,7 +6461,6 @@ function WSCreateGroup($params)
'name' => $params['name']
];
return $userGroup->save($params);
//return GroupPortalManager::add($params['name'], null, null, 1);
}
/* Create group Web Service end */
@ -6508,17 +6507,8 @@ function WSUpdateGroup($params)
$params['allow_member_group_to_leave'] = null;
$userGroup = new UserGroup();
return $userGroup->update($params);
/*return GroupPortalManager::update(
$params['id'],
$params['name'],
$params['description'],
$params['url'],
$params['visibility'],
$params['picture_uri'],
$params['allow_member_group_to_leave']
);*/
return $userGroup->update($params);
}
/* Update group Web Service end */
@ -6559,8 +6549,6 @@ function WSDeleteGroup($params)
$userGroup = new UserGroup();
return $userGroup->delete($params['id']);
//return GroupPortalManager::delete($params['id']);
}
/* Delete group Web Service end */
@ -6602,8 +6590,6 @@ function GroupBindToParent($params)
$userGroup = new UserGroup();
return $userGroup->set_parent_group($params['id'], $params['parent_id']);
//return GroupPortalManager::set_parent_group($params['id'], $params['parent_id']);
}
/* Bind group Web Service end */

@ -28,6 +28,10 @@ class ScriptHandler
{
$paths = [
__DIR__.'/../../../../archive/',
__DIR__.'/../../../../main/admin/add_users_to_group.php',
__DIR__.'/../../../../main/admin/group_add.php',
__DIR__.'/../../../../main/admin/group_edit.php',
__DIR__.'/../../../../main/admin/group_list.php',
__DIR__.'/../../../../main/conference/',
__DIR__.'/../../../../main/course_notice/',
__DIR__.'/../../../../main/metadata/',
@ -38,7 +42,7 @@ class ScriptHandler
__DIR__.'/../../../../main/reservation/',
__DIR__.'/../../../../main/inc/lib/symfony/',
__DIR__.'/../../../../main/inc/entity/',
//__DIR__.'/../../../../main/inc/lib/phpdocx/',
__DIR__.'/../../../../main/inc/lib/phpdocx/',
__DIR__.'/../../../../main/inc/lib/phpqrcode/',
__DIR__.'/../../../../main/inc/lib/ezpdf',
__DIR__.'/../../../../main/inc/lib/javascript/bootstrap',
@ -57,6 +61,10 @@ class ScriptHandler
__DIR__.'/../../../../main/inc/lib/pchart/',
__DIR__.'/../../../../main/inc/lib/htmlpurifier',
__DIR__.'/../../../../main/announcements/resources',
__DIR__.'/../../../../src/Chamilo/CoreBundle/Entity/GroupRelGroup.php',
__DIR__.'/../../../../src/Chamilo/CoreBundle/Entity/GroupRelTag.php',
__DIR__.'/../../../../src/Chamilo/CoreBundle/Entity/GroupRelUser.php',
__DIR__.'/../../../../src/Chamilo/CoreBundle/Entity/Groups.php'
];
$files = [

@ -1,125 +0,0 @@
<?php
namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* GroupRelGroup
*
* @ORM\Table(name="group_rel_group", indexes={@ORM\Index(name="group_id", columns={"group_id"}), @ORM\Index(name="subgroup_id", columns={"subgroup_id"}), @ORM\Index(name="relation_type", columns={"relation_type"})})
* @ORM\Entity
*/
class GroupRelGroup
{
/**
* @var integer
*
* @ORM\Column(name="group_id", type="integer", nullable=false)
*/
private $groupId;
/**
* @var integer
*
* @ORM\Column(name="subgroup_id", type="integer", nullable=false)
*/
private $subgroupId;
/**
* @var integer
*
* @ORM\Column(name="relation_type", type="integer", nullable=false)
*/
private $relationType;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* Set groupId
*
* @param integer $groupId
* @return GroupRelGroup
*/
public function setGroupId($groupId)
{
$this->groupId = $groupId;
return $this;
}
/**
* Get groupId
*
* @return integer
*/
public function getGroupId()
{
return $this->groupId;
}
/**
* Set subgroupId
*
* @param integer $subgroupId
* @return GroupRelGroup
*/
public function setSubgroupId($subgroupId)
{
$this->subgroupId = $subgroupId;
return $this;
}
/**
* Get subgroupId
*
* @return integer
*/
public function getSubgroupId()
{
return $this->subgroupId;
}
/**
* Set relationType
*
* @param integer $relationType
* @return GroupRelGroup
*/
public function setRelationType($relationType)
{
$this->relationType = $relationType;
return $this;
}
/**
* Get relationType
*
* @return integer
*/
public function getRelationType()
{
return $this->relationType;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}

@ -1,95 +0,0 @@
<?php
namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* GroupRelTag
*
* @ORM\Table(name="group_rel_tag", indexes={@ORM\Index(name="group_id", columns={"group_id"}), @ORM\Index(name="tag_id", columns={"tag_id"})})
* @ORM\Entity
*/
class GroupRelTag
{
/**
* @var integer
*
* @ORM\Column(name="tag_id", type="integer", nullable=false)
*/
private $tagId;
/**
* @var integer
*
* @ORM\Column(name="group_id", type="integer", nullable=false)
*/
private $groupId;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* Set tagId
*
* @param integer $tagId
* @return GroupRelTag
*/
public function setTagId($tagId)
{
$this->tagId = $tagId;
return $this;
}
/**
* Get tagId
*
* @return integer
*/
public function getTagId()
{
return $this->tagId;
}
/**
* Set groupId
*
* @param integer $groupId
* @return GroupRelTag
*/
public function setGroupId($groupId)
{
$this->groupId = $groupId;
return $this;
}
/**
* Get groupId
*
* @return integer
*/
public function getGroupId()
{
return $this->groupId;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}

@ -1,125 +0,0 @@
<?php
namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* GroupRelUser
*
* @ORM\Table(name="group_rel_user", indexes={@ORM\Index(name="group_id", columns={"group_id"}), @ORM\Index(name="user_id", columns={"user_id"}), @ORM\Index(name="relation_type", columns={"relation_type"})})
* @ORM\Entity
*/
class GroupRelUser
{
/**
* @var integer
*
* @ORM\Column(name="group_id", type="integer", nullable=false)
*/
private $groupId;
/**
* @var integer
*
* @ORM\Column(name="user_id", type="integer", nullable=false)
*/
private $userId;
/**
* @var integer
*
* @ORM\Column(name="relation_type", type="integer", nullable=false)
*/
private $relationType;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* Set groupId
*
* @param integer $groupId
* @return GroupRelUser
*/
public function setGroupId($groupId)
{
$this->groupId = $groupId;
return $this;
}
/**
* Get groupId
*
* @return integer
*/
public function getGroupId()
{
return $this->groupId;
}
/**
* Set userId
*
* @param integer $userId
* @return GroupRelUser
*/
public function setUserId($userId)
{
$this->userId = $userId;
return $this;
}
/**
* Get userId
*
* @return integer
*/
public function getUserId()
{
return $this->userId;
}
/**
* Set relationType
*
* @param integer $relationType
* @return GroupRelUser
*/
public function setRelationType($relationType)
{
$this->relationType = $relationType;
return $this;
}
/**
* Get relationType
*
* @return integer
*/
public function getRelationType()
{
return $this->relationType;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}

@ -1,245 +0,0 @@
<?php
namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Groups
*
* @ORM\Table(name="groups")
* @ORM\Entity
*/
class Groups
{
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="description", type="string", length=255, nullable=false)
*/
private $description;
/**
* @var string
*
* @ORM\Column(name="picture_uri", type="string", length=255, nullable=false)
*/
private $pictureUri;
/**
* @var string
*
* @ORM\Column(name="url", type="string", length=255, nullable=false)
*/
private $url;
/**
* @var integer
*
* @ORM\Column(name="visibility", type="integer", nullable=false)
*/
private $visibility;
/**
* @var string
*
* @ORM\Column(name="updated_on", type="string", length=255, nullable=false)
*/
private $updatedOn;
/**
* @var string
*
* @ORM\Column(name="created_on", type="string", length=255, nullable=false)
*/
private $createdOn;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* Set name
*
* @param string $name
* @return Groups
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set description
*
* @param string $description
* @return Groups
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Set pictureUri
*
* @param string $pictureUri
* @return Groups
*/
public function setPictureUri($pictureUri)
{
$this->pictureUri = $pictureUri;
return $this;
}
/**
* Get pictureUri
*
* @return string
*/
public function getPictureUri()
{
return $this->pictureUri;
}
/**
* Set url
*
* @param string $url
* @return Groups
*/
public function setUrl($url)
{
$this->url = $url;
return $this;
}
/**
* Get url
*
* @return string
*/
public function getUrl()
{
return $this->url;
}
/**
* Set visibility
*
* @param integer $visibility
* @return Groups
*/
public function setVisibility($visibility)
{
$this->visibility = $visibility;
return $this;
}
/**
* Get visibility
*
* @return integer
*/
public function getVisibility()
{
return $this->visibility;
}
/**
* Set updatedOn
*
* @param string $updatedOn
* @return Groups
*/
public function setUpdatedOn($updatedOn)
{
$this->updatedOn = $updatedOn;
return $this;
}
/**
* Get updatedOn
*
* @return string
*/
public function getUpdatedOn()
{
return $this->updatedOn;
}
/**
* Set createdOn
*
* @param string $createdOn
* @return Groups
*/
public function setCreatedOn($createdOn)
{
$this->createdOn = $createdOn;
return $this;
}
/**
* Get createdOn
*
* @return string
*/
public function getCreatedOn()
{
return $this->createdOn;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}

@ -16,8 +16,6 @@ $tUserField = Database::get_main_table(TABLE_EXTRA_FIELD);
$tUserFieldValue = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES);
$tUser = Database::get_main_table(TABLE_MAIN_USER);
$tGroup = Database::get_main_table(TABLE_MAIN_GROUP);
$tGroupUser = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP);
// First get the IDs of the selected fields
$sql = "SELECT id, field_type, variable FROM $tUserField";
@ -57,7 +55,7 @@ foreach ($usersData as $userId => $value) {
// Third, we create groups based on the combined strings by user and insert
// users in them (as reader)
foreach ($distinctGroups as $name => $usersList) {
/*foreach ($distinctGroups as $name => $usersList) {
$now = api_get_utc_datetime();
$sql = "INSERT INTO $tGroup (name, visibility, updated_on, created_on) VALUES ('$name', 1, '$now', '$now')";
echo $sql . PHP_EOL;
@ -69,4 +67,4 @@ foreach ($distinctGroups as $name => $usersList) {
echo $sql . PHP_EOL;
$result = Database::query($sql);
}
}
}*/

Loading…
Cancel
Save