Search in sources :

Example 11 with Client

use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.

the class Chat method getMessage.

public JSONObject getMessage(List<ChatMessage> list) {
    final Client c = getClient();
    final User curUser = c == null ? userDao.get(getUserId()) : c.getUser();
    return getMessage(curUser, list);
}
Also used : User(org.apache.openmeetings.db.entity.user.User) Client(org.apache.openmeetings.db.entity.basic.Client)

Example 12 with Client

use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.

the class RecordingResourceReference method getRecording.

private Recording getRecording(Long id, String ruid, String uid) {
    log.debug("Recording with id {} is requested", id);
    Recording r = recDao.get(id);
    if (r == null || r.getType() == Type.Folder || r.isDeleted()) {
        return null;
    }
    if (id.equals(getRecordingId())) {
        return r;
    }
    Client c = cm.get(uid);
    if (c != null && c.getRoom() != null) {
        Whiteboards wbs = wbm.get(c.getRoom().getId());
        if (wbs != null && !Strings.isEmpty(ruid) && ruid.equals(wbs.getUid())) {
            for (Entry<Long, Whiteboard> e : wbs.getWhiteboards().entrySet()) {
                if (e.getValue().contains(r.getHash())) {
                    // item IS on WB
                    return r;
                }
            }
        }
    }
    if (r.getOwnerId() == null && r.getGroupId() == null) {
        // public
        return r;
    }
    if (r.getOwnerId() != null && getUserId().equals(r.getOwnerId())) {
        // own
        return r;
    }
    if (r.getGroupId() != null && groupUserDao.isUserInGroup(r.getGroupId(), getUserId())) {
        return r;
    }
    // external group check was added for plugin recording download
    String extType = getExternalType();
    if (extType != null) {
        User creator = userDao.get(r.getInsertedBy());
        if (extType.equals(creator.getExternalType())) {
            return r;
        }
    }
    return null;
}
Also used : User(org.apache.openmeetings.db.entity.user.User) Whiteboards(org.apache.openmeetings.db.dto.room.Whiteboards) Recording(org.apache.openmeetings.db.entity.record.Recording) Client(org.apache.openmeetings.db.entity.basic.Client) Whiteboard(org.apache.openmeetings.db.dto.room.Whiteboard)

Example 13 with Client

use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.

the class RoomMenuPanel method update.

public void update(IPartialPageRequestHandler handler) {
    if (!isVisible()) {
        return;
    }
    Room r = room.getRoom();
    boolean isInterview = Room.Type.interview == r.getType();
    User u = room.getClient().getUser();
    boolean notExternalUser = u.getType() != User.Type.contact;
    exitMenuItem.setEnabled(notExternalUser);
    filesMenu.setEnabled(!isInterview && room.getSidebar().isShowFiles());
    boolean moder = room.getClient().hasRight(Room.Right.moderator);
    actionsSubMenu.update(moder, notExternalUser, r);
    pollsSubMenu.update(moder, notExternalUser, r);
    menuPanel.update(handler);
    StringBuilder roomClass = new StringBuilder("room name");
    StringBuilder roomTitle = new StringBuilder();
    if (room.getRecordingUser() != null) {
        Client recClient = cm.getBySid(room.getRecordingUser());
        if (recClient != null) {
            roomTitle.append(String.format("%s %s %s %s %s", getString("419"), recClient.getUser().getLogin(), recClient.getUser().getFirstname(), recClient.getUser().getLastname(), df.format(recClient.getConnectedSince())));
            roomClass.append(" screen");
        }
        Client pubClient = cm.getBySid(room.getPublishingUser());
        if (pubClient != null) {
            if (recClient != null) {
                roomTitle.append('\n');
            }
            roomTitle.append(String.format("%s %s %s %s %s", getString("1504"), pubClient.getUser().getLogin(), pubClient.getUser().getFirstname(), pubClient.getUser().getLastname(), "URL"));
            roomClass.append(" screen");
        }
    }
    handler.add(roomName.add(AttributeModifier.replace(ATTR_CLASS, roomClass), AttributeModifier.replace(ATTR_TITLE, roomTitle)));
    handler.add(askBtn.setVisible(!moder && r.isAllowUserQuestions()));
    handler.add(shareBtn.setVisible(room.screenShareAllowed()));
}
Also used : User(org.apache.openmeetings.db.entity.user.User) Client(org.apache.openmeetings.db.entity.basic.Client) Room(org.apache.openmeetings.db.entity.room.Room)

Example 14 with Client

use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.

the class RoomPanel method onBeforeRender.

@Override
protected void onBeforeRender() {
    super.onBeforeRender();
    if (room.isVisible()) {
        // We are setting initial rights here
        Client c = getClient();
        final int count = cm.addToRoom(c.setRoom(getRoom()));
        SOAPLogin soap = WebSession.get().getSoapLogin();
        if (soap != null && soap.isModerator()) {
            c.allow(Right.superModerator);
            cm.update(c);
        } else {
            Set<Right> rr = AuthLevelUtil.getRoomRight(c.getUser(), r, r.isAppointment() ? apptDao.getByRoom(r.getId()) : null, count);
            if (!rr.isEmpty()) {
                c.allow(rr);
                cm.update(c);
            }
        }
    }
}
Also used : SOAPLogin(org.apache.openmeetings.db.entity.server.SOAPLogin) Right(org.apache.openmeetings.db.entity.room.Room.Right) Client(org.apache.openmeetings.db.entity.basic.Client)

Example 15 with Client

use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.

the class RoomPanel method onEvent.

@Override
public void onEvent(IEvent<?> event) {
    Client _c = getClient();
    if (_c != null && event.getPayload() instanceof WebSocketPushPayload) {
        WebSocketPushPayload wsEvent = (WebSocketPushPayload) event.getPayload();
        if (wsEvent.getMessage() instanceof RoomMessage) {
            RoomMessage m = (RoomMessage) wsEvent.getMessage();
            IPartialPageRequestHandler handler = wsEvent.getHandler();
            switch(m.getType()) {
                case pollCreated:
                    menu.updatePoll(handler, m.getUserId());
                    break;
                case pollUpdated:
                    menu.updatePoll(handler, null);
                    break;
                case recordingStoped:
                    {
                        String uid = ((TextRoomMessage) m).getText();
                        Client c = cm.getBySid(uid);
                        if (c == null) {
                            log.error("Not existing/BAD user has stopped recording {} != {} !!!!", uid);
                            return;
                        }
                        recordingUser = null;
                        cm.update(c.remove(Client.Activity.record));
                        menu.update(handler);
                        updateInterviewRecordingButtons(handler);
                    }
                    break;
                case recordingStarted:
                    {
                        JSONObject obj = new JSONObject(((TextRoomMessage) m).getText());
                        String sid = obj.getString("sid");
                        Client c = cm.getBySid(sid);
                        if (c == null) {
                            log.error("Not existing user has started recording {} !!!!", sid);
                            return;
                        }
                        recordingUser = sid;
                        cm.update(c.set(Client.Activity.record));
                        menu.update(handler);
                        updateInterviewRecordingButtons(handler);
                    }
                    break;
                case sharingStoped:
                    {
                        JSONObject obj = new JSONObject(((TextRoomMessage) m).getText());
                        String uid = obj.getString("uid");
                        Client c = cm.getBySid(obj.getString("sid"));
                        if (c == null) {
                            log.error("Not existing user has started sharing {} !!!!", obj);
                            return;
                        }
                        handler.appendJavaScript(String.format("VideoManager.close('%s', true);", uid));
                        sharingUser = null;
                        cm.update(c.removeStream(uid).remove(Client.Activity.share));
                        menu.update(handler);
                    }
                    break;
                case sharingStarted:
                    {
                        String uid = ((TextRoomMessage) m).getText();
                        Client c = cm.get(uid);
                        if (c == null) {
                            log.error("Not existing user has started sharing {} !!!!", uid);
                            return;
                        }
                        sharingUser = uid;
                        cm.update(c.set(Client.Activity.share));
                        menu.update(handler);
                    }
                    break;
                case rightUpdated:
                    {
                        String uid = ((TextRoomMessage) m).getText();
                        Client c = cm.get(uid);
                        if (c == null) {
                            log.error("Not existing user in rightUpdated {} !!!!", uid);
                            return;
                        }
                        boolean self = _c.getUid().equals(c.getUid());
                        handler.appendJavaScript(String.format("VideoManager.update(%s);", c.streamJson(_c.getSid(), self, scm).toString(new NullStringer())));
                        sidebar.update(handler);
                        menu.update(handler);
                        wb.update(handler);
                        updateInterviewRecordingButtons(handler);
                    }
                    break;
                case newStream:
                    {
                        JSONObject obj = new JSONObject(((TextRoomMessage) m).getText());
                        String uid = obj.getString("uid");
                        Client c = cm.get(uid);
                        if (c == null) {
                            // screen client, ext video stream
                            c = cm.getBySid(obj.getString("sid"));
                        }
                        if (c == null) {
                            log.error("Not existing user in newStream {} !!!!", uid);
                            return;
                        }
                        boolean self = _c.getSid().equals(c.getSid());
                        if (!self || Client.Type.room != scm.get(uid).getType()) {
                            // stream from others or self external video
                            JSONObject jo = videoJson(c, _c.getSid(), uid);
                            handler.appendJavaScript(String.format("VideoManager.play(%s);", jo));
                        }
                        if (self) {
                            cm.update(c.addStream(uid));
                        }
                        updateInterviewRecordingButtons(handler);
                    }
                    break;
                case closeStream:
                    {
                        JSONObject obj = new JSONObject(((TextRoomMessage) m).getText());
                        String uid = obj.getString("uid");
                        Client c = cm.getBySid(obj.getString("sid"));
                        if (c != null) {
                            // c == null means client exits the room
                            if (_c.getUid().equals(c.getUid())) {
                                cm.update(c.removeStream(uid));
                            }
                        }
                        handler.appendJavaScript(String.format("VideoManager.close('%s');", uid));
                        updateInterviewRecordingButtons(handler);
                    }
                    break;
                case roomEnter:
                    sidebar.update(handler);
                    menu.update(handler);
                    sidebar.addActivity(new Activity(m, Activity.Type.roomEnter), handler);
                    break;
                case roomExit:
                    sidebar.update(handler);
                    sidebar.addActivity(new Activity(m, Activity.Type.roomExit), handler);
                    break;
                case roomClosed:
                    handler.add(room.setVisible(false));
                    roomClosed.open(handler);
                    break;
                case requestRightModerator:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightModerator), handler);
                    break;
                case requestRightPresenter:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightPresenter), handler);
                    break;
                case requestRightWb:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightWb), handler);
                    break;
                case requestRightShare:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightShare), handler);
                    break;
                case requestRightRemote:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightRemote), handler);
                    break;
                case requestRightA:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightA), handler);
                    break;
                case requestRightAv:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightAv), handler);
                    break;
                case requestRightMute:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightMute), handler);
                    break;
                case requestRightExclusive:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightExclusive), handler);
                    break;
                case activityRemove:
                    sidebar.removeActivity(((TextRoomMessage) m).getText(), handler);
                    break;
                case haveQuestion:
                    if (_c.hasRight(Room.Right.moderator) || getUserId().equals(m.getUserId())) {
                        sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.haveQuestion), handler);
                    }
                    break;
                case kick:
                    {
                        String uid = ((TextRoomMessage) m).getText();
                        if (_c.getUid().equals(uid)) {
                            handler.add(room.setVisible(false));
                            getMainPanel().getChat().toggle(handler, false);
                            clientKicked.open(handler);
                            cm.exitRoom(_c);
                        }
                    }
                    break;
                case mute:
                    {
                        JSONObject obj = new JSONObject(((TextRoomMessage) m).getText());
                        Client c = cm.getBySid(obj.getString("sid"));
                        if (c == null) {
                            log.error("Not existing user in mute {} !!!!", obj);
                            return;
                        }
                        if (!_c.getUid().equals(c.getUid())) {
                            handler.appendJavaScript(String.format("if (typeof(VideoManager) !== 'undefined') {VideoManager.mute('%s', %s);}", obj.getString("uid"), obj.getBoolean("mute")));
                        }
                    }
                    break;
                case exclusive:
                    {
                        String uid = ((TextRoomMessage) m).getText();
                        Client c = cm.get(uid);
                        if (c == null) {
                            // no luck
                            return;
                        }
                        handler.appendJavaScript(String.format("if (typeof(VideoManager) !== 'undefined') {VideoManager.exclusive('%s');}", uid));
                    }
                    break;
                case quickPollUpdated:
                    {
                        menu.update(handler);
                        handler.appendJavaScript(getQuickPollJs());
                    }
                    break;
            }
        }
    }
    super.onEvent(event);
}
Also used : JSONObject(com.github.openjson.JSONObject) TextRoomMessage(org.apache.openmeetings.db.util.ws.TextRoomMessage) RoomMessage(org.apache.openmeetings.db.util.ws.RoomMessage) IPartialPageRequestHandler(org.apache.wicket.core.request.handler.IPartialPageRequestHandler) Activity(org.apache.openmeetings.web.room.activities.Activity) WebSocketPushPayload(org.apache.wicket.protocol.ws.api.event.WebSocketPushPayload) Client(org.apache.openmeetings.db.entity.basic.Client) TextRoomMessage(org.apache.openmeetings.db.util.ws.TextRoomMessage) NullStringer(org.apache.openmeetings.util.NullStringer)

Aggregations

Client (org.apache.openmeetings.db.entity.basic.Client)17 JSONObject (com.github.openjson.JSONObject)5 User (org.apache.openmeetings.db.entity.user.User)5 Whiteboard (org.apache.openmeetings.db.dto.room.Whiteboard)3 IClient (org.apache.openmeetings.db.entity.basic.IClient)3 Room (org.apache.openmeetings.db.entity.room.Room)3 RoomMessage (org.apache.openmeetings.db.util.ws.RoomMessage)3 Whiteboards (org.apache.openmeetings.db.dto.room.Whiteboards)2 TextRoomMessage (org.apache.openmeetings.db.util.ws.TextRoomMessage)2 JSONArray (com.github.openjson.JSONArray)1 BufferedImage (java.awt.image.BufferedImage)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 InputStream (java.io.InputStream)1 HashSet (java.util.HashSet)1 Entry (java.util.Map.Entry)1 Set (java.util.Set)1 IWsClient (org.apache.openmeetings.db.entity.basic.IWsClient)1 FileItem (org.apache.openmeetings.db.entity.file.FileItem)1 Recording (org.apache.openmeetings.db.entity.record.Recording)1