BxDolUpgradeCron.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. setParam('sys_revision', getParam('sys_revision') + 1);
  27. // write upgrade log
  28. $oController->writeLog();
  29. // send email notification
  30. bx_import('BxDolLanguages');
  31. sendMailTemplateSystem('t_UpgradeSuccess', array (
  32. 'new_version' => bx_get_ver(true),
  33. 'conclusion' => $oController->getConclusion() ? _t('_sys_upgrade_conclusion', $oController->getConclusion()) : '',
  34. ));
  35. // if next upgrade is available (in case of bulk upgrade) then schedule to run it upon next cron run
  36. $sUpgradeDir = pathinfo(__FILE__, PATHINFO_DIRNAME);
  37. if ($oController->getAvailableUpgrade()) {
  38. $oUpgrader = bx_instance('BxDolUpgrader');
  39. $oUpgrader->setTransientUpgradeCronJob($sUpgradeDir);
  40. } elseif (0 === strpos($sUpgradeDir, BX_DIRECTORY_PATH_TMP)) {
  41. @bx_rrmdir($sUpgradeDir);
  42. }
  43. }
  44. $oController->setMaintenanceMode(false);
  45. }
  46. // if something went grong during upgrade
  47. if ($sErrorMsg = $oController->getErrorMsg()) {
  48. // write upgrade log
  49. $oController->writeLog();
  50. // send email notification
  51. sendMailTemplateSystem('t_UpgradeFailed', array (
  52. 'error_msg' => $sErrorMsg,
  53. ));
  54. // disable auto-upgrade if it is failed
  55. setParam('sys_autoupdate', '');
  56. }
  57. else { // run modules update after successful system upgrade
  58. bx_import('BxDolCronQuery');
  59. BxDolCronQuery::getInstance()->addTransientJobClass('sys_perform_upgrade_modules', 'BxDolCronUpgradeModulesCheck', 'inc/classes/BxDolCronUpgradeModulesCheck.php');
  60. }
  61. }
  62. }
  63. /** @} */