Unify classes and usergroup see BT#4301 (partial)

1.10.x
Julio Montoya 10 years ago
parent 76529c85da
commit 545ca410a2
  1. 3
      composer.json
  2. 2
      main/admin/group_list.php
  3. 94
      main/admin/usergroups.php
  4. 2
      main/inc/ajax/model.ajax.php
  5. 2
      main/inc/lib/agenda.lib.php
  6. 10
      main/inc/lib/group_portal_manager.lib.php
  7. 1
      main/inc/lib/internationalization.lib.php
  8. 19
      main/inc/lib/message.lib.php
  9. 27
      main/inc/lib/social.lib.php
  10. 11
      main/inc/lib/template.lib.php
  11. 1092
      main/inc/lib/usergroup.lib.php
  12. 6
      main/inc/lib/usermanager.lib.php
  13. 2
      main/messages/new_message.php
  14. 76
      main/social/group_add.php
  15. 107
      main/social/group_edit.php
  16. 610
      main/social/group_invitation.php
  17. 200
      main/social/group_topics.php
  18. 257
      main/social/group_view.php
  19. 66
      main/social/group_waiting_list.php
  20. 973
      main/social/groups.php
  21. 4
      main/social/home.php
  22. 4
      main/social/invitations.php
  23. 151
      main/social/message_for_group_form.inc.php
  24. 2
      main/social/profile.php
  25. 4
      main/social/profile_friends_and_groups.inc.php
  26. 18
      main/social/search.php
  27. 3
      main/template/default/layout/footer.tpl
  28. 4
      main/template/default/social/group_block.tpl
  29. 38
      main/template/default/social/group_view.tpl
  30. 1
      main/template/default/social/home.tpl
  31. 84
      src/Chamilo/CoreBundle/Entity/Usergroup.php
  32. 33
      src/Chamilo/CoreBundle/Entity/UsergroupRelUser.php
  33. 108
      src/Chamilo/CoreBundle/Migrations/Schema/V110/Version20150522112023.php

@ -81,7 +81,8 @@
"graphp/algorithms": "~0.8.0",
"sunra/php-simple-html-dom-parser": "~1.5.0",
"media-alchemyst/media-alchemyst": "0.4.8",
"php-ffmpeg/php-ffmpeg": "0.5.1"
"php-ffmpeg/php-ffmpeg": "0.5.1",
"imagine/imagine": "0.6.2"
},
"require-dev": {
"behat/behat": "2.5.*@stable",

@ -126,7 +126,7 @@ function get_group_data($from, $number_of_items, $column, $direction) {
$groupRelations[$id]['name'] . " > " . $name :
$groupRelations[$id]['name'];
$group[3] = $status[$group[3]];
$group['1'] = '<a href="'.api_get_path(WEB_CODE_PATH).'social/groups.php?id='.$group['0'].'">'.$name.'</a>';
$group['1'] = '<a href="'.api_get_path(WEB_CODE_PATH).'social/group_view.php?id='.$group['0'].'">'.$name.'</a>';
$groups[] = $group;
}
return $groups;

@ -46,16 +46,21 @@ $url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_usergroups';
//The order is important you need to check the the $column variable in the model.ajax.php file
$columns = array(
get_lang('Id'), get_lang('Name'), get_lang('Users'), get_lang('Courses'), get_lang('Sessions'), get_lang('Actions')
get_lang('Name'),
get_lang('Users'),
get_lang('Courses'),
get_lang('Sessions'),
get_lang('Type'),
get_lang('Actions'),
);
//Column config
$column_model = array(
array('name'=>'id', 'index'=>'id', 'width'=>'5', 'align'=>'left'),
array('name'=>'name', 'index'=>'name', 'width'=>'35', 'align'=>'left'),
array('name'=>'users', 'index'=>'users', 'width'=>'15', 'align'=>'left'),
array('name'=>'courses', 'index'=>'courses', 'width'=>'15', 'align'=>'left'),
array('name'=>'sessions', 'index'=>'sessions', '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','formatter'=>'action_formatter'),
);
@ -71,7 +76,7 @@ $action_links = 'function action_formatter (cellvalue, options, rowObject) {
.' <a href="add_users_to_usergroup.php?id=\'+options.rowId+\'"><img src="../img/icons/22/user_to_class.png" title="'.get_lang('SubscribeUsersToClass').'"></a>'
.' <a href="add_courses_to_usergroup.php?id=\'+options.rowId+\'"><img src="../img/icons/22/course_to_class.png" title="'.get_lang('SubscribeClassToCourses').'"></a>'
.' <a href="add_sessions_to_usergroup.php?id=\'+options.rowId+\'"><img src="../img/icons/22/sessions_to_class.png" title="'.get_lang('SubscribeClassToSessions').'"></a>'
.' <a href="?action=edit&id=\'+options.rowId+\'"><img width="20px" src="../img/edit.png" title="'.get_lang('Edit').'" ></a>'
.' <a href="?action=edit&id=\'+options.rowId+\'"><img width="22px" src="../img/edit.png" title="'.get_lang('Edit').'" ></a>'
.' <a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;" href="?action=delete&id=\'+options.rowId+\'"><img title="'.get_lang('Delete').'" src="../img/delete.png"></a>\';
}';
@ -89,7 +94,7 @@ $(function() {
Display::display_introduction_section(get_lang('Classes'));
$usergroup = new UserGroup();
$usergroup->showGroupTypeSetting = true;
// Action handling: Adding a note
if (isset($_GET['action']) && $_GET['action'] == 'add') {
if (api_get_session_id() != 0 && !api_is_allowed_to_session_edit(false, true)) {
@ -101,35 +106,26 @@ if (isset($_GET['action']) && $_GET['action'] == 'add') {
// Initiate the object
$form = new FormValidator('note', 'post', api_get_self().'?action='.Security::remove_XSS($_GET['action']));
// Setting the form elements
$form->addElement('header', get_lang('Add'));
$form->addElement('text', 'name', get_lang('Name'), array('size' => '70', 'id' => 'name'));
$form->addHtmlEditor('description', get_lang('Description'), false, false, array('Width' => '95%', 'Height' => '250'));
$form->addButtonCreate(get_lang('Add'));
// Setting the rules
$form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
$usergroup->setForm($form, 'add');
// The validation or display
if ($form->validate()) {
$check = Security::check_token('post');
if ($check) {
$values = $form->exportValues();
$res = $usergroup->save($values);
if ($res) {
Display::display_confirmation_message(get_lang('ItemAdded'));
} else {
Display::display_warning_message(
Security::remove_XSS($values['name']).': '.
get_lang('AlreadyExists')
);
}
$values = $form->exportValues();
$res = $usergroup->save($values);
if ($res) {
Display::display_confirmation_message(get_lang('ItemAdded'));
} else {
Display::display_warning_message(
Security::remove_XSS($values['name']).': '.
get_lang('AlreadyExists')
);
}
Security::clear_token();
$usergroup->display();
} else {
echo '<div class="actions">';
echo '<a href="'.api_get_self().'">'.Display::return_icon('back.png',get_lang('Back'),'',ICON_SIZE_MEDIUM).'</a>';
echo '<a href="'.api_get_self().'">'.
Display::return_icon('back.png',get_lang('Back'),'',ICON_SIZE_MEDIUM).'</a>';
echo '</div>';
$token = Security::get_token();
$form->addElement('hidden', 'sec_token');
@ -137,39 +133,30 @@ if (isset($_GET['action']) && $_GET['action'] == 'add') {
$form->display();
}
} elseif (isset($_GET['action']) && $_GET['action'] == 'edit' && is_numeric($_GET['id'])) {
// Action handling: Editing a note
// Initialize the object
$form = new FormValidator('career', 'post', api_get_self().'?action='.Security::remove_XSS($_GET['action']).'&id='.Security::remove_XSS($_GET['id']));
$id = intval($_GET['id']);
$form = new FormValidator('usergroup', 'post', api_get_self().'?action='.Security::remove_XSS($_GET['action']).'&id='.$id);
$defaults = $usergroup->get($id);
$usergroup->setForm($form, 'edit', $defaults);
// Setting the form elements
$form->addElement('header', '', get_lang('Modify'));
$form->addElement('hidden', 'id', intval($_GET['id']));
$form->addElement('text', 'name', get_lang('Name'), array('size' => '70'));
$form->addHtmlEditor('description', get_lang('Description'), false, false, array('Width' => '95%', 'Height' => '250'));
$form->addButtonSave(get_lang('Save'));
$form->addElement('hidden', 'id', $id);
// Setting the defaults
$defaults = $usergroup->get($_GET['id']);
$form->setDefaults($defaults);
// Setting the rules.
$form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
// The validation or display.
if ($form->validate()) {
$check = Security::check_token('post');
if ($check) {
$values = $form->exportValues();
$res = $usergroup->update($values);
if ($res) {
Display::display_confirmation_message(get_lang('Updated'));
} else {
Display::display_warning_message(
Security::remove_XSS($values['name']).': '.
get_lang('AlreadyExists')
);
}
$values = $form->getSubmitValues();
$res = $usergroup->update($values);
if ($res) {
Display::display_confirmation_message(get_lang('Updated'));
} else {
Display::display_warning_message(
Security::remove_XSS($values['name']).': '.
get_lang('AlreadyExists')
);
}
Security::clear_token();
$usergroup->display();
} else {
echo '<div class="actions">';
@ -180,13 +167,10 @@ if (isset($_GET['action']) && $_GET['action'] == 'add') {
ICON_SIZE_MEDIUM
).'</a>';
echo '</div>';
$token = Security::get_token();
$form->addElement('hidden', 'sec_token');
$form->setConstants(array('sec_token' => $token));
$form->display();
}
} elseif (isset($_GET['action']) && $_GET['action'] == 'delete' && is_numeric($_GET['id'])) {
$res = $usergroup->delete(Security::remove_XSS($_GET['id']));
$res = $usergroup->delete($_GET['id']);
if ($res) {
Display::display_confirmation_message(get_lang('Deleted'));
}

@ -1249,7 +1249,7 @@ switch ($action) {
$result = $new_result;
break;
case 'get_usergroups':
$columns = array('id', 'name', 'users', 'courses','sessions','actions');
$columns = array('name', 'users', 'courses', 'sessions', 'group_type', 'actions');
$result = $obj->getUsergroupsPagination($sidx, $sord, $start, $limit);
break;
case 'get_extra_fields':

@ -941,7 +941,7 @@ class Agenda
}
break;
}
//var_dump($this->events);
if (!empty($this->events)) {
switch ($format) {
case 'json':

@ -1225,7 +1225,7 @@ class GroupPortalManager
$relation_group_title = get_lang('IAmAReader');
$links .= '<li><a href="group_invitation.php?id='.$group_id.'">'.Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace' => '6')).'<span class="'.($show == 'invite_friends' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('InviteFriends').'</span></a></li>';
if (GroupPortalManager::canLeave($group_info)) {
$links .= '<li><a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
$links .= '<li><a href="group_view.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
}
break;
case GROUP_USER_PERMISSION_ADMIN:
@ -1234,7 +1234,7 @@ class GroupPortalManager
$links .= '<li><a href="group_waiting_list.php?id='.$group_id.'">'.Display::return_icon('waiting_list.png', get_lang('WaitingList'), array('hspace' => '6')).'<span class="'.($show == 'waiting_list' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('WaitingList').'</span></a></li>';
$links .= '<li><a href="group_invitation.php?id='.$group_id.'">'.Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace' => '6')).'<span class="'.($show == 'invite_friends' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('InviteFriends').'</span></a></li>';
if (GroupPortalManager::canLeave($group_info)) {
$links .= '<li><a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
$links .= '<li><a href="group_view.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
}
break;
case GROUP_USER_PERMISSION_PENDING_INVITATION:
@ -1250,16 +1250,16 @@ class GroupPortalManager
}
$links .= '<li><a href="group_invitation.php?id='.$group_id.'">'.Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace' => '6')).'<span class="'.($show == 'invite_friends' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('InviteFriends').'</span></a></li>';
if (GroupPortalManager::canLeave($group_info)) {
$links .= '<li><a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
$links .= '<li><a href="group_view.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
}
break;
case GROUP_USER_PERMISSION_HRM:
$relation_group_title = get_lang('IAmAHRM');
$links .= '<li><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" title="'.get_lang('ComposeMessage').'">'.Display::return_icon('compose_message.png', get_lang('NewTopic'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('NewTopic').'</span></a></li>';
$links .= '<li><a href="groups.php?id='.$group_id.'">'.Display::return_icon('message_list.png', get_lang('MessageList'), array('hspace' => '6')).'<span class="'.($show == 'messages_list' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('MessageList').'</span></a></li>';
$links .= '<li><a href="group_view.php?id='.$group_id.'">'.Display::return_icon('message_list.png', get_lang('MessageList'), array('hspace' => '6')).'<span class="'.($show == 'messages_list' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('MessageList').'</span></a></li>';
$links .= '<li><a href="group_invitation.php?id='.$group_id.'">'.Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace' => '6')).'<span class="'.($show == 'invite_friends' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('InviteFriends').'</span></a></li>';
$links .= '<li><a href="group_members.php?id='.$group_id.'">'.Display::return_icon('member_list.png', get_lang('MemberList'), array('hspace' => '6')).'<span class="'.($show == 'member_list' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('MemberList').'</span></a></li>';
$links .= '<li><a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('delete_data.gif', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
$links .= '<li><a href="group_view.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('delete_data.gif', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
break;
default:
//$links .= '<li><a href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.Display::return_icon('addd.gif', get_lang('JoinGroup'), array('hspace'=>'6')).'<span class="social-menu-text4" >'.get_lang('JoinGroup').'</a></span></li>';

@ -161,6 +161,7 @@ function get_lang($variable, $reserved = null, $language = null) {
if (api_get_setting('allow_use_sub_language') == 'true') {
$parent_language = SubLanguageManager::get_parent_language_path($language);
}
if (!is_array($language_files)) {
if (isset($parent_language)) {
@include "$langpath$parent_language/$language_files.inc.php";

@ -289,8 +289,8 @@ class MessageManager
if (empty($group_id)) {
//message in outbox for user friend or group
$sql = "INSERT INTO $table_message (user_sender_id, user_receiver_id, msg_status, send_date, title, content, group_id, parent_id, update_date ) ".
" VALUES ('$user_sender_id', '$receiver_user_id', '4', '".$now."','$clean_subject','$clean_content', '$group_id', '$parent_id', '".$now."')";
$sql = "INSERT INTO $table_message (user_sender_id, user_receiver_id, msg_status, send_date, title, content, group_id, parent_id, update_date )
VALUES ('$user_sender_id', '$receiver_user_id', '4', '".$now."','$clean_subject','$clean_content', '$group_id', '$parent_id', '".$now."')";
Database::query($sql);
$outbox_last_id = Database::insert_id();
@ -324,11 +324,12 @@ class MessageManager
$sender_info
);
} else {
$group_info = GroupPortalManager::get_group_data($group_id);
$usergroup = new UserGroup();
$group_info = $usergroup->get($group_id);
$group_info['topic_id'] = $topic_id;
$group_info['msg_id'] = $inbox_last_id;
$user_list = GroupPortalManager::get_users_by_group($group_id, false, array(), 0, 1000);
$user_list = $usergroup->get_users_by_group($group_id, false, array(), 0, 1000);
// Adding more sense to the message group
$subject = sprintf(get_lang('ThereIsANewMessageInTheGroupX'), $group_info['name']);
@ -1102,8 +1103,14 @@ class MessageManager
}
$html .= '<div class="col-md-4">';
$html .= Display::tag('h4', Display::url(Security::remove_XSS($topic['title'], STUDENT, true), 'group_topics.php?id='.$group_id.'&topic_id='.$topic['id']));
$html .= Display::tag(
'h4',
Display::url(
Security::remove_XSS($topic['title'], STUDENT, true),
api_get_path(WEB_CODE_PATH).'social/group_topics.php?id='.$group_id.'&topic_id='.$topic['id']
)
);
$actions = '';
if ($my_group_role == GROUP_USER_PERMISSION_ADMIN ||
$my_group_role == GROUP_USER_PERMISSION_MODERATOR
) {

@ -610,15 +610,21 @@ class SocialManager extends UserManager
$html = '<div class="avatar-profile">';
if (in_array($show, $show_groups) && !empty($group_id)) {
// Group image
$group_info = GroupPortalManager::get_group_data($group_id);
$big = GroupPortalManager::get_picture_group(
$userGroup = new UserGroup();
$group_info = $userGroup->get($group_id);
$big = $userGroup->get_picture_group(
$group_id,
$group_info['picture_uri'],
$group_info['picture'],
160,
GROUP_IMAGE_SIZE_BIG
);
$html .= Display::url('<img src='.$big['file'].' class="social-groups-image" /> </a><br /><br />', api_get_path(WEB_CODE_PATH).'social/groups.php?id='.$group_id);
$html .= Display::url(
'<img src='.$big['file'].' class="social-groups-image" /> </a><br /><br />',
api_get_path(WEB_CODE_PATH).'social/group_view.php?id='.$group_id
);
if (GroupPortalManager::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.'">'.
@ -665,6 +671,8 @@ class SocialManager extends UserManager
if (empty($user_id)) {
$user_id = api_get_user_id();
}
$usergroup = new UserGroup();
$user_info = api_get_user_info($user_id, true);
$current_user_id = api_get_user_id();
$current_user_info = api_get_user_info($current_user_id, true);
@ -693,7 +701,7 @@ class SocialManager extends UserManager
$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(
$group_pending_invitations = $usergroup->get_groups_by_user(
api_get_user_id(),
GROUP_USER_PERMISSION_PENDING_INVITATION,
false
@ -737,7 +745,7 @@ class SocialManager extends UserManager
}
if (in_array($show, $show_groups) && !empty($group_id)) {
$html .= GroupPortalManager::show_group_column_information(
$html .= $usergroup->show_group_column_information(
$group_id,
api_get_user_id(),
$show
@ -1542,7 +1550,12 @@ class SocialManager extends UserManager
$template->assign('user', $userInfo);
$template->assign('socialAvatarBlock', $socialAvatarBlock);
$template->assign('profileEditionLink', $profileEditionLink);
$template->assign('social_avatar_block', $template->fetch('default/social/user_block.tpl'));
$templateName = 'default/social/user_block.tpl';
if (in_array($groupBlock, ['groups', 'group_edit', 'member_list'])) {
$templateName = 'default/social/group_block.tpl';
}
$template->assign('social_avatar_block', $template->fetch($templateName));
}
/**

@ -211,9 +211,18 @@ class Template
}
/**
* @param string $helpInput
* @deprecated
* @param null $helpInput
*/
public function set_help($helpInput = null)
{
$this->setHelp($helpInput);
}
/**
* @param string $helpInput
*/
public function setHelp($helpInput = null)
{
if (!empty($helpInput)) {
$help = $helpInput;

File diff suppressed because it is too large Load Diff

@ -3444,8 +3444,10 @@ class UserManager
$sql = " $select
FROM $user_table u
INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id = url_rel_user.user_id)
LEFT JOIN $table_user_tag_values uv ON (u.user_id AND uv.user_id AND uv.user_id = url_rel_user.user_id)
INNER JOIN $access_url_rel_user_table url_rel_user
ON (u.user_id = url_rel_user.user_id)
LEFT JOIN $table_user_tag_values uv
ON (u.user_id AND uv.user_id AND uv.user_id = url_rel_user.user_id)
LEFT JOIN $table_user_tag ut ON (uv.tag_id = ut.id)
WHERE
($where_field tag LIKE '".Database::escape_string($tag."%")."') OR

@ -289,7 +289,7 @@ $group_id = isset($_REQUEST['group_id']) ? intval($_REQUEST['group_id']) : null;
$social_right_content = null;
if ($group_id != 0) {
$social_right_content .= '<div class=actions>';
$social_right_content .= '<a href="'.api_get_path(WEB_PATH).'main/social/groups.php?id='.$group_id.'">'.
$social_right_content .= '<a href="'.api_get_path(WEB_PATH).'main/social/group_view.php?id='.$group_id.'">'.
Display::return_icon('back.png',api_xml_http_response_encode(get_lang('ComposeMessage'))).'</a>';
$social_right_content .= '<a href="'.api_get_path(WEB_PATH).'main/messages/new_message.php?group_id='.$group_id.'">'.
Display::return_icon('message_new.png',api_xml_http_response_encode(get_lang('ComposeMessage'))).'</a>';

@ -4,6 +4,8 @@
* @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com>
*/
$language_file= 'userInfo';
$cidReset = true;
require_once '../inc/global.inc.php';
@ -16,81 +18,39 @@ if (api_get_setting('allow_students_to_create_groups_in_social') == 'false' && !
api_not_allowed();
}
global $charset;
$htmlHeadXtra[] = '<script>
textarea = "";
num_characters_permited = 255;
function text_longitud(){
num_characters = document.forms[0].description.value.length;
if (num_characters > num_characters_permited){
document.forms[0].description.value = textarea;
} else {
textarea = document.forms[0].description.value;
}
}
</script>';
$table_message = Database::get_main_table(TABLE_MESSAGE);
$usergroup = new UserGroup();
$form = new FormValidator('add_group');
$form = GroupPortalManager::setGroupForm($form);
$form->addButtonCreate(get_lang('AddGroup'), 'add_group');
$form->setRequiredNote(api_xml_http_response_encode('<span class="form_required">*</span> <small>'.get_lang('ThisFieldIsRequired').'</small>'));
$usergroup->setGroupType($usergroup::SOCIAL_CLASS);
$usergroup->setForm($form, 'add', array());
if ($form->validate()) {
$values = $form->exportValues();
$picture_element = $form->getElement('picture');
$picture = $picture_element->getValue();
$picture_uri = '';
$name = $values['name'];
$description = $values['description'];
$url = $values['url'];
$status = intval($values['visibility']);
$picture = $_FILES['picture'];
$group_id = GroupPortalManager::add($name, $description, $url, $status);
GroupPortalManager::add_user_to_group(
api_get_user_id(),
$group_id,
GROUP_USER_PERMISSION_ADMIN
);
if (!empty($picture['name'])) {
$picture_uri = GroupPortalManager::update_group_picture(
$group_id,
$_FILES['picture']['name'],
$_FILES['picture']['tmp_name']
);
GroupPortalManager::update(
$group_id,
$name,
$description,
$url,
$status,
$picture_uri
);
}
header('Location: groups.php?id='.$group_id.'&action=show_message&message='.urlencode(get_lang('GroupAdded')));
$values['group_type'] = UserGroup::SOCIAL_CLASS;
$values['relation_type'] = GROUP_USER_PERMISSION_ADMIN;
$groupId = $usergroup->save($values);
Display::addFlash(DIsplay::return_message(get_lang('GroupAdded')));
header('Location: group_view.php?id='.$groupId);
exit();
}
$nameTools = get_lang('AddGroup');
$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' => $nameTools);
$interbreadcrumb[]= array ('url' =>'home.php','name' => get_lang('Social'));
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
$interbreadcrumb[]= array ('url' =>'#','name' => $nameTools);
$social_avatar_block = SocialManager::show_social_avatar_block('group_add');
$social_menu_block = SocialManager::show_social_menu('group_add');
$social_right_content = $form->returnForm();
$tpl = new Template();
$tpl->set_help('Groups');
$tpl->assign('social_avatar_block', $social_avatar_block);
$tpl = new Template(null);
SocialManager::setSocialUserBlock($tpl, $user_id, null, null);
$tpl->setHelp('Groups');
$tpl->assign('social_menu_block', $social_menu_block);
$tpl->assign('social_right_content', $social_right_content);

@ -1,113 +1,72 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com>
*/
// Language files that should be included
$language_file = array('userInfo');
$cidReset = true;
require_once '../inc/global.inc.php';
api_block_anonymous_users();
if (api_get_setting('allow_social_tool') !='true') {
if (api_get_setting('allow_social_tool') != 'true') {
api_not_allowed();
}
$this_section = SECTION_SOCIAL;
$libpath = api_get_path(LIBRARY_PATH);
$htmlHeadXtra[] = '<script type="text/javascript">
var textarea = "";
var num_characters_permited = 255;
function textarea_maxlength(){
num_characters = document.forms[0].description.value.length;
if (num_characters > num_characters_permited){
document.forms[0].description.value = textarea;
}else{
textarea = document.forms[0].description.value;
}
}
</script>';
$group_id = isset($_GET['id']) ? intval($_GET['id']) : intval($_POST['id']);
$tool_name = get_lang('GroupEdit');
$interbreadcrumb[] = array('url' => 'home.php','name' => get_lang('Social'));
$interbreadcrumb[] = array('url' => 'groups.php','name' => get_lang('Groups'));
$table_group = Database::get_main_table(TABLE_MAIN_GROUP);
$group_data = GroupPortalManager::get_group_data($group_id);
$usergroup = new UserGroup();
$group_data = $usergroup->get($group_id);
if (empty($group_data)) {
api_not_allowed();
header('Location: group_view.php?id='.$group_id);
exit;
}
$interbreadcrumb[] = array('url' => 'groups.php', 'name' => get_lang('Groups'));
$interbreadcrumb[] = array('url' => 'group_view.php?id='.$group_id, 'name' => $group_data['name']);
//only group admins can edit the group
if (!GroupPortalManager::is_group_admin($group_id)) {
if (!$usergroup->is_group_admin($group_id)) {
api_not_allowed();
}
// Create the form
$form = new FormValidator('group_edit', 'post', '', '');
$form->addElement('hidden', 'id', $group_id);
$form = GroupPortalManager::setGroupForm($form, $group_data);
// Submit button
$form->addButtonSave(get_lang('ModifyInformation'), 'submit');
$usergroup->setGroupType($usergroup::SOCIAL_CLASS);
$usergroup->setForm($form, 'edit', $group_data);
// Set default values
$form->setDefaults($group_data);
// Validate form
if ($form->validate()) {
$group = $form->exportValues();
$picture_element = $form->getElement('picture');
$picture = $picture_element->getValue();
$picture_uri = $group_data['picture_uri'];
if ($group['delete_picture']) {
$picture_uri = GroupPortalManager::delete_group_picture($group_id);
} elseif (!empty($picture['name'])) {
$picture_uri = GroupPortalManager::update_group_picture(
$group_id,
$_FILES['picture']['name'],
$_FILES['picture']['tmp_name']
);
}
$name = $group['name'];
$description = $group['description'];
$url = $group['url'];
$status = intval($group['visibility']);
$allowMemberGroupToLeave = null;
if (GroupPortalManager::canLeaveFeatureEnabled($group_data)) {
$allowMemberGroupToLeave = isset($group['allow_members_leave_group']) ? true : false;
}
GroupPortalManager::update($group_id, $name, $description, $url, $status, $picture_uri, $allowMemberGroupToLeave);
$tok = Security::get_token();
header('Location: groups.php?id='.$group_id.'&action=show_message&message='.urlencode(get_lang('GroupUpdated')).'&sec_token='.$tok);
$group['id'] = $group_id;
$group['type'] = $usergroup::SOCIAL_CLASS;
$usergroup->update($group);
Display::addFlash(Display::return_message(get_lang('GroupUpdated')));
header('Location: group_view.php?id='.$group_id);
exit();
}
// Group picture
$image_path = GroupPortalManager::get_group_picture_path_by_id($group_id, 'web');
$image_dir = $image_path['dir'];
$image = $image_path['file'];
$image_file = ($image != '' ? $image_dir.$image : api_get_path(WEB_CODE_PATH).'img/unknown_group.jpg');
$image_size = api_getimagesize($image_file);
// get the path,width and height from original picture
$big_image = $image_dir.'big_'.$image;
$big_image_size = api_getimagesize($big_image);
$big_image_width = $big_image_size['width'];
$big_image_height = $big_image_size['height'];
$url_big_image = $big_image.'?rnd='.time();
$social_avatar_block = SocialManager::show_social_avatar_block('group_edit', $group_id);
$social_menu_block = SocialManager::show_social_menu('group_edit', $group_id);
$social_left_content = SocialManager::show_social_menu('group_edit', $group_id);
$social_right_content = $form->returnForm();
$tpl = new Template($tool_name);
$tpl->set_help('Groups');
$tpl->assign('social_avatar_block', $social_avatar_block);
$tpl->assign('social_menu_block', $social_menu_block);
$tpl = new Template(get_lang('Edit'));
SocialManager::setSocialUserBlock($tpl, $user_id, 'groups', $group_id);
$tpl->setHelp('Groups');
$tpl->assign('social_menu_block', $social_left_content);
$tpl->assign('social_right_content', $social_right_content);
$social_layout = $tpl->get_template('social/groups.tpl');
$social_layout = $tpl->get_template('social/add_groups.tpl');
$tpl->display($social_layout);

@ -4,23 +4,16 @@
* @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com>
*/
/**
* Initialization
*/
// resetting the course id
$cidReset = true;
// including some necessary dokeos files
require_once '../inc/global.inc.php';
require_once '../inc/lib/xajax/xajax.inc.php';
api_block_anonymous_users();
$xajax = new xajax();
$xajax->registerFunction('search_users');
$add = isset($_GET['add']) ? Security::remove_XSS($_GET['add']) : null;
$xajax -> registerFunction ('search_users');
// setting the section (for the tabs)
$this_section = SECTION_PLATFORM_ADMIN;
@ -28,41 +21,41 @@ $this_section = SECTION_PLATFORM_ADMIN;
// setting breadcrumbs
$this_section = SECTION_SOCIAL;
$interbreadcrumb[] = array('url' => 'home.php', 'name' => get_lang('Social'));
$interbreadcrumb[] = array('url' => 'groups.php', 'name' => get_lang('Groups'));
// Database Table Definitions
$tbl_group = Database::get_main_table(TABLE_MAIN_GROUP);
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP);
$tbl_user = 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'] != '') {
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
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();
}
//only admin or moderator can do that
if (!GroupPortalManager::is_group_member($group_id)) {
if (!$usergroup->is_group_member($group_id)) {
api_not_allowed();
}
}
function search_users($needle, $type)
{
global $tbl_user, $tbl_group_rel_user, $group_id;
$xajax_response = new xajaxResponse();
$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)) {
@ -71,16 +64,14 @@ function search_users($needle, $type)
$charset = api_get_system_encoding();
$needle = Database::escape_string($needle);
$needle = api_convert_encoding($needle, $charset, 'utf-8');
$user_anonymous = api_get_anonymous_id();
$user_anonymous=api_get_anonymous_id();
$order_clause = api_sort_by_first_name(
) ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username';
$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 = intval($group_id);
$group_id = Database::escape_string($group_id);
// check id_user from session_rel_user table
$sql = 'SELECT user_id FROM ' . $tbl_group_rel_user . '
WHERE group_id ="' . (int)$group_id . '"';
$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) {
@ -88,337 +79,315 @@ function search_users($needle, $type)
$user_ids[] = (int)$row[0];
}
}
if (count($user_ids) > 0) {
$cond_user_id = ' AND user_id NOT IN(' . implode(",", $user_ids ) . ')';
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';
$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 .
$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
);
$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 ($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 .
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;
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') {
$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 />';
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)
);
$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>';
$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)
);
$xajax_response -> addAssign('ajax_list_users_multiple','innerHTML',api_utf8_encode($return));
}
}
return $xajax_response;
}
$xajax->processRequests();
$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);
// 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;
}
}
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();
document.formulaire.add_type.value = \''.$add_type.'\';
document.formulaire.form_sent.value=0;
document.formulaire.submit();
}
</script>';
$form_sent = 0;
$errorMsg = $firstLetterUser = $firstLetterSession = '';
$UserList = array();
$SessionList = array();
$sessions = array();
$Users = array();
$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'];
$group_id = intval($_POST['id']);
if (!is_array($user_list)) {
$user_list = array();
$user_list=array();
}
if ($form_sent == 1) {
//invite this users
$result = GroupPortalManager::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);
}
}
}
}
$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';
$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username';
if ($ajax_search) {
$sql = "SELECT u.user_id, lastname, firstname, username, group_id
FROM $tbl_user u
LEFT JOIN $tbl_group_rel_user gu
ON (gu.user_id = u.user_id)
WHERE gu.group_id = $group_id $order_clause";
$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
);
$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, session_id
FROM $tbl_user u
INNER JOIN $tbl_session_rel_user
ON $tbl_session_rel_user.user_id = u.user_id
AND $tbl_session_rel_user.session_id = " . 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";
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;
$sessionUsersList[$user['user_id']] = $user ;
}
} else {
$friends = SocialManager::get_friends(api_get_user_id());
$suggest_friends = false;
$suggest_friends = false;
$Users = array();
if (!$friends) {
$suggest_friends = true;
} else {
foreach ($friends as $friend) {
$group_friend_list = GroupPortalManager::get_groups_by_user(
$friend['friend_user_id'],
0
);
$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]) && empty($group_friend_list[$group_id]['relation_type'])) {
$Users[$friend['friend_user_id']] = array(
$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 {
$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' => $friend_group_id
'username' =>$friend['username'],
'group_id' => null
);
}
}
}
if (is_array($Users) && count($Users) > 0) {
if (is_array($Users) && count($Users) > 0 ) {
foreach ($Users as $user) {
if ($user['group_id'] != $group_id) {
$nosessionUsersList[$user['user_id']] = $user;
$nosessionUsersList[$user['user_id']] = $user ;
}
}
}
// Deleting anonymous users
//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) {
foreach ($nosessionUsersList as $key_user_list =>$value_user_list) {
if ($nosessionUsersList[$key_user_list]['user_id']==$user_anonymous) {
unset($nosessionUsersList[$key_user_list]);
}
}
}
if ($add_type == 'multiple') {
$link_add_type_unique = '<a href="' . api_get_self(
) . '?id=' . $group_id . '&add=' . $add . '&add_type=unique">' . Display::return_icon(
'single.gif'
) . get_lang('SessionAddTypeUnique') . '</a>';
$link_add_type_multiple = Display::return_icon('multiple.gif') . get_lang(
'SessionAddTypeMultiple'
);
$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=' . $add . '&add_type=multiple">' . Display::return_icon(
'multiple.gif'
) . get_lang('SessionAddTypeMultiple') . '</a>';
$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_avatar_block = SocialManager::show_social_avatar_block(
'invite_friends',
$group_id
);
$social_menu_block = SocialManager::show_social_menu(
'invite_friends',
$group_id
);
$social_right_content = '<h2>' . Security::remove_XSS(
$group_info['name'],
STUDENT,
true
) . '</h2>';
$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;
if (!empty($_GET['add'])) {
$add_true = '&add=true';
}
$ajax = null;
if ($ajax_search) {
$ajax = 'onsubmit="valide();"';
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.'>';
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 />';
}
}*/
}
$form = '<form name="formulaire" method="post" action="' . api_get_self().
'?id=' . $group_id . $add_true . '" style="margin:0px;" ' . $ajax . '>';
$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" />';
$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
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 align="center"><b>'.get_lang('Friends').' :</b>
</td>
<td></td>
<td align="center"><b>' . get_lang('SendInvitationTo') . ':</b></td></tr>';
<td align="center"><b>'.get_lang('SendInvitationTo').':</b></td></tr>';
if ($add_type == 'no') {
$form .= '
if ($add_type=='no') {
$form .='
<tr>
<td align="center">' . get_lang('FirstLetterUser') . ' :
<td align="center">'.get_lang('FirstLetterUser').' :
<select name="firstLetterUser" onchange = "xajax_search_users(this.value,\'multiple\')" >
<option value = "%">--</option>
' . Display :: get_alphabet_options() . '
'.Display :: get_alphabet_options().'
</select>
</td>
<td align="center">&nbsp;</td>
@ -430,38 +399,31 @@ $form .= '
<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>';
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) {
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>';
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>';
}
unset($nosessionUsersList);
$form .= '</div>';
$form .= '</td><td width="10%" valign="middle" align="center">';
if ($ajax_search) {
$form .= '<button class="btn btn-default" type="button" onclick="remove_item(document.getElementById(\'destination_users\'))" ><i class="fa fa-arrow-right"></i></button>';
$form .= '<button class="arrowl" type="button" onclick="remove_item(document.getElementById(\'destination_users\'))" ></button>';
} else {
$form .= '<button class="btn btn-default" type="button" onclick="moveItem(document.getElementById(\'origin_users\'), document.getElementById(\'destination_users\'))" ><i class="fa fa-arrow-left"></i></button>
$form .= '<button class="arrowr" type="button" onclick="moveItem(document.getElementById(\'origin_users\'), document.getElementById(\'destination_users\'))" ></button>
<br /><br />
<button class="btn btn-default" type="button" onclick="moveItem(document.getElementById(\'destination_users\'), document.getElementById(\'origin_users\'))" ><i class="fa fa-arrow-right"></i></button>
<button class="arrowl" type="button" onclick="moveItem(document.getElementById(\'destination_users\'), document.getElementById(\'origin_users\'))" ></button>
<br /><br />';
}
@ -470,20 +432,16 @@ $form .= ' <br /><br /><br /><br /><br />
<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>';
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="btn btn-primary" type="button" value="" onclick="valide()" >' . get_lang(
'InviteUsersToGroup'
) . '</button>
<button class="save" type="button" value="" onclick="valide()" >'.get_lang('InviteUsersToGroup').'</button>
</td>
</tr>
</table>
@ -491,114 +449,74 @@ $form .= '</select></td>
$social_right_content .= $form;
// Current group members
$members = GroupPortalManager::get_users_by_group(
$group_id,
false,
array(GROUP_USER_PERMISSION_PENDING_INVITATION)
);
if (is_array($members) && count($members) > 0) {
//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) {
$userPicture = UserManager::getUserPicture($member['user_id']);
$member['image'] = '<img src="' . $userPicture . '" width="50px" height="50px" />';
$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" />';
}
$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)
);
$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 moveItem(origin , destination) {
for(var i = 0 ; i<origin.options.length ; i++) {
if(origin.options[i].selected) {
destination.options[destination.length] = new Option(origin.options[i].text,origin.options[i].value);
origin.options[i]=null;
i = i-1;
}
}
destination.selectedIndex = -1;
sortOptions(destination.options);
}
function sortOptions(options) {
newOptions = new Array();
for (i = 0 ; i<options.length ; i++)
newOptions[i] = options[i];
newOptions = newOptions.sort(mysort);
options.length = 0;
for(i = 0 ; i < newOptions.length ; i++)
options[i] = newOptions[i];
}
function mysort(a, b){
if(a.text.toLowerCase() > b.text.toLowerCase()){
return 1;
}
if(a.text.toLowerCase() < b.text.toLowerCase()){
return -1;
}
return 0;
}
function valide(){
var options = document.getElementById(\'destination_users\').options;
for (i = 0 ; i<options.length ; i++)
options[i].selected = true;
document.forms.formulaire.submit();
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;
}
}
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);
}
}
}
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;
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')
);
$social_right_content = Display::div($social_right_content, array('class' => 'span9'));
$app['title'] = $tool_name;
$tpl = new Template(null);
$tpl = new Template($tool_name);
$tpl->set_help('Groups');
$tpl->assign('social_avatar_block', $social_avatar_block);
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,115 +1,110 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com>
*/
$cidReset = true;
require_once '../inc/global.inc.php';
api_block_anonymous_users();
if (api_get_setting('allow_social_tool') != 'true') {
if (api_get_setting('allow_social_tool') !='true') {
api_not_allowed();
}
$group_id = intval($_GET['id']);
$topic_id = isset($_GET['topic_id']) ? intval($_GET['topic_id']) : null;
$group_id = intval($_GET['id']);
$topic_id = isset($_GET['topic_id']) ? intval($_GET['topic_id']) : null;
$message_id = isset($_GET['msg_id']) ? intval($_GET['msg_id']) : null;
$usergroup = new UserGroup();
$is_member = false;
//todo @this validation could be in a function in group_portal_manager
if (empty($group_id)) {
api_not_allowed(true);
} else {
$group_info = GroupPortalManager::get_group_data($group_id);
$group_info = $usergroup->get($group_id);
if (empty($group_info)) {
api_not_allowed(true);
}
$is_member = GroupPortalManager::is_group_member($group_id);
$is_member = $usergroup->is_group_member($group_id);
if ($group_info['visibility'] == GROUP_PERMISSION_CLOSED && !$is_member) {
api_not_allowed(true);
}
}
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'delete') {
$group_role = GroupPortalManager::get_user_group_role(
api_get_user_id(),
$group_id
);
if (api_is_platform_admin() || in_array(
$group_role,
array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_MODERATOR)
)
) {
GroupPortalManager::delete_topic($group_id, $topic_id);
header(
"Location: groups.php?id=$group_id&action=show_message&msg=topic_deleted"
);
$group_role = $usergroup->get_user_group_role(api_get_user_id(), $group_id);
if (api_is_platform_admin() || in_array($group_role, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_MODERATOR))) {
$usergroup->delete_topic($group_id, $topic_id);
Display::addFlash(DIsplay::return_message(get_lang('Deleted')));
header("Location: group_view.php?id=$group_id");
exit;
}
}
$content = null;
$social_right_content = '';
// save message group
if (isset($_POST['token']) && $_POST['token'] === $_SESSION['sec_token']) {
if (isset($_POST['action'])) {
$title = isset($_POST['title']) ? $_POST['title'] : null;
$content = $_POST['content'];
$group_id = intval($_POST['group_id']);
$parent_id = intval($_POST['parent_id']);
if (isset($_POST['action'])) {
$title = isset($_POST['title']) ? $_POST['title'] : null;
$content = $_POST['content'];
$group_id = intval($_POST['group_id']);
$parent_id = intval($_POST['parent_id']);
if ($_POST['action'] == 'reply_message_group') {
$title = cut($content, 50);
}
if ($_POST['action'] == 'reply_message_group') {
$title = cut($content, 50);
}
if ($_POST['action'] == 'edit_message_group') {
$edit_message_id = intval($_POST['message_id']);
$res = MessageManager::send_message(
0,
$title,
$content,
$_FILES,
'',
$group_id,
$parent_id,
$edit_message_id,
0,
$topic_id
);
} else {
if ($_POST['action'] == 'add_message_group' && !$is_member) {
api_not_allowed();
}
$res = MessageManager::send_message(
0,
$title,
$content,
$_FILES,
'',
$group_id,
$parent_id,
0,
$topic_id
);
if ($_POST['action'] == 'edit_message_group') {
$edit_message_id = intval($_POST['message_id']);
$res = MessageManager::send_message(
0,
$title,
$content,
$_FILES,
'',
$group_id,
$parent_id,
$edit_message_id,
0,
$topic_id
);
} else {
if ($_POST['action'] == 'add_message_group' && !$is_member) {
api_not_allowed();
}
$res = MessageManager::send_message(
0,
$title,
$content,
$_FILES,
'',
$group_id,
$parent_id,
0,
$topic_id
);
}
// display error messages
if (!$res) {
$social_right_content .= Display::return_message(
get_lang('Error'),
'error'
);
}
$topic_id = isset($_GET['topic_id']) ? intval($_GET['topic_id']) : null;
if ($_POST['action'] == 'add_message_group') {
$topic_id = $res;
}
$message_id = $res;
// display error messages
if (!$res) {
$social_right_content .= Display::return_message(get_lang('Error'),'error');
}
$topic_id = isset($_GET['topic_id']) ? intval($_GET['topic_id']) : null;
if ($_POST['action'] == 'add_message_group') {
$topic_id = $res;
}
$message_id = $res;
}
$htmlHeadXtra[] = '<script type="text/javascript">
$htmlHeadXtra[] = '<script>
var counter_image = 1;
function remove_image_form(id_elem1) {
@ -120,9 +115,7 @@ function remove_image_form(id_elem1) {
if (filepaths.childNodes.length < 3) {
var link_attach = document.getElementById("link-more-attach");
if (link_attach) {
link_attach.innerHTML=\'<a href="javascript://" onclick="return add_image_form()">' . get_lang(
'AddOneMoreFile'
) . '</a>\';
link_attach.innerHTML=\'<a href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a>\';
}
}
}
@ -140,9 +133,7 @@ function add_image_form() {
filepaths.appendChild(elem1);
id_elem1 = "filepath_"+counter_image;
id_elem1 = "\'"+id_elem1+"\'";
document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\" size=\"20\" />&nbsp;<a href=\"javascript:remove_image_form("+id_elem1+")\"><img src=\"' . api_get_path(
WEB_CODE_PATH
) . 'img/delete.gif\"></a>";
document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\" size=\"20\" />&nbsp;<a href=\"javascript:remove_image_form("+id_elem1+")\"><img src=\"'.api_get_path(WEB_IMG_PATH).'delete.gif\"></a>";
if (filepaths.childNodes.length == 3) {
var link_attach = document.getElementById("link-more-attach");
@ -170,15 +161,14 @@ function validate_text_empty(str,msg) {
}
}
$(document).ready(function() {
if ( $("#msg_' . $message_id . '").length) {
if ( $("#msg_'.$message_id.'").length) {
$("html,body").animate({
scrollTop: $("#msg_' . $message_id . '").offset().top
scrollTop: $("#msg_'.$message_id.'").offset().top
})
}
$(\'.group_message_popup\').click(function() {
$(\'.group_message_popup\').on(\'click\', function() {
var url = this.href;
var dialog = $("#dialog");
if ($("#dialog").length == 0) {
@ -193,44 +183,24 @@ $(document).ready(function() {
dialog.dialog({
modal : true,
width : 520,
height : 400
height : 400,
});
});
//prevent the browser to follow the link
return false;
});
});
});
</script>';
$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('Thread'));
$social_right_content = '<div class="breadcrumb">
<a href="groups.php?id=' . $group_id . '">' . Security::remove_XSS(
$group_info['name'],
STUDENT,
true
) . '</a>
<span class="divider">/</span>
<a href="groups.php?id=' . $group_id . '#tabs_2">' . get_lang(
'Discussions'
) . '</a>
</div> ';
$social_avatar_block = SocialManager::show_social_avatar_block(
'member_list',
$group_id
);
$social_menu_block = SocialManager::show_social_menu('member_list', $group_id);
$interbreadcrumb[] = array('url' => 'groups.php', 'name' => get_lang('Groups'));
$interbreadcrumb[] = array('url' => 'group_view.php?id='.$group_id, 'name' => Security::remove_XSS($group_info['name']));
$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('Discussions'));
$social_left_content = SocialManager::show_social_menu('member_list', $group_id);
$show_message = null;
if (!empty($show_message)) {
$social_right_content .= Display::return_message(
$show_message,
'confirmation'
);
$social_right_content .= Display::return_message($show_message, 'confirmation');
}
$social_right_content .= MessageManager::display_message_for_group(
$group_id,
@ -239,16 +209,14 @@ $social_right_content .= MessageManager::display_message_for_group(
$message_id
);
$social_right_content = '<div class="span9">' . $social_right_content . '</div>';
$social_menu_block = SocialManager::show_social_menu('member_list', $group_id);
$tpl = new Template(null);
$tpl->set_help('Groups');
$tpl->assign('social_avatar_block', $social_avatar_block);
$tpl->setHelp('Groups');
// Block Social Avatar
SocialManager::setSocialUserBlock($tpl, $user_id, 'groups', $group_id);
$tpl->assign('social_menu_block', $social_menu_block);
$tpl->assign('social_right_content', $social_right_content);
//$tpl->assign('actions', $actions);
//$tpl->assign('message', $show_message);
$tpl->assign('content', $content);
$social_layout = $tpl->get_template('social/home.tpl');
$tpl->display($social_layout);

@ -0,0 +1,257 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com>
*/
$cidReset = true;
$language_file = array('userInfo');
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;
// prepare anchor for message group topic
$anchor = '';
if (isset($_GET['anchor_topic'])) {
$anchor = Security::remove_XSS($_GET['anchor_topic']);
} else {
$match = 0;
$param_names = array_keys($_GET);
foreach ($param_names as $param) {
if (preg_match('/^items_(\d)_page_nr$/', $param, $match)) {
break;
}
}
if (isset($match[1])) {
$anchor = 'topic_'.$match[1];
}
}
$htmlHeadXtra[] = '<script>
var counter_image = 1;
function remove_image_form(id_elem1) {
var elem1 = document.getElementById(id_elem1);
elem1.parentNode.removeChild(elem1);
counter_image--;
var filepaths = document.getElementById("filepaths");
if (filepaths.childNodes.length < 3) {
var link_attach = document.getElementById("link-more-attach");
if (link_attach) {
link_attach.innerHTML=\'<a href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a>\';
}
}
}
function add_image_form() {
// Multiple filepaths for image form
var filepaths = document.getElementById("filepaths");
if (document.getElementById("filepath_"+counter_image)) {
counter_image = counter_image + 1;
} else {
counter_image = counter_image;
}
var elem1 = document.createElement("div");
elem1.setAttribute("id","filepath_"+counter_image);
filepaths.appendChild(elem1);
id_elem1 = "filepath_"+counter_image;
id_elem1 = "\'"+id_elem1+"\'";
document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\" size=\"20\" />&nbsp;<a href=\"javascript:remove_image_form("+id_elem1+")\"><img src=\"'.api_get_path(WEB_IMG_PATH).'delete.gif\"></a>";
if (filepaths.childNodes.length == 3) {
var link_attach = document.getElementById("link-more-attach");
if (link_attach) {
link_attach.innerHTML="";
}
}
}
function validate_text_empty (str,msg) {
var str = str.replace(/^\s*|\s*$/g,"");
if (str.length == 0) {
alert(msg);
return true;
}
}
</script>';
$allowed_views = array('mygroups','newest','pop');
$content = null;
if (isset($_GET['view']) && in_array($_GET['view'],$allowed_views)) {
if ($_GET['view'] == 'mygroups') {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('MyGroups'));
} else if ( $_GET['view'] == 'newest') {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('Newest'));
} else {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('Popular'));
}
} else {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
if (!isset($_GET['id'])) {
$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('GroupList'));
} else {
//$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('Group'));
}
}
// getting group information
$group_id = isset($_GET['id']) ? intval($_GET['id']) : null;
$relation_group_title = '';
$my_group_role = 0;
$usergroup = new UserGroup();
if ($group_id != 0) {
$group_info = $usergroup->get($group_id);
$interbreadcrumb[]= array ('url' =>'#','name' => $group_info['name']);
if (isset($_GET['action']) && $_GET['action']=='leave') {
$user_leaved = intval($_GET['u']);
//I can "leave me myself"
if (api_get_user_id() == $user_leaved) {
$usergroup->delete_user_rel_group($user_leaved, $group_id);
Display::addFlash(
Display::return_message(get_lang('UserIsNotSubscribedToThisGroup'), 'confirmation', false)
);
}
}
// add a user to a group if its open
if (isset($_GET['action']) && $_GET['action']=='join') {
// we add a user only if is a open group
$user_join = intval($_GET['u']);
if (api_get_user_id() == $user_join && !empty($group_id)) {
if ($group_info['visibility'] == GROUP_PERMISSION_OPEN) {
$usergroup->add_user_to_group($user_join, $group_id);
Display::addFlash(
Display::return_message(get_lang('UserIsSubscribedToThisGroup'), 'confirmation', false)
);
} else {
$usergroup->add_user_to_group($user_join, $group_id, GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER);
Display::addFlash(
Display::return_message(get_lang('InvitationSent'), 'confirmation', false)
);
}
}
}
}
$create_thread_link = '';
$social_right_content = null;
$group_info = $usergroup->get($group_id);
//Loading group information
if (isset($_GET['status']) && $_GET['status']=='sent') {
$social_right_content .= Display::return_message(get_lang('MessageHasBeenSent'), 'confirmation', false);
}
$is_group_member = $usergroup->is_group_member($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'));
}
}
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>';
}
$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').'">'.
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').'">'.
get_lang('NewTopic').'</a>';
}
}
$members = $usergroup->get_users_by_group($group_id, true);
$member_content = '';
// Members
if (count($members) > 0) {
if ($my_group_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
);
}
foreach ($members as $member) {
// if is a member
if (in_array($member['relation_type'], array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_READER,GROUP_USER_PERMISSION_MODERATOR))) {
//add icons
if ($member['relation_type'] == GROUP_USER_PERMISSION_ADMIN) {
$icon= Display::return_icon('social_group_admin.png', get_lang('Admin'));
} elseif ($member['relation_type'] == GROUP_USER_PERMISSION_MODERATOR) {
$icon= Display::return_icon('social_group_moderator.png', get_lang('Moderator'));
} else{
$icon= '';
}
$userPicture = UserManager::getUserPicture($member['user_id']);
$member_content .= '<div class="">';
$member_name = Display::url(api_get_person_name(cut($member['firstname'],15),cut($member['lastname'],15)).'&nbsp;'.$icon, $member['user_info']['profile_url']);
$member_content .= Display::div('<img height="44" border="2" align="middle" vspace="10" class="social-groups-image" src="'.$userPicture.'"/>&nbsp'.$member_name);
$member_content .= '</div>';
}
}
}
if (!empty($create_thread_link)) {
$create_thread_link = Display::div($create_thread_link, array('style'=>'padding-top:2px;height:40px'));
}
$headers = array(get_lang('Discussions'), get_lang('Members'));
$social_right_content .= Display::tabs($headers, array($content, $member_content),'tabs');
} else {
// if I already sent an invitation message
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>';
}
}
$tpl = new Template(null);
// Block Social Avatar
SocialManager::setSocialUserBlock($tpl, $user_id, 'groups', $group_id);
//Block Social Menu
$social_menu_block = SocialManager::show_social_menu('groups', $group_id);
$tpl->setHelp('Groups');
$tpl->assign('create_link', $create_thread_link);
$tpl->assign('is_group_member', $is_group_member);
$tpl->assign('group_info', $group_info);
$tpl->assign('social_menu_block', $social_menu_block);
$tpl->assign('social_right_content', $social_right_content);
$social_layout = $tpl->get_template('social/group_view.tpl');
$tpl->display($social_layout);

@ -1,13 +1,13 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com>
*/
/**
* Initialization
*/
$cidReset = true;
$language_file = array('userInfo');
require_once '../inc/global.inc.php';
api_block_anonymous_users();
@ -16,38 +16,40 @@ if (api_get_setting('allow_social_tool') !='true') {
}
$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('WaitingList'));
$group_id = intval($_GET['id']);
$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();
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();
}
//only admin or moderator can do that
$user_role = GroupPortalManager::get_user_group_role(api_get_user_id(), $group_id);
$user_role = $usergroup->get_user_group_role(api_get_user_id(), $group_id);
if (!in_array($user_role, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_MODERATOR))) {
api_not_allowed();
}
}
$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('WaitingList'));
// Group information
$admins = GroupPortalManager::get_users_by_group($group_id, true, array(GROUP_USER_PERMISSION_ADMIN), 0, 1000);
$admins = $usergroup->get_users_by_group($group_id, true, array(GROUP_USER_PERMISSION_ADMIN), 0, 1000);
$show_message = '';
if (isset($_GET['action']) && $_GET['action']=='accept') {
// 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);
if ($usergroup->is_group_moderator($group_id)) {
$usergroup->update_user_role($user_join, $group_id);
$show_message = get_lang('UserAdded');
}
}
@ -56,8 +58,8 @@ if (isset($_GET['action']) && $_GET['action']=='deny') {
// 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);
if ($usergroup->is_group_moderator($group_id)) {
$usergroup->delete_user_rel_group($user_join, $group_id);
$show_message = get_lang('UserDeleted');
}
}
@ -67,17 +69,16 @@ 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($user_moderator, $group_id, GROUP_USER_PERMISSION_MODERATOR);
if ($usergroup->is_group_admin($group_id)) {
$usergroup->update_user_role($user_moderator, $group_id, GROUP_USER_PERMISSION_MODERATOR);
$show_message = get_lang('UserChangeToModerator');
}
}
$users = GroupPortalManager::get_users_by_group($group_id, true, array(GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER), 0, 1000);
$users = $usergroup->get_users_by_group($group_id, true, array(GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER), 0, 1000);
$new_member_list = array();
$social_avatar_block = SocialManager::show_social_avatar_block('waiting_list', $group_id);
$social_menu_block = SocialManager::show_social_menu('waiting_list', $group_id);
$social_left_content = SocialManager::show_social_menu('waiting_list',$group_id);
if (!empty($show_message)){
$social_right_content .= Display :: return_message($show_message);
@ -86,28 +87,31 @@ if (!empty($show_message)){
foreach($users as $user) {
switch ($user['relation_type']) {
case GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER:
$user['link'] = '<a href="group_waiting_list.php?id='.$group_id.'&u='.$user['user_id'].'&action=accept">'.Display::return_icon('invitation_friend.png', get_lang('AddNormalUser')).'</a>';
$user['link'] .= '<a href="group_waiting_list.php?id='.$group_id.'&u='.$user['user_id'].'&action=set_moderator">'.Display::return_icon('social_moderator_add.png', get_lang('AddModerator')).'</a>';
$user['link'] .= '<a href="group_waiting_list.php?id='.$group_id.'&u='.$user['user_id'].'&action=deny">'.Display::return_icon('user_delete.png', get_lang('DenyEntry')).'</a>';
break;
$user['link'] = '<a href="group_waiting_list.php?id='.$group_id.'&u='.$user['user_id'].'&action=accept">'.Display::return_icon('invitation_friend.png', get_lang('AddNormalUser')).'</a>';
$user['link'] .= '<a href="group_waiting_list.php?id='.$group_id.'&u='.$user['user_id'].'&action=set_moderator">'.Display::return_icon('social_moderator_add.png', get_lang('AddModerator')).'</a>';
$user['link'] .= '<a href="group_waiting_list.php?id='.$group_id.'&u='.$user['user_id'].'&action=deny">'.Display::return_icon('user_delete.png', get_lang('DenyEntry')).'</a>';
break;
}
$new_member_list[] = $user;
}
$social_right_content = '<div class="span9">';
if (count($new_member_list) > 0) {
$social_right_content .= Display::return_sortable_grid('search_users', array(), $new_member_list, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, false, true,true,false,true,true));
} else {
$social_right_content .= Display :: return_message(get_lang('ThereAreNotUsersInTheWaitingList'));
}
$social_right_content .= '</div>';
$tpl = new Template($tool_name);
$tpl->set_help('Groups');
$tpl->assign('social_avatar_block', $social_avatar_block);
$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);
$tpl->assign('actions', $actions);
$tpl->assign('message', $show_message);
$tpl->assign('content', $content);
$social_layout = $tpl->get_template('social/home.tpl');
$social_layout = $tpl->get_template('social/add_groups.tpl');
$tpl->display($social_layout);

File diff suppressed because it is too large Load Diff

@ -185,7 +185,7 @@ if (!empty($results)) {
$result['count'] = $result['count'] . ' ' . get_lang('Members');
}
$group_url = "groups.php?id=$id";
$group_url = "group_view.php?id=$id";
$result['name'] = '<div class="group-name">'.Display::url(
api_ucwords(cut($result['name'], 40, true)), $group_url)
@ -222,7 +222,7 @@ foreach ($results as $result) {
);
$result['name'] = Security::remove_XSS($result['name'], STUDENT, true);
$id = $result['id'];
$group_url = "groups.php?id=$id";
$group_url = "group_view.php?id=$id";
if ($result['count'] == 1) {
$result['count'] = '1 ' . get_lang('Member');

@ -187,8 +187,8 @@ if (count($pending_invitations) > 0) {
foreach ($pending_invitations as $invitation) {
$picture = GroupPortalManager::get_picture_group($invitation['id'], $invitation['picture_uri'],80);
$img = '<img class="social-groups-image" src="'.$picture['file'].'" />';
$invitation['picture_uri'] = '<a href="groups.php?id='.$invitation['id'].'">'.$img.'</a>';
$invitation['name'] = '<a href="groups.php?id='.$invitation['id'].'">'.cut($invitation['name'],120,true).'</a>';
$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;

@ -5,140 +5,97 @@
* Form for group message
* @package chamilo.social
*/
$cidReset = true;
require_once '../inc/global.inc.php';
api_block_anonymous_users();
if (api_get_setting('allow_social_tool') != 'true') {
if (api_get_setting('allow_social_tool') !='true') {
api_not_allowed();
}
$tok = Security::get_token();
$group_id = intval($_GET['group_id']);
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');
}
$group_id = isset($_GET['group_id']) ? intval($_GET['group_id']) : null;
$message_id = isset($_GET['message_id']) ? intval($_GET['message_id']) : null;
$actions = array('add_message_group', 'edit_message_group', 'reply_message_group');
$actions = array(
'add_message_group',
'edit_message_group',
'reply_message_group'
);
$allowed_action = isset($_GET['action']) && in_array($_GET['action'],$actions) ? Security::remove_XSS($_GET['action']):'';
$allowed_action = (isset($_GET['action']) && in_array($_GET['action'], $actions)) ? Security::remove_XSS($_GET['action']) : '';
$to_group = '';
$subject = '';
$message = '';
$usergroup = new UserGroup();
if (!empty($group_id) && $allowed_action) {
$group_info = GroupPortalManager::get_group_data($group_id);
$is_member = GroupPortalManager::is_group_member($group_id);
$group_info = $usergroup->get($group_id);
$is_member = $usergroup->is_group_member($group_id);
if ($group_info['visibility'] == GROUP_PERMISSION_CLOSED && !$is_member) {
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']
);
$subject = get_lang('Reply').': '.api_xml_http_response_encode($message_info['title']);
//$message = api_xml_http_response_encode($message_info['content']);
} 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']);
}
}
}
$page_item = !empty($_GET['topics_page_nr']) ? intval($_GET['topics_page_nr']) : 1;
$param_item_page = isset($_GET['items_page_nr']) && isset($_GET['topic_id']) ? ('&items_' . intval($_GET['topic_id']) . '_page_nr=' . (!empty($_GET['topics_page_nr']) ? intval($_GET['topics_page_nr']) : 1)) : '';
$param_item_page .= isset($_GET['topic_id']) ? '&topic_id=' . intval($_GET['topic_id']) : null;
$page_topic = !empty($_GET['topics_page_nr']) ? intval($_GET['topics_page_nr']) : 1;
$anchor = isset($_GET['anchor_topic']) ? Security::remove_XSS($_GET['anchor_topic']) : null;
$form = new FormValidator(
'add_post',
'post',
api_get_path(WEB_CODE_PATH)."social/group_topics.php?id=$group_id&anchor_topic=$anchor&topics_page_nr=$page_topic"."$param_item_page",
null,
array('enctype' => 'multipart/form-data')
);
$form->addHidden('action', $allowed_action);
$form->addHidden('group_id', $group_id);
$form->addHidden('parent_id', $message_id);
$form->addHidden('message_id',$message_id );
$form->addHidden('token', $tok);
if (api_get_setting('allow_message_tool') == 'true') {
//normal message
$page_item = !empty($_GET['topics_page_nr']) ? intval($_GET['topics_page_nr']):1;
$param_item_page = isset($_GET['items_page_nr']) && isset($_GET['topic_id']) ? ('&items_'.intval($_GET['topic_id']).'_page_nr='.(!empty($_GET['topics_page_nr'])?intval($_GET['topics_page_nr']):1)):'';
if (isset($_GET['topic_id'])) {
$param_item_page .= '&topic_id='.intval($_GET['topic_id']);
}
$page_topic = isset($_GET['topics_page_nr']) ? intval($_GET['topics_page_nr']) : 1;
$anchor_topic = isset($_GET['anchor_topic']) ? Security::remove_XSS($_GET['anchor_topic']) : null;
$url = api_get_path(WEB_CODE_PATH).'social/group_topics.php?id='.$group_id.'&anchor_topic='.$anchor_topic.'&topics_page_nr='.$page_topic.$param_item_page;
$form = new FormValidator('form', 'post', $url, null, array('enctype' => 'multipart/form-data'));
$form->addElement('hidden', 'action', $allowed_action);
$form->addElement('hidden', 'group_id', $group_id);
$form->addElement('hidden', 'parent_id', $message_id);
$form->addElement('hidden', 'message_id', $message_id);
$form->addElement('hidden', 'token', $tok);
$tpl = new Template(get_lang('Groups'));
if (api_get_setting('allow_message_tool')=='true') {
// Normal message
$user_info = api_get_user_info($userfriend_id);
$height = 180;
if ($allowed_action == 'add_message_group') {
$form->addText('title', get_lang('Title'));
$form->addElement('text', 'title', get_lang('Title'));
$height = 140;
}
$config = array();
$config['ToolbarSet'] = 'Messages';
$form->addHtmlEditor(
'content',
get_lang('Content'),
false,
false,
$config
);
$form->addHtml('<span id="filepaths"><div id="filepath_1">');
$form->addFile('attach_1', get_lang('AttachmentFiles'));
$form->addHtml('</div></span>');
$form->addLabel(null,
' <div id="link-more-attach">
<a href="javascript://" onclick="return add_image_form()">
' . get_lang('AddOneMoreFile') . '</a>
</div>'
);
$form->addLabel(null,
api_xml_http_response_encode(
sprintf(
get_lang('MaximunFileSizeX'),
format_file_size(
api_get_setting('message_max_upload_filesize')
)
)
)
$form->addElement('html_editor', 'content');
$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>'
);
$form->addButtonSend(get_lang('SendMessage'), 'submit');
Display::display_no_header();
//Display::display_reduced_header();
$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->display();
}
/*
?>
<button class="btn save"
onclick="if(validate_text_empty(this.form.title.value,'<?php echo get_lang(
'YouShouldWriteASubject'
) ?>')){return false;}" type="submit"
value="<?php echo api_xml_http_response_encode(
get_lang('SendMessage')
); ?>"><?php echo api_xml_http_response_encode(
get_lang('SendMessage')
) ?></button>
<?php } else { ?>
<button class="btn save" type="submit"
value="<?php echo api_xml_http_response_encode(
get_lang('SendMessage')
); ?>"><?php echo api_xml_http_response_encode(
get_lang('SendMessage')
) ?></button>
<?php } ?>
<?php } ?>
</dl>
</td>
</tr>
</div>
</table>
</form>
*/
$tpl->display_blank_template();

@ -447,7 +447,7 @@ if ($show_full_profile) {
foreach ($results as $result) {
if ($i > $max_numbers_of_group) break;
$id = $result['id'];
$url_open = '<a href="groups.php?id='.$id.'">';
$url_open = '<a href="group_view.php?id='.$id.'">';
$url_close = '</a>';
$icon = '';
$name = cut($result['name'],CUT_GROUP_NAME,true);

@ -76,7 +76,7 @@ if (isset($_GET['view']) && in_array($_GET['view'], $views)) {
$i = 1;
foreach ($results as $result) {
$id = $result['id'];
$url_open = '<a href="groups.php?id=' . $id . '">';
$url_open = '<a href="group_view.php?id=' . $id . '">';
$url_close = '</a>';
$icon = '';
$name = cut($result['name'], 20, true);
@ -129,7 +129,7 @@ if (isset($_GET['view']) && in_array($_GET['view'], $views)) {
$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(
$item_actions = '<div class="box_shared_profile_group_actions"><a href="group_view.php?id=' . $id . '">' . get_lang(
'SeeMore'
) . $url_close . '</div>';
}

@ -43,6 +43,8 @@ $totalGroups = array();
$users = array();
$totalUsers = array();
$usergroup = new UserGroup();
// I'm searching something
if ($query != '' || ($query_vars['search_type']=='1' && count($query_vars)>2) ) {
$itemPerPage = 9;
@ -61,7 +63,8 @@ if ($query != '' || ($query_vars['search_type']=='1' && count($query_vars)>2) )
// Groups
$fromGroups = intval(($pageGroup - 1) * $itemPerPage);
$totalGroups = GroupPortalManager::get_all_group_tags($_GET['q'], 0, $itemPerPage, true);
$groups = GroupPortalManager::get_all_group_tags($_GET['q'], $fromGroups, $itemPerPage);
$groups = $usergroup->get_all_group_tags($_GET['q'], $fromGroups);
}
if (empty($users) && empty($groups)) {
@ -143,18 +146,19 @@ if ($query != '' || ($query_vars['search_type']=='1' && count($query_vars)>2) )
$group['name'] = Security::remove_XSS($group['name'], STUDENT, true);
$group['description'] = Security::remove_XSS($group['description'], STUDENT, true);
$id = $group['id'];
$url_open = '<a class="btn btn-default" href="groups.php?id='.$id.'">';
$url_open = '<a class="btn btn-default" href="group_view.php?id='.$id.'">';
$url_close = '</a>';
$name = cut($group['name'], 60, true);
$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($group['id'], $group['picture_uri'], GROUP_IMAGE_SIZE_ORIGINAL);
$tags = GroupPortalManager::get_group_tags($group['id']);
$group['picture_uri'] = '<img src="'.$picture['file'].'" />';
$picture = $usergroup->get_picture_group($group['id'], $group['picture'], GROUP_IMAGE_SIZE_ORIGINAL);
//$tags = $usergroup->get_group_tags($group['id']);
$tags = null;
$group['picture'] = '<img src="'.$picture['file'].'" />';
$members = Display::span($count_users_group);
$item_1 = Display::tag('h3', $url_open.$name.$url_close).$members;
@ -163,7 +167,7 @@ if ($query != '' || ($query_vars['search_type']=='1' && count($query_vars)>2) )
<div class="col-md-4">
<div class="card">
<div class="avatar">
'.$group['picture_uri'].'
'.$group['picture'].'
</div>
<div class="content">
'.$item_1.'

@ -114,6 +114,9 @@
//$('#tabs a:first').tab('show') // Select first tab
});
// Fixes bug when loading links inside a tab.
$('.tab-wrapper .tab-pane a').unbind();
/**
* Advanced options
* Usage

@ -0,0 +1,4 @@
<div class="panel panel-info social-avatar">
{{ socialAvatarBlock }}
<p class="lead">{{ group_info.complete_name }}</p>
</div>

@ -0,0 +1,38 @@
{% extends template ~ "/layout/layout_1_col.tpl" %}
{% block content %}
<div class="row" xmlns="http://www.w3.org/1999/html">
<div class="col-md-3">
<div class="social-menu">
{{ social_avatar_block }}
{{ social_menu_block }}
</div>
</div>
<div class="col-md-9" style="min-height:1px">
<div id="social-group-details">
<h4>{{ group_info.name }}</h4>
</div>
{{ create_link }}
{% if is_group_member == false %}
<div class="social-group-details-info">
{{ 'Privacy' | get_lang }}
{% if group_info.visibility == 1 %}
{{ 'ThisIsAnOpenGroup' | get_lang }}
{% else %}
{{ 'ThisIsACloseGroup' | get_lang }}
{% endif %}
</div>
{% endif %}
{{ social_right_content }}
<div id="display_response_id" class="col-md-5"></div>
{{ social_auto_extend_link }}
</div>
</div>
{% endblock %}

@ -13,6 +13,7 @@
{{ social_search_block }}
{{ social_skill_block }}
{{ social_group_block }}
{{ social_right_content }}
<div id="message_ajax_reponse" class=""></div>
<div id="display_response_id"></div>
{{ social_auto_extend_link }}

@ -3,9 +3,9 @@
namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* Usergroup
@ -18,9 +18,9 @@ class Usergroup
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", precision=0, scale=0, nullable=false, unique=false)
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\GeneratedValue()
*/
protected $id;
@ -34,10 +34,61 @@ class Usergroup
/**
* @var string
*
* @ORM\Column(name="description", type="text", precision=0, scale=0, nullable=false, unique=false)
* @ORM\Column(name="description", type="text", nullable=true)
*/
protected $description;
/**
* @var integer
*
* @ORM\Column(name="group_type", type="integer", nullable=false)
*/
protected $groupType;
/**
* @var string
*
* @ORM\Column(name="picture", type="string", length=255, nullable=true)
*/
protected $picture;
/**
* @var string
*
* @ORM\Column(name="url", type="string", length=255, nullable=true)
*/
protected $url;
/**
* @var string
*
* @ORM\Column(name="visibility", type="string", length=255, nullable=false)
*/
protected $visibility;
/**
* @var integer
*
* @ORM\Column(name="allow_members_leave_group", type="integer")
*/
protected $allowMembersToLeaveGroup;
/**
* @var \DateTime $created
*
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime")
*/
protected $createdAt;
/**
* @var \DateTime $updated
*
* @Gedmo\Timestampable(on="update")
* @ORM\Column(name="updated_at", type="datetime")
*/
protected $updatedAt;
/**
* @ORM\OneToMany(targetEntity="UsergroupRelUser", mappedBy="usergroup", cascade={"persist"}, orphanRemoval=true)
**/
@ -157,4 +208,27 @@ class Usergroup
{
return $this->description;
}
/**
* @return int
*/
public function getGroupType()
{
return $this->groupType;
}
/**
* @param int $groupType
*
* @return Usergroup
*/
public function setGroupType($groupType)
{
$this->groupType = $groupType;
return $this;
}
}

@ -3,8 +3,8 @@
namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Chamilo\UserBundle\Entity\User;
use Doctrine\ORM\Mapping as ORM;
/**
* ,
@ -33,6 +33,13 @@ class UsergroupRelUser
*/
protected $id;
/**
* @var integer
*
* @ORM\Column(name="relation_type", type="integer", nullable=false)
*/
private $relationType;
/**
* @var User
*
@ -105,4 +112,28 @@ class UsergroupRelUser
{
return $this->usergroup;
}
/**
* Set relationType
*
* @param integer $relationType
* @return GroupRelUser
*/
public function setRelationType($relationType)
{
$this->relationType = $relationType;
return $this;
}
/**
* Get relationType
*
* @return integer
*/
public function getRelationType()
{
return $this->relationType;
}
}

@ -8,7 +8,7 @@ use Doctrine\DBAL\Schema\Schema;
/**
* Auto-generated Migration: Please modify to your needs!
* Usergroup changes
*/
class Version20150522112023 extends AbstractMigrationChamilo
{
@ -17,6 +17,112 @@ class Version20150522112023 extends AbstractMigrationChamilo
*/
public function up(Schema $schema)
{
$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');
$connection = $this->connection;
$sql = "SELECT * FROM groups";
$result = $connection->executeQuery($sql);
$groups = $result->fetchAll();
$oldGroups = array();
if (!empty($groups )) {
foreach ($groups as $group) {
$sql = "INSERT INTO usergroup (name, group_type, description, picture, url, visibility, updated_at, created_at)
VALUES ('{$group['name']}', '1', '{$group['description']}', '{$group['picture_uri']}', '{$group['url']}', '{$group['visibility']}', '{$group['updated_on']}', '{$group['created_on']}')";
$connection->executeQuery($sql);
$id = $connection->lastInsertId('id');
$oldGroups[$group['id']] = $id;
}
}
if (!empty($oldGroups)) {
foreach ($oldGroups as $oldId => $newId) {
$path = \GroupPortalManager::get_group_picture_path_by_id(
$oldId,
'system'
);
if (!empty($path)) {
$newPath = str_replace(
"groups/$oldId/",
"groups/$newId/",
$path['dir']
);
$command = "mv {$path['dir']} $newPath ";
system($command);
}
}
$sql = "SELECT * FROM group_rel_user";
$result = $connection->executeQuery($sql);
$dataList = $result->fetchAll();
if (!empty($dataList)) {
foreach ($dataList as $data) {
if (isset($oldGroups[$data['group_id']])) {
$data['group_id'] = $oldGroups[$data['group_id']];
$sql = "INSERT INTO usergroup_rel_user (usergroup_id, user_id, relation_type)
VALUES ('{$data['group_id']}', '{$data['user_id']}', '{$data['relation_type']}')";
$connection->executeQuery($sql);
}
}
}
$sql = "SELECT * FROM group_rel_group";
$result = $connection->executeQuery($sql);
$dataList = $result->fetchAll();
if (!empty($dataList)) {
foreach ($dataList as $data) {
if (isset($oldGroups[$data['group_id']]) && isset($oldGroups[$data['subgroup_id']])) {
$data['group_id'] = $oldGroups[$data['group_id']];
$data['subgroup_id'] = $oldGroups[$data['subgroup_id']];
$sql = "INSERT INTO usergroup_rel_usergroup (group_id, subgroup_id, relation_type)
VALUES ('{$data['group_id']}', '{$data['subgroup_id']}', '{$data['relation_type']}')";
$connection->executeQuery($sql);
}
}
}
$sql = "SELECT * FROM announcement_rel_group";
$result = $connection->executeQuery($sql);
$dataList = $result->fetchAll();
if (!empty($dataList)) {
foreach ($dataList as $data) {
if (isset($oldGroups[$data['group_id']])) {
//Deleting relation
$sql = "DELETE FROM announcement_rel_group WHERE id = {$data['id']}";
$connection->executeQuery($sql);
//Add new relation
$data['group_id'] = $oldGroups[$data['group_id']];
$sql = "INSERT INTO announcement_rel_group(group_id, announcement_id)
VALUES ('{$data['group_id']}', '{$data['announcement_id']}')";
$connection->executeQuery($sql);
}
}
}
$sql = "SELECT * FROM group_rel_tag";
$result = $connection->executeQuery($sql);
$dataList = $result->fetchAll();
if (!empty($dataList)) {
foreach ($dataList as $data) {
if (isset($oldGroups[$data['group_id']])) {
$data['group_id'] = $oldGroups[$data['group_id']];
$sql = "INSERT INTO usergroup_rel_tag (tag_id, usergroup_id)
VALUES ('{$data['tag_id']}', '{$data['group_id']}')";
$connection->executeQuery($sql);
}
}
}
}
if (!$schema->hasTable('access_url_rel_usergroup')) {
$this->addSql(
'CREATE TABLE access_url_rel_usergroup (id INT UNSIGNED AUTO_INCREMENT NOT NULL, access_url_id INT UNSIGNED NOT NULL, usergroup_id INT UNSIGNED NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB'

Loading…
Cancel
Save