Beispiel #1
0
        public void HandleDeleteShapes(LitePeer peer,
                                       OperationRequest operationRequest,
                                       SendParameters sendParameters)
        {
            var req = DeleteShapesRequest.Read(operationRequest.Parameters);

            var owner = req.initialOwnerId;
            var shapesBeingRemoved = _doc.GetShapes().Where(sh => sh.InitialOwner() == owner &&
                                                            sh.ShapeCode() != VdShapeType.Badge &&
                                                            sh.ShapeCode() != VdShapeType.Cluster &&
                                                            sh.ShapeCode() != VdShapeType.ClusterLink
                                                            );

            //check permissions
            foreach (var sr in shapesBeingRemoved)
            {
                if (!_doc.editingPermission(sr, owner))
                {
                    return;
                }
            }

            //ok, remove
            foreach (var sr in shapesBeingRemoved.ToArray())
            {
                UnlockDeleteBroadcast(sr.Id(), req.ownerId);
            }

            _pendingChanges = true;
        }
Beispiel #2
0
        public void SendDeleteShapesRequest(int ownerId, int initialOwnerId, int topicId)
        {
            if (peer == null || peer.PeerState != PeerStateValue.Connected)
            {
                return;
            }

            peer.OpCustom((byte)DiscussionOpCode.DeleteShapesRequest,
                          DeleteShapesRequest.Write(ownerId, initialOwnerId, topicId),
                          true);
        }