public GetForumStatus ( int portalId, int moduleId, int userId, string forumIds ) : IEnumerable |
||
portalId | int | |
moduleId | int | |
userId | int | |
forumIds | string | |
return | IEnumerable |
public XmlRpcStruct GetForumStatus(params object[] parameters) { var aftContext = ActiveForumsTapatalkModuleContext.Create(Context); if (aftContext == null || aftContext.Module == null) throw new XmlRpcFaultException(100, "Invalid Context"); Context.Response.AddHeader("Mobiquo_is_login", aftContext.UserId > 0 ? "true" : "false"); var portalId = aftContext.Module.PortalID; var forumModuleId = aftContext.ModuleSettings.ForumModuleId; var userId = aftContext.UserId; // Build a list of forums the user has access to var fc = new AFTForumController(); var forumIds = fc.GetForumsForUser(aftContext.ForumUser.UserRoles, portalId, forumModuleId, "CanRead") + string.Empty; // Clean up our forum id list before we split it up. forumIds = Regex.Replace(forumIds, @"\;+$", string.Empty); var forumIdList = !string.IsNullOrWhiteSpace(forumIds) ? forumIds.Split(';').Select(int.Parse).ToList() : new List<int>(); // Intersect requested forums with avialable forums var requestedForumIds = (parameters != null && parameters.Any()) ? ((object[])parameters[0]).Select(Convert.ToInt32).Where(forumIdList.Contains) : new int[] { }; // Convert the new list of forums back to a string for the proc. forumIds = requestedForumIds.Aggregate(string.Empty, (current, id) => current + (id.ToString() + ";")); var forumStatus = fc.GetForumStatus(portalId, forumModuleId, userId, forumIds).ToList(); return new XmlRpcStruct { {"forums", forumStatus.Select(f => new ListForumStructure { ForumId = f.ForumId.ToString(), ForumName = f.ForumName.ToBytes(), IsProtected = false, HasNewPosts = f.LastPostDate > f.LastAccessDate }).ToArray()} }; }