public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo modInfo, DateTime beginDate)
{
string partition = (string)modInfo.ModuleSettings["Partitioning"];
int partModuleId = -1;
int partPortalId = -1;
switch (partition)
{
case "1":
partModuleId = modInfo.ModuleID;
break;
case "2":
partPortalId = modInfo.PortalID;
break;
case "3":
partPortalId = modInfo.PortalID;
partModuleId = modInfo.ModuleID;
break;
}
var searchDocuments = new List<SearchDocument>();
LocaleController lc = new LocaleController();
Dictionary<string, Locale> loc = lc.GetLocales(modInfo.PortalID);
foreach (KeyValuePair<string, Locale> item in loc)
{
string cultureCode = item.Value.Culture.Name;
List<StoryInfo> stories = DbController.Instance.GetStories(partModuleId, partPortalId, "STORY", cultureCode, false).ToList();
foreach (StoryInfo story in stories)
{
DateTime lastmodified = ((DateTime)story.LastModifiedOnDate).ToUniversalTime();
if (lastmodified > beginDate.ToUniversalTime() && lastmodified < DateTime.UtcNow)
{
var strContent = HtmlUtils.Clean(story.Story, false);
// Get the description string
var description = strContent.Length <= 500 ? strContent : HtmlUtils.Shorten(strContent, 500, "...");
var searchDoc = new SearchDocument
{
UniqueKey = story.StoryId.ToString(),
PortalId = modInfo.PortalID,
ModuleId = modInfo.ModuleID,
ModuleDefId = modInfo.ModuleDefID,
Title = story.Title,
Description = description,
Body = strContent,
ModifiedTimeUtc = lastmodified,
AuthorUserId = (story.CreatedByUserID ?? -1),
CultureCode = cultureCode,
IsActive = (story.StartDate == null || story.StartDate < DateTime.Now) && (story.EndDate == null || story.EndDate + new TimeSpan(1, 0, 0, 0) >= DateTime.Now),
SearchTypeId = 1,
QueryString = "#view/"+story.StoryId.ToString()
};
if (modInfo.Terms != null && modInfo.Terms.Count > 0)
{
searchDoc.Tags = CollectHierarchicalTags(modInfo.Terms);
}
searchDocuments.Add(searchDoc);
}
}
}
return searchDocuments;
}