Trial.php 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588
  1. <?php
  2. namespace Dotdigitalgroup\Email\Controller\Adminhtml\Connector;
  3. class Trial extends \Magento\Backend\App\Action
  4. {
  5. /**
  6. * Authorization level of a basic admin session
  7. *
  8. * @see _isAllowed()
  9. */
  10. const ADMIN_RESOURCE = 'Dotdigitalgroup_Email::config';
  11. /**
  12. * @var \Magento\Framework\Stdlib\DateTime\Timezone
  13. */
  14. public $localeDate;
  15. /**
  16. * @var \Dotdigitalgroup\Email\Helper\Data
  17. */
  18. public $helper;
  19. /**
  20. * @var \Magento\Framework\HTTP\PhpEnvironment\ServerAddress
  21. */
  22. private $serverAddress;
  23. /**
  24. * @var \Dotdigitalgroup\Email\Model\Trial\TrialSetup
  25. */
  26. private $trialSetup;
  27. /**
  28. * @var array
  29. */
  30. private $timeZones = [
  31. ['MageTimeZone' => 'Australia/Darwin', 'MicrosoftTimeZoneIndex' => '250'],
  32. ['MageTimeZone' => 'Australia/Melbourne', 'MicrosoftTimeZoneIndex' => '260'],
  33. ['MageTimeZone' => 'Australia/Sydney', 'MicrosoftTimeZoneIndex' => '260'],
  34. ['MageTimeZone' => 'Asia/Kabul', 'MicrosoftTimeZoneIndex' => '175'],
  35. ['MageTimeZone' => 'America/Anchorage', 'MicrosoftTimeZoneIndex' => '003'],
  36. ['MageTimeZone' => 'America/Juneau', 'MicrosoftTimeZoneIndex' => '003'],
  37. ['MageTimeZone' => 'America/Nome', 'MicrosoftTimeZoneIndex' => '003'],
  38. ['MageTimeZone' => 'America/Sitka', 'MicrosoftTimeZoneIndex' => '003'],
  39. ['MageTimeZone' => 'America/Yakutat', 'MicrosoftTimeZoneIndex' => '003'],
  40. ['MageTimeZone' => 'Asia/Aden', 'MicrosoftTimeZoneIndex' => '150'],
  41. ['MageTimeZone' => 'Asia/Bahrain', 'MicrosoftTimeZoneIndex' => '150'],
  42. ['MageTimeZone' => 'Asia/Kuwait', 'MicrosoftTimeZoneIndex' => '150'],
  43. ['MageTimeZone' => 'Asia/Qatar', 'MicrosoftTimeZoneIndex' => '150'],
  44. ['MageTimeZone' => 'Asia/Riyadh', 'MicrosoftTimeZoneIndex' => '150'],
  45. ['MageTimeZone' => 'Asia/Dubai', 'MicrosoftTimeZoneIndex' => '165'],
  46. ['MageTimeZone' => 'Asia/Muscat', 'MicrosoftTimeZoneIndex' => '165'],
  47. ['MageTimeZone' => 'Etc/GMT-4', 'MicrosoftTimeZoneIndex' => '165'],
  48. ['MageTimeZone' => 'Asia/Baghdad', 'MicrosoftTimeZoneIndex' => '165'],
  49. ['MageTimeZone' => 'America/Argentina/La_Rioja', 'MicrosoftTimeZoneIndex' => '070'],
  50. ['MageTimeZone' => 'America/Argentina/Rio_Gallegos', 'MicrosoftTimeZoneIndex' => '070'],
  51. ['MageTimeZone' => 'America/Argentina/Salta', 'MicrosoftTimeZoneIndex' => '070'],
  52. ['MageTimeZone' => 'America/Argentina/San_Juan', 'MicrosoftTimeZoneIndex' => '070'],
  53. ['MageTimeZone' => 'America/Argentina/San_Luis', 'MicrosoftTimeZoneIndex' => '070'],
  54. ['MageTimeZone' => 'America/Argentina/Tucuman', 'MicrosoftTimeZoneIndex' => '070'],
  55. ['MageTimeZone' => 'America/Argentina/Ushuaia', 'MicrosoftTimeZoneIndex' => '070'],
  56. ['MageTimeZone' => 'America/Buenos_Aires', 'MicrosoftTimeZoneIndex' => '070'],
  57. ['MageTimeZone' => 'America/Catamarca', 'MicrosoftTimeZoneIndex' => '070'],
  58. ['MageTimeZone' => 'America/Cordoba', 'MicrosoftTimeZoneIndex' => '070'],
  59. ['MageTimeZone' => 'America/Jujuy', 'MicrosoftTimeZoneIndex' => '070'],
  60. ['MageTimeZone' => 'America/Mendoza', 'MicrosoftTimeZoneIndex' => '070'],
  61. ['MageTimeZone' => 'America/Glace_Bay', 'MicrosoftTimeZoneIndex' => '050'],
  62. ['MageTimeZone' => 'America/Goose_Bay', 'MicrosoftTimeZoneIndex' => '050'],
  63. ['MageTimeZone' => 'America/Halifax', 'MicrosoftTimeZoneIndex' => '050'],
  64. ['MageTimeZone' => 'America/Moncton', 'MicrosoftTimeZoneIndex' => '050'],
  65. ['MageTimeZone' => 'America/Thule', 'MicrosoftTimeZoneIndex' => '050'],
  66. ['MageTimeZone' => 'Atlantic/Bermuda', 'MicrosoftTimeZoneIndex' => '050'],
  67. ['MageTimeZone' => 'Asia/Baku', 'MicrosoftTimeZoneIndex' => '170'],
  68. ['MageTimeZone' => 'America/Scoresbysund', 'MicrosoftTimeZoneIndex' => '080'],
  69. ['MageTimeZone' => 'Atlantic/Azores', 'MicrosoftTimeZoneIndex' => '080'],
  70. ['MageTimeZone' => 'America/Bahia', 'MicrosoftTimeZoneIndex' => '065'],
  71. ['MageTimeZone' => 'Asia/Dhaka', 'MicrosoftTimeZoneIndex' => '195'],
  72. ['MageTimeZone' => 'Asia/Thimphu', 'MicrosoftTimeZoneIndex' => '195'],
  73. ['MageTimeZone' => 'America/Regina', 'MicrosoftTimeZoneIndex' => '025'],
  74. ['MageTimeZone' => 'America/Swift_Current', 'MicrosoftTimeZoneIndex' => '025'],
  75. ['MageTimeZone' => 'Atlantic/Cape_Verde', 'MicrosoftTimeZoneIndex' => '083'],
  76. ['MageTimeZone' => 'Etc/GMT+1', 'MicrosoftTimeZoneIndex' => '083'],
  77. ['MageTimeZone' => 'Asia/Yerevan', 'MicrosoftTimeZoneIndex' => '170'],
  78. ['MageTimeZone' => 'Australia/Adelaide', 'MicrosoftTimeZoneIndex' => '250'],
  79. ['MageTimeZone' => 'Australia/Broken_Hill', 'MicrosoftTimeZoneIndex' => '250'],
  80. ['MageTimeZone' => 'America/Belize', 'MicrosoftTimeZoneIndex' => '033'],
  81. ['MageTimeZone' => 'America/Costa_Rica', 'MicrosoftTimeZoneIndex' => '033'],
  82. ['MageTimeZone' => 'America/El_Salvador', 'MicrosoftTimeZoneIndex' => '033'],
  83. ['MageTimeZone' => 'America/Guatemala', 'MicrosoftTimeZoneIndex' => '033'],
  84. ['MageTimeZone' => 'America/Managua', 'MicrosoftTimeZoneIndex' => '033'],
  85. ['MageTimeZone' => 'America/Tegucigalpa', 'MicrosoftTimeZoneIndex' => '033'],
  86. ['MageTimeZone' => 'Etc/GMT+6', 'MicrosoftTimeZoneIndex' => '033'],
  87. ['MageTimeZone' => 'Pacific/Galapagos', 'MicrosoftTimeZoneIndex' => '033'],
  88. ['MageTimeZone' => 'Antarctica/Vostok', 'MicrosoftTimeZoneIndex' => '195'],
  89. ['MageTimeZone' => 'Asia/Almaty', 'MicrosoftTimeZoneIndex' => '195'],
  90. ['MageTimeZone' => 'Asia/Bishkek', 'MicrosoftTimeZoneIndex' => '195'],
  91. ['MageTimeZone' => 'Asia/Qyzylorda', 'MicrosoftTimeZoneIndex' => '195'],
  92. ['MageTimeZone' => 'Etc/GMT-6', 'MicrosoftTimeZoneIndex' => '195'],
  93. ['MageTimeZone' => 'Indian/Chagos', 'MicrosoftTimeZoneIndex' => '195'],
  94. ['MageTimeZone' => 'America/Campo_Grande', 'MicrosoftTimeZoneIndex' => '065'],
  95. ['MageTimeZone' => 'America/Cuiaba', 'MicrosoftTimeZoneIndex' => '065'],
  96. ['MageTimeZone' => 'Europe/Belgrade', 'MicrosoftTimeZoneIndex' => '095'],
  97. ['MageTimeZone' => 'Europe/Bratislava', 'MicrosoftTimeZoneIndex' => '095'],
  98. ['MageTimeZone' => 'Europe/Budapest', 'MicrosoftTimeZoneIndex' => '095'],
  99. ['MageTimeZone' => 'Europe/Ljubljana', 'MicrosoftTimeZoneIndex' => '095'],
  100. ['MageTimeZone' => 'Europe/Podgorica', 'MicrosoftTimeZoneIndex' => '095'],
  101. ['MageTimeZone' => 'Europe/Prague', 'MicrosoftTimeZoneIndex' => '095'],
  102. ['MageTimeZone' => 'Europe/Tirane', 'MicrosoftTimeZoneIndex' => '095'],
  103. ['MageTimeZone' => 'Europe/Sarajevo', 'MicrosoftTimeZoneIndex' => '095'],
  104. ['MageTimeZone' => 'Europe/Skopje', 'MicrosoftTimeZoneIndex' => '095'],
  105. ['MageTimeZone' => 'Europe/Warsaw', 'MicrosoftTimeZoneIndex' => '095'],
  106. ['MageTimeZone' => 'Europe/Zagreb', 'MicrosoftTimeZoneIndex' => '095'],
  107. ['MageTimeZone' => 'Antarctica/Macquarie', 'MicrosoftTimeZoneIndex' => '280'],
  108. ['MageTimeZone' => 'Etc/GMT-11', 'MicrosoftTimeZoneIndex' => '280'],
  109. ['MageTimeZone' => 'Pacific/Efate', 'MicrosoftTimeZoneIndex' => '280'],
  110. ['MageTimeZone' => 'Pacific/Guadalcanal', 'MicrosoftTimeZoneIndex' => '280'],
  111. ['MageTimeZone' => 'Pacific/Kosrae', 'MicrosoftTimeZoneIndex' => '280'],
  112. ['MageTimeZone' => 'Pacific/Noumea', 'MicrosoftTimeZoneIndex' => '280'],
  113. ['MageTimeZone' => 'Pacific/Ponape', 'MicrosoftTimeZoneIndex' => '280'],
  114. ['MageTimeZone' => 'America/Chicago', 'MicrosoftTimeZoneIndex' => '020'],
  115. ['MageTimeZone' => 'America/Indiana/Knox', 'MicrosoftTimeZoneIndex' => '020'],
  116. ['MageTimeZone' => 'America/Indiana/Tell_City', 'MicrosoftTimeZoneIndex' => '020'],
  117. ['MageTimeZone' => 'America/Matamoros', 'MicrosoftTimeZoneIndex' => '020'],
  118. ['MageTimeZone' => 'America/Menominee', 'MicrosoftTimeZoneIndex' => '020'],
  119. ['MageTimeZone' => 'America/North_Dakota/Beulah', 'MicrosoftTimeZoneIndex' => '020'],
  120. ['MageTimeZone' => 'America/North_Dakota/Center', 'MicrosoftTimeZoneIndex' => '020'],
  121. ['MageTimeZone' => 'America/North_Dakota/New_Salem', 'MicrosoftTimeZoneIndex' => '020'],
  122. ['MageTimeZone' => 'America/Rainy_River', 'MicrosoftTimeZoneIndex' => '020'],
  123. ['MageTimeZone' => 'America/Rankin_Inlet', 'MicrosoftTimeZoneIndex' => '020'],
  124. ['MageTimeZone' => 'America/Resolute', 'MicrosoftTimeZoneIndex' => '020'],
  125. ['MageTimeZone' => 'America/Winnipeg', 'MicrosoftTimeZoneIndex' => '020'],
  126. ['MageTimeZone' => 'CST6CDT', 'MicrosoftTimeZoneIndex' => '020'],
  127. ['MageTimeZone' => 'America/Bahia_Banderas', 'MicrosoftTimeZoneIndex' => '020'],
  128. ['MageTimeZone' => 'America/Cancun', 'MicrosoftTimeZoneIndex' => '020'],
  129. ['MageTimeZone' => 'America/Merida', 'MicrosoftTimeZoneIndex' => '020'],
  130. ['MageTimeZone' => 'America/Mexico_City', 'MicrosoftTimeZoneIndex' => '020'],
  131. ['MageTimeZone' => 'America/Monterrey', 'MicrosoftTimeZoneIndex' => '020'],
  132. ['MageTimeZone' => 'Asia/Chongqing', 'MicrosoftTimeZoneIndex' => '210'],
  133. ['MageTimeZone' => 'Asia/Harbin', 'MicrosoftTimeZoneIndex' => '210'],
  134. ['MageTimeZone' => 'Asia/Hong_Kong', 'MicrosoftTimeZoneIndex' => '210'],
  135. ['MageTimeZone' => 'Asia/Kashgar', 'MicrosoftTimeZoneIndex' => '210'],
  136. ['MageTimeZone' => 'Asia/Macau', 'MicrosoftTimeZoneIndex' => '210'],
  137. ['MageTimeZone' => 'Asia/Shanghai', 'MicrosoftTimeZoneIndex' => '210'],
  138. ['MageTimeZone' => 'Asia/Urumqi', 'MicrosoftTimeZoneIndex' => '210'],
  139. ['MageTimeZone' => 'Etc/GMT+12', 'MicrosoftTimeZoneIndex' => '000'],
  140. ['MageTimeZone' => 'Africa/Addis_Ababa', 'MicrosoftTimeZoneIndex' => '115'],
  141. ['MageTimeZone' => 'Africa/Asmera', 'MicrosoftTimeZoneIndex' => '115'],
  142. ['MageTimeZone' => 'Africa/Dar_es_Salaam', 'MicrosoftTimeZoneIndex' => '115'],
  143. ['MageTimeZone' => 'Africa/Djibouti', 'MicrosoftTimeZoneIndex' => '115'],
  144. ['MageTimeZone' => 'Africa/Juba', 'MicrosoftTimeZoneIndex' => '115'],
  145. ['MageTimeZone' => 'Africa/Kampala', 'MicrosoftTimeZoneIndex' => '115'],
  146. ['MageTimeZone' => 'Africa/Khartoum', 'MicrosoftTimeZoneIndex' => '115'],
  147. ['MageTimeZone' => 'Africa/Mogadishu', 'MicrosoftTimeZoneIndex' => '115'],
  148. ['MageTimeZone' => 'Africa/Nairobi', 'MicrosoftTimeZoneIndex' => '115'],
  149. ['MageTimeZone' => 'Antarctica/Syowa', 'MicrosoftTimeZoneIndex' => '115'],
  150. ['MageTimeZone' => 'Etc/GMT-3', 'MicrosoftTimeZoneIndex' => '115'],
  151. ['MageTimeZone' => 'Indian/Antananarivo', 'MicrosoftTimeZoneIndex' => '115'],
  152. ['MageTimeZone' => 'Indian/Comoro', 'MicrosoftTimeZoneIndex' => '115'],
  153. ['MageTimeZone' => 'Indian/Mayotte', 'MicrosoftTimeZoneIndex' => '115'],
  154. ['MageTimeZone' => 'Australia/Brisbane', 'MicrosoftTimeZoneIndex' => '260'],
  155. ['MageTimeZone' => 'Australia/Lindeman', 'MicrosoftTimeZoneIndex' => '260'],
  156. ['MageTimeZone' => 'America/Sao_Paulo', 'MicrosoftTimeZoneIndex' => '065'],
  157. ['MageTimeZone' => 'America/Detroit', 'MicrosoftTimeZoneIndex' => '035'],
  158. ['MageTimeZone' => 'America/Grand_Turk', 'MicrosoftTimeZoneIndex' => '035'],
  159. ['MageTimeZone' => 'America/Havana', 'MicrosoftTimeZoneIndex' => '035'],
  160. ['MageTimeZone' => 'America/Indiana/Petersburg', 'MicrosoftTimeZoneIndex' => '035'],
  161. ['MageTimeZone' => 'America/Indiana/Vincennes', 'MicrosoftTimeZoneIndex' => '035'],
  162. ['MageTimeZone' => 'America/Indiana/Winamac', 'MicrosoftTimeZoneIndex' => '035'],
  163. ['MageTimeZone' => 'America/Iqaluit', 'MicrosoftTimeZoneIndex' => '035'],
  164. ['MageTimeZone' => 'America/Kentucky/Monticello', 'MicrosoftTimeZoneIndex' => '035'],
  165. ['MageTimeZone' => 'America/Louisville', 'MicrosoftTimeZoneIndex' => '035'],
  166. ['MageTimeZone' => 'America/Montreal', 'MicrosoftTimeZoneIndex' => '035'],
  167. ['MageTimeZone' => 'America/Nassau', 'MicrosoftTimeZoneIndex' => '035'],
  168. ['MageTimeZone' => 'America/New_York', 'MicrosoftTimeZoneIndex' => '035'],
  169. ['MageTimeZone' => 'America/Nipigon', 'MicrosoftTimeZoneIndex' => '035'],
  170. ['MageTimeZone' => 'America/Pangnirtung', 'MicrosoftTimeZoneIndex' => '035'],
  171. ['MageTimeZone' => 'America/Port-au-Prince', 'MicrosoftTimeZoneIndex' => '035'],
  172. ['MageTimeZone' => 'America/Thunder_Bay', 'MicrosoftTimeZoneIndex' => '035'],
  173. ['MageTimeZone' => 'America/Toronto', 'MicrosoftTimeZoneIndex' => '035'],
  174. ['MageTimeZone' => 'EST5EDT', 'MicrosoftTimeZoneIndex' => '035'],
  175. ['MageTimeZone' => 'Africa/Cairo', 'MicrosoftTimeZoneIndex' => '120'],
  176. ['MageTimeZone' => 'Asia/Yekaterinburg', 'MicrosoftTimeZoneIndex' => '180'],
  177. ['MageTimeZone' => 'Europe/Helsinki', 'MicrosoftTimeZoneIndex' => '125'],
  178. ['MageTimeZone' => 'Europe/Kiev', 'MicrosoftTimeZoneIndex' => '125'],
  179. ['MageTimeZone' => 'Europe/Riga', 'MicrosoftTimeZoneIndex' => '125'],
  180. ['MageTimeZone' => 'Europe/Simferopol', 'MicrosoftTimeZoneIndex' => '125'],
  181. ['MageTimeZone' => 'Europe/Sofia', 'MicrosoftTimeZoneIndex' => '125'],
  182. ['MageTimeZone' => 'Europe/Tallinn', 'MicrosoftTimeZoneIndex' => '125'],
  183. ['MageTimeZone' => 'Europe/Uzhgorod', 'MicrosoftTimeZoneIndex' => '125'],
  184. ['MageTimeZone' => 'Europe/Vilnius', 'MicrosoftTimeZoneIndex' => '125'],
  185. ['MageTimeZone' => 'Europe/Zaporozhye', 'MicrosoftTimeZoneIndex' => '125'],
  186. ['MageTimeZone' => 'Pacific/Fiji', 'MicrosoftTimeZoneIndex' => '285'],
  187. ['MageTimeZone' => 'Atlantic/Canary', 'MicrosoftTimeZoneIndex' => '085'],
  188. ['MageTimeZone' => 'Atlantic/Faeroe', 'MicrosoftTimeZoneIndex' => '085'],
  189. ['MageTimeZone' => 'Atlantic/Madeira', 'MicrosoftTimeZoneIndex' => '085'],
  190. ['MageTimeZone' => 'Europe/Dublin', 'MicrosoftTimeZoneIndex' => '085'],
  191. ['MageTimeZone' => 'Europe/Guernsey', 'MicrosoftTimeZoneIndex' => '085'],
  192. ['MageTimeZone' => 'Europe/Isle_of_Man', 'MicrosoftTimeZoneIndex' => '085'],
  193. ['MageTimeZone' => 'Europe/Jersey', 'MicrosoftTimeZoneIndex' => '085'],
  194. ['MageTimeZone' => 'Europe/Lisbon', 'MicrosoftTimeZoneIndex' => '085'],
  195. ['MageTimeZone' => 'Europe/London', 'MicrosoftTimeZoneIndex' => '085'],
  196. ['MageTimeZone' => 'Asia/Nicosia', 'MicrosoftTimeZoneIndex' => '130'],
  197. ['MageTimeZone' => 'Europe/Athens', 'MicrosoftTimeZoneIndex' => '130'],
  198. ['MageTimeZone' => 'Europe/Bucharest', 'MicrosoftTimeZoneIndex' => '130'],
  199. ['MageTimeZone' => 'Europe/Chisinau', 'MicrosoftTimeZoneIndex' => '130'],
  200. ['MageTimeZone' => 'Asia/Tbilisi', 'MicrosoftTimeZoneIndex' => '170'],
  201. ['MageTimeZone' => 'America/Godthab', 'MicrosoftTimeZoneIndex' => '073'],
  202. ['MageTimeZone' => 'Africa/Abidjan', 'MicrosoftTimeZoneIndex' => '090'],
  203. ['MageTimeZone' => 'Africa/Accra', 'MicrosoftTimeZoneIndex' => '090'],
  204. ['MageTimeZone' => 'Africa/Bamako', 'MicrosoftTimeZoneIndex' => '090'],
  205. ['MageTimeZone' => 'Africa/Banjul', 'MicrosoftTimeZoneIndex' => '090'],
  206. ['MageTimeZone' => 'Africa/Bissau', 'MicrosoftTimeZoneIndex' => '090'],
  207. ['MageTimeZone' => 'Africa/Conakry', 'MicrosoftTimeZoneIndex' => '090'],
  208. ['MageTimeZone' => 'Africa/Dakar', 'MicrosoftTimeZoneIndex' => '090'],
  209. ['MageTimeZone' => 'Africa/Freetown', 'MicrosoftTimeZoneIndex' => '090'],
  210. ['MageTimeZone' => 'Africa/Lome', 'MicrosoftTimeZoneIndex' => '090'],
  211. ['MageTimeZone' => 'Africa/Monrovia', 'MicrosoftTimeZoneIndex' => '090'],
  212. ['MageTimeZone' => 'Africa/Nouakchott', 'MicrosoftTimeZoneIndex' => '090'],
  213. ['MageTimeZone' => 'Africa/Ouagadougou', 'MicrosoftTimeZoneIndex' => '090'],
  214. ['MageTimeZone' => 'Africa/Sao_Tome', 'MicrosoftTimeZoneIndex' => '090'],
  215. ['MageTimeZone' => 'Atlantic/Reykjavik', 'MicrosoftTimeZoneIndex' => '090'],
  216. ['MageTimeZone' => 'Atlantic/St_Helena', 'MicrosoftTimeZoneIndex' => '090'],
  217. ['MageTimeZone' => 'Etc/GMT+10', 'MicrosoftTimeZoneIndex' => '002'],
  218. ['MageTimeZone' => 'Pacific/Honolulu', 'MicrosoftTimeZoneIndex' => '002'],
  219. ['MageTimeZone' => 'Pacific/Johnston', 'MicrosoftTimeZoneIndex' => '002'],
  220. ['MageTimeZone' => 'Pacific/Rarotonga', 'MicrosoftTimeZoneIndex' => '002'],
  221. ['MageTimeZone' => 'Pacific/Tahiti', 'MicrosoftTimeZoneIndex' => '002'],
  222. ['MageTimeZone' => 'Asia/Calcutta', 'MicrosoftTimeZoneIndex' => '190'],
  223. ['MageTimeZone' => 'Asia/Tehran', 'MicrosoftTimeZoneIndex' => '160'],
  224. ['MageTimeZone' => 'Asia/Jerusalem', 'MicrosoftTimeZoneIndex' => '135'],
  225. ['MageTimeZone' => 'Asia/Amman', 'MicrosoftTimeZoneIndex' => '150'],
  226. ['MageTimeZone' => 'Europe/Kaliningrad', 'MicrosoftTimeZoneIndex' => '130'],
  227. ['MageTimeZone' => 'Europe/Minsk', 'MicrosoftTimeZoneIndex' => '130'],
  228. ['MageTimeZone' => 'Asia/Pyongyang', 'MicrosoftTimeZoneIndex' => '230'],
  229. ['MageTimeZone' => 'Asia/Seoul', 'MicrosoftTimeZoneIndex' => '230'],
  230. ['MageTimeZone' => 'Africa/Tripoli', 'MicrosoftTimeZoneIndex' => '120'],
  231. ['MageTimeZone' => 'Asia/Anadyr', 'MicrosoftTimeZoneIndex' => '280'],
  232. ['MageTimeZone' => 'Asia/Kamchatka', 'MicrosoftTimeZoneIndex' => '280'],
  233. ['MageTimeZone' => 'Asia/Magadan', 'MicrosoftTimeZoneIndex' => '280'],
  234. ['MageTimeZone' => 'Indian/Mahe', 'MicrosoftTimeZoneIndex' => '165'],
  235. ['MageTimeZone' => 'Indian/Mauritius', 'MicrosoftTimeZoneIndex' => '165'],
  236. ['MageTimeZone' => 'Indian/Reunion', 'MicrosoftTimeZoneIndex' => '165'],
  237. ['MageTimeZone' => 'Asia/Beirut', 'MicrosoftTimeZoneIndex' => '158'],
  238. ['MageTimeZone' => 'America/Montevideo', 'MicrosoftTimeZoneIndex' => '065'],
  239. ['MageTimeZone' => 'Africa/Casablanca', 'MicrosoftTimeZoneIndex' => '113'],
  240. ['MageTimeZone' => 'Africa/El_Aaiun', 'MicrosoftTimeZoneIndex' => '113'],
  241. ['MageTimeZone' => 'America/Boise', 'MicrosoftTimeZoneIndex' => '010'],
  242. ['MageTimeZone' => 'America/Cambridge_Bay', 'MicrosoftTimeZoneIndex' => '010'],
  243. ['MageTimeZone' => 'America/Denver', 'MicrosoftTimeZoneIndex' => '010'],
  244. ['MageTimeZone' => 'America/Edmonton', 'MicrosoftTimeZoneIndex' => '010'],
  245. ['MageTimeZone' => 'America/Inuvik', 'MicrosoftTimeZoneIndex' => '010'],
  246. ['MageTimeZone' => 'America/Ojinaga', 'MicrosoftTimeZoneIndex' => '010'],
  247. ['MageTimeZone' => 'America/Shiprock', 'MicrosoftTimeZoneIndex' => '010'],
  248. ['MageTimeZone' => 'America/Yellowknife', 'MicrosoftTimeZoneIndex' => '010'],
  249. ['MageTimeZone' => 'MST7MDT', 'MicrosoftTimeZoneIndex' => '010'],
  250. ['MageTimeZone' => 'America/Chihuahua', 'MicrosoftTimeZoneIndex' => '010'],
  251. ['MageTimeZone' => 'America/Mazatlan', 'MicrosoftTimeZoneIndex' => '010'],
  252. ['MageTimeZone' => 'Asia/Rangoon', 'MicrosoftTimeZoneIndex' => '203'],
  253. ['MageTimeZone' => 'Indian/Cocos', 'MicrosoftTimeZoneIndex' => '203'],
  254. ['MageTimeZone' => 'Asia/Novokuznetsk', 'MicrosoftTimeZoneIndex' => '201'],
  255. ['MageTimeZone' => 'Asia/Novosibirsk', 'MicrosoftTimeZoneIndex' => '201'],
  256. ['MageTimeZone' => 'Asia/Omsk', 'MicrosoftTimeZoneIndex' => '201'],
  257. ['MageTimeZone' => 'Africa/Windhoek', 'MicrosoftTimeZoneIndex' => '120'],
  258. ['MageTimeZone' => 'Asia/Katmandu', 'MicrosoftTimeZoneIndex' => '193'],
  259. ['MageTimeZone' => 'Antarctica/McMurdo', 'MicrosoftTimeZoneIndex' => '290'],
  260. ['MageTimeZone' => 'Antarctica/South_Pole', 'MicrosoftTimeZoneIndex' => '290'],
  261. ['MageTimeZone' => 'Pacific/Auckland', 'MicrosoftTimeZoneIndex' => '290'],
  262. ['MageTimeZone' => 'America/St_Johns', 'MicrosoftTimeZoneIndex' => '060'],
  263. ['MageTimeZone' => 'Asia/Irkutsk', 'MicrosoftTimeZoneIndex' => '207'],
  264. ['MageTimeZone' => 'Asia/Krasnoyarsk', 'MicrosoftTimeZoneIndex' => '207'],
  265. ['MageTimeZone' => 'America/Santiago', 'MicrosoftTimeZoneIndex' => '056'],
  266. ['MageTimeZone' => 'Antarctica/Palmer', 'MicrosoftTimeZoneIndex' => '004'],
  267. ['MageTimeZone' => 'America/Dawson', 'MicrosoftTimeZoneIndex' => '004'],
  268. ['MageTimeZone' => 'America/Los_Angeles', 'MicrosoftTimeZoneIndex' => '004'],
  269. ['MageTimeZone' => 'America/Tijuana', 'MicrosoftTimeZoneIndex' => '004'],
  270. ['MageTimeZone' => 'America/Vancouver', 'MicrosoftTimeZoneIndex' => '004'],
  271. ['MageTimeZone' => 'America/Whitehorse', 'MicrosoftTimeZoneIndex' => '004'],
  272. ['MageTimeZone' => 'America/Santa_Isabel', 'MicrosoftTimeZoneIndex' => '004'],
  273. ['MageTimeZone' => 'PST8PDT', 'MicrosoftTimeZoneIndex' => '004'],
  274. ['MageTimeZone' => 'Asia/Karachi', 'MicrosoftTimeZoneIndex' => '185'],
  275. ['MageTimeZone' => 'America/Asuncion', 'MicrosoftTimeZoneIndex' => '065'],
  276. ['MageTimeZone' => 'Africa/Ceuta', 'MicrosoftTimeZoneIndex' => '105'],
  277. ['MageTimeZone' => 'Europe/Brussels', 'MicrosoftTimeZoneIndex' => '105'],
  278. ['MageTimeZone' => 'Europe/Copenhagen', 'MicrosoftTimeZoneIndex' => '105'],
  279. ['MageTimeZone' => 'Europe/Madrid', 'MicrosoftTimeZoneIndex' => '105'],
  280. ['MageTimeZone' => 'Europe/Paris', 'MicrosoftTimeZoneIndex' => '105'],
  281. ['MageTimeZone' => 'Europe/Moscow', 'MicrosoftTimeZoneIndex' => '145'],
  282. ['MageTimeZone' => 'Europe/Samara', 'MicrosoftTimeZoneIndex' => '145'],
  283. ['MageTimeZone' => 'Europe/Volgograd', 'MicrosoftTimeZoneIndex' => '145'],
  284. ['MageTimeZone' => 'America/Araguaina', 'MicrosoftTimeZoneIndex' => '070'],
  285. ['MageTimeZone' => 'America/Belem', 'MicrosoftTimeZoneIndex' => '070'],
  286. ['MageTimeZone' => 'America/Cayenne', 'MicrosoftTimeZoneIndex' => '070'],
  287. ['MageTimeZone' => 'America/Fortaleza', 'MicrosoftTimeZoneIndex' => '070'],
  288. ['MageTimeZone' => 'America/Maceio', 'MicrosoftTimeZoneIndex' => '070'],
  289. ['MageTimeZone' => 'America/Paramaribo', 'MicrosoftTimeZoneIndex' => '070'],
  290. ['MageTimeZone' => 'America/Recife', 'MicrosoftTimeZoneIndex' => '070'],
  291. ['MageTimeZone' => 'America/Santarem', 'MicrosoftTimeZoneIndex' => '070'],
  292. ['MageTimeZone' => 'Antarctica/Rothera', 'MicrosoftTimeZoneIndex' => '070'],
  293. ['MageTimeZone' => 'Atlantic/Stanley', 'MicrosoftTimeZoneIndex' => '070'],
  294. ['MageTimeZone' => 'Etc/GMT+3', 'MicrosoftTimeZoneIndex' => '070'],
  295. ['MageTimeZone' => 'America/Bogota', 'MicrosoftTimeZoneIndex' => '045'],
  296. ['MageTimeZone' => 'America/Cayman', 'MicrosoftTimeZoneIndex' => '045'],
  297. ['MageTimeZone' => 'America/Coral_Harbour', 'MicrosoftTimeZoneIndex' => '045'],
  298. ['MageTimeZone' => 'America/Eirunepe', 'MicrosoftTimeZoneIndex' => '045'],
  299. ['MageTimeZone' => 'America/Guayaquil', 'MicrosoftTimeZoneIndex' => '045'],
  300. ['MageTimeZone' => 'America/Jamaica', 'MicrosoftTimeZoneIndex' => '045'],
  301. ['MageTimeZone' => 'America/Lima', 'MicrosoftTimeZoneIndex' => '045'],
  302. ['MageTimeZone' => 'America/Panama', 'MicrosoftTimeZoneIndex' => '045'],
  303. ['MageTimeZone' => 'America/Rio_Branco', 'MicrosoftTimeZoneIndex' => '045'],
  304. ['MageTimeZone' => 'Etc/GMT+5', 'MicrosoftTimeZoneIndex' => '045'],
  305. ['MageTimeZone' => 'America/Anguilla', 'MicrosoftTimeZoneIndex' => '055'],
  306. ['MageTimeZone' => 'America/Antigua', 'MicrosoftTimeZoneIndex' => '055'],
  307. ['MageTimeZone' => 'America/Aruba', 'MicrosoftTimeZoneIndex' => '055'],
  308. ['MageTimeZone' => 'America/Barbados', 'MicrosoftTimeZoneIndex' => '055'],
  309. ['MageTimeZone' => 'America/Blanc-Sablon', 'MicrosoftTimeZoneIndex' => '055'],
  310. ['MageTimeZone' => 'America/Boa_Vista', 'MicrosoftTimeZoneIndex' => '055'],
  311. ['MageTimeZone' => 'America/Curacao', 'MicrosoftTimeZoneIndex' => '055'],
  312. ['MageTimeZone' => 'America/Dominica', 'MicrosoftTimeZoneIndex' => '055'],
  313. ['MageTimeZone' => 'America/Grenada', 'MicrosoftTimeZoneIndex' => '055'],
  314. ['MageTimeZone' => 'America/Guadeloupe', 'MicrosoftTimeZoneIndex' => '055'],
  315. ['MageTimeZone' => 'America/Guyana', 'MicrosoftTimeZoneIndex' => '055'],
  316. ['MageTimeZone' => 'America/Kralendijk', 'MicrosoftTimeZoneIndex' => '055'],
  317. ['MageTimeZone' => 'America/La_Paz', 'MicrosoftTimeZoneIndex' => '055'],
  318. ['MageTimeZone' => 'America/Lower_Princes', 'MicrosoftTimeZoneIndex' => '055'],
  319. ['MageTimeZone' => 'America/Manaus', 'MicrosoftTimeZoneIndex' => '055'],
  320. ['MageTimeZone' => 'America/Marigot', 'MicrosoftTimeZoneIndex' => '055'],
  321. ['MageTimeZone' => 'America/Martinique', 'MicrosoftTimeZoneIndex' => '055'],
  322. ['MageTimeZone' => 'America/Montserrat', 'MicrosoftTimeZoneIndex' => '055'],
  323. ['MageTimeZone' => 'America/Port_of_Spain', 'MicrosoftTimeZoneIndex' => '055'],
  324. ['MageTimeZone' => 'America/Porto_Velho', 'MicrosoftTimeZoneIndex' => '055'],
  325. ['MageTimeZone' => 'America/Puerto_Rico', 'MicrosoftTimeZoneIndex' => '055'],
  326. ['MageTimeZone' => 'America/Santo_Domingo', 'MicrosoftTimeZoneIndex' => '055'],
  327. ['MageTimeZone' => 'America/St_Barthelemy', 'MicrosoftTimeZoneIndex' => '055'],
  328. ['MageTimeZone' => 'America/St_Kitts', 'MicrosoftTimeZoneIndex' => '055'],
  329. ['MageTimeZone' => 'America/St_Lucia', 'MicrosoftTimeZoneIndex' => '055'],
  330. ['MageTimeZone' => 'America/St_Thomas', 'MicrosoftTimeZoneIndex' => '055'],
  331. ['MageTimeZone' => 'America/St_Vincent', 'MicrosoftTimeZoneIndex' => '055'],
  332. ['MageTimeZone' => 'America/Tortola', 'MicrosoftTimeZoneIndex' => '055'],
  333. ['MageTimeZone' => 'Etc/GMT+4', 'MicrosoftTimeZoneIndex' => '055'],
  334. ['MageTimeZone' => 'Antarctica/Davis', 'MicrosoftTimeZoneIndex' => '205'],
  335. ['MageTimeZone' => 'Asia/Bangkok', 'MicrosoftTimeZoneIndex' => '205'],
  336. ['MageTimeZone' => 'Asia/Hovd', 'MicrosoftTimeZoneIndex' => '205'],
  337. ['MageTimeZone' => 'Asia/Jakarta', 'MicrosoftTimeZoneIndex' => '205'],
  338. ['MageTimeZone' => 'Asia/Phnom_Penh', 'MicrosoftTimeZoneIndex' => '205'],
  339. ['MageTimeZone' => 'Asia/Pontianak', 'MicrosoftTimeZoneIndex' => '205'],
  340. ['MageTimeZone' => 'Asia/Saigon', 'MicrosoftTimeZoneIndex' => '205'],
  341. ['MageTimeZone' => 'Asia/Vientiane', 'MicrosoftTimeZoneIndex' => '205'],
  342. ['MageTimeZone' => 'Etc/GMT-7', 'MicrosoftTimeZoneIndex' => '205'],
  343. ['MageTimeZone' => 'Indian/Christmas', 'MicrosoftTimeZoneIndex' => '205'],
  344. ['MageTimeZone' => 'Pacific/Apia', 'MicrosoftTimeZoneIndex' => '001'],
  345. ['MageTimeZone' => 'Asia/Brunei', 'MicrosoftTimeZoneIndex' => '215'],
  346. ['MageTimeZone' => 'Asia/Kuala_Lumpur', 'MicrosoftTimeZoneIndex' => '215'],
  347. ['MageTimeZone' => 'Asia/Kuching', 'MicrosoftTimeZoneIndex' => '215'],
  348. ['MageTimeZone' => 'Asia/Makassar', 'MicrosoftTimeZoneIndex' => '215'],
  349. ['MageTimeZone' => 'Asia/Manila', 'MicrosoftTimeZoneIndex' => '215'],
  350. ['MageTimeZone' => 'Asia/Singapore', 'MicrosoftTimeZoneIndex' => '215'],
  351. ['MageTimeZone' => 'Etc/GMT-8', 'MicrosoftTimeZoneIndex' => '215'],
  352. ['MageTimeZone' => 'Africa/Blantyre', 'MicrosoftTimeZoneIndex' => '140'],
  353. ['MageTimeZone' => 'Africa/Bujumbura', 'MicrosoftTimeZoneIndex' => '140'],
  354. ['MageTimeZone' => 'Africa/Gaborone', 'MicrosoftTimeZoneIndex' => '140'],
  355. ['MageTimeZone' => 'Africa/Harare', 'MicrosoftTimeZoneIndex' => '140'],
  356. ['MageTimeZone' => 'Africa/Johannesburg', 'MicrosoftTimeZoneIndex' => '140'],
  357. ['MageTimeZone' => 'Africa/Kigali', 'MicrosoftTimeZoneIndex' => '140'],
  358. ['MageTimeZone' => 'Africa/Lubumbashi', 'MicrosoftTimeZoneIndex' => '140'],
  359. ['MageTimeZone' => 'Africa/Lusaka', 'MicrosoftTimeZoneIndex' => '140'],
  360. ['MageTimeZone' => 'Africa/Maputo', 'MicrosoftTimeZoneIndex' => '140'],
  361. ['MageTimeZone' => 'Africa/Maseru', 'MicrosoftTimeZoneIndex' => '140'],
  362. ['MageTimeZone' => 'Africa/Mbabane', 'MicrosoftTimeZoneIndex' => '140'],
  363. ['MageTimeZone' => 'Etc/GMT-2', 'MicrosoftTimeZoneIndex' => '140'],
  364. ['MageTimeZone' => 'Asia/Colombo', 'MicrosoftTimeZoneIndex' => '200'],
  365. ['MageTimeZone' => 'Asia/Damascus', 'MicrosoftTimeZoneIndex' => '158'],
  366. ['MageTimeZone' => 'Asia/Taipei', 'MicrosoftTimeZoneIndex' => '220'],
  367. ['MageTimeZone' => 'Australia/Currie', 'MicrosoftTimeZoneIndex' => '265'],
  368. ['MageTimeZone' => 'Australia/Hobart', 'MicrosoftTimeZoneIndex' => '265'],
  369. ['MageTimeZone' => 'Asia/Dili', 'MicrosoftTimeZoneIndex' => '235'],
  370. ['MageTimeZone' => 'Asia/Jayapura', 'MicrosoftTimeZoneIndex' => '235'],
  371. ['MageTimeZone' => 'Asia/Tokyo', 'MicrosoftTimeZoneIndex' => '235'],
  372. ['MageTimeZone' => 'Etc/GMT-9', 'MicrosoftTimeZoneIndex' => '235'],
  373. ['MageTimeZone' => 'Pacific/Palau', 'MicrosoftTimeZoneIndex' => '235'],
  374. ['MageTimeZone' => 'Etc/GMT-13', 'MicrosoftTimeZoneIndex' => '300'],
  375. ['MageTimeZone' => 'Pacific/Enderbury', 'MicrosoftTimeZoneIndex' => '300'],
  376. ['MageTimeZone' => 'Pacific/Fakaofo', 'MicrosoftTimeZoneIndex' => '300'],
  377. ['MageTimeZone' => 'Pacific/Tongatapu', 'MicrosoftTimeZoneIndex' => '300'],
  378. ['MageTimeZone' => 'Europe/Istanbul', 'MicrosoftTimeZoneIndex' => '130'],
  379. ['MageTimeZone' => 'America/Indiana/Marengo', 'MicrosoftTimeZoneIndex' => '040'],
  380. ['MageTimeZone' => 'America/Indiana/Vevay', 'MicrosoftTimeZoneIndex' => '040'],
  381. ['MageTimeZone' => 'America/Indianapolis', 'MicrosoftTimeZoneIndex' => '040'],
  382. ['MageTimeZone' => 'America/Creston', 'MicrosoftTimeZoneIndex' => '015'],
  383. ['MageTimeZone' => 'America/Dawson_Creek', 'MicrosoftTimeZoneIndex' => '015'],
  384. ['MageTimeZone' => 'America/Hermosillo', 'MicrosoftTimeZoneIndex' => '015'],
  385. ['MageTimeZone' => 'America/Phoenix', 'MicrosoftTimeZoneIndex' => '015'],
  386. ['MageTimeZone' => 'Etc/GMT+7', 'MicrosoftTimeZoneIndex' => '015'],
  387. ['MageTimeZone' => 'America/Danmarkshavn', 'MicrosoftTimeZoneIndex' => '085'],
  388. ['MageTimeZone' => 'Etc/GMT', 'MicrosoftTimeZoneIndex' => '085'],
  389. ['MageTimeZone' => 'Etc/GMT-12', 'MicrosoftTimeZoneIndex' => '285'],
  390. ['MageTimeZone' => 'Pacific/Funafuti', 'MicrosoftTimeZoneIndex' => '285'],
  391. ['MageTimeZone' => 'Pacific/Kwajalein', 'MicrosoftTimeZoneIndex' => '285'],
  392. ['MageTimeZone' => 'Pacific/Majuro', 'MicrosoftTimeZoneIndex' => '285'],
  393. ['MageTimeZone' => 'Pacific/Nauru', 'MicrosoftTimeZoneIndex' => '285'],
  394. ['MageTimeZone' => 'Pacific/Tarawa', 'MicrosoftTimeZoneIndex' => '285'],
  395. ['MageTimeZone' => 'Pacific/Wake', 'MicrosoftTimeZoneIndex' => '285'],
  396. ['MageTimeZone' => 'Pacific/Wallis', 'MicrosoftTimeZoneIndex' => '285'],
  397. ['MageTimeZone' => 'America/Noronha', 'MicrosoftTimeZoneIndex' => '075'],
  398. ['MageTimeZone' => 'Atlantic/South_Georgia', 'MicrosoftTimeZoneIndex' => '075'],
  399. ['MageTimeZone' => 'Etc/GMT+2', 'MicrosoftTimeZoneIndex' => '075'],
  400. ['MageTimeZone' => 'Etc/GMT+11', 'MicrosoftTimeZoneIndex' => '280'],
  401. ['MageTimeZone' => 'Pacific/Midway', 'MicrosoftTimeZoneIndex' => '280'],
  402. ['MageTimeZone' => 'Pacific/Niue', 'MicrosoftTimeZoneIndex' => '280'],
  403. ['MageTimeZone' => 'Pacific/Pago_Pago', 'MicrosoftTimeZoneIndex' => '280'],
  404. ['MageTimeZone' => 'Asia/Choibalsan', 'MicrosoftTimeZoneIndex' => '227'],
  405. ['MageTimeZone' => 'Asia/Ulaanbaatar', 'MicrosoftTimeZoneIndex' => '227'],
  406. ['MageTimeZone' => 'America/Caracas', 'MicrosoftTimeZoneIndex' => '055'],
  407. ['MageTimeZone' => 'Asia/Sakhalin', 'MicrosoftTimeZoneIndex' => '270'],
  408. ['MageTimeZone' => 'Asia/Ust-Nera', 'MicrosoftTimeZoneIndex' => '270'],
  409. ['MageTimeZone' => 'Asia/Vladivostok', 'MicrosoftTimeZoneIndex' => '270'],
  410. ['MageTimeZone' => 'Antarctica/Casey', 'MicrosoftTimeZoneIndex' => '225'],
  411. ['MageTimeZone' => 'Australia/Perth', 'MicrosoftTimeZoneIndex' => '225'],
  412. ['MageTimeZone' => 'Africa/Algiers', 'MicrosoftTimeZoneIndex' => '113'],
  413. ['MageTimeZone' => 'Africa/Bangui', 'MicrosoftTimeZoneIndex' => '113'],
  414. ['MageTimeZone' => 'Africa/Brazzaville', 'MicrosoftTimeZoneIndex' => '113'],
  415. ['MageTimeZone' => 'Africa/Douala', 'MicrosoftTimeZoneIndex' => '113'],
  416. ['MageTimeZone' => 'Africa/Kinshasa', 'MicrosoftTimeZoneIndex' => '113'],
  417. ['MageTimeZone' => 'Africa/Lagos', 'MicrosoftTimeZoneIndex' => '113'],
  418. ['MageTimeZone' => 'Africa/Libreville', 'MicrosoftTimeZoneIndex' => '113'],
  419. ['MageTimeZone' => 'Africa/Luanda', 'MicrosoftTimeZoneIndex' => '113'],
  420. ['MageTimeZone' => 'Africa/Malabo', 'MicrosoftTimeZoneIndex' => '113'],
  421. ['MageTimeZone' => 'Africa/Ndjamena', 'MicrosoftTimeZoneIndex' => '113'],
  422. ['MageTimeZone' => 'Africa/Niamey', 'MicrosoftTimeZoneIndex' => '113'],
  423. ['MageTimeZone' => 'Africa/Porto-Novo', 'MicrosoftTimeZoneIndex' => '113'],
  424. ['MageTimeZone' => 'Africa/Tunis', 'MicrosoftTimeZoneIndex' => '113'],
  425. ['MageTimeZone' => 'Etc/GMT-1', 'MicrosoftTimeZoneIndex' => '113'],
  426. ['MageTimeZone' => 'Arctic/Longyearbyen', 'MicrosoftTimeZoneIndex' => '110'],
  427. ['MageTimeZone' => 'Europe/Amsterdam', 'MicrosoftTimeZoneIndex' => '110'],
  428. ['MageTimeZone' => 'Europe/Andorra', 'MicrosoftTimeZoneIndex' => '110'],
  429. ['MageTimeZone' => 'Europe/Berlin', 'MicrosoftTimeZoneIndex' => '110'],
  430. ['MageTimeZone' => 'Europe/Busingen', 'MicrosoftTimeZoneIndex' => '110'],
  431. ['MageTimeZone' => 'Europe/Gibraltar', 'MicrosoftTimeZoneIndex' => '110'],
  432. ['MageTimeZone' => 'Europe/Luxembourg', 'MicrosoftTimeZoneIndex' => '110'],
  433. ['MageTimeZone' => 'Europe/Malta', 'MicrosoftTimeZoneIndex' => '110'],
  434. ['MageTimeZone' => 'Europe/Monaco', 'MicrosoftTimeZoneIndex' => '110'],
  435. ['MageTimeZone' => 'Europe/Oslo', 'MicrosoftTimeZoneIndex' => '110'],
  436. ['MageTimeZone' => 'Europe/Rome', 'MicrosoftTimeZoneIndex' => '110'],
  437. ['MageTimeZone' => 'Europe/San_Marino', 'MicrosoftTimeZoneIndex' => '110'],
  438. ['MageTimeZone' => 'Europe/Stockholm', 'MicrosoftTimeZoneIndex' => '110'],
  439. ['MageTimeZone' => 'Europe/Vaduz', 'MicrosoftTimeZoneIndex' => '110'],
  440. ['MageTimeZone' => 'Europe/Vatican', 'MicrosoftTimeZoneIndex' => '110'],
  441. ['MageTimeZone' => 'Europe/Vienna', 'MicrosoftTimeZoneIndex' => '110'],
  442. ['MageTimeZone' => 'Europe/Zurich', 'MicrosoftTimeZoneIndex' => '110'],
  443. ['MageTimeZone' => 'Antarctica/Mawson', 'MicrosoftTimeZoneIndex' => '185'],
  444. ['MageTimeZone' => 'Asia/Aqtau', 'MicrosoftTimeZoneIndex' => '185'],
  445. ['MageTimeZone' => 'Asia/Aqtobe', 'MicrosoftTimeZoneIndex' => '185'],
  446. ['MageTimeZone' => 'Asia/Ashgabat', 'MicrosoftTimeZoneIndex' => '185'],
  447. ['MageTimeZone' => 'Asia/Dushanbe', 'MicrosoftTimeZoneIndex' => '185'],
  448. ['MageTimeZone' => 'Asia/Oral', 'MicrosoftTimeZoneIndex' => '185'],
  449. ['MageTimeZone' => 'Asia/Samarkand', 'MicrosoftTimeZoneIndex' => '185'],
  450. ['MageTimeZone' => 'Asia/Tashkent', 'MicrosoftTimeZoneIndex' => '185'],
  451. ['MageTimeZone' => 'Etc/GMT-5', 'MicrosoftTimeZoneIndex' => 'TEST'],
  452. ['MageTimeZone' => 'Indian/Kerguelen', 'MicrosoftTimeZoneIndex' => '185'],
  453. ['MageTimeZone' => 'Indian/Maldives', 'MicrosoftTimeZoneIndex' => '185'],
  454. ['MageTimeZone' => 'Antarctica/DumontDUrville', 'MicrosoftTimeZoneIndex' => '275'],
  455. ['MageTimeZone' => 'Etc/GMT-10', 'MicrosoftTimeZoneIndex' => '275'],
  456. ['MageTimeZone' => 'Pacific/Guam', 'MicrosoftTimeZoneIndex' => '275'],
  457. ['MageTimeZone' => 'Pacific/Port_Moresby', 'MicrosoftTimeZoneIndex' => '275'],
  458. ['MageTimeZone' => 'Pacific/Saipan', 'MicrosoftTimeZoneIndex' => '275'],
  459. ['MageTimeZone' => 'Pacific/Truk', 'MicrosoftTimeZoneIndex' => '275'],
  460. ['MageTimeZone' => 'Asia/Khandyga', 'MicrosoftTimeZoneIndex' => '240'],
  461. ['MageTimeZone' => 'Asia/Yakutsk', 'MicrosoftTimeZoneIndex' => '240'],
  462. ];
  463. /**
  464. * Trial constructor.
  465. *
  466. * @param \Magento\Backend\App\Action\Context $context
  467. * @param \Magento\Framework\HTTP\PhpEnvironment\ServerAddress $serverAddress
  468. * @param \Magento\Framework\Stdlib\DateTime\Timezone $localeDate
  469. * @param \Dotdigitalgroup\Email\Model\Trial\TrialSetupFactory $trialFactory
  470. */
  471. public function __construct(
  472. \Magento\Backend\App\Action\Context $context,
  473. \Magento\Framework\HTTP\PhpEnvironment\ServerAddress $serverAddress,
  474. \Magento\Framework\Stdlib\DateTime\Timezone $localeDate,
  475. \Dotdigitalgroup\Email\Model\Trial\TrialSetupFactory $trialFactory
  476. ) {
  477. $this->trialSetup = $trialFactory->create();
  478. $this->serverAddress = $serverAddress;
  479. $this->localeDate = $localeDate;
  480. $this->helper = $this->trialSetup->helper;
  481. parent::__construct($context);
  482. }
  483. /**
  484. * @return \Magento\Framework\App\ResponseInterface|\Magento\Framework\Controller\Result\Redirect|
  485. * \Magento\Framework\Controller\ResultInterface
  486. * @throws \Magento\Framework\Exception\LocalizedException
  487. */
  488. public function execute()
  489. {
  490. return $this->resultRedirectFactory->create()->setUrl($this->_getIframeFormUrl());
  491. }
  492. /**
  493. * Generate url for iframe for trial account popup.
  494. *
  495. * @return string
  496. * @throws \Magento\Framework\Exception\LocalizedException
  497. */
  498. private function _getIframeFormUrl()
  499. {
  500. $formUrl = \Dotdigitalgroup\Email\Helper\Config::API_CONNECTOR_TRIAL_FORM_URL;
  501. $ipAddress = $this->serverAddress->getServerAddress();
  502. //get the forward ip address for the request
  503. if ($ipAddress) {
  504. $ipAddress = $this->_request->getServer('HTTP_X_FORWARDED_FOR', $ipAddress);
  505. //get the first ip
  506. if (strpos($ipAddress, ',') !== false) {
  507. $ipList = explode(',', $ipAddress);
  508. $ipAddress = trim(reset($ipList));
  509. }
  510. }
  511. $timezone = $this->_getTimeZoneId();
  512. $culture = $this->_getCultureId();
  513. $company = $this->helper->getWebsiteConfig(\Magento\Store\Model\Information::XML_PATH_STORE_INFO_NAME);
  514. $callback = $this->helper->storeManager->getStore()
  515. ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB, true) . 'connector/email/accountcallback';
  516. //query params
  517. $params = [
  518. 'callback' => $callback,
  519. 'company' => $company,
  520. 'culture' => $culture,
  521. 'timezone' => $timezone,
  522. 'ip' => $ipAddress,
  523. 'code' => $this->trialSetup->generateTemporaryPasscode()
  524. ];
  525. $url = $formUrl . '?' . http_build_query($params);
  526. return $url;
  527. }
  528. /**
  529. * Get time zone id for trial account.
  530. *
  531. * @return string
  532. */
  533. private function _getTimeZoneId()
  534. {
  535. $timeZone = $this->localeDate->getConfigTimezone();
  536. $result = '085';
  537. if ($timeZone) {
  538. foreach ($this->timeZones as $time) {
  539. if ($time['MageTimeZone'] == $timeZone) {
  540. $result = $time['MicrosoftTimeZoneIndex'];
  541. }
  542. }
  543. }
  544. return $result;
  545. }
  546. /**
  547. * Get culture id needed for trial account.
  548. *
  549. * @return array
  550. */
  551. private function _getCultureId()
  552. {
  553. $fallback = 'en_US';
  554. $supportedCultures = [
  555. 'en_US' => '1033',
  556. 'en_GB' => '2057',
  557. 'fr_FR' => '1036',
  558. 'es_ES' => '3082',
  559. 'de_DE' => '1031',
  560. 'it_IT' => '1040',
  561. 'ru_RU' => '1049',
  562. 'pt_PT' => '2070',
  563. ];
  564. $localeCode = $this->helper->getWebsiteConfig(\Magento\Directory\Helper\Data::XML_PATH_DEFAULT_LOCALE);
  565. if (isset($supportedCultures[$localeCode])) {
  566. return $supportedCultures[$localeCode];
  567. }
  568. return $supportedCultures[$fallback];
  569. }
  570. }