public override bool Perform() { try { UpgradeUtilities.ScheduleReportingRefresh(Web); LogMessage(null, MessageKind.SUCCESS, 1); } catch (Exception e) { LogMessage(e.Message, MessageKind.FAILURE, 1); } return(true); }
// Private Methods (2) private void MapField(SPList spList, SPWeb web, string internalName, string displayName, SPFieldType spFieldType, string propertyValue) { string message; MessageKind messageKind; LogMessage("Adding field: " + displayName, 3); SPField spField = UpgradeUtilities.TryAddField(internalName, displayName, spFieldType, spList, out message, out messageKind); if (spField != null) { spField.ShowInNewForm = false; spField.ShowInEditForm = false; spField.ShowInDisplayForm = true; spField.Update(); if (internalName.Equals("Selected")) { var spFieldBoolean = (SPFieldBoolean)spList.Fields.GetFieldByInternalName(internalName); spFieldBoolean.DefaultValue = "0"; spFieldBoolean.Update(); } else { var spFieldNumber = (SPFieldNumber)spList.Fields.GetFieldByInternalName(internalName); spFieldNumber.DisplayFormat = SPNumberFormatTypes.NoDecimal; spFieldNumber.Update(); } } LogMessage(message, messageKind, 4); string listName = spList.Title.Replace(" ", string.Empty).ToLower(); SetProperty(web, propertyValue, "epk" + listName + "_fields"); }
// Public Methods (1) public void execute(SPSite site, SPWeb web, string data) { try { string[] passedParams = data.Split(new char[] { '|' }); string secondParameter = passedParams.Length > 1 ? passedParams[1] : string.Empty; Dictionary <long, Type> upgradeSteps = UpgradeUtilities.GetUpgradeSteps(passedParams.Length > 0? passedParams[0]:string.Empty); if (!string.IsNullOrWhiteSpace(secondParameter) && secondParameter.ToLower().Trim().Equals("mark")) { web.AllowUnsafeUpdates = true; var steps = upgradeSteps.Where(item => item.Key > 0).OrderBy(item => item.Key).ToList(); if (steps.Count > 0) { web.AllProperties["LastVersionedUpgrade"] = steps[steps.Count - 1].Key.ToString(); } steps = upgradeSteps.Where(item => item.Key < 0).OrderBy(item => item.Key).ToList(); if (steps.Count > 0) { web.AllProperties["LastGenericUpgrade"] = steps[0].Key.ToString(); } web.AllowUnsafeUpdates = false; web.Update(); } else { bool isPfeSite = site.Features[new Guid("158c5682-d839-4248-b780-82b4710ee152")] != null; List <KeyValuePair <long, Type> > steps = null; int genericStartIndex = 0; if (!string.IsNullOrWhiteSpace(secondParameter) && secondParameter.ToLower().Trim().Equals("force")) { steps = upgradeSteps.Where(item => item.Key > 0).OrderBy(item => item.Key).ToList(); genericStartIndex = steps.Count; steps.AddRange(upgradeSteps.Where(item => item.Key < 0).OrderByDescending(item => item.Key).ToList()); } else { long lastVersionedSequence = web.AllProperties.ContainsKey("LastVersionedUpgrade") ? long.Parse((string)web.AllProperties["LastVersionedUpgrade"]) : 0; if (lastVersionedSequence < 1000000000L) { lastVersionedSequence = lastVersionedSequence * 100; } long lastGenericSequence = web.AllProperties.ContainsKey("LastGenericUpgrade") ? long.Parse((string)web.AllProperties["LastGenericUpgrade"]) : 0; steps = upgradeSteps.Where(item => item.Key > lastVersionedSequence).OrderBy(item => item.Key).ToList(); genericStartIndex = steps.Count; steps.AddRange(upgradeSteps.Where(item => item.Key < lastGenericSequence).OrderByDescending(item => item.Key).ToList()); } totalCount = steps.Count; int progressCounter = 1; foreach (var upgradeStep in steps) { var step = Activator.CreateInstance(upgradeStep.Value, new object[] { web, isPfeSite }) as IUpgradeStep; if (step == null) { continue; } bool success = step.Perform(); sErrors += step.Log; updateProgress(progressCounter++); if (success) { web.AllowUnsafeUpdates = true; if (progressCounter - 2 < genericStartIndex) { web.AllProperties["LastVersionedUpgrade"] = upgradeStep.Key.ToString(); } else { web.AllProperties["LastGenericUpgrade"] = upgradeStep.Key.ToString(); } web.Update(); web.AllowUnsafeUpdates = false; continue; } bErrors = true; break; } } #region Database checks EPMData epmdata = new EPMData(site.ID); StringBuilder sbErrors = new StringBuilder(); try { epmdata.LogStatus("", "", "Reporting Refresh Collect Job Database checks", string.Format("Started Database checks for site: {0}", site.Url), 2, 3, Convert.ToString(JobUid)); CheckReqSP(epmdata.GetClientReportingConnection); epmdata.LogStatus("", "", "Reporting Refresh Collect Job Database checks", string.Format("Completed Database checks for site: {0}", site.Url), 2, 3, Convert.ToString(JobUid)); } catch (Exception exReqSP) { var message = exReqSP.InnerException != null ? exReqSP.InnerException.Message : exReqSP.Message; bErrors = true; sbErrors.Append("<font color=\"red\">Error while checking SPRequirement: " + message + "</font><br>"); epmdata.LogStatus("", "", "Reporting Refresh Collect Job Database checks", string.Format("Error while checking SPRequirement for site: {0} error {1}", site.Url, message), 2, 3, Convert.ToString(JobUid)); } try { epmdata.LogStatus("", "", "Reporting Refresh Collect Job updating schema", string.Format("Started updating schema for site: {0}", site.Url), 2, 3, Convert.ToString(JobUid)); CheckSchema(epmdata.GetClientReportingConnection); epmdata.LogStatus("", "", "Reporting Refresh Collect Job updating schema", string.Format("Completed updating schema for site: {0}", site.Url), 2, 3, Convert.ToString(JobUid)); } catch (Exception exSchema) { var message = exSchema.InnerException != null ? exSchema.InnerException.Message : exSchema.Message; bErrors = true; sbErrors.Append("<font color=\"red\">Error while updating schema: " + message + "</font><br>"); epmdata.LogStatus("", "", "Reporting Refresh Collect Job updating schema", string.Format("Error while updating schema for site: {0} error {1}", site.Url, message), 2, 3, Convert.ToString(JobUid)); } #endregion } catch (Exception ex) { throw ex; } finally { sErrors = sErrors + bErrors.ToString(); if (web != null) { web.Dispose(); } if (site != null) { site.Dispose(); } data = null; } }
public override bool Perform() { try { SPSecurity.RunWithElevatedPrivileges(() => { using (var spSite = new SPSite(Web.Site.ID)) { using (SPWeb spWeb = spSite.OpenWeb()) { LogTitle(GetWebInfo(spWeb), 1); SPList spList = spWeb.Lists.TryGetList(LIST_NAME); if (spList == null) { LogMessage("Downloading new " + LIST_NAME + " list", 2); var catalog = (SPDocumentLibrary)Web.Site.GetCatalog(SPListTemplateType.ListTemplateCatalog); const string TEMPLATE_NAME = LIST_NAME + " [5.5]"; using (var webClient = new WebClient()) { byte[] bytes = webClient.DownloadData(_storeUrl + "/Upgrade/" + LIST_NAME.ToLower() + ".stp"); SPFile file = catalog.RootFolder.Files.Add(LIST_NAME + "_55.stp", bytes, true); SPListItem li = file.GetListItem(); li["Title"] = TEMPLATE_NAME; li.SystemUpdate(); } LogMessage("Creating the " + LIST_NAME + " list", 2); SPListTemplateCollection listTemplates = spSite.GetCustomListTemplates(spWeb); SPListTemplate template = listTemplates[TEMPLATE_NAME]; spWeb.Lists.Add(LIST_NAME, string.Empty, template); SPList list = spWeb.Lists[LIST_NAME]; list.Title = LIST_NAME; list.Hidden = true; list.Update(); LogMessage("Adding reporting groups", 2); SPGroup owner = spWeb.SiteGroups["Administrators"]; SPUser user = spWeb.CurrentUser; AddGroup(spWeb, owner, user, "Report Viewers"); AddGroup(spWeb, owner, user, "Report Writers"); LogMessage("Processing reports", 2); string error; Reporting.ProcessIzendaReportsFromList(list, out error); if (!string.IsNullOrEmpty(error)) { LogMessage(error, MessageKind.FAILURE, 3); } else { LogMessage(null, MessageKind.SUCCESS, 3); } LogMessage("Updating Navigation link", 2); string relativeUrl = spWeb.ServerRelativeUrl.ToLower(); string newUrl = relativeUrl + "/_layouts/15/epmlive/reporting/landing.aspx"; SPList lst = spWeb.Lists.TryGetList("Installed Applications"); if (lst != null) { var qry = new SPQuery { Query = @"<Where><IsNotNull><FieldRef Name='QuickLaunch' /></IsNotNull></Where>", ViewFields = @"<FieldRef Name='QuickLaunch' />" }; SPListItemCollection listItems = lst.GetItems(qry); foreach (SPListItem item in listItems) { foreach (SPNavigationNode navNode in from node in item["QuickLaunch"].ToString().Split(',') select Convert.ToInt32(node.Split(':')[0]) into i select spWeb.Navigation.GetNodeById(i) into navNode where navNode != null let url = navNode.Url.ToLower() where url.EndsWith(relativeUrl + "/reports.aspx") || url.EndsWith(relativeUrl + "/sitepages/report.aspx") select navNode) { string message; MessageKind messageKind; UpgradeUtilities.UpdateNodeLink(newUrl, item.ID, navNode, spWeb, out message, out messageKind); LogMessage(message, messageKind, 3); } } } else { LogMessage("The list Installed Applications does not exists.", MessageKind.FAILURE, 3); } CacheStore.Current.RemoveSafely(spWeb.Url, new CacheStoreCategory(spWeb).Navigation); } else { LogMessage("Advance reporting is already configured.", MessageKind.SKIPPED, 2); } } } }); } catch (Exception e) { LogMessage(e.Message, MessageKind.FAILURE, 2); } return(true); }
public override bool Perform() { try { using (var spSite = new SPSite(Web.Site.ID)) { using (SPWeb spWeb = spSite.OpenWeb()) { LogTitle(GetWebInfo(spWeb), 1); SPList spList = spWeb.Lists.TryGetList("Installed Applications"); if (spList != null) { var qry = new SPQuery { Query = @"<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>My Workplace</Value></Eq></Where>", ViewFields = @"<FieldRef Name='ID' />" }; SPListItemCollection listItems = spList.GetItems(qry); if (listItems.Count != 0) { try { LogTitle("Changing My Workplace to Global My Workplace", 2); SPListItem item = spList.GetItemById(listItems[0].ID); item["Title"] = "Global My Workplace"; item["HomePage"] = new SPFieldUrlValue { Url = spWeb.Url + "/SitePages/GlobalMyWorkplace.aspx", Description = "Global My Workplace" }; item.SystemUpdate(); LogTitle("Updating links", 2); string[] nodes = ((item["QuickLaunch"] ?? string.Empty).ToString()).Split(','); if (nodes.Any()) { foreach (string nodeId in nodes) { try { string message; MessageKind messageKind; int id = Convert.ToInt32(nodeId.Split(':')[0]); SPNavigationNode node = spWeb.Navigation.GetNodeById(id); if (node == null) { continue; } if (node.Title.Equals("My Work")) { string url = spWeb.ServerRelativeUrl + "/_layouts/15/epmlive/MyWork.aspx"; if (url.ToLower().Equals(node.Url.ToLower())) { continue; } UpgradeUtilities.UpdateNodeLink(url, item.ID, node, spWeb, out message, out messageKind); LogMessage(message, messageKind, 3); } else if (node.Title.Equals("Timesheet")) { string url = spWeb.ServerRelativeUrl + "/_layouts/15/epmlive/MyTimesheet.aspx"; if (url.ToLower().Equals(node.Url.ToLower())) { continue; } UpgradeUtilities.UpdateNodeLink(url, item.ID, node, spWeb, out message, out messageKind); LogMessage(message, messageKind, 3); } } catch (Exception e) { LogMessage(e.Message, MessageKind.FAILURE, 3); } } } else { LogMessage("No navigation nodes were found.", MessageKind.FAILURE, 3); } CacheStore.Current.RemoveSafely(spWeb.Url, new CacheStoreCategory(spWeb).Navigation); } catch (Exception e) { LogMessage(e.Message, MessageKind.FAILURE, 3); } } else { LogMessage("The My Workplace community was not found.", MessageKind.SKIPPED, 2); } } else { LogMessage("The list Installed Applications does not exists.", MessageKind.FAILURE, 2); } } } } catch (Exception e) { LogMessage(e.Message, MessageKind.FAILURE, 2); } return(true); }