public string CreateSiteCollection(SiteData site) { string siteUrl = string.Empty; uint siteLcIdint = 1033; Guid siteId = SPContext.Current.Site.ID; // Elevation - would not actually be neeeded if we call this by using specific account with the right permissions, but is also one option. SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite elevSite = new SPSite(siteId)) { if (!string.IsNullOrEmpty(site.LcId)) { siteLcIdint = Convert.ToUInt16(site.LcId); } siteUrl = SPUrlUtility.CombineUrl(elevSite.Url, site.Url); if (!SPSite.Exists(new Uri(siteUrl))) { using (SPSite newSite = elevSite.SelfServiceCreateSite(siteUrl, site.Title, site.Description, siteLcIdint, site.WebTemplate, site.OwnerLogin, string.Empty, string.Empty, site.SecondaryContactLogin, string.Empty, string.Empty)) { //create the default groups newSite.RootWeb.CreateDefaultAssociatedGroups(newSite.Owner.LoginName, newSite.SecondaryContact.LoginName, site.Title); } } else { //TODO - site already existed... abort abort! } } }); return siteUrl; }
/// <summary> /// Method to get list of site collections under specific web application /// </summary> /// <returns></returns> public List<SiteData> ListSiteCollections() { List<SiteData> lstSites = new List<SiteData>(); Guid siteId = SPContext.Current.Site.ID; SPSecurity.RunWithElevatedPrivileges(delegate() { //Create new elevated instances of the site collection using (SPSite elevSite = new SPSite(siteId)) { foreach (SPSite site in elevSite.WebApplication.Sites) { try { if (site.RootWeb != null) { SiteData siteData = new SiteData() { Title = site.RootWeb.Title, Description = site.RootWeb.Description, LcId = site.RootWeb.Language.ToString(), OwnerLogin = site.Owner.LoginName, Url = site.Url, WebTemplate = string.Format("{0}#{1}", site.RootWeb.WebTemplate, site.RootWeb.Configuration) }; if (site.SecondaryContact != null) { siteData.SecondaryContactLogin = site.SecondaryContact.LoginName; } lstSites.Add(siteData); } } catch (Exception ex) { //TODO - Log exception and move to next } finally { if (site != null) site.Dispose(); } } } }); return lstSites; }