Activate.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\Core\App\Controllers\Instances\Addon;
  3. use ThurData\Servers\KerioEmail\Core\App\Controllers\Interfaces\AddonController;
  4. use ThurData\Servers\KerioEmail\Core\DependencyInjection;
  5. use ThurData\Servers\KerioEmail\Core\Helper\DatabaseHelper;
  6. use ThurData\Servers\KerioEmail\Core\ModuleConstants;
  7. use ThurData\Servers\KerioEmail\Core\ServiceLocator;
  8. /**
  9. * Activate module actions
  10. */
  11. class Activate extends \ThurData\Servers\KerioEmail\Core\App\Controllers\Instances\AddonController implements AddonController
  12. {
  13. /**
  14. * @var null|DatabaseHelper
  15. */
  16. protected $databaseHelper = null;
  17. public function execute($params = [])
  18. {
  19. try
  20. {
  21. //Before module activation
  22. $return = ServiceLocator::call(\ThurData\Servers\KerioEmail\Core\Configuration\Addon\Activate\Before::class)->execute($params);
  23. if (!isset($return['status']))
  24. {
  25. $return['status'] = 'success';
  26. }
  27. //module activation process
  28. $return = $this->activate($return);
  29. //After module activation
  30. $return = ServiceLocator::call(\ThurData\Servers\KerioEmail\Core\Configuration\Addon\Activate\After::class)->execute($return);
  31. return $return;
  32. }
  33. catch (\Exception $exc)
  34. {
  35. ServiceLocator::call(\ThurData\Servers\KerioEmail\Core\HandlerError\ErrorManager::class)->addError(self::class, $exc->getMessage(), $return);
  36. return [
  37. 'status' => 'error',
  38. 'description' => $exc->getMessage()
  39. ];
  40. }
  41. }
  42. protected function activate($params = [])
  43. {
  44. $this->databaseHelper = DependencyInjection::call(DatabaseHelper::class);
  45. if ($params['status'] === 'error')
  46. {
  47. return $params;
  48. }
  49. $isErrorCore = $this->databaseHelper->performQueryFromFile(ModuleConstants::getFullPath('core', 'Database', 'schema.sql'));
  50. $isErrorApp = $this->databaseHelper->performQueryFromFile(ModuleConstants::getFullPath('app', 'Database', 'schema.sql'));
  51. $isErrorDataCore = $this->databaseHelper->performQueryFromFile(ModuleConstants::getFullPath('core', 'Database', 'data.sql'));
  52. $isErrorDataApp = $this->databaseHelper->performQueryFromFile(ModuleConstants::getFullPath('app', 'Database', 'data.sql'));
  53. if ($isErrorCore || $isErrorDataCore || $isErrorApp || $isErrorDataApp)
  54. {
  55. return ['status' => 'error', 'description' => ServiceLocator::call('errorManager')->getFirstError()->getMessage()];
  56. }
  57. return ['status' => 'success'];
  58. }
  59. }