protected static object VersionCount(SC.Data.Query.FunctionArgs args) { SC.Diagnostics.Assert.ArgumentNotNull(args, "args"); if (args.Arguments.Length != 1) { throw new SC.Exceptions.QueryException( "Too many or to few arguments in VersionCount()"); } SC.Data.Query.QueryContext queryContext = args.Arguments[0].Evaluate( args.Query, args.ContextNode) as SC.Data.Query.QueryContext; if (queryContext == null) { return(null); } SC.Data.Items.Item item = queryContext.GetQueryContextItem(); if (item == null) { return(null); } return(item.Versions.Count); }
// retrieve IDs of items to process protected SC.Data.ID[] GetItemIDs(SC.Data.Database db) { SC.Diagnostics.Assert.ArgumentNotNull(db, "db"); SC.Data.Query.Query query = new SC.Data.Query.Query( this.GetQuery()) { // override the Query.MaxItems setting in the Web.config file Max = int.MaxValue }; SC.Data.Items.Item root = db.GetRootItem(); SC.Diagnostics.Assert.IsNotNull(root, "root"); // result of invoking the query object queryResult = query.Execute(root); SC.Diagnostics.Assert.IsNotNull(queryResult, "queryResult"); // list for method to return List <SC.Data.ID> methodResults = new List <SC.Data.ID>(); SC.Data.Query.QueryContext queryContext = queryResult as SC.Data.Query.QueryContext; // if the query returned only one item if (queryContext != null) { methodResults.Add(queryContext.ID); } else { // the query potentially returned multiple results SC.Data.Query.QueryContext[] queryContexts = queryResult as SC.Data.Query.QueryContext[]; SC.Diagnostics.Assert.IsNotNull(queryContexts, "queryContexts"); for (int i = 0; i < queryContexts.Length; i++) { methodResults.Add(queryContexts[i].ID); } } return(methodResults.ToArray()); }
protected void Page_Load(object sender, EventArgs e) { if (String.IsNullOrEmpty(this.txtQuery.Text)) { this.txtQuery.Text = "/*/content//*[tolower(@Title) = 'sitecore' and versioncount(.) > 0]"; return; } Sitecore.Sharedsource.Data.Query.Query query = new Sitecore.Sharedsource.Data.Query.Query(this.txtQuery.Text); Sitecore.Diagnostics.Assert.IsNotNull(query, "query"); object results = query.Execute(); Sitecore.Data.Query.QueryContext context = results as Sitecore.Data.Query.QueryContext; Sitecore.Data.Query.QueryContext[] contextArray = results as Sitecore.Data.Query.QueryContext[]; List <Sitecore.Data.Items.Item> items = new List <Sitecore.Data.Items.Item>(); if (context != null) { items.Add(Sitecore.Context.Database.Items[context.ID]); } else if (contextArray != null) { for (int i = 0; i < contextArray.Length; i++) { items.Add(Sitecore.Context.Database.Items[contextArray[i].ID]); } } foreach (Sitecore.Data.Items.Item item in items) { this.Controls.Add(new LiteralControl(item.Paths.FullPath + " : " + item.Language.Name + " : " + item.Versions.Count + "<br />")); } }