Esempio n. 1
0
        private static int GetOrCreateDiscussionId(
            ISession session,
            int accountid,
            Type type,
            int objectid,
            ManagedSecurityContext sec)
        {
            Discussion d = Find(session, accountid, type, objectid, sec);

            if (d != null)
            {
                return(d.Id);
            }

            ManagedDiscussionMapEntry mapentry = ManagedDiscussionMap.Find(type);

            TransitDiscussion td = new TransitDiscussion();

            td.AccountId    = accountid;
            td.Name         = mapentry.Name;
            td.Personal     = true;
            td.Description  = string.Empty;
            td.Created      = td.Modified = DateTime.UtcNow;
            td.ObjectId     = objectid;
            td.DataObjectId = ManagedDataObject.Find(session, type);

            // creating a discussion that belongs to a different user (commenting on someone's items)
            ManagedDiscussion      m_d   = new ManagedDiscussion(session);
            ManagedSecurityContext o_sec = new ManagedSecurityContext(session, accountid);

            return(m_d.CreateOrUpdate(td, o_sec));
        }
Esempio n. 2
0
        public override string GetAccessDeniedRedirectUri()
        {
            ManagedDiscussionMapEntry mapentry;

            if (ManagedDiscussionMap.TryFind(mInstance.DataObject, out mapentry))
            {
                return(string.Format(mapentry.DiscussionUriFormat, mInstance.ObjectId));
            }
            return(string.Empty);
        }
Esempio n. 3
0
        public static int GetOrCreateDiscussionId(
            ISession session,
            string typename,
            int objectid,
            ManagedSecurityContext sec)
        {
            ManagedDiscussionMapEntry mapentry = ManagedDiscussionMap.Find(
                Assembly.GetAssembly(typeof(Account)).GetType(typename));
            // find the owner's account id
            int account_id = mapentry.GetAccountId(session, objectid);

            return(GetOrCreateDiscussionId(session, account_id, mapentry.Type, objectid, sec));
        }
Esempio n. 4
0
        public override ACL GetACL(Type type)
        {
            ManagedDiscussionMapEntry mapentry = null;
            ACL acl = null;

            if (mInstance.Personal && ManagedDiscussionMap.TryFind(mInstance.DataObject, out mapentry))
            {
                acl = mapentry.GetACL(Session, mInstance.ObjectId, typeof(Discussion));
            }
            else
            {
                acl = base.GetACL(type);
                acl.Add(new ACLEveryoneAllowRetrieve());
            }

            acl.Add(new ACLAccount(mInstance.Account, DataOperation.All));
            return(acl);
        }
Esempio n. 5
0
        public override ACL GetACL(Type type)
        {
            ManagedDiscussionMapEntry mapentry = null;
            ACL acl = null;

            if (mInstance.Discussion.Personal && ManagedDiscussionMap.TryFind(mInstance.Discussion.DataObject, out mapentry))
            {
                acl = mapentry.GetACL(Session, mInstance.Discussion.ObjectId, typeof(DiscussionThread));
            }
            else
            {
                acl = base.GetACL(type);
                acl.Add(new ACLEveryoneAllowRetrieve());
                acl.Add(new ACLAuthenticatedAllowCreate());
            }

            return(acl);
        }
Esempio n. 6
0
        public override TransitDiscussion GetTransitInstance(ManagedSecurityContext sec)
        {
            TransitDiscussion t_instance = base.GetTransitInstance(sec);

            t_instance.PostCount    = GetDiscussionPostCount(Session, Id);
            t_instance.ThreadCount  = GetDiscussionThreadCount(Session, Id);
            t_instance.CanUpdate    = GetACL().TryCheck(sec, DataOperation.Update);
            t_instance.DataObjectId = (mInstance.DataObject != null ? mInstance.DataObject.Id : 0);

            if (t_instance.Personal && t_instance.ObjectId > 0 && mInstance.DataObject != null)
            {
                ManagedDiscussionMapEntry mapentry;
                if (ManagedDiscussionMap.TryFind(mInstance.DataObject, out mapentry))
                {
                    t_instance.ParentObjectName = mapentry.GetObjectName(Session, t_instance.ObjectId);
                    t_instance.ParentObjectType = mapentry.Type.Name;
                    t_instance.ParentObjectUri  = string.Format(mapentry.DiscussionUriFormat, t_instance.ObjectId);
                }
            }

            return(t_instance);
        }