Beispiel #1
0
        /// <summary>
        /// Performance tuned method for use in the tree
        /// </summary>
        /// <param Name="NodeId">The parentdocuments id</param>
        /// <returns></returns>
        public static Document[] GetChildrenForTree(int NodeId)
        {
            ArrayList tmp = new ArrayList();
            using (SqlDataReader dr =
                Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader(GlobalSettings.DbDSN, CommandType.Text,
                                        @"
create table #temp (contentId int, versionDate datetime)      
insert into #temp
select contentId, max(versionDate) 
from cmsContentVersion 
inner join umbracoNode on umbracoNode.id = cmsContentVersion.contentId and umbracoNode.parentId = @parentId
group by contentId

select 
	count(children.id) as children, umbracoNode.id, umbracoNode.uniqueId, umbracoNode.level, umbracoNode.parentId, cmsDocument.documentUser, umbracoNode.path, umbracoNode.sortOrder, isnull(publishCheck.published,0) as published, umbracoNode.createDate, cmsDocument.text, cmsDocument.updateDate, cmsContentVersion.versionDate, cmsContentType.icon
from umbracoNode 
left join umbracoNode children on children.parentId = umbracoNode.id
inner join cmsContent on cmsContent.nodeId = umbracoNode.id
inner join cmsContentType on cmsContentType.nodeId = cmsContent.contentType
inner join #temp on #temp.contentId = cmsContent.nodeId
inner join cmsContentVersion on cmsContentVersion.contentId = #temp.contentId and cmsContentVersion.versionDate = #temp.versionDate
inner join cmsDocument on cmsDocument.versionId = cmsContentversion.versionId
left join cmsDocument publishCheck on publishCheck.nodeId = cmsContent.nodeID and publishCheck.published = 1
where umbracoNode.parentID = @parentId 
group by umbracoNode.id, umbracoNode.uniqueId, umbracoNode.level, umbracoNode.parentId, cmsDocument.documentUser, umbracoNode.path, umbracoNode.sortOrder, isnull(publishCheck.published,0), umbracoNode.createDate, cmsDocument.text, cmsDocument.updateDate, cmsContentVersion.versionDate, cmsContentType.icon 
order by umbracoNode.sortOrder

drop table #temp


",
                                        new SqlParameter("@parentId", NodeId)))
            {
                while (dr.Read())
                {
                    Document d = new Document(int.Parse(dr["id"].ToString()), true);
                    bool _hc = false;
                    if (int.Parse(dr["children"].ToString()) > 0)
                        _hc = true;
                    d.SetupDocumentForTree(new Guid(dr["uniqueId"].ToString()), int.Parse((dr["level"].ToString())),
                                           int.Parse(dr["parentId"].ToString()),
                                           int.Parse(dr["documentUser"].ToString()),
                                           bool.Parse(dr["published"].ToString()),
                                           dr["path"].ToString(), dr["text"].ToString(),
                                           DateTime.Parse(dr["createDate"].ToString()),
                                           DateTime.Parse(dr["updateDate"].ToString()),
                                           DateTime.Parse(dr["versionDate"].ToString()), dr["icon"].ToString(), _hc);
                    tmp.Add(d);
                }
            }

            Document[] retval = new Document[tmp.Count];

            for (int i = 0; i < tmp.Count; i ++)
                retval[i] = (Document) tmp[i];

            return retval;
        }
Beispiel #2
0
        /// <summary>
        /// Performance tuned method for use in the tree
        /// </summary>
        /// <param Name="NodeId">The parentdocuments id</param>
        /// <returns></returns>
        public static Document[] GetChildrenForTree(int NodeId)
        {
            ArrayList tmp = new ArrayList();

            using (SqlDataReader dr =
                       Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader(GlobalSettings.DbDSN, CommandType.Text,
                                                                                @"
create table #temp (contentId int, versionDate datetime)      
insert into #temp
select contentId, max(versionDate) 
from cmsContentVersion 
inner join umbracoNode on umbracoNode.id = cmsContentVersion.contentId and umbracoNode.parentId = @parentId
group by contentId

select 
	count(children.id) as children, umbracoNode.id, umbracoNode.uniqueId, umbracoNode.level, umbracoNode.parentId, cmsDocument.documentUser, umbracoNode.path, umbracoNode.sortOrder, isnull(publishCheck.published,0) as published, umbracoNode.createDate, cmsDocument.text, cmsDocument.updateDate, cmsContentVersion.versionDate, cmsContentType.icon
from umbracoNode 
left join umbracoNode children on children.parentId = umbracoNode.id
inner join cmsContent on cmsContent.nodeId = umbracoNode.id
inner join cmsContentType on cmsContentType.nodeId = cmsContent.contentType
inner join #temp on #temp.contentId = cmsContent.nodeId
inner join cmsContentVersion on cmsContentVersion.contentId = #temp.contentId and cmsContentVersion.versionDate = #temp.versionDate
inner join cmsDocument on cmsDocument.versionId = cmsContentversion.versionId
left join cmsDocument publishCheck on publishCheck.nodeId = cmsContent.nodeID and publishCheck.published = 1
where umbracoNode.parentID = @parentId 
group by umbracoNode.id, umbracoNode.uniqueId, umbracoNode.level, umbracoNode.parentId, cmsDocument.documentUser, umbracoNode.path, umbracoNode.sortOrder, isnull(publishCheck.published,0), umbracoNode.createDate, cmsDocument.text, cmsDocument.updateDate, cmsContentVersion.versionDate, cmsContentType.icon 
order by umbracoNode.sortOrder

drop table #temp


",
                                                                                new SqlParameter("@parentId", NodeId)))
            {
                while (dr.Read())
                {
                    Document d   = new Document(int.Parse(dr["id"].ToString()), true);
                    bool     _hc = false;
                    if (int.Parse(dr["children"].ToString()) > 0)
                    {
                        _hc = true;
                    }
                    d.SetupDocumentForTree(new Guid(dr["uniqueId"].ToString()), int.Parse((dr["level"].ToString())),
                                           int.Parse(dr["parentId"].ToString()),
                                           int.Parse(dr["documentUser"].ToString()),
                                           bool.Parse(dr["published"].ToString()),
                                           dr["path"].ToString(), dr["text"].ToString(),
                                           DateTime.Parse(dr["createDate"].ToString()),
                                           DateTime.Parse(dr["updateDate"].ToString()),
                                           DateTime.Parse(dr["versionDate"].ToString()), dr["icon"].ToString(), _hc);
                    tmp.Add(d);
                }
            }

            Document[] retval = new Document[tmp.Count];

            for (int i = 0; i < tmp.Count; i++)
            {
                retval[i] = (Document)tmp[i];
            }

            return(retval);
        }