示例#1
0
        /// <summary>
        /// Constructs the XML source from the cmsContentXml table used for Media and Members.
        /// </summary>
        /// <param name="umbracoObjectType">an UmbracoObjectType value</param>
        /// <returns>XML built from the cmsContentXml table</returns>
        public static XmlDocument GetPublishedXml(UmbracoObjectType umbracoObjectType)
        {
            try
            {
                var hierarchy = new Dictionary <int, List <int> >();
                var nodeIndex = new Dictionary <int, XmlNode>();
                var xmlDoc    = new XmlDocument();
                var sql       = "SELECT umbracoNode.id, umbracoNode.parentId, umbracoNode.sortOrder, cmsContentXml.xml FROM umbracoNode INNER JOIN cmsContentXml ON cmsContentXml.nodeId = umbracoNode.id AND umbracoNode.nodeObjectType = @nodeObjectType ORDER BY umbracoNode.level, umbracoNode.sortOrder";

                using (var dr = uQuery.SqlHelper.ExecuteReader(sql, uQuery.SqlHelper.CreateParameter("@nodeObjectType", umbracoObjectType.GetGuid())))
                {
                    while (dr.Read())
                    {
                        var currentId = dr.GetInt("id");
                        var parentId  = dr.GetInt("parentId");
                        var xml       = dr.GetString("xml");

                        // and parse it into a DOM node
                        xmlDoc.LoadXml(xml);
                        nodeIndex.Add(currentId, xmlDoc.FirstChild);

                        // Build the content hierarchy
                        List <int> children;
                        if (!hierarchy.TryGetValue(parentId, out children))
                        {
                            // No children for this parent, so add one
                            children = new List <int>();
                            hierarchy.Add(parentId, children);
                        }

                        children.Add(currentId);
                    }

                    // Set top level wrapper element
                    switch (umbracoObjectType)
                    {
                    case UmbracoObjectType.Media:
                        xmlDoc.LoadXml("<Media id=\"-1\"/>");
                        break;

                    case UmbracoObjectType.Member:
                        xmlDoc.LoadXml("<Members id=\"-1\"/>");
                        break;

                    default:
                        xmlDoc.LoadXml("<Nodes id=\"-1\"/>");
                        break;
                    }

                    // Start building the content tree recursively from the root (-1) node
                    GenerateXmlDocument(hierarchy, nodeIndex, -1, xmlDoc.DocumentElement);

                    return(xmlDoc);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error <UmbracoHelper>("uQuery error", ex);
            }

            return(null);
        }
示例#2
0
		/// <summary>
		/// Constructs the XML source from the cmsContentXml table used for Media and Members.
		/// </summary>
		/// <param name="umbracoObjectType">an UmbracoObjectType value</param>
		/// <returns>XML built from the cmsContentXml table</returns>
		public static XmlDocument GetPublishedXml(UmbracoObjectType umbracoObjectType)
		{
			try
			{
				var hierarchy = new Dictionary<int, List<int>>();
				var nodeIndex = new Dictionary<int, XmlNode>();
				var xmlDoc = new XmlDocument();
				var sql = "SELECT umbracoNode.id, umbracoNode.parentId, umbracoNode.sortOrder, cmsContentXml.xml FROM umbracoNode INNER JOIN cmsContentXml ON cmsContentXml.nodeId = umbracoNode.id AND umbracoNode.nodeObjectType = @nodeObjectType ORDER BY umbracoNode.level, umbracoNode.sortOrder";

				using (var dr = uQuery.SqlHelper.ExecuteReader(sql, uQuery.SqlHelper.CreateParameter("@nodeObjectType", umbracoObjectType.GetGuid())))
				{
					while (dr.Read())
					{
						var currentId = dr.GetInt("id");
						var parentId = dr.GetInt("parentId");
						var xml = dr.GetString("xml");

						// and parse it into a DOM node
						xmlDoc.LoadXml(xml);
						nodeIndex.Add(currentId, xmlDoc.FirstChild);

						// Build the content hierarchy
						List<int> children;
						if (!hierarchy.TryGetValue(parentId, out children))
						{
							// No children for this parent, so add one
							children = new List<int>();
							hierarchy.Add(parentId, children);
						}

						children.Add(currentId);
					}

					// Set top level wrapper element
					switch (umbracoObjectType)
					{
						case UmbracoObjectType.Media:
							xmlDoc.LoadXml("<Media id=\"-1\"/>");
							break;

						case UmbracoObjectType.Member:
							xmlDoc.LoadXml("<Members id=\"-1\"/>");
							break;

						default:
							xmlDoc.LoadXml("<Nodes id=\"-1\"/>");
							break;
					}

					// Start building the content tree recursively from the root (-1) node
					GenerateXmlDocument(hierarchy, nodeIndex, -1, xmlDoc.DocumentElement);

					return xmlDoc;
				}
			}
			catch (Exception ex)
			{
                LogHelper.Error<UmbracoHelper>("uQuery error", ex);
			}

			return null;
		}