public Post(int _id, int _threadId, int _boardId, int _page, int _offset, User _author, DateTime _creationDate, string _message, string _title, int _editedCount, Edit _lastEdit) { id = _id; inThreadId = _threadId; inBoardId = _boardId; page = _page; offset = _offset; author = _author; date = _creationDate; message = _message; title = _title; editedCount = _editedCount; lastEdit = _lastEdit; }
public static List<Post> GetPostsOfPage(int _threadId, int _pageId) { int inThreadId = _threadId; string xmlFile = $"http://forum.mods.de/bb/xml/thread.php?TID={_threadId}&page={_pageId}"; var xmlDoc = Helper.LoadXml(xmlFile); if (xmlDoc != null) { // if logged in, it's ChildNodes[9], not ChildNodes[8] int page = _pageId; int offset = Convert.ToInt32(xmlDoc.DocumentElement.ChildNodes[8].Attributes["offset"].Value); int inBoardId = Convert.ToInt32(xmlDoc.DocumentElement.ChildNodes[6].Attributes["id"].Value); int postsOnPage = xmlDoc.DocumentElement.ChildNodes[8].ChildNodes.Count; List<Post> posts = new List<Post>(postsOnPage); foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes[8]) { int id = Convert.ToInt32(node.Attributes["id"].Value); bool banned; if (node.ChildNodes[0].Attributes.Count > 2) { try { banned = Convert.ToBoolean(Convert.ToInt32(node.ChildNodes[0].Attributes["locked"].Value)); } catch (NullReferenceException) { banned = false; } } else { banned = false; } int avatarId; string avatarUrl; if (node.ChildNodes[3].Attributes.Count > 0) { try { avatarId = Convert.ToInt32(node.ChildNodes[3].Attributes["id"].Value); avatarUrl = node.ChildNodes[3].InnerText; } catch (NullReferenceException) { avatarId = -1; avatarUrl = String.Empty; } } else { avatarId = -1; avatarUrl = string.Empty; } int authorId = Convert.ToInt32(node.ChildNodes[0].Attributes["id"].Value); int authorGroupId; if (node.ChildNodes[0].Attributes.Count > 1) { try { authorGroupId = Convert.ToInt32(node.ChildNodes[0].Attributes["group-id"].Value); } catch (NullReferenceException) { authorGroupId = -1; } } else { authorGroupId = -1; } string authorName = node.ChildNodes[0].InnerText; Avatar avatar = new Avatar(avatarId, avatarUrl); User author = new User(authorId, authorName, authorGroupId, avatar, banned); double unixTimeStamp = Convert.ToInt32(node.ChildNodes[1].Attributes["timestamp"].Value); DateTime creationDate = Helper.UnixTimeStampToDateTime(unixTimeStamp); int editedCount = Convert.ToInt32(node.ChildNodes[2].ChildNodes[0].Attributes["count"].Value); string message = node.ChildNodes[2].ChildNodes[1].InnerText; string title = node.ChildNodes[2].ChildNodes[2].InnerText; if (editedCount > 0) { string editUserName = node.ChildNodes[2].ChildNodes[0].ChildNodes[0].ChildNodes[0].InnerText; int editUserId = Convert.ToInt32( node.ChildNodes[2].ChildNodes[0].ChildNodes[0].ChildNodes[0].Attributes["id"].Value); double editTimeStamp = Convert.ToInt32( node.ChildNodes[2].ChildNodes[0].ChildNodes[0].ChildNodes[1].Attributes["timestamp"].Value); User editUser = new User(editUserId, editUserName); Edit lastEdit = new Edit(editUser, editTimeStamp); posts.Add(new Post(id, inThreadId, inBoardId, page, offset, author, creationDate, message, title, editedCount, lastEdit)); } else { posts.Add(new Post(id, inThreadId, inBoardId, page, offset, author, creationDate, message, title, editedCount)); } } return posts; } return null; }
public Post(int _id, int _threadId) { id = _id; inThreadId = _threadId; string xmlFile = $"http://forum.mods.de/bb/xml/thread.php?TID={_threadId}&PID={_id}"; var xmlDoc = Helper.LoadXml(xmlFile); if (xmlDoc != null) { // if logged in, it's ChildNodes[9], not ChildNodes[8] page = Convert.ToInt32(xmlDoc.DocumentElement.ChildNodes[8].Attributes["page"].Value); offset = Convert.ToInt32(xmlDoc.DocumentElement.ChildNodes[8].Attributes["offset"].Value); inBoardId = Convert.ToInt32(xmlDoc.DocumentElement.ChildNodes[6].Attributes["id"].Value); foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes[8]) { if (_id == Convert.ToInt32(node.Attributes["id"].Value)) { bool banned; try { banned = Convert.ToBoolean(Convert.ToInt32(node.ChildNodes[0].Attributes["locked"].Value)); } catch (NullReferenceException) { banned = false; } int avatarId = Convert.ToInt32(node.ChildNodes[3].Attributes["id"].Value); string avatarUrl = node.ChildNodes[3].InnerText; int authorId = Convert.ToInt32(node.ChildNodes[0].Attributes["id"].Value); int authorGroupId = Convert.ToInt32(node.ChildNodes[0].Attributes["group-id"].Value); string authorName = node.ChildNodes[0].InnerText; Avatar avatar = new Avatar(avatarId, avatarUrl); author = new User(authorId, authorName, authorGroupId, avatar, banned); double unixTimeStamp = Convert.ToInt32(node.ChildNodes[1].Attributes["timestamp"].Value); date = Helper.UnixTimeStampToDateTime(unixTimeStamp); editedCount = Convert.ToInt32(node.ChildNodes[2].ChildNodes[0].Attributes["count"].Value); if (EditedCount > 0) { string editUserName = node.ChildNodes[2].ChildNodes[0].ChildNodes[0].ChildNodes[0].InnerText; int editUserId = Convert.ToInt32( node.ChildNodes[2].ChildNodes[0].ChildNodes[0].ChildNodes[0].Attributes["id"].Value); double editTimeStamp = Convert.ToInt32( node.ChildNodes[2].ChildNodes[0].ChildNodes[0].ChildNodes[1].Attributes["timestamp"] .Value); User editUser = new User(editUserId, editUserName); lastEdit = new Edit(editUser, editTimeStamp); } message = node.ChildNodes[2].ChildNodes[1].InnerText; title = node.ChildNodes[2].ChildNodes[2].InnerText; break; } } } }