/** * Sends a message to a user/group * * @param int $receiver_user_id * @param string $subject * @param string $content * @param array $file_attachments files array($_FILES) (optional) * @param array $file_comments about attachment files (optional) * @param int $group_id (optional) * @param int $parent_id (optional) * @param int $edit_message_id id for updating the message (optional) * @param int $topic_id (optional) the default value is the current user_id * @param int $sender_id * @return bool */ public static function send_message($receiver_user_id, $subject, $content, $file_attachments = array(), $file_comments = array(), $group_id = 0, $parent_id = 0, $edit_message_id = 0, $topic_id = 0, $sender_id = null) { $table_message = Database::get_main_table(TABLE_MESSAGE); $group_id = intval($group_id); $receiver_user_id = intval($receiver_user_id); $parent_id = intval($parent_id); $edit_message_id = intval($edit_message_id); $topic_id = intval($topic_id); if (!empty($receiver_user_id)) { $receiverUserInfo = api_get_user_info($receiver_user_id); // Disabling messages for inactive users. if ($receiverUserInfo['active'] == 0) { return false; } } if (empty($sender_id)) { $user_sender_id = api_get_user_id(); } else { $user_sender_id = intval($sender_id); } $total_filesize = 0; if (is_array($file_attachments)) { foreach ($file_attachments as $file_attach) { $total_filesize += $file_attach['size']; } } // Validating fields if (empty($subject) && empty($group_id)) { return get_lang('YouShouldWriteASubject'); } else { if ($total_filesize > intval(api_get_setting('message_max_upload_filesize'))) { return sprintf(get_lang("FilesSizeExceedsX"), format_file_size(api_get_setting('message_max_upload_filesize'))); } } $inbox_last_id = null; //Just in case we replace the and \n and \n\r while saving in the DB $content = str_replace(array("\n", "\n\r"), '<br />', $content); $now = api_get_utc_datetime(); if (!empty($receiver_user_id) || !empty($group_id)) { // message for user friend $clean_subject = Database::escape_string($subject); $clean_content = Database::escape_string($content); //message in inbox for user friend //@todo it's possible to edit a message? yes, only for groups if ($edit_message_id) { $query = " UPDATE {$table_message} SET\n update_date = '" . $now . "',\n content = '{$clean_content}'\n WHERE id = '{$edit_message_id}' "; Database::query($query); $inbox_last_id = $edit_message_id; } else { $query = "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}', '1', '" . $now . "','{$clean_subject}','{$clean_content}','{$group_id}','{$parent_id}', '" . $now . "')"; Database::query($query); $inbox_last_id = Database::insert_id(); } // Save attachment file for inbox messages if (is_array($file_attachments)) { $i = 0; foreach ($file_attachments as $file_attach) { if ($file_attach['error'] == 0) { self::save_message_attachment_file($file_attach, $file_comments[$i], $inbox_last_id, null, $receiver_user_id, $group_id); } $i++; } } 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 . "')"; Database::query($sql); $outbox_last_id = Database::insert_id(); // save attachment file for outbox messages if (is_array($file_attachments)) { $o = 0; foreach ($file_attachments as $file_attach) { if ($file_attach['error'] == 0) { self::save_message_attachment_file($file_attach, $file_comments[$o], $outbox_last_id, $user_sender_id); } $o++; } } } // Load user settings. $notification = new Notification(); $sender_info = api_get_user_info($user_sender_id); if (empty($group_id)) { $notification->save_notification(Notification::NOTIFICATION_TYPE_MESSAGE, array($receiver_user_id), $subject, $content, $sender_info); } else { $group_info = GroupPortalManager::get_group_data($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); // Adding more sense to the message group $subject = sprintf(get_lang('ThereIsANewMessageInTheGroupX'), $group_info['name']); $new_user_list = array(); foreach ($user_list as $user_data) { $new_user_list[] = $user_data['user_id']; } $group_info = array('group_info' => $group_info, 'user_info' => $sender_info); $notification->save_notification(Notification::NOTIFICATION_TYPE_GROUP, $new_user_list, $subject, $content, $group_info); } return $inbox_last_id; } return false; }
if (GroupPortalManager::is_group_admin($group_id)) { GroupPortalManager::update_user_role( $user_moderator, $group_id, GROUP_USER_PERMISSION_READER ); $show_message = Display::return_message(get_lang('UserChangeToReader')); } } $users = GroupPortalManager::get_users_by_group( $group_id, false, array( GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_READER, GROUP_USER_PERMISSION_MODERATOR ), 0, 1000 ); $new_member_list = array(); $social_avatar_block = SocialManager::show_social_avatar_block( 'member_list', $group_id ); $social_menu_block = SocialManager::show_social_menu('member_list', $group_id); $social_right_content = '<h2>' . $group_info['name'] . '</h2>'; $social_right_content .= '<div style="width:90%">';
$users = $sessions = array(); $noPHP_SELF = true; $group_info = GroupPortalManager::get_group_data($group_id); $group_name = $group_info['name']; Display::display_header($group_name); if (isset($_POST['form_sent']) && $_POST['form_sent']) { $form_sent = $_POST['form_sent']; $firstLetterUser = isset($_POST['firstLetterUser']) ? $_POST['firstLetterUser'] : null; $UserList = $_POST['sessionUsersList']; $group_id = intval($_POST['id']); $relation_type = intval($_POST['relation']); if (!is_array($UserList)) { $UserList = array(); } if ($form_sent == 1) { $users_by_group = GroupPortalManager::get_users_by_group($group_id, null, array($relation_type)); $user_id_relation = array_keys($users_by_group); $user_relation_diff = array_diff($user_id_relation, $UserList); if (!empty($user_relation_diff)) { foreach ($user_relation_diff as $user_id) { GroupPortalManager::delete_user_rel_group($user_id, $group_id); } } $result = GroupPortalManager::add_users_to_groups($UserList, array($group_id), $relation_type); Display::display_confirmation_message(get_lang('UsersEdited')); } } $nosessionUsersList = $sessionUsersList = array(); $ajax_search = $add_type == 'unique' ? true : false; $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username'; if ($ajax_search) {
$group_info = GroupPortalManager::get_group_data($group_id); $group_name = $group_info['name']; Display::display_header($group_name); if ($_POST['form_sent']) { $form_sent = $_POST['form_sent']; $firstLetterUser = $_POST['firstLetterUser']; $UserList = $_POST['sessionUsersList']; $group_id = intval($_POST['id']); $relation_type = intval($_POST['relation']); if (!is_array($UserList)) { $UserList = array(); } if ($form_sent == 1) { if ($relation_type == GROUP_USER_PERMISSION_PENDING_INVITATION) { $relations = array(GROUP_USER_PERMISSION_PENDING_INVITATION, GROUP_USER_PERMISSION_READER); $users_by_group = GroupPortalManager::get_users_by_group($group_id, null, $relations); $user_id_relation = array_keys($users_by_group); $user_relation_diff = array_diff($user_id_relation, $UserList); foreach ($user_relation_diff as $user_id) { GroupPortalManager::delete_user_rel_group($user_id, $group_id); } } else { GroupPortalManager::delete_users($group_id, $relation_type); } $result = GroupPortalManager::add_users_to_groups($UserList, array($group_id), $relation_type); Display::display_confirmation_message(get_lang('UsersEdited')); } } $nosessionUsersList = $sessionUsersList = array(); $ajax_search = $add_type == 'unique' ? true : false; $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username';
/** * Get the group member list by a user and his group role * @param int $userId The user ID * @param int $relationType Optional. The relation type. GROUP_USER_PERMISSION_ADMIN by default * @param boolean $includeSubgroupsUsers Optional. Whether include the users from subgroups * @return array */ public static function getGroupUsersByUser($userId, $relationType = GROUP_USER_PERMISSION_ADMIN, $includeSubgroupsUsers = true) { $userId = intval($userId); $groups = GroupPortalManager::get_groups_by_user($userId, $relationType); $groupsId = array_keys($groups); $subgroupsId = []; $userIdList = []; if ($includeSubgroupsUsers) { foreach ($groupsId as $groupId) { $subgroupsId = array_merge($subgroupsId, GroupPortalManager::getGroupsByDepthLevel($groupId)); } $groupsId = array_merge($groupsId, $subgroupsId); } $groupsId = array_unique($groupsId); if (empty($groupsId)) { return []; } foreach ($groupsId as $groupId) { $groupUsers = GroupPortalManager::get_users_by_group($groupId); if (empty($groupUsers)) { continue; } foreach ($groupUsers as $member) { if ($member['user_id'] == $userId) { continue; } $userIdList[] = intval($member['user_id']); } } return array_unique($userIdList); }
$show_message = get_lang('UserDeleted'); } } 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); $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); $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); if (!empty($show_message)){ $social_right_content .= Display :: return_message($show_message); } // Display form 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>';
<td colspan="3" align="center"> <br /> <button class="save" type="button" value="" onclick="valide()" >' . get_lang( 'InviteUsersToGroup' ) . '</button> </td> </tr> </table> </form>'; $social_right_content .= $form; // Current group members $members = GroupPortalManager::get_users_by_group( $group_id, false, array(GROUP_USER_PERMISSION_PENDING_INVITATION) ); if (is_array($members) && count($members) > 0) { foreach ($members as &$member) { $image_path = UserManager::get_user_picture_path_by_id( $member['user_id'], 'web', false, true ); $picture = UserManager::get_picture_user( $member['user_id'], $image_path['file'], 80 );