Условно:
старое название:
vendor nameновое название:
newvendor newnameДля этого требуется:
- Переименовать структуру папок в соответствии с новыми именами
newvendorиnewname - Изменить в файлах расширения все вхождения
vendorиnameнаnewvendorиnewname:- Изменить имя расширения в
composer.json- значение поляnameнаnewvendor/newname - Изменить в
namespaceв файлах все вхожденияvendor\nameнаnewvendor\newname - Изменить название расширения во всех местах, где обращение к нему жестко прописано, с
vendor\nameнаnewvendor\newname - Изменить в именах сервисов и маршрутов все сочетания
vendor.nameнаnewvendor.newnameв файлах конфигурации - Изменить в путях к классам сервисов все сочетания
vendor\nameнаnewvendor\newnameв файлах конфигурации - Изменить вхождения имени расширения в
infoфайлах модулей администраторского, модераторского, личного разделов, добавляемых расширением (если они есть), в том числе ключи'filename'и'auth' - Изменить вхождения имени расширения в пути классов миграций-зависимостей в функции
depends_on()в файлах миграций - Изменить вхождения
@vendor_extnameв PHP скриптах (в определениях шаблонов и языковых файлов) и в файлах стилей (если они есть) - Изменить имена событий (либо добавить такие же, но с новыми именами, а старые события пометить как
@deprecated)
Чтобы это сделать, надо заменить все вхождения во всех файлах:vendor.nameнаnewvendor.newnamevendor/nameнаnewvendor/newnamevendor\nameнаnewvendor\newnamevendor_nameнаnewvendor_newname
- Изменить имя расширения в
- Заменить имя расширения в таблицах
notification_types,ext,modulesиmigrations. Прототип функции для файлаext.php(использовать в функцииenable_step(), пример использования):Код: Выделить всё
/** * Rename extension * * @param string Old vendor/name * @param string New vendor/name * @return null */ function rename_extension($old_name, $new_name) { // For some fields vendor\name is used instead of vendor/name $old_name_revert_separator = str_replace('/', '\\', $old_name); $new_name_revert_separator = str_replace('/', '\\', $new_name); $db = $this->container->get('dbal.conn'); $db->sql_transaction('begin'); $sql_migrations = 'UPDATE ' . MIGRATIONS_TABLE . " SET migration_name = REPLACE(migration_name, '" . $db->sql_escape($old_name_revert_separator) . "', '" . $db->sql_escape($new_name_revert_separator) . "'), migration_depends_on = REPLACE(migration_depends_on, '" . $db->sql_escape($old_name_revert_separator) . "', '" . $db->sql_escape($new_name_revert_separator) . "')"; $db->sql_query($sql_migrations); $sql_modules = 'UPDATE ' . MODULES_TABLE . " SET module_basename = REPLACE(module_basename, '" . $db->sql_escape($old_name_revert_separator) . "', '" . $db->sql_escape($new_name_revert_separator) . "'), module_auth = REPLACE(module_auth, '" . $db->sql_escape($old_name) . "', '" . $db->sql_escape($new_name) . "')"; $db->sql_query($sql_modules); $sql_ext = 'UPDATE ' . EXT_TABLE . " SET ext_name = REPLACE(ext_name, '" . $db->sql_escape($old_name) . "', '" . $db->sql_escape($new_name) . "')"; $db->sql_query($sql_ext); $sql_notification_types = 'UPDATE ' . NOTIFICATION_TYPES_TABLE . " SET notification_type_name = REPLACE(notification_type_name, '" . $db->sql_escape(str_replace('/', '.', $old_name)) . "', '" . $db->sql_escape(str_replace('/', '.', $new_name)) . "')"; $db->sql_query($sql_notification_types); $db->sql_transaction('commit'); $cache = $this->container->get('cache'); $cache->purge(); }
Замечания и дополнения приветствуются.


