public bool ModifyMessage(PageInfo page, int id, string username, string subject, DateTime dateTime, string body)
{
if(page == null) throw new ArgumentNullException("page");
if(id < 0) throw new ArgumentOutOfRangeException("Invalid Message ID", "id");
if(username == null) throw new ArgumentNullException("username");
if(username.Length == 0) throw new ArgumentException("Username cannot be empty", "username");
if(subject == null) throw new ArgumentNullException("subject");
if(subject.Length == 0) throw new ArgumentException("Subject cannot be empty", "subject");
if(body == null) throw new ArgumentNullException("body"); // body can be empty
lock(this) {
if(LoadLocalPageInfo(page) == null) return false;
List<Message> messages = new List<Message>(GetMessages(page));
Message msg = FindMessage(messages, id);
if(msg == null) return false;
// Update search engine index
UnindexMessage(page, id, msg.Subject, msg.DateTime, msg.Body);
msg.Username = username;
msg.Subject = subject;
msg.DateTime = dateTime;
msg.Body = body;
DumpMessages(page, messages);
// Update search engine index
IndexMessage(page, id, subject, dateTime, body);
}
return true;
}