PHPShop Modules Update

Материал из PHPShop

Перейти к: навигация, поиск

Модули поддерживают возможность обновления своей БД. При установке версия модуля пишется в таблицу "phpshop_modules_имя модуля_system" в поле "version" (1.0, 1.1 и т.д.). Версия файлов модуля указывается в install/module.xml тег <version>. Если версия файлов отличается от версии базы данных (БД), то в закладки информации по модулю будет соответствующая запись о расхождении версий БД с кнопкой "Обновить".

Modules update doc.JPG

По клику на кнопку "Обновить" срабатывает функция поиска папки с предыдущей версии модуля (поле "version") в папке /updates/. Если в таблице вообще не указана версия модуля, то берется в обработку папка /updates/default. В папке обновления находится файл SQL обновления БД с именем update_module.sql. Пример содержания файла:

ALTER TABLE `phpshop_modules_returncall_system` ADD `windows` enum('0','1') NOT NULL DEFAULT '0';

После выполнения update_module.sql номер модуля обновится в таблице "phpshop_modules_имя модуля_system", поле "version". Будет присвоен текущий номер файлов из конфигурации install/module.xml тег <version>.

Для возможности проверки и установки обновления модуля требуется внести в файл настройки модуля admpanel/adm_module.php изменения:

  • Изменить в функции форму регистрации
// Форма регистрации
$Tab3 = $PHPShopGUI->setPay($serial, false, $version, true);
  • Добавить функцию обновления
// Обновление версии модуля
function actionBaseUpdate() {
    global $PHPShopModules, $PHPShopOrm;
    $PHPShopOrm->clean();
    $option = $PHPShopOrm->select();
    $new_version = $PHPShopModules->getUpdate($option['version']);
    $PHPShopOrm->clean();
    $action = $PHPShopOrm->update(array('version_new' => $new_version));
    return $action;
}