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);
        }
Esempio n. 2
0
        // 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());
        }
Esempio n. 3
0
        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 />"));
            }
        }