BxDolUpgradeController.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
  4. * CC-BY License - http://creativecommons.org/licenses/by/3.0/
  5. *
  6. * @defgroup DolphinUpgrade Dolphin Upgrade Script
  7. * @{
  8. */
  9. class BxDolUpgradeController {
  10. protected $oDb;
  11. protected $oUtil;
  12. function BxDolUpgradeController() {
  13. $this->oDb = new BxDolUpgradeDb();
  14. $this->oUtil = new BxDolUpgradeUtil($this->oDb);
  15. }
  16. function showAvailableUpgrades () {
  17. $aTemplateFolders = array ();
  18. $aFolders = $this->oUtil->readUpgrades();
  19. foreach ($aFolders as $sFolder) {
  20. $this->oUtil->setFolder($sFolder);
  21. $aTemplateFolders[$sFolder] = $this->oUtil->executeCheck ();
  22. }
  23. require (BX_UPGRADE_DIR_TEMPLATES . 'show_available_updates.php');
  24. }
  25. function runUpgrade ($sFolder) {
  26. // set current folder
  27. $this->oUtil->setFolder($sFolder);
  28. // precheck
  29. $mixedResult = $this->oUtil->executeCheck ();
  30. if (true !== $mixedResult) {
  31. $sTemplateMessage = $mixedResult;
  32. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  33. return;
  34. } else {
  35. $sTemplateMessage = "$sFolder upgrade can be applied";
  36. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  37. }
  38. // run system SQL upgrade
  39. $mixedResult = $this->oUtil->isExecuteSQLAvail ();
  40. if (true === $mixedResult) {
  41. $mixedResult = $this->oUtil->executeSQL ();
  42. if (true !== $mixedResult) {
  43. $sTemplateMessage = $mixedResult;
  44. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  45. return;
  46. } else {
  47. $sTemplateMessage = "System SQL script was successfully executed.";
  48. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  49. }
  50. } elseif (false === $mixedResult) {
  51. // just skip if not available found
  52. } else {
  53. $sTemplateMessage = $mixedResult;
  54. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  55. return;
  56. }
  57. // get list of available language files updates
  58. if (false === ($aLangs = $this->oUtil->readLangs ())) {
  59. $sTemplateMessage = 'Error reading the directory with language updates.';
  60. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  61. return;
  62. } else {
  63. $sTemplateMessage = 'The following languages will be affected for system: <br />';
  64. if (!$aLangs)
  65. $sTemplateMessage .= " - No languages will be affected.";
  66. else
  67. foreach ($aLangs as $sLang) {
  68. $sTemplateMessage .= ' - ' . $sLang . '<br />';
  69. }
  70. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  71. }
  72. // run system langs upgrade
  73. if ($aLangs) {
  74. $mixedResult = $this->oUtil->executeLangsAdd ();
  75. if (true !== $mixedResult) {
  76. $sTemplateMessage = $mixedResult;
  77. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  78. return;
  79. } else {
  80. $sTemplateMessage = "System language strings were successfully added.";
  81. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  82. }
  83. }
  84. // run system custom script upgrade
  85. $mixedResult = $this->oUtil->isExecuteScriptAvail ();
  86. if (true === $mixedResult) {
  87. $mixedResult = $this->oUtil->executeScript ();
  88. if (true !== $mixedResult) {
  89. $sTemplateMessage = $mixedResult;
  90. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  91. return;
  92. } else {
  93. $sTemplateMessage = "System after update custom script was successfully executed.";
  94. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  95. }
  96. } elseif (false === $mixedResult) {
  97. // just skip if not available found
  98. } else {
  99. $sTemplateMessage = $mixedResult;
  100. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  101. return;
  102. }
  103. // get list of modules updates
  104. if (false === ($aModules = $this->oUtil->readModules ())) {
  105. $sTemplateMessage = 'Error reading modules updates.';
  106. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  107. return;
  108. } else {
  109. $sTemplateMessage = 'The following modules will be updated: <br />';
  110. if (!$aModules)
  111. $sTemplateMessage .= " - No modules will be updated.";
  112. else
  113. foreach ($aModules as $sModule) {
  114. $sTemplateMessage .= ' - ' . $sModule . '<br />';
  115. }
  116. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  117. }
  118. foreach ($aModules as $sModule) {
  119. // run module SQL upgrade
  120. $mixedResult = $this->oUtil->isExecuteSQLAvail ($sModule);
  121. if (true === $mixedResult) {
  122. $mixedResult = $this->oUtil->executeSQL ($sModule);
  123. if (true !== $mixedResult) {
  124. $sTemplateMessage = $mixedResult;
  125. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  126. return;
  127. } else {
  128. $sTemplateMessage = "<b>$sModule</b> module SQL script was successfully executed.";
  129. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  130. }
  131. } elseif (false === $mixedResult) {
  132. // just skip if not available found
  133. } else {
  134. $sTemplateMessage = $mixedResult;
  135. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  136. return;
  137. }
  138. // get list of available language files updates
  139. if (false === ($aLangs = $this->oUtil->readLangs ($sModule))) {
  140. $sTemplateMessage = 'Error reading the directory with language updates.';
  141. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  142. return;
  143. } else {
  144. $sTemplateMessage = "The following languages will be affected for <b>$sModule</b> module: <br />";
  145. if (!$aLangs)
  146. $sTemplateMessage .= " - No languages will be affected.";
  147. else
  148. foreach ($aLangs as $sLang) {
  149. $sTemplateMessage .= ' - ' . $sLang . '<br />';
  150. }
  151. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  152. }
  153. // run module langs upgrade
  154. if ($aLangs) {
  155. $mixedResult = $this->oUtil->executeLangsAdd ($sModule);
  156. if (true !== $mixedResult) {
  157. $sTemplateMessage = $mixedResult;
  158. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  159. return;
  160. } else {
  161. $sTemplateMessage = "<b>$sModule</b> module language strings were successfully added.";
  162. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  163. }
  164. }
  165. // run module custom script upgrade
  166. $mixedResult = $this->oUtil->isExecuteScriptAvail ($sModule);
  167. if (true === $mixedResult) {
  168. $mixedResult = $this->oUtil->executeScript ($sModule);
  169. if (true !== $mixedResult) {
  170. $sTemplateMessage = $mixedResult;
  171. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  172. return;
  173. } else {
  174. $sTemplateMessage = "<b>$sModule</b> module after update custom script was successfully executed.";
  175. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  176. }
  177. } elseif (false === $mixedResult) {
  178. // just skip if not available
  179. } else {
  180. $sTemplateMessage = $mixedResult;
  181. require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
  182. return;
  183. }
  184. // run module custom script upgrade
  185. $sResult = $this->oUtil->executeConclusion ($sModule);
  186. if ($sResult) {
  187. $sTemplateMessage = $sResult;
  188. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  189. }
  190. }
  191. // run module custom script upgrade
  192. $sResult = $this->oUtil->executeConclusion ();
  193. if ($sResult) {
  194. $sTemplateMessage = $sResult;
  195. require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
  196. }
  197. }
  198. }
  199. /** @} */