private void setItemPermissions(SPDGWeb web, string listName) { var list = web.GetList(listName); foreach (var item in list.Items) { if (SampleData.GetRandomNumber(1, 100) < WorkingDefinition.PermissionsPercentOfListItems) { Owner.IncrementCurrentTaskProgress("Adding permissions for item/document '" + item.DisplayName + "' in list '" + list.Title, 0); if (!item.HasUniqueRoleAssignments) { item.BreakRoleInheritance(false); } for (int i = 0; i < _permissionsPerObject; i++) { setupNextRoleAssignment(web, item); } Owner.IncrementCurrentTaskProgress("Unique permissions added for item/document '" + item.DisplayName + "' in list '" + list.Title); } else { Owner.IncrementCurrentTaskProgress(""); } } }
private void setupNextRoleAssignment(SPDGWeb web, SPDGSecurableObject securableObject) { SPDGPrincipal principal = null; var rnd = SampleData.GetRandomNumber(0, 100); if (rnd < WorkingDefinition.PermissionsPercentForUsers) { principal = _siteSpUsers[SampleData.GetRandomNumber(0, _siteSpUsers.Count - 1)]; } else if (rnd < WorkingDefinition.PermissionsPercentForUsers + WorkingDefinition.PermissionsPercentForSPGroups) { principal = _siteSpGroups[SampleData.GetRandomNumber(0, _siteSpGroups.Count - 1)]; } else { principal = _siteAdGroupSpUsers[SampleData.GetRandomNumber(0, _siteAdGroupSpUsers.Count - 1)]; } var roleAssignment = securableObject.GetRoleAssignmentByPrincipal(principal); if (roleAssignment == null || roleAssignment.RoleDefinitionBindings.All(x => x.IsGuestRole)) { var availableRoledefinitions = web.RoleDefinitions.Where(x => !x.IsGuestRole).ToList(); var selected = availableRoledefinitions[SampleData.GetRandomNumber(0, availableRoledefinitions.Count - 1)]; securableObject.AddRoleAssignment(principal, new List <SPDGRoleDefinition> { selected }); } }
internal void CreateSubsites(SPDGWeb parentWeb, int currentLevel, int maxLevels, int maxSitesToCreate, string parentBaseName) { Random rnd = new Random(); string baseName = ""; int value = rnd.Next(7) + 1; int sitesToCreate = (int)(value / ((currentLevel + 1) / (float)maxLevels)); Log.Write($"{parentWeb.Title} (int)({value}) / (({currentLevel + 1}) / (float){maxLevels})), sitesToCreate: {sitesToCreate}"); for (int i = 0; i < sitesToCreate; i++) { if (SiteCounter < maxSitesToCreate) { var childSubsite = CreateSubsite(parentWeb, parentBaseName, currentLevel, out baseName); SiteCounter++; if (childSubsite != null) { SiteInfo siteInfo = new SiteInfo(); siteInfo.URL = childSubsite.Url; Guid siteID = childSubsite.ID; siteInfo.ID = siteID; Sites.Add(siteInfo); if (currentLevel < maxLevels) { CreateSubsites(childSubsite, currentLevel + 1, maxLevels, maxSitesToCreate, baseName); } } } } }
public SPDGClientWeb(Web web, SPDGWeb parentWeb, ClientContext context, SPDGClientSite site) { _web = web; _parentWeb = parentWeb; _context = context; _site = site; }
private SPDGWeb CreateSubsite(SPDGWeb parentWeb, string parentBaseName, int level, out string baseName) { string siteName, url; findAvailableSiteName(parentWeb, out siteName, out url, parentBaseName, level, out baseName); Owner.IncrementCurrentTaskProgress("Creating Site '" + parentWeb.Url + "/" + url + "'", 0); SPDGWeb childWeb = null; try { childWeb = parentWeb.AddWeb(url, siteName, null, parentWeb.Language, _templateName, false, false); AddToNavigationBar(childWeb); Owner.IncrementCurrentTaskProgress("Site created '" + childWeb.Url + "'"); } catch (Exception ex) { Log.Write("Could not create site '" + url + "'"); Owner.IncrementCurrentTaskProgress(""); Errors.Log(ex); } return(childWeb); }
internal void CreateSubsites(ref List <SiteInfo> sites, SPDGWeb parentWeb, int currentLevel, int maxLevels, ref int siteCounter, int maxSitesToCreate, string parentBaseName) { Random rnd = new Random(); string baseName = ""; int sitesToCreate = (int)((rnd.Next(3) + 1) / ((currentLevel + 1) / (float)maxLevels)); for (int i = 0; i < sitesToCreate; i++) { if (siteCounter < maxSitesToCreate) { var childSubsite = CreateSubsite(parentWeb, parentBaseName, currentLevel, out baseName); siteCounter++; if (childSubsite != null) { SiteInfo siteInfo = new SiteInfo(); siteInfo.URL = childSubsite.Url; Guid siteID = childSubsite.ID; siteInfo.ID = siteID; sites.Add(siteInfo); if (currentLevel < maxLevels) { CreateSubsites(ref sites, childSubsite, currentLevel + 1, maxLevels, ref siteCounter, maxSitesToCreate, baseName); } } } } }
private void InitWebTemplate(SPDGWeb web) { if (!string.IsNullOrEmpty(WorkingDefinition.SiteTemplate)) { foreach (var template in web.GetWebTemplates(web.Language)) { if (template.Title == WorkingDefinition.SiteTemplate) { _templateName = template.Name; break; } } } }
private void findAvailableSiteName(SPDGWeb web, out string siteName, out string siteUrl, string parentBaseName, int level, out string baseName) { baseName = ""; IList <string> primaryCollection; IList <string> secondaryCollection; if (level % 3 == 0) { primaryCollection = SampleData.Offices; secondaryCollection = SampleData.Dates; } else if (level % 3 == 1) { primaryCollection = SampleData.Departments.GroupBy(s => s.Department).Select(grp => grp.First()).Select(d => d.Department).ToList(); secondaryCollection = SampleData.Dates; } else { primaryCollection = SampleData.Departments.Where(s => s.Department == parentBaseName).Select(s => s.Subdepartment).ToList(); secondaryCollection = SampleData.Dates; } string candidate = SampleData.GetSampleValueRandom(primaryCollection); string leafName = Utils.GenerateSlug(candidate, 7); baseName = candidate; int i = 0; while (candidate == parentBaseName || web.Webs.Any(s => s.Url.Equals(web.Url + "/" + leafName))) { candidate = SampleData.GetRandomName(primaryCollection, secondaryCollection, null, ref i, out baseName); if (i < 3) { leafName = Utils.GenerateSlug(candidate, 7); } else if (i < 5) { leafName = Utils.GenerateSlug(candidate, 15); } else { leafName = Utils.GenerateSlug(candidate, 100); } } siteName = candidate; siteUrl = leafName; }
private void setFolderPermissions(SPDGWeb web, string folderURL) { Owner.IncrementCurrentTaskProgress("Adding permissions to folder: " + folderURL + " in site: " + web.Url, 0); SPDGFolder folder = web.GetFolder(folderURL); if (!folder.Item.HasUniqueRoleAssignments) { folder.Item.BreakRoleInheritance(false); } for (int i = 0; i < _permissionsPerObject; i++) { setupNextRoleAssignment(web, folder.Item); } Owner.IncrementCurrentTaskProgress("Unique permissions added to folder: " + folderURL + " in site: " + web.Url); }
private void setListPermissions(SPDGWeb web, string listName) { Owner.IncrementCurrentTaskProgress("Adding permissions to list " + web.Url + "/" + listName, 0); var list = web.GetList(listName); if (!list.HasUniqueRoleAssignments) { list.BreakRoleInheritance(false); } for (int i = 0; i < _permissionsPerObject; i++) { setupNextRoleAssignment(web, list); } Owner.IncrementCurrentTaskProgress("Unique permissions added to list: " + listName + ", site: " + web.Url); }
private void setSitePermissions(SPDGWeb web) { Owner.IncrementCurrentTaskProgress("Adding permissions to site " + web.Url + "'", 0); if (!web.HasUniqueRoleAssignments) { web.BreakRoleInheritance(false); } for (int i = 0; i < _permissionsPerObject; i++) { try { setupNextRoleAssignment(web, web); } catch (Exception ex) { Errors.Log(ex); } } Log.Write("Unique permissions added to site: " + web.Url); }
private string findAvailableListName(SPDGWeb web) { string candidate = SampleData.GetSampleValueRandom(SampleData.BusinessDocsTypes); if (_lastTemplateType == SPDGListTemplateType.Tasks) { candidate += " Tasks"; } else if (_lastTemplateType == SPDGListTemplateType.Events) { candidate += " Calendar"; } while (web.TryGetList(candidate) != null) { candidate = SampleData.GetSampleValueRandom(SampleData.BusinessDocsTypes); } return(candidate); }
private List <SiteInfo> getSubsites(SPDGWeb parentWeb, int maxDepth = 32) { List <SiteInfo> sites = new List <SiteInfo>(); sites.Add(new SiteInfo() { URL = parentWeb.Url, ID = parentWeb.ID }); if (parentWeb.Webs.Count() == 0 || maxDepth == 0) { return(sites); } foreach (var subsite in parentWeb.Webs) { sites.AddRange(getSubsites(subsite, maxDepth - 1)); } return(sites); }
public SPDGClientList(SPDGWeb web, List list, ClientContext context) { _web = web; _list = list; _context = context; }
private void EnsureUsersAndGroups(SPDGWeb web) { /// ENSURE AD USERS TO SHAREPOINT var availableUsers = GetAvailableUsersInDirectory(); int numOfUsers = availableUsers.Count > 20 ? 20 : availableUsers.Count; for (int i = 0; i < numOfUsers; i++) { string userName = availableUsers[SampleData.GetRandomNumber(0, availableUsers.Count)]; if (userName == string.Empty) { continue; } try { var user = web.EnsureUser(userName); Log.Write("Ensured user:"******" for site: " + web.Url); } catch (Exception ex) { Errors.Log(ex); Log.Write("Error adding user:"******"Ensured user:"******" for site: " + web.Url); } catch (Exception ex) { Errors.Log(ex); Log.Write("Error adding user:"******" Group"; try { web.AddSiteGroup(nameCandidate, web.CurrentUser, web.CurrentUser, "SPDG generated group"); createdGroups.Add(nameCandidate); Log.Write("Created group:" + nameCandidate); } catch (Exception ex) { Errors.Log(ex); } } } _siteSpGroups = web.SiteGroups.ToList(); _siteSpUsers = web.SiteUsers.Where(x => !x.IsDomainGroup).ToList(); _siteAdGroupSpUsers = web.SiteUsers.Where(x => x.IsDomainGroup).ToList(); if (createdGroups.Count > 0) { var candidates = _siteSpUsers.Union(_siteAdGroupSpUsers).ToList(); var groups = web.SiteGroups.ToList(); foreach (var @group in createdGroups) { try { candidates.Shuffle(); var elementsToTake = Math.Min(candidates.Count, 10); var users = candidates.Take(elementsToTake).ToList(); var grp = groups.First(x => x.Name == @group); grp.AddUsers(users); Log.Write(string.Format("added {0} users to group {1}:", users.Count, @group)); } catch (Exception ex) { Errors.Log(ex); } } } }
private void AddToNavigationBar(SPDGWeb childWeb) { childWeb.ParentWeb.AddNavigationNode(childWeb.Title, childWeb.ServerRelativeUrl, NavigationNodeLocation.TopNavigationBar); }