public void StartContentMigration(PullItemModel model) { _model = model; if (model.PullParent) { foreach (var id in model.Ids.Select(Guid.Parse).Where(x => _sitecoreAccess.GetItemData(x) == null)) { var item = _remoteContent.GetRemoteItemData(id, model.Server); var parent = _sitecoreAccess.GetItemData(item.ParentId); while (parent == null) { item = _remoteContent.GetRemoteItemData(item.ParentId, model.Server); _puller.ItemsToInstall.Add(item); parent = _sitecoreAccess.GetItemData(item.ParentId); } } } Task.Run(() => { if (model.RemoveLocalNotInRemote) { _installer.SetupTrackerForUnwantedLocalItems(model.Ids.Select(Guid.Parse)); } _puller.StartGatheringItems(model.Ids.Select(Guid.Parse), _registration.GetScsRegistration <ContentMigrationRegistration>()?.RemoteThreads ?? 1, model.Children, model.Server, _cancellation.Token, model.IgnoreRevId); _installer.StartInstallingItems(model, _puller.ItemsToInstall, _registration.GetScsRegistration <ContentMigrationRegistration>()?.WriterThreads ?? 1, _cancellation.Token); }); }
public ActionResult GetItemYaml(string id) { Assert.ArgumentNotNullOrEmpty(id, "id"); using (var stream = new MemoryStream()) { _yamlSerializationService.WriteSerializedItem(_sitecore.GetItemData(Guid.Parse(id)), stream); stream.Seek(0, SeekOrigin.Begin); using (var reader = new StreamReader(stream)) { return(Content(reader.ReadToEnd())); } } }
internal void GatherItems(bool getChildren, string server, CancellationToken cancellationToken, bool ignoreRevId) { while (!Completed) { try { Guid id; if (!ProcessingIds.TryTake(out id, int.MaxValue, cancellationToken)) { break; } lock (_locker) _processing++; ChildrenItemDataModel remoteContentItem = _remoteContent.GetRemoteItemDataWithChildren(id, server, ignoreRevId ? null : _sitecore.GetItemAndChildrenRevision(id)); foreach (var item in (getChildren ? remoteContentItem.Items : remoteContentItem.Items.Where(x => x.Key == id))) { if (item.Value != null) { IItemData itemData = _yamlSerializationService.DeserializeYaml(item.Value, item.Key.ToString()); GatheredRemoteItems.Add(itemData, cancellationToken); } else { GatheredRemoteItems.Add(_sitecore.GetItemData(item.Key), cancellationToken); } } if (getChildren && remoteContentItem.GrandChildren != null) { foreach (var child in remoteContentItem.GrandChildren) { ProcessingIds.Add(child, cancellationToken); } } } catch (OperationCanceledException e) { _log.Warn("Content migration operation was cancelled", e, this); break; } catch (Exception e) { _log.Error("error processing ids to gather remote content", e, this); } lock (_locker) { _processing--; if (_processing > 0 || ProcessingIds.Count != 0) { continue; } } Completed = true; ProcessingIds.CompleteAdding(); GatheredRemoteItems.CompleteAdding(); } }
public void CleanUnwantedLocalItems() { foreach (Guid id in AllowedItems) { try { _sitecore.RecycleItem(id); var data = _sitecore.GetItemData(id); _logger.BeginEvent(data, LogStatus.Recycle, _sitecore.GetIconSrc(data), false); } catch (Exception e) { _logger.BeginEvent(new ErrorItemData() { Name = id.ToString("B"), Path = e.ToString() }, LogStatus.Error, "", false); } } }
private object GetContentTree(ContentTreeModel data) { if (string.IsNullOrWhiteSpace(data.Id)) { return(null); } var item = _sitecore.GetItemData(data.Id, data.Database); return(new ContentTreeNode(item)); }
private object GetContentTree(ContentTreeModel data) { if (string.IsNullOrWhiteSpace(data.Id)) { return(Root); } IItemData item = _sitecoreDataAccessSerivce.GetItemData(data.Id, data.Database); return(new ContentTreeNode(item)); }
private string BuildArrayQuery(IEnumerable <object> terms, string key, Dictionary <string, bool> databases) { if (key == "descendants") { var tmp = new List <object>(); foreach (var id in terms) { tmp.Add(_sitecoreDataAccessSerivce.GetItemData(id.ToString()).Path.Trim('/')); } terms = tmp; key = "path"; } StringBuilder sb = new StringBuilder("("); foreach (string term in terms) { if (term != "*") { sb.Append($"{key}:{(key=="path" ? '"'+ReplaceReservedChars(term)+'"' : ReplaceReservedChars(term))} OR "); } } if (sb.Length > 1) { sb.Remove(sb.Length - 4, 4); sb.Append(")"); } if (!databases.Any(x => x.Value)) { return(sb.ToString()); } if (sb.Length > 1) { sb.Append(" AND ("); } sb.Append("database:"); sb.Append(string.Join(" OR database:", databases.Where(x => x.Value).Select(x => x.Key))); sb.Append(")"); return(sb.ToString()); }
public void CleanUnwantedLocalItems() { foreach (Guid id in AllowedItems) { try { var data = _sitecore.GetItemData(id); _logger.BeginEvent(data, LogStatus.Recycle, _sitecore.GetIconSrc(data), false); string status = $"{DateTime.Now:h:mm:ss tt} [RECYCLED] Recycled old item {data?.Name} - {id}"; _logger.LoggerOutput.Add(status); if (data != null) { _sitecore.RecycleItem(id); } } catch (Exception e) { _logger.BeginEvent(new ErrorItemData() { Name = id.ToString("B"), Path = e.ToString() }, LogStatus.Error, "", false); } } }
public void BuildRoot(XmlNode node) { string dbName = "master"; if (!string.IsNullOrWhiteSpace(node.Attributes?["database"]?.Value)) { dbName = node.Attributes["database"].Value; } var item = _sitecoreDataAccessService.GetItemData(node.InnerText, dbName); if (item != null) { Root.Nodes.Add(new CompareContentTreeNode(item, false)); } }
private string BuildArrayQuery(IEnumerable <object> terms, string key, Dictionary <string, bool> databases) { if (key == "event") { key = "EventId"; } if (key == "id") { key = "ItemId"; } if (key == "user") { key = "UserId"; } if (key == "descendants") { var tmp = new List <object>(); foreach (var id in terms) { tmp.Add(_sitecoreDataAccessSerivce.GetItemData(id.ToString()).Path.Trim('/')); } terms = tmp; key = "path"; } StringBuilder sb = new StringBuilder("("); foreach (string term in terms) { var replacedTerm = ReplaceReservedChars(term); if (term != "*" && (key == "content" || key == "path")) { sb.Append($"[{key}] like '%{replacedTerm}%' OR "); } else if (term != "*" && key == "ItemId") { sb.Append($"[{key}] = '{replacedTerm.Replace('*', '-')}' OR "); } else if (term != "*" && key == "UserId") { sb.Append($"[{key}] = '{GetUserId(replacedTerm)}' OR "); } else if (term != "*") { sb.Append($"[{key}] = '{replacedTerm}' OR "); } } if (sb.Length > 1) { sb.Remove(sb.Length - 4, 4); sb.Append(")"); } if (!databases.Any(x => x.Value)) { return(sb.ToString()); } if (sb.Length > 1) { sb.Append(" AND ("); } sb.Append("[database] = "); sb.Append(string.Join(" OR [database] = ", databases.Where(x => x.Value).Select(x => $"'{x.Key}'"))); sb.Append(")"); return(sb.ToString()); }
public ContentTreeNode(string id) : this() { Initialize(_sitecoreDataAccessService.GetItemData(id), false); }