Stored Procedures [dbo].[Forum_Forum_GetAllByParentID]
Properties
PropertyValue
ANSI Nulls OnYes
Quoted Identifier OnYes
Parameters
NameData TypeMax Length (Bytes)
@ParentIDint4
@GroupIDint4
@EnabledOnlybit1
SQL Script


CREATE PROCEDURE dbo.[Forum_Forum_GetAllByParentID]
    (
      @ParentID INT,
      @GroupID INT,
      @EnabledOnly BIT
    )
AS
    IF @EnabledOnly = 1
        BEGIN
            SELECT  G.GroupID,
                    G.ModuleID,
                    F.ForumID,
                    F.IsActive,
                    F.ParentID,
                    F.Name,
                    F.[Description],
                    F.CreatedDate,
                    F.CreatedByUser,
                    F.UpdatedByUser,
                    F.UpdatedDate,
                    F.IsModerated,
                    F.SortOrder,
                    F.PostsToModerate,
                    F.ForumType,
                    F.PublicView,
                    F.PublicPosting,
                    F.EnableForumsThreadStatus,
                    F.EnableForumsRating,
                    F.ForumBehavior,
                    F.AllowPolls,
                    F.EnableRSS,
                    F.EmailAddress,
                    F.EmailFriendlyFrom,
                    F.NotifyByDefault,
                    F.EmailStatusChange,
                    F.EmailServer,
                    F.EmailUser,
                    F.EmailPass,
                    F.EmailEnableSSL,
                    F.EmailAuth,
                    F.EmailPort,
                    F.EnableSitemap,
                    F.SitemapPriority,
                    CASE WHEN ( SELECT  COUNT(ForumID)
                                FROM    dbo.Forum_Forums
                                WHERE   ParentID = F.ForumID
                              ) > 0
                         THEN ( SELECT TOP 1
                                        P.PostID
                                FROM    dbo.Forum_Forums FF
                                        INNER JOIN dbo.Forum_Threads T ON FF.ForumId = T.ForumID
                                        INNER JOIN dbo.Forum_Posts P ON T.LastPostedPostID = P.PostID
                                WHERE   FF.ParentID = F.ForumID
                                ORDER BY P.CreatedDate DESC
                              )
                         ELSE ( F.MostRecentPostID )
                    END AS MostRecentPostID,
                    ( SELECT    COUNT(ForumID)
                      FROM      dbo.Forum_Forums
                      WHERE     ParentID = F.ForumID
                    ) AS SubForums,
                    CASE WHEN ( SELECT  COUNT(ForumID)
                                FROM    dbo.Forum_Forums
                                WHERE   ParentID = F.ForumID
                              ) > 0 THEN ( SELECT   SUM(TotalPosts)
                                           FROM     dbo.Forum_Forums
                                           WHERE    ParentID = F.ForumID
                                         )
                         ELSE F.TotalPosts
                    END AS [TotalPosts],
                    CASE WHEN ( SELECT  COUNT(ForumID)
                                FROM    dbo.Forum_Forums
                                WHERE   ParentID = F.ForumID
                              ) > 0 THEN ( SELECT   SUM(TotalThreads)
                                           FROM     dbo.Forum_Forums
                                           WHERE    ParentID = F.ForumID
                                         )
                         ELSE F.TotalThreads
                    END AS TotalThreads,
                    CASE WHEN LEFT(LOWER(ForumLink), 6) = 'fileid'
                         THEN ( SELECT  Folder + FileName
                                FROM    dbo.Files
                                WHERE   'fileid='
                                        + CONVERT(VARCHAR, dbo.Files.FileID) = [ForumLink]
                              )
                         ELSE ForumLink
                    END AS ForumLink,
                    ( SELECT    COUNT(ForumID)
                      FROM      dbo.Forum_Forums F
                                INNER JOIN dbo.Forum_Groups G ON F.GroupID = G.GroupID
                      WHERE     F.[ParentID] = @ParentID
                                AND F.[GroupID] = @GroupID
                                AND F.IsActive = 1
                    ) AS TotalRecords
            FROM    dbo.Forum_Forums F
                    INNER JOIN dbo.Forum_Groups G ON F.GroupID = G.GroupID
            WHERE   F.[ParentID] = @ParentID
                    AND F.[GroupID] = @GroupID
                    AND F.IsActive = 1
            ORDER BY F.[SortOrder]
        END
    ELSE
        BEGIN
            SELECT  G.GroupID,
                    G.ModuleID,
                    F.ForumID,
                    F.IsActive,
                    F.ParentID,
                    F.Name,
                    F.[Description],
                    F.CreatedDate,
                    F.CreatedByUser,
                    F.UpdatedByUser,
                    F.UpdatedDate,
                    F.IsModerated,
                    F.SortOrder,
                    F.PostsToModerate,
                    F.ForumType,
                    F.PublicView,
                    F.PublicPosting,
                    F.EnableForumsThreadStatus,
                    F.EnableForumsRating,
                    F.ForumBehavior,
                    F.AllowPolls,
                    F.EnableRSS,
                    F.EmailAddress,
                    F.EmailFriendlyFrom,
                    F.NotifyByDefault,
                    F.EmailStatusChange,
                    F.EmailServer,
                    F.EmailUser,
                    F.EmailPass,
                    F.EmailEnableSSL,
                    F.EmailAuth,
                    F.EmailPort,
                    F.EnableSitemap,
                    F.SitemapPriority,
                    CASE WHEN ( SELECT  COUNT(ForumID)
                                FROM    dbo.Forum_Forums
                                WHERE   ParentID = F.ForumID
                              ) > 0
                         THEN ( SELECT TOP 1
                                        P.PostID
                                FROM    dbo.Forum_Forums FF
                                        INNER JOIN dbo.Forum_Threads T ON FF.ForumId = T.ForumID
                                        INNER JOIN dbo.Forum_Posts P ON T.LastPostedPostID = P.PostID
                                WHERE   FF.ParentID = F.ForumID
                                ORDER BY P.CreatedDate DESC
                              )
                         ELSE ( F.MostRecentPostID )
                    END AS MostRecentPostID,
                    ( SELECT    COUNT(ForumID)
                      FROM      dbo.Forum_Forums
                      WHERE     ParentID = F.[ForumID]
                    ) AS [SubForums],
                    CASE WHEN ( SELECT  COUNT(ForumID)
                                FROM    dbo.Forum_Forums
                                WHERE   ParentID = F.[ForumID]
                              ) > 0 THEN ( SELECT   SUM([TotalPosts])
                                           FROM     dbo.Forum_Forums
                                           WHERE    ParentID = F.[ForumID]
                                         )
                         ELSE F.[TotalPosts]
                    END AS [TotalPosts],
                    CASE WHEN ( SELECT  COUNT(ForumID)
                                FROM    dbo.Forum_Forums
                                WHERE   ParentID = F.[ForumID]
                              ) > 0 THEN ( SELECT   SUM([TotalThreads])
                                           FROM     dbo.Forum_Forums
                                           WHERE    ParentID = F.[ForumID]
                                         )
                         ELSE F.[TotalThreads]
                    END AS [TotalThreads],
                    CASE WHEN LEFT(LOWER([ForumLink]), 6) = 'fileid'
                         THEN ( SELECT  Folder + FileName
                                FROM    dbo.Files
                                WHERE   'fileid='
                                        + CONVERT(VARCHAR, dbo.Files.FileID) = [ForumLink]
                              )
                         ELSE [ForumLink]
                    END AS ForumLink,
                    ( SELECT    COUNT(ForumID)
                      FROM      dbo.Forum_Forums F
                                INNER JOIN dbo.Forum_Groups G ON F.GroupID = G.GroupID
                      WHERE     F.[ParentID] = @ParentID
                                AND F.[GroupID] = @GroupID
                                AND F.IsActive = 1
                    ) AS TotalRecords
            FROM    dbo.Forum_Forums F
                    INNER JOIN dbo.Forum_Groups G ON F.GroupID = G.GroupID
            WHERE   F.[ParentID] = @ParentID
                    AND F.[GroupID] = @GroupID
            ORDER BY F.[SortOrder]
        END

GO
Uses