private void TransformPage(PageData sourcePage, bool clearPropertyValues = true) { MigrationHook.Invoke(new BeforePageTransformEvent(sourcePage), Logger); _currentConvertablePageData.Properties = sourcePage.Property; _currentConvertablePageData.TypeName = sourcePage.PageTypeName; var pTRepo = ServiceLocator.Current.GetInstance <PageTypeRepository>(); var sourcePageType = pTRepo.Load(sourcePage.PageTypeID); var targetPageType = pTRepo.Load(_mapper.GetTargetPageType(sourcePage)); string result; //Convert The Page if (clearPropertyValues) { var keys = new List <KeyValuePair <int, int> >(); var properties = sourcePage.Property.Select(p => p.PropertyDefinitionID).Where(p => p > 0); foreach (var propertyId in properties) { keys.Add(new KeyValuePair <int, int>(propertyId, 0)); } //Convert The Page result = PageTypeConverter.Convert(sourcePage.PageLink, sourcePageType, targetPageType, keys, false, false, _repo); } else { result = PageTypeConverter.Convert(sourcePage.PageLink, sourcePageType, targetPageType, new List <KeyValuePair <int, int> >(), false, false, _repo); } Logger.Log(result); var transformedPage = _repo.Get <PageData>(sourcePage.PageLink).CreateWritableClone(); _mapper.SetPropertyValues(transformedPage, _currentConvertablePageData); transformedPage.URLSegment = UrlSegment.GetUrlFriendlySegment(transformedPage.URLSegment); var oldPrincipal = PrincipalInfo.CurrentPrincipal; try { PrincipalInfo.CurrentPrincipal = PrincipalInfo.CreatePrincipal(sourcePage.ChangedBy); global::EPiServer.BaseLibrary.Context.Current["PageSaveDB:PageSaved"] = true; var savedPage = _repo.Save(transformedPage, SaveAction.ForceCurrentVersion | SaveAction.Publish | SaveAction.SkipValidation, AccessLevel.NoAccess); MigrationHook.Invoke(new AfterPageTransformEvent(savedPage), Logger); } finally { global::EPiServer.BaseLibrary.Context.Current["PageSaveDB:PageSaved"] = null; PrincipalInfo.CurrentPrincipal = oldPrincipal; } }
private IContent CreateAndAssignIdentity(MappedIdentity mappedIdentity, Type modelType, string name) { // Find parent var parentLink = EntryPoint; if (modelType == typeof(YouTubeVideo)) { parentLink = SearchResultNode; } else if (modelType != typeof(YouTubeFolder)) { parentLink = new ContentReference(int.Parse(RemoveEndingSlash(mappedIdentity.ExternalIdentifier.Segments[2])), ProviderKey); } // Set content type and content type Id. var contentType = ContentTypeRepository.Load(modelType); var content = ContentFactory.CreateContent(contentType); content.ContentTypeID = contentType.ID; content.ParentLink = parentLink; content.ContentGuid = mappedIdentity.ContentGuid; content.ContentLink = mappedIdentity.ContentLink; content.Name = name; (content as IRoutable).RouteSegment = UrlSegment.GetUrlFriendlySegment(content.Name); var securable = content as IContentSecurable; securable.GetContentSecurityDescriptor().AddEntry(new AccessControlEntry(EveryoneRole.RoleName, AccessLevel.Read)); var versionable = content as IVersionable; if (versionable != null) { versionable.Status = VersionStatus.Published; } var changeTrackable = content as IChangeTrackable; if (changeTrackable != null) { changeTrackable.Changed = DateTime.Now; } return(content); }