Jump to content

Модули: обновление версий


Recommended Posts

Просветите:

1. как правильно программировать обновление для модулей.

Т.е., например, выпускается новая версия. У кого-то этот модуль уже стоял и требуется только обновить с предыдущей версии или еще более ранней версии, у кого-то его не было вообще. Соответственно и шаги необходимо предпринимать разные.

Есть какой-то внутренний механизм? И еще, при загрузке новой версии плагина что происходит со старой? она анинсталируется или просто затирается новыми файлами и как тогда запустить необходимые для апдейта действия?

2. в "Модулях" есть кнопка "включить/отключить". ее нажатие пользователем становится известно модулю? например, для каких-то необходимых модулю действию.

 

Спасибо.

Link to comment
Share on other sites

  • 2 weeks later...

Я лично плохо понял о чем речь :)

 

Насколько я понимаю, механизм обновления может быть вшит в модуль его разработчиком. Общего правила для этого нет, каждый модуль - индивидуальная программа, и работает так, как задумал его создатель. Так для стандартных модулей вообще не предусмотрен механизм обновления: вы же не будете обновлять модуль блока текстовых ссылок?

 

Для чего вы вообще интересуетесь?

 

Если я верно понял, то вы спрашиваете, есть ли централизованная база управления модуля, управляющая им на всех сайтах, где этот модуль установлен. Не представляю себе такой монстро-модуль, поэтому ответ "нет" (и я вряд ли ошибаюсь).

Link to comment
Share on other sites

Ну а вообще обновление обычно происходит путем замещения файлов, которых эти изменения коснулись. Если в новой версии изменился файл mymodule.php, то обновится только он.

Link to comment
Share on other sites

Обновление с версии 1 до версии 2 может отличаться от обновления с версии 0.5 и от первой установки. Соответственно простая замена может не прокатить.

Следовательно, модуль надо именно "обновлять".

Link to comment
Share on other sites

Вы так и не сказали с какой целью интересуетесь. Я думаю вам вряд ли кто поможет, потому что неясно, чего вы вообще хотите добиться.

Link to comment
Share on other sites

Да в общем-то в вопросах вроде половина ответа читается =)

Цель:

правильная работа модуля при инсталляции, обновлении, а также включении/отключении.

 

Мне просто интересны мнения тех кто делал:

1. Обновления модулей. - Неужели возможен только вариант Деинсталляции старой версии, а затем инсталляции новой?!

Ну допустим выяснить, что у пользователя уже была ранее установлена какая-то версия можно: просто оставлять запись в таблице конфигураций. Это, если говорить о пути Деинсталляция-Инсталляция. Хотя кривизна все равно та еще - например модуль предполагает создание таблиц, при деинсталляции их придется оставить, потому что возможно, что это просто обновление. А может человек действительно собирался полностью отказаться от модуля - весь мусор в БД остается? Страшный сон юзеров... =)

2. Включение/Отключение - если модуль использует для своих целей немного переделанные базовые сущности (классы и контроллеры) системы, то при Инсталляции помещает их в Override, и все прекрасно работает. При Деинсталляции прекрасно их оттуда удаляет - и тоже все прекрасно работает дальше. Но что делать при Отключении модуля? Надо же как-то отлавливать этот момент, например, чтобы просто убрать из Override установленные модулем расширения базовых сущностей.

 

С какой целью всем этим интересуюсь?

Можно на все это "забить" и оставить это на пользователей - "Сам ставил этот глючный модуль - сам теперь и разбирайся".

Можно ему (пользователю) немного помочь - все это описать и рассказать, что делать и где чинить.

 

Но хочется невозможного - сделать все как надо. =)

Link to comment
Share on other sites

1. Сохраняйте номер версии модуля в конфигурации и проверяйте его в модуле, если у модуля версия более новая, чем записано в конфиге запускайте процедуру обновления.

2. Если вы при инсталляции помещаете файлы в Override, то нет ничего сложного, чтобы закинуть туда измененный класс модулей, который будет уведомлять о включени и выключении. А вообще модуль за пределами своей папки ничего изменять не должен. При правильной установке прав у него просто не будет прав на запись в эту папку.

Link to comment
Share on other sites

Спасибо, sors!

По поводу включения и выключения Вы подтолкнули в нужную сторону. Их действительно можно перекрыть в самом модуле, и нет никакой необходимости перекрывать класс модулей в Override.

 

И еще один вопрос в догонку этой темы:

на строке модулей есть кнопка Инсталлировать/Деинсталлировать - с ней все понятно.

Но есть еще ссылка "Удалить", которая полностью сносит весь каталог с модулем.

Не знаете ли Вы, вызывает ли она перед этим Деинсталляцию или, может быть, Отключение?

Хотелось бы защититься от такого грубого удаления без зачистки следов модуля.

 

Спасибо.

Link to comment
Share on other sites

×
×
  • Create New...