/*
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 System.Data;
using Everest.CmsServices.Models;
using Everest.Library.ExtensionMethod;
namespace Everest.CmsServices.DataRule{
public class TextContentObjectEvaluator : TextContentEvaluator
{
public TextContentObjectEvaluator(Cms_Folder folder, IEnumerable<Cms_Folder> baseFolders)
: base(folder, baseFolders)
{
}
#region IDataRuleValueExpression Members
public override object Evaluate(DataRuleContext context, Cms_DataRule dataRule, TimeSpan? cacheTime)
{
var folderSchema = CachedData.GetSchemaByFolder(Folder.UUID);
var queryDictionary = context.QueryString.ToDictionary();
var contentValues = context.ContentProvider.TextContentQuerier.QueryContents(context.DataContext, dataRule.ValueRule
, dataRule.OrderBy, queryDictionary, Folder, this.BaseFolders, 0, 1, cacheTime).FirstOrDefault();
if (contentValues != null && dataRule.IncludeChildren != null && dataRule.IncludeChildren.Value == true)
{
if (!StringExtensions.IsNullOrEmptyTrim(folderSchema.ChildSchemas))
{
string[] schemaUUIDGroup = folderSchema.ChildSchemas.Split(',');
foreach (var strSchemaUUID in schemaUUIDGroup)
{
Cms_Schema schema = CachedData.GetSchema(new Guid(strSchemaUUID));
contentValues[schema.SchemaName] = context.ContentProvider.TextContentQuerier.QuerySubContents(context.DataContext,
"", "", queryDictionary, schema, (Guid)contentValues["UUID"], 0, 999, cacheTime);
}
}
}
return contentValues;
}
#endregion
#region IDataRuleValueExpression Members
public override DataRuleValueType RuleType
{
get { return DataRuleValueType.Object; }
}
#endregion
}
}
|