public static LogWarningMessage ( string msg, bool toConsole = true ) : void | ||
msg | string | |
toConsole | bool | |
return | void |
public static void DoWork() { try { Logger.OpenLog("DeleteMissingWorkflowAssociations"); System.Console.WriteLine("Enter the path of input file PreMT_MissingWorkflowAssociations.csv"); string filePath = System.Console.ReadLine(); if (string.IsNullOrEmpty(filePath) || !System.IO.Directory.Exists(filePath)) { Logger.LogWarningMessage("Input FilePath '" + filePath + "' is not valid", true); filePath = Environment.CurrentDirectory; Logger.LogInfoMessage("Correct Input FilePath is not provided so it changed to current environment '" + filePath + "'", true); } Logger.LogInfoMessage(String.Format("Scan starting {0}", DateTime.Now.ToString()), true); string inputFileSpec = filePath + "\\" + Constants.MissingWorkflowAssociationsInputFileName; if (System.IO.File.Exists(inputFileSpec)) { IEnumerable <MissingWorkflowAssociationsInput> objInputMissingWorkflowAssociations = ImportCSV.ReadMatchingColumns <MissingWorkflowAssociationsInput>(inputFileSpec, Constants.CsvDelimeter); if (objInputMissingWorkflowAssociations != null) { try { Logger.LogInfoMessage(String.Format("\nPreparing to delete a total of {0} files ...", objInputMissingWorkflowAssociations.Cast <Object>().Count()), true); foreach (MissingWorkflowAssociationsInput missingFile in objInputMissingWorkflowAssociations) { DeleteMissingFile(missingFile); } } catch (Exception ex) { Logger.LogErrorMessage(String.Format("DeleteMissingWorkflowAssociationFiles() failed: Error={0}", ex.Message), true); } Logger.LogInfoMessage(String.Format("Scan completed {0}", DateTime.Now.ToString()), true); } else { Logger.LogInfoMessage("There is nothing to delete from the '" + inputFileSpec + "' File ", true); } } else { Logger.LogErrorMessage("The input file " + inputFileSpec + " is not present", true); } } catch (Exception ex) { Logger.LogErrorMessage(String.Format("DeleteMissingWorkflowAssociationFiles() failed: Error={0}", ex.Message), true); } Logger.CloseLog(); }
private static void ResetMappingFile(LockedMasterPageFilesInput masterPageFile) { if (masterPageFile == null) { return; } string setupFileDirName = masterPageFile.SetupFileDirName; string setupFileName = masterPageFile.SetupFileName; string setupFileExtension = masterPageFile.SetupFileExtension; string siteUrl = masterPageFile.SiteCollection; string webAppUrl = masterPageFile.WebApplication; string webUrl = masterPageFile.WebUrl; LockedMasterPageFilesOutput csvObject = new LockedMasterPageFilesOutput(); csvObject.SetupFileDirName = setupFileDirName; csvObject.SetupFileName = setupFileName; csvObject.WebApplication = webAppUrl; csvObject.WebUrl = webUrl; csvObject.ExecutionDateTime = DateTime.Now.ToString(); csvObject.Status = Constants.Success; // clean the inputs if (setupFileDirName.EndsWith("/")) { setupFileDirName = setupFileDirName.TrimEnd(new char[] { '/' }); } if (setupFileName.StartsWith("/")) { setupFileName = setupFileName.TrimStart(new char[] { '/' }); } if (webUrl.EndsWith("/")) { webUrl = webUrl.TrimEnd(new char[] { '/' }); } if (webAppUrl.EndsWith("/")) { webAppUrl = webAppUrl.TrimEnd(new char[] { '/' }); } // e.g., "https://ppeTeams.contoso.com/sites/test/_catalogs/masterpage/Sample.master" string targetFilePath = setupFileDirName + '/' + setupFileName; // e.g., "https://ppeTeams.contoso.com/sites/test/_catalogs/masterpage/__DeviceChannelMappings.aspx" string mappingFilePath = setupFileDirName + '/' + Constants.DeviceChannelMappingFileName; // e.g., "/_catalogs/masterpage/Sample.master" // e.g., "/_catalogs/masterpage/folder/Sample.master" // e.g., "/sites/testSite/_catalogs/masterpage/Sample.master" // e.g., "/sites/testSite/_catalogs/masterpage/folder/Sample.master" // e.g., "/sites/testSite/childWeb/_catalogs/masterpage/Sample.master" // e.g., "/sites/testSite/childWeb/_catalogs/masterpage/folder/Sample.master" string serverRelativeMappingFilePath = mappingFilePath.Substring(webAppUrl.Length); if (setupFileExtension.Equals("master", StringComparison.InvariantCultureIgnoreCase) == false) { // ignore anything that is not a master page file Logger.LogWarningMessage(String.Format("Skipping file [not a Master Page]: {0}", targetFilePath), true); return; } try { Logger.LogInfoMessage(String.Format("Processing File: {0} ...", targetFilePath), true); Logger.LogInfoMessage(String.Format(" setupFileDirName= {0} ...", setupFileDirName), false); Logger.LogInfoMessage(String.Format(" setupFileName= {0} ...", setupFileName), false); Logger.LogInfoMessage(String.Format(" targetFilePath= {0} ...", targetFilePath), false); Logger.LogInfoMessage(String.Format(" mappingFilePath= {0} ...", mappingFilePath), false); Logger.LogInfoMessage(String.Format(" serverRelativeFilePath= {0} ...", serverRelativeMappingFilePath), false); Logger.LogInfoMessage(String.Format(" webAppUrl= {0} ...", webAppUrl), false); Logger.LogInfoMessage(String.Format(" webUrl= {0} ...", webUrl), false); using (ClientContext userContext = Helper.CreateAuthenticatedUserContext(Program.AdminDomain, Program.AdminUsername, Program.AdminPassword, webUrl)) { Web web = userContext.Web; userContext.Load(web); userContext.ExecuteQuery(); // Get Device Channel Mapping File string originalFileContents = Helper.SafeGetFileAsString(web, serverRelativeMappingFilePath); if (String.IsNullOrEmpty(originalFileContents)) { // bail if Mapping file not found.. Logger.LogWarningMessage(String.Format("Skipping file: [{0}]; Mapping File not found: [{1}]", targetFilePath, serverRelativeMappingFilePath), true); return; } string tempFileContents = originalFileContents.ToLower(); if (tempFileContents.Contains(setupFileName.ToLower()) == false) { // bail if MP file not referenced in Mapping file.. Logger.LogWarningMessage(String.Format("Skipping file: [{0}]; Mapping File does not reference the master page file: [{1}]", targetFilePath, serverRelativeMappingFilePath), true); return; } // grab the current master page settings for the web. Helper.MasterPageInfo mpi = Helper.GetMasterPageInfo(web); string currentCustomMasterPageUrl = mpi.CustomMasterPageUrl; string currentCustomMasterPage = currentCustomMasterPageUrl.Substring(currentCustomMasterPageUrl.LastIndexOf("/") + 1); // Edit Device Channel Mapping File so it now references the correct/current master page files. // TODO: this is a case-sensitive operation; add case-insensitive logic if it becomes necessary... string updatedFileContents = originalFileContents.Replace(setupFileName, currentCustomMasterPage); // Did the case-sensitive replacement operation fail? tempFileContents = updatedFileContents.ToLower(); if (tempFileContents.Contains(setupFileName.ToLower()) == true) { // bail if replacement operation failed due to case-sensitivity Logger.LogErrorMessage(String.Format("ResetMappingFile() failed for file {0}: Error={1}", targetFilePath, "Casing of Master Page References in Mapping File does not match the casing of the Master Page [" + setupFileName + "] specified in the input file"), true ); Logger.LogWarningMessage(String.Format("Update the casing of the Master Page entry [{0}] of the input file to match the casing used in the Mapping File [Contents={1}]", setupFileName, originalFileContents), false); return; } Logger.LogInfoMessage(String.Format("Reset Mapping File [{0}] to reference [{1}]", serverRelativeMappingFilePath, currentCustomMasterPage), true); // Upload Modified Device Channel Mapping File Helper.UploadDeviceChannelMappingFile(web, serverRelativeMappingFilePath, updatedFileContents, "File reset by Transformation Console"); // Backup Original Device Channel Mapping File Helper.UploadDeviceChannelMappingFile(web, serverRelativeMappingFilePath + ".bak", originalFileContents, "Backup created by Transformation Console"); csvObject.MappingFile = serverRelativeMappingFilePath; csvObject.MappingBackup = serverRelativeMappingFilePath + ".bak"; csvObject.MappingMasterPageRef = currentCustomMasterPage; csvObject.Status = Constants.Success; FileUtility.WriteCsVintoFile(csvOutputFileSpec, csvObject, ref csvOutputFileHasHeader); } } catch (Exception ex) { Logger.LogErrorMessage(String.Format("ResetMappingFile() failed for file {0}: Error={1}", targetFilePath, ex.Message), true); ExceptionCsv.WriteException( webAppUrl, siteUrl, webUrl, "MappingFile", ex.Message, ex.ToString(), "ResetMappingFile", ex.GetType().ToString(), String.Format("ResetMappingFile() failed for file {0}", targetFilePath) ); } }