private Content[] GetFeed2Private(string feedPath, bool onlyFiles, bool onlyFolders, int start, int limit)
{
Node container = GetNodeById(feedPath);
if (container == null) throw new NodeLoadException("Error loading path");
IFolder folder = container as IFolder;
if (folder == null) return new Content[] { };
IEnumerable<Node> nodeList;
NodeQuery query;
if (onlyFiles || onlyFolders)
{
nodeList = onlyFiles ?
from child in folder.Children where child is IFile select child :
from child in folder.Children where child is IFolder select child;
}
else
{
//nodeList = folder.Children;
if (start == 0 && limit == 0)
{
nodeList = folder.Children;
}
else
{
SmartFolder smartFolder = folder as SmartFolder;
if (folder is SmartFolder)
{
query = new NodeQuery();
string queryString = ((SmartFolder)folder).Query;
ExpressionList orExp = new ExpressionList(ChainOperator.Or);
if (!string.IsNullOrEmpty(queryString))
orExp.Add(NodeQuery.Parse(queryString));
orExp.Add(new IntExpression(IntAttribute.ParentId, ValueOperator.Equal, container.Id));
query.Add(orExp);
}
else
{
query = new NodeQuery();
query.Add(new IntExpression(IntAttribute.ParentId, ValueOperator.Equal, container.Id));
}
query.PageSize = limit;
query.StartIndex = start == 0 ? 1 : start;
nodeList = query.Execute().Nodes;
}
}
return nodeList.Select(node => new Content(node, false, false, false, false, start, limit)).ToArray();
}