Settings.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <?php
  2. namespace ModulesGarden\Servers\ZimbraEmail\App\Libs\Migrations\Drivers\Version1To2;
  3. use ModulesGarden\Servers\ZimbraEmail\App\Helpers\ZimbraManager;
  4. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Repository\ClassOfServices;
  5. /**
  6. * Class Settings
  7. * User: Nessandro
  8. * Date: 2019-11-12
  9. * Time: 19:47
  10. */
  11. class Settings
  12. {
  13. /**
  14. * @var string
  15. */
  16. protected $fromTable = 'mg_prodConfig';
  17. /**
  18. * @var string
  19. */
  20. protected $toTable = '';
  21. /**
  22. * @return string
  23. */
  24. public function getFromTable()
  25. {
  26. return $this->fromTable;
  27. }
  28. /**
  29. * @param $key
  30. * @param $value
  31. * @return array
  32. */
  33. public function unsupported($key, $value)
  34. {
  35. if(strpos($key, 'cos_') === 0)
  36. {
  37. $name = str_replace('cos_', 'cosQuota_', $key);
  38. return [$name, $value];
  39. }
  40. }
  41. /**
  42. * @return array
  43. */
  44. public function getMapped()
  45. {
  46. return [
  47. 'acc_limit' => 'acc_limit',
  48. 'acc_size' => 'acc_size',
  49. 'alias_limit' => 'alias_limit',
  50. 'cos_name' => 'cos_name',
  51. 'dist_list_limit' => 'dist_list_limit',
  52. 'domainMaxSize' => 'domainMaxSize',
  53. 'domain_alias_limit' => 'domain_alias_limit',
  54. 'filterAccountsByCOS' => 'filterAccountsByCOS',
  55. 'login_link' => 'login_link',
  56. 'useCos', //todo ?
  57. 'zimbraDumpsterEnabled' => 'zimbraDumpsterEnabled',
  58. 'zimbraDumpsterPurgeEnabled' => 'zimbraDumpsterPurgeEnabled',
  59. 'zimbraFeatureAdvancedSearchEnabled' => 'zimbraFeatureAdvancedSearchEnabled',
  60. 'zimbraFeatureBriefcasesEnabled' => 'zimbraFeatureBriefcasesEnabled',
  61. 'zimbraFeatureCalendarEnabled' => 'zimbraFeatureCalendarEnabled',
  62. 'zimbraFeatureCalendarReminderDeviceEmailEnabled' => 'zimbraFeatureCalendarReminderDeviceEmailEnabled',
  63. 'zimbraFeatureChangePasswordEnabled',
  64. 'zimbraFeatureContactsEnabled',
  65. 'zimbraFeatureConversationsEnabled',
  66. 'zimbraFeatureDistributionListFolderEnabled',
  67. 'zimbraFeatureEwsEnabled',
  68. 'zimbraFeatureExportFolderEnabled',
  69. 'zimbraFeatureFiltersEnabled',
  70. 'zimbraFeatureFlaggingEnabled',
  71. 'zimbraFeatureGalAutoCompleteEnabled',
  72. 'zimbraFeatureGalEnabled',
  73. 'zimbraFeatureGroupCalendarEnabled',
  74. 'zimbraFeatureHtmlComposeEnabled',
  75. 'zimbraFeatureIdentitiesEnabled',
  76. 'zimbraFeatureImapDataSourceEnabled',
  77. 'zimbraFeatureImportFolderEnabled',
  78. 'zimbraFeatureInitialSearchPreferenceEnabled',
  79. 'zimbraFeatureMailEnabled',
  80. 'zimbraFeatureMailPriorityEnabled',
  81. 'zimbraFeatureMailSendLaterEnabled',
  82. 'zimbraFeatureManageZimlets',
  83. 'zimbraFeatureMAPIConnectorEnabled',
  84. 'zimbraFeatureNewMailNotificationEnabled',
  85. 'zimbraFeatureOptionsEnabled',
  86. 'zimbraFeatureOutOfOfficeReplyEnabled',
  87. 'zimbraFeaturePeopleSearchEnabled',
  88. 'zimbraFeaturePop3DataSourceEnabled',
  89. 'zimbraFeatureReadReceiptsEnabled',
  90. 'zimbraFeatureSavedSearchesEnabled',
  91. 'zimbraFeatureSharingEnabled',
  92. 'zimbraFeatureSkinChangeEnabled',
  93. 'zimbraFeatureSMIMEEnabled',
  94. 'zimbraFeatureTaggingEnabled',
  95. 'zimbraFeatureTasksEnabled',
  96. 'zimbraFeatureTouchClientEnabled',
  97. 'zimbraFeatureWebClientOfflineAccessEnabled',
  98. 'zimbraImapEnabled',
  99. 'zimbraPop3Enabled',
  100. 'zimbraPrefMailForwardingAddress',
  101. 'zimbraPrefMailLocalDeliveryDisabled',
  102. 'zimbraFeatureMailForwardingEnabled',
  103. ];
  104. }
  105. /**
  106. * @param $params
  107. * @return mixed
  108. */
  109. public function updateValues($params, $prodId)
  110. {
  111. foreach($params as $key => $value)
  112. {
  113. if(strpos($key, 'cos_') === 0 && $key !== 'cos_name')
  114. {
  115. $name = str_replace('cos_', '', $key);
  116. $cos[$name] = $value;
  117. unset($params[$key]);
  118. }
  119. }
  120. if($cos)
  121. {
  122. $params['cos'] = json_encode($cos);
  123. }
  124. /**
  125. * update cosName
  126. *
  127. */
  128. $defaultTypes = [
  129. ClassOfServices::CUSTOM_ZIMBRA,
  130. ClassOfServices::ZIMBRA_CONFIG_OPTIONS,
  131. ClassOfServices::CLASS_OF_SERVICE_QUOTA,
  132. ];
  133. /**
  134. *
  135. *
  136. */
  137. if(!in_array($params['cos_name'], $defaultTypes))
  138. {
  139. $manager = new ZimbraManager();
  140. $repository = $manager->getApiByProduct($prodId)->soap->repository();
  141. $cosList = $repository->cos->all();
  142. /**
  143. * class of services from API
  144. */
  145. foreach ($cosList as $cos)
  146. {
  147. /**
  148. * @var $cos \ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\ClassOfService
  149. */
  150. $cosList[$cos->getName()] = $cos->getId();
  151. }
  152. $params['cos_name'] = $cosList[$params['cos_name']];
  153. }
  154. return $params;
  155. }
  156. /**
  157. *
  158. * return new fields as name => default value
  159. *
  160. * @return array
  161. */
  162. public function getNewFields()
  163. {
  164. return [
  165. 'clientAreaFeaturesLeft' => 'on',
  166. 'ca_emailAccountPage' => 'on',
  167. 'ca_ressourcePage' => 'on',
  168. 'ca_distributionListPage' => 'on',
  169. 'ca_goToWebmailPage' => 'on',
  170. 'clientAreaFeaturesRight' => 'on',
  171. 'ca_emailAliasesPage' => 'on',
  172. 'ca_domainAliasesPage' => 'on',
  173. ];
  174. }
  175. }