/// <summary> /// Update MangaObject to current version /// </summary> /// <param name="MangaObject">MangaObject to update</param> /// <param name="Updated">Was the MangaObject updated</param> /// <returns>Updated MangaObject</returns> private MangaObject UpdateMangaObjectVersion(MangaObject MangaObject, ref Boolean Updated) { Updated = false; #region Re-enable LocationObjects /* * TODO: This is a quick fix and should be removed! */ Updated = MangaObject.Locations.Count(LocObj => !LocObj.Enabled) > 0; MangaObject.Locations.ForEach(LocObj => LocObj.Enabled = true); Updated = MangaObject.DatabaseLocations.Count(LocObj => !LocObj.Enabled) > 0; MangaObject.DatabaseLocations.ForEach(LocObj => LocObj.Enabled = true); #endregion #region Check for old location object types. Regex NameLanguageSplitRegex = new Regex(@"[^\w]"); foreach (LocationObject LocObj in MangaObject.Locations) { if (Equals(LocObj.ExtensionLanguage, null)) { Updated = true; String Language = "English"; String[] NameLanguage = NameLanguageSplitRegex.Split(LocObj.ExtensionName); if (NameLanguage.Length > 1) { Language = NameLanguage[1]; } LocObj.ExtensionLanguage = Language; logger.Info(String.Format("[{0}] Setting language of '{1}' to '{2}'", MangaObject.Name, LocObj.ExtensionName, Language)); } } foreach (LocationObject LocObj in MangaObject.DatabaseLocations) { if (Equals(LocObj.ExtensionLanguage, null)) { Updated = true; String Language = "English"; String[] NameLanguage = NameLanguageSplitRegex.Split(LocObj.ExtensionName); if (NameLanguage.Length > 1) { Language = NameLanguage[1]; } LocObj.ExtensionLanguage = Language; logger.Info(String.Format("[{0}] Setting language of '{1}' to '{2}'", MangaObject.Name, LocObj.ExtensionName, Language)); } } #endregion #region Migrate covers to new format. foreach (String Cover in MangaObject.Covers) { Updated = true; IExtension Extension = null; if (Cover.Contains("mhcdn.net")) { Extension = CORE.Extensions["MangaHere", "English"]; } else { Extension = CORE.Extensions.FirstOrDefault(_ => Cover.Contains(_.ExtensionDescriptionAttribute.URLFormat)); } if (!Equals(Extension, null)) { MangaObject.CoverLocations.Add(new LocationObject() { Url = Cover, Enabled = true, ExtensionName = Extension.ExtensionDescriptionAttribute.Name, ExtensionLanguage = Extension.ExtensionDescriptionAttribute.Language, }); } logger.Info(String.Format("[{0}] Migrating cover to location: {1}", MangaObject.Name, Cover)); } // Remove duplicates MangaObject.CoverLocations = (from CoverLocation in MangaObject.CoverLocations group CoverLocation by CoverLocation.Url into CoverLocationGroups select CoverLocationGroups.FirstOrDefault()).ToList(); MangaObject.CoverLocations.RemoveAll(_ => Equals(_, null)); MangaObject.Covers.Clear(); #endregion return(MangaObject); }