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)); }
public override string GetAccessDeniedRedirectUri() { ManagedDiscussionMapEntry mapentry; if (ManagedDiscussionMap.TryFind(mInstance.DataObject, out mapentry)) { return(string.Format(mapentry.DiscussionUriFormat, mInstance.ObjectId)); } return(string.Empty); }
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)); }
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); }
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); }
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); }