diff --git a/main/admin/group_add.php b/main/admin/group_add.php index b38561487d..30ebb6e1dc 100644 --- a/main/admin/group_add.php +++ b/main/admin/group_add.php @@ -68,7 +68,6 @@ $form->addRule('picture', get_lang('OnlyImagesAllowed').' ('.implode(',', $allow $status = array(); $status[GROUP_PERMISSION_OPEN] = get_lang('Open'); $status[GROUP_PERMISSION_CLOSED] = get_lang('Closed'); -$status[GROUP_PERMISSION_APPROVAL_NEEDED] = get_lang('ApprovalNeeded'); $form->addElement('select', 'visibility', get_lang('GroupPermissions'), $status); diff --git a/main/admin/group_edit.php b/main/admin/group_edit.php index 4d02420fb0..43244b1bb7 100644 --- a/main/admin/group_edit.php +++ b/main/admin/group_edit.php @@ -71,7 +71,6 @@ if (strlen($group_data['picture_uri']) > 0) { $status = array(); $status[GROUP_PERMISSION_OPEN] = get_lang('Open'); $status[GROUP_PERMISSION_CLOSED] = get_lang('Closed'); -$status[GROUP_PERMISSION_APPROVAL_NEEDED] = get_lang('ApprovalNeeded'); $form->addElement('select', 'visibility', get_lang('GroupPermissions'), $status, array()); diff --git a/main/inc/lib/group_portal_manager.lib.php b/main/inc/lib/group_portal_manager.lib.php index 0bdcfeb32d..c87fca2dfa 100755 --- a/main/inc/lib/group_portal_manager.lib.php +++ b/main/inc/lib/group_portal_manager.lib.php @@ -8,11 +8,11 @@ * @package dokeos.library ============================================================================== */ - +// Group permissions define('GROUP_PERMISSION_OPEN' , '1'); define('GROUP_PERMISSION_CLOSED', '2'); -define('GROUP_PERMISSION_APPROVAL_NEEDED', '3'); +// Group user permissions define('GROUP_USER_PERMISSION_ADMIN' ,'1'); // the admin of a group define('GROUP_USER_PERMISSION_READER' ,'2'); // a normal user define('GROUP_USER_PERMISSION_PENDING_INVITATION' ,'3'); // user pending invitation to a group @@ -76,7 +76,7 @@ class GroupPortalManager /** - * Deletes a group + * Deletes a group * @author Julio Montoya * @param int id * @return boolean true if success @@ -87,6 +87,8 @@ class GroupPortalManager $table = Database :: get_main_table(TABLE_MAIN_GROUP); $sql= "DELETE FROM $table WHERE id = ".Database::escape_string($id); $result = Database::query($sql, __FILE__, __LINE__); + //deleting all relationshop with users and groups + self::delete_users($id); return $result; } @@ -277,8 +279,7 @@ class GroupPortalManager return $array; } - - /** Gets the inner join of users and group table + /** Gets the inner join of users and group table * @author Julio Montoya * @return int access url id * @return array Database::store_result of the result @@ -293,11 +294,14 @@ class GroupPortalManager } else { $num = intval($num); } + // only show admins and readers + $where_relation_condition = " WHERE gu.relation_type IN ('".GROUP_USER_PERMISSION_ADMIN."' , '".GROUP_USER_PERMISSION_READER."') "; + $sql = "SELECT count(user_id) as count, g.picture_uri, g.name, g.description, g.id FROM $tbl_group g INNER JOIN $table_group_rel_user gu - ON gu.group_id = g.id GROUP BY g.id ORDER BY count DESC LIMIT $num"; + ON gu.group_id = g.id $where_relation_condition GROUP BY g.id ORDER BY count DESC LIMIT $num"; $result=Database::query($sql,__FILE__,__LINE__); $array = array(); @@ -317,7 +321,7 @@ class GroupPortalManager * @return int access url id * @return array Database::store_result of the result * */ - function get_groups_by_age($num = 10, $with_image = false) + function get_groups_by_age($num = 10, $with_image = false, $relation_type = GROUP_USER_PERMISSION_READER) { $where = ''; $table_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP); @@ -328,10 +332,15 @@ class GroupPortalManager } else { $num = intval($num); } + + // only show admins and readers + $where_relation_condition = " WHERE gu.relation_type IN ('".GROUP_USER_PERMISSION_ADMIN."' , '".GROUP_USER_PERMISSION_READER."') "; + + $sql = "SELECT g.picture_uri, g.name, g.description, g.id FROM $tbl_group g INNER JOIN $table_group_rel_user gu - ON gu.group_id = g.id ORDER BY created_on desc LIMIT $num "; + ON gu.group_id = g.id $where_relation_condition ORDER BY created_on desc LIMIT $num "; $result=Database::query($sql,__FILE__,__LINE__); $array = array(); @@ -353,8 +362,7 @@ class GroupPortalManager $table_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP); $tbl_user = Database::get_main_table(TABLE_MAIN_USER); $group_id = intval($group_id); - $limit = intval($limit); - + $limit = intval($limit); if ($relation_type == 0) { $where_relation_condition = ''; @@ -479,6 +487,7 @@ class GroupPortalManager } return $return_value; } + /** * Checks the relationship between an URL and a Course (return the num_rows) @@ -496,91 +505,8 @@ class GroupPortalManager return $num; } - - /** - * Checks the relationship between an URL and a Session (return the num_rows) - * @author Julio Montoya - * @param int user id - * @param int url id - * @return boolean true if success - * */ - function relation_url_session_exist($session_id, $url_id) - { - $table_url_rel_session= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); - $sql= "SELECT session_id FROM $table_url_rel_session WHERE access_url_id = ".Database::escape_string($url_id)." AND session_id = ".Database::escape_string($session_id); - $result = Database::query($sql, __FILE__, __LINE__); - $num = Database::num_rows($result); - return $num; - } - - - - - /** - * Add a group of courses into a group of URLs - * @author Julio Montoya - * @param array of course ids - * @param array of url_ids - * */ - function add_courses_to_urls($course_list,$url_list) - { - $table_url_rel_course= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); - $result_array=array(); - - if (is_array($course_list) && is_array($url_list)){ - foreach ($url_list as $url_id) { - foreach ($course_list as $course_code) { - $count = UrlManager::relation_url_course_exist($course_code,$url_id); - if ($count==0) { - $sql = "INSERT INTO $table_url_rel_course - SET course_code = '".Database::escape_string($course_code)."', access_url_id = ".Database::escape_string($url_id); - $result = Database::query($sql, __FILE__, __LINE__); - if($result) - $result_array[$url_id][$course_code]=1; - else - $result_array[$url_id][$course_code]=0; - } - } - } - } - return $result_array; - } - - - /** - * Add a group of sessions into a group of URLs - * @author Julio Montoya - * @param array of session ids - * @param array of url_ids - * */ - function add_sessions_to_urls($session_list,$url_list) - { - $table_url_rel_session= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); - $result_array=array(); - - if (is_array($session_list) && is_array($url_list)){ - foreach ($url_list as $url_id) { - foreach ($session_list as $session_id) { - $count = UrlManager::relation_url_session_exist($session_id,$url_id); - if ($count==0) { - $sql = "INSERT INTO $table_url_rel_session - SET session_id = ".Database::escape_string($session_id).", access_url_id = ".Database::escape_string($url_id); - $result = Database::query($sql, __FILE__, __LINE__); - if($result) - $result_array[$url_id][$session_id]=1; - else - $result_array[$url_id][$session_id]=0; - } - } - } - } - return $result_array; - } - - - /** - * Add a user into a url + * Add a user into a group * @author Julio Montoya * @param user_id * @param url_id @@ -635,7 +561,7 @@ class GroupPortalManager /** - * Deletes an url and user relationship + * Deletes a group and user relationship * @author Julio Montoya * @param int user id * @param int url id @@ -780,40 +706,7 @@ class GroupPortalManager } } - /** - * Updates the access_url_rel_session table with a given user list - * @author Julio Montoya - * @param array user list - * @param int access_url_id - * */ - function update_urls_rel_session($session_list,$access_url_id) - { - $table_session = Database :: get_main_table(TABLE_MAIN_SESSION); - $table_url_rel_session = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); - - $sql = "SELECT session_id FROM $table_url_rel_session WHERE access_url_id=".Database::escape_string($access_url_id); - $result = Database::query($sql,__FILE__,__LINE__ ); - $existing_sessions = array(); - - while($row = Database::fetch_array($result)){ - $existing_sessions[] = $row['session_id']; - } - - //adding users - foreach($session_list as $session) { - if(!in_array($session, $existing_sessions)) { - UrlManager::add_session_to_url($session,$access_url_id); - } - } - - //deleting old users - foreach($existing_sessions as $existing_session) { - if(!in_array($existing_session, $session_list)) { - UrlManager::delete_url_rel_session($existing_session,$access_url_id); - } - } - } - + function get_access_url_from_user($user_id) { $table_url_rel_user = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); diff --git a/main/inc/lib/social.lib.php b/main/inc/lib/social.lib.php index 04617c9f22..565ae02a99 100755 --- a/main/inc/lib/social.lib.php +++ b/main/inc/lib/social.lib.php @@ -164,6 +164,8 @@ class SocialManager extends UserManager { } return $list_ids_friends; } + + /** * get list web path of contacts by user id * @author isaac flores paz @@ -185,7 +187,7 @@ class SocialManager extends UserManager { } } return $combine_friend; - } + } /** * get web path of user invitate * @author isaac flores paz @@ -201,6 +203,9 @@ class SocialManager extends UserManager { } return $list_path_image_friend; } + + + /** * Sends an invitation to contacts * @author isaac flores paz diff --git a/main/social/group_add.php b/main/social/group_add.php index 096b0a3e35..2fba90c983 100644 --- a/main/social/group_add.php +++ b/main/social/group_add.php @@ -8,26 +8,11 @@ require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php'; api_block_anonymous_users(); -$nameTools = get_lang('AddGroup'); -$this_section = SECTION_SOCIAL; - -$interbreadcrumb[]= array ('url' =>'home.php','name' => get_lang('Social')); -Display :: display_header($tool_name, 'Groups'); - -//show the action menu -SocialManager::show_social_menu(); -echo '
'; -echo get_lang('Groups'); -echo '
'; global $charset; $table_message = Database::get_main_table(TABLE_MESSAGE); -$request=api_is_xml_http_request(); -if ($request===true) { - $form = new FormValidator('add_group','post','index.php?add_group=1#remote-tab-7'); -} else { - $form = new FormValidator('add_group'); -} + +$form = new FormValidator('add_group'); // name $form->addElement('text', 'name', get_lang('Name')); @@ -55,11 +40,8 @@ $form->addRule('picture', get_lang('OnlyImagesAllowed').' ('.implode(',', $allow $status = array(); $status[GROUP_PERMISSION_OPEN] = get_lang('Open'); $status[GROUP_PERMISSION_CLOSED] = get_lang('Closed'); -$status[GROUP_PERMISSION_APPROVAL_NEEDED] = get_lang('ApprovalNeeded'); $form->addElement('select', 'visibility', get_lang('GroupPermissions'), $status); - - $form->addElement('style_submit_button','add_group', get_lang('AddGroup'),'class="save"'); $form->setRequiredNote(api_xml_http_response_encode('* '.get_lang('ThisFieldIsRequired').'')); @@ -83,12 +65,22 @@ if ($form->validate()) { $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); } - -} else { - $form->display(); + header('Location: groups.php?id='.$group_id.'&action=show_message&message='.urlencode(get_lang('GroupAdded'))); + exit(); } +$nameTools = get_lang('AddGroup'); +$this_section = SECTION_SOCIAL; +$interbreadcrumb[]= array ('url' =>'home.php','name' => get_lang('Social')); +Display :: display_header($tool_name, 'Groups'); + +//show the action menu +SocialManager::show_social_menu(); +echo '
'; +echo get_lang('Groups'); +echo '
'; +$form->display(); ?> \ No newline at end of file diff --git a/main/social/group_edit.php b/main/social/group_edit.php index 9cb8ad3aa9..8c379548ff 100644 --- a/main/social/group_edit.php +++ b/main/social/group_edit.php @@ -71,7 +71,6 @@ if (strlen($group_data['picture_uri']) > 0) { $status = array(); $status[GROUP_PERMISSION_OPEN] = get_lang('Open'); $status[GROUP_PERMISSION_CLOSED] = get_lang('Closed'); -$status[GROUP_PERMISSION_APPROVAL_NEEDED] = get_lang('ApprovalNeeded'); $form->addElement('select', 'visibility', get_lang('GroupPermissions'), $status, array()); diff --git a/main/social/group_invitation.php b/main/social/group_invitation.php index 3b59c641c0..c4e2b97312 100644 --- a/main/social/group_invitation.php +++ b/main/social/group_invitation.php @@ -1,17 +1,658 @@ -debugOn(); +$xajax -> registerFunction ('search_users'); + +// setting the section (for the tabs) +$this_section = SECTION_PLATFORM_ADMIN; + +// 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_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 +require_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php'); +require_once (api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php'); +require_once api_get_path(LIBRARY_PATH).'social.lib.php'; + +function search_users($needle,$type) +{ + global $tbl_user,$tbl_group_rel_user,$group_id; + $xajax_response = new XajaxResponse(); + $return = ''; + + if (!empty($needle) && !empty($type)) { + + // xajax send utf8 datas... datas in db can be non-utf8 datas + $charset = api_get_setting('platform_charset'); + $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'; + $cond_user_id = ''; + if (!empty($id_session)) { + $group_id = Database::escape_string($group_id); + // check id_user from session_rel_user table + $sql = 'SELECT id_user FROM '.$tbl_group_rel_user.' WHERE group_id ="'.(int)$group_id.'"'; + $res = Database::query($sql,__FILE__,__LINE__); + $user_ids = array(); + if (Database::num_rows($res) > 0) { + while ($row = Database::fetch_row($res)) { + $user_ids[] = (int)$row[0]; + } + } + if (count($user_ids) > 0){ + $cond_user_id = ' AND user_id NOT IN('.implode(",",$user_ids).')'; + } + } + + if ($type == 'single') { + // 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.'"'. + $order_clause. + ' LIMIT 11'; + } else { + $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.'"'.$cond_user_id. + $order_clause; + } + + global $_configuration; + if ($_configuration['multiple_access_urls']==true) { + $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + if ($type == 'single') { + $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.'"'. + $order_clause. + ' LIMIT 11'; + } else { + $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.'"'.$cond_user_id. + $order_clause; + } + + } + } + + $rs = Database::query($sql, __FILE__, __LINE__); + $i=0; + if ($type=='single') { + while ($user = Database :: fetch_array($rs)) { + $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 { + global $nosessionUsersList; + $return .= ''; + $xajax_response -> addAssign('ajax_list_users_multiple','innerHTML',api_utf8_encode($return)); + } + } + + 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); +api_block_anonymous_users(); + +Display :: display_header($tool_name, 'Groups'); +SocialManager::show_social_menu(); +echo '
'; +echo get_lang('Invitations'); +echo '
'; +//api_display_tool_title($tool_name.' ('.$session_info['name'].')'); + + +if($_POST['form_sent']) { + $form_sent = $_POST['form_sent']; + $firstLetterUser = $_POST['firstLetterUser']; + $firstLetterSession = $_POST['firstLetterSession']; + $UserList = $_POST['sessionUsersList']; + $ClassList = $_POST['sessionClassesList']; + $group_id = intval($_POST['id']); -Display :: display_footer(); -?> \ No newline at end of file + /*if(!is_array($UserList)) { + $UserList=array(); + } + if ($form_sent == 1) { + GroupPortalManager::delete_users($group_id); + $result = GroupPortalManager::add_users_to_groups($UserList, array($group_id)); + Display :: display_confirmation_message(get_lang('UsersEdited')); + } + */ +} + +$nosessionUsersList = $sessionUsersList = array(); +/*$sql = 'SELECT COUNT(1) FROM '.$tbl_user; +$rs = Database::query($sql, __FILE__, __LINE__); +$count_courses = Database::result($rs, 0, 0);*/ +$ajax_search = $add_type == 'unique' ? true : false; +global $_configuration; + +$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username'; + + + +if ($ajax_search) { + $sql="SELECT u.user_id, lastname, firstname, username, group_id + FROM $tbl_user u + LEFT JOIN $tbl_group_rel_user gu + ON (gu.user_id = u.user_id) WHERE gu.group_id = $group_id ". + $order_clause; + + if ($_configuration['multiple_access_urls']==true) { + $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql="SELECT u.user_id, lastname, firstname, username, id_session + FROM $tbl_user u + INNER JOIN $tbl_session_rel_user + ON $tbl_session_rel_user.id_user = u.user_id + AND $tbl_session_rel_user.id_session = ".intval($id_session)." + INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id) + WHERE access_url_id = $access_url_id + $order_clause"; + } + } + $result=Database::query($sql,__FILE__,__LINE__); + $Users=Database::store_result($result); + foreach ($Users as $user) { + $sessionUsersList[$user['user_id']] = $user ; + } +} else { + /* + //Filter by Extra Fields + $use_extra_fields = false; + if (is_array($extra_field_list)) { + if (is_array($new_field_list) && count($new_field_list)>0 ) { + $result_list=array(); + foreach ($new_field_list as $new_field) { + $varname = 'field_'.$new_field['variable']; + if (Usermanager::is_extra_field_available($new_field['variable'])) { + if (isset($_POST[$varname]) && $_POST[$varname]!='0') { + $use_extra_fields = true; + $extra_field_result[]= Usermanager::get_extra_user_data_by_value($new_field['variable'], $_POST[$varname]); + } + } + } + } + } + */ + $use_extra_fields =false; + + if ($use_extra_fields) { + $final_result = array(); + if (count($extra_field_result)>1) { + for($i=0;$i0) { + $where_filter = " AND u.user_id IN ('".implode("','",$final_result)."') "; + } else { + //no results + $where_filter = " AND u.user_id = -1"; + } + } else { + if (is_array($final_result) && count($final_result)>0) { + $where_filter = " WHERE u.user_id IN ('".implode("','",$final_result)."') "; + } else { + //no results + $where_filter = " WHERE u.user_id = -1"; + } + } + } + + if ($use_extra_fields) { + $sql="SELECT user_id, lastname, firstname, username, group_id + FROM $tbl_user u + LEFT JOIN $tbl_session_rel_user + ON $tbl_session_rel_user.id_user = u.user_id AND id_session = '$id_session' + $where_filter + $order_clause"; + } else { + + $sql="SELECT u.user_id, lastname, firstname, username, group_id + FROM $tbl_user u + LEFT JOIN $tbl_group_rel_user gu + ON (gu.user_id = u.user_id) AND gu.group_id = $group_id + $order_clause"; + } + + if ($_configuration['multiple_access_urls']==true) { + $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql="SELECT u.user_id, lastname, firstname, username, id_session + FROM $tbl_user u + LEFT JOIN $tbl_session_rel_user + ON $tbl_session_rel_user.id_user = u.user_id AND id_session = '$id_session' + INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id) + WHERE access_url_id = $access_url_id $where_filter + $order_clause"; + } + } + + $friends = SocialManager::get_list_id_friends_by_user_id(api_get_user_id()); + foreach($friends as $friend) { + $user_info=api_get_user_info($friend['friend_user_id']); + $group_friend_list = GroupPortalManager::get_groups_by_user($friend['friend_user_id']); + //var_dump($group_friend_list); + $friend_group_id = ''; + if (in_array($group_id,$group_friend_list)) { + $friend_group_id = $group_id; + } + $Users2[]=array('user_id' => $friend['friend_user_id'], 'firstname' =>$user_info['firstName'], 'lasttname' => $user_info['lastName'], 'username' =>$user_info['username'],'group_id'=>$friend_group_id ); + } + //var_dump($Users2); + + // echo $sql; + $result = Database::query($sql,__FILE__,__LINE__); + $Users = Database::store_result($result,'ASSOC'); + + foreach ($Users as $user) { + if($user['group_id'] != $group_id) + $nosessionUsersList[$user['user_id']] = $user ; + } + + $user_anonymous=api_get_anonymous_id(); + foreach($nosessionUsersList as $key_user_list =>$value_user_list) { + if ($nosessionUsersList[$key_user_list]['user_id']==$user_anonymous) { + unset($nosessionUsersList[$key_user_list]); + } + } + + //filling the correct users in list + $sql="SELECT u.user_id, lastname, firstname, username, group_id + FROM $tbl_user u + LEFT JOIN $tbl_group_rel_user + ON $tbl_group_rel_user.user_id = u.user_id AND group_id = '$group_id' + $order_clause"; + + if ($_configuration['multiple_access_urls']==true) { + $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql="SELECT u.user_id, lastname, firstname, username, id_session + FROM $tbl_user u + LEFT JOIN $tbl_session_rel_user + ON $tbl_session_rel_user.id_user = u.user_id AND id_session = '$id_session' + INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id=u.user_id) + WHERE access_url_id = $access_url_id + $order_clause"; + } + } + + $result=Database::query($sql,__FILE__,__LINE__); + $Users=Database::store_result($result); + + foreach($Users as $key_user_list =>$value_user_list) { + if ($Users[$key_user_list]['user_id']==$user_anonymous) { + unset($Users[$key_user_list]); + } + } + + foreach ($Users as $user) { + if($user['group_id'] == $group_id) { + $sessionUsersList[$user['user_id']] = $user; + if (array_key_exists($user['user_id'],$nosessionUsersList)) + unset($nosessionUsersList[$user['user_id']]); + } + } +} + +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').''; + ?> +
+
+ + + diff --git a/main/social/groups.php b/main/social/groups.php index a7d1a300ce..67e42203f1 100644 --- a/main/social/groups.php +++ b/main/social/groups.php @@ -28,25 +28,28 @@ if ($group_id != 0 ) { //Loading group information if (isset($_GET['status']) && $_GET['status']=='sent') { - Display::display_confirmation_message(api_xml_http_response_encode(get_lang('MessageHasBeenSent')), false); + Display::display_confirmation_message(get_lang('MessageHasBeenSent'), false); } if (isset($_GET['action']) && $_GET['action']=='leave') { $user_leaved = intval($_GET['u']); - GroupPortalManager::delete_user_rel_group($user_leaved, $group_id); + //I can "leave me myself" + if (api_get_user_id() == $user_leaved) { + GroupPortalManager::delete_user_rel_group($user_leaved, $group_id); + } } - // add a user to a group if its open - + // add a user to a group if its open if (isset($_GET['action']) && $_GET['action']=='join') { // we add a user only if is a open group - $user_join = intval($_GET['u']); - if ($group_info['visibility'] != GROUP_PERMISSION_CLOSED) { + $user_join = intval($_GET['u']); + if (api_get_user_id() == $user_join) { if ($group_info['visibility'] == GROUP_PERMISSION_OPEN) { - GroupPortalManager::add_user_to_group($user_join, $group_id); + GroupPortalManager::add_user_to_group($user_join, $group_id); } else { GroupPortalManager::add_user_to_group($user_join, $group_id, GROUP_USER_PERMISSION_PENDING_INVITATION); } + } } @@ -116,7 +119,6 @@ if ($group_id != 0 ) { if (is_array($users[api_get_user_id()]) && count($users[api_get_user_id()]) > 0) { //im a member - if ($users[api_get_user_id()]['relation_type'] !='' ) { $my_group_role = $users[api_get_user_id()]['relation_type']; @@ -129,9 +131,10 @@ if ($group_id != 0 ) { echo 'Im the admin/'; echo ''.get_lang('EditGroup').''; echo ''.get_lang('MemberList').''; - echo 'Invite others'; + echo ''.get_lang('InviteFriends').''; + } elseif ($my_group_role == GROUP_USER_PERMISSION_PENDING_INVITATION) { - echo 'You should Wait'; + echo get_lang('PendingApproval'); } } else { if ($group_info['visibility']!= GROUP_PERMISSION_CLOSED ) { @@ -141,9 +144,7 @@ if ($group_id != 0 ) { } } else { //im not a member - if ($group_info['visibility'] != GROUP_PERMISSION_CLOSED) { - echo ''.get_lang('JoinGroup').''; - } + echo ''.get_lang('JoinGroup').''; } echo ''; // end layout permissions echo ''; // end layout left diff --git a/main/social/invitations.php b/main/social/invitations.php index 8acd8d080e..6d21f7aa5e 100644 --- a/main/social/invitations.php +++ b/main/social/invitations.php @@ -6,6 +6,7 @@ require '../inc/global.inc.php'; require_once api_get_path(LIBRARY_PATH).'image.lib.php'; require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php'; require_once api_get_path(LIBRARY_PATH).'social.lib.php'; +require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php'; $this_section = SECTION_SOCIAL; $interbreadcrumb[]= array ('url' =>'home.php','name' => get_lang('Social')); @@ -63,8 +64,8 @@ echo ''; $request = api_is_xml_http_request(); -$language_variable = api_xml_http_response_encode(get_lang('PendingInvitations')); -$language_comment = api_xml_http_response_encode(get_lang('SocialInvitesComment')); +$language_variable = get_lang('PendingInvitations'); +$language_comment = get_lang('SocialInvitesComment'); //api_display_tool_title($language_variable); ?>
@@ -75,6 +76,8 @@ $user_id = api_get_user_id(); $list_get_invitation = SocialManager::get_list_invitation_of_friends_by_user_id($user_id); $list_get_invitation_sent = SocialManager::get_list_invitation_sent_by_user_id($user_id); +$pending_invitations = GroupPortalManager::get_groups_by_user($user_id, GROUP_USER_PERMISSION_PENDING_INVITATION,true); + $number_loop=count($list_get_invitation); //@todo move this to default.css @@ -171,5 +174,11 @@ if (count($list_get_invitation_sent) > 0 ){ 0) { + echo get_lang('GroupInvitations'); + Display::display_sortable_grid('search_users', array(), $pending_invitations, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,false)); +} + Display::display_footer(); ?> \ No newline at end of file