From 0c8ff36e3c0d85344c70c57b89603d7f5c9428ed Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Tue, 26 May 2015 14:36:17 +0200 Subject: [PATCH] Replace calls of GroupPortalManager with UserGroup see BT#4301 --- main/admin/add_users_to_group.php | 12 +- main/admin/add_users_to_usergroup.php | 68 ++- main/admin/index.php | 4 +- main/admin/system_announcements.php | 83 +-- main/gradebook/certificate_report.php | 5 +- .../gradebook_display_certificate.php | 3 +- main/inc/ajax/model.ajax.php | 51 +- main/inc/lib/banner.lib.php | 24 +- main/inc/lib/course.lib.php | 4 +- main/inc/lib/database.constants.inc.php | 20 +- main/inc/lib/group_portal_manager.lib.php | 2 +- main/inc/lib/message.lib.php | 30 +- main/inc/lib/model.lib.php | 7 +- main/inc/lib/sessionmanager.lib.php | 19 +- main/inc/lib/social.lib.php | 27 +- main/inc/lib/sortable_table.class.php | 4 +- main/inc/lib/system_announcements.lib.php | 191 ++++--- main/inc/lib/template.lib.php | 12 +- main/inc/lib/usergroup.lib.php | 375 +++++++++++-- main/inc/lib/usermanager.lib.php | 5 +- main/inc/lib/userportal.lib.php | 12 +- main/messages/download.php | 33 +- main/messages/new_message.php | 17 +- main/social/friends.php | 23 +- main/social/group_edit.php | 2 +- main/social/group_invitation.php | 519 ++++-------------- main/social/group_members.php | 53 +- main/social/group_view.php | 25 +- main/social/groups.php | 2 +- main/social/home.php | 46 +- main/social/invitations.php | 136 ++--- main/social/message_for_group_form.inc.php | 19 +- main/social/myfiles.php | 54 +- main/social/profile.php | 110 +--- .../social/profile_friends_and_groups.inc.php | 48 +- main/social/search.php | 2 +- main/template/default/social/friends.tpl | 2 +- main/template/default/social/profile.tpl | 1 + main/user/class.php | 68 ++- main/webservices/registration.soap.php | 48 +- .../Entity/UserGroupRelUserGroup.php | 125 +++++ .../Schema/V110/Version20150522112023.php | 1 + 42 files changed, 1185 insertions(+), 1107 deletions(-) create mode 100644 src/Chamilo/CoreBundle/Entity/UserGroupRelUserGroup.php diff --git a/main/admin/add_users_to_group.php b/main/admin/add_users_to_group.php index a46a23a353..728be5eb09 100755 --- a/main/admin/add_users_to_group.php +++ b/main/admin/add_users_to_group.php @@ -22,7 +22,7 @@ $interbreadcrumb[] = array('url' => 'group_list.php','name' => get_lang('GroupLi // 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_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(); @@ -212,11 +212,11 @@ $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']); + $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(); diff --git a/main/admin/add_users_to_usergroup.php b/main/admin/add_users_to_usergroup.php index d33e36e2bb..d67374e54e 100755 --- a/main/admin/add_users_to_usergroup.php +++ b/main/admin/add_users_to_usergroup.php @@ -1,8 +1,10 @@ 'usergroups.php','name' => get_lang('Classes' // setting the name of the tool $tool_name = get_lang('SubscribeUsersToClass'); -$add_type = 'multiple'; -if (isset($_REQUEST['add_type']) && $_REQUEST['add_type']!='') { - $add_type = Security::remove_XSS($_REQUEST['add_type']); -} +$id = intval($_GET['id']); + +$relation = isset($_REQUEST['relation']) ? intval($_REQUEST['relation']) : ''; $htmlHeadXtra[] = ' '; $form_sent = 0; -$errorMsg = ''; $extra_field_list = UserManager::get_extra_fields(); $new_field_list = array(); @@ -97,7 +108,6 @@ if (is_array($extra_field_list)) { } $usergroup = new UserGroup(); -$id = intval($_GET['id']); if (empty($id)) { api_not_allowed(true); @@ -105,16 +115,21 @@ if (empty($id)) { $first_letter_user = ''; if (isset($_POST['form_sent']) && $_POST['form_sent']) { - $form_sent = $_POST['form_sent']; - $elements_posted = isset($_POST['elements_in_name']) ? $_POST['elements_in_name'] : null; - $first_letter_user = $_POST['firstLetterUser']; + $form_sent = $_POST['form_sent']; + $elements_posted = isset($_POST['elements_in_name']) ? $_POST['elements_in_name'] : null; + $first_letter_user = $_POST['firstLetterUser']; if (!is_array($elements_posted)) { - $elements_posted=array(); + $elements_posted = array(); } if ($form_sent == 1) { //added a parameter to send emails when registering a user - $usergroup->subscribe_users_to_usergroup($id, $elements_posted); + $usergroup->subscribe_users_to_usergroup( + $id, + $elements_posted, + true, + $relation + ); header('Location: usergroups.php'); exit; } @@ -138,7 +153,7 @@ if (isset($_GET['action']) && $_GET['action'] == 'export') { } -//Filter by Extra Fields +// 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 ) { @@ -195,7 +210,7 @@ if ($searchForm->validate()) { } $data = $usergroup->get($id); -$list_in = $usergroup->get_users_by_usergroup($id); +$list_in = $usergroup->getUsersByUsergroupAndRelation($id, $relation); $list_all = $usergroup->get_users_by_usergroup(); $order = array('lastname'); @@ -311,8 +326,6 @@ if (!empty($user_list)) { } } -$add_type == 'unique' ? true : false; - Display::display_header($tool_name); echo '
'; @@ -336,7 +349,7 @@ echo '
'; '.$tool_name.': '.$data['name'].''; -if ($add_type=='multiple') { + if (is_array($extra_field_list)) { if (is_array($new_field_list) && count($new_field_list)>0) { echo '

'.get_lang('FilterByUser').'

'; @@ -361,18 +374,31 @@ if ($add_type=='multiple') { echo '

'; } } -} + echo Display::input('hidden', 'id', $id); echo Display::input('hidden', 'form_sent', '1'); echo Display::input('hidden', 'add_type', null); -if (!empty($errorMsg)) { - Display::display_normal_message($errorMsg); -} ?>
+ + + +
: : diff --git a/main/admin/index.php b/main/admin/index.php index 0cf3ddb974..78eedf0362 100644 --- a/main/admin/index.php +++ b/main/admin/index.php @@ -107,8 +107,8 @@ if (api_is_platform_admin()) { array('url' => 'user_import.php', 'label' => get_lang('ImportUserListXMLCSV')), array('url' => 'user_update_import.php', 'label' => get_lang('EditUserListCSV')), ); - $items[] = array('url' => 'group_add.php', 'label' => get_lang('AddGroups')); - $items[] = array('url' => 'group_list.php', 'label' => get_lang('GroupList')); + //$items[] = array('url' => 'group_add.php', 'label' => get_lang('AddGroups')); + //$items[] = array('url' => 'group_list.php', 'label' => get_lang('GroupList')); if (isset($extAuthSource) && isset($extAuthSource['extldap']) && count($extAuthSource['extldap']) > 0) { $items[] = array('url' => 'ldap_users_list.php', 'label' => get_lang('ImportLDAPUsersIntoPlatform')); diff --git a/main/admin/system_announcements.php b/main/admin/system_announcements.php index d29b34ce6d..20d6a482f3 100755 --- a/main/admin/system_announcements.php +++ b/main/admin/system_announcements.php @@ -64,7 +64,7 @@ if (isset($_POST['action'])) { $action_todo = true; } -//Actions +// Actions switch($action) { case 'make_visible': case 'make_invisible': @@ -79,7 +79,6 @@ switch($action) { SystemAnnouncementManager :: delete_announcement($_GET['id']); Display :: display_confirmation_message(get_lang('AnnouncementDeleted')); break; - case 'delete_selected': foreach($_POST['id'] as $index => $id) { SystemAnnouncementManager :: delete_announcement($id); @@ -101,24 +100,24 @@ switch($action) { break; case 'edit': // Edit an announcement. - $announcement = SystemAnnouncementManager :: get_announcement($_GET['id']); - $values['id'] = $announcement->id; - $values['title'] = $announcement->title; - $values['content'] = $announcement->content; - $values['start'] = api_get_local_time($announcement->date_start); - $values['end'] = api_get_local_time($announcement->date_end); + $announcement = SystemAnnouncementManager:: get_announcement($_GET['id']); + $values['id'] = $announcement->id; + $values['title'] = $announcement->title; + $values['content'] = $announcement->content; + $values['start'] = api_get_local_time($announcement->date_start); + $values['end'] = api_get_local_time($announcement->date_end); $values['range'] = substr(api_get_local_time($announcement->date_start), 0, 16).' / '. substr(api_get_local_time($announcement->date_end), 0, 16); - $values['visible_teacher'] = $announcement->visible_teacher; - $values['visible_student'] = $announcement->visible_student ; - $values['visible_guest'] = $announcement->visible_guest ; - $values['lang'] = $announcement->lang; - $values['action'] = 'edit'; - $groups = SystemAnnouncementManager :: get_announcement_groups($announcement->id); - $values['group'] = isset($groups[0]['group_id']) ? $groups[0]['group_id'] : 0; + $values['visible_teacher'] = $announcement->visible_teacher; + $values['visible_student'] = $announcement->visible_student; + $values['visible_guest'] = $announcement->visible_guest; + $values['lang'] = $announcement->lang; + $values['action'] = 'edit'; + $groups = SystemAnnouncementManager::get_announcement_groups($announcement->id); + $values['group'] = isset($groups['group_id']) ? $groups['group_id'] : 0; $action_todo = true; break; } @@ -126,21 +125,33 @@ switch($action) { if ($action_todo) { if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'add') { $form_title = get_lang('AddNews'); + $url = api_get_self(); } elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'edit') { $form_title = get_lang('EditNews'); + $url = api_get_self().'?id='.intval($_GET['id']); } - $form = new FormValidator('system_announcement'); + $form = new FormValidator('system_announcement', 'post', $url); $form->addElement('header', '', $form_title); - $form->addText('title', get_lang('Title'), true, array('class'=>'span4')); + $form->addText('title', get_lang('Title'), true); $language_list = api_get_languages(); $language_list_with_keys = array(); $language_list_with_keys['all'] = get_lang('All'); - for($i=0; $iaddElement('select', 'lang',get_lang('Language'), $language_list_with_keys); - $form->addHtmlEditor('content', get_lang('Content'), true, false, array('ToolbarSet' => 'PortalNews', 'Width' => '100%', 'Height' => '300')); + $form->addHtmlEditor( + 'content', + get_lang('Content'), + true, + false, + array( + 'ToolbarSet' => 'PortalNews', + 'Width' => '100%', + 'Height' => '300', + ) + ); $form->addDateRangePicker('range', get_lang('StartTimeWindow'), true, array('id' => 'date_range')); $group = array(); @@ -152,15 +163,20 @@ if ($action_todo) { $form->addGroup($group, null, get_lang('Visible'), ''); $form->addElement('hidden', 'id'); + $userGroup = new UserGroup(); + $group_list = $userGroup->get_all(); + + if (!empty($group_list)) { + $group_list = array_column($group_list, 'name', 'id'); + $group_list[0] = get_lang('All'); + $form->addElement( + 'select', + 'group', + get_lang('AnnouncementForGroup'), + $group_list + ); + } - $group_list = GroupPortalManager::get_groups_list(); - $group_list[0] = get_lang('All'); - $form->addElement( - 'select', - 'group', - get_lang('AnnouncementForGroup'), - $group_list - ); $values['group'] = isset($values['group']) ? $values['group'] : '0'; $form->addElement('checkbox', 'send_mail', null, get_lang('SendMail')); @@ -209,8 +225,8 @@ if ($action_todo) { $values['visible_guest'], $values['lang'], $sendMail, - empty($values['add_to_calendar'])?false:true, - empty($values['send_email_test'])?false:true + empty($values['add_to_calendar']) ? false : true, + empty($values['send_email_test']) ? false : true ); if ($announcement_id !== false) { @@ -222,6 +238,8 @@ if ($action_todo) { } break; case 'edit': + $sendMailTest = isset($values['send_email_test']) ? $values['send_email_test'] : null; + if (SystemAnnouncementManager::update_announcement( $values['id'], $values['title'], @@ -233,10 +251,13 @@ if ($action_todo) { $values['visible_guest'], $values['lang'], $sendMail, - $values['send_email_test'] + $sendMailTest ) ) { - SystemAnnouncementManager::announcement_for_groups($values['id'], array($values['group'])); + SystemAnnouncementManager::announcement_for_groups( + $values['id'], + array($values['group']) + ); Display :: display_confirmation_message(get_lang('AnnouncementUpdated')); } else { $show_announcement_list = false; diff --git a/main/gradebook/certificate_report.php b/main/gradebook/certificate_report.php index a5a7ea4b0b..513f94b6cd 100644 --- a/main/gradebook/certificate_report.php +++ b/main/gradebook/certificate_report.php @@ -5,7 +5,7 @@ * @author Angel Fernando Quiroz Campos * @package chamilo.gradebook */ -use \ChamiloSession as Session; +use ChamiloSession as Session; $cidReset = true; @@ -31,7 +31,8 @@ $userId = api_get_user_id(); $sessions = $courses = $months = $students = [0 => get_lang('Select')]; if (api_is_student_boss()) { - $userList = GroupPortalManager::getGroupUsersByUser($userId); + $userGroup = new UserGroup(); + $userList = $userGroup->getGroupUsersByUser($userId); $sessionsList = SessionManager::getSessionsFollowedForGroupAdmin($userId); } else { $sessionsList = SessionManager::getSessionsCoachedByUser($userId, false, api_is_platform_admin()); diff --git a/main/gradebook/gradebook_display_certificate.php b/main/gradebook/gradebook_display_certificate.php index 087d400328..b46d938e4c 100755 --- a/main/gradebook/gradebook_display_certificate.php +++ b/main/gradebook/gradebook_display_certificate.php @@ -39,7 +39,8 @@ $filterOfficialCodeGet = isset($_GET['filter']) ? Security::remove_XSS($_GET['fi switch ($action) { case 'export_all_certificates': if (api_is_student_boss()) { - $userList = GroupPortalManager::getGroupUsersByUser(api_get_user_id()); + $userGroup = new UserGroup(); + $userList = $userGroup->getGroupUsersByUser(api_get_user_id()); } else { $userList = array(); if (!empty($filterOfficialCodeGet)) { diff --git a/main/inc/ajax/model.ajax.php b/main/inc/ajax/model.ajax.php index 795e314e16..3728b44ec7 100755 --- a/main/inc/ajax/model.ajax.php +++ b/main/inc/ajax/model.ajax.php @@ -212,9 +212,10 @@ switch ($action) { } if ($searchByGroups) { + $userGroup = new UserGroup(); $userIdList = array_merge( $userIdList, - GroupPortalManager::getGroupUsersByUser(api_get_user_id()) + $userGroup->getGroupUsersByUser(api_get_user_id()) ); } @@ -442,36 +443,36 @@ switch ($action) { break; case 'get_timelines': require_once $libpath.'timeline.lib.php'; - $obj = new Timeline(); - $count = $obj->get_count(); + $obj = new Timeline(); + $count = $obj->get_count(); break; case 'get_gradebooks': require_once $libpath.'gradebook.lib.php'; - $obj = new Gradebook(); - $count = $obj->get_count(); + $obj = new Gradebook(); + $count = $obj->get_count(); break; case 'get_event_email_template': - $obj = new EventEmailTemplate(); - $count = $obj->get_count(); + $obj = new EventEmailTemplate(); + $count = $obj->get_count(); break; case 'get_careers': - $obj = new Career(); - $count = $obj->get_count(); + $obj = new Career(); + $count = $obj->get_count(); break; case 'get_promotions': - $obj = new Promotion(); - $count = $obj->get_count(); + $obj = new Promotion(); + $count = $obj->get_count(); break; case 'get_grade_models': - $obj = new GradeModel(); - $count = $obj->get_count(); + $obj = new GradeModel(); + $count = $obj->get_count(); break; case 'get_usergroups': - $obj = new UserGroup(); - $count = $obj->get_count(); + $obj = new UserGroup(); + $count = $obj->get_count(); break; case 'get_usergroups_teacher': - $obj = new UserGroup(); + $obj = new UserGroup(); $type = isset($_REQUEST['type']) ? $_REQUEST['type'] : 'registered'; $course_id = api_get_course_int_id(); if ($type == 'registered') { @@ -637,8 +638,9 @@ switch ($action) { $sessionIdList ); if (api_is_student_boss()) { + $userGroup = new UserGroup(); foreach ($result as &$item) { - $userGroups = GroupPortalManager::get_groups_by_user($item['user_id']); + $userGroups = $userGroup->get_groups_by_user($item['user_id']); $item['group'] = implode(", ", array_column($userGroups, 'name')); unset($item['user_id']); } @@ -1383,7 +1385,7 @@ switch ($action) { ); break; case 'get_usergroups_teacher': - $columns = array('name', 'users', 'actions'); + $columns = array('name', 'users', 'status', 'group_type', 'actions'); $options = array('order'=>"name $sord", 'LIMIT'=> "$start , $limit"); $options['course_id'] = $course_id; @@ -1397,6 +1399,7 @@ switch ($action) { $result = $obj->get_usergroup_in_course($options); break; } + $new_result = array(); if (!empty($result)) { foreach ($result as $group) { @@ -1408,6 +1411,18 @@ switch ($action) { $url = 'class.php?action=add_class_to_course&id='.$group['id'].'&'.api_get_cidreq(); $icon = Display::return_icon('add.png', get_lang('Add')); } + + switch ($group['group_type']) { + case 0: + $group['group_type'] = Display::label(get_lang('Class'), 'info'); + break; + case 1: + $group['group_type'] = Display::label(get_lang('Social'), 'success'); + break; + } + + $role = $obj->getUserRoleToString(api_get_user_id(), $group['id']); + $group['status'] = $role; $group['actions'] = Display::url($icon, $url); $new_result[] = $group; } diff --git a/main/inc/lib/banner.lib.php b/main/inc/lib/banner.lib.php index 7eb0665cbb..854254a980 100755 --- a/main/inc/lib/banner.lib.php +++ b/main/inc/lib/banner.lib.php @@ -68,29 +68,7 @@ function get_tabs() { $navigation['session_my_progress']['url'] = api_get_path(WEB_CODE_PATH).'auth/my_progress.php'; $navigation['session_my_progress']['title'] = get_lang('MyProgress'); $navigation['session_my_progress']['key'] = 'my-progress'; - } - - - // Social - /* - if (api_get_setting('allow_social_tool')=='true') { - $navigation['social']['url'] = api_get_path(WEB_CODE_PATH).'social/home.php'; - - // get count unread message and total invitations - $count_unread_message = MessageManager::get_number_of_messages(true); - - $number_of_new_messages_of_friend = SocialManager::get_message_number_invitation_by_user_id(api_get_user_id()); - $group_pending_invitations = GroupPortalManager::get_groups_by_user(api_get_user_id(), GROUP_USER_PERMISSION_PENDING_INVITATION,false); - $group_pending_invitations = 0; - if (!empty($group_pending_invitations )) { - $group_pending_invitations = count($group_pending_invitations); - } - $total_invitations = intval($number_of_new_messages_of_friend) + $group_pending_invitations + intval($count_unread_message); - $total_invitations = (!empty($total_invitations) ? Display::badge($total_invitations) :''); - - $navigation['social']['title'] = get_lang('SocialNetwork'). $total_invitations; - } - */ + } // Social if (api_get_setting('allow_social_tool')=='true') { diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index dfe5a9c1c6..d38b338a89 100755 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -5538,8 +5538,8 @@ class CourseManager $courseTable = Database::get_main_table(TABLE_MAIN_COURSE); $courseUserTable = Database::get_main_table(TABLE_MAIN_COURSE_USER); - - $userIdList = GroupPortalManager::getGroupUsersByUser($userId); + $userGroup = new UserGroup(); + $userIdList = $userGroup->getGroupUsersByUser($userId); if (empty($userIdList)) { return []; diff --git a/main/inc/lib/database.constants.inc.php b/main/inc/lib/database.constants.inc.php index d9d1444329..115160e630 100755 --- a/main/inc/lib/database.constants.inc.php +++ b/main/inc/lib/database.constants.inc.php @@ -80,10 +80,10 @@ define('TABLE_MAIN_TAG', 'tag'); define('TABLE_MAIN_USER_REL_TAG', 'user_rel_tag'); //User groups -define('TABLE_MAIN_GROUP', 'groups'); +/*define('TABLE_MAIN_GROUP', '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'); +define('TABLE_MAIN_GROUP_REL_GROUP', 'group_rel_group');*/ // Search engine define('TABLE_MAIN_SPECIFIC_FIELD', 'specific_field'); @@ -102,13 +102,6 @@ define('TABLE_MAIN_ACCESS_URL_REL_COURSE_CATEGORY', 'access_url_rel_course_categ // Global calendar define('TABLE_MAIN_SYSTEM_CALENDAR', 'sys_calendar'); -// Reservation System -define('TABLE_MAIN_RESERVATION_ITEM', 'reservation_item'); -define('TABLE_MAIN_RESERVATION_RESERVATION', 'reservation_main'); -define('TABLE_MAIN_RESERVATION_SUBSCRIBTION', 'reservation_subscription'); -define('TABLE_MAIN_RESERVATION_CATEGORY', 'reservation_category'); -define('TABLE_MAIN_RESERVATION_ITEM_RIGHTS', 'reservation_item_rights'); - // Social networking define('TABLE_MAIN_USER_REL_USER', 'user_rel_user'); define('TABLE_MAIN_USER_FRIEND_RELATION_TYPE', 'user_friend_relation_type'); @@ -147,14 +140,10 @@ define('TABLE_STATISTIC_TRACK_E_HOTSPOT', 'track_e_hotspot'); define('TABLE_STATISTIC_TRACK_E_ITEM_PROPERTY', 'track_e_item_property'); define('TABLE_STATISTIC_TRACK_FILTERED_TERMS', 'track_filtered_terms'); -//Course catalog stats see #4191 +// Course catalog stats see #4191 define('TABLE_STATISTIC_TRACK_COURSE_RANKING', 'track_course_ranking'); define('TABLE_MAIN_USER_REL_COURSE_VOTE', 'user_rel_course_vote'); -// SCORM database tables this is used only during the migration from 1.6 to 1.8 see update-db-scorm-1.6.x-1.8.0.inc -define('TABLE_SCORM_MAIN', 'scorm_main'); -define('TABLE_SCORM_SCO_DATA', 'scorm_sco_data'); - // Course tables define('TABLE_AGENDA', 'calendar_event'); define('TABLE_AGENDA_REPEAT', 'calendar_event_repeat'); @@ -175,7 +164,6 @@ define('TABLE_STUDENT_PUBLICATION', 'student_publication'); define('TABLE_STUDENT_PUBLICATION_ASSIGNMENT', 'student_publication_assignment'); define('TABLE_STUDENT_PUBLICATION_REL_DOCUMENT', 'student_publication_rel_document'); define('TABLE_STUDENT_PUBLICATION_REL_USER', 'student_publication_rel_user'); - define('TABLE_STUDENT_PUBLICATION_ASSIGNMENT_COMMENT', 'student_publication_comment'); // Course forum tables @@ -294,7 +282,6 @@ define('TABLE_ATTENDANCE', 'attendance'); define('TABLE_ATTENDANCE_CALENDAR', 'attendance_calendar'); define('TABLE_ATTENDANCE_CALENDAR_REL_GROUP', 'attendance_calendar_rel_group'); define('TABLE_ATTENDANCE_SHEET_LOG', 'attendance_sheet_log'); - define('TABLE_ATTENDANCE_SHEET', 'attendance_sheet'); define('TABLE_ATTENDANCE_RESULT', 'attendance_result'); @@ -311,6 +298,7 @@ define('TABLE_USERGROUP', 'usergroup'); define('TABLE_USERGROUP_REL_USER', 'usergroup_rel_user'); define('TABLE_USERGROUP_REL_COURSE', 'usergroup_rel_course'); define('TABLE_USERGROUP_REL_SESSION', 'usergroup_rel_session'); +define('TABLE_USERGROUP_REL_USERGROUP', 'usergroup_rel_usergroup'); // Mail notifications define('TABLE_NOTIFICATION', 'notification'); diff --git a/main/inc/lib/group_portal_manager.lib.php b/main/inc/lib/group_portal_manager.lib.php index 8df55c619f..4df40e9222 100755 --- a/main/inc/lib/group_portal_manager.lib.php +++ b/main/inc/lib/group_portal_manager.lib.php @@ -3,7 +3,7 @@ /** * Class GroupPortalManager - * This library provides functions for the group management. + * @deprecated use UserGroup functions. * Include/require it in your code to use its functionality. * @author Julio Montoya * @package chamilo.library diff --git a/main/inc/lib/message.lib.php b/main/inc/lib/message.lib.php index 2bec38db4d..b5756bcc86 100755 --- a/main/inc/lib/message.lib.php +++ b/main/inc/lib/message.lib.php @@ -510,10 +510,11 @@ class MessageManager $message_user_id = $sender_user_id; } - // User-reserved directory where photos have to be placed. + // User-reserved directory where photos have to be placed.* + $userGroup = new UserGroup(); if (!empty($group_id)) { - $path_user_info = GroupPortalManager::get_group_picture_path_by_id($group_id, 'system', true); + $path_user_info = $userGroup->get_group_picture_path_by_id($group_id, 'system', true); } else { $path_user_info['dir'] = UserManager::getUserPathById($message_user_id, 'system'); } @@ -559,7 +560,8 @@ class MessageManager $new_path = $path.'_DELETED_'.$attach_id; if (!empty($group_id)) { - $path_user_info = GroupPortalManager::get_group_picture_path_by_id($group_id, 'system', true); + $userGroup = new UserGroup(); + $path_user_info = $userGroup->get_group_picture_path_by_id($group_id, 'system', true); } else { $path_user_info['dir'] = UserManager::getUserPathById($message_uid, 'system'); } @@ -1084,25 +1086,20 @@ class MessageManager $html = ''; // topics $user_sender_info = api_get_user_info($topic['user_sender_id']); - - $name = api_get_person_name($user_sender_info['firstname'], $user_sender_info['lastname']); + $name = $user_sender_info['complete_name']; $html .= '
'; $items = $topic['count']; $reply_label = ($items == 1) ? get_lang('GroupReply') : get_lang('GroupReplies'); - - $html .= '
'; - $html .= Display::div(Display::tag('span', $items).$reply_label, array('class' => 'group_discussions_replies')); - $html .= '
'; - + $label = Display::label($items.' '.$reply_label); $topic['title'] = trim($topic['title']); if (empty($topic['title'])) { $topic['title'] = get_lang('Untitled'); } - $html .= '
'; + $html .= '
'; $html .= Display::tag( 'h4', Display::url( @@ -1127,7 +1124,7 @@ class MessageManager } else { $date .= '
'.get_lang('Created').' '.date_to_str_ago($topic['send_date']).'
'; } - $html .= $date.$actions; + $html .= $date.$label.$actions; $html .= '
'; $image = $user_sender_info['avatar']; @@ -1208,10 +1205,10 @@ class MessageManager $topic_page_nr = isset($_GET['topics_page_nr']) ? intval($_GET['topics_page_nr']) : null; $links.= ''; @@ -1253,9 +1250,10 @@ class MessageManager $links.= ''; diff --git a/main/inc/lib/model.lib.php b/main/inc/lib/model.lib.php index f1e2172111..cd5c727efb 100755 --- a/main/inc/lib/model.lib.php +++ b/main/inc/lib/model.lib.php @@ -214,6 +214,7 @@ class Model { $params = $this->clean_parameters($params); + if ($this->is_course_model) { if (!isset($params['c_id']) || empty($params['c_id'])) { $params['c_id'] = api_get_course_int_id(); @@ -233,7 +234,11 @@ class Model $id = intval($params['id']); unset($params['id']); //To not overwrite the id if (is_numeric($id)) { - $result = Database::update($this->table, $params, array('id = ?'=>$id)); + $result = Database::update( + $this->table, + $params, + array('id = ?' => $id) + ); if ($result) { return true; } diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index eb587ab056..11a9fb03b1 100755 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -6088,23 +6088,22 @@ class SessionManager public static function getSessionsFollowedForGroupAdmin($userId) { $sessionList = array(); - $sessionTable = Database::get_main_table(TABLE_MAIN_SESSION); $sessionUserTable = Database::get_main_table(TABLE_MAIN_SESSION_USER); - - $userIdList = GroupPortalManager::getGroupUsersByUser($userId); + $userGroup = new UserGroup(); + $userIdList = $userGroup->getGroupUsersByUser($userId); if (empty($userIdList)) { return []; } - $sql = "SELECT DISTINCT s.* " - . "FROM $sessionTable s " - . "INNER JOIN $sessionUserTable sru ON s.id = sru.id_session " - . "WHERE ( " - . "sru.id_user IN (" . implode(', ', $userIdList) . ") " - . "AND sru.relation_type = 0" - . ")"; + $sql = "SELECT DISTINCT s.* + FROM $sessionTable s + INNER JOIN $sessionUserTable sru ON s.id = sru.id_session + WHERE + (sru.id_user IN (" . implode(', ', $userIdList) . ") + AND sru.relation_type = 0 + )"; if (api_is_multiple_url_enabled()) { $sessionAccessUrlTable = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); diff --git a/main/inc/lib/social.lib.php b/main/inc/lib/social.lib.php index 84c6820ac3..c7af16e674 100755 --- a/main/inc/lib/social.lib.php +++ b/main/inc/lib/social.lib.php @@ -597,16 +597,6 @@ class SocialManager extends UserManager 'browse_groups' ); - // get count unread message and total invitations - /*$count_unread_message = MessageManager::get_number_of_messages(true); - $count_unread_message = !empty($count_unread_message) ? Display::badge($count_unread_message) : null;*/ - - /*$number_of_new_messages_of_friend = SocialManager::get_message_number_invitation_by_user_id(api_get_user_id()); - $group_pending_invitations = GroupPortalManager::get_groups_by_user(api_get_user_id(), GROUP_USER_PERMISSION_PENDING_INVITATION, false); - $group_pending_invitations = count($group_pending_invitations); - $total_invitations = $number_of_new_messages_of_friend + $group_pending_invitations; - $total_invitations = (!empty($total_invitations) ? Display::badge($total_invitations) : '');*/ - $html = '
'; if (in_array($show, $show_groups) && !empty($group_id)) { // Group image @@ -625,7 +615,7 @@ class SocialManager extends UserManager api_get_path(WEB_CODE_PATH).'social/group_view.php?id='.$group_id ); - if (GroupPortalManager::is_group_admin($group_id, api_get_user_id())) { + if ($userGroup->is_group_admin($group_id, api_get_user_id())) { $html .= ''; @@ -1559,7 +1549,7 @@ class SocialManager extends UserManager } /** - * @param $user_id + * @param int $user_id * @param $link_shared * @param $show_full_profile * @return string @@ -1570,15 +1560,13 @@ class SocialManager extends UserManager $friends = SocialManager::get_friends($user_id, USER_RELATION_TYPE_FRIEND); $number_of_images = 30; $number_friends = count($friends); - - $friendHtml = ''; - + $friendHtml = ''; if ($number_friends != 0) { if ($number_friends > $number_of_images) { if (api_get_user_id() == $user_id) { - $friendHtml.= ' : '.get_lang('SeeAll').''; + $friendHtml.= ' '.get_lang('SeeAll').''; } else { - $friendHtml.= ' : ' + $friendHtml.= ' ' .''.get_lang('SeeAll').''; @@ -1602,11 +1590,14 @@ class SocialManager extends UserManager } $friendHtml.= '
  • '; + $friendHtml.= '
    '; + // the height = 92 must be the same in the image_friend_network span style in default.css $friends_profile = UserManager::getUserPicture($friend['friend_user_id'], USER_IMAGE_SIZE_SMALL); $friendHtml.= ''; $link_shared = (empty($link_shared)) ? '' : '&'.$link_shared; $friendHtml.= $statusIcon .'' . $name_user .''; + $friendHtml.= '
    '; $friendHtml.= '
  • '; } $j++; @@ -1617,6 +1608,8 @@ class SocialManager extends UserManager .' '. get_lang('TryAndFindSomeFriends').'
    '; } + $friendHtml = Display::panel($friendHtml, get_lang('SocialFriend').' (' . $number_friends . ')' ); + return $friendHtml; } diff --git a/main/inc/lib/sortable_table.class.php b/main/inc/lib/sortable_table.class.php index 3241c19a16..965b34bce5 100755 --- a/main/inc/lib/sortable_table.class.php +++ b/main/inc/lib/sortable_table.class.php @@ -532,7 +532,9 @@ class SortableTable extends HTML_Table $i = 0; $rows = ''; foreach ($row as & $element) { - if ($filter || $visibility_options[$i]) { + if ($filter || + isset($visibility_options[$i]) && $visibility_options[$i] + ) { $rows .= '
    '.$element.'
    '; } $i++; diff --git a/main/inc/lib/system_announcements.lib.php b/main/inc/lib/system_announcements.lib.php index ee4825c464..064a4db554 100755 --- a/main/inc/lib/system_announcements.lib.php +++ b/main/inc/lib/system_announcements.lib.php @@ -20,24 +20,22 @@ class SystemAnnouncementManager $user_selected_language = api_get_interface_language(); $db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); $tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS); - $temp_user_groups = GroupPortalManager::get_groups_by_user(api_get_user_id(),0); - $groups =array(); + $userGroup = new UserGroup(); + + $temp_user_groups = $userGroup->get_groups_by_user(api_get_user_id(),0); + $groups = array(); foreach ($temp_user_groups as $user_group) { $groups = array_merge($groups, array($user_group['id'])); - $groups = array_merge($groups, GroupPortalManager::get_parent_groups($user_group['id'])); + $groups = array_merge($groups, $userGroup->get_parent_groups($user_group['id'])); } - //checks if tables exists to not break platform not updated - $ann_group_db_ok =false; - if( Database::num_rows(Database::query("SHOW TABLES LIKE 'announcement_rel_group'")) > 0) - $ann_group_db_ok =true; $groups_string = '('.implode($groups,',').')'; $now = api_get_utc_datetime(); - $sql = "SELECT *, DATE_FORMAT(date_start,'%d-%m-%Y %h:%i:%s') AS display_date" - ." FROM $db_table" - ." WHERE (lang='$user_selected_language'" - ." OR lang IS NULL)" - ." AND (('$now' BETWEEN date_start AND date_end) OR date_end='0000-00-00') "; + $sql = "SELECT *, DATE_FORMAT(date_start,'%d-%m-%Y %h:%i:%s') AS display_date + FROM $db_table + WHERE + (lang='$user_selected_language' OR lang IS NULL) AND + (('$now' BETWEEN date_start AND date_end) OR date_end='0000-00-00') "; switch ($visible) { case self::VISIBLE_GUEST : @@ -51,11 +49,12 @@ class SystemAnnouncementManager break; } - if (count($groups) > 0 and $ann_group_db_ok ) { - $sql .= " OR id IN (SELECT announcement_id FROM $tbl_announcement_group " - ." WHERE group_id in $groups_string) "; + if (count($groups) > 0) { + $sql .= " OR id IN ( + SELECT announcement_id FROM $tbl_announcement_group + WHERE group_id in $groups_string + ) "; } - global $_configuration; $current_access_url_id = 1; if (api_is_multiple_url_enabled()) { $current_access_url_id = api_get_current_access_url_id(); @@ -109,25 +108,25 @@ class SystemAnnouncementManager { $user_selected_language = api_get_interface_language(); $start = intval($start); - + $userGroup = new UserGroup(); $tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS); - $temp_user_groups = GroupPortalManager::get_groups_by_user(api_get_user_id(),0); - $groups =array(); + $temp_user_groups = $userGroup->get_groups_by_user(api_get_user_id(),0); + $groups = array(); foreach ($temp_user_groups as $user_group) { - $groups = array_merge($groups, array($user_group['id'])); - $groups = array_merge($groups, GroupPortalManager::get_parent_groups($user_group['id'])); + $groups = array_merge($groups, array($user_group['id'])); + $groups = array_merge($groups, $userGroup->get_parent_groups($user_group['id'])); } - //checks if tables exists to not break platform not updated - $ann_group_db_ok =false; - if( Database::num_rows(Database::query("SHOW TABLES LIKE 'announcement_rel_group'")) > 0) - $ann_group_db_ok =true; + + // Checks if tables exists to not break platform not updated $groups_string = '('.implode($groups,',').')'; $db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); $now = api_get_utc_datetime(); $sql = "SELECT * FROM ".$db_table." - WHERE ( lang = '$user_selected_language' OR lang IS NULL) AND ( '$now' >= date_start AND '$now' <= date_end) "; + WHERE + (lang = '$user_selected_language' OR lang IS NULL) AND + ( '$now' >= date_start AND '$now' <= date_end) "; switch ($visible) { case self::VISIBLE_GUEST : @@ -141,9 +140,11 @@ class SystemAnnouncementManager break; } - if (count($groups) > 0 and $ann_group_db_ok ) { - $sql .= " OR id IN (SELECT announcement_id FROM $tbl_announcement_group - WHERE group_id in $groups_string) "; + if (count($groups) > 0) { + $sql .= " OR id IN ( + SELECT announcement_id FROM $tbl_announcement_group + WHERE group_id in $groups_string + ) "; } if (api_is_multiple_url_enabled()) { @@ -249,7 +250,6 @@ class SystemAnnouncementManager } } - global $_configuration; $current_access_url_id = 1; if (api_is_multiple_url_enabled()) { $current_access_url_id = api_get_current_access_url_id(); @@ -257,10 +257,10 @@ class SystemAnnouncementManager $sql .= " AND access_url_id = '$current_access_url_id' "; - $sql .= 'LIMIT '.$start.',21'; + $sql .= 'LIMIT '.$start.', 21'; $announcements = Database::query($sql); $i = 0; - while($rows = Database::fetch_array($announcements)) { + while ($rows = Database::fetch_array($announcements)) { $i++; } return $i; @@ -335,7 +335,12 @@ class SystemAnnouncementManager Display :: display_normal_message(get_lang('InvalidStartDate')); return false; } - if (($date_end_to_compare[1] || $date_end_to_compare[2] || $date_end_to_compare[0]) && !checkdate($date_end_to_compare[1], $date_end_to_compare[2], $date_end_to_compare[0])) { + + if (($date_end_to_compare[1] || + $date_end_to_compare[2] || + $date_end_to_compare[0]) && + !checkdate($date_end_to_compare[1], $date_end_to_compare[2], $date_end_to_compare[0]) + ) { Display :: display_normal_message(get_lang('InvalidEndDate')); return false; } @@ -344,8 +349,8 @@ class SystemAnnouncementManager return false; } - $start = api_get_utc_datetime($date_start); - $end = api_get_utc_datetime($date_end); + $start = api_get_utc_datetime($date_start); + $end = api_get_utc_datetime($date_end); $title = Database::escape_string($title); $content = Database::escape_string($content); @@ -365,17 +370,31 @@ class SystemAnnouncementManager VALUES ('".$title."','".$content."','".$start."','".$end."','".$visible_teacher."','".$visible_student."','".$visible_guest."',".$langsql.", ".$current_access_url_id.")"; if ($sendEmailTest) { - SystemAnnouncementManager::send_system_announcement_by_email($title, $content,$visible_teacher, $visible_student, $lang, true); + SystemAnnouncementManager::send_system_announcement_by_email( + $title, + $content, + $visible_teacher, + $visible_student, + $lang, + true + ); } else { if ($send_mail == 1) { - SystemAnnouncementManager::send_system_announcement_by_email($title, $content,$visible_teacher, $visible_student, $lang); + SystemAnnouncementManager::send_system_announcement_by_email( + $title, + $content, + $visible_teacher, + $visible_student, + $lang + ); } } + $res = Database::query($sql); if ($res === false) { - Debug::log_s(mysql_error()); return false; } + $id = null; if ($add_to_calendar) { $agenda = new Agenda(); @@ -393,30 +412,39 @@ class SystemAnnouncementManager } /** - * Makes the announcement id visible only for groups in groups_array - * @param int announcement id - * @param array array of group id - **/ + * Makes the announcement id visible only for groups in groups_array + * @param int announcement id + * @param array array of group id + **/ public static function announcement_for_groups($announcement_id, $group_array) { - $tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS); + $tbl_announcement_group = Database:: get_main_table( + TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS + ); //first delete all group associations for this announcement - $res = Database::query("DELETE FROM $tbl_announcement_group where announcement_id=".intval($announcement_id)); + $res = Database::query( + "DELETE FROM $tbl_announcement_group WHERE announcement_id=".intval( + $announcement_id + ) + ); + if ($res === false) { - Debug::log_s(mysql_error()); - return false; + return false; } foreach ($group_array as $group_id) { - if (intval($group_id) != 0 ) { - $res = Database::query("INSERT into $tbl_announcement_group set announcement_id=".intval($announcement_id) - .", group_id=".intval($group_id)); - if ($res === false) { - Debug::log_s(mysql_error()); - return false; + if (intval($group_id) != 0) { + $sql = "INSERT INTO $tbl_announcement_group SET + announcement_id=".intval($announcement_id).", + group_id=".intval($group_id); + $res = Database::query($sql); + if ($res === false) { + + return false; + } } - } } + return true; } @@ -428,12 +456,17 @@ class SystemAnnouncementManager public static function get_announcement_groups($announcement_id) { $tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS); - $tbl_group = Database :: get_main_table(TABLE_MAIN_GROUP); + $tbl_group = Database :: get_main_table(TABLE_USERGROUP); //first delete all group associations for this announcement - $res = Database::query("SELECT g.id as group_id , g.name as group_name FROM $tbl_group g , $tbl_announcement_group ag" - ." WHERE announcement_id=".intval($announcement_id) - ." AND ag.group_id = g.id"); + $sql = "SELECT + g.id as group_id, + g.name as group_name + FROM $tbl_group g , $tbl_announcement_group ag + WHERE + announcement_id =".intval($announcement_id)." AND + ag.group_id = g.id"; + $res = Database::query($sql); $groups = Database::fetch_array($res); return $groups; } @@ -478,7 +511,11 @@ class SystemAnnouncementManager return false; } - if (($date_end_to_compare[1] || $date_end_to_compare[2] || $date_end_to_compare[0]) && !checkdate($date_end_to_compare[1], $date_end_to_compare[2], $date_end_to_compare[0])) { + if (($date_end_to_compare[1] || + $date_end_to_compare[2] || + $date_end_to_compare[0]) && + !checkdate($date_end_to_compare[1], $date_end_to_compare[2], $date_end_to_compare[0]) + ) { Display :: display_normal_message(get_lang('InvalidEndDate')); return false; } @@ -503,15 +540,28 @@ class SystemAnnouncementManager $sql .= " visible_teacher = '".$visible_teacher."', visible_student = '".$visible_student."', visible_guest = '".$visible_guest."' , access_url_id = '".api_get_current_access_url_id()."' WHERE id = ".$id; if ($sendEmailTest) { - SystemAnnouncementManager::send_system_announcement_by_email($title, $content, null, null, $lang, $sendEmailTest); + SystemAnnouncementManager::send_system_announcement_by_email( + $title, + $content, + null, + null, + $lang, + $sendEmailTest + ); } else { if ($send_mail==1) { - SystemAnnouncementManager::send_system_announcement_by_email($title, $content, $visible_teacher, $visible_student, $lang); + SystemAnnouncementManager::send_system_announcement_by_email( + $title, + $content, + $visible_teacher, + $visible_student, + $lang + ); } } $res = Database::query($sql); if ($res === false) { - Debug::log_s(mysql_error()); + return false; } return true; @@ -529,7 +579,7 @@ class SystemAnnouncementManager $sql = "DELETE FROM ".$db_table." WHERE id =".$id; $res = Database::query($sql); if ($res === false) { - Debug::log_s(mysql_error()); + return false; } return true; @@ -552,14 +602,15 @@ class SystemAnnouncementManager /** * Change the visibility of an announcement * @param int $announcement_id - * @param int $user For who should the visibility be changed (possible values are VISIBLE_TEACHER, VISIBLE_STUDENT, VISIBLE_GUEST) + * @param int $user For who should the visibility be changed + * (possible values are VISIBLE_TEACHER, VISIBLE_STUDENT, VISIBLE_GUEST) * @return bool True on success, false on failure */ public static function set_visibility($announcement_id, $user, $visible) { - $db_table = Database::get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); - $visible = intval($visible); - $announcement_id = intval($announcement_id); + $db_table = Database::get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); + $visible = intval($visible); + $announcement_id = intval($announcement_id); if (!in_array($user, array(self::VISIBLE_GUEST, self::VISIBLE_STUDENT, self::VISIBLE_TEACHER))) { return false; @@ -567,10 +618,10 @@ class SystemAnnouncementManager $field = ($user == self::VISIBLE_TEACHER ? 'visible_teacher' : ($user == self::VISIBLE_STUDENT ? 'visible_student' : 'visible_guest')); - $sql = "UPDATE ".$db_table." SET ".$field." = '".$visible."' WHERE id='".$announcement_id."'"; + $sql = "UPDATE ".$db_table." SET ".$field." = '".$visible."' + WHERE id='".$announcement_id."'"; $res = Database::query($sql); if ($res === false) { - Debug::log_s(mysql_error()); return false; } return true; @@ -659,7 +710,9 @@ class SystemAnnouncementManager $now = api_get_utc_datetime(); $sql = "SELECT * FROM " . $table . " - WHERE ( lang = '$user_selected_language' OR lang IS NULL) AND ( '$now' >= date_start AND '$now' <= date_end) "; + WHERE + (lang = '$user_selected_language' OR lang IS NULL) AND + ('$now' >= date_start AND '$now' <= date_end) "; switch ($visible) { case self::VISIBLE_GUEST : diff --git a/main/inc/lib/template.lib.php b/main/inc/lib/template.lib.php index 4395e3a5e5..c64604cb23 100755 --- a/main/inc/lib/template.lib.php +++ b/main/inc/lib/template.lib.php @@ -869,25 +869,23 @@ class Template $number_of_new_messages_of_friend = SocialManager::get_message_number_invitation_by_user_id( api_get_user_id() ); - $group_pending_invitations = GroupPortalManager::get_groups_by_user( + $usergroup = new UserGroup(); + $group_pending_invitations = $usergroup->get_groups_by_user( api_get_user_id(), GROUP_USER_PERMISSION_PENDING_INVITATION, false ); - $group_pending_invitations = 0; + $group_pending_invitations = 0; if (!empty($group_pending_invitations)) { $group_pending_invitations = count($group_pending_invitations); } - $total_invitations = intval($number_of_new_messages_of_friend) + $group_pending_invitations + intval( - $count_unread_message - ); + $total_invitations = intval($number_of_new_messages_of_friend) + $group_pending_invitations + intval($count_unread_message); } $total_invitations = (!empty($total_invitations) ? Display::badge($total_invitations) : null); $this->assign('user_notifications', $total_invitations); - - //Block Breadcrumb + // Block Breadcrumb $breadcrumb = return_breadcrumb($interbreadcrumb, $language_file, $nameTools); $this->assign('breadcrumb', $breadcrumb); diff --git a/main/inc/lib/usergroup.lib.php b/main/inc/lib/usergroup.lib.php index 920f917703..2fc6679367 100755 --- a/main/inc/lib/usergroup.lib.php +++ b/main/inc/lib/usergroup.lib.php @@ -289,7 +289,7 @@ class UserGroup extends Model if ($this->useMultipleUrl) { $urlId = api_get_current_access_url_id(); - $sql = "SELECT DISTINCT u.id, name + $sql = "SELECT DISTINCT u.* FROM {$this->table} u INNER JOIN {$this->access_url_rel_usergroup} a ON (a.usergroup_id = u.id) @@ -297,7 +297,7 @@ class UserGroup extends Model ON (u.id = urc.usergroup_id AND course_id = $course_id) "; } else { - $sql = "SELECT DISTINCT u.id, name + $sql = "SELECT DISTINCT u.* FROM {$this->table} u LEFT OUTER JOIN {$this->usergroup_rel_course_table} urc ON (u.id = urc.usergroup_id AND course_id = $course_id) @@ -398,7 +398,7 @@ class UserGroup extends Model * @param int $id user group id * @return array with a list of user ids */ - public function get_users_by_usergroup($id = null) + public function get_users_by_usergroup($id = null, $relation = '') { if (empty($id)) { $conditions = array(); @@ -416,6 +416,25 @@ class UserGroup extends Model return $array; } + /** + * Gets a list of user ids by user group + * @param int $id user group id + * @return array with a list of user ids + */ + public function getUsersByUsergroupAndRelation($id, $relation = '') + { + $conditions = array('where' => array('usergroup_id = ? AND relation_type = ?' => [$id, $relation])); + $results = Database::select('user_id', $this->usergroup_rel_user_table, $conditions, true); + $array = array(); + if (!empty($results)) { + foreach ($results as $row) { + $array[] = $row['user_id']; + } + } + + return $array; + } + /** * @param int $userId * @@ -615,10 +634,11 @@ class UserGroup extends Model /** * Subscribe users to a group * @param int $usergroup_id usergroup id - * @param array $list list of user ids + * @param array $list list of user ids * * @param bool $delete_users_not_present_in_list + * @param array $relationType */ - public function subscribe_users_to_usergroup($usergroup_id, $list, $delete_users_not_present_in_list = true) + public function subscribe_users_to_usergroup($usergroup_id, $list, $delete_users_not_present_in_list = true, $relationType = '') { $current_list = self::get_users_by_usergroup($usergroup_id); $course_list = self::get_courses_by_usergroup($usergroup_id); @@ -661,14 +681,14 @@ class UserGroup extends Model } Database::delete( $this->usergroup_rel_user_table, - array('usergroup_id = ? AND user_id = ?' => array($usergroup_id, $user_id)) + array('usergroup_id = ? AND user_id = ? AND relation_type = ?' => array($usergroup_id, $user_id, $relationType)) ); } } // Adding new relationships if (!empty($new_items)) { - //Adding sessions + // Adding sessions if (!empty($session_list)) { foreach ($session_list as $session_id) { SessionManager::suscribe_users_to_session($session_id, $new_items, null, false); @@ -683,7 +703,7 @@ class UserGroup extends Model CourseManager::subscribe_user($user_id, $course_info['code']); } } - $params = array('user_id' => $user_id, 'usergroup_id' => $usergroup_id); + $params = array('user_id' => $user_id, 'usergroup_id' => $usergroup_id, 'relation_type' => $relationType); Database::insert($this->usergroup_rel_user_table, $params); } } @@ -704,6 +724,7 @@ class UserGroup extends Model $sql = "SELECT * FROM $this->table WHERE name = '".Database::escape_string($name)."'"; } $res = Database::query($sql); + return Database::num_rows($res) != 0; } @@ -809,7 +830,9 @@ class UserGroup extends Model { $firstLetter = Database::escape_string($firstLetter); $sql = "SELECT id, name FROM $this->table - WHERE name LIKE '".$firstLetter."%' OR name LIKE '".api_strtolower($firstLetter)."%' + WHERE + name LIKE '".$firstLetter."%' OR + name LIKE '".api_strtolower($firstLetter)."%' ORDER BY name DESC "; $result = Database::query($sql); @@ -842,8 +865,8 @@ class UserGroup extends Model */ public function save($params, $show_query = false) { - $values['updated_at'] = $values['created_at'] = new \DateTime(); - $values['group_type'] = isset($values['group_type']) ? self::SOCIAL_CLASS : self::NORMAL_CLASS; + $params['updated_at'] = $params['created_at'] = new \DateTime(); + $params['group_type'] = isset($params['group_type']) ? self::SOCIAL_CLASS : self::NORMAL_CLASS; $groupExists = $this->usergroup_exists(trim($params['name'])); if ($groupExists == false) { @@ -854,11 +877,13 @@ class UserGroup extends Model $this->subscribeToUrl($id, api_get_current_access_url_id()); } - $this->add_user_to_group( - api_get_user_id(), - $id, - $params['relation_type'] - ); + if ($params['group_type'] == self::SOCIAL_CLASS) { + $this->add_user_to_group( + api_get_user_id(), + $id, + $params['relation_type'] + ); + } $picture = isset($_FILES['picture']) ? $_FILES['picture'] : null; $picture = $this->manageFileUpload($id, $picture); if ($picture) { @@ -868,7 +893,6 @@ class UserGroup extends Model ); $this->update($params); } - } return $id; @@ -944,8 +968,8 @@ class UserGroup extends Model * @return string/bool Returns the resulting common file name of created images which usually should be stored in database. * When an image is removed the function returns an empty string. In case of internal error or negative validation it returns FALSE. */ - public function update_group_picture($group_id, $file = null, $source_file = null) { - + public function update_group_picture($group_id, $file = null, $source_file = null) + { // Validation 1. if (empty($group_id)) { return false; @@ -1015,7 +1039,6 @@ class UserGroup extends Model } // Storing the new photos in 4 versions with various sizes. - global $app; /*$image->resize( // get original size and set width (widen) or height (heighten). @@ -1054,7 +1077,6 @@ class UserGroup extends Model return $filename; } - /** * @return mixed */ @@ -1063,19 +1085,35 @@ class UserGroup extends Model return $this->groupType; } - /** * @param int $id * @return bool|void */ public function delete($id) { - $result = parent::delete($id); if ($this->useMultipleUrl) { if ($result) { $this->unsubscribeToUrl($id, api_get_current_access_url_id()); } } + + $sql = "DELETE FROM $this->usergroup_rel_user_table + WHERE usergroup_id = $id"; + Database::query($sql); + + $sql = "DELETE FROM $this->usergroup_rel_course_table + WHERE usergroup_id = $id"; + Database::query($sql); + + $sql = "DELETE FROM $this->usergroup_rel_session_table + WHERE usergroup_id = $id"; + Database::query($sql); + + /*$sql = "DELETE FROM $this->usergroup_rel_ + WHERE usergroup_id = $id"; + Database::query($sql);*/ + + $result = parent::delete($id); } /** @@ -1303,8 +1341,8 @@ class UserGroup extends Model * @param bool If we want that the function returns the /main/img/unknown.jpg image set it at true * @return array Array of 2 elements: 'dir' and 'file' which contain the dir and file as the name implies if image does not exist it will return the unknow image if anonymous parameter is true if not it returns an empty er's */ - public function get_group_picture_path_by_id($id, $type = 'none', $preview = false, $anonymous = false) { - + public function get_group_picture_path_by_id($id, $type = 'none', $preview = false, $anonymous = false) + { switch ($type) { case 'system': // Base: absolute system path. $base = api_get_path(SYS_UPLOAD_PATH); @@ -1422,7 +1460,6 @@ class UserGroup extends Model */ public function is_group_member($group_id, $user_id = 0) { - if (api_is_platform_admin()) { return true; } @@ -1456,7 +1493,9 @@ class UserGroup extends Model $return_value = 0; if (!empty($user_id) && !empty($group_id)) { $sql = "SELECT relation_type FROM $table_group_rel_user - WHERE usergroup_id = ".intval($group_id)." AND user_id = ".intval($user_id)." "; + WHERE + usergroup_id = ".intval($group_id)." AND + user_id = ".intval($user_id)." "; $result = Database::query($sql); if (Database::num_rows($result)>0) { $row = Database::fetch_array($result,'ASSOC'); @@ -1467,6 +1506,36 @@ class UserGroup extends Model return $return_value; } + /** + * @param int $userId + * @param int $groupId + * @return string + */ + public function getUserRoleToString($userId, $groupId) + { + $role = self::get_user_group_role($userId, $groupId); + $roleToString = ''; + + switch ($role) { + case GROUP_USER_PERMISSION_ADMIN: + $roleToString = get_lang('Admin'); + break; + case GROUP_USER_PERMISSION_READER: + $roleToString = get_lang('Reader'); + break; + case GROUP_USER_PERMISSION_PENDING_INVITATION: + $roleToString = get_lang('PendingInvitation'); + break; + case GROUP_USER_PERMISSION_MODERATOR: + $roleToString = get_lang('Moderator'); + break; + case GROUP_USER_PERMISSION_HRM: + $roleToString = get_lang('Drh'); + break; + } + + return $roleToString; + } /** * Add a group of users into a group of URLs @@ -1493,10 +1562,11 @@ class UserGroup extends Model relation_type = ".intval($relation_type); $result = Database::query($sql); - if ($result) - $result_array[$group_id][$user_id]=1; - else - $result_array[$group_id][$user_id]=0; + if ($result) { + $result_array[$group_id][$user_id] = 1; + } else { + $result_array[$group_id][$user_id] = 0; + } } } } @@ -1581,17 +1651,16 @@ class UserGroup extends Model * * @author Julio Montoya * */ - public function get_groups_by_user($user_id = '', $relation_type = GROUP_USER_PERMISSION_READER, $with_image = false) + public function get_groups_by_user($user_id = '', $relation_type = GROUP_USER_PERMISSION_READER, $with_image = false) { $table_group_rel_user = $this->usergroup_rel_user_table; $tbl_group = $this->table; - $user_id = intval($user_id); if ($relation_type == 0) { - $where_relation_condition = ''; + $relationCondition = ''; } else { $relation_type = intval($relation_type); - $where_relation_condition = "AND gu.relation_type = $relation_type "; + $relationCondition = " AND gu.relation_type = $relation_type "; } $sql = "SELECT @@ -1606,9 +1675,8 @@ class UserGroup extends Model WHERE g.group_type = ".self::SOCIAL_CLASS." AND gu.user_id = $user_id - $where_relation_condition - ORDER BY created_at desc "; - + $relationCondition + ORDER BY created_at DESC "; $result = Database::query($sql); $array = array(); if (Database::num_rows($result) > 0) { @@ -1663,6 +1731,7 @@ class UserGroup extends Model } $array[$row['id']] = $row; } + return $array; } @@ -1674,8 +1743,8 @@ class UserGroup extends Model * */ public function get_groups_by_age($num = 6, $with_image = true) { - $table_group_rel_user = $this->usergroup_rel_user_table; - $tbl_group = $this->table; + $table_group_rel_user = $this->usergroup_rel_user_table; + $tbl_group = $this->table; if (empty($num)) { $num = 6; @@ -1691,7 +1760,8 @@ class UserGroup extends Model g.description, g.id FROM $tbl_group g - INNER JOIN $table_group_rel_user gu ON gu.usergroup_id = g.id + INNER JOIN $table_group_rel_user gu + ON gu.usergroup_id = g.id $where_relation_condition ORDER BY created_at DESC LIMIT $num "; @@ -1730,9 +1800,9 @@ class UserGroup extends Model $limit = null, $image_conf = array('size' => USER_IMAGE_SIZE_MEDIUM, 'height' => 80) ) { - $table_group_rel_user = $this->usergroup_rel_user_table; - $tbl_user = Database::get_main_table(TABLE_MAIN_USER); - $group_id = intval($group_id); + $table_group_rel_user = $this->usergroup_rel_user_table; + $tbl_user = Database::get_main_table(TABLE_MAIN_USER); + $group_id = intval($group_id); if (empty($group_id)){ return array(); @@ -1740,8 +1810,8 @@ class UserGroup extends Model $limit_text = ''; if (isset($from) && isset($limit)) { - $from = intval($from); - $limit = intval($limit); + $from = intval($from); + $limit = intval($limit); $limit_text = "LIMIT $from, $limit"; } @@ -1759,10 +1829,14 @@ class UserGroup extends Model } $sql = "SELECT picture_uri as image, u.user_id, u.firstname, u.lastname, relation_type - FROM $tbl_user u INNER JOIN $table_group_rel_user gu + FROM $tbl_user u + INNER JOIN $table_group_rel_user gu ON (gu.user_id = u.user_id) - WHERE gu.usergroup_id= $group_id $where_relation_condition - ORDER BY relation_type, firstname $limit_text"; + WHERE + gu.usergroup_id= $group_id + $where_relation_condition + ORDER BY relation_type, firstname + $limit_text"; $result = Database::query($sql); $array = array(); @@ -1780,7 +1854,8 @@ class UserGroup extends Model } /** - * Gets all the members of a group no matter the relationship for more specifications use get_users_by_group + * Gets all the members of a group no matter the relationship for + * more specifications use get_users_by_group * @param int group id * @return array */ @@ -1887,7 +1962,11 @@ class UserGroup extends Model if (!empty($links)) { $html .= ''; @@ -1896,15 +1975,28 @@ class UserGroup extends Model return $html; } - function delete_topic($group_id, $topic_id) { + public function delete_topic($group_id, $topic_id) + { $table_message = Database::get_main_table(TABLE_MESSAGE); $topic_id = intval($topic_id); $group_id = intval($group_id); - $sql = "UPDATE $table_message SET msg_status=3 WHERE group_id = $group_id AND (id = '$topic_id' OR parent_id = $topic_id) "; + $sql = "UPDATE $table_message SET + msg_status = 3 + WHERE + group_id = $group_id AND + (id = '$topic_id' OR parent_id = $topic_id) + "; Database::query($sql); } - public function get_groups_by_user_count($user_id = '', $relation_type = GROUP_USER_PERMISSION_READER, $with_image = false) { + /** + * @param string $user_id + * @param string $relation_type + * @param bool $with_image + * @return int + */ + public function get_groups_by_user_count($user_id = '', $relation_type = GROUP_USER_PERMISSION_READER, $with_image = false) + { $table_group_rel_user = $this->usergroup_rel_user_table; $tbl_group = $this->table; $user_id = intval($user_id); @@ -1919,7 +2011,8 @@ class UserGroup extends Model $sql = "SELECT count(g.id) as count FROM $tbl_group g INNER JOIN $table_group_rel_user gu - ON gu.usergroup_id = g.id WHERE gu.user_id = $user_id $where_relation_condition "; + ON gu.usergroup_id = g.id + WHERE gu.user_id = $user_id $where_relation_condition "; $result = Database::query($sql); if (Database::num_rows($result) > 0) { @@ -2005,6 +2098,178 @@ class UserGroup extends Model return $return; } + /** + * @param int $group_id + * @return array + */ + public static function get_parent_groups($group_id) + { + $t_rel_group = Database :: get_main_table(TABLE_USERGROUP_REL_USERGROUP); + $max_level = 10; + $select_part = "SELECT "; + $cond_part = ''; + for ($i = 1; $i <= $max_level; $i++) { + $g_number = $i; + $rg_number = $i - 1; + if ($i == $max_level) { + $select_part .= "rg$rg_number.group_id as id_$rg_number "; + } else { + $select_part .="rg$rg_number.group_id as id_$rg_number, "; + } + if ($i == 1) { + $cond_part .= "FROM $t_rel_group rg0 LEFT JOIN $t_rel_group rg$i on rg$rg_number.group_id = rg$i.subgroup_id "; + } else { + $cond_part .= " LEFT JOIN $t_rel_group rg$i on rg$rg_number.group_id = rg$i.subgroup_id "; + } + } + $sql = $select_part.' '.$cond_part."WHERE rg0.subgroup_id='$group_id'"; + $res = Database::query($sql); + $temp_arr = Database::fetch_array($res, 'NUM'); + $toReturn = array(); + if (is_array($temp_arr)) { + foreach ($temp_arr as $elt) { + if (isset($elt)) { + $toReturn[] = $elt; + } + } + } + + return $toReturn; + } + + /** + * Get the group member list by a user and his group role + * @param int $userId The user ID + * @param int $relationType Optional. The relation type. GROUP_USER_PERMISSION_ADMIN by default + * @param boolean $includeSubgroupsUsers Optional. Whether include the users from subgroups + * @return array + */ + public static function getGroupUsersByUser( + $userId, + $relationType = GROUP_USER_PERMISSION_ADMIN, + $includeSubgroupsUsers = true + ) { + $userId = intval($userId); + + $groups = self::get_groups_by_user($userId, $relationType); + + $groupsId = array_keys($groups); + $subgroupsId = []; + $userIdList = []; + + if ($includeSubgroupsUsers) { + foreach ($groupsId as $groupId) { + $subgroupsId = array_merge($subgroupsId, self::getGroupsByDepthLevel($groupId)); + } + + $groupsId = array_merge($groupsId, $subgroupsId); + } + + $groupsId = array_unique($groupsId); + + if (empty($groupsId)) { + return []; + } + + foreach ($groupsId as $groupId) { + $groupUsers = GroupPortalManager::get_users_by_group($groupId); + + if (empty($groupUsers)) { + continue; + } + + foreach ($groupUsers as $member) { + if ($member['user_id'] == $userId) { + continue; + } + + $userIdList[] = intval($member['user_id']); + } + } + + return array_unique($userIdList); + } + + /** + * Get the subgroups ID from a group. + * The default $levels value is 10 considering it as a extensive level of depth + * @param int $groupId The parent group ID + * @param int $levels The depth levels + * @return array The list of ID + */ + public static function getGroupsByDepthLevel($groupId, $levels = 10) + { + $groups = array(); + $groupId = intval($groupId); + + $groupTable = Database::get_main_table(TABLE_USERGROUP); + $groupRelGroupTable = Database :: get_main_table(TABLE_USERGROUP_REL_USERGROUP); + + $select = "SELECT "; + $from = "FROM $groupTable g1 "; + + for ($i = 1; $i <= $levels; $i++) { + $tableIndexNumber = $i; + $tableIndexJoinNumber = $i - 1; + + $select .= "g$i.id as id_$i "; + + $select .= ($i != $levels ? ", " : null); + + if ($i == 1) { + $from .= "INNER JOIN $groupRelGroupTable gg0 ON g1.id = gg0.subgroup_id and gg0.group_id = $groupId "; + } else { + $from .= "LEFT JOIN $groupRelGroupTable gg$tableIndexJoinNumber "; + $from .= " ON g$tableIndexJoinNumber.id = gg$tableIndexJoinNumber.group_id "; + $from .= "LEFT JOIN $groupTable g$tableIndexNumber "; + $from .= " ON gg$tableIndexJoinNumber.subgroup_id = g$tableIndexNumber.id "; + } + } + + $result = Database::query("$select $from"); + + while ($item = Database::fetch_assoc($result)) { + foreach ($item as $groupId) { + if (!empty($groupId)) { + $groups[] = $groupId; + } + } + } + + return array_map('intval', $groups); + } + /** + * Set a parent group + * @param int $group_id + * @param int $parent_group_id if 0, we delete the parent_group association + * @param int $relation_type + * @return resource + **/ + public static function set_parent_group($group_id, $parent_group_id, $relation_type = 1) + { + $table = Database :: get_main_table(TABLE_USERGROUP_REL_USERGROUP); + $group_id = intval($group_id); + $parent_group_id = intval($parent_group_id); + if ($parent_group_id == 0) { + $sql = "DELETE FROM $table WHERE subgroup_id = $group_id"; + } else { + $sql = "SELECT group_id FROM $table WHERE subgroup_id = $group_id"; + $res = Database::query($sql); + if (Database::num_rows($res) == 0) { + $sql = "INSERT INTO $table SET + group_id = $parent_group_id, + subgroup_id = $group_id, + relation_type = $relation_type"; + } else { + $sql = "UPDATE $table SET + group_id = $parent_group_id, + relation_type = $relation_type + WHERE subgroup_id = $group_id"; + } + } + $res = Database::query($sql); + return $res; + } } diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index e83bc540fd..268e55df37 100755 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -595,11 +595,12 @@ class UserManager } if (api_get_setting('allow_social_tool') == 'true') { + $userGroup = new UserGroup(); //Delete user from portal groups - $group_list = GroupPortalManager::get_groups_by_user($user_id); + $group_list = $userGroup->get_groups_by_user($user_id); if (!empty($group_list)) { foreach ($group_list as $group_id => $data) { - GroupPortalManager::delete_user_rel_group($user_id, $group_id); + $userGroup->delete_user_rel_group($user_id, $group_id); } } diff --git a/main/inc/lib/userportal.lib.php b/main/inc/lib/userportal.lib.php index 4d1bffe8b9..ce2cb80dfd 100755 --- a/main/inc/lib/userportal.lib.php +++ b/main/inc/lib/userportal.lib.php @@ -926,17 +926,23 @@ class IndexManager return; } + $userGroup = new UserGroup(); + $profile_content = ''; $friend_html.='
    '; $social_right_content .= $friend_html; } diff --git a/main/social/group_edit.php b/main/social/group_edit.php index 9fab5978ac..e74b28dd43 100755 --- a/main/social/group_edit.php +++ b/main/social/group_edit.php @@ -50,7 +50,7 @@ $form->setDefaults($group_data); if ($form->validate()) { $group = $form->exportValues(); $group['id'] = $group_id; - $group['type'] = $usergroup::SOCIAL_CLASS; + $group['group_type'] = $usergroup::SOCIAL_CLASS; $usergroup->update($group); Display::addFlash(Display::return_message(get_lang('GroupUpdated'))); header('Location: group_view.php?id='.$group_id); diff --git a/main/social/group_invitation.php b/main/social/group_invitation.php index d5683256c2..7852e40563 100755 --- a/main/social/group_invitation.php +++ b/main/social/group_invitation.php @@ -1,5 +1,6 @@ @@ -12,30 +13,20 @@ require_once '../inc/global.inc.php'; api_block_anonymous_users(); -$xajax = new xajax(); -$xajax -> registerFunction ('search_users'); - -// setting the section (for the tabs) -$this_section = SECTION_PLATFORM_ADMIN; - // setting breadcrumbs $this_section = SECTION_SOCIAL; // Database Table Definitions -$tbl_user = Database::get_main_table(TABLE_MAIN_USER); +$tbl_user = Database::get_main_table(TABLE_MAIN_USER); $tbl_group_rel_user = Database::get_main_table(TABLE_USERGROUP_REL_USER); // setting the name of the tool $tool_name = get_lang('SubscribeUsersToGroup'); $group_id = intval($_REQUEST['id']); -$add_type = 'multiple'; -if(isset($_REQUEST['add_type']) && $_REQUEST['add_type']!=''){ - $add_type = Security::remove_XSS($_REQUEST['add_type']); -} $usergroup = new UserGroup(); -//todo @this validation could be in a function in group_portal_manager +// todo @this validation could be in a function in group_portal_manager if (empty($group_id)) { api_not_allowed(); } else { @@ -49,474 +40,166 @@ if (empty($group_id)) { } } -$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups')); +$interbreadcrumb[] = array('url' =>'groups.php','name' => get_lang('Groups')); $interbreadcrumb[] = array('url' => 'group_view.php?id='.$group_id, 'name' => $group_info['name']); -$interbreadcrumb[]= array ('url' =>'#', 'name' => get_lang('SubscribeUsersToGroup')); - -function search_users($needle,$type) { - global $tbl_user,$tbl_group_rel_user,$group_id; - $xajax_response = new XajaxResponse(); - $return = ''; - - if (!empty($needle) && !empty($type)) { +$interbreadcrumb[] = array('url' =>'#', 'name' => get_lang('SubscribeUsersToGroup')); - // 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'; - $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 usergroup_id ="'.(int)$group_id.'"'; - $res = Database::query($sql); - $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; - } - if (api_is_multiple_url_enabled()) { - $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); - $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; -} +$form_sent = 0; +$errorMsg = $firstLetterUser = $firstLetterSession = ''; +$UserList = $SessionList = array(); +$users = $sessions = array(); -$xajax -> processRequests(); - -$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/'); -$htmlHeadXtra[] = ''; - -$form_sent=0; -$errorMsg=$firstLetterUser=$firstLetterSession=''; -$UserList=$SessionList=array(); -$users=$sessions=array(); - -//Display :: display_header($tool_name, 'Groups'); $content = null; if (isset($_POST['form_sent']) && $_POST['form_sent']) { $form_sent = $_POST['form_sent']; - $firstLetterUser = $_POST['firstLetterUser']; - $firstLetterSession = $_POST['firstLetterSession']; - $user_list = $_POST['sessionUsersList']; + $user_list = isset($_POST['invitation']) ? $_POST['invitation'] : null; $group_id = intval($_POST['id']); if (!is_array($user_list)) { - $user_list=array(); + $user_list = array(); } + if ($form_sent == 1) { //invite this users - $result = $usergroup->add_users_to_groups($user_list, array($group_id), GROUP_USER_PERMISSION_PENDING_INVITATION); - $title = get_lang('YouAreInvitedToGroup').' '.$group_info['name']; - $content = get_lang('YouAreInvitedToGroupContent').' '.$group_info['name'].'
    '; - $content .= get_lang('ToSubscribeClickInTheLinkBelow').'
    '; - $content .= ''.get_lang('Subscribe').''; + $result = $usergroup->add_users_to_groups( + $user_list, + array($group_id), + GROUP_USER_PERMISSION_PENDING_INVITATION + ); + $title = get_lang('YouAreInvitedToGroup').' '.$group_info['name']; + $content = get_lang('YouAreInvitedToGroupContent').' '.$group_info['name'].'
    '; + $content .= get_lang('ToSubscribeClickInTheLinkBelow').'
    '; + $content .= ''. + get_lang('Subscribe').''; if (is_array($user_list) && count($user_list) > 0) { //send invitation message - foreach($user_list as $user_id ){ - $result = MessageManager::send_message($user_id, $title, $content); + foreach ($user_list as $user_id){ + $result = MessageManager::send_message( + $user_id, + $title, + $content + ); } } - } + Display::addFlash(Display::return_message(get_lang('InvitationSent'))); + + header('Location: '.api_get_self().'?id='.$group_id); + exit; + } } $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'; +$friends = SocialManager::get_friends(api_get_user_id()); -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 (api_is_multiple_url_enabled()) { - $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); - $Users = Database::store_result($result); - foreach ($Users as $user) { - $sessionUsersList[$user['user_id']] = $user ; - } +$suggest_friends = false; +$Users = array(); +if (!$friends) { + $suggest_friends = true; } else { - $friends = SocialManager::get_friends(api_get_user_id()); - - $suggest_friends = false; - $Users = array(); - if (!$friends) { - $suggest_friends = true; - } else { - foreach ($friends as $friend) { - $group_friend_list = $usergroup->get_groups_by_user($friend['friend_user_id'], 0); - if (!empty($group_friend_list)) { - $friend_group_id = ''; - if (isset($group_friend_list[$group_id]) && $group_friend_list[$group_id]['id'] == $group_id) { - $friend_group_id = $group_id; - } - - if ($group_friend_list[$group_id]['relation_type'] == '' ) { - $Users[$friend['friend_user_id']]= array( - 'user_id' => $friend['friend_user_id'], - 'firstname' => $friend['firstName'], - 'lastname' => $friend['lastName'], - 'username' => $friend['username'], - 'group_id' => $friend_group_id - ); - } - } else { + foreach ($friends as $friend) { + $group_friend_list = $usergroup->get_groups_by_user($friend['friend_user_id'], 0); + if (!empty($group_friend_list)) { + $friend_group_id = ''; + if (isset($group_friend_list[$group_id]) && + $group_friend_list[$group_id]['id'] == $group_id + ) { + $friend_group_id = $group_id; + } + if (!isset($group_friend_list[$group_id]) || + isset($group_friend_list[$group_id]) && + $group_friend_list[$group_id]['relation_type'] == '' ) { $Users[$friend['friend_user_id']]= array( 'user_id' => $friend['friend_user_id'], - 'firstname' =>$friend['firstName'], + 'firstname' => $friend['firstName'], 'lastname' => $friend['lastName'], - 'username' =>$friend['username'], - 'group_id' => null + 'username' => $friend['username'], + 'group_id' => $friend_group_id ); } + } else { + $Users[$friend['friend_user_id']]= array( + 'user_id' => $friend['friend_user_id'], + 'firstname' =>$friend['firstName'], + 'lastname' => $friend['lastName'], + 'username' =>$friend['username'], + 'group_id' => null + ); } } +} - if (is_array($Users) && count($Users) > 0 ) { - foreach ($Users as $user) { - if ($user['group_id'] != $group_id) { - $nosessionUsersList[$user['user_id']] = $user ; - } - } - } - - //deleting anonymous users - $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]); +if (is_array($Users) && count($Users) > 0 ) { + foreach ($Users as $user) { + if ($user['group_id'] != $group_id) { + $nosessionUsersList[$user['user_id']] = api_get_person_name($user['firstname'], $user['lastname']); } } } -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').''; -} -$social_left_content = SocialManager::show_social_menu('invite_friends',$group_id); +$social_left_content = SocialManager::show_social_menu('invite_friends', $group_id); $social_right_content = '

    '.Security::remove_XSS($group_info['name'], STUDENT, true).'

    '; if (count($nosessionUsersList) == 0) { $friends = SocialManager::get_friends(api_get_user_id()); if ($friends == 0) { - $social_right_content .= get_lang('YouNeedToHaveFriendsInYourSocialNetwork'); + $social_right_content .= get_lang('YouNeedToHaveFriendsInYourSocialNetwork'); } else { - $social_right_content .= get_lang('YouAlreadyInviteAllYourContacts'); + $social_right_content .= get_lang('YouAlreadyInviteAllYourContacts'); } - $social_right_content .= '
    '; - $social_right_content .= ''.get_lang('TryAndFindSomeFriends').''; - $social_right_content .= '
    '; + $social_right_content .= '
    '; + $social_right_content .= ''.get_lang('TryAndFindSomeFriends').''; + $social_right_content .= '
    '; } -$add_true = null; -$ajax = null; -if (!empty($_GET['add'])) $add_true = '&add=true'; -if ($ajax_search) $ajax = 'onsubmit="valide();"'; - -$form = '
    '; +$form = new FormValidator('invitation', 'post', api_get_self().'?id='.$group_id); +$form->addHidden('form_sent', 1); +$form->addHidden('id', $group_id); -if ($add_type=='multiple') { - /* - if (is_array($extra_field_list)) { - if (is_array($new_field_list) && count($new_field_list)>0 ) { - $form .= '

    '.get_lang('FilterUsers').'

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

    '; - } - }*/ -} +$group_members_element = $form->addElement( + 'advmultiselect', + 'invitation', + get_lang('Friends'), + $nosessionUsersList, + 'style="width: 280px;"' +); -$form .= ''; -$form .= ''; -$form .= ''; - -if(!empty($errorMsg)) { - $form .= Display::return_message($errorMsg,'error'); //main API -} - -$form .= ' - - - - '; - -if ($add_type=='no') { - $form .=' - - - - '; -} - -$form .= ' - - - - - - - -
    '.get_lang('Friends').' : - '.get_lang('SendInvitationTo').':
    '.get_lang('FirstLetterUser').' : - -  
    -
    '; - -if (!($add_type=='multiple')) { - $form .='
    '; -} else { - $form .= '
    - '; - $form .= '
    '; -} +$form->addButtonSave(get_lang('InviteUsersToGroup')); +$social_right_content .= $form->returnForm(); -unset($nosessionUsersList); -$form .= '
    '; -$form .= '
    '; +// Current group members +$members = $usergroup->get_users_by_group( + $group_id, + false, + array(GROUP_USER_PERMISSION_PENDING_INVITATION) +); -if ($ajax_search) { - $form .= ''; -} else { - $form .= ' -

    - -

    '; -} - -$form .= '




    -
    -
    -
    - -
    -
    '; - -$social_right_content .= $form; - -//current group members -$members = $usergroup->get_users_by_group($group_id, false, array(GROUP_USER_PERMISSION_PENDING_INVITATION)); if (is_array($members) && count($members)>0) { foreach ($members as &$member) { - $image_path = UserManager::get_user_picture_path_by_id($member['user_id'], 'web', false, true); - $picture = UserManager::get_picture_user($member['user_id'], $image_path['file'],80); - $member['image'] = ''; + $image = UserManager::getUserPicture($member['user_id']); + $member['image'] = ''; } $social_right_content .= '

    '.get_lang('UsersAlreadyInvited').'

    '; - $social_right_content .= Display::return_sortable_grid('invitation_profile', array(), $members, array('hide_navigation'=>true, 'per_page' => 100), array(), false, array(true, false, true,true)); -} - -$htmlHeadXtra[] = ''; - -$social_right_content = Display::div($social_right_content, array('class' => 'span9')); - -$app['title'] = $tool_name; - $tpl = new Template(null); - SocialManager::setSocialUserBlock($tpl, $user_id, 'groups', $group_id); $social_menu_block = SocialManager::show_social_menu('member_list', $group_id); $tpl->assign('social_menu_block', $social_menu_block); - - $tpl->setHelp('Groups'); $tpl->assign('social_right_content', $social_right_content); - $social_layout = $tpl->get_template('social/add_groups.tpl'); $tpl->display($social_layout); diff --git a/main/social/group_members.php b/main/social/group_members.php index 1651c13576..b350ea35e3 100755 --- a/main/social/group_members.php +++ b/main/social/group_members.php @@ -1,36 +1,33 @@ */ -/** - * Initialization - */ + $cidReset = true; require_once '../inc/global.inc.php'; api_block_anonymous_users(); + if (api_get_setting('allow_social_tool') != 'true') { api_not_allowed(); } $this_section = SECTION_SOCIAL; -$interbreadcrumb[] = array('url' => 'home.php', 'name' => get_lang('Social')); -$interbreadcrumb[] = array('url' => 'groups.php', 'name' => get_lang('Groups')); -$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('MemberList')); - $group_id = intval($_GET['id']); +$userGroup = new UserGroup(); //todo @this validation could be in a function in group_portal_manager if (empty($group_id)) { api_not_allowed(); } else { - $group_info = GroupPortalManager::get_group_data($group_id); + $group_info = $userGroup->get($group_id); if (empty($group_info)) { api_not_allowed(); } - $user_role = GroupPortalManager::get_user_group_role( + $user_role = $userGroup->get_user_group_role( api_get_user_id(), $group_id ); @@ -47,15 +44,19 @@ if (empty($group_id)) { } } -$show_message = ''; +$interbreadcrumb[] = array('url' => 'home.php', 'name' => get_lang('Social')); +$interbreadcrumb[] = array('url' => 'groups.php', 'name' => get_lang('Groups')); +$interbreadcrumb[] = array('url' => 'group_view.php?id='.$group_id, 'name' => $group_info['name']); +$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('MemberList')); + //if i'm a moderator if (isset($_GET['action']) && $_GET['action'] == 'add') { // we add a user only if is a open group $user_join = intval($_GET['u']); //if i'm a moderator - if (GroupPortalManager::is_group_moderator($group_id)) { - GroupPortalManager::update_user_role($user_join, $group_id); - $show_message = get_lang('UserAdded'); + if ($userGroup->is_group_moderator($group_id)) { + $userGroup->update_user_role($user_join, $group_id); + Display::addFlash(Display::return_message(get_lang('UserAdded'))); } } @@ -63,9 +64,9 @@ if (isset($_GET['action']) && $_GET['action'] == 'delete') { // we add a user only if is a open group $user_join = intval($_GET['u']); //if i'm a moderator - if (GroupPortalManager::is_group_moderator($group_id)) { - GroupPortalManager::delete_user_rel_group($user_join, $group_id); - $show_message = Display::return_message(get_lang('UserDeleted')); + if ($userGroup->is_group_moderator($group_id)) { + $userGroup->delete_user_rel_group($user_join, $group_id); + Display::addFlash(Display::return_message(get_lang('UserDeleted'))); } } @@ -73,15 +74,13 @@ if (isset($_GET['action']) && $_GET['action'] == 'set_moderator') { // we add a user only if is a open group $user_moderator = intval($_GET['u']); //if i'm the admin - if (GroupPortalManager::is_group_admin($group_id)) { - GroupPortalManager::update_user_role( + if ($userGroup->is_group_admin($group_id)) { + $userGroup->update_user_role( $user_moderator, $group_id, GROUP_USER_PERMISSION_MODERATOR ); - $show_message = Display::return_message( - get_lang('UserChangeToModerator') - ); + Display::addFlash(Display::return_message(get_lang('UserChangeToModerator'))); } } @@ -89,17 +88,17 @@ if (isset($_GET['action']) && $_GET['action'] == 'delete_moderator') { // we add a user only if is a open group $user_moderator = intval($_GET['u']); //only group admins can do that - if (GroupPortalManager::is_group_admin($group_id)) { - GroupPortalManager::update_user_role( + if ($userGroup->is_group_admin($group_id)) { + $userGroup->update_user_role( $user_moderator, $group_id, GROUP_USER_PERMISSION_READER ); - $show_message = Display::return_message(get_lang('UserChangeToReader')); + Display::addFlash(Display::return_message(get_lang('UserChangeToReader'))); } } -$users = GroupPortalManager::get_users_by_group( +$users = $userGroup->get_users_by_group( $group_id, false, array( @@ -118,7 +117,6 @@ $social_avatar_block = SocialManager::show_social_avatar_block( ); $social_menu_block = SocialManager::show_social_menu('member_list', $group_id); $social_right_content = '

    ' . $group_info['name'] . '

    '; -$social_right_content .= '
    '; foreach ($users as $user) { switch ($user['relation_type']) { @@ -187,9 +185,8 @@ if (count($new_member_list) > 0) { array(true, false, true, true, false, true, true) ); } -$social_right_content .= '
    '; -$tpl = new Template($tool_name); +$tpl = new Template(null); $tpl->set_help('Groups'); $tpl->assign('social_avatar_block', $social_avatar_block); $tpl->assign('social_menu_block', $social_menu_block); diff --git a/main/social/group_view.php b/main/social/group_view.php index 803f3362c1..5636bccefb 100644 --- a/main/social/group_view.php +++ b/main/social/group_view.php @@ -108,7 +108,7 @@ if (isset($_GET['view']) && in_array($_GET['view'],$allowed_views)) { // getting group information $group_id = isset($_GET['id']) ? intval($_GET['id']) : null; $relation_group_title = ''; -$my_group_role = 0; +$role = 0; $usergroup = new UserGroup(); @@ -157,9 +157,9 @@ if (isset($_GET['status']) && $_GET['status']=='sent') { } $is_group_member = $usergroup->is_group_member($group_id); +$role = $usergroup->get_user_group_role(api_get_user_id(), $group_id); if (!$is_group_member && $group_info['visibility'] == GROUP_PERMISSION_CLOSED) { - $role = $usergroup->get_user_group_role(api_get_user_id(), $group_id); if ($role == GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER) { $social_right_content .= Display::return_message(get_lang('YouAlreadySentAnInvitation')); } @@ -167,17 +167,21 @@ if (!$is_group_member && $group_info['visibility'] == GROUP_PERMISSION_CLOSED) { if ($is_group_member || $group_info['visibility'] == GROUP_PERMISSION_OPEN) { if (!$is_group_member) { - if (!in_array($my_group_role, array(GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER, GROUP_USER_PERMISSION_PENDING_INVITATION))) { - $social_right_content .= ''.get_lang('JoinGroup').''; - } elseif ($my_group_role == GROUP_USER_PERMISSION_PENDING_INVITATION) { - $social_right_content .= ''.get_lang('YouHaveBeenInvitedJoinNow').''; + if (!in_array($role, + array(GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER, GROUP_USER_PERMISSION_PENDING_INVITATION)) + ) { + $social_right_content .= ''. + get_lang('JoinGroup').''; + } elseif ($role == GROUP_USER_PERMISSION_PENDING_INVITATION) { + $social_right_content .= ''. + get_lang('YouHaveBeenInvitedJoinNow').''; } $social_right_content .= '

    '; } $content = MessageManager::display_messages_for_group($group_id); if ($is_group_member) { if (empty($content)) { - $create_thread_link = ''. + $create_thread_link = ''. get_lang('YouShouldCreateATopic').''; } else { $create_thread_link = ''. @@ -188,8 +192,9 @@ if ($is_group_member || $group_info['visibility'] == GROUP_PERMISSION_OPEN) { $member_content = ''; // Members + if (count($members) > 0) { - if ($my_group_role == GROUP_USER_PERMISSION_ADMIN) { + if ($role == GROUP_USER_PERMISSION_ADMIN) { $member_content .= Display::url( Display::return_icon('edit.gif', get_lang('EditMembersList')).' '.get_lang('EditMembersList'), 'group_members.php?id='.$group_id @@ -225,7 +230,7 @@ if ($is_group_member || $group_info['visibility'] == GROUP_PERMISSION_OPEN) { } else { // if I already sent an invitation message if (!in_array( - $my_group_role, + $role, array( GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER, GROUP_USER_PERMISSION_PENDING_INVITATION, @@ -233,7 +238,7 @@ if ($is_group_member || $group_info['visibility'] == GROUP_PERMISSION_OPEN) { ) ) { $social_right_content .= ''.get_lang('JoinGroup').''; - } elseif ($my_group_role == GROUP_USER_PERMISSION_PENDING_INVITATION) { + } elseif ($role == GROUP_USER_PERMISSION_PENDING_INVITATION) { $social_right_content .= ''.get_lang('YouHaveBeenInvitedJoinNow').''; } } diff --git a/main/social/groups.php b/main/social/groups.php index 51459a9bca..5207adcf0a 100755 --- a/main/social/groups.php +++ b/main/social/groups.php @@ -53,7 +53,7 @@ if (isset($_GET['view']) && $_GET['view'] == 'mygroups') { $social_right_content = null; -// My groups ----- +// My groups $results = $usergroup->get_groups_by_user(api_get_user_id(), 0); $grid_my_groups = array(); diff --git a/main/social/home.php b/main/social/home.php index 13eabf8367..6113bbcc26 100755 --- a/main/social/home.php +++ b/main/social/home.php @@ -14,7 +14,7 @@ require_once '../inc/global.inc.php'; $user_id = api_get_user_id(); $show_full_profile = true; -//social tab +// social tab $this_section = SECTION_SOCIAL; unset($_SESSION['this_section']); //for hmtl editor repository @@ -26,6 +26,8 @@ if (api_get_setting('allow_social_tool') != 'true') { exit; } +$userGroup = new UserGroup(); + //fast upload image if (api_get_setting('profile', 'picture') == 'true') { $form = new FormValidator('profile', 'post', 'home.php', null, array()); @@ -76,15 +78,6 @@ if (api_get_setting('profile', 'picture') == 'true') { //Block Menu $social_menu_block = SocialManager::show_social_menu('home'); - -// Search box -/*$social_search_block = '';*/ - $social_search_block = Display::panel(UserManager::get_search_form(''), get_lang("SearchUsers")); //BLock Social Skill @@ -168,8 +161,7 @@ if (api_get_setting('allow_skills_tool') == 'true') { } } - -$results = GroupPortalManager::get_groups_by_age(1, false); +$results = $userGroup->get_groups_by_age(1, false); $groups_newest = array(); @@ -189,20 +181,21 @@ if (!empty($results)) { $result['name'] = '
    '.Display::url( api_ucwords(cut($result['name'], 40, true)), $group_url) - .'
    '.Display::return_icon('user.png','','',ICON_SIZE_TINY).$result['count'].'
    '; + .'
    '. + Display::return_icon('user.png','','',ICON_SIZE_TINY).$result['count'].'
    '; - $picture = GroupPortalManager::get_picture_group( + $picture = $userGroup->get_picture_group( $id, - $result['picture_uri'], + $result['picture'], 80 ); - $result['picture_uri'] = ''; + $result['picture'] = ''; $group_actions = ''; $group_info= '

    ' . cut($result['description'], 120, true) . "

    "; $groups_newest[] = array( Display::url( - $result['picture_uri'], + $result['picture'], $group_url ), $result['name'], @@ -210,8 +203,9 @@ if (!empty($results)) { ); } } -//Top popular -$results = GroupPortalManager::get_groups_by_popularity(1, false); + +// Top popular +$results = $userGroup->get_groups_by_popularity(1, false); $groups_pop = array(); foreach ($results as $result) { @@ -233,9 +227,9 @@ foreach ($results as $result) { api_ucwords(cut($result['name'], 40, true)),$group_url) .'
    '.Display::return_icon('user.png','','',ICON_SIZE_TINY).$result['count'].'
    '; - $picture = GroupPortalManager::get_picture_group( + $picture = $userGroup->get_picture_group( $id, - $result['picture_uri'], + $result['picture'], 80 ); $result['picture_uri'] = ''; @@ -274,16 +268,6 @@ if ($list > 0) { $social_group_block.="
    "; } $social_group_block.= "
    "; - - /*$social_group_block .= Display::return_sortable_grid( - 'home_group', - array(), - $groups_pop, - array('hide_navigation' => true, 'per_page' => 100), - array(), - false, - array(true, true, true, true, true) - );*/ } $social_group_block = Display::panel($social_group_block, get_lang('Group')); diff --git a/main/social/invitations.php b/main/social/invitations.php index e7a0e00a27..0ab6abeae2 100755 --- a/main/social/invitations.php +++ b/main/social/invitations.php @@ -19,6 +19,8 @@ $this_section = SECTION_SOCIAL; $interbreadcrumb[] = array ('url' =>'profile.php','name' => get_lang('SocialNetwork')); $interbreadcrumb[] = array ('url' =>'#','name' => get_lang('Invitations')); +$userGroup = new UserGroup(); + $htmlHeadXtra[] = ' '; $show_message = null; - -// easy links -if (is_array($_GET) && count($_GET) > 0) { - foreach ($_GET as $key => $value) { - switch ($key) { - case 'accept': - $user_role = GroupPortalManager::get_user_group_role( - api_get_user_id(), - $value - ); - if (in_array( - $user_role, - array( - GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER, - GROUP_USER_PERMISSION_PENDING_INVITATION - ) - ) - ) { - GroupPortalManager::update_user_role( - api_get_user_id(), - $value, - GROUP_USER_PERMISSION_READER - ); - $show_message = get_lang('UserIsSubscribedToThisGroup'); - } elseif (in_array( - $user_role, - array( - GROUP_USER_PERMISSION_READER, - GROUP_USER_PERMISSION_ADMIN, - GROUP_USER_PERMISSION_MODERATOR - ) - ) - ) { - $show_message = get_lang( - 'UserIsAlreadySubscribedToThisGroup' - ); - } else { - $show_message = get_lang('UserIsNotSubscribedToThisGroup'); - } - break 2; - case 'deny': - // delete invitation - GroupPortalManager::delete_user_rel_group( - api_get_user_id(), - $value - ); - $show_message = get_lang('GroupInvitationWasDeny'); - break 2; - } - } -} - -//Social Menu Block +// Social Menu Block $social_menu_block = SocialManager::show_social_menu('myfiles'); $actions = null; diff --git a/main/social/profile.php b/main/social/profile.php index 74564b76bb..1fa463dbe8 100755 --- a/main/social/profile.php +++ b/main/social/profile.php @@ -21,10 +21,9 @@ if (api_get_setting('allow_social_tool') !='true') { } $user_id = api_get_user_id(); - $friendId = isset($_GET['u']) ? intval($_GET['u']) : api_get_user_id(); - $isAdmin = api_is_platform_admin($user_id); +$userGroup = new UserGroup(); $show_full_profile = true; //social tab @@ -191,15 +190,17 @@ function register_friend(element_input) { }); } } - '; + +$link_shared = ''; + $nametool = get_lang('ViewMySharedProfile'); if (isset($_GET['shared'])) { - $my_link='../social/profile.php'; - $link_shared='shared='.Security::remove_XSS($_GET['shared']); + $my_link = '../social/profile.php'; + $link_shared = 'shared='.Security::remove_XSS($_GET['shared']); } else { - $my_link='../social/profile.php'; - $link_shared=''; + $my_link = '../social/profile.php'; + $link_shared = ''; } $interbreadcrumb[]= array ('url' =>'home.php','name' => get_lang('SocialNetwork') ); @@ -219,17 +220,13 @@ if (isset($_GET['u'])) { $_SESSION['social_user_id'] = intval($user_id); -/** - * Display - */ - -//Setting some course info -$my_user_id = isset($_GET['u']) ? Security::remove_XSS($_GET['u']) : api_get_user_id(); +// Setting some course info +$my_user_id = isset($_GET['u']) ? intval($_GET['u']) : api_get_user_id(); $personal_course_list = UserManager::get_personal_session_course_list($my_user_id); $course_list_code = array(); -$i=1; - +$i = 1; +$list = []; if (is_array($personal_course_list)) { foreach ($personal_course_list as $my_course) { if ($i<=10) { @@ -260,49 +257,6 @@ foreach ($sessionList as $session) { // My friends $friend_html = SocialManager::listMyFriends($user_id, $link_shared ,$show_full_profile); -$social_left_content = ''; - -/* -$personal_info = null; -if (!empty($user_info['firstname']) || !empty($user_info['lastname'])) { - $personal_info .= '

    '.api_get_person_name($user_info['firstname'], $user_info['lastname']).'

    '; -} else { - //--- Basic Information - $personal_info .= '

    '.get_lang('Profile').'

    '; -} - -if ($show_full_profile) { - $personal_info .= '
    '; - if ($isAdmin || $isSelfUser) { - $personal_info .= '
    '.get_lang('UserName').'
    '. $user_info['username'].'
    '; - } - if (!empty($user_info['firstname']) || !empty($user_info['lastname'])) { - $personal_info .= '
    '.get_lang('Name') - .'
    '. api_get_person_name($user_info['firstname'], $user_info['lastname']).'
    '; - } - if (($isAdmin || $isSelfUser) && !empty($user_info['official_code'])) { - $personal_info .= '
    '.get_lang('OfficialCode').'
    '.$user_info['official_code'].'
    '; - } - if (!empty($user_info['email'])) { - if (api_get_setting('show_email_addresses')=='true') { - $personal_info .= '
    '.get_lang('Email').'
    '.$user_info['email'].'
    '; - } - if (!empty($user_info['phone'])) { - $personal_info .= '
    '.get_lang('Phone').'
    '. $user_info['phone'].'
    '; - } - $personal_info .= '
    '; - } -} else { - $personal_info .= '
    '; - if (!empty($user_info['username'])) { - if ($isAdmin || $isSelfUser) { - $personal_info .= '
    '.get_lang('UserName').'
    '. $user_info['username'].'
    '; - } - } - $personal_info .= '
    '; -} -*/ -//Social Block Wall $wallSocialAddPost = SocialManager::getWallForm(); $social_wall_block = $wallSocialAddPost; @@ -333,7 +287,7 @@ $social_right_content = null; $show_full_profile = true; if ($show_full_profile) { - $t_ufo = Database :: get_main_table(TABLE_EXTRA_FIELD_OPTIONS); + $t_ufo = Database :: get_main_table(TABLE_EXTRA_FIELD_OPTIONS); $extra_user_data = UserManager::get_extra_user_data($user_id, false, true); $extra_information = ''; @@ -431,14 +385,14 @@ if ($show_full_profile) { $extra_information .= ''; //social-profile-info } - //If there are information to show Block Extra Information + // If there are information to show Block Extra Information if (!empty($extra_information_value)) { $social_extra_info_block = $extra_information; } // MY GROUPS - $results = GroupPortalManager::get_groups_by_user($my_user_id, 0); + $results = $userGroup->get_groups_by_user($my_user_id, 0); $grid_my_groups = array(); $max_numbers_of_group = 4; @@ -464,36 +418,20 @@ if ($show_full_profile) { array('style'=>'vertical-align:middle;width:16px;height:16px;') ); } - $count_users_group = count(GroupPortalManager::get_all_users_by_group($id)); + $count_users_group = count($userGroup->get_all_users_by_group($id)); if ($count_users_group == 1 ) { $count_users_group = $count_users_group.' '.get_lang('Member'); } else { $count_users_group = $count_users_group.' '.get_lang('Members'); } - //$picture = GroupPortalManager::get_picture_group($result['id'], $result['picture_uri'],80); $item_name = $url_open.$name.$icon.$url_close; - - if ($result['description'] != '') { - //$item_description = '
    ' - //.'
    '; - } else { - //$item_description = '
    ' - //.'
    '; - } - //$result['picture_uri'] = '
    ' - //.'
    '; $item_actions = ''; - //if (api_get_user_id() == $user_id) { - //$item_actions = '
    ' - //.get_lang('SeeMore').$url_close.'
    '; - //} - $grid_my_groups[]= array($item_name,$url_open.$result['picture_uri'].$url_close, $item_actions); + $grid_my_groups[]= array($item_name,$url_open.$result['picture'].$url_close, $item_actions); $i++; } } - //Block My Groups + // Block My Groups if (count($grid_my_groups) > 0) { $my_groups = ''; $count_groups = 0; @@ -531,11 +469,11 @@ if ($show_full_profile) { $social_group_info_block = $my_groups; } - //Block Social Course + // Block Social Course $my_courses = null; // COURSES LIST - if ( is_array($list) ) { + if (is_array($list)) { $my_courses .= '
    '; $my_courses .= '
    '.api_ucfirst(get_lang('MyCourses')).'
    '; $my_courses .= '
    '; @@ -551,7 +489,6 @@ if ($show_full_profile) { } } $my_courses .= '
    '; - $social_course_block .= $my_courses; } @@ -573,7 +510,6 @@ if ($show_full_profile) { $rss .= '
    '.get_lang('RSSFeeds').'
    '; $rss .= '
    '.$user_feeds.'
    '; $social_rss_block = $rss; - } //BLock Social Skill @@ -634,7 +570,7 @@ if ($show_full_profile) { $social_skill_block .= '
    '; $social_skill_block .= Display::tag('ul', $lis, array('class' => 'list-badges')); $social_skill_block .= '
    '; - }else{ + } else { $social_skill_block .= '
    '; $social_skill_block .= '

    '. get_lang("WithoutAchievedSkills") . '

    '; @@ -644,8 +580,7 @@ if ($show_full_profile) { $social_skill_block.='
    '; } - - //--Productions + // Productions $production_list = UserManager::build_production_list($user_id); // Images uploaded by course @@ -759,6 +694,7 @@ $tpl = new Template(get_lang('Social')); // Block Avatar Social SocialManager::setSocialUserBlock($tpl, $user_id, 'shared_profile'); +$tpl->assign('social_friend_block', $friend_html); $tpl->assign('social_menu_block', $social_menu_block); $tpl->assign('social_wall_block', $social_wall_block); $tpl->assign('social_post_wall_block', $social_post_wall_block); diff --git a/main/social/profile_friends_and_groups.inc.php b/main/social/profile_friends_and_groups.inc.php index 4616707216..60a4325e39 100755 --- a/main/social/profile_friends_and_groups.inc.php +++ b/main/social/profile_friends_and_groups.inc.php @@ -1,13 +1,12 @@ */ -/** - * Initialization - */ + $cidReset = true; require_once '../inc/global.inc.php'; @@ -19,6 +18,8 @@ if (api_get_setting('allow_social_tool') != 'true') { $views = array('friends', 'mygroups'); $user_id = intval($_GET['user_id']); +$userGroup = new UserGroup(); + if (isset($_GET['view']) && in_array($_GET['view'], $views)) { // show all friends by user_id if ($_GET['view'] == 'friends') { @@ -36,13 +37,9 @@ if (isset($_GET['view']) && in_array($_GET['view'], $views)) { $friend_html .= '
    '; if ($number_friends == 1) { - $friend_html .= '
    ' . $number_friends . ' ' . get_lang( - 'Friend' - ) . '
    '; + $friend_html .= '
    ' . $number_friends . ' ' . get_lang('Friend') . '
    '; } else { - $friend_html .= '
    ' . $number_friends . ' ' . get_lang( - 'Friends' - ) . '
    '; + $friend_html .= '
    ' . $number_friends . ' ' . get_lang('Friends') . '
    '; } $friend_html .= '
    '; // close div friend-header @@ -58,7 +55,7 @@ if (isset($_GET['view']) && in_array($_GET['view'], $views)) { $userPicture = UserManager::getUserPicture($friend['friend_user_id']); - $friend_html .= '
    '; + $friend_html .= ''; $friend_html .= ''; $friend_html .= ''; $friend_html .= '
    ' . $name_user . '
    '; @@ -70,7 +67,7 @@ if (isset($_GET['view']) && in_array($_GET['view'], $views)) { } else { // show all groups by user_id // MY GROUPS - $results = GroupPortalManager::get_groups_by_user($user_id, 0); + $results = $userGroup->get_groups_by_user($user_id, 0); $grid_my_groups = array(); if (is_array($results) && count($results) > 0) { $i = 1; @@ -94,7 +91,7 @@ if (isset($_GET['view']) && in_array($_GET['view'], $views)) { ); } $count_users_group = count( - GroupPortalManager::get_all_users_by_group($id) + $userGroup->get_all_users_by_group($id) ); if ($count_users_group == 1) { $count_users_group = $count_users_group . ' ' . get_lang( @@ -105,33 +102,26 @@ if (isset($_GET['view']) && in_array($_GET['view'], $views)) { 'Members' ); } - $picture = GroupPortalManager::get_picture_group( + $picture = $userGroup->get_picture_group( $result['id'], $result['picture_uri'], 80 ); - $item_name = '
    ' . $url_open . api_xml_http_response_encode( - $name - ) . $icon . $url_close . '
    '; + $item_name = '
    ' . $url_open . api_xml_http_response_encode($name) . $icon . $url_close . '
    '; $item_description = ''; if (!empty($result['description'])) { - $item_description = '
    '; + $item_description = '
    +
    '; } - $result['picture_uri'] = '
    '; + $result['picture_uri'] = '
    +
    '; $item_actions = ''; if (api_get_user_id() == $user_id) { - $item_actions = '
    ' . get_lang( - 'SeeMore' - ) . $url_close . '
    '; + $item_actions = '
    ' . + get_lang('SeeMore') . $url_close . '
    '; } $grid_my_groups[] = array( $item_name, diff --git a/main/social/search.php b/main/social/search.php index 3559382367..c1360498ad 100755 --- a/main/social/search.php +++ b/main/social/search.php @@ -62,7 +62,7 @@ if ($query != '' || ($query_vars['search_type']=='1' && count($query_vars)>2) ) $pageGroup = isset($_GET['groups_page_nr']) ? intval($_GET['groups_page_nr']) : 1; // Groups $fromGroups = intval(($pageGroup - 1) * $itemPerPage); - $totalGroups = GroupPortalManager::get_all_group_tags($_GET['q'], 0, $itemPerPage, true); + $totalGroups = count($usergroup->get_all_group_tags($_GET['q'], 0, $itemPerPage, true)); $groups = $usergroup->get_all_group_tags($_GET['q'], $fromGroups); } diff --git a/main/template/default/social/friends.tpl b/main/template/default/social/friends.tpl index f61e5303df..f2cb0baf72 100644 --- a/main/template/default/social/friends.tpl +++ b/main/template/default/social/friends.tpl @@ -8,7 +8,7 @@ {{ social_menu_block }} -
    +
    diff --git a/main/template/default/social/profile.tpl b/main/template/default/social/profile.tpl index 9189d411ca..e60b0cc346 100644 --- a/main/template/default/social/profile.tpl +++ b/main/template/default/social/profile.tpl @@ -5,6 +5,7 @@
    {{ social_avatar_block }} {{ social_extra_info_block }} + {{ social_friend_block }} diff --git a/main/user/class.php b/main/user/class.php index 5b068c9403..fd5f904de5 100755 --- a/main/user/class.php +++ b/main/user/class.php @@ -15,12 +15,11 @@ if (api_get_setting('allow_user_course_subscription_by_course_admin') == 'false' } } - $tool_name = get_lang("Classes"); $htmlHeadXtra[] = api_get_jqgrid_js(); -//extra entries in breadcrumb +// Extra entries in breadcrumb $interbreadcrumb[] = array ("url" => "user.php", "name" => get_lang("ToolUser")); $type = isset($_GET['type']) ? Security::remove_XSS($_GET['type']) : 'registered'; @@ -32,9 +31,11 @@ $usergroup = new UserGroup(); if (api_is_allowed_to_edit()) { echo ''; } @@ -47,13 +48,20 @@ if (api_is_allowed_to_edit()) { case 'add_class_to_course': $id = $_GET['id']; if (!empty($id)) { - $usergroup->subscribe_courses_to_usergroup($id, array(api_get_course_int_id()), false); + $usergroup->subscribe_courses_to_usergroup( + $id, + array(api_get_course_int_id()), + false + ); } break; case 'remove_class_from_course': $id = $_GET['id']; if (!empty($id)) { - $usergroup->unsubscribe_courses_from_usergroup($id, array(api_get_course_int_id())); + $usergroup->unsubscribe_courses_from_usergroup( + $id, + array(api_get_course_int_id()) + ); } break; } @@ -64,21 +72,53 @@ if (api_is_allowed_to_edit()) { $url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_usergroups_teacher&type='.$type; //The order is important you need to check the the $column variable in the model.ajax.php file -$columns = array(get_lang('Name'), get_lang('Users'), get_lang('Actions')); +$columns = array( + get_lang('Name'), + get_lang('Users'), + get_lang('Status'), + get_lang('Type'), + get_lang('Actions'), +); //Column config $column_model = array( - array('name'=>'name', 'index'=>'name', 'width'=>'35', 'align'=>'left'), - array('name'=>'users', 'index'=>'users', 'width'=>'15', 'align'=>'left'), - array('name'=>'actions', 'index'=>'actions', 'width'=>'20', 'align'=>'left','sortable'=>'false'), + array('name'=>'name', + 'index' => 'name', + 'width' => '35', + 'align' => 'left', + ), + array( + 'name' => 'users', + 'index' => 'users', + 'width' => '15', + 'align' => 'left', + ), + array( + 'name' => 'status', + 'index' => 'status', + 'width' => '15', + 'align' => 'left', + ), + array( + 'name' => 'group_type', + 'index' => 'group_type', + 'width' => '15', + 'align' => 'left', + ), + array( + 'name' => 'actions', + 'index' => 'actions', + 'width' => '20', + 'align' => 'left', + 'sortable' => 'false', + ), ); -//Autowidth +// Autowidth $extra_params['autowidth'] = 'true'; -//height auto +// height auto $extra_params['height'] = 'auto'; -//$extra_params['rowList'] = array(50, 100, 500, 1000, 2000, 5000); -//With this function we can add actions to the jgrid +// With this function we can add actions to the jgrid $action_links = 'function action_formatter (cellvalue, options, rowObject) { return \'' .' ' diff --git a/main/webservices/registration.soap.php b/main/webservices/registration.soap.php index 8e43993f7c..ac2db5c37b 100755 --- a/main/webservices/registration.soap.php +++ b/main/webservices/registration.soap.php @@ -572,7 +572,7 @@ function WSCreateUser($params) { if (isset($original_user_id_name) && isset($original_user_id_value)) { $_SESSION['ws_' . $original_user_id_name] = $original_user_id_value; } - + /** @var User $user */ $userId = UserManager::create_user( $firstName, @@ -6188,7 +6188,12 @@ function WSCreateGroup($params) if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } - return GroupPortalManager::add($params['name'], null, null, 1); + $userGroup = new UserGroup(); + $params = [ + 'name' => $params['name'] + ] + return $userGroup->save($params); + //return GroupPortalManager::add($params['name'], null, null, 1); } /* Create group Web Service end */ @@ -6233,7 +6238,11 @@ function WSUpdateGroup($params) return return_error(WS_ERROR_SECRET_KEY); } $params['allow_member_group_to_leave'] = null; - return GroupPortalManager::update( + + $userGroup = new UserGroup(); + return $userGroup->update($params); + + /*return GroupPortalManager::update( $params['id'], $params['name'], $params['description'], @@ -6241,7 +6250,7 @@ function WSUpdateGroup($params) $params['visibility'], $params['picture_uri'], $params['allow_member_group_to_leave'] - ); + );*/ } /* Update group Web Service end */ @@ -6279,7 +6288,11 @@ function WSDeleteGroup($params) if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } - return GroupPortalManager::delete($params['id']); + $userGroup = new UserGroup(); + + return $userGroup->delete($params['id']); + + //return GroupPortalManager::delete($params['id']); } /* Delete group Web Service end */ @@ -6318,7 +6331,11 @@ function GroupBindToParent($params) if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } - return GroupPortalManager::set_parent_group($params['id'], $params['parent_id']); + $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 */ @@ -6356,7 +6373,8 @@ function GroupUnbindFromParent($params) if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } - return GroupPortalManager::set_parent_group($params['id'], 0); + $userGroup = new UserGroup(); + return $userGroup->set_parent_group($params['id'], 0); } /* Unbind group Web Service end */ @@ -6395,7 +6413,10 @@ function WSAddUserToGroup($params) if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } - return GroupPortalManager::add_user_to_group($params['user_id'], $params['group_id']); + + $userGroup = new UserGroup(); + + return $userGroup->add_user_to_group($params['user_id'], $params['group_id']); } /* Add user to group Web Service end */ @@ -6435,7 +6456,9 @@ function WSUpdateUserRoleInGroup($params) if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } - return GroupPortalManager::update_user_role( + $userGroup = new UserGroup(); + + return $userGroup->update_user_role( $params['user_id'], $params['group_id'], $params['relation_type'] @@ -6478,7 +6501,12 @@ function WSDeleteUserFromGroup($params) if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } - return GroupPortalManager::delete_user_rel_group($params['user_id'], $params['group_id']); + $userGroup = new UserGroup(); + + return $userGroup->delete_user_rel_group( + $params['user_id'], + $params['group_id'] + ); } /* Delete user from group Web Service end */ diff --git a/src/Chamilo/CoreBundle/Entity/UserGroupRelUserGroup.php b/src/Chamilo/CoreBundle/Entity/UserGroupRelUserGroup.php new file mode 100644 index 0000000000..10c296c929 --- /dev/null +++ b/src/Chamilo/CoreBundle/Entity/UserGroupRelUserGroup.php @@ -0,0 +1,125 @@ +groupId = $groupId; + + return $this; + } + + /** + * Get groupId + * + * @return integer + */ + public function getGroupId() + { + return $this->groupId; + } + + /** + * Set subgroupId + * + * @param integer $subgroupId + * @return $this + */ + 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 $this + */ + 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; + } +} diff --git a/src/Chamilo/CoreBundle/Migrations/Schema/V110/Version20150522112023.php b/src/Chamilo/CoreBundle/Migrations/Schema/V110/Version20150522112023.php index f5ac06b2c4..93c2c0d794 100644 --- a/src/Chamilo/CoreBundle/Migrations/Schema/V110/Version20150522112023.php +++ b/src/Chamilo/CoreBundle/Migrations/Schema/V110/Version20150522112023.php @@ -19,6 +19,7 @@ class Version20150522112023 extends AbstractMigrationChamilo { $this->addSql('ALTER TABLE usergroup ADD group_type INT NOT NULL, ADD created_at DATETIME NOT NULL, ADD updated_at DATETIME NOT NULL'); $this->addSql('ALTER TABLE usergroup ADD picture VARCHAR(255) DEFAULT NULL, ADD url VARCHAR(255) DEFAULT NULL, ADD visibility VARCHAR(255) NOT NULL, ADD allow_members_leave_group INT NOT NULL, CHANGE description description LONGTEXT DEFAULT NULL'); + $this->addSql('CREATE TABLE usergroup_rel_usergroup (id INT AUTO_INCREMENT NOT NULL, group_id INT NOT NULL, subgroup_id INT NOT NULL, relation_type INT NOT NULL, PRIMARY KEY(id));'); $connection = $this->connection;