Replace calls of GroupPortalManager with UserGroup see BT#4301

1.10.x
Julio Montoya 10 years ago
parent 6cc7390d1e
commit 0c8ff36e3c
  1. 12
      main/admin/add_users_to_group.php
  2. 68
      main/admin/add_users_to_usergroup.php
  3. 4
      main/admin/index.php
  4. 83
      main/admin/system_announcements.php
  5. 5
      main/gradebook/certificate_report.php
  6. 3
      main/gradebook/gradebook_display_certificate.php
  7. 51
      main/inc/ajax/model.ajax.php
  8. 24
      main/inc/lib/banner.lib.php
  9. 4
      main/inc/lib/course.lib.php
  10. 20
      main/inc/lib/database.constants.inc.php
  11. 2
      main/inc/lib/group_portal_manager.lib.php
  12. 30
      main/inc/lib/message.lib.php
  13. 7
      main/inc/lib/model.lib.php
  14. 19
      main/inc/lib/sessionmanager.lib.php
  15. 27
      main/inc/lib/social.lib.php
  16. 4
      main/inc/lib/sortable_table.class.php
  17. 191
      main/inc/lib/system_announcements.lib.php
  18. 12
      main/inc/lib/template.lib.php
  19. 375
      main/inc/lib/usergroup.lib.php
  20. 5
      main/inc/lib/usermanager.lib.php
  21. 12
      main/inc/lib/userportal.lib.php
  22. 33
      main/messages/download.php
  23. 17
      main/messages/new_message.php
  24. 23
      main/social/friends.php
  25. 2
      main/social/group_edit.php
  26. 519
      main/social/group_invitation.php
  27. 53
      main/social/group_members.php
  28. 25
      main/social/group_view.php
  29. 2
      main/social/groups.php
  30. 46
      main/social/home.php
  31. 136
      main/social/invitations.php
  32. 19
      main/social/message_for_group_form.inc.php
  33. 54
      main/social/myfiles.php
  34. 110
      main/social/profile.php
  35. 48
      main/social/profile_friends_and_groups.inc.php
  36. 2
      main/social/search.php
  37. 2
      main/template/default/social/friends.tpl
  38. 1
      main/template/default/social/profile.tpl
  39. 68
      main/user/class.php
  40. 48
      main/webservices/registration.soap.php
  41. 125
      src/Chamilo/CoreBundle/Entity/UserGroupRelUserGroup.php
  42. 1
      src/Chamilo/CoreBundle/Migrations/Schema/V110/Version20150522112023.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();

@ -1,8 +1,10 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.admin
*/
// resetting the course id
$cidReset = true;
@ -24,13 +26,19 @@ $interbreadcrumb[]= array('url' => '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[] = '
<script>
$(document).ready( function() {
$("#relation").change(function() {
window.location = "add_users_to_usergroup.php?id='.$id.'" +"&relation=" + $(this).val();
});
});
function add_user_to_session (code, content) {
document.getElementById("user_to_add").value = "";
@ -58,12 +66,16 @@ function remove_item(origin) {
}
function validate_filter() {
document.formulaire.add_type.value = \''.$add_type.'\';
document.formulaire.form_sent.value=0;
document.formulaire.submit();
}
function checked_in_no_group(checked) {
$("#relation")
.find("option")
.attr("selected", false);
$("#first_letter_user")
.find("option")
.attr("selected", false);
@ -80,7 +92,6 @@ function change_select(val) {
</script>';
$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 '<div class="actions">';
@ -336,7 +349,7 @@ echo '</div>';
<?php
echo '<legend>'.$tool_name.': '.$data['name'].'</legend>';
if ($add_type=='multiple') {
if (is_array($extra_field_list)) {
if (is_array($new_field_list) && count($new_field_list)>0) {
echo '<h3>'.get_lang('FilterByUser').'</h3>';
@ -361,18 +374,31 @@ if ($add_type=='multiple') {
echo '<br /><br />';
}
}
}
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);
}
?>
<div class="row">
<div class="col-md-5">
<?php if ($data['group_type'] == UserGroup::SOCIAL_CLASS) { ?>
<select name="relation" id="relation">
<option value=""><?php echo get_lang('SelectARelationType')?></option>
<option value="<?php echo GROUP_USER_PERMISSION_ADMIN ?>" <?php echo ((isset($relation) && $relation == GROUP_USER_PERMISSION_ADMIN)?'selected=selected':'') ?> >
<?php echo get_lang('Admin') ?></option>
<option value="<?php echo GROUP_USER_PERMISSION_READER ?>" <?php echo ((isset($relation) && $relation == GROUP_USER_PERMISSION_READER)?'selected=selected':'') ?> >
<?php echo get_lang('Reader') ?></option>
<option value="<?php echo GROUP_USER_PERMISSION_PENDING_INVITATION ?>" <?php echo ((isset($relation) && $relation == GROUP_USER_PERMISSION_PENDING_INVITATION)?'selected=selected':'') ?> >
<?php echo get_lang('PendingInvitation') ?></option>
<option value="<?php echo GROUP_USER_PERMISSION_MODERATOR ?>" <?php echo ((isset($relation) && $relation == GROUP_USER_PERMISSION_MODERATOR)?'selected=selected':'') ?> >
<?php echo get_lang('Moderator') ?></option>
<option value="<?php echo GROUP_USER_PERMISSION_HRM ?>" <?php echo ((isset($relation) && $relation == GROUP_USER_PERMISSION_HRM)?'selected=selected':'') ?> >
<?php echo get_lang('Drh') ?></option>
</select>
<?php } ?>
<div class="multiple_select_header">
<b><?php echo get_lang('UsersInPlatform') ?> :</b>
<?php echo get_lang('FirstLetterUser'); ?> :

@ -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'));

@ -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; $i<count($language_list['name']) ; $i++) {
for ($i=0; $i<count($language_list['name']) ; $i++) {
$language_list_with_keys[$language_list['folder'][$i]] = $language_list['name'][$i];
}
$form->addElement('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;

@ -5,7 +5,7 @@
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
* @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());

@ -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)) {

@ -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;
}

@ -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') {

@ -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 [];

@ -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');

@ -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 <gugli100@gmail.com>
* @package chamilo.library

@ -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 .= '<div class="row">';
$items = $topic['count'];
$reply_label = ($items == 1) ? get_lang('GroupReply') : get_lang('GroupReplies');
$html .= '<div class="col-md-1">';
$html .= Display::div(Display::tag('span', $items).$reply_label, array('class' => 'group_discussions_replies'));
$html .= '</div>';
$label = Display::label($items.' '.$reply_label);
$topic['title'] = trim($topic['title']);
if (empty($topic['title'])) {
$topic['title'] = get_lang('Untitled');
}
$html .= '<div class="col-md-4">';
$html .= '<div class="col-md-8">';
$html .= Display::tag(
'h4',
Display::url(
@ -1127,7 +1124,7 @@ class MessageManager
} else {
$date .= '<div class="message-group-date"> <i>'.get_lang('Created').' '.date_to_str_ago($topic['send_date']).'</i></div>';
}
$html .= $date.$actions;
$html .= $date.$label.$actions;
$html .= '</div>';
$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.= '<div id="message-reply-link">';
if (($my_group_role == GROUP_USER_PERMISSION_ADMIN || $my_group_role == GROUP_USER_PERMISSION_MODERATOR) || $main_message['user_sender_id'] == $current_user_id) {
$links.= '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$main_message['id'].'&action=edit_message_group&anchor_topic=topic_'.$main_message['id'].'&topics_page_nr='.$topic_page_nr.'&items_page_nr='.$items_page_nr.'&topic_id='.$main_message['id'].'" class="group_message_popup" title="'.get_lang('Edit').'">';
$links.= '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?height=400&width=800&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$main_message['id'].'&action=edit_message_group&anchor_topic=topic_'.$main_message['id'].'&topics_page_nr='.$topic_page_nr.'&items_page_nr='.$items_page_nr.'&topic_id='.$main_message['id'].'" class="ajax btn" title="'.get_lang('Edit').'">';
$links.= Display :: return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).'</a>';
}
$links.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&message_id='.$main_message['id'].'&action=reply_message_group&anchor_topic=topic_'.$main_message['id'].'&topics_page_nr='.$topic_page_nr.'&items_page_nr='.$items_page_nr.'&topic_id='.$main_message['id'].'" class="group_message_popup" title="'.get_lang('Reply').'">';
$links.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?height=400&width=800&user_friend='.api_get_user_id().'&group_id='.$group_id.'&message_id='.$main_message['id'].'&action=reply_message_group&anchor_topic=topic_'.$main_message['id'].'&topics_page_nr='.$topic_page_nr.'&items_page_nr='.$items_page_nr.'&topic_id='.$main_message['id'].'" class="ajax btn" title="'.get_lang('Reply').'">';
$links.= Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
$links.= '</div>';
@ -1253,9 +1250,10 @@ class MessageManager
$links.= '<div id="message-reply-link">';
if (($my_group_role == GROUP_USER_PERMISSION_ADMIN || $my_group_role == GROUP_USER_PERMISSION_MODERATOR) || $topic['user_sender_id'] == $current_user_id) {
$links.= '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=edit_message_group&anchor_topic=topic_'.$topic_id.'&topics_page_nr='.$topic_page_nr.'&items_page_nr='.$items_page_nr.'&topic_id='.$topic_id.'" class="group_message_popup" title="'.get_lang('Edit').'">'.Display :: return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).'</a>';
$links.= '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?height=400&width=800&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=edit_message_group&anchor_topic=topic_'.$topic_id.'&topics_page_nr='.$topic_page_nr.'&items_page_nr='.$items_page_nr.'&topic_id='.$topic_id.'" class="ajax btn" title="'.get_lang('Edit').'">'.
Display :: return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).'</a>';
}
$links.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=reply_message_group&anchor_topic=topic_'.$topic_id.'&topics_page_nr='.$topic_page_nr.'&items_page_nr='.$items_page_nr.'&topic_id='.$topic_id.'" class="group_message_popup" title="'.get_lang('Reply').'">';
$links.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?height=400&width=800&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=reply_message_group&anchor_topic=topic_'.$topic_id.'&topics_page_nr='.$topic_page_nr.'&items_page_nr='.$items_page_nr.'&topic_id='.$topic_id.'" class="ajax btn" title="'.get_lang('Reply').'">';
$links.= Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
$links.= '</div>';

@ -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;
}

@ -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);

@ -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 = '<div class="avatar-profile">';
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 .= '<div id="edit_image">
<a href="'.api_get_path(WEB_CODE_PATH).'social/group_edit.php?id='.$group_id.'">'.
get_lang('EditGroup').'</a></div>';
@ -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 = '<div class="nav-list"><h3>'.get_lang('SocialFriend').'<span>(' . $number_friends . ')</span></h3></div>';
$friendHtml = '';
if ($number_friends != 0) {
if ($number_friends > $number_of_images) {
if (api_get_user_id() == $user_id) {
$friendHtml.= ' : <span><a href="friends.php">'.get_lang('SeeAll').'</a></span>';
$friendHtml.= ' <span><a href="friends.php">'.get_lang('SeeAll').'</a></span>';
} else {
$friendHtml.= ' : <span>'
$friendHtml.= ' <span>'
.'<a href="'.api_get_path(WEB_CODE_PATH).'social/profile_friends_and_groups.inc.php'
.'?view=friends&height=390&width=610&user_id='.$user_id.'"'
.'class="ajax" title="'.get_lang('SeeAll').'" >'.get_lang('SeeAll').'</a></span>';
@ -1602,11 +1590,14 @@ class SocialManager extends UserManager
}
$friendHtml.= '<li class="">';
$friendHtml.= '<div>';
// 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.= '<img src="'.$friends_profile.'" id="imgfriend_'.$friend['friend_user_id'].'" title="'.$name_user.'"/>';
$link_shared = (empty($link_shared)) ? '' : '&'.$link_shared;
$friendHtml.= $statusIcon .'<a href="profile.php?' .'u=' . $friend['friend_user_id'] . $link_shared . '">' . $name_user .'</a>';
$friendHtml.= '</div>';
$friendHtml.= '</li>';
}
$j++;
@ -1617,6 +1608,8 @@ class SocialManager extends UserManager
.'<a class="btn btn-primary" href="'.api_get_path(WEB_PATH).'whoisonline.php"><i class="fa fa-search"></i> '. get_lang('TryAndFindSomeFriends').'</a></div>';
}
$friendHtml = Display::panel($friendHtml, get_lang('SocialFriend').' (' . $number_friends . ')' );
return $friendHtml;
}

@ -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 .= '<div class="'.$this->table_name.'_grid_element_'.$i.'">'.$element.'</div>';
}
$i++;

@ -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 :

@ -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);

@ -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 .= '<div class="well sidebar-nav"><ul class="nav nav-list">';
if (!empty($group_info['description'])) {
$html .= Display::tag('li', Security::remove_XSS($group_info['description'], STUDENT, true), array('class'=>'group_description'));
$html .= Display::tag(
'li',
Security::remove_XSS($group_info['description'], STUDENT, true),
array('class'=>'group_description')
);
}
$html .= $links;
$html .= '</ul></div>';
@ -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;
}
}

@ -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);
}
}

@ -926,17 +926,23 @@ class IndexManager
return;
}
$userGroup = new UserGroup();
$profile_content = '<ul class="nav nav-pills nav-stacked">';
// @todo Add a platform setting to add the user image.
if (api_get_setting('allow_message_tool') == 'true') {
// New messages.
$number_of_new_messages = MessageManager::get_new_messages();
$number_of_new_messages = MessageManager::get_new_messages();
// New contact invitations.
$number_of_new_messages_of_friend = SocialManager::get_message_number_invitation_by_user_id(api_get_user_id());
$number_of_new_messages_of_friend = SocialManager::get_message_number_invitation_by_user_id(api_get_user_id());
// New group invitations sent by a moderator.
$group_pending_invitations = GroupPortalManager::get_groups_by_user(api_get_user_id(), GROUP_USER_PERMISSION_PENDING_INVITATION, false);
$group_pending_invitations = $userGroup->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;

@ -1,5 +1,6 @@
<?php
/* For licensing terms, see /license.txt */
/**
* This file is responsible for passing requested file attachments from messages
* Html files are parsed to fix a few problems with URLs,
@ -8,9 +9,6 @@
*
* @package chamilo.messages
*/
/**
* MAIN CODE
*/
session_cache_limiter('public');
@ -32,18 +30,21 @@ $tbl_messsage = Database::get_main_table(TABLE_MESSAGE);
$tbl_messsage_attachment = Database::get_main_table(TABLE_MESSAGE_ATTACHMENT);
$file_url = Database::escape_string($file_url);
$sql= "SELECT filename, message_id FROM $tbl_messsage_attachment WHERE path LIKE BINARY '$file_url'";
$sql = "SELECT filename, message_id
FROM $tbl_messsage_attachment
WHERE path LIKE BINARY '$file_url'";
$result = Database::query($sql);
$row = Database::fetch_array($result, 'ASSOC');
$title = str_replace(' ','_', $row['filename']);
$result = Database::query($sql);
$row = Database::fetch_array($result, 'ASSOC');
$title = str_replace(' ', '_', $row['filename']);
$message_id = $row['message_id'];
// allow download only for user sender and user receiver
$sql = "SELECT user_sender_id, user_receiver_id, group_id FROM $tbl_messsage WHERE id = '$message_id'";
$rs = Database::query($sql);
$row_users = Database::fetch_array($rs, 'ASSOC');
$current_uid = api_get_user_id();
$sql = "SELECT user_sender_id, user_receiver_id, group_id
FROM $tbl_messsage WHERE id = '$message_id'";
$rs = Database::query($sql);
$row_users = Database::fetch_array($rs, 'ASSOC');
$current_uid = api_get_user_id();
// get message user id for inbox/outbox
$message_uid = '';
@ -58,8 +59,10 @@ if (in_array($_GET['type'],$message_type)) {
// allow to the correct user for download this file
$not_allowed_to_edit = false;
$userGroup = new UserGroup();
if (!empty($row_users['group_id'])) {
$users_group = GroupPortalManager::get_all_users_by_group($row_users['group_id']);
$users_group = $userGroup->get_all_users_by_group($row_users['group_id']);
if (!in_array($current_uid,array_keys($users_group))) {
$not_allowed_to_edit = true;
}
@ -76,7 +79,11 @@ if ($not_allowed_to_edit) {
// set the path directory file
if (!empty($row_users['group_id'])) {
$path_user_info = GroupPortalManager::get_group_picture_path_by_id($row_users['group_id'], 'system', true);
$path_user_info = $userGroup->get_group_picture_path_by_id(
$row_users['group_id'],
'system',
true
);
} else {
$path_user_info['dir'] = UserManager::getUserPathById($message_uid, 'system');
}

@ -153,9 +153,9 @@ function show_compose_to_user ($receiver_id) {
function manage_form($default, $select_from_user_list = null, $sent_to = null)
{
$group_id = isset($_REQUEST['group_id']) ? intval($_REQUEST['group_id']) : null;
$message_id = isset($_GET['message_id']) ? intval($_GET['message_id']) : null;
$param_f = isset($_GET['f']) && $_GET['f'] == 'social' ? 'social' : null;
$group_id = isset($_REQUEST['group_id']) ? intval($_REQUEST['group_id']) : null;
$message_id = isset($_GET['message_id']) ? intval($_GET['message_id']) : null;
$param_f = isset($_GET['f']) && $_GET['f'] == 'social' ? 'social' : null;
$form = new FormValidator('compose_message', null, api_get_self().'?f='.$param_f, null, array('enctype'=>'multipart/form-data'));
if (empty($group_id)) {
@ -185,7 +185,8 @@ function manage_form($default, $select_from_user_list = null, $sent_to = null)
}
}
} else {
$group_info = GroupPortalManager::get_group_data($group_id);
$userGroup = new UserGroup();
$group_info = $userGroup->get($group_id);
$form->addElement('label', get_lang('ToGroup'), api_xml_http_response_encode($group_info['name']));
$form->addElement('hidden','group_id',$group_id);
@ -193,7 +194,13 @@ function manage_form($default, $select_from_user_list = null, $sent_to = null)
}
$form->addText('title', get_lang('Subject'), true);
$form->addHtmlEditor('content', get_lang('Message'), false, false, array('ToolbarSet' => 'Messages', 'Width' => '100%', 'Height' => '250'));
$form->addHtmlEditor(
'content',
get_lang('Message'),
false,
false,
array('ToolbarSet' => 'Messages', 'Width' => '100%', 'Height' => '250')
);
if (isset($_GET['re_id'])) {
$message_reply_info = MessageManager::get_message_by_id($_GET['re_id']);

@ -1,10 +1,11 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com>
*/
$cidReset = true;
require_once '../inc/global.inc.php';
@ -94,11 +95,12 @@ if (isset($name_search) && $name_search != 'undefined') {
$friends = SocialManager::get_friends($user_id);
}
$social_right_content = '<div class="span8">';
$social_right_content = '<div class="col-md-9">';
if (count($friends) == 0) {
$social_right_content .= get_lang('NoFriendsInYourContactList').'<br /><br />';
$social_right_content .= '<a class="btn btn-primary" href="search.php"><i class="fa fa-search"></i>'.get_lang('TryAndFindSomeFriends').'</a>';
$social_right_content .= '<a class="btn btn-primary" href="search.php">
<i class="fa fa-search"></i>'.get_lang('TryAndFindSomeFriends').'</a>';
} else {
$social_right_content .= get_lang('Search').'&nbsp;&nbsp; : &nbsp;&nbsp;';
$social_right_content .= '<input class="social-search-image" type="text" id="id_search_image" name="id_search_image" onkeyup="search_image_social()" />';
@ -108,27 +110,26 @@ if (count($friends) == 0) {
$number_friends = count($friends);
$j = 0;
$friend_html.= '<ul class="thumbnails">';
for ($k = 0; $k < $number_friends; $k++) {
while ($j < $number_friends) {
if (isset($friends[$j])) {
$friend_html.='<li class="span2">';
$friend_html.='<div class="card">';
$friend = $friends[$j];
$user_name = api_xml_http_response_encode($friend['firstName'].' '.$friend['lastName']);
$userPicture = UserManager::getUserPicture($friend['friend_user_id']);
$friend_html.='<div class="thumbnail" onMouseover="show_icon_delete(this)" onMouseout="hide_icon_delete(this)" class="image-social-content" id=div_'.$friends[$j]['friend_user_id'].'>';
$friend_html.='<div class="avatar" class="image-social-content" id=div_'.$friends[$j]['friend_user_id'].'>';
$friend_html.='<img src="'.$userPicture.'" id="imgfriend_'.$friend['friend_user_id'].'" title="'.$user_name.'" /> ';
$friend_html.='<div class="caption">
$friend_html.='</div>';
$friend_html.='<div class="content">
<a href="profile.php?u='.$friend['friend_user_id'].'"> <h5>'.$user_name.'</h5></a>';
$friend_html.='<p><button onclick="delete_friend(this)" id=img_'.$friend['friend_user_id'].' />'.get_lang('Delete').'</button></p>
</div>';
$friend_html.='</li>';
</div>';
$friend_html.='</div>';
}
$j++;
}
}
$friend_html.='</ul>';
$friend_html.='</div>';
$social_right_content .= $friend_html;
}

@ -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);

@ -1,5 +1,6 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com>
@ -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 .= '<a href="javascript: void(0);" onclick="javascript: add_user(\''.$user['user_id'].'\',\''.$person_name.' ('.$user['username'].')'.'\')">'.$person_name.' ('.$user['username'].')</a><br />';
} else {
$return .= '...<br />';
}
}
$xajax_response -> addAssign('ajax_list_users_single','innerHTML',api_utf8_encode($return));
} else {
global $nosessionUsersList;
$return .= '<select id="origin_users" name="nosessionUsersList[]" multiple="multiple" size="15" style="width:360px;">';
while ($user = Database :: fetch_array($rs)) {
$person_name = api_get_person_name($user['firstname'], $user['lastname']);
$return .= '<option value="'.$user['user_id'].'">'.$person_name.' ('.$user['username'].')</option>';
}
$return .= '</select>';
$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[] = '<script>
function add_user (code, content) {
// document.getElementById("user_to_add").value = "";
//document.getElementById("ajax_list_users_single").innerHTML = "";
destination = document.getElementById("destination_users");
for (i=0;i<destination.length;i++) {
if(destination.options[i].text == content) {
return false;
}
}
destination.options[destination.length] = new Option(content,code);
destination.selectedIndex = -1;
sortOptions(destination.options);
}
function remove_item(origin) {
for(var i = 0 ; i<origin.options.length ; i++) {
if(origin.options[i].selected) {
origin.options[i]=null;
i = i-1;
}
}
}
function validate_filter() {
document.formulaire.add_type.value = \''.$add_type.'\';
document.formulaire.form_sent.value=0;
document.formulaire.submit();
}
</script>';
$form_sent=0;
$errorMsg=$firstLetterUser=$firstLetterSession='';
$UserList=$SessionList=array();
$users=$sessions=array();
//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'].' <br />';
$content .= get_lang('ToSubscribeClickInTheLinkBelow').' <br />';
$content .= '<a href="'.api_get_path(WEB_CODE_PATH).'social/invitations.php?accept='.$group_id.'">'.get_lang('Subscribe').'</a>';
$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'].' <br />';
$content .= get_lang('ToSubscribeClickInTheLinkBelow').' <br />';
$content .= '<a href="'.api_get_path(WEB_CODE_PATH).'social/invitations.php?accept='.$group_id.'">'.
get_lang('Subscribe').'</a>';
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 = '<a href="'.api_get_self().'?id='.$group_id.'&add_type=unique">'.Display::return_icon('single.gif').get_lang('SessionAddTypeUnique').'</a>';
$link_add_type_multiple = Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple');
} else {
$link_add_type_unique = Display::return_icon('single.gif').get_lang('SessionAddTypeUnique');
$link_add_type_multiple = '<a href="'.api_get_self().'?id='.$group_id.'&add_type=multiple">'.Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple').'</a>';
}
$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 = '<h2>'.Security::remove_XSS($group_info['name'], STUDENT, true).'</h2>';
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 .= '<div>';
$social_right_content .= '<a href="search.php">'.get_lang('TryAndFindSomeFriends').'</a>';
$social_right_content .= '</div>';
$social_right_content .= '<div>';
$social_right_content .= '<a href="search.php">'.get_lang('TryAndFindSomeFriends').'</a>';
$social_right_content .= '</div>';
}
$add_true = null;
$ajax = null;
if (!empty($_GET['add'])) $add_true = '&add=true';
if ($ajax_search) $ajax = 'onsubmit="valide();"';
$form = '<form name="formulaire" method="post" action="'.api_get_self().'?id='.$group_id.$add_true.'" style="margin:0px;" '.$ajax.'>';
$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 .= '<h3>'.get_lang('FilterUsers').'</h3>';
foreach ($new_field_list as $new_field) {
$form .= $new_field['name'];
$varname = 'field_'.$new_field['variable'];
$form .= '&nbsp;<select name="'.$varname.'">';
$form .= '<option value="0">--'.get_lang('Select').'--</option>';
foreach ($new_field['data'] as $option) {
$checked='';
if (isset($_POST[$varname])) {
if ($_POST[$varname]==$option[1]) {
$checked = 'selected="true"';
}
}
$form .= '<option value="'.$option[1].'" '.$checked.'>'.$option[1].'</option>';
}
$form .= '</select>';
$form .= '&nbsp;&nbsp;';
}
$form .= '<input type="button" value="'.get_lang('Filter').'" onclick="validate_filter()" />';
$form .= '<br /><br />';
}
}*/
}
$group_members_element = $form->addElement(
'advmultiselect',
'invitation',
get_lang('Friends'),
$nosessionUsersList,
'style="width: 280px;"'
);
$form .= '<input type="hidden" name="form_sent" value="1" />';
$form .= '<input type="hidden" name="id" value="'.$group_id.'">';
$form .= '<input type="hidden" name="add_type" />';
if(!empty($errorMsg)) {
$form .= Display::return_message($errorMsg,'error'); //main API
}
$form .= '<table border="0" cellpadding="5" cellspacing="0" width="100%">
<tr>
<td align="center"><b>'.get_lang('Friends').' :</b>
</td>
<td></td>
<td align="center"><b>'.get_lang('SendInvitationTo').':</b></td></tr>';
if ($add_type=='no') {
$form .='
<tr>
<td align="center">'.get_lang('FirstLetterUser').' :
<select name="firstLetterUser" onchange = "xajax_search_users(this.value,\'multiple\')" >
<option value = "%">--</option>
'.Display :: get_alphabet_options().'
</select>
</td>
<td align="center">&nbsp;</td>
</tr>';
}
$form .= '
<tr>
<td align="center">
<div id="content_source">';
if (!($add_type=='multiple')) {
$form .='<input type="text" id="user_to_add" onkeyup="xajax_search_users(this.value,\'single\')" /><div id="ajax_list_users_single"></div>';
} else {
$form .= '<div id="ajax_list_users_multiple">
<select id="origin_users" name="nosessionUsersList[]" multiple="multiple" size="15" style="width:290px;">';
foreach($nosessionUsersList as $enreg) {
$selected = '';
if(in_array($enreg['user_id'],$UserList)) $selected = 'selected="selected"';
$form .= '<option value="'.$enreg['user_id'].'" '.$selected.'>'.api_get_person_name($enreg['firstname'], $enreg['lastname']).' ('.$enreg['username'].') </option>';
}
$form .= '</select>';
$form .= '</div>';
}
$form->addButtonSave(get_lang('InviteUsersToGroup'));
$social_right_content .= $form->returnForm();
unset($nosessionUsersList);
$form .= '</div>';
$form .= '</td><td width="10%" valign="middle" align="center">';
// Current group members
$members = $usergroup->get_users_by_group(
$group_id,
false,
array(GROUP_USER_PERMISSION_PENDING_INVITATION)
);
if ($ajax_search) {
$form .= '<button class="arrowl" type="button" onclick="remove_item(document.getElementById(\'destination_users\'))" ></button>';
} else {
$form .= '<button class="arrowr" type="button" onclick="moveItem(document.getElementById(\'origin_users\'), document.getElementById(\'destination_users\'))" ></button>
<br /><br />
<button class="arrowl" type="button" onclick="moveItem(document.getElementById(\'destination_users\'), document.getElementById(\'origin_users\'))" ></button>
<br /><br />';
}
$form .= ' <br /><br /><br /><br /><br />
</td>
<td align="center">
<select id="destination_users" name="sessionUsersList[]" multiple="multiple" size="15" style="width:290px;">';
foreach($sessionUsersList as $enreg) {
$form .= ' <option value="'.$enreg['user_id'].'">'.api_get_person_name($enreg['firstname'], $enreg['lastname']).' ('.$enreg['username'].')</option>';
}
unset($sessionUsersList);
$form .= '</select></td>
</tr>
<tr>
<td colspan="3" align="center">
<br />
<button class="save" type="button" value="" onclick="valide()" >'.get_lang('InviteUsersToGroup').'</button>
</td>
</tr>
</table>
</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'] = '<img src="'.$picture['file'].'" width="50px" height="50px" />';
$image = UserManager::getUserPicture($member['user_id']);
$member['image'] = '<img src="'.$image.'" width="50px" height="50px" />';
}
$social_right_content .= '<h3>'.get_lang('UsersAlreadyInvited').'</h3>';
$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[] = '<script>
function valide(){
var options = document.getElementById(\'destination_users\').options;
for (i = 0 ; i<options.length ; i++)
options[i].selected = true;
document.forms.formulaire.submit();
}
function loadUsersInSelect(select){
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr_object.open("POST", "loadUsersInSelect.ajax.php");
xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
nosessionUsers = makepost(document.getElementById("origin_users"));
sessionUsers = makepost(document.getElementById("destination_users"));
nosessionClasses = makepost(document.getElementById("origin_classes"));
sessionClasses = makepost(document.getElementById("destination_classes"));
xhr_object.send("nosessionusers="+nosessionUsers+"&sessionusers="+sessionUsers+"&nosessionclasses="+nosessionClasses+"&sessionclasses="+sessionClasses);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
document.getElementById("content_source").innerHTML = result = xhr_object.responseText;
//alert(xhr_object.responseText);
}
}
$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)
);
}
function makepost(select) {
var options = select.options;
var ret = "";
for (i = 0 ; i<options.length ; i++)
ret = ret + options[i].value +\'::\'+options[i].text+";;";
return ret;
}
</script>';
$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);

@ -1,36 +1,33 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com>
*/
/**
* 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 = '<h2>' . $group_info['name'] . '</h2>';
$social_right_content .= '<div style="width:90%">';
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 .= '</div>';
$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);

@ -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 .= '<a class="btn" href="group_view.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.get_lang('JoinGroup').'</a>';
} elseif ($my_group_role == GROUP_USER_PERMISSION_PENDING_INVITATION) {
$social_right_content .= '<a class="btn" href="group_view.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.get_lang('YouHaveBeenInvitedJoinNow').'</a>';
if (!in_array($role,
array(GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER, GROUP_USER_PERMISSION_PENDING_INVITATION))
) {
$social_right_content .= '<a class="btn" href="group_view.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.
get_lang('JoinGroup').'</a>';
} elseif ($role == GROUP_USER_PERMISSION_PENDING_INVITATION) {
$social_right_content .= '<a class="btn" href="group_view.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.
get_lang('YouHaveBeenInvitedJoinNow').'</a>';
}
$social_right_content .= '<br /><br />';
}
$content = MessageManager::display_messages_for_group($group_id);
if ($is_group_member) {
if (empty($content)) {
$create_thread_link = '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="ajax btn" title="'.get_lang('ComposeMessage').'">'.
$create_thread_link = '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=800&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="ajax btn" title="'.get_lang('ComposeMessage').'">'.
get_lang('YouShouldCreateATopic').'</a></li>';
} else {
$create_thread_link = '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="ajax btn" title="'.get_lang('ComposeMessage').'">'.
@ -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 .= '<a class="btn" href="group_view.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.get_lang('JoinGroup').'</a>';
} elseif ($my_group_role == GROUP_USER_PERMISSION_PENDING_INVITATION) {
} elseif ($role == GROUP_USER_PERMISSION_PENDING_INVITATION) {
$social_right_content .= '<a class="btn" href="group_view.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.get_lang('YouHaveBeenInvitedJoinNow').'</a>';
}
}

@ -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();

@ -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 = '<div class="panel panel-default social-search">';
$social_search_block .= '<div class="panel-heading">'.get_lang("SearchUsers").'</div>';
$social_search_block .= '<div class="panel-body">';
$social_search_block.= UserManager::get_search_form('');
$social_search_block.= '</div>';
$social_search_block.= '</div>';*/
$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'] = '<div class="group-name">'.Display::url(
api_ucwords(cut($result['name'], 40, true)), $group_url)
.'</div><div class="count-username">'.Display::return_icon('user.png','','',ICON_SIZE_TINY).$result['count'].'</div>';
.'</div><div class="count-username">'.
Display::return_icon('user.png','','',ICON_SIZE_TINY).$result['count'].'</div>';
$picture = GroupPortalManager::get_picture_group(
$picture = $userGroup->get_picture_group(
$id,
$result['picture_uri'],
$result['picture'],
80
);
$result['picture_uri'] = '<img class="group-image" src="' . $picture['file'] . '" />';
$result['picture'] = '<img class="group-image" src="' . $picture['file'] . '" />';
$group_actions = '<div class="group-more"><a href="groups.php?#tab_browse-2">' . get_lang('SeeMore') . '</a></div>';
$group_info= '<div class="description"><p>' . cut($result['description'], 120, true) . "</p></div>";
$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)
.'</div><div class="count-username">'.Display::return_icon('user.png','','',ICON_SIZE_TINY).$result['count'].'</div>';
$picture = GroupPortalManager::get_picture_group(
$picture = $userGroup->get_picture_group(
$id,
$result['picture_uri'],
$result['picture'],
80
);
$result['picture_uri'] = '<img class="group-image" src="' . $picture['file'] . '" />';
@ -274,16 +268,6 @@ if ($list > 0) {
$social_group_block.="</div>";
}
$social_group_block.= "</div>";
/*$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'));

@ -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[] = '
<script>
function denied_friend (element_input) {
@ -65,30 +67,6 @@ function register_friend(element_input) {
$show_message = null;
$content = 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 = Display::return_message(get_lang('UserIsSubscribedToThisGroup'), 'success');
} elseif (in_array($user_role, array(GROUP_USER_PERMISSION_READER, GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_MODERATOR))) {
$show_message = Display::return_message(get_lang('UserIsAlreadySubscribedToThisGroup'), 'warning');
} else {
$show_message = Display::return_message(get_lang('UserIsNotSubscribedToThisGroup'), 'warning');
}
break 2;
case 'deny':
// delete invitation
GroupPortalManager::delete_user_rel_group(api_get_user_id(), $value);
$show_message = Display::return_message(get_lang('GroupInvitationWasDeny'));
break 2;
}
}
}
// Block Menu Social
$social_menu_block = SocialManager::show_social_menu('invitations');
// Block Invitations
@ -97,7 +75,10 @@ $socialInvitationsBlock = '<div id="id_response" align="center"></div>';
$user_id = api_get_user_id();
$list_get_invitation = SocialManager::get_list_invitation_of_friends_by_user_id($user_id);
$list_get_invitation_sent = SocialManager::get_list_invitation_sent_by_user_id($user_id);
$pending_invitations = GroupPortalManager::get_groups_by_user($user_id, GROUP_USER_PERMISSION_PENDING_INVITATION);
$pending_invitations = $userGroup->get_groups_by_user(
$user_id,
GROUP_USER_PERMISSION_PENDING_INVITATION
);
$number_loop = count($list_get_invitation);
$total_invitations = $number_loop + count($list_get_invitation_sent) + count($pending_invitations);
@ -113,97 +94,92 @@ if ($total_invitations == 0 && count($_GET) <= 0) {
}
if ($number_loop != 0) {
$socialInvitationsBlock .= '<div class="panel panel-default">';
$socialInvitationsBlock .= '<div class="panel-heading">'.get_lang('InvitationReceived').'</div>';
$socialInvitationsBlock .= '<div class="panel-body">';
$invitationHtml = '';
foreach ($list_get_invitation as $invitation) {
$sender_user_id = $invitation['user_sender_id'];
$user_info = api_get_user_info($sender_user_id);
$userPicture = $user_info['avatar'];
$socialInvitationsBlock .= '<div id="id_'.$sender_user_id.'" class="well">';
$invitationHtml .= '<div id="id_'.$sender_user_id.'" class="well">';
$title = Security::remove_XSS($invitation['title'], STUDENT, true);
$content = Security::remove_XSS($invitation['content'], STUDENT, true);
$date = api_convert_and_format_date($invitation['send_date'], DATE_TIME_FORMAT_LONG);
$socialInvitationsBlock .= '<div class="row">';
$socialInvitationsBlock .= '<div class="col-md-3">';
$socialInvitationsBlock .= '<a href="profile.php?u='.$sender_user_id.'"><img src="'.$userPicture.'"/></a>';
$socialInvitationsBlock .= '</div>';
$socialInvitationsBlock .= '<div class="col-md-9">';
$socialInvitationsBlock .= '<h4 class="title-profile"><a href="profile.php?u='.$sender_user_id.'">
$invitationHtml .= '<div class="row">';
$invitationHtml .= '<div class="col-md-3">';
$invitationHtml .= '<a href="profile.php?u='.$sender_user_id.'"><img src="'.$userPicture.'"/></a>';
$invitationHtml .= '</div>';
$invitationHtml .= '<div class="col-md-9">';
$invitationHtml .= '<h4 class="title-profile"><a href="profile.php?u='.$sender_user_id.'">
'.$user_info['complete_name'].'</a>:
</h4>';
$socialInvitationsBlock .= '<div class="content-invitation">'.$content.'</div>';
$socialInvitationsBlock .= '<div class="date-invitation">'.get_lang('DateSend').' : '.$date.'</div>';
$socialInvitationsBlock .= '<div class="btn-group" role="group">
<button class="btn btn-success" type="submit" id="btn_accepted_'.$sender_user_id.'" onclick="javascript:register_friend(this)">
<i class="fa fa-check"></i> '.get_lang('AcceptInvitation').'</button>
<button class="btn btn-danger" type="submit" id="btn_deniedst_'.$sender_user_id.' " onclick="javascript:denied_friend(this)" >
<i class="fa fa-times"></i> '.get_lang('DenyInvitation').'</button>
';
$socialInvitationsBlock .= '</div>';
$socialInvitationsBlock .= '</div>';
$socialInvitationsBlock .= '</div></div>';
$invitationHtml .= '<div class="content-invitation">'.$content.'</div>';
$invitationHtml .= '<div class="date-invitation">'.get_lang('DateSend').' : '.$date.'</div>';
$invitationHtml .= '<div class="btn-group" role="group">
<button class="btn btn-success" type="submit" id="btn_accepted_'.$sender_user_id.'" onclick="javascript:register_friend(this)">
<i class="fa fa-check"></i> '.get_lang('AcceptInvitation').'</button>
<button class="btn btn-danger" type="submit" id="btn_deniedst_'.$sender_user_id.' " onclick="javascript:denied_friend(this)" >
<i class="fa fa-times"></i> '.get_lang('DenyInvitation').'</button>
';
$invitationHtml .= '</div>';
$invitationHtml .= '</div>';
$invitationHtml .= '</div></div>';
}
$socialInvitationsBlock .= '</div></div>';
$socialInvitationsBlock .= Display::panel($invitationHtml, get_lang('InvitationReceived'));
}
if (count($list_get_invitation_sent) > 0) {
$socialInvitationsBlock .= '<div class="panel panel-default">';
$socialInvitationsBlock .= '<div class="panel-heading">'.get_lang('InvitationSent').'</div>';
$socialInvitationsBlock .= '<div class="panel-body">';
$invitationSentHtml = '';
foreach ($list_get_invitation_sent as $invitation) {
$sender_user_id = $invitation['user_receiver_id'];
$user_info = api_get_user_info($sender_user_id);
$socialInvitationsBlock .= '<div id="id_'.$sender_user_id.'" class="well">';
$invitationSentHtml .= '<div id="id_'.$sender_user_id.'" class="well">';
$title = Security::remove_XSS($invitation['title'], STUDENT, true);
$content = Security::remove_XSS($invitation['content'], STUDENT, true);
$date = api_convert_and_format_date($invitation['send_date'], DATE_TIME_FORMAT_LONG);
$socialInvitationsBlock .= '<div class="row">';
$socialInvitationsBlock .= '<div class="col-md-3">';
$socialInvitationsBlock .= '<a href="profile.php?u='.$sender_user_id.'"><img src="'.$user_info['avatar'].'" /></a>';
$socialInvitationsBlock .= '</div>';
$socialInvitationsBlock .= '<div class="col-md-9">';
$socialInvitationsBlock .= '<h4 class="title-profile"><a class="profile_link" href="profile.php?u='.$sender_user_id.'">'.$user_info['complete_name'].'</a></h4>';
$socialInvitationsBlock .= '<div class="content-invitation">'.$title.' : '.$content.'</div>';
$socialInvitationsBlock .= '<div class="date-invitation">'. get_lang('DateSend').' : '.$date.'</div>';
$socialInvitationsBlock .= '</div>';
$socialInvitationsBlock .= '</div></div>';
$invitationSentHtml .= '<div class="row">';
$invitationSentHtml .= '<div class="col-md-3">';
$invitationSentHtml .= '<a href="profile.php?u='.$sender_user_id.'"><img src="'.$user_info['avatar'].'" /></a>';
$invitationSentHtml .= '</div>';
$invitationSentHtml .= '<div class="col-md-9">';
$invitationSentHtml .= '<h4 class="title-profile"><a class="profile_link" href="profile.php?u='.$sender_user_id.'">'.$user_info['complete_name'].'</a></h4>';
$invitationSentHtml .= '<div class="content-invitation">'.$title.' : '.$content.'</div>';
$invitationSentHtml .= '<div class="date-invitation">'. get_lang('DateSend').' : '.$date.'</div>';
$invitationSentHtml .= '</div>';
$invitationSentHtml .= '</div></div>';
}
$socialInvitationsBlock .= '</div></div>';
$socialInvitationsBlock .= Display::panel($invitationSentHtml, get_lang('InvitationSent'));
}
if (count($pending_invitations) > 0) {
$socialInvitationsBlock .= '<div class="panel panel-default">';
$socialInvitationsBlock .= '<div class="panel-heading">'.get_lang('GroupsWaitingApproval').'</div>';
$socialInvitationsBlock .= '<div class="panel-body">';
$new_invitation = array();
$waitingInvitation = '';
foreach ($pending_invitations as $invitation) {
$picture = GroupPortalManager::get_picture_group($invitation['id'], $invitation['picture_uri'],80);
$picture = $userGroup->get_picture_group(
$invitation['id'],
$invitation['picture'],
80
);
$img = '<img class="social-groups-image" src="'.$picture['file'].'" />';
$invitation['picture_uri'] = '<a href="group_view.php?id='.$invitation['id'].'">'.$img.'</a>';
$invitation['name'] = '<a href="group_view.php?id='.$invitation['id'].'">'.cut($invitation['name'],120,true).'</a>';
$invitation['description'] = cut($invitation['description'],220,true);
$new_invitation[]=$invitation;
$socialInvitationsBlock .= '<div class="well"><div class="row">';
$socialInvitationsBlock .= '<div class="col-md-3">'.$invitation['picture_uri'].'</div>';
$socialInvitationsBlock .= '<div class="col-md-9">';
$socialInvitationsBlock .= '<h4 class="tittle-profile">'.$invitation['name'].'</h4>';
$socialInvitationsBlock .= '<div class="description-group">'.$invitation['description'].'</div>';
$socialInvitationsBlock .= '<div class="btn-group" role="group">';
$socialInvitationsBlock .= '<a class="btn btn-success" href="invitations.php?accept='.$invitation['id'].'"><i class="fa fa-check"></i> '.get_lang('AcceptInvitation').'</a>';
$socialInvitationsBlock .= '<a class="btn btn-danger" href="invitations.php?deny='.$invitation['id'].'"><i class="fa fa-times"></i> '.get_lang('DenyInvitation').'</a>';
$socialInvitationsBlock .='</div>';
$socialInvitationsBlock .= '</div></div>';
$waitingInvitation .= '<div class="well"><div class="row">';
$waitingInvitation .= '<div class="col-md-3">'.$invitation['picture_uri'].'</div>';
$waitingInvitation .= '<div class="col-md-9">';
$waitingInvitation .= '<h4 class="tittle-profile">'.$invitation['name'].'</h4>';
$waitingInvitation .= '<div class="description-group">'.$invitation['description'].'</div>';
$waitingInvitation .= '<div class="btn-group" role="group">';
$waitingInvitation .= '<a class="btn btn-success" href="invitations.php?accept='.$invitation['id'].'"><i class="fa fa-check"></i> '.get_lang('AcceptInvitation').'</a>';
$waitingInvitation .= '<a class="btn btn-danger" href="invitations.php?deny='.$invitation['id'].'"><i class="fa fa-times"></i> '.get_lang('DenyInvitation').'</a>';
$waitingInvitation .='</div>';
$waitingInvitation .= '</div></div>';
}
$socialInvitationsBlock.='</div></div>';
$socialInvitationsBlock .= Display::panel($waitingInvitation, get_lang('GroupsWaitingApproval'));
}
$tpl = new Template(null);

@ -20,7 +20,6 @@ if (isset($_REQUEST['user_friend'])) {
$info_user_friend=array();
$info_path_friend=array();
$userfriend_id = intval($_REQUEST['user_friend']);
$panel = Security::remove_XSS($_REQUEST['view_panel']);
$info_user_friend = api_get_user_info($userfriend_id);
$info_path_friend = UserManager::get_user_picture_path_by_id($userfriend_id,'web');
}
@ -43,15 +42,14 @@ if (!empty($group_id) && $allowed_action) {
api_not_allowed(true);
}
$to_group = $group_info['name'];
$to_group = $group_info['name'];
if (!empty($message_id)) {
$message_info = MessageManager::get_message_by_id($message_id);
if ($allowed_action == 'reply_message_group') {
$subject = get_lang('Reply').': '.api_xml_http_response_encode($message_info['title']);
//$message = api_xml_http_response_encode($message_info['content']);
$subject = get_lang('Reply').': '.api_xml_http_response_encode($message_info['title']);
} else {
$subject = api_xml_http_response_encode($message_info['title']);
$message = api_xml_http_response_encode($message_info['content']);
$subject = api_xml_http_response_encode($message_info['title']);
$message = api_xml_http_response_encode($message_info['content']);
}
}
}
@ -83,19 +81,20 @@ if (api_get_setting('allow_message_tool')=='true') {
$form->addElement('text', 'title', get_lang('Title'));
$height = 140;
}
$form->addElement('html_editor', 'content');
$config = ['ToolbarSet' => 'Messages'];
$form->addHtmlEditor('content', get_lang('Message'), true, false, $config);
$form->addElement('label', null, get_lang('AttachmentFiles'));
$form->addElement('label', null, '<div id="link-more-attach">
<a href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a>'
<a class="btn btn-default" href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a>'
);
$form->addElement('html', '<span id="filepaths"></span>');
$form->addElement('file', 'attach_1', sprintf(get_lang('MaximunFileSizeX'), format_file_size(api_get_setting('message_max_upload_filesize'))));
$form->addElement('html', '</div>');
$form->addElement('button', 'submit', get_lang('SendMessage'));
$form->addButtonSend(get_lang('SendMessage'));
$form->setDefaults(['content' => $message, 'title' => $subject]);
$form->display();
}
$tpl->display_blank_template();

@ -76,59 +76,7 @@ $(document).on("ready", function () {
</script>';
$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;

@ -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) {
});
}
}
</script>';
$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 = '<div class="well sidebar-nav">' .$friend_html . '</div>';
/*
$personal_info = null;
if (!empty($user_info['firstname']) || !empty($user_info['lastname'])) {
$personal_info .= '<div><h3>'.api_get_person_name($user_info['firstname'], $user_info['lastname']).'</h3></div>';
} else {
//--- Basic Information
$personal_info .= '<div><h3>'.get_lang('Profile').'</h3></div>';
}
if ($show_full_profile) {
$personal_info .= '<dl class="dl-horizontal">';
if ($isAdmin || $isSelfUser) {
$personal_info .= '<dt>'.get_lang('UserName').'</dt><dd>'. $user_info['username'].' </dd>';
}
if (!empty($user_info['firstname']) || !empty($user_info['lastname'])) {
$personal_info .= '<dt>'.get_lang('Name')
.'</dt><dd>'. api_get_person_name($user_info['firstname'], $user_info['lastname']).'</dd>';
}
if (($isAdmin || $isSelfUser) && !empty($user_info['official_code'])) {
$personal_info .= '<dt>'.get_lang('OfficialCode').'</dt><dd>'.$user_info['official_code'].'</dd>';
}
if (!empty($user_info['email'])) {
if (api_get_setting('show_email_addresses')=='true') {
$personal_info .= '<dt>'.get_lang('Email').'</dt><dd>'.$user_info['email'].'</dd>';
}
if (!empty($user_info['phone'])) {
$personal_info .= '<dt>'.get_lang('Phone').'</dt><dd>'. $user_info['phone'].'</dd>';
}
$personal_info .= '</dl>';
}
} else {
$personal_info .= '<dl class="dl-horizontal">';
if (!empty($user_info['username'])) {
if ($isAdmin || $isSelfUser) {
$personal_info .= '<dt>'.get_lang('UserName').'</dt><dd>'. $user_info['username'].'</dd>';
}
}
$personal_info .= '</dl>';
}
*/
//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 .= '</div></div>'; //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 = '<div class="box_shared_profile_group_description">'
//.'<p class="social-groups-text4">'.cut($result['description'],100,true).'</p></div>';
} else {
//$item_description = '<div class="box_shared_profile_group_description">'
//.'<span class="social-groups-text2"></span><p class="social-groups-text4"></p></div>';
}
//$result['picture_uri'] = '<div class="box_shared_profile_group_image">'
//.'<img class="social-groups-image" src="'.$picture['file'].'" hspace="4" height="50"'
//.' border="2" align="left" width="50" /></div>';
$item_actions = '';
//if (api_get_user_id() == $user_id) {
//$item_actions = '<div class="box_shared_profile_group_actions"><a href="groups.php?id='.$id.'">'
//.get_lang('SeeMore').$url_close.'</div>';
//}
$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 .= '<div class="panel panel-default">';
$my_courses .= '<div class="panel-heading">'.api_ucfirst(get_lang('MyCourses')).'</div>';
$my_courses .= '<div class="panel-body">';
@ -551,7 +489,6 @@ if ($show_full_profile) {
}
}
$my_courses .= '</div></div>';
$social_course_block .= $my_courses;
}
@ -573,7 +510,6 @@ if ($show_full_profile) {
$rss .= '<div class="panel-heading">'.get_lang('RSSFeeds').'</div>';
$rss .= '<div class="panel-body">'.$user_feeds.'</div></div>';
$social_rss_block = $rss;
}
//BLock Social Skill
@ -634,7 +570,7 @@ if ($show_full_profile) {
$social_skill_block .= '<div class="panel-body">';
$social_skill_block .= Display::tag('ul', $lis, array('class' => 'list-badges'));
$social_skill_block .= '</div>';
}else{
} else {
$social_skill_block .= '<div class="panel-body">';
$social_skill_block .= '<p>'. get_lang("WithoutAchievedSkills") . '</p>';
@ -644,8 +580,7 @@ if ($show_full_profile) {
$social_skill_block.='</div>';
}
//--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);

@ -1,13 +1,12 @@
<?php
/* For licensing terms, see /license.txt */
/**
* Helper file for friends and groups profiles
* @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com>
*/
/**
* 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 .= '<div id="friend-header" >';
if ($number_friends == 1) {
$friend_html .= '<div style="float:left;width:80%">' . $number_friends . ' ' . get_lang(
'Friend'
) . '</div>';
$friend_html .= '<div style="float:left;width:80%">' . $number_friends . ' ' . get_lang('Friend') . '</div>';
} else {
$friend_html .= '<div style="float:left;width:80%">' . $number_friends . ' ' . get_lang(
'Friends'
) . '</div>';
$friend_html .= '<div style="float:left;width:80%">' . $number_friends . ' ' . get_lang('Friends') . '</div>';
}
$friend_html .= '</div>'; // 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 .= '<a href="profile.php?u=' . $friend['friend_user_id'] . '&amp;' . $link_shared . '">';
$friend_html .= '<a href="profile.php?u=' . $friend['friend_user_id'].'">';
$friend_html .= '<img src="' . $userPicture . '" id="imgfriend_' . $friend['friend_user_id'] . '" title="' . $name_user . '" />';
$friend_html .= '</center></span>';
$friend_html .= '<center class="friend">' . $name_user . '</a></center>';
@ -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 = '<div class="box_shared_profile_group_title">' . $url_open . api_xml_http_response_encode(
$name
) . $icon . $url_close . '</div>';
$item_name = '<div class="box_shared_profile_group_title">' . $url_open . api_xml_http_response_encode($name) . $icon . $url_close . '</div>';
$item_description = '';
if (!empty($result['description'])) {
$item_description = '<div class="box_shared_profile_group_description"><span class="social-groups-text2">' . api_xml_http_response_encode(
get_lang('Description')
) . '</span><p class="social-groups-text4">' . cut(
api_xml_http_response_encode(
$result['description']
),
120,
true
) . '</p></div>';
$item_description = '<div class="box_shared_profile_group_description">
<span class="social-groups-text2">' .
api_xml_http_response_encode(get_lang('Description')) . '</span><p class="social-groups-text4">' .
cut(api_xml_http_response_encode($result['description']), 120, true ) . '</p></div>';
}
$result['picture_uri'] = '<div class="box_shared_profile_group_image"><img class="social-groups-image" src="' . $picture['file'] . '" hspace="4" height="50" border="2" align="left" width="50" /></div>';
$result['picture_uri'] = '<div class="box_shared_profile_group_image">
<img class="social-groups-image" src="' . $picture['file'] . '" hspace="4" height="50" border="2" align="left" width="50" /></div>';
$item_actions = '';
if (api_get_user_id() == $user_id) {
$item_actions = '<div class="box_shared_profile_group_actions"><a href="group_view.php?id=' . $id . '">' . get_lang(
'SeeMore'
) . $url_close . '</div>';
$item_actions = '<div class="box_shared_profile_group_actions"><a href="group_view.php?id=' . $id . '">' .
get_lang('SeeMore') . $url_close . '</div>';
}
$grid_my_groups[] = array(
$item_name,

@ -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);
}

@ -8,7 +8,7 @@
{{ social_menu_block }}
</div>
</div>
<div id="wallMessages" class="col-md-5" style="min-height:1px">
<div id="wallMessages" class="col-md-9" style="min-height:1px">
<div class="row">
<div class="col-md-12">
<div id="message_ajax_reponse" class=""></div>

@ -5,6 +5,7 @@
<div class="col-md-3">
{{ social_avatar_block }}
{{ social_extra_info_block }}
{{ social_friend_block }}
<div class="social-menu">
{{ social_menu_block }}
</div>

@ -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 '<div class="actions">';
if ($type == 'registered') {
echo '<a href="class.php?'.api_get_cidreq().'&type=not_registered">'.Display::return_icon('add.png', get_lang("AddClassesToACourse"), array(), ICON_SIZE_MEDIUM).'</a>';
echo '<a href="class.php?'.api_get_cidreq().'&type=not_registered">'.
Display::return_icon('add.png', get_lang("AddClassesToACourse"), array(), ICON_SIZE_MEDIUM).'</a>';
} else {
echo '<a href="class.php?'.api_get_cidreq().'&type=registered">'.Display::return_icon('empty_evaluation.png', get_lang("Classes"), array(), ICON_SIZE_MEDIUM).'</a>';
echo '<a href="class.php?'.api_get_cidreq().'&type=registered">'.
Display::return_icon('empty_evaluation.png', get_lang("Classes"), array(), ICON_SIZE_MEDIUM).'</a>';
}
echo '</div>';
}
@ -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 \''
.' <a href="class.php?action=add_class&id=\'+options.rowId+\'"><img src="../img/icons/22/user_to_class.png" title="'.get_lang('SubscribeUsersToClass').'"></a>'

@ -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 */

@ -0,0 +1,125 @@
<?php
namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* GroupRelGroup
*
* @ORM\Table(name="usergroup_rel_usergroup")
* @ORM\Entity
*/
class UserGroupRelUserGroup
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
private $id;
/**
* @var integer
*
* @ORM\Column(name="group_id", type="integer", nullable=false)
*/
private $groupId;
/**
* @var integer
*
* @ORM\Column(name="subgroup_id", type="integer", nullable=false)
*/
private $subgroupId;
/**
* @var integer
*
* @ORM\Column(name="relation_type", type="integer", nullable=false)
*/
private $relationType;
/**
* Set groupId
*
* @param integer $groupId
*
* @return $this
*/
public function setGroupId($groupId)
{
$this->groupId = $groupId;
return $this;
}
/**
* Get groupId
*
* @return integer
*/
public function getGroupId()
{
return $this->groupId;
}
/**
* Set subgroupId
*
* @param integer $subgroupId
* @return $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;
}
}

@ -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;

Loading…
Cancel
Save