private static User_Object build_user_object_from_dataset(DataSet ResultSet ) { User_Object user = new User_Object(); DataRow userRow = ResultSet.Tables[0].Rows[0]; user.ShibbID = userRow["ShibbID"].ToString(); user.UserID = Convert.ToInt32(userRow["UserID"]); user.UserName = userRow["username"].ToString(); user.Email = userRow["EmailAddress"].ToString(); user.Given_Name = userRow["FirstName"].ToString(); user.Family_Name = userRow["LastName"].ToString(); user.Send_Email_On_Submission = Convert.ToBoolean(userRow["SendEmailOnSubmission"]); user.Can_Submit = Convert.ToBoolean(userRow["Can_Submit_Items"]); user.Is_Temporary_Password = Convert.ToBoolean(userRow["isTemporary_Password"]); user.Nickname = userRow["Nickname"].ToString(); user.Organization = userRow["Organization"].ToString(); user.Organization_Code = userRow["OrganizationCode"].ToString(); user.Department = userRow["Department"].ToString(); user.College = userRow["College"].ToString(); user.Unit = userRow["Unit"].ToString(); user.Default_Rights = userRow["Rights"].ToString(); user.Preferred_Language = userRow["Language"].ToString(); user.Is_Internal_User = Convert.ToBoolean(userRow["Internal_User"]); user.Edit_Template_Code = userRow["EditTemplate"].ToString(); user.Edit_Template_MARC_Code = userRow["EditTemplateMarc"].ToString(); user.Can_Delete_All = Convert.ToBoolean(userRow["Can_Delete_All_Items"]); user.Is_System_Admin = Convert.ToBoolean(userRow["IsSystemAdmin"]); user.Is_Portal_Admin = Convert.ToBoolean(userRow["IsPortalAdmin"]); user.Include_Tracking_In_Standard_Forms = Convert.ToBoolean(userRow["Include_Tracking_Standard_Forms"]); user.Receive_Stats_Emails = Convert.ToBoolean(userRow["Receive_Stats_Emails"]); user.Has_Item_Stats = Convert.ToBoolean(userRow["Has_Item_Stats"]); user.LoggedOn = true; user.Internal_Notes = userRow["InternalNotes"].ToString(); user.Processing_Technician = Convert.ToBoolean(userRow["ProcessingTechnician"]); user.Scanning_Technician = Convert.ToBoolean(userRow["ScanningTechnician"]); if (Convert.ToInt32(userRow["descriptions"]) > 0) user.Has_Descriptive_Tags = true; foreach (DataRow thisRow in ResultSet.Tables[1].Rows) { user.Add_Template(thisRow["TemplateCode"].ToString(), Convert.ToBoolean(thisRow["GroupDefined"].ToString())); } foreach (DataRow thisRow in ResultSet.Tables[2].Rows) { user.Add_Default_Metadata_Set(thisRow["MetadataCode"].ToString(), Convert.ToBoolean(thisRow["GroupDefined"].ToString())); } user.Items_Submitted_Count = ResultSet.Tables[3 ].Rows.Count; foreach (DataRow thisRow in ResultSet.Tables[3 ].Rows) { if (!user.BibIDs.Contains(thisRow["BibID"].ToString().ToUpper())) user.Add_BibID(thisRow["BibID"].ToString().ToUpper()); } // Add links to regular expressions foreach (DataRow thisRow in ResultSet.Tables[4 ].Rows) { user.Add_Editable_Regular_Expression(thisRow["EditableRegex"].ToString()); } // Add links to aggregations foreach (DataRow thisRow in ResultSet.Tables[5 ].Rows) { user.Add_Aggregation(thisRow["Code"].ToString(), thisRow["Name"].ToString(), Convert.ToBoolean(thisRow["CanSelect"]), Convert.ToBoolean(thisRow["CanEditMetadata"]), Convert.ToBoolean(thisRow["CanEditBehaviors"]), Convert.ToBoolean(thisRow["CanPerformQc"]), Convert.ToBoolean(thisRow["CanUploadFiles"]), Convert.ToBoolean(thisRow["CanChangeVisibility"]), Convert.ToBoolean(thisRow["CanDelete"]), Convert.ToBoolean(thisRow["IsCollectionManager"]), Convert.ToBoolean(thisRow["OnHomePage"]), Convert.ToBoolean(thisRow["IsAggregationAdmin"]), Convert.ToBoolean(thisRow["GroupDefined"])); } // Add the current folder names Dictionary<int, User_Folder> folderNodes = new Dictionary<int, User_Folder>(); List<User_Folder> parentNodes = new List<User_Folder>(); foreach (DataRow folderRow in ResultSet.Tables[6 ].Rows) { string folderName = folderRow["FolderName"].ToString(); int folderid = Convert.ToInt32(folderRow["UserFolderID"]); int parentid = Convert.ToInt32(folderRow["ParentFolderID"]); bool isPublic = Convert.ToBoolean(folderRow["isPublic"]); User_Folder newFolderNode = new User_Folder(folderName, folderid) {isPublic = isPublic}; if (parentid == -1) parentNodes.Add(newFolderNode); folderNodes.Add(folderid, newFolderNode); } foreach (DataRow folderRow in ResultSet.Tables[6 ].Rows) { int folderid = Convert.ToInt32(folderRow["UserFolderID"]); int parentid = Convert.ToInt32(folderRow["ParentFolderID"]); if (parentid > 0) { folderNodes[parentid].Add_Child_Folder(folderNodes[folderid]); } } foreach (User_Folder rootFolder in parentNodes) user.Add_Folder(rootFolder); // Get the list of BibID/VID associated with this foreach (DataRow itemRow in ResultSet.Tables[7 ].Rows) { user.Add_Bookshelf_Item(itemRow["BibID"].ToString(), itemRow["VID"].ToString()); } // Add the user groups to which this user is a member foreach (DataRow groupRow in ResultSet.Tables[8].Rows) { user.Add_User_Group(groupRow[0].ToString()); } // Get all the user settings foreach (DataRow settingRow in ResultSet.Tables[9].Rows) { user.Add_Setting(settingRow["Setting_Key"].ToString(), settingRow["Setting_Value"].ToString(), false); } return user; }
/// <summary> Constructor for a new instance of the Item_HtmlSubwriter class </summary> /// <param name="Current_Item">Current item to display </param> /// <param name="Current_Page"> Current page within the item</param> /// <param name="Current_User"> Currently logged on user for determining rights over this item </param> /// <param name="Code_Manager"> List of valid collection codes, including mapping from the Sobek collections to Greenstone collections</param> /// <param name="Translator"> Language support object which handles simple translational duties </param> /// <param name="ShowToc"> Flag indicates whether to show the table of contents open for this item </param> /// <param name="Show_Zoomable"> Flag indicates if the zoomable server is available </param> /// <param name="Current_Mode"> Mode / navigation information for the current request</param> /// <param name="Current_Collection"> Current item aggregation this item is being displayed from (if there is one) </param> /// <param name="Item_Restricted_Message"> Message to be shown because this item is restriced from the current user by IP address </param> /// <param name="Items_In_Title"> List of items within a title (for item group display in particular) </param> /// <param name="Tracer"> Trace object keeps a list of each method executed and important milestones in rendering </param> public Item_HtmlSubwriter(SobekCM_Item Current_Item, Page_TreeNode Current_Page, User_Object Current_User, Aggregation_Code_Manager Code_Manager, Language_Support_Info Translator, bool ShowToc, bool Show_Zoomable, SobekCM_Navigation_Object Current_Mode, Item_Aggregation Current_Collection, string Item_Restricted_Message, SobekCM_Items_In_Title Items_In_Title, Custom_Tracer Tracer ) { Mode = Current_Mode; currentUser = Current_User; currentItem = Current_Item; currentPage = Current_Page; itemsInTitle = Items_In_Title; translations = Translator; showToc = ShowToc; showZoomable = Show_Zoomable; Current_Aggregation = Current_Collection; itemCheckedOutByOtherUser = false; userCanEditItem = false; searchResultsCount = 0; // Determine if this item is an EAD isEadTypeItem = (currentItem.Get_Metadata_Module(GlobalVar.EAD_METADATA_MODULE_KEY) != null); // Determine if this item is actually restricted itemRestrictedFromUserByIp = Item_Restricted_Message.Length > 0; // Determine if this user can edit this item if (currentUser != null) { userCanEditItem = currentUser.Can_Edit_This_Item(currentItem); } // If this item is restricted by IP than alot of the upcoming code is unnecessary if (( currentUser != null ) && ((!itemRestrictedFromUserByIp) || ( userCanEditItem ) || ( currentUser.Is_Internal_User ))) { #region Region suppressed currently - was for adding feature to a map image? //// Searching for EAD/EAC type items is different from others //if (!isEadTypeItem) //{ // // If there is a coordinate search, and polygons, do that // // GEt the geospatial metadata module // GeoSpatial_Information geoInfo = currentItem.Get_Metadata_Module(GlobalVar.GEOSPATIAL_METADATA_MODULE_KEY) as GeoSpatial_Information; // if ((geoInfo != null) && (geoInfo.hasData)) // { // if ((currentMode.Coordinates.Length > 0) && (geoInfo.Polygon_Count > 1)) // { // // Determine the coordinates in this search // string[] splitter = currentMode.Coordinates.Split(",".ToCharArray()); // if (((splitter.Length > 1) && (splitter.Length < 4)) || ((splitter.Length == 4) && (splitter[2].Length == 0) && (splitter[3].Length == 0))) // { // Double.TryParse(splitter[0], out providedMaxLat); // Double.TryParse(splitter[1], out providedMaxLong); // providedMinLat = providedMaxLat; // providedMinLong = providedMaxLong; // } // else if (splitter.Length >= 4) // { // Double.TryParse(splitter[0], out providedMaxLat); // Double.TryParse(splitter[1], out providedMaxLong); // Double.TryParse(splitter[2], out providedMinLat); // Double.TryParse(splitter[3], out providedMinLong); // } // // Now, if there is length, determine the count of results // searchResultsString = new List<string>(); // if (searchResultsString.Count > 0) // { // searchResultsCount = searchResultsString.Count; // // Also, look to see where the current point lies in the matching, current polygon // if ((providedMaxLong == providedMinLong) && (providedMaxLat == providedMinLat)) // { // foreach (Coordinate_Polygon itemPolygon in geoInfo.Polygons) // { // // Is this the current page? // if (itemPolygon.Page_Sequence == currentMode.Page) // { // if (itemPolygon.is_In_Bounding_Box(providedMaxLat, providedMaxLong)) // { // searchMatchOnThisPage = true; // ReadOnlyCollection<Coordinate_Point> boundingBox = itemPolygon.Bounding_Box; // featureYRatioLocation = Math.Abs(((providedMaxLat - boundingBox[0].Latitude)/(boundingBox[0].Latitude - boundingBox[1].Latitude))); // featureXRatioLocation = Math.Abs(((providedMaxLong - boundingBox[0].Longitude)/(boundingBox[0].Longitude - boundingBox[1].Longitude))); // } // } // } // } // } // } // } //} #endregion // Is this a postback? if (currentMode.isPostBack) { // Handle any actions from standard user action (i.e., email, add to bookshelf, etc.. ) if (HttpContext.Current.Request.Form["item_action"] != null) { string action = HttpContext.Current.Request.Form["item_action"].ToLower().Trim(); if (action == "email") { string address = HttpContext.Current.Request.Form["email_address"].Replace(";", ",").Trim(); string comments = HttpContext.Current.Request.Form["email_comments"].Trim(); string format = HttpContext.Current.Request.Form["email_format"].Trim().ToUpper(); if (address.Length > 0) { // Determine the email format bool is_html_format = format != "TEXT"; // CC: the user, unless they are already on the list string cc_list = currentUser.Email; if (address.ToUpper().IndexOf(currentUser.Email.ToUpper()) >= 0) cc_list = String.Empty; // Send the email HttpContext.Current.Session.Add("ON_LOAD_MESSAGE", !Item_Email_Helper.Send_Email(address, cc_list, comments, currentUser.Full_Name,currentMode.SobekCM_Instance_Abbreviation,currentItem,is_html_format,HttpContext.Current.Items["Original_URL"].ToString(), currentUser.UserID) ? "Error encountered while sending email" : "Your email has been sent"); HttpContext.Current.Response.Redirect( HttpContext.Current.Items["Original_URL"].ToString(), false); HttpContext.Current.ApplicationInstance.CompleteRequest(); Current_Mode.Request_Completed = true; return; } } if (action == "add_item") { string usernotes = HttpContext.Current.Request.Form["add_notes"].Trim(); string foldername = HttpContext.Current.Request.Form["add_bookshelf"].Trim(); bool open_bookshelf = HttpContext.Current.Request.Form["open_bookshelf"] != null; if (SobekCM_Database.Add_Item_To_User_Folder(currentUser.UserID, foldername, currentItem.BibID, currentItem.VID, 0, usernotes, Tracer)) { currentUser.Add_Bookshelf_Item(currentItem.BibID, currentItem.VID); // Ensure this user folder is not sitting in the cache Cached_Data_Manager.Remove_User_Folder_Browse(currentUser.UserID, foldername, Tracer); HttpContext.Current.Session.Add("ON_LOAD_MESSAGE", "Item was saved to your bookshelf."); if (open_bookshelf) { HttpContext.Current.Session.Add("ON_LOAD_WINDOW", "?m=lmfl" + foldername.Replace("\"", "%22").Replace("'", "%27").Replace("=", "%3D").Replace("&", "%26") + "&vp=1"); } } else { HttpContext.Current.Session.Add("ON_LOAD_MESSAGE", "ERROR encountered while trying to save to your bookshelf."); } HttpContext.Current.Response.Redirect(HttpContext.Current.Items["Original_URL"].ToString(), false); HttpContext.Current.ApplicationInstance.CompleteRequest(); Current_Mode.Request_Completed = true; return; } if (action == "remove") { if (SobekCM_Database.Delete_Item_From_User_Folders(currentUser.UserID, currentItem.BibID, currentItem.VID, Tracer)) { currentUser.Remove_From_Bookshelves(currentItem.BibID, currentItem.VID); Cached_Data_Manager.Remove_All_User_Folder_Browses(currentUser.UserID, Tracer); HttpContext.Current.Session.Add("ON_LOAD_MESSAGE", "Item was removed from your bookshelves."); } else { HttpContext.Current.Session.Add("ON_LOAD_MESSAGE", "ERROR encountered while trying to remove item from your bookshelves."); } HttpContext.Current.Response.Redirect(HttpContext.Current.Items["Original_URL"].ToString(), false); HttpContext.Current.ApplicationInstance.CompleteRequest(); Current_Mode.Request_Completed = true; return; } if (action.IndexOf("add_tag") == 0) { int tagid = -1; if (action.Replace("add_tag", "").Length > 0) { tagid = Convert.ToInt32(action.Replace("add_tag_", "")); } string description = HttpContext.Current.Request.Form["add_tag"].Trim(); int new_tagid = SobekCM_Database.Add_Description_Tag(currentUser.UserID, tagid, currentItem.Web.ItemID, description, Tracer); if (new_tagid > 0) { currentItem.Behaviors.Add_User_Tag(currentUser.UserID, currentUser.Full_Name, description, DateTime.Now, new_tagid); currentUser.Has_Descriptive_Tags = true; } HttpContext.Current.Response.Redirect(HttpContext.Current.Items["Original_URL"].ToString(), false); HttpContext.Current.ApplicationInstance.CompleteRequest(); Current_Mode.Request_Completed = true; return; } if (action.IndexOf("delete_tag") == 0) { if (action.Replace("delete_tag", "").Length > 0) { int tagid = Convert.ToInt32(action.Replace("delete_tag_", "")); if (currentItem.Behaviors.Delete_User_Tag(tagid, currentUser.UserID)) { SobekCM_Database.Delete_Description_Tag(tagid, Tracer); } } HttpContext.Current.Response.Redirect(HttpContext.Current.Items["Original_URL"].ToString(), false); HttpContext.Current.ApplicationInstance.CompleteRequest(); Current_Mode.Request_Completed = true; return; } } } // Handle any request from the internal header for the item if ((HttpContext.Current != null) && (HttpContext.Current.Request.Form["internal_header_action"] != null) && ( currentUser != null )) { // Pull the action value string internalHeaderAction = HttpContext.Current.Request.Form["internal_header_action"].Trim(); // Was this to save the item comments? if (internalHeaderAction == "save_comments") { string new_comments = HttpContext.Current.Request.Form["intheader_internal_notes"].Trim(); if ( Resource_Object.Database.SobekCM_Database.Save_Item_Internal_Comments( currentItem.Web.ItemID, new_comments)) currentItem.Tracking.Internal_Comments = new_comments; } // Is this to change accessibility? if ((internalHeaderAction == "public") || (internalHeaderAction == "private") || (internalHeaderAction == "restricted")) { int current_mask = currentItem.Behaviors.IP_Restriction_Membership; switch (internalHeaderAction) { case "public": currentItem.Behaviors.IP_Restriction_Membership = 0; break; case "private": currentItem.Behaviors.IP_Restriction_Membership = -1; break; case "restricted": currentItem.Behaviors.IP_Restriction_Membership = 1; break; } // Is this new visibility different than the old one? if (currentItem.Behaviors.IP_Restriction_Membership != current_mask) { // Save this to the database if (Resource_Object.Database.SobekCM_Database.Set_IP_Restriction_Mask(currentItem.Web.ItemID, currentItem.Behaviors.IP_Restriction_Membership, currentUser.UserName, String.Empty)) { // Update the cached item Cached_Data_Manager.Remove_Digital_Resource_Object(currentItem.BibID, currentItem.VID, Tracer); Cached_Data_Manager.Store_Digital_Resource_Object(currentItem.BibID, currentItem.VID, currentItem, Tracer); // Update the web.config Resource_Web_Config_Writer.Update_Web_Config(currentItem.Source_Directory, currentItem.Behaviors.Dark_Flag, (short) current_mask, currentItem.Behaviors.Main_Thumbnail); } } } } } // Set the code for bib level mets to show the volume tree by default if ((currentItem.METS_Header.RecordStatus_Enum == METS_Record_Status.BIB_LEVEL) && (currentMode.ViewerCode.Length == 0)) { currentMode.ViewerCode = "allvolumes1"; } // If there is a file name included, look for the sequence of that file if (currentMode.Page_By_FileName.Length > 0) { int page_sequence = currentItem.Divisions.Physical_Tree.Page_Sequence_By_FileName(currentMode.Page_By_FileName); if (page_sequence > 0) { currentMode.ViewerCode = page_sequence.ToString(); currentMode.Page = (ushort) page_sequence; } } // Get the valid viewer code Tracer.Add_Trace("Html_MainWriter.Add_Controls", "Getting the appropriate item viewer"); if ((currentMode.ViewerCode.Length == 0) && (currentMode.Coordinates.Length > 0)) { currentMode.ViewerCode = "map"; } currentMode.ViewerCode = currentItem.Web.Get_Valid_Viewer_Code(currentMode.ViewerCode, currentMode.Page); View_Object viewObject = currentItem.Web.Get_Viewer(currentMode.ViewerCode); PageViewer = ItemViewer_Factory.Get_Viewer(viewObject, currentItem.Bib_Info.SobekCM_Type_String.ToUpper(), currentItem, currentUser, currentMode); // If this was in fact restricted by IP address, restrict now if (itemRestrictedFromUserByIp) { if ((PageViewer.ItemViewer_Type != ItemViewer_Type_Enum.Citation) && (PageViewer.ItemViewer_Type != ItemViewer_Type_Enum.MultiVolume) && (PageViewer.ItemViewer_Type != ItemViewer_Type_Enum.Related_Images)) { PageViewer = new Restricted_ItemViewer(Item_Restricted_Message); currentMode.ViewerCode = "res"; } } // If execution should end, do it now if (currentMode.Request_Completed) return; Tracer.Add_Trace("Html_MainWriter.Add_Controls", "Created " + PageViewer.GetType().ToString().Replace("SobekCM.Library.ItemViewer.Viewers.", "")); // Assign the rest of the information, if a page viewer was created if (PageViewer != null) { PageViewer.CurrentItem = currentItem; PageViewer.CurrentMode = currentMode; PageViewer.Translator = Translator; PageViewer.CurrentUser = currentUser; // Special code if this is the citation viewer Citation_ItemViewer viewer = PageViewer as Citation_ItemViewer; if (viewer != null) { viewer.Code_Manager = Code_Manager; viewer.Item_Restricted = itemRestrictedFromUserByIp; } // Special code if this is the multi-volumes viewer var itemViewer = PageViewer as MultiVolumes_ItemViewer; if (itemViewer != null) { if (itemsInTitle == null) { // Look in the cache first itemsInTitle = Cached_Data_Manager.Retrieve_Items_In_Title(currentItem.BibID, Tracer); // If still null, try to pull from the database if (itemsInTitle == null) { // Get list of information about this item group and save the item list DataSet itemDetails = SobekCM_Database.Get_Item_Group_Details(currentItem.BibID, Tracer); itemsInTitle = new SobekCM_Items_In_Title(itemDetails.Tables[1]); //// Add the related titles, if there are some //if ((currentGroup.Tables.Count > 3) && (currentGroup.Tables[3].Rows.Count > 0)) //{ // foreach (DataRow thisRow in currentGroup.Tables[3].Rows) // { // string relationship = thisRow["Relationship"].ToString(); // string title = thisRow["GroupTitle"].ToString(); // string bibid = thisRow["BibID"].ToString(); // string link_and_title = "<a href=\"" + currentMode.Base_URL + bibid + "<%URL_OPTS%>\">" + title + "</a>"; // currentItem.Behaviors.All_Related_Titles.Add(new SobekCM.Resource_Object.Behaviors.Related_Titles(relationship, link_and_title)); // } //} // Store in cache if retrieved if (itemsInTitle != null) { Cached_Data_Manager.Store_Items_In_Title(currentItem.BibID, itemsInTitle, Tracer); } } } itemViewer.Item_List = itemsInTitle; } // Finally, perform any necessary work before display PageViewer.Perform_PreDisplay_Work(Tracer); // Get the list of any special behaviors behaviors = PageViewer.ItemViewer_Behaviors; } else { behaviors = new List<HtmlSubwriter_Behaviors_Enum>(); } // ALways suppress the banner behaviors.Add(HtmlSubwriter_Behaviors_Enum.Suppress_Banner); //if ((searchMatchOnThisPage) && ((PageViewer.ItemViewer_Type == ItemViewer_Type_Enum.JPEG) || (PageViewer.ItemViewer_Type == ItemViewer_Type_Enum.JPEG2000))) //{ // if (PageViewer.ItemViewer_Type == ItemViewer_Type_Enum.JPEG2000) // { // Aware_JP2_ItemViewer jp2_viewer = (Aware_JP2_ItemViewer) PageViewer; // jp2_viewer.Add_Feature("Red", "DrawEllipse", ((int) (featureXRatioLocation*jp2_viewer.Width)), ((int) (featureYRatioLocation*jp2_viewer.Height)), 800, 800); // } //} }
private static User_Object build_user_object_from_dataset(DataSet resultSet ) { User_Object user = new User_Object(); DataRow userRow = resultSet.Tables[0].Rows[0]; user.UFID = userRow["UFID"].ToString(); user.UserID = Convert.ToInt32(userRow["UserID"]); user.UserName = userRow["username"].ToString(); user.Email = userRow["EmailAddress"].ToString(); user.Given_Name = userRow["FirstName"].ToString(); user.Family_Name = userRow["LastName"].ToString(); user.Send_Email_On_Submission = Convert.ToBoolean(userRow["SendEmailOnSubmission"]); user.Can_Submit = Convert.ToBoolean(userRow["Can_Submit_Items"]); user.Is_Temporary_Password = Convert.ToBoolean(userRow["isTemporary_Password"]); user.Nickname = userRow["Nickname"].ToString(); user.Organization = userRow["Organization"].ToString(); user.Organization_Code = userRow["OrganizationCode"].ToString(); user.Department = userRow["Department"].ToString(); user.College = userRow["College"].ToString(); user.Unit = userRow["Unit"].ToString(); user.Default_Rights = userRow["Rights"].ToString(); user.Preferred_Language = userRow["Language"].ToString(); user.Is_Internal_User = Convert.ToBoolean(userRow["Internal_User"]); user.Edit_Template_Code = userRow["EditTemplate"].ToString(); user.Edit_Template_MARC_Code = userRow["EditTemplateMarc"].ToString(); user.Is_System_Admin = Convert.ToBoolean(userRow["IsSystemAdmin"]); user.Is_Portal_Admin = Convert.ToBoolean(userRow["IsPortalAdmin"]); user.Include_Tracking_In_Standard_Forms = Convert.ToBoolean(userRow["Include_Tracking_Standard_Forms"]); user.Receive_Stats_Emails = Convert.ToBoolean(userRow["Receive_Stats_Emails"]); user.Has_Item_Stats = Convert.ToBoolean(userRow["Has_Item_Stats"]); if (Convert.ToInt32(userRow["descriptions"]) > 0) user.Has_Descriptive_Tags = true; foreach (DataRow thisRow in resultSet.Tables[1].Rows) { user.Add_Template(thisRow["TemplateCode"].ToString()); } foreach (DataRow thisRow in resultSet.Tables[2].Rows) { user.Add_Project(thisRow["ProjectCode"].ToString()); } user.Items_Submitted_Count = resultSet.Tables[3 ].Rows.Count; foreach (DataRow thisRow in resultSet.Tables[3 ].Rows) { if (!user.BibIDs.Contains(thisRow["BibID"].ToString().ToUpper())) user.Add_BibID(thisRow["BibID"].ToString().ToUpper()); } // Add links to regular expressions foreach (DataRow thisRow in resultSet.Tables[4 ].Rows) { user.Add_Editable_Regular_Expression(thisRow["EditableRegex"].ToString()); } // Add links to aggregations foreach (DataRow thisRow in resultSet.Tables[5 ].Rows) { user.Add_Aggregation(thisRow["Code"].ToString(), thisRow["Name"].ToString(), Convert.ToBoolean(thisRow["CanSelect"]), Convert.ToBoolean(thisRow["CanEditItems"]), Convert.ToBoolean(thisRow["IsAggregationAdmin"]), Convert.ToBoolean(thisRow["OnHomePage"])); } // Add the current folder names Dictionary<int, User_Folder> folderNodes = new Dictionary<int, User_Folder>(); List<User_Folder> parentNodes = new List<User_Folder>(); foreach (DataRow folderRow in resultSet.Tables[6 ].Rows) { string folderName = folderRow["FolderName"].ToString(); int folderid = Convert.ToInt32(folderRow["UserFolderID"]); int parentid = Convert.ToInt32(folderRow["ParentFolderID"]); bool isPublic = Convert.ToBoolean(folderRow["isPublic"]); User_Folder newFolderNode = new User_Folder(folderName, folderid) {isPublic = isPublic}; if (parentid == -1) parentNodes.Add(newFolderNode); folderNodes.Add(folderid, newFolderNode); } foreach (DataRow folderRow in resultSet.Tables[6 ].Rows) { int folderid = Convert.ToInt32(folderRow["UserFolderID"]); int parentid = Convert.ToInt32(folderRow["ParentFolderID"]); if (parentid > 0) { folderNodes[parentid].Add_Child_Folder(folderNodes[folderid]); } } foreach (User_Folder rootFolder in parentNodes) user.Add_Folder(rootFolder); foreach (DataRow itemRow in resultSet.Tables[7 ].Rows) { user.Add_Bookshelf_Item(itemRow["BibID"].ToString(), itemRow["VID"].ToString()); } foreach (DataRow groupRow in resultSet.Tables[8].Rows) { user.Add_User_Group(groupRow[0].ToString()); } return user; }