'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_MAIN_USER_REL_GROUP); $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 .= ''; } else { $return_destination .= ''; } $xajax_response->addAssign('ajax_destination_list','innerHTML', api_utf8_encode($return_destination)); } else { $return_destination .= ''; $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 .= ''; $xajax_response->addAssign('ajax_origin_list_multiple', 'innerHTML', api_utf8_encode($return_origin)); } } if (!empty($needle) && !empty($type)) { // xajax send utf8 datas... datas in db can be non-utf8 datas $charset = api_get_system_encoding(); $needle = Database::escape_string($needle); $needle = api_convert_encoding($needle, $charset, 'utf-8'); $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 .= ''.$person_name.' ('.$user['username'].')
'; } else { $return .= '...
'; } } $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 .= ''; $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[] = ' '; $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 = ''.Display::return_icon('single.gif').get_lang('SessionAddTypeUnique').''; $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 = ''.Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple').''; } ?>
 | 
> '.$tool_name.' ('.$group_info['name'].')'; ?>
:   :
:
 








'.get_lang('SubscribeUsersToGroup').''; ?>