'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); // setting the name of the tool $tool_name = get_lang('SubscribeUsersToGroup'); $group_id = intval($_GET['id']); $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_group_rel_user,$group_id,$_configuration; $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.") "; $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_id NOT IN(".implode(',',$user_ids).") "; } if ($relation_type==GROUP_USER_PERMISSION_PENDING_INVITATION) { $condition_relation = " AND groups.relation_type IN (".GROUP_USER_PERMISSION_PENDING_INVITATION.",".GROUP_USER_PERMISSION_READER.") "; } else { $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(); $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $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 ($_configuration['multiple_access_urls']) { $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 ($_configuration['multiple_access_urls']) { $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($_POST['form_sent']) { $form_sent = $_POST['form_sent']; $firstLetterUser = $_POST['firstLetterUser']; $UserList = $_POST['sessionUsersList']; $group_id = intval($_POST['id']); $relation_type = intval($_POST['relation']); if(!is_array($UserList)) { $UserList=array(); } if ($form_sent == 1) { if ($relation_type == GROUP_USER_PERMISSION_PENDING_INVITATION) { $relations = array(GROUP_USER_PERMISSION_PENDING_INVITATION,GROUP_USER_PERMISSION_READER); $users_by_group = GroupPortalManager::get_users_by_group($group_id,null,$relations); $user_id_relation = array_keys($users_by_group); $user_relation_diff = array_diff($user_id_relation,$UserList); foreach ($user_relation_diff as $user_id) { GroupPortalManager::delete_user_rel_group($user_id,$group_id); } } else { GroupPortalManager::delete_users($group_id, $relation_type); } $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 = ""; if ($relation_type==GROUP_USER_PERMISSION_PENDING_INVITATION) { $condition_relation = " AND groups.relation_type IN (".GROUP_USER_PERMISSION_PENDING_INVITATION.",".GROUP_USER_PERMISSION_READER.") "; } else { $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 ($_configuration['multiple_access_urls']) { $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 = Database::fetch_row($rs_count); if ($row_count > 2) $many_users = true; // data for origin list if (isset($_POST['id']) && isset($_POST['firstLetterUser'])) { $id = intval($_POST['id']); $needle = Database::escape_string($_POST['firstLetterUser']); $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.") "; $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_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 ($_configuration['multiple_access_urls']) { $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']); if ($relation_type==GROUP_USER_PERMISSION_PENDING_INVITATION) { $condition_relation = " AND groups.relation_type IN (".GROUP_USER_PERMISSION_PENDING_INVITATION.",".GROUP_USER_PERMISSION_READER.") "; } else { $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.' ('.$session_info['name'].')

'; ?>
> 0 ) { echo '

'.get_lang('FilterUsers').'

'; foreach ($new_field_list as $new_field) { echo $new_field['name']; $varname = 'field_'.$new_field['variable']; echo ' '; echo '  '; } echo ''; echo '

'; } } } ?>
:   :
:
 








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