我在 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
wherefolder_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 扩展的概念结合起来,并像这样设置事件处理程序:
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 。