Если отредактировать ocmod-дополнение, содержащее в теге <link> & , то в 'modification_backup' запишется '&', а не '&', из-за чего при попытке восстановления из бекапа получим
Warning: DOMDocument::loadXML(): EntityRef: expecting ';' in Entity, line: 6 in /{path_to_site}/admin/controller/extension/modification.php on line 460Notice: Trying to get property 'textContent' of non-object in /{path_to_site}/admin/controller/extension/modification.php on line 463
Fatal error: Uncaught Error: Call to a member function getElementsByTagName() on null in /{path_to_site}/admin/controller/extension/modification.php:473 Stack trace: #0 /{path_to_site}/admin/controller/extension/modification.php(79): ControllerExtensionModification->refresh() #1 /{path_to_site}/system/storage/modification/system/engine/action.php(51): ControllerExtensionModification->restore() #2 /{path_to_site}/admin/controller/startup/router.php(26): Action->execute(Object(Registry), Array) #3 /{path_to_site}/system/storage/modification/system/engine/action.php(51): ControllerStartupRouter->index() #4 /{path_to_site}/system/engine/front.php(34): Action->execute(Object(Registry)) #5 /{path_to_site}/system/engine/front.php(29): Front->execute(Object(Action)) #6 /home/ in /{path_to_site}/admin/controller/extension/modification.php on line 473
Это можно проверить на этом моде
Решение: перед записью в таблицу 'modification_backup' нужно заменять внутри xml в <link>...</link> '&', на '&
Заменять нужно только внутри тега <link>, остальные места в xml не трогать.
Пока с ходу кроме как распарсивать xml и делать замену в нужном месте, больше ничего в голову не приходит.