public void SaveJournalItem(JournalItem journalItem, int tabId) { if (journalItem.UserId < 1) { throw new ArgumentException("journalItem.UserId must be for a real user"); } UserInfo currentUser = UserController.GetUserById(journalItem.PortalId, journalItem.UserId); if (currentUser == null) { throw new Exception("Unable to locate the current user"); } string xml = null; var portalSecurity = new PortalSecurity(); if (!String.IsNullOrEmpty(journalItem.Title)) { journalItem.Title = portalSecurity.InputFilter(journalItem.Title, PortalSecurity.FilterFlag.NoMarkup); } if (!String.IsNullOrEmpty(journalItem.Summary)) { journalItem.Summary = HttpUtility.HtmlDecode(portalSecurity.InputFilter(journalItem.Summary, PortalSecurity.FilterFlag.NoScripting)); } if (!String.IsNullOrEmpty(journalItem.Body)) { journalItem.Body = HttpUtility.HtmlDecode(portalSecurity.InputFilter(journalItem.Body, PortalSecurity.FilterFlag.NoScripting)); } if (!String.IsNullOrEmpty(journalItem.Body)) { var xDoc = new XmlDocument(); XmlElement xnode = xDoc.CreateElement("items"); XmlElement xnode2 = xDoc.CreateElement("item"); xnode2.AppendChild(CreateElement(xDoc, "id", "-1")); xnode2.AppendChild(CreateCDataElement(xDoc, "body", journalItem.Body)); xnode.AppendChild(xnode2); xDoc.AppendChild(xnode); XmlDeclaration xDec = xDoc.CreateXmlDeclaration("1.0", null, null); xDec.Encoding = "UTF-16"; xDec.Standalone = "yes"; XmlElement root = xDoc.DocumentElement; xDoc.InsertBefore(xDec, root); journalItem.JournalXML = xDoc; xml = journalItem.JournalXML.OuterXml; } if (journalItem.ItemData != null) { if (!String.IsNullOrEmpty(journalItem.ItemData.Title)) { journalItem.ItemData.Title = portalSecurity.InputFilter(journalItem.ItemData.Title, PortalSecurity.FilterFlag.NoMarkup); } if (!String.IsNullOrEmpty(journalItem.ItemData.Description)) { journalItem.ItemData.Description = HttpUtility.HtmlDecode(portalSecurity.InputFilter(journalItem.ItemData.Description, PortalSecurity.FilterFlag.NoScripting)); } if (!String.IsNullOrEmpty(journalItem.ItemData.Url)) { journalItem.ItemData.Url = portalSecurity.InputFilter(journalItem.ItemData.Url, PortalSecurity.FilterFlag.NoScripting); } if (!String.IsNullOrEmpty(journalItem.ItemData.ImageUrl)) { journalItem.ItemData.ImageUrl = portalSecurity.InputFilter(journalItem.ItemData.ImageUrl, PortalSecurity.FilterFlag.NoScripting); } } string journalData = journalItem.ItemData.ToJson(); if (journalData == "null") { journalData = null; } if (String.IsNullOrEmpty(journalItem.SecuritySet)) { journalItem.SecuritySet = "E,"; } else if (!journalItem.SecuritySet.EndsWith(",")) { journalItem.SecuritySet += ","; } if (journalItem.SecuritySet == "F,") { journalItem.SecuritySet = "F" + journalItem.UserId.ToString(CultureInfo.InvariantCulture) + ","; journalItem.SecuritySet += "P" + journalItem.ProfileId.ToString(CultureInfo.InvariantCulture) + ","; } if (journalItem.SecuritySet == "U,") { journalItem.SecuritySet += "U" + journalItem.UserId.ToString(CultureInfo.InvariantCulture) + ","; } if (journalItem.ProfileId > 0 && journalItem.UserId != journalItem.ProfileId) { journalItem.SecuritySet += "P" + journalItem.ProfileId.ToString(CultureInfo.InvariantCulture) + ","; journalItem.SecuritySet += "U" + journalItem.UserId.ToString(CultureInfo.InvariantCulture) + ","; } if (!journalItem.SecuritySet.Contains("U" + journalItem.UserId.ToString(CultureInfo.InvariantCulture))) { journalItem.SecuritySet += "U" + journalItem.UserId.ToString(CultureInfo.InvariantCulture) + ","; } if (journalItem.SocialGroupId > 0) { JournalItem item = journalItem; RoleInfo role = TestableRoleController.Instance.GetRole(journalItem.PortalId, r => r.SecurityMode != SecurityMode.SecurityRole && r.RoleID == item.SocialGroupId); if (role != null) { if (currentUser.IsInRole(role.RoleName)) { journalItem.SecuritySet += "R" + journalItem.SocialGroupId.ToString(CultureInfo.InvariantCulture) + ","; if (!role.IsPublic) { journalItem.SecuritySet = journalItem.SecuritySet.Replace("E,", String.Empty); } } } } journalItem.JournalId = _dataService.Journal_Save(journalItem.PortalId, journalItem.UserId, journalItem.ProfileId, journalItem.SocialGroupId, journalItem.JournalId, journalItem.JournalTypeId, journalItem.Title, journalItem.Summary, journalItem.Body, journalData, xml, journalItem.ObjectKey, journalItem.AccessKey, journalItem.SecuritySet); var updatedJournalItem = GetJournalItem(journalItem.PortalId, journalItem.UserId, journalItem.JournalId); journalItem.DateCreated = updatedJournalItem.DateCreated; journalItem.DateUpdated = updatedJournalItem.DateUpdated; var cnt = new Content(); if (journalItem.ContentItemId > 0) { cnt.UpdateContentItem(journalItem, tabId); _dataService.Journal_UpdateContentItemId(journalItem.JournalId, journalItem.ContentItemId); } else { ContentItem ci = cnt.CreateContentItem(journalItem, tabId); _dataService.Journal_UpdateContentItemId(journalItem.JournalId, ci.ContentItemId); journalItem.ContentItemId = ci.ContentItemId; } if (journalItem.SocialGroupId > 0) { try { UpdateGroupStats(journalItem.PortalId, journalItem.SocialGroupId); } catch (Exception exc) { Exceptions.Exceptions.LogException(exc); } } }
// Journal Items public void SaveJournalItem(JournalItem journalItem, int tabId, int moduleId) { if (journalItem.UserId < 1) { throw new ArgumentException("journalItem.UserId must be for a real user"); } UserInfo currentUser = UserController.GetUserById(journalItem.PortalId, journalItem.UserId); if (currentUser == null) { throw new Exception("Unable to locate the current user"); } string xml = null; var portalSecurity = new PortalSecurity(); if (!String.IsNullOrEmpty(journalItem.Title)) { journalItem.Title = portalSecurity.InputFilter(journalItem.Title, PortalSecurity.FilterFlag.NoMarkup); } if (!String.IsNullOrEmpty(journalItem.Summary)) { journalItem.Summary = HttpUtility.HtmlDecode(portalSecurity.InputFilter(journalItem.Summary, PortalSecurity.FilterFlag.NoScripting)); } if (!String.IsNullOrEmpty(journalItem.Body)) { journalItem.Body = HttpUtility.HtmlDecode(portalSecurity.InputFilter(journalItem.Body, PortalSecurity.FilterFlag.NoScripting)); } if (!String.IsNullOrEmpty(journalItem.Body)) { var xDoc = new XmlDocument(); XmlElement xnode = xDoc.CreateElement("items"); XmlElement xnode2 = xDoc.CreateElement("item"); xnode2.AppendChild(CreateElement(xDoc, "id", "-1")); xnode2.AppendChild(CreateCDataElement(xDoc, "body", journalItem.Body)); xnode.AppendChild(xnode2); xDoc.AppendChild(xnode); XmlDeclaration xDec = xDoc.CreateXmlDeclaration("1.0", null, null); xDec.Encoding = "UTF-16"; xDec.Standalone = "yes"; XmlElement root = xDoc.DocumentElement; xDoc.InsertBefore(xDec, root); journalItem.JournalXML = xDoc; xml = journalItem.JournalXML.OuterXml; } if (journalItem.ItemData != null) { if (!String.IsNullOrEmpty(journalItem.ItemData.Title)) { journalItem.ItemData.Title = portalSecurity.InputFilter(journalItem.ItemData.Title, PortalSecurity.FilterFlag.NoMarkup); } if (!String.IsNullOrEmpty(journalItem.ItemData.Description)) { journalItem.ItemData.Description = HttpUtility.HtmlDecode(portalSecurity.InputFilter(journalItem.ItemData.Description, PortalSecurity.FilterFlag.NoScripting)); } if (!String.IsNullOrEmpty(journalItem.ItemData.Url)) { journalItem.ItemData.Url = portalSecurity.InputFilter(journalItem.ItemData.Url, PortalSecurity.FilterFlag.NoScripting); } if (!String.IsNullOrEmpty(journalItem.ItemData.ImageUrl)) { journalItem.ItemData.ImageUrl = portalSecurity.InputFilter(journalItem.ItemData.ImageUrl, PortalSecurity.FilterFlag.NoScripting); } } string journalData = journalItem.ItemData.ToJson(); if (journalData == "null") { journalData = null; } PrepareSecuritySet(journalItem, currentUser); journalItem.JournalId = _dataService.Journal_Save(journalItem.PortalId, journalItem.UserId, journalItem.ProfileId, journalItem.SocialGroupId, journalItem.JournalId, journalItem.JournalTypeId, journalItem.Title, journalItem.Summary, journalItem.Body, journalData, xml, journalItem.ObjectKey, journalItem.AccessKey, journalItem.SecuritySet, journalItem.CommentsDisabled, journalItem.CommentsHidden); var updatedJournalItem = GetJournalItem(journalItem.PortalId, journalItem.UserId, journalItem.JournalId); journalItem.DateCreated = updatedJournalItem.DateCreated; journalItem.DateUpdated = updatedJournalItem.DateUpdated; var cnt = new Content(); if (journalItem.ContentItemId > 0) { cnt.UpdateContentItem(journalItem, tabId, moduleId); _dataService.Journal_UpdateContentItemId(journalItem.JournalId, journalItem.ContentItemId); } else { ContentItem ci = cnt.CreateContentItem(journalItem, tabId, moduleId); _dataService.Journal_UpdateContentItemId(journalItem.JournalId, ci.ContentItemId); journalItem.ContentItemId = ci.ContentItemId; } if (journalItem.SocialGroupId > 0) { try { UpdateGroupStats(journalItem.PortalId, journalItem.SocialGroupId); } catch (Exception exc) { Exceptions.Exceptions.LogException(exc); } } }