public object Evaluate(ExecutionState state) { // attempt to load the specified ForumCategory object value = TokenParser.VerifyUnderlyingType(args[0].Expression.Evaluate(state)); if (value is decimal) forumCategory = ForumHandler.DataLayer.SelectForumCategory((long)value); else if (value is string) forumCategory = ForumHandler.DataLayer.SelectForumCategoryByCode((string)value); else throw new InstructionExecutionException("Could not load an instance of \"forumcategory\" because the argument did not equate to the right kind of value.", args[0].Token); // return the relevant value switch (propertyType) { case PropertyType.ForumCategoryID: return forumCategory.ForumCategoryID; case PropertyType.ClientSpaceID: return forumCategory.ClientSpaceID; case PropertyType.CategoryCode: return forumCategory.CategoryCode; case PropertyType.Name: return forumCategory.Name; case PropertyType.URLToken: return forumCategory.URLToken; case PropertyType.DateCreated: return forumCategory.DateCreated; case PropertyType.Rank: return forumCategory.Rank; case PropertyType.InternalUseOnly: return forumCategory.InternalUseOnly; case PropertyType.ForumList: return GetForums(); case PropertyType.None: if (forumCategory == null) return null; return this; default: return "[ForumCategory]"; } }
void SaveForumSettings() { if (!SecurityProvider.CurrentUser.HasPermission(ForumPermissionType.ForumCreator)) throw new Exception("You don't have permission to create, edit or delete forums."); Forum forum; ForumCategory cat; long forumID = long.Parse(Request.Form["forumid"]); string categoryCode = Request.Form["categorycode"]; cat = DataLayer.SelectForumCategoryByCode(categoryCode); if (cat == null) { cat = new ForumCategory(DatabaseManager.GetUniqueID(), SecurityProvider.ClientSpaceID, categoryCode, categoryCode, null, SprocketDate.Now, 0, false); DataLayer.Store(cat); } if (forumID == 0) { forum = new Forum(); forum.ForumID = DatabaseManager.GetUniqueID(); } else forum = dataLayer.SelectForum(forumID); if (forum == null) return; forum.Name = Request.Form["forum-name"].Trim(); if (forum.Name == "") forum.Name = "Untitled Forum"; forum.URLToken = Request.Form["url-token"].Trim(); if (forum.URLToken == "") forum.URLToken = forum.ForumID.ToString(); forum.ForumCode = Request.Form["forum-code"].Trim(); forum.ForumCategoryID = cat.ForumCategoryID; forum.TopicDisplayOrder = short.Parse(Request.Form["topic-display-order"]); forum.MarkupLevel = short.Parse(Request.Form["markuplevel"]); string postAccess = Request.Form["post-access"]; string replyAccess = Request.Form["reply-access"]; string readAccess = Request.Form["read-access"]; if (postAccess.StartsWith("_")) { forum.PostWriteAccess = short.Parse(postAccess.Substring(1)); forum.PostWriteAccessRoleID = null; } else { forum.PostNewTopics = Forum.AccessType.RoleMembers; forum.PostWriteAccessRoleID = long.Parse(postAccess); } if (replyAccess.StartsWith("_")) { forum.ReplyWriteAccess = short.Parse(replyAccess.Substring(1)); forum.ReplyWriteAccessRoleID = null; } else { forum.WriteReplies = Forum.AccessType.RoleMembers; forum.ReplyWriteAccessRoleID = long.Parse(replyAccess); } if (readAccess.StartsWith("_")) { forum.ReadAccess = short.Parse(readAccess.Substring(1)); forum.ReadAccessRoleID = null; } else { forum.Read = Forum.AccessType.RoleMembers; forum.ReadAccessRoleID = long.Parse(readAccess); } forum.ModeratorRoleID = long.Parse(Request.Form["moderator-role"]); forum.RequireModeration = Request.Form["requires-moderation"] == "1"; forum.AllowVoting = Request.Form["allow-voting"] == "1"; forum.AllowImagesInMessages = Request.Form["message-images"] == "1"; forum.ShowSignatures = Request.Form["show-signatures"] == "1"; forum.AllowImagesInSignatures = Request.Form["signature-images"] == "1"; forum.Locked = Request.Form["lock-forum"] == "1"; forum.DateCreated = SprocketDate.Now; Result r = dataLayer.Store(forum); if (!r.Succeeded) throw new Exception(r.Message); }
public ForumCategory Clone() { ForumCategory copy = new ForumCategory(); copy.forumCategoryID = forumCategoryID; copy.clientSpaceID = clientSpaceID; copy.categoryCode = categoryCode; copy.name = name; copy.uRLToken = uRLToken; copy.dateCreated = dateCreated; copy.rank = rank; copy.internalUseOnly = internalUseOnly; return copy; }