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);
		}
示例#3
0
 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;
 }