BxDolUpgradeCron.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup UnaUpgrade UNA Upgrade Script
  7. * @{
  8. */
  9. $aPathInfo = pathinfo(__FILE__);
  10. $aPathInfo['dirname'] = str_replace("\\", "/", $aPathInfo['dirname']); // fix Windows path
  11. define ('BX_UPGRADE_DIR_UPGRADES', $aPathInfo['dirname'] . '/files/');
  12. require_once($aPathInfo['dirname'] . '/classes/BxDolUpgradeController.php');
  13. require_once($aPathInfo['dirname'] . '/classes/BxDolUpgradeUtil.php');
  14. require_once($aPathInfo['dirname'] . '/classes/BxDolUpgradeDb.php');
  15. bx_import('BxDolCron');
  16. bx_import('BxDolLanguages');
  17. bx_import('BxDolEmailTemplates');
  18. class BxDolUpgradeCron extends BxDolCron
  19. {
  20. public function processing()
  21. {
  22. $oController = new BxDolUpgradeController();
  23. if ($oController->setMaintenanceMode(true)) {
  24. // if upgrade was successful
  25. if (($sFolder = $oController->getAvailableUpgrade()) && $oController->runUpgrade($sFolder)) {
  26. // write upgrade log
  27. $oController->writeLog();
  28. // send email notification
  29. bx_import('BxDolLanguages');
  30. sendMailTemplateSystem('t_UpgradeSuccess', array (
  31. 'new_version' => bx_get_ver(true),
  32. 'conclusion' => $oController->getConclusion() ? _t('_sys_upgrade_conclusion', $oController->getConclusion()) : '',
  33. ));
  34. // if next upgrade is available (in case of bulk upgrade) then schedule to run it upon next cron run
  35. $sUpgradeDir = pathinfo(__FILE__, PATHINFO_DIRNAME);
  36. if ($oController->getAvailableUpgrade()) {
  37. $oUpgrader = bx_instance('BxDolUpgrader');
  38. $oUpgrader->setTransientUpgradeCronJob($sUpgradeDir);
  39. } elseif (0 === strpos($sUpgradeDir, BX_DIRECTORY_PATH_TMP)) {
  40. @bx_rrmdir($sUpgradeDir);
  41. }
  42. }
  43. $oController->setMaintenanceMode(false);
  44. }
  45. // if something went grong during upgrade
  46. if ($sErrorMsg = $oController->getErrorMsg()) {
  47. // write upgrade log
  48. $oController->writeLog();
  49. // send email notification
  50. sendMailTemplateSystem('t_UpgradeFailed', array (
  51. 'error_msg' => $sErrorMsg,
  52. ));
  53. // disable auto-upgrade if it is failed
  54. setParam('sys_autoupdate', '');
  55. }
  56. else { // run modules update after successful system upgrade
  57. bx_import('BxDolCronQuery');
  58. BxDolCronQuery::getInstance()->addTransientJobClass('sys_perform_upgrade_modules', 'BxDolCronUpgradeModulesCheck', 'inc/classes/BxDolCronUpgradeModulesCheck.php');
  59. }
  60. }
  61. }
  62. /** @} */