И какую страницу надо обновлять? Наверное, программы угадывать желания не умеют, им надо явным образом указать id документа, который требуется обновить.
Кстати, $modx->clearCache, несмотря на название, в действительности должным образом кэш не чистит.
Ужас!!! Чтобы узнать, существует ли страница с номером $id, не надо делать запросы к базе, можно определить примерно так
if (isset($modx->aliasListing[$id]))
или так
if (in_array($id, $modx->documentListing))
кроме того не надо дублировать одинаковые вещи и что-то добавлять. Если при выполнении new Document в качестве параметра передать 0, то будет генерироваться новый документ, а если не ноль, то будет заменен конкретный документ, и $doc->Set(’id’,$u[’firmid’]) не нужно. При этом, если создан новый документ, надо узнать его ID и записать в данные пользователя, что не делается, так что работать правильно все равно не должно.
Кстати, а что вообще такое $u[’firmid’] и откуда оно берется?
Да что мне ругаться – мне, в общем-то, безразлично. Просто такие программы заведомо ведут к трудно отлавливаемым ошибкам. Добавление в таблицу MySQL происходит не с номером на единицу большим максимального, а в соответствии со значением Auto_increment, которое в общем случае не всегда на единицу больше максимального. Нормальным считается получение ID после добавления записи, то есть получить значение $doc->fields[’id’] после сохранения, а также можно пользоваться напрямую API MODx. В принципе можно заранее узнать значение Auto_increment, но если между его получением и использованием пройдет какое-то время, есть вероятность, что кто-то другой добавит запись в таблицу и значение изменится.