コード例 #1
0
api_block_anonymous_users();
if (api_get_setting('allow_social_tool') != 'true') {
    api_not_allowed();
}

require_once api_get_path(LIBRARY_PATH) . 'group_portal_manager.lib.php';

$group_id = intval($_GET['id']);
$topic_id = intval($_GET['topic_id']);
$message_id = intval($_GET['msg_id']);

//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);
    if (empty($group_info)) {
        api_not_allowed(true);
    }
    $is_member = GroupPortalManager::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
    );
コード例 #2
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;
 }
コード例 #3
0
function manage_form($default, $select_from_user_list = null, $sent_to = null) {
	$group_id 		= isset($_REQUEST['group_id']) ? intval($_REQUEST['group_id']) : null;
	$message_id 	= isset($_GET['message_id'])  ?  intval($_GET['message_id']) : null;
	$param_f 		= isset($_GET['f']) && $_GET['f'] == 'social' ? 'social' : null;

	$form = new FormValidator('compose_message', null, api_get_self().'?f='.$param_f, null, array('enctype'=>'multipart/form-data'));
	if (empty($group_id)) {
		if (isset($select_from_user_list)) {
			$form->add_textfield(
                'id_text_name',
                get_lang('SendMessageTo'),
                true,
                array(
                    'class' => 'span4',
                    'id'=>'id_text_name',
                    'onkeyup'=>'send_request_and_search()',
                    'autocomplete'=>'off'
                )
            );
			$form->addRule('id_text_name', get_lang('ThisFieldIsRequired'), 'required');
			$form->addElement('html','<div id="id_div_search" style="padding:0px" class="message-select-box" >&nbsp;</div>');
			$form->addElement('hidden','user_list', 0, array('id'=>'user_list'));
		} else {
            if (!empty($sent_to)) {
                $form->addElement('html',$sent_to);
            }
			if (empty($default['users'])) {
                //fb select
                $form->addElement('select', 'users', get_lang('SendMessageTo'), array(), array('id' => 'users'));
			} else {
				$form->addElement('hidden','hidden_user',$default['users'][0],array('id'=>'hidden_user'));
			}
		}
	} else {
		$group_info = GroupPortalManager::get_group_data($group_id);

		$form->addElement('label', get_lang('ToGroup'), api_xml_http_response_encode($group_info['name']));
		$form->addElement('hidden','group_id',$group_id);
		$form->addElement('hidden','parent_id',$message_id);
	}

	$form->add_textfield('title', get_lang('Subject'), true, array('class' => 'span4'));
	$form->add_html_editor('content', get_lang('Message'), false, false, array('ToolbarSet' => 'Messages', 'Width' => '95%', 'Height' => '250'));

	if (isset($_GET['re_id'])) {
	    $message_reply_info = MessageManager::get_message_by_id($_GET['re_id']);
        $default['title'] = get_lang('MailSubjectReplyShort')." ".$message_reply_info['title'];
		$form->addElement('hidden','re_id', intval($_GET['re_id']));
		$form->addElement('hidden','save_form','save_form');

		//adding reply mail
		$user_reply_info = UserManager::get_user_info_by_id($message_reply_info['user_sender_id']);
		$default['content'] = '<p><br/></p>'.sprintf(get_lang('XWroteY'), api_get_person_name($user_reply_info['firstname'], $user_reply_info['lastname']), Security::filter_terms($message_reply_info['content']));
	}

	if (empty($group_id)) {
        $form->addElement('advanced_settings', get_lang('FilesAttachment').'<span id="filepaths">
                    <div id="filepath_1">
                        <input type="file" name="attach_1"/><br />
                        '.get_lang('Description').'&nbsp;&nbsp;<input type="text" name="legend[]" /><br /><br />
                    </div>
                </span>');
		$form->addElement('advanced_settings','<span id="link-more-attach"><a href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a></span>&nbsp;('.sprintf(get_lang('MaximunFileSizeX'),format_file_size(api_get_setting('message_max_upload_filesize'))).')');
	}

	$form->addElement('style_submit_button','compose',api_xml_http_response_encode(get_lang('SendMessage')),'class="save"');
	$form->setRequiredNote('<span class="form_required">*</span> <small>'.get_lang('ThisFieldIsRequired').'</small>');

	if (!empty($group_id) && !empty($message_id)) {
		$message_info = MessageManager::get_message_by_id($message_id);
		$default['title'] = get_lang('MailSubjectReplyShort')." ".$message_info['title'];
	}
	$form->setDefaults($default);
    $html = '';
	if ($form->validate()) {
		$check = Security::check_token('post');
		if ($check) {
			$user_list		= $default['users'];
			$file_comments	= $_POST['legend'];
			$title 			= $default['title'];
			$content 		= $default['content'];
			$group_id		= isset($default['group_id']) ? $default['group_id'] : null;
			$parent_id 		= isset($default['parent_id']) ? $default['parent_id'] : null;
			if (is_array($user_list) && count($user_list)> 0) {
				//all is well, send the message
				foreach ($user_list as $user) {
					$res = MessageManager::send_message(
						$user,
						$title,
						$content,
						$_FILES,
						$file_comments,
						$group_id,
						$parent_id
					);
					if ($res) {
						if (is_string($res)) {
							$html .= Display::return_message($res, 'error');
						} else {
							$html .= MessageManager::display_success_message($user);
						}
					}
				}
			} else {
				Display::display_error_message('ErrorSendingMessage');
			}
		}
		Security::clear_token();
	} else {
		$token = Security::get_token();
		$form->addElement('hidden','sec_token');
		$form->setConstants(array('sec_token' => $token));
		$html .= $form->return_form();
	}
    return $html;
}
コード例 #4
0
    /**
     * Shows the left column of the group page
     * @param int $group_id
     * @param int $user_id
     *
     */
    public static function show_group_column_information($group_id, $user_id, $show = '')
    {
        global $relation_group_title, $my_group_role;
        $html = '';
        $group_info = GroupPortalManager::get_group_data($group_id);
        // My relation with the group is set here.
        $my_group_role = self::get_user_group_role($user_id, $group_id);
        //@todo this must be move to default.css for dev use only
        $html .= '<style>
				#group_members { width:270px; height:300px; overflow-x:none; overflow-y: auto;}
				.group_member_item { width:100px; height:130px; float:left; margin:5px 5px 15px 5px; }
				.group_member_picture { display:block;
					margin:0;
					overflow:hidden; };
		</style>';
        //Loading group permission
        $links = '';
        switch ($my_group_role) {
            case GROUP_USER_PERMISSION_READER:
                // I'm just a reader
                $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="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:
                $relation_group_title = get_lang('IAmAnAdmin');
                $links .= '<li><a href="group_edit.php?id=' . $group_id . '">' . Display::return_icon('group_edit.png', get_lang('EditGroup'), array('hspace' => '6')) . '<span class="' . ($show == 'group_edit' ? 'social-menu-text-active' : 'social-menu-text4') . '" >' . get_lang('EditGroup') . '</span></a></li>';
                $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="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:
                //				$links .=  '<li><a href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.Display::return_icon('addd.gif', get_lang('YouHaveBeenInvitedJoinNow'), array('hspace'=>'6')).'<span class="social-menu-text4" >'.get_lang('YouHaveBeenInvitedJoinNow').'</span></a></li>';
                break;
            case GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER:
                $relation_group_title = get_lang('WaitingForAdminResponse');
                break;
            case GROUP_USER_PERMISSION_MODERATOR:
                $relation_group_title = get_lang('IAmAModerator');
                if ($group_info['visibility'] == GROUP_PERMISSION_CLOSED) {
                    $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="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" data-size="lg" data-title="' . get_lang('ComposeMessage') . ' title="' . get_lang('ComposeMessage') . '">' . Display::return_icon('new-message.png', get_lang('NewTopic'), array('hspace' => '6')) . '<span class="social-menu-text4" >' . get_lang('NewTopic') . '</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="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>';
                break;
        }
        if (!empty($links)) {
            $html .= '<div class="well sidebar-nav"><ul class="nav nav-list">';
            if (!empty($group_info['description'])) {
                $html .= Display::tag('li', Security::remove_XSS($group_info['description'], STUDENT, true), array('class' => 'group_description'));
            }
            $html .= $links;
            $html .= '</ul></div>';
        }
        return $html;
    }
コード例 #5
0
    /**
     * Shows the avatar block in social pages
     *
     * @param string highlight link possible values: group_add, home, messages, messages_inbox, messages_compose ,messages_outbox ,invitations, shared_profile, friends, groups search
     * @param int group id
     * @param int user id
     *
     */
    public static function show_social_avatar_block($show = '', $group_id = 0, $user_id = 0)
    {
        if (empty($user_id)) {
            $user_id = api_get_user_id();
        }

        $show_groups = array(
            'groups',
            'group_messages',
            'messages_list',
            'group_add',
            'mygroups',
            'group_edit',
            'member_list',
            'invite_friends',
            'waiting_list',
            'browse_groups'
        );

        // get count unread message and total invitations
        $count_unread_message = MessageManager::get_number_of_messages(true);
        $count_unread_message = !empty($count_unread_message) ? Display::badge($count_unread_message) : null;

        $number_of_new_messages_of_friend = SocialManager::get_message_number_invitation_by_user_id(api_get_user_id());
        $group_pending_invitations = GroupPortalManager::get_groups_by_user(api_get_user_id(), GROUP_USER_PERMISSION_PENDING_INVITATION, false);
        $group_pending_invitations = count($group_pending_invitations);
        $total_invitations = $number_of_new_messages_of_friend + $group_pending_invitations;
        $total_invitations = (!empty($total_invitations) ? Display::badge($total_invitations) : '');
        $showUserImage = user_is_online($user_id) || api_is_platform_admin();

        $html = '<div>';
        if (in_array($show, $show_groups) && !empty($group_id)) {
            //--- Group image
            $group_info = GroupPortalManager::get_group_data($group_id);
            $big = GroupPortalManager::get_picture_group($group_id, $group_info['picture_uri'], 160, GROUP_IMAGE_SIZE_BIG);

            $html .= '<div class="social-content-image">';
            $html .= '<div class="well social-background-content">';
            $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);
            if (GroupPortalManager::is_group_admin($group_id, api_get_user_id())) {
                $html .= '<div id="edit_image" class="hidden_message" style="display:none">
                            <a href="'.api_get_path(WEB_CODE_PATH).'social/group_edit.php?id='.$group_id.'">'.
                    get_lang('EditGroup').'</a></div>';
            }
            $html .= '</div>';
            $html .= '</div>';
        } else {
            if ($showUserImage) {
                $img_array = UserManager::get_user_picture_path_by_id($user_id, 'web', true, true);
            } else {
                $img_array = UserManager::get_user_picture_path_by_id(null, 'web', true, true);
            }
            $big_image = UserManager::get_picture_user($user_id, $img_array['file'], '', USER_IMAGE_SIZE_BIG);
            $big_image = $big_image['file'].'?'.uniqid();
            $normal_image = $img_array['dir'].$img_array['file'].'?'.uniqid();

            //--- User image

            $html .= '<div class="well social-background-content">';
            if ($img_array['file'] != 'unknown.jpg') {
                $html .= '<a class="thumbnail thickbox" href="'.$big_image.'"><img src='.$normal_image.' /> </a>';
            } else {
                $html .= '<img src='.$normal_image.' width="110px" />';
            }
            if (api_get_user_id() == $user_id) {
                $html .= '<div id="edit_image" class="hidden_message" style="display:none">';
                $html .= '<a href="'.api_get_path(WEB_CODE_PATH).'auth/profile.php">'.get_lang('EditProfile').'</a></div>';
            }
            $html .= '</div>';
        }
        $html .= '</div>';
        return $html;
    }