Пример #1
0
        public static SearchFolder Create(ContentQuery query)
        {
            var folder = new SearchFolder
            {
                Children = query.Execute().Nodes.ToArray()
            };

            return(folder);
        }
Пример #2
0
        private FieldValidationResult ValidateWithQuery(List <Node> list, ContentQuery query)
        {
            var        x      = query.Execute();
            List <int> idList = x.Identifiers.ToList();

            idList.Sort();
            foreach (Node node in list)
            {
                if (!idList.Contains(node.Id))
                {
                    var result = new FieldValidationResult(QueryName);
                    result.AddParameter("Path", node.Path);
                    return(result);
                }
            }
            return(FieldValidationResult.Successful);
        }
Пример #3
0
        public bool HasApprovingItems()
        {
            var hasPermission = false;
            var cq            = new ContentQuery();

            cq.Text = "+InFolder:/Root/Sites/Default_Site/Book_Rental_Demo_Site/News* +Approvable:yes +Type:newsarticle";
            var result   = cq.Execute(ExecutionHint.ForceIndexedEngine);
            int i        = 0;
            var nodeList = result.Nodes.ToList();
            var count    = nodeList.Count;

            while (!hasPermission && i < count)
            {
                hasPermission |= nodeList[i].Security.HasPermission(PermissionType.Approve);
                i++;
            }
            return(hasPermission);
        }
Пример #4
0
        /// <summary>
        /// Gets the groups.
        /// </summary>
        /// <returns>List of group nodes.</returns>
        private List <Node> GetGroups()
        {
            var groups = new List <Node>();

            if (!String.IsNullOrEmpty(GroupQuery))
            {
                var sort     = new[] { new SortInfo("Name") };
                var settings = new QuerySettings {
                    EnableAutofilters = FilterStatus.Disabled, EnableLifespanFilter = FilterStatus.Disabled, Sort = sort
                };
                var query = new ContentQuery {
                    Text = GroupQuery, Settings = settings
                };
                query.AddClause(string.Format("-Path:({0})", string.Join(" ", Identifiers.SpecialGroupPaths)));
                var results = query.Execute();
                groups.AddRange(results.Nodes);
            }
            return(groups);
        }
Пример #5
0
        /// <summary>
        /// Gets the groups.
        /// </summary>
        /// <returns>List of group nodes.</returns>
        private List <Node> GetGroups()
        {
            var groups = new List <Node>();

            if (!String.IsNullOrEmpty(GroupQuery))
            {
                var sort = new[] { new SortInfo {
                                       FieldName = "Name"
                                   } };
                var settings = new QuerySettings {
                    EnableAutofilters = false, EnableLifespanFilter = false, Sort = sort
                };
                var query = new ContentQuery {
                    Text = GroupQuery, Settings = settings
                };
                query.AddClause(string.Format("-Name:({0})", string.Join(" ", RepositoryConfiguration.SpecialGroupNames)));
                var results = query.Execute();
                groups.AddRange(results.Nodes);
            }
            return(groups);
        }
Пример #6
0
        internal void WriteQueryResult(PortalContext portalContext, OData.ODataRequest req)
        {
            var settings = new QuerySettings {
                Top = req.Top, Skip = req.Skip, Sort = req.Sort
            };
            var contentQuery = new ContentQuery {
                Settings = settings, Text = req.ContentQueryText
            };

            if (req.RepositoryPath != Repository.RootPath)
            {
                contentQuery.AddClause("InTree:\"" + req.RepositoryPath + "\"");
            }

            var result = contentQuery.Execute();

            var contents  = new List <Dictionary <string, object> >();
            var projector = Projector.Create(req, true);

            foreach (var node in result.Nodes)
            {
                var content = Content.Create(node);
                var fields  = CreateFieldDictionary(content, portalContext, projector);
                contents.Add(fields);
            }
            var count = req.InlineCount == InlineCount.AllPages ? result.Count : contents.Count;

            if (req.CountOnly)
            {
                WriteCount(portalContext, count);
            }
            else
            {
                WriteMultipleContent(portalContext, contents, count);
            }
        }
Пример #7
0
        private IEnumerable <ISecurityContainer> GetAdminGroups()
        {
            var ag = new List <ISecurityContainer>();

            if (string.IsNullOrEmpty(this.Groups))
            {
                return(ag);
            }

            var ags = this.Groups.Split(new[] { ',', ';', ' ' }, StringSplitOptions.RemoveEmptyEntries);

            using (new SystemAccount())
            {
                foreach (var agName in ags)
                {
                    try
                    {
                        if (agName.StartsWith("/Root/"))
                        {
                            var group = Node.LoadNode(agName) as ISecurityContainer;
                            if (group != null)
                            {
                                ag.Add(group);
                            }
                        }
                        else
                        {
                            ContentQuery cq             = null;
                            var          nameParts      = agName.Split(new[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
                            var          containerTypes = new[] { "Group", "OrganizationalUnit" };
                            switch (nameParts.Length)
                            {
                            case 0:
                                break;

                            case 1:
                                // load group or OU only by name
                                cq = ContentQuery.CreateQuery(ContentRepository.SafeQueries.TypeIsAndName, null, containerTypes, nameParts[0]);
                                break;

                            default:
                                // load group or OU by domain and name
                                var domain = ContentQuery.Query(ContentRepository.SafeQueries.TypeIsAndName, null, "Domain", nameParts[0]).Nodes.FirstOrDefault();
                                if (domain != null)
                                {
                                    cq = ContentQuery.CreateQuery(ContentRepository.SafeQueries.InTreeAndTypeIsAndName, null,
                                                                  domain.Path, containerTypes, nameParts[1]);
                                }
                                break;
                            }

                            if (cq != null)
                            {
                                ag.AddRange(cq.Execute().Nodes.Cast <ISecurityContainer>());
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        SnLog.WriteException(ex);
                    }
                }
            }

            return(ag);
        }
Пример #8
0
        private IEnumerable <ISecurityContainer> GetAdminGroups()
        {
            var ag = new List <ISecurityContainer>();

            if (string.IsNullOrEmpty(this.Groups))
            {
                return(ag);
            }

            var ags = this.Groups.Split(new [] { ',', ';', ' ' }, StringSplitOptions.RemoveEmptyEntries);

            using (new SystemAccount())
            {
                foreach (var agName in ags)
                {
                    try
                    {
                        if (agName.StartsWith("/Root/"))
                        {
                            var group = Node.LoadNode(agName) as ISecurityContainer;
                            if (group != null)
                            {
                                ag.Add(group);
                            }
                        }
                        else
                        {
                            ContentQuery cq        = null;
                            const string queryText = "+TypeIs:(Group OrganizationalUnit) +Name:{0}";
                            var          nameParts = agName.Split(new[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);

                            switch (nameParts.Length)
                            {
                            case 0:
                                break;

                            case 1:
                                //load group or OU only by name
                                cq = ContentQuery.CreateQuery(string.Format(queryText, nameParts[0]));
                                break;

                            default:
                                //load group or OU by domain and name
                                var domain = ContentQuery.Query("+TypeIs:Domain +Name:" + nameParts[0]).Nodes.FirstOrDefault();
                                if (domain != null)
                                {
                                    cq = ContentQuery.CreateQuery(string.Format(queryText, nameParts[1]));
                                    cq.AddClause("InTree:\"" + domain.Path + "\"");
                                }
                                break;
                            }

                            if (cq != null)
                            {
                                ag.AddRange(cq.Execute().Nodes.Cast <ISecurityContainer>());
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.WriteException(ex);
                    }
                }
            }

            return(ag);
        }