0

Ektron の 1 つのコミュニティ グループに 1 人のユーザーを追加しました。Ektron のどのテーブルにこのエントリが保持されますか? また、管理者がそのコミュニティ グループからそのユーザーを削除すると、テーブル エントリが変更されるかどうかも知りたいです。

4

1 に答える 1

1

最初に私の警告を読んでください - 答えの約半分まで。結論: 可能であれば、API を使用したほうがよいでしょう。それが不可能と思われる場合は、Ektron サポートと協力して、ユース ケースを認識し、製品の将来のバージョンで使用できるようにします。

Ektron v9.0 sp1 を使用して、次のことがわかりました。

この SQL スクリプトは、コミュニティ グループの定義を提供します。

SELECT * FROM community_group_tbl WHERE group_id = 1

このテーブルのフィールドの 1 つが ですfolder_id。これを使用して で対応するレコードを検索すると、 が 6 に等しいcontent_folder_tblレコードが見つかるはずです。この値は、EkEnumerations のコミュニティ フォルダ タイプに対応しています。folder_type

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_tblwhere folder_idis equal to 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 ) に機能リクエストとして投稿してください。

于 2013-11-12T15:39:06.927 に答える