Exemple #1
0
        public override DataUri[] GetItemsInWorkflowState(Sitecore.Workflows.WorkflowInfo info, CallContext context)
        {
            Guid workflowStateId = Guid.Empty;

            if (Guid.TryParse(info.StateID, out workflowStateId))
            {
                var items  = Provider.GetItemsInWorkflowState(workflowStateId);
                var result = items.Select(
                    x => x.FieldValues.Where(y => y.Id == FieldIDs.WorkflowState.Guid)
                    .Select(y => new DataUri(new ID(x.Id), LanguageManager.GetLanguage(y.Language), new Version(y.Version ?? 1)))

                    );
                if (result.Any())
                {
                    return(result.Aggregate((x, y) => (x ?? new DataUri[] {}).Concat(y ?? new DataUri[] {})).ToArray());
                }
                else
                {
                    return new DataUri[] { }
                };
            }
            else
            {
                return new DataUri[] {}
            };
        }
    }
 /// <summary>
 /// Retrieve the current workflow state for the Sitecore item
 /// </summary>
 /// <param name="item"></param>
 /// <returns></returns>
 private static string GetWorkflowState(Item item)
 {
     Sitecore.Workflows.WorkflowInfo info = item.Database.DataManager.GetWorkflowInfo(item);
     return((info != null) ? info.StateID : String.Empty);
 }