/*
Kooboo is a content management system based on ASP.NET MVC framework. Copyright 2009 Yardi Technology Limited.
This program is free software: you can redistribute it and/or modify it under the terms of the
GNU General Public License version 3 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program.
If not, see http://www.kooboo.com/gpl3/.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Everest.Library.ExtensionMethod;
using Everest.Library.Web;
using Everest.Library.IO;
using Everest.CmsServices.MvcHelper;
using System.IO;
namespace Everest.CmsServices.Search{
/// <summary>
///
/// </summary>
public class ExtendedFieldValue
{
public ExtendedFieldValue(string fieldName, object fieldValue, string inputControlType)
{
this.FieldName = fieldName;
this.FieldValue = fieldValue;
if (inputControlType.Equals("File", StringComparison.InvariantCultureIgnoreCase)
|| inputControlType.Equals("DownloadableFile", StringComparison.InvariantCultureIgnoreCase))
{
IsFileField = true;
}
}
public string FieldName { get; private set; }
public object FieldValue { get; private set; }
public bool IsFileField { get; private set; }
}
/// <summary>
///
/// </summary>
public class SearchedContent
{
public SearchedContent()
{
this.ExtendedFields = new List<ExtendedFieldValue>();
}
public string Title { get; set; }
public int ContentId { get; set; }
public Guid ContentUUID { get; set; }
public string UserKey { get; set; }
public string Application { get; set; }
public Guid SchemaUUID { get; set; }
public Guid FolderUUID { get; set; }
public Guid OriginalFolderUUID { get; set; }
public string UserName { get; set; }
public Guid? BaseUUID { get; set; }
public Guid OriginalUUID { get; set; }
public DateTime PostDate { get; set; }
public DateTime? ModifiedDate { get; set; }
public string Categories { get; set; }
public string Applications { get; set; }
private string indexedBody;
/// <summary>
/// Gets or sets the indexed body.
/// </summary>
/// <value>The indexed body.</value>
public string IndexedBody
{
get
{
if (StringExtensions.IsNullOrEmptyTrim(indexedBody))
{
StringBuilder indexedBuilder = new StringBuilder();
foreach (var item in this.ExtendedFields)
{
if (item.FieldValue != null && !string.IsNullOrEmpty(item.FieldValue.ToString()))
{
var value = item.FieldValue.ToString();
// index file content
if (item.IsFileField)
{
var path = UrlConvertor.MapPath(value);
value = Path.GetFileName(path) + " " + ContentDocument.ReadAsText(path);
}
indexedBuilder.AppendFormat("{0} ", value.Trim());
}
}
//indexedBuilder.AppendFormat("{0} ", Title);
//if (!StringExtensions.IsNullOrEmptyTrim(UserKey))
//{
// indexedBuilder.AppendFormat("{0} ", UserKey);
//}
//indexedBuilder.AppendFormat("{0} ", UserName);
//indexedBuilder.AppendFormat("{0} ", PostDate.ToString());
//indexedBuilder.AppendFormat("{0} ", ModifiedDate.ToString());
if (!StringExtensions.IsNullOrEmptyTrim(Categories))
{
indexedBuilder.AppendFormat("{0} ", Categories);
}
if (!StringExtensions.IsNullOrEmptyTrim(ChildContentText))
{
indexedBuilder.AppendFormat("{0} ", ChildContentText);
}
//index all attachments
ContentService contentService = new ContentService("");
var contentAttachments = contentService.GetAttachments(this.ContentId);
foreach (var att in contentAttachments)
{
indexedBuilder.AppendFormat("{0} {1} ", Path.GetFileName(att.FilePath), ContentDocument.ReadAsText(UrlConvertor.MapPath(att.FilePath)).Trim());
}
indexedBody = indexedBuilder.ToString().StripHtmlXmlTags();
}
return indexedBody;
}
internal set
{
indexedBody = value;
}
}
public string HighlightedBody
{
get;
internal set;
}
public string HighlightedTitle { get; set; }
internal IList<ExtendedFieldValue> ExtendedFields { get; set; }
internal string ChildContentText { get; set; }
/// <summary>
/// Gets or sets the URL.
/// </summary>
/// <value>The URL.</value>
public string Url { get; set; }
}
}
|