Как найти всю активность за определенный промежуток времени для всего семейства сайтов, например за последние 24 часа? - PullRequest
1 голос
/ 19 августа 2010

Я пытаюсь составить список всех действий для всего семейства сайтов за промежуток времени, скажем, за последние 60 минут или последние 24 часа. Активность - это все, что было изменено / создано / оценено и т. Д. И каким пользователем это было сделано. Один из способов заключается в том, чтобы перебрать все силы паутиной, затем составить списки, затем предметы и найти то, что изменилось или было создано. Например:

    foreach(SPWeb web in site.AllWebs)
{
   foreach(SPList list in web.Lists)
   {
    foreach(SPListItem item in list.GetItems())
    {
        // log what has been created/modified
    }
   }
}

Но должен быть лучший, более эффективный подход. Есть ли где-нибудь, что регистрирует всю активность за последние 24 часа? Есть ли в базе данных что-то, что я могу нажать (конечно, только для чтения), чтобы показать все это действие.

1 Ответ

0 голосов
/ 20 августа 2010

Это даст вам все, что было создано или изменено за последний день:

SPSiteDataQuery query = new SPSiteDataQuery();
query.Webs = "<Webs Scope=\"Recursive\" />";
query.Query = "<Where><Gt><FieldRef Name='Modified' /><Value Type='DateTime'><Today OffsetDays='-1' /></Value></Gt></Where>"
query.Lists = "<Lists BaseType=\"0\" />"; // for doc libs use: "<Lists BaseType=\"1\" />"
DataTable dt = web.GetSiteData(query);

Это может быть расширено для запроса переменных интервалов времени (и, возможно, для включения оценок?).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...