コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
    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%">';
コード例 #3
0
$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) {
コード例 #4
0
$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';
コード例 #5
0
 /**
  * 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);
 }
コード例 #6
0
        $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>';
コード例 #7
0
	<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
        );