using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using FLocal.Core; using FLocal.Common; namespace FLocal.IISHandler.handlers.request.maintenance { class CleanCacheHandler : AbstractNewMessageHandler { protected override string templateName { get { return "result/maintenance/CacheCleaned.xslt"; } } protected override XElement[] Do(WebContext context) { if(context.account.user.name != Config.instance.AdminUserName) { throw new FLocalException("access denied"); } string table = context.httprequest.Form["table"].Trim(); int start = int.Parse(context.httprequest.Form["start"]); int length = int.Parse(context.httprequest.Form["length"]); ISqlObjectTableSpec tableSpec = TableManager.TABLES[table]; foreach(int id in Enumerable.Range(start, length)) { try { if(tableSpec is IComplexSqlObjectTableSpec) { ((IComplexSqlObjectTableSpec)tableSpec).refreshSqlObjectAndRelated(id); } else { tableSpec.refreshSqlObject(id); } } catch(NotFoundInDBException) { } } return new XElement[] { }; } } }