По вопросу преобразования скобок.
При доскональном изучении ситуация прорисовалась так: для
каждого вновь создаваемого (или отредактированного) пользовательского ББ-кода
инструкция по преобразованию символов в их коды
записывается прямо в базу (и применяется оттуда каждый раз при создании сообщения с данным ББ-кодом). Преобразование скобок, кстати, предусмотрено только для лексемы {TEXT}. Сами инструкции формируются в файле includes/acp/acp_bbcodes.php.
Для предотвращения преобразования скобок надо найти в этом файле строку
Код: Выделить всё
'!(.*?)!es' => "str_replace(array(\"\\r\\n\", '\\\"', '\\'', '(', ')'), array(\"\\n\", '\"', ''', '(', ')'), trim('\$1'))"
и заменить ее на
Код: Выделить всё
'!(.*?)!es' => "str_replace(array(\"\\r\\n\", '\\\"', '\\''), array(\"\\n\", '\"', '''), trim('\$1'))"
Но, кроме этого, чтобы исправить инструкции в базе для имеющихся ББ-кодов, необходимо их пересохранить в админке.
В сообщениях испорченные ссылки можно исправить только редактированием либо прямым SQL-запросом к базе(который при большом количестве сообщений на форуме займет очень длительное время, хотя, опять же, можно в запрос добавить ограничение по дате сообщения, чтобы затронулись только недавние).