Отслеживание таблицы сообщества в Ektron

Я добавил одного пользователя в одну группу сообщества В Эктроне. В какой таблице в Эктроне хранится эта запись? Я также хочу знать, есть ли какие-либо изменения в записи таблицы, когда администратор удаляет этого пользователя из этой группы сообщества.


person Nimmi    schedule 12.11.2013    source источник


Ответы (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. Это значение соответствует типу папки Community в EkEnumerations:

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,
}

Идентификатор моей папки был 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 и настройте обработчики событий следующим образом:

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.

person Brian Oliver    schedule 12.11.2013
comment
Согласен с оговоркой. Практически никогда не бывает правильным делать прямой SQL-запрос к базе данных Ektron, особенно когда задействовано несколько таблиц. Было бы лучше, если бы ОП описывал, что им нужно сделать, чтобы их можно было направить в лучшем направлении. - person egandalf; 19.11.2013