【问题标题】:Tracking Community Table in Ektron在 Ektron 中跟踪社区表
【发布时间】:2013-11-12 09:10:19
【问题描述】:

我在 Ektron 的一个社区组中添加了一个用户。在 Ektron 的哪个表中保留了此条目? 我也想知道当管理员从该社区组中删除该用户时是否有任何表条目更改。

【问题讨论】:

    标签: ektron


    【解决方案1】:

    首先阅读我的警告 - 大约在答案的一半。底线:如果可能,您最好使用 API。如果这似乎不可行,请与 Ektron 支持人员合作,以便他们了解用例并尝试将其应用于产品的未来版本!

    使用 Ektron v9.0 sp1,我发现了以下内容:

    此 SQL 脚本为您提供社区组的定义:

    SELECT * FROM community_group_tbl WHERE group_id = 1
    

    此表中的一个字段是folder_id。如果您使用它在content_folder_tbl 中查找相应记录,您应该会找到folder_type 等于6 的记录。该值对应于EkEnumerations 中的Community 文件夹类型:

    public enum FolderType
    {
        Content = 0,
        Blog = 1,
        Domain = 2,
        DiscussionBoard = 3,
        DiscussionForum = 4,
        Root = 5,
        Community = 6,
        Media = 7,
        Calendar = 8,
        Catalog = 9,
        Program = 14,
    }
    

    我的文件夹 id 是 80,所以我使用了这个 SQL:

    SELECT * FROM content_folder_tbl WHERE folder_id = 80
    

    我还注意到taxonomy_tbl中有一条记录,其中folder_id等于80:

    SELECT * FROM taxonomy_tbl WHERE folder_id = 80
    SELECT * FROM taxonomy_tbl WHERE taxonomy_parent_id = (SELECT TOP 1 taxonomy_id FROM taxonomy_tbl WHERE folder_id = 80)
    

    但是,我必须承认——我无法在数据库中找到完整的成员名单。我找到了一个名为 user_to_group_tbl 的表,但它似乎只有属于该组的 CMS 用户,而成员用户显然存储在其他地方。

    现在需要注意的是:您确定要直接在数据库中查找所有这些内容吗?我知道在某些情况下它可能是最好的方法,但是查找越复杂,直接 SQL 查询的风险就越大。选择内容块或分类文件夹相对简单,但这种查找看起来已经很复杂。涉及多个表,您将绕过 Ektron 已内置到其 API 中的所有业务逻辑。

    此 API 代码将获取社区组中的所有用户:

        var cgm = new CommunityGroupManager();
        var users = cgm.GetUserList(1);
    
        foreach (var directoryUser in users)
        {
            Response.Write(directoryUser.Id + " - " + directoryUser.Username + "<br/>");
        }
    

    您可以将此代码与CMS Extensions 的概念结合起来,并像这样设置事件处理程序:

    public class UserGroupCustomExtension : UserGroupStrategy
    {
        public override void OnAfterAddUserGroup(Ektron.Cms.UserGroupData userGroupData, CmsEventArgs eventArgs)
        {
            base.OnAfterAddUserGroup(userGroupData, eventArgs);
    
            if (userGroupData.GroupType == (int) Ektron.Cms.Common.EkEnumeration.GroupType.CommunityGroup)
            {
                // do stuff here...
            }
        }
    }
    

    我不确定您正在寻找的确切事件当前是否可用,但您可以利用很多。如果您需要的活动不可用,请务必将其作为功能请求发布在他们的开发者论坛中:http://developer.ektron.com/Forums/?v=f&f=107

    【讨论】:

    • 同意警告。对 Ektron 数据库执行直接 SQL 查询几乎从来都不是正确的想法,尤其是在涉及多个表时。如果 OP 能够描述他们需要完成的工作,这样他们就可以被引导到最佳方向,这会更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多