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