public object Evaluate(ExecutionState state, Token contextToken) { if (CurrentRequest.Value["CurrentForumOrTopicPageExpression_Value"] != null) { return((int)CurrentRequest.Value["CurrentForumOrTopicPageExpression_Value"]); } ReferencedForum rf = ReferencedForum.Current; CurrentRequest.Value["CurrentForumOrTopicPageExpression_Value"] = rf.Page; return(rf.Page); }
public object Evaluate(ExecutionState state, Token contextToken) { if (CurrentRequest.Value["UserCanPostNewTopicsExpression_Value"] != null) { return((bool)CurrentRequest.Value["UserCanPostNewTopicsExpression_Value"]); } ReferencedForum rf; if (CurrentRequest.Value["ReferencedForum_Value"] == null) { rf = ReferencedForum.ExtractFromURL(); CurrentRequest.Value["ReferencedForum_Value"] = rf; } else { rf = (ReferencedForum)CurrentRequest.Value["ReferencedForum_Value"]; } bool result; if (rf.Forum.PostNewTopics == Forum.AccessType.AllowAnonymous) { result = true; } else if (!WebAuthentication.IsLoggedIn) { result = false; } else { switch (rf.Forum.PostNewTopics) { case Forum.AccessType.AllMembers: result = true; break; case Forum.AccessType.ActivatedMembers: result = SecurityProvider.CurrentUser.Activated; break; case Forum.AccessType.Administrators: result = SecurityProvider.CurrentUser.HasPermission(PermissionType.SuperUser); break; default: if (!rf.Forum.ModeratorRoleID.HasValue) { result = false; } else { result = SecurityProvider.CurrentUser.HasRole(rf.Forum.ModeratorRoleID.Value); } break; } } CurrentRequest.Value["UserCanPostNewTopicsExpression_Value"] = result; return(result); }