Event Tickets - Version 5.0.4

Version Description

Download this release

Release Info

Developer bordoni
Plugin Icon 128x128 Event Tickets
Version 5.0.4
Comparing to
See all releases

Code changes from version 5.0.3.1 to 5.0.4

Files changed (214) hide show
  1. common/lang/tribe-common.pot +121 -121
  2. common/src/Tribe/Admin/Activation_Page.php +13 -13
  3. common/src/Tribe/Admin/Help_Page.php +126 -111
  4. common/src/Tribe/Admin/Live_Date_Preview.php +5 -5
  5. common/src/Tribe/Admin/Notice/Marketing.php +8 -8
  6. common/src/Tribe/Admin/Notice/Php_Version.php +4 -4
  7. common/src/Tribe/Admin/Notice/Plugin_Download.php +7 -7
  8. common/src/Tribe/Admin/Notice/Plugin_Upgrade_Notice.php +1 -1
  9. common/src/Tribe/Admin/Notices.php +25 -25
  10. common/src/Tribe/Ajax/Dropdown.php +14 -14
  11. common/src/Tribe/Ajax/Operations.php +2 -2
  12. common/src/Tribe/App_Shop.php +23 -13
  13. common/src/Tribe/Asset/Data.php +67 -67
  14. common/src/Tribe/Assets.php +2 -2
  15. common/src/Tribe/Assets_Pipeline.php +1 -1
  16. common/src/Tribe/Autoloader.php +4 -4
  17. common/src/Tribe/Cache.php +36 -0
  18. common/src/Tribe/Changelog_Reader.php +2 -2
  19. common/src/Tribe/Context.php +18 -17
  20. common/src/Tribe/Cost_Utils.php +27 -22
  21. common/src/Tribe/Credits.php +5 -5
  22. common/src/Tribe/Customizer.php +98 -31
  23. common/src/Tribe/Customizer/Control.php +20 -0
  24. common/src/Tribe/Customizer/Controls/Heading.php +52 -0
  25. common/src/Tribe/Customizer/Section.php +10 -10
  26. common/src/Tribe/Data.php +1 -1
  27. common/src/Tribe/Date_Utils.php +40 -40
  28. common/src/Tribe/Debug.php +1 -1
  29. common/src/Tribe/Dependency.php +15 -15
  30. common/src/Tribe/Deprecation.php +16 -16
  31. common/src/Tribe/Dialog/View.php +12 -0
  32. common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php +15 -15
  33. common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php +22 -22
  34. common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php +18 -18
  35. common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php +17 -17
  36. common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php +32 -32
  37. common/src/Tribe/Duplicate/Post.php +14 -14
  38. common/src/Tribe/Duplicate/Strategy/Base.php +1 -1
  39. common/src/Tribe/Duplicate/Strategy/Like.php +2 -2
  40. common/src/Tribe/Duplicate/Strategy_Factory.php +3 -3
  41. common/src/Tribe/Editor.php +11 -9
  42. common/src/Tribe/Editor/Assets.php +94 -43
  43. common/src/Tribe/Editor/Blocks/Abstract.php +8 -12
  44. common/src/Tribe/Editor/Blocks/Interface.php +1 -1
  45. common/src/Tribe/Editor/Configuration.php +24 -24
  46. common/src/Tribe/Editor/Meta.php +24 -24
  47. common/src/Tribe/Editor/Provider.php +2 -2
  48. common/src/Tribe/Editor/Utils.php +2 -2
  49. common/src/Tribe/Error.php +4 -4
  50. common/src/Tribe/Exception.php +1 -1
  51. common/src/Tribe/Extension.php +6 -6
  52. common/src/Tribe/Extension_Loader.php +9 -5
  53. common/src/Tribe/Field.php +11 -11
  54. common/src/Tribe/JSON_LD/Abstract.php +14 -14
  55. common/src/Tribe/Languages/Locations.php +7 -7
  56. common/src/Tribe/Languages/Recaptcha_Map.php +2 -2
  57. common/src/Tribe/Log.php +14 -15
  58. common/src/Tribe/Log/Action_Logger.php +1 -1
  59. common/src/Tribe/Log/Admin.php +23 -23
  60. common/src/Tribe/Log/File_Logger.php +6 -12
  61. common/src/Tribe/Log/Logger.php +1 -1
  62. common/src/Tribe/Log/Null_Logger.php +4 -4
  63. common/src/Tribe/Log/Service_Provider.php +28 -0
  64. common/src/Tribe/Main.php +7 -9
  65. common/src/Tribe/Meta/Chunker.php +34 -34
  66. common/src/Tribe/Notices.php +1 -1
  67. common/src/Tribe/PUE/Notices.php +11 -11
  68. common/src/Tribe/PUE/Package_Handler.php +1 -1
  69. common/src/Tribe/PUE/Plugin_Info.php +4 -4
  70. common/src/Tribe/PUE/Utility.php +3 -3
  71. common/src/Tribe/Plugin_Meta_Links.php +8 -8
  72. common/src/Tribe/Plugins_API.php +135 -135
  73. common/src/Tribe/Post_History.php +4 -4
  74. common/src/Tribe/Promise.php +3 -3
  75. common/src/Tribe/Promoter/PUE.php +4 -4
  76. common/src/Tribe/REST/Post_Repository.php +16 -12
  77. common/src/Tribe/Repository.php +127 -120
  78. common/src/Tribe/Repository/Core_Read_Interface.php +2 -2
  79. common/src/Tribe/Repository/Decorator.php +5 -5
  80. common/src/Tribe/Repository/Query_Filters.php +100 -100
  81. common/src/Tribe/Rewrite.php +13 -11
  82. common/src/Tribe/Service_Providers/Debug_Bar.php +3 -3
  83. common/src/Tribe/Service_Providers/Processes.php +11 -11
  84. common/src/Tribe/Service_Providers/Promoter.php +12 -12
  85. common/src/Tribe/Settings.php +27 -27
  86. common/src/Tribe/Settings_Manager.php +23 -17
  87. common/src/Tribe/Settings_Tab.php +12 -12
  88. common/src/Tribe/Simple_Table.php +3 -3
  89. common/src/Tribe/Support.php +21 -21
  90. common/src/Tribe/Support/Obfuscator.php +2 -2
  91. common/src/Tribe/Support/Template_Checker.php +6 -7
  92. common/src/Tribe/Support/Template_Checker_Report.php +2 -2
  93. common/src/Tribe/Tabbed_View.php +7 -7
  94. common/src/Tribe/Tabbed_View/Tab.php +6 -6
  95. common/src/Tribe/Template.php +5 -4
  96. common/src/Tribe/Template_Factory.php +3 -3
  97. common/src/Tribe/Template_Part_Cache.php +3 -3
  98. common/src/Tribe/Templates.php +1 -1
  99. common/src/Tribe/Terms.php +1 -1
  100. common/src/Tribe/Timezones.php +5 -5
  101. common/src/Tribe/Tracker.php +17 -17
  102. common/src/Tribe/Updater.php +4 -4
  103. common/src/Tribe/Utils/Array.php +146 -0
  104. common/src/Tribe/Utils/Callback.php +8 -8
  105. common/src/Tribe/Utils/Collection.php +1 -1
  106. common/src/Tribe/Utils/Color.php +9 -9
  107. common/src/Tribe/Utils/Coordinates_Provider.php +3 -3
  108. common/src/Tribe/Utils/Element_Attributes.php +1 -1
  109. common/src/Tribe/Utils/Global_ID.php +8 -8
  110. common/src/Tribe/Utils/JSON.php +3 -3
  111. common/src/Tribe/Utils/Paths.php +63 -0
  112. common/src/Tribe/Utils/Plugins.php +3 -3
  113. common/src/Tribe/Utils/Post_Root_Pool.php +2 -2
  114. common/src/Tribe/Validate.php +6 -6
  115. common/src/Tribe/Validator/Base.php +1 -1
  116. common/src/Tribe/View_Helpers.php +10 -10
  117. common/src/Tribe/Widget/Widget_Abstract.php +199 -14
  118. common/src/Tribe/Widget/Widget_Interface.php +37 -3
  119. common/src/admin-views/notices/tribe-bf-general.php +1 -1
  120. common/src/admin-views/tribe-options-display.php +48 -47
  121. common/src/admin-views/tribe-options-help.php +37 -7
  122. common/src/admin-views/tribe-options-licenses.php +10 -10
  123. common/src/admin-views/tribe-options-network.php +15 -15
  124. common/src/functions/query.php +1 -1
  125. common/src/functions/template-tags/date.php +6 -6
  126. common/src/functions/template-tags/general.php +12 -12
  127. common/src/functions/template-tags/html.php +80 -0
  128. common/src/functions/utils.php +1 -1
  129. common/src/resources/css/common-full.min.css +1 -1
  130. common/src/resources/css/common-skeleton.min.css +1 -1
  131. common/src/resources/css/tribe-common-admin.min.css +1 -1
  132. common/src/resources/images/mascot.png +0 -0
  133. common/src/resources/js/admin-log-controls.js +3 -3
  134. common/src/resources/js/admin-log-controls.min.js +1 -1
  135. common/src/resources/js/admin/help-page.js +6 -3
  136. common/src/resources/js/dependency.js +1 -1
  137. common/src/resources/js/dropdowns.js +2 -2
  138. common/src/resources/js/dropdowns.min.js +1 -1
  139. common/src/views/dialog/button.php +14 -4
  140. common/src/views/v2/components/icons/arrow-right.php +23 -0
  141. common/src/views/v2/components/icons/caret-down.php +23 -0
  142. common/src/views/v2/components/icons/close-alt.php +2 -2
  143. common/src/views/v2/components/icons/close.php +2 -2
  144. common/src/views/v2/components/icons/day.php +23 -0
  145. common/src/views/v2/components/icons/dot.php +23 -0
  146. common/src/views/v2/components/icons/error.php +23 -0
  147. common/src/views/v2/components/icons/featured.php +23 -0
  148. common/src/views/v2/components/icons/filter.php +2 -2
  149. common/src/views/v2/components/icons/list.php +23 -0
  150. common/src/views/v2/components/icons/location.php +23 -0
  151. common/src/views/v2/components/icons/mail.php +23 -0
  152. common/src/views/v2/components/icons/map-pin.php +23 -0
  153. common/src/views/v2/components/icons/map.php +23 -0
  154. common/src/views/v2/components/icons/messages-not-found.php +23 -0
  155. common/src/views/v2/components/icons/minus.php +2 -2
  156. common/src/views/v2/components/icons/month.php +23 -0
  157. common/src/views/v2/components/icons/no-map.php +23 -0
  158. common/src/views/v2/components/icons/phone.php +23 -0
  159. common/src/views/v2/components/icons/photo.php +23 -0
  160. common/src/views/v2/components/icons/play.php +23 -0
  161. common/src/views/v2/components/icons/plus.php +5 -5
  162. common/src/views/v2/components/icons/recurring.php +23 -0
  163. common/src/views/v2/components/icons/reset.php +2 -2
  164. common/src/views/v2/components/icons/search.php +23 -0
  165. common/src/views/v2/components/icons/video.php +23 -0
  166. common/src/views/v2/components/icons/virtual.php +23 -0
  167. common/src/views/v2/components/icons/website.php +23 -0
  168. common/src/views/v2/components/icons/week.php +23 -0
  169. common/vendor/autoload.php +1 -1
  170. common/vendor/autoload_52.php +1 -1
  171. common/vendor/composer/autoload_classmap.php +3 -0
  172. common/vendor/composer/autoload_real.php +4 -4
  173. common/vendor/composer/autoload_real_52.php +3 -3
  174. common/vendor/composer/autoload_static.php +8 -5
  175. common/vendor/composer/installed.json +6 -6
  176. common/vendor/faction23/a11y-dialog/a11y-dialog.min.js +1 -1
  177. common/vendor/lucatume/di52/src/tad/DI52/Container.php +34 -15
  178. common/vendor/lucatume/di52/src/tad/DI52/closuresSupport.php +17 -10
  179. event-tickets.php +1 -1
  180. lang/event-tickets-de_DE.mo +0 -0
  181. lang/event-tickets-es_ES.mo +0 -0
  182. lang/event-tickets-ro_RO.mo +0 -0
  183. lang/event-tickets-sv_SE.mo +0 -0
  184. lang/event-tickets.pot +340 -259
  185. readme.txt +24 -4
  186. src/Tribe/Admin/Notices.php +91 -13
  187. src/Tribe/Attendees.php +20 -8
  188. src/Tribe/Commerce/PayPal/Main.php +4 -0
  189. src/Tribe/Editor.php +13 -13
  190. src/Tribe/Editor/Configuration.php +36 -18
  191. src/Tribe/Editor/Provider.php +32 -12
  192. src/Tribe/Editor/Template/Overwrite.php +2 -1
  193. src/Tribe/Editor/Warnings.php +127 -0
  194. src/Tribe/Main.php +1 -1
  195. src/Tribe/Metabox.php +2 -2
  196. src/Tribe/Tickets.php +1 -1
  197. src/admin-views/admin-welcome-message.php +36 -12
  198. src/admin-views/editor/fieldset/advanced.php +20 -169
  199. src/admin-views/editor/fieldset/settings-provider.php +18 -20
  200. src/admin-views/editor/panel/ticket.php +274 -21
  201. src/admin-views/tribe-options-tickets.php +11 -1
  202. src/modules/blocks/attendees/index.js +1 -0
  203. src/modules/blocks/rsvp/index.js +1 -0
  204. src/modules/blocks/ticket/index.js +1 -0
  205. src/modules/blocks/tickets/controls/template.js +1 -1
  206. src/modules/blocks/tickets/index.js +1 -0
  207. src/modules/data/blocks/rsvp/reducers/details.js +3 -1
  208. src/modules/data/blocks/rsvp/sagas.js +0 -1
  209. src/modules/data/blocks/ticket/reducers/tickets/ticket/details.js +3 -1
  210. src/modules/data/blocks/ticket/reducers/tickets/ticket/temp-details.js +3 -1
  211. src/resources/css/tickets-admin.css +31 -4
  212. src/resources/css/tickets-admin.min.css +1 -1
  213. src/resources/js/app/blocks.js +21 -15
  214. src/resources/js/app/blocks.min.js +1 -1
common/lang/tribe-common.pot CHANGED
@@ -2,13 +2,13 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Tribe Common 4.12.13\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
- "POT-Creation-Date: 2020-11-17 16:56:19+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2020-11-17 16:56\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
@@ -28,7 +28,7 @@ msgstr ""
28
  msgid "Return to WordPress Updates"
29
  msgstr ""
30
 
31
- #: src/Tribe/Admin/Help_Page.php:56 src/admin-views/tribe-options-help.php:50
32
  msgid "Copy to clipboard"
33
  msgstr ""
34
 
@@ -40,7 +40,7 @@ msgstr ""
40
  msgid "Press \"Cmd + C\" to copy"
41
  msgstr ""
42
 
43
- #: src/Tribe/Admin/Help_Page.php:79 src/Tribe/Customizer.php:558
44
  #: src/Tribe/Plugins_API.php:25
45
  msgid "The Events Calendar"
46
  msgstr ""
@@ -51,128 +51,128 @@ msgid ""
51
  "easily share your events."
52
  msgstr ""
53
 
54
- #: src/Tribe/Admin/Help_Page.php:95 src/Tribe/Plugins_API.php:76
55
  msgid "Event Tickets"
56
  msgstr ""
57
 
58
- #: src/Tribe/Admin/Help_Page.php:99
59
  msgid ""
60
  "Events Tickets is a carefully crafted, extensible plugin that lets you "
61
  "easily sell tickets for your events."
62
  msgstr ""
63
 
64
- #: src/Tribe/Admin/Help_Page.php:111
65
  msgid "Advanced Post Manager"
66
  msgstr ""
67
 
68
- #: src/Tribe/Admin/Help_Page.php:115
69
  msgid ""
70
  "Turbo charge your posts admin for any custom post type with sortable filters "
71
  "and columns, and auto-registration of metaboxes."
72
  msgstr ""
73
 
74
- #: src/Tribe/Admin/Help_Page.php:190
75
  msgid " and "
76
  msgstr ""
77
 
78
- #: src/Tribe/Admin/Help_Page.php:214
79
  msgid "Events Calendar PRO"
80
  msgstr ""
81
 
82
- #: src/Tribe/Admin/Help_Page.php:223 src/Tribe/Plugins_API.php:179
83
  msgid "Eventbrite Tickets"
84
  msgstr ""
85
 
86
- #: src/Tribe/Admin/Help_Page.php:231 src/Tribe/Plugins_API.php:144
87
  msgid "Community Events"
88
  msgstr ""
89
 
90
- #: src/Tribe/Admin/Help_Page.php:239 src/Tribe/Plugins_API.php:42
91
  msgid "Event Aggregator"
92
  msgstr ""
93
 
94
- #: src/Tribe/Admin/Help_Page.php:247 src/Tribe/Plugins_API.php:127
95
  msgid "Filter Bar"
96
  msgstr ""
97
 
98
- #: src/Tribe/Admin/Help_Page.php:255 src/Tribe/Plugins_API.php:213
99
  msgid "Virtual Events"
100
  msgstr ""
101
 
102
- #: src/Tribe/Admin/Help_Page.php:263 src/Tribe/Plugins_API.php:93
103
  msgid "Event Tickets Plus"
104
  msgstr ""
105
 
106
- #: src/Tribe/Admin/Help_Page.php:272 src/Tribe/Plugins_API.php:161
107
  msgid "Community Tickets"
108
  msgstr ""
109
 
110
- #: src/Tribe/Admin/Help_Page.php:433
111
  msgctxt "not available"
112
  msgid "n/a"
113
  msgstr ""
114
 
115
- #: src/Tribe/Admin/Help_Page.php:441
116
  msgid "You need to upgrade!"
117
  msgstr ""
118
 
119
- #: src/Tribe/Admin/Help_Page.php:441 src/Tribe/Admin/Help_Page.php:816
120
  msgid "You are up to date!"
121
  msgstr ""
122
 
123
- #: src/Tribe/Admin/Help_Page.php:806
124
  msgid "Activate %s"
125
  msgstr ""
126
 
127
- #: src/Tribe/Admin/Help_Page.php:806
128
  msgid "Activate Plugin"
129
  msgstr ""
130
 
131
- #: src/Tribe/Admin/Help_Page.php:814
132
  msgid "Upgrade Plugin"
133
  msgstr ""
134
 
135
- #: src/Tribe/Admin/Help_Page.php:830
136
  msgid "Install %s"
137
  msgstr ""
138
 
139
- #: src/Tribe/Admin/Help_Page.php:830
140
  msgid "Install Plugin"
141
  msgstr ""
142
 
143
- #: src/Tribe/Admin/Help_Page.php:847
144
  msgid "Latest Version:"
145
  msgstr ""
146
 
147
- #: src/Tribe/Admin/Help_Page.php:850
148
  msgid "Requires:"
149
  msgstr ""
150
 
151
- #: src/Tribe/Admin/Help_Page.php:851
152
  msgid "WordPress "
153
  msgstr ""
154
 
155
- #: src/Tribe/Admin/Help_Page.php:853
156
  msgid "Active Users:"
157
  msgstr ""
158
 
159
- #: src/Tribe/Admin/Help_Page.php:856
160
  msgid "Rating:"
161
  msgstr ""
162
 
163
- #: src/Tribe/Admin/Help_Page.php:875
164
  msgid "Premium Add-Ons"
165
  msgstr ""
166
 
167
- #: src/Tribe/Admin/Help_Page.php:881
168
  msgid "Plugin Active"
169
  msgstr ""
170
 
171
- #: src/Tribe/Admin/Help_Page.php:883
172
  msgid "Plugin Inactive"
173
  msgstr ""
174
 
175
- #: src/Tribe/Admin/Help_Page.php:888
176
  msgid "Visit the Add-on Page"
177
  msgstr ""
178
 
@@ -236,135 +236,135 @@ msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance."
236
  msgstr ""
237
 
238
  #: src/Tribe/App_Shop.php:50 src/Tribe/App_Shop.php:51
239
- #: src/Tribe/App_Shop.php:72
240
  msgid "Event Add-Ons"
241
  msgstr ""
242
 
243
- #: src/Tribe/App_Shop.php:165
244
  msgid "Events Marketing Bundle"
245
  msgstr ""
246
 
247
- #: src/Tribe/App_Shop.php:168 src/Tribe/App_Shop.php:192
248
- #: src/Tribe/App_Shop.php:211 src/Tribe/App_Shop.php:224
249
  msgid "Save over 20%"
250
  msgstr ""
251
 
252
- #: src/Tribe/App_Shop.php:169
253
  msgid "Ticket sales, attendee management, and email marketing for your events"
254
  msgstr ""
255
 
256
- #: src/Tribe/App_Shop.php:177
257
  msgid "Event Importer Bundle"
258
  msgstr ""
259
 
260
- #: src/Tribe/App_Shop.php:180
261
  msgid "Save over 25%"
262
  msgstr ""
263
 
264
- #: src/Tribe/App_Shop.php:181
265
  msgid ""
266
  "Fill your calendar with events from across the web, including Google "
267
  "Calendar, Meetup, and more."
268
  msgstr ""
269
 
270
- #: src/Tribe/App_Shop.php:189
271
  msgid "Virtual Events Marketing Bundle"
272
  msgstr ""
273
 
274
- #: src/Tribe/App_Shop.php:193
275
  msgid "Streamline your online events and increase revenue."
276
  msgstr ""
277
 
278
- #: src/Tribe/App_Shop.php:201
279
  msgid "Sell tickets and earn revenue for online events"
280
  msgstr ""
281
 
282
- #: src/Tribe/App_Shop.php:202 src/Tribe/Plugins_API.php:218
283
  msgid "Zoom integration"
284
  msgstr ""
285
 
286
- #: src/Tribe/App_Shop.php:203
287
  msgid "Automated emails optimized for virtual events"
288
  msgstr ""
289
 
290
- #: src/Tribe/App_Shop.php:204
291
  msgid "Add recurring events"
292
  msgstr ""
293
 
294
- #: src/Tribe/App_Shop.php:208
295
  msgid "Community Manager Bundle"
296
  msgstr ""
297
 
298
- #: src/Tribe/App_Shop.php:212
299
  msgid ""
300
  "Handle event submissions with ticket sales and everything you need to build "
301
  "a robust community."
302
  msgstr ""
303
 
304
- #: src/Tribe/App_Shop.php:221
305
  msgid "Ultimate Bundle"
306
  msgstr ""
307
 
308
- #: src/Tribe/App_Shop.php:225
309
  msgid "All of our premium events management plugins at a deep discount."
310
  msgstr ""
311
 
312
- #: src/Tribe/App_Shop.php:252
313
  msgid "Website URL CTA"
314
  msgstr ""
315
 
316
- #: src/Tribe/App_Shop.php:255
317
  msgid ""
318
  "Create a strong call-to-action for attendees to \"Join Webinar\" instead of "
319
  "only sharing a website address."
320
  msgstr ""
321
 
322
- #: src/Tribe/App_Shop.php:258
323
  msgid "Link Directly to Webinar"
324
  msgstr ""
325
 
326
- #: src/Tribe/App_Shop.php:261
327
  msgid ""
328
  "When users click on the event title, they’ll be taken right to the source of "
329
  "your event, offering a direct route to join."
330
  msgstr ""
331
 
332
- #: src/Tribe/App_Shop.php:264
333
  msgid "Events Happening Now"
334
  msgstr ""
335
 
336
- #: src/Tribe/App_Shop.php:267
337
  msgid ""
338
  "Use this shortcode to display events that are currently in progress, like "
339
  "webinars and livestreams."
340
  msgstr ""
341
 
342
- #: src/Tribe/App_Shop.php:270
343
  msgid "Custom Venue Links"
344
  msgstr ""
345
 
346
- #: src/Tribe/App_Shop.php:273
347
  msgid ""
348
  "Turn the venue name for your event into a clickable URL — a great way to "
349
  "link directly to a venue’s website or a virtual meeting."
350
  msgstr ""
351
 
352
- #: src/Tribe/App_Shop.php:276
353
  msgid "Adjust Label"
354
  msgstr ""
355
 
356
- #: src/Tribe/App_Shop.php:279
357
  msgid ""
358
  "Change \"Events\" to \"Webinars,\" or \"Venues\" to \"Livestream,\" or "
359
  "\"Organizers\" to \"Hosts.\" Tailor your calendar for virtual events and "
360
  "meetings."
361
  msgstr ""
362
 
363
- #: src/Tribe/App_Shop.php:282
364
  msgid "Reach Attendees"
365
  msgstr ""
366
 
367
- #: src/Tribe/App_Shop.php:285
368
  msgid ""
369
  "From registration to attendance history, view every step of the event "
370
  "lifecycle with this HubSpot integration."
@@ -386,7 +386,7 @@ msgstr ""
386
  msgid "Rate %1$sEvent Tickets%2$s %3$s"
387
  msgstr ""
388
 
389
- #: src/Tribe/Customizer.php:559
390
  msgid ""
391
  "Use the following panel of your customizer to change the styling of your "
392
  "Calendar and Event pages."
@@ -430,31 +430,31 @@ msgstr ""
430
  msgid "Modern Tribe JSON-LD Data"
431
  msgstr ""
432
 
433
- #: src/Tribe/Dialog/View.php:153
434
  msgid "Open the modal window"
435
  msgstr ""
436
 
437
- #: src/Tribe/Dialog/View.php:154
438
  msgid "Close this modal window"
439
  msgstr ""
440
 
441
- #: src/Tribe/Dialog/View.php:222
442
  msgid "Cancel"
443
  msgstr ""
444
 
445
- #: src/Tribe/Dialog/View.php:223
446
  msgid "Confirm"
447
  msgstr ""
448
 
449
- #: src/Tribe/Dialog/View.php:288
450
  msgid "OK"
451
  msgstr ""
452
 
453
- #: src/Tribe/Dialog/View.php:355
454
  msgid "Open the dialog window"
455
  msgstr ""
456
 
457
- #: src/Tribe/Dialog/View.php:369
458
  msgid "Close this dialog window"
459
  msgstr ""
460
 
@@ -570,7 +570,7 @@ msgstr ""
570
  msgid "A list of links to the term own, archive and parent REST URL"
571
  msgstr ""
572
 
573
- #: src/Tribe/Editor/Blocks/Abstract.php:127
574
  msgid "Problem loading the block, please remove this block to restart."
575
  msgstr ""
576
 
@@ -1845,107 +1845,107 @@ msgstr ""
1845
  msgid "Null logger (will log nothing)"
1846
  msgstr ""
1847
 
1848
- #: src/Tribe/Log.php:289
1849
  msgid "Cannot set %s as the current logging engine"
1850
  msgstr ""
1851
 
1852
- #: src/Tribe/Log.php:388
1853
  msgid "Disabled"
1854
  msgstr ""
1855
 
1856
- #: src/Tribe/Log.php:389
1857
  msgid "Only errors"
1858
  msgstr ""
1859
 
1860
- #: src/Tribe/Log.php:390
1861
  msgid "Warnings and errors"
1862
  msgstr ""
1863
 
1864
- #: src/Tribe/Log.php:391
1865
  msgid "Full debug (all events)"
1866
  msgstr ""
1867
 
1868
- #: src/Tribe/Main.php:315
1869
  msgid ": activate to sort column ascending"
1870
  msgstr ""
1871
 
1872
- #: src/Tribe/Main.php:316
1873
  msgid ": activate to sort column descending"
1874
  msgstr ""
1875
 
1876
- #: src/Tribe/Main.php:318
1877
  msgid "Show _MENU_ entries"
1878
  msgstr ""
1879
 
1880
- #: src/Tribe/Main.php:319
1881
  msgid "No data available in table"
1882
  msgstr ""
1883
 
1884
- #: src/Tribe/Main.php:320
1885
  msgid "Showing _START_ to _END_ of _TOTAL_ entries"
1886
  msgstr ""
1887
 
1888
- #: src/Tribe/Main.php:321
1889
  msgid "Showing 0 to 0 of 0 entries"
1890
  msgstr ""
1891
 
1892
- #: src/Tribe/Main.php:322
1893
  msgid "(filtered from _MAX_ total entries)"
1894
  msgstr ""
1895
 
1896
- #: src/Tribe/Main.php:323
1897
  msgid "No matching records found"
1898
  msgstr ""
1899
 
1900
- #: src/Tribe/Main.php:324
1901
  msgid "Search:"
1902
  msgstr ""
1903
 
1904
- #: src/Tribe/Main.php:325
1905
  msgid "All items on this page were selected. "
1906
  msgstr ""
1907
 
1908
- #: src/Tribe/Main.php:326
1909
  msgid "Select all pages"
1910
  msgstr ""
1911
 
1912
- #: src/Tribe/Main.php:327
1913
  msgid "Clear Selection."
1914
  msgstr ""
1915
 
1916
- #: src/Tribe/Main.php:329
1917
  msgid "All"
1918
  msgstr ""
1919
 
1920
- #: src/Tribe/Main.php:330 src/Tribe/Main.php:347
1921
  msgid "Next"
1922
  msgstr ""
1923
 
1924
- #: src/Tribe/Main.php:331
1925
  msgid "Previous"
1926
  msgstr ""
1927
 
1928
- #: src/Tribe/Main.php:336
1929
  msgid ": Selected %d rows"
1930
  msgstr ""
1931
 
1932
- #: src/Tribe/Main.php:337
1933
  msgid ": Selected 1 row"
1934
  msgstr ""
1935
 
1936
- #: src/Tribe/Main.php:348
1937
  msgid "Prev"
1938
  msgstr ""
1939
 
1940
- #: src/Tribe/Main.php:349 src/Tribe/Main.php:351
1941
  msgid "Today"
1942
  msgstr ""
1943
 
1944
- #: src/Tribe/Main.php:350
1945
  msgid "Done"
1946
  msgstr ""
1947
 
1948
- #: src/Tribe/Main.php:352
1949
  msgid "Clear"
1950
  msgstr ""
1951
 
@@ -2432,16 +2432,16 @@ msgstr ""
2432
  msgid "Display"
2433
  msgstr ""
2434
 
2435
- #: src/Tribe/Settings_Manager.php:254
2436
  msgid "Network"
2437
  msgstr ""
2438
 
2439
- #: src/Tribe/Settings_Manager.php:288
2440
  #: src/admin-views/tribe-options-licenses.php:57
2441
  msgid "Licenses"
2442
  msgstr ""
2443
 
2444
- #: src/Tribe/Settings_Manager.php:318
2445
  msgid "Help"
2446
  msgstr ""
2447
 
@@ -2741,22 +2741,22 @@ msgstr ""
2741
  msgid "Download log"
2742
  msgstr ""
2743
 
2744
- #: src/admin-views/tribe-options-display.php:22
2745
  msgid "Date Format Settings"
2746
  msgstr ""
2747
 
2748
- #: src/admin-views/tribe-options-display.php:28
2749
  msgid ""
2750
  "The following three fields accept the date format options available to the "
2751
  "PHP %1$s function. <a href=\"%2$s\" target=\"_blank\">Learn how to make your "
2752
  "own date format here</a>."
2753
  msgstr ""
2754
 
2755
- #: src/admin-views/tribe-options-display.php:36
2756
  msgid "Compact Date Format"
2757
  msgstr ""
2758
 
2759
- #: src/admin-views/tribe-options-display.php:37
2760
  msgid ""
2761
  "Select the date format used for elements with minimal space, such as in "
2762
  "datepickers."
@@ -2867,28 +2867,28 @@ msgid ""
2867
  "steps:"
2868
  msgstr ""
2869
 
2870
- #: src/admin-views/tribe-options-help.php:31
2871
  msgid ""
2872
  "%s. All of the common (and not-so-common) answers to questions we see are "
2873
  "here. It’s often the fastest path to finding an answer!"
2874
  msgstr ""
2875
 
2876
- #: src/admin-views/tribe-options-help.php:31
2877
  msgid "Check our Knowledgebase"
2878
  msgstr ""
2879
 
2880
- #: src/admin-views/tribe-options-help.php:32
2881
  msgid ""
2882
  "%s. Testing for an existing conflict is the best start for in-depth "
2883
  "troubleshooting. We will often ask you to follow these steps when opening a "
2884
  "new thread, so doing this ahead of time will be super helpful."
2885
  msgstr ""
2886
 
2887
- #: src/admin-views/tribe-options-help.php:32
2888
  msgid "Test for a theme or plugin conflict"
2889
  msgstr ""
2890
 
2891
- #: src/admin-views/tribe-options-help.php:33
2892
  msgid ""
2893
  "%s. There are very few issues we haven’t seen and it’s likely another user "
2894
  "has already asked your question and gotten an answer from our support staff. "
@@ -2896,25 +2896,25 @@ msgid ""
2896
  "for anyone to search and review."
2897
  msgstr ""
2898
 
2899
- #: src/admin-views/tribe-options-help.php:33
2900
  msgid "Search our support help desk"
2901
  msgstr ""
2902
 
2903
- #: src/admin-views/tribe-options-help.php:37
2904
  msgid ""
2905
  "Please note that all hands-on support is provided via the help desk. You can "
2906
  "email or tweet at us… ​but we will probably point you back to the help desk 😄"
2907
  msgstr ""
2908
 
2909
- #: src/admin-views/tribe-options-help.php:38
2910
  msgid "Read more about our support policy"
2911
  msgstr ""
2912
 
2913
- #: src/admin-views/tribe-options-help.php:41
2914
  msgid "System Information"
2915
  msgstr ""
2916
 
2917
- #: src/admin-views/tribe-options-help.php:42
2918
  msgid ""
2919
  "The details of your calendar plugin and settings is often needed for you or "
2920
  "our staff to help troubleshoot an issue. Please opt-in below to "
@@ -2922,19 +2922,19 @@ msgid ""
2922
  "allow us to assist you faster if you post in our help desk."
2923
  msgstr ""
2924
 
2925
- #: src/admin-views/tribe-options-help.php:52
2926
  msgid "Recent Template Changes"
2927
  msgstr ""
2928
 
2929
- #: src/admin-views/tribe-options-help.php:55
2930
  msgid "Event Log"
2931
  msgstr ""
2932
 
2933
- #: src/admin-views/tribe-options-help.php:74
2934
  msgid "News and Tutorials"
2935
  msgstr ""
2936
 
2937
- #: src/admin-views/tribe-options-help.php:80
2938
  msgid "More..."
2939
  msgstr ""
2940
 
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Tribe Common 4.12.15\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
+ "POT-Creation-Date: 2020-12-11 06:24:08+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2020-12-11 06:24\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
28
  msgid "Return to WordPress Updates"
29
  msgstr ""
30
 
31
+ #: src/Tribe/Admin/Help_Page.php:56 src/admin-views/tribe-options-help.php:80
32
  msgid "Copy to clipboard"
33
  msgstr ""
34
 
40
  msgid "Press \"Cmd + C\" to copy"
41
  msgstr ""
42
 
43
+ #: src/Tribe/Admin/Help_Page.php:79 src/Tribe/Customizer.php:625
44
  #: src/Tribe/Plugins_API.php:25
45
  msgid "The Events Calendar"
46
  msgstr ""
51
  "easily share your events."
52
  msgstr ""
53
 
54
+ #: src/Tribe/Admin/Help_Page.php:98 src/Tribe/Plugins_API.php:76
55
  msgid "Event Tickets"
56
  msgstr ""
57
 
58
+ #: src/Tribe/Admin/Help_Page.php:102
59
  msgid ""
60
  "Events Tickets is a carefully crafted, extensible plugin that lets you "
61
  "easily sell tickets for your events."
62
  msgstr ""
63
 
64
+ #: src/Tribe/Admin/Help_Page.php:117
65
  msgid "Advanced Post Manager"
66
  msgstr ""
67
 
68
+ #: src/Tribe/Admin/Help_Page.php:121
69
  msgid ""
70
  "Turbo charge your posts admin for any custom post type with sortable filters "
71
  "and columns, and auto-registration of metaboxes."
72
  msgstr ""
73
 
74
+ #: src/Tribe/Admin/Help_Page.php:199
75
  msgid " and "
76
  msgstr ""
77
 
78
+ #: src/Tribe/Admin/Help_Page.php:223
79
  msgid "Events Calendar PRO"
80
  msgstr ""
81
 
82
+ #: src/Tribe/Admin/Help_Page.php:232 src/Tribe/Plugins_API.php:179
83
  msgid "Eventbrite Tickets"
84
  msgstr ""
85
 
86
+ #: src/Tribe/Admin/Help_Page.php:240 src/Tribe/Plugins_API.php:144
87
  msgid "Community Events"
88
  msgstr ""
89
 
90
+ #: src/Tribe/Admin/Help_Page.php:248 src/Tribe/Plugins_API.php:42
91
  msgid "Event Aggregator"
92
  msgstr ""
93
 
94
+ #: src/Tribe/Admin/Help_Page.php:258 src/Tribe/Plugins_API.php:127
95
  msgid "Filter Bar"
96
  msgstr ""
97
 
98
+ #: src/Tribe/Admin/Help_Page.php:266 src/Tribe/Plugins_API.php:213
99
  msgid "Virtual Events"
100
  msgstr ""
101
 
102
+ #: src/Tribe/Admin/Help_Page.php:274 src/Tribe/Plugins_API.php:93
103
  msgid "Event Tickets Plus"
104
  msgstr ""
105
 
106
+ #: src/Tribe/Admin/Help_Page.php:283 src/Tribe/Plugins_API.php:161
107
  msgid "Community Tickets"
108
  msgstr ""
109
 
110
+ #: src/Tribe/Admin/Help_Page.php:444
111
  msgctxt "not available"
112
  msgid "n/a"
113
  msgstr ""
114
 
115
+ #: src/Tribe/Admin/Help_Page.php:452
116
  msgid "You need to upgrade!"
117
  msgstr ""
118
 
119
+ #: src/Tribe/Admin/Help_Page.php:452 src/Tribe/Admin/Help_Page.php:827
120
  msgid "You are up to date!"
121
  msgstr ""
122
 
123
+ #: src/Tribe/Admin/Help_Page.php:817
124
  msgid "Activate %s"
125
  msgstr ""
126
 
127
+ #: src/Tribe/Admin/Help_Page.php:817
128
  msgid "Activate Plugin"
129
  msgstr ""
130
 
131
+ #: src/Tribe/Admin/Help_Page.php:825
132
  msgid "Upgrade Plugin"
133
  msgstr ""
134
 
135
+ #: src/Tribe/Admin/Help_Page.php:841
136
  msgid "Install %s"
137
  msgstr ""
138
 
139
+ #: src/Tribe/Admin/Help_Page.php:841
140
  msgid "Install Plugin"
141
  msgstr ""
142
 
143
+ #: src/Tribe/Admin/Help_Page.php:858
144
  msgid "Latest Version:"
145
  msgstr ""
146
 
147
+ #: src/Tribe/Admin/Help_Page.php:861
148
  msgid "Requires:"
149
  msgstr ""
150
 
151
+ #: src/Tribe/Admin/Help_Page.php:862
152
  msgid "WordPress "
153
  msgstr ""
154
 
155
+ #: src/Tribe/Admin/Help_Page.php:864
156
  msgid "Active Users:"
157
  msgstr ""
158
 
159
+ #: src/Tribe/Admin/Help_Page.php:867
160
  msgid "Rating:"
161
  msgstr ""
162
 
163
+ #: src/Tribe/Admin/Help_Page.php:890
164
  msgid "Premium Add-Ons"
165
  msgstr ""
166
 
167
+ #: src/Tribe/Admin/Help_Page.php:896
168
  msgid "Plugin Active"
169
  msgstr ""
170
 
171
+ #: src/Tribe/Admin/Help_Page.php:898
172
  msgid "Plugin Inactive"
173
  msgstr ""
174
 
175
+ #: src/Tribe/Admin/Help_Page.php:903
176
  msgid "Visit the Add-on Page"
177
  msgstr ""
178
 
236
  msgstr ""
237
 
238
  #: src/Tribe/App_Shop.php:50 src/Tribe/App_Shop.php:51
239
+ #: src/Tribe/App_Shop.php:82
240
  msgid "Event Add-Ons"
241
  msgstr ""
242
 
243
+ #: src/Tribe/App_Shop.php:175
244
  msgid "Events Marketing Bundle"
245
  msgstr ""
246
 
247
+ #: src/Tribe/App_Shop.php:178 src/Tribe/App_Shop.php:202
248
+ #: src/Tribe/App_Shop.php:221 src/Tribe/App_Shop.php:234
249
  msgid "Save over 20%"
250
  msgstr ""
251
 
252
+ #: src/Tribe/App_Shop.php:179
253
  msgid "Ticket sales, attendee management, and email marketing for your events"
254
  msgstr ""
255
 
256
+ #: src/Tribe/App_Shop.php:187
257
  msgid "Event Importer Bundle"
258
  msgstr ""
259
 
260
+ #: src/Tribe/App_Shop.php:190
261
  msgid "Save over 25%"
262
  msgstr ""
263
 
264
+ #: src/Tribe/App_Shop.php:191
265
  msgid ""
266
  "Fill your calendar with events from across the web, including Google "
267
  "Calendar, Meetup, and more."
268
  msgstr ""
269
 
270
+ #: src/Tribe/App_Shop.php:199
271
  msgid "Virtual Events Marketing Bundle"
272
  msgstr ""
273
 
274
+ #: src/Tribe/App_Shop.php:203
275
  msgid "Streamline your online events and increase revenue."
276
  msgstr ""
277
 
278
+ #: src/Tribe/App_Shop.php:211
279
  msgid "Sell tickets and earn revenue for online events"
280
  msgstr ""
281
 
282
+ #: src/Tribe/App_Shop.php:212 src/Tribe/Plugins_API.php:218
283
  msgid "Zoom integration"
284
  msgstr ""
285
 
286
+ #: src/Tribe/App_Shop.php:213
287
  msgid "Automated emails optimized for virtual events"
288
  msgstr ""
289
 
290
+ #: src/Tribe/App_Shop.php:214
291
  msgid "Add recurring events"
292
  msgstr ""
293
 
294
+ #: src/Tribe/App_Shop.php:218
295
  msgid "Community Manager Bundle"
296
  msgstr ""
297
 
298
+ #: src/Tribe/App_Shop.php:222
299
  msgid ""
300
  "Handle event submissions with ticket sales and everything you need to build "
301
  "a robust community."
302
  msgstr ""
303
 
304
+ #: src/Tribe/App_Shop.php:231
305
  msgid "Ultimate Bundle"
306
  msgstr ""
307
 
308
+ #: src/Tribe/App_Shop.php:235
309
  msgid "All of our premium events management plugins at a deep discount."
310
  msgstr ""
311
 
312
+ #: src/Tribe/App_Shop.php:262
313
  msgid "Website URL CTA"
314
  msgstr ""
315
 
316
+ #: src/Tribe/App_Shop.php:265
317
  msgid ""
318
  "Create a strong call-to-action for attendees to \"Join Webinar\" instead of "
319
  "only sharing a website address."
320
  msgstr ""
321
 
322
+ #: src/Tribe/App_Shop.php:268
323
  msgid "Link Directly to Webinar"
324
  msgstr ""
325
 
326
+ #: src/Tribe/App_Shop.php:271
327
  msgid ""
328
  "When users click on the event title, they’ll be taken right to the source of "
329
  "your event, offering a direct route to join."
330
  msgstr ""
331
 
332
+ #: src/Tribe/App_Shop.php:274
333
  msgid "Events Happening Now"
334
  msgstr ""
335
 
336
+ #: src/Tribe/App_Shop.php:277
337
  msgid ""
338
  "Use this shortcode to display events that are currently in progress, like "
339
  "webinars and livestreams."
340
  msgstr ""
341
 
342
+ #: src/Tribe/App_Shop.php:280
343
  msgid "Custom Venue Links"
344
  msgstr ""
345
 
346
+ #: src/Tribe/App_Shop.php:283
347
  msgid ""
348
  "Turn the venue name for your event into a clickable URL — a great way to "
349
  "link directly to a venue’s website or a virtual meeting."
350
  msgstr ""
351
 
352
+ #: src/Tribe/App_Shop.php:286
353
  msgid "Adjust Label"
354
  msgstr ""
355
 
356
+ #: src/Tribe/App_Shop.php:289
357
  msgid ""
358
  "Change \"Events\" to \"Webinars,\" or \"Venues\" to \"Livestream,\" or "
359
  "\"Organizers\" to \"Hosts.\" Tailor your calendar for virtual events and "
360
  "meetings."
361
  msgstr ""
362
 
363
+ #: src/Tribe/App_Shop.php:292
364
  msgid "Reach Attendees"
365
  msgstr ""
366
 
367
+ #: src/Tribe/App_Shop.php:295
368
  msgid ""
369
  "From registration to attendance history, view every step of the event "
370
  "lifecycle with this HubSpot integration."
386
  msgid "Rate %1$sEvent Tickets%2$s %3$s"
387
  msgstr ""
388
 
389
+ #: src/Tribe/Customizer.php:626
390
  msgid ""
391
  "Use the following panel of your customizer to change the styling of your "
392
  "Calendar and Event pages."
430
  msgid "Modern Tribe JSON-LD Data"
431
  msgstr ""
432
 
433
+ #: src/Tribe/Dialog/View.php:157
434
  msgid "Open the modal window"
435
  msgstr ""
436
 
437
+ #: src/Tribe/Dialog/View.php:158
438
  msgid "Close this modal window"
439
  msgstr ""
440
 
441
+ #: src/Tribe/Dialog/View.php:228
442
  msgid "Cancel"
443
  msgstr ""
444
 
445
+ #: src/Tribe/Dialog/View.php:229
446
  msgid "Confirm"
447
  msgstr ""
448
 
449
+ #: src/Tribe/Dialog/View.php:296
450
  msgid "OK"
451
  msgstr ""
452
 
453
+ #: src/Tribe/Dialog/View.php:366
454
  msgid "Open the dialog window"
455
  msgstr ""
456
 
457
+ #: src/Tribe/Dialog/View.php:381
458
  msgid "Close this dialog window"
459
  msgstr ""
460
 
570
  msgid "A list of links to the term own, archive and parent REST URL"
571
  msgstr ""
572
 
573
+ #: src/Tribe/Editor/Blocks/Abstract.php:123
574
  msgid "Problem loading the block, please remove this block to restart."
575
  msgstr ""
576
 
1845
  msgid "Null logger (will log nothing)"
1846
  msgstr ""
1847
 
1848
+ #: src/Tribe/Log.php:288
1849
  msgid "Cannot set %s as the current logging engine"
1850
  msgstr ""
1851
 
1852
+ #: src/Tribe/Log.php:387
1853
  msgid "Disabled"
1854
  msgstr ""
1855
 
1856
+ #: src/Tribe/Log.php:388
1857
  msgid "Only errors"
1858
  msgstr ""
1859
 
1860
+ #: src/Tribe/Log.php:389
1861
  msgid "Warnings and errors"
1862
  msgstr ""
1863
 
1864
+ #: src/Tribe/Log.php:390
1865
  msgid "Full debug (all events)"
1866
  msgstr ""
1867
 
1868
+ #: src/Tribe/Main.php:310
1869
  msgid ": activate to sort column ascending"
1870
  msgstr ""
1871
 
1872
+ #: src/Tribe/Main.php:311
1873
  msgid ": activate to sort column descending"
1874
  msgstr ""
1875
 
1876
+ #: src/Tribe/Main.php:313
1877
  msgid "Show _MENU_ entries"
1878
  msgstr ""
1879
 
1880
+ #: src/Tribe/Main.php:314
1881
  msgid "No data available in table"
1882
  msgstr ""
1883
 
1884
+ #: src/Tribe/Main.php:315
1885
  msgid "Showing _START_ to _END_ of _TOTAL_ entries"
1886
  msgstr ""
1887
 
1888
+ #: src/Tribe/Main.php:316
1889
  msgid "Showing 0 to 0 of 0 entries"
1890
  msgstr ""
1891
 
1892
+ #: src/Tribe/Main.php:317
1893
  msgid "(filtered from _MAX_ total entries)"
1894
  msgstr ""
1895
 
1896
+ #: src/Tribe/Main.php:318
1897
  msgid "No matching records found"
1898
  msgstr ""
1899
 
1900
+ #: src/Tribe/Main.php:319
1901
  msgid "Search:"
1902
  msgstr ""
1903
 
1904
+ #: src/Tribe/Main.php:320
1905
  msgid "All items on this page were selected. "
1906
  msgstr ""
1907
 
1908
+ #: src/Tribe/Main.php:321
1909
  msgid "Select all pages"
1910
  msgstr ""
1911
 
1912
+ #: src/Tribe/Main.php:322
1913
  msgid "Clear Selection."
1914
  msgstr ""
1915
 
1916
+ #: src/Tribe/Main.php:324
1917
  msgid "All"
1918
  msgstr ""
1919
 
1920
+ #: src/Tribe/Main.php:325 src/Tribe/Main.php:342
1921
  msgid "Next"
1922
  msgstr ""
1923
 
1924
+ #: src/Tribe/Main.php:326
1925
  msgid "Previous"
1926
  msgstr ""
1927
 
1928
+ #: src/Tribe/Main.php:331
1929
  msgid ": Selected %d rows"
1930
  msgstr ""
1931
 
1932
+ #: src/Tribe/Main.php:332
1933
  msgid ": Selected 1 row"
1934
  msgstr ""
1935
 
1936
+ #: src/Tribe/Main.php:343
1937
  msgid "Prev"
1938
  msgstr ""
1939
 
1940
+ #: src/Tribe/Main.php:344 src/Tribe/Main.php:346
1941
  msgid "Today"
1942
  msgstr ""
1943
 
1944
+ #: src/Tribe/Main.php:345
1945
  msgid "Done"
1946
  msgstr ""
1947
 
1948
+ #: src/Tribe/Main.php:347
1949
  msgid "Clear"
1950
  msgstr ""
1951
 
2432
  msgid "Display"
2433
  msgstr ""
2434
 
2435
+ #: src/Tribe/Settings_Manager.php:259
2436
  msgid "Network"
2437
  msgstr ""
2438
 
2439
+ #: src/Tribe/Settings_Manager.php:293
2440
  #: src/admin-views/tribe-options-licenses.php:57
2441
  msgid "Licenses"
2442
  msgstr ""
2443
 
2444
+ #: src/Tribe/Settings_Manager.php:323
2445
  msgid "Help"
2446
  msgstr ""
2447
 
2741
  msgid "Download log"
2742
  msgstr ""
2743
 
2744
+ #: src/admin-views/tribe-options-display.php:23
2745
  msgid "Date Format Settings"
2746
  msgstr ""
2747
 
2748
+ #: src/admin-views/tribe-options-display.php:29
2749
  msgid ""
2750
  "The following three fields accept the date format options available to the "
2751
  "PHP %1$s function. <a href=\"%2$s\" target=\"_blank\">Learn how to make your "
2752
  "own date format here</a>."
2753
  msgstr ""
2754
 
2755
+ #: src/admin-views/tribe-options-display.php:37
2756
  msgid "Compact Date Format"
2757
  msgstr ""
2758
 
2759
+ #: src/admin-views/tribe-options-display.php:38
2760
  msgid ""
2761
  "Select the date format used for elements with minimal space, such as in "
2762
  "datepickers."
2867
  "steps:"
2868
  msgstr ""
2869
 
2870
+ #: src/admin-views/tribe-options-help.php:33
2871
  msgid ""
2872
  "%s. All of the common (and not-so-common) answers to questions we see are "
2873
  "here. It’s often the fastest path to finding an answer!"
2874
  msgstr ""
2875
 
2876
+ #: src/admin-views/tribe-options-help.php:37
2877
  msgid "Check our Knowledgebase"
2878
  msgstr ""
2879
 
2880
+ #: src/admin-views/tribe-options-help.php:43
2881
  msgid ""
2882
  "%s. Testing for an existing conflict is the best start for in-depth "
2883
  "troubleshooting. We will often ask you to follow these steps when opening a "
2884
  "new thread, so doing this ahead of time will be super helpful."
2885
  msgstr ""
2886
 
2887
+ #: src/admin-views/tribe-options-help.php:47
2888
  msgid "Test for a theme or plugin conflict"
2889
  msgstr ""
2890
 
2891
+ #: src/admin-views/tribe-options-help.php:53
2892
  msgid ""
2893
  "%s. There are very few issues we haven’t seen and it’s likely another user "
2894
  "has already asked your question and gotten an answer from our support staff. "
2896
  "for anyone to search and review."
2897
  msgstr ""
2898
 
2899
+ #: src/admin-views/tribe-options-help.php:57
2900
  msgid "Search our support help desk"
2901
  msgstr ""
2902
 
2903
+ #: src/admin-views/tribe-options-help.php:67
2904
  msgid ""
2905
  "Please note that all hands-on support is provided via the help desk. You can "
2906
  "email or tweet at us… ​but we will probably point you back to the help desk 😄"
2907
  msgstr ""
2908
 
2909
+ #: src/admin-views/tribe-options-help.php:68
2910
  msgid "Read more about our support policy"
2911
  msgstr ""
2912
 
2913
+ #: src/admin-views/tribe-options-help.php:71
2914
  msgid "System Information"
2915
  msgstr ""
2916
 
2917
+ #: src/admin-views/tribe-options-help.php:72
2918
  msgid ""
2919
  "The details of your calendar plugin and settings is often needed for you or "
2920
  "our staff to help troubleshoot an issue. Please opt-in below to "
2922
  "allow us to assist you faster if you post in our help desk."
2923
  msgstr ""
2924
 
2925
+ #: src/admin-views/tribe-options-help.php:82
2926
  msgid "Recent Template Changes"
2927
  msgstr ""
2928
 
2929
+ #: src/admin-views/tribe-options-help.php:85
2930
  msgid "Event Log"
2931
  msgstr ""
2932
 
2933
+ #: src/admin-views/tribe-options-help.php:104
2934
  msgid "News and Tutorials"
2935
  msgstr ""
2936
 
2937
+ #: src/admin-views/tribe-options-help.php:110
2938
  msgid "More..."
2939
  msgstr ""
2940
 
common/src/Tribe/Admin/Activation_Page.php CHANGED
@@ -3,7 +3,7 @@
3
  * Shows a welcome or update message after the plugin is installed/updated.
4
  */
5
  class Tribe__Admin__Activation_Page {
6
- protected $args = array();
7
  public $update_slug = 'update-message-';
8
  public $welcome_slug = 'welcome-message-';
9
  protected $current_context = '';
@@ -24,8 +24,8 @@ class Tribe__Admin__Activation_Page {
24
  * @type string $welcome_page_template
25
  * }
26
  */
27
- public function __construct( array $args = array() ) {
28
- $this->args = wp_parse_args( $args, array(
29
  'slug' => '',
30
  'activation_transient' => '',
31
  'version' => '',
@@ -35,9 +35,9 @@ class Tribe__Admin__Activation_Page {
35
  'update_page_template' => '',
36
  'welcome_page_title' => '',
37
  'welcome_page_template' => '',
38
- ) );
39
 
40
- $this->update_slug .= $this->args['slug'];
41
  $this->welcome_slug .= $this->args['slug'];
42
 
43
  $this->hooks();
@@ -76,11 +76,11 @@ class Tribe__Admin__Activation_Page {
76
  return;
77
  }
78
 
79
- add_action( 'admin_init', array( $this, 'maybe_redirect' ), 10, 0 );
80
- add_action( 'admin_menu', array( $this, 'register_page' ), 100, 0 ); // come in after the default page is registered
81
 
82
- add_action( 'update_plugin_complete_actions', array( $this, 'update_complete_actions' ), 15, 2 );
83
- add_action( 'update_bulk_plugins_complete_actions', array( $this, 'update_complete_actions' ), 15, 2 );
84
  }
85
 
86
  /**
@@ -92,7 +92,7 @@ class Tribe__Admin__Activation_Page {
92
  * @return array The filtered Links
93
  */
94
  public function update_complete_actions( $actions, $plugin ) {
95
- $plugins = array();
96
 
97
  if ( ! empty( $_GET['plugins'] ) ) {
98
  $plugins = explode( ',', esc_attr( $_GET['plugins'] ) );
@@ -262,8 +262,8 @@ class Tribe__Admin__Activation_Page {
262
  }
263
 
264
  $this->disable_default_settings_page();
265
- add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) );
266
- add_action( Tribe__Settings::instance()->admin_page, array( $this, 'display_page' ) );
267
  }
268
 
269
  /**
@@ -283,7 +283,7 @@ class Tribe__Admin__Activation_Page {
283
  * in the Events > Settings slot instead, for this request only).
284
  */
285
  protected function disable_default_settings_page() {
286
- remove_action( Tribe__Settings::instance()->admin_page, array( Tribe__Settings::instance(), 'generatePage' ) );
287
  }
288
 
289
  /**
3
  * Shows a welcome or update message after the plugin is installed/updated.
4
  */
5
  class Tribe__Admin__Activation_Page {
6
+ protected $args = [];
7
  public $update_slug = 'update-message-';
8
  public $welcome_slug = 'welcome-message-';
9
  protected $current_context = '';
24
  * @type string $welcome_page_template
25
  * }
26
  */
27
+ public function __construct( array $args = [] ) {
28
+ $this->args = wp_parse_args( $args, [
29
  'slug' => '',
30
  'activation_transient' => '',
31
  'version' => '',
35
  'update_page_template' => '',
36
  'welcome_page_title' => '',
37
  'welcome_page_template' => '',
38
+ ] );
39
 
40
+ $this->update_slug .= $this->args['slug'];
41
  $this->welcome_slug .= $this->args['slug'];
42
 
43
  $this->hooks();
76
  return;
77
  }
78
 
79
+ add_action( 'admin_init', [ $this, 'maybe_redirect' ], 10, 0 );
80
+ add_action( 'admin_menu', [ $this, 'register_page' ], 100, 0 ); // come in after the default page is registered
81
 
82
+ add_action( 'update_plugin_complete_actions', [ $this, 'update_complete_actions' ], 15, 2 );
83
+ add_action( 'update_bulk_plugins_complete_actions', [ $this, 'update_complete_actions' ], 15, 2 );
84
  }
85
 
86
  /**
92
  * @return array The filtered Links
93
  */
94
  public function update_complete_actions( $actions, $plugin ) {
95
+ $plugins = [];
96
 
97
  if ( ! empty( $_GET['plugins'] ) ) {
98
  $plugins = explode( ',', esc_attr( $_GET['plugins'] ) );
262
  }
263
 
264
  $this->disable_default_settings_page();
265
+ add_filter( 'admin_body_class', [ $this, 'admin_body_class' ] );
266
+ add_action( Tribe__Settings::instance()->admin_page, [ $this, 'display_page' ] );
267
  }
268
 
269
  /**
283
  * in the Events > Settings slot instead, for this request only).
284
  */
285
  protected function disable_default_settings_page() {
286
+ remove_action( Tribe__Settings::instance()->admin_page, [ Tribe__Settings::instance(), 'generatePage' ] );
287
  }
288
 
289
  /**
common/src/Tribe/Admin/Help_Page.php CHANGED
@@ -72,50 +72,59 @@ class Tribe__Admin__Help_Page {
72
  * @return array
73
  */
74
  public function get_plugins( $plugin_name = null, $is_active = true ) {
75
- $plugins = array();
76
 
77
- $plugins['the-events-calendar'] = array(
78
  'name' => 'the-events-calendar',
79
  'title' => esc_html__( 'The Events Calendar', 'tribe-common' ),
80
  'repo' => 'https://wordpress.org/plugins/the-events-calendar/',
81
  'forum' => 'https://wordpress.org/support/plugin/the-events-calendar/',
82
  'stars_url' => 'https://wordpress.org/support/plugin/the-events-calendar/reviews/?filter=5',
83
- 'description' => esc_html__( 'The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events.', 'tribe-common' ),
 
 
 
84
  'is_active' => false,
85
  'version' => null,
86
- );
87
 
88
  if ( class_exists( 'Tribe__Events__Main' ) ) {
89
  $plugins['the-events-calendar']['version'] = Tribe__Events__Main::VERSION;
90
  $plugins['the-events-calendar']['is_active'] = true;
91
  }
92
 
93
- $plugins['event-tickets'] = array(
94
  'name' => 'event-tickets',
95
  'title' => esc_html__( 'Event Tickets', 'tribe-common' ),
96
  'repo' => 'https://wordpress.org/plugins/event-tickets/',
97
  'forum' => 'https://wordpress.org/support/plugin/event-tickets',
98
  'stars_url' => 'https://wordpress.org/support/plugin/event-tickets/reviews/?filter=5',
99
- 'description' => esc_html__( 'Events Tickets is a carefully crafted, extensible plugin that lets you easily sell tickets for your events.', 'tribe-common' ),
 
 
 
100
  'is_active' => false,
101
  'version' => null,
102
- );
103
 
104
  if ( class_exists( 'Tribe__Tickets__Main' ) ) {
105
  $plugins['event-tickets']['version'] = Tribe__Tickets__Main::VERSION;
106
  $plugins['event-tickets']['is_active'] = true;
107
  }
108
 
109
- $plugins['advanced-post-manager'] = array(
110
  'name' => 'advanced-post-manager',
111
  'title' => esc_html__( 'Advanced Post Manager', 'tribe-common' ),
112
  'repo' => 'https://wordpress.org/plugins/advanced-post-manager/',
113
  'forum' => 'https://wordpress.org/support/plugin/advanced-post-manager/',
114
  'stars_url' => 'https://wordpress.org/support/plugin/advanced-post-manager/reviews/?filter=5',
115
- 'description' => esc_html__( 'Turbo charge your posts admin for any custom post type with sortable filters and columns, and auto-registration of metaboxes.', 'tribe-common' ),
 
 
 
116
  'is_active' => false,
117
  'version' => null,
118
- );
119
 
120
  if ( class_exists( 'Tribe_APM' ) ) {
121
  $plugins['advanced-post-manager']['version'] = 1;
@@ -156,7 +165,7 @@ class Tribe__Admin__Help_Page {
156
  public function get_plugin_forum_links( $is_active = true ) {
157
  $plugins = $this->get_plugins( null, $is_active );
158
 
159
- $list = array();
160
  foreach ( $plugins as $plugin ) {
161
  $list[] = '<a href="' . esc_url( $plugin['forum'] ) . '" target="_blank">' . $plugin['title'] . '</a>';
162
  }
@@ -207,73 +216,75 @@ class Tribe__Admin__Help_Page {
207
  * @return array
208
  */
209
  public function get_addons( $plugin = null, $is_active = null, $is_important = null ) {
210
- $addons = array();
211
-
212
- $addons['events-calendar-pro'] = array(
213
- 'id' => 'events-calendar-pro',
214
- 'title' => esc_html__( 'Events Calendar PRO', 'tribe-common' ),
215
- 'link' => 'http://m.tri.be/dr',
216
- 'plugin' => array( 'the-events-calendar' ),
217
- 'is_active' => class_exists( 'Tribe__Events__Pro__Main' ),
218
  'is_important' => true,
219
- );
220
 
221
- $addons['eventbrite-tickets'] = array(
222
  'id' => 'eventbrite-tickets',
223
  'title' => esc_html__( 'Eventbrite Tickets', 'tribe-common' ),
224
  'link' => 'http://m.tri.be/ds',
225
- 'plugin' => array( 'the-events-calendar' ),
226
  'is_active' => class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ),
227
- );
228
 
229
- $addons['community-events'] = array(
230
  'id' => 'community-events',
231
  'title' => esc_html__( 'Community Events', 'tribe-common' ),
232
  'link' => 'http://m.tri.be/dt',
233
- 'plugin' => array( 'the-events-calendar' ),
234
  'is_active' => class_exists( 'Tribe__Events__Community__Main' ),
235
- );
236
 
237
- $addons['event-aggregator'] = array(
238
  'id' => 'event-aggregator',
239
  'title' => esc_html__( 'Event Aggregator', 'tribe-common' ),
240
  'link' => 'http://m.tri.be/19mk',
241
- 'plugin' => array( 'the-events-calendar' ),
242
- 'is_active' => class_exists( 'Tribe__Events__Aggregator' ) && tribe( 'events-aggregator.main' )->is_service_active(),
243
- );
 
 
244
 
245
- $addons['events-filter-bar'] = array(
246
- 'id' => 'events-filter-bar',
247
- 'title' => esc_html__( 'Filter Bar', 'tribe-common' ),
248
- 'link' => 'http://m.tri.be/hu',
249
- 'plugin' => array( 'the-events-calendar' ),
250
- 'is_active' => class_exists( 'Tribe__Events__Filterbar__View' ),
251
- );
252
 
253
  $addons['events-virtual'] = [
254
- 'id' => 'events-virtual',
255
- 'title' => esc_html__( 'Virtual Events', 'tribe-common' ),
256
- 'link' => 'http://m.tri.be/1alb',
257
- 'plugin' => [ 'the-events-calendar' ],
258
- 'is_active' => class_exists( '\Tribe\Events\Virtual\Plugin' ),
259
  ];
260
 
261
- $addons['event-tickets-plus'] = array(
262
- 'id' => 'event-tickets-plus',
263
- 'title' => esc_html__( 'Event Tickets Plus', 'tribe-common' ),
264
- 'link' => 'http://m.tri.be/18wa',
265
- 'plugin' => array( 'event-tickets' ),
266
- 'is_active' => class_exists( 'Tribe__Tickets_Plus__Main' ),
267
  'is_important' => true,
268
- );
269
 
270
- $addons['event-community-tickets'] = array(
271
  'id' => 'event-community-tickets',
272
  'title' => esc_html__( 'Community Tickets', 'tribe-common' ),
273
  'link' => 'http://m.tri.be/18m2',
274
- 'plugin' => array( 'event-tickets' ),
275
  'is_active' => class_exists( 'Tribe__Events__Community__Tickets__Main' ),
276
- );
277
 
278
  /**
279
  * Filter the array of premium addons upsold on the sidebar of the Settings > Help tab
@@ -288,7 +299,7 @@ class Tribe__Admin__Help_Page {
288
  }
289
 
290
  // Allow for easily grab the addons for a plugin
291
- $filtered = array();
292
  foreach ( $addons as $id => $addon ) {
293
  if ( ! is_null( $plugin ) && ! in_array( $plugin, (array) $addon['plugin'] ) ) {
294
  continue;
@@ -318,10 +329,10 @@ class Tribe__Admin__Help_Page {
318
 
319
  public function is_active( $should_be_active ) {
320
  $plugins = $this->get_plugins( null, true );
321
- $addons = $this->get_addons( null, true );
322
 
323
- $actives = array_merge( $plugins, $addons );
324
- $is_active = array();
325
 
326
  foreach ( $actives as $id => $active ) {
327
  if ( in_array( $id, (array) $should_be_active ) ) {
@@ -342,11 +353,11 @@ class Tribe__Admin__Help_Page {
342
  * @return string Link with the GA arguments
343
  */
344
  public function get_ga_link( $link = null, $relative = true ) {
345
- $query_args = array(
346
  'utm_source' => 'helptab',
347
  'utm_medium' => 'plugin-tec',
348
  'utm_campaign' => 'in-app',
349
- );
350
 
351
  if ( true === $relative ) {
352
  $link = trailingslashit( Tribe__Main::$tec_url . $link );
@@ -363,8 +374,8 @@ class Tribe__Admin__Help_Page {
363
  * @return array Feed Title and Link
364
  */
365
  public function get_feed_items() {
366
- $news_rss = fetch_feed( Tribe__Main::FEED_URL );
367
- $news_feed = array();
368
 
369
  if ( ! is_wp_error( $news_rss ) ) {
370
  /**
@@ -376,10 +387,10 @@ class Tribe__Admin__Help_Page {
376
  $rss_items = $news_rss->get_items( 0, $maxitems );
377
  if ( $maxitems > 0 ) {
378
  foreach ( $rss_items as $item ) {
379
- $item = array(
380
  'title' => esc_html( $item->get_title() ),
381
  'link' => esc_url( $item->get_permalink() ),
382
- );
383
  $news_feed[] = $item;
384
  }
385
  }
@@ -417,16 +428,16 @@ class Tribe__Admin__Help_Page {
417
  }
418
 
419
  // Fetch the data
420
- $data = plugins_api( 'plugin_information', array(
421
- 'slug' => $plugin->name,
422
- 'is_ssl' => is_ssl(),
423
- 'fields' => array(
424
- 'banners' => true,
425
- 'reviews' => true,
426
- 'downloaded' => true,
427
- 'active_installs' => true,
428
- ),
429
- ) );
430
 
431
  if ( ! is_wp_error( $data ) ) {
432
  // Format Downloaded Infomation
@@ -487,13 +498,13 @@ class Tribe__Admin__Help_Page {
487
  }
488
 
489
  // Only add List Item if is a UL or OL
490
- if ( in_array( $line['type'], array( 'ul', 'ol' ) ) ) {
491
  $text .= '<li>' . "\n";
492
  }
493
 
494
  $text .= $this->get_content_html( $item );
495
 
496
- if ( in_array( $line['type'], array( 'ul', 'ol' ) ) ) {
497
  $text .= '</li>' . "\n";
498
  }
499
  }
@@ -515,7 +526,7 @@ class Tribe__Admin__Help_Page {
515
  * @access private
516
  * @var array
517
  */
518
- private $sections = array();
519
 
520
  /**
521
  * Incremented with each method call, then stored in $section->uid.
@@ -573,7 +584,7 @@ class Tribe__Admin__Help_Page {
573
  // Everytime you call this we will add this up
574
  self::$section_count++;
575
 
576
- $possible_types = (array) apply_filters( 'tribe_help_available_section_types', array( 'default', 'box' ) );
577
 
578
  // Set a Default type
579
  if ( empty( $type ) || ! in_array( $type, $possible_types ) ) {
@@ -581,21 +592,21 @@ class Tribe__Admin__Help_Page {
581
  }
582
 
583
  // Create the section and Sanitize the values to avoid having to do it later
584
- $section = (object) array(
585
- 'id' => sanitize_html_class( $id ),
586
- 'title' => esc_html( $title ),
587
- 'priority' => absint( $priority ),
588
- 'type' => sanitize_html_class( $type ),
589
 
590
- // This Method Unique count integer used for ordering with priority
591
- 'unique_call_order' => self::$section_count,
592
 
593
- // Counter for ordering Content
594
- 'content_count' => 0,
595
 
596
- // Setup the Base for the content to come
597
- 'content' => array(),
598
- );
599
 
600
  $this->sections[ $section->id ] = $section;
601
 
@@ -614,7 +625,7 @@ class Tribe__Admin__Help_Page {
614
  *
615
  * @return object The content item added
616
  */
617
- public function add_section_content( $section_id, $content, $priority = 10, $arguments = array() ) {
618
  $section_id = sanitize_html_class( $section_id );
619
 
620
  // Check if the section exists
@@ -659,13 +670,13 @@ class Tribe__Admin__Help_Page {
659
  public function remove_section( $section_id ) {
660
  if (
661
  ! isset( $this->sections[ $section_id ] ) &&
662
- ! in_array( (object) array( 'id' => $section_id ), $this->sections, true )
663
  ) {
664
  // There are no sections to remove, so false
665
  return false;
666
  }
667
 
668
- $removed = array();
669
  foreach ( $this->sections as $id => $section ) {
670
  if ( ! is_numeric( $id ) && ! is_numeric( $section_id ) && ! empty( $section->id ) ) {
671
  if ( $section->id === $section_id ) {
@@ -719,9 +730,9 @@ class Tribe__Admin__Help_Page {
719
  }
720
 
721
  // Sort by Priority
722
- uasort( $sections, array( $this, 'by_priority' ) );
723
 
724
- $html = array();
725
 
726
  foreach ( $sections as $index => $section ) {
727
  $section = (object) $section;
@@ -744,7 +755,7 @@ class Tribe__Admin__Help_Page {
744
  $section = apply_filters( 'tribe_help_section_' . $section->id, $section, $this );
745
 
746
  // Sort by Priority
747
- uasort( $section->content, array( $this, 'by_priority' ) );
748
 
749
  $html[ $section->id . '-start' ] = '<div id="tribe-' . sanitize_html_class( $section->id ) . '" class="tribe-help-section clearfix tribe-section-type-' . sanitize_html_class( $section->type ) . '">';
750
 
@@ -795,20 +806,20 @@ class Tribe__Admin__Help_Page {
795
  $plugin_exists = isset( $plugins[ $status['file'] ] );
796
 
797
  if ( 'install' !== $status['status'] && ! $plugin_active ) {
798
- $args = array(
799
- 'action' => 'activate',
800
- 'plugin' => $status['file'],
801
  'plugin_status' => 'all',
802
- 'paged' => 1,
803
- 's' => '',
804
- );
805
  $activate_url = wp_nonce_url( add_query_arg( $args, 'plugins.php' ), 'activate-plugin_' . $status['file'] );
806
  $link = '<a class="button" href="' . $activate_url . '" aria-label="' . esc_attr( sprintf( esc_attr__( 'Activate %s', 'tribe-common' ), $plugin->name ) ) . '">' . esc_html__( 'Activate Plugin', 'tribe-common' ) . '</a>';
807
  } elseif ( 'update_available' === $status['status'] ) {
808
- $args = array(
809
  'action' => 'upgrade-plugin',
810
  'plugin' => $status['file'],
811
- );
812
  $update_url = wp_nonce_url( add_query_arg( $args, 'update.php' ), 'upgrade-plugin_' . $status['file'] );
813
 
814
  $link = '<a class="button" href="' . $update_url . '">' . esc_html__( 'Upgrade Plugin', 'tribe-common' ) . '</a>';
@@ -819,13 +830,13 @@ class Tribe__Admin__Help_Page {
819
 
820
  if ( ! isset( $link ) ) {
821
  if ( $api_data ) {
822
- $args = array(
823
  'tab' => 'plugin-information',
824
  'plugin' => $plugin->name,
825
  'TB_iframe' => true,
826
  'width' => 772,
827
  'height' => 600,
828
- );
829
  $iframe_url = add_query_arg( $args, admin_url( '/plugin-install.php' ) );
830
  $link = '<a class="button thickbox" href="' . $iframe_url . '" aria-label="' . esc_attr( sprintf( esc_attr__( 'Install %s', 'tribe-common' ), $plugin->name ) ) . '">' . esc_html__( 'Install Plugin', 'tribe-common' ) . '</a>';
831
  } else {
@@ -854,13 +865,17 @@ class Tribe__Admin__Help_Page {
854
  <dd><?php echo esc_html( number_format( $api_data->active_installs ) ); ?>+</dd>
855
 
856
  <dt><?php esc_html_e( 'Rating:', 'tribe-common' ); ?></dt>
857
- <dd><a href="<?php echo esc_url( $plugin->stars_url ); ?>" target="_blank">
858
- <?php wp_star_rating( array(
859
- 'rating' => $api_data->rating,
860
- 'type' => 'percent',
861
- 'number' => $api_data->num_ratings,
862
- ) );?>
863
- </a></dd>
 
 
 
 
864
  </dl>
865
  <?php } ?>
866
 
72
  * @return array
73
  */
74
  public function get_plugins( $plugin_name = null, $is_active = true ) {
75
+ $plugins = [];
76
 
77
+ $plugins['the-events-calendar'] = [
78
  'name' => 'the-events-calendar',
79
  'title' => esc_html__( 'The Events Calendar', 'tribe-common' ),
80
  'repo' => 'https://wordpress.org/plugins/the-events-calendar/',
81
  'forum' => 'https://wordpress.org/support/plugin/the-events-calendar/',
82
  'stars_url' => 'https://wordpress.org/support/plugin/the-events-calendar/reviews/?filter=5',
83
+ 'description' => esc_html__(
84
+ 'The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events.',
85
+ 'tribe-common'
86
+ ),
87
  'is_active' => false,
88
  'version' => null,
89
+ ];
90
 
91
  if ( class_exists( 'Tribe__Events__Main' ) ) {
92
  $plugins['the-events-calendar']['version'] = Tribe__Events__Main::VERSION;
93
  $plugins['the-events-calendar']['is_active'] = true;
94
  }
95
 
96
+ $plugins['event-tickets'] = [
97
  'name' => 'event-tickets',
98
  'title' => esc_html__( 'Event Tickets', 'tribe-common' ),
99
  'repo' => 'https://wordpress.org/plugins/event-tickets/',
100
  'forum' => 'https://wordpress.org/support/plugin/event-tickets',
101
  'stars_url' => 'https://wordpress.org/support/plugin/event-tickets/reviews/?filter=5',
102
+ 'description' => esc_html__(
103
+ 'Events Tickets is a carefully crafted, extensible plugin that lets you easily sell tickets for your events.',
104
+ 'tribe-common'
105
+ ),
106
  'is_active' => false,
107
  'version' => null,
108
+ ];
109
 
110
  if ( class_exists( 'Tribe__Tickets__Main' ) ) {
111
  $plugins['event-tickets']['version'] = Tribe__Tickets__Main::VERSION;
112
  $plugins['event-tickets']['is_active'] = true;
113
  }
114
 
115
+ $plugins['advanced-post-manager'] = [
116
  'name' => 'advanced-post-manager',
117
  'title' => esc_html__( 'Advanced Post Manager', 'tribe-common' ),
118
  'repo' => 'https://wordpress.org/plugins/advanced-post-manager/',
119
  'forum' => 'https://wordpress.org/support/plugin/advanced-post-manager/',
120
  'stars_url' => 'https://wordpress.org/support/plugin/advanced-post-manager/reviews/?filter=5',
121
+ 'description' => esc_html__(
122
+ 'Turbo charge your posts admin for any custom post type with sortable filters and columns, and auto-registration of metaboxes.',
123
+ 'tribe-common'
124
+ ),
125
  'is_active' => false,
126
  'version' => null,
127
+ ];
128
 
129
  if ( class_exists( 'Tribe_APM' ) ) {
130
  $plugins['advanced-post-manager']['version'] = 1;
165
  public function get_plugin_forum_links( $is_active = true ) {
166
  $plugins = $this->get_plugins( null, $is_active );
167
 
168
+ $list = [];
169
  foreach ( $plugins as $plugin ) {
170
  $list[] = '<a href="' . esc_url( $plugin['forum'] ) . '" target="_blank">' . $plugin['title'] . '</a>';
171
  }
216
  * @return array
217
  */
218
  public function get_addons( $plugin = null, $is_active = null, $is_important = null ) {
219
+ $addons = [];
220
+
221
+ $addons['events-calendar-pro'] = [
222
+ 'id' => 'events-calendar-pro',
223
+ 'title' => esc_html__( 'Events Calendar PRO', 'tribe-common' ),
224
+ 'link' => 'http://m.tri.be/dr',
225
+ 'plugin' => [ 'the-events-calendar' ],
226
+ 'is_active' => class_exists( 'Tribe__Events__Pro__Main' ),
227
  'is_important' => true,
228
+ ];
229
 
230
+ $addons['eventbrite-tickets'] = [
231
  'id' => 'eventbrite-tickets',
232
  'title' => esc_html__( 'Eventbrite Tickets', 'tribe-common' ),
233
  'link' => 'http://m.tri.be/ds',
234
+ 'plugin' => [ 'the-events-calendar' ],
235
  'is_active' => class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ),
236
+ ];
237
 
238
+ $addons['community-events'] = [
239
  'id' => 'community-events',
240
  'title' => esc_html__( 'Community Events', 'tribe-common' ),
241
  'link' => 'http://m.tri.be/dt',
242
+ 'plugin' => [ 'the-events-calendar' ],
243
  'is_active' => class_exists( 'Tribe__Events__Community__Main' ),
244
+ ];
245
 
246
+ $addons['event-aggregator'] = [
247
  'id' => 'event-aggregator',
248
  'title' => esc_html__( 'Event Aggregator', 'tribe-common' ),
249
  'link' => 'http://m.tri.be/19mk',
250
+ 'plugin' => [ 'the-events-calendar' ],
251
+ 'is_active' => class_exists( 'Tribe__Events__Aggregator' ) && tribe(
252
+ 'events-aggregator.main'
253
+ )->is_service_active(),
254
+ ];
255
 
256
+ $addons['events-filter-bar'] = [
257
+ 'id' => 'events-filter-bar',
258
+ 'title' => esc_html__( 'Filter Bar', 'tribe-common' ),
259
+ 'link' => 'http://m.tri.be/hu',
260
+ 'plugin' => [ 'the-events-calendar' ],
261
+ 'is_active' => class_exists( 'Tribe__Events__Filterbar__View' ),
262
+ ];
263
 
264
  $addons['events-virtual'] = [
265
+ 'id' => 'events-virtual',
266
+ 'title' => esc_html__( 'Virtual Events', 'tribe-common' ),
267
+ 'link' => 'http://m.tri.be/1alb',
268
+ 'plugin' => [ 'the-events-calendar' ],
269
+ 'is_active' => class_exists( '\Tribe\Events\Virtual\Plugin' ),
270
  ];
271
 
272
+ $addons['event-tickets-plus'] = [
273
+ 'id' => 'event-tickets-plus',
274
+ 'title' => esc_html__( 'Event Tickets Plus', 'tribe-common' ),
275
+ 'link' => 'http://m.tri.be/18wa',
276
+ 'plugin' => [ 'event-tickets' ],
277
+ 'is_active' => class_exists( 'Tribe__Tickets_Plus__Main' ),
278
  'is_important' => true,
279
+ ];
280
 
281
+ $addons['event-community-tickets'] = [
282
  'id' => 'event-community-tickets',
283
  'title' => esc_html__( 'Community Tickets', 'tribe-common' ),
284
  'link' => 'http://m.tri.be/18m2',
285
+ 'plugin' => [ 'event-tickets' ],
286
  'is_active' => class_exists( 'Tribe__Events__Community__Tickets__Main' ),
287
+ ];
288
 
289
  /**
290
  * Filter the array of premium addons upsold on the sidebar of the Settings > Help tab
299
  }
300
 
301
  // Allow for easily grab the addons for a plugin
302
+ $filtered = [];
303
  foreach ( $addons as $id => $addon ) {
304
  if ( ! is_null( $plugin ) && ! in_array( $plugin, (array) $addon['plugin'] ) ) {
305
  continue;
329
 
330
  public function is_active( $should_be_active ) {
331
  $plugins = $this->get_plugins( null, true );
332
+ $addons = $this->get_addons( null, true );
333
 
334
+ $actives = array_merge( $plugins, $addons );
335
+ $is_active = [];
336
 
337
  foreach ( $actives as $id => $active ) {
338
  if ( in_array( $id, (array) $should_be_active ) ) {
353
  * @return string Link with the GA arguments
354
  */
355
  public function get_ga_link( $link = null, $relative = true ) {
356
+ $query_args = [
357
  'utm_source' => 'helptab',
358
  'utm_medium' => 'plugin-tec',
359
  'utm_campaign' => 'in-app',
360
+ ];
361
 
362
  if ( true === $relative ) {
363
  $link = trailingslashit( Tribe__Main::$tec_url . $link );
374
  * @return array Feed Title and Link
375
  */
376
  public function get_feed_items() {
377
+ $news_rss = fetch_feed( Tribe__Main::FEED_URL );
378
+ $news_feed = [];
379
 
380
  if ( ! is_wp_error( $news_rss ) ) {
381
  /**
387
  $rss_items = $news_rss->get_items( 0, $maxitems );
388
  if ( $maxitems > 0 ) {
389
  foreach ( $rss_items as $item ) {
390
+ $item = [
391
  'title' => esc_html( $item->get_title() ),
392
  'link' => esc_url( $item->get_permalink() ),
393
+ ];
394
  $news_feed[] = $item;
395
  }
396
  }
428
  }
429
 
430
  // Fetch the data
431
+ $data = plugins_api( 'plugin_information', [
432
+ 'slug' => $plugin->name,
433
+ 'is_ssl' => is_ssl(),
434
+ 'fields' => [
435
+ 'banners' => true,
436
+ 'reviews' => true,
437
+ 'downloaded' => true,
438
+ 'active_installs' => true,
439
+ ],
440
+ ] );
441
 
442
  if ( ! is_wp_error( $data ) ) {
443
  // Format Downloaded Infomation
498
  }
499
 
500
  // Only add List Item if is a UL or OL
501
+ if ( in_array( $line['type'], [ 'ul', 'ol' ] ) ) {
502
  $text .= '<li>' . "\n";
503
  }
504
 
505
  $text .= $this->get_content_html( $item );
506
 
507
+ if ( in_array( $line['type'], [ 'ul', 'ol' ] ) ) {
508
  $text .= '</li>' . "\n";
509
  }
510
  }
526
  * @access private
527
  * @var array
528
  */
529
+ private $sections = [];
530
 
531
  /**
532
  * Incremented with each method call, then stored in $section->uid.
584
  // Everytime you call this we will add this up
585
  self::$section_count++;
586
 
587
+ $possible_types = (array) apply_filters( 'tribe_help_available_section_types', [ 'default', 'box' ] );
588
 
589
  // Set a Default type
590
  if ( empty( $type ) || ! in_array( $type, $possible_types ) ) {
592
  }
593
 
594
  // Create the section and Sanitize the values to avoid having to do it later
595
+ $section = (object) [
596
+ 'id' => sanitize_html_class( $id ),
597
+ 'title' => esc_html( $title ),
598
+ 'priority' => absint( $priority ),
599
+ 'type' => sanitize_html_class( $type ),
600
 
601
+ // This Method Unique count integer used for ordering with priority
602
+ 'unique_call_order' => self::$section_count,
603
 
604
+ // Counter for ordering Content
605
+ 'content_count' => 0,
606
 
607
+ // Setup the Base for the content to come
608
+ 'content' => [],
609
+ ];
610
 
611
  $this->sections[ $section->id ] = $section;
612
 
625
  *
626
  * @return object The content item added
627
  */
628
+ public function add_section_content( $section_id, $content, $priority = 10, $arguments = [] ) {
629
  $section_id = sanitize_html_class( $section_id );
630
 
631
  // Check if the section exists
670
  public function remove_section( $section_id ) {
671
  if (
672
  ! isset( $this->sections[ $section_id ] ) &&
673
+ ! in_array( (object) [ 'id' => $section_id ], $this->sections, true )
674
  ) {
675
  // There are no sections to remove, so false
676
  return false;
677
  }
678
 
679
+ $removed = [];
680
  foreach ( $this->sections as $id => $section ) {
681
  if ( ! is_numeric( $id ) && ! is_numeric( $section_id ) && ! empty( $section->id ) ) {
682
  if ( $section->id === $section_id ) {
730
  }
731
 
732
  // Sort by Priority
733
+ uasort( $sections, [ $this, 'by_priority' ] );
734
 
735
+ $html = [];
736
 
737
  foreach ( $sections as $index => $section ) {
738
  $section = (object) $section;
755
  $section = apply_filters( 'tribe_help_section_' . $section->id, $section, $this );
756
 
757
  // Sort by Priority
758
+ uasort( $section->content, [ $this, 'by_priority' ] );
759
 
760
  $html[ $section->id . '-start' ] = '<div id="tribe-' . sanitize_html_class( $section->id ) . '" class="tribe-help-section clearfix tribe-section-type-' . sanitize_html_class( $section->type ) . '">';
761
 
806
  $plugin_exists = isset( $plugins[ $status['file'] ] );
807
 
808
  if ( 'install' !== $status['status'] && ! $plugin_active ) {
809
+ $args = [
810
+ 'action' => 'activate',
811
+ 'plugin' => $status['file'],
812
  'plugin_status' => 'all',
813
+ 'paged' => 1,
814
+ 's' => '',
815
+ ];
816
  $activate_url = wp_nonce_url( add_query_arg( $args, 'plugins.php' ), 'activate-plugin_' . $status['file'] );
817
  $link = '<a class="button" href="' . $activate_url . '" aria-label="' . esc_attr( sprintf( esc_attr__( 'Activate %s', 'tribe-common' ), $plugin->name ) ) . '">' . esc_html__( 'Activate Plugin', 'tribe-common' ) . '</a>';
818
  } elseif ( 'update_available' === $status['status'] ) {
819
+ $args = [
820
  'action' => 'upgrade-plugin',
821
  'plugin' => $status['file'],
822
+ ];
823
  $update_url = wp_nonce_url( add_query_arg( $args, 'update.php' ), 'upgrade-plugin_' . $status['file'] );
824
 
825
  $link = '<a class="button" href="' . $update_url . '">' . esc_html__( 'Upgrade Plugin', 'tribe-common' ) . '</a>';
830
 
831
  if ( ! isset( $link ) ) {
832
  if ( $api_data ) {
833
+ $args = [
834
  'tab' => 'plugin-information',
835
  'plugin' => $plugin->name,
836
  'TB_iframe' => true,
837
  'width' => 772,
838
  'height' => 600,
839
+ ];
840
  $iframe_url = add_query_arg( $args, admin_url( '/plugin-install.php' ) );
841
  $link = '<a class="button thickbox" href="' . $iframe_url . '" aria-label="' . esc_attr( sprintf( esc_attr__( 'Install %s', 'tribe-common' ), $plugin->name ) ) . '">' . esc_html__( 'Install Plugin', 'tribe-common' ) . '</a>';
842
  } else {
865
  <dd><?php echo esc_html( number_format( $api_data->active_installs ) ); ?>+</dd>
866
 
867
  <dt><?php esc_html_e( 'Rating:', 'tribe-common' ); ?></dt>
868
+ <dd>
869
+ <a href="<?php echo esc_url( $plugin->stars_url ); ?>" target="_blank">
870
+ <?php
871
+ wp_star_rating( [
872
+ 'rating' => $api_data->rating,
873
+ 'type' => 'percent',
874
+ 'number' => $api_data->num_ratings,
875
+ ] );
876
+ ?>
877
+ </a>
878
+ </dd>
879
  </dl>
880
  <?php } ?>
881
 
common/src/Tribe/Admin/Live_Date_Preview.php CHANGED
@@ -3,12 +3,12 @@
3
  * Facilitiates live date previews in the Events > Settings > Display admin screen.
4
  */
5
  class Tribe__Admin__Live_Date_Preview {
6
- protected $target_fields = array(
7
  'dateWithYearFormat',
8
  'dateWithoutYearFormat',
9
  'monthAndYearFormat',
10
  'weekDayFormat',
11
- );
12
 
13
  /**
14
  * Static Singleton Holder
@@ -31,7 +31,7 @@ class Tribe__Admin__Live_Date_Preview {
31
  * the user is actually on that tab).
32
  */
33
  public function __construct() {
34
- add_action( 'tribe_settings_after_do_tabs', array( $this, 'listen' ) );
35
  }
36
 
37
  /**
@@ -50,10 +50,10 @@ class Tribe__Admin__Live_Date_Preview {
50
  */
51
  $this->target_fields = (array) apply_filters( 'tribe_settings_date_preview_fields', $this->target_fields );
52
 
53
- add_filter( 'tribe_field_div_end', array( $this, 'setup_date_previews' ), 10, 2 );
54
 
55
  // We are still before `admin_enqueue_scripts` making it safe to use `tribe_asset`
56
- tribe_asset( Tribe__Main::instance(), 'tribe-date-live-refresh', 'admin-date-preview.js', array( 'jquery' ), 'admin_enqueue_scripts' );
57
  }
58
 
59
  public function setup_date_previews( $html, $field ) {
3
  * Facilitiates live date previews in the Events > Settings > Display admin screen.
4
  */
5
  class Tribe__Admin__Live_Date_Preview {
6
+ protected $target_fields = [
7
  'dateWithYearFormat',
8
  'dateWithoutYearFormat',
9
  'monthAndYearFormat',
10
  'weekDayFormat',
11
+ ];
12
 
13
  /**
14
  * Static Singleton Holder
31
  * the user is actually on that tab).
32
  */
33
  public function __construct() {
34
+ add_action( 'tribe_settings_after_do_tabs', [ $this, 'listen' ] );
35
  }
36
 
37
  /**
50
  */
51
  $this->target_fields = (array) apply_filters( 'tribe_settings_date_preview_fields', $this->target_fields );
52
 
53
+ add_filter( 'tribe_field_div_end', [ $this, 'setup_date_previews' ], 10, 2 );
54
 
55
  // We are still before `admin_enqueue_scripts` making it safe to use `tribe_asset`
56
+ tribe_asset( Tribe__Main::instance(), 'tribe-date-live-refresh', 'admin-date-preview.js', [ 'jquery' ], 'admin_enqueue_scripts' );
57
  }
58
 
59
  public function setup_date_previews( $html, $field ) {
common/src/Tribe/Admin/Notice/Marketing.php CHANGED
@@ -45,7 +45,7 @@ class Tribe__Admin__Notice__Marketing {
45
  /**
46
  * Register the Black Friday notice.
47
  *
48
- * @since TBD
49
  */
50
  public function black_friday_hook_notice() {
51
 
@@ -65,7 +65,7 @@ class Tribe__Admin__Notice__Marketing {
65
  /**
66
  * Unix time for Monday of Thanksgiving week @ 11am UTC. (11am UTC is 6am EST).
67
  *
68
- * @since TBD
69
  *
70
  * @return int
71
  */
@@ -79,7 +79,7 @@ class Tribe__Admin__Notice__Marketing {
79
  /**
80
  * Allow filtering of the Black Friday sale start date, mainly for testing purposes.
81
  *
82
- * @since TBD
83
  *
84
  * @param int $bf_start_date Unix time for the Monday of Thanksgiving week @ 6am UTC.
85
  */
@@ -89,7 +89,7 @@ class Tribe__Admin__Notice__Marketing {
89
  /**
90
  * Unix time for Dec 1 @ 5am UTC. (5am UTC is 12am EST).
91
  *
92
- * @since TBD
93
  *
94
  * @return int
95
  */
@@ -102,7 +102,7 @@ class Tribe__Admin__Notice__Marketing {
102
  /**
103
  * Allow filtering of the Black Friday sale end date, mainly for testing purposes.
104
  *
105
- * @since TBD
106
  *
107
  * @param int $bf_end_date Unix time for Dec 1 @ 6am UTC.
108
  */
@@ -114,7 +114,7 @@ class Tribe__Admin__Notice__Marketing {
114
  * Unix times for Monday of Thanksgiving week @ 6am UTC and Dec 1 2020 @ 6am UTC.
115
  * 6am UTC is midnight for TheEventsCalendar.com, which uses the America/Los_Angeles time zone.
116
  *
117
- * @since TBD
118
  *
119
  * @return boolean
120
  */
@@ -149,12 +149,12 @@ class Tribe__Admin__Notice__Marketing {
149
  /**
150
  * HTML for the Black Friday notice.
151
  *
152
- * @since TBD
153
  *
154
  * @return string
155
  */
156
  public function black_friday_display_notice() {
157
- Tribe__Assets::instance()->enqueue( array( 'tribe-common-admin' ) );
158
 
159
  $current_screen = get_current_screen();
160
 
45
  /**
46
  * Register the Black Friday notice.
47
  *
48
+ * @since 4.12.14
49
  */
50
  public function black_friday_hook_notice() {
51
 
65
  /**
66
  * Unix time for Monday of Thanksgiving week @ 11am UTC. (11am UTC is 6am EST).
67
  *
68
+ * @since 4.12.14
69
  *
70
  * @return int
71
  */
79
  /**
80
  * Allow filtering of the Black Friday sale start date, mainly for testing purposes.
81
  *
82
+ * @since 4.12.14
83
  *
84
  * @param int $bf_start_date Unix time for the Monday of Thanksgiving week @ 6am UTC.
85
  */
89
  /**
90
  * Unix time for Dec 1 @ 5am UTC. (5am UTC is 12am EST).
91
  *
92
+ * @since 4.12.14
93
  *
94
  * @return int
95
  */
102
  /**
103
  * Allow filtering of the Black Friday sale end date, mainly for testing purposes.
104
  *
105
+ * @since 4.12.14
106
  *
107
  * @param int $bf_end_date Unix time for Dec 1 @ 6am UTC.
108
  */
114
  * Unix times for Monday of Thanksgiving week @ 6am UTC and Dec 1 2020 @ 6am UTC.
115
  * 6am UTC is midnight for TheEventsCalendar.com, which uses the America/Los_Angeles time zone.
116
  *
117
+ * @since 4.12.14
118
  *
119
  * @return boolean
120
  */
149
  /**
150
  * HTML for the Black Friday notice.
151
  *
152
+ * @since 4.12.14
153
  *
154
  * @return string
155
  */
156
  public function black_friday_display_notice() {
157
+ Tribe__Assets::instance()->enqueue( [ 'tribe-common-admin' ] );
158
 
159
  $current_screen = get_current_screen();
160
 
common/src/Tribe/Admin/Notice/Php_Version.php CHANGED
@@ -9,13 +9,13 @@ class Tribe__Admin__Notice__Php_Version {
9
  // display the PHP version notice
10
  tribe_notice(
11
  'php-deprecated',
12
- array( $this, 'display_notice' ),
13
- array(
14
  'type' => 'warning',
15
  'dismiss' => 1,
16
  'wrap' => 'p',
17
- ),
18
- array( $this, 'should_display' )
19
  );
20
 
21
  }
9
  // display the PHP version notice
10
  tribe_notice(
11
  'php-deprecated',
12
+ [ $this, 'display_notice' ],
13
+ [
14
  'type' => 'warning',
15
  'dismiss' => 1,
16
  'wrap' => 'p',
17
+ ],
18
+ [ $this, 'should_display' ]
19
  );
20
 
21
  }
common/src/Tribe/Admin/Notice/Plugin_Download.php CHANGED
@@ -7,7 +7,7 @@ class Tribe__Admin__Notice__Plugin_Download {
7
 
8
  private $plugin_path;
9
 
10
- private $plugins_required = array();
11
 
12
  /**
13
  * @param string $plugin_path Path to the plugin file we're showing a notice for
@@ -17,7 +17,7 @@ class Tribe__Admin__Notice__Plugin_Download {
17
 
18
  tribe_notice(
19
  plugin_basename( $plugin_path ),
20
- array( $this, 'show_inactive_plugins_alert' )
21
  );
22
  }
23
 
@@ -60,7 +60,7 @@ class Tribe__Admin__Notice__Plugin_Download {
60
  }
61
 
62
  $plugin_data = get_plugin_data( $this->plugin_path );
63
- $req_plugins = array();
64
 
65
  if ( empty( $this->plugins_required ) ) {
66
  return;
@@ -111,10 +111,10 @@ class Tribe__Admin__Notice__Plugin_Download {
111
  $plugin_name[] = $plugin_data['Name'];
112
  }
113
 
114
- $allowed_html = array(
115
- 'strong' => array(),
116
- 'a' => array( 'href' => array() ),
117
- );
118
 
119
  $plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $plugin_name ), $allowed_html );
120
  $req_plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $req_plugins ), $allowed_html );
7
 
8
  private $plugin_path;
9
 
10
+ private $plugins_required = [];
11
 
12
  /**
13
  * @param string $plugin_path Path to the plugin file we're showing a notice for
17
 
18
  tribe_notice(
19
  plugin_basename( $plugin_path ),
20
+ [ $this, 'show_inactive_plugins_alert' ]
21
  );
22
  }
23
 
60
  }
61
 
62
  $plugin_data = get_plugin_data( $this->plugin_path );
63
+ $req_plugins = [];
64
 
65
  if ( empty( $this->plugins_required ) ) {
66
  return;
111
  $plugin_name[] = $plugin_data['Name'];
112
  }
113
 
114
+ $allowed_html = [
115
+ 'strong' => [],
116
+ 'a' => [ 'href' => [] ],
117
+ ];
118
 
119
  $plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $plugin_name ), $allowed_html );
120
  $req_plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $req_plugins ), $allowed_html );
common/src/Tribe/Admin/Notice/Plugin_Upgrade_Notice.php CHANGED
@@ -46,7 +46,7 @@ class Tribe__Admin__Notice__Plugin_Upgrade_Notice {
46
  $this->current_version = $current_version;
47
  $this->plugin_path = $plugin_path;
48
 
49
- add_action( "in_plugin_update_message-$plugin_path", array( $this, 'maybe_run' ) );
50
  }
51
 
52
  /**
46
  $this->current_version = $current_version;
47
  $this->plugin_path = $plugin_path;
48
 
49
+ add_action( "in_plugin_update_message-$plugin_path", [ $this, 'maybe_run' ] );
50
  }
51
 
52
  /**
common/src/Tribe/Admin/Notices.php CHANGED
@@ -65,7 +65,7 @@ class Tribe__Admin__Notices {
65
  *
66
  * @var array
67
  */
68
- protected $notices = array();
69
 
70
  /**
71
  * Register the Methods in the correct places
@@ -80,7 +80,7 @@ class Tribe__Admin__Notices {
80
  }
81
 
82
  // Before we bail on the
83
- add_action( 'wp_ajax_tribe_notice_dismiss', array( $this, 'maybe_dismiss' ) );
84
 
85
  // Doing AJAX? bail.
86
  if ( tribe( 'context' )->doing_ajax() ) {
@@ -88,14 +88,14 @@ class Tribe__Admin__Notices {
88
  }
89
 
90
  // Hook the actual rendering of notices
91
- add_action( 'current_screen', array( $this, 'hook' ), 20 );
92
 
93
  // Add our notice dismissal script
94
  tribe_asset(
95
  Tribe__Main::instance(),
96
  'tribe-notice-dismiss',
97
  'notice-dismiss.js',
98
- array( 'jquery' ),
99
  'admin_enqueue_scripts'
100
  );
101
  }
@@ -180,7 +180,7 @@ class Tribe__Admin__Notices {
180
  $wrap = isset( $notice->wrap ) ? $notice->wrap : false;
181
 
182
  if ( is_callable( $content ) ) {
183
- $content = call_user_func_array( $content, array( $notice ) );
184
  }
185
 
186
  // Return the rendered HTML
@@ -219,7 +219,7 @@ class Tribe__Admin__Notices {
219
  $notice = $this->get( $slug );
220
  $this->notices[ $slug ]->is_rendered = true;
221
 
222
- $classes = array( 'tribe-dismiss-notice', 'notice' );
223
  $classes[] = sanitize_html_class( 'notice-' . $notice->type );
224
  $classes[] = sanitize_html_class( 'tribe-notice-' . $notice->slug );
225
 
@@ -382,10 +382,10 @@ class Tribe__Admin__Notices {
382
  * @return int
383
  */
384
  public function undismiss_for_all( $slug ) {
385
- $user_query = new WP_User_Query( array(
386
  'meta_key' => self::$meta_key,
387
  'meta_value' => $slug,
388
- ) );
389
 
390
  $affected = 0;
391
 
@@ -411,23 +411,23 @@ class Tribe__Admin__Notices {
411
  *
412
  * @return stdClass
413
  */
414
- public function register( $slug, $callback, $arguments = array(), $active_callback = null ) {
415
  // Prevent weird stuff here
416
  $slug = sanitize_title_with_dashes( $slug );
417
 
418
- $defaults = array(
419
- 'callback' => null,
420
- 'content' => null,
421
- 'action' => 'admin_notices',
422
- 'priority' => 10,
423
- 'expire' => false,
424
- 'dismiss' => false,
425
- 'type' => 'error',
426
- 'is_rendered' => false,
427
- 'wrap' => false,
428
- );
429
-
430
- $defaults['callback'] = array( $this, 'render_' . $slug );
431
  $defaults['content'] = $callback;
432
 
433
  if ( is_callable( $active_callback ) ) {
@@ -467,9 +467,9 @@ class Tribe__Admin__Notices {
467
  *
468
  * @return stdClass Which notice was registered
469
  */
470
- public function register_transient( $slug, $html, $arguments = array(), $expire = null ) {
471
  $notices = $this->get_transients();
472
- $notices[ $slug ] = array( $html, $arguments, time() + $expire );
473
  $this->set_transients( $notices );
474
  }
475
 
@@ -557,7 +557,7 @@ class Tribe__Admin__Notices {
557
 
558
  $transient = self::$transient_notices_name;
559
  $notices = get_transient( $transient );
560
- $notices = is_array( $notices ) ? $notices : array();
561
 
562
  if ( $this->did_prune_transients ) {
563
  $this->did_prune_transients = true;
65
  *
66
  * @var array
67
  */
68
+ protected $notices = [];
69
 
70
  /**
71
  * Register the Methods in the correct places
80
  }
81
 
82
  // Before we bail on the
83
+ add_action( 'wp_ajax_tribe_notice_dismiss', [ $this, 'maybe_dismiss' ] );
84
 
85
  // Doing AJAX? bail.
86
  if ( tribe( 'context' )->doing_ajax() ) {
88
  }
89
 
90
  // Hook the actual rendering of notices
91
+ add_action( 'current_screen', [ $this, 'hook' ], 20 );
92
 
93
  // Add our notice dismissal script
94
  tribe_asset(
95
  Tribe__Main::instance(),
96
  'tribe-notice-dismiss',
97
  'notice-dismiss.js',
98
+ [ 'jquery' ],
99
  'admin_enqueue_scripts'
100
  );
101
  }
180
  $wrap = isset( $notice->wrap ) ? $notice->wrap : false;
181
 
182
  if ( is_callable( $content ) ) {
183
+ $content = call_user_func_array( $content, [ $notice ] );
184
  }
185
 
186
  // Return the rendered HTML
219
  $notice = $this->get( $slug );
220
  $this->notices[ $slug ]->is_rendered = true;
221
 
222
+ $classes = [ 'tribe-dismiss-notice', 'notice' ];
223
  $classes[] = sanitize_html_class( 'notice-' . $notice->type );
224
  $classes[] = sanitize_html_class( 'tribe-notice-' . $notice->slug );
225
 
382
  * @return int
383
  */
384
  public function undismiss_for_all( $slug ) {
385
+ $user_query = new WP_User_Query( [
386
  'meta_key' => self::$meta_key,
387
  'meta_value' => $slug,
388
+ ] );
389
 
390
  $affected = 0;
391
 
411
  *
412
  * @return stdClass
413
  */
414
+ public function register( $slug, $callback, $arguments = [], $active_callback = null ) {
415
  // Prevent weird stuff here
416
  $slug = sanitize_title_with_dashes( $slug );
417
 
418
+ $defaults = [
419
+ 'callback' => null,
420
+ 'content' => null,
421
+ 'action' => 'admin_notices',
422
+ 'priority' => 10,
423
+ 'expire' => false,
424
+ 'dismiss' => false,
425
+ 'type' => 'error',
426
+ 'is_rendered' => false,
427
+ 'wrap' => false,
428
+ ];
429
+
430
+ $defaults['callback'] = [ $this, 'render_' . $slug ];
431
  $defaults['content'] = $callback;
432
 
433
  if ( is_callable( $active_callback ) ) {
467
  *
468
  * @return stdClass Which notice was registered
469
  */
470
+ public function register_transient( $slug, $html, $arguments = [], $expire = null ) {
471
  $notices = $this->get_transients();
472
+ $notices[ $slug ] = [ $html, $arguments, time() + $expire ];
473
  $this->set_transients( $notices );
474
  }
475
 
557
 
558
  $transient = self::$transient_notices_name;
559
  $notices = get_transient( $transient );
560
+ $notices = is_array( $notices ) ? $notices : [];
561
 
562
  if ( $this->did_prune_transients ) {
563
  $this->did_prune_transients = true;
common/src/Tribe/Ajax/Dropdown.php CHANGED
@@ -15,8 +15,8 @@ class Tribe__Ajax__Dropdown {
15
  * @return void
16
  */
17
  public function hook() {
18
- add_action( 'wp_ajax_tribe_dropdown', array( $this, 'route' ) );
19
- add_action( 'wp_ajax_nopriv_tribe_dropdown', array( $this, 'route' ) );
20
  }
21
 
22
  /**
@@ -118,7 +118,7 @@ class Tribe__Ajax__Dropdown {
118
  }
119
 
120
  foreach ( $into as $term ) {
121
- $term->children = array();
122
  $this->sort_terms_hierarchically( $terms, $term->children, $term->term_id );
123
  }
124
  }
@@ -145,7 +145,7 @@ class Tribe__Ajax__Dropdown {
145
  }
146
 
147
  if ( empty( $results ) ) {
148
- return array();
149
  }
150
 
151
  return array_values( (array) $results );
@@ -160,12 +160,12 @@ class Tribe__Ajax__Dropdown {
160
  * @return object
161
  */
162
  public function parse_params( $params ) {
163
- $defaults = array(
164
  'search' => null,
165
  'page' => 0,
166
- 'args' => array(),
167
  'source' => null,
168
- );
169
 
170
  $arguments = wp_parse_args( $params, $defaults );
171
 
@@ -183,7 +183,7 @@ class Tribe__Ajax__Dropdown {
183
  */
184
  public function route() {
185
  // Push all POST params into a Default set of data
186
- $args = $this->parse_params( empty( $_POST ) ? array() : $_POST );
187
 
188
  if ( empty( $args->source ) ) {
189
  $this->error( esc_attr__( 'Missing data source for this dropdown', 'tribe-common' ) );
@@ -192,9 +192,9 @@ class Tribe__Ajax__Dropdown {
192
  // Define a Filter to allow external calls to our Select2 Dropboxes
193
  $filter = sanitize_key( 'tribe_dropdown_' . $args->source );
194
  if ( has_filter( $filter ) ) {
195
- $data = apply_filters( $filter, array(), $args->search, $args->page, $args->args, $args->source );
196
  } else {
197
- $data = call_user_func_array( array( $this, $args->source ), (array) $args );
198
  }
199
 
200
  // if we got a empty dataset we return an error
@@ -216,7 +216,7 @@ class Tribe__Ajax__Dropdown {
216
  private function success( $data ) {
217
  // We need a Results item for Select2 Work
218
  if ( ! isset( $data['results'] ) ) {
219
- $data['results'] = array();
220
  }
221
 
222
  wp_send_json_success( $data );
@@ -231,10 +231,10 @@ class Tribe__Ajax__Dropdown {
231
  * @return void
232
  */
233
  private function error( $message ) {
234
- $data = array(
235
  'message' => $message,
236
- 'results' => array(),
237
- );
238
  wp_send_json_error( $data );
239
  }
240
 
15
  * @return void
16
  */
17
  public function hook() {
18
+ add_action( 'wp_ajax_tribe_dropdown', [ $this, 'route' ] );
19
+ add_action( 'wp_ajax_nopriv_tribe_dropdown', [ $this, 'route' ] );
20
  }
21
 
22
  /**
118
  }
119
 
120
  foreach ( $into as $term ) {
121
+ $term->children = [];
122
  $this->sort_terms_hierarchically( $terms, $term->children, $term->term_id );
123
  }
124
  }
145
  }
146
 
147
  if ( empty( $results ) ) {
148
+ return [];
149
  }
150
 
151
  return array_values( (array) $results );
160
  * @return object
161
  */
162
  public function parse_params( $params ) {
163
+ $defaults = [
164
  'search' => null,
165
  'page' => 0,
166
+ 'args' => [],
167
  'source' => null,
168
+ ];
169
 
170
  $arguments = wp_parse_args( $params, $defaults );
171
 
183
  */
184
  public function route() {
185
  // Push all POST params into a Default set of data
186
+ $args = $this->parse_params( empty( $_POST ) ? [] : $_POST );
187
 
188
  if ( empty( $args->source ) ) {
189
  $this->error( esc_attr__( 'Missing data source for this dropdown', 'tribe-common' ) );
192
  // Define a Filter to allow external calls to our Select2 Dropboxes
193
  $filter = sanitize_key( 'tribe_dropdown_' . $args->source );
194
  if ( has_filter( $filter ) ) {
195
+ $data = apply_filters( $filter, [], $args->search, $args->page, $args->args, $args->source );
196
  } else {
197
+ $data = call_user_func_array( [ $this, $args->source ], (array) $args );
198
  }
199
 
200
  // if we got a empty dataset we return an error
216
  private function success( $data ) {
217
  // We need a Results item for Select2 Work
218
  if ( ! isset( $data['results'] ) ) {
219
+ $data['results'] = [];
220
  }
221
 
222
  wp_send_json_success( $data );
231
  * @return void
232
  */
233
  private function error( $message ) {
234
+ $data = [
235
  'message' => $message,
236
+ 'results' => [],
237
+ ];
238
  wp_send_json_error( $data );
239
  }
240
 
common/src/Tribe/Ajax/Operations.php CHANGED
@@ -8,7 +8,7 @@
8
  */
9
  class Tribe__Ajax__Operations {
10
 
11
- public function verify_or_exit( $nonce, $action, $exit_data = array() ) {
12
  if ( ! wp_verify_nonce( $nonce, $action ) ) {
13
  exit( $exit_data );
14
  }
@@ -16,7 +16,7 @@ class Tribe__Ajax__Operations {
16
  return true;
17
  }
18
 
19
- public function exit_data( $data = array() ) {
20
  exit( $data );
21
  }
22
  }
8
  */
9
  class Tribe__Ajax__Operations {
10
 
11
+ public function verify_or_exit( $nonce, $action, $exit_data = [] ) {
12
  if ( ! wp_verify_nonce( $nonce, $action ) ) {
13
  exit( $exit_data );
14
  }
16
  return true;
17
  }
18
 
19
+ public function exit_data( $data = [] ) {
20
  exit( $data );
21
  }
22
  }
common/src/Tribe/App_Shop.php CHANGED
@@ -33,8 +33,8 @@ if ( ! class_exists( 'Tribe__App_Shop' ) ) {
33
  * Class constructor
34
  */
35
  public function __construct() {
36
- add_action( 'admin_menu', array( $this, 'add_menu_page' ), 100 );
37
- add_action( 'wp_before_admin_bar_render', array( $this, 'add_toolbar_item' ), 20 );
38
 
39
  $this->register_assets();
40
  }
@@ -53,7 +53,17 @@ if ( ! class_exists( 'Tribe__App_Shop' ) ) {
53
 
54
  $where = Tribe__Settings::instance()->get_parent_slug();
55
 
56
- $this->admin_page = add_submenu_page( $where, $page_title, $menu_title, $capability, self::MENU_SLUG, array( $this, 'do_menu_page' ) );
 
 
 
 
 
 
 
 
 
 
57
  }
58
 
59
  /**
@@ -67,12 +77,12 @@ if ( ! class_exists( 'Tribe__App_Shop' ) ) {
67
  if ( current_user_can( $capability ) ) {
68
  global $wp_admin_bar;
69
 
70
- $wp_admin_bar->add_menu( array(
71
  'id' => 'tribe-events-app-shop',
72
  'title' => esc_html__( 'Event Add-Ons', 'tribe-common' ),
73
- 'href' => Tribe__Settings::instance()->get_url( array( 'page' => self::MENU_SLUG ) ),
74
  'parent' => 'tribe-events-settings-group',
75
- ) );
76
  }
77
  }
78
 
@@ -82,14 +92,14 @@ if ( ! class_exists( 'Tribe__App_Shop' ) ) {
82
  protected function register_assets() {
83
  tribe_assets(
84
  Tribe__Main::instance(),
85
- array(
86
- array( 'tribe-app-shop-css', 'app-shop.css' ),
87
- array( 'tribe-app-shop-js', 'app-shop.js', array( 'jquery' ) ),
88
- ),
89
  'admin_enqueue_scripts',
90
- array(
91
- 'conditionals' => array( $this, 'is_current_page' ),
92
- )
93
  );
94
  }
95
 
33
  * Class constructor
34
  */
35
  public function __construct() {
36
+ add_action( 'admin_menu', [ $this, 'add_menu_page' ], 100 );
37
+ add_action( 'wp_before_admin_bar_render', [ $this, 'add_toolbar_item' ], 20 );
38
 
39
  $this->register_assets();
40
  }
53
 
54
  $where = Tribe__Settings::instance()->get_parent_slug();
55
 
56
+ $this->admin_page = add_submenu_page(
57
+ $where,
58
+ $page_title,
59
+ $menu_title,
60
+ $capability,
61
+ self::MENU_SLUG,
62
+ [
63
+ $this,
64
+ 'do_menu_page',
65
+ ]
66
+ );
67
  }
68
 
69
  /**
77
  if ( current_user_can( $capability ) ) {
78
  global $wp_admin_bar;
79
 
80
+ $wp_admin_bar->add_menu( [
81
  'id' => 'tribe-events-app-shop',
82
  'title' => esc_html__( 'Event Add-Ons', 'tribe-common' ),
83
+ 'href' => Tribe__Settings::instance()->get_url( [ 'page' => self::MENU_SLUG ] ),
84
  'parent' => 'tribe-events-settings-group',
85
+ ] );
86
  }
87
  }
88
 
92
  protected function register_assets() {
93
  tribe_assets(
94
  Tribe__Main::instance(),
95
+ [
96
+ [ 'tribe-app-shop-css', 'app-shop.css' ],
97
+ [ 'tribe-app-shop-js', 'app-shop.js', [ 'jquery' ] ],
98
+ ],
99
  'admin_enqueue_scripts',
100
+ [
101
+ 'conditionals' => [ $this, 'is_current_page' ],
102
+ ]
103
  );
104
  }
105
 
common/src/Tribe/Asset/Data.php CHANGED
@@ -1,67 +1,67 @@
1
- <?php
2
- /**
3
- * Handles adding script data to the page in cases where localizing a
4
- * specific script is not suitable.
5
- *
6
- * Should generally be accessed via tribe( 'tribe.asset.script-data' )
7
- * rather than via direct instantiation.
8
- */
9
- class Tribe__Asset__Data {
10
- /**
11
- * Container for any JS data objects that should be added to the page.
12
- *
13
- * @var array
14
- */
15
- protected $objects = array();
16
-
17
- /**
18
- * Hooks up the method used to actually render the JSON data.
19
- */
20
- public function hook() {
21
- if ( is_admin() ) {
22
- add_action( 'admin_footer', array( $this, 'render_json' ) );
23
- add_action( 'customize_controls_print_footer_scripts', array( $this, 'render_json' ) );
24
- } else {
25
- add_action( 'wp_footer', array( $this, 'render_json' ) );
26
- }
27
- }
28
-
29
- /**
30
- * Adds the provided data to the list of objects that should be available
31
- * to other scripts.
32
- *
33
- * @param string $object_name Object name.
34
- * @param array $data Object data.
35
- */
36
- public function add( $object_name, $data ) {
37
- /**
38
- * Allow plugins to filter data for a specific object.
39
- *
40
- * @since 4.8.4
41
- *
42
- * @param array $data Object data.
43
- * @param string $object_name Object name.
44
- */
45
- $data = apply_filters( "tribe_asset_data_add_object_{$object_name}", $data, $object_name );
46
-
47
- $this->objects[ $object_name ] = $data;
48
- }
49
-
50
- /**
51
- * Outputs the
52
- * @internal
53
- */
54
- public function render_json() {
55
- if ( empty( $this->objects ) ) {
56
- return;
57
- }
58
-
59
- echo '<script> /* <![CDATA[ */';
60
-
61
- foreach ( $this->objects as $object_name => $data ) {
62
- echo 'var ' . esc_html( $object_name ) . ' = ' . wp_json_encode( $data ) . ';';
63
- }
64
-
65
- echo '/* ]]> */ </script>';
66
- }
67
- }
1
+ <?php
2
+ /**
3
+ * Handles adding script data to the page in cases where localizing a
4
+ * specific script is not suitable.
5
+ *
6
+ * Should generally be accessed via tribe( 'tribe.asset.script-data' )
7
+ * rather than via direct instantiation.
8
+ */
9
+ class Tribe__Asset__Data {
10
+ /**
11
+ * Container for any JS data objects that should be added to the page.
12
+ *
13
+ * @var array
14
+ */
15
+ protected $objects = [];
16
+
17
+ /**
18
+ * Hooks up the method used to actually render the JSON data.
19
+ */
20
+ public function hook() {
21
+ if ( is_admin() ) {
22
+ add_action( 'admin_footer', [ $this, 'render_json' ] );
23
+ add_action( 'customize_controls_print_footer_scripts', [ $this, 'render_json' ] );
24
+ } else {
25
+ add_action( 'wp_footer', [ $this, 'render_json' ] );
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Adds the provided data to the list of objects that should be available
31
+ * to other scripts.
32
+ *
33
+ * @param string $object_name Object name.
34
+ * @param array $data Object data.
35
+ */
36
+ public function add( $object_name, $data ) {
37
+ /**
38
+ * Allow plugins to filter data for a specific object.
39
+ *
40
+ * @since 4.8.4
41
+ *
42
+ * @param array $data Object data.
43
+ * @param string $object_name Object name.
44
+ */
45
+ $data = apply_filters( "tribe_asset_data_add_object_{$object_name}", $data, $object_name );
46
+
47
+ $this->objects[ $object_name ] = $data;
48
+ }
49
+
50
+ /**
51
+ * Outputs the
52
+ * @internal
53
+ */
54
+ public function render_json() {
55
+ if ( empty( $this->objects ) ) {
56
+ return;
57
+ }
58
+
59
+ echo '<script> /* <![CDATA[ */';
60
+
61
+ foreach ( $this->objects as $object_name => $data ) {
62
+ echo 'var ' . esc_html( $object_name ) . ' = ' . wp_json_encode( $data ) . ';';
63
+ }
64
+
65
+ echo '/* ]]> */ </script>';
66
+ }
67
+ }
common/src/Tribe/Assets.php CHANGED
@@ -539,8 +539,8 @@ class Tribe__Assets {
539
  }
540
 
541
  if ( isset( $arguments['translations']['domain'], $arguments['translations']['path'] ) ) {
542
- $asset->translastions['domain'] = $arguments['translations']['domain'];
543
- $asset->translastions['path'] = $arguments['translations']['path'];
544
  }
545
 
546
  /**
539
  }
540
 
541
  if ( isset( $arguments['translations']['domain'], $arguments['translations']['path'] ) ) {
542
+ $asset->translations['domain'] = $arguments['translations']['domain'];
543
+ $asset->translations['path'] = $arguments['translations']['path'];
544
  }
545
 
546
  /**
common/src/Tribe/Assets_Pipeline.php CHANGED
@@ -12,7 +12,7 @@ class Tribe__Assets_Pipeline {
12
  * @since 4.7.7
13
  */
14
  public function hook() {
15
- add_filter( 'script_loader_tag', array( $this, 'prevent_underscore_conflict' ), 10, 2 );
16
  }
17
 
18
  /**
12
  * @since 4.7.7
13
  */
14
  public function hook() {
15
+ add_filter( 'script_loader_tag', [ $this, 'prevent_underscore_conflict' ], 10, 2 );
16
  }
17
 
18
  /**
common/src/Tribe/Autoloader.php CHANGED
@@ -77,12 +77,12 @@
77
  protected $dir_separator = '__';
78
 
79
  /** @var string[] */
80
- protected $fallback_dirs = array();
81
 
82
  /**
83
  * @var array
84
  */
85
- protected $class_paths = array();
86
 
87
  /**
88
  * Returns the singleton instance of the class.
@@ -130,7 +130,7 @@
130
  }
131
 
132
  if ( ! isset( $this->prefixes[ $prefix ] ) ) {
133
- $this->prefixes[ $prefix ] = array();
134
  }
135
 
136
  $this->prefixes[ $prefix ][] = $root_dir;
@@ -148,7 +148,7 @@
148
  * autoload register.
149
  */
150
  public function register_autoloader() {
151
- spl_autoload_register( array( $this, 'autoload' ) );
152
  }
153
 
154
  /**
77
  protected $dir_separator = '__';
78
 
79
  /** @var string[] */
80
+ protected $fallback_dirs = [];
81
 
82
  /**
83
  * @var array
84
  */
85
+ protected $class_paths = [];
86
 
87
  /**
88
  * Returns the singleton instance of the class.
130
  }
131
 
132
  if ( ! isset( $this->prefixes[ $prefix ] ) ) {
133
+ $this->prefixes[ $prefix ] = [];
134
  }
135
 
136
  $this->prefixes[ $prefix ][] = $root_dir;
148
  * autoload register.
149
  */
150
  public function register_autoloader() {
151
+ spl_autoload_register( [ $this, 'autoload' ] );
152
  }
153
 
154
  /**
common/src/Tribe/Cache.php CHANGED
@@ -87,6 +87,10 @@ class Tribe__Cache implements ArrayAccess {
87
  * @return bool
88
  */
89
  public function set_transient( $id, $value, $expiration = 0, $expiration_trigger = '' ) {
 
 
 
 
90
  return set_transient( $this->get_id( $id, $expiration_trigger ), $value, $expiration );
91
  }
92
 
@@ -506,4 +510,36 @@ class Tribe__Cache implements ArrayAccess {
506
  }
507
  } while ( ! empty( $post_objects ) && is_array( $post_objects ) && count( $post_objects ) < count( $post_ids ) );
508
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
509
  }
87
  * @return bool
88
  */
89
  public function set_transient( $id, $value, $expiration = 0, $expiration_trigger = '' ) {
90
+ if ( $this->data_size_over_packet_size( $value ) ) {
91
+ return false;
92
+ }
93
+
94
  return set_transient( $this->get_id( $id, $expiration_trigger ), $value, $expiration );
95
  }
96
 
510
  }
511
  } while ( ! empty( $post_objects ) && is_array( $post_objects ) && count( $post_objects ) < count( $post_ids ) );
512
  }
513
+
514
+ /**
515
+ * If NOT using an external object caching system, then check if the size, in bytes, of the data
516
+ * to write to the database would fit into the `max_allowed_packet` setting or not.
517
+ *
518
+ * @since 4.12.14
519
+ *
520
+ * @param string|array|object $value The value to check.
521
+ *
522
+ * @return bool Whether the data, in its serialized form, would fit into the current database `max_allowed_packet`
523
+ * setting or not.
524
+ */
525
+ public function data_size_over_packet_size( $value ) {
526
+ if ( wp_using_ext_object_cache() ) {
527
+ // We cannot know and that is a concern of the external caching system.
528
+ return false;
529
+ }
530
+
531
+ try {
532
+ $serialized_value = maybe_serialize( $value );
533
+ $size = strlen( $serialized_value );
534
+ } catch ( Exception $e ) {
535
+ // The underlying function would run into the same issue, bail and do not set the transient.
536
+ return true;
537
+ }
538
+
539
+ /** @var Tribe__Feature_Detection $feature_detection */
540
+ $feature_detection = tribe( 'feature-detection' );
541
+
542
+ // If the size of the string is above 90% of the database `max_allowed_packet` setting, then it should not be written to the db.
543
+ return $size > ( $feature_detection->get_mysql_max_packet_size() * .9 );
544
+ }
545
  }
common/src/Tribe/Changelog_Reader.php CHANGED
@@ -17,7 +17,7 @@ class Tribe__Changelog_Reader {
17
  $contents = $this->extract_changelog_section();
18
  $lines = explode( "\n", $contents );
19
 
20
- $sections = array();
21
  $current_section = '';
22
  foreach ( $lines as $line ) {
23
  $line = trim( $line );
@@ -27,7 +27,7 @@ class Tribe__Changelog_Reader {
27
  }
28
  $header = trim( $line, '= ' );
29
  $current_section = esc_html( $header );
30
- $sections[ $current_section ] = array();
31
  } elseif ( strlen( $line ) > 0 ) {
32
  $message = trim( $line, '* ' );
33
  $sections[ $current_section ][] = esc_html( $message );
17
  $contents = $this->extract_changelog_section();
18
  $lines = explode( "\n", $contents );
19
 
20
+ $sections = [];
21
  $current_section = '';
22
  foreach ( $lines as $line ) {
23
  $line = trim( $line );
27
  }
28
  $header = trim( $line, '= ' );
29
  $current_section = esc_html( $header );
30
+ $sections[ $current_section ] = [];
31
  } elseif ( strlen( $line ) > 0 ) {
32
  $message = trim( $line, '* ' );
33
  $sections[ $current_section ][] = esc_html( $message );
common/src/Tribe/Context.php CHANGED
@@ -190,13 +190,13 @@ class Tribe__Context {
190
  *
191
  * @var array
192
  */
193
- protected static $associative_locations = array(
194
  self::TRANSIENT,
195
  self::METHOD,
196
  self::STATIC_METHOD,
197
  self::PROP,
198
  self::STATIC_PROP,
199
- );
200
 
201
  /**
202
  * Whether the static dynamic locations were set or not.
@@ -213,7 +213,7 @@ class Tribe__Context {
213
  *
214
  * @var array
215
  */
216
- protected $override_locations = array();
217
 
218
  /**
219
  * Whether the context of the current HTTP request is an AJAX one or not.
@@ -234,7 +234,8 @@ class Tribe__Context {
234
  *
235
  * @var array
236
  */
237
- protected $request_cache = array();
 
238
  /**
239
  * Whether this context should use the default locations or not.
240
  * This flag property is set to `false` when a context is obtained using
@@ -281,7 +282,7 @@ class Tribe__Context {
281
  }
282
 
283
  if ( ! empty( $post_or_type ) ) {
284
- $lookup = array( $_GET, $_POST, $_REQUEST );
285
 
286
  $current_post = Tribe__Utils__Array::get_in_any( $lookup, 'post', get_post() );
287
 
@@ -292,7 +293,7 @@ class Tribe__Context {
292
  return ! empty( $post ) && $post == $current_post;
293
  }
294
 
295
- $post_types = is_array( $post_or_type ) ? $post_or_type : array( $post_or_type );
296
 
297
  $post = $is_post ? get_post( $current_post ) : null;
298
 
@@ -306,7 +307,7 @@ class Tribe__Context {
306
  $post_type = Tribe__Utils__Array::get_in_any( $lookup, 'post_type', 'post' );
307
  }
308
 
309
- return (bool) count( array_intersect( $post_types, array( $post_type ) ) );
310
  }
311
 
312
  return $is_new || $is_post;
@@ -446,7 +447,7 @@ class Tribe__Context {
446
  if ( null !== $key ) {
447
  unset( $this->request_cache[ $key ] );
448
  } else {
449
- $this->request_cache = array();
450
  }
451
  }
452
 
@@ -753,7 +754,7 @@ class Tribe__Context {
753
 
754
  foreach ( $classes_and_methods as $class => $method ) {
755
  $the_value = class_exists( $class ) && method_exists( $class, $method )
756
- ? call_user_func( array( $class, $method ) )
757
  : self::NOT_FOUND;
758
 
759
  if ( $the_value !== self::NOT_FOUND ) {
@@ -867,16 +868,16 @@ class Tribe__Context {
867
  foreach ( $targets as $arg_1 => $arg_2 ) {
868
  if ( self::FUNC === $location && is_array( $arg_2 ) && is_callable( $arg_2 ) ) {
869
  // Handles write functions specified as an array.
870
- $location_args = array( $arg_2 );
871
  } else {
872
  $location_args = in_array( $location, self::$associative_locations, true )
873
- ? array( $arg_1, $arg_2 )
874
  : (array) $arg_2;
875
  }
876
 
877
- $args = array_merge( $location_args, array( $value ) );
878
 
879
- call_user_func_array( array( $this, $write_func ), $args );
880
  }
881
  }
882
  }
@@ -1055,7 +1056,7 @@ class Tribe__Context {
1055
  if ( ! class_exists( $class ) ) {
1056
  return;
1057
  }
1058
- call_user_func( array( $class, $method ), $value );
1059
  }
1060
 
1061
  /**
@@ -1071,7 +1072,7 @@ class Tribe__Context {
1071
  if ( ! tribe()->offsetExists( $binding ) ) {
1072
  return;
1073
  }
1074
- call_user_func( array( tribe( $binding ), $method ), $value );
1075
  }
1076
 
1077
  /**
@@ -1142,7 +1143,7 @@ class Tribe__Context {
1142
  */
1143
  public function to_array( ) {
1144
  $locations = array_keys( array_merge( $this->get_locations(), $this->request_cache ) );
1145
- $dump = array();
1146
 
1147
  foreach ( $locations as $location ) {
1148
  $the_value = $this->get( $location, self::NOT_FOUND );
@@ -1232,7 +1233,7 @@ class Tribe__Context {
1232
  public function get_orm_args( array $fields = null, $whitelist = true ) {
1233
  $locations = $this->get_locations();
1234
  $dump = $this->to_array();
1235
- $orm_args = array();
1236
  $is_global_context = tribe_context() === $this;
1237
 
1238
  foreach ( $dump as $key => $value ) {
190
  *
191
  * @var array
192
  */
193
+ protected static $associative_locations = [
194
  self::TRANSIENT,
195
  self::METHOD,
196
  self::STATIC_METHOD,
197
  self::PROP,
198
  self::STATIC_PROP,
199
+ ];
200
 
201
  /**
202
  * Whether the static dynamic locations were set or not.
213
  *
214
  * @var array
215
  */
216
+ protected $override_locations = [];
217
 
218
  /**
219
  * Whether the context of the current HTTP request is an AJAX one or not.
234
  *
235
  * @var array
236
  */
237
+ protected $request_cache = [];
238
+
239
  /**
240
  * Whether this context should use the default locations or not.
241
  * This flag property is set to `false` when a context is obtained using
282
  }
283
 
284
  if ( ! empty( $post_or_type ) ) {
285
+ $lookup = [ $_GET, $_POST, $_REQUEST ];
286
 
287
  $current_post = Tribe__Utils__Array::get_in_any( $lookup, 'post', get_post() );
288
 
293
  return ! empty( $post ) && $post == $current_post;
294
  }
295
 
296
+ $post_types = is_array( $post_or_type ) ? $post_or_type : [ $post_or_type ];
297
 
298
  $post = $is_post ? get_post( $current_post ) : null;
299
 
307
  $post_type = Tribe__Utils__Array::get_in_any( $lookup, 'post_type', 'post' );
308
  }
309
 
310
+ return (bool) count( array_intersect( $post_types, [ $post_type ] ) );
311
  }
312
 
313
  return $is_new || $is_post;
447
  if ( null !== $key ) {
448
  unset( $this->request_cache[ $key ] );
449
  } else {
450
+ $this->request_cache = [];
451
  }
452
  }
453
 
754
 
755
  foreach ( $classes_and_methods as $class => $method ) {
756
  $the_value = class_exists( $class ) && method_exists( $class, $method )
757
+ ? call_user_func( [ $class, $method ] )
758
  : self::NOT_FOUND;
759
 
760
  if ( $the_value !== self::NOT_FOUND ) {
868
  foreach ( $targets as $arg_1 => $arg_2 ) {
869
  if ( self::FUNC === $location && is_array( $arg_2 ) && is_callable( $arg_2 ) ) {
870
  // Handles write functions specified as an array.
871
+ $location_args = [ $arg_2 ];
872
  } else {
873
  $location_args = in_array( $location, self::$associative_locations, true )
874
+ ? [ $arg_1, $arg_2 ]
875
  : (array) $arg_2;
876
  }
877
 
878
+ $args = array_merge( $location_args, [ $value ] );
879
 
880
+ call_user_func_array( [ $this, $write_func ], $args );
881
  }
882
  }
883
  }
1056
  if ( ! class_exists( $class ) ) {
1057
  return;
1058
  }
1059
+ call_user_func( [ $class, $method ], $value );
1060
  }
1061
 
1062
  /**
1072
  if ( ! tribe()->offsetExists( $binding ) ) {
1073
  return;
1074
  }
1075
+ call_user_func( [ tribe( $binding ), $method ], $value );
1076
  }
1077
 
1078
  /**
1143
  */
1144
  public function to_array( ) {
1145
  $locations = array_keys( array_merge( $this->get_locations(), $this->request_cache ) );
1146
+ $dump = [];
1147
 
1148
  foreach ( $locations as $location ) {
1149
  $the_value = $this->get( $location, self::NOT_FOUND );
1233
  public function get_orm_args( array $fields = null, $whitelist = true ) {
1234
  $locations = $this->get_locations();
1235
  $dump = $this->to_array();
1236
+ $orm_args = [];
1237
  $is_global_context = tribe_context() === $this;
1238
 
1239
  foreach ( $dump as $key => $value ) {
common/src/Tribe/Cost_Utils.php CHANGED
@@ -86,7 +86,7 @@ class Tribe__Cost_Utils {
86
  * @return array
87
  */
88
  public function get_separators() {
89
- $separators = array( ',', '.' );
90
 
91
  /**
92
  * Filters the cost string possible separators, those must be only 1 char.
@@ -161,29 +161,33 @@ class Tribe__Cost_Utils {
161
  *
162
  * @return string|array The merged cost range.
163
  */
164
- public function merge_cost_ranges( $original_string_cost, $merging_cost, $with_currency_symbol, $sorted_mins = array(), $sorted_maxs = array() ) {
165
  if ( empty( $merging_cost ) || $original_string_cost === $merging_cost ) {
166
  return $original_string_cost;
167
  }
168
 
169
  $_merging_cost = array_map(
170
- array( $this, 'convert_decimal_separator' ), (array) $merging_cost
171
  );
172
- $_merging_cost = array_map( array( $this, 'numerize_numbers' ), $_merging_cost );
173
  $numeric_merging_cost_costs = array_filter( $_merging_cost, 'is_numeric' );
174
 
175
- $matches = array();
176
  preg_match_all(
177
  '!\d+(?:([' . preg_quote( $this->_supported_decimal_separators ) . '])\d+)?!', $original_string_cost,
178
  $matches
179
  );
180
  $this->_current_original_cost_separator = empty( $matches[1][0] ) ? '.' : $matches[1][0];
181
- $matches[0] = empty( $matches[0] ) ? $matches[0] : array_map(
182
- array(
183
- $this,
184
- 'convert_decimal_separator',
185
- ), $matches[0]
186
- );
 
 
 
 
187
  $numeric_orignal_costs = empty( $matches[0] ) ? $matches[0] : array_map(
188
  'floatval', $matches[0]
189
  );
@@ -215,10 +219,10 @@ class Tribe__Cost_Utils {
215
  $cost_max = empty( $all_numeric_costs ) ? '' : max( $all_numeric_costs );
216
  }
217
 
218
- $cost = array_filter( array( $cost_min, $cost_max ) );
219
 
220
  if ( $with_currency_symbol ) {
221
- $formatted_cost = array();
222
  foreach ( $cost as $c ) {
223
  $formatted_cost[] = is_numeric( $c ) ? tribe_format_currency( $c ) : $c;
224
  }
@@ -226,7 +230,8 @@ class Tribe__Cost_Utils {
226
  }
227
 
228
  return empty( $cost ) ? $original_string_cost : array_map(
229
- array( $this, 'restore_original_decimal_separator' ), $cost
 
230
  );
231
  }
232
 
@@ -304,7 +309,7 @@ class Tribe__Cost_Utils {
304
  */
305
  public function parse_cost_range( $costs, $max_decimals = null, $sort = true ) {
306
  if ( ! is_array( $costs ) && ! is_string( $costs ) ) {
307
- return array();
308
  }
309
 
310
  // make sure costs is an array
@@ -312,7 +317,7 @@ class Tribe__Cost_Utils {
312
 
313
  // If there aren't any costs, return a blank array
314
  if ( 0 === count( $costs ) ) {
315
- return array();
316
  }
317
 
318
  // Build the regular expression
@@ -324,7 +329,7 @@ class Tribe__Cost_Utils {
324
  if ( preg_match_all( '/' . $price_regex . '/', $cost, $matches ) ) {
325
  $cost = reset( $matches );
326
  } else {
327
- $cost = array( $cost );
328
  continue;
329
  }
330
 
@@ -340,7 +345,7 @@ class Tribe__Cost_Utils {
340
  $max = max( $max_decimals, $max );
341
  }
342
 
343
- $output_costs = array();
344
  $costs = call_user_func_array( 'array_merge', $costs );
345
 
346
  foreach ( $costs as $cost ) {
@@ -348,7 +353,7 @@ class Tribe__Cost_Utils {
348
 
349
  if ( is_numeric( $numeric_cost ) ) {
350
  // Creates a Well Balanced Index that will perform good on a Key Sorting method
351
- $index = str_replace( array( '.', ',' ), '', number_format( $numeric_cost, $max ) );
352
  } else {
353
  // Makes sure that we have "index-safe" string
354
  $index = sanitize_title( $numeric_cost );
@@ -410,7 +415,7 @@ class Tribe__Cost_Utils {
410
  * @return int|float
411
  */
412
  protected function numerize_numbers( $value ) {
413
- $matches = array();
414
 
415
  $pattern = '/(\\d{1,}([' . $this->_supported_decimal_separators . ']\\d{1,}))/';
416
 
@@ -436,7 +441,7 @@ class Tribe__Cost_Utils {
436
  return false;
437
  }
438
 
439
- $currency_symbols = array();
440
  $i = 0;
441
  foreach ( $costs as $string => $value ) {
442
  if ( is_numeric( $string ) ) {
@@ -471,7 +476,7 @@ class Tribe__Cost_Utils {
471
  return false;
472
  }
473
 
474
- $currency_positions = array();
475
  foreach ( $original_costs as $original_cost ) {
476
  $currency_symbol_position = strpos( trim( $original_cost ), $currency_symbol );
477
  if ( false === $currency_symbol_position ) {
86
  * @return array
87
  */
88
  public function get_separators() {
89
+ $separators = [ ',', '.' ];
90
 
91
  /**
92
  * Filters the cost string possible separators, those must be only 1 char.
161
  *
162
  * @return string|array The merged cost range.
163
  */
164
+ public function merge_cost_ranges( $original_string_cost, $merging_cost, $with_currency_symbol, $sorted_mins = [], $sorted_maxs = [] ) {
165
  if ( empty( $merging_cost ) || $original_string_cost === $merging_cost ) {
166
  return $original_string_cost;
167
  }
168
 
169
  $_merging_cost = array_map(
170
+ [ $this, 'convert_decimal_separator' ], (array) $merging_cost
171
  );
172
+ $_merging_cost = array_map( [ $this, 'numerize_numbers' ], $_merging_cost );
173
  $numeric_merging_cost_costs = array_filter( $_merging_cost, 'is_numeric' );
174
 
175
+ $matches = [];
176
  preg_match_all(
177
  '!\d+(?:([' . preg_quote( $this->_supported_decimal_separators ) . '])\d+)?!', $original_string_cost,
178
  $matches
179
  );
180
  $this->_current_original_cost_separator = empty( $matches[1][0] ) ? '.' : $matches[1][0];
181
+ $matches[0] = empty( $matches[0] )
182
+ ? $matches[0]
183
+ : array_map(
184
+ [
185
+ $this,
186
+ 'convert_decimal_separator',
187
+ ],
188
+ $matches[0]
189
+ );
190
+
191
  $numeric_orignal_costs = empty( $matches[0] ) ? $matches[0] : array_map(
192
  'floatval', $matches[0]
193
  );
219
  $cost_max = empty( $all_numeric_costs ) ? '' : max( $all_numeric_costs );
220
  }
221
 
222
+ $cost = array_filter( [ $cost_min, $cost_max ] );
223
 
224
  if ( $with_currency_symbol ) {
225
+ $formatted_cost = [];
226
  foreach ( $cost as $c ) {
227
  $formatted_cost[] = is_numeric( $c ) ? tribe_format_currency( $c ) : $c;
228
  }
230
  }
231
 
232
  return empty( $cost ) ? $original_string_cost : array_map(
233
+ [ $this, 'restore_original_decimal_separator' ],
234
+ $cost
235
  );
236
  }
237
 
309
  */
310
  public function parse_cost_range( $costs, $max_decimals = null, $sort = true ) {
311
  if ( ! is_array( $costs ) && ! is_string( $costs ) ) {
312
+ return [];
313
  }
314
 
315
  // make sure costs is an array
317
 
318
  // If there aren't any costs, return a blank array
319
  if ( 0 === count( $costs ) ) {
320
+ return [];
321
  }
322
 
323
  // Build the regular expression
329
  if ( preg_match_all( '/' . $price_regex . '/', $cost, $matches ) ) {
330
  $cost = reset( $matches );
331
  } else {
332
+ $cost = [ $cost ];
333
  continue;
334
  }
335
 
345
  $max = max( $max_decimals, $max );
346
  }
347
 
348
+ $output_costs = [];
349
  $costs = call_user_func_array( 'array_merge', $costs );
350
 
351
  foreach ( $costs as $cost ) {
353
 
354
  if ( is_numeric( $numeric_cost ) ) {
355
  // Creates a Well Balanced Index that will perform good on a Key Sorting method
356
+ $index = str_replace( [ '.', ',' ], '', number_format( $numeric_cost, $max ) );
357
  } else {
358
  // Makes sure that we have "index-safe" string
359
  $index = sanitize_title( $numeric_cost );
415
  * @return int|float
416
  */
417
  protected function numerize_numbers( $value ) {
418
+ $matches = [];
419
 
420
  $pattern = '/(\\d{1,}([' . $this->_supported_decimal_separators . ']\\d{1,}))/';
421
 
441
  return false;
442
  }
443
 
444
+ $currency_symbols = [];
445
  $i = 0;
446
  foreach ( $costs as $string => $value ) {
447
  if ( is_numeric( $string ) ) {
476
  return false;
477
  }
478
 
479
+ $currency_positions = [];
480
  foreach ( $original_costs as $original_cost ) {
481
  $currency_symbol_position = strpos( trim( $original_cost ), $currency_symbol );
482
  if ( false === $currency_symbol_position ) {
common/src/Tribe/Credits.php CHANGED
@@ -13,8 +13,8 @@ class Tribe__Credits {
13
  * Hook the functionality of this class into the world
14
  */
15
  public function hook() {
16
- add_filter( 'tribe_events_after_html', array( $this, 'html_comment_credit' ) );
17
- add_filter( 'admin_footer_text', array( $this, 'rating_nudge' ), 1, 2 );
18
  }
19
 
20
  /**
@@ -43,7 +43,7 @@ class Tribe__Credits {
43
  public function rating_nudge( $footer_text ) {
44
  $admin_helpers = Tribe__Admin__Helpers::instance();
45
 
46
- add_filter( 'tribe_tickets_post_types', array( $this, 'tmp_return_tribe_events' ), 99 );
47
 
48
  // only display custom text on Tribe Admin Pages
49
  if ( $admin_helpers->is_screen() || $admin_helpers->is_post_type_screen() ) {
@@ -69,7 +69,7 @@ class Tribe__Credits {
69
  }
70
  }
71
 
72
- remove_filter( 'tribe_tickets_post_types', array( $this, 'tmp_return_tribe_events' ), 99 );
73
 
74
  return $footer_text;
75
  }
@@ -80,7 +80,7 @@ class Tribe__Credits {
80
  * This will limit the request for ratings to only those post type pages
81
  */
82
  public function tmp_return_tribe_events( $unused_post_types ) {
83
- return array( 'tribe_events' );
84
  }
85
 
86
  /**
13
  * Hook the functionality of this class into the world
14
  */
15
  public function hook() {
16
+ add_filter( 'tribe_events_after_html', [ $this, 'html_comment_credit' ] );
17
+ add_filter( 'admin_footer_text', [ $this, 'rating_nudge' ], 1, 2 );
18
  }
19
 
20
  /**
43
  public function rating_nudge( $footer_text ) {
44
  $admin_helpers = Tribe__Admin__Helpers::instance();
45
 
46
+ add_filter( 'tribe_tickets_post_types', [ $this, 'tmp_return_tribe_events' ], 99 );
47
 
48
  // only display custom text on Tribe Admin Pages
49
  if ( $admin_helpers->is_screen() || $admin_helpers->is_post_type_screen() ) {
69
  }
70
  }
71
 
72
+ remove_filter( 'tribe_tickets_post_types', [ $this, 'tmp_return_tribe_events' ], 99 );
73
 
74
  return $footer_text;
75
  }
80
  * This will limit the request for ratings to only those post type pages
81
  */
82
  public function tmp_return_tribe_events( $unused_post_types ) {
83
+ return [ 'tribe_events' ];
84
  }
85
 
86
  /**
common/src/Tribe/Customizer.php CHANGED
@@ -64,7 +64,7 @@ final class Tribe__Customizer {
64
  * @access private
65
  * @var array
66
  */
67
- private $sections_class = array();
68
 
69
  /**
70
  * Array of Sections Classes, for non-panel pages
@@ -73,7 +73,7 @@ final class Tribe__Customizer {
73
  * @access private
74
  * @var array
75
  */
76
- private $settings = array();
77
 
78
  /**
79
  * Inline Style has been added
@@ -110,16 +110,31 @@ final class Tribe__Customizer {
110
  $this->ID = apply_filters( 'tribe_customizer_panel_id', 'tribe_customizer', $this );
111
 
112
  // Hook the Registering methods
113
- add_action( 'customize_register', array( $this, 'register' ), 15 );
114
 
115
- add_action( 'wp_print_footer_scripts', array( $this, 'print_css_template' ), 15 );
116
 
117
  // front end styles from customizer
118
- add_action( 'wp_enqueue_scripts', array( $this, 'inline_style' ), 15 );
119
- add_action( 'tribe_events_pro_widget_render', array( $this, 'inline_style' ), 101 );
120
- add_action( 'wp_print_footer_scripts', array( $this, 'shortcode_inline_style' ), 5 );
121
 
122
- add_filter( "default_option_{$this->ID}", array( $this, 'maybe_fallback_get_option' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  }
124
 
125
  /**
@@ -137,7 +152,7 @@ final class Tribe__Customizer {
137
  return $sections;
138
  }
139
 
140
- return get_option( 'tribe_events_pro_customizer', array() );
141
  }
142
 
143
  /**
@@ -230,7 +245,7 @@ final class Tribe__Customizer {
230
  *
231
  * @return mixed Return the variable based on the index
232
  */
233
- public static function search_var( $variable = null, $indexes = array(), $default = null ) {
234
  if ( is_object( $variable ) ) {
235
  $variable = (array) $variable;
236
  }
@@ -270,7 +285,7 @@ final class Tribe__Customizer {
270
  *
271
  * @param array $defaults
272
  */
273
- $defaults[ $section->ID ] = apply_filters( "tribe_events_pro_customizer_section_{$section->ID}_defaults", array() );
274
 
275
  /**
276
  * Allow filtering the defaults for each settings to be filtered before the Ghost options to be set
@@ -279,7 +294,7 @@ final class Tribe__Customizer {
279
  *
280
  * @param array $defaults
281
  */
282
- $settings = isset( $sections[ $section->ID ] ) ? $sections[ $section->ID ] : array();
283
  $defaults[ $section->ID ] = apply_filters( "tribe_customizer_section_{$section->ID}_defaults", $settings );
284
  $sections[ $section->ID ] = wp_parse_args( $settings, $defaults[ $section->ID ] );
285
  }
@@ -336,7 +351,7 @@ final class Tribe__Customizer {
336
  public function has_option() {
337
  $search = func_get_args();
338
  $option = self::get_option();
339
- $real_option = get_option( $this->ID, array() );
340
 
341
  // Get section and Settign based on keys
342
  $section = reset( $search );
@@ -374,7 +389,7 @@ final class Tribe__Customizer {
374
  /**
375
  * Print the CSS for the customizer for shortcodes.
376
  *
377
- * @return void
378
  */
379
  public function shortcode_inline_style() {
380
  /**
@@ -393,14 +408,38 @@ final class Tribe__Customizer {
393
  $this->inline_style();
394
  }
395
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
396
  /**
397
  * Print the CSS for the customizer using wp_add_inline_style
398
  *
399
- * @return void
 
 
400
  */
401
- public function inline_style() {
402
  // Only load once on front-end.
403
- if ( is_customize_preview() || is_admin() || $this->inline_style ) {
404
  return false;
405
  }
406
 
@@ -420,7 +459,9 @@ final class Tribe__Customizer {
420
  return false;
421
  }
422
 
423
- $sheets = [];
 
 
424
 
425
  /**
426
  * Allow plugins to add themselves to this list.
@@ -436,10 +477,34 @@ final class Tribe__Customizer {
436
  return false;
437
  }
438
 
439
- // add customizer styles inline with the latest stylesheet that is enqueued.
440
  foreach ( array_reverse( $sheets ) as $sheet ) {
441
  if ( wp_style_is( $sheet ) ) {
442
- wp_add_inline_style( $sheet, wp_strip_all_tags( $this->parse_css_template( $css_template ) ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
443
  $this->inline_style = true;
444
 
445
  break;
@@ -457,15 +522,15 @@ final class Tribe__Customizer {
457
  $css = $template;
458
  $sections = $this->get_option();
459
 
460
- $search = array();
461
- $replace = array();
462
 
463
  foreach ( $sections as $section => $settings ) {
464
  if ( ! is_array( $settings ) ) {
465
  continue;
466
  }
467
  foreach ( $settings as $setting => $value ) {
468
- $index = array( $section, $setting );
469
 
470
  // Add search based on Underscore template
471
  $search[] = '<%= ' . implode( '.', $index ) . ' %>';
@@ -518,11 +583,13 @@ final class Tribe__Customizer {
518
  * Allows people to Register and de-register the method to register more Fields
519
  *
520
  * @since 4.4
 
521
  *
522
  * @param array $section
523
  * @param WP_Customize_Manager $manager
 
524
  */
525
- do_action( "tribe_customizer_register_{$id}_settings", $this->sections[ $id ], $this->manager );
526
  }
527
 
528
  /**
@@ -554,13 +621,13 @@ final class Tribe__Customizer {
554
  return $panel;
555
  }
556
 
557
- $panel_args = array(
558
- 'title' => esc_html__( 'The Events Calendar', 'tribe-common' ),
559
  'description' => esc_html__( 'Use the following panel of your customizer to change the styling of your Calendar and Event pages.', 'tribe-common' ),
560
 
561
  // After `static_front_page`
562
- 'priority' => 125,
563
- );
564
 
565
  /**
566
  * Filter the Panel Arguments for WP Customize
@@ -714,10 +781,10 @@ final class Tribe__Customizer {
714
  // Add the Partial
715
  $this->manager->selective_refresh->add_partial(
716
  $name,
717
- array(
718
  'selector' => '#' . esc_attr( $this->ID . '_css' ),
719
- 'render_callback' => array( $this, 'print_css_template' ),
720
- )
721
  );
722
  }
723
  }
64
  * @access private
65
  * @var array
66
  */
67
+ private $sections_class = [];
68
 
69
  /**
70
  * Array of Sections Classes, for non-panel pages
73
  * @access private
74
  * @var array
75
  */
76
+ private $settings = [];
77
 
78
  /**
79
  * Inline Style has been added
110
  $this->ID = apply_filters( 'tribe_customizer_panel_id', 'tribe_customizer', $this );
111
 
112
  // Hook the Registering methods
113
+ add_action( 'customize_register', [ $this, 'register' ], 15 );
114
 
115
+ add_action( 'wp_print_footer_scripts', [ $this, 'print_css_template' ], 15 );
116
 
117
  // front end styles from customizer
118
+ add_action( 'tribe_events_pro_widget_render', [ $this, 'inline_style' ], 101 );
119
+ add_action( 'wp_print_footer_scripts', [ $this, 'shortcode_inline_style' ], 5 );
120
+ add_action( 'wp_print_footer_scripts', [ $this, 'widget_inline_style' ], 5 );
121
 
122
+ /**
123
+ * Allows filtering the action that will be used to trigger the printing of inline scripts.
124
+ *
125
+ * By default inline scripts will be printed on the `wp_enqueue_scripts` action, but other
126
+ * plugins or later iterations might require inline styles to be printed on other actions.
127
+ *
128
+ * @since 4.12.15
129
+ *
130
+ * @param string $inline_script_action_handle The handle of the action that will be used to try
131
+ * and attempt to print inline scripts.
132
+ */
133
+ $print_styles_action = apply_filters( 'tribe_customizer_print_styles_action', 'wp_enqueue_scripts' );
134
+
135
+ add_action( $print_styles_action, [ $this, 'inline_style' ], 15 );
136
+
137
+ add_filter( "default_option_{$this->ID}", [ $this, 'maybe_fallback_get_option' ] );
138
  }
139
 
140
  /**
152
  return $sections;
153
  }
154
 
155
+ return get_option( 'tribe_events_pro_customizer', [] );
156
  }
157
 
158
  /**
245
  *
246
  * @return mixed Return the variable based on the index
247
  */
248
+ public static function search_var( $variable = null, $indexes = [], $default = null ) {
249
  if ( is_object( $variable ) ) {
250
  $variable = (array) $variable;
251
  }
285
  *
286
  * @param array $defaults
287
  */
288
+ $defaults[ $section->ID ] = apply_filters( "tribe_events_pro_customizer_section_{$section->ID}_defaults", [] );
289
 
290
  /**
291
  * Allow filtering the defaults for each settings to be filtered before the Ghost options to be set
294
  *
295
  * @param array $defaults
296
  */
297
+ $settings = isset( $sections[ $section->ID ] ) ? $sections[ $section->ID ] : [];
298
  $defaults[ $section->ID ] = apply_filters( "tribe_customizer_section_{$section->ID}_defaults", $settings );
299
  $sections[ $section->ID ] = wp_parse_args( $settings, $defaults[ $section->ID ] );
300
  }
351
  public function has_option() {
352
  $search = func_get_args();
353
  $option = self::get_option();
354
+ $real_option = get_option( $this->ID, [] );
355
 
356
  // Get section and Settign based on keys
357
  $section = reset( $search );
389
  /**
390
  * Print the CSS for the customizer for shortcodes.
391
  *
392
+ * @since 4.12.6
393
  */
394
  public function shortcode_inline_style() {
395
  /**
408
  $this->inline_style();
409
  }
410
 
411
+ /**
412
+ * Print the CSS for the customizer for widgets.
413
+ *
414
+ * @since 4.12.14
415
+ */
416
+ public function widget_inline_style() {
417
+ /**
418
+ * Whether customizer styles should print for widgets or not.
419
+ *
420
+ * @since 4.12.14
421
+ *
422
+ * @param boolean $should_print Whether the inline styles should be printed on screen.
423
+ */
424
+ $should_print = apply_filters( 'tribe_customizer_should_print_widget_customizer_styles', false );
425
+
426
+ if ( empty( $should_print ) ) {
427
+ return;
428
+ }
429
+
430
+ $this->inline_style();
431
+ }
432
+
433
  /**
434
  * Print the CSS for the customizer using wp_add_inline_style
435
  *
436
+ * @since 4.12.15 Added the `$force` parameter to force the print of the style inline.
437
+ *
438
+ * @param bool $force Whether to ignore the context to try and printe the style inline, or not.
439
  */
440
+ public function inline_style( $force = false ) {
441
  // Only load once on front-end.
442
+ if ( ! $force && ( is_customize_preview() || is_admin() || $this->inline_style ) ) {
443
  return false;
444
  }
445
 
459
  return false;
460
  }
461
 
462
+ $sheets = [
463
+ 'tribe-common-full-style',
464
+ ];
465
 
466
  /**
467
  * Allow plugins to add themselves to this list.
477
  return false;
478
  }
479
 
480
+ // Add customizer styles inline with the latest stylesheet that is enqueued.
481
  foreach ( array_reverse( $sheets ) as $sheet ) {
482
  if ( wp_style_is( $sheet ) ) {
483
+ $inline_style = wp_strip_all_tags( $this->parse_css_template( $css_template ) );
484
+
485
+ /**
486
+ * Fires before a style is, possibly, printed inline depending on the stylesheet.
487
+ *
488
+ * @since 4.12.15
489
+ *
490
+ * @param string $sheet The handle of the stylesheet the style will be printed inline for.
491
+ * @param string $inline_style The inline style contents, as they will be printed on the page.
492
+ */
493
+ do_action( 'tribe_customizer_before_inline_style', $sheet, $inline_style );
494
+
495
+ // Just print styles if doing 'wp_print_footer_scripts' action.
496
+ $just_print = (bool) doing_action( 'wp_print_footer_scripts' );
497
+
498
+ if ( $just_print ) {
499
+ printf(
500
+ "<style id='%s-inline-css' type='text/css'>\n%s\n</style>\n",
501
+ esc_attr( $sheet ),
502
+ $inline_style
503
+ );
504
+ } else {
505
+ wp_add_inline_style( $sheet, $inline_style );
506
+ }
507
+
508
  $this->inline_style = true;
509
 
510
  break;
522
  $css = $template;
523
  $sections = $this->get_option();
524
 
525
+ $search = [];
526
+ $replace = [];
527
 
528
  foreach ( $sections as $section => $settings ) {
529
  if ( ! is_array( $settings ) ) {
530
  continue;
531
  }
532
  foreach ( $settings as $setting => $value ) {
533
+ $index = [ $section, $setting ];
534
 
535
  // Add search based on Underscore template
536
  $search[] = '<%= ' . implode( '.', $index ) . ' %>';
583
  * Allows people to Register and de-register the method to register more Fields
584
  *
585
  * @since 4.4
586
+ * @since 4.12.15 Add Customizer instance as a parameter.
587
  *
588
  * @param array $section
589
  * @param WP_Customize_Manager $manager
590
+ * @param Tribe__Customizer $customizer The current customizer instance.
591
  */
592
+ do_action( "tribe_customizer_register_{$id}_settings", $this->sections[ $id ], $this->manager, $this );
593
  }
594
 
595
  /**
621
  return $panel;
622
  }
623
 
624
+ $panel_args = [
625
+ 'title' => esc_html__( 'The Events Calendar', 'tribe-common' ),
626
  'description' => esc_html__( 'Use the following panel of your customizer to change the styling of your Calendar and Event pages.', 'tribe-common' ),
627
 
628
  // After `static_front_page`
629
+ 'priority' => 125,
630
+ ];
631
 
632
  /**
633
  * Filter the Panel Arguments for WP Customize
781
  // Add the Partial
782
  $this->manager->selective_refresh->add_partial(
783
  $name,
784
+ [
785
  'selector' => '#' . esc_attr( $this->ID . '_css' ),
786
+ 'render_callback' => [ $this, 'print_css_template' ],
787
+ ]
788
  );
789
  }
790
  }
common/src/Tribe/Customizer/Control.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The base class for any custom Control.
4
+ *
5
+ * @since 4.12.14
6
+ *
7
+ * @package Tribe\Customizer
8
+ */
9
+
10
+ namespace Tribe\Customizer;
11
+
12
+ /**
13
+ * Class Control
14
+ *
15
+ * @since 4.12.14
16
+ *
17
+ * @package Tribe\Customizer
18
+ */
19
+ abstract class Control extends \WP_Customize_Control {
20
+ }
common/src/Tribe/Customizer/Controls/Heading.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Models a Customizer heading, a Control just in name, it does not control any setting.
4
+ *
5
+ * @since 4.12.14
6
+ *
7
+ * @package Tribe\Customizer\Controls
8
+ */
9
+
10
+ namespace Tribe\Customizer\Controls;
11
+
12
+ use Tribe\Customizer\Control;
13
+
14
+ /**
15
+ * Class Heading
16
+ *
17
+ * @since 4.12.14
18
+ *
19
+ * @package Tribe\Customizer\Controls
20
+ */
21
+ class Heading extends Control {
22
+ /**
23
+ * Anyone able to set theme options will be able to see the header.
24
+ *
25
+ * @since 4.12.14
26
+ *
27
+ * @var string
28
+ */
29
+ public $capability = 'edit_theme_options';
30
+
31
+ /**
32
+ * The heading does not control any setting.
33
+ *
34
+ * @since 4.12.14
35
+ *
36
+ * @var array<string,mixed>
37
+ */
38
+ public $settings = [];
39
+
40
+ /**
41
+ * Render the control's content
42
+ *
43
+ * @since 4.12.14
44
+ */
45
+ public function render_content() {
46
+ ?>
47
+ <h4 style="font-size: 16px; font-weight: normal; line-height: 1.75; margin-top: 0; margin-bottom: 0px;">
48
+ <?php echo esc_html( $this->label ); ?>
49
+ </h4>
50
+ <?php
51
+ }
52
+ }
common/src/Tribe/Customizer/Section.php CHANGED
@@ -41,7 +41,7 @@ abstract class Tribe__Customizer__Section {
41
  * @access private
42
  * @var array
43
  */
44
- public $defaults = array();
45
 
46
  /**
47
  * Information to setup the Section
@@ -51,12 +51,12 @@ abstract class Tribe__Customizer__Section {
51
  * @access public
52
  * @var array
53
  */
54
- public $arguments = array(
55
  'priority' => 10,
56
  'capability' => 'edit_theme_options',
57
  'title' => null,
58
  'description' => null,
59
- );
60
 
61
  /**
62
  * Overwrite this method to create the Fields/Settings for this section
@@ -85,7 +85,7 @@ abstract class Tribe__Customizer__Section {
85
  * @param array $settings The actual options on the database
86
  * @return array
87
  */
88
- public function create_ghost_settings( $settings = array() ) {
89
  return $settings;
90
  }
91
 
@@ -147,15 +147,15 @@ abstract class Tribe__Customizer__Section {
147
  $this->setup();
148
 
149
  // Hook the Register methods
150
- add_action( "tribe_customizer_register_{$this->ID}_settings", array( $this, 'register_settings' ), 10, 2 );
151
- add_filter( 'tribe_customizer_pre_sections', array( $this, 'register' ), 10, 2 );
152
 
153
  // Append this section CSS template
154
- add_filter( 'tribe_customizer_css_template', array( $this, 'get_css_template' ), 15 );
155
- add_filter( "tribe_customizer_section_{$this->ID}_defaults", array( $this, 'get_defaults' ), 10 );
156
 
157
  // Create the Ghost Options
158
- add_filter( 'tribe_customizer_pre_get_option', array( $this, 'filter_settings' ), 10, 2 );
159
 
160
  // By Default Invoking a new Section will load, unless `load` is set to false
161
  if ( true === (bool) $this->load ) {
@@ -167,7 +167,7 @@ abstract class Tribe__Customizer__Section {
167
  * A way to apply filters when getting the Customizer options
168
  * @return array
169
  */
170
- public function get_defaults( $settings = array() ) {
171
  // Create Ghost Options
172
  return $this->create_ghost_settings( wp_parse_args( $settings, $this->defaults ) );
173
  }
41
  * @access private
42
  * @var array
43
  */
44
+ public $defaults = [];
45
 
46
  /**
47
  * Information to setup the Section
51
  * @access public
52
  * @var array
53
  */
54
+ public $arguments = [
55
  'priority' => 10,
56
  'capability' => 'edit_theme_options',
57
  'title' => null,
58
  'description' => null,
59
+ ];
60
 
61
  /**
62
  * Overwrite this method to create the Fields/Settings for this section
85
  * @param array $settings The actual options on the database
86
  * @return array
87
  */
88
+ public function create_ghost_settings( $settings = [] ) {
89
  return $settings;
90
  }
91
 
147
  $this->setup();
148
 
149
  // Hook the Register methods
150
+ add_action( "tribe_customizer_register_{$this->ID}_settings", [ $this, 'register_settings' ], 10, 2 );
151
+ add_filter( 'tribe_customizer_pre_sections', [ $this, 'register' ], 10, 2 );
152
 
153
  // Append this section CSS template
154
+ add_filter( 'tribe_customizer_css_template', [ $this, 'get_css_template' ], 15 );
155
+ add_filter( "tribe_customizer_section_{$this->ID}_defaults", [ $this, 'get_defaults' ], 10 );
156
 
157
  // Create the Ghost Options
158
+ add_filter( 'tribe_customizer_pre_get_option', [ $this, 'filter_settings' ], 10, 2 );
159
 
160
  // By Default Invoking a new Section will load, unless `load` is set to false
161
  if ( true === (bool) $this->load ) {
167
  * A way to apply filters when getting the Customizer options
168
  * @return array
169
  */
170
+ public function get_defaults( $settings = [] ) {
171
  // Create Ghost Options
172
  return $this->create_ghost_settings( wp_parse_args( $settings, $this->defaults ) );
173
  }
common/src/Tribe/Data.php CHANGED
@@ -49,7 +49,7 @@ class Tribe__Data implements ArrayAccess, Iterator {
49
  * @param array|object $data An array or object of data.
50
  * @param mixed $default The default value that should be returned if a key is not set
51
  */
52
- public function __construct( $data = array(), $default = false ) {
53
  $this->data = (array) $data;
54
  $this->default = $default;
55
  }
49
  * @param array|object $data An array or object of data.
50
  * @param mixed $default The default value that should be returned if a key is not set
51
  */
52
+ public function __construct( $data = [], $default = false ) {
53
  $this->data = (array) $data;
54
  $this->default = $default;
55
  }
common/src/Tribe/Date_Utils.php CHANGED
@@ -35,10 +35,10 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
35
  */
36
  private static $default_datepicker_format_index = 1;
37
 
38
- private static $localized_months_full = array();
39
- private static $localized_months_short = array();
40
- private static $localized_weekdays = array();
41
- private static $localized_months = array();
42
 
43
  /**
44
  * Get the datepickerFormat index.
@@ -95,7 +95,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
95
  public static function datepicker_formats( $translate = null ) {
96
 
97
  // The datepicker has issues when a period separator and no leading zero is used. Those formats are purposefully omitted.
98
- $formats = array(
99
  0 => 'Y-m-d',
100
  1 => 'n/j/Y',
101
  2 => 'm/d/Y',
@@ -120,7 +120,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
120
  'm9' => 'Y.m',
121
  'm10' => 'm.Y',
122
  'm11' => 'm.Y',
123
- );
124
 
125
  if ( is_null( $translate ) ) {
126
  return $formats;
@@ -140,55 +140,55 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
140
  */
141
  public static function datetime_from_format( $format, $date ) {
142
  // Reverse engineer the relevant date formats
143
- $keys = array(
144
  // Year with 4 Digits
145
- 'Y' => array( 'year', '\d{4}' ),
146
 
147
  // Year with 2 Digits
148
- 'y' => array( 'year', '\d{2}' ),
149
 
150
  // Month with leading 0
151
- 'm' => array( 'month', '\d{2}' ),
152
 
153
  // Month without the leading 0
154
- 'n' => array( 'month', '\d{1,2}' ),
155
 
156
  // Month ABBR 3 letters
157
- 'M' => array( 'month', '[A-Z][a-z]{2}' ),
158
 
159
  // Month Name
160
- 'F' => array( 'month', '[A-Z][a-z]{2,8}' ),
161
 
162
  // Day with leading 0
163
- 'd' => array( 'day', '\d{2}' ),
164
 
165
  // Day without leading 0
166
- 'j' => array( 'day', '\d{1,2}' ),
167
 
168
  // Day ABBR 3 Letters
169
- 'D' => array( 'day', '[A-Z][a-z]{2}' ),
170
 
171
  // Day Name
172
- 'l' => array( 'day', '[A-Z][a-z]{5,8}' ),
173
 
174
  // Hour 12h formatted, with leading 0
175
- 'h' => array( 'hour', '\d{2}' ),
176
 
177
  // Hour 24h formatted, with leading 0
178
- 'H' => array( 'hour', '\d{2}' ),
179
 
180
  // Hour 12h formatted, without leading 0
181
- 'g' => array( 'hour', '\d{1,2}' ),
182
 
183
  // Hour 24h formatted, without leading 0
184
- 'G' => array( 'hour', '\d{1,2}' ),
185
 
186
  // Minutes with leading 0
187
- 'i' => array( 'minute', '\d{2}' ),
188
 
189
  // Seconds with leading 0
190
- 's' => array( 'second', '\d{2}' ),
191
- );
192
 
193
  $date_regex = "/{$keys['Y'][1]}-{$keys['m'][1]}-{$keys['d'][1]}( {$keys['H'][1]}:{$keys['i'][1]}:{$keys['s'][1]})?$/";
194
 
@@ -213,7 +213,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
213
  }
214
  }
215
 
216
- $dt = array();
217
 
218
  // Now try to match it
219
  if ( preg_match( '#^' . $regex . '$#', $date, $dt ) ) {
@@ -377,7 +377,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
377
  * @return bool If the timestamp is a weekday.
378
  */
379
  public static function is_weekday( $curdate ) {
380
- return in_array( date( 'N', $curdate ), array( 1, 2, 3, 4, 5 ) );
381
  }
382
 
383
  /**
@@ -388,7 +388,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
388
  * @return bool If the timestamp is a weekend.
389
  */
390
  public static function is_weekend( $curdate ) {
391
- return in_array( date( 'N', $curdate ), array( 6, 7 ) );
392
  }
393
 
394
  /**
@@ -664,7 +664,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
664
  }
665
 
666
  if ( empty( self::$localized_months_full ) ) {
667
- self::$localized_months_full = array(
668
  'January' => self::$localized_months['full']['01'],
669
  'February' => self::$localized_months['full']['02'],
670
  'March' => self::$localized_months['full']['03'],
@@ -677,7 +677,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
677
  'October' => self::$localized_months['full']['10'],
678
  'November' => self::$localized_months['full']['11'],
679
  'December' => self::$localized_months['full']['12'],
680
- );
681
  }
682
 
683
  return self::$localized_months_full;
@@ -696,7 +696,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
696
  }
697
 
698
  if ( empty( self::$localized_months_short ) ) {
699
- self::$localized_months_short = array(
700
  'Jan' => self::$localized_months['short']['01'],
701
  'Feb' => self::$localized_months['short']['02'],
702
  'Mar' => self::$localized_months['short']['03'],
@@ -709,7 +709,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
709
  'Oct' => self::$localized_months['short']['10'],
710
  'Nov' => self::$localized_months['short']['11'],
711
  'Dec' => self::$localized_months['short']['12'],
712
- );
713
  }
714
 
715
  return self::$localized_months_short;
@@ -797,7 +797,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
797
  public static function wp_locale_weekday( $weekday, $format = 'weekday' ) {
798
  $weekday = trim( $weekday );
799
 
800
- $valid_formats = array(
801
  'full',
802
  'weekday',
803
  'initial',
@@ -805,7 +805,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
805
  'abbrev',
806
  'abbr',
807
  'short',
808
- );
809
 
810
  // if there isn't a valid format, bail without providing a localized string
811
  if ( ! in_array( $format, $valid_formats ) ) {
@@ -819,7 +819,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
819
  // if the weekday isn't numeric, we need to convert to numeric in order to
820
  // leverage self::localized_weekdays
821
  if ( ! is_numeric( $weekday ) ) {
822
- $days_of_week = array(
823
  'Sun',
824
  'Mon',
825
  'Tue',
@@ -827,7 +827,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
827
  'Thu',
828
  'Fri',
829
  'Sat',
830
- );
831
 
832
  $day_index = array_search( ucwords( substr( $weekday, 0, 3 ) ), $days_of_week );
833
 
@@ -871,14 +871,14 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
871
  public static function wp_locale_month( $month, $format = 'month' ) {
872
  $month = trim( $month );
873
 
874
- $valid_formats = array(
875
  'full',
876
  'month',
877
  'abbreviation',
878
  'abbrev',
879
  'abbr',
880
  'short',
881
- );
882
 
883
  // if there isn't a valid format, bail without providing a localized string
884
  if ( ! in_array( $format, $valid_formats ) ) {
@@ -898,7 +898,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
898
  return $month;
899
  }
900
  } else {
901
- $months = array(
902
  'Jan',
903
  'Feb',
904
  'Mar',
@@ -911,7 +911,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
911
  'Oct',
912
  'Nov',
913
  'Dec',
914
- );
915
 
916
  // convert the provided month to a 3-character month and find it in the months array so we
917
  // can build an appropriate month number
@@ -1184,7 +1184,7 @@ if ( ! class_exists( 'Tribe__Date_Utils' ) ) {
1184
  && is_numeric( $month )
1185
  && is_numeric( $year )
1186
  && is_numeric( $week_direction )
1187
- && in_array( $week_direction, array( - 1, 1 ) )
1188
  )
1189
  ) {
1190
  return false;
35
  */
36
  private static $default_datepicker_format_index = 1;
37
 
38
+ private static $localized_months_full = [];
39
+ private static $localized_months_short = [];
40
+ private static $localized_weekdays = [];
41
+ private static $localized_months = [];
42
 
43
  /**
44
  * Get the datepickerFormat index.
95
  public static function datepicker_formats( $translate = null ) {
96
 
97
  // The datepicker has issues when a period separator and no leading zero is used. Those formats are purposefully omitted.
98
+ $formats = [
99
  0 => 'Y-m-d',
100
  1 => 'n/j/Y',
101
  2 => 'm/d/Y',
120
  'm9' => 'Y.m',
121
  'm10' => 'm.Y',
122
  'm11' => 'm.Y',
123
+ ];
124
 
125
  if ( is_null( $translate ) ) {
126
  return $formats;
140
  */
141
  public static function datetime_from_format( $format, $date ) {
142
  // Reverse engineer the relevant date formats
143
+ $keys = [
144
  // Year with 4 Digits
145
+ 'Y' => [ 'year', '\d{4}' ],
146
 
147
  // Year with 2 Digits
148
+ 'y' => [ 'year', '\d{2}' ],
149
 
150
  // Month with leading 0
151
+ 'm' => [ 'month', '\d{2}' ],
152
 
153
  // Month without the leading 0
154
+ 'n' => [ 'month', '\d{1,2}' ],
155
 
156
  // Month ABBR 3 letters
157
+ 'M' => [ 'month', '[A-Z][a-z]{2}' ],
158
 
159
  // Month Name
160
+ 'F' => [ 'month', '[A-Z][a-z]{2,8}' ],
161
 
162
  // Day with leading 0
163
+ 'd' => [ 'day', '\d{2}' ],
164
 
165
  // Day without leading 0
166
+ 'j' => [ 'day', '\d{1,2}' ],
167
 
168
  // Day ABBR 3 Letters
169
+ 'D' => [ 'day', '[A-Z][a-z]{2}' ],
170
 
171
  // Day Name
172
+ 'l' => [ 'day', '[A-Z][a-z]{5,8}' ],
173
 
174
  // Hour 12h formatted, with leading 0
175
+ 'h' => [ 'hour', '\d{2}' ],
176
 
177
  // Hour 24h formatted, with leading 0
178
+ 'H' => [ 'hour', '\d{2}' ],
179
 
180
  // Hour 12h formatted, without leading 0
181
+ 'g' => [ 'hour', '\d{1,2}' ],
182
 
183
  // Hour 24h formatted, without leading 0
184
+ 'G' => [ 'hour', '\d{1,2}' ],
185
 
186
  // Minutes with leading 0
187
+ 'i' => [ 'minute', '\d{2}' ],
188
 
189
  // Seconds with leading 0
190
+ 's' => [ 'second', '\d{2}' ],
191
+ ];
192
 
193
  $date_regex = "/{$keys['Y'][1]}-{$keys['m'][1]}-{$keys['d'][1]}( {$keys['H'][1]}:{$keys['i'][1]}:{$keys['s'][1]})?$/";
194
 
213
  }
214
  }
215
 
216
+ $dt = [];
217
 
218
  // Now try to match it
219
  if ( preg_match( '#^' . $regex . '$#', $date, $dt ) ) {
377
  * @return bool If the timestamp is a weekday.
378
  */
379
  public static function is_weekday( $curdate ) {
380
+ return in_array( date( 'N', $curdate ), [ 1, 2, 3, 4, 5 ] );
381
  }
382
 
383
  /**
388
  * @return bool If the timestamp is a weekend.
389
  */
390
  public static function is_weekend( $curdate ) {
391
+ return in_array( date( 'N', $curdate ), [ 6, 7 ] );
392
  }
393
 
394
  /**
664
  }
665
 
666
  if ( empty( self::$localized_months_full ) ) {
667
+ self::$localized_months_full = [
668
  'January' => self::$localized_months['full']['01'],
669
  'February' => self::$localized_months['full']['02'],
670
  'March' => self::$localized_months['full']['03'],
677
  'October' => self::$localized_months['full']['10'],
678
  'November' => self::$localized_months['full']['11'],
679
  'December' => self::$localized_months['full']['12'],
680
+ ];
681
  }
682
 
683
  return self::$localized_months_full;
696
  }
697
 
698
  if ( empty( self::$localized_months_short ) ) {
699
+ self::$localized_months_short = [
700
  'Jan' => self::$localized_months['short']['01'],
701
  'Feb' => self::$localized_months['short']['02'],
702
  'Mar' => self::$localized_months['short']['03'],
709
  'Oct' => self::$localized_months['short']['10'],
710
  'Nov' => self::$localized_months['short']['11'],
711
  'Dec' => self::$localized_months['short']['12'],
712
+ ];
713
  }
714
 
715
  return self::$localized_months_short;
797
  public static function wp_locale_weekday( $weekday, $format = 'weekday' ) {
798
  $weekday = trim( $weekday );
799
 
800
+ $valid_formats = [
801
  'full',
802
  'weekday',
803
  'initial',
805
  'abbrev',
806
  'abbr',
807
  'short',
808
+ ];
809
 
810
  // if there isn't a valid format, bail without providing a localized string
811
  if ( ! in_array( $format, $valid_formats ) ) {
819
  // if the weekday isn't numeric, we need to convert to numeric in order to
820
  // leverage self::localized_weekdays
821
  if ( ! is_numeric( $weekday ) ) {
822
+ $days_of_week = [
823
  'Sun',
824
  'Mon',
825
  'Tue',
827
  'Thu',
828
  'Fri',
829
  'Sat',
830
+ ];
831
 
832
  $day_index = array_search( ucwords( substr( $weekday, 0, 3 ) ), $days_of_week );
833
 
871
  public static function wp_locale_month( $month, $format = 'month' ) {
872
  $month = trim( $month );
873
 
874
+ $valid_formats = [
875
  'full',
876
  'month',
877
  'abbreviation',
878
  'abbrev',
879
  'abbr',
880
  'short',
881
+ ];
882
 
883
  // if there isn't a valid format, bail without providing a localized string
884
  if ( ! in_array( $format, $valid_formats ) ) {
898
  return $month;
899
  }
900
  } else {
901
+ $months = [
902
  'Jan',
903
  'Feb',
904
  'Mar',
911
  'Oct',
912
  'Nov',
913
  'Dec',
914
+ ];
915
 
916
  // convert the provided month to a 3-character month and find it in the months array so we
917
  // can build an appropriate month number
1184
  && is_numeric( $month )
1185
  && is_numeric( $year )
1186
  && is_numeric( $week_direction )
1187
+ && in_array( $week_direction, [ -1, 1 ] )
1188
  )
1189
  ) {
1190
  return false;
common/src/Tribe/Debug.php CHANGED
@@ -5,7 +5,7 @@ class Tribe__Debug {
5
  * constructor
6
  */
7
  public function __construct() {
8
- add_action( 'tribe_debug', array( __CLASS__, 'render' ), 10, 2 );
9
  }
10
 
11
  /**
5
  * constructor
6
  */
7
  public function __construct() {
8
+ add_action( 'tribe_debug', [ __CLASS__, 'render' ], 10, 2 );
9
  }
10
 
11
  /**
common/src/Tribe/Dependency.php CHANGED
@@ -11,23 +11,23 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
11
  /**
12
  * A multidimensional array of active tribe plugins in the following format
13
  *
14
- * array(
15
  * 'class' => 'main class name',
16
  * 'version' => 'version num', (optional)
17
  * 'path' => 'Path to the main plugin/bootstrap file' (optional)
18
- * )
19
  */
20
  protected $active_plugins = [];
21
 
22
  /**
23
  * A multidimensional array of active tribe plugins in the following format
24
  *
25
- * array(
26
  * 'class' => 'main class name',
27
  * 'path' => 'Path to the main plugin/bootstrap file'
28
  * 'version' => 'version num', (optional)
29
  * 'dependencies' => 'A multidimensional of dependencies' (optional)
30
- * )
31
  */
32
  protected $registered_plugins = [];
33
 
@@ -49,13 +49,13 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
49
  * @param null|string $path Path to the main plugin/bootstrap file
50
  * @param array $dependencies An array of dependencies for a plugin
51
  */
52
- public function add_registered_plugin( $main_class, $version = null, $path = null, $dependencies = array() ) {
53
- $plugin = array(
54
  'class' => $main_class,
55
  'version' => $version,
56
  'path' => $path,
57
  'dependencies' => $dependencies,
58
- );
59
 
60
  $this->registered_plugins[ $main_class ] = $plugin;
61
 
@@ -83,11 +83,11 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
83
  * @param string $path Path to the main plugin/bootstrap file
84
  */
85
  public function add_active_plugin( $main_class, $version = null, $path = null ) {
86
- $plugin = array(
87
- 'class' => $main_class,
88
- 'version' => $version,
89
- 'path' => $path,
90
- );
91
 
92
  $this->active_plugins[ $main_class ] = $plugin;
93
  }
@@ -267,7 +267,7 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
267
  *
268
  * @return bool
269
  */
270
- public function has_requisite_plugins( $plugins_required = array() ) {
271
  foreach ( $plugins_required as $class => $version ) {
272
  // Return false if the plugin is not set or is a lesser version
273
  if ( ! $this->is_plugin_active( $class ) ) {
@@ -307,7 +307,7 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
307
  *
308
  * @return true|int The number of failed dependency checks; `true` or `0` to indicate no checks failed.
309
  */
310
- public function has_valid_dependencies( $plugin, $dependencies = array(), $addon = false ) {
311
  if ( empty( $dependencies ) ) {
312
  return true;
313
  }
@@ -415,7 +415,7 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
415
  * @param array $classes_req Any Main class files/tribe plugins required for this to run.
416
  * @param array $dependencies an array of dependencies to check.
417
  */
418
- public function register_plugin( $file_path, $main_class, $version, $classes_req = array(), $dependencies = array() ) {
419
  /**
420
  * Filters the version string for a plugin.
421
  *
11
  /**
12
  * A multidimensional array of active tribe plugins in the following format
13
  *
14
+ * [
15
  * 'class' => 'main class name',
16
  * 'version' => 'version num', (optional)
17
  * 'path' => 'Path to the main plugin/bootstrap file' (optional)
18
+ * ]
19
  */
20
  protected $active_plugins = [];
21
 
22
  /**
23
  * A multidimensional array of active tribe plugins in the following format
24
  *
25
+ * [
26
  * 'class' => 'main class name',
27
  * 'path' => 'Path to the main plugin/bootstrap file'
28
  * 'version' => 'version num', (optional)
29
  * 'dependencies' => 'A multidimensional of dependencies' (optional)
30
+ * ]
31
  */
32
  protected $registered_plugins = [];
33
 
49
  * @param null|string $path Path to the main plugin/bootstrap file
50
  * @param array $dependencies An array of dependencies for a plugin
51
  */
52
+ public function add_registered_plugin( $main_class, $version = null, $path = null, $dependencies = [] ) {
53
+ $plugin = [
54
  'class' => $main_class,
55
  'version' => $version,
56
  'path' => $path,
57
  'dependencies' => $dependencies,
58
+ ];
59
 
60
  $this->registered_plugins[ $main_class ] = $plugin;
61
 
83
  * @param string $path Path to the main plugin/bootstrap file
84
  */
85
  public function add_active_plugin( $main_class, $version = null, $path = null ) {
86
+ $plugin = [
87
+ 'class' => $main_class,
88
+ 'version' => $version,
89
+ 'path' => $path,
90
+ ];
91
 
92
  $this->active_plugins[ $main_class ] = $plugin;
93
  }
267
  *
268
  * @return bool
269
  */
270
+ public function has_requisite_plugins( $plugins_required = [] ) {
271
  foreach ( $plugins_required as $class => $version ) {
272
  // Return false if the plugin is not set or is a lesser version
273
  if ( ! $this->is_plugin_active( $class ) ) {
307
  *
308
  * @return true|int The number of failed dependency checks; `true` or `0` to indicate no checks failed.
309
  */
310
+ public function has_valid_dependencies( $plugin, $dependencies = [], $addon = false ) {
311
  if ( empty( $dependencies ) ) {
312
  return true;
313
  }
415
  * @param array $classes_req Any Main class files/tribe plugins required for this to run.
416
  * @param array $dependencies an array of dependencies to check.
417
  */
418
+ public function register_plugin( $file_path, $main_class, $version, $classes_req = [], $dependencies = [] ) {
419
  /**
420
  * Filters the version string for a plugin.
421
  *
common/src/Tribe/Deprecation.php CHANGED
@@ -27,10 +27,10 @@ class Tribe__Deprecation {
27
  *
28
  * @var array
29
  */
30
- protected $deprecated_filters = array(
31
- 'tribe_cost_regex' => array( '4.3', 'tribe_events_cost_regex' ),
32
- 'tribe_rewrite_prepared_slug' => array( '4.3', 'tribe_events_rewrite_prepared_slug' ),
33
- );
34
 
35
  /**
36
  * An array specifying the tag, version and optional replacements
@@ -44,9 +44,9 @@ class Tribe__Deprecation {
44
  *
45
  * @var array
46
  */
47
- protected $deprecated_actions = array(
48
- 'tribe_pre_rewrite' => array( '4.3', 'tribe_events_pre_rewrite' ),
49
- );
50
 
51
  /**
52
  * @return Tribe__Deprecation
@@ -71,9 +71,9 @@ class Tribe__Deprecation {
71
  */
72
  public function deprecate_actions() {
73
  foreach ( array_keys( $this->deprecated_actions ) as $new_action_tag ) {
74
- add_action( $new_action_tag, array( $this, 'deprecated_action_message' ) );
75
  add_filter(
76
- $this->deprecated_actions[ $new_action_tag ][1], array( $this, 'deprecated_action_message' )
77
  );
78
  }
79
  }
@@ -85,9 +85,9 @@ class Tribe__Deprecation {
85
  */
86
  public function deprecate_filters() {
87
  foreach ( array_keys( $this->deprecated_filters ) as $new_filter_tag ) {
88
- add_filter( $new_filter_tag, array( $this, 'deprecated_filter_message' ) );
89
  add_filter(
90
- $this->deprecated_filters[ $new_filter_tag ][1], array( $this, 'deprecated_filter_message' )
91
  );
92
  }
93
  }
@@ -104,7 +104,7 @@ class Tribe__Deprecation {
104
  $action = $this->get_action_for_deprecated_tag( $action );
105
  }
106
 
107
- remove_action( $deprecated_tag, array( $this, 'deprecated_action_message' ) );
108
 
109
  if ( doing_action( $deprecated_tag ) || has_filter( $deprecated_tag ) ) {
110
  _deprecated_function(
@@ -112,7 +112,7 @@ class Tribe__Deprecation {
112
  );
113
  }
114
 
115
- add_action( $deprecated_tag, array( $this, 'deprecated_action_message' ) );
116
  }
117
 
118
  /**
@@ -133,17 +133,17 @@ class Tribe__Deprecation {
133
  $filter = $this->get_filter_for_deprecated_tag( $filter );
134
  }
135
 
136
- remove_filter( $deprecated_tag, array( $this, 'deprecated_filter_message' ) );
137
 
138
  if ( has_filter( $deprecated_tag ) || doing_filter( $deprecated_tag ) ) {
139
- $version = Tribe__Utils__Array::get( $this->deprecated_filters, array( $filter, 0 ), null );
140
 
141
  _deprecated_function(
142
  'The ' . $deprecated_tag . ' filter', $version, $filter
143
  );
144
  }
145
 
146
- add_filter( $deprecated_tag, array( $this, 'deprecated_filter_message' ) );
147
 
148
  return $value;
149
  }
27
  *
28
  * @var array
29
  */
30
+ protected $deprecated_filters = [
31
+ 'tribe_cost_regex' => [ '4.3', 'tribe_events_cost_regex' ],
32
+ 'tribe_rewrite_prepared_slug' => [ '4.3', 'tribe_events_rewrite_prepared_slug' ],
33
+ ];
34
 
35
  /**
36
  * An array specifying the tag, version and optional replacements
44
  *
45
  * @var array
46
  */
47
+ protected $deprecated_actions = [
48
+ 'tribe_pre_rewrite' => [ '4.3', 'tribe_events_pre_rewrite' ],
49
+ ];
50
 
51
  /**
52
  * @return Tribe__Deprecation
71
  */
72
  public function deprecate_actions() {
73
  foreach ( array_keys( $this->deprecated_actions ) as $new_action_tag ) {
74
+ add_action( $new_action_tag, [ $this, 'deprecated_action_message' ] );
75
  add_filter(
76
+ $this->deprecated_actions[ $new_action_tag ][1], [ $this, 'deprecated_action_message' ]
77
  );
78
  }
79
  }
85
  */
86
  public function deprecate_filters() {
87
  foreach ( array_keys( $this->deprecated_filters ) as $new_filter_tag ) {
88
+ add_filter( $new_filter_tag, [ $this, 'deprecated_filter_message' ] );
89
  add_filter(
90
+ $this->deprecated_filters[ $new_filter_tag ][1], [ $this, 'deprecated_filter_message' ]
91
  );
92
  }
93
  }
104
  $action = $this->get_action_for_deprecated_tag( $action );
105
  }
106
 
107
+ remove_action( $deprecated_tag, [ $this, 'deprecated_action_message' ] );
108
 
109
  if ( doing_action( $deprecated_tag ) || has_filter( $deprecated_tag ) ) {
110
  _deprecated_function(
112
  );
113
  }
114
 
115
+ add_action( $deprecated_tag, [ $this, 'deprecated_action_message' ] );
116
  }
117
 
118
  /**
133
  $filter = $this->get_filter_for_deprecated_tag( $filter );
134
  }
135
 
136
+ remove_filter( $deprecated_tag, [ $this, 'deprecated_filter_message' ] );
137
 
138
  if ( has_filter( $deprecated_tag ) || doing_filter( $deprecated_tag ) ) {
139
+ $version = Tribe__Utils__Array::get( $this->deprecated_filters, [ $filter, 0 ], null );
140
 
141
  _deprecated_function(
142
  'The ' . $deprecated_tag . ' filter', $version, $filter
143
  );
144
  }
145
 
146
+ add_filter( $deprecated_tag, [ $this, 'deprecated_filter_message' ] );
147
 
148
  return $value;
149
  }
common/src/Tribe/Dialog/View.php CHANGED
@@ -45,10 +45,12 @@ class View extends \Tribe__Template {
45
  *
46
  * @type string $button_id The ID for the trigger button (optional).
47
  * @type array $button_classes Any desired classes for the trigger button (optional).
 
48
  * @type boolean $button_disabled Should the button be disabled (optional).
49
  * @type string $button_text The text for the dialog trigger button ("Open the dialog window").
50
  * @type string $button_type The type for the trigger button (optional).
51
  * @type string $button_value The value for the trigger button (optional).
 
52
  * @type string $close_event The dialog close event hook name (`tribe_dialog_close_dialog`).
53
  * @type string $content_classes The dialog content classes ("tribe-dialog__content").
54
  * @type array $context Any additional context data you need to expose to this file (optional).
@@ -113,10 +115,12 @@ class View extends \Tribe__Template {
113
  *
114
  * @type string $button_id The ID for the trigger button (optional).
115
  * @type array $button_classes Any desired classes for the trigger button (optional).
 
116
  * @type boolean $button_disabled Should the button be disabled (optional).
117
  * @type string $button_text The text for the dialog trigger button ("Open the modal window").
118
  * @type string $button_type The type for the trigger button (optional).
119
  * @type string $button_value The value for the trigger button (optional).
 
120
  * @type string $close_event The dialog close event hook name (`tribe_dialog_close_modal`).
121
  * @type string $content_classes The dialog content classes ("tribe-dialog__content tribe-modal__content").
122
  * @type string $title_classes The dialog title classes ("tribe-dialog__title tribe-modal__title").
@@ -182,10 +186,12 @@ class View extends \Tribe__Template {
182
  *
183
  * @type string $button_id The ID for the trigger button (optional).
184
  * @type array $button_classes Any desired classes for the trigger button (optional).
 
185
  * @type boolean $button_disabled Should the button be disabled (optional).
186
  * @type string $button_text The text for the dialog trigger button ("Open the dialog window").
187
  * @type string $button_type The type for the trigger button (optional).
188
  * @type string $button_value The value for the trigger button (optional).
 
189
  * @type string $cancel_button_text Text for the "Cancel" button ("Cancel").
190
  * @type string $content_classes The dialog content classes ("tribe-dialog__content tribe-confirm__content").
191
  * @type string $continue_button_text Text for the "Continue" button ("Confirm").
@@ -250,10 +256,12 @@ class View extends \Tribe__Template {
250
  * @type string $alert_button_text Text for the "OK" button ("OK").
251
  * @type string $button_id The ID for the trigger button (optional).
252
  * @type array $button_classes Any desired classes for the trigger button (optional).
 
253
  * @type boolean $button_disabled Should the button be disabled (optional).
254
  * @type string $button_text The text for the dialog trigger button ("Open the dialog window").
255
  * @type string $button_type The type for the trigger button (optional).
256
  * @type string $button_value The value for the trigger button (optional).
 
257
  * @type string $content_classes The dialog content classes ("tribe-dialog__content tribe-alert__content").
258
  * @type string $title_classes The dialog title classes ("tribe-dialog__title tribe-alert__title").
259
  * @type array $context Any additional context data you need to expose to this file (optional).
@@ -315,10 +323,12 @@ class View extends \Tribe__Template {
315
  *
316
  * @type string $button_id The ID for the trigger button (optional).
317
  * @type array $button_classes Any desired classes for the trigger button (optional).
 
318
  * @type boolean $button_disabled Should the button be disabled (optional).
319
  * @type string $button_text The text for the dialog trigger button ("Open the dialog window").
320
  * @type string $button_type The type for the trigger button (optional).
321
  * @type string $button_value The value for the trigger button (optional).
 
322
  * @type string $close_event The dialog event hook name (`tribe_dialog_close_dialog`).
323
  * @type string $content_classes The dialog content classes ("tribe-dialog__content").
324
  * @type string $title_classes The dialog title classes ("tribe-dialog__title").
@@ -349,12 +359,14 @@ class View extends \Tribe__Template {
349
  private function build_dialog( $content, $id, $args ) {
350
  $default_args = [
351
  'button_classes' => '',
 
352
  'button_disabled' => false,
353
  'button_id' => '',
354
  'button_name' => '',
355
  'button_text' => __( 'Open the dialog window', 'tribe-common' ),
356
  'button_type' => '',
357
  'button_value' => '',
 
358
  'close_event' => 'tribe_dialog_close_dialog',
359
  'content_classes' => 'tribe-dialog__content',
360
  'context' => '',
45
  *
46
  * @type string $button_id The ID for the trigger button (optional).
47
  * @type array $button_classes Any desired classes for the trigger button (optional).
48
+ * @type array $button_attributes Any desired attributes for the trigger button (optional).
49
  * @type boolean $button_disabled Should the button be disabled (optional).
50
  * @type string $button_text The text for the dialog trigger button ("Open the dialog window").
51
  * @type string $button_type The type for the trigger button (optional).
52
  * @type string $button_value The value for the trigger button (optional).
53
+ * @type boolean $button_display If the dialog button should be displayed or not (optional).
54
  * @type string $close_event The dialog close event hook name (`tribe_dialog_close_dialog`).
55
  * @type string $content_classes The dialog content classes ("tribe-dialog__content").
56
  * @type array $context Any additional context data you need to expose to this file (optional).
115
  *
116
  * @type string $button_id The ID for the trigger button (optional).
117
  * @type array $button_classes Any desired classes for the trigger button (optional).
118
+ * @type array $button_attributes Any desired attributes for the trigger button (optional).
119
  * @type boolean $button_disabled Should the button be disabled (optional).
120
  * @type string $button_text The text for the dialog trigger button ("Open the modal window").
121
  * @type string $button_type The type for the trigger button (optional).
122
  * @type string $button_value The value for the trigger button (optional).
123
+ * @type boolean $button_display If the dialog button should be displayed or not (optional).
124
  * @type string $close_event The dialog close event hook name (`tribe_dialog_close_modal`).
125
  * @type string $content_classes The dialog content classes ("tribe-dialog__content tribe-modal__content").
126
  * @type string $title_classes The dialog title classes ("tribe-dialog__title tribe-modal__title").
186
  *
187
  * @type string $button_id The ID for the trigger button (optional).
188
  * @type array $button_classes Any desired classes for the trigger button (optional).
189
+ * @type array $button_attributes Any desired attributes for the trigger button (optional).
190
  * @type boolean $button_disabled Should the button be disabled (optional).
191
  * @type string $button_text The text for the dialog trigger button ("Open the dialog window").
192
  * @type string $button_type The type for the trigger button (optional).
193
  * @type string $button_value The value for the trigger button (optional).
194
+ * @type boolean $button_display If the dialog button should be displayed or not (optional).
195
  * @type string $cancel_button_text Text for the "Cancel" button ("Cancel").
196
  * @type string $content_classes The dialog content classes ("tribe-dialog__content tribe-confirm__content").
197
  * @type string $continue_button_text Text for the "Continue" button ("Confirm").
256
  * @type string $alert_button_text Text for the "OK" button ("OK").
257
  * @type string $button_id The ID for the trigger button (optional).
258
  * @type array $button_classes Any desired classes for the trigger button (optional).
259
+ * @type array $button_attributes Any desired attributes for the trigger button (optional).
260
  * @type boolean $button_disabled Should the button be disabled (optional).
261
  * @type string $button_text The text for the dialog trigger button ("Open the dialog window").
262
  * @type string $button_type The type for the trigger button (optional).
263
  * @type string $button_value The value for the trigger button (optional).
264
+ * @type boolean $button_display If the dialog button should be displayed or not (optional).
265
  * @type string $content_classes The dialog content classes ("tribe-dialog__content tribe-alert__content").
266
  * @type string $title_classes The dialog title classes ("tribe-dialog__title tribe-alert__title").
267
  * @type array $context Any additional context data you need to expose to this file (optional).
323
  *
324
  * @type string $button_id The ID for the trigger button (optional).
325
  * @type array $button_classes Any desired classes for the trigger button (optional).
326
+ * @type array $button_attributes Any desired attributes for the trigger button (optional).
327
  * @type boolean $button_disabled Should the button be disabled (optional).
328
  * @type string $button_text The text for the dialog trigger button ("Open the dialog window").
329
  * @type string $button_type The type for the trigger button (optional).
330
  * @type string $button_value The value for the trigger button (optional).
331
+ * @type boolean $button_display If the dialog button should be displayed or not (optional).
332
  * @type string $close_event The dialog event hook name (`tribe_dialog_close_dialog`).
333
  * @type string $content_classes The dialog content classes ("tribe-dialog__content").
334
  * @type string $title_classes The dialog title classes ("tribe-dialog__title").
359
  private function build_dialog( $content, $id, $args ) {
360
  $default_args = [
361
  'button_classes' => '',
362
+ 'button_attributes' => [],
363
  'button_disabled' => false,
364
  'button_id' => '',
365
  'button_name' => '',
366
  'button_text' => __( 'Open the dialog window', 'tribe-common' ),
367
  'button_type' => '',
368
  'button_value' => '',
369
+ 'button_display' => true,
370
  'close_event' => 'tribe_dialog_close_dialog',
371
  'content_classes' => 'tribe-dialog__content',
372
  'context' => '',
common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php CHANGED
@@ -16,25 +16,25 @@ class Tribe__Documentation__Swagger__Cost_Details_Definition_Provider
16
  * @return array An array description of a Swagger supported component.
17
  */
18
  public function get_documentation() {
19
- $documentation = array(
20
  'type' => 'object',
21
- 'properties' => array(
22
- 'currency_symbol' => array(
23
- 'type' => 'string',
24
  'description' => __( 'The cost currency symbol', 'tribe-common' ),
25
- ),
26
- 'currency_position ' => array(
27
- 'type' => 'string',
28
  'description' => __( 'The position of the currency symbol in the cost string', 'tribe-common' ),
29
- 'enum' => array( 'prefix', 'postfix' ),
30
- ),
31
- 'values' => array(
32
- 'type' => 'array',
33
- 'items' => array( 'type' => 'integer' ),
34
  'description' => __( 'A sorted array of all the numeric values for the cost', 'tribe-common' ),
35
- ),
36
- ),
37
- );
38
 
39
  /**
40
  * Filters the Swagger documentation generated for a cost details in the TEC REST API.
16
  * @return array An array description of a Swagger supported component.
17
  */
18
  public function get_documentation() {
19
+ $documentation = [
20
  'type' => 'object',
21
+ 'properties' => [
22
+ 'currency_symbol' => [
23
+ 'type' => 'string',
24
  'description' => __( 'The cost currency symbol', 'tribe-common' ),
25
+ ],
26
+ 'currency_position ' => [
27
+ 'type' => 'string',
28
  'description' => __( 'The position of the currency symbol in the cost string', 'tribe-common' ),
29
+ 'enum' => [ 'prefix', 'postfix' ],
30
+ ],
31
+ 'values' => [
32
+ 'type' => 'array',
33
+ 'items' => [ 'type' => 'integer' ],
34
  'description' => __( 'A sorted array of all the numeric values for the cost', 'tribe-common' ),
35
+ ],
36
+ ],
37
+ ];
38
 
39
  /**
40
  * Filters the Swagger documentation generated for a cost details in the TEC REST API.
common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php CHANGED
@@ -16,35 +16,35 @@ class Tribe__Documentation__Swagger__Date_Details_Definition_Provider
16
  * @return array An array description of a Swagger supported component.
17
  */
18
  public function get_documentation() {
19
- $documentation = array(
20
  'type' => 'object',
21
- 'properties' => array(
22
- 'year' => array(
23
- 'type' => 'integer',
24
  'description' => __( 'The date year', 'tribe-common' ),
25
- ),
26
- 'month' => array(
27
- 'type' => 'integer',
28
  'description' => __( 'The date month', 'tribe-common' ),
29
- ),
30
- 'day' => array(
31
- 'type' => 'integer',
32
  'description' => __( 'The date day', 'tribe-common' ),
33
- ),
34
- 'hour' => array(
35
- 'type' => 'integer',
36
  'description' => __( 'The date hour', 'tribe-common' ),
37
- ),
38
- 'minutes' => array(
39
- 'type' => 'integer',
40
  'description' => __( 'The date minutes', 'tribe-common' ),
41
- ),
42
- 'seconds' => array(
43
- 'type' => 'integer',
44
  'description' => __( 'The date seconds', 'tribe-common' ),
45
- ),
46
- ),
47
- );
48
 
49
  /**
50
  * Filters the Swagger documentation generated for an date details in the TEC REST API.
16
  * @return array An array description of a Swagger supported component.
17
  */
18
  public function get_documentation() {
19
+ $documentation = [
20
  'type' => 'object',
21
+ 'properties' => [
22
+ 'year' => [
23
+ 'type' => 'integer',
24
  'description' => __( 'The date year', 'tribe-common' ),
25
+ ],
26
+ 'month' => [
27
+ 'type' => 'integer',
28
  'description' => __( 'The date month', 'tribe-common' ),
29
+ ],
30
+ 'day' => [
31
+ 'type' => 'integer',
32
  'description' => __( 'The date day', 'tribe-common' ),
33
+ ],
34
+ 'hour' => [
35
+ 'type' => 'integer',
36
  'description' => __( 'The date hour', 'tribe-common' ),
37
+ ],
38
+ 'minutes' => [
39
+ 'type' => 'integer',
40
  'description' => __( 'The date minutes', 'tribe-common' ),
41
+ ],
42
+ 'seconds' => [
43
+ 'type' => 'integer',
44
  'description' => __( 'The date seconds', 'tribe-common' ),
45
+ ],
46
+ ],
47
+ ];
48
 
49
  /**
50
  * Filters the Swagger documentation generated for an date details in the TEC REST API.
common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php CHANGED
@@ -16,39 +16,39 @@ class Tribe__Documentation__Swagger__Image_Definition_Provider
16
  * @return array An array description of a Swagger supported component.
17
  */
18
  public function get_documentation() {
19
- $documentation = array(
20
  'type' => 'object',
21
- 'properties' => array(
22
- 'url' => array(
23
  'type' => 'string',
24
  'format' => 'uri',
25
  'description' => __( 'The URL to the full size version of the image', 'tribe-common' ),
26
- ),
27
- 'id' => array(
28
  'type' => 'integer',
29
  'description' => __( 'The image WordPress post ID', 'tribe-common' ),
30
- ),
31
- 'extension' => array(
32
  'type' => 'string',
33
  'description' => __( 'The image file extension', 'tribe-common' ),
34
- ),
35
- 'width' => array(
36
  'type' => 'integer',
37
  'description' => __( 'The image natural width in pixels', 'tribe-common' ),
38
- ),
39
- 'height' => array(
40
  'type' => 'integer',
41
  'description' => __( 'The image natural height in pixels', 'tribe-common' ),
42
- ),
43
- 'sizes' => array(
44
  'type' => 'array',
45
  'description' => __( 'The details about each size available for the image', 'tribe-common' ),
46
- 'items' => array(
47
  '$ref' => '#/components/schemas/ImageSize',
48
- ),
49
- ),
50
- ),
51
- );
52
 
53
  /**
54
  * Filters the Swagger documentation generated for an image deatails in the TEC REST API.
16
  * @return array An array description of a Swagger supported component.
17
  */
18
  public function get_documentation() {
19
+ $documentation = [
20
  'type' => 'object',
21
+ 'properties' => [
22
+ 'url' => [
23
  'type' => 'string',
24
  'format' => 'uri',
25
  'description' => __( 'The URL to the full size version of the image', 'tribe-common' ),
26
+ ],
27
+ 'id' => [
28
  'type' => 'integer',
29
  'description' => __( 'The image WordPress post ID', 'tribe-common' ),
30
+ ],
31
+ 'extension' => [
32
  'type' => 'string',
33
  'description' => __( 'The image file extension', 'tribe-common' ),
34
+ ],
35
+ 'width' => [
36
  'type' => 'integer',
37
  'description' => __( 'The image natural width in pixels', 'tribe-common' ),
38
+ ],
39
+ 'height' => [
40
  'type' => 'integer',
41
  'description' => __( 'The image natural height in pixels', 'tribe-common' ),
42
+ ],
43
+ 'sizes' => [
44
  'type' => 'array',
45
  'description' => __( 'The details about each size available for the image', 'tribe-common' ),
46
+ 'items' => [
47
  '$ref' => '#/components/schemas/ImageSize',
48
+ ],
49
+ ],
50
+ ],
51
+ ];
52
 
53
  /**
54
  * Filters the Swagger documentation generated for an image deatails in the TEC REST API.
common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php CHANGED
@@ -16,28 +16,28 @@ class Tribe__Documentation__Swagger__Image_Size_Definition_Provider
16
  * @return array An array description of a Swagger supported component.
17
  */
18
  public function get_documentation() {
19
- $documentation = array(
20
  'type' => 'object',
21
- 'properties' => array(
22
- 'width' => array(
23
- 'type' => 'integer',
24
  'description' => __( 'The image width in pixels in the specified size', 'tribe-common' ),
25
- ),
26
- 'height' => array(
27
- 'type' => 'integer',
28
  'description' => __( 'The image height in pixels in the specified size', 'tribe-common' ),
29
- ),
30
- 'mime-type' => array(
31
- 'type' => 'string',
32
  'description' => __( 'The image mime-type', 'tribe-common' ),
33
- ),
34
- 'url' => array(
35
- 'type' => 'string',
36
- 'format' => 'uri',
37
  'description' => __( 'The link to the image in the specified size on the site', 'tribe-common' ),
38
- ),
39
- ),
40
- );
41
 
42
  /**
43
  * Filters the Swagger documentation generated for an image size in the TEC REST API.
16
  * @return array An array description of a Swagger supported component.
17
  */
18
  public function get_documentation() {
19
+ $documentation = [
20
  'type' => 'object',
21
+ 'properties' => [
22
+ 'width' => [
23
+ 'type' => 'integer',
24
  'description' => __( 'The image width in pixels in the specified size', 'tribe-common' ),
25
+ ],
26
+ 'height' => [
27
+ 'type' => 'integer',
28
  'description' => __( 'The image height in pixels in the specified size', 'tribe-common' ),
29
+ ],
30
+ 'mime-type' => [
31
+ 'type' => 'string',
32
  'description' => __( 'The image mime-type', 'tribe-common' ),
33
+ ],
34
+ 'url' => [
35
+ 'type' => 'string',
36
+ 'format' => 'uri',
37
  'description' => __( 'The link to the image in the specified size on the site', 'tribe-common' ),
38
+ ],
39
+ ],
40
+ ];
41
 
42
  /**
43
  * Filters the Swagger documentation generated for an image size in the TEC REST API.
common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php CHANGED
@@ -16,48 +16,48 @@ class Tribe__Documentation__Swagger__Term_Definition_Provider
16
  * @return array An array description of a Swagger supported component.
17
  */
18
  public function get_documentation() {
19
- $documentation = array(
20
  'type' => 'object',
21
- 'properties' => array(
22
- 'id' => array(
23
- 'type' => 'integer',
24
  'description' => __( 'The WordPress term ID', 'tribe-common' ),
25
- ),
26
- 'name' => array(
27
- 'type' => 'string',
28
  'description' => __( 'The term name', 'tribe-common' ),
29
- ),
30
- 'slug' => array(
31
- 'type' => 'string',
32
  'description' => __( 'The term slug', 'tribe-common' ),
33
- ),
34
- 'taxonomy' => array(
35
- 'type' => 'string',
36
  'description' => __( 'The taxonomy the term belongs to', 'tribe-common' ),
37
- ),
38
- 'description' => array(
39
- 'type' => 'string',
40
  'description' => __( 'The term description', 'tribe-common' ),
41
- ),
42
- 'parent' => array(
43
- 'type' => 'integer',
44
  'description' => __( 'The term parent term if any', 'tribe-common' ),
45
- ),
46
- 'count' => array(
47
- 'type' => 'integer',
48
  'description' => __( 'The number of posts associated with the term', 'tribe-common' ),
49
- ),
50
- 'url' => array(
51
- 'type' => 'string',
52
  'description' => __( 'The URL to the term archive page', 'tribe-common' ),
53
- ),
54
- 'urls' => array(
55
- 'type' => 'array',
56
- 'items' => array( 'type' => 'string' ),
57
  'description' => __( 'A list of links to the term own, archive and parent REST URL', 'tribe-common' ),
58
- ),
59
- ),
60
- );
61
 
62
  /**
63
  * Filters the Swagger documentation generated for an term in the TEC REST API.
16
  * @return array An array description of a Swagger supported component.
17
  */
18
  public function get_documentation() {
19
+ $documentation = [
20
  'type' => 'object',
21
+ 'properties' => [
22
+ 'id' => [
23
+ 'type' => 'integer',
24
  'description' => __( 'The WordPress term ID', 'tribe-common' ),
25
+ ],
26
+ 'name' => [
27
+ 'type' => 'string',
28
  'description' => __( 'The term name', 'tribe-common' ),
29
+ ],
30
+ 'slug' => [
31
+ 'type' => 'string',
32
  'description' => __( 'The term slug', 'tribe-common' ),
33
+ ],
34
+ 'taxonomy' => [
35
+ 'type' => 'string',
36
  'description' => __( 'The taxonomy the term belongs to', 'tribe-common' ),
37
+ ],
38
+ 'description' => [
39
+ 'type' => 'string',
40
  'description' => __( 'The term description', 'tribe-common' ),
41
+ ],
42
+ 'parent' => [
43
+ 'type' => 'integer',
44
  'description' => __( 'The term parent term if any', 'tribe-common' ),
45
+ ],
46
+ 'count' => [
47
+ 'type' => 'integer',
48
  'description' => __( 'The number of posts associated with the term', 'tribe-common' ),
49
+ ],
50
+ 'url' => [
51
+ 'type' => 'string',
52
  'description' => __( 'The URL to the term archive page', 'tribe-common' ),
53
+ ],
54
+ 'urls' => [
55
+ 'type' => 'array',
56
+ 'items' => [ 'type' => 'string' ],
57
  'description' => __( 'A list of links to the term own, archive and parent REST URL', 'tribe-common' ),
58
+ ],
59
+ ],
60
+ ];
61
 
62
  /**
63
  * Filters the Swagger documentation generated for an term in the TEC REST API.
common/src/Tribe/Duplicate/Post.php CHANGED
@@ -14,7 +14,7 @@ class Tribe__Duplicate__Post {
14
  /**
15
  * @var array The columns of the post table.
16
  */
17
- public static $post_table_columns = array(
18
  'ID',
19
  'post_author',
20
  'post_date',
@@ -38,17 +38,17 @@ class Tribe__Duplicate__Post {
38
  'post_type',
39
  'post_mime_type',
40
  'comment_count',
41
- );
42
 
43
  /**
44
  * @var array The post fields that should be used to find a duplicate.
45
  */
46
- protected $post_fields = array();
47
 
48
  /**
49
  * @var array The custom fields that should be used to find a duplicate.
50
  */
51
- protected $custom_fields = array();
52
 
53
  /**
54
  * @var Tribe__Duplicate__Strategy_Factory
@@ -93,7 +93,7 @@ class Tribe__Duplicate__Post {
93
  */
94
  public function use_post_fields( array $post_fields ) {
95
  if ( empty( $post_fields ) ) {
96
- $this->post_fields = array();
97
 
98
  return;
99
  }
@@ -112,16 +112,16 @@ class Tribe__Duplicate__Post {
112
  * @since 4.6
113
  */
114
  protected function cast_to_strategy( array $fields ) {
115
- $cast = array();
116
 
117
  foreach ( $fields as $key => $value ) {
118
  if ( is_numeric( $key ) ) {
119
- $cast[ $value ] = array( 'match' => 'same' );
120
  } elseif ( is_array( $value ) ) {
121
  if ( ! empty( $value['match'] ) ) {
122
  $cast[ $key ] = $value;
123
  } else {
124
- $cast[ $key ] = array_merge( $value, array( 'match' => 'same' ) );
125
  }
126
  }
127
  }
@@ -291,9 +291,9 @@ class Tribe__Duplicate__Post {
291
  /** @var wpdb $wpdb */
292
  global $wpdb;
293
 
294
- $where_frags = array();
295
- $custom_fields_where_frags = array();
296
- $join = array();
297
 
298
  if ( ! empty( $this->post_fields ) ) {
299
  $queryable_post_fields = array_intersect_key( $postarr, $this->post_fields );
@@ -333,10 +333,10 @@ class Tribe__Duplicate__Post {
333
  */
334
  $join_limit = apply_filters( 'tribe_duplicate_post_join_limit', $this->join_limit, $where_frags, $this->post_type );
335
 
336
- $excluded_status = array(
337
  'trash',
338
  'autodraft',
339
- );
340
 
341
  /**
342
  * Filters the excluded status.
@@ -360,7 +360,7 @@ class Tribe__Duplicate__Post {
360
  $post_status_conditional = $wpdb->prepare( "{$wpdb->posts}.post_status NOT IN ( {$in_string} )", $excluded_status );
361
  }
362
 
363
- $queries = array();
364
 
365
  if ( ! empty( $join_limit ) && ! empty( $join ) ) {
366
  while ( count( $join ) ) {
14
  /**
15
  * @var array The columns of the post table.
16
  */
17
+ public static $post_table_columns = [
18
  'ID',
19
  'post_author',
20
  'post_date',
38
  'post_type',
39
  'post_mime_type',
40
  'comment_count',
41
+ ];
42
 
43
  /**
44
  * @var array The post fields that should be used to find a duplicate.
45
  */
46
+ protected $post_fields = [];
47
 
48
  /**
49
  * @var array The custom fields that should be used to find a duplicate.
50
  */
51
+ protected $custom_fields = [];
52
 
53
  /**
54
  * @var Tribe__Duplicate__Strategy_Factory
93
  */
94
  public function use_post_fields( array $post_fields ) {
95
  if ( empty( $post_fields ) ) {
96
+ $this->post_fields = [];
97
 
98
  return;
99
  }
112
  * @since 4.6
113
  */
114
  protected function cast_to_strategy( array $fields ) {
115
+ $cast = [];
116
 
117
  foreach ( $fields as $key => $value ) {
118
  if ( is_numeric( $key ) ) {
119
+ $cast[ $value ] = [ 'match' => 'same' ];
120
  } elseif ( is_array( $value ) ) {
121
  if ( ! empty( $value['match'] ) ) {
122
  $cast[ $key ] = $value;
123
  } else {
124
+ $cast[ $key ] = array_merge( $value, [ 'match' => 'same' ] );
125
  }
126
  }
127
  }
291
  /** @var wpdb $wpdb */
292
  global $wpdb;
293
 
294
+ $where_frags = [];
295
+ $custom_fields_where_frags = [];
296
+ $join = [];
297
 
298
  if ( ! empty( $this->post_fields ) ) {
299
  $queryable_post_fields = array_intersect_key( $postarr, $this->post_fields );
333
  */
334
  $join_limit = apply_filters( 'tribe_duplicate_post_join_limit', $this->join_limit, $where_frags, $this->post_type );
335
 
336
+ $excluded_status = [
337
  'trash',
338
  'autodraft',
339
+ ];
340
 
341
  /**
342
  * Filters the excluded status.
360
  $post_status_conditional = $wpdb->prepare( "{$wpdb->posts}.post_status NOT IN ( {$in_string} )", $excluded_status );
361
  }
362
 
363
+ $queries = [];
364
 
365
  if ( ! empty( $join_limit ) && ! empty( $join ) ) {
366
  while ( count( $join ) ) {
common/src/Tribe/Duplicate/Strategy/Base.php CHANGED
@@ -19,6 +19,6 @@ abstract class Tribe__Duplicate__Strategy__Base {
19
  * @since 4.6
20
  */
21
  protected function is_a_numeric_post_field( $key ) {
22
- return in_array( $key, array( 'ID', 'post_author', 'post_parent', 'menu_order', 'comment_count' ) );
23
  }
24
  }
19
  * @since 4.6
20
  */
21
  protected function is_a_numeric_post_field( $key ) {
22
+ return in_array( $key, [ 'ID', 'post_author', 'post_parent', 'menu_order', 'comment_count' ] );
23
  }
24
  }
common/src/Tribe/Duplicate/Strategy/Like.php CHANGED
@@ -31,7 +31,7 @@ class Tribe__Duplicate__Strategy__Like
31
 
32
  $frags = $this->get_where_frags( $value );
33
 
34
- $where_frags = array();
35
  foreach ( $frags as $frag ) {
36
  $formatted_frag = '%' . $wpdb->esc_like( strtolower( trim( $frag ) ) ) . '%';
37
  $where_frags[] = $wpdb->prepare( "{$key} LIKE %s", $formatted_frag );
@@ -73,7 +73,7 @@ class Tribe__Duplicate__Strategy__Like
73
 
74
  $frags = $this->get_where_frags( $value );
75
 
76
- $where_frags = array( $wpdb->prepare( "{$table_alias}.meta_key = %s", $key ) );
77
  foreach ( $frags as $frag ) {
78
  $formatted_frag = '%' . $wpdb->esc_like( strtolower( trim( $frag ) ) ) . '%';
79
  $query = "{$table_alias}.meta_value LIKE %s";
31
 
32
  $frags = $this->get_where_frags( $value );
33
 
34
+ $where_frags = [];
35
  foreach ( $frags as $frag ) {
36
  $formatted_frag = '%' . $wpdb->esc_like( strtolower( trim( $frag ) ) ) . '%';
37
  $where_frags[] = $wpdb->prepare( "{$key} LIKE %s", $formatted_frag );
73
 
74
  $frags = $this->get_where_frags( $value );
75
 
76
+ $where_frags = [ $wpdb->prepare( "{$table_alias}.meta_key = %s", $key ) ];
77
  foreach ( $frags as $frag ) {
78
  $formatted_frag = '%' . $wpdb->esc_like( strtolower( trim( $frag ) ) ) . '%';
79
  $query = "{$table_alias}.meta_value LIKE %s";
common/src/Tribe/Duplicate/Strategy_Factory.php CHANGED
@@ -8,14 +8,14 @@
8
  * @since 4.6
9
  */
10
  class Tribe__Duplicate__Strategy_Factory {
11
- protected $strategy_map = array();
12
 
13
  public function __construct() {
14
- $strategy_map = array(
15
  'default' => 'Tribe__Duplicate__Strategy__Same',
16
  'same' => 'Tribe__Duplicate__Strategy__Same',
17
  'like' => 'Tribe__Duplicate__Strategy__Like',
18
- );
19
 
20
  /**
21
  * Filters the strategies managed by the strategy factory.
8
  * @since 4.6
9
  */
10
  class Tribe__Duplicate__Strategy_Factory {
11
+ protected $strategy_map = [];
12
 
13
  public function __construct() {
14
+ $strategy_map = [
15
  'default' => 'Tribe__Duplicate__Strategy__Same',
16
  'same' => 'Tribe__Duplicate__Strategy__Same',
17
  'like' => 'Tribe__Duplicate__Strategy__Like',
18
+ ];
19
 
20
  /**
21
  * Filters the strategies managed by the strategy factory.
common/src/Tribe/Editor.php CHANGED
@@ -91,10 +91,10 @@ class Tribe__Editor {
91
  *
92
  * @return array
93
  */
94
- public function add_support( $args = array() ) {
95
  // Make sure we have the Support argument and it's an array
96
  if ( ! isset( $args['supports'] ) || ! is_array( $args['supports'] ) ) {
97
- $args['supports'] = array();
98
  }
99
 
100
  // Add Editor Support
@@ -114,13 +114,13 @@ class Tribe__Editor {
114
  *
115
  * @return array
116
  */
117
- public function add_rest_support( $args = array() ) {
118
  // Blocks Editor requires REST support
119
  $args['show_in_rest'] = true;
120
 
121
  // Make sure we have the Support argument and it's an array
122
  if ( ! isset( $args['supports'] ) || ! is_array( $args['supports'] ) ) {
123
- $args['supports'] = array();
124
  }
125
 
126
  if ( ! in_array( 'revisions', $args['supports'] ) ) {
@@ -196,28 +196,30 @@ class Tribe__Editor {
196
  * @return bool
197
  */
198
  public function is_classic_option_active() {
199
- $valid_values = array( 'replace', 'classic' );
200
 
201
  return in_array( (string) get_option( 'classic-editor-replace' ), $valid_values, true );
202
  }
203
 
204
  /**
205
- * Detect if is the classic editor is forced activated via plugin or if it comes from a request
206
  *
207
  * @since 4.8
208
  *
209
  * @return bool
210
  */
211
  public function is_classic_editor() {
212
- $disabled_by_plugin = $this->is_classic_plugin_active() && $this->is_classic_option_active();
 
213
  /**
214
- * Allow other addons to disabled classic editor based on options
215
  *
216
  * @since 4.8.5
217
  *
218
  * @param bool $classic_is_active Whether the classic editor should be used.
219
  */
220
- $disabled_by_filter = apply_filters( 'tribe_editor_classic_is_active', false );
 
221
  $is_classic_editor_request = tribe_get_request_var( 'classic-editor', null );
222
 
223
  return $is_classic_editor_request || $disabled_by_plugin || $disabled_by_filter;
91
  *
92
  * @return array
93
  */
94
+ public function add_support( $args = [] ) {
95
  // Make sure we have the Support argument and it's an array
96
  if ( ! isset( $args['supports'] ) || ! is_array( $args['supports'] ) ) {
97
+ $args['supports'] = [];
98
  }
99
 
100
  // Add Editor Support
114
  *
115
  * @return array
116
  */
117
+ public function add_rest_support( $args = [] ) {
118
  // Blocks Editor requires REST support
119
  $args['show_in_rest'] = true;
120
 
121
  // Make sure we have the Support argument and it's an array
122
  if ( ! isset( $args['supports'] ) || ! is_array( $args['supports'] ) ) {
123
+ $args['supports'] = [];
124
  }
125
 
126
  if ( ! in_array( 'revisions', $args['supports'] ) ) {
196
  * @return bool
197
  */
198
  public function is_classic_option_active() {
199
+ $valid_values = [ 'replace', 'classic' ];
200
 
201
  return in_array( (string) get_option( 'classic-editor-replace' ), $valid_values, true );
202
  }
203
 
204
  /**
205
+ * Detect if the classic editor is force-activated via plugin or if it comes from a request.
206
  *
207
  * @since 4.8
208
  *
209
  * @return bool
210
  */
211
  public function is_classic_editor() {
212
+ $disabled_by_plugin = $this->is_classic_plugin_active() && $this->is_classic_option_active();
213
+
214
  /**
215
+ * Allow other addons to disable classic editor based on options.
216
  *
217
  * @since 4.8.5
218
  *
219
  * @param bool $classic_is_active Whether the classic editor should be used.
220
  */
221
+ $disabled_by_filter = apply_filters( 'tribe_editor_classic_is_active', false );
222
+
223
  $is_classic_editor_request = tribe_get_request_var( 'classic-editor', null );
224
 
225
  return $is_classic_editor_request || $disabled_by_plugin || $disabled_by_filter;
common/src/Tribe/Editor/Assets.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  /**
3
  * Events Gutenberg Assets
4
  *
@@ -12,7 +13,7 @@ class Tribe__Editor__Assets {
12
  * @return void
13
  */
14
  public function hook() {
15
- add_action( 'tribe_plugins_loaded', array( $this, 'register' ) );
16
  }
17
 
18
  /**
@@ -35,12 +36,22 @@ class Tribe__Editor__Assets {
35
  /**
36
  * @todo revise this dependencies
37
  */
38
- array( 'react', 'react-dom', 'wp-components', 'wp-api', 'wp-api-request', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ),
 
 
 
 
 
 
 
 
 
 
39
  'enqueue_block_editor_assets',
40
- array(
41
  'in_footer' => false,
42
- 'localize' => array(
43
- array(
44
  'name' => 'tribe_editor_config',
45
  /**
46
  * Array used to setup the FE with custom variables from the BE
@@ -50,10 +61,10 @@ class Tribe__Editor__Assets {
50
  * @param array An array with the variables to be localized
51
  */
52
  'data' => tribe_callback( 'common.editor.configuration', 'localize' ),
53
- ),
54
- ),
55
  'priority' => 11,
56
- )
57
  );
58
 
59
  tribe_asset(
@@ -63,13 +74,23 @@ class Tribe__Editor__Assets {
63
  /**
64
  * @todo revise this dependencies
65
  */
66
- array( 'react', 'react-dom', 'wp-components', 'wp-api', 'wp-api-request', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ),
 
 
 
 
 
 
 
 
 
 
67
  'enqueue_block_editor_assets',
68
- array(
69
  'in_footer' => false,
70
- 'localize' => array(),
71
  'priority' => 12,
72
- )
73
  );
74
  tribe_asset(
75
  $plugin,
@@ -78,13 +99,23 @@ class Tribe__Editor__Assets {
78
  /**
79
  * @todo revise this dependencies
80
  */
81
- array( 'react', 'react-dom', 'wp-components', 'wp-api', 'wp-api-request', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ),
 
 
 
 
 
 
 
 
 
 
82
  'enqueue_block_editor_assets',
83
- array(
84
  'in_footer' => false,
85
- 'localize' => array(),
86
  'priority' => 13,
87
- )
88
  );
89
  tribe_asset(
90
  $plugin,
@@ -93,13 +124,23 @@ class Tribe__Editor__Assets {
93
  /**
94
  * @todo revise this dependencies
95
  */
96
- array( 'react', 'react-dom', 'wp-components', 'wp-api', 'wp-api-request', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ),
 
 
 
 
 
 
 
 
 
 
97
  'enqueue_block_editor_assets',
98
- array(
99
  'in_footer' => false,
100
- 'localize' => array(),
101
  'priority' => 14,
102
- )
103
  );
104
  tribe_asset(
105
  $plugin,
@@ -108,7 +149,7 @@ class Tribe__Editor__Assets {
108
  /**
109
  * @todo revise this dependencies
110
  */
111
- array(
112
  'react',
113
  'react-dom',
114
  'wp-components',
@@ -118,13 +159,13 @@ class Tribe__Editor__Assets {
118
  'wp-i18n',
119
  'wp-element',
120
  'wp-editor',
121
- ),
122
  'enqueue_block_editor_assets',
123
- array(
124
  'in_footer' => false,
125
- 'localize' => array(),
126
  'priority' => 15,
127
- )
128
  );
129
  tribe_asset(
130
  $plugin,
@@ -133,13 +174,23 @@ class Tribe__Editor__Assets {
133
  /**
134
  * @todo revise this dependencies
135
  */
136
- array( 'react', 'react-dom', 'wp-components', 'wp-api', 'wp-api-request', 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ),
 
 
 
 
 
 
 
 
 
 
137
  'enqueue_block_editor_assets',
138
- array(
139
  'in_footer' => false,
140
- 'localize' => array(),
141
  'priority' => 16,
142
- )
143
  );
144
  tribe_asset(
145
  $plugin,
@@ -148,7 +199,7 @@ class Tribe__Editor__Assets {
148
  /**
149
  * @todo revise this dependencies
150
  */
151
- array(
152
  'react',
153
  'react-dom',
154
  'wp-components',
@@ -158,13 +209,13 @@ class Tribe__Editor__Assets {
158
  'wp-i18n',
159
  'wp-element',
160
  'wp-editor',
161
- ),
162
  'enqueue_block_editor_assets',
163
- array(
164
  'in_footer' => false,
165
- 'localize' => array(),
166
  'priority' => 17,
167
- )
168
  );
169
  /**
170
  * @todo: figure out why element styles are loading for tickets but not events.
@@ -176,7 +227,7 @@ class Tribe__Editor__Assets {
176
  /**
177
  * @todo revise this dependencies
178
  */
179
- array(
180
  'react',
181
  'react-dom',
182
  'wp-components',
@@ -186,23 +237,23 @@ class Tribe__Editor__Assets {
186
  'wp-i18n',
187
  'wp-element',
188
  'wp-editor',
189
- ),
190
  'enqueue_block_editor_assets',
191
- array(
192
  'in_footer' => false,
193
- 'localize' => array(),
194
  'priority' => 17,
195
- )
196
  );
197
  tribe_asset(
198
  $plugin,
199
  'tribe-common-gutenberg-elements-styles',
200
  'app/elements.css',
201
- array(),
202
  'enqueue_block_editor_assets',
203
- array(
204
- 'in_footer' => false,
205
- )
206
  );
207
  }
208
  }
1
  <?php
2
+
3
  /**
4
  * Events Gutenberg Assets
5
  *
13
  * @return void
14
  */
15
  public function hook() {
16
+ add_action( 'tribe_plugins_loaded', [ $this, 'register' ] );
17
  }
18
 
19
  /**
36
  /**
37
  * @todo revise this dependencies
38
  */
39
+ [
40
+ 'react',
41
+ 'react-dom',
42
+ 'wp-components',
43
+ 'wp-api',
44
+ 'wp-api-request',
45
+ 'wp-blocks',
46
+ 'wp-i18n',
47
+ 'wp-element',
48
+ 'wp-editor',
49
+ ],
50
  'enqueue_block_editor_assets',
51
+ [
52
  'in_footer' => false,
53
+ 'localize' => [
54
+ [
55
  'name' => 'tribe_editor_config',
56
  /**
57
  * Array used to setup the FE with custom variables from the BE
61
  * @param array An array with the variables to be localized
62
  */
63
  'data' => tribe_callback( 'common.editor.configuration', 'localize' ),
64
+ ],
65
+ ],
66
  'priority' => 11,
67
+ ]
68
  );
69
 
70
  tribe_asset(
74
  /**
75
  * @todo revise this dependencies
76
  */
77
+ [
78
+ 'react',
79
+ 'react-dom',
80
+ 'wp-components',
81
+ 'wp-api',
82
+ 'wp-api-request',
83
+ 'wp-blocks',
84
+ 'wp-i18n',
85
+ 'wp-element',
86
+ 'wp-editor',
87
+ ],
88
  'enqueue_block_editor_assets',
89
+ [
90
  'in_footer' => false,
91
+ 'localize' => [],
92
  'priority' => 12,
93
+ ]
94
  );
95
  tribe_asset(
96
  $plugin,
99
  /**
100
  * @todo revise this dependencies
101
  */
102
+ [
103
+ 'react',
104
+ 'react-dom',
105
+ 'wp-components',
106
+ 'wp-api',
107
+ 'wp-api-request',
108
+ 'wp-blocks',
109
+ 'wp-i18n',
110
+ 'wp-element',
111
+ 'wp-editor',
112
+ ],
113
  'enqueue_block_editor_assets',
114
+ [
115
  'in_footer' => false,
116
+ 'localize' => [],
117
  'priority' => 13,
118
+ ]
119
  );
120
  tribe_asset(
121
  $plugin,
124
  /**
125
  * @todo revise this dependencies
126
  */
127
+ [
128
+ 'react',
129
+ 'react-dom',
130
+ 'wp-components',
131
+ 'wp-api',
132
+ 'wp-api-request',
133
+ 'wp-blocks',
134
+ 'wp-i18n',
135
+ 'wp-element',
136
+ 'wp-editor',
137
+ ],
138
  'enqueue_block_editor_assets',
139
+ [
140
  'in_footer' => false,
141
+ 'localize' => [],
142
  'priority' => 14,
143
+ ]
144
  );
145
  tribe_asset(
146
  $plugin,
149
  /**
150
  * @todo revise this dependencies
151
  */
152
+ [
153
  'react',
154
  'react-dom',
155
  'wp-components',
159
  'wp-i18n',
160
  'wp-element',
161
  'wp-editor',
162
+ ],
163
  'enqueue_block_editor_assets',
164
+ [
165
  'in_footer' => false,
166
+ 'localize' => [],
167
  'priority' => 15,
168
+ ]
169
  );
170
  tribe_asset(
171
  $plugin,
174
  /**
175
  * @todo revise this dependencies
176
  */
177
+ [
178
+ 'react',
179
+ 'react-dom',
180
+ 'wp-components',
181
+ 'wp-api',
182
+ 'wp-api-request',
183
+ 'wp-blocks',
184
+ 'wp-i18n',
185
+ 'wp-element',
186
+ 'wp-editor',
187
+ ],
188
  'enqueue_block_editor_assets',
189
+ [
190
  'in_footer' => false,
191
+ 'localize' => [],
192
  'priority' => 16,
193
+ ]
194
  );
195
  tribe_asset(
196
  $plugin,
199
  /**
200
  * @todo revise this dependencies
201
  */
202
+ [
203
  'react',
204
  'react-dom',
205
  'wp-components',
209
  'wp-i18n',
210
  'wp-element',
211
  'wp-editor',
212
+ ],
213
  'enqueue_block_editor_assets',
214
+ [
215
  'in_footer' => false,
216
+ 'localize' => [],
217
  'priority' => 17,
218
+ ]
219
  );
220
  /**
221
  * @todo: figure out why element styles are loading for tickets but not events.
227
  /**
228
  * @todo revise this dependencies
229
  */
230
+ [
231
  'react',
232
  'react-dom',
233
  'wp-components',
237
  'wp-i18n',
238
  'wp-element',
239
  'wp-editor',
240
+ ],
241
  'enqueue_block_editor_assets',
242
+ [
243
  'in_footer' => false,
244
+ 'localize' => [],
245
  'priority' => 17,
246
+ ]
247
  );
248
  tribe_asset(
249
  $plugin,
250
  'tribe-common-gutenberg-elements-styles',
251
  'app/elements.css',
252
+ [],
253
  'enqueue_block_editor_assets',
254
+ [
255
+ 'in_footer' => false,
256
+ ]
257
  );
258
  }
259
  }
common/src/Tribe/Editor/Blocks/Abstract.php CHANGED
@@ -47,7 +47,7 @@ implements Tribe__Editor__Blocks__Interface {
47
  *
48
  * @return array
49
  */
50
- public function attributes( $params = array() ) {
51
 
52
  // get the default attributes
53
  $default_attributes = $this->default_attributes();
@@ -80,7 +80,7 @@ implements Tribe__Editor__Blocks__Interface {
80
  */
81
  public function default_attributes() {
82
 
83
- $attributes = array();
84
 
85
  /**
86
  * Filters the default attributes
@@ -102,12 +102,8 @@ implements Tribe__Editor__Blocks__Interface {
102
  *
103
  * @return string
104
  */
105
- public function render( $attributes = array() ) {
106
- if ( version_compare( phpversion(), '5.4', '>=' ) ) {
107
- $json_string = json_encode( $attributes, JSON_PRETTY_PRINT );
108
- } else {
109
- $json_string = json_encode( $attributes );
110
- }
111
 
112
  return
113
  '<pre class="tribe-placeholder-text-' . $this->name() . '">' .
@@ -136,13 +132,13 @@ implements Tribe__Editor__Blocks__Interface {
136
  * @return void
137
  */
138
  public function register() {
139
- $block_args = array(
140
- 'render_callback' => array( $this, 'render' ),
141
- );
142
 
143
  register_block_type( $this->name(), $block_args );
144
 
145
- add_action( 'wp_ajax_' . $this->get_ajax_action(), array( $this, 'ajax' ) );
146
 
147
  $this->assets();
148
  $this->hook();
47
  *
48
  * @return array
49
  */
50
+ public function attributes( $params = [] ) {
51
 
52
  // get the default attributes
53
  $default_attributes = $this->default_attributes();
80
  */
81
  public function default_attributes() {
82
 
83
+ $attributes = [];
84
 
85
  /**
86
  * Filters the default attributes
102
  *
103
  * @return string
104
  */
105
+ public function render( $attributes = [] ) {
106
+ $json_string = json_encode( $attributes, JSON_PRETTY_PRINT );
 
 
 
 
107
 
108
  return
109
  '<pre class="tribe-placeholder-text-' . $this->name() . '">' .
132
  * @return void
133
  */
134
  public function register() {
135
+ $block_args = [
136
+ 'render_callback' => [ $this, 'render' ],
137
+ ];
138
 
139
  register_block_type( $this->name(), $block_args );
140
 
141
+ add_action( 'wp_ajax_' . $this->get_ajax_action(), [ $this, 'ajax' ] );
142
 
143
  $this->assets();
144
  $this->hook();
common/src/Tribe/Editor/Blocks/Interface.php CHANGED
@@ -38,7 +38,7 @@ interface Tribe__Editor__Blocks__Interface {
38
  *
39
  * @return string
40
  */
41
- public function render( $attributes = array() );
42
 
43
  /**
44
  * Does the registration for PHP rendering for the Block, important due to been
38
  *
39
  * @return string
40
  */
41
+ public function render( $attributes = [] );
42
 
43
  /**
44
  * Does the registration for PHP rendering for the Block, important due to been
common/src/Tribe/Editor/Configuration.php CHANGED
@@ -16,31 +16,31 @@ class Tribe__Editor__Configuration implements Tribe__Editor__Configuration_Inter
16
  * @return array
17
  */
18
  public function localize() {
19
- $editor_config = array(
20
- 'common' => array(
21
  'adminUrl' => admin_url(),
22
- 'timeZone' => array(
23
  'showTimeZone' => false,
24
  'label' => $this->get_timezone_label(),
25
- ),
26
- 'rest' => array(
27
  'url' => get_rest_url(),
28
- 'nonce' => array(
29
  'wp_rest' => wp_create_nonce( 'wp_rest' ),
30
- ),
31
- 'namespaces' => array(
32
  'core' => 'wp/v2',
33
- ),
34
- ),
35
  'dateSettings' => $this->get_date_settings(),
36
- 'constants' => array(
37
  'hideUpsell' => ( defined( 'TRIBE_HIDE_UPSELL' ) && TRIBE_HIDE_UPSELL ),
38
- ),
39
  'countries' => tribe( 'languages.locations' )->get_countries(),
40
  'usStates' => Tribe__View_Helpers::loadStates(),
41
- ),
42
  'blocks' => [],
43
- );
44
 
45
  /**
46
  * Filter the default configuration used to localize variables
@@ -76,31 +76,31 @@ class Tribe__Editor__Configuration implements Tribe__Editor__Configuration_Inter
76
  public function get_date_settings() {
77
  global $wp_locale;
78
 
79
- return array(
80
- 'l10n' => array(
81
  'locale' => get_user_locale(),
82
  'months' => array_values( $wp_locale->month ),
83
  'monthsShort' => array_values( $wp_locale->month_abbrev ),
84
  'weekdays' => array_values( $wp_locale->weekday ),
85
  'weekdaysShort' => array_values( $wp_locale->weekday_abbrev ),
86
  'meridiem' => (object) $wp_locale->meridiem,
87
- 'relative' => array(
88
  /* translators: %s: duration */
89
  'future' => __( '%s from now', 'default' ),
90
  /* translators: %s: duration */
91
  'past' => __( '%s ago', 'default' ),
92
- ),
93
- ),
94
- 'formats' => array(
95
  'time' => get_option( 'time_format', __( 'g:i a', 'default' ) ),
96
  'date' => get_option( 'date_format', __( 'F j, Y', 'default' ) ),
97
  'dateNoYear' => __( 'F j', 'default' ),
98
  'datetime' => get_option( 'date_format', __( 'F j, Y', 'default' ) ) . ' ' . get_option( 'time_format', __( 'g:i a', 'default' ) ),
99
- ),
100
- 'timezone' => array(
101
  'offset' => get_option( 'gmt_offset', 0 ),
102
  'string' => $this->get_timezone_label(),
103
- ),
104
- );
105
  }
106
  }
16
  * @return array
17
  */
18
  public function localize() {
19
+ $editor_config = [
20
+ 'common' => [
21
  'adminUrl' => admin_url(),
22
+ 'timeZone' => [
23
  'showTimeZone' => false,
24
  'label' => $this->get_timezone_label(),
25
+ ],
26
+ 'rest' => [
27
  'url' => get_rest_url(),
28
+ 'nonce' => [
29
  'wp_rest' => wp_create_nonce( 'wp_rest' ),
30
+ ],
31
+ 'namespaces' => [
32
  'core' => 'wp/v2',
33
+ ],
34
+ ],
35
  'dateSettings' => $this->get_date_settings(),
36
+ 'constants' => [
37
  'hideUpsell' => ( defined( 'TRIBE_HIDE_UPSELL' ) && TRIBE_HIDE_UPSELL ),
38
+ ],
39
  'countries' => tribe( 'languages.locations' )->get_countries(),
40
  'usStates' => Tribe__View_Helpers::loadStates(),
41
+ ],
42
  'blocks' => [],
43
+ ];
44
 
45
  /**
46
  * Filter the default configuration used to localize variables
76
  public function get_date_settings() {
77
  global $wp_locale;
78
 
79
+ return [
80
+ 'l10n' => [
81
  'locale' => get_user_locale(),
82
  'months' => array_values( $wp_locale->month ),
83
  'monthsShort' => array_values( $wp_locale->month_abbrev ),
84
  'weekdays' => array_values( $wp_locale->weekday ),
85
  'weekdaysShort' => array_values( $wp_locale->weekday_abbrev ),
86
  'meridiem' => (object) $wp_locale->meridiem,
87
+ 'relative' => [
88
  /* translators: %s: duration */
89
  'future' => __( '%s from now', 'default' ),
90
  /* translators: %s: duration */
91
  'past' => __( '%s ago', 'default' ),
92
+ ],
93
+ ],
94
+ 'formats' => [
95
  'time' => get_option( 'time_format', __( 'g:i a', 'default' ) ),
96
  'date' => get_option( 'date_format', __( 'F j, Y', 'default' ) ),
97
  'dateNoYear' => __( 'F j', 'default' ),
98
  'datetime' => get_option( 'date_format', __( 'F j, Y', 'default' ) ) . ' ' . get_option( 'time_format', __( 'g:i a', 'default' ) ),
99
+ ],
100
+ 'timezone' => [
101
  'offset' => get_option( 'gmt_offset', 0 ),
102
  'string' => $this->get_timezone_label(),
103
+ ],
104
+ ];
105
  }
106
  }
common/src/Tribe/Editor/Meta.php CHANGED
@@ -16,13 +16,13 @@ abstract class Tribe__Editor__Meta
16
  * @return array
17
  */
18
  protected function text() {
19
- return array(
20
- 'auth_callback' => array( $this, 'auth_callback' ),
21
  'sanitize_callback' => 'sanitize_text_field',
22
  'type' => 'string',
23
  'single' => true,
24
  'show_in_rest' => true,
25
- );
26
  }
27
 
28
  /**
@@ -33,13 +33,13 @@ abstract class Tribe__Editor__Meta
33
  * @return array
34
  */
35
  protected function textarea() {
36
- return array(
37
- 'auth_callback' => array( $this, 'auth_callback' ),
38
  'sanitize_callback' => 'sanitize_textarea_field',
39
  'type' => 'string',
40
  'single' => true,
41
  'show_in_rest' => true,
42
- );
43
  }
44
 
45
  /**
@@ -50,13 +50,13 @@ abstract class Tribe__Editor__Meta
50
  * @return array
51
  */
52
  protected function url() {
53
- return array(
54
- 'auth_callback' => array( $this, 'auth_callback' ),
55
  'sanitize_callback' => 'esc_url_raw',
56
  'type' => 'string',
57
  'single' => true,
58
  'show_in_rest' => true,
59
- );
60
  }
61
 
62
  /**
@@ -67,13 +67,13 @@ abstract class Tribe__Editor__Meta
67
  * @return array
68
  */
69
  protected function numeric() {
70
- return array(
71
- 'auth_callback' => array( $this, 'auth_callback' ),
72
  'sanitize_callback' => 'absint',
73
  'type' => 'number',
74
  'single' => true,
75
  'show_in_rest' => true,
76
- );
77
  }
78
 
79
  /***
@@ -84,13 +84,13 @@ abstract class Tribe__Editor__Meta
84
  * @return array
85
  */
86
  protected function boolean() {
87
- return array(
88
- 'auth_callback' => array( $this, 'auth_callback' ),
89
- 'sanitize_callback' => array( $this, 'sanitize_boolean' ),
90
  'type' => 'boolean',
91
  'single' => true,
92
  'show_in_rest' => true,
93
- );
94
  }
95
 
96
  /**
@@ -101,14 +101,14 @@ abstract class Tribe__Editor__Meta
101
  * @return array
102
  */
103
  protected function numeric_array() {
104
- return array(
105
  'description' => __( 'Numeric Array', 'tribe-common' ),
106
- 'auth_callback' => array( $this, 'auth_callback' ),
107
- 'sanitize_callback' => array( $this, 'sanitize_numeric_array' ),
108
  'type' => 'number',
109
  'single' => false,
110
  'show_in_rest' => true,
111
- );
112
  }
113
 
114
  /**
@@ -119,14 +119,14 @@ abstract class Tribe__Editor__Meta
119
  * @return array
120
  */
121
  protected function text_array() {
122
- return array(
123
  'description' => __( 'Text Array', 'tribe-common' ),
124
- 'auth_callback' => array( $this, 'auth_callback' ),
125
- 'sanitize_callback' => array( $this, 'sanitize_text_array' ),
126
  'type' => 'string',
127
  'single' => false,
128
  'show_in_rest' => true,
129
- );
130
  }
131
 
132
  /**
16
  * @return array
17
  */
18
  protected function text() {
19
+ return [
20
+ 'auth_callback' => [ $this, 'auth_callback' ],
21
  'sanitize_callback' => 'sanitize_text_field',
22
  'type' => 'string',
23
  'single' => true,
24
  'show_in_rest' => true,
25
+ ];
26
  }
27
 
28
  /**
33
  * @return array
34
  */
35
  protected function textarea() {
36
+ return [
37
+ 'auth_callback' => [ $this, 'auth_callback' ],
38
  'sanitize_callback' => 'sanitize_textarea_field',
39
  'type' => 'string',
40
  'single' => true,
41
  'show_in_rest' => true,
42
+ ];
43
  }
44
 
45
  /**
50
  * @return array
51
  */
52
  protected function url() {
53
+ return [
54
+ 'auth_callback' => [ $this, 'auth_callback' ],
55
  'sanitize_callback' => 'esc_url_raw',
56
  'type' => 'string',
57
  'single' => true,
58
  'show_in_rest' => true,
59
+ ];
60
  }
61
 
62
  /**
67
  * @return array
68
  */
69
  protected function numeric() {
70
+ return [
71
+ 'auth_callback' => [ $this, 'auth_callback' ],
72
  'sanitize_callback' => 'absint',
73
  'type' => 'number',
74
  'single' => true,
75
  'show_in_rest' => true,
76
+ ];
77
  }
78
 
79
  /***
84
  * @return array
85
  */
86
  protected function boolean() {
87
+ return [
88
+ 'auth_callback' => [ $this, 'auth_callback' ],
89
+ 'sanitize_callback' => [ $this, 'sanitize_boolean' ],
90
  'type' => 'boolean',
91
  'single' => true,
92
  'show_in_rest' => true,
93
+ ];
94
  }
95
 
96
  /**
101
  * @return array
102
  */
103
  protected function numeric_array() {
104
+ return [
105
  'description' => __( 'Numeric Array', 'tribe-common' ),
106
+ 'auth_callback' => [ $this, 'auth_callback' ],
107
+ 'sanitize_callback' => [ $this, 'sanitize_numeric_array' ],
108
  'type' => 'number',
109
  'single' => false,
110
  'show_in_rest' => true,
111
+ ];
112
  }
113
 
114
  /**
119
  * @return array
120
  */
121
  protected function text_array() {
122
+ return [
123
  'description' => __( 'Text Array', 'tribe-common' ),
124
+ 'auth_callback' => [ $this, 'auth_callback' ],
125
+ 'sanitize_callback' => [ $this, 'sanitize_text_array' ],
126
  'type' => 'string',
127
  'single' => false,
128
  'show_in_rest' => true,
129
+ ];
130
  }
131
 
132
  /**
common/src/Tribe/Editor/Provider.php CHANGED
@@ -18,7 +18,7 @@ class Tribe__Editor__Provider extends tad_DI52_ServiceProvider {
18
  return;
19
  }
20
 
21
- $this->container->singleton( 'editor.assets', 'Tribe__Editor__Assets', array( 'hook' ) );
22
 
23
  $this->hook();
24
 
@@ -36,7 +36,7 @@ class Tribe__Editor__Provider extends tad_DI52_ServiceProvider {
36
  */
37
  protected function hook() {
38
  // Setup the registration of Blocks
39
- add_action( 'init', array( $this, 'register_blocks' ), 20 );
40
  }
41
 
42
  /**
18
  return;
19
  }
20
 
21
+ $this->container->singleton( 'editor.assets', 'Tribe__Editor__Assets', [ 'hook' ] );
22
 
23
  $this->hook();
24
 
36
  */
37
  protected function hook() {
38
  // Setup the registration of Blocks
39
+ add_action( 'init', [ $this, 'register_blocks' ], 20 );
40
  }
41
 
42
  /**
common/src/Tribe/Editor/Utils.php CHANGED
@@ -95,10 +95,10 @@ class Tribe__Editor__Utils {
95
  return false;
96
  }
97
 
98
- return wp_update_post( array(
99
  'ID' => $post_id,
100
  'post_content' => $next_content,
101
- ) );
102
  }
103
 
104
  /**
95
  return false;
96
  }
97
 
98
+ return wp_update_post( [
99
  'ID' => $post_id,
100
  'post_content' => $next_content,
101
+ ] );
102
  }
103
 
104
  /**
common/src/Tribe/Error.php CHANGED
@@ -7,7 +7,7 @@ class Tribe__Error {
7
  * All the Errors Registered
8
  * @var array
9
  */
10
- private $items = array();
11
 
12
  /**
13
  * Static Singleton Holder
@@ -49,9 +49,9 @@ class Tribe__Error {
49
  *
50
  * @return WP_Error
51
  */
52
- public function send( $indexes, $context = array(), $sprintf = array() ) {
53
  if ( ! $this->exists( $indexes ) ) {
54
- $indexes = array( 'unknown' );
55
  }
56
 
57
  // Fetches the Errors
@@ -170,7 +170,7 @@ class Tribe__Error {
170
  $variable = $variable[ $index ];
171
  }
172
 
173
- $return = array();
174
  $was_namespace = is_array( $variable );
175
 
176
  /**
7
  * All the Errors Registered
8
  * @var array
9
  */
10
+ private $items = [];
11
 
12
  /**
13
  * Static Singleton Holder
49
  *
50
  * @return WP_Error
51
  */
52
+ public function send( $indexes, $context = [], $sprintf = [] ) {
53
  if ( ! $this->exists( $indexes ) ) {
54
+ $indexes = [ 'unknown' ];
55
  }
56
 
57
  // Fetches the Errors
170
  $variable = $variable[ $index ];
171
  }
172
 
173
+ $return = [];
174
  $was_namespace = is_array( $variable );
175
 
176
  /**
common/src/Tribe/Exception.php CHANGED
@@ -45,7 +45,7 @@ class Tribe__Exception extends Exception {
45
  */
46
  private function get_log_type_for_exception_code( $code ) {
47
  $map = array(
48
- // @todo: let's add a decent exception code to log type map here
49
  );
50
 
51
  return isset( $map[ $code ] ) ? $map[ $code ] : Tribe__Log::ERROR;
45
  */
46
  private function get_log_type_for_exception_code( $code ) {
47
  $map = array(
48
+ // @todo [BTRIA-583]: Let's add a decent exception code to log type map here.
49
  );
50
 
51
  return isset( $map[ $code ] ) ? $map[ $code ] : Tribe__Log::ERROR;
common/src/Tribe/Extension.php CHANGED
@@ -42,7 +42,7 @@ abstract class Tribe__Extension {
42
  * resulting data is stored in this.
43
  * }
44
  */
45
- protected $args = array();
46
 
47
  /**
48
  * The various extension instances
@@ -53,7 +53,7 @@ abstract class Tribe__Extension {
53
  * @type object $child_class_name instance
54
  * }
55
  */
56
- private static $instances = array();
57
 
58
  /**
59
  * Get singleton instance of child class
@@ -101,7 +101,7 @@ abstract class Tribe__Extension {
101
  if ( did_action( $init_hook ) > 0 ) {
102
  $this->register();
103
  } else {
104
- add_action( $init_hook, array( $this, 'register' ) );
105
  }
106
  }
107
 
@@ -127,7 +127,7 @@ abstract class Tribe__Extension {
127
  * @param string|null $minimum_version Minimum acceptable version of plugin.
128
  */
129
  final protected function add_required_plugin( $main_class, $minimum_version = null ) {
130
- $this->set( array( 'requires', $main_class ), $minimum_version );
131
  }
132
 
133
  /**
@@ -143,7 +143,7 @@ abstract class Tribe__Extension {
143
  $this->get_plugin_file(),
144
  __( 'Tutorial', 'tribe-common' ),
145
  $url,
146
- array( 'class' => 'tribe-meta-link-extension' )
147
  );
148
  }
149
 
@@ -391,7 +391,7 @@ abstract class Tribe__Extension {
391
 
392
  // Class name was not set by debug_backtrace() hackery.
393
  if ( null === $class_name ) {
394
- tribe_notice( 'tribe_debug_backtrace_disabled', array( __CLASS__, 'notice_debug_backtrace' ) );
395
  }
396
 
397
  return $class_name;
42
  * resulting data is stored in this.
43
  * }
44
  */
45
+ protected $args = [];
46
 
47
  /**
48
  * The various extension instances
53
  * @type object $child_class_name instance
54
  * }
55
  */
56
+ private static $instances = [];
57
 
58
  /**
59
  * Get singleton instance of child class
101
  if ( did_action( $init_hook ) > 0 ) {
102
  $this->register();
103
  } else {
104
+ add_action( $init_hook, [ $this, 'register' ] );
105
  }
106
  }
107
 
127
  * @param string|null $minimum_version Minimum acceptable version of plugin.
128
  */
129
  final protected function add_required_plugin( $main_class, $minimum_version = null ) {
130
+ $this->set( [ 'requires', $main_class ], $minimum_version );
131
  }
132
 
133
  /**
143
  $this->get_plugin_file(),
144
  __( 'Tutorial', 'tribe-common' ),
145
  $url,
146
+ [ 'class' => 'tribe-meta-link-extension' ]
147
  );
148
  }
149
 
391
 
392
  // Class name was not set by debug_backtrace() hackery.
393
  if ( null === $class_name ) {
394
+ tribe_notice( 'tribe_debug_backtrace_disabled', [ __CLASS__, 'notice_debug_backtrace' ] );
395
  }
396
 
397
  return $class_name;
common/src/Tribe/Extension_Loader.php CHANGED
@@ -15,7 +15,7 @@ class Tribe__Extension_Loader {
15
  * @param array $plugin_basename Plugin header key/value pairs.
16
  * }
17
  */
18
- private $plugin_data = array();
19
 
20
  /**
21
  * Class instance.
@@ -51,7 +51,7 @@ class Tribe__Extension_Loader {
51
  * @return array Prefixes
52
  */
53
  public static function get_extension_file_prefixes() {
54
- $prefixes = array( 'tribe-ext-' );
55
 
56
  /**
57
  * Filter which plugin folder prefixes are considered tribe extensions.
@@ -97,13 +97,17 @@ class Tribe__Extension_Loader {
97
 
98
  // Class instantiation.
99
  if ( class_exists( $p_data['ExtensionClass'] ) ) {
100
- $extension_args = array(
101
  'file' => $plugin_file,
102
  'plugin_data' => $p_data,
103
- );
104
 
105
  // Instantiates extension instance.
106
- $extension = call_user_func( array( $p_data['ExtensionClass'], 'instance' ), $p_data['ExtensionClass'], $extension_args );
 
 
 
 
107
 
108
  if ( null !== $extension ) {
109
  $success = true;
15
  * @param array $plugin_basename Plugin header key/value pairs.
16
  * }
17
  */
18
+ private $plugin_data = [];
19
 
20
  /**
21
  * Class instance.
51
  * @return array Prefixes
52
  */
53
  public static function get_extension_file_prefixes() {
54
+ $prefixes = [ 'tribe-ext-' ];
55
 
56
  /**
57
  * Filter which plugin folder prefixes are considered tribe extensions.
97
 
98
  // Class instantiation.
99
  if ( class_exists( $p_data['ExtensionClass'] ) ) {
100
+ $extension_args = [
101
  'file' => $plugin_file,
102
  'plugin_data' => $p_data,
103
+ ];
104
 
105
  // Instantiates extension instance.
106
+ $extension = call_user_func(
107
+ [ $p_data['ExtensionClass'], 'instance' ],
108
+ $p_data['ExtensionClass'],
109
+ $extension_args
110
+ );
111
 
112
  if ( null !== $extension ) {
113
  $success = true;
common/src/Tribe/Field.php CHANGED
@@ -68,7 +68,7 @@ if ( ! class_exists( 'Tribe__Field' ) ) {
68
  public function __construct( $id, $field, $value = null ) {
69
 
70
  // setup the defaults
71
- $this->defaults = array(
72
  'type' => 'html',
73
  'name' => $id,
74
  'fieldset_attributes' => [],
@@ -90,10 +90,10 @@ if ( ! class_exists( 'Tribe__Field' ) ) {
90
  'clear_after' => true,
91
  'tooltip_first' => false,
92
  'allow_clear' => false,
93
- );
94
 
95
  // a list of valid field types, to prevent screwy behavior
96
- $this->valid_field_types = array(
97
  'heading',
98
  'html',
99
  'text',
@@ -109,7 +109,7 @@ if ( ! class_exists( 'Tribe__Field' ) ) {
109
  'license_key',
110
  'wrapped_html',
111
  'email',
112
- );
113
 
114
  $this->valid_field_types = apply_filters( 'tribe_valid_field_types', $this->valid_field_types );
115
 
@@ -221,7 +221,7 @@ if ( ! class_exists( 'Tribe__Field' ) ) {
221
  } elseif ( in_array( $this->type, $this->valid_field_types ) ) {
222
 
223
  // the specified type exists, run the appropriate method
224
- $field = call_user_func( array( $this, $this->type ) );
225
 
226
  // filter the output
227
  $field = apply_filters( 'tribe_field_output_' . $this->type, $field, $this->id, $this );
@@ -275,8 +275,8 @@ if ( ! class_exists( 'Tribe__Field' ) ) {
275
  if ( $this->label ) {
276
  if ( isset( $this->label_attributes ) ) {
277
  $this->label_attributes['class'] = isset( $this->label_attributes['class'] ) ?
278
- implode( ' ', array_merge( array( 'tribe-field-label' ), $this->label_attributes['class'] ) ) :
279
- array( 'tribe-field-label' );
280
  $this->label_attributes = $this->concat_attributes( $this->label_attributes );
281
  }
282
  $return = sprintf( '<legend class="tribe-field-label" %s>%s</legend>', $this->label_attributes, $this->label );
@@ -496,10 +496,10 @@ if ( ! class_exists( 'Tribe__Field' ) ) {
496
  * @return string the field
497
  */
498
  public function wysiwyg() {
499
- $settings = array(
500
  'teeny' => true,
501
  'wpautop' => true,
502
- );
503
  ob_start();
504
  wp_editor( html_entity_decode( ( $this->value ) ), $this->name, $settings );
505
  $editor = ob_get_clean();
@@ -560,7 +560,7 @@ if ( ! class_exists( 'Tribe__Field' ) ) {
560
 
561
  if ( ! is_array( $this->value ) ) {
562
  if ( ! empty( $this->value ) ) {
563
- $this->value = array( $this->value );
564
  } else {
565
  $this->value = [];
566
  }
@@ -779,7 +779,7 @@ if ( ! class_exists( 'Tribe__Field' ) ) {
779
  *
780
  * Example usage:
781
  *
782
- * $attrs = array( 'class' => array('one', 'two'), 'style' => 'color:red;' );
783
  * printf ( '<p %s>%s</p>', tribe_concat_attributes( $attrs ), 'bar' );
784
  *
785
  * // <p> class="one two" style="color:red;">bar</p>
68
  public function __construct( $id, $field, $value = null ) {
69
 
70
  // setup the defaults
71
+ $this->defaults = [
72
  'type' => 'html',
73
  'name' => $id,
74
  'fieldset_attributes' => [],
90
  'clear_after' => true,
91
  'tooltip_first' => false,
92
  'allow_clear' => false,
93
+ ];
94
 
95
  // a list of valid field types, to prevent screwy behavior
96
+ $this->valid_field_types = [
97
  'heading',
98
  'html',
99
  'text',
109
  'license_key',
110
  'wrapped_html',
111
  'email',
112
+ ];
113
 
114
  $this->valid_field_types = apply_filters( 'tribe_valid_field_types', $this->valid_field_types );
115
 
221
  } elseif ( in_array( $this->type, $this->valid_field_types ) ) {
222
 
223
  // the specified type exists, run the appropriate method
224
+ $field = call_user_func( [ $this, $this->type ] );
225
 
226
  // filter the output
227
  $field = apply_filters( 'tribe_field_output_' . $this->type, $field, $this->id, $this );
275
  if ( $this->label ) {
276
  if ( isset( $this->label_attributes ) ) {
277
  $this->label_attributes['class'] = isset( $this->label_attributes['class'] ) ?
278
+ implode( ' ', array_merge( [ 'tribe-field-label' ], $this->label_attributes['class'] ) ) :
279
+ [ 'tribe-field-label' ];
280
  $this->label_attributes = $this->concat_attributes( $this->label_attributes );
281
  }
282
  $return = sprintf( '<legend class="tribe-field-label" %s>%s</legend>', $this->label_attributes, $this->label );
496
  * @return string the field
497
  */
498
  public function wysiwyg() {
499
+ $settings = [
500
  'teeny' => true,
501
  'wpautop' => true,
502
+ ];
503
  ob_start();
504
  wp_editor( html_entity_decode( ( $this->value ) ), $this->name, $settings );
505
  $editor = ob_get_clean();
560
 
561
  if ( ! is_array( $this->value ) ) {
562
  if ( ! empty( $this->value ) ) {
563
+ $this->value = [ $this->value ];
564
  } else {
565
  $this->value = [];
566
  }
779
  *
780
  * Example usage:
781
  *
782
+ * $attrs = [ 'class' => ['one', 'two'], 'style' => 'color:red;' ];
783
  * printf ( '<p %s>%s</p>', tribe_concat_attributes( $attrs ), 'bar' );
784
  *
785
  * // <p> class="one two" style="color:red;">bar</p>
common/src/Tribe/JSON_LD/Abstract.php CHANGED
@@ -19,14 +19,14 @@ abstract class Tribe__JSON_LD__Abstract {
19
  *
20
  * @var array
21
  */
22
- private static $instances = array();
23
 
24
  /**
25
  * Holder for the Already fetched Posts
26
  *
27
  * @var array
28
  */
29
- protected static $posts = array();
30
 
31
  /**
32
  * Holder for a post when it has multiple types
@@ -35,7 +35,7 @@ abstract class Tribe__JSON_LD__Abstract {
35
  *
36
  * @var array
37
  */
38
- protected static $types = array();
39
 
40
  /**
41
  * The class singleton constructor.
@@ -72,24 +72,24 @@ abstract class Tribe__JSON_LD__Abstract {
72
  * be generated, the `$post` parameter is not a valid post ID or object or the data
73
  * for the post has been fetched already.
74
  */
75
- public function get_data( $post = null, $args = array() ) {
76
  $post_id = Tribe__Main::post_id_helper( $post );
77
  if ( ! $post_id ) {
78
- return array();
79
  }
80
 
81
  // This prevents a JSON_LD from existing twice one the same page
82
  if ( $this->exists( $post_id ) && $this->type_exists( $post_id, $this->type ) ) {
83
- return array();
84
  }
85
 
86
  $post = get_post( $post_id );
87
 
88
  if ( empty( $post->ID ) ) {
89
- return array();
90
  }
91
 
92
- $data = (object) array();
93
 
94
  // We may need to prevent the context to be triggered
95
  if ( ! isset( $args['context'] ) || false !== $args['context'] ) {
@@ -112,7 +112,7 @@ abstract class Tribe__JSON_LD__Abstract {
112
 
113
  // Index by ID: this will allow filter code to identify the actual event being referred to
114
  // without injecting an additional property
115
- return array( $post->ID => $data );
116
  }
117
 
118
  /**
@@ -149,7 +149,7 @@ abstract class Tribe__JSON_LD__Abstract {
149
  *
150
  * @return string
151
  */
152
- public function get_markup( $post = null, $args = array() ) {
153
  $data = $this->get_data( $post, $args );
154
  $type = strtolower( esc_attr( $this->type ) );
155
  $this->set_type( $post, $type );
@@ -182,7 +182,7 @@ abstract class Tribe__JSON_LD__Abstract {
182
  return ! empty( $html ) ? implode( "\r\n", $html ) : '';
183
  }
184
 
185
- public function markup( $post = null, $args = array() ) {
186
  $html = $this->get_markup( $post, $args );
187
 
188
  /**
@@ -296,7 +296,7 @@ abstract class Tribe__JSON_LD__Abstract {
296
  }
297
 
298
  if ( empty( self::$types[ $id ] ) ) {
299
- self::$types[ $id ] = array( $this->type );
300
  } else {
301
  self::$types[ $id ][] = $this->type;
302
  }
@@ -343,8 +343,8 @@ abstract class Tribe__JSON_LD__Abstract {
343
  * Added for testing purposes.
344
  */
345
  public static function unregister_all() {
346
- self::$posts = array();
347
- self::$types = array();
348
  }
349
 
350
  /**
19
  *
20
  * @var array
21
  */
22
+ private static $instances = [];
23
 
24
  /**
25
  * Holder for the Already fetched Posts
26
  *
27
  * @var array
28
  */
29
+ protected static $posts = [];
30
 
31
  /**
32
  * Holder for a post when it has multiple types
35
  *
36
  * @var array
37
  */
38
+ protected static $types = [];
39
 
40
  /**
41
  * The class singleton constructor.
72
  * be generated, the `$post` parameter is not a valid post ID or object or the data
73
  * for the post has been fetched already.
74
  */
75
+ public function get_data( $post = null, $args = [] ) {
76
  $post_id = Tribe__Main::post_id_helper( $post );
77
  if ( ! $post_id ) {
78
+ return [];
79
  }
80
 
81
  // This prevents a JSON_LD from existing twice one the same page
82
  if ( $this->exists( $post_id ) && $this->type_exists( $post_id, $this->type ) ) {
83
+ return [];
84
  }
85
 
86
  $post = get_post( $post_id );
87
 
88
  if ( empty( $post->ID ) ) {
89
+ return [];
90
  }
91
 
92
+ $data = (object) [];
93
 
94
  // We may need to prevent the context to be triggered
95
  if ( ! isset( $args['context'] ) || false !== $args['context'] ) {
112
 
113
  // Index by ID: this will allow filter code to identify the actual event being referred to
114
  // without injecting an additional property
115
+ return [ $post->ID => $data ];
116
  }
117
 
118
  /**
149
  *
150
  * @return string
151
  */
152
+ public function get_markup( $post = null, $args = [] ) {
153
  $data = $this->get_data( $post, $args );
154
  $type = strtolower( esc_attr( $this->type ) );
155
  $this->set_type( $post, $type );
182
  return ! empty( $html ) ? implode( "\r\n", $html ) : '';
183
  }
184
 
185
+ public function markup( $post = null, $args = [] ) {
186
  $html = $this->get_markup( $post, $args );
187
 
188
  /**
296
  }
297
 
298
  if ( empty( self::$types[ $id ] ) ) {
299
+ self::$types[ $id ] = [ $this->type ];
300
  } else {
301
  self::$types[ $id ][] = $this->type;
302
  }
343
  * Added for testing purposes.
344
  */
345
  public static function unregister_all() {
346
+ self::$posts = [];
347
+ self::$types = [];
348
  }
349
 
350
  /**
common/src/Tribe/Languages/Locations.php CHANGED
@@ -23,7 +23,7 @@ class Tribe__Languages__Locations {
23
  * }
24
  */
25
  public function get_countries() {
26
- return tribe( 'cache' )->get( 'tribe_country_list', '', array( $this, 'build_country_array' ) );
27
  }
28
 
29
  /**
@@ -38,7 +38,7 @@ class Tribe__Languages__Locations {
38
  * }
39
  */
40
  public function get_us_states() {
41
- return tribe( 'cache' )->get( 'tribe_us_states_list', '', array( $this, 'build_us_states_array' ) );
42
  }
43
 
44
  /**
@@ -51,7 +51,7 @@ class Tribe__Languages__Locations {
51
  * }
52
  */
53
  public function build_country_array() {
54
- $countries = array(
55
  'US' => esc_html__( 'United States', 'tribe-common' ),
56
  'AF' => esc_html__( 'Afghanistan', 'tribe-common' ),
57
  'AX' => esc_html__( '&Aring;land Islands', 'tribe-common' ),
@@ -295,7 +295,7 @@ class Tribe__Languages__Locations {
295
  'YE' => esc_html__( 'Yemen', 'tribe-common' ),
296
  'ZM' => esc_html__( 'Zambia', 'tribe-common' ),
297
  'ZW' => esc_html__( 'Zimbabwe', 'tribe-common' ),
298
- );
299
 
300
  // Perform a natural sort, ensures the countries are in the expected order even once translated.
301
  natsort( $countries );
@@ -320,7 +320,7 @@ class Tribe__Languages__Locations {
320
  * }
321
  */
322
  public function build_us_states_array() {
323
- $states = array(
324
  'AL' => esc_html__( 'Alabama', 'tribe-common' ),
325
  'AK' => esc_html__( 'Alaska', 'tribe-common' ),
326
  'AZ' => esc_html__( 'Arizona', 'tribe-common' ),
@@ -331,7 +331,7 @@ class Tribe__Languages__Locations {
331
  'DE' => esc_html__( 'Delaware', 'tribe-common' ),
332
  'DC' => esc_html__( 'District of Columbia', 'tribe-common' ),
333
  'FL' => esc_html__( 'Florida', 'tribe-common' ),
334
- 'GA' => esc_html_x( 'Georgia', 'The US state Georgia','tribe-common' ),
335
  'HI' => esc_html__( 'Hawaii', 'tribe-common' ),
336
  'ID' => esc_html__( 'Idaho', 'tribe-common' ),
337
  'IL' => esc_html__( 'Illinois', 'tribe-common' ),
@@ -372,7 +372,7 @@ class Tribe__Languages__Locations {
372
  'WV' => esc_html__( 'West Virginia', 'tribe-common' ),
373
  'WI' => esc_html__( 'Wisconsin', 'tribe-common' ),
374
  'WY' => esc_html__( 'Wyoming', 'tribe-common' ),
375
- );
376
 
377
  // Perform a natural sort, ensures the states are in the expected order even once translated.
378
  natsort( $states );
23
  * }
24
  */
25
  public function get_countries() {
26
+ return tribe( 'cache' )->get( 'tribe_country_list', '', [ $this, 'build_country_array' ] );
27
  }
28
 
29
  /**
38
  * }
39
  */
40
  public function get_us_states() {
41
+ return tribe( 'cache' )->get( 'tribe_us_states_list', '', [ $this, 'build_us_states_array' ] );
42
  }
43
 
44
  /**
51
  * }
52
  */
53
  public function build_country_array() {
54
+ $countries = [
55
  'US' => esc_html__( 'United States', 'tribe-common' ),
56
  'AF' => esc_html__( 'Afghanistan', 'tribe-common' ),
57
  'AX' => esc_html__( '&Aring;land Islands', 'tribe-common' ),
295
  'YE' => esc_html__( 'Yemen', 'tribe-common' ),
296
  'ZM' => esc_html__( 'Zambia', 'tribe-common' ),
297
  'ZW' => esc_html__( 'Zimbabwe', 'tribe-common' ),
298
+ ];
299
 
300
  // Perform a natural sort, ensures the countries are in the expected order even once translated.
301
  natsort( $countries );
320
  * }
321
  */
322
  public function build_us_states_array() {
323
+ $states = [
324
  'AL' => esc_html__( 'Alabama', 'tribe-common' ),
325
  'AK' => esc_html__( 'Alaska', 'tribe-common' ),
326
  'AZ' => esc_html__( 'Arizona', 'tribe-common' ),
331
  'DE' => esc_html__( 'Delaware', 'tribe-common' ),
332
  'DC' => esc_html__( 'District of Columbia', 'tribe-common' ),
333
  'FL' => esc_html__( 'Florida', 'tribe-common' ),
334
+ 'GA' => esc_html_x( 'Georgia', 'The US state Georgia', 'tribe-common' ),
335
  'HI' => esc_html__( 'Hawaii', 'tribe-common' ),
336
  'ID' => esc_html__( 'Idaho', 'tribe-common' ),
337
  'IL' => esc_html__( 'Illinois', 'tribe-common' ),
372
  'WV' => esc_html__( 'West Virginia', 'tribe-common' ),
373
  'WI' => esc_html__( 'Wisconsin', 'tribe-common' ),
374
  'WY' => esc_html__( 'Wyoming', 'tribe-common' ),
375
+ ];
376
 
377
  // Perform a natural sort, ensures the states are in the expected order even once translated.
378
  natsort( $states );
common/src/Tribe/Languages/Recaptcha_Map.php CHANGED
@@ -16,7 +16,7 @@ class Tribe__Languages__Recaptcha_Map implements Tribe__Languages__Map_Interface
16
  * e.g. [ 'pt-BR' => 'Portuguese (Brazil)' ]
17
  */
18
  public function get_supported_languages() {
19
- return array(
20
  'ar' => 'Arabic',
21
  'af' => 'Afrikaans',
22
  'am' => 'Amharic',
@@ -87,7 +87,7 @@ class Tribe__Languages__Recaptcha_Map implements Tribe__Languages__Map_Interface
87
  'ur' => 'Urdu',
88
  'vi' => 'Vietnamese',
89
  'zu' => 'Zulu',
90
- );
91
  }
92
 
93
  /**
16
  * e.g. [ 'pt-BR' => 'Portuguese (Brazil)' ]
17
  */
18
  public function get_supported_languages() {
19
+ return [
20
  'ar' => 'Arabic',
21
  'af' => 'Afrikaans',
22
  'am' => 'Amharic',
87
  'ur' => 'Urdu',
88
  'vi' => 'Vietnamese',
89
  'zu' => 'Zulu',
90
+ ];
91
  }
92
 
93
  /**
common/src/Tribe/Log.php CHANGED
@@ -36,7 +36,7 @@ class Tribe__Log {
36
  *
37
  * @var array
38
  */
39
- protected $levels = array();
40
 
41
  /**
42
  * Alternative representation of the $levels property allowing quick look
@@ -44,15 +44,14 @@ class Tribe__Log {
44
  *
45
  * @var array
46
  */
47
- protected $prioritized_levels = array();
48
 
49
  /**
50
  * Instantiated loggers, stored for re-use.
51
  *
52
  * @var array
53
  */
54
- protected $loggers = array();
55
-
56
 
57
  public function __construct() {
58
  if ( is_admin() ) {
@@ -75,7 +74,7 @@ class Tribe__Log {
75
  */
76
  protected function log_cleanup() {
77
  $this->register_cleanup_task();
78
- do_action( self::CLEANUP, array( $this, 'do_cleanup' ) );
79
  }
80
 
81
  /**
@@ -163,7 +162,7 @@ class Tribe__Log {
163
  $original_type = $type;
164
 
165
  // some levels are really just debug information
166
- $debug_types = array( self::SUCCESS, self::COLORIZE );
167
 
168
  if ( in_array( $type, $debug_types ) ) {
169
  $type = self::DEBUG;
@@ -219,10 +218,10 @@ class Tribe__Log {
219
  * @return array
220
  */
221
  public function get_logging_engines() {
222
- $available_engines = array();
223
- $bundled_engines = array(
224
  'Tribe__Log__File_Logger',
225
- );
226
 
227
  foreach ( $bundled_engines as $engine_class ) {
228
  $engine = $this->get_engine( $engine_class );
@@ -384,12 +383,12 @@ class Tribe__Log {
384
  *
385
  * @param array $logging_levels
386
  */
387
- $this->levels = (array) apply_filters( 'tribe_common_logging_levels', array(
388
- array( self::DISABLE, __( 'Disabled', 'tribe-common' ) ),
389
- array( self::ERROR, __( 'Only errors', 'tribe-common' ) ),
390
- array( self::WARNING, __( 'Warnings and errors', 'tribe-common' ) ),
391
- array( self::DEBUG, __( 'Full debug (all events)', 'tribe-common' ) ),
392
- ) );
393
  }
394
 
395
  return $this->levels;
36
  *
37
  * @var array
38
  */
39
+ protected $levels = [];
40
 
41
  /**
42
  * Alternative representation of the $levels property allowing quick look
44
  *
45
  * @var array
46
  */
47
+ protected $prioritized_levels = [];
48
 
49
  /**
50
  * Instantiated loggers, stored for re-use.
51
  *
52
  * @var array
53
  */
54
+ protected $loggers = [];
 
55
 
56
  public function __construct() {
57
  if ( is_admin() ) {
74
  */
75
  protected function log_cleanup() {
76
  $this->register_cleanup_task();
77
+ do_action( self::CLEANUP, [ $this, 'do_cleanup' ] );
78
  }
79
 
80
  /**
162
  $original_type = $type;
163
 
164
  // some levels are really just debug information
165
+ $debug_types = [ self::SUCCESS, self::COLORIZE ];
166
 
167
  if ( in_array( $type, $debug_types ) ) {
168
  $type = self::DEBUG;
218
  * @return array
219
  */
220
  public function get_logging_engines() {
221
+ $available_engines = [];
222
+ $bundled_engines = [
223
  'Tribe__Log__File_Logger',
224
+ ];
225
 
226
  foreach ( $bundled_engines as $engine_class ) {
227
  $engine = $this->get_engine( $engine_class );
383
  *
384
  * @param array $logging_levels
385
  */
386
+ $this->levels = (array) apply_filters( 'tribe_common_logging_levels', [
387
+ [ self::DISABLE, __( 'Disabled', 'tribe-common' ) ],
388
+ [ self::ERROR, __( 'Only errors', 'tribe-common' ) ],
389
+ [ self::WARNING, __( 'Warnings and errors', 'tribe-common' ) ],
390
+ [ self::DEBUG, __( 'Full debug (all events)', 'tribe-common' ) ],
391
+ ] );
392
  }
393
 
394
  return $this->levels;
common/src/Tribe/Log/Action_Logger.php CHANGED
@@ -78,7 +78,7 @@ class Action_Logger implements \Tribe__Log__Logger {
78
  *
79
  * @since 4.9.16
80
  */
81
- public function retrieve( $limit = 0, array $args = array() ) {
82
  return [
83
  [
84
  'message' => __(
78
  *
79
  * @since 4.9.16
80
  */
81
+ public function retrieve( $limit = 0, array $args = [] ) {
82
  return [
83
  [
84
  'message' => __(
common/src/Tribe/Log/Admin.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
  class Tribe__Log__Admin {
3
  public function __construct() {
4
- add_action( 'wp_ajax_tribe_logging_controls', array( $this, 'listen' ) );
5
- add_action( 'init', array( $this, 'serve_log_downloads' ) );
6
- add_action( 'plugins_loaded', array( $this, 'register_script' ) );
7
  }
8
 
9
  /**
@@ -29,11 +29,11 @@ class Tribe__Log__Admin {
29
  * an appropriate response.
30
  */
31
  public function listen() {
32
- $fields = wp_parse_args( $_POST, array(
33
  'check' => '',
34
  'log-level' => '',
35
  'log-engine' => '',
36
- ) );
37
 
38
  foreach ( $fields as &$single_field ) {
39
  $single_field = sanitize_text_field( $single_field );
@@ -58,9 +58,9 @@ class Tribe__Log__Admin {
58
  */
59
  do_action( 'tribe_common_updated_log_settings' );
60
 
61
- $data = array(
62
  'logs' => $this->get_available_logs(),
63
- );
64
 
65
  if ( ! empty( $fields['log-view'] ) ) {
66
  $data['entries'] = $this->get_log_entries( $fields['log-view'] );
@@ -103,17 +103,17 @@ class Tribe__Log__Admin {
103
  Tribe__Main::instance(),
104
  'tribe-common-logging-controls',
105
  'admin-log-controls.js',
106
- array( 'jquery' ),
107
  'admin_enqueue_scripts',
108
- array(
109
- 'conditionals' => array( Tribe__Admin__Help_Page::instance(), 'is_current_page' ),
110
- 'localize' => (object) array(
111
  'name' => 'tribe_logger_data',
112
- 'data' => array(
113
  'check' => wp_create_nonce( 'logging-controls' ),
114
- ),
115
- ),
116
- )
117
  );
118
  }
119
 
@@ -130,7 +130,7 @@ class Tribe__Log__Admin {
130
  }
131
 
132
  if ( empty( $available_logs ) ) {
133
- return array( '' => _x( 'None currently available', 'log selector', 'tribe-common' ) );
134
  }
135
 
136
  return $available_logs;
@@ -145,10 +145,10 @@ class Tribe__Log__Admin {
145
  $available_engines = $this->log_manager()->get_logging_engines();
146
 
147
  if ( empty( $available_engines ) ) {
148
- return array( '' => _x( 'None currently available', 'log engines', 'tribe-common' ) );
149
  }
150
 
151
- $engine_list = array();
152
 
153
  foreach ( $available_engines as $class_name => $engine ) {
154
  /**
@@ -171,7 +171,7 @@ class Tribe__Log__Admin {
171
  return (array) $logger->retrieve();
172
  }
173
 
174
- return array();
175
  }
176
 
177
  /**
@@ -182,7 +182,7 @@ class Tribe__Log__Admin {
182
  * @return array
183
  */
184
  protected function get_logging_levels() {
185
- $levels = array();
186
  $available_levels = $this->log_manager()->get_logging_levels();
187
 
188
  foreach ( $available_levels as $logging_level ) {
@@ -201,10 +201,10 @@ class Tribe__Log__Admin {
201
  * @return string
202
  */
203
  protected function get_log_url( $log = null ) {
204
- $query = array(
205
  'tribe-common-log' => 'download',
206
- 'check' => wp_create_nonce( 'download_log' ),
207
- );
208
 
209
  $log_download_url = add_query_arg( $query, get_admin_url( null, 'edit.php' ) );
210
 
1
  <?php
2
  class Tribe__Log__Admin {
3
  public function __construct() {
4
+ add_action( 'wp_ajax_tribe_logging_controls', [ $this, 'listen' ] );
5
+ add_action( 'init', [ $this, 'serve_log_downloads' ] );
6
+ add_action( 'plugins_loaded', [ $this, 'register_script' ] );
7
  }
8
 
9
  /**
29
  * an appropriate response.
30
  */
31
  public function listen() {
32
+ $fields = wp_parse_args( $_POST, [
33
  'check' => '',
34
  'log-level' => '',
35
  'log-engine' => '',
36
+ ] );
37
 
38
  foreach ( $fields as &$single_field ) {
39
  $single_field = sanitize_text_field( $single_field );
58
  */
59
  do_action( 'tribe_common_updated_log_settings' );
60
 
61
+ $data = [
62
  'logs' => $this->get_available_logs(),
63
+ ];
64
 
65
  if ( ! empty( $fields['log-view'] ) ) {
66
  $data['entries'] = $this->get_log_entries( $fields['log-view'] );
103
  Tribe__Main::instance(),
104
  'tribe-common-logging-controls',
105
  'admin-log-controls.js',
106
+ [ 'jquery' ],
107
  'admin_enqueue_scripts',
108
+ [
109
+ 'conditionals' => [ Tribe__Admin__Help_Page::instance(), 'is_current_page' ],
110
+ 'localize' => (object) [
111
  'name' => 'tribe_logger_data',
112
+ 'data' => [
113
  'check' => wp_create_nonce( 'logging-controls' ),
114
+ ],
115
+ ],
116
+ ]
117
  );
118
  }
119
 
130
  }
131
 
132
  if ( empty( $available_logs ) ) {
133
+ return [ '' => _x( 'None currently available', 'log selector', 'tribe-common' ) ];
134
  }
135
 
136
  return $available_logs;
145
  $available_engines = $this->log_manager()->get_logging_engines();
146
 
147
  if ( empty( $available_engines ) ) {
148
+ return [ '' => _x( 'None currently available', 'log engines', 'tribe-common' ) ];
149
  }
150
 
151
+ $engine_list = [];
152
 
153
  foreach ( $available_engines as $class_name => $engine ) {
154
  /**
171
  return (array) $logger->retrieve();
172
  }
173
 
174
+ return [];
175
  }
176
 
177
  /**
182
  * @return array
183
  */
184
  protected function get_logging_levels() {
185
+ $levels = [];
186
  $available_levels = $this->log_manager()->get_logging_levels();
187
 
188
  foreach ( $available_levels as $logging_level ) {
201
  * @return string
202
  */
203
  protected function get_log_url( $log = null ) {
204
+ $query = [
205
  'tribe-common-log' => 'download',
206
+ 'check' => wp_create_nonce( 'download_log' ),
207
+ ];
208
 
209
  $log_download_url = add_query_arg( $query, get_admin_url( null, 'edit.php' ) );
210
 
common/src/Tribe/Log/File_Logger.php CHANGED
@@ -155,7 +155,7 @@ class Tribe__Log__File_Logger implements Tribe__Log__Logger {
155
  return;
156
  }
157
 
158
- fputcsv( $this->handle, array( date_i18n( 'Y-m-d H:i:s' ), $entry, $type, $src ) );
159
  }
160
 
161
  /**
@@ -171,7 +171,7 @@ class Tribe__Log__File_Logger implements Tribe__Log__Logger {
171
  *
172
  * @return array
173
  */
174
- public function retrieve( $limit = 0, array $args = array() ) {
175
  // Ensure we're in 'read' mode before we try to retrieve
176
  if ( 'r' !== $this->context ) {
177
  $this->set_context( 'r' );
@@ -179,10 +179,10 @@ class Tribe__Log__File_Logger implements Tribe__Log__Logger {
179
 
180
  // Couldn't obtain the file handle? We'll bail out without causing further disruption
181
  if ( ! $this->handle ) {
182
- return array();
183
  }
184
 
185
- $rows = array();
186
 
187
  while ( $current_row = fgetcsv( $this->handle ) ) {
188
  if ( $limit && $limit === count( $rows ) ) {
@@ -212,7 +212,7 @@ class Tribe__Log__File_Logger implements Tribe__Log__Logger {
212
  * @return array
213
  */
214
  public function list_available_logs() {
215
- $logs = array();
216
 
217
  // This could be called when the log dir is not accessible.
218
  if ( ! $this->is_available() ) {
@@ -238,13 +238,7 @@ class Tribe__Log__File_Logger implements Tribe__Log__Logger {
238
  }
239
 
240
  $name = $node->getFilename();
241
-
242
- // DirectoryIterator::getExtension() is only available on 5.3.6
243
- if ( version_compare( phpversion(), '5.3.6', '>=' ) ) {
244
- $ext = $node->getExtension();
245
- } else {
246
- $ext = pathinfo( $name, PATHINFO_EXTENSION );
247
- }
248
 
249
  // Skip unless it is a .log file with the expected prefix
250
  if ( 'log' !== $ext || 0 !== strpos( $name, $basename ) ) {
155
  return;
156
  }
157
 
158
+ fputcsv( $this->handle, [ date_i18n( 'Y-m-d H:i:s' ), $entry, $type, $src ] );
159
  }
160
 
161
  /**
171
  *
172
  * @return array
173
  */
174
+ public function retrieve( $limit = 0, array $args = [] ) {
175
  // Ensure we're in 'read' mode before we try to retrieve
176
  if ( 'r' !== $this->context ) {
177
  $this->set_context( 'r' );
179
 
180
  // Couldn't obtain the file handle? We'll bail out without causing further disruption
181
  if ( ! $this->handle ) {
182
+ return [];
183
  }
184
 
185
+ $rows = [];
186
 
187
  while ( $current_row = fgetcsv( $this->handle ) ) {
188
  if ( $limit && $limit === count( $rows ) ) {
212
  * @return array
213
  */
214
  public function list_available_logs() {
215
+ $logs = [];
216
 
217
  // This could be called when the log dir is not accessible.
218
  if ( ! $this->is_available() ) {
238
  }
239
 
240
  $name = $node->getFilename();
241
+ $ext = $node->getExtension();
 
 
 
 
 
 
242
 
243
  // Skip unless it is a .log file with the expected prefix
244
  if ( 'log' !== $ext || 0 !== strpos( $name, $basename ) ) {
common/src/Tribe/Log/Logger.php CHANGED
@@ -43,7 +43,7 @@ interface Tribe__Log__Logger {
43
  *
44
  * @return array
45
  */
46
- public function retrieve( $limit = 0, array $args = array() );
47
 
48
  /**
49
  * Returns a list of currently accessible logs (current first, oldest last).
43
  *
44
  * @return array
45
  */
46
+ public function retrieve( $limit = 0, array $args = [] );
47
 
48
  /**
49
  * Returns a list of currently accessible logs (current first, oldest last).
common/src/Tribe/Log/Null_Logger.php CHANGED
@@ -3,7 +3,7 @@
3
 
4
  /**
5
  * Class Null_Logger
6
- *
7
  * Logs nothing, reads nothing.
8
  */
9
  class Tribe__Log__Null_Logger implements Tribe__Log__Logger {
@@ -54,8 +54,8 @@ class Tribe__Log__Null_Logger implements Tribe__Log__Logger {
54
  *
55
  * @return array
56
  */
57
- public function retrieve( $limit = 0, array $args = array() ) {
58
- return array();
59
  }
60
 
61
  /**
@@ -78,7 +78,7 @@ class Tribe__Log__Null_Logger implements Tribe__Log__Logger {
78
  * @return array
79
  */
80
  public function list_available_logs() {
81
- return array();
82
  }
83
 
84
  /**
3
 
4
  /**
5
  * Class Null_Logger
6
+ *
7
  * Logs nothing, reads nothing.
8
  */
9
  class Tribe__Log__Null_Logger implements Tribe__Log__Logger {
54
  *
55
  * @return array
56
  */
57
+ public function retrieve( $limit = 0, array $args = [] ) {
58
+ return [];
59
  }
60
 
61
  /**
78
  * @return array
79
  */
80
  public function list_available_logs() {
81
+ return [];
82
  }
83
 
84
  /**
common/src/Tribe/Log/Service_Provider.php CHANGED
@@ -22,6 +22,8 @@ class Service_Provider extends \tad_DI52_ServiceProvider {
22
  * @since 4.9.16
23
  */
24
  public function register() {
 
 
25
  $this->container->singleton( Logger::class, [ $this, 'build_logger' ] );
26
  $this->container->singleton( 'monolog',
27
  function () {
@@ -145,4 +147,30 @@ class Service_Provider extends \tad_DI52_ServiceProvider {
145
 
146
  return $logging_engines;
147
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  }
22
  * @since 4.9.16
23
  */
24
  public function register() {
25
+ $this->container->singleton( 'log', $this );
26
+ $this->container->singleton( static::class, $this );
27
  $this->container->singleton( Logger::class, [ $this, 'build_logger' ] );
28
  $this->container->singleton( 'monolog',
29
  function () {
147
 
148
  return $logging_engines;
149
  }
150
+
151
+ /**
152
+ * Enables logging in the service provider, if not already enabled.
153
+ *
154
+ * @since 4.12.15
155
+ */
156
+ public function enable() {
157
+ if ( has_action( 'tribe_log', [ $this, 'dispatch_log' ] ) ) {
158
+ return;
159
+ }
160
+
161
+ add_action( 'tribe_log', [ $this, 'dispatch_log' ] );
162
+ }
163
+
164
+ /**
165
+ * Disables the logging functions.
166
+ *
167
+ * @since 4.12.15
168
+ */
169
+ public function disable() {
170
+ if ( ! has_action( 'tribe_log', [ $this, 'dispatch_log' ] ) ) {
171
+ return;
172
+ }
173
+
174
+ remove_action( 'tribe_log', [ $this, 'dispatch_log' ] );
175
+ }
176
  }
common/src/Tribe/Main.php CHANGED
@@ -19,7 +19,7 @@ class Tribe__Main {
19
  const OPTIONNAME = 'tribe_events_calendar_options';
20
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
21
 
22
- const VERSION = '4.12.13.1';
23
 
24
  const FEED_URL = 'https://theeventscalendar.com/feed/';
25
 
@@ -67,12 +67,7 @@ class Tribe__Main {
67
  return;
68
  }
69
 
70
- // the 5.2 compatible autoload file
71
- if ( version_compare( PHP_VERSION, '5.2.17', '<=' ) ) {
72
- require_once realpath( dirname( dirname( dirname( __FILE__ ) ) ) . '/vendor/autoload_52.php' );
73
- } else {
74
- require_once realpath( dirname( dirname( dirname( __FILE__ ) ) ) . '/vendor/autoload.php' );
75
- }
76
 
77
  // the DI container class
78
  require_once dirname( __FILE__ ) . '/Container.php';
@@ -428,11 +423,14 @@ class Tribe__Main {
428
  // Are we on the Plugins page?
429
  $is_plugins = $helper->is_screen( 'plugins' );
430
 
 
 
 
431
  // Are we viewing a generic Tribe screen?
432
  // Includes: Events > Settings, Events > Help, App Shop page, and more.
433
  $is_tribe_screen = $helper->is_screen();
434
 
435
- return $is_post_type || $is_plugins || $is_tribe_screen;
436
  }
437
 
438
  /**
@@ -561,7 +559,7 @@ class Tribe__Main {
561
  if ( 'plugins.php' !== $page ) {
562
  return;
563
  }
564
- $notices = apply_filters( 'tribe_plugin_notices', array() );
565
  wp_localize_script( 'tribe-pue-notices', 'tribe_plugin_notices', $notices );
566
  }
567
 
19
  const OPTIONNAME = 'tribe_events_calendar_options';
20
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
21
 
22
+ const VERSION = '4.12.15';
23
 
24
  const FEED_URL = 'https://theeventscalendar.com/feed/';
25
 
67
  return;
68
  }
69
 
70
+ require_once realpath( dirname( dirname( dirname( __FILE__ ) ) ) . '/vendor/autoload.php' );
 
 
 
 
 
71
 
72
  // the DI container class
73
  require_once dirname( __FILE__ ) . '/Container.php';
423
  // Are we on the Plugins page?
424
  $is_plugins = $helper->is_screen( 'plugins' );
425
 
426
+ // Are we on the Widgets page?
427
+ $is_widgets = $helper->is_screen( 'widgets' );
428
+
429
  // Are we viewing a generic Tribe screen?
430
  // Includes: Events > Settings, Events > Help, App Shop page, and more.
431
  $is_tribe_screen = $helper->is_screen();
432
 
433
+ return $is_post_type || $is_plugins || $is_widgets || $is_tribe_screen;
434
  }
435
 
436
  /**
559
  if ( 'plugins.php' !== $page ) {
560
  return;
561
  }
562
+ $notices = apply_filters( 'tribe_plugin_notices', [] );
563
  wp_localize_script( 'tribe-pue-notices', 'tribe_plugin_notices', $notices );
564
  }
565
 
common/src/Tribe/Meta/Chunker.php CHANGED
@@ -63,7 +63,7 @@ class Tribe__Meta__Chunker {
63
  /**
64
  * @var array The post types supported by the Chunker.
65
  */
66
- protected $post_types = array();
67
 
68
  /**
69
  * @var int The filter priority at which Chunker will operate on meta CRUD operations.
@@ -95,11 +95,11 @@ class Tribe__Meta__Chunker {
95
  return;
96
  }
97
 
98
- add_filter( 'update_post_metadata', array( $this, 'filter_update_metadata' ), $this->filter_priority, 4 );
99
- add_filter( 'delete_post_metadata', array( $this, 'filter_delete_metadata' ), $this->filter_priority, 3 );
100
- add_filter( 'add_post_metadata', array( $this, 'filter_add_metadata' ), $this->filter_priority, 4 );
101
- add_filter( 'get_post_metadata', array( $this, 'filter_get_metadata' ), $this->filter_priority, 4 );
102
- add_action( 'deleted_post', array( $this, 'remove_post_entry' ) );
103
  }
104
 
105
  /**
@@ -114,8 +114,8 @@ class Tribe__Meta__Chunker {
114
  return;
115
  }
116
 
117
- $this->chunks_cache = array();
118
- $this->post_ids_cache = array();
119
 
120
  $chunked_keys = get_option( $this->chunked_keys_option_name );
121
 
@@ -199,7 +199,7 @@ class Tribe__Meta__Chunker {
199
  $option = (array) get_option( $this->chunked_keys_option_name );
200
 
201
  if ( ! isset( $option[ $post_id ] ) ) {
202
- $option[ $post_id ] = array( $meta_key );
203
  } else {
204
  $option[ $post_id ][] = $meta_key;
205
  }
@@ -383,10 +383,10 @@ class Tribe__Meta__Chunker {
383
  protected function remove_checksum_for( $object_id, $meta_key ) {
384
  /** @var wpdb $wpdb */
385
  global $wpdb;
386
- $data = array(
387
  'post_id' => $object_id,
388
  'meta_key' => $this->get_checksum_key( $meta_key ),
389
- );
390
  $wpdb->delete( $wpdb->postmeta, $data );
391
  }
392
 
@@ -481,7 +481,7 @@ class Tribe__Meta__Chunker {
481
  */
482
  protected function prefix_chunks( array $chunks ) {
483
  $count = count( $chunks );
484
- $prefixed = array();
485
  for ( $i = 0; $i < $count; $i ++ ) {
486
  $prefixed[] = "{$i}{$this->chunk_separator}{$chunks[$i]}";
487
  }
@@ -525,21 +525,21 @@ class Tribe__Meta__Chunker {
525
  $chunk_meta_key = $this->get_chunk_meta_key( $meta_key );
526
  $this->insert_meta( $object_id, $meta_key, $chunks[0] );
527
  foreach ( $chunks as $chunk ) {
528
- $wpdb->insert( $wpdb->postmeta, array(
529
  'post_id' => $object_id,
530
  'meta_key' => $chunk_meta_key,
531
  'meta_value' => $chunk,
532
- ) );
533
  }
534
 
535
  $glued = $this->glue_chunks( $this->get_chunks_for( $object_id, $meta_key ) );
536
  $checksum_key = $this->get_checksum_key( $meta_key );
537
- $wpdb->delete( $wpdb->postmeta, array( 'post_id' => $object_id, 'meta_key' => $checksum_key ) );
538
- $wpdb->insert( $wpdb->postmeta, array(
539
  'post_id' => $object_id,
540
  'meta_key' => $checksum_key,
541
  'meta_value' => md5( $glued ),
542
- ) );
543
  }
544
 
545
  /**
@@ -554,11 +554,11 @@ class Tribe__Meta__Chunker {
554
  protected function insert_meta( $object_id, $meta_key, $meta_value ) {
555
  /** @var wpdb $wpdb */
556
  global $wpdb;
557
- $data = array(
558
  'post_id' => $object_id,
559
  'meta_key' => $meta_key,
560
  'meta_value' => maybe_serialize( $meta_value ),
561
- );
562
  $wpdb->insert( $wpdb->postmeta, $data );
563
  }
564
 
@@ -574,7 +574,7 @@ class Tribe__Meta__Chunker {
574
  * @see Tribe__Meta__Chunker::get_chunks_for()
575
  */
576
  public function glue_chunks( array $chunks ) {
577
- $ordered_chunks = array();
578
  foreach ( $chunks as $chunk ) {
579
  preg_match( '/(\\d+)' . preg_quote( $this->chunk_separator ) . '(.*)/', $chunk, $matches );
580
  $ordered_chunks[ $matches[1] ] = $matches[2];
@@ -614,7 +614,7 @@ class Tribe__Meta__Chunker {
614
  $object_id, $chunk_meta_key
615
  ) );
616
 
617
- $meta_values = array();
618
  foreach ( $meta_ids as $meta_id ) {
619
  $query = $wpdb->prepare( "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_id = %d", $meta_id );
620
  $meta_values[] = $wpdb->get_var( $query );
@@ -736,11 +736,11 @@ class Tribe__Meta__Chunker {
736
  * Unhooks the Chunker from the metadata operations.
737
  */
738
  public function unhook() {
739
- remove_filter( 'update_post_metadata', array( $this, 'filter_update_metadata' ), $this->filter_priority );
740
- remove_filter( 'delete_post_metadata', array( $this, 'filter_delete_metadata' ), $this->filter_priority );
741
- remove_filter( 'add_post_metadata', array( $this, 'filter_add_metadata' ), $this->filter_priority );
742
- remove_filter( 'get_post_metadata', array( $this, 'filter_get_metadata' ), $this->filter_priority );
743
- remove_action( 'deleted_post', array( $this, 'remove_post_entry' ) );
744
  }
745
 
746
  /**
@@ -813,25 +813,25 @@ class Tribe__Meta__Chunker {
813
  $all_meta = $this->get_all_meta( $object_id );
814
 
815
  if ( empty( $all_meta ) ) {
816
- return array();
817
  }
818
 
819
- $grouped = array();
820
  foreach ( $all_meta as $entry ) {
821
  if ( ! isset( $grouped[ $entry['meta_key'] ] ) ) {
822
- $grouped[ $entry['meta_key'] ] = array( $entry['meta_value'] );
823
  } else {
824
  $grouped[ $entry['meta_key'] ][] = $entry['meta_value'];
825
  }
826
  }
827
 
828
- $chunker_meta_keys = array_filter( array_keys( $grouped ), array( $this, 'is_chunker_logic_meta_key' ) );
829
 
830
  if ( empty( $chunker_meta_keys ) ) {
831
  return $grouped;
832
  }
833
 
834
- $checksum_keys = array_filter( $chunker_meta_keys, array( $this, 'is_chunker_checksum_key' ) );
835
 
836
  if ( empty( $checksum_keys ) ) {
837
  return $grouped;
@@ -840,14 +840,14 @@ class Tribe__Meta__Chunker {
840
  $chunker_meta = array_intersect_key( $grouped, array_combine( $chunker_meta_keys, $chunker_meta_keys ) );
841
  $normal_meta = array_diff_key( $grouped, array_combine( $chunker_meta_keys, $chunker_meta_keys ) );
842
  foreach ( $checksum_keys as $checksum_key ) {
843
- $normal_meta_key = str_replace( array( $this->meta_key_prefix, '_checksum' ), '', $checksum_key );
844
  $chunk_meta_key = $this->get_chunk_meta_key( $normal_meta_key );
845
 
846
  if ( empty( $chunker_meta[ $chunk_meta_key ] ) ) {
847
  continue;
848
  }
849
 
850
- $normal_meta[ $normal_meta_key ] = array( $this->glue_chunks( $chunker_meta[ $chunk_meta_key ] ) );
851
  }
852
 
853
  return $normal_meta;
@@ -881,7 +881,7 @@ class Tribe__Meta__Chunker {
881
  $query = $wpdb->prepare( "SELECT meta_key, meta_value FROM {$wpdb->postmeta} WHERE post_id = %d", $object_id );
882
  $results = $wpdb->get_results( $query, ARRAY_A );
883
 
884
- return ! empty( $results ) && is_array( $results ) ? $results : array();
885
  }
886
 
887
  /**
63
  /**
64
  * @var array The post types supported by the Chunker.
65
  */
66
+ protected $post_types = [];
67
 
68
  /**
69
  * @var int The filter priority at which Chunker will operate on meta CRUD operations.
95
  return;
96
  }
97
 
98
+ add_filter( 'update_post_metadata', [ $this, 'filter_update_metadata' ], $this->filter_priority, 4 );
99
+ add_filter( 'delete_post_metadata', [ $this, 'filter_delete_metadata' ], $this->filter_priority, 3 );
100
+ add_filter( 'add_post_metadata', [ $this, 'filter_add_metadata' ], $this->filter_priority, 4 );
101
+ add_filter( 'get_post_metadata', [ $this, 'filter_get_metadata' ], $this->filter_priority, 4 );
102
+ add_action( 'deleted_post', [ $this, 'remove_post_entry' ] );
103
  }
104
 
105
  /**
114
  return;
115
  }
116
 
117
+ $this->chunks_cache = [];
118
+ $this->post_ids_cache = [];
119
 
120
  $chunked_keys = get_option( $this->chunked_keys_option_name );
121
 
199
  $option = (array) get_option( $this->chunked_keys_option_name );
200
 
201
  if ( ! isset( $option[ $post_id ] ) ) {
202
+ $option[ $post_id ] = [ $meta_key ];
203
  } else {
204
  $option[ $post_id ][] = $meta_key;
205
  }
383
  protected function remove_checksum_for( $object_id, $meta_key ) {
384
  /** @var wpdb $wpdb */
385
  global $wpdb;
386
+ $data = [
387
  'post_id' => $object_id,
388
  'meta_key' => $this->get_checksum_key( $meta_key ),
389
+ ];
390
  $wpdb->delete( $wpdb->postmeta, $data );
391
  }
392
 
481
  */
482
  protected function prefix_chunks( array $chunks ) {
483
  $count = count( $chunks );
484
+ $prefixed = [];
485
  for ( $i = 0; $i < $count; $i ++ ) {
486
  $prefixed[] = "{$i}{$this->chunk_separator}{$chunks[$i]}";
487
  }
525
  $chunk_meta_key = $this->get_chunk_meta_key( $meta_key );
526
  $this->insert_meta( $object_id, $meta_key, $chunks[0] );
527
  foreach ( $chunks as $chunk ) {
528
+ $wpdb->insert( $wpdb->postmeta, [
529
  'post_id' => $object_id,
530
  'meta_key' => $chunk_meta_key,
531
  'meta_value' => $chunk,
532
+ ] );
533
  }
534
 
535
  $glued = $this->glue_chunks( $this->get_chunks_for( $object_id, $meta_key ) );
536
  $checksum_key = $this->get_checksum_key( $meta_key );
537
+ $wpdb->delete( $wpdb->postmeta, [ 'post_id' => $object_id, 'meta_key' => $checksum_key ] );
538
+ $wpdb->insert( $wpdb->postmeta, [
539
  'post_id' => $object_id,
540
  'meta_key' => $checksum_key,
541
  'meta_value' => md5( $glued ),
542
+ ] );
543
  }
544
 
545
  /**
554
  protected function insert_meta( $object_id, $meta_key, $meta_value ) {
555
  /** @var wpdb $wpdb */
556
  global $wpdb;
557
+ $data = [
558
  'post_id' => $object_id,
559
  'meta_key' => $meta_key,
560
  'meta_value' => maybe_serialize( $meta_value ),
561
+ ];
562
  $wpdb->insert( $wpdb->postmeta, $data );
563
  }
564
 
574
  * @see Tribe__Meta__Chunker::get_chunks_for()
575
  */
576
  public function glue_chunks( array $chunks ) {
577
+ $ordered_chunks = [];
578
  foreach ( $chunks as $chunk ) {
579
  preg_match( '/(\\d+)' . preg_quote( $this->chunk_separator ) . '(.*)/', $chunk, $matches );
580
  $ordered_chunks[ $matches[1] ] = $matches[2];
614
  $object_id, $chunk_meta_key
615
  ) );
616
 
617
+ $meta_values = [];
618
  foreach ( $meta_ids as $meta_id ) {
619
  $query = $wpdb->prepare( "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_id = %d", $meta_id );
620
  $meta_values[] = $wpdb->get_var( $query );
736
  * Unhooks the Chunker from the metadata operations.
737
  */
738
  public function unhook() {
739
+ remove_filter( 'update_post_metadata', [ $this, 'filter_update_metadata' ], $this->filter_priority );
740
+ remove_filter( 'delete_post_metadata', [ $this, 'filter_delete_metadata' ], $this->filter_priority );
741
+ remove_filter( 'add_post_metadata', [ $this, 'filter_add_metadata' ], $this->filter_priority );
742
+ remove_filter( 'get_post_metadata', [ $this, 'filter_get_metadata' ], $this->filter_priority );
743
+ remove_action( 'deleted_post', [ $this, 'remove_post_entry' ] );
744
  }
745
 
746
  /**
813
  $all_meta = $this->get_all_meta( $object_id );
814
 
815
  if ( empty( $all_meta ) ) {
816
+ return [];
817
  }
818
 
819
+ $grouped = [];
820
  foreach ( $all_meta as $entry ) {
821
  if ( ! isset( $grouped[ $entry['meta_key'] ] ) ) {
822
+ $grouped[ $entry['meta_key'] ] = [ $entry['meta_value'] ];
823
  } else {
824
  $grouped[ $entry['meta_key'] ][] = $entry['meta_value'];
825
  }
826
  }
827
 
828
+ $chunker_meta_keys = array_filter( array_keys( $grouped ), [ $this, 'is_chunker_logic_meta_key' ] );
829
 
830
  if ( empty( $chunker_meta_keys ) ) {
831
  return $grouped;
832
  }
833
 
834
+ $checksum_keys = array_filter( $chunker_meta_keys, [ $this, 'is_chunker_checksum_key' ] );
835
 
836
  if ( empty( $checksum_keys ) ) {
837
  return $grouped;
840
  $chunker_meta = array_intersect_key( $grouped, array_combine( $chunker_meta_keys, $chunker_meta_keys ) );
841
  $normal_meta = array_diff_key( $grouped, array_combine( $chunker_meta_keys, $chunker_meta_keys ) );
842
  foreach ( $checksum_keys as $checksum_key ) {
843
+ $normal_meta_key = str_replace( [ $this->meta_key_prefix, '_checksum' ], '', $checksum_key );
844
  $chunk_meta_key = $this->get_chunk_meta_key( $normal_meta_key );
845
 
846
  if ( empty( $chunker_meta[ $chunk_meta_key ] ) ) {
847
  continue;
848
  }
849
 
850
+ $normal_meta[ $normal_meta_key ] = [ $this->glue_chunks( $chunker_meta[ $chunk_meta_key ] ) ];
851
  }
852
 
853
  return $normal_meta;
881
  $query = $wpdb->prepare( "SELECT meta_key, meta_value FROM {$wpdb->postmeta} WHERE post_id = %d", $object_id );
882
  $results = $wpdb->get_results( $query, ARRAY_A );
883
 
884
+ return ! empty( $results ) && is_array( $results ) ? $results : [];
885
  }
886
 
887
  /**
common/src/Tribe/Notices.php CHANGED
@@ -5,7 +5,7 @@ class Tribe__Notices {
5
  * Notices to be displayed in the admin
6
  * @var array
7
  */
8
- protected $notices = array();
9
 
10
  /**
11
  * Define an admin notice
5
  * Notices to be displayed in the admin
6
  * @var array
7
  */
8
+ protected $notices = [];
9
 
10
  /**
11
  * Define an admin notice
common/src/Tribe/PUE/Notices.php CHANGED
@@ -10,9 +10,9 @@ class Tribe__PUE__Notices {
10
  const EXPIRED_KEY = 'expired_key';
11
  const STORE_KEY = 'tribe_pue_key_notices';
12
 
13
- protected $registered = array();
14
- protected $saved_notices = array();
15
- protected $notices = array();
16
 
17
  protected $plugin_names = [
18
  'pue_install_key_event_tickets_plus' => 'Event Tickets Plus',
@@ -30,8 +30,8 @@ class Tribe__PUE__Notices {
30
  */
31
  public function __construct() {
32
  $this->populate();
33
- add_action( 'current_screen', array( $this, 'setup_notices' ) );
34
- add_action( 'tribe_pue_notices_save_notices', array( $this, 'maybe_undismiss_notices' ) );
35
  }
36
 
37
  /**
@@ -53,7 +53,7 @@ class Tribe__PUE__Notices {
53
  * groups.
54
  */
55
  protected function populate() {
56
- $this->saved_notices = (array) get_option( self::STORE_KEY, array() );
57
 
58
  if ( empty( $this->saved_notices ) ) {
59
  return;
@@ -193,7 +193,7 @@ class Tribe__PUE__Notices {
193
  */
194
  public function setup_notices() {
195
  // Don't allow this to run multiple times
196
- remove_action( 'current_screen', array( $this, 'setup_notices' ) );
197
 
198
  // No need to display license key notices to users without appropriate capabilities
199
  if ( ! current_user_can( 'install_plugins' ) ) {
@@ -205,7 +205,7 @@ class Tribe__PUE__Notices {
205
  continue;
206
  }
207
 
208
- $callback = array( $this, 'render_' . $notice_type );
209
 
210
  if ( is_callable( $callback ) ) {
211
  tribe_notice( 'pue_key-' . $notice_type, $callback, 'dismiss=1&type=warning' );
@@ -237,9 +237,9 @@ class Tribe__PUE__Notices {
237
 
238
  $empty_keys = $wpdb->get_results( $sql, ARRAY_N );
239
 
240
- $formatted_empty_keys = array();
241
  foreach ( $empty_keys as $empty_key ) {
242
- $empty_key = Tribe__Utils__Array::get( $empty_key, array( 0 ) );
243
  $formatted_empty_keys[] = Tribe__Utils__Array::get( $this->plugin_names, $empty_key );
244
  }
245
 
@@ -380,7 +380,7 @@ class Tribe__PUE__Notices {
380
  protected function render_notice( $slug, $inner_html ) {
381
 
382
  // Enqueue the notice CSS.
383
- tribe( 'assets' )->enqueue( array( 'tribe-common-admin' ) );
384
 
385
  $mascot = esc_url( Tribe__Main::instance()->plugin_url . 'src/resources/images/mascot.png' );
386
 
10
  const EXPIRED_KEY = 'expired_key';
11
  const STORE_KEY = 'tribe_pue_key_notices';
12
 
13
+ protected $registered = [];
14
+ protected $saved_notices = [];
15
+ protected $notices = [];
16
 
17
  protected $plugin_names = [
18
  'pue_install_key_event_tickets_plus' => 'Event Tickets Plus',
30
  */
31
  public function __construct() {
32
  $this->populate();
33
+ add_action( 'current_screen', [ $this, 'setup_notices' ] );
34
+ add_action( 'tribe_pue_notices_save_notices', [ $this, 'maybe_undismiss_notices' ] );
35
  }
36
 
37
  /**
53
  * groups.
54
  */
55
  protected function populate() {
56
+ $this->saved_notices = (array) get_option( self::STORE_KEY, [] );
57
 
58
  if ( empty( $this->saved_notices ) ) {
59
  return;
193
  */
194
  public function setup_notices() {
195
  // Don't allow this to run multiple times
196
+ remove_action( 'current_screen', [ $this, 'setup_notices' ] );
197
 
198
  // No need to display license key notices to users without appropriate capabilities
199
  if ( ! current_user_can( 'install_plugins' ) ) {
205
  continue;
206
  }
207
 
208
+ $callback = [ $this, 'render_' . $notice_type ];
209
 
210
  if ( is_callable( $callback ) ) {
211
  tribe_notice( 'pue_key-' . $notice_type, $callback, 'dismiss=1&type=warning' );
237
 
238
  $empty_keys = $wpdb->get_results( $sql, ARRAY_N );
239
 
240
+ $formatted_empty_keys = [];
241
  foreach ( $empty_keys as $empty_key ) {
242
+ $empty_key = Tribe__Utils__Array::get( $empty_key, [ 0 ] );
243
  $formatted_empty_keys[] = Tribe__Utils__Array::get( $this->plugin_names, $empty_key );
244
  }
245
 
380
  protected function render_notice( $slug, $inner_html ) {
381
 
382
  // Enqueue the notice CSS.
383
+ tribe( 'assets' )->enqueue( [ 'tribe-common-admin' ] );
384
 
385
  $mascot = esc_url( Tribe__Main::instance()->plugin_url . 'src/resources/images/mascot.png' );
386
 
common/src/Tribe/PUE/Package_Handler.php CHANGED
@@ -102,7 +102,7 @@ class Tribe__PUE__Package_Handler {
102
  protected function download( $package ) {
103
  if ( empty( $this->filesystem ) ) {
104
  // try to connect
105
- $this->upgrader->fs_connect( array( WP_CONTENT_DIR, WP_PLUGIN_DIR ) );
106
 
107
  global $wp_filesystem;
108
 
102
  protected function download( $package ) {
103
  if ( empty( $this->filesystem ) ) {
104
  // try to connect
105
+ $this->upgrader->fs_connect( [ WP_CONTENT_DIR, WP_PLUGIN_DIR ] );
106
 
107
  global $wp_filesystem;
108
 
common/src/Tribe/PUE/Plugin_Info.php CHANGED
@@ -93,8 +93,7 @@ if ( ! class_exists( 'Tribe__PUE__Plugin_Info' ) ) {
93
 
94
  // The custom update API is built so that many fields have the same name and format
95
  // as those returned by the native WordPress.org API. These can be assigned directly.
96
-
97
- $sameFormat = array(
98
  'name',
99
  'slug',
100
  'version',
@@ -109,7 +108,8 @@ if ( ! class_exists( 'Tribe__PUE__Plugin_Info' ) ) {
109
  'api_expired',
110
  'api_upgrade',
111
  'api_invalid',
112
- );
 
113
  foreach ( $sameFormat as $field ) {
114
  if ( isset( $this->$field ) ) {
115
  $info->$field = $this->$field;
@@ -132,7 +132,7 @@ if ( ! class_exists( 'Tribe__PUE__Plugin_Info' ) ) {
132
  } elseif ( is_array( $this->sections ) ) {
133
  $info->sections = $this->sections;
134
  } else {
135
- $info->sections = array( 'description' => '' );
136
  }
137
 
138
  return $info;
93
 
94
  // The custom update API is built so that many fields have the same name and format
95
  // as those returned by the native WordPress.org API. These can be assigned directly.
96
+ $sameFormat = [
 
97
  'name',
98
  'slug',
99
  'version',
108
  'api_expired',
109
  'api_upgrade',
110
  'api_invalid',
111
+ ];
112
+
113
  foreach ( $sameFormat as $field ) {
114
  if ( isset( $this->$field ) ) {
115
  $info->$field = $this->$field;
132
  } elseif ( is_array( $this->sections ) ) {
133
  $info->sections = $this->sections;
134
  } else {
135
+ $info->sections = [ 'description' => '' ];
136
  }
137
 
138
  return $info;
common/src/Tribe/PUE/Utility.php CHANGED
@@ -28,7 +28,7 @@ if ( ! class_exists( 'Tribe__PUE__Utility' ) ) {
28
  public $version;
29
  public $homepage;
30
  public $download_url;
31
- public $sections = array();
32
  public $upgrade_notice;
33
  public $custom_update;
34
 
@@ -61,7 +61,7 @@ if ( ! class_exists( 'Tribe__PUE__Utility' ) ) {
61
  */
62
  public static function from_plugin_info( $info ) {
63
  $update = new Tribe__PUE__Utility();
64
- $copyFields = array(
65
  'id',
66
  'slug',
67
  'version',
@@ -76,7 +76,7 @@ if ( ! class_exists( 'Tribe__PUE__Utility' ) ) {
76
  'api_invalid_message',
77
  'api_inline_invalid_message',
78
  'custom_update',
79
- );
80
 
81
  foreach ( $copyFields as $field ) {
82
  if ( ! isset( $info->$field ) ) {
28
  public $version;
29
  public $homepage;
30
  public $download_url;
31
+ public $sections = [];
32
  public $upgrade_notice;
33
  public $custom_update;
34
 
61
  */
62
  public static function from_plugin_info( $info ) {
63
  $update = new Tribe__PUE__Utility();
64
+ $copyFields = [
65
  'id',
66
  'slug',
67
  'version',
76
  'api_invalid_message',
77
  'api_inline_invalid_message',
78
  'custom_update',
79
+ ];
80
 
81
  foreach ( $copyFields as $field ) {
82
  if ( ! isset( $info->$field ) ) {
common/src/Tribe/Plugin_Meta_Links.php CHANGED
@@ -30,7 +30,7 @@ class Tribe__Plugin_Meta_Links {
30
  * }
31
  * }
32
  */
33
- private $meta_links = array();
34
 
35
  /**
36
  * Returns the singleton instance of this class.
@@ -42,7 +42,7 @@ class Tribe__Plugin_Meta_Links {
42
  }
43
 
44
  private function __construct() {
45
- add_action( 'plugin_row_meta', array( $this, 'filter_meta_links' ), 10, 2 );
46
  }
47
 
48
  /**
@@ -53,7 +53,7 @@ class Tribe__Plugin_Meta_Links {
53
  * @param string $href URL for the link.
54
  * @param array $attributes Key => value attributes for element.
55
  */
56
- public function add_link( $plugin, $title, $href, $attributes = array() ) {
57
  $attributes['href'] = $href;
58
 
59
  // Build the <a> element.
@@ -79,12 +79,12 @@ class Tribe__Plugin_Meta_Links {
79
  $basename = plugin_basename( $plugin );
80
 
81
  // Get any current links for this plugin.
82
- $cur_links = Tribe__Utils__Array::get( $this->meta_links, $basename, array() );
83
 
84
- $cur_links[] = array(
85
- 'html' => $html,
86
  'remove' => $remove,
87
- );
88
 
89
  $this->meta_links = Tribe__Utils__Array::set( $this->meta_links, $basename, $cur_links );
90
  }
@@ -99,7 +99,7 @@ class Tribe__Plugin_Meta_Links {
99
  */
100
  public function filter_meta_links( $links, $basename ) {
101
  // Gets any links that are set for this plugin, defaults to an empty array.
102
- $set_links = Tribe__Utils__Array::get( $this->meta_links, $basename, array() );
103
 
104
  foreach ( $set_links as $link ) {
105
 
30
  * }
31
  * }
32
  */
33
+ private $meta_links = [];
34
 
35
  /**
36
  * Returns the singleton instance of this class.
42
  }
43
 
44
  private function __construct() {
45
+ add_action( 'plugin_row_meta', [ $this, 'filter_meta_links' ], 10, 2 );
46
  }
47
 
48
  /**
53
  * @param string $href URL for the link.
54
  * @param array $attributes Key => value attributes for element.
55
  */
56
+ public function add_link( $plugin, $title, $href, $attributes = [] ) {
57
  $attributes['href'] = $href;
58
 
59
  // Build the <a> element.
79
  $basename = plugin_basename( $plugin );
80
 
81
  // Get any current links for this plugin.
82
+ $cur_links = Tribe__Utils__Array::get( $this->meta_links, $basename, [] );
83
 
84
+ $cur_links[] = [
85
+ 'html' => $html,
86
  'remove' => $remove,
87
+ ];
88
 
89
  $this->meta_links = Tribe__Utils__Array::set( $this->meta_links, $basename, $cur_links );
90
  }
99
  */
100
  public function filter_meta_links( $links, $basename ) {
101
  // Gets any links that are set for this plugin, defaults to an empty array.
102
+ $set_links = Tribe__Utils__Array::get( $this->meta_links, $basename, [] );
103
 
104
  foreach ( $set_links as $link ) {
105
 
common/src/Tribe/Plugins_API.php CHANGED
@@ -20,213 +20,213 @@ class Tribe__Plugins_API {
20
  * @return array
21
  */
22
  public function get_products() {
23
- $products = array(
24
- 'the-events-calendar' => array(
25
- 'title' => __( 'The Events Calendar', 'tribe-common' ),
26
- 'slug' => 'the-events-calendar',
27
- 'link' => 'https://m.tri.be/1ai-',
28
- 'description' => __( 'Our flagship free calendar', 'tribe-common' ),
29
- 'features' => [
30
  __( 'Customizable', 'tribe-common' ),
31
  __( 'Import & export events', 'tribe-common' ),
32
  __( 'Timezone support', 'tribe-common' ),
33
  __( 'Multiple views', 'tribe-common' ),
34
  ],
35
- 'image' => 'images/shop/calendar.jpg',
36
- 'logo' => 'images/logo/the-events-calendar.svg',
37
- 'is_installed' => class_exists( 'Tribe__Events__Main' ),
38
- 'free' => true,
39
  'active_installs' => 800000,
40
- ),
41
- 'event-aggregator' => array(
42
- 'title' => __( 'Event Aggregator', 'tribe-common' ),
43
- 'slug' => 'event-aggregator',
44
- 'link' => 'https://m.tri.be/1aj0',
45
- 'description' => __( 'Automated imports for your calendar', 'tribe-common' ),
46
- 'features' => [
47
  __( 'Schedule automated imports', 'tribe-common' ),
48
  __( 'Customizable', 'tribe-common' ),
49
  __( 'Works with Google Calendar, Meetup, and more', 'tribe-common' ),
50
  __( 'Refine by date, location, or keyword', 'tribe-common' ),
51
  ],
52
- 'image' => 'images/shop/aggregator.jpg',
53
- 'logo' => 'images/logo/event-aggregator.svg',
54
- 'is_installed' => class_exists( 'Tribe__Events__Aggregator' ) && Tribe__Events__Aggregator::is_service_active(),
55
- 'free' => false,
56
  'active_installs' => 20000,
57
- ),
58
- 'events-calendar-pro' => array(
59
- 'title' => __( 'Events Calendar Pro', 'tribe-common' ),
60
- 'slug' => 'events-calendar-pro',
61
- 'link' => 'https://m.tri.be/1ai-',
62
- 'description' => __( 'Power up your calendar with Pro', 'tribe-common' ),
63
- 'features' => [
64
  __( 'Premium support', 'tribe-common' ),
65
  __( 'Recurring events', 'tribe-common' ),
66
  __( 'Additional views', 'tribe-common' ),
67
  __( 'Shortcodes', 'tribe-common' ),
68
  ],
69
- 'image' => 'images/shop/pro.jpg',
70
- 'logo' => 'images/logo/events-calendar-pro.svg',
71
- 'is_installed' => class_exists( 'Tribe__Events__Pro__Main' ),
72
- 'free' => false,
73
  'active_installs' => 100000,
74
- ),
75
- 'event-tickets' => array(
76
- 'title' => __( 'Event Tickets', 'tribe-common' ),
77
- 'slug' => 'event-tickets',
78
- 'link' => 'https://m.tri.be/1aj1',
79
- 'description' => __( 'Manage ticketing and RSVPs', 'tribe-common' ),
80
- 'features' => [
81
  __( 'Add tickets and RSVP to any post', 'tribe-common' ),
82
  __( 'Paypal integration', 'tribe-common' ),
83
  __( 'Attendee reports', 'tribe-common' ),
84
  __( 'Customizable ticket template', 'tribe-common' ),
85
  ],
86
- 'image' => 'images/shop/tickets.jpg',
87
- 'logo' => 'images/logo/event-tickets.svg',
88
- 'is_installed' => class_exists( 'Tribe__Tickets__Main' ),
89
- 'free' => true,
90
  'active_installs' => 20000,
91
- ),
92
- 'event-tickets-plus' => array(
93
- 'title' => __( 'Event Tickets Plus', 'tribe-common' ),
94
- 'slug' => 'event-tickets-plus',
95
- 'link' => 'http://m.tri.be/1aj1',
96
- 'description' => __( 'Monetize your events', 'tribe-common' ),
97
- 'features' => [
98
  __( 'Custom registration fields', 'tribe-common' ),
99
  __( 'WooCommerce compatibility', 'tribe-common' ),
100
  __( 'Ticket scanning with mobile app', 'tribe-common' ),
101
  __( 'Custom attendee registration fields', 'tribe-common' ),
102
  ],
103
- 'image' => 'images/shop/tickets-plus.jpg',
104
- 'logo' => 'images/logo/event-tickets-plus.svg',
105
- 'is_installed' => class_exists( 'Tribe__Tickets_Plus__Main' ),
106
- 'free' => false,
107
  'active_installs' => 10000,
108
- ),
109
- 'promoter' => array(
110
- 'title' => __( 'Promoter', 'tribe-common' ),
111
- 'slug' => 'promoter',
112
- 'link' => 'https://m.tri.be/1acy',
113
- 'description' => __( 'An email marketing solution for events and the people running them', 'tribe-common' ),
114
- 'features' => [
115
  __( 'Automate email touchpoints', 'tribe-common' ),
116
  __( 'Customize email templates', 'tribe-common' ),
117
  __( 'Streamline your email process', 'tribe-common' ),
118
  __( 'Segment your attendee lists', 'tribe-common' ),
119
  ],
120
- 'image' => 'images/shop/promoter.jpg',
121
- 'logo' => 'images/logo/promoter.svg',
122
- 'is_installed' => tribe( 'promoter.pue' )->has_license_key(),
123
- 'free' => false,
124
  'active_installs' => 1000,
125
- ),
126
- 'tribe-filterbar' => array(
127
- 'title' => __( 'Filter Bar', 'tribe-common' ),
128
- 'slug' => 'tribe-filterbar',
129
- 'link' => 'https://m.tri.be/19o6',
130
- 'description' => __( 'Help users find exactly the right event', 'tribe-common' ),
131
- 'features' => [
132
  __( 'Configurable set of filters', 'tribe-common' ),
133
  __( 'Horizontal or vertical', 'tribe-common' ),
134
  __( 'Filter category, price, and more', 'tribe-common' ),
135
  __( 'Filter distance (for Events Calendar Pro)', 'tribe-common' ),
136
  ],
137
- 'image' => 'images/shop/filter-bar.jpg',
138
- 'logo' => 'images/logo/filterbar.svg',
139
- 'is_installed' => class_exists( 'Tribe__Events__Filterbar__View' ),
140
- 'free' => false,
141
  'active_installs' => 20000,
142
- ),
143
- 'events-community' => array(
144
- 'title' => __( 'Community Events', 'tribe-common' ),
145
- 'slug' => 'events-community',
146
- 'link' => 'https://m.tri.be/19o7',
147
- 'description' => __( 'Users submit events to your calendar', 'tribe-common' ),
148
- 'features' => [
149
  __( 'Publishing Control', 'tribe-common' ),
150
  __( 'Event Submission Form', 'tribe-common' ),
151
  __( 'Registered User Settings', 'tribe-common' ),
152
  __( 'Email notifications', 'tribe-common' ),
153
  ],
154
- 'image' => 'images/shop/community.jpg',
155
- 'logo' => 'images/logo/community-events.svg',
156
- 'is_installed' => class_exists( 'Tribe__Events__Community__Main' ),
157
- 'free' => false,
158
  'active_installs' => 20000,
159
- ),
160
- 'events-community-tickets' => array(
161
- 'title' => __( 'Community Tickets', 'tribe-common' ),
162
- 'slug' => 'events-community-tickets',
163
- 'link' => 'https://m.tri.be/19o8',
164
- 'description' => __( 'Run your own events marketplace', 'tribe-common' ),
165
- 'features' => [
166
  __( 'Users submit events and sell tickets', 'tribe-common' ),
167
  __( 'Split commission with users', 'tribe-common' ),
168
  __( 'No admin access required', 'tribe-common' ), /* code review: fail this */
169
  __( 'Sales reporting', 'tribe-common' ),
170
  ],
171
- 'requires' => _x( 'Event Tickets Plus and Community Events', 'Names of required plugins for Community Tickets', 'tribe-common' ),
172
- 'image' => 'images/shop/community-tickets.jpg',
173
- 'logo' => 'images/logo/community-tickets.svg',
174
- 'is_installed' => class_exists( 'Tribe__Events__Community__Tickets__Main' ),
175
- 'free' => false,
176
  'active_installs' => 10000,
177
- ),
178
- 'tribe-eventbrite' => array(
179
- 'title' => __( 'Eventbrite Tickets', 'tribe-common' ),
180
- 'slug' => 'tribe-eventbrite',
181
- 'link' => 'https://m.tri.be/19o9',
182
- 'description' => __( 'Unite the power of TEC with the ticketing of Eventbrite', 'tribe-common' ),
183
- 'features' => [
184
  __( 'Manage tickets from WordPress', 'tribe-common' ),
185
  __( 'Ticket availability automatically updates', 'tribe-common' ),
186
  __( 'Integrated with your events on Eventbrite', 'tribe-common' ),
187
  __( 'Automatically import your events', 'tribe-common' ),
188
  ],
189
- 'image' => 'images/shop/eventbrite.jpg',
190
- 'logo' => 'images/logo/eventbrite-tickets.svg',
191
- 'is_installed' => class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ),
192
- 'free' => false,
193
  'active_installs' => 20000,
194
- ),
195
- 'image-widget-plus' => array(
196
- 'title' => __( 'Image Widget Plus', 'tribe-common' ),
197
- 'slug' => 'image-widget-plus',
198
- 'link' => 'https://m.tri.be/19nv',
199
- 'description' => __( 'Beautiful display options for your favorite photos.', 'tribe-common' ),
200
- 'features' => [
201
  __( 'Multi-Image Support', 'tribe-common' ),
202
  __( 'Lightbox', 'tribe-common' ),
203
  __( 'Slideshow', 'tribe-common' ),
204
  __( 'Random Images', 'tribe-common' ),
205
  ],
206
- 'image' => 'images/shop/image-widget-plus.jpg',
207
- 'logo' => 'images/logo/image-widget-plus.svg',
208
- 'is_installed' => class_exists( 'Tribe__Image__Plus__Main' ),
209
- 'free' => false,
210
  'active_installs' => 2500,
211
- ),
212
- 'events-virtual' => array(
213
- 'title' => __( 'Virtual Events', 'tribe-common' ),
214
- 'slug' => 'events-virtual',
215
- 'link' => 'http://m.tri.be/virtual-events',
216
- 'description' => __( 'Features to optimize your calendar for virtual events.', 'tribe-common' ),
217
- 'features' => [
218
  __( 'Zoom integration', 'tribe-common' ),
219
  __( 'Virtual event labels', 'tribe-common' ),
220
  __( 'Status control for canceled or postponed events', 'tribe-common' ),
221
  __( 'Embed livestreams and videos', 'tribe-common' ),
222
  ],
223
- 'image' => 'images/shop/virtual-events.jpg',
224
- 'logo' => 'images/logo/virtual-events.svg',
225
- 'is_installed' => defined( 'EVENTS_VIRTUAL_FILE' ),
226
- 'free' => false,
227
  'active_installs' => 2500,
228
- ),
229
- );
230
 
231
  return $products;
232
  }
20
  * @return array
21
  */
22
  public function get_products() {
23
+ $products = [
24
+ 'the-events-calendar' => [
25
+ 'title' => __( 'The Events Calendar', 'tribe-common' ),
26
+ 'slug' => 'the-events-calendar',
27
+ 'link' => 'https://m.tri.be/1ai-',
28
+ 'description' => __( 'Our flagship free calendar', 'tribe-common' ),
29
+ 'features' => [
30
  __( 'Customizable', 'tribe-common' ),
31
  __( 'Import & export events', 'tribe-common' ),
32
  __( 'Timezone support', 'tribe-common' ),
33
  __( 'Multiple views', 'tribe-common' ),
34
  ],
35
+ 'image' => 'images/shop/calendar.jpg',
36
+ 'logo' => 'images/logo/the-events-calendar.svg',
37
+ 'is_installed' => class_exists( 'Tribe__Events__Main' ),
38
+ 'free' => true,
39
  'active_installs' => 800000,
40
+ ],
41
+ 'event-aggregator' => [
42
+ 'title' => __( 'Event Aggregator', 'tribe-common' ),
43
+ 'slug' => 'event-aggregator',
44
+ 'link' => 'https://m.tri.be/1aj0',
45
+ 'description' => __( 'Automated imports for your calendar', 'tribe-common' ),
46
+ 'features' => [
47
  __( 'Schedule automated imports', 'tribe-common' ),
48
  __( 'Customizable', 'tribe-common' ),
49
  __( 'Works with Google Calendar, Meetup, and more', 'tribe-common' ),
50
  __( 'Refine by date, location, or keyword', 'tribe-common' ),
51
  ],
52
+ 'image' => 'images/shop/aggregator.jpg',
53
+ 'logo' => 'images/logo/event-aggregator.svg',
54
+ 'is_installed' => class_exists( 'Tribe__Events__Aggregator' ) && Tribe__Events__Aggregator::is_service_active(),
55
+ 'free' => false,
56
  'active_installs' => 20000,
57
+ ],
58
+ 'events-calendar-pro' => [
59
+ 'title' => __( 'Events Calendar Pro', 'tribe-common' ),
60
+ 'slug' => 'events-calendar-pro',
61
+ 'link' => 'https://m.tri.be/1ai-',
62
+ 'description' => __( 'Power up your calendar with Pro', 'tribe-common' ),
63
+ 'features' => [
64
  __( 'Premium support', 'tribe-common' ),
65
  __( 'Recurring events', 'tribe-common' ),
66
  __( 'Additional views', 'tribe-common' ),
67
  __( 'Shortcodes', 'tribe-common' ),
68
  ],
69
+ 'image' => 'images/shop/pro.jpg',
70
+ 'logo' => 'images/logo/events-calendar-pro.svg',
71
+ 'is_installed' => class_exists( 'Tribe__Events__Pro__Main' ),
72
+ 'free' => false,
73
  'active_installs' => 100000,
74
+ ],
75
+ 'event-tickets' => [
76
+ 'title' => __( 'Event Tickets', 'tribe-common' ),
77
+ 'slug' => 'event-tickets',
78
+ 'link' => 'https://m.tri.be/1aj1',
79
+ 'description' => __( 'Manage ticketing and RSVPs', 'tribe-common' ),
80
+ 'features' => [
81
  __( 'Add tickets and RSVP to any post', 'tribe-common' ),
82
  __( 'Paypal integration', 'tribe-common' ),
83
  __( 'Attendee reports', 'tribe-common' ),
84
  __( 'Customizable ticket template', 'tribe-common' ),
85
  ],
86
+ 'image' => 'images/shop/tickets.jpg',
87
+ 'logo' => 'images/logo/event-tickets.svg',
88
+ 'is_installed' => class_exists( 'Tribe__Tickets__Main' ),
89
+ 'free' => true,
90
  'active_installs' => 20000,
91
+ ],
92
+ 'event-tickets-plus' => [
93
+ 'title' => __( 'Event Tickets Plus', 'tribe-common' ),
94
+ 'slug' => 'event-tickets-plus',
95
+ 'link' => 'http://m.tri.be/1aj1',
96
+ 'description' => __( 'Monetize your events', 'tribe-common' ),
97
+ 'features' => [
98
  __( 'Custom registration fields', 'tribe-common' ),
99
  __( 'WooCommerce compatibility', 'tribe-common' ),
100
  __( 'Ticket scanning with mobile app', 'tribe-common' ),
101
  __( 'Custom attendee registration fields', 'tribe-common' ),
102
  ],
103
+ 'image' => 'images/shop/tickets-plus.jpg',
104
+ 'logo' => 'images/logo/event-tickets-plus.svg',
105
+ 'is_installed' => class_exists( 'Tribe__Tickets_Plus__Main' ),
106
+ 'free' => false,
107
  'active_installs' => 10000,
108
+ ],
109
+ 'promoter' => [
110
+ 'title' => __( 'Promoter', 'tribe-common' ),
111
+ 'slug' => 'promoter',
112
+ 'link' => 'https://m.tri.be/1acy',
113
+ 'description' => __( 'An email marketing solution for events and the people running them', 'tribe-common' ),
114
+ 'features' => [
115
  __( 'Automate email touchpoints', 'tribe-common' ),
116
  __( 'Customize email templates', 'tribe-common' ),
117
  __( 'Streamline your email process', 'tribe-common' ),
118
  __( 'Segment your attendee lists', 'tribe-common' ),
119
  ],
120
+ 'image' => 'images/shop/promoter.jpg',
121
+ 'logo' => 'images/logo/promoter.svg',
122
+ 'is_installed' => tribe( 'promoter.pue' )->has_license_key(),
123
+ 'free' => false,
124
  'active_installs' => 1000,
125
+ ],
126
+ 'tribe-filterbar' => [
127
+ 'title' => __( 'Filter Bar', 'tribe-common' ),
128
+ 'slug' => 'tribe-filterbar',
129
+ 'link' => 'https://m.tri.be/19o6',
130
+ 'description' => __( 'Help users find exactly the right event', 'tribe-common' ),
131
+ 'features' => [
132
  __( 'Configurable set of filters', 'tribe-common' ),
133
  __( 'Horizontal or vertical', 'tribe-common' ),
134
  __( 'Filter category, price, and more', 'tribe-common' ),
135
  __( 'Filter distance (for Events Calendar Pro)', 'tribe-common' ),
136
  ],
137
+ 'image' => 'images/shop/filter-bar.jpg',
138
+ 'logo' => 'images/logo/filterbar.svg',
139
+ 'is_installed' => class_exists( 'Tribe__Events__Filterbar__View' ),
140
+ 'free' => false,
141
  'active_installs' => 20000,
142
+ ],
143
+ 'events-community' => [
144
+ 'title' => __( 'Community Events', 'tribe-common' ),
145
+ 'slug' => 'events-community',
146
+ 'link' => 'https://m.tri.be/19o7',
147
+ 'description' => __( 'Users submit events to your calendar', 'tribe-common' ),
148
+ 'features' => [
149
  __( 'Publishing Control', 'tribe-common' ),
150
  __( 'Event Submission Form', 'tribe-common' ),
151
  __( 'Registered User Settings', 'tribe-common' ),
152
  __( 'Email notifications', 'tribe-common' ),
153
  ],
154
+ 'image' => 'images/shop/community.jpg',
155
+ 'logo' => 'images/logo/community-events.svg',
156
+ 'is_installed' => class_exists( 'Tribe__Events__Community__Main' ),
157
+ 'free' => false,
158
  'active_installs' => 20000,
159
+ ],
160
+ 'events-community-tickets' => [
161
+ 'title' => __( 'Community Tickets', 'tribe-common' ),
162
+ 'slug' => 'events-community-tickets',
163
+ 'link' => 'https://m.tri.be/19o8',
164
+ 'description' => __( 'Run your own events marketplace', 'tribe-common' ),
165
+ 'features' => [
166
  __( 'Users submit events and sell tickets', 'tribe-common' ),
167
  __( 'Split commission with users', 'tribe-common' ),
168
  __( 'No admin access required', 'tribe-common' ), /* code review: fail this */
169
  __( 'Sales reporting', 'tribe-common' ),
170
  ],
171
+ 'requires' => _x( 'Event Tickets Plus and Community Events', 'Names of required plugins for Community Tickets', 'tribe-common' ),
172
+ 'image' => 'images/shop/community-tickets.jpg',
173
+ 'logo' => 'images/logo/community-tickets.svg',
174
+ 'is_installed' => class_exists( 'Tribe__Events__Community__Tickets__Main' ),
175
+ 'free' => false,
176
  'active_installs' => 10000,
177
+ ],
178
+ 'tribe-eventbrite' => [
179
+ 'title' => __( 'Eventbrite Tickets', 'tribe-common' ),
180
+ 'slug' => 'tribe-eventbrite',
181
+ 'link' => 'https://m.tri.be/19o9',
182
+ 'description' => __( 'Unite the power of TEC with the ticketing of Eventbrite', 'tribe-common' ),
183
+ 'features' => [
184
  __( 'Manage tickets from WordPress', 'tribe-common' ),
185
  __( 'Ticket availability automatically updates', 'tribe-common' ),
186
  __( 'Integrated with your events on Eventbrite', 'tribe-common' ),
187
  __( 'Automatically import your events', 'tribe-common' ),
188
  ],
189
+ 'image' => 'images/shop/eventbrite.jpg',
190
+ 'logo' => 'images/logo/eventbrite-tickets.svg',
191
+ 'is_installed' => class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ),
192
+ 'free' => false,
193
  'active_installs' => 20000,
194
+ ],
195
+ 'image-widget-plus' => [
196
+ 'title' => __( 'Image Widget Plus', 'tribe-common' ),
197
+ 'slug' => 'image-widget-plus',
198
+ 'link' => 'https://m.tri.be/19nv',
199
+ 'description' => __( 'Beautiful display options for your favorite photos.', 'tribe-common' ),
200
+ 'features' => [
201
  __( 'Multi-Image Support', 'tribe-common' ),
202
  __( 'Lightbox', 'tribe-common' ),
203
  __( 'Slideshow', 'tribe-common' ),
204
  __( 'Random Images', 'tribe-common' ),
205
  ],
206
+ 'image' => 'images/shop/image-widget-plus.jpg',
207
+ 'logo' => 'images/logo/image-widget-plus.svg',
208
+ 'is_installed' => class_exists( 'Tribe__Image__Plus__Main' ),
209
+ 'free' => false,
210
  'active_installs' => 2500,
211
+ ],
212
+ 'events-virtual' => [
213
+ 'title' => __( 'Virtual Events', 'tribe-common' ),
214
+ 'slug' => 'events-virtual',
215
+ 'link' => 'http://m.tri.be/virtual-events',
216
+ 'description' => __( 'Features to optimize your calendar for virtual events.', 'tribe-common' ),
217
+ 'features' => [
218
  __( 'Zoom integration', 'tribe-common' ),
219
  __( 'Virtual event labels', 'tribe-common' ),
220
  __( 'Status control for canceled or postponed events', 'tribe-common' ),
221
  __( 'Embed livestreams and videos', 'tribe-common' ),
222
  ],
223
+ 'image' => 'images/shop/virtual-events.jpg',
224
+ 'logo' => 'images/logo/virtual-events.svg',
225
+ 'is_installed' => defined( 'EVENTS_VIRTUAL_FILE' ),
226
+ 'free' => false,
227
  'active_installs' => 2500,
228
+ ],
229
+ ];
230
 
231
  return $products;
232
  }
common/src/Tribe/Post_History.php CHANGED
@@ -47,16 +47,16 @@ class Tribe__Post_History {
47
  * @param string $message
48
  * @param array $data
49
  */
50
- public function add_entry( $message, array $data = array() ) {
51
  $datetime = current_time( 'mysql' );
52
  $checksum = uniqid( substr( hash( 'md5', $datetime . $message . serialize( $data ) ), 0, 8 ) . '_' );
53
 
54
- $log_entry = wp_slash( json_encode( array(
55
  'datetime' => $datetime,
56
  'message' => $message,
57
  'data' => $data,
58
  'checksum' => $checksum,
59
- ) ) );
60
 
61
  add_post_meta( $this->post_id, self::HISTORY_KEY, $log_entry );
62
  }
@@ -84,7 +84,7 @@ class Tribe__Post_History {
84
  * @return array
85
  */
86
  public function get_entries() {
87
- $entries = array();
88
 
89
  foreach ( get_post_meta( $this->post_id, self::HISTORY_KEY ) as $log_entry ) {
90
  $log_entry = json_decode( $log_entry );
47
  * @param string $message
48
  * @param array $data
49
  */
50
+ public function add_entry( $message, array $data = [] ) {
51
  $datetime = current_time( 'mysql' );
52
  $checksum = uniqid( substr( hash( 'md5', $datetime . $message . serialize( $data ) ), 0, 8 ) . '_' );
53
 
54
+ $log_entry = wp_slash( json_encode( [
55
  'datetime' => $datetime,
56
  'message' => $message,
57
  'data' => $data,
58
  'checksum' => $checksum,
59
+ ] ) );
60
 
61
  add_post_meta( $this->post_id, self::HISTORY_KEY, $log_entry );
62
  }
84
  * @return array
85
  */
86
  public function get_entries() {
87
+ $entries = [];
88
 
89
  foreach ( get_post_meta( $this->post_id, self::HISTORY_KEY ) as $log_entry ) {
90
  $log_entry = json_decode( $log_entry );
common/src/Tribe/Promise.php CHANGED
@@ -60,13 +60,13 @@ class Tribe__Promise extends Tribe__Process__Queue {
60
  * @param array $extra_args An array of extra arguments that will be passed to the
61
  * callback function.
62
  */
63
- public function __construct( $callback = null, array $items = null, array $extra_args = array() ) {
64
  parent::__construct();
65
 
66
  if ( ! empty( $callback ) && ! empty( $items ) ) {
67
  foreach ( $items as $target ) {
68
  $item['callback'] = $callback;
69
- $item['args'] = array_merge( array( $target ), $extra_args );
70
  $this->push_to_queue( $item );
71
  }
72
  }
@@ -272,7 +272,7 @@ class Tribe__Promise extends Tribe__Process__Queue {
272
  */
273
  protected function unpack_callback( $callback ) {
274
  if ( $callback instanceof Tribe__Utils__Callback ) {
275
- $callback = array( tribe( $callback->get_slug() ), $callback->get_method() );
276
  }
277
 
278
  return $callback;
60
  * @param array $extra_args An array of extra arguments that will be passed to the
61
  * callback function.
62
  */
63
+ public function __construct( $callback = null, array $items = null, array $extra_args = [] ) {
64
  parent::__construct();
65
 
66
  if ( ! empty( $callback ) && ! empty( $items ) ) {
67
  foreach ( $items as $target ) {
68
  $item['callback'] = $callback;
69
+ $item['args'] = array_merge( [ $target ], $extra_args );
70
  $this->push_to_queue( $item );
71
  }
72
  }
272
  */
273
  protected function unpack_callback( $callback ) {
274
  if ( $callback instanceof Tribe__Utils__Callback ) {
275
+ $callback = [ tribe( $callback->get_slug() ), $callback->get_method() ];
276
  }
277
 
278
  return $callback;
common/src/Tribe/Promoter/PUE.php CHANGED
@@ -23,10 +23,10 @@ class Tribe__Promoter__PUE {
23
  * @since 4.9
24
  */
25
  public function load() {
26
- $this->pue_checker = new Tribe__PUE__Checker( 'http://tri.be/', $this->slug, array(
27
  'context' => 'service',
28
  'plugin_name' => __( 'Promoter', 'tribe-common' ),
29
- ) );
30
  }
31
 
32
  /**
@@ -57,10 +57,10 @@ class Tribe__Promoter__PUE {
57
  return false;
58
  }
59
 
60
- return array(
61
  'key' => $key,
62
  'is_network_key' => $is_network_key,
63
- );
64
  }
65
 
66
  /**
23
  * @since 4.9
24
  */
25
  public function load() {
26
+ $this->pue_checker = new Tribe__PUE__Checker( 'http://tri.be/', $this->slug, [
27
  'context' => 'service',
28
  'plugin_name' => __( 'Promoter', 'tribe-common' ),
29
+ ] );
30
  }
31
 
32
  /**
57
  return false;
58
  }
59
 
60
+ return [
61
  'key' => $key,
62
  'is_network_key' => $is_network_key,
63
+ ];
64
  }
65
 
66
  /**
common/src/Tribe/REST/Post_Repository.php CHANGED
@@ -14,11 +14,11 @@ class Tribe__REST__Post_Repository {
14
  $full_url = get_attachment_link( $image_id );
15
  $file = get_attached_file( $image_id );
16
 
17
- $data = array(
18
  'url' => $full_url,
19
  'id' => $image_id,
20
  'extension' => pathinfo( $file, PATHINFO_EXTENSION ),
21
- );
22
 
23
  $metadata = wp_get_attachment_metadata( $image_id );
24
 
@@ -49,26 +49,26 @@ class Tribe__REST__Post_Repository {
49
  */
50
  protected function get_date_details( $date ) {
51
  if ( empty( $date ) ) {
52
- return array(
53
  'year' => '',
54
  'month' => '',
55
  'day' => '',
56
  'hour' => '',
57
  'minutes' => '',
58
  'seconds' => '',
59
- );
60
  }
61
 
62
  $time = strtotime( $date );
63
 
64
- return array(
65
  'year' => date( 'Y', $time ),
66
  'month' => date( 'm', $time ),
67
  'day' => date( 'd', $time ),
68
  'hour' => date( 'H', $time ),
69
  'minutes' => date( 'i', $time ),
70
  'seconds' => date( 's', $time ),
71
- );
72
  }
73
 
74
  /**
@@ -80,15 +80,19 @@ class Tribe__REST__Post_Repository {
80
  *
81
  * @return array
82
  */
83
- protected function format_and_sort_cost_couples( array $cost_couples = array() ) {
84
  global $wp_locale;
85
 
86
- $cost_values = array();
87
  foreach ( $cost_couples as $key => $value ) {
88
- $value = str_replace( array(
89
- $wp_locale->number_format['decimal_point'],
90
- $wp_locale->number_format['thousands_sep'],
91
- ), array( '.', '' ), '' . $value );
 
 
 
 
92
  if ( is_numeric( $value ) ) {
93
  $cost_values[] = $value;
94
  } else {
14
  $full_url = get_attachment_link( $image_id );
15
  $file = get_attached_file( $image_id );
16
 
17
+ $data = [
18
  'url' => $full_url,
19
  'id' => $image_id,
20
  'extension' => pathinfo( $file, PATHINFO_EXTENSION ),
21
+ ];
22
 
23
  $metadata = wp_get_attachment_metadata( $image_id );
24
 
49
  */
50
  protected function get_date_details( $date ) {
51
  if ( empty( $date ) ) {
52
+ return [
53
  'year' => '',
54
  'month' => '',
55
  'day' => '',
56
  'hour' => '',
57
  'minutes' => '',
58
  'seconds' => '',
59
+ ];
60
  }
61
 
62
  $time = strtotime( $date );
63
 
64
+ return [
65
  'year' => date( 'Y', $time ),
66
  'month' => date( 'm', $time ),
67
  'day' => date( 'd', $time ),
68
  'hour' => date( 'H', $time ),
69
  'minutes' => date( 'i', $time ),
70
  'seconds' => date( 's', $time ),
71
+ ];
72
  }
73
 
74
  /**
80
  *
81
  * @return array
82
  */
83
+ protected function format_and_sort_cost_couples( array $cost_couples = [] ) {
84
  global $wp_locale;
85
 
86
+ $cost_values = [];
87
  foreach ( $cost_couples as $key => $value ) {
88
+ $value = str_replace(
89
+ [
90
+ $wp_locale->number_format['decimal_point'],
91
+ $wp_locale->number_format['thousands_sep'],
92
+ ],
93
+ [ '.', '' ],
94
+ '' . $value
95
+ );
96
  if ( is_numeric( $value ) ) {
97
  $cost_values[] = $value;
98
  } else {
common/src/Tribe/Repository.php CHANGED
@@ -14,19 +14,19 @@ abstract class Tribe__Repository
14
  /**
15
  * @var array An array of keys that cannot be updated on this repository.
16
  */
17
- protected static $blocked_keys = array(
18
  'ID',
19
  'post_type',
20
  'post_modified',
21
  'post_modified_gmt',
22
  'guid',
23
  'comment_count',
24
- );
25
 
26
  /**
27
  * @var array A list of the default filters supported and implemented by the repository.
28
  */
29
- protected static $default_modifiers = array(
30
  'p',
31
  'author',
32
  'author_name',
@@ -121,22 +121,22 @@ abstract class Tribe__Repository
121
  'term_in',
122
  'term_not_in',
123
  'term_and',
124
- );
125
 
126
  /**
127
  * @var array An array of default arguments that will be applied to all queries.
128
  */
129
- protected static $common_args = array(
130
  'post_type' => 'post',
131
  'suppress_filters' => false,
132
- 'posts_per_page' => - 1,
133
- );
134
 
135
  /**
136
  * @var array A list of query modifiers that will trigger a overriding merge, thus
137
  * replacing previous values, when set multiple times.
138
  */
139
- protected static $replacing_modifiers = array(
140
  'p',
141
  'author',
142
  'author_name',
@@ -191,20 +191,22 @@ abstract class Tribe__Repository
191
  'guid',
192
  'perm',
193
  'order',
194
- );
195
 
196
  /**
197
  * @var int
198
  */
199
  protected static $meta_alias = 0;
 
200
  /**
201
  * @var array A list of keys that denote the value to check should be cast to array.
202
  */
203
- protected static $multi_value_keys = array( 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' );
 
204
  /**
205
  * @var array A map of SQL comparison operators to their human-readable counterpart.
206
  */
207
- protected static $comparison_operators = array(
208
  '=' => 'equals',
209
  '!=' => 'not-equals',
210
  '>' => 'gt',
@@ -221,7 +223,7 @@ abstract class Tribe__Repository
221
  'NOT EXISTS' => 'not-exists',
222
  'REGEXP' => 'regexp',
223
  'NOT REGEXP' => 'not-regexp',
224
- );
225
 
226
  /**
227
  * A counter to keep track, on the class level, of the aliases generated for the terms table
@@ -238,7 +240,7 @@ abstract class Tribe__Repository
238
  /**
239
  * @var array The post IDs that will be updated.
240
  */
241
- protected $ids = array();
242
  /**
243
  * @var bool Whether the post IDs to update have already been fetched or not.
244
  */
@@ -246,101 +248,114 @@ abstract class Tribe__Repository
246
  /**
247
  * @var array The updates that will be saved to the database.
248
  */
249
- protected $updates = array();
250
 
251
  /**
252
  * @var array A list of taxonomies this repository will recognize.
253
  */
254
- protected $taxonomies = array();
255
 
256
  /**
257
  * @var array A map detailing which fields should be converted from a
258
  * GMT time and date to a local one.
259
  */
260
- protected $to_local_time_map = array(
261
  'post_date_gmt' => 'post_date',
262
- );
 
263
  /**
264
  * @var array A map detailing which fields should be converted from a
265
  * localized time and date to a GMT one.
266
  */
267
- protected $to_gmt_map = array(
268
  'post_date' => 'post_date_gmt',
269
- );
270
 
271
  /**
272
  * @var array
273
  */
274
- protected $default_args = array( 'post_type' => 'post' );
 
275
  /**
276
  * @var array An array of query modifying callbacks populated while applying
277
  * the filters.
278
  */
279
- protected $query_modifiers = array();
 
280
  /**
281
  * @var bool Whether the current query is void or not.
282
  */
283
  protected $void_query = false;
 
284
  /**
285
  * @var array An array of query arguments that will be populated while applying
286
  * filters.
287
  */
288
- protected $query_args = array(
289
- 'meta_query' => array( 'relation' => 'AND' ),
290
- 'tax_query' => array( 'relation' => 'AND' ),
291
- 'date_query' => array( 'relation' => 'AND' ),
292
- );
 
293
  /**
294
  * @var array An array of query arguments that support 'relation'.
295
  */
296
- protected $relation_query_args = array(
297
  'meta_query',
298
  'tax_query',
299
  'date_query',
300
- );
 
301
  /**
302
  * @var WP_Query The current query object built and modified by the instance.
303
  */
304
  protected $current_query;
 
305
  /**
306
  * @var array An associative array of the filters that will be applied and the used values.
307
  */
308
- protected $current_filters = array();
 
309
  /**
310
  * @var string|null The current filter being applied.
311
  */
312
  protected $current_filter;
 
313
  /**
314
  * @var Tribe__Repository__Query_Filters
315
  */
316
  public $filter_query;
 
317
  /**
318
  * @var string The filter that should be used to get a post by its primary key.
319
  */
320
  protected $primary_key = 'p';
 
321
  /**
322
  * @var array A map of callbacks in the shape [ <slug> => <callback|primitive> ]
323
  */
324
- protected $schema = array();
325
 
326
  /**
327
  * @var array A map of schema slugs and their meta keys to be queried.
328
  */
329
- protected $simple_meta_schema = array();
330
 
331
  /**
332
  * @var array A map of schema slugs and their taxonomies to be queried.
333
  */
334
- protected $simple_tax_schema = array();
335
 
336
  /**
337
  * @var Tribe__Repository__Interface
338
  */
339
  protected $main_repository;
 
340
  /**
341
  * @var Tribe__Repository__Formatter_Interface
342
  */
343
  protected $formatter;
 
344
  /**
345
  * @var bool
346
  */
@@ -360,7 +375,7 @@ abstract class Tribe__Repository
360
  *
361
  * @var array
362
  */
363
- protected $update_fields_aliases = array(
364
  'title' => 'post_title',
365
  'content' => 'post_content',
366
  'description' => 'post_content',
@@ -374,7 +389,7 @@ abstract class Tribe__Repository
374
  'date_utc' => 'post_date_gmt',
375
  'tag' => 'post_tag',
376
  'image' => '_thumbnail_id',
377
- );
378
 
379
  /**
380
  * The default create args that will be used by the repository
@@ -423,9 +438,9 @@ abstract class Tribe__Repository
423
  */
424
  public function __construct() {
425
  $this->filter_query = new Tribe__Repository__Query_Filters();
426
- $this->default_args = array_merge( array( 'posts_per_page' => - 1 ), $this->default_args );
427
- $post_types = (array) Tribe__Utils__Array::get( $this->default_args, 'post_type', array() );
428
- $this->taxonomies = get_taxonomies( array( 'object_type' => $post_types ), 'names' );
429
 
430
  /**
431
  * Allow plugins to init their classes and setup hooks at the initial setup of a repository.
@@ -502,7 +517,8 @@ abstract class Tribe__Repository
502
  */
503
  public function where( $key, $value = null ) {
504
  $call_args = func_get_args();
505
- return call_user_func_array( array( $this, 'by' ), $call_args );
 
506
  }
507
 
508
  /**
@@ -650,7 +666,7 @@ abstract class Tribe__Repository
650
  */
651
  public function all() {
652
  if ( $this->void_query ) {
653
- return array();
654
  }
655
 
656
  $query = $this->build_query();
@@ -691,7 +707,7 @@ abstract class Tribe__Repository
691
  */
692
  $formatted = $return_ids
693
  ? $results
694
- : array_filter( array_map( array( $this, 'format_item' ), $results ) );
695
 
696
  // Reset the fields if required.
697
  $query->set( 'fields', $original_fields_value );
@@ -722,7 +738,7 @@ abstract class Tribe__Repository
722
  public function order( $order = 'ASC' ) {
723
  $order = strtoupper( $order );
724
 
725
- if ( ! in_array( $order, array( 'ASC', 'DESC' ), true ) ) {
726
  return $this;
727
  }
728
 
@@ -754,7 +770,7 @@ abstract class Tribe__Repository
754
  * {@inheritdoc}
755
  */
756
  public function permission( $permission ) {
757
- if ( ! in_array( $permission, array( self::PERMISSION_READABLE, self::PERMISSION_EDITABLE ), true ) ) {
758
  return $this;
759
  }
760
 
@@ -930,10 +946,10 @@ abstract class Tribe__Repository
930
  * {@inheritdoc}
931
  */
932
  public function nth( $n ) {
933
- $per_page = (int) Tribe__Utils__Array::get_in_any( array(
934
  $this->query_args,
935
  $this->default_args,
936
- ), 'posts_per_page', get_option( 'posts_per_page' ) );
937
 
938
  if ( - 1 !== $per_page && $n > $per_page ) {
939
  return null;
@@ -1010,12 +1026,12 @@ abstract class Tribe__Repository
1010
  $matching_ids = $this->get_ids();
1011
 
1012
  if ( empty( $matching_ids ) ) {
1013
- return array();
1014
  }
1015
 
1016
  $spliced = array_splice( $matching_ids, 0, $n );
1017
 
1018
- return $return_ids ? $spliced : array_map( array( $this, 'format_item' ), $spliced );
1019
  }
1020
 
1021
  /**
@@ -1125,20 +1141,11 @@ abstract class Tribe__Repository
1125
  */
1126
  $this->query_args = array_merge( $this->query_args, $query_modifier );
1127
  } else {
1128
- $query_args = $this->query_args;
1129
-
1130
- // Handle relation separately because we do not want that to merge recursively
1131
- foreach ( $this->relation_query_args as $query_arg ) {
1132
- if ( isset( $query_args[ $query_arg ]['relation'], $query_modifier[ $query_arg ]['relation'] ) ) {
1133
- unset( $query_args[ $query_arg ]['relation'] );
1134
- }
1135
- }
1136
-
1137
  /**
1138
  * We do a recursive merge to allow "stacking" of same kind of queries;
1139
- * e.g. two or more `tax_query`.
1140
  */
1141
- $this->query_args = array_merge_recursive( $query_args, $query_modifier );
1142
  }
1143
  } else {
1144
  /**
@@ -1186,18 +1193,18 @@ abstract class Tribe__Repository
1186
  if ( $this->has_default_modifier( $key ) ) {
1187
  // let's use the default filters normalizing the key first
1188
  $call_args[0] = $this->normalize_key( $key );
1189
- $query_modifier = call_user_func_array( array( $this, 'apply_default_modifier' ), $call_args );
1190
  } elseif ( 2 === count( $call_args ) ) {
1191
  // Pass query argument $key with the single value argument.
1192
- $query_modifier = array(
1193
  $key => $call_args[1],
1194
- );
1195
  } else {
1196
  // More than two $call_args were sent (key, value), assume it was meant for a filter that was not defined yet.
1197
  throw Tribe__Repository__Usage_Error::because_the_read_filter_is_not_defined( $key, $this );
1198
  }
1199
  } else {
1200
- $query_modifier = call_user_func_array( array( $this, 'apply_modifier' ), $call_args );
1201
  }
1202
 
1203
  return $query_modifier;
@@ -1247,7 +1254,7 @@ abstract class Tribe__Repository
1247
  // `ID` to `id`
1248
  $normalized = strtolower( $key );
1249
 
1250
- $post_prefixed = array(
1251
  'password',
1252
  'name__in',
1253
  '_in',
@@ -1262,7 +1269,7 @@ abstract class Tribe__Repository
1262
  'modified',
1263
  'modified_gmt',
1264
  'content_filtered',
1265
- );
1266
 
1267
  if ( in_array( $key, $post_prefixed, true ) ) {
1268
  $normalized = 'post_' . $key;
@@ -1320,11 +1327,11 @@ abstract class Tribe__Repository
1320
  $to_update = $this->get_ids();
1321
 
1322
  if ( empty( $to_update ) ) {
1323
- return $return_promise ? new Tribe__Promise() : array();
1324
  }
1325
 
1326
- $exit = array();
1327
- $postarrs = array();
1328
 
1329
  foreach ( $to_update as $id ) {
1330
  $postarrs[ $id ] = $this->filter_postarr_for_update( $this->build_postarr( $id ), $id );
@@ -1355,7 +1362,7 @@ abstract class Tribe__Repository
1355
  */
1356
  public function get_ids() {
1357
  if ( $this->void_query ) {
1358
- return array();
1359
  }
1360
 
1361
 
@@ -1387,7 +1394,7 @@ abstract class Tribe__Repository
1387
  * Extending classes might use this method to run sub-queries
1388
  * and signal a void query; let's return an empty array.
1389
  */
1390
- return array();
1391
  }
1392
  }
1393
 
@@ -1533,7 +1540,7 @@ abstract class Tribe__Repository
1533
  public function where_meta_related_by( $meta_keys, $compare, $field = null, $values = null ) {
1534
  $meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys );
1535
 
1536
- if ( ! in_array( $compare, array( 'EXISTS', 'NOT EXISTS' ), true ) ) {
1537
  if ( empty( $field ) || empty( $values ) ) {
1538
  throw Tribe__Repository__Usage_Error::because_this_comparison_operator_requires_fields_and_values( $meta_keys, $compare, $this );
1539
  }
@@ -1591,7 +1598,7 @@ abstract class Tribe__Repository
1591
  public function where_meta_related_by_meta( $meta_keys, $compare, $meta_field = null, $meta_values = null, $or_not_exists = false ) {
1592
  $meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys );
1593
 
1594
- if ( ! in_array( $compare, array( 'EXISTS', 'NOT EXISTS' ), true ) ) {
1595
  if ( empty( $meta_field ) || empty( $meta_values ) ) {
1596
  throw Tribe__Repository__Usage_Error::because_this_comparison_operator_requires_fields_and_values( $meta_keys, $compare, $this );
1597
  }
@@ -1678,7 +1685,7 @@ abstract class Tribe__Repository
1678
  $buffered_count = count( $buffered );
1679
 
1680
  foreach ( $all_callbacks as $c ) {
1681
- call_user_func_array( array( $this, $c[0] ), array_slice( $c, 1 ) );
1682
 
1683
  if ( $buffered_count === count( $this->filter_query->get_buffered_where_clauses() ) ) {
1684
  throw Tribe__Repository__Usage_Error::because_where_or_should_only_be_used_with_methods_that_add_where_clauses( $c, $this );
@@ -1719,12 +1726,12 @@ abstract class Tribe__Repository
1719
  * @param string|null $by The ->by() lookup to use (defaults to meta_regexp_or_like).
1720
  */
1721
  public function add_simple_meta_schema_entry( $key, $meta_key, $by = null ) {
1722
- $this->schema[ $key ] = array( $this, 'filter_by_simple_meta_schema' );
1723
 
1724
- $this->simple_meta_schema[ $key ] = array(
1725
  'meta_key' => $meta_key,
1726
  'by' => $by,
1727
- );
1728
  }
1729
 
1730
  /**
@@ -1737,12 +1744,12 @@ abstract class Tribe__Repository
1737
  * @param string|null $by The ->by() lookup to use (defaults to term_in).
1738
  */
1739
  public function add_simple_tax_schema_entry( $key, $taxonomy, $by = null ) {
1740
- $this->schema[ $key ] = array( $this, 'filter_by_simple_tax_schema' );
1741
 
1742
- $this->simple_tax_schema[ $key ] = array(
1743
  'taxonomy' => $taxonomy,
1744
  'by' => $by,
1745
- );
1746
  }
1747
 
1748
  /**
@@ -1764,7 +1771,7 @@ abstract class Tribe__Repository
1764
  * @throws Tribe__Repository__Usage_Error If a filter is called with wrong arguments.
1765
  */
1766
  protected function apply_default_modifier( $key, $value ) {
1767
- $args = array();
1768
 
1769
  $call_args = func_get_args();
1770
  $arg_1 = isset( $call_args[2] ) ? $call_args[2] : null;
@@ -1776,14 +1783,14 @@ abstract class Tribe__Repository
1776
  switch ( $key ) {
1777
  default:
1778
  // leverage built-in WP_Query filters
1779
- $args = array( $key => $value );
1780
  break;
1781
  case 'ID':
1782
  case 'id':
1783
- $args = array( 'p' => $value );
1784
  break;
1785
  case 'search':
1786
- $args = array( 's' => $value );
1787
  break;
1788
  case 'post_status':
1789
  $this->query_args['post_status'] = (array) $value;
@@ -1813,7 +1820,7 @@ abstract class Tribe__Repository
1813
  break;
1814
  case 'to_ping':
1815
  $this->filter_query->to_get_posts_to_ping( $value );
1816
- $args = array( 'to_ping' => $value );
1817
  break;
1818
  case 'post_modified':
1819
  $args = $this->get_posts_after( $value, 'post_modified' );
@@ -1828,7 +1835,7 @@ abstract class Tribe__Repository
1828
  $this->filter_query->to_get_posts_with_guid_like( $value );
1829
  break;
1830
  case 'menu_order':
1831
- $args = array( 'menu_order' => $value );
1832
  break;
1833
  case 'meta':
1834
  case 'meta_equals':
@@ -1990,7 +1997,7 @@ abstract class Tribe__Repository
1990
  * @return array
1991
  */
1992
  protected function get_posts_after( $value, $column = 'post_date' ) {
1993
- $timezone = in_array( $column, array( 'post_date_gmt', 'post_modified_gmt' ), true )
1994
  ? 'UTC'
1995
  : Tribe__Timezones::generate_timezone_string_from_utc_offset( Tribe__Timezones::wp_timezone_string() );
1996
 
@@ -2002,16 +2009,16 @@ abstract class Tribe__Repository
2002
 
2003
  $array_key = sprintf( '%s-after', $column );
2004
 
2005
- return array(
2006
- 'date_query' => array(
2007
  'relation' => 'AND',
2008
- $array_key => array(
2009
  'inclusive' => true,
2010
  'column' => $column,
2011
  'after' => $date->format( 'Y-m-d H:i:s' ),
2012
- ),
2013
- ),
2014
- );
2015
  }
2016
 
2017
  /**
@@ -2025,7 +2032,7 @@ abstract class Tribe__Repository
2025
  * @return array
2026
  */
2027
  protected function get_posts_before( $value, $column = 'post_date' ) {
2028
- $timezone = in_array( $column, array( 'post_date_gmt', 'post_modified_gmt' ), true )
2029
  ? 'UTC'
2030
  : Tribe__Timezones::generate_timezone_string_from_utc_offset( Tribe__Timezones::wp_timezone_string() );
2031
 
@@ -2037,16 +2044,16 @@ abstract class Tribe__Repository
2037
 
2038
  $array_key = sprintf( '%s-before', $column );
2039
 
2040
- return array(
2041
- 'date_query' => array(
2042
  'relation' => 'AND',
2043
- $array_key => array(
2044
  'inclusive' => true,
2045
  'column' => $column,
2046
  'before' => $date->format( 'Y-m-d H:i:s' ),
2047
- ),
2048
- ),
2049
- );
2050
  }
2051
 
2052
  /**
@@ -2071,16 +2078,16 @@ abstract class Tribe__Repository
2071
  if ( count( $meta_keys ) === 1 ) {
2072
  $array_key = $this->sql_slug( $meta_keys[0], $postfix );
2073
 
2074
- $args = array(
2075
- 'meta_query' => array(
2076
- $array_key => array(
2077
  'key' => $meta_keys[0],
2078
  'compare' => strtoupper( $compare ),
2079
- ),
2080
- ),
2081
- );
2082
 
2083
- if ( ! in_array( $compare, array( 'EXISTS', 'NOT EXISTS' ), true ) ) {
2084
  $args['meta_query'][ $array_key ]['value'] = $meta_value;
2085
  }
2086
 
@@ -2167,22 +2174,22 @@ abstract class Tribe__Repository
2167
  * @return array
2168
  */
2169
  protected function build_tax_query( $taxonomy, $terms, $field, $operator ) {
2170
- if ( in_array( $operator, array( 'EXISTS', 'NOT EXISTS' ), true ) ) {
2171
  $array_key = $this->sql_slug( $taxonomy, $operator );
2172
  } else {
2173
  $array_key = $this->sql_slug( $taxonomy, $field, $operator );
2174
  }
2175
 
2176
- return array(
2177
- 'tax_query' => array(
2178
- $array_key => array(
2179
  'taxonomy' => $taxonomy,
2180
  'field' => $field,
2181
  'terms' => $terms,
2182
  'operator' => strtoupper( $operator ),
2183
- ),
2184
- ),
2185
- );
2186
  }
2187
 
2188
  /**
@@ -2226,12 +2233,12 @@ abstract class Tribe__Repository
2226
  public function prepare_interval( $values, $format = '%s', $operator = 'IN' ) {
2227
  $values = Tribe__Utils__Array::list_to_array( $values );
2228
 
2229
- $prepared = array();
2230
  foreach ( $values as $value ) {
2231
  $prepared[] = $this->prepare_value( $value, $format );
2232
  }
2233
 
2234
- return in_array( $operator, array( 'BETWEEN', 'NOT BETWEEN' ) )
2235
  ? sprintf( '%s AND %s', $prepared[0], $prepared[1] )
2236
  : sprintf( '(%s)', implode( ',', $prepared ) );
2237
  }
@@ -2432,7 +2439,7 @@ abstract class Tribe__Repository
2432
  $to_delete = $this->get_ids();
2433
 
2434
  if ( empty( $to_delete ) ) {
2435
- return $return_promise ? new Tribe__Promise() : array();
2436
  }
2437
 
2438
 
@@ -2862,10 +2869,10 @@ abstract class Tribe__Repository
2862
  * {@inheritdoc}
2863
  */
2864
  public function build_postarr( $id = null ) {
2865
- $postarr = array(
2866
- 'tax_input' => array(),
2867
- 'meta_input' => array(),
2868
- );
2869
 
2870
  /*
2871
  * The check is lax here by design: we leave space for the client code
@@ -3042,7 +3049,7 @@ abstract class Tribe__Repository
3042
  /**
3043
  * {@inheritdoc}
3044
  */
3045
- public function filter( $args = array(), $operator = 'AND' ) {
3046
  $list = new WP_List_Util( $this->all() );
3047
 
3048
  return $list->filter( $args, $operator );
@@ -3051,7 +3058,7 @@ abstract class Tribe__Repository
3051
  /**
3052
  * {@inheritdoc}
3053
  */
3054
- public function sort( $orderby = array(), $order = 'ASC', $preserve_keys = false ) {
3055
  $list = new WP_List_Util( $this->all() );
3056
 
3057
  return $list->sort( $orderby, $order, $preserve_keys );
14
  /**
15
  * @var array An array of keys that cannot be updated on this repository.
16
  */
17
+ protected static $blocked_keys = [
18
  'ID',
19
  'post_type',
20
  'post_modified',
21
  'post_modified_gmt',
22
  'guid',
23
  'comment_count',
24
+ ];
25
 
26
  /**
27
  * @var array A list of the default filters supported and implemented by the repository.
28
  */
29
+ protected static $default_modifiers = [
30
  'p',
31
  'author',
32
  'author_name',
121
  'term_in',
122
  'term_not_in',
123
  'term_and',
124
+ ];
125
 
126
  /**
127
  * @var array An array of default arguments that will be applied to all queries.
128
  */
129
+ protected static $common_args = [
130
  'post_type' => 'post',
131
  'suppress_filters' => false,
132
+ 'posts_per_page' => -1,
133
+ ];
134
 
135
  /**
136
  * @var array A list of query modifiers that will trigger a overriding merge, thus
137
  * replacing previous values, when set multiple times.
138
  */
139
+ protected static $replacing_modifiers = [
140
  'p',
141
  'author',
142
  'author_name',
191
  'guid',
192
  'perm',
193
  'order',
194
+ ];
195
 
196
  /**
197
  * @var int
198
  */
199
  protected static $meta_alias = 0;
200
+
201
  /**
202
  * @var array A list of keys that denote the value to check should be cast to array.
203
  */
204
+ protected static $multi_value_keys = [ 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ];
205
+
206
  /**
207
  * @var array A map of SQL comparison operators to their human-readable counterpart.
208
  */
209
+ protected static $comparison_operators = [
210
  '=' => 'equals',
211
  '!=' => 'not-equals',
212
  '>' => 'gt',
223
  'NOT EXISTS' => 'not-exists',
224
  'REGEXP' => 'regexp',
225
  'NOT REGEXP' => 'not-regexp',
226
+ ];
227
 
228
  /**
229
  * A counter to keep track, on the class level, of the aliases generated for the terms table
240
  /**
241
  * @var array The post IDs that will be updated.
242
  */
243
+ protected $ids = [];
244
  /**
245
  * @var bool Whether the post IDs to update have already been fetched or not.
246
  */
248
  /**
249
  * @var array The updates that will be saved to the database.
250
  */
251
+ protected $updates = [];
252
 
253
  /**
254
  * @var array A list of taxonomies this repository will recognize.
255
  */
256
+ protected $taxonomies = [];
257
 
258
  /**
259
  * @var array A map detailing which fields should be converted from a
260
  * GMT time and date to a local one.
261
  */
262
+ protected $to_local_time_map = [
263
  'post_date_gmt' => 'post_date',
264
+ ];
265
+
266
  /**
267
  * @var array A map detailing which fields should be converted from a
268
  * localized time and date to a GMT one.
269
  */
270
+ protected $to_gmt_map = [
271
  'post_date' => 'post_date_gmt',
272
+ ];
273
 
274
  /**
275
  * @var array
276
  */
277
+ protected $default_args = [ 'post_type' => 'post' ];
278
+
279
  /**
280
  * @var array An array of query modifying callbacks populated while applying
281
  * the filters.
282
  */
283
+ protected $query_modifiers = [];
284
+
285
  /**
286
  * @var bool Whether the current query is void or not.
287
  */
288
  protected $void_query = false;
289
+
290
  /**
291
  * @var array An array of query arguments that will be populated while applying
292
  * filters.
293
  */
294
+ protected $query_args = [
295
+ 'meta_query' => [ 'relation' => 'AND' ],
296
+ 'tax_query' => [ 'relation' => 'AND' ],
297
+ 'date_query' => [ 'relation' => 'AND' ],
298
+ ];
299
+
300
  /**
301
  * @var array An array of query arguments that support 'relation'.
302
  */
303
+ protected $relation_query_args = [
304
  'meta_query',
305
  'tax_query',
306
  'date_query',
307
+ ];
308
+
309
  /**
310
  * @var WP_Query The current query object built and modified by the instance.
311
  */
312
  protected $current_query;
313
+
314
  /**
315
  * @var array An associative array of the filters that will be applied and the used values.
316
  */
317
+ protected $current_filters = [];
318
+
319
  /**
320
  * @var string|null The current filter being applied.
321
  */
322
  protected $current_filter;
323
+
324
  /**
325
  * @var Tribe__Repository__Query_Filters
326
  */
327
  public $filter_query;
328
+
329
  /**
330
  * @var string The filter that should be used to get a post by its primary key.
331
  */
332
  protected $primary_key = 'p';
333
+
334
  /**
335
  * @var array A map of callbacks in the shape [ <slug> => <callback|primitive> ]
336
  */
337
+ protected $schema = [];
338
 
339
  /**
340
  * @var array A map of schema slugs and their meta keys to be queried.
341
  */
342
+ protected $simple_meta_schema = [];
343
 
344
  /**
345
  * @var array A map of schema slugs and their taxonomies to be queried.
346
  */
347
+ protected $simple_tax_schema = [];
348
 
349
  /**
350
  * @var Tribe__Repository__Interface
351
  */
352
  protected $main_repository;
353
+
354
  /**
355
  * @var Tribe__Repository__Formatter_Interface
356
  */
357
  protected $formatter;
358
+
359
  /**
360
  * @var bool
361
  */
375
  *
376
  * @var array
377
  */
378
+ protected $update_fields_aliases = [
379
  'title' => 'post_title',
380
  'content' => 'post_content',
381
  'description' => 'post_content',
389
  'date_utc' => 'post_date_gmt',
390
  'tag' => 'post_tag',
391
  'image' => '_thumbnail_id',
392
+ ];
393
 
394
  /**
395
  * The default create args that will be used by the repository
438
  */
439
  public function __construct() {
440
  $this->filter_query = new Tribe__Repository__Query_Filters();
441
+ $this->default_args = array_merge( [ 'posts_per_page' => -1 ], $this->default_args );
442
+ $post_types = (array) Tribe__Utils__Array::get( $this->default_args, 'post_type', [] );
443
+ $this->taxonomies = get_taxonomies( [ 'object_type' => $post_types ], 'names' );
444
 
445
  /**
446
  * Allow plugins to init their classes and setup hooks at the initial setup of a repository.
517
  */
518
  public function where( $key, $value = null ) {
519
  $call_args = func_get_args();
520
+
521
+ return call_user_func_array( [ $this, 'by' ], $call_args );
522
  }
523
 
524
  /**
666
  */
667
  public function all() {
668
  if ( $this->void_query ) {
669
+ return [];
670
  }
671
 
672
  $query = $this->build_query();
707
  */
708
  $formatted = $return_ids
709
  ? $results
710
+ : array_filter( array_map( [ $this, 'format_item' ], $results ) );
711
 
712
  // Reset the fields if required.
713
  $query->set( 'fields', $original_fields_value );
738
  public function order( $order = 'ASC' ) {
739
  $order = strtoupper( $order );
740
 
741
+ if ( ! in_array( $order, [ 'ASC', 'DESC' ], true ) ) {
742
  return $this;
743
  }
744
 
770
  * {@inheritdoc}
771
  */
772
  public function permission( $permission ) {
773
+ if ( ! in_array( $permission, [ self::PERMISSION_READABLE, self::PERMISSION_EDITABLE ], true ) ) {
774
  return $this;
775
  }
776
 
946
  * {@inheritdoc}
947
  */
948
  public function nth( $n ) {
949
+ $per_page = (int) Tribe__Utils__Array::get_in_any( [
950
  $this->query_args,
951
  $this->default_args,
952
+ ], 'posts_per_page', get_option( 'posts_per_page' ) );
953
 
954
  if ( - 1 !== $per_page && $n > $per_page ) {
955
  return null;
1026
  $matching_ids = $this->get_ids();
1027
 
1028
  if ( empty( $matching_ids ) ) {
1029
+ return [];
1030
  }
1031
 
1032
  $spliced = array_splice( $matching_ids, 0, $n );
1033
 
1034
+ return $return_ids ? $spliced : array_map( [ $this, 'format_item' ], $spliced );
1035
  }
1036
 
1037
  /**
1141
  */
1142
  $this->query_args = array_merge( $this->query_args, $query_modifier );
1143
  } else {
 
 
 
 
 
 
 
 
 
1144
  /**
1145
  * We do a recursive merge to allow "stacking" of same kind of queries;
1146
+ * e.g. two or more `tax_query` or `meta_query` entries should merge into one.
1147
  */
1148
+ $this->query_args = Arr::merge_recursive_query_vars( $this->query_args, $query_modifier );
1149
  }
1150
  } else {
1151
  /**
1193
  if ( $this->has_default_modifier( $key ) ) {
1194
  // let's use the default filters normalizing the key first
1195
  $call_args[0] = $this->normalize_key( $key );
1196
+ $query_modifier = call_user_func_array( [ $this, 'apply_default_modifier' ], $call_args );
1197
  } elseif ( 2 === count( $call_args ) ) {
1198
  // Pass query argument $key with the single value argument.
1199
+ $query_modifier = [
1200
  $key => $call_args[1],
1201
+ ];
1202
  } else {
1203
  // More than two $call_args were sent (key, value), assume it was meant for a filter that was not defined yet.
1204
  throw Tribe__Repository__Usage_Error::because_the_read_filter_is_not_defined( $key, $this );
1205
  }
1206
  } else {
1207
+ $query_modifier = call_user_func_array( [ $this, 'apply_modifier' ], $call_args );
1208
  }
1209
 
1210
  return $query_modifier;
1254
  // `ID` to `id`
1255
  $normalized = strtolower( $key );
1256
 
1257
+ $post_prefixed = [
1258
  'password',
1259
  'name__in',
1260
  '_in',
1269
  'modified',
1270
  'modified_gmt',
1271
  'content_filtered',
1272
+ ];
1273
 
1274
  if ( in_array( $key, $post_prefixed, true ) ) {
1275
  $normalized = 'post_' . $key;
1327
  $to_update = $this->get_ids();
1328
 
1329
  if ( empty( $to_update ) ) {
1330
+ return $return_promise ? new Tribe__Promise() : [];
1331
  }
1332
 
1333
+ $exit = [];
1334
+ $postarrs = [];
1335
 
1336
  foreach ( $to_update as $id ) {
1337
  $postarrs[ $id ] = $this->filter_postarr_for_update( $this->build_postarr( $id ), $id );
1362
  */
1363
  public function get_ids() {
1364
  if ( $this->void_query ) {
1365
+ return [];
1366
  }
1367
 
1368
 
1394
  * Extending classes might use this method to run sub-queries
1395
  * and signal a void query; let's return an empty array.
1396
  */
1397
+ return [];
1398
  }
1399
  }
1400
 
1540
  public function where_meta_related_by( $meta_keys, $compare, $field = null, $values = null ) {
1541
  $meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys );
1542
 
1543
+ if ( ! in_array( $compare, [ 'EXISTS', 'NOT EXISTS' ], true ) ) {
1544
  if ( empty( $field ) || empty( $values ) ) {
1545
  throw Tribe__Repository__Usage_Error::because_this_comparison_operator_requires_fields_and_values( $meta_keys, $compare, $this );
1546
  }
1598
  public function where_meta_related_by_meta( $meta_keys, $compare, $meta_field = null, $meta_values = null, $or_not_exists = false ) {
1599
  $meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys );
1600
 
1601
+ if ( ! in_array( $compare, [ 'EXISTS', 'NOT EXISTS' ], true ) ) {
1602
  if ( empty( $meta_field ) || empty( $meta_values ) ) {
1603
  throw Tribe__Repository__Usage_Error::because_this_comparison_operator_requires_fields_and_values( $meta_keys, $compare, $this );
1604
  }
1685
  $buffered_count = count( $buffered );
1686
 
1687
  foreach ( $all_callbacks as $c ) {
1688
+ call_user_func_array( [ $this, $c[0] ], array_slice( $c, 1 ) );
1689
 
1690
  if ( $buffered_count === count( $this->filter_query->get_buffered_where_clauses() ) ) {
1691
  throw Tribe__Repository__Usage_Error::because_where_or_should_only_be_used_with_methods_that_add_where_clauses( $c, $this );
1726
  * @param string|null $by The ->by() lookup to use (defaults to meta_regexp_or_like).
1727
  */
1728
  public function add_simple_meta_schema_entry( $key, $meta_key, $by = null ) {
1729
+ $this->schema[ $key ] = [ $this, 'filter_by_simple_meta_schema' ];
1730
 
1731
+ $this->simple_meta_schema[ $key ] = [
1732
  'meta_key' => $meta_key,
1733
  'by' => $by,
1734
+ ];
1735
  }
1736
 
1737
  /**
1744
  * @param string|null $by The ->by() lookup to use (defaults to term_in).
1745
  */
1746
  public function add_simple_tax_schema_entry( $key, $taxonomy, $by = null ) {
1747
+ $this->schema[ $key ] = [ $this, 'filter_by_simple_tax_schema' ];
1748
 
1749
+ $this->simple_tax_schema[ $key ] = [
1750
  'taxonomy' => $taxonomy,
1751
  'by' => $by,
1752
+ ];
1753
  }
1754
 
1755
  /**
1771
  * @throws Tribe__Repository__Usage_Error If a filter is called with wrong arguments.
1772
  */
1773
  protected function apply_default_modifier( $key, $value ) {
1774
+ $args = [];
1775
 
1776
  $call_args = func_get_args();
1777
  $arg_1 = isset( $call_args[2] ) ? $call_args[2] : null;
1783
  switch ( $key ) {
1784
  default:
1785
  // leverage built-in WP_Query filters
1786
+ $args = [ $key => $value ];
1787
  break;
1788
  case 'ID':
1789
  case 'id':
1790
+ $args = [ 'p' => $value ];
1791
  break;
1792
  case 'search':
1793
+ $args = [ 's' => $value ];
1794
  break;
1795
  case 'post_status':
1796
  $this->query_args['post_status'] = (array) $value;
1820
  break;
1821
  case 'to_ping':
1822
  $this->filter_query->to_get_posts_to_ping( $value );
1823
+ $args = [ 'to_ping' => $value ];
1824
  break;
1825
  case 'post_modified':
1826
  $args = $this->get_posts_after( $value, 'post_modified' );
1835
  $this->filter_query->to_get_posts_with_guid_like( $value );
1836
  break;
1837
  case 'menu_order':
1838
+ $args = [ 'menu_order' => $value ];
1839
  break;
1840
  case 'meta':
1841
  case 'meta_equals':
1997
  * @return array
1998
  */
1999
  protected function get_posts_after( $value, $column = 'post_date' ) {
2000
+ $timezone = in_array( $column, [ 'post_date_gmt', 'post_modified_gmt' ], true )
2001
  ? 'UTC'
2002
  : Tribe__Timezones::generate_timezone_string_from_utc_offset( Tribe__Timezones::wp_timezone_string() );
2003
 
2009
 
2010
  $array_key = sprintf( '%s-after', $column );
2011
 
2012
+ return [
2013
+ 'date_query' => [
2014
  'relation' => 'AND',
2015
+ $array_key => [
2016
  'inclusive' => true,
2017
  'column' => $column,
2018
  'after' => $date->format( 'Y-m-d H:i:s' ),
2019
+ ],
2020
+ ],
2021
+ ];
2022
  }
2023
 
2024
  /**
2032
  * @return array
2033
  */
2034
  protected function get_posts_before( $value, $column = 'post_date' ) {
2035
+ $timezone = in_array( $column, [ 'post_date_gmt', 'post_modified_gmt' ], true )
2036
  ? 'UTC'
2037
  : Tribe__Timezones::generate_timezone_string_from_utc_offset( Tribe__Timezones::wp_timezone_string() );
2038
 
2044
 
2045
  $array_key = sprintf( '%s-before', $column );
2046
 
2047
+ return [
2048
+ 'date_query' => [
2049
  'relation' => 'AND',
2050
+ $array_key => [
2051
  'inclusive' => true,
2052
  'column' => $column,
2053
  'before' => $date->format( 'Y-m-d H:i:s' ),
2054
+ ],
2055
+ ],
2056
+ ];
2057
  }
2058
 
2059
  /**
2078
  if ( count( $meta_keys ) === 1 ) {
2079
  $array_key = $this->sql_slug( $meta_keys[0], $postfix );
2080
 
2081
+ $args = [
2082
+ 'meta_query' => [
2083
+ $array_key => [
2084
  'key' => $meta_keys[0],
2085
  'compare' => strtoupper( $compare ),
2086
+ ],
2087
+ ],
2088
+ ];
2089
 
2090
+ if ( ! in_array( $compare, [ 'EXISTS', 'NOT EXISTS' ], true ) ) {
2091
  $args['meta_query'][ $array_key ]['value'] = $meta_value;
2092
  }
2093
 
2174
  * @return array
2175
  */
2176
  protected function build_tax_query( $taxonomy, $terms, $field, $operator ) {
2177
+ if ( in_array( $operator, [ 'EXISTS', 'NOT EXISTS' ], true ) ) {
2178
  $array_key = $this->sql_slug( $taxonomy, $operator );
2179
  } else {
2180
  $array_key = $this->sql_slug( $taxonomy, $field, $operator );
2181
  }
2182
 
2183
+ return [
2184
+ 'tax_query' => [
2185
+ $array_key => [
2186
  'taxonomy' => $taxonomy,
2187
  'field' => $field,
2188
  'terms' => $terms,
2189
  'operator' => strtoupper( $operator ),
2190
+ ],
2191
+ ],
2192
+ ];
2193
  }
2194
 
2195
  /**
2233
  public function prepare_interval( $values, $format = '%s', $operator = 'IN' ) {
2234
  $values = Tribe__Utils__Array::list_to_array( $values );
2235
 
2236
+ $prepared = [];
2237
  foreach ( $values as $value ) {
2238
  $prepared[] = $this->prepare_value( $value, $format );
2239
  }
2240
 
2241
+ return in_array( $operator, [ 'BETWEEN', 'NOT BETWEEN' ] )
2242
  ? sprintf( '%s AND %s', $prepared[0], $prepared[1] )
2243
  : sprintf( '(%s)', implode( ',', $prepared ) );
2244
  }
2439
  $to_delete = $this->get_ids();
2440
 
2441
  if ( empty( $to_delete ) ) {
2442
+ return $return_promise ? new Tribe__Promise() : [];
2443
  }
2444
 
2445
 
2869
  * {@inheritdoc}
2870
  */
2871
  public function build_postarr( $id = null ) {
2872
+ $postarr = [
2873
+ 'tax_input' => [],
2874
+ 'meta_input' => [],
2875
+ ];
2876
 
2877
  /*
2878
  * The check is lax here by design: we leave space for the client code
3049
  /**
3050
  * {@inheritdoc}
3051
  */
3052
+ public function filter( $args = [], $operator = 'AND' ) {
3053
  $list = new WP_List_Util( $this->all() );
3054
 
3055
  return $list->filter( $args, $operator );
3058
  /**
3059
  * {@inheritdoc}
3060
  */
3061
+ public function sort( $orderby = [], $order = 'ASC', $preserve_keys = false ) {
3062
  $list = new WP_List_Util( $this->all() );
3063
 
3064
  return $list->sort( $orderby, $order, $preserve_keys );
common/src/Tribe/Repository/Core_Read_Interface.php CHANGED
@@ -362,7 +362,7 @@ interface Core_Read_Interface {
362
  *
363
  * @see \wp_list_filter()
364
  */
365
- public function filter( $args = array(), $operator = 'AND' );
366
 
367
  /**
368
  * Sorts the results according to the specified criteria.
@@ -382,7 +382,7 @@ interface Core_Read_Interface {
382
  *
383
  * @see \wp_list_sort()
384
  */
385
- public function sort( $orderby = array(), $order = 'ASC', $preserve_keys = false );
386
 
387
  /**
388
  * Builds a collection on the result of the `all()` method call.
362
  *
363
  * @see \wp_list_filter()
364
  */
365
+ public function filter( $args = [], $operator = 'AND' );
366
 
367
  /**
368
  * Sorts the results according to the specified criteria.
382
  *
383
  * @see \wp_list_sort()
384
  */
385
+ public function sort( $orderby = [], $order = 'ASC', $preserve_keys = false );
386
 
387
  /**
388
  * Builds a collection on the result of the `all()` method call.
common/src/Tribe/Repository/Decorator.php CHANGED
@@ -51,7 +51,7 @@ abstract class Tribe__Repository__Decorator implements Tribe__Repository__Interf
51
  */
52
  public function by( $key, $value = null ) {
53
  $call_args = func_get_args();
54
- call_user_func_array( array( $this->decorated, 'by' ), $call_args );
55
 
56
  return $this;
57
  }
@@ -61,7 +61,7 @@ abstract class Tribe__Repository__Decorator implements Tribe__Repository__Interf
61
  */
62
  public function where( $key, $value = null ) {
63
  $call_args = func_get_args();
64
- call_user_func_array( array( $this->decorated, 'where' ), $call_args );
65
 
66
  return $this;
67
  }
@@ -322,7 +322,7 @@ abstract class Tribe__Repository__Decorator implements Tribe__Repository__Interf
322
  */
323
  public function where_or( $callbacks ) {
324
  $call_args = func_get_args();
325
- call_user_func_array( array( $this->decorated, 'where_or' ), $call_args );
326
 
327
  return $this;
328
  }
@@ -545,14 +545,14 @@ abstract class Tribe__Repository__Decorator implements Tribe__Repository__Interf
545
  /**
546
  * {@inheritdoc}
547
  */
548
- public function filter( $orderby = array(), $order = 'ASC', $preserve_keys = false ) {
549
  return $this->decorated->filter( $orderby, $order, $preserve_keys );
550
  }
551
 
552
  /**
553
  * {@inheritdoc}
554
  */
555
- public function sort( $orderby = array(), $order = 'ASC', $preserve_keys = false ) {
556
  return $this->decorated->sort( $orderby, $order, $preserve_keys );
557
  }
558
 
51
  */
52
  public function by( $key, $value = null ) {
53
  $call_args = func_get_args();
54
+ call_user_func_array( [ $this->decorated, 'by' ], $call_args );
55
 
56
  return $this;
57
  }
61
  */
62
  public function where( $key, $value = null ) {
63
  $call_args = func_get_args();
64
+ call_user_func_array( [ $this->decorated, 'where' ], $call_args );
65
 
66
  return $this;
67
  }
322
  */
323
  public function where_or( $callbacks ) {
324
  $call_args = func_get_args();
325
+ call_user_func_array( [ $this->decorated, 'where_or' ], $call_args );
326
 
327
  return $this;
328
  }
545
  /**
546
  * {@inheritdoc}
547
  */
548
+ public function filter( $orderby = [], $order = 'ASC', $preserve_keys = false ) {
549
  return $this->decorated->filter( $orderby, $order, $preserve_keys );
550
  }
551
 
552
  /**
553
  * {@inheritdoc}
554
  */
555
+ public function sort( $orderby = [], $order = 'ASC', $preserve_keys = false ) {
556
  return $this->decorated->sort( $orderby, $order, $preserve_keys );
557
  }
558
 
common/src/Tribe/Repository/Query_Filters.php CHANGED
@@ -17,16 +17,16 @@ class Tribe__Repository__Query_Filters {
17
  /**
18
  * @var array
19
  */
20
- protected static $initial_query_vars = array(
21
- 'like' => array(
22
- 'post_title' => array(),
23
- 'post_content' => array(),
24
- 'post_excerpt' => array(),
25
- ),
26
- 'status' => array(),
27
- 'join' => array(),
28
- 'where' => array(),
29
- );
30
 
31
  /**
32
  * An array of the filters that can be set and unset by id.
@@ -55,7 +55,7 @@ class Tribe__Repository__Query_Filters {
55
  /**
56
  * @var array A list of the filters this class has added.
57
  */
58
- protected $active_filters = array();
59
 
60
  /**
61
  * @var bool
@@ -65,7 +65,7 @@ class Tribe__Repository__Query_Filters {
65
  /**
66
  * @var array
67
  */
68
- protected $buffered_where_clauses = array();
69
 
70
  /**
71
  * Stores the last request run by the current query.
@@ -99,38 +99,38 @@ class Tribe__Repository__Query_Filters {
99
  $values = Tribe__Utils__Array::list_to_array( $values );
100
 
101
  if ( empty( $meta_keys ) || count( $values ) === 0 ) {
102
- return array();
103
  }
104
 
105
- $args = array(
106
- 'meta_query' => array(
107
- $query_slug => array(
108
  'relation' => 'AND',
109
- ),
110
- ),
111
- );
112
 
113
  foreach ( $meta_keys as $key ) {
114
- $args['meta_query'][ $query_slug ][ $key ] = array(
115
- 'not-exists' => array(
116
  'key' => $key,
117
  'compare' => 'NOT EXISTS',
118
- ),
119
  'relation' => 'OR',
120
- );
121
 
122
  if ( count( $values ) > 1 ) {
123
- $args['meta_query'][ $query_slug ][ $key ]['not-in'] = array(
124
  'key' => $key,
125
  'compare' => 'NOT IN',
126
  'value' => $values,
127
- );
128
  } else {
129
- $args['meta_query'][ $query_slug ][ $key ]['not-equals'] = array(
130
  'key' => $key,
131
  'value' => $values[0],
132
  'compare' => '!=',
133
- );
134
  }
135
  }
136
 
@@ -153,30 +153,30 @@ class Tribe__Repository__Query_Filters {
153
  $values = Tribe__Utils__Array::list_to_array( $values );
154
 
155
  if ( empty( $meta_keys ) || count( $values ) === 0 ) {
156
- return array();
157
  }
158
 
159
- $args = array(
160
- 'meta_query' => array(
161
- $query_slug => array(
162
  'relation' => 'OR',
163
- ),
164
- ),
165
- );
166
 
167
  foreach ( $meta_keys as $meta_key ) {
168
  if ( count( $values ) > 1 ) {
169
- $args['meta_query'][ $query_slug ][ $meta_key ] = array(
170
  'key' => $meta_key,
171
  'compare' => 'IN',
172
  'value' => $values,
173
- );
174
  } else {
175
- $args['meta_query'][ $query_slug ][ $meta_key ] = array(
176
  'key' => $meta_key,
177
  'compare' => '=',
178
  'value' => $values[0],
179
- );
180
  }
181
  }
182
 
@@ -197,22 +197,22 @@ class Tribe__Repository__Query_Filters {
197
  $meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys );
198
 
199
  if ( empty( $meta_keys ) ) {
200
- return array();
201
  }
202
 
203
- $args = array(
204
- 'meta_query' => array(
205
- $query_slug => array(
206
  'relation' => 'OR',
207
- ),
208
- ),
209
- );
210
 
211
  foreach ( $meta_keys as $meta_key ) {
212
- $args['meta_query'][ $query_slug ][ $meta_key ] = array(
213
  'key' => $meta_key,
214
  'compare' => 'EXISTS',
215
- );
216
  }
217
 
218
  return $args;
@@ -235,35 +235,35 @@ class Tribe__Repository__Query_Filters {
235
  $values = Tribe__Utils__Array::list_to_array( $values );
236
 
237
  if ( empty( $meta_keys ) || count( $values ) === 0 ) {
238
- return array();
239
  }
240
 
241
- $args = array(
242
- 'meta_query' => array(
243
- $query_slug => array(
244
  'relation' => 'AND',
245
- ),
246
- ),
247
- );
248
 
249
  foreach ( $meta_keys as $meta_key ) {
250
- $args['meta_query'][ $query_slug ][ $meta_key ]['does-not-exist'] = array(
251
  'key' => $meta_key,
252
  'compare' => 'NOT EXISTS',
253
- );
254
  $args['meta_query'][ $query_slug ][ $meta_key ]['relation'] = 'OR';
255
  if ( count( $values ) > 1 ) {
256
- $args['meta_query'][ $query_slug ][ $meta_key ]['in'] = array(
257
  'key' => $meta_key,
258
  'compare' => 'IN',
259
  'value' => $values,
260
- );
261
  } else {
262
- $args['meta_query'][ $query_slug ][ $meta_key ]['equals'] = array(
263
  'key' => $meta_key,
264
  'compare' => '=',
265
  'value' => $values[0],
266
- );
267
  }
268
  }
269
 
@@ -287,36 +287,36 @@ class Tribe__Repository__Query_Filters {
287
  $values = Tribe__Utils__Array::list_to_array( $values );
288
 
289
  if ( empty( $meta_keys ) || count( $values ) === 0 ) {
290
- return array();
291
  }
292
 
293
- $args = array(
294
- 'meta_query' => array(
295
- $query_slug => array(
296
  'relation' => 'AND',
297
- ),
298
- ),
299
- );
300
 
301
  foreach ( $meta_keys as $meta_key ) {
302
- $args['meta_query'][ $query_slug ][ $meta_key ]['does-not-exist'] = array(
303
  'key' => $meta_key,
304
  'compare' => 'NOT EXISTS',
305
- );
306
  $args['meta_query'][ $query_slug ][ $meta_key ]['relation'] = 'OR';
307
 
308
  if ( count( $values ) > 1 ) {
309
- $args['meta_query'][ $query_slug ][ $meta_key ]['not-in'] = array(
310
  'key' => $meta_key,
311
  'compare' => 'NOT IN',
312
  'value' => $values,
313
- );
314
  } else {
315
- $args['meta_query'][ $query_slug ][ $meta_key ]['not-equals'] = array(
316
  'key' => $meta_key,
317
  'compare' => '!=',
318
  'value' => $values[0],
319
- );
320
  }
321
  }
322
 
@@ -366,11 +366,11 @@ class Tribe__Repository__Query_Filters {
366
  global $wpdb;
367
 
368
  $like = $wpdb->esc_like( $entry );
369
- $variations = array(
370
  $wpdb->prepare( "{$wpdb->posts}.{$field} LIKE %s ", "{$like}%" ),
371
  $wpdb->prepare( "{$wpdb->posts}.{$field} LIKE %s ", "%{$like}%" ),
372
  $wpdb->prepare( "{$wpdb->posts}.{$field} LIKE %s ", "%{$like}" ),
373
- );
374
 
375
  return ' AND (' . implode( ' OR ', $variations ) . ')';
376
  }
@@ -430,7 +430,7 @@ class Tribe__Repository__Query_Filters {
430
  $matching_ids = $wpdb->get_col( $relation_query );
431
 
432
  if ( empty( $matching_ids ) ) {
433
- $query->posts = array();
434
  $filtered_found_posts = 0;
435
  break;
436
  }
@@ -438,7 +438,7 @@ class Tribe__Repository__Query_Filters {
438
  if ( $ids_only ) {
439
  $query->posts = array_intersect( $query->posts, $matching_ids );
440
  } else {
441
- $updated_query_posts = array();
442
  foreach ( $query->posts as $this_post ) {
443
  if ( in_array( $this_post->ID, $matching_ids ) ) {
444
  $updated_query_posts[] = $this_post;
@@ -475,8 +475,8 @@ class Tribe__Repository__Query_Filters {
475
  public function to_get_posts_with_title_like( $value ) {
476
  $this->query_vars['like']['post_title'][] = $value;
477
 
478
- if ( ! has_filter( 'posts_where', array( $this, 'filter_by_like' ) ) ) {
479
- $this->add_filter( 'posts_where', array( $this, 'filter_by_like' ), 10, 2 );
480
  }
481
  }
482
 
@@ -492,7 +492,7 @@ class Tribe__Repository__Query_Filters {
492
  * @param int $accepted_args
493
  */
494
  protected function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
495
- $this->active_filters[] = array( $tag, $function_to_add, $priority );
496
  add_filter( $tag, $function_to_add, $priority, $accepted_args );
497
  }
498
 
@@ -506,8 +506,8 @@ class Tribe__Repository__Query_Filters {
506
  public function to_get_posts_with_content_like( $value ) {
507
  $this->query_vars['like']['post_content'][] = $value;
508
 
509
- if ( ! has_filter( 'posts_where', array( $this, 'filter_by_like' ) ) ) {
510
- $this->add_filter( 'posts_where', array( $this, 'filter_by_like' ), 10, 2 );
511
  }
512
  }
513
 
@@ -521,8 +521,8 @@ class Tribe__Repository__Query_Filters {
521
  public function to_get_posts_with_excerpt_like( $value ) {
522
  $this->query_vars['like']['post_excerpt'] = $value;
523
 
524
- if ( ! has_filter( 'posts_where', array( $this, 'filter_by_like' ) ) ) {
525
- add_filter( 'posts_where', array( $this, 'filter_by_like' ), 10, 2 );
526
  }
527
  }
528
 
@@ -536,8 +536,8 @@ class Tribe__Repository__Query_Filters {
536
  public function to_get_posts_with_filtered_content_like( $value ) {
537
  $this->query_vars['like']['post_content_filtered'][] = $value;
538
 
539
- if ( ! has_filter( 'posts_where', array( $this, 'filter_by_like' ) ) ) {
540
- add_filter( 'posts_where', array( $this, 'filter_by_like' ), 10, 2 );
541
  }
542
  }
543
 
@@ -551,8 +551,8 @@ class Tribe__Repository__Query_Filters {
551
  public function to_get_posts_with_guid_like( $value ) {
552
  $this->query_vars['like']['guid'][] = $value;
553
 
554
- if ( ! has_filter( 'posts_where', array( $this, 'filter_by_like' ) ) ) {
555
- add_filter( 'posts_where', array( $this, 'filter_by_like' ), 10, 2 );
556
  }
557
  }
558
 
@@ -566,8 +566,8 @@ class Tribe__Repository__Query_Filters {
566
  public function to_get_posts_to_ping( $value ) {
567
  $this->query_vars['to_ping'] = $value;
568
 
569
- if ( ! has_filter( 'posts_where', array( $this, 'filter_by_to_ping' ) ) ) {
570
- add_filter( 'posts_where', array( $this, 'filter_by_to_ping' ), 10, 2 );
571
  }
572
  }
573
 
@@ -666,8 +666,8 @@ class Tribe__Repository__Query_Filters {
666
  $this->query_vars['where'][] = '(' . $where_clause . ')';
667
  }
668
 
669
- if ( ! has_filter( 'posts_where', array( $this, 'filter_posts_where' ) ) ) {
670
- add_filter( 'posts_where', array( $this, 'filter_posts_where' ), 10, 2 );
671
  }
672
  }
673
  }
@@ -690,8 +690,8 @@ class Tribe__Repository__Query_Filters {
690
  $this->query_vars['join'][] = $join_clause;
691
  }
692
 
693
- if ( ! has_filter( 'posts_join', array( $this, 'filter_posts_join' ) ) ) {
694
- add_filter( 'posts_join', array( $this, 'filter_posts_join' ), 10, 2 );
695
  }
696
  }
697
 
@@ -738,8 +738,8 @@ class Tribe__Repository__Query_Filters {
738
  $this->query_vars[ $orderby_key ][ $id ] = array_merge( $this->query_vars[ $orderby_key ][ $id ], $entries );
739
  }
740
 
741
- if ( ! has_filter( 'posts_orderby', array( $this, 'filter_posts_orderby' ) ) ) {
742
- add_filter( 'posts_orderby', array( $this, 'filter_posts_orderby' ), 10, 2 );
743
  }
744
  }
745
 
@@ -762,8 +762,8 @@ class Tribe__Repository__Query_Filters {
762
  $this->query_vars['fields'][] = $field;
763
  }
764
 
765
- if ( ! has_filter( 'posts_fields', array( $this, 'filter_posts_fields' ) ) ) {
766
- add_filter( 'posts_fields', array( $this, 'filter_posts_fields' ), 10, 2 );
767
  }
768
  }
769
 
@@ -795,7 +795,7 @@ class Tribe__Repository__Query_Filters {
795
 
796
  if ( $get_clean ) {
797
  $this->buffer_where_clauses = false;
798
- $this->buffered_where_clauses = array();
799
  }
800
 
801
  return $clauses;
@@ -846,7 +846,7 @@ class Tribe__Repository__Query_Filters {
846
  global $wpdb;
847
 
848
  foreach ( $input as $string ) {
849
- $buffer[] = is_array( $string ) ? $string : array( $string );
850
  }
851
 
852
  $buffer = array_unique( call_user_func_array( 'array_merge', $buffer ) );
17
  /**
18
  * @var array
19
  */
20
+ protected static $initial_query_vars = [
21
+ 'like' => [
22
+ 'post_title' => [],
23
+ 'post_content' => [],
24
+ 'post_excerpt' => [],
25
+ ],
26
+ 'status' => [],
27
+ 'join' => [],
28
+ 'where' => [],
29
+ ];
30
 
31
  /**
32
  * An array of the filters that can be set and unset by id.
55
  /**
56
  * @var array A list of the filters this class has added.
57
  */
58
+ protected $active_filters = [];
59
 
60
  /**
61
  * @var bool
65
  /**
66
  * @var array
67
  */
68
+ protected $buffered_where_clauses = [];
69
 
70
  /**
71
  * Stores the last request run by the current query.
99
  $values = Tribe__Utils__Array::list_to_array( $values );
100
 
101
  if ( empty( $meta_keys ) || count( $values ) === 0 ) {
102
+ return [];
103
  }
104
 
105
+ $args = [
106
+ 'meta_query' => [
107
+ $query_slug => [
108
  'relation' => 'AND',
109
+ ],
110
+ ],
111
+ ];
112
 
113
  foreach ( $meta_keys as $key ) {
114
+ $args['meta_query'][ $query_slug ][ $key ] = [
115
+ 'not-exists' => [
116
  'key' => $key,
117
  'compare' => 'NOT EXISTS',
118
+ ],
119
  'relation' => 'OR',
120
+ ];
121
 
122
  if ( count( $values ) > 1 ) {
123
+ $args['meta_query'][ $query_slug ][ $key ]['not-in'] = [
124
  'key' => $key,
125
  'compare' => 'NOT IN',
126
  'value' => $values,
127
+ ];
128
  } else {
129
+ $args['meta_query'][ $query_slug ][ $key ]['not-equals'] = [
130
  'key' => $key,
131
  'value' => $values[0],
132
  'compare' => '!=',
133
+ ];
134
  }
135
  }
136
 
153
  $values = Tribe__Utils__Array::list_to_array( $values );
154
 
155
  if ( empty( $meta_keys ) || count( $values ) === 0 ) {
156
+ return [];
157
  }
158
 
159
+ $args = [
160
+ 'meta_query' => [
161
+ $query_slug => [
162
  'relation' => 'OR',
163
+ ],
164
+ ],
165
+ ];
166
 
167
  foreach ( $meta_keys as $meta_key ) {
168
  if ( count( $values ) > 1 ) {
169
+ $args['meta_query'][ $query_slug ][ $meta_key ] = [
170
  'key' => $meta_key,
171
  'compare' => 'IN',
172
  'value' => $values,
173
+ ];
174
  } else {
175
+ $args['meta_query'][ $query_slug ][ $meta_key ] = [
176
  'key' => $meta_key,
177
  'compare' => '=',
178
  'value' => $values[0],
179
+ ];
180
  }
181
  }
182
 
197
  $meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys );
198
 
199
  if ( empty( $meta_keys ) ) {
200
+ return [];
201
  }
202
 
203
+ $args = [
204
+ 'meta_query' => [
205
+ $query_slug => [
206
  'relation' => 'OR',
207
+ ],
208
+ ],
209
+ ];
210
 
211
  foreach ( $meta_keys as $meta_key ) {
212
+ $args['meta_query'][ $query_slug ][ $meta_key ] = [
213
  'key' => $meta_key,
214
  'compare' => 'EXISTS',
215
+ ];
216
  }
217
 
218
  return $args;
235
  $values = Tribe__Utils__Array::list_to_array( $values );
236
 
237
  if ( empty( $meta_keys ) || count( $values ) === 0 ) {
238
+ return [];
239
  }
240
 
241
+ $args = [
242
+ 'meta_query' => [
243
+ $query_slug => [
244
  'relation' => 'AND',
245
+ ],
246
+ ],
247
+ ];
248
 
249
  foreach ( $meta_keys as $meta_key ) {
250
+ $args['meta_query'][ $query_slug ][ $meta_key ]['does-not-exist'] = [
251
  'key' => $meta_key,
252
  'compare' => 'NOT EXISTS',
253
+ ];
254
  $args['meta_query'][ $query_slug ][ $meta_key ]['relation'] = 'OR';
255
  if ( count( $values ) > 1 ) {
256
+ $args['meta_query'][ $query_slug ][ $meta_key ]['in'] = [
257
  'key' => $meta_key,
258
  'compare' => 'IN',
259
  'value' => $values,
260
+ ];
261
  } else {
262
+ $args['meta_query'][ $query_slug ][ $meta_key ]['equals'] = [
263
  'key' => $meta_key,
264
  'compare' => '=',
265
  'value' => $values[0],
266
+ ];
267
  }
268
  }
269
 
287
  $values = Tribe__Utils__Array::list_to_array( $values );
288
 
289
  if ( empty( $meta_keys ) || count( $values ) === 0 ) {
290
+ return [];
291
  }
292
 
293
+ $args = [
294
+ 'meta_query' => [
295
+ $query_slug => [
296
  'relation' => 'AND',
297
+ ],
298
+ ],
299
+ ];
300
 
301
  foreach ( $meta_keys as $meta_key ) {
302
+ $args['meta_query'][ $query_slug ][ $meta_key ]['does-not-exist'] = [
303
  'key' => $meta_key,
304
  'compare' => 'NOT EXISTS',
305
+ ];
306
  $args['meta_query'][ $query_slug ][ $meta_key ]['relation'] = 'OR';
307
 
308
  if ( count( $values ) > 1 ) {
309
+ $args['meta_query'][ $query_slug ][ $meta_key ]['not-in'] = [
310
  'key' => $meta_key,
311
  'compare' => 'NOT IN',
312
  'value' => $values,
313
+ ];
314
  } else {
315
+ $args['meta_query'][ $query_slug ][ $meta_key ]['not-equals'] = [
316
  'key' => $meta_key,
317
  'compare' => '!=',
318
  'value' => $values[0],
319
+ ];
320
  }
321
  }
322
 
366
  global $wpdb;
367
 
368
  $like = $wpdb->esc_like( $entry );
369
+ $variations = [
370
  $wpdb->prepare( "{$wpdb->posts}.{$field} LIKE %s ", "{$like}%" ),
371
  $wpdb->prepare( "{$wpdb->posts}.{$field} LIKE %s ", "%{$like}%" ),
372
  $wpdb->prepare( "{$wpdb->posts}.{$field} LIKE %s ", "%{$like}" ),
373
+ ];
374
 
375
  return ' AND (' . implode( ' OR ', $variations ) . ')';
376
  }
430
  $matching_ids = $wpdb->get_col( $relation_query );
431
 
432
  if ( empty( $matching_ids ) ) {
433
+ $query->posts = [];
434
  $filtered_found_posts = 0;
435
  break;
436
  }
438
  if ( $ids_only ) {
439
  $query->posts = array_intersect( $query->posts, $matching_ids );
440
  } else {
441
+ $updated_query_posts = [];
442
  foreach ( $query->posts as $this_post ) {
443
  if ( in_array( $this_post->ID, $matching_ids ) ) {
444
  $updated_query_posts[] = $this_post;
475
  public function to_get_posts_with_title_like( $value ) {
476
  $this->query_vars['like']['post_title'][] = $value;
477
 
478
+ if ( ! has_filter( 'posts_where', [ $this, 'filter_by_like' ] ) ) {
479
+ $this->add_filter( 'posts_where', [ $this, 'filter_by_like' ], 10, 2 );
480
  }
481
  }
482
 
492
  * @param int $accepted_args
493
  */
494
  protected function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
495
+ $this->active_filters[] = [ $tag, $function_to_add, $priority ];
496
  add_filter( $tag, $function_to_add, $priority, $accepted_args );
497
  }
498
 
506
  public function to_get_posts_with_content_like( $value ) {
507
  $this->query_vars['like']['post_content'][] = $value;
508
 
509
+ if ( ! has_filter( 'posts_where', [ $this, 'filter_by_like' ] ) ) {
510
+ $this->add_filter( 'posts_where', [ $this, 'filter_by_like' ], 10, 2 );
511
  }
512
  }
513
 
521
  public function to_get_posts_with_excerpt_like( $value ) {
522
  $this->query_vars['like']['post_excerpt'] = $value;
523
 
524
+ if ( ! has_filter( 'posts_where', [ $this, 'filter_by_like' ] ) ) {
525
+ add_filter( 'posts_where', [ $this, 'filter_by_like' ], 10, 2 );
526
  }
527
  }
528
 
536
  public function to_get_posts_with_filtered_content_like( $value ) {
537
  $this->query_vars['like']['post_content_filtered'][] = $value;
538
 
539
+ if ( ! has_filter( 'posts_where', [ $this, 'filter_by_like' ] ) ) {
540
+ add_filter( 'posts_where', [ $this, 'filter_by_like' ], 10, 2 );
541
  }
542
  }
543
 
551
  public function to_get_posts_with_guid_like( $value ) {
552
  $this->query_vars['like']['guid'][] = $value;
553
 
554
+ if ( ! has_filter( 'posts_where', [ $this, 'filter_by_like' ] ) ) {
555
+ add_filter( 'posts_where', [ $this, 'filter_by_like' ], 10, 2 );
556
  }
557
  }
558
 
566
  public function to_get_posts_to_ping( $value ) {
567
  $this->query_vars['to_ping'] = $value;
568
 
569
+ if ( ! has_filter( 'posts_where', [ $this, 'filter_by_to_ping' ] ) ) {
570
+ add_filter( 'posts_where', [ $this, 'filter_by_to_ping' ], 10, 2 );
571
  }
572
  }
573
 
666
  $this->query_vars['where'][] = '(' . $where_clause . ')';
667
  }
668
 
669
+ if ( ! has_filter( 'posts_where', [ $this, 'filter_posts_where' ] ) ) {
670
+ add_filter( 'posts_where', [ $this, 'filter_posts_where' ], 10, 2 );
671
  }
672
  }
673
  }
690
  $this->query_vars['join'][] = $join_clause;
691
  }
692
 
693
+ if ( ! has_filter( 'posts_join', [ $this, 'filter_posts_join' ] ) ) {
694
+ add_filter( 'posts_join', [ $this, 'filter_posts_join' ], 10, 2 );
695
  }
696
  }
697
 
738
  $this->query_vars[ $orderby_key ][ $id ] = array_merge( $this->query_vars[ $orderby_key ][ $id ], $entries );
739
  }
740
 
741
+ if ( ! has_filter( 'posts_orderby', [ $this, 'filter_posts_orderby' ] ) ) {
742
+ add_filter( 'posts_orderby', [ $this, 'filter_posts_orderby' ], 10, 2 );
743
  }
744
  }
745
 
762
  $this->query_vars['fields'][] = $field;
763
  }
764
 
765
+ if ( ! has_filter( 'posts_fields', [ $this, 'filter_posts_fields' ] ) ) {
766
+ add_filter( 'posts_fields', [ $this, 'filter_posts_fields' ], 10, 2 );
767
  }
768
  }
769
 
795
 
796
  if ( $get_clean ) {
797
  $this->buffer_where_clauses = false;
798
+ $this->buffered_where_clauses = [];
799
  }
800
 
801
  return $clauses;
846
  global $wpdb;
847
 
848
  foreach ( $input as $string ) {
849
+ $buffer[] = is_array( $string ) ? $string : [ $string ];
850
  }
851
 
852
  $buffer = array_unique( call_user_func_array( 'array_merge', $buffer ) );
common/src/Tribe/Rewrite.php CHANGED
@@ -47,14 +47,15 @@ class Tribe__Rewrite {
47
  *
48
  * @var array
49
  */
50
- public $rules = array();
51
 
52
  /**
53
  * Base slugs for rewrite urls
54
  *
55
  * @var array
56
  */
57
- public $bases = array();
 
58
  /**
59
  * After creating the Hooks on WordPress we lock the usage of the function.
60
  *
@@ -182,17 +183,17 @@ class Tribe__Rewrite {
182
  }
183
 
184
  protected function add_hooks() {
185
- add_filter( 'generate_rewrite_rules', array( $this, 'filter_generate' ) );
186
 
187
  // Remove percent Placeholders on all items
188
- add_filter( 'rewrite_rules_array', array( $this, 'remove_percent_placeholders' ), 25 );
189
 
190
  add_action( 'shutdown', [ $this, 'dump_cache' ] );
191
  }
192
 
193
  protected function remove_hooks() {
194
- remove_filter( 'generate_rewrite_rules', array( $this, 'filter_generate' ) );
195
- remove_filter( 'rewrite_rules_array', array( $this, 'remove_percent_placeholders' ), 25 );
196
 
197
  remove_action( 'shutdown', [ $this, 'dump_cache' ] );
198
  }
@@ -229,10 +230,10 @@ class Tribe__Rewrite {
229
  *
230
  * @return Tribe__Events__Rewrite
231
  */
232
- public function add( $regex, $args = array() ) {
233
  $regex = (array) $regex;
234
 
235
- $default = array();
236
  $args = array_filter( wp_parse_args( $args, $default ) );
237
 
238
  $url = add_query_arg( $args, 'index.php' );
@@ -245,7 +246,7 @@ class Tribe__Rewrite {
245
 
246
  // Add the Bases to the regex
247
  foreach ( $this->bases as $key => $value ) {
248
- $regex = str_replace( array( '{{ ' . $key . ' }}', '{{' . $key . '}}' ), $value, $regex );
249
  }
250
 
251
  // Apply the Preg Indexes to the URL
@@ -553,7 +554,8 @@ class Tribe__Rewrite {
553
  $replace
554
  );
555
 
556
- $replaced = str_replace( array_keys( $replace ), $replace, $link_template );
 
557
 
558
  // Remove trailing chars.
559
  $path = rtrim( $replaced, '?$' );
@@ -884,7 +886,7 @@ class Tribe__Rewrite {
884
  $url_components = parse_url($url);
885
  $url_path = Arr::get( $url_components, 'path', '/' );
886
  $site_path = parse_url( home_url(), PHP_URL_PATH );
887
- if ( ! ( empty( $site_path ) && '/' !== $site_path ) ) {
888
  // The current site is in a sub-directory: the site path should be dropped from the request path.
889
  $url_path = str_replace( $site_path, '', $url_path );
890
  }
47
  *
48
  * @var array
49
  */
50
+ public $rules = [];
51
 
52
  /**
53
  * Base slugs for rewrite urls
54
  *
55
  * @var array
56
  */
57
+ public $bases = [];
58
+
59
  /**
60
  * After creating the Hooks on WordPress we lock the usage of the function.
61
  *
183
  }
184
 
185
  protected function add_hooks() {
186
+ add_filter( 'generate_rewrite_rules', [ $this, 'filter_generate' ] );
187
 
188
  // Remove percent Placeholders on all items
189
+ add_filter( 'rewrite_rules_array', [ $this, 'remove_percent_placeholders' ], 25 );
190
 
191
  add_action( 'shutdown', [ $this, 'dump_cache' ] );
192
  }
193
 
194
  protected function remove_hooks() {
195
+ remove_filter( 'generate_rewrite_rules', [ $this, 'filter_generate' ] );
196
+ remove_filter( 'rewrite_rules_array', [ $this, 'remove_percent_placeholders' ], 25 );
197
 
198
  remove_action( 'shutdown', [ $this, 'dump_cache' ] );
199
  }
230
  *
231
  * @return Tribe__Events__Rewrite
232
  */
233
+ public function add( $regex, $args = [] ) {
234
  $regex = (array) $regex;
235
 
236
+ $default = [];
237
  $args = array_filter( wp_parse_args( $args, $default ) );
238
 
239
  $url = add_query_arg( $args, 'index.php' );
246
 
247
  // Add the Bases to the regex
248
  foreach ( $this->bases as $key => $value ) {
249
+ $regex = str_replace( [ '{{ ' . $key . ' }}', '{{' . $key . '}}' ], $value, $regex );
250
  }
251
 
252
  // Apply the Preg Indexes to the URL
554
  $replace
555
  );
556
 
557
+ // Use case-insensitive replace to make sure to work with some decoding using uppercase escaped chars.
558
+ $replaced = str_ireplace( array_keys( $replace ), $replace, $link_template );
559
 
560
  // Remove trailing chars.
561
  $path = rtrim( $replaced, '?$' );
886
  $url_components = parse_url($url);
887
  $url_path = Arr::get( $url_components, 'path', '/' );
888
  $site_path = parse_url( home_url(), PHP_URL_PATH );
889
+ if ( ! empty( $site_path ) && '/' !== $site_path ) {
890
  // The current site is in a sub-directory: the site path should be dropped from the request path.
891
  $url_path = str_replace( $site_path, '', $url_path );
892
  }
common/src/Tribe/Service_Providers/Debug_Bar.php CHANGED
@@ -12,7 +12,7 @@ class Tribe__Service_Providers__Debug_Bar extends tad_DI52_ServiceProvider {
12
  * Binds and sets up implementations.
13
  */
14
  public function register() {
15
- add_filter( 'debug_bar_panels', array( $this, 'add_panels' ) );
16
  }
17
 
18
  /**
@@ -33,10 +33,10 @@ class Tribe__Service_Providers__Debug_Bar extends tad_DI52_ServiceProvider {
33
  *
34
  * @param Debug_Bar_Panel[] The default list of Modern Tribe panels added to the Debug Bar.
35
  */
36
- $tribe_panels = apply_filters( 'tribe_debug_bar_panels', array(
37
  new Tribe__Debug_Bar__Panels__Context(),
38
  new Tribe__Debug_Bar__Panels__Json_Ld(),
39
- ) );
40
 
41
  if ( count( $tribe_panels ) > 0 ) {
42
  $panels = array_merge( $panels, $tribe_panels );
12
  * Binds and sets up implementations.
13
  */
14
  public function register() {
15
+ add_filter( 'debug_bar_panels', [ $this, 'add_panels' ] );
16
  }
17
 
18
  /**
33
  *
34
  * @param Debug_Bar_Panel[] The default list of Modern Tribe panels added to the Debug Bar.
35
  */
36
+ $tribe_panels = apply_filters( 'tribe_debug_bar_panels', [
37
  new Tribe__Debug_Bar__Panels__Context(),
38
  new Tribe__Debug_Bar__Panels__Json_Ld(),
39
+ ] );
40
 
41
  if ( count( $tribe_panels ) > 0 ) {
42
  $panels = array_merge( $panels, $tribe_panels );
common/src/Tribe/Service_Providers/Processes.php CHANGED
@@ -69,10 +69,10 @@ class Tribe__Service_Providers__Processes extends tad_DI52_ServiceProvider {
69
  */
70
  protected function hook_handler_for( $action ) {
71
  if ( null === $this->handler_actions ) {
72
- $handlers = array(
73
  'Tribe__Process__Tester',
74
  'Tribe__Process__Post_Thumbnail_Setter',
75
- );
76
 
77
  /**
78
  * Filters the process handler classes the Service Provider should handle.
@@ -87,7 +87,7 @@ class Tribe__Service_Providers__Processes extends tad_DI52_ServiceProvider {
87
 
88
  $this->handler_actions = array_combine(
89
  $handlers,
90
- array_map( array( $this, 'get_handler_action' ), $handlers )
91
  );
92
  }
93
 
@@ -110,9 +110,9 @@ class Tribe__Service_Providers__Processes extends tad_DI52_ServiceProvider {
110
  */
111
  protected function hook_queue_for( $action ) {
112
  if ( null === $this->queue_actions ) {
113
- $queues = array(
114
  'Tribe__Promise',
115
- );
116
 
117
  /**
118
  * Filters the queue processing classes the Service Provider should handle.
@@ -127,7 +127,7 @@ class Tribe__Service_Providers__Processes extends tad_DI52_ServiceProvider {
127
 
128
  $all_queues_actions = array_combine(
129
  $queues,
130
- array_map( array( $this, 'get_queue_action' ), $queues )
131
  );
132
  }
133
 
@@ -152,7 +152,7 @@ class Tribe__Service_Providers__Processes extends tad_DI52_ServiceProvider {
152
  */
153
  protected function get_handler_action( $handler_class ) {
154
  /** @var Tribe__Process__Handler handler_class */
155
- return 'tribe_process_' . call_user_func( array( $handler_class, 'action' ) );
156
  }
157
 
158
  /**
@@ -166,7 +166,7 @@ class Tribe__Service_Providers__Processes extends tad_DI52_ServiceProvider {
166
  */
167
  protected function get_queue_action( $queue_class ) {
168
  /** @var Tribe__Process__Queue queue_class */
169
- return 'tribe_queue_' . call_user_func( array( $queue_class, 'action' ) );
170
  }
171
 
172
  /**
@@ -201,7 +201,7 @@ class Tribe__Service_Providers__Processes extends tad_DI52_ServiceProvider {
201
  * Here we parse the scheduled cron events to get those scheduled by a queue
202
  * or process handler.
203
  */
204
- $hooks = $this->get_scheduled_like( array( 'tribe_process_', 'tribe_queue_' ) );
205
 
206
  if ( empty( $hooks ) ) {
207
  return;
@@ -254,11 +254,11 @@ class Tribe__Service_Providers__Processes extends tad_DI52_ServiceProvider {
254
  $cron = get_option( 'cron', false );
255
 
256
  if ( empty( $cron ) ) {
257
- return array();
258
  }
259
 
260
  $needles = (array) $needles;
261
- $matching = array();
262
 
263
  foreach ( $cron as $time ) {
264
  if ( ! is_array( $time ) ) {
69
  */
70
  protected function hook_handler_for( $action ) {
71
  if ( null === $this->handler_actions ) {
72
+ $handlers = [
73
  'Tribe__Process__Tester',
74
  'Tribe__Process__Post_Thumbnail_Setter',
75
+ ];
76
 
77
  /**
78
  * Filters the process handler classes the Service Provider should handle.
87
 
88
  $this->handler_actions = array_combine(
89
  $handlers,
90
+ array_map( [ $this, 'get_handler_action' ], $handlers )
91
  );
92
  }
93
 
110
  */
111
  protected function hook_queue_for( $action ) {
112
  if ( null === $this->queue_actions ) {
113
+ $queues = [
114
  'Tribe__Promise',
115
+ ];
116
 
117
  /**
118
  * Filters the queue processing classes the Service Provider should handle.
127
 
128
  $all_queues_actions = array_combine(
129
  $queues,
130
+ array_map( [ $this, 'get_queue_action' ], $queues )
131
  );
132
  }
133
 
152
  */
153
  protected function get_handler_action( $handler_class ) {
154
  /** @var Tribe__Process__Handler handler_class */
155
+ return 'tribe_process_' . call_user_func( [ $handler_class, 'action' ] );
156
  }
157
 
158
  /**
166
  */
167
  protected function get_queue_action( $queue_class ) {
168
  /** @var Tribe__Process__Queue queue_class */
169
+ return 'tribe_queue_' . call_user_func( [ $queue_class, 'action' ] );
170
  }
171
 
172
  /**
201
  * Here we parse the scheduled cron events to get those scheduled by a queue
202
  * or process handler.
203
  */
204
+ $hooks = $this->get_scheduled_like( [ 'tribe_process_', 'tribe_queue_' ] );
205
 
206
  if ( empty( $hooks ) ) {
207
  return;
254
  $cron = get_option( 'cron', false );
255
 
256
  if ( empty( $cron ) ) {
257
+ return [];
258
  }
259
 
260
  $needles = (array) $needles;
261
+ $matching = [];
262
 
263
  foreach ( $cron as $time ) {
264
  if ( ! is_array( $time ) ) {
common/src/Tribe/Service_Providers/Promoter.php CHANGED
@@ -14,7 +14,7 @@ class Tribe__Service_Providers__Promoter extends tad_DI52_ServiceProvider {
14
  */
15
  public function register() {
16
  tribe_singleton( 'promoter.auth', 'Tribe__Promoter__Auth' );
17
- tribe_singleton( 'promoter.pue', 'Tribe__Promoter__PUE', array( 'load' ) );
18
  tribe_singleton( 'promoter.view', 'Tribe__Promoter__View' );
19
 
20
  $this->hook();
@@ -39,8 +39,8 @@ class Tribe__Service_Providers__Promoter extends tad_DI52_ServiceProvider {
39
  }
40
 
41
  // The usage of a high priority so we can push the icon to the end
42
- add_action( 'admin_bar_menu', array( $this, 'add_promoter_logo_on_admin_bar' ), 1000 );
43
- add_action( 'tribe_common_loaded', array( $this, 'add_promoter_assets' ) );
44
  }
45
 
46
  /**
@@ -60,7 +60,7 @@ class Tribe__Service_Providers__Promoter extends tad_DI52_ServiceProvider {
60
  * It uses and inline SVG as will provider more flexibility for styling so we can change
61
  * the fill of the path property of the SVG so we can match the WP installations.
62
  */
63
- $args = array(
64
  'id' => 'promoter-admin-bar',
65
  'title' => sprintf(
66
  "<span class='promoter-admin-bar__icon'>%s</span><span class='promoter-admin-bar__text'>%s</span>",
@@ -68,11 +68,11 @@ class Tribe__Service_Providers__Promoter extends tad_DI52_ServiceProvider {
68
  'Promoter'
69
  ),
70
  'href' => 'https://promoter.theeventscalendar.com/',
71
- 'meta' => array(
72
  'target' => '_blank',
73
  'class' => 'promoter-admin-bar-link',
74
- ),
75
- );
76
  $wp_admin_bar->add_node( $args );
77
  }
78
 
@@ -86,11 +86,11 @@ class Tribe__Service_Providers__Promoter extends tad_DI52_ServiceProvider {
86
  Tribe__Main::instance(),
87
  'promoter',
88
  'promoter.css',
89
- array(),
90
- array( 'wp_enqueue_scripts', 'admin_enqueue_scripts' ),
91
- array(
92
- 'conditionals' => array( $this, 'should_load_promoter_styles' ),
93
- )
94
  );
95
  }
96
 
14
  */
15
  public function register() {
16
  tribe_singleton( 'promoter.auth', 'Tribe__Promoter__Auth' );
17
+ tribe_singleton( 'promoter.pue', 'Tribe__Promoter__PUE', [ 'load' ] );
18
  tribe_singleton( 'promoter.view', 'Tribe__Promoter__View' );
19
 
20
  $this->hook();
39
  }
40
 
41
  // The usage of a high priority so we can push the icon to the end
42
+ add_action( 'admin_bar_menu', [ $this, 'add_promoter_logo_on_admin_bar' ], 1000 );
43
+ add_action( 'tribe_common_loaded', [ $this, 'add_promoter_assets' ] );
44
  }
45
 
46
  /**
60
  * It uses and inline SVG as will provider more flexibility for styling so we can change
61
  * the fill of the path property of the SVG so we can match the WP installations.
62
  */
63
+ $args = [
64
  'id' => 'promoter-admin-bar',
65
  'title' => sprintf(
66
  "<span class='promoter-admin-bar__icon'>%s</span><span class='promoter-admin-bar__text'>%s</span>",
68
  'Promoter'
69
  ),
70
  'href' => 'https://promoter.theeventscalendar.com/',
71
+ 'meta' => [
72
  'target' => '_blank',
73
  'class' => 'promoter-admin-bar-link',
74
+ ],
75
+ ];
76
  $wp_admin_bar->add_node( $args );
77
  }
78
 
86
  Tribe__Main::instance(),
87
  'promoter',
88
  'promoter.css',
89
+ [],
90
+ [ 'wp_enqueue_scripts', 'admin_enqueue_scripts' ],
91
+ [
92
+ 'conditionals' => [ $this, 'should_load_promoter_styles' ],
93
+ ]
94
  );
95
  }
96
 
common/src/Tribe/Settings.php CHANGED
@@ -140,22 +140,22 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
140
  * An array defining the suite root plugins.
141
  * @var array
142
  */
143
- protected $root_plugins = array(
144
  'the-events-calendar/the-events-calendar.php',
145
  'event-tickets/event-ticket.php',
146
- );
147
 
148
  /**
149
  * An associative array in the form [ <tab-slug> => array(...<fields>) ]
150
  * @var array
151
  */
152
- protected $fields_for_save = array();
153
 
154
  /**
155
  * An array that contains the fields that are currently being validated.
156
  * @var array
157
  */
158
- protected $current_fields = array();
159
 
160
  /**
161
  * Static Singleton Factory Method
@@ -178,10 +178,10 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
178
  $this->requiredCap = apply_filters( 'tribe_settings_req_cap', 'manage_options' );
179
  $this->adminSlug = apply_filters( 'tribe_settings_admin_slug', 'tribe-common' );
180
  $this->help_slug = apply_filters( 'tribe_settings_help_slug', 'tribe-common-help' );
181
- $this->errors = get_option( 'tribe_settings_errors', array() );
182
  $this->major_error = get_option( 'tribe_settings_major_error', false );
183
- $this->sent_data = get_option( 'tribe_settings_sent_data', array() );
184
- $this->validated = array();
185
  $this->defaultTab = null;
186
  $this->currentTab = null;
187
 
@@ -193,11 +193,11 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
193
  */
194
  public function hook() {
195
  // run actions & filters
196
- add_action( 'admin_menu', array( $this, 'addPage' ) );
197
- add_action( 'network_admin_menu', array( $this, 'addNetworkPage' ) );
198
- add_action( 'admin_init', array( $this, 'initTabs' ) );
199
- add_action( 'tribe_settings_below_tabs', array( $this, 'displayErrors' ) );
200
- add_action( 'tribe_settings_below_tabs', array( $this, 'displaySuccess' ) );
201
  }
202
 
203
  /**
@@ -254,7 +254,7 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
254
  esc_html__( 'Settings', 'tribe-common' ),
255
  $this->requiredCap,
256
  self::$parent_slug,
257
- array( $this, 'generatePage' )
258
  );
259
  }
260
  }
@@ -270,10 +270,10 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
270
  }
271
 
272
  $this->admin_page = add_submenu_page(
273
- 'settings.php', esc_html__( 'Events Settings', 'tribe-common' ), esc_html__( 'Events Settings', 'tribe-common' ), $this->requiredCap, $this->adminSlug, array(
274
  $this,
275
  'generatePage',
276
- )
277
  );
278
 
279
  $this->admin_page = add_submenu_page(
@@ -282,10 +282,10 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
282
  esc_html__( 'Events Help', 'tribe-common' ),
283
  $this->requiredCap,
284
  $this->help_slug,
285
- array(
286
  tribe( 'settings.manager' ),
287
  'do_help_tab',
288
- )
289
  );
290
  }
291
 
@@ -440,7 +440,7 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
440
 
441
  // bail if we have errors
442
  if ( count( $this->errors ) ) {
443
- remove_action( 'shutdown', array( $this, 'deleteOptions' ) );
444
  add_option( 'tribe_settings_errors', $this->errors );
445
  add_option( 'tribe_settings_major_error', $this->major_error );
446
  wp_redirect( $this->url );
@@ -488,8 +488,8 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
488
 
489
  // do not generate errors for dependent fields that should not show
490
  if ( ! empty( $this->errors ) ) {
491
- $keep = array_filter( array_keys( $this->errors ), array( $this, 'dependency_checks' ) );
492
- $compare = empty( $keep ) ? array() : array_combine( $keep, $keep );
493
  $this->errors = array_intersect_key( $this->errors, $compare );
494
  }
495
 
@@ -512,7 +512,7 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
512
  do_action( 'tribe_settings_save_tab_' . $this->currentTab );
513
 
514
  // we'll need this later
515
- $parent_options = array();
516
 
517
  /**
518
  * loop through each validated option and either
@@ -588,11 +588,11 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
588
 
589
  do_action( 'tribe_settings_after_save' );
590
  do_action( 'tribe_settings_after_save_' . $this->currentTab );
591
- remove_action( 'shutdown', array( $this, 'deleteOptions' ) );
592
  add_option( 'tribe_settings_sent_data', $_POST );
593
  add_option( 'tribe_settings_errors', $this->errors );
594
  add_option( 'tribe_settings_major_error', $this->major_error );
595
- wp_redirect( esc_url_raw( add_query_arg( array( 'saved' => true ), $this->url ) ) );
596
  exit;
597
  }
598
 
@@ -669,11 +669,11 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
669
  *
670
  * @return string
671
  */
672
- public function get_url( array $args = array() ) {
673
- $defaults = array(
674
- 'page' => $this->adminSlug,
675
  'parent' => self::$parent_page,
676
- );
677
 
678
  // Allow the link to be "changed" on the fly
679
  $args = wp_parse_args( $args, $defaults );
140
  * An array defining the suite root plugins.
141
  * @var array
142
  */
143
+ protected $root_plugins = [
144
  'the-events-calendar/the-events-calendar.php',
145
  'event-tickets/event-ticket.php',
146
+ ];
147
 
148
  /**
149
  * An associative array in the form [ <tab-slug> => array(...<fields>) ]
150
  * @var array
151
  */
152
+ protected $fields_for_save = [];
153
 
154
  /**
155
  * An array that contains the fields that are currently being validated.
156
  * @var array
157
  */
158
+ protected $current_fields = [];
159
 
160
  /**
161
  * Static Singleton Factory Method
178
  $this->requiredCap = apply_filters( 'tribe_settings_req_cap', 'manage_options' );
179
  $this->adminSlug = apply_filters( 'tribe_settings_admin_slug', 'tribe-common' );
180
  $this->help_slug = apply_filters( 'tribe_settings_help_slug', 'tribe-common-help' );
181
+ $this->errors = get_option( 'tribe_settings_errors', [] );
182
  $this->major_error = get_option( 'tribe_settings_major_error', false );
183
+ $this->sent_data = get_option( 'tribe_settings_sent_data', [] );
184
+ $this->validated = [];
185
  $this->defaultTab = null;
186
  $this->currentTab = null;
187
 
193
  */
194
  public function hook() {
195
  // run actions & filters
196
+ add_action( 'admin_menu', [ $this, 'addPage' ] );
197
+ add_action( 'network_admin_menu', [ $this, 'addNetworkPage' ] );
198
+ add_action( 'admin_init', [ $this, 'initTabs' ] );
199
+ add_action( 'tribe_settings_below_tabs', [ $this, 'displayErrors' ] );
200
+ add_action( 'tribe_settings_below_tabs', [ $this, 'displaySuccess' ] );
201
  }
202
 
203
  /**
254
  esc_html__( 'Settings', 'tribe-common' ),
255
  $this->requiredCap,
256
  self::$parent_slug,
257
+ [ $this, 'generatePage' ]
258
  );
259
  }
260
  }
270
  }
271
 
272
  $this->admin_page = add_submenu_page(
273
+ 'settings.php', esc_html__( 'Events Settings', 'tribe-common' ), esc_html__( 'Events Settings', 'tribe-common' ), $this->requiredCap, $this->adminSlug, [
274
  $this,
275
  'generatePage',
276
+ ]
277
  );
278
 
279
  $this->admin_page = add_submenu_page(
282
  esc_html__( 'Events Help', 'tribe-common' ),
283
  $this->requiredCap,
284
  $this->help_slug,
285
+ [
286
  tribe( 'settings.manager' ),
287
  'do_help_tab',
288
+ ]
289
  );
290
  }
291
 
440
 
441
  // bail if we have errors
442
  if ( count( $this->errors ) ) {
443
+ remove_action( 'shutdown', [ $this, 'deleteOptions' ] );
444
  add_option( 'tribe_settings_errors', $this->errors );
445
  add_option( 'tribe_settings_major_error', $this->major_error );
446
  wp_redirect( $this->url );
488
 
489
  // do not generate errors for dependent fields that should not show
490
  if ( ! empty( $this->errors ) ) {
491
+ $keep = array_filter( array_keys( $this->errors ), [ $this, 'dependency_checks' ] );
492
+ $compare = empty( $keep ) ? [] : array_combine( $keep, $keep );
493
  $this->errors = array_intersect_key( $this->errors, $compare );
494
  }
495
 
512
  do_action( 'tribe_settings_save_tab_' . $this->currentTab );
513
 
514
  // we'll need this later
515
+ $parent_options = [];
516
 
517
  /**
518
  * loop through each validated option and either
588
 
589
  do_action( 'tribe_settings_after_save' );
590
  do_action( 'tribe_settings_after_save_' . $this->currentTab );
591
+ remove_action( 'shutdown', [ $this, 'deleteOptions' ] );
592
  add_option( 'tribe_settings_sent_data', $_POST );
593
  add_option( 'tribe_settings_errors', $this->errors );
594
  add_option( 'tribe_settings_major_error', $this->major_error );
595
+ wp_redirect( esc_url_raw( add_query_arg( [ 'saved' => true ], $this->url ) ) );
596
  exit;
597
  }
598
 
669
  *
670
  * @return string
671
  */
672
+ public function get_url( array $args = [] ) {
673
+ $defaults = [
674
+ 'page' => $this->adminSlug,
675
  'parent' => self::$parent_page,
676
+ ];
677
 
678
  // Allow the link to be "changed" on the fly
679
  $args = wp_parse_args( $args, $defaults );
common/src/Tribe/Settings_Manager.php CHANGED
@@ -13,7 +13,7 @@ class Tribe__Settings_Manager {
13
 
14
  // Load multisite defaults
15
  if ( is_multisite() ) {
16
- $tribe_events_mu_defaults = array();
17
  if ( file_exists( WP_CONTENT_DIR . '/tribe-events-mu-defaults.php' ) ) {
18
  require_once WP_CONTENT_DIR . '/tribe-events-mu-defaults.php';
19
  }
@@ -23,13 +23,13 @@ class Tribe__Settings_Manager {
23
 
24
  public function add_hooks() {
25
  // option pages
26
- add_action( '_network_admin_menu', array( $this, 'init_options' ) );
27
- add_action( '_admin_menu', array( $this, 'init_options' ) );
28
 
29
- add_action( 'admin_menu', array( $this, 'add_help_admin_menu_item' ), 50 );
30
- add_action( 'tribe_settings_do_tabs', array( $this, 'do_setting_tabs' ) );
31
- add_action( 'tribe_settings_do_tabs', array( $this, 'do_network_settings_tab' ), 400 );
32
- add_action( 'tribe_settings_validate_tab_network', array( $this, 'save_all_tabs_hidden' ) );
33
  add_action( 'updated_option', [ $this, 'update_options_cache' ], 10, 3 );
34
  }
35
 
@@ -171,7 +171,7 @@ class Tribe__Settings_Manager {
171
  */
172
  public static function get_network_options() {
173
  if ( ! isset( self::$network_options ) ) {
174
- $options = get_site_option( Tribe__Main::OPTIONNAMENETWORK, array() );
175
  self::$network_options = apply_filters( 'tribe_get_network_options', $options );
176
  }
177
 
@@ -216,11 +216,11 @@ class Tribe__Settings_Manager {
216
  if ( ! is_array( $options ) ) {
217
  return;
218
  }
 
219
  if ( $apply_filters == true ) {
220
  $options = apply_filters( 'tribe-events-save-network-options', $options );
221
  }
222
 
223
- // @TODO use getNetworkOptions + force
224
  if ( update_site_option( Tribe__Main::OPTIONNAMENETWORK, $options ) ) {
225
  self::$network_options = apply_filters( 'tribe_get_network_options', $options );
226
  } else {
@@ -236,10 +236,15 @@ class Tribe__Settings_Manager {
236
  public static function add_network_options_page() {
237
  $tribe_settings = Tribe__Settings::instance();
238
  add_submenu_page(
239
- 'settings.php', $tribe_settings->menuName, $tribe_settings->menuName, 'manage_network_options', 'tribe-common', array(
 
 
 
 
 
240
  $tribe_settings,
241
  'generatePage',
242
- )
243
  );
244
  }
245
 
@@ -285,11 +290,11 @@ class Tribe__Settings_Manager {
285
  */
286
  $license_fields = apply_filters( 'tribe_license_fields', $licenses_tab );
287
 
288
- new Tribe__Settings_Tab( 'licenses', esc_html__( 'Licenses', 'tribe-common' ), array(
289
  'priority' => '40',
290
  'fields' => $license_fields,
291
  'network_admin' => is_network_admin() ? true : false,
292
- ) );
293
  }
294
 
295
  /**
@@ -309,7 +314,7 @@ class Tribe__Settings_Manager {
309
  * @todo move to an admin class
310
  */
311
  public function add_help_admin_menu_item() {
312
- $hidden_settings_tabs = self::get_network_option( 'hideSettingsTabs', array() );
313
  if ( in_array( 'help', $hidden_settings_tabs ) ) {
314
  return;
315
  }
@@ -318,7 +323,7 @@ class Tribe__Settings_Manager {
318
  $title = esc_html__( 'Help', 'tribe-common' );
319
  $slug = 'tribe-help';
320
 
321
- add_submenu_page( $parent, $title, $title, 'manage_options', $slug, array( $this, 'do_help_tab' ) );
322
  }
323
 
324
  /**
@@ -327,7 +332,8 @@ class Tribe__Settings_Manager {
327
  * @return bool
328
  */
329
  protected function have_addons() {
330
- $addons = apply_filters( 'tribe_licensable_addons', array() );
 
331
  return ! empty( $addons );
332
  }
333
 
@@ -337,7 +343,7 @@ class Tribe__Settings_Manager {
337
  * @return void
338
  */
339
  public function save_all_tabs_hidden() {
340
- $all_tabs_keys = array_keys( apply_filters( 'tribe_settings_all_tabs', array() ) );
341
 
342
  $network_options = (array) get_site_option( Tribe__Main::OPTIONNAMENETWORK );
343
 
13
 
14
  // Load multisite defaults
15
  if ( is_multisite() ) {
16
+ $tribe_events_mu_defaults = [];
17
  if ( file_exists( WP_CONTENT_DIR . '/tribe-events-mu-defaults.php' ) ) {
18
  require_once WP_CONTENT_DIR . '/tribe-events-mu-defaults.php';
19
  }
23
 
24
  public function add_hooks() {
25
  // option pages
26
+ add_action( '_network_admin_menu', [ $this, 'init_options' ] );
27
+ add_action( '_admin_menu', [ $this, 'init_options' ] );
28
 
29
+ add_action( 'admin_menu', [ $this, 'add_help_admin_menu_item' ], 50 );
30
+ add_action( 'tribe_settings_do_tabs', [ $this, 'do_setting_tabs' ] );
31
+ add_action( 'tribe_settings_do_tabs', [ $this, 'do_network_settings_tab' ], 400 );
32
+ add_action( 'tribe_settings_validate_tab_network', [ $this, 'save_all_tabs_hidden' ] );
33
  add_action( 'updated_option', [ $this, 'update_options_cache' ], 10, 3 );
34
  }
35
 
171
  */
172
  public static function get_network_options() {
173
  if ( ! isset( self::$network_options ) ) {
174
+ $options = get_site_option( Tribe__Main::OPTIONNAMENETWORK, [] );
175
  self::$network_options = apply_filters( 'tribe_get_network_options', $options );
176
  }
177
 
216
  if ( ! is_array( $options ) ) {
217
  return;
218
  }
219
+
220
  if ( $apply_filters == true ) {
221
  $options = apply_filters( 'tribe-events-save-network-options', $options );
222
  }
223
 
 
224
  if ( update_site_option( Tribe__Main::OPTIONNAMENETWORK, $options ) ) {
225
  self::$network_options = apply_filters( 'tribe_get_network_options', $options );
226
  } else {
236
  public static function add_network_options_page() {
237
  $tribe_settings = Tribe__Settings::instance();
238
  add_submenu_page(
239
+ 'settings.php',
240
+ $tribe_settings->menuName,
241
+ $tribe_settings->menuName,
242
+ 'manage_network_options',
243
+ 'tribe-common',
244
+ [
245
  $tribe_settings,
246
  'generatePage',
247
+ ]
248
  );
249
  }
250
 
290
  */
291
  $license_fields = apply_filters( 'tribe_license_fields', $licenses_tab );
292
 
293
+ new Tribe__Settings_Tab( 'licenses', esc_html__( 'Licenses', 'tribe-common' ), [
294
  'priority' => '40',
295
  'fields' => $license_fields,
296
  'network_admin' => is_network_admin() ? true : false,
297
+ ] );
298
  }
299
 
300
  /**
314
  * @todo move to an admin class
315
  */
316
  public function add_help_admin_menu_item() {
317
+ $hidden_settings_tabs = self::get_network_option( 'hideSettingsTabs', [] );
318
  if ( in_array( 'help', $hidden_settings_tabs ) ) {
319
  return;
320
  }
323
  $title = esc_html__( 'Help', 'tribe-common' );
324
  $slug = 'tribe-help';
325
 
326
+ add_submenu_page( $parent, $title, $title, 'manage_options', $slug, [ $this, 'do_help_tab' ] );
327
  }
328
 
329
  /**
332
  * @return bool
333
  */
334
  protected function have_addons() {
335
+ $addons = apply_filters( 'tribe_licensable_addons', [] );
336
+
337
  return ! empty( $addons );
338
  }
339
 
343
  * @return void
344
  */
345
  public function save_all_tabs_hidden() {
346
+ $all_tabs_keys = array_keys( apply_filters( 'tribe_settings_all_tabs', [] ) );
347
 
348
  $network_options = (array) get_site_option( Tribe__Main::OPTIONNAMENETWORK );
349
 
common/src/Tribe/Settings_Tab.php CHANGED
@@ -45,16 +45,16 @@ if ( ! class_exists( 'Tribe__Settings_Tab' ) ) {
45
  * @param string $name the tab's visible name
46
  * @param array $args additional arguments for the tab
47
  */
48
- public function __construct( $id, $name, $args = array() ) {
49
 
50
  // setup the defaults
51
- $this->defaults = array(
52
- 'fields' => array(),
53
  'priority' => 50,
54
  'show_save' => true,
55
  'display_callback' => false,
56
  'network_admin' => false,
57
- );
58
 
59
  // parse args with defaults
60
  $this->args = wp_parse_args( $args, $this->defaults );
@@ -68,9 +68,9 @@ if ( ! class_exists( 'Tribe__Settings_Tab' ) ) {
68
 
69
  // run actions & filters
70
  if ( ! $this->network_admin ) {
71
- add_filter( 'tribe_settings_all_tabs', array( $this, 'addAllTabs' ) );
72
  }
73
- add_filter( 'tribe_settings_tabs', array( $this, 'addTab' ), $this->priority );
74
  }
75
 
76
  /**
@@ -83,13 +83,13 @@ if ( ! class_exists( 'Tribe__Settings_Tab' ) ) {
83
  * @return array $tabs the filtered tabs
84
  */
85
  public function addTab( $tabs ) {
86
- $hideSettingsTabs = Tribe__Settings_Manager::get_network_option( 'hideSettingsTabs', array() );
87
  if ( ( isset( $this->fields ) || has_action( 'tribe_settings_content_tab_' . $this->id ) ) && ( empty( $hideSettingsTabs ) || ! in_array( $this->id, $hideSettingsTabs ) ) ) {
88
  if ( ( is_network_admin() && $this->args['network_admin'] ) || ( ! is_network_admin() && ! $this->args['network_admin'] ) ) {
89
  $tabs[ $this->id ] = $this->name;
90
- add_filter( 'tribe_settings_fields', array( $this, 'addFields' ) );
91
- add_filter( 'tribe_settings_no_save_tabs', array( $this, 'showSaveTab' ) );
92
- add_filter( 'tribe_settings_content_tab_' . $this->id, array( $this, 'doContent' ) );
93
  }
94
  }
95
 
@@ -122,7 +122,7 @@ if ( ! class_exists( 'Tribe__Settings_Tab' ) ) {
122
  if ( ! empty ( $this->fields ) ) {
123
  $fields[ $this->id ] = $this->fields;
124
  } elseif ( has_action( 'tribe_settings_content_tab_' . $this->id ) ) {
125
- $fields[ $this->id ] = $this->fields = array( 0 => null ); // just to trick it
126
  }
127
 
128
  return $fields;
@@ -156,7 +156,7 @@ if ( ! class_exists( 'Tribe__Settings_Tab' ) ) {
156
  return;
157
  }
158
 
159
- $sent_data = get_option( 'tribe_settings_sent_data', array() );
160
 
161
  if ( is_array( $this->fields ) && ! empty( $this->fields ) ) {
162
  foreach ( $this->fields as $key => $field ) {
45
  * @param string $name the tab's visible name
46
  * @param array $args additional arguments for the tab
47
  */
48
+ public function __construct( $id, $name, $args = [] ) {
49
 
50
  // setup the defaults
51
+ $this->defaults = [
52
+ 'fields' => [],
53
  'priority' => 50,
54
  'show_save' => true,
55
  'display_callback' => false,
56
  'network_admin' => false,
57
+ ];
58
 
59
  // parse args with defaults
60
  $this->args = wp_parse_args( $args, $this->defaults );
68
 
69
  // run actions & filters
70
  if ( ! $this->network_admin ) {
71
+ add_filter( 'tribe_settings_all_tabs', [ $this, 'addAllTabs' ] );
72
  }
73
+ add_filter( 'tribe_settings_tabs', [ $this, 'addTab' ], $this->priority );
74
  }
75
 
76
  /**
83
  * @return array $tabs the filtered tabs
84
  */
85
  public function addTab( $tabs ) {
86
+ $hideSettingsTabs = Tribe__Settings_Manager::get_network_option( 'hideSettingsTabs', [] );
87
  if ( ( isset( $this->fields ) || has_action( 'tribe_settings_content_tab_' . $this->id ) ) && ( empty( $hideSettingsTabs ) || ! in_array( $this->id, $hideSettingsTabs ) ) ) {
88
  if ( ( is_network_admin() && $this->args['network_admin'] ) || ( ! is_network_admin() && ! $this->args['network_admin'] ) ) {
89
  $tabs[ $this->id ] = $this->name;
90
+ add_filter( 'tribe_settings_fields', [ $this, 'addFields' ] );
91
+ add_filter( 'tribe_settings_no_save_tabs', [ $this, 'showSaveTab' ] );
92
+ add_filter( 'tribe_settings_content_tab_' . $this->id, [ $this, 'doContent' ] );
93
  }
94
  }
95
 
122
  if ( ! empty ( $this->fields ) ) {
123
  $fields[ $this->id ] = $this->fields;
124
  } elseif ( has_action( 'tribe_settings_content_tab_' . $this->id ) ) {
125
+ $fields[ $this->id ] = $this->fields = [ 0 => null ]; // just to trick it
126
  }
127
 
128
  return $fields;
156
  return;
157
  }
158
 
159
+ $sent_data = get_option( 'tribe_settings_sent_data', [] );
160
 
161
  if ( is_array( $this->fields ) && ! empty( $this->fields ) ) {
162
  foreach ( $this->fields as $key => $field ) {
common/src/Tribe/Simple_Table.php CHANGED
@@ -8,7 +8,7 @@ if ( ! defined( 'ABSPATH' ) ) {
8
  /**
9
  * A class for outputting a multidimensional array as a straightforward HTML table
10
  *
11
- * @TODO Remove this in version 5 if it does not see much usage
12
  */
13
  class Tribe__Simple_Table {
14
 
@@ -38,7 +38,7 @@ class Tribe__Simple_Table {
38
  * @param array $tbody Multidimension array containing table rows/columns
39
  * @param array $thead Single dimension array containing table headings
40
  */
41
- public function __construct( $tbody, $thead = array() ) {
42
  $this->thead = $thead;
43
  $this->tbody = $tbody;
44
  }
@@ -143,7 +143,7 @@ class Tribe__Simple_Table {
143
  *
144
  * @return string HTML element
145
  */
146
- private function output_element( $html_tag, $data = null, $attributes = array() ) {
147
  $output = '<' . tag_escape( $html_tag );
148
 
149
  if ( ! empty( $attributes ) ) {
8
  /**
9
  * A class for outputting a multidimensional array as a straightforward HTML table
10
  *
11
+ * @todo Remove this in version 5 if it does not see much usage
12
  */
13
  class Tribe__Simple_Table {
14
 
38
  * @param array $tbody Multidimension array containing table rows/columns
39
  * @param array $thead Single dimension array containing table headings
40
  */
41
+ public function __construct( $tbody, $thead = [] ) {
42
  $this->thead = $thead;
43
  $this->tbody = $tbody;
44
  }
143
  *
144
  * @return string HTML element
145
  */
146
+ private function output_element( $html_tag, $data = null, $attributes = [] ) {
147
  $output = '<' . tag_escape( $html_tag );
148
 
149
  if ( ! empty( $attributes ) ) {
common/src/Tribe/Support.php CHANGED
@@ -26,20 +26,20 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
26
  *
27
  * @var array
28
  */
29
- protected $must_escape = array(
30
  'tribeEventsAfterHTML',
31
  'tribeEventsBeforeHTML',
32
- );
33
 
34
  /**
35
  * Field prefixes here should be partially obfuscated before being printed.
36
  *
37
  * @var array
38
  */
39
- protected $must_obfuscate_prefixes = array(
40
  'pue_install_key_',
41
  'google_maps_js_api_key',
42
- );
43
 
44
  private function __construct() {
45
  /**
@@ -49,11 +49,11 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
49
  */
50
  $this->must_escape = (array) apply_filters( 'tribe_help_must_escape_fields', $this->must_escape );
51
 
52
- add_action( 'tribe_help_pre_get_sections', array( $this, 'append_system_info' ), 10 );
53
- add_action( 'delete_option_rewrite_rules', array( $this, 'log_rewrite_rule_purge' ) );
54
 
55
- add_action( 'rest_api_init', array( __CLASS__, 'create_sysinfo_endpoint' ) );
56
- add_action( 'wp_ajax_tribe_toggle_sysinfo_optin', array( __CLASS__, 'ajax_sysinfo_optin' ) );
57
  }
58
 
59
  /**
@@ -74,7 +74,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
74
  global $wpdb;
75
  $user = wp_get_current_user();
76
 
77
- $plugins = array();
78
  if ( function_exists( 'get_plugin_data' ) ) {
79
  $plugins_raw = wp_get_active_and_valid_plugins();
80
  foreach ( $plugins_raw as $k => $v ) {
@@ -93,7 +93,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
93
  }
94
  }
95
 
96
- $network_plugins = array();
97
  if ( is_multisite() && function_exists( 'get_plugin_data' ) ) {
98
  $plugins_raw = wp_get_active_network_plugins();
99
  foreach ( $plugins_raw as $k => $v ) {
@@ -112,7 +112,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
112
  }
113
  }
114
 
115
- $mu_plugins = array();
116
  if ( function_exists( 'get_mu_plugins' ) ) {
117
  $mu_plugins_raw = get_mu_plugins();
118
  foreach ( $mu_plugins_raw as $k => $v ) {
@@ -130,10 +130,10 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
130
  }
131
  }
132
 
133
- $keys = apply_filters( 'tribe-pue-install-keys', array() );
134
  //Obfuscate the License Keys for Security
135
  if ( is_array( $keys ) && ! empty( $keys ) ) {
136
- $secure_keys = array();
137
  foreach ( $keys as $plugin => $license ) {
138
  $secure_keys[ $plugin ] = preg_replace( '/^(.{4}).*(.{4})$/', '$1' . str_repeat( '#', 32 ) . '$2', $license );
139
  }
@@ -145,15 +145,15 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
145
  $server = explode( '/', reset( $server ) );
146
 
147
  //PHP Information
148
- $php_info = array();
149
- $php_vars = array(
150
  'max_execution_time',
151
  'memory_limit',
152
  'upload_max_filesize',
153
  'post_max_size',
154
  'display_errors',
155
  'log_errors',
156
- );
157
 
158
  foreach ( $php_vars as $php_var ) {
159
  if ( isset( $wpdb->qm_php_vars ) && isset( $wpdb->qm_php_vars[ $php_var ] ) ) {
@@ -176,7 +176,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
176
  }
177
 
178
  $site_url = get_site_url();
179
- $systeminfo = array(
180
  'Home URL' => get_home_url(),
181
  'Site URL' => $site_url,
182
  'Site Language' => get_option( 'WPLANG' ) ? get_option( 'WPLANG' ) : esc_html__( 'English', 'tribe-common' ),
@@ -206,7 +206,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
206
  'Week Starts On' => get_option( 'start_of_week' ),
207
  'Common Library Dir' => $GLOBALS['tribe-common-info']['dir'],
208
  'Common Library Version' => $GLOBALS['tribe-common-info']['version'],
209
- );
210
 
211
  if ( $this->rewrite_rules_purged ) {
212
  $systeminfo['rewrite rules purged'] = esc_html__( 'Rewrite rules were purged on load of this help page. Chances are there is a rewrite rule flush occurring in a plugin or theme!', 'tribe-common' );
@@ -262,7 +262,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
262
  } elseif ( is_array( $v ) && $is_numeric_array ) {
263
  $output .= sprintf( '<dd class="support-stats-array"><ul><li>%s</li></ul></dd>', join( '</li><li>', $v ) );
264
  } else {
265
- $formatted_v = array();
266
  foreach ( $v as $obj_key => $obj_val ) {
267
  if ( in_array( $obj_key, $this->must_escape ) ) {
268
  $obj_val = esc_html( $obj_val );
@@ -383,7 +383,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
383
  update_option( 'tribe_systeminfo_optin', $optin_key );
384
 
385
  //Only Connect If a License Exists
386
- $keys = apply_filters( 'tribe-pue-install-keys', array() );
387
  if ( is_array( $keys ) && ! empty( $keys ) ) {
388
  Tribe__Support::send_sysinfo_key( $optin_key );
389
  } else {
@@ -412,7 +412,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
412
  */
413
  public static function send_sysinfo_key( $optin_key = null, $url = null, $remove = null, $pueadd = false ) {
414
 
415
- $url = $url ? $url : urlencode( str_replace( array( 'http://', 'https://' ), '', get_site_url() ) );
416
 
417
  $teccom_url = 'https://theeventscalendar.com/';
418
 
26
  *
27
  * @var array
28
  */
29
+ protected $must_escape = [
30
  'tribeEventsAfterHTML',
31
  'tribeEventsBeforeHTML',
32
+ ];
33
 
34
  /**
35
  * Field prefixes here should be partially obfuscated before being printed.
36
  *
37
  * @var array
38
  */
39
+ protected $must_obfuscate_prefixes = [
40
  'pue_install_key_',
41
  'google_maps_js_api_key',
42
+ ];
43
 
44
  private function __construct() {
45
  /**
49
  */
50
  $this->must_escape = (array) apply_filters( 'tribe_help_must_escape_fields', $this->must_escape );
51
 
52
+ add_action( 'tribe_help_pre_get_sections', [ $this, 'append_system_info' ], 10 );
53
+ add_action( 'delete_option_rewrite_rules', [ $this, 'log_rewrite_rule_purge' ] );
54
 
55
+ add_action( 'rest_api_init', [ __CLASS__, 'create_sysinfo_endpoint' ] );
56
+ add_action( 'wp_ajax_tribe_toggle_sysinfo_optin', [ __CLASS__, 'ajax_sysinfo_optin' ] );
57
  }
58
 
59
  /**
74
  global $wpdb;
75
  $user = wp_get_current_user();
76
 
77
+ $plugins = [];
78
  if ( function_exists( 'get_plugin_data' ) ) {
79
  $plugins_raw = wp_get_active_and_valid_plugins();
80
  foreach ( $plugins_raw as $k => $v ) {
93
  }
94
  }
95
 
96
+ $network_plugins = [];
97
  if ( is_multisite() && function_exists( 'get_plugin_data' ) ) {
98
  $plugins_raw = wp_get_active_network_plugins();
99
  foreach ( $plugins_raw as $k => $v ) {
112
  }
113
  }
114
 
115
+ $mu_plugins = [];
116
  if ( function_exists( 'get_mu_plugins' ) ) {
117
  $mu_plugins_raw = get_mu_plugins();
118
  foreach ( $mu_plugins_raw as $k => $v ) {
130
  }
131
  }
132
 
133
+ $keys = apply_filters( 'tribe-pue-install-keys', [] );
134
  //Obfuscate the License Keys for Security
135
  if ( is_array( $keys ) && ! empty( $keys ) ) {
136
+ $secure_keys = [];
137
  foreach ( $keys as $plugin => $license ) {
138
  $secure_keys[ $plugin ] = preg_replace( '/^(.{4}).*(.{4})$/', '$1' . str_repeat( '#', 32 ) . '$2', $license );
139
  }
145
  $server = explode( '/', reset( $server ) );
146
 
147
  //PHP Information
148
+ $php_info = [];
149
+ $php_vars = [
150
  'max_execution_time',
151
  'memory_limit',
152
  'upload_max_filesize',
153
  'post_max_size',
154
  'display_errors',
155
  'log_errors',
156
+ ];
157
 
158
  foreach ( $php_vars as $php_var ) {
159
  if ( isset( $wpdb->qm_php_vars ) && isset( $wpdb->qm_php_vars[ $php_var ] ) ) {
176
  }
177
 
178
  $site_url = get_site_url();
179
+ $systeminfo = [
180
  'Home URL' => get_home_url(),
181
  'Site URL' => $site_url,
182
  'Site Language' => get_option( 'WPLANG' ) ? get_option( 'WPLANG' ) : esc_html__( 'English', 'tribe-common' ),
206
  'Week Starts On' => get_option( 'start_of_week' ),
207
  'Common Library Dir' => $GLOBALS['tribe-common-info']['dir'],
208
  'Common Library Version' => $GLOBALS['tribe-common-info']['version'],
209
+ ];
210
 
211
  if ( $this->rewrite_rules_purged ) {
212
  $systeminfo['rewrite rules purged'] = esc_html__( 'Rewrite rules were purged on load of this help page. Chances are there is a rewrite rule flush occurring in a plugin or theme!', 'tribe-common' );
262
  } elseif ( is_array( $v ) && $is_numeric_array ) {
263
  $output .= sprintf( '<dd class="support-stats-array"><ul><li>%s</li></ul></dd>', join( '</li><li>', $v ) );
264
  } else {
265
+ $formatted_v = [];
266
  foreach ( $v as $obj_key => $obj_val ) {
267
  if ( in_array( $obj_key, $this->must_escape ) ) {
268
  $obj_val = esc_html( $obj_val );
383
  update_option( 'tribe_systeminfo_optin', $optin_key );
384
 
385
  //Only Connect If a License Exists
386
+ $keys = apply_filters( 'tribe-pue-install-keys', [] );
387
  if ( is_array( $keys ) && ! empty( $keys ) ) {
388
  Tribe__Support::send_sysinfo_key( $optin_key );
389
  } else {
412
  */
413
  public static function send_sysinfo_key( $optin_key = null, $url = null, $remove = null, $pueadd = false ) {
414
 
415
+ $url = $url ? $url : urlencode( str_replace( [ 'http://', 'https://' ], '', get_site_url() ) );
416
 
417
  $teccom_url = 'https://theeventscalendar.com/';
418
 
common/src/Tribe/Support/Obfuscator.php CHANGED
@@ -6,14 +6,14 @@ class Tribe__Support__Obfuscator {
6
  /**
7
  * @var array
8
  */
9
- protected $prefixes = array();
10
 
11
  /**
12
  * Tribe__Support__Obfuscator constructor.
13
  *
14
  * @param array $prefixes
15
  */
16
- public function __construct( array $prefixes = array() ) {
17
  $this->prefixes = $prefixes;
18
  }
19
 
6
  /**
7
  * @var array
8
  */
9
+ protected $prefixes = [];
10
 
11
  /**
12
  * Tribe__Support__Obfuscator constructor.
13
  *
14
  * @param array $prefixes
15
  */
16
+ public function __construct( array $prefixes = [] ) {
17
  $this->prefixes = $prefixes;
18
  }
19
 
common/src/Tribe/Support/Template_Checker.php CHANGED
@@ -9,9 +9,8 @@ class Tribe__Support__Template_Checker {
9
  protected $plugin_views_dir = '';
10
  protected $theme_views_dir = '';
11
 
12
- protected $originals = array();
13
- protected $overrides = array();
14
-
15
 
16
  /**
17
  * Examine the plugin views (and optionally any theme overrides) and analyse
@@ -176,7 +175,7 @@ class Tribe__Support__Template_Checker {
176
  * @return array
177
  */
178
  public function get_versioned_views() {
179
- $versioned_views = array();
180
 
181
  foreach ( $this->originals as $key => $version ) {
182
  if ( ! empty( $version ) ) {
@@ -196,7 +195,7 @@ class Tribe__Support__Template_Checker {
196
  * @return array
197
  */
198
  public function get_views_tagged_this_release() {
199
- $currently_tagged_views = array();
200
 
201
  foreach ( $this->get_versioned_views() as $key => $version ) {
202
  if ( $version === $this->plugin_version ) {
@@ -226,7 +225,7 @@ class Tribe__Support__Template_Checker {
226
  * @return array
227
  */
228
  public function get_versioned_overrides() {
229
- $versioned_views = array();
230
 
231
  foreach ( $this->overrides as $key => $version ) {
232
  if ( ! empty( $version ) ) {
@@ -252,7 +251,7 @@ class Tribe__Support__Template_Checker {
252
  * @return array
253
  */
254
  public function get_outdated_overrides( $include_unknown = false ) {
255
- $outdated = array();
256
  $originals = $this->get_versioned_views();
257
 
258
  $overrides = $include_unknown
9
  protected $plugin_views_dir = '';
10
  protected $theme_views_dir = '';
11
 
12
+ protected $originals = [];
13
+ protected $overrides = [];
 
14
 
15
  /**
16
  * Examine the plugin views (and optionally any theme overrides) and analyse
175
  * @return array
176
  */
177
  public function get_versioned_views() {
178
+ $versioned_views = [];
179
 
180
  foreach ( $this->originals as $key => $version ) {
181
  if ( ! empty( $version ) ) {
195
  * @return array
196
  */
197
  public function get_views_tagged_this_release() {
198
+ $currently_tagged_views = [];
199
 
200
  foreach ( $this->get_versioned_views() as $key => $version ) {
201
  if ( $version === $this->plugin_version ) {
225
  * @return array
226
  */
227
  public function get_versioned_overrides() {
228
+ $versioned_views = [];
229
 
230
  foreach ( $this->overrides as $key => $version ) {
231
  if ( ! empty( $version ) ) {
251
  * @return array
252
  */
253
  public function get_outdated_overrides( $include_unknown = false ) {
254
+ $outdated = [];
255
  $originals = $this->get_versioned_views();
256
 
257
  $overrides = $include_unknown
common/src/Tribe/Support/Template_Checker_Report.php CHANGED
@@ -14,7 +14,7 @@ class Tribe__Support__Template_Checker_Report {
14
  *
15
  * @var array
16
  */
17
- protected static $plugin_reports = array();
18
 
19
  /**
20
  * Container for finished report.
@@ -53,7 +53,7 @@ class Tribe__Support__Template_Checker_Report {
53
  *
54
  * @var array $registered_template_systems
55
  */
56
- return apply_filters( 'tribe_support_registered_template_systems', array() );
57
  }
58
 
59
  /**
14
  *
15
  * @var array
16
  */
17
+ protected static $plugin_reports = [];
18
 
19
  /**
20
  * Container for finished report.
53
  *
54
  * @var array $registered_template_systems
55
  */
56
+ return apply_filters( 'tribe_support_registered_template_systems', [] );
57
  }
58
 
59
  /**
common/src/Tribe/Tabbed_View.php CHANGED
@@ -13,7 +13,7 @@ class Tribe__Tabbed_View {
13
  *
14
  * @var array An associative array in the [<slug> => <instance>] format.
15
  */
16
- protected $items = array();
17
 
18
  /**
19
  * The slug of the default tab
@@ -32,7 +32,7 @@ class Tribe__Tabbed_View {
32
  *
33
  * @var array|object
34
  */
35
- protected $data = array();
36
 
37
  /**
38
  * @var string
@@ -99,7 +99,7 @@ class Tribe__Tabbed_View {
99
  * @return Tribe__Tabbed_View__Tab[] An array of all the active and visible tabs.
100
  */
101
  public function get_visibles() {
102
- return array_filter( $this->get(), array( $this, 'is_tab_visible' ) );
103
  }
104
 
105
  /**
@@ -175,7 +175,7 @@ class Tribe__Tabbed_View {
175
  * @return null|array|object If we couldn't find the tab it will be null, if the slug is null will return all tabs
176
  */
177
  public function get( $slug = null ) {
178
- uasort( $this->items, array( $this, 'sort_by_priority' ) );
179
 
180
  if ( is_null( $slug ) ) {
181
  return $this->items;
@@ -295,7 +295,7 @@ class Tribe__Tabbed_View {
295
  * @return Tribe__Tabbed_View__Tab[]
296
  */
297
  public function get_tabs() {
298
- uasort( $this->items, array( $this, 'sort_by_priority' ) );
299
 
300
  return array_values( $this->items );
301
  }
@@ -332,9 +332,9 @@ class Tribe__Tabbed_View {
332
  return '';
333
  }
334
 
335
- $default_data = array(
336
  'view' => $this,
337
- );
338
 
339
  $data = array_merge( $default_data, (array) $this->data );
340
 
13
  *
14
  * @var array An associative array in the [<slug> => <instance>] format.
15
  */
16
+ protected $items = [];
17
 
18
  /**
19
  * The slug of the default tab
32
  *
33
  * @var array|object
34
  */
35
+ protected $data = [];
36
 
37
  /**
38
  * @var string
99
  * @return Tribe__Tabbed_View__Tab[] An array of all the active and visible tabs.
100
  */
101
  public function get_visibles() {
102
+ return array_filter( $this->get(), [ $this, 'is_tab_visible' ] );
103
  }
104
 
105
  /**
175
  * @return null|array|object If we couldn't find the tab it will be null, if the slug is null will return all tabs
176
  */
177
  public function get( $slug = null ) {
178
+ uasort( $this->items, [ $this, 'sort_by_priority' ] );
179
 
180
  if ( is_null( $slug ) ) {
181
  return $this->items;
295
  * @return Tribe__Tabbed_View__Tab[]
296
  */
297
  public function get_tabs() {
298
+ uasort( $this->items, [ $this, 'sort_by_priority' ] );
299
 
300
  return array_values( $this->items );
301
  }
332
  return '';
333
  }
334
 
335
+ $default_data = [
336
  'view' => $this,
337
+ ];
338
 
339
  $data = array_merge( $default_data, (array) $this->data );
340
 
common/src/Tribe/Tabbed_View/Tab.php CHANGED
@@ -20,7 +20,7 @@ class Tribe__Tabbed_View__Tab {
20
  *
21
  * @var array|object
22
  */
23
- protected $data = array();
24
 
25
  /**
26
  * The template file that should be used to render the tab.
@@ -164,9 +164,9 @@ class Tribe__Tabbed_View__Tab {
164
  return '';
165
  }
166
 
167
- $default_data = array(
168
  'tab' => $this,
169
- );
170
 
171
  $data = array_merge( $default_data, (array) $this->data );
172
 
@@ -189,14 +189,14 @@ class Tribe__Tabbed_View__Tab {
189
  *
190
  * @return string
191
  */
192
- public function get_url( $args = array(), $relative = false ) {
193
  if ( ! empty( $this->url ) ) {
194
  return $this->url;
195
  }
196
 
197
- $defaults = array(
198
  'tab' => $this->get_slug(),
199
- );
200
 
201
  // Allow the link to be "changed" on the fly
202
  $args = wp_parse_args( $args, $defaults );
20
  *
21
  * @var array|object
22
  */
23
+ protected $data = [];
24
 
25
  /**
26
  * The template file that should be used to render the tab.
164
  return '';
165
  }
166
 
167
+ $default_data = [
168
  'tab' => $this,
169
+ ];
170
 
171
  $data = array_merge( $default_data, (array) $this->data );
172
 
189
  *
190
  * @return string
191
  */
192
+ public function get_url( $args = [], $relative = false ) {
193
  if ( ! empty( $this->url ) ) {
194
  return $this->url;
195
  }
196
 
197
+ $defaults = [
198
  'tab' => $this->get_slug(),
199
+ ];
200
 
201
  // Allow the link to be "changed" on the fly
202
  $args = wp_parse_args( $args, $defaults );
common/src/Tribe/Template.php CHANGED
@@ -1,5 +1,6 @@
1
  <?php
2
 
 
3
  use Tribe\Utils\Strings;
4
 
5
  class Tribe__Template {
@@ -10,7 +11,7 @@ class Tribe__Template {
10
  *
11
  * @var array
12
  */
13
- protected $folder = array();
14
 
15
  /**
16
  * The origin class for the plugin where the template lives
@@ -37,7 +38,7 @@ class Tribe__Template {
37
  *
38
  * @var array
39
  */
40
- protected $global = array();
41
 
42
  /**
43
  * Used for finding templates for public templates on themes inside of a folder.
@@ -233,7 +234,7 @@ class Tribe__Template {
233
  *
234
  * @return self
235
  */
236
- public function add_template_globals( $context = array() ) {
237
  // Cast as Array merge and save
238
  $this->global = wp_parse_args( (array) $context, $this->global );
239
 
@@ -612,7 +613,7 @@ class Tribe__Template {
612
  }
613
 
614
  // Build the File Path
615
- $file = implode( DIRECTORY_SEPARATOR, array_merge( (array) $folder['path'], $name ) );
616
 
617
  // Append the Extension to the file path
618
  $file .= '.php';
1
  <?php
2
 
3
+ use Tribe\Utils\Paths;
4
  use Tribe\Utils\Strings;
5
 
6
  class Tribe__Template {
11
  *
12
  * @var array
13
  */
14
+ protected $folder = [];
15
 
16
  /**
17
  * The origin class for the plugin where the template lives
38
  *
39
  * @var array
40
  */
41
+ protected $global = [];
42
 
43
  /**
44
  * Used for finding templates for public templates on themes inside of a folder.
234
  *
235
  * @return self
236
  */
237
+ public function add_template_globals( $context = [] ) {
238
  // Cast as Array merge and save
239
  $this->global = wp_parse_args( (array) $context, $this->global );
240
 
613
  }
614
 
615
  // Build the File Path
616
+ $file = Paths::merge( $folder['path'], $name );
617
 
618
  // Append the Extension to the file path
619
  $file .= '.php';
common/src/Tribe/Template_Factory.php CHANGED
@@ -23,7 +23,7 @@ class Tribe__Template_Factory {
23
  *
24
  * @var array
25
  **/
26
- protected $asset_packages = array();
27
 
28
  /**
29
  * Static variable that holds array of vendor script handles, for adding to later deps.
@@ -33,7 +33,7 @@ class Tribe__Template_Factory {
33
  * @static
34
  * @var array
35
  */
36
- protected static $vendor_scripts = array();
37
 
38
  /**
39
  * Constant that holds the ajax hook suffix for the view
@@ -154,7 +154,7 @@ class Tribe__Template_Factory {
154
  * @param string $name
155
  * @param array $deps Dependents
156
  */
157
- public static function asset_package( $name, $deps = array() ) {
158
 
159
  $common = Tribe__Main::instance();
160
  $prefix = 'tribe-events';
23
  *
24
  * @var array
25
  **/
26
+ protected $asset_packages = [];
27
 
28
  /**
29
  * Static variable that holds array of vendor script handles, for adding to later deps.
33
  * @static
34
  * @var array
35
  */
36
+ protected static $vendor_scripts = [];
37
 
38
  /**
39
  * Constant that holds the ajax hook suffix for the view
154
  * @param string $name
155
  * @param array $deps Dependents
156
  */
157
+ public static function asset_package( $name, $deps = [] ) {
158
 
159
  $common = Tribe__Main::instance();
160
  $prefix = 'tribe-events';
common/src/Tribe/Template_Part_Cache.php CHANGED
@@ -56,13 +56,13 @@ class Tribe__Template_Part_Cache {
56
  public function add_hooks() {
57
 
58
  // set the cached html in transients after the template part is included
59
- add_filter( 'tribe_get_template_part_content', array( $this, 'set' ), 10, 2 );
60
 
61
  // get the cached html right before the setup_view runs so it's available for bypassing any view logic
62
- add_action( 'tribe_events_before_view', array( $this, 'get' ), 9, 1 );
63
 
64
  // when the specified template part is included, show the cached html instead
65
- add_filter( 'tribe_get_template_part_path_' . $this->template, array( $this, 'display' ) );
66
  }
67
 
68
  /**
56
  public function add_hooks() {
57
 
58
  // set the cached html in transients after the template part is included
59
+ add_filter( 'tribe_get_template_part_content', [ $this, 'set' ], 10, 2 );
60
 
61
  // get the cached html right before the setup_view runs so it's available for bypassing any view logic
62
+ add_action( 'tribe_events_before_view', [ $this, 'get' ], 9, 1 );
63
 
64
  // when the specified template part is included, show the cached html instead
65
+ add_filter( 'tribe_get_template_part_path_' . $this->template, [ $this, 'display' ] );
66
  }
67
 
68
  /**
common/src/Tribe/Templates.php CHANGED
@@ -37,7 +37,7 @@ class Tribe__Templates {
37
  */
38
  public static function locate_stylesheet( $stylesheets, $fallback = false ) {
39
  if ( ! is_array( $stylesheets ) ) {
40
- $stylesheets = array( $stylesheets );
41
  }
42
  if ( empty( $stylesheets ) ) {
43
  return $fallback;
37
  */
38
  public static function locate_stylesheet( $stylesheets, $fallback = false ) {
39
  if ( ! is_array( $stylesheets ) ) {
40
+ $stylesheets = [ $stylesheets ];
41
  }
42
  if ( empty( $stylesheets ) ) {
43
  return $fallback;
common/src/Tribe/Terms.php CHANGED
@@ -16,7 +16,7 @@ class Tribe__Terms {
16
  public static function translate_terms_to_ids( $terms, $taxonomy, $create_missing = true ) {
17
  $terms = is_string( $terms ) ? preg_split( '/\\s*,\\s*/', $terms ) : (array) $terms;
18
 
19
- $term_ids = array();
20
  foreach ( $terms as $term ) {
21
  if ( ! $term instanceof WP_Term && ! strlen( trim( $term ) ) ) {
22
  continue;
16
  public static function translate_terms_to_ids( $terms, $taxonomy, $create_missing = true ) {
17
  $terms = is_string( $terms ) ? preg_split( '/\\s*,\\s*/', $terms ) : (array) $terms;
18
 
19
+ $term_ids = [];
20
  foreach ( $terms as $term ) {
21
  if ( ! $term instanceof WP_Term && ! strlen( trim( $term ) ) ) {
22
  continue;
common/src/Tribe/Timezones.php CHANGED
@@ -15,7 +15,7 @@ class Tribe__Timezones {
15
  *
16
  * @var array
17
  */
18
- protected static $timezones = array();
19
 
20
  public static function init() {
21
  self::invalidate_caches();
@@ -27,8 +27,8 @@ class Tribe__Timezones {
27
  * Currently we are concerned only with the site timezone abbreviation.
28
  */
29
  protected static function invalidate_caches() {
30
- add_filter( 'pre_update_option_gmt_offset', array( __CLASS__, 'clear_site_timezone_abbr' ) );
31
- add_filter( 'pre_update_option_timezone_string', array( __CLASS__, 'clear_site_timezone_abbr' ) );
32
  }
33
 
34
  /**
@@ -462,11 +462,11 @@ class Tribe__Timezones {
462
  }
463
 
464
  // if the offset contains fractions like :15, :30 or :45 convert them
465
- $supported_offsets = array(
466
  '/:15$/' => '.25',
467
  '/:30$/' => '.5',
468
  '/:45$/' => '.75',
469
- );
470
  $offset = preg_replace( array_keys( $supported_offsets ), array_values( $supported_offsets ), $offset );
471
 
472
  // Convert the offset to minutes for easier handling of fractional offsets
15
  *
16
  * @var array
17
  */
18
+ protected static $timezones = [];
19
 
20
  public static function init() {
21
  self::invalidate_caches();
27
  * Currently we are concerned only with the site timezone abbreviation.
28
  */
29
  protected static function invalidate_caches() {
30
+ add_filter( 'pre_update_option_gmt_offset', [ __CLASS__, 'clear_site_timezone_abbr' ] );
31
+ add_filter( 'pre_update_option_timezone_string', [ __CLASS__, 'clear_site_timezone_abbr' ] );
32
  }
33
 
34
  /**
462
  }
463
 
464
  // if the offset contains fractions like :15, :30 or :45 convert them
465
+ $supported_offsets = [
466
  '/:15$/' => '.25',
467
  '/:30$/' => '.5',
468
  '/:45$/' => '.75',
469
+ ];
470
  $offset = preg_replace( array_keys( $supported_offsets ), array_values( $supported_offsets ), $offset );
471
 
472
  // Convert the offset to minutes for easier handling of fractional offsets
common/src/Tribe/Tracker.php CHANGED
@@ -19,34 +19,34 @@ class Tribe__Tracker {
19
  /**
20
  * @var array An array of the tracked post types.
21
  */
22
- protected $tracked_post_types = array();
23
 
24
  /**
25
  * @var array An array of the tracked taxonomies.
26
  */
27
- protected $tracked_taxonomies = array();
28
 
29
  /**
30
  * Hooks up the methods that will actually track the fields we are looking for.
31
  */
32
  public function hook() {
33
  // Track the Meta Updates for Meta That came from the correct Post Types
34
- add_filter( 'update_post_metadata', array( $this, 'filter_watch_updated_meta' ), PHP_INT_MAX - 1, 5 );
35
 
36
  // After a meta is added we mark that is has been modified
37
- add_action( 'added_post_meta', array( $this, 'register_added_deleted_meta' ), PHP_INT_MAX - 1, 3 );
38
 
39
  // Before a meta is removed we mark that is has been modified
40
- add_action( 'delete_post_meta', array( $this, 'register_added_deleted_meta' ), PHP_INT_MAX - 1, 3 );
41
 
42
  // Track the Post Fields Updates for Meta in the correct Post Types
43
- add_action( 'post_updated', array( $this, 'filter_watch_post_fields' ), 10, 3 );
44
 
45
  // Track the Post term updates
46
- add_action( 'set_object_terms', array( $this, 'track_taxonomy_term_changes' ), 10, 6 );
47
 
48
  // Clean up modified fields if the post is removed.
49
- add_action( 'delete_post', array( $this, 'cleanup_meta_fields' ) );
50
  }
51
 
52
  /**
@@ -106,7 +106,7 @@ class Tribe__Tracker {
106
  */
107
  public function get_post_types() {
108
  // By default we are not tracking anything
109
- $tracked_post_types = array();
110
 
111
  /**
112
  * Adds a way for Developers to add and remove which post types will be tracked
@@ -128,10 +128,10 @@ class Tribe__Tracker {
128
  */
129
  public function get_excluded_meta_keys() {
130
  // By default we are not tracking anything
131
- $excluded_keys = array(
132
  '_edit_lock',
133
  self::$field_key,
134
- );
135
 
136
  /**
137
  * Adds a way for Developers remove Meta Keys that shouldn't be tracked
@@ -197,7 +197,7 @@ class Tribe__Tracker {
197
  // Fetch the current data from the modified fields
198
  $modified = get_post_meta( $post->ID, self::$field_key, true );
199
  if ( ! is_array( $modified ) ) {
200
- $modified = array();
201
  }
202
 
203
  // If we got here we will update the Modified Meta
@@ -276,7 +276,7 @@ class Tribe__Tracker {
276
  // Fetch the current data from the modified fields
277
  $modified = get_post_meta( $post->ID, self::$field_key, true );
278
  if ( ! is_array( $modified ) ) {
279
- $modified = array();
280
  }
281
 
282
  // If we got here we will update the Modified Meta
@@ -320,17 +320,17 @@ class Tribe__Tracker {
320
  $now = current_time( 'timestamp' );
321
 
322
  if ( ! $modified = get_post_meta( $post_id, self::$field_key, true ) ) {
323
- $modified = array();
324
  }
325
 
326
- $fields_to_check_for_changes = array(
327
  'post_title',
328
  'post_content',
329
  'post_excerpt',
330
  'post_status',
331
  'post_type',
332
  'post_parent',
333
- );
334
 
335
  foreach ( $fields_to_check_for_changes as $field ) {
336
  if ( ! $this->has_field_changed( $field, $post_after, $post_before ) ) {
@@ -392,7 +392,7 @@ class Tribe__Tracker {
392
  }
393
 
394
  if ( ! $modified = get_post_meta( $post->ID, self::$field_key, true ) ) {
395
- $modified = array();
396
  }
397
 
398
  if ( $tt_ids == $old_tt_ids ) {
19
  /**
20
  * @var array An array of the tracked post types.
21
  */
22
+ protected $tracked_post_types = [];
23
 
24
  /**
25
  * @var array An array of the tracked taxonomies.
26
  */
27
+ protected $tracked_taxonomies = [];
28
 
29
  /**
30
  * Hooks up the methods that will actually track the fields we are looking for.
31
  */
32
  public function hook() {
33
  // Track the Meta Updates for Meta That came from the correct Post Types
34
+ add_filter( 'update_post_metadata', [ $this, 'filter_watch_updated_meta' ], PHP_INT_MAX - 1, 5 );
35
 
36
  // After a meta is added we mark that is has been modified
37
+ add_action( 'added_post_meta', [ $this, 'register_added_deleted_meta' ], PHP_INT_MAX - 1, 3 );
38
 
39
  // Before a meta is removed we mark that is has been modified
40
+ add_action( 'delete_post_meta', [ $this, 'register_added_deleted_meta' ], PHP_INT_MAX - 1, 3 );
41
 
42
  // Track the Post Fields Updates for Meta in the correct Post Types
43
+ add_action( 'post_updated', [ $this, 'filter_watch_post_fields' ], 10, 3 );
44
 
45
  // Track the Post term updates
46
+ add_action( 'set_object_terms', [ $this, 'track_taxonomy_term_changes' ], 10, 6 );
47
 
48
  // Clean up modified fields if the post is removed.
49
+ add_action( 'delete_post', [ $this, 'cleanup_meta_fields' ] );
50
  }
51
 
52
  /**
106
  */
107
  public function get_post_types() {
108
  // By default we are not tracking anything
109
+ $tracked_post_types = [];
110
 
111
  /**
112
  * Adds a way for Developers to add and remove which post types will be tracked
128
  */
129
  public function get_excluded_meta_keys() {
130
  // By default we are not tracking anything
131
+ $excluded_keys = [
132
  '_edit_lock',
133
  self::$field_key,
134
+ ];
135
 
136
  /**
137
  * Adds a way for Developers remove Meta Keys that shouldn't be tracked
197
  // Fetch the current data from the modified fields
198
  $modified = get_post_meta( $post->ID, self::$field_key, true );
199
  if ( ! is_array( $modified ) ) {
200
+ $modified = [];
201
  }
202
 
203
  // If we got here we will update the Modified Meta
276
  // Fetch the current data from the modified fields
277
  $modified = get_post_meta( $post->ID, self::$field_key, true );
278
  if ( ! is_array( $modified ) ) {
279
+ $modified = [];
280
  }
281
 
282
  // If we got here we will update the Modified Meta
320
  $now = current_time( 'timestamp' );
321
 
322
  if ( ! $modified = get_post_meta( $post_id, self::$field_key, true ) ) {
323
+ $modified = [];
324
  }
325
 
326
+ $fields_to_check_for_changes = [
327
  'post_title',
328
  'post_content',
329
  'post_excerpt',
330
  'post_status',
331
  'post_type',
332
  'post_parent',
333
+ ];
334
 
335
  foreach ( $fields_to_check_for_changes as $field ) {
336
  if ( ! $this->has_field_changed( $field, $post_after, $post_before ) ) {
392
  }
393
 
394
  if ( ! $modified = get_post_meta( $post->ID, self::$field_key, true ) ) {
395
+ $modified = [];
396
  }
397
 
398
  if ( $tt_ids == $old_tt_ids ) {
common/src/Tribe/Updater.php CHANGED
@@ -90,7 +90,7 @@ class Tribe__Updater {
90
  * @return array
91
  */
92
  public function get_update_callbacks() {
93
- return array();
94
  }
95
 
96
  /**
@@ -102,9 +102,9 @@ class Tribe__Updater {
102
  * @return array
103
  */
104
  public function get_constant_update_callbacks() {
105
- return array(
106
- array( $this, 'flush_rewrites' ),
107
- );
108
  }
109
 
110
  /**
90
  * @return array
91
  */
92
  public function get_update_callbacks() {
93
+ return [];
94
  }
95
 
96
  /**
102
  * @return array
103
  */
104
  public function get_constant_update_callbacks() {
105
+ return [
106
+ [ $this, 'flush_rewrites' ],
107
+ ];
108
  }
109
 
110
  /**
common/src/Tribe/Utils/Array.php CHANGED
@@ -521,5 +521,151 @@ if ( ! class_exists( 'Tribe__Utils__Array' ) ) {
521
 
522
  return $result;
523
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
524
  }
525
  }
521
 
522
  return $result;
523
  }
524
+
525
+ /**
526
+ * Stringifies the numeric keys of an array.
527
+ *
528
+ * @since 4.12.14
529
+ *
530
+ * @param array<int|string,mixed> $input The input array whose keys should be stringified.
531
+ * @param string|null $prefix The prefix that should be use to stringify the keys, if not provided
532
+ * then it will be generated.
533
+ *
534
+ * @return array<string,mixed> The input array with each numeric key stringified.
535
+ */
536
+ public static function stringify_keys( array $input, $prefix = null ) {
537
+ $prefix = null === $prefix ? uniqid( 'sk_', true ) : $prefix;
538
+ $visitor = static function ( $key, $value ) use ( $prefix ) {
539
+ $string_key = is_numeric( $key ) ? $prefix . $key : $key;
540
+
541
+ return [ $string_key, $value ];
542
+ };
543
+
544
+ return static::array_visit_recursive( $input, $visitor );
545
+ }
546
+
547
+ /**
548
+ * The inverse of the `stringify_keys` method, it will restore numeric keys for previously
549
+ * stringified keys.
550
+ *
551
+ * @since 4.12.14
552
+ *
553
+ * @param array<int|string,mixed> $input The input array whose stringified keys should be
554
+ * destringified.
555
+ * @param string $prefix The prefix that should be used to target only specific string keys.
556
+ *
557
+ * @return array<int|string,mixed> The input array, its stringified keys destringified.
558
+ */
559
+ public static function destringify_keys( array $input, $prefix = 'sk_' ) {
560
+ $visitor = static function ( $key, $value ) use ( $prefix ) {
561
+ $destringified_key = 0 === self::strpos( $key, $prefix ) ? null : $key;
562
+
563
+ return [ $destringified_key, $value ];
564
+ };
565
+
566
+ return static::array_visit_recursive( $input, $visitor );
567
+ }
568
+
569
+ /**
570
+ * Recursively visits all elements of an array applying the specified callback to each element
571
+ * key and value.
572
+ *
573
+ * @since 4.12.14
574
+ *
575
+ * @param array $input The input array whose nodes should be visited.
576
+ * @param callable $visitor A callback function that will be called on each array item; the callback will
577
+ * receive the item key and value as input and should return an array that contains
578
+ * the update key and value in the shape `[ <key>, <value> ]`. Returning a `null`
579
+ * key will cause the element to be removed from the array.
580
+ */
581
+ public static function array_visit_recursive( $input, callable $visitor ) {
582
+ if ( ! is_array( $input ) ) {
583
+ return $input;
584
+ }
585
+
586
+ $return = [];
587
+
588
+ foreach ( $input as $key => &$value ) {
589
+ if ( is_array( $value ) ) {
590
+ $value = static::array_visit_recursive( $value, $visitor );
591
+ }
592
+ // Ensure visitors can quickly return `null` to remove an element.
593
+ list( $updated_key, $update_value ) = array_replace( [ $key, $value ], (array) $visitor( $key, $value ) );
594
+ if ( false === $updated_key ) {
595
+ // Visitor will be able to remove an element by returning a `false` key for it.
596
+ continue;
597
+ }
598
+ if ( null === $updated_key ) {
599
+ // Automatically assign the first available numeric index to the element.
600
+ $return[] = $update_value;
601
+ } else {
602
+ $return[ $updated_key ] = $update_value;
603
+ }
604
+ }
605
+
606
+ return $return;
607
+ }
608
+
609
+ /**
610
+ * Recursively remove associative, non numeric, keys from an array.
611
+ *
612
+ * @since 4.12.14
613
+ *
614
+ * @param array<string|int,mixed> $input The input array.
615
+ *
616
+ * @return array<int|mixed> An array that only contains integer keys at any of its levels.
617
+ */
618
+ public static function remove_numeric_keys_recursive( array $input ) {
619
+ return self::array_visit_recursive(
620
+ $input,
621
+ static function ( $key ) {
622
+ return is_numeric( $key ) ? false : $key;
623
+ }
624
+ );
625
+ }
626
+
627
+ /**
628
+ * Recursively remove numeric keys from an array.
629
+ *
630
+ * @since 4.12.14
631
+ *
632
+ * @param array<string|int,mixed> $input The input array.
633
+ *
634
+ * @return array<string,mixed> An array that only contains non numeric keys at any of its levels.
635
+ */
636
+ public static function remove_string_keys_recursive( array $input ) {
637
+ return self::array_visit_recursive(
638
+ $input,
639
+ static function ( $key ) {
640
+ return !is_numeric( $key ) ? false : $key;
641
+ }
642
+ );
643
+ }
644
+
645
+ /**
646
+ * Merges two or more arrays in the nested format used by WP_Query arguments preserving and merging them correctly.
647
+ *
648
+ * The method will recursively replace named keys and merge numeric keys. The method takes its name from its intended
649
+ * primary use, but it's not limited to query arguments only.
650
+ *
651
+ * @since 4.12.14
652
+ *
653
+ * @param array<string|int,mixed> ...$arrays A set of arrays to merge.
654
+ *
655
+ * @return array<string|int,mixed> The recursively merged array.
656
+ */
657
+ public static function merge_recursive_query_vars( array ...$arrays ) {
658
+ if ( ! count( $arrays ) ) {
659
+ return [];
660
+ }
661
+
662
+ // Temporarily transform numeric keys to string keys generated with time-related randomness.
663
+ $stringified = array_map( [ static::class, 'stringify_keys' ], $arrays );
664
+ // Replace recursive will recursively replace any entry that has the same string key, stringified keys will never match due to randomness.
665
+ $merged = array_replace_recursive( ...$stringified );
666
+
667
+ // Finally destringify the keys to return something that will resemble, in shape, the original arrays.
668
+ return static::destringify_keys( $merged );
669
+ }
670
  }
671
  }
common/src/Tribe/Utils/Callback.php CHANGED
@@ -9,7 +9,7 @@ class Tribe__Utils__Callback {
9
  *
10
  * @var array
11
  */
12
- public $items = array();
13
 
14
  /**
15
  * The Prefix we use for the Overloading replacement
@@ -58,12 +58,12 @@ class Tribe__Utils__Callback {
58
  array_shift( $arguments );
59
  array_shift( $arguments );
60
 
61
- $item = (object) array(
62
- 'slug' => $slug,
63
- 'method' => $method,
64
  'arguments' => $arguments,
65
- 'is_empty' => $is_empty,
66
- );
67
 
68
  $key = md5( json_encode( $item ) );
69
 
@@ -76,7 +76,7 @@ class Tribe__Utils__Callback {
76
 
77
  $this->items[ $key ] = $item;
78
 
79
- return array( $this, $this->prefix . $key );
80
  }
81
 
82
  /**
@@ -145,7 +145,7 @@ class Tribe__Utils__Callback {
145
  * @return array An array of properties that should be serialized.
146
  */
147
  public function __sleep() {
148
- return array( 'slug', 'method' );
149
  }
150
 
151
  /**
9
  *
10
  * @var array
11
  */
12
+ public $items = [];
13
 
14
  /**
15
  * The Prefix we use for the Overloading replacement
58
  array_shift( $arguments );
59
  array_shift( $arguments );
60
 
61
+ $item = (object) [
62
+ 'slug' => $slug,
63
+ 'method' => $method,
64
  'arguments' => $arguments,
65
+ 'is_empty' => $is_empty,
66
+ ];
67
 
68
  $key = md5( json_encode( $item ) );
69
 
76
 
77
  $this->items[ $key ] = $item;
78
 
79
+ return [ $this, $this->prefix . $key ];
80
  }
81
 
82
  /**
145
  * @return array An array of properties that should be serialized.
146
  */
147
  public function __sleep() {
148
+ return [ 'slug', 'method' ];
149
  }
150
 
151
  /**
common/src/Tribe/Utils/Collection.php CHANGED
@@ -17,7 +17,7 @@ class Tribe__Utils__Collection extends SplDoublyLinkedList {
17
  *
18
  * @var array
19
  */
20
- protected $items = array();
21
 
22
  /**
23
  * The doubly-linked list that will hold the items handled by the collection.
17
  *
18
  * @var array
19
  */
20
+ protected $items = [];
21
 
22
  /**
23
  * The doubly-linked list that will hold the items handled by the collection.
common/src/Tribe/Utils/Color.php CHANGED
@@ -72,7 +72,7 @@ class Tribe__Utils__Color {
72
  $G = hexdec( $color[2] . $color[3] );
73
  $B = hexdec( $color[4] . $color[5] );
74
 
75
- $HSL = array();
76
 
77
  $var_R = ( $R / 255 );
78
  $var_G = ( $G / 255 );
@@ -127,13 +127,13 @@ class Tribe__Utils__Color {
127
  * @return string HEX string
128
  * @throws Exception "Bad HSL Array"
129
  */
130
- public static function hslToHex( $hsl = array() ) {
131
- // Make sure it's HSL
132
  if ( empty( $hsl ) || ! isset( $hsl['H'] ) || ! isset( $hsl['S'] ) || ! isset( $hsl['L'] ) ) {
133
  throw new Exception( 'Param was not an HSL array' );
134
  }
135
 
136
- list( $H, $S, $L ) = array( $hsl['H'] / 360, $hsl['S'], $hsl['L'] );
137
 
138
  if ( 0 == $S ) {
139
  $r = $L * 255;
@@ -197,8 +197,8 @@ class Tribe__Utils__Color {
197
  * @return string RGB string
198
  * @throws Exception "Bad RGB Array"
199
  */
200
- public static function rgbToHex( $rgb = array() ) {
201
- // Make sure it's RGB
202
  if ( empty( $rgb ) || ! isset( $rgb['R'] ) || ! isset( $rgb['G'] ) || ! isset( $rgb['B'] ) ) {
203
  throw new Exception( 'Param was not an RGB array' );
204
  }
@@ -269,7 +269,7 @@ class Tribe__Utils__Color {
269
  }
270
 
271
  // Return our gradient array
272
- return array( 'light' => $lightColor, 'dark' => $darkColor );
273
  }
274
 
275
 
@@ -449,8 +449,8 @@ class Tribe__Utils__Color {
449
  $gmix = ( ( $rgb1['G'] * $r1 ) + ( $rgb2['G'] * $r2 ) ) / 2;
450
  $bmix = ( ( $rgb1['B'] * $r1 ) + ( $rgb2['B'] * $r2 ) ) / 2;
451
 
452
- return array( 'R' => $rmix, 'G' => $gmix, 'B' => $bmix );
453
- }
454
 
455
  /**
456
  * Given a Hue, returns corresponding RGB value
72
  $G = hexdec( $color[2] . $color[3] );
73
  $B = hexdec( $color[4] . $color[5] );
74
 
75
+ $HSL = [];
76
 
77
  $var_R = ( $R / 255 );
78
  $var_G = ( $G / 255 );
127
  * @return string HEX string
128
  * @throws Exception "Bad HSL Array"
129
  */
130
+ public static function hslToHex( $hsl = [] ) {
131
+ // Make sure it's HSL
132
  if ( empty( $hsl ) || ! isset( $hsl['H'] ) || ! isset( $hsl['S'] ) || ! isset( $hsl['L'] ) ) {
133
  throw new Exception( 'Param was not an HSL array' );
134
  }
135
 
136
+ list( $H, $S, $L ) = [ $hsl['H'] / 360, $hsl['S'], $hsl['L'] ];
137
 
138
  if ( 0 == $S ) {
139
  $r = $L * 255;
197
  * @return string RGB string
198
  * @throws Exception "Bad RGB Array"
199
  */
200
+ public static function rgbToHex( $rgb = [] ) {
201
+ // Make sure it's RGB
202
  if ( empty( $rgb ) || ! isset( $rgb['R'] ) || ! isset( $rgb['G'] ) || ! isset( $rgb['B'] ) ) {
203
  throw new Exception( 'Param was not an RGB array' );
204
  }
269
  }
270
 
271
  // Return our gradient array
272
+ return [ 'light' => $lightColor, 'dark' => $darkColor ];
273
  }
274
 
275
 
449
  $gmix = ( ( $rgb1['G'] * $r1 ) + ( $rgb2['G'] * $r2 ) ) / 2;
450
  $bmix = ( ( $rgb1['B'] * $r1 ) + ( $rgb2['B'] * $r2 ) ) / 2;
451
 
452
+ return [ 'R' => $rmix, 'G' => $gmix, 'B' => $bmix ];
453
+ }
454
 
455
  /**
456
  * Given a Hue, returns corresponding RGB value
common/src/Tribe/Utils/Coordinates_Provider.php CHANGED
@@ -76,7 +76,7 @@ class Tribe__Utils__Coordinates_Provider {
76
  }
77
 
78
  $base_request_url = trailingslashit( $this->get_google_api_base() ) . $this->get_google_api_json_format();
79
- $url = esc_url( add_query_arg( array( 'address' => $address ), $base_request_url ) );
80
  $response = $this->http->get( $url );
81
 
82
  if ( is_wp_error( $response ) ) {
@@ -95,7 +95,7 @@ class Tribe__Utils__Coordinates_Provider {
95
 
96
  $location = $decoded['results'][0]['geometry']['location'];
97
 
98
- $updated_transient = array_merge( $this->get_transient(), array( $address => $location ) );
99
  set_transient( self::$transient_name, $updated_transient );
100
  $this->transient = $updated_transient;
101
 
@@ -120,7 +120,7 @@ class Tribe__Utils__Coordinates_Provider {
120
  protected function get_transient() {
121
  if ( ! is_array( $this->transient ) ) {
122
  $transient = get_transient( self::$transient_name );
123
- $this->transient = is_array( $transient ) ? $transient : array();
124
  }
125
 
126
  return $this->transient;
76
  }
77
 
78
  $base_request_url = trailingslashit( $this->get_google_api_base() ) . $this->get_google_api_json_format();
79
+ $url = esc_url( add_query_arg( [ 'address' => $address ], $base_request_url ) );
80
  $response = $this->http->get( $url );
81
 
82
  if ( is_wp_error( $response ) ) {
95
 
96
  $location = $decoded['results'][0]['geometry']['location'];
97
 
98
+ $updated_transient = array_merge( $this->get_transient(), [ $address => $location ] );
99
  set_transient( self::$transient_name, $updated_transient );
100
  $this->transient = $updated_transient;
101
 
120
  protected function get_transient() {
121
  if ( ! is_array( $this->transient ) ) {
122
  $transient = get_transient( self::$transient_name );
123
+ $this->transient = is_array( $transient ) ? $transient : [];
124
  }
125
 
126
  return $this->transient;
common/src/Tribe/Utils/Element_Attributes.php CHANGED
@@ -188,7 +188,7 @@ class Element_Attributes {
188
  protected function parse_string( $arguments ) {
189
  $values = preg_split( '/\s+/', $arguments, -1, PREG_SPLIT_NO_EMPTY );
190
 
191
- // When it doesnt match, bail early.
192
  if ( ! $values ) {
193
  return;
194
  }
188
  protected function parse_string( $arguments ) {
189
  $values = preg_split( '/\s+/', $arguments, -1, PREG_SPLIT_NO_EMPTY );
190
 
191
+ // When it doesn't match, bail early.
192
  if ( ! $values ) {
193
  return;
194
  }
common/src/Tribe/Utils/Global_ID.php CHANGED
@@ -18,22 +18,22 @@ class Tribe__Utils__Global_ID {
18
  * Dont allow creation of Global IDs for other types of source
19
  * @var array
20
  */
21
- protected $valid_types = array(
22
  'url',
23
  'meetup',
24
  'facebook',
25
  'eventbrite',
26
- );
27
 
28
  /**
29
  * For some types of ID we have a predefined Origin
30
  * @var array
31
  */
32
- protected $type_origins = array(
33
- 'meetup' => 'meetup.com',
34
- 'facebook' => 'facebook.com',
35
  'eventbrite' => 'eventbrite.com',
36
- );
37
 
38
  /**
39
  * Tribe__Utils__Global_ID constructor.
@@ -123,7 +123,7 @@ class Tribe__Utils__Global_ID {
123
  *
124
  * @return string
125
  */
126
- public function generate( array $args = array() ) {
127
  // We can't do this without type or origin
128
  if ( ! $this->type() || ! $this->origin() ) {
129
  return false;
@@ -150,7 +150,7 @@ class Tribe__Utils__Global_ID {
150
  $parsed = wp_parse_url( 'http://' . $global_id );
151
 
152
  if ( ! empty( $parsed['query'] ) ) {
153
- $parsed_query = array();
154
 
155
  wp_parse_str( $parsed['query'], $parsed_query );
156
 
18
  * Dont allow creation of Global IDs for other types of source
19
  * @var array
20
  */
21
+ protected $valid_types = [
22
  'url',
23
  'meetup',
24
  'facebook',
25
  'eventbrite',
26
+ ];
27
 
28
  /**
29
  * For some types of ID we have a predefined Origin
30
  * @var array
31
  */
32
+ protected $type_origins = [
33
+ 'meetup' => 'meetup.com',
34
+ 'facebook' => 'facebook.com',
35
  'eventbrite' => 'eventbrite.com',
36
+ ];
37
 
38
  /**
39
  * Tribe__Utils__Global_ID constructor.
123
  *
124
  * @return string
125
  */
126
+ public function generate( array $args = [] ) {
127
  // We can't do this without type or origin
128
  if ( ! $this->type() || ! $this->origin() ) {
129
  return false;
150
  $parsed = wp_parse_url( 'http://' . $global_id );
151
 
152
  if ( ! empty( $parsed['query'] ) ) {
153
+ $parsed_query = [];
154
 
155
  wp_parse_str( $parsed['query'], $parsed_query );
156
 
common/src/Tribe/Utils/JSON.php CHANGED
@@ -22,7 +22,7 @@ class Tribe__Utils__JSON {
22
  return $value;
23
  }
24
  if ( is_array( $value ) ) {
25
- $escaped = array();
26
  foreach ( $value as $key => $subvalue ) {
27
  $escaped[ $key ] = self::escape_string( $subvalue );
28
  }
@@ -30,8 +30,8 @@ class Tribe__Utils__JSON {
30
  return $escaped;
31
  }
32
 
33
- $escapers = array( "\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c" );
34
- $replacements = array( "\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b" );
35
 
36
  return str_replace( $escapers, $replacements, $value );
37
  }
22
  return $value;
23
  }
24
  if ( is_array( $value ) ) {
25
+ $escaped = [];
26
  foreach ( $value as $key => $subvalue ) {
27
  $escaped[ $key ] = self::escape_string( $subvalue );
28
  }
30
  return $escaped;
31
  }
32
 
33
+ $escapers = [ "\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c" ];
34
+ $replacements = [ "\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b" ];
35
 
36
  return str_replace( $escapers, $replacements, $value );
37
  }
common/src/Tribe/Utils/Paths.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Utilities to manipulate file-system paths.
4
+ *
5
+ * @since 4.12.14
6
+ *
7
+ * @package Tribe\Utils
8
+ */
9
+
10
+ namespace Tribe\Utils;
11
+
12
+ /**
13
+ * Class Paths
14
+ *
15
+ * @since 4.12.14
16
+ *
17
+ * @package Tribe\Utils
18
+ */
19
+ class Paths {
20
+
21
+ /**
22
+ * Merge a set of paths into a single path.
23
+ *
24
+ * The function will take care of merging the paths intersecting their common fragments.
25
+ * E.g. `foo/bar/baz` and `bar/baz/test.php` will be merged int `foo/bar/baz/test.php`.
26
+ *
27
+ * @since 4.12.14
28
+ *
29
+ * @param array<string<array<string>> ...$paths A set of paths to merge, each one either a string or an array
30
+ * of path fragments.
31
+ *
32
+ * @return string The merged path, the path intersecting fragments removed.
33
+ */
34
+ public static function merge( ...$paths ) {
35
+ $merged_paths = '';
36
+
37
+ if ( count( $paths ) > 2 ) {
38
+ $slice = array_splice( $paths, 0, 1 );
39
+ $paths = array_merge( $slice, [ static::merge( ...$paths ) ] );
40
+ }
41
+
42
+ $path_1 = isset( $paths[0] ) ? $paths[0] : '';
43
+ $lead_slash = is_string( $path_1 ) && $path_1 !== ltrim( $path_1, '\\/' ) ? DIRECTORY_SEPARATOR : '';
44
+ $path_2 = isset( $paths[1] ) ? $paths[1] : '';
45
+ $trail_slash = is_string( $path_2 ) && $path_2 !== rtrim( $path_2, '\\/' ) ? DIRECTORY_SEPARATOR : '';
46
+ $path_1_frags = is_array( $path_1 ) ? $path_1 : array_filter( (array) preg_split( '/[\\\\\\/]/', $path_1 ) );
47
+ $path_2_frags = is_array( $path_2 ) ? $path_2 : array_filter( (array) preg_split( '/[\\\\\\/]/', $path_2 ) );
48
+ $non_consecutive_common = array_intersect( $path_1_frags, $path_2_frags );
49
+ $trimmed_path_2 = trim(
50
+ preg_replace(
51
+ '#^' . preg_quote( implode( DIRECTORY_SEPARATOR, $non_consecutive_common ), '#' ) . '#', '',
52
+ implode( DIRECTORY_SEPARATOR, $path_2_frags )
53
+ ),
54
+ '\\/'
55
+ );
56
+ $merged_paths .= $lead_slash . implode( DIRECTORY_SEPARATOR, $path_1_frags );
57
+ if ( $trimmed_path_2 ) {
58
+ $merged_paths .= DIRECTORY_SEPARATOR . $trimmed_path_2 . $trail_slash;
59
+ }
60
+
61
+ return $merged_paths;
62
+ }
63
+ }
common/src/Tribe/Utils/Plugins.php CHANGED
@@ -16,7 +16,7 @@ class Tribe__Utils__Plugins {
16
  * @return array Plugin data; keys match capitalized file header declarations.
17
  */
18
  public static function get_plugin_data( $plugin_file ) {
19
- $headers = array(
20
  'Name' => 'Plugin Name',
21
  'PluginURI' => 'Plugin URI',
22
  'Version' => 'Version',
@@ -28,7 +28,7 @@ class Tribe__Utils__Plugins {
28
  'TextDomain' => 'Text Domain',
29
  'DomainPath' => 'Domain Path',
30
  'Network' => 'Network',
31
- );
32
 
33
  /**
34
  * Filter which header keys passed to get_file_data().
@@ -65,7 +65,7 @@ class Tribe__Utils__Plugins {
65
  $full_list = array_merge( $full_list, wp_get_active_network_plugins() );
66
  }
67
 
68
- $filtered_list = array();
69
 
70
  foreach ( $full_list as $plugin ) {
71
  $base = plugin_basename( $plugin );
16
  * @return array Plugin data; keys match capitalized file header declarations.
17
  */
18
  public static function get_plugin_data( $plugin_file ) {
19
+ $headers = [
20
  'Name' => 'Plugin Name',
21
  'PluginURI' => 'Plugin URI',
22
  'Version' => 'Version',
28
  'TextDomain' => 'Text Domain',
29
  'DomainPath' => 'Domain Path',
30
  'Network' => 'Network',
31
+ ];
32
 
33
  /**
34
  * Filter which header keys passed to get_file_data().
65
  $full_list = array_merge( $full_list, wp_get_active_network_plugins() );
66
  }
67
 
68
+ $filtered_list = [];
69
 
70
  foreach ( $full_list as $plugin ) {
71
  $base = plugin_basename( $plugin );
common/src/Tribe/Utils/Post_Root_Pool.php CHANGED
@@ -132,8 +132,8 @@ class Tribe__Utils__Post_Root_Pool {
132
  protected function maybe_init_pool() {
133
  self::$prefix_pool = get_transient( $this->pool_transient_name );
134
  if ( self::$prefix_pool === false ) {
135
- self::$prefix_pool = array();
136
- set_transient( $this->pool_transient_name, array() );
137
  }
138
  }
139
 
132
  protected function maybe_init_pool() {
133
  self::$prefix_pool = get_transient( $this->pool_transient_name );
134
  if ( self::$prefix_pool === false ) {
135
+ self::$prefix_pool = [];
136
+ set_transient( $this->pool_transient_name, [] );
137
  }
138
  }
139
 
common/src/Tribe/Validate.php CHANGED
@@ -57,7 +57,7 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
57
  * @param array $field The field object to validate
58
  * @param mixed $value The value to validate
59
  */
60
- public function __construct( $field_id, $field, $value, $additional_args = array() ) {
61
 
62
  // prepare object properties
63
  $this->result = new stdClass;
@@ -96,7 +96,7 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
96
  if ( ( ! isset( $_POST[ $field_id ] ) || ! $_POST[ $field_id ] || $_POST[ $field_id ] == '' ) && isset( $this->field['can_be_empty'] ) && $this->field['can_be_empty'] ) {
97
  $this->result->valid = true;
98
  } else {
99
- call_user_func( array( $this, $this->type ) ); // run the validation
100
  }
101
  } else {
102
  // invalid validation type set, validation fails
@@ -291,7 +291,7 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
291
  return;
292
  }
293
 
294
- $this->value = is_array( $this->value ) ? $this->value : array( $this->value );
295
 
296
  foreach ( $this->value as $val ) {
297
  if ( array_key_exists( $val, $this->field['options'] ) ) {
@@ -312,10 +312,10 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
312
  */
313
  public function options_with_label() {
314
  if ( array_key_exists( $this->value, $this->field['options'] ) ) {
315
- $this->value = ( $this->value === 0 ) ? false : array(
316
  $this->value,
317
  $this->field['options'][ $this->value ],
318
- );
319
  $this->result->valid = true;
320
  } else {
321
  $this->result->valid = false;
@@ -465,7 +465,7 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
465
  if ( ! isset( $country[0] ) || ! isset( $country[1] ) ) {
466
  $this->result->valid = false;
467
  $this->result->error = sprintf( esc_html__( 'Country List must be formatted as one country per line in the following format: <br>US, United States <br> UK, United Kingdom.', 'tribe-common' ), $this->label );
468
- $this->value = wp_kses( $this->value, array() );
469
 
470
  return;
471
  }
57
  * @param array $field The field object to validate
58
  * @param mixed $value The value to validate
59
  */
60
+ public function __construct( $field_id, $field, $value, $additional_args = [] ) {
61
 
62
  // prepare object properties
63
  $this->result = new stdClass;
96
  if ( ( ! isset( $_POST[ $field_id ] ) || ! $_POST[ $field_id ] || $_POST[ $field_id ] == '' ) && isset( $this->field['can_be_empty'] ) && $this->field['can_be_empty'] ) {
97
  $this->result->valid = true;
98
  } else {
99
+ call_user_func( [ $this, $this->type ] ); // run the validation
100
  }
101
  } else {
102
  // invalid validation type set, validation fails
291
  return;
292
  }
293
 
294
+ $this->value = is_array( $this->value ) ? $this->value : [ $this->value ];
295
 
296
  foreach ( $this->value as $val ) {
297
  if ( array_key_exists( $val, $this->field['options'] ) ) {
312
  */
313
  public function options_with_label() {
314
  if ( array_key_exists( $this->value, $this->field['options'] ) ) {
315
+ $this->value = ( $this->value === 0 ) ? false : [
316
  $this->value,
317
  $this->field['options'][ $this->value ],
318
+ ];
319
  $this->result->valid = true;
320
  } else {
321
  $this->result->valid = false;
465
  if ( ! isset( $country[0] ) || ! isset( $country[1] ) ) {
466
  $this->result->valid = false;
467
  $this->result->error = sprintf( esc_html__( 'Country List must be formatted as one country per line in the following format: <br>US, United States <br> UK, United Kingdom.', 'tribe-common' ), $this->label );
468
+ $this->value = wp_kses( $this->value, [] );
469
 
470
  return;
471
  }
common/src/Tribe/Validator/Base.php CHANGED
@@ -94,7 +94,7 @@ class Tribe__Validator__Base implements Tribe__Validator__Interface {
94
  $sep = is_string( $sep ) ? $sep : ',';
95
  $list = Tribe__Utils__Array::list_to_array( $list, $sep );
96
 
97
- $valid = array_filter( $list, array( $this, 'is_positive_int' ) );
98
 
99
  return ! empty( $valid ) && count( $valid ) === count( $list );
100
  }
94
  $sep = is_string( $sep ) ? $sep : ',';
95
  $list = Tribe__Utils__Array::list_to_array( $list, $sep );
96
 
97
+ $valid = array_filter( $list, [ $this, 'is_positive_int' ] );
98
 
99
  return ! empty( $valid ) && count( $valid ) === count( $list );
100
  }
common/src/Tribe/View_Helpers.php CHANGED
@@ -56,21 +56,21 @@ if ( ! class_exists( 'Tribe__View_Helpers' ) ) {
56
  natsort( $countries );
57
 
58
  // Placeholder option ('Select a Country') first by default
59
- $select_country = array( '' => esc_html__( 'Select a Country:', 'tribe-common' ) );
60
  $countries = $select_country + $countries;
61
 
62
  if ( ( $postId || $useDefault ) ) {
63
  $countryValue = get_post_meta( $postId, '_EventCountry', true );
64
  if ( $countryValue ) {
65
- $defaultCountry = array( array_search( $countryValue, $countries ), $countryValue );
66
  } else {
67
  $defaultCountry = tribe_get_default_value( 'country' );
68
  }
69
  if ( $defaultCountry && $defaultCountry[0] != '' ) {
70
  $selectCountry = array_shift( $countries );
71
  asort( $countries );
72
- $countries = array( $defaultCountry[0] => $defaultCountry[1] ) + $countries;
73
- $countries = array( '' => $selectCountry ) + $countries;
74
  array_unique( $countries );
75
  }
76
  }
@@ -182,7 +182,7 @@ if ( ! class_exists( 'Tribe__View_Helpers' ) ) {
182
  * @return array The hours array.
183
  */
184
  private static function hours() {
185
- $hours = array();
186
  $rangeMax = self::is_24hr_format() ? 23 : 12;
187
  $rangeStart = $rangeMax > 12 ? 0 : 1;
188
  foreach ( range( $rangeStart, $rangeMax ) as $hour ) {
@@ -237,7 +237,7 @@ if ( ! class_exists( 'Tribe__View_Helpers' ) ) {
237
  * @return array The minutes array.
238
  */
239
  private static function minutes( $exact_minute = 0 ) {
240
- $minutes = array();
241
 
242
  // The exact minute should be an absint between 0 and 59
243
  $exact_minute = absint( $exact_minute );
@@ -282,10 +282,10 @@ if ( ! class_exists( 'Tribe__View_Helpers' ) ) {
282
  public static function getMeridianOptions( $date = '', $isStart = false ) {
283
  if ( strstr( get_option( 'time_format', Tribe__Date_Utils::TIMEFORMAT ), 'A' ) ) {
284
  $a = 'A';
285
- $meridians = array( 'AM', 'PM' );
286
  } else {
287
  $a = 'a';
288
- $meridians = array( 'am', 'pm' );
289
  }
290
  if ( empty( $date ) ) {
291
  $meridian = ( $isStart ) ? $meridians[0] : $meridians[1];
@@ -317,7 +317,7 @@ if ( ! class_exists( 'Tribe__View_Helpers' ) ) {
317
  $current_year = (int) date_i18n( 'Y' );
318
  $years_back = (int) apply_filters( 'tribe_years_to_go_back', 5, $current_year );
319
  $years_forward = (int) apply_filters( 'tribe_years_to_go_forward', 5, $current_year );
320
- $years = array();
321
  for ( $i = $years_back; $i > 0; $i -- ) {
322
  $year = $current_year - $i;
323
  $years[] = $year;
@@ -337,7 +337,7 @@ if ( ! class_exists( 'Tribe__View_Helpers' ) ) {
337
  * @return array The days array.
338
  */
339
  public static function days( $totalDays ) {
340
- $days = array();
341
  foreach ( range( 1, $totalDays ) as $day ) {
342
  $days[ $day ] = $day;
343
  }
56
  natsort( $countries );
57
 
58
  // Placeholder option ('Select a Country') first by default
59
+ $select_country = [ '' => esc_html__( 'Select a Country:', 'tribe-common' ) ];
60
  $countries = $select_country + $countries;
61
 
62
  if ( ( $postId || $useDefault ) ) {
63
  $countryValue = get_post_meta( $postId, '_EventCountry', true );
64
  if ( $countryValue ) {
65
+ $defaultCountry = [ array_search( $countryValue, $countries ), $countryValue ];
66
  } else {
67
  $defaultCountry = tribe_get_default_value( 'country' );
68
  }
69
  if ( $defaultCountry && $defaultCountry[0] != '' ) {
70
  $selectCountry = array_shift( $countries );
71
  asort( $countries );
72
+ $countries = [ $defaultCountry[0] => $defaultCountry[1] ] + $countries;
73
+ $countries = [ '' => $selectCountry ] + $countries;
74
  array_unique( $countries );
75
  }
76
  }
182
  * @return array The hours array.
183
  */
184
  private static function hours() {
185
+ $hours = [];
186
  $rangeMax = self::is_24hr_format() ? 23 : 12;
187
  $rangeStart = $rangeMax > 12 ? 0 : 1;
188
  foreach ( range( $rangeStart, $rangeMax ) as $hour ) {
237
  * @return array The minutes array.
238
  */
239
  private static function minutes( $exact_minute = 0 ) {
240
+ $minutes = [];
241
 
242
  // The exact minute should be an absint between 0 and 59
243
  $exact_minute = absint( $exact_minute );
282
  public static function getMeridianOptions( $date = '', $isStart = false ) {
283
  if ( strstr( get_option( 'time_format', Tribe__Date_Utils::TIMEFORMAT ), 'A' ) ) {
284
  $a = 'A';
285
+ $meridians = [ 'AM', 'PM' ];
286
  } else {
287
  $a = 'a';
288
+ $meridians = [ 'am', 'pm' ];
289
  }
290
  if ( empty( $date ) ) {
291
  $meridian = ( $isStart ) ? $meridians[0] : $meridians[1];
317
  $current_year = (int) date_i18n( 'Y' );
318
  $years_back = (int) apply_filters( 'tribe_years_to_go_back', 5, $current_year );
319
  $years_forward = (int) apply_filters( 'tribe_years_to_go_forward', 5, $current_year );
320
+ $years = [];
321
  for ( $i = $years_back; $i > 0; $i -- ) {
322
  $year = $current_year - $i;
323
  $years[] = $year;
337
  * @return array The days array.
338
  */
339
  public static function days( $totalDays ) {
340
+ $days = [];
341
  foreach ( range( 1, $totalDays ) as $day ) {
342
  $days[ $day ] = $day;
343
  }
common/src/Tribe/Widget/Widget_Abstract.php CHANGED
@@ -22,6 +22,24 @@ abstract class Widget_Abstract extends \WP_Widget implements Widget_Interface {
22
  */
23
  protected $slug;
24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  /**
26
  * Default arguments to be merged into final arguments of the widget.
27
  *
@@ -75,7 +93,7 @@ abstract class Widget_Abstract extends \WP_Widget implements Widget_Interface {
75
  * {@inheritDoc}
76
  */
77
  public function __construct( $id_base = '', $name = '', $widget_options = [], $control_options = [] ) {
78
- $arguments = $this->get_arguments();
79
 
80
  parent::__construct(
81
  Arr::get( $arguments, 'id_base', '' ),
@@ -84,26 +102,38 @@ abstract class Widget_Abstract extends \WP_Widget implements Widget_Interface {
84
  Arr::get( $arguments, 'control_options', [] )
85
  );
86
 
87
- // @todo add what this does in in TEC-3612 & TEC-3613.
88
  $this->setup();
89
  }
90
 
91
  /**
92
  * Setup the widget.
93
  *
94
- * @todo update in TEC-3612 & TEC-3613
95
- *
96
- * @since 5.12.12
97
  *
98
  * @return mixed
99
  */
100
  public abstract function setup();
101
 
102
  /**
103
- * Echoes the widget content.
104
  *
105
- * @todo Widget display will be handled in TEC-3620 & TEC-3597.
106
- * @todo Add future support for passing along `$args` and `$instance` for the widget HTML view.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  *
108
  * @since 5.12.12
109
  *
@@ -112,6 +142,11 @@ abstract class Widget_Abstract extends \WP_Widget implements Widget_Interface {
112
  * @param array<string,mixed> $instance The settings for the particular instance of the widget.
113
  */
114
  public function widget( $args, $instance ) {
 
 
 
 
 
115
  echo $this->get_html();
116
  }
117
 
@@ -195,12 +230,112 @@ abstract class Widget_Abstract extends \WP_Widget implements Widget_Interface {
195
  return $validate_arguments_map;
196
  }
197
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  /**
199
  * {@inheritDoc}
200
  */
201
- public function get_arguments() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
 
203
- return $this->filter_arguments( $this->arguments );
 
 
 
 
204
  }
205
 
206
  /**
@@ -237,7 +372,7 @@ abstract class Widget_Abstract extends \WP_Widget implements Widget_Interface {
237
  * {@inheritDoc}
238
  */
239
  public function get_argument( $index, $default = null ) {
240
- $arguments = $this->get_arguments();
241
  $argument = Arr::get( $arguments, $index, $default );
242
 
243
  return $this->filter_argument( $argument, $index, $default );
@@ -276,11 +411,30 @@ abstract class Widget_Abstract extends \WP_Widget implements Widget_Interface {
276
  return $argument;
277
  }
278
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
  /**
280
  * {@inheritDoc}
281
  */
282
  public function get_default_arguments() {
283
- return $this->filter_default_arguments( $this->default_arguments );
284
  }
285
 
286
  /**
@@ -307,8 +461,39 @@ abstract class Widget_Abstract extends \WP_Widget implements Widget_Interface {
307
  * @param array<string,mixed> $default_arguments Current set of default arguments.
308
  * @param static $instance The widget instance we are dealing with.
309
  */
310
- $default_arguments = apply_filters( "tribe_widget_{$registration_slug}_default_arguments", $default_arguments, $this );
 
311
 
312
- return $default_arguments;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  }
314
  }
22
  */
23
  protected $slug;
24
 
25
+ /**
26
+ * An instance of template.
27
+ *
28
+ * @since 4.12.14
29
+ *
30
+ * @var \Tribe__Template
31
+ */
32
+ protected $admin_template;
33
+
34
+ /**
35
+ * The slug of the admin widget view.
36
+ *
37
+ * @since 4.12.14
38
+ *
39
+ * @var string
40
+ */
41
+ protected $view_admin_slug;
42
+
43
  /**
44
  * Default arguments to be merged into final arguments of the widget.
45
  *
93
  * {@inheritDoc}
94
  */
95
  public function __construct( $id_base = '', $name = '', $widget_options = [], $control_options = [] ) {
96
+ $arguments = $this->setup_arguments();
97
 
98
  parent::__construct(
99
  Arr::get( $arguments, 'id_base', '' ),
102
  Arr::get( $arguments, 'control_options', [] )
103
  );
104
 
 
105
  $this->setup();
106
  }
107
 
108
  /**
109
  * Setup the widget.
110
  *
111
+ * @since 5.2.1
 
 
112
  *
113
  * @return mixed
114
  */
115
  public abstract function setup();
116
 
117
  /**
118
+ * Setup the widget.
119
  *
120
+ * @since 4.12.14
121
+ *
122
+ * @param array<string,mixed> $arguments The widget arguments, as set by the user in the widget string.
123
+ */
124
+ public abstract function setup_view( $arguments );
125
+
126
+ /**
127
+ * {@inheritDoc}
128
+ */
129
+ public function form( $instance ) {
130
+ $arguments = $this->setup_arguments( $instance );
131
+
132
+ $this->get_admin_html( $arguments );
133
+ }
134
+
135
+ /**
136
+ * Echoes the widget content.
137
  *
138
  * @since 5.12.12
139
  *
142
  * @param array<string,mixed> $instance The settings for the particular instance of the widget.
143
  */
144
  public function widget( $args, $instance ) {
145
+ $arguments = $this->get_arguments( $instance );
146
+
147
+ // Setup the View for the frontend.
148
+ $this->setup_view( $arguments );
149
+
150
  echo $this->get_html();
151
  }
152
 
230
  return $validate_arguments_map;
231
  }
232
 
233
+ /**
234
+ * Sets up the widgets default admin fields.
235
+ *
236
+ * @since 4.12.14
237
+ *
238
+ * @return array<string,mixed> The array of widget admin fields.
239
+ */
240
+ protected abstract function setup_admin_fields();
241
+
242
+ /**
243
+ * {@inheritDoc}
244
+ */
245
+ public function get_admin_fields() {
246
+ return $this->filter_admin_fields( $this->setup_admin_fields() );
247
+ }
248
+
249
+ /**
250
+ * {@inheritDoc}
251
+ */
252
+ public function filter_admin_fields( $admin_fields ) {
253
+ /**
254
+ * Applies a filter to a widget's admin fields.
255
+ *
256
+ * @since 4.12.14
257
+ *
258
+ * @param array<string,mixed> $admin_fields The array of widget admin fields.
259
+ * @param static $instance The widget instance we are dealing with.
260
+ */
261
+ $admin_fields = apply_filters( 'tribe_widget_admin_fields', $admin_fields, $this );
262
+
263
+ $registration_slug = $this->get_registration_slug();
264
+
265
+ /**
266
+ * Applies a filter to a widget's admin fields based on the registration slug of the widget.
267
+ *
268
+ * @since TBE
269
+ *
270
+ * @param array<string,mixed> $admin_fields The array of widget admin fields.
271
+ * @param static $instance The widget instance we are dealing with.
272
+ */
273
+ $admin_fields = apply_filters( "tribe_widget_{$registration_slug}_admin_fields", $admin_fields, $this );
274
+
275
+ return $admin_fields;
276
+ }
277
+
278
  /**
279
  * {@inheritDoc}
280
  */
281
+ public function filter_updated_instance( $updated_instance, $new_instance ) {
282
+ /**
283
+ * Applies a filter to updated instance of a widget.
284
+ *
285
+ * @since 4.12.14
286
+ *
287
+ * @param array<string,mixed> $updated_instance The updated instance of the widget.
288
+ * @param array<string,mixed> $new_instance The new values for the widget instance.
289
+ * @param static $instance The widget instance we are dealing with.
290
+ */
291
+ $updated_instance = apply_filters( 'tribe_widget_updated_instance', $updated_instance, $new_instance, $this );
292
+
293
+ $registration_slug = $this->get_registration_slug();
294
+
295
+ /**
296
+ * Applies a filter to updated instance of a widget arguments based on the registration slug of the widget.
297
+ *
298
+ * @since 4.12.14
299
+ *
300
+ * @param array<string,mixed> $updated_instance The updated instance of the widget.
301
+ * @param array<string,mixed> $new_instance The new values for the widget instance.
302
+ * @param static $instance The widget instance we are dealing with.
303
+ */
304
+ $updated_instance = apply_filters( "tribe_widget_{$registration_slug}_updated_instance", $updated_instance, $new_instance, $this );
305
+
306
+ return $updated_instance;
307
+ }
308
+
309
+ /**
310
+ * Sets up the widgets arguments, using saved values.
311
+ *
312
+ * @since 4.12.14
313
+ *
314
+ * @param array<string,mixed> $instance Saved values for the widget instance.
315
+ *
316
+ * @return array<string,mixed> The widget arguments, as set by the user in the widget string.
317
+ */
318
+ protected function setup_arguments( array $instance = [] ) {
319
+ $arguments = $this->arguments;
320
+
321
+ $arguments = wp_parse_args(
322
+ $arguments,
323
+ $this->get_default_arguments()
324
+ );
325
+
326
+ $arguments = wp_parse_args(
327
+ $instance,
328
+ $arguments
329
+ );
330
+
331
+ return $arguments;
332
+ }
333
 
334
+ /**
335
+ * {@inheritDoc}
336
+ */
337
+ public function get_arguments( array $instance = [] ) {
338
+ return $this->filter_arguments( $this->setup_arguments( $instance ) );
339
  }
340
 
341
  /**
372
  * {@inheritDoc}
373
  */
374
  public function get_argument( $index, $default = null ) {
375
+ $arguments = $this->setup_arguments();
376
  $argument = Arr::get( $arguments, $index, $default );
377
 
378
  return $this->filter_argument( $argument, $index, $default );
411
  return $argument;
412
  }
413
 
414
+ /**
415
+ * Sets up the widgets default arguments.
416
+ *
417
+ * @since 4.12.14
418
+ *
419
+ * @return array<string,mixed> The default widget arguments.
420
+ */
421
+ protected function setup_default_arguments() {
422
+ $default_arguments = $this->default_arguments;
423
+
424
+ // Setup admin fields.
425
+ $default_arguments['admin_fields'] = $this->get_admin_fields();
426
+
427
+ // Add the Widget to the arguments to pass to the admin template.
428
+ $default_arguments['widget_obj'] = $this;
429
+
430
+ return $default_arguments;
431
+ }
432
+
433
  /**
434
  * {@inheritDoc}
435
  */
436
  public function get_default_arguments() {
437
+ return $this->filter_default_arguments( $this->setup_default_arguments() );
438
  }
439
 
440
  /**
461
  * @param array<string,mixed> $default_arguments Current set of default arguments.
462
  * @param static $instance The widget instance we are dealing with.
463
  */
464
+ return apply_filters( "tribe_widget_{$registration_slug}_default_arguments", $default_arguments, $this );
465
+ }
466
 
467
+ /**
468
+ * Sets the admin template.
469
+ *
470
+ * @since 4.12.14
471
+ *
472
+ * @param \Tribe__Template $template The admin template to use.
473
+ */
474
+ public function set_admin_template( \Tribe__Template $template ) {
475
+ $this->admin_template = $template;
476
+ }
477
+
478
+ /**
479
+ * Returns the current admin template.
480
+ *
481
+ * @since 4.12.14
482
+ *
483
+ * @return \Tribe__Template The current admin template.
484
+ */
485
+ public function get_admin_template() {
486
+ return $this->admin_template;
487
+ }
488
+
489
+ /**
490
+ * Get the admin html for the widget form.
491
+ *
492
+ * @since 4.12.14
493
+ *
494
+ * @param array<string,mixed> $arguments Current set of arguments.
495
+ */
496
+ public function get_admin_html( $arguments ) {
497
+ $this->get_admin_template()->template( $this->view_admin_slug, $arguments );
498
  }
499
  }
common/src/Tribe/Widget/Widget_Interface.php CHANGED
@@ -127,17 +127,51 @@ interface Widget_Interface {
127
  */
128
  public function get_validated_arguments_map();
129
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  /**
131
  * Returns a widget arguments after been parsed.
132
  *
133
  * @since 5.12.12
134
  *
 
 
135
  * @return array<string,mixed> The widget arguments, as set by the user in the widget string.
136
  */
137
- public function get_arguments();
138
 
139
  /**
140
- * Get a widget's arguments after they have been been parsed.
141
  *
142
  * @since 5.12.12
143
  *
@@ -186,7 +220,7 @@ interface Widget_Interface {
186
  public function get_default_arguments();
187
 
188
  /**
189
- * Get a widget's default arguments.
190
  *
191
  * @since 5.12.12
192
  *
127
  */
128
  public function get_validated_arguments_map();
129
 
130
+ /**
131
+ * Returns an array of admin fields for the widget.
132
+ *
133
+ * @since 4.12.14
134
+ *
135
+ * @return array<string,mixed> The array of widget admin fields.
136
+ */
137
+ public function get_admin_fields();
138
+
139
+ /**
140
+ * Filter a widget's admin fields.
141
+ *
142
+ * @since 4.12.14
143
+ *
144
+ * @param array<string,mixed> $admin_fields The array of widget admin fields.
145
+ *
146
+ * @return array<string,mixed> The array of widget admin fields.
147
+ */
148
+ public function filter_admin_fields( $admin_fields );
149
+
150
+ /**
151
+ * Filters a widget's updated instance.
152
+ *
153
+ * @since 4.12.14
154
+ *
155
+ * @param array<string,mixed> $updated_instance The updated instance of the widget.
156
+ * @param array<string,mixed> $new_instance The new values for the widget instance.
157
+ *
158
+ * @return array<string,mixed> The updated instance to be saved for the widget.
159
+ */
160
+ public function filter_updated_instance( $updated_instance, $new_instance );
161
+
162
  /**
163
  * Returns a widget arguments after been parsed.
164
  *
165
  * @since 5.12.12
166
  *
167
+ * @param array<string,mixed> $instance Saved values for the widget instance.
168
+ *
169
  * @return array<string,mixed> The widget arguments, as set by the user in the widget string.
170
  */
171
+ public function get_arguments( array $instance = [] );
172
 
173
  /**
174
+ * Filter a widget's arguments after they have been been parsed.
175
  *
176
  * @since 5.12.12
177
  *
220
  public function get_default_arguments();
221
 
222
  /**
223
+ * Filter a widget's default arguments.
224
  *
225
  * @since 5.12.12
226
  *
common/src/admin-views/notices/tribe-bf-general.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * The Black Friday admin notice.
4
  *
5
- * @since TBD
6
  *
7
  * @var string $icon_url The local URL for the notice's image.
8
  * @var string $cta_url The short URL for black friday.
2
  /**
3
  * The Black Friday admin notice.
4
  *
5
+ * @since 4.12.14
6
  *
7
  * @var string $icon_url The local URL for the notice's image.
8
  * @var string $cta_url The short URL for black friday.
common/src/admin-views/tribe-options-display.php CHANGED
@@ -2,60 +2,61 @@
2
 
3
  $sample_date = strtotime( 'January 15 ' . date( 'Y' ) );
4
 
5
- $displayTab = array(
6
  'priority' => 20,
7
  'fields' =>
8
  /**
9
  * Filter the fields available on the display settings tab
10
  *
11
  * @param array $fields a nested associative array of fields & field info passed to Tribe__Field
 
12
  * @see Tribe__Field
13
  */
14
  apply_filters(
15
- 'tribe_display_settings_tab_fields', array(
16
- 'tribe-form-content-start' => array(
17
- 'type' => 'html',
18
- 'html' => '<div class="tribe-settings-form-wrap">',
19
- ),
20
- 'tribeEventsDateFormatSettingsTitle' => array(
21
- 'type' => 'html',
22
- 'html' => '<h3>' . esc_html__( 'Date Format Settings', 'tribe-common' ) . '</h3>',
23
- ),
24
- 'tribeEventsDateFormatExplanation' => array(
25
- 'type' => 'html',
26
- 'html' => '<p>'
27
- . sprintf(
28
- __( 'The following three fields accept the date format options available to the PHP %1$s function. <a href="%2$s" target="_blank">Learn how to make your own date format here</a>.', 'tribe-common' ),
29
- '<code>date()</code>',
30
- 'https://wordpress.org/support/article/formatting-date-and-time/'
31
- )
32
- . '</p>',
33
- ),
34
- 'datepickerFormat' => [
35
- 'type' => 'dropdown',
36
- 'label' => esc_html__( 'Compact Date Format', 'tribe-common' ),
37
- 'tooltip' => esc_html__( 'Select the date format used for elements with minimal space, such as in datepickers.', 'tribe-common' ),
38
- 'default' => 1,
39
- 'options' => [
40
- '0' => date( 'Y-m-d', $sample_date ),
41
- '1' => date( 'n/j/Y', $sample_date ),
42
- '2' => date( 'm/d/Y', $sample_date ),
43
- '3' => date( 'j/n/Y', $sample_date ),
44
- '4' => date( 'd/m/Y', $sample_date ),
45
- '5' => date( 'n-j-Y', $sample_date ),
46
- '6' => date( 'm-d-Y', $sample_date ),
47
- '7' => date( 'j-n-Y', $sample_date ),
48
- '8' => date( 'd-m-Y', $sample_date ),
49
- '9' => date( 'Y.m.d', $sample_date ),
50
- '10' => date( 'm.d.Y', $sample_date ),
51
- '11' => date( 'd.m.Y', $sample_date ),
 
 
 
 
 
 
52
  ],
53
- 'validation_type' => 'options',
54
- ],
55
- 'tribe-form-content-end' => [
56
- 'type' => 'html',
57
- 'html' => '</div>',
58
- ],
59
- )
60
- ),
61
- );
2
 
3
  $sample_date = strtotime( 'January 15 ' . date( 'Y' ) );
4
 
5
+ $displayTab = [
6
  'priority' => 20,
7
  'fields' =>
8
  /**
9
  * Filter the fields available on the display settings tab
10
  *
11
  * @param array $fields a nested associative array of fields & field info passed to Tribe__Field
12
+ *
13
  * @see Tribe__Field
14
  */
15
  apply_filters(
16
+ 'tribe_display_settings_tab_fields', [
17
+ 'tribe-form-content-start' => [
18
+ 'type' => 'html',
19
+ 'html' => '<div class="tribe-settings-form-wrap">',
20
+ ],
21
+ 'tribeEventsDateFormatSettingsTitle' => [
22
+ 'type' => 'html',
23
+ 'html' => '<h3>' . esc_html__( 'Date Format Settings', 'tribe-common' ) . '</h3>',
24
+ ],
25
+ 'tribeEventsDateFormatExplanation' => [
26
+ 'type' => 'html',
27
+ 'html' => '<p>'
28
+ . sprintf(
29
+ __( 'The following three fields accept the date format options available to the PHP %1$s function. <a href="%2$s" target="_blank">Learn how to make your own date format here</a>.', 'tribe-common' ),
30
+ '<code>date()</code>',
31
+ 'https://wordpress.org/support/article/formatting-date-and-time/'
32
+ )
33
+ . '</p>',
34
+ ],
35
+ 'datepickerFormat' => [
36
+ 'type' => 'dropdown',
37
+ 'label' => esc_html__( 'Compact Date Format', 'tribe-common' ),
38
+ 'tooltip' => esc_html__( 'Select the date format used for elements with minimal space, such as in datepickers.', 'tribe-common' ),
39
+ 'default' => 1,
40
+ 'options' => [
41
+ '0' => date( 'Y-m-d', $sample_date ),
42
+ '1' => date( 'n/j/Y', $sample_date ),
43
+ '2' => date( 'm/d/Y', $sample_date ),
44
+ '3' => date( 'j/n/Y', $sample_date ),
45
+ '4' => date( 'd/m/Y', $sample_date ),
46
+ '5' => date( 'n-j-Y', $sample_date ),
47
+ '6' => date( 'm-d-Y', $sample_date ),
48
+ '7' => date( 'j-n-Y', $sample_date ),
49
+ '8' => date( 'd-m-Y', $sample_date ),
50
+ '9' => date( 'Y.m.d', $sample_date ),
51
+ '10' => date( 'm.d.Y', $sample_date ),
52
+ '11' => date( 'd.m.Y', $sample_date ),
53
+ ],
54
+ 'validation_type' => 'options',
55
+ ],
56
+ 'tribe-form-content-end' => [
57
+ 'type' => 'html',
58
+ 'html' => '</div>',
59
  ],
60
+ ]
61
+ ),
62
+ ];
 
 
 
 
 
 
common/src/admin-views/tribe-options-help.php CHANGED
@@ -25,13 +25,43 @@ $help->add_section_content( 'support', sprintf(
25
  // Creates the Extra Help section
26
  $help->add_section( 'extra-help', __( 'Getting More Help', 'tribe-common' ), 20 );
27
  $help->add_section_content( 'extra-help', __( 'While the resources above help solve a majority of the issues we see, there are times you might be looking for extra support. If you need assistance using our plugins and would like us to take a look, please follow these steps:', 'tribe-common' ), 0 );
28
- $help->add_section_content( 'extra-help', array(
29
- 'type' => 'ol',
30
-
31
- sprintf( __( '%s. All of the common (and not-so-common) answers to questions we see are here. It’s often the fastest path to finding an answer!', 'tribe-common' ), '<strong><a href="http://m.tri.be/18j9" target="_blank">' . __( 'Check our Knowledgebase', 'tribe-common' ) . '</a></strong>' ),
32
- sprintf( __( '%s. Testing for an existing conflict is the best start for in-depth troubleshooting. We will often ask you to follow these steps when opening a new thread, so doing this ahead of time will be super helpful.', 'tribe-common' ), '<strong><a href="http://m.tri.be/18jh" target="_blank">' . __( 'Test for a theme or plugin conflict', 'tribe-common' ) . '</a></strong>' ),
33
- sprintf( __( '%s. There are very few issues we haven’t seen and it’s likely another user has already asked your question and gotten an answer from our support staff. While posting to the help desk is open only to paid customers, they are open for anyone to search and review.', 'tribe-common' ), '<strong><a href="http://m.tri.be/4w/" target="_blank">' . __( 'Search our support help desk', 'tribe-common' ) . '</a></strong>' ),
34
- ), 10 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
  // By default these three will be gathered
37
  $help->add_section_content( 'extra-help', __( 'Please note that all hands-on support is provided via the help desk. You can email or tweet at us… ​but we will probably point you back to the help desk 😄', 'tribe-common' ), 40 );
25
  // Creates the Extra Help section
26
  $help->add_section( 'extra-help', __( 'Getting More Help', 'tribe-common' ), 20 );
27
  $help->add_section_content( 'extra-help', __( 'While the resources above help solve a majority of the issues we see, there are times you might be looking for extra support. If you need assistance using our plugins and would like us to take a look, please follow these steps:', 'tribe-common' ), 0 );
28
+ $help->add_section_content(
29
+ 'extra-help',
30
+ [
31
+ 'type' => 'ol',
32
+ sprintf(
33
+ __(
34
+ '%s. All of the common (and not-so-common) answers to questions we see are here. It’s often the fastest path to finding an answer!',
35
+ 'tribe-common'
36
+ ),
37
+ '<strong><a href="http://m.tri.be/18j9" target="_blank">' . __(
38
+ 'Check our Knowledgebase',
39
+ 'tribe-common'
40
+ ) . '</a></strong>'
41
+ ),
42
+ sprintf(
43
+ __(
44
+ '%s. Testing for an existing conflict is the best start for in-depth troubleshooting. We will often ask you to follow these steps when opening a new thread, so doing this ahead of time will be super helpful.',
45
+ 'tribe-common'
46
+ ),
47
+ '<strong><a href="http://m.tri.be/18jh" target="_blank">' . __(
48
+ 'Test for a theme or plugin conflict',
49
+ 'tribe-common'
50
+ ) . '</a></strong>'
51
+ ),
52
+ sprintf(
53
+ __(
54
+ '%s. There are very few issues we haven’t seen and it’s likely another user has already asked your question and gotten an answer from our support staff. While posting to the help desk is open only to paid customers, they are open for anyone to search and review.',
55
+ 'tribe-common'
56
+ ),
57
+ '<strong><a href="http://m.tri.be/4w/" target="_blank">' . __(
58
+ 'Search our support help desk',
59
+ 'tribe-common'
60
+ ) . '</a></strong>'
61
+ ),
62
+ ],
63
+ 10
64
+ );
65
 
66
  // By default these three will be gathered
67
  $help->add_section_content( 'extra-help', __( 'Please note that all hands-on support is provided via the help desk. You can email or tweet at us… ​but we will probably point you back to the help desk 😄', 'tribe-common' ), 40 );
common/src/admin-views/tribe-options-licenses.php CHANGED
@@ -47,21 +47,21 @@ if ( is_multisite() ) {
47
  $html .= '</ul>';
48
 
49
 
50
- $licenses_tab = array(
51
- 'info-start' => array(
52
  'type' => 'html',
53
  'html' => '<div id="modern-tribe-info">',
54
- ),
55
- 'info-box-title' => array(
56
  'type' => 'html',
57
  'html' => '<h2>' . esc_html__( 'Licenses', 'tribe-common' ) . '</h2>',
58
- ),
59
- 'info-box-description' => array(
60
  'type' => 'html',
61
  'html' => $html,
62
- ),
63
- 'info-end' => array(
64
  'type' => 'html',
65
  'html' => '</div>',
66
- ),
67
- );
47
  $html .= '</ul>';
48
 
49
 
50
+ $licenses_tab = [
51
+ 'info-start' => [
52
  'type' => 'html',
53
  'html' => '<div id="modern-tribe-info">',
54
+ ],
55
+ 'info-box-title' => [
56
  'type' => 'html',
57
  'html' => '<h2>' . esc_html__( 'Licenses', 'tribe-common' ) . '</h2>',
58
+ ],
59
+ 'info-box-description' => [
60
  'type' => 'html',
61
  'html' => $html,
62
+ ],
63
+ 'info-end' => [
64
  'type' => 'html',
65
  'html' => '</div>',
66
+ ],
67
+ ];
common/src/admin-views/tribe-options-network.php CHANGED
@@ -1,35 +1,35 @@
1
  <?php
2
- $allTabs = apply_filters( 'tribe_settings_all_tabs', array() );
3
 
4
- $networkTab = array(
5
  'priority' => 10,
6
  'network_admin' => true,
7
  'fields' => apply_filters(
8
- 'tribe_network_settings_tab_fields', array(
9
- 'info-start' => array(
10
  'type' => 'html',
11
  'html' => '<div id="modern-tribe-info">',
12
- ),
13
- 'info-box-title' => array(
14
  'type' => 'html',
15
  'html' => '<h1>' . esc_html__( 'Network Settings', 'tribe-common' ) . '</h1>',
16
- ),
17
- 'info-box-description' => array(
18
  'type' => 'html',
19
  'html' => '<p>' . esc_html__( 'This is where all of the global network settings for Modern Tribe\'s The Events Calendar can be modified.', 'tribe-common' ) . '</p>',
20
- ),
21
- 'info-end' => array(
22
  'type' => 'html',
23
  'html' => '</div>',
24
- ),
25
- 'hideSettingsTabs' => array(
26
  'type' => 'checkbox_list',
27
  'label' => esc_html__( 'Hide the following settings tabs on every site:', 'tribe-common' ),
28
  'default' => false,
29
  'options' => $allTabs,
30
  'validation_type' => 'options_multi',
31
  'can_be_empty' => true,
32
- ),
33
- )
34
  ),
35
- );
1
  <?php
2
+ $allTabs = apply_filters( 'tribe_settings_all_tabs', [] );
3
 
4
+ $networkTab = [
5
  'priority' => 10,
6
  'network_admin' => true,
7
  'fields' => apply_filters(
8
+ 'tribe_network_settings_tab_fields', [
9
+ 'info-start' => [
10
  'type' => 'html',
11
  'html' => '<div id="modern-tribe-info">',
12
+ ],
13
+ 'info-box-title' => [
14
  'type' => 'html',
15
  'html' => '<h1>' . esc_html__( 'Network Settings', 'tribe-common' ) . '</h1>',
16
+ ],
17
+ 'info-box-description' => [
18
  'type' => 'html',
19
  'html' => '<p>' . esc_html__( 'This is where all of the global network settings for Modern Tribe\'s The Events Calendar can be modified.', 'tribe-common' ) . '</p>',
20
+ ],
21
+ 'info-end' => [
22
  'type' => 'html',
23
  'html' => '</div>',
24
+ ],
25
+ 'hideSettingsTabs' => [
26
  'type' => 'checkbox_list',
27
  'label' => esc_html__( 'Hide the following settings tabs on every site:', 'tribe-common' ),
28
  'default' => false,
29
  'options' => $allTabs,
30
  'validation_type' => 'options_multi',
31
  'can_be_empty' => true,
32
+ ],
33
+ ]
34
  ),
35
+ ];
common/src/functions/query.php CHANGED
@@ -28,7 +28,7 @@ if ( ! function_exists( 'tribe_filter_meta_query' ) ) {
28
  * @return array The filtered meta query array.
29
  */
30
  function tribe_filter_meta_query( array $meta_query, array $where ) {
31
- $filtered = array();
32
 
33
  foreach ( $meta_query as $key => $entry ) {
34
  if ( ! is_array( $entry ) ) {
28
  * @return array The filtered meta query array.
29
  */
30
  function tribe_filter_meta_query( array $meta_query, array $where ) {
31
+ $filtered = [];
32
 
33
  foreach ( $meta_query as $key => $entry ) {
34
  if ( ! is_array( $entry ) ) {
common/src/functions/template-tags/date.php CHANGED
@@ -189,7 +189,7 @@ if ( ! function_exists( 'tribe_get_start_time' ) ) {
189
  return;
190
  }
191
 
192
- // @todo move timezones to Common
193
  if ( class_exists( 'Tribe__Events__Timezones' ) ) {
194
  $start_date = Tribe__Events__Timezones::event_start_timestamp( $event->ID, $timezone );
195
  }
@@ -240,7 +240,7 @@ if ( ! function_exists( 'tribe_get_end_time' ) ) {
240
  return;
241
  }
242
 
243
- // @todo move timezones to Common
244
  if ( class_exists( 'Tribe__Events__Timezones' ) ) {
245
  $end_date = Tribe__Events__Timezones::event_end_timestamp( $event->ID, $timezone );
246
  }
@@ -300,7 +300,7 @@ if ( ! function_exists( 'tribe_get_start_date' ) ) {
300
  $display_time = false;
301
  }
302
 
303
- // @todo move timezones to Common
304
  if ( class_exists( 'Tribe__Events__Timezones' ) ) {
305
  $start_date = Tribe__Events__Timezones::event_start_timestamp( $event->ID, $timezone );
306
  } else {
@@ -362,7 +362,7 @@ if ( ! function_exists( 'tribe_get_end_date' ) ) {
362
  $display_time = false;
363
  }
364
 
365
- // @todo move timezones to Common
366
  if ( class_exists( 'Tribe__Events__Timezones' ) ) {
367
  $end_date = Tribe__Events__Timezones::event_end_timestamp( $event->ID );
368
  } else {
@@ -393,7 +393,7 @@ if ( ! function_exists( 'tribe_normalize_manual_utc_offset' ) ) {
393
  * e.g. 'UTC+3', 'UTC-4.5', 'UTC+2.75'
394
  */
395
  function tribe_normalize_manual_utc_offset( $utc_offset ) {
396
- $matches = array();
397
  if ( preg_match( '/^UTC\\s*((\\+|-)(\\d{1,2}))((:|.|,)(\\d{1,2})+)*/ui', $utc_offset, $matches ) ) {
398
  if ( ! empty( $matches[6] ) ) {
399
  $minutes = $matches[6] > 10 && $matches[6] <= 60 ? $minutes = $matches[6] / 60 : $matches[6];
@@ -448,4 +448,4 @@ if ( ! function_exists( 'tribe_is_site_using_24_hour_time' ) ) {
448
  $time_format = get_option( 'time_format' );
449
  return strpos( $time_format, 'H' ) !== false;
450
  }
451
- }
189
  return;
190
  }
191
 
192
+ // @todo [BTRIA-584]: Move timezones to Common.
193
  if ( class_exists( 'Tribe__Events__Timezones' ) ) {
194
  $start_date = Tribe__Events__Timezones::event_start_timestamp( $event->ID, $timezone );
195
  }
240
  return;
241
  }
242
 
243
+ // @todo [BTRIA-584]: Move timezones to Common.
244
  if ( class_exists( 'Tribe__Events__Timezones' ) ) {
245
  $end_date = Tribe__Events__Timezones::event_end_timestamp( $event->ID, $timezone );
246
  }
300
  $display_time = false;
301
  }
302
 
303
+ // @todo [BTRIA-584]: Move timezones to Common.
304
  if ( class_exists( 'Tribe__Events__Timezones' ) ) {
305
  $start_date = Tribe__Events__Timezones::event_start_timestamp( $event->ID, $timezone );
306
  } else {
362
  $display_time = false;
363
  }
364
 
365
+ // @todo [BTRIA-584]: Move timezones to Common.
366
  if ( class_exists( 'Tribe__Events__Timezones' ) ) {
367
  $end_date = Tribe__Events__Timezones::event_end_timestamp( $event->ID );
368
  } else {
393
  * e.g. 'UTC+3', 'UTC-4.5', 'UTC+2.75'
394
  */
395
  function tribe_normalize_manual_utc_offset( $utc_offset ) {
396
+ $matches = [];
397
  if ( preg_match( '/^UTC\\s*((\\+|-)(\\d{1,2}))((:|.|,)(\\d{1,2})+)*/ui', $utc_offset, $matches ) ) {
398
  if ( ! empty( $matches[6] ) ) {
399
  $minutes = $matches[6] > 10 && $matches[6] <= 60 ? $minutes = $matches[6] / 60 : $matches[6];
448
  $time_format = get_option( 'time_format' );
449
  return strpos( $time_format, 'H' ) !== false;
450
  }
451
+ }
common/src/functions/template-tags/general.php CHANGED
@@ -264,7 +264,7 @@ if ( ! function_exists( 'tribe_get_days_between' ) ) {
264
  if ( ! function_exists( 'tribe_prepare_for_json' ) ) {
265
  /**
266
  * Function to prepare content for use as a value in a json encoded string destined for storage on a html data attribute.
267
- * Hence the double quote fun, especially in case they pass html encoded &quot; along. Any of those getting through to the data att will break jquery's parseJSON method.
268
  * Themers can use this function to prepare data they may want to send to tribe_events_template_data() in the templates, and we use it in that function ourselves.
269
  *
270
  * @category Events
@@ -277,7 +277,7 @@ if ( ! function_exists( 'tribe_prepare_for_json' ) ) {
277
  $value = trim( htmlspecialchars( $string, ENT_QUOTES, 'UTF-8' ) );
278
  $value = str_replace( '&quot;', '"', $value );
279
  // &amp;#013; is same as \r and JSON strings should be a single line not multiple lines.
280
- $removable_values = array( '\r', '\n', '\t', '&amp;#013;' );
281
  $value = str_replace( $removable_values, '', $value );
282
 
283
  return $value;
@@ -362,13 +362,13 @@ if ( ! function_exists( 'tribe_is_bot' ) ) {
362
 
363
  // declare known bot user agents (lowercase)
364
  $user_agent_bots = (array) apply_filters(
365
- 'tribe_is_bot_list', array(
366
  'bot',
367
  'slurp',
368
  'spider',
369
  'crawler',
370
  'yandex',
371
- )
372
  );
373
 
374
  foreach ( $user_agent_bots as $bot ) {
@@ -525,14 +525,14 @@ if ( ! function_exists( 'tribe_get_date_option' ) ) {
525
  * Shortcut for Tribe__Admin__Notices::register(), create a Admin Notice easily
526
  *
527
  * @param string $slug Slug to save the notice
528
- * @param callable|string $callback A callable Method/Fuction to actually display the notice
529
  * @param array $arguments Arguments to Setup a notice
530
  * @param callable|null $active_callback An optional callback that should return bool values
531
  * to indicate whether the notice should display or not.
532
  *
533
  * @return stdClass Which notice was registered
534
  */
535
- function tribe_notice( $slug, $callback, $arguments = array(), $active_callback = null ) {
536
  return Tribe__Admin__Notices::instance()->register( $slug, $callback, $arguments, $active_callback );
537
  }
538
 
@@ -549,7 +549,7 @@ function tribe_notice( $slug, $callback, $arguments = array(), $active_callback
549
  *
550
  * @return stdClass Which notice was registered
551
  */
552
- function tribe_transient_notice( $slug, $html, $arguments = array(), $expire = null ) {
553
  $expire = null !== $expire ? (int) $expire : WEEK_IN_SECONDS;
554
 
555
  return Tribe__Admin__Notices::instance()->register_transient( $slug, $html, $arguments, $expire );
@@ -575,7 +575,7 @@ function tribe_transient_notice_remove( $slug ) {
575
  *
576
  * @return WP_Error
577
  */
578
- function tribe_error( $indexes, $context = array(), $sprintf = array() ) {
579
  return Tribe__Error::instance()->send( $indexes, $context, $sprintf );
580
  }
581
 
@@ -650,7 +650,7 @@ function tribe_asset_enqueue_group( $group ) {
650
  * @param object $origin The main Object for the plugin you are enqueueing the script/style for
651
  * @param array $assets {
652
  * Indexed array, don't use any associative key.
653
- * E.g.: array( 'slug-my-script', 'my/own/path.js', array( 'jquery' ) )
654
  *
655
  * @type string $slug Slug to save the asset
656
  * @type string $file Which file will be loaded, either CSS or JS
@@ -661,8 +661,8 @@ function tribe_asset_enqueue_group( $group ) {
661
  *
662
  * @return array Which Assets were registered
663
  */
664
- function tribe_assets( $origin, $assets, $action = null, $arguments = array() ) {
665
- $registered = array();
666
 
667
  foreach ( $assets as $asset ) {
668
  if ( ! is_array( $asset ) ) {
@@ -675,7 +675,7 @@ function tribe_assets( $origin, $assets, $action = null, $arguments = array() )
675
  }
676
 
677
  $file = $asset[1];
678
- $deps = ! empty( $asset[2] ) ? $asset[2] : array();
679
 
680
  // Support the asset having a custom action.
681
  $asset_action = ! empty( $asset[3] ) ? $asset[3] : $action;
264
  if ( ! function_exists( 'tribe_prepare_for_json' ) ) {
265
  /**
266
  * Function to prepare content for use as a value in a json encoded string destined for storage on a html data attribute.
267
+ * Hence the double quote fun, especially in case they pass html encoded &quot; along. Any of those getting through to the data att will break jQuery's parseJSON method.
268
  * Themers can use this function to prepare data they may want to send to tribe_events_template_data() in the templates, and we use it in that function ourselves.
269
  *
270
  * @category Events
277
  $value = trim( htmlspecialchars( $string, ENT_QUOTES, 'UTF-8' ) );
278
  $value = str_replace( '&quot;', '"', $value );
279
  // &amp;#013; is same as \r and JSON strings should be a single line not multiple lines.
280
+ $removable_values = [ '\r', '\n', '\t', '&amp;#013;' ];
281
  $value = str_replace( $removable_values, '', $value );
282
 
283
  return $value;
362
 
363
  // declare known bot user agents (lowercase)
364
  $user_agent_bots = (array) apply_filters(
365
+ 'tribe_is_bot_list', [
366
  'bot',
367
  'slurp',
368
  'spider',
369
  'crawler',
370
  'yandex',
371
+ ]
372
  );
373
 
374
  foreach ( $user_agent_bots as $bot ) {
525
  * Shortcut for Tribe__Admin__Notices::register(), create a Admin Notice easily
526
  *
527
  * @param string $slug Slug to save the notice
528
+ * @param callable|string $callback A callable Method/Function to actually display the notice
529
  * @param array $arguments Arguments to Setup a notice
530
  * @param callable|null $active_callback An optional callback that should return bool values
531
  * to indicate whether the notice should display or not.
532
  *
533
  * @return stdClass Which notice was registered
534
  */
535
+ function tribe_notice( $slug, $callback, $arguments = [], $active_callback = null ) {
536
  return Tribe__Admin__Notices::instance()->register( $slug, $callback, $arguments, $active_callback );
537
  }
538
 
549
  *
550
  * @return stdClass Which notice was registered
551
  */
552
+ function tribe_transient_notice( $slug, $html, $arguments = [], $expire = null ) {
553
  $expire = null !== $expire ? (int) $expire : WEEK_IN_SECONDS;
554
 
555
  return Tribe__Admin__Notices::instance()->register_transient( $slug, $html, $arguments, $expire );
575
  *
576
  * @return WP_Error
577
  */
578
+ function tribe_error( $indexes, $context = [], $sprintf = [] ) {
579
  return Tribe__Error::instance()->send( $indexes, $context, $sprintf );
580
  }
581
 
650
  * @param object $origin The main Object for the plugin you are enqueueing the script/style for
651
  * @param array $assets {
652
  * Indexed array, don't use any associative key.
653
+ * E.g.: [ 'slug-my-script', 'my/own/path.js', [ 'jquery' ] ]
654
  *
655
  * @type string $slug Slug to save the asset
656
  * @type string $file Which file will be loaded, either CSS or JS
661
  *
662
  * @return array Which Assets were registered
663
  */
664
+ function tribe_assets( $origin, $assets, $action = null, $arguments = [] ) {
665
+ $registered = [];
666
 
667
  foreach ( $assets as $asset ) {
668
  if ( ! is_array( $asset ) ) {
675
  }
676
 
677
  $file = $asset[1];
678
+ $deps = ! empty( $asset[2] ) ? $asset[2] : [];
679
 
680
  // Support the asset having a custom action.
681
  $asset_action = ! empty( $asset[3] ) ? $asset[3] : $action;
common/src/functions/template-tags/html.php CHANGED
@@ -132,3 +132,83 @@ function tribe_disabled( $disabled, $echo = true ) {
132
  }
133
  }
134
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  }
133
  }
134
  }
135
+
136
+ /**
137
+ * Generates a string for the tribe-dependency attributes.
138
+ *
139
+ * @since 4.12.14
140
+ *
141
+ * @param array<string,mixed> $deps The passed array of dependencies.
142
+ *
143
+ * @return string $dependency The string of dependencies attributes to add to the input.
144
+ */
145
+ function tribe_format_field_dependency( $deps ) {
146
+ // Sanity check.
147
+ if ( empty( $deps ) ) {
148
+ return '';
149
+ }
150
+
151
+ // Let's be case-insensitive!
152
+ $deps = array_combine( array_map( 'strtolower', array_keys( $deps ) ), $deps );
153
+
154
+ // No ID to hook to? Bail.
155
+ if ( empty( $deps['id'] ) ) {
156
+ return;
157
+ }
158
+
159
+ $dependency = '';
160
+
161
+ $accepted = [
162
+ 'id',
163
+ 'is',
164
+ 'is-not',
165
+ 'is-empty',
166
+ 'is-not-empty',
167
+ 'is-numeric',
168
+ 'is-not-numeric',
169
+ 'is-checked',
170
+ 'is-not-checked',
171
+ ];
172
+
173
+ $valid_deps = array_intersect_key( $deps, array_flip( $accepted ) );
174
+
175
+ foreach ( $valid_deps as $attr => $value ) {
176
+ // Attributes are always lower case.
177
+ $attr = strtolower( $attr );
178
+
179
+ // Handle the ID component.
180
+ if ( 'id' === $attr ) {
181
+ $dependency .= " data-depends=\"{$value}\"";
182
+ continue;
183
+ }
184
+
185
+ // Handle boolean values.
186
+ if ( is_bool( $value ) ) {
187
+ if ( $value ) {
188
+ $dependency .= " data-{$attr}";
189
+ } else {
190
+ if ( 0 === stripos( $attr, 'is-not-' ) ) {
191
+ $attr = str_replace( 'is-not-', 'is-', $attr );
192
+ } else {
193
+ $attr = str_replace( 'is-', 'is-not-', $attr );
194
+ }
195
+
196
+ $dependency .= " data-{$attr}";
197
+ continue;
198
+ }
199
+
200
+ continue;
201
+ }
202
+
203
+ // Handle string and "empty" values
204
+ if( 0 === strlen( $value ) ) {
205
+ $dependency .= " data-{$attr}";
206
+ } else if ( 'is' === $attr ) {
207
+ $dependency .= " data-condition=\"{$value}\"";
208
+ } else if ( 'is-not' === $attr ) {
209
+ $dependency .= " data-condition-not=\"{$value}\"";
210
+ }
211
+ }
212
+
213
+ return $dependency;
214
+ }
common/src/functions/utils.php CHANGED
@@ -810,7 +810,7 @@ if ( ! function_exists( 'tribe_get_greatest_version_ever_installed' ) ) {
810
  * use static mapping here, since generating a full instance will effectively
811
  * activate parts of the plugin behind the scenes.
812
  *
813
- * @since TBD
814
  *
815
  * @param string $class Which plugin main class we are looking for.
816
  *
810
  * use static mapping here, since generating a full instance will effectively
811
  * activate parts of the plugin behind the scenes.
812
  *
813
+ * @since 4.12.14
814
  *
815
  * @param string $class Which plugin main class we are looking for.
816
  *
common/src/resources/css/common-full.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-common figure{line-height:0}.tribe-common figcaption{line-height:normal}.tribe-common a{background-color:transparent;-webkit-text-decoration-skip:objects}.tribe-common abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.tribe-common code,.tribe-common kbd,.tribe-common pre,.tribe-common samp{font-family:monospace;font-size:1em}.tribe-common b,.tribe-common strong{font-weight:inherit;font-weight:bolder}.tribe-common dfn{font-style:italic}.tribe-common mark{background-color:#ff0;color:#000}.tribe-common small{font-size:80%}.tribe-common sub,.tribe-common sup{font-size:75%;line-height:0}.tribe-common hr{border:0;height:0}.tribe-common button,.tribe-common input[type=button],.tribe-common input[type=email],.tribe-common input[type=password],.tribe-common input[type=reset],.tribe-common input[type=search],.tribe-common input[type=submit],.tribe-common input[type=text],.tribe-common input[type=url],.tribe-common textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none}.tribe-common button,.tribe-common input,.tribe-common optgroup,.tribe-common select,.tribe-common textarea{color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:antialiased}.tribe-common button,.tribe-common input,.tribe-common select,.tribe-common textarea{outline:0;border-radius:0}.tribe-common select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.tribe-common optgroup{font-weight:700}.tribe-common h1,.tribe-common h2,.tribe-common h3,.tribe-common h4,.tribe-common h5,.tribe-common h6,.tribe-common p{font-weight:400;text-rendering:optimizeLegibility}#top .main_color .tribe-common button[disabled],#top.tribe-theme-enfold .tribe-common button[disabled]{opacity:1}.tribe-theme-twentynineteen .tribe-common h1:before,.tribe-theme-twentynineteen .tribe-common h2:before{content:none}.tribe-theme-twentynineteen .tribe-common button,.tribe-theme-twentynineteen .tribe-common input[type=button],.tribe-theme-twentynineteen .tribe-common input[type=reset],.tribe-theme-twentynineteen .tribe-common input[type=submit]{outline:none}.tribe-theme-twentynineteen .tribe-common td,.tribe-theme-twentynineteen .tribe-common th{word-break:normal}.tribe-theme-twentyseventeen .tribe-common h5{letter-spacing:normal;text-transform:none}.tribe-theme-twentyseventeen .tribe-common input[type=text]{border-radius:0}.tribe-theme-twentytwenty .tribe-common{background-color:#fff;letter-spacing:normal}.tribe-theme-twentytwenty .tribe-common input,.tribe-theme-twentytwenty .tribe-common textarea{letter-spacing:normal}.tribe-theme-twentytwenty .tribe-common *{word-break:normal}.tribe-common .tribe-common-form-control-checkbox,.tribe-common .tribe-common-form-control-radio{line-height:0}.tribe-common .tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-radio__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400}.tribe-common .tribe-common-form-control-checkbox__label:hover,.tribe-common .tribe-common-form-control-radio__label:hover{opacity:.8}.tribe-common .tribe-common-form-control-checkbox__input,.tribe-common .tribe-common-form-control-radio__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border:1px solid #141827;height:20px;position:relative;width:20px}.tribe-common .tribe-common-form-control-checkbox__input:active,.tribe-common .tribe-common-form-control-checkbox__input:focus,.tribe-common .tribe-common-form-control-checkbox__input:hover,.tribe-common .tribe-common-form-control-radio__input:active,.tribe-common .tribe-common-form-control-radio__input:focus,.tribe-common .tribe-common-form-control-radio__input:hover{border-color:#141827;opacity:.8}.tribe-common .tribe-common-form-control-checkbox__input:checked,.tribe-common .tribe-common-form-control-radio__input:checked{background-color:#141827}.tribe-common .tribe-common-form-control-checkbox__input{border-radius:4px}.tribe-common .tribe-common-form-control-checkbox__input:checked:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='9' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.6.1L3.9 6.8 1.4 4.3c-.1-.1-.3-.1-.4 0l-.8.8c-.1.1-.1.3 0 .4l3.4 3.4c.2.1.4.1.5 0l7.7-7.7c.1-.1.1-.3 0-.4L11 .1c-.1-.1-.3-.1-.4 0z' fill='%23fff'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;content:"";display:block;height:9px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:12px}.tribe-common .tribe-common-form-control-checkbox__input:focus+.tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-checkbox__input:hover+.tribe-common-form-control-checkbox__label{opacity:.8}.tribe-common .tribe-common-form-control-radio__input{border-radius:50%}.tribe-common .tribe-common-form-control-radio__input:checked:before{background-color:#fff;border-radius:50%;content:"";display:block;height:8px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:8px}.tribe-common .tribe-common-form-control-radio__input:focus+.tribe-common-form-control-radio__label,.tribe-common .tribe-common-form-control-radio__input:hover+.tribe-common-form-control-radio__label{opacity:.8}.tribe-theme-twentytwenty .tribe-common .tribe-common-form-control-checkbox__input:checked:before{margin:0}#top .main_color .tribe-common .tribe-common-form-control-checkbox__label,#top .main_color .tribe-common .tribe-common-form-control-radio__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-radio__label{font-weight:400;font-size:14px}.tribe-common .tribe-common-form-control-slider{line-height:0}.tribe-common .tribe-common-form-control-slider__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-runnable-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-moz-range-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-ms-track{background-color:transparent;border-color:transparent;border-width:5px 0;color:transparent;height:10px}.tribe-common .tribe-common-form-control-slider__input::-ms-fill-lower,.tribe-common .tribe-common-form-control-slider__input::-ms-fill-upper{background-color:#334aff;border-radius:10px}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-thumb{background-color:#fff;border:1px solid #7d7d7d;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;-webkit-appearance:none;appearance:none}.tribe-common .tribe-common-form-control-slider__input::-moz-range-thumb{background-color:#fff;border:1px solid #7d7d7d;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px}.tribe-common .tribe-common-form-control-slider__input::-ms-thumb{background-color:#fff;border:1px solid #7d7d7d;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;box-shadow:none;margin-top:-1px}.tribe-common .tribe-common-form-control-slider__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#5d5d5d}#top .main_color .tribe-common .tribe-common-form-control-slider__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-slider__label{font-weight:400;font-size:12px}.tribe-common .tribe-common-form-control-text__input{font-size:16px;border:0;border-bottom:1px solid #d5d5d5}.tribe-common--breakpoint-medium.tribe-common .tribe-common-form-control-text__input,.tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;line-height:1.62;font-weight:400}.tribe-common--breakpoint-medium.tribe-common .tribe-common-form-control-text__input{font-size:14px;border:0}.tribe-common .tribe-common-form-control-text__input::-webkit-input-placeholder{color:#5d5d5d;font-style:normal;opacity:1}.tribe-common .tribe-common-form-control-text__input::-moz-placeholder{color:#5d5d5d;font-style:normal;opacity:1}.tribe-common .tribe-common-form-control-text__input:-ms-input-placeholder,.tribe-common .tribe-common-form-control-text__input::-ms-input-placeholder{color:#5d5d5d;font-style:normal;opacity:1}.tribe-common .tribe-common-form-control-text__input::placeholder{color:#5d5d5d;font-style:normal;opacity:1}.tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;outline:0}.tribe-theme-twentyseventeen .tribe-common .tribe-common-form-control-text__input{color:#141827}.tribe-theme-twentytwenty .tribe-common .tribe-common-form-control-text__input{line-height:inherit}#top .main_color .tribe-common .tribe-common-form-control-text__input,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400;background:#fff;border:0;border-bottom:1px solid #d5d5d5}#top .main_color .tribe-common .tribe-common-form-control-text__input:focus,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;box-shadow:none}#top .main_color .tribe-common.tribe-common--breakpoint-medium .tribe-common-form-control-text__input,#top.tribe-theme-enfold .tribe-common.tribe-common--breakpoint-medium .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;border:0}.tribe-common .tribe-common-form-control-toggle{line-height:0;position:relative}.tribe-common .tribe-common-form-control-toggle__input{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#7d7d7d;width:40px}.tribe-common .tribe-common-form-control-toggle__input::-ms-check{display:none}.tribe-common .tribe-common-form-control-toggle__input+label:before{background-color:#fff;border:1px solid #7d7d7d;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;content:"";left:0;position:absolute;transition:transform .2s ease}.tribe-common .tribe-common-form-control-toggle__input:checked{background-color:#334aff}.tribe-common .tribe-common-form-control-toggle__input:checked+label:before{transform:translateX(20px)}.tribe-common .tribe-common-form-control-toggle__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#5d5d5d}#top .main_color .tribe-common .tribe-common-form-control-toggle__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__label{font-weight:400;font-size:12px}.tribe-theme-twentytwenty .tribe-common .tribe-common-form-control-toggle__input:checked:before{content:none}.tribe-common a,.tribe-common a:active,.tribe-common a:focus,.tribe-common a:hover,.tribe-common a:visited{color:#141827;outline:0;text-decoration:none}.tribe-theme-twentyseventeen .tribe-common a{box-shadow:none}.tribe-theme-twentyseventeen .tribe-common a:focus,.tribe-theme-twentyseventeen .tribe-common a:hover{box-shadow:none;color:#141827}.tribe-theme-twentynineteen .entry .tribe-common a,.tribe-theme-twentynineteen .tribe-common a{text-decoration:none}.tribe-common .tribe-common-anchor{border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor:active,.tribe-common .tribe-common-anchor:focus,.tribe-common .tribe-common-anchor:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-anchor-alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-anchor-alt:active,.tribe-common .tribe-common-anchor-alt:focus,.tribe-common .tribe-common-anchor-alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-common .tribe-common-anchor-thin{border-bottom:1px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor-thin:active,.tribe-common .tribe-common-anchor-thin:focus,.tribe-common .tribe-common-anchor-thin:hover{border-bottom:1px solid #141827}.tribe-common .tribe-common-anchor-thin-alt{border-bottom:1px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-anchor-thin-alt:active,.tribe-common .tribe-common-anchor-thin-alt:focus,.tribe-common .tribe-common-anchor-thin-alt:hover{border-bottom:1px solid #334aff;color:#334aff}.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:hover,.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-thin-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-thin-alt:hover{color:#334aff}.tribe-common .tribe-common-b1{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.62}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b1{font-size:16px;line-height:1.62}.tribe-common .tribe-common-b1--bold{font-weight:700}.tribe-common .tribe-common-b2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.38}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b2{font-size:14px;line-height:1.62}.tribe-common .tribe-common-b2--bold{font-weight:700}.tribe-common .tribe-common-b3{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b3{font-size:12px;line-height:1.38}.tribe-common .tribe-common-b3--bold{font-weight:700}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b1--min-medium{font-size:16px;line-height:1.62}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b2--min-medium{font-size:14px;line-height:1.62}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b3--min-medium{font-size:12px;line-height:1.38}.tribe-common .tribe-common-cta{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;font-weight:700;border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-cta:active,.tribe-common .tribe-common-cta:focus,.tribe-common .tribe-common-cta:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-cta--alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-cta--alt:active,.tribe-common .tribe-common-cta--alt:focus,.tribe-common .tribe-common-cta--alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-common .tribe-common-cta--thin{border-bottom:1px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-cta--thin:active,.tribe-common .tribe-common-cta--thin:focus,.tribe-common .tribe-common-cta--thin:hover{border-bottom:1px solid #141827}.tribe-common .tribe-common-cta--thin-alt{border-bottom:1px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-cta--thin-alt:active,.tribe-common .tribe-common-cta--thin-alt:focus,.tribe-common .tribe-common-cta--thin-alt:hover{border-bottom:1px solid #334aff;color:#334aff}.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:hover,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:hover{color:#334aff}.tribe-common .tribe-common-h1{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:28px;line-height:1.42}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:24px;line-height:1.42}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-common .tribe-common-h3{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:22px;line-height:1.5}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:20px;line-height:1.42}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-common .tribe-common-h5{font-size:18px}.tribe-common .tribe-common-h5,.tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-common .tribe-common-h6{font-size:16px}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-common .tribe-common-h7,.tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-common .tribe-common-h--alt{font-weight:400}.tribe-theme-avada #main .tribe-common .tribe-common-h1{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h3{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:22px;line-height:1.5}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:20px;line-height:1.42}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h5{font-size:18px}.tribe-theme-avada #main .tribe-common .tribe-common-h5,.tribe-theme-avada #main .tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h6{font-size:16px}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7,.tribe-theme-avada #main .tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-theme-avada #main .tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h--alt{font-weight:400}.tribe-common button{border:none}.tribe-common button,.tribe-common button:focus,.tribe-common button:hover,.tribe-theme-twentyseventeen .tribe-common button:focus,.tribe-theme-twentyseventeen .tribe-common button:hover{background-color:transparent}.tribe-theme-twentytwenty .tribe-common button{background-color:transparent;text-transform:inherit}.tribe-theme-twentytwenty .tribe-common button:focus,.tribe-theme-twentytwenty .tribe-common button:hover{text-decoration:none}.tribe-common .tribe-common-svgicon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23334aff'/%3E%3C/svg%3E")}.tribe-theme-enfold .tribe-common th{letter-spacing:0;text-transform:none}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;font-weight:700;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;background-color:#fff;border:1px solid #334aff;border-radius:4px;text-align:center;transition:all .2s ease;color:#334aff;padding:11px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn-border,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn-border{width:auto}.tribe-common .tribe-common-c-btn-border:focus,.tribe-common .tribe-common-c-btn-border:hover,.tribe-common a.tribe-common-c-btn-border:focus,.tribe-common a.tribe-common-c-btn-border:hover{color:#fff;background-color:#334aff}.tribe-common .tribe-common-c-btn-border:active,.tribe-common a.tribe-common-c-btn-border:active{opacity:.9}.tribe-common .tribe-common-c-btn-border--secondary,.tribe-common a.tribe-common-c-btn-border--secondary{border-color:#141827;color:#141827}.tribe-common .tribe-common-c-btn-border--secondary:focus,.tribe-common .tribe-common-c-btn-border--secondary:hover,.tribe-common a.tribe-common-c-btn-border--secondary:focus,.tribe-common a.tribe-common-c-btn-border--secondary:hover{background-color:#141827}.tribe-common .tribe-common-c-btn-border--secondary:active,.tribe-common a.tribe-common-c-btn-border--secondary:active{opacity:.9}.tribe-common .tribe-common-c-btn-border--alt,.tribe-common a.tribe-common-c-btn-border--alt{border-color:#e4e4e4;color:#141827;font-weight:400}.tribe-common .tribe-common-c-btn-border--alt:focus,.tribe-common .tribe-common-c-btn-border--alt:hover,.tribe-common a.tribe-common-c-btn-border--alt:focus,.tribe-common a.tribe-common-c-btn-border--alt:hover{border-color:#141827;background-color:#fff;color:#141827}.tribe-common .tribe-common-c-btn-border--alt:active,.tribe-common a.tribe-common-c-btn-border--alt:active{opacity:.9}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border:hover{background-color:#334aff}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border--secondary:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border--secondary:hover{background-color:#141827}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border--alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border--alt:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-border-small,.tribe-common a.tribe-common-c-btn-border-small{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;text-align:center;transition:color .2s ease,border-color .2s ease}.tribe-common .tribe-common-c-btn-border-small:focus,.tribe-common .tribe-common-c-btn-border-small:hover,.tribe-common a.tribe-common-c-btn-border-small:focus,.tribe-common a.tribe-common-c-btn-border-small:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-border-small:active,.tribe-common a.tribe-common-c-btn-border-small:active{border-color:#141827}.tribe-common .tribe-common-c-btn-border-small,.tribe-common a.tribe-common-c-btn-border-small{color:#5d5d5d;padding:14px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn-border-small,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn-border-small{padding:6px 15px;width:auto}.tribe-common .tribe-common-c-btn-border-small:active,.tribe-common .tribe-common-c-btn-border-small:focus,.tribe-common .tribe-common-c-btn-border-small:hover,.tribe-common a.tribe-common-c-btn-border-small:active,.tribe-common a.tribe-common-c-btn-border-small:focus,.tribe-common a.tribe-common-c-btn-border-small:hover{color:#141827}.tribe-common .tribe-common-c-btn-border-small:disabled,.tribe-common a.tribe-common-c-btn-border-small:disabled{color:#d5d5d5}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border-small:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-icon{border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto}.tribe-common .tribe-common-c-btn-icon--border{align-items:center;background-color:#fff;border:1px solid #d5d5d5;display:inline-flex;height:56px;justify-content:center;transition:none;width:56px}.tribe-common .tribe-common-c-btn-icon--border:focus,.tribe-common .tribe-common-c-btn-icon--border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-icon--border:active{border-color:#141827}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-icon--border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;font-weight:700;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;border-radius:4px;color:#fff;text-align:center;transition:background-color .2s ease;background-color:#334aff;padding:11px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn{width:auto}.tribe-common .tribe-common-c-btn:focus,.tribe-common .tribe-common-c-btn:hover,.tribe-common a.tribe-common-c-btn:focus,.tribe-common a.tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8)}.tribe-common .tribe-common-c-btn:active,.tribe-common a.tribe-common-c-btn:active{background-color:rgba(51,74,255,.9)}.tribe-common .tribe-common-c-btn:disabled,.tribe-common a.tribe-common-c-btn:disabled{background-color:rgba(51,74,255,.07)}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8);color:#fff}.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn{background-color:#334aff}.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn:focus,.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8);color:#fff}.tribe-common .tribe-common-c-loader__dot{animation-name:a;animation-duration:2.24s;animation-iteration-count:infinite;animation-direction:normal}.tribe-common .tribe-common-c-loader__dot--first{animation-delay:.45s}.tribe-common .tribe-common-c-loader__dot--second{animation-delay:1.05s}.tribe-common .tribe-common-c-loader__dot--third{animation-delay:1.35s}@keyframes a{50%{background-color:#334aff}}
1
+ .tribe-common figure{line-height:0}.tribe-common figcaption{line-height:normal}.tribe-common a{background-color:transparent;-webkit-text-decoration-skip:objects}.tribe-common abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.tribe-common code,.tribe-common kbd,.tribe-common pre,.tribe-common samp{font-family:monospace;font-size:1em}.tribe-common b,.tribe-common strong{font-weight:inherit;font-weight:bolder}.tribe-common dfn{font-style:italic}.tribe-common mark{background-color:#ff0;color:#000}.tribe-common small{font-size:80%}.tribe-common sub,.tribe-common sup{font-size:75%;line-height:0}.tribe-common hr{border:0;height:0}.tribe-common button,.tribe-common input[type=button],.tribe-common input[type=email],.tribe-common input[type=password],.tribe-common input[type=reset],.tribe-common input[type=search],.tribe-common input[type=submit],.tribe-common input[type=text],.tribe-common input[type=url],.tribe-common textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none}.tribe-common button,.tribe-common input,.tribe-common optgroup,.tribe-common select,.tribe-common textarea{color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:antialiased}.tribe-common button,.tribe-common input,.tribe-common select,.tribe-common textarea{outline:0;border-radius:0}.tribe-common select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.tribe-common optgroup{font-weight:700}.tribe-common h1,.tribe-common h2,.tribe-common h3,.tribe-common h4,.tribe-common h5,.tribe-common h6,.tribe-common p{font-weight:400;text-rendering:optimizeLegibility}#top .main_color .tribe-common button[disabled],#top.tribe-theme-enfold .tribe-common button[disabled]{opacity:1}.tribe-theme-twentynineteen .tribe-common h1:before,.tribe-theme-twentynineteen .tribe-common h2:before{content:none}.tribe-theme-twentynineteen .tribe-common button,.tribe-theme-twentynineteen .tribe-common input[type=button],.tribe-theme-twentynineteen .tribe-common input[type=reset],.tribe-theme-twentynineteen .tribe-common input[type=submit]{outline:none}.tribe-theme-twentynineteen .tribe-common td,.tribe-theme-twentynineteen .tribe-common th{word-break:normal}.tribe-theme-twentyseventeen .tribe-common h5{letter-spacing:normal;text-transform:none}.tribe-theme-twentyseventeen .tribe-common input[type=text]{border-radius:0}.tribe-theme-twentytwenty .tribe-common{background-color:#fff;letter-spacing:normal}.tribe-theme-twentytwenty .tribe-common input,.tribe-theme-twentytwenty .tribe-common textarea{letter-spacing:normal}.tribe-theme-twentytwenty .tribe-common *{word-break:normal}.tribe-common .tribe-common-form-control-checkbox,.tribe-common .tribe-common-form-control-radio{line-height:0}.tribe-common .tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-radio__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400}.tribe-common .tribe-common-form-control-checkbox__label:hover,.tribe-common .tribe-common-form-control-radio__label:hover{opacity:.8}.tribe-common .tribe-common-form-control-checkbox__input,.tribe-common .tribe-common-form-control-radio__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border:1px solid #141827;height:20px;position:relative;width:20px}.tribe-common .tribe-common-form-control-checkbox__input:active,.tribe-common .tribe-common-form-control-checkbox__input:focus,.tribe-common .tribe-common-form-control-checkbox__input:hover,.tribe-common .tribe-common-form-control-radio__input:active,.tribe-common .tribe-common-form-control-radio__input:focus,.tribe-common .tribe-common-form-control-radio__input:hover{border-color:#141827;opacity:.8}.tribe-common .tribe-common-form-control-checkbox__input:checked,.tribe-common .tribe-common-form-control-radio__input:checked{background-color:#141827}.tribe-common .tribe-common-form-control-checkbox__input{border-radius:4px}.tribe-common .tribe-common-form-control-checkbox__input:checked:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='9' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.6.1L3.9 6.8 1.4 4.3c-.1-.1-.3-.1-.4 0l-.8.8c-.1.1-.1.3 0 .4l3.4 3.4c.2.1.4.1.5 0l7.7-7.7c.1-.1.1-.3 0-.4L11 .1c-.1-.1-.3-.1-.4 0z' fill='%23fff'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;content:"";display:block;height:9px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:12px}.tribe-common .tribe-common-form-control-checkbox__input:focus+.tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-checkbox__input:hover+.tribe-common-form-control-checkbox__label{opacity:.8}.tribe-common .tribe-common-form-control-radio__input{border-radius:50%}.tribe-common .tribe-common-form-control-radio__input:checked:before{background-color:#fff;border-radius:50%;content:"";display:block;height:8px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:8px}.tribe-common .tribe-common-form-control-radio__input:focus+.tribe-common-form-control-radio__label,.tribe-common .tribe-common-form-control-radio__input:hover+.tribe-common-form-control-radio__label{opacity:.8}.tribe-theme-twentytwenty .tribe-common .tribe-common-form-control-checkbox__input:checked:before{margin:0}#top .main_color .tribe-common .tribe-common-form-control-checkbox__label,#top .main_color .tribe-common .tribe-common-form-control-radio__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-radio__label{font-weight:400;font-size:14px}.tribe-common .tribe-common-form-control-slider{line-height:0}.tribe-common .tribe-common-form-control-slider__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-runnable-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-moz-range-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-ms-track{background-color:transparent;border-color:transparent;border-width:5px 0;color:transparent;height:10px}.tribe-common .tribe-common-form-control-slider__input::-ms-fill-lower,.tribe-common .tribe-common-form-control-slider__input::-ms-fill-upper{background-color:#334aff;border-radius:10px}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-thumb{background-color:#fff;border:1px solid #7d7d7d;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;-webkit-appearance:none;appearance:none}.tribe-common .tribe-common-form-control-slider__input::-moz-range-thumb{background-color:#fff;border:1px solid #7d7d7d;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px}.tribe-common .tribe-common-form-control-slider__input::-ms-thumb{background-color:#fff;border:1px solid #7d7d7d;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;box-shadow:none;margin-top:-1px}.tribe-common .tribe-common-form-control-slider__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#5d5d5d}#top .main_color .tribe-common .tribe-common-form-control-slider__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-slider__label{font-weight:400;font-size:12px}.tribe-common .tribe-common-form-control-text__input{font-size:16px;border:0;border-bottom:1px solid #d5d5d5}.tribe-common--breakpoint-medium.tribe-common .tribe-common-form-control-text__input,.tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;line-height:1.62;font-weight:400}.tribe-common--breakpoint-medium.tribe-common .tribe-common-form-control-text__input{font-size:14px;border:0}.tribe-common .tribe-common-form-control-text__input::-webkit-input-placeholder{color:#5d5d5d;font-style:normal;opacity:1}.tribe-common .tribe-common-form-control-text__input::-moz-placeholder{color:#5d5d5d;font-style:normal;opacity:1}.tribe-common .tribe-common-form-control-text__input:-ms-input-placeholder,.tribe-common .tribe-common-form-control-text__input::-ms-input-placeholder{color:#5d5d5d;font-style:normal;opacity:1}.tribe-common .tribe-common-form-control-text__input::placeholder{color:#5d5d5d;font-style:normal;opacity:1}.tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;outline:0}.tribe-theme-twentyseventeen .tribe-common .tribe-common-form-control-text__input{color:#141827}.tribe-theme-twentytwenty .tribe-common .tribe-common-form-control-text__input{line-height:inherit}#top .main_color .tribe-common .tribe-common-form-control-text__input,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400;background:#fff;border:0;border-bottom:1px solid #d5d5d5}#top .main_color .tribe-common .tribe-common-form-control-text__input:focus,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;box-shadow:none}#top .main_color .tribe-common.tribe-common--breakpoint-medium .tribe-common-form-control-text__input,#top.tribe-theme-enfold .tribe-common.tribe-common--breakpoint-medium .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;border:0}.tribe-common .tribe-common-form-control-toggle{line-height:0;position:relative}.tribe-common .tribe-common-form-control-toggle__input{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#7d7d7d;width:40px}.tribe-common .tribe-common-form-control-toggle__input::-ms-check{display:none}.tribe-common .tribe-common-form-control-toggle__input+label:before{background-color:#fff;border:1px solid #7d7d7d;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;content:"";left:0;position:absolute;top:0;transition:transform .2s ease}.tribe-common .tribe-common-form-control-toggle__input:checked{background-color:#334aff}.tribe-common .tribe-common-form-control-toggle__input:checked+label:before{transform:translateX(20px)}.tribe-common .tribe-common-form-control-toggle__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#5d5d5d}#top .main_color .tribe-common .tribe-common-form-control-toggle__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__label{font-weight:400;font-size:12px}.tribe-theme-twentytwenty .tribe-common .tribe-common-form-control-toggle__input:checked:before{content:none}.tribe-common a,.tribe-common a:active,.tribe-common a:focus,.tribe-common a:hover,.tribe-common a:visited{color:#141827;outline:0;text-decoration:none}.site-footer .widget-area .tribe-common a,.tribe-theme-twentyseventeen .site-footer .widget-area .tribe-common a,.tribe-theme-twentyseventeen .tribe-common a{box-shadow:none}.site-footer .widget-area .tribe-common a:focus,.site-footer .widget-area .tribe-common a:hover,.tribe-theme-twentyseventeen .site-footer .widget-area .tribe-common a:focus,.tribe-theme-twentyseventeen .site-footer .widget-area .tribe-common a:hover,.tribe-theme-twentyseventeen .tribe-common a:focus,.tribe-theme-twentyseventeen .tribe-common a:hover{box-shadow:none;color:#141827}.tribe-theme-twentynineteen .entry .tribe-common a,.tribe-theme-twentynineteen .tribe-common a{text-decoration:none}.main_color .sidebar .tribe-common a,.main_color .sidebar .tribe-common a:active,.main_color .sidebar .tribe-common a:focus,.main_color .sidebar .tribe-common a:hover,.main_color .sidebar .tribe-common a:visited,.tribe-theme-enfold .tribe-common a,.tribe-theme-enfold .tribe-common a:active,.tribe-theme-enfold .tribe-common a:focus,.tribe-theme-enfold .tribe-common a:hover,.tribe-theme-enfold .tribe-common a:visited{color:#141827}.tribe-common .tribe-common-anchor{border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor:active,.tribe-common .tribe-common-anchor:focus,.tribe-common .tribe-common-anchor:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-anchor-alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-anchor-alt:active,.tribe-common .tribe-common-anchor-alt:focus,.tribe-common .tribe-common-anchor-alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-common .tribe-common-anchor-thin{border-bottom:1px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor-thin:active,.tribe-common .tribe-common-anchor-thin:focus,.tribe-common .tribe-common-anchor-thin:hover{border-bottom:1px solid #141827}.tribe-common .tribe-common-anchor-thin-alt{border-bottom:1px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-anchor-thin-alt:active,.tribe-common .tribe-common-anchor-thin-alt:focus,.tribe-common .tribe-common-anchor-thin-alt:hover{border-bottom:1px solid #334aff;color:#334aff}.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:hover,.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-thin-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-thin-alt:hover{color:#334aff}.site-footer .widget-area .tribe-common .tribe-common-anchor,.site-footer .widget-area .tribe-common .tribe-common-anchor-thin,.tribe-theme-twentyseventeen .site-footer .widget-area .tribe-common .tribe-common-anchor,.tribe-theme-twentyseventeen .site-footer .widget-area .tribe-common .tribe-common-anchor-thin{transition:border-color .2s ease}.site-footer .widget-area .tribe-common .tribe-common-anchor-alt,.site-footer .widget-area .tribe-common .tribe-common-anchor-thin-alt,.tribe-theme-twentyseventeen .site-footer .widget-area .tribe-common .tribe-common-anchor-alt,.tribe-theme-twentyseventeen .site-footer .widget-area .tribe-common .tribe-common-anchor-thin-alt{transition:color .2s ease}.tribe-common .tribe-common-b1{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.62}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b1{font-size:16px;line-height:1.62}.tribe-common .tribe-common-b1--bold{font-weight:700}.tribe-common .tribe-common-b2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.38}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b2{font-size:14px;line-height:1.62}.tribe-common .tribe-common-b2--bold{font-weight:700}.tribe-common .tribe-common-b3{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b3{font-size:12px;line-height:1.38}.tribe-common .tribe-common-b3--bold{font-weight:700}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b1--min-medium{font-size:16px;line-height:1.62}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b2--min-medium{font-size:14px;line-height:1.62}.tribe-common--breakpoint-medium.tribe-common .tribe-common-b3--min-medium{font-size:12px;line-height:1.38}.tribe-common .tribe-common-cta{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;font-weight:700;border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-cta:active,.tribe-common .tribe-common-cta:focus,.tribe-common .tribe-common-cta:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-cta--alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-cta--alt:active,.tribe-common .tribe-common-cta--alt:focus,.tribe-common .tribe-common-cta--alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-common .tribe-common-cta--thin{border-bottom:1px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-cta--thin:active,.tribe-common .tribe-common-cta--thin:focus,.tribe-common .tribe-common-cta--thin:hover{border-bottom:1px solid #141827}.tribe-common .tribe-common-cta--thin-alt{border-bottom:1px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-cta--thin-alt:active,.tribe-common .tribe-common-cta--thin-alt:focus,.tribe-common .tribe-common-cta--thin-alt:hover{border-bottom:1px solid #334aff;color:#334aff}.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:hover,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:hover{color:#334aff}.tribe-common .tribe-common-h1{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:28px;line-height:1.42}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:24px;line-height:1.42}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-common .tribe-common-h3{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:22px;line-height:1.5}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:20px;line-height:1.42}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-common .tribe-common-h5{font-size:18px}.tribe-common .tribe-common-h5,.tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-common .tribe-common-h6{font-size:16px}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-common .tribe-common-h7,.tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-common--breakpoint-medium.tribe-common .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-common .tribe-common-h--alt{font-weight:400}.tribe-theme-avada #main .tribe-common .tribe-common-h1{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h3{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:22px;line-height:1.5}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;font-size:20px;line-height:1.42}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h5{font-size:18px}.tribe-theme-avada #main .tribe-common .tribe-common-h5,.tribe-theme-avada #main .tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h6{font-size:16px}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7,.tribe-theme-avada #main .tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-theme-avada #main .tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common.tribe-common--breakpoint-medium .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h--alt{font-weight:400}.tribe-common button{border:none}.tribe-common button,.tribe-common button:focus,.tribe-common button:hover,.tribe-theme-twentyseventeen .tribe-common button:focus,.tribe-theme-twentyseventeen .tribe-common button:hover{background-color:transparent}.tribe-theme-twentytwenty .tribe-common button{background-color:transparent;text-transform:inherit}.tribe-theme-twentytwenty .tribe-common button:focus,.tribe-theme-twentytwenty .tribe-common button:hover{text-decoration:none}.tribe-theme-enfold .tribe-common th{letter-spacing:0;text-transform:none}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;font-weight:700;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;background-color:#fff;border:1px solid #334aff;border-radius:4px;text-align:center;transition:all .2s ease;color:#334aff;padding:11px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn-border,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn-border{width:auto}.tribe-common .tribe-common-c-btn-border:focus,.tribe-common .tribe-common-c-btn-border:hover,.tribe-common a.tribe-common-c-btn-border:focus,.tribe-common a.tribe-common-c-btn-border:hover{color:#fff;background-color:#334aff}.tribe-common .tribe-common-c-btn-border:active,.tribe-common a.tribe-common-c-btn-border:active{opacity:.9}.tribe-common .tribe-common-c-btn-border--secondary,.tribe-common a.tribe-common-c-btn-border--secondary{border-color:#141827;color:#141827}.tribe-common .tribe-common-c-btn-border--secondary:focus,.tribe-common .tribe-common-c-btn-border--secondary:hover,.tribe-common a.tribe-common-c-btn-border--secondary:focus,.tribe-common a.tribe-common-c-btn-border--secondary:hover{background-color:#141827}.tribe-common .tribe-common-c-btn-border--secondary:active,.tribe-common a.tribe-common-c-btn-border--secondary:active{opacity:.9}.tribe-common .tribe-common-c-btn-border--alt,.tribe-common a.tribe-common-c-btn-border--alt{border-color:#e4e4e4;color:#141827;font-weight:400}.tribe-common .tribe-common-c-btn-border--alt:focus,.tribe-common .tribe-common-c-btn-border--alt:hover,.tribe-common a.tribe-common-c-btn-border--alt:focus,.tribe-common a.tribe-common-c-btn-border--alt:hover{border-color:#141827;background-color:#fff;color:#141827}.tribe-common .tribe-common-c-btn-border--alt:active,.tribe-common a.tribe-common-c-btn-border--alt:active{opacity:.9}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border:hover{background-color:#334aff}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border--secondary:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border--secondary:hover{background-color:#141827}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border--alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border--alt:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-border-small,.tribe-common a.tribe-common-c-btn-border-small{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;text-align:center;transition:color .2s ease,border-color .2s ease}.tribe-common .tribe-common-c-btn-border-small:focus,.tribe-common .tribe-common-c-btn-border-small:hover,.tribe-common a.tribe-common-c-btn-border-small:focus,.tribe-common a.tribe-common-c-btn-border-small:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-border-small:active,.tribe-common a.tribe-common-c-btn-border-small:active{border-color:#141827}.tribe-common .tribe-common-c-btn-border-small,.tribe-common a.tribe-common-c-btn-border-small{color:#5d5d5d;padding:14px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn-border-small,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn-border-small{padding:6px 15px;width:auto}.tribe-common .tribe-common-c-btn-border-small:active,.tribe-common .tribe-common-c-btn-border-small:focus,.tribe-common .tribe-common-c-btn-border-small:hover,.tribe-common a.tribe-common-c-btn-border-small:active,.tribe-common a.tribe-common-c-btn-border-small:focus,.tribe-common a.tribe-common-c-btn-border-small:hover{color:#141827}.tribe-common .tribe-common-c-btn-border-small:disabled,.tribe-common a.tribe-common-c-btn-border-small:disabled{color:#d5d5d5}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border-small:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-icon{border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto}.tribe-common .tribe-common-c-btn-icon--caret-left:active .tribe-common-c-btn-icon__icon-svg path,.tribe-common .tribe-common-c-btn-icon--caret-left:focus .tribe-common-c-btn-icon__icon-svg path,.tribe-common .tribe-common-c-btn-icon--caret-left:hover .tribe-common-c-btn-icon__icon-svg path,.tribe-common .tribe-common-c-btn-icon--caret-right:active .tribe-common-c-btn-icon__icon-svg path,.tribe-common .tribe-common-c-btn-icon--caret-right:focus .tribe-common-c-btn-icon__icon-svg path,.tribe-common .tribe-common-c-btn-icon--caret-right:hover .tribe-common-c-btn-icon__icon-svg path{fill:#5d5d5d}.tribe-common .tribe-common-c-btn-icon--caret-left:disabled .tribe-common-c-btn-icon__icon-svg path,.tribe-common .tribe-common-c-btn-icon--caret-right:disabled .tribe-common-c-btn-icon__icon-svg path{fill:#d5d5d5}.tribe-common .tribe-common-c-btn-icon--caret-left .tribe-common-c-btn-icon__icon-svg path,.tribe-common .tribe-common-c-btn-icon--caret-right .tribe-common-c-btn-icon__icon-svg path{fill:#bababa}.tribe-common .tribe-common-c-btn-icon--border{align-items:center;background-color:#fff;border:1px solid #d5d5d5;display:inline-flex;height:56px;justify-content:center;transition:none;width:56px}.tribe-common .tribe-common-c-btn-icon--border:focus,.tribe-common .tribe-common-c-btn-icon--border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-icon--border:active{border-color:#141827}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-icon--border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;font-weight:700;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;border-radius:4px;color:#fff;text-align:center;transition:background-color .2s ease;background-color:#334aff;padding:11px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn{width:auto}.tribe-common .tribe-common-c-btn:focus,.tribe-common .tribe-common-c-btn:hover,.tribe-common a.tribe-common-c-btn:focus,.tribe-common a.tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8)}.tribe-common .tribe-common-c-btn:active,.tribe-common a.tribe-common-c-btn:active{background-color:rgba(51,74,255,.9)}.tribe-common .tribe-common-c-btn:disabled,.tribe-common a.tribe-common-c-btn:disabled{background-color:rgba(51,74,255,.07)}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8);color:#fff}.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn{background-color:#334aff}.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn:focus,.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8);color:#fff}.tribe-common .tribe-common-c-loader__dot circle{animation-name:a;animation-duration:2.24s;animation-iteration-count:infinite;animation-direction:normal;fill:currentColor;opacity:.07}.tribe-common .tribe-common-c-loader__dot--first circle{animation-delay:.45s}.tribe-common .tribe-common-c-loader__dot--second circle{animation-delay:1.05s}.tribe-common .tribe-common-c-loader__dot--third circle{animation-delay:1.35s}@keyframes a{50%{opacity:1}}.tribe-common .tribe-common-c-svgicon{color:#334aff}.tribe-common .tribe-common-c-svgicon--featured path{fill:currentColor}.tribe-common .tribe-common-c-svgicon--recurring path{fill:#141827;stroke:#141827}.tribe-common .tribe-common-c-svgicon--close-alt path,.tribe-common .tribe-common-c-svgicon--close path{stroke:#bababa}.tribe-common .tribe-common-c-svgicon--messages-not-found path{stroke:#141827}.tribe-common .tribe-common-c-svgicon--messages-not-found .tribe-common-c-svgicon__svg-stroke{stroke:currentColor}.tribe-common .tribe-common-c-svgicon__svg-fill{fill:#141827}.tribe-common .tribe-common-c-svgicon__svg-stroke{stroke:#141827}
common/src/resources/css/common-skeleton.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-common{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased}.tribe-common *{box-sizing:border-box}.tribe-common article,.tribe-common aside,.tribe-common details,.tribe-common figcaption,.tribe-common figure,.tribe-common footer,.tribe-common header,.tribe-common main,.tribe-common menu,.tribe-common nav,.tribe-common section,.tribe-common summary{display:block}.tribe-common svg:not(:root){overflow:hidden}.tribe-common audio,.tribe-common canvas,.tribe-common progress,.tribe-common video{display:inline-block}.tribe-common audio:not([controls]){display:none;height:0}.tribe-common progress{vertical-align:baseline}.tribe-common [hidden],.tribe-common template{display:none}.tribe-common pre{overflow:auto}.tribe-common sub,.tribe-common sup{position:relative;vertical-align:baseline}.tribe-common sup{top:-.5em}.tribe-common sub{bottom:-.25em}.tribe-common button,.tribe-common input,.tribe-common select,.tribe-common textarea{box-sizing:border-box;margin:0}.tribe-common input[type=number]::-webkit-inner-spin-button,.tribe-common input[type=number]::-webkit-outer-spin-button{height:auto}.tribe-common legend{color:inherit;display:table;max-width:100%;white-space:normal}.tribe-common textarea{resize:none;overflow:auto}.tribe-common button,.tribe-common input[type=button],.tribe-common input[type=reset],.tribe-common input[type=submit]{cursor:pointer;overflow:visible}.tribe-common button[disabled],.tribe-common input[disabled]{cursor:default}.tribe-common button::-moz-focus-inner,.tribe-common input::-moz-focus-inner{border:0;padding:0}.tribe-common a,.tribe-common abbr,.tribe-common acronym,.tribe-common address,.tribe-common applet,.tribe-common article,.tribe-common aside,.tribe-common audio,.tribe-common b,.tribe-common big,.tribe-common blockquote,.tribe-common canvas,.tribe-common caption,.tribe-common center,.tribe-common cite,.tribe-common code,.tribe-common dd,.tribe-common del,.tribe-common details,.tribe-common dfn,.tribe-common div,.tribe-common dl,.tribe-common dt,.tribe-common em,.tribe-common embed,.tribe-common fieldset,.tribe-common figcaption,.tribe-common figure,.tribe-common footer,.tribe-common form,.tribe-common h1,.tribe-common h2,.tribe-common h3,.tribe-common h4,.tribe-common h5,.tribe-common h6,.tribe-common header,.tribe-common i,.tribe-common iframe,.tribe-common img,.tribe-common ins,.tribe-common kbd,.tribe-common label,.tribe-common legend,.tribe-common li,.tribe-common main,.tribe-common mark,.tribe-common menu,.tribe-common nav,.tribe-common object,.tribe-common ol,.tribe-common output,.tribe-common p,.tribe-common pre,.tribe-common q,.tribe-common ruby,.tribe-common s,.tribe-common samp,.tribe-common section,.tribe-common small,.tribe-common span,.tribe-common strike,.tribe-common strong,.tribe-common sub,.tribe-common summary,.tribe-common sup,.tribe-common table,.tribe-common tbody,.tribe-common td,.tribe-common tfoot,.tribe-common th,.tribe-common thead,.tribe-common time,.tribe-common tr,.tribe-common tt,.tribe-common u,.tribe-common ul,.tribe-common var,.tribe-common video{margin:0;padding:0;border:0}.tribe-common ol,.tribe-common ul{list-style:none}.tribe-common img{-ms-interpolation-mode:bicubic;height:auto;max-width:100%;border-style:none}.tribe-common embed,.tribe-common iframe,.tribe-common video{max-width:100%;max-height:100%}.tribe-theme-avada input[type=text]{margin:0}.tribe-theme-divi .entry-content .tribe-common table,.tribe-theme-divibody.et-pb-preview #main-content .container .tribe-common table{border:0;margin:0}.tribe-theme-divi .entry-content .tribe-common td,.tribe-theme-divibody.et-pb-preview #main-content .container .tribe-common td{border:0}.tribe-theme-divi #content-area .tribe-common td,.tribe-theme-divi #content-area .tribe-common th,.tribe-theme-divi #content-area .tribe-common tr,.tribe-theme-divi #left-area .tribe-common ul{padding:0}#top .main_color .tribe-common button[disabled],#top.tribe-theme-enfold .tribe-common button[disabled]{cursor:default}#top .main_color .tribe-common form,#top .main_color .tribe-common input,#top.tribe-theme-enfold .tribe-common form,#top.tribe-theme-enfold .tribe-common input{margin:0}.entry-content-wrapper .tribe-common li,.entry-content .tribe-common ol,.entry-content .tribe-common ul,.tribe-theme-genesis .tribe-common ol,.tribe-theme-genesis .tribe-common ul{margin:0;padding:0}.tribe-theme-twentyseventeen .tribe-common div.tribe-dialog{z-index:5!important}.tribe-common .tribe-common-form-control-checkbox,.tribe-common .tribe-common-form-control-radio{display:flex;align-items:flex-start}.tribe-common .tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-radio__label{cursor:pointer;margin-left:15px}.tribe-common .tribe-common-form-control-checkbox__input,.tribe-common .tribe-common-form-control-radio__input{cursor:pointer;flex:none;margin:1px 0 0}#top .main_color .tribe-common .tribe-common-form-control-checkbox__input,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__input{margin:1px 0 0}.tribe-common .tribe-common-form-control-checkbox-radio-group>*{margin-bottom:15px}.tribe-common .tribe-common-form-control-checkbox-radio-group>:last-child{margin-bottom:0}.tribe-common .tribe-common-form-control-slider__input{cursor:pointer;display:inline-block;margin:0;padding:0;width:120px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider__label{cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider--vertical .tribe-common-form-control-slider__label{display:block;margin:0 0 6px}.tribe-common .tribe-common-form-control-text__label{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-form-control-text__input{height:auto;padding:12px 28px 12px 0;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-form-control-text__input{padding:20px 20px 20px 40px}#top .main_color .tribe-common .tribe-common-form-control-text__input,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input{padding:12px 28px 12px 0;width:100%}#top .main_color .tribe-common.tribe-common--breakpoint-medium .tribe-common-form-control-text__input,#top.tribe-theme-enfold .tribe-common.tribe-common--breakpoint-medium .tribe-common-form-control-text__input{padding:20px 20px 20px 40px}.tribe-common .tribe-common-form-control-toggle__input,.tribe-common .tribe-common-form-control-toggle__label{cursor:pointer;display:inline-block;vertical-align:middle}.tribe-common .tribe-common-form-control-toggle__label{margin-left:11px}.tribe-common .tribe-common-form-control-toggle--vertical .tribe-common-form-control-toggle__label{display:block;margin:0 0 6px}#top .main_color .tribe-common .tribe-common-form-control-toggle__input,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__input{display:inline-block;margin:5px 0}.tribe-common .tribe-common-g-col{min-width:0;width:100%}.tribe-common .tribe-common-g-row{display:flex;flex-wrap:wrap}.tribe-common .tribe-common-g-row--gutters{margin-left:-21px;margin-right:-21px}.tribe-common--breakpoint-medium.tribe-common .tribe-common-g-row--gutters{margin-left:-24px;margin-right:-24px}.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:21px;padding-right:21px}.tribe-common--breakpoint-medium.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:24px;padding-right:24px}.tribe-theme-twentynineteen .tribe-common .entry.tribe-common-g-row--gutters{margin-left:-21px;margin-right:-21px;padding:0}.tribe-theme-twentynineteen .tribe-common.tribe-common--breakpoint-medium .entry.tribe-common-g-row--gutters{margin-left:-24px;margin-right:-24px}.tribe-theme-twentynineteen .tribe-common .tribe-common-g-row--gutters>.entry.tribe-common-g-col{margin:0;padding-left:21px;padding-right:21px}.tribe-theme-twentynineteen .tribe-common.tribe-common--breakpoint-medium .tribe-common-g-row--gutters>.entry.tribe-common-g-col{padding-left:24px;padding-right:24px}.tribe-common a{cursor:pointer}.tribe-theme-divi #left-area .tribe-common ul,.tribe-theme-divi .entry-content .tribe-common ul,body.et-pb-preview.tribe-theme-divi #main-content .container .tribe-common ul{list-style-type:none;padding:0}.entry-content .tribe-common ol>li,.entry-content .tribe-common ul>li{list-style-type:none}.tribe-common button{padding:0}.tribe-common .tribe-common-l-container{max-width:1260px;margin-left:auto;margin-right:auto;padding-left:19.5px;padding-right:19.5px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-l-container{padding-left:42px;padding-right:42px}.tribe-common .tribe-common-svgicon{background-repeat:no-repeat;background-size:contain}.tribe-common .tribe-common-svgicon--close-secondary{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cpath d='M16 2L2 16m14 0L2 2' stroke='%23bababa' fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--day{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 .503v19.994c0 .278.19.503.424.503h20.152c.234 0 .424-.225.424-.503V.503C21 .225 20.81 0 20.576 0H.424C.19 0 0 .225 0 .503zm1.156.943h18.66v2.7H1.157v-2.7zm0 4.023h18.66V19.55H1.157V5.469zM14.18 14.53v1.747c0 .482.39.874.873.874H16.8a.873.873 0 0 0 .873-.874V14.53a.873.873 0 0 0-.873-.873h-1.747a.873.873 0 0 0-.873.873z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--list{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cg fill='%23141827' fill-rule='evenodd'%3E%3Cpath fill-rule='nonzero' d='M0 .504v20.03c0 .278.19.503.425.503h20.188c.235 0 .425-.225.425-.504V.503c0-.277-.19-.503-.425-.503H.425C.19 0 0 .226 0 .504zm1.158.944h18.695v2.705H1.158V1.448zm0 2.705h18.695v15.432H1.158V4.153z'/%3E%3Cpath d='M13.39 5.731v2.13a1.07 1.07 0 0 0 1.076 1.064h2.154a1.07 1.07 0 0 0 1.077-1.065V5.731a1.07 1.07 0 0 0-1.077-1.064h-2.154A1.07 1.07 0 0 0 13.39 5.73z'/%3E%3Cpath fill-rule='nonzero' d='M8.84 8.937c.286 0 .52-.236.52-.523v-.425a.523.523 0 0 0-.52-.522H4.02a.523.523 0 0 0-.52.522v.425c0 .287.234.523.52.523h4.82zm2.064-2.8c.287 0 .521-.236.521-.523v-.425a.523.523 0 0 0-.52-.522H4.02a.523.523 0 0 0-.521.522v.425c0 .287.234.523.52.523h6.884z'/%3E%3Cpath d='M13.39 12.731v2.13a1.07 1.07 0 0 0 1.076 1.064h2.154a1.07 1.07 0 0 0 1.077-1.065v-2.129a1.07 1.07 0 0 0-1.077-1.064h-2.154a1.07 1.07 0 0 0-1.077 1.064z'/%3E%3Cpath fill-rule='nonzero' d='M8.84 15.937c.286 0 .52-.236.52-.523v-.425a.523.523 0 0 0-.52-.522H4.02a.523.523 0 0 0-.52.522v.425c0 .287.234.523.52.523h4.82zm2.064-2.8c.287 0 .521-.236.521-.523v-.425a.523.523 0 0 0-.52-.522H4.02a.523.523 0 0 0-.521.522v.425c0 .287.234.523.52.523h6.884z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--map{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cg fill='%23141827' fill-rule='nonzero'%3E%3Cg stroke-width='.7'%3E%3Cpath stroke='%23141827' d='M10.67 17.21c.182-.225 4.46-5.527 4.46-8.18 0-2.728-2.085-4.947-4.648-4.947-2.563 0-4.649 2.22-4.649 4.946 0 2.654 4.279 7.956 4.46 8.18a.243.243 0 0 0 .189.092c.072 0 .14-.034.188-.092zM6.33 9.03c0-2.436 1.863-4.418 4.152-4.418 2.29 0 4.152 1.982 4.152 4.417 0 2.16-3.318 6.533-4.152 7.597C9.648 15.562 6.33 11.19 6.33 9.03z'/%3E%3Cpath stroke='%23000' d='M12.055 9.04c0-.911-.706-1.652-1.573-1.652-.868 0-1.574.74-1.574 1.652 0 .91.706 1.652 1.574 1.652.867 0 1.573-.741 1.573-1.652zm-2.85 0c0-.74.573-1.34 1.277-1.34s1.277.6 1.277 1.34c0 .74-.573 1.34-1.277 1.34s-1.277-.6-1.277-1.34z'/%3E%3C/g%3E%3Cpath d='M0 .504v20.03c0 .278.19.503.425.503h20.188c.235 0 .425-.225.425-.504V.503c0-.277-.19-.503-.425-.503H.425C.19 0 0 .226 0 .504zm1.158.944h18.695v2.705H1.158V1.448zm0 2.705h18.695v15.432H1.158V4.153z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--month{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='22' height='22' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.637 1.063v19.879c0 .276.189.5.422.5h20.037c.232 0 .421-.224.421-.5V1.062c0-.275-.189-.5-.421-.5H1.059c-.233 0-.422.225-.422.5zM1.787 2H20.34v2.685H1.787V2zm0 4H20.34v14H1.787V6zM8 8.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-8 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-12 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm0 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--no-map{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='92' height='92' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Cg stroke='%23141827' stroke-width='2.5' transform='translate(2 2)'%3E%3Cpath d='M32.219 88S0 58.674 0 32.281C-.011 15.598 12.685 1.66 29.278.136c16.593-1.523 31.608 9.873 34.627 26.28M32.733 88s2.96-2.693 7.083-7.181' stroke-linecap='round'/%3E%3Ccircle cx='33' cy='33' r='8.905'/%3E%3Ccircle cx='65.127' cy='59.016' r='23.571'/%3E%3C/g%3E%3Cg transform='translate(64.857 47.048)'%3E%3Ccircle fill='%23111' cx='2.839' cy='26.495' r='2.839'/%3E%3Cpath d='M2.642 0v18.925' stroke='%23141827' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--photo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21 21'%3E%3Cg fill='%23141827'%3E%3Cpath d='M20.407 0H.577A.565.565 0 0 0 0 .564v19.872c0 .316.254.564.578.564h19.83a.565.565 0 0 0 .577-.564V.564A.565.565 0 0 0 20.407 0zm-.6 1.15v14.868l-2.226-3.427c-.646-.677-1.848-.677-2.495 0l-1.548 1.646-4.482-5.029a1.806 1.806 0 0 0-1.363-.586c-.508 0-1.016.225-1.34.609l-5.175 5.75V1.15h18.628zM1.177 19.85v-3.133l6.053-6.765a.588.588 0 0 1 .462-.203c.162 0 .37.068.485.203l4.921 5.525c.116.113.278.203.44.203.184.022.323-.068.438-.18l1.987-2.12c.185-.203.555-.203.763 0l3.103 4.352v2.14H1.178v-.022z'/%3E%3Cpath d='M14.955 9.041c1.16 0 2.122-.97 2.122-2.187 0-1.218-.94-2.187-2.122-2.187-1.181 0-2.122.97-2.122 2.187 0 1.218.963 2.187 2.122 2.187zm0-3.224c.547 0 1.006.473 1.006 1.037s-.459 1.037-1.006 1.037c-.547 0-1.006-.473-1.006-1.037s.46-1.037 1.006-1.037z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--week{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 .503v19.994c0 .278.19.503.424.503h20.152c.234 0 .424-.225.424-.503V.503C21 .225 20.81 0 20.576 0H.424C.19 0 0 .225 0 .503zm1.156.943h18.66v2.7H1.157v-2.7zm0 4.023h18.66V19.55H1.157V5.469zm6.25 6.537v1.006c0 .278.224.503.502.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H7.908a.503.503 0 0 0-.503.502zm4.022 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H11.93a.503.503 0 0 0-.503.502zm4.023 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502h-1.006a.503.503 0 0 0-.503.502zm-12.069 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H3.885a.503.503 0 0 0-.503.502z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23141827'/%3E%3C/svg%3E");height:10px;width:8px}.tribe-common .tribe-common-svgicon--recurring{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23141827'/%3E%3C/svg%3E");height:10px;width:10px}.tribe-common .tribe-common-svgicon--search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%235d5d5d'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--filters{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%235d5d5d' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--close{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cpath d='M16 2L2 16m14 0L2 2' stroke='%235d5d5d' fill='none' fill-rule='evenodd' stroke-linecap='square' stroke-width='2'/%3E%3C/svg%3E")}.tribe-common .tribe-common-a11y-hidden{display:none!important;visibility:hidden}.tribe-common .tribe-common-a11y-visual-hide,.tribe-common .tribe-common-a11y-visual-show{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{padding:11px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn-border,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn-border{width:auto}.tribe-common .tribe-common-c-btn-border-small,.tribe-common a.tribe-common-c-btn-border-small{padding:14px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn-border-small,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn-border-small{padding:6px 15px;width:auto}.tribe-common .tribe-common-c-btn-icon:before{background-repeat:no-repeat;background-size:contain;content:"";display:block}.tribe-common .tribe-common-c-btn-icon--caret-left:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23bababa'/%3E%3C/svg%3E");height:20px;width:12px}.tribe-common .tribe-common-c-btn-icon--caret-left:active:before,.tribe-common .tribe-common-c-btn-icon--caret-left:focus:before,.tribe-common .tribe-common-c-btn-icon--caret-left:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%235d5d5d'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-left:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23d5d5d5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-right:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23bababa'/%3E%3C/svg%3E");height:20px;width:12px}.tribe-common .tribe-common-c-btn-icon--caret-right:active:before,.tribe-common .tribe-common-c-btn-icon--caret-right:focus:before,.tribe-common .tribe-common-c-btn-icon--caret-right:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%235d5d5d'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-right:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23d5d5d5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--filters:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%235d5d5d' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E");height:20px;width:24px}.tribe-common .tribe-common-c-btn-icon--filters:active:before,.tribe-common .tribe-common-c-btn-icon--filters:focus:before,.tribe-common .tribe-common-c-btn-icon--filters:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--filters:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23d5d5d5' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--search:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%235d5d5d'/%3E%3C/svg%3E");height:20px;width:20px}.tribe-common .tribe-common-c-btn-icon--search:active:before,.tribe-common .tribe-common-c-btn-icon--search:focus:before,.tribe-common .tribe-common-c-btn-icon--search:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--search:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23d5d5d5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{padding:11px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn{width:auto}.tribe-common .tribe-common-c-image{display:block;height:auto;margin-left:auto;margin-right:auto;width:100%}.tribe-common .tribe-common-c-image--bg{position:relative}.tribe-common .tribe-common-c-image__bg{background:50% no-repeat;background-size:cover;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.tribe-common .tribe-common-c-loader{display:flex;padding-top:192px}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-loader{padding-top:288px}.tribe-common .tribe-common-c-loader__dot{background-color:rgba(51,74,255,.07);height:15px;width:15px;border-radius:50%}.tribe-common .tribe-common-c-loader__dot:not(:first-of-type){margin-left:8px}
1
+ .tribe-common{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased}.tribe-common *{box-sizing:border-box}.tribe-common article,.tribe-common aside,.tribe-common details,.tribe-common figcaption,.tribe-common figure,.tribe-common footer,.tribe-common header,.tribe-common main,.tribe-common menu,.tribe-common nav,.tribe-common section,.tribe-common summary{display:block}.tribe-common svg:not(:root){overflow:hidden}.tribe-common audio,.tribe-common canvas,.tribe-common progress,.tribe-common video{display:inline-block}.tribe-common audio:not([controls]){display:none;height:0}.tribe-common progress{vertical-align:baseline}.tribe-common [hidden],.tribe-common template{display:none}.tribe-common pre{overflow:auto}.tribe-common sub,.tribe-common sup{position:relative;vertical-align:baseline}.tribe-common sup{top:-.5em}.tribe-common sub{bottom:-.25em}.tribe-common button,.tribe-common input,.tribe-common select,.tribe-common textarea{box-sizing:border-box;margin:0}.tribe-common input[type=number]::-webkit-inner-spin-button,.tribe-common input[type=number]::-webkit-outer-spin-button{height:auto}.tribe-common legend{color:inherit;display:table;max-width:100%;white-space:normal}.tribe-common textarea{resize:none;overflow:auto}.tribe-common button,.tribe-common input[type=button],.tribe-common input[type=reset],.tribe-common input[type=submit]{cursor:pointer;overflow:visible}.tribe-common button[disabled],.tribe-common input[disabled]{cursor:default}.tribe-common button::-moz-focus-inner,.tribe-common input::-moz-focus-inner{border:0;padding:0}.tribe-common a,.tribe-common abbr,.tribe-common acronym,.tribe-common address,.tribe-common applet,.tribe-common article,.tribe-common aside,.tribe-common audio,.tribe-common b,.tribe-common big,.tribe-common blockquote,.tribe-common canvas,.tribe-common caption,.tribe-common center,.tribe-common cite,.tribe-common code,.tribe-common dd,.tribe-common del,.tribe-common details,.tribe-common dfn,.tribe-common div,.tribe-common dl,.tribe-common dt,.tribe-common em,.tribe-common embed,.tribe-common fieldset,.tribe-common figcaption,.tribe-common figure,.tribe-common footer,.tribe-common form,.tribe-common h1,.tribe-common h2,.tribe-common h3,.tribe-common h4,.tribe-common h5,.tribe-common h6,.tribe-common header,.tribe-common i,.tribe-common iframe,.tribe-common img,.tribe-common ins,.tribe-common kbd,.tribe-common label,.tribe-common legend,.tribe-common li,.tribe-common main,.tribe-common mark,.tribe-common menu,.tribe-common nav,.tribe-common object,.tribe-common ol,.tribe-common output,.tribe-common p,.tribe-common pre,.tribe-common q,.tribe-common ruby,.tribe-common s,.tribe-common samp,.tribe-common section,.tribe-common small,.tribe-common span,.tribe-common strike,.tribe-common strong,.tribe-common sub,.tribe-common summary,.tribe-common sup,.tribe-common table,.tribe-common tbody,.tribe-common td,.tribe-common tfoot,.tribe-common th,.tribe-common thead,.tribe-common time,.tribe-common tr,.tribe-common tt,.tribe-common u,.tribe-common ul,.tribe-common var,.tribe-common video{margin:0;padding:0;border:0}.tribe-common ol,.tribe-common ul{list-style:none}.tribe-common img{-ms-interpolation-mode:bicubic;height:auto;max-width:100%;border-style:none}.tribe-common embed,.tribe-common iframe,.tribe-common video{max-width:100%;max-height:100%}.tribe-theme-avada input[type=text]{margin:0}.tribe-theme-divi .entry-content .tribe-common table,.tribe-theme-divibody.et-pb-preview #main-content .container .tribe-common table{border:0;margin:0}.tribe-theme-divi .entry-content .tribe-common td,.tribe-theme-divibody.et-pb-preview #main-content .container .tribe-common td{border:0}.tribe-theme-divi #content-area .tribe-common td,.tribe-theme-divi #content-area .tribe-common th,.tribe-theme-divi #content-area .tribe-common tr,.tribe-theme-divi #left-area .tribe-common ul{padding:0}#top .main_color .tribe-common button[disabled],#top.tribe-theme-enfold .tribe-common button[disabled]{cursor:default}#top .main_color .tribe-common form,#top .main_color .tribe-common input,#top.tribe-theme-enfold .tribe-common form,#top.tribe-theme-enfold .tribe-common input{margin:0}.entry-content-wrapper .tribe-common li,.entry-content .tribe-common ol,.entry-content .tribe-common ul,.tribe-theme-genesis .tribe-common ol,.tribe-theme-genesis .tribe-common ul{margin:0;padding:0}.tribe-theme-twentynineteen .tribe-common svg{fill:none}.tribe-theme-twentyseventeen .tribe-common div.tribe-dialog{z-index:5!important}.tribe-common .tribe-common-form-control-checkbox,.tribe-common .tribe-common-form-control-radio{display:flex;align-items:flex-start}.tribe-common .tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-radio__label{cursor:pointer;margin-left:15px}.tribe-common .tribe-common-form-control-checkbox__input,.tribe-common .tribe-common-form-control-radio__input{cursor:pointer;flex:none;margin:1px 0 0}#top .main_color .tribe-common .tribe-common-form-control-checkbox__input,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__input{margin:1px 0 0}.tribe-theme-twentytwenty .tribe-common .tribe-common-form-control-checkbox__input{top:0}.tribe-common .tribe-common-form-control-checkbox-radio-group>*{margin-bottom:15px}.tribe-common .tribe-common-form-control-checkbox-radio-group>:last-child{margin-bottom:0}.tribe-common .tribe-common-form-control-slider__input{cursor:pointer;display:inline-block;margin:0;padding:0;width:120px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider__label{cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider--vertical .tribe-common-form-control-slider__label{display:block;margin:0 0 6px}.tribe-common .tribe-common-form-control-text__label{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-form-control-text__input{height:auto;padding:12px 28px 12px 0;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-form-control-text__input{padding:20px 20px 20px 40px}#top .main_color .tribe-common .tribe-common-form-control-text__input,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input{padding:12px 28px 12px 0;width:100%}#top .main_color .tribe-common.tribe-common--breakpoint-medium .tribe-common-form-control-text__input,#top.tribe-theme-enfold .tribe-common.tribe-common--breakpoint-medium .tribe-common-form-control-text__input{padding:20px 20px 20px 40px}.tribe-common .tribe-common-form-control-toggle__input,.tribe-common .tribe-common-form-control-toggle__label{cursor:pointer;display:inline-block;vertical-align:middle}.tribe-common .tribe-common-form-control-toggle__label{margin-left:11px}.tribe-common .tribe-common-form-control-toggle--vertical .tribe-common-form-control-toggle__label{display:block;margin:0 0 6px}#top .main_color .tribe-common .tribe-common-form-control-toggle__input,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__input{display:inline-block;margin:5px 0}.tribe-common .tribe-common-g-col{min-width:0;width:100%}.tribe-common .tribe-common-g-row{display:flex;flex-wrap:wrap}.tribe-common .tribe-common-g-row--gutters{margin-left:-21px;margin-right:-21px}.tribe-common--breakpoint-medium.tribe-common .tribe-common-g-row--gutters{margin-left:-24px;margin-right:-24px}.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:21px;padding-right:21px}.tribe-common--breakpoint-medium.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:24px;padding-right:24px}.tribe-theme-twentynineteen .tribe-common .entry.tribe-common-g-row--gutters{margin-left:-21px;margin-right:-21px;padding:0}.tribe-theme-twentynineteen .tribe-common.tribe-common--breakpoint-medium .entry.tribe-common-g-row--gutters{margin-left:-24px;margin-right:-24px}.tribe-theme-twentynineteen .tribe-common .tribe-common-g-row--gutters>.entry.tribe-common-g-col{margin:0;padding-left:21px;padding-right:21px}.tribe-theme-twentynineteen .tribe-common.tribe-common--breakpoint-medium .tribe-common-g-row--gutters>.entry.tribe-common-g-col{padding-left:24px;padding-right:24px}.tribe-common a{cursor:pointer}.tribe-theme-divi #left-area .tribe-common ul,.tribe-theme-divi .entry-content .tribe-common ul,body.et-pb-preview.tribe-theme-divi #main-content .container .tribe-common ul{list-style-type:none;padding:0}.entry-content .tribe-common ol>li,.entry-content .tribe-common ul>li{list-style-type:none}.tribe-common button{padding:0}.tribe-common .tribe-common-l-container{max-width:1260px;margin-left:auto;margin-right:auto;padding-left:19.5px;padding-right:19.5px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-l-container{padding-left:42px;padding-right:42px}.tribe-common .tribe-common-a11y-hidden{display:none!important;visibility:hidden}.tribe-common .tribe-common-a11y-visual-hide{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-a11y-visual-show{clip:auto;height:auto;margin:0;position:static;width:auto}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{padding:11px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn-border,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn-border{width:auto}.tribe-common .tribe-common-c-btn-border-small,.tribe-common a.tribe-common-c-btn-border-small{padding:14px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn-border-small,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn-border-small{padding:6px 15px;width:auto}.tribe-common .tribe-common-c-btn-icon:before{background-repeat:no-repeat;background-size:contain;content:"";display:block}.tribe-common .tribe-common-c-btn-icon--caret-left .tribe-common-c-btn-icon__icon-svg,.tribe-common .tribe-common-c-btn-icon--caret-right .tribe-common-c-btn-icon__icon-svg{width:11px}.tribe-common .tribe-common-c-btn-icon--caret-left .tribe-common-c-btn-icon__icon-svg path,.tribe-common .tribe-common-c-btn-icon--caret-right .tribe-common-c-btn-icon__icon-svg path{fill:currentColor}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{padding:11px 20px;width:100%}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-btn,.tribe-common--breakpoint-medium.tribe-common a.tribe-common-c-btn{width:auto}.tribe-common .tribe-common-c-image{display:block;height:auto;margin-left:auto;margin-right:auto;width:100%}.tribe-common .tribe-common-c-image--bg{position:relative}.tribe-common .tribe-common-c-image__bg{background:50% no-repeat;background-size:cover;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.tribe-common .tribe-common-c-loader{display:flex;padding-top:192px}.tribe-common--breakpoint-medium.tribe-common .tribe-common-c-loader{padding-top:288px}.tribe-common .tribe-common-c-loader__dot{width:15px}.tribe-common .tribe-common-c-loader__dot:not(:first-of-type){margin-left:8px}.tribe-common .tribe-common-c-loader__dot circle{fill:currentColor}.tribe-common .tribe-common-c-svgicon--featured{width:8px}.tribe-common .tribe-common-c-svgicon--recurring{width:12px}.tribe-common .tribe-common-c-svgicon--search{width:16px}.tribe-common .tribe-common-c-svgicon--location{width:10px}.tribe-common .tribe-common-c-svgicon--day,.tribe-common .tribe-common-c-svgicon--map,.tribe-common .tribe-common-c-svgicon--month,.tribe-common .tribe-common-c-svgicon--photo,.tribe-common .tribe-common-c-svgicon--week{height:100%;width:100%}.tribe-common .tribe-common-c-svgicon--close-alt path,.tribe-common .tribe-common-c-svgicon--close path{stroke:currentColor}.tribe-common .tribe-common-c-svgicon--mail,.tribe-common .tribe-common-c-svgicon--map-pin,.tribe-common .tribe-common-c-svgicon--messages-not-found g,.tribe-common .tribe-common-c-svgicon--no-map,.tribe-common .tribe-common-c-svgicon--phone,.tribe-common .tribe-common-c-svgicon--virtual g,.tribe-common .tribe-common-c-svgicon--website{fill:none}.tribe-common .tribe-common-c-svgicon--messages-not-found{width:22px}.tribe-common .tribe-common-c-svgicon--messages-not-found path{stroke:currentColor}.tribe-common .tribe-common-c-svgicon--error{width:18px}.tribe-common .tribe-common-c-svgicon--error g,.tribe-common .tribe-common-c-svgicon--reset path{fill:none}.tribe-common .tribe-common-c-svgicon__svg-fill{fill:currentColor}.tribe-common .tribe-common-c-svgicon__svg-stroke{stroke:currentColor}
common/src/resources/css/tribe-common-admin.min.css CHANGED
@@ -1 +1 @@
1
- .invalid input{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}input::-moz-placeholder,textarea::-moz-placeholder{color:#999}input:-ms-input-placeholder,input::-ms-input-placeholder,textarea:-ms-input-placeholder,textarea::-ms-input-placeholder{color:#999}input::placeholder,textarea::placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.bubble{background-color:#f9f9f9;border:1px solid #dfdfdf;border-radius:3px;border-spacing:0;padding:10px}.tribe-sticky-tooltip{color:#bbb}td.tribe_message{padding-bottom:10px!important}#tribe_thanks{float:left;margin:5px 0 0;width:200px}.tribe_brand{font-family:Georgia,serif!important;font-size:17px!important;font-weight:400;margin:8px 0}.tribe-rating{color:#3d54ff}.tribe-rating:hover{color:#1c39bb}#tribe-upgrade{background:#f6f6f6;border:1px solid #ccc;border-radius:5px;margin:20px 0 30px;padding:0 20px 20px}#tribe-upgrade .message{background-color:#ffffe0;border:1px solid #e6db55;border-radius:3px;padding:6px 12px}table.plugins .tribe-plugin-update-message{background:#d54e21;color:#fff;display:inline-table;margin:6px 0;padding:10px 12px}table.plugins .tribe-plugin-update-message h4{display:inline;font-weight:700;margin-right:8px}table.plugins .tribe-plugin-update-message h4:after{content:" \00BB "}table.plugins .tribe-plugin-update-message a{color:#fff;text-decoration:underline}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{clear:both;display:inline-block;padding:10px 0}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form legend{float:left;font-weight:700;margin-right:20px;width:220px}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-wrap :first-child{margin-top:0}.tribe-settings-form .tribe-field-checkbox_list label,.tribe-settings-form .tribe-field-radio label{display:block;margin:5px 0 5px 20px;text-indent:-20px}.tribe-settings-form .tribe-field-checkbox_list label>p,.tribe-settings-form .tribe-field-radio label>p{text-indent:0;margin-left:1px}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.tribe-settings-form .tribe-settings-form-wrap #tribe-field-stylesheetOption .description{color:#999;margin-left:1px}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}#modern-tribe-info{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{margin:10px 0}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5}.ui-widget-shadow{background:#000;border-radius:5px;filter:Alpha(Opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page{max-width:850px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p{font-size:15px}p.tribe-update-message{font-size:18px;font-weight:400}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}a.tribe-rating-link{text-decoration:none}.tribe-update-links{margin-top:30px}.tribe_update_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-update-bar{display:inline-block}.tribe-update-bar .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-update-bar .progress .bar{background:#ffba00;height:1rem;width:1%;background:#7ad03a}#tribe-dialog-wrapper>div{padding:1rem}#tribe-dialog-wrapper>div .stage{display:none}#tribe-dialog-wrapper #heading{background:#fff}#tribe-dialog-wrapper label{display:block}#tribe-dialog-wrapper .select-single-container{border:1px solid #888;overflow-y:scroll;height:300px}#tribe-dialog-wrapper .select-single-container label{opacity:1;padding:3px 5px;transition:opacity .2s}#tribe-dialog-wrapper .select-single-container label:nth-child(odd){background:#fff}#tribe-dialog-wrapper .select-single-container label.selected{background:#0073aa;color:#fff;font-weight:700}#tribe-dialog-wrapper .select-single-container label input{display:none}#tribe-dialog-wrapper .select-single-container.updating label{opacity:.35;transition:opacity .2s}.ui-front{z-index:1000000}.wp-list-table.plugins .column-description .update-message{color:#d54e21}.api-check{padding:1em;min-height:100px}.api-check+.notice-dismiss:hover:before{color:#fff}.api-check:after,.api-check:before{content:"";display:table}.api-check:after{clear:both}.api-check .tribe-mascot{bottom:0;display:none;padding:0 1rem 0 0;position:absolute;right:0;top:0}.api-check .tribe-mascot img{display:inline-block;max-height:150px;max-width:150px;height:100%;width:auto;vertical-align:middle}.api-check p{line-height:1.7;margin-bottom:1em}.api-check a{text-decoration:none}.api-check a:hover{text-decoration:underline}.api-check .plugin-list{display:inline;font-weight:600;margin:0;padding:0}.api-check .plugin-list span.plugin-invalid:after{content:", "}.api-check .plugin-list span.plugin-invalid:last-of-type:after{content:""}.tribe-marketing-notice{padding:1em}.tribe-marketing-notice+.notice-dismiss:hover:before{color:#fff}.tribe-marketing-notice:after,.tribe-marketing-notice:before{content:"";display:table}.tribe-marketing-notice:after{clear:both}.tribe-marketing-notice .tribe-marketing-notice__icon{display:none;flex-shrink:0;padding:0;position:static}.tribe-marketing-notice .tribe-marketing-notice__icon img{display:inline-block;max-height:100%;max-width:none;vertical-align:middle;width:100%}.tribe-marketing-notice h3{margin-bottom:.5em;margin-top:.5em}.tribe-marketing-notice p{line-height:1.7;margin-bottom:.5em}.tribe-marketing-notice a{text-decoration:none}.tribe-marketing-notice a:hover{text-decoration:underline}#wpcontent .notice-tribe-banner{align-items:center;background:#161b7d;border:0;box-shadow:none;display:flex;justify-content:flex-start;margin:0 0 16px;padding-right:0}.notice-tribe-banner .tribe-marketing-notice__icon{width:47px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:0;padding:1em 0}.notice-tribe-banner h3{color:#fff;display:block;font-size:.875rem;line-height:1.25;margin:0 0 .25rem}.notice-tribe-banner a{border-bottom:1px solid #fff;line-height:1.25;margin:0;text-decoration:none}.notice-tribe-banner a:hover{text-decoration:none}.notice-tribe-banner a,.notice-tribe-banner p{color:#fff;display:inline-block;font-size:.875rem;line-height:1.25}.notice-tribe-banner p{display:inline-block;margin:0;padding:0}.notice-tribe-banner .tribe-marketing-notice{align-items:center;display:flex;justify-content:flex-start;margin:0 auto;min-height:65px;padding:0 .75rem;width:100%}.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe-welcome .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:100%}.notice-tribe-banner .notice-dismiss{position:static}.notice-tribe-banner .notice-dismiss:before{color:#eaf1ff}.tribe-dropdown,.tribe-ea-dropdown{max-width:100%;width:auto}.tribe-dropdown.select2-container .selection,.tribe-ea-dropdown.select2-container .selection{margin-top:inherit}.tribe-dropdown .select2-selection--single,.tribe-ea-dropdown .select2-selection--single{height:32px}.tribe-dropdown .select2-selection--single .select2-selection__clear,.tribe-ea-dropdown .select2-selection--single .select2-selection__clear{line-height:28px}.tribe-dropdown .select2-selection--single .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--single .select2-selection__rendered{line-height:32px;padding-right:28px}.tribe-dropdown.select2-container--focus .select2-selection--single,.tribe-ea-dropdown.select2-container--focus .select2-selection--single{border-color:#5897fb;box-shadow:0 0 5px rgba(0,0,0,.1)}.tribe-dropdown.select2-container--open .select2-search__field,.tribe-ea-dropdown.select2-container--open .select2-search__field{padding:0}.tribe-dropdown.select2-container--open .select2-dropdown--below,.tribe-ea-dropdown.select2-container--open .select2-dropdown--below{margin-top:-1px;border-top:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-dropdown--above,.tribe-ea-dropdown.select2-container--open .select2-dropdown--above{margin-bottom:-16px;border-bottom:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-selection--single,.tribe-ea-dropdown.select2-container--open .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:#aaa}.tribe-dropdown.select2-container--open .select2-selection__arrow b,.tribe-ea-dropdown.select2-container--open .select2-selection__arrow b{transform:rotate(180deg)}.tribe-dropdown.select2-selection--single,.tribe-ea-dropdown.select2-selection--single{background-image:none;border-radius:3px;border:1px solid #ccc;overflow:hidden}.tribe-dropdown.select2-selection--single>.select2-selection__rendered,.tribe-ea-dropdown.select2-selection--single>.select2-selection__rendered{white-space:normal}.tribe-dropdown.select2-selection--single .select2-selection__arrow,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow{background-image:none;background:transparent;border-left:0;top:2px;width:26px}.tribe-dropdown.select2-selection--single .select2-selection__arrow b,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow b{background:#fff url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E") no-repeat right 5px top 55%;background-size:auto;background-size:16px 16px;border:0;top:0;bottom:0;left:0;right:0;display:block;width:auto;height:auto;margin:0;padding:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered{background-image:none;border-radius:3px;border:1px solid #ccc;min-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline{line-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input{padding-top:0;padding-bottom:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{margin-top:2px;padding-top:0;padding-bottom:0;line-height:19px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div{line-height:inherit}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove{top:3px;left:4px;transition-property:border,color}.select2-results .select2-results__option{color:#939393;font-weight:400;margin-bottom:0}.select2-results .select2-results__option[aria-disabled=true]{background-color:#e0e0e0}.select2-results.select2-results__option--highlighted{background-color:#efefef;color:#a1a1a1;cursor:default;display:block}.wp-core-ui .button-red{background-color:#a00;border-bottom-color:#8d1f21;border-color:#9b2124;box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red.hover,.wp-core-ui .button-red:focus,.wp-core-ui .button-red:hover{background-color:#a00;border-color:#7f1c1f;box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red:focus{border-color:#500f0e;box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .button-red.active,.wp-core-ui .button-red.active:focus,.wp-core-ui .button-red.active:hover,.wp-core-ui .button-red:active{background:#7f1c1f;border-color:#601312 #ae2426 #ae2426;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);color:hsla(0,0%,100%,.95);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red-disabled,.wp-core-ui .button-red:disabled,.wp-core-ui .button-red[disabled]{color:#e79496!important;background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.ticket_form .select2-container .select2-selection--single .select2-selection__arrow{display:none}.clear{zoom:1}.clear:after,.clear:before{content:" ";display:table}.clear:after{clear:both}.checkmark:after{content:"";display:block;width:8px;height:15px;border:solid #0ab152;border-width:0 3px 3px 0;transform:rotate(45deg)}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}body.tribe-welcome{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff}body.tribe-welcome .update-nag{display:none}body.tribe-welcome #wpcontent{padding:0}body.tribe-welcome .tribe_settings{margin:0}body.tribe-welcome #wpfooter,body.tribe-welcome .tribe_settings>h1{display:none}body.tribe-welcome #wpbody-content{padding-bottom:25px}body.tribe-welcome .tribe-dependency-error{display:none}.tribe-events-admin-content-wrapper{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;margin:0 auto;padding:20px;width:calc(100% - 40px)}.tribe-events-admin-card{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;display:block;margin:0 auto 36px;padding:27px;text-align:center}.tribe-events-admin-card--1up{width:100%}.tribe-events-admin-video{-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 0);-webkit-transform:rotate(.000001deg);border-radius:16px;height:200px;margin-bottom:72px;overflow:hidden}.tribe-events-admin-video iframe{width:100%}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:260px}.tribe-events-admin-card--3up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--3up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--promo-blue{background-color:#3d54ff;background-image:url(../images/welcome/promo.jpg)}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{color:#fff;font-size:16px;text-align:left;margin-bottom:16px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__title{text-align:left;color:#fff}.tribe-events-admin-graphic{position:absolute;top:106px;right:0;z-index:-1}.tribe-events-admin-graphic--desktop-only{display:none}.tribe-events-admin-graphic--mobile-only{display:block}.tribe-events-admin-card__form{position:relative}input[type=email].tribe-events-admin-card__input{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;font-size:14px;height:54px}input[type=email].tribe-events-admin-card__input::-webkit-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::-moz-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input:-ms-input-placeholder,input[type=email].tribe-events-admin-card__input::-ms-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}.tribe-events-admin-card__button{background-color:#fff;border:none;color:#3d54ff;font-size:14px;font-weight:700;letter-spacing:1px;line-height:16px;position:absolute;right:20px;text-transform:uppercase;top:17px}.tribe-events-admin-card__button:hover{color:#161b7d}.tribe-events-admin-card__description{color:#000;font-size:14px;font-style:normal;font-weight:400;line-height:22px;margin-top:16px}.tribe-events-admin-card__image{display:block;margin:0 auto;height:100px}.tribe-events-admin-card__link{color:#3d54ff;display:inline-block;font-size:16px;font-style:normal;font-weight:700;line-height:18px;margin-top:24px;position:relative;text-decoration:none}.tribe-events-admin-card__link:hover{color:#161b7d}.tribe-events-admin-card__link:after{border-style:solid;border-width:0 0 1px;bottom:-4px;content:"";left:0;position:absolute;width:100%}.tribe-events-admin-card__title{color:#0f1031;font-size:20px;font-weight:700;line-height:23px;margin:auto}.tribe-events-admin-card-grid{max-width:1048px}.tribe-events-admin-quick-nav{background:#fff;border-radius:16px;border:1px solid #e1e1e4;box-sizing:border-box;display:block;margin:40px 0 78px;padding:18px 23px 2px}.tribe-events-admin-quick-nav__link{color:#3d54ff;font-size:16px;font-weight:700;line-height:18px;text-align:center;text-decoration:none}.tribe-events-admin-quick-nav__link:hover{color:#161b7d}.tribe-events-admin-quick-nav__link-item{display:block;padding-bottom:19px}.tribe-events-admin-quick-nav__links{display:inline}.tribe-events-admin-quick-nav__title{color:rgba(15,16,49,.72);display:inline-block;font-size:14px;font-weight:400;line-height:16px;padding-bottom:14px;text-transform:uppercase}.tribe-events-admin-section-header{color:#000;font-size:24px;font-weight:700;line-height:28px;margin:21px 0 24px}.tribe-events-admin-title{padding-top:14px}.tribe-events-admin-title__description{color:#0f1031;font-size:16px;font-weight:400;line-height:24px;max-width:584px;padding-top:15px}.tribe-events-admin-title__heading{color:#0f1031;display:inline-block;font-size:24px;font-weight:700;line-height:28px;margin:5px 0 0}.tribe-events-admin-title__logo{margin-right:8px;vertical-align:top;width:34px}.tribe-events-admin-notice{background-color:#3d54ff;height:65px}.tribe-events-admin-notice .tribe-events-admin-content-wrapper{padding-top:8px;padding-bottom:0}.tribe-events-admin-notice p{color:#fff;display:inline-block;font-family:Helvetica;font-size:16px;line-height:18px;margin-top:0;padding-bottom:12px;padding-left:16px;vertical-align:middle;width:calc(100% - 60px)}.tribe-events-admin-notice__logo{display:inline-block}.tribe-events-admin-tickets .tribe-events-admin-section-header{font-size:28px;line-height:32px}.tribe-events-admin-tickets .tribe-events-admin-graphic--desktop-only{width:365px}.tribe-events-admin-tickets .tribe-events-admin-graphic--mobile-only{width:300px;top:230px}.tribe-events-admin-tickets .tribe-events-admin-title__heading{margin-top:0}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:4px;width:32px}body.tribe-welcome #fs_connect{border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;margin-left:22px;box-shadow:none}body.tribe-welcome #fs_connect .fs-actions{background-color:transparent}body.tribe-welcome #fs_connect .fs-permissions{border-top:1px solid #e1e1e4;margin:0 16px}body.tribe-welcome #fs_connect button{background-color:#3d54ff;border-color:#3d54ff}body.tribe-welcome #fs_connect .button-secondary{border-color:#3d54ff;color:#3d54ff;background:#fff}body.tribe-welcome #fs_connect a{color:#3d54ff}body.tribe-welcome #fs_connect a:focus{box-shadow:none;outline:none}body.tribe-welcome #fs_connect a:hover{color:#161b7d}@media only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){#tribe-loading span{background-image:url(../images/tribe-loading@2x.gif)}}@media screen and (max-width:782px){.tribe-half-column,.tribe-row .tribe-half-column:last-child{margin:0 0 20px;width:100%}input[type=email]{width:100%}}@media screen and (max-width:782px){.events-cal .subsubsub{float:none}.events-cal .search-box{width:98%}.events-cal #search-submit{width:100%}.events-cal .tablenav.top{display:none}}@media screen and (min-width:500px){.api-check .tribe-mascot{display:block}.api-check .notice-content{margin-right:180px}}@media screen and (min-width:320px){.tribe-marketing-notice .tribe-marketing-notice__icon{display:block}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-marketing-notice__content{margin-left:145px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px;padding:0}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-marketing-notice__content{margin-left:130px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px;padding:0}.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe-welcome .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:642px}}@media screen and (min-width:400px){.notice-tribe-banner .tribe-marketing-notice__icon{width:67px}}@media screen and (min-width:800px){.notice-tribe-banner h3{display:inline-block;font-size:1rem;margin:0 .5rem 0 0}.notice-tribe-banner a{line-height:1.5}.notice-tribe-banner a,.notice-tribe-banner p{font-size:1rem}.notice-tribe-banner p{margin:0 .5rem 0 0}.notice-tribe-banner .tribe-marketing-notice__cta{display:inline-block;margin-left:.5rem}}@media screen and (min-width:1215px){.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:992px}.tribe-welcome .notice-tribe-banner .tribe-marketing-notice{max-width:1036px}}@media screen and (min-width:710px){.tribe-events-admin-content-wrapper{width:670px}.tribe-events-admin-card--1up{display:inline-block;width:calc(50% - 18px);margin-left:32px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--1up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--2up{display:inline-block;width:calc(50% - 20px)}.tribe-events-admin-card--2up.tribe-events-admin-card--first{margin-right:36px}.tribe-events-admin-card--2up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--2up .tribe-events-admin-card__image{height:100px;margin-bottom:12px}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:340px;margin-bottom:27px}.tribe-events-admin-card--3up{display:inline-block;margin-bottom:32px;width:calc(50% - 18px)}.tribe-events-admin-card--3up.tribe-events-admin-card--first{margin-right:32px}.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:0}.tribe-events-admin-card--promo-blue{display:block;margin-left:0;min-height:170px;width:100%}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{float:left;max-width:300px}.tribe-events-admin-graphic{top:0;max-width:250px}.tribe-events-admin-graphic--desktop-only{display:block}.tribe-events-admin-graphic--mobile-only{display:none}.tribe-events-admin-card__form{float:right;width:300px}input[type=email].tribe-events-admin-card__input{width:300px}.tribe-events-admin-card__title{font-size:20px;line-height:23px}.tribe-events-admin-section-header{font-size:28px;line-height:32px;margin-bottom:21px}.tribe-events-admin-title{padding-top:50px}.tribe-events-admin-title__description{padding-top:15px}.tribe-events-admin-title__heading{font-size:48px;line-height:55px;margin:0}.tribe-events-admin-title__logo{margin-right:14px;padding-top:5px;width:40px}.tribe-events-admin-tickets .tribe-events-admin-card__title{font-size:18px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{font-size:18px;height:66px}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:8px;padding-top:4px;width:60px}}@media screen and (min-width:1217px){.tribe-events-admin-content-wrapper{width:100%;max-width:1060px}.tribe-events-admin-card--1up{margin:0 0 36px;padding:33px 44px 30px;text-align:left;width:1012px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:auto}.tribe-events-admin-card--1up .tribe-events-admin-card__image{float:left;margin:0 48px 10px 0}.tribe-events-admin-card--2up{margin-right:36px;width:486px}.tribe-events-admin-card--3up{width:310px}.tribe-events-admin-card--3up.tribe-events-admin-card--first,.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:36px}.tribe-events-admin-card--3up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--promo-blue{min-height:150px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{max-width:450px}.tribe-events-admin-graphic{max-width:none}.tribe-events-admin-card__form,input[type=email].tribe-events-admin-card__input{width:365px}.tribe-events-admin-quick-nav{display:inline-block;border-radius:100px;margin:24px 0 94px;max-width:1010px;padding:0 36px 0 0;height:54px}.tribe-events-admin-quick-nav__link-item{display:inline-block;padding:18px 10px 0}.tribe-events-admin-quick-nav__title{padding:19px 6px 17px 32px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{height:auto}}
1
+ .invalid input{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}input::-moz-placeholder,textarea::-moz-placeholder{color:#999}input:-ms-input-placeholder,input::-ms-input-placeholder,textarea:-ms-input-placeholder,textarea::-ms-input-placeholder{color:#999}input::placeholder,textarea::placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.bubble{background-color:#f9f9f9;border:1px solid #dfdfdf;border-radius:3px;border-spacing:0;padding:10px}.tribe-sticky-tooltip{color:#bbb}td.tribe_message{padding-bottom:10px!important}#tribe_thanks{float:left;margin:5px 0 0;width:200px}.tribe_brand{font-family:Georgia,serif!important;font-size:17px!important;font-weight:400;margin:8px 0}.tribe-rating{color:#3d54ff}.tribe-rating:hover{color:#1c39bb}#tribe-upgrade{background:#f6f6f6;border:1px solid #ccc;border-radius:5px;margin:20px 0 30px;padding:0 20px 20px}#tribe-upgrade .message{background-color:#ffffe0;border:1px solid #e6db55;border-radius:3px;padding:6px 12px}table.plugins .tribe-plugin-update-message{background:#d54e21;color:#fff;display:inline-table;margin:6px 0;padding:10px 12px}table.plugins .tribe-plugin-update-message h4{display:inline;font-weight:700;margin-right:8px}table.plugins .tribe-plugin-update-message h4:after{content:" \00BB "}table.plugins .tribe-plugin-update-message a{color:#fff;text-decoration:underline}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{clear:both;display:inline-block;padding:10px 0}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form legend{float:left;font-weight:700;margin-right:20px;width:220px}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-wrap :first-child{margin-top:0}.tribe-settings-form .tribe-field-checkbox_list label,.tribe-settings-form .tribe-field-radio label{display:block;margin:5px 0 5px 20px;text-indent:-20px}.tribe-settings-form .tribe-field-checkbox_list label>p,.tribe-settings-form .tribe-field-radio label>p{text-indent:0;margin-left:1px}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.tribe-settings-form .tribe-settings-form-wrap #tribe-field-stylesheetOption .description{color:#999;margin-left:1px}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}#modern-tribe-info{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{margin:10px 0}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5}.ui-widget-shadow{background:#000;border-radius:5px;filter:Alpha(Opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page{max-width:850px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p{font-size:15px}p.tribe-update-message{font-size:18px;font-weight:400}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}a.tribe-rating-link{text-decoration:none}.tribe-update-links{margin-top:30px}.tribe_update_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-events-widget-admin-form__input-section p{margin:0}.tribe-events-widget-admin-form__input-section h4{margin:.5em 0}.tribe-update-bar{display:inline-block}.tribe-update-bar .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-update-bar .progress .bar{background:#ffba00;height:1rem;width:1%;background:#7ad03a}#tribe-dialog-wrapper>div{padding:1rem}#tribe-dialog-wrapper>div .stage{display:none}#tribe-dialog-wrapper #heading{background:#fff}#tribe-dialog-wrapper label{display:block}#tribe-dialog-wrapper .select-single-container{border:1px solid #888;overflow-y:scroll;height:300px}#tribe-dialog-wrapper .select-single-container label{opacity:1;padding:3px 5px;transition:opacity .2s}#tribe-dialog-wrapper .select-single-container label:nth-child(odd){background:#fff}#tribe-dialog-wrapper .select-single-container label.selected{background:#0073aa;color:#fff;font-weight:700}#tribe-dialog-wrapper .select-single-container label input{display:none}#tribe-dialog-wrapper .select-single-container.updating label{opacity:.35;transition:opacity .2s}.ui-front{z-index:1000000}.wp-list-table.plugins .column-description .update-message{color:#d54e21}.api-check{padding:1em;min-height:100px}.api-check+.notice-dismiss:hover:before{color:#fff}.api-check:after,.api-check:before{content:"";display:table}.api-check:after{clear:both}.api-check .tribe-mascot{bottom:0;display:none;padding:0 1rem 0 0;position:absolute;right:0;top:0}.api-check .tribe-mascot img{display:inline-block;max-height:150px;max-width:150px;height:100%;width:auto;vertical-align:middle}.api-check p{line-height:1.7;margin-bottom:1em}.api-check a{text-decoration:none}.api-check a:hover{text-decoration:underline}.api-check .plugin-list{display:inline;font-weight:600;margin:0;padding:0}.api-check .plugin-list span.plugin-invalid:after{content:", "}.api-check .plugin-list span.plugin-invalid:last-of-type:after{content:""}.tribe-marketing-notice{padding:1em}.tribe-marketing-notice+.notice-dismiss:hover:before{color:#fff}.tribe-marketing-notice:after,.tribe-marketing-notice:before{content:"";display:table}.tribe-marketing-notice:after{clear:both}.tribe-marketing-notice .tribe-marketing-notice__icon{display:none;flex-shrink:0;padding:0;position:static}.tribe-marketing-notice .tribe-marketing-notice__icon img{display:inline-block;max-height:100%;max-width:none;vertical-align:middle;width:100%}.tribe-marketing-notice h3{margin-bottom:.5em;margin-top:.5em}.tribe-marketing-notice p{line-height:1.7;margin-bottom:.5em}.tribe-marketing-notice a{text-decoration:none}.tribe-marketing-notice a:hover{text-decoration:underline}#wpcontent .notice-tribe-banner{align-items:center;background:#161b7d;border:0;box-shadow:none;display:flex;justify-content:flex-start;margin:0 0 16px;padding-right:0}.notice-tribe-banner .tribe-marketing-notice__icon{width:47px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:0;padding:1em 0}.notice-tribe-banner h3{color:#fff;display:block;font-size:.875rem;line-height:1.25;margin:0 0 .25rem}.notice-tribe-banner a{border-bottom:1px solid #fff;line-height:1.25;margin:0;text-decoration:none}.notice-tribe-banner a:hover{text-decoration:none}.notice-tribe-banner a,.notice-tribe-banner p{color:#fff;display:inline-block;font-size:.875rem;line-height:1.25}.notice-tribe-banner p{display:inline-block;margin:0;padding:0}.notice-tribe-banner .tribe-marketing-notice{align-items:center;display:flex;justify-content:flex-start;margin:0 auto;min-height:65px;padding:0 .75rem;width:100%}.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe-welcome .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:100%}.notice-tribe-banner .notice-dismiss{position:static}.notice-tribe-banner .notice-dismiss:before{color:#eaf1ff}.tribe-dropdown,.tribe-ea-dropdown{max-width:100%;width:auto}.tribe-dropdown.select2-container .selection,.tribe-ea-dropdown.select2-container .selection{margin-top:inherit}.tribe-dropdown .select2-selection--single,.tribe-ea-dropdown .select2-selection--single{height:32px}.tribe-dropdown .select2-selection--single .select2-selection__clear,.tribe-ea-dropdown .select2-selection--single .select2-selection__clear{line-height:28px}.tribe-dropdown .select2-selection--single .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--single .select2-selection__rendered{line-height:32px;padding-right:28px}.tribe-dropdown.select2-container--focus .select2-selection--single,.tribe-ea-dropdown.select2-container--focus .select2-selection--single{border-color:#5897fb;box-shadow:0 0 5px rgba(0,0,0,.1)}.tribe-dropdown.select2-container--open .select2-search__field,.tribe-ea-dropdown.select2-container--open .select2-search__field{padding:0}.tribe-dropdown.select2-container--open .select2-dropdown--below,.tribe-ea-dropdown.select2-container--open .select2-dropdown--below{margin-top:-1px;border-top:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-dropdown--above,.tribe-ea-dropdown.select2-container--open .select2-dropdown--above{margin-bottom:-16px;border-bottom:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-selection--single,.tribe-ea-dropdown.select2-container--open .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:#aaa}.tribe-dropdown.select2-container--open .select2-selection__arrow b,.tribe-ea-dropdown.select2-container--open .select2-selection__arrow b{transform:rotate(180deg)}.tribe-dropdown.select2-selection--single,.tribe-ea-dropdown.select2-selection--single{background-image:none;border-radius:3px;border:1px solid #ccc;overflow:hidden}.tribe-dropdown.select2-selection--single>.select2-selection__rendered,.tribe-ea-dropdown.select2-selection--single>.select2-selection__rendered{white-space:normal}.tribe-dropdown.select2-selection--single .select2-selection__arrow,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow{background-image:none;background:transparent;border-left:0;top:2px;width:26px}.tribe-dropdown.select2-selection--single .select2-selection__arrow b,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow b{background:#fff url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E") no-repeat right 5px top 55%;background-size:auto;background-size:16px 16px;border:0;top:0;bottom:0;left:0;right:0;display:block;width:auto;height:auto;margin:0;padding:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered{background-image:none;border-radius:3px;border:1px solid #ccc;min-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline{line-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input{padding-top:0;padding-bottom:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{margin-top:2px;padding-top:0;padding-bottom:0;line-height:19px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div{line-height:inherit}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove{top:3px;left:4px;transition-property:border,color}.select2-results .select2-results__option{color:#939393;font-weight:400;margin-bottom:0}.select2-results .select2-results__option[aria-disabled=true]{background-color:#e0e0e0}.select2-results.select2-results__option--highlighted{background-color:#efefef;color:#a1a1a1;cursor:default;display:block}.wp-core-ui .button-red{background-color:#a00;border-bottom-color:#8d1f21;border-color:#9b2124;box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red.hover,.wp-core-ui .button-red:focus,.wp-core-ui .button-red:hover{background-color:#a00;border-color:#7f1c1f;box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red:focus{border-color:#500f0e;box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .button-red.active,.wp-core-ui .button-red.active:focus,.wp-core-ui .button-red.active:hover,.wp-core-ui .button-red:active{background:#7f1c1f;border-color:#601312 #ae2426 #ae2426;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);color:hsla(0,0%,100%,.95);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red-disabled,.wp-core-ui .button-red:disabled,.wp-core-ui .button-red[disabled]{color:#e79496!important;background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.ticket_form .select2-container .select2-selection--single .select2-selection__arrow{display:none}.clear{zoom:1}.clear:after,.clear:before{content:" ";display:table}.clear:after{clear:both}.checkmark:after{content:"";display:block;width:8px;height:15px;border:solid #0ab152;border-width:0 3px 3px 0;transform:rotate(45deg)}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}body.tribe-welcome{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff}body.tribe-welcome .update-nag{display:none}body.tribe-welcome #wpcontent{padding:0}body.tribe-welcome .tribe_settings{margin:0}body.tribe-welcome #wpfooter,body.tribe-welcome .tribe_settings>h1{display:none}body.tribe-welcome #wpbody-content{padding-bottom:25px}body.tribe-welcome .tribe-dependency-error{display:none}.tribe-events-admin-content-wrapper{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;margin:0 auto;padding:20px;width:calc(100% - 40px)}.tribe-events-admin-card{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;display:block;margin:0 auto 36px;padding:27px;text-align:center}.tribe-events-admin-card--1up{width:100%}.tribe-events-admin-video{-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 0);-webkit-transform:rotate(.000001deg);border-radius:16px;height:200px;margin-bottom:72px;overflow:hidden}.tribe-events-admin-video iframe{width:100%}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:260px}.tribe-events-admin-card--3up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--3up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--promo-blue{background-color:#3d54ff;background-image:url(../images/welcome/promo.jpg)}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{color:#fff;font-size:16px;text-align:left;margin-bottom:16px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__title{text-align:left;color:#fff}.tribe-events-admin-graphic{position:absolute;top:106px;right:0;z-index:-1}.tribe-events-admin-graphic--desktop-only{display:none}.tribe-events-admin-graphic--mobile-only{display:block}.tribe-events-admin-card__form{position:relative}input[type=email].tribe-events-admin-card__input{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;font-size:14px;height:54px}input[type=email].tribe-events-admin-card__input::-webkit-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::-moz-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input:-ms-input-placeholder,input[type=email].tribe-events-admin-card__input::-ms-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}.tribe-events-admin-card__button{background-color:#fff;border:none;color:#3d54ff;font-size:14px;font-weight:700;letter-spacing:1px;line-height:16px;position:absolute;right:20px;text-transform:uppercase;top:17px}.tribe-events-admin-card__button:hover{color:#161b7d}.tribe-events-admin-card__description{color:#000;font-size:14px;font-style:normal;font-weight:400;line-height:22px;margin-top:16px}.tribe-events-admin-card__image{display:block;margin:0 auto;height:100px}.tribe-events-admin-card__link{color:#3d54ff;display:inline-block;font-size:16px;font-style:normal;font-weight:700;line-height:18px;margin-top:24px;position:relative;text-decoration:none}.tribe-events-admin-card__link:hover{color:#161b7d}.tribe-events-admin-card__link:after{border-style:solid;border-width:0 0 1px;bottom:-4px;content:"";left:0;position:absolute;width:100%}.tribe-events-admin-card__title{color:#0f1031;font-size:20px;font-weight:700;line-height:23px;margin:auto}.tribe-events-admin-card-grid{max-width:1048px}.tribe-events-admin-quick-nav{background:#fff;border-radius:16px;border:1px solid #e1e1e4;box-sizing:border-box;display:block;margin:40px 0 78px;padding:18px 23px 2px}.tribe-events-admin-quick-nav__link{color:#3d54ff;font-size:16px;font-weight:700;line-height:18px;text-align:center;text-decoration:none}.tribe-events-admin-quick-nav__link:hover{color:#161b7d}.tribe-events-admin-quick-nav__link-item{display:block;padding-bottom:19px}.tribe-events-admin-quick-nav__links{display:inline}.tribe-events-admin-quick-nav__title{color:rgba(15,16,49,.72);display:inline-block;font-size:14px;font-weight:400;line-height:16px;padding-bottom:14px;text-transform:uppercase}.tribe-events-admin-section-header{color:#000;font-size:24px;font-weight:700;line-height:28px;margin:21px 0 24px}.tribe-events-admin-title{padding-top:14px}.tribe-events-admin-title__description{color:#0f1031;font-size:16px;font-weight:400;line-height:24px;max-width:584px;padding-top:15px}.tribe-events-admin-title__heading{color:#0f1031;display:inline-block;font-size:24px;font-weight:700;line-height:28px;margin:5px 0 0}.tribe-events-admin-title__logo{margin-right:8px;vertical-align:top;width:34px}.tribe-events-admin-notice{background-color:#3d54ff;height:65px}.tribe-events-admin-notice .tribe-events-admin-content-wrapper{padding-top:8px;padding-bottom:0}.tribe-events-admin-notice p{color:#fff;display:inline-block;font-family:Helvetica;font-size:16px;line-height:18px;margin-top:0;padding-bottom:12px;padding-left:16px;vertical-align:middle;width:calc(100% - 60px)}.tribe-events-admin-notice__logo{display:inline-block}.tribe-events-admin-tickets .tribe-events-admin-section-header{font-size:28px;line-height:32px}.tribe-events-admin-tickets .tribe-events-admin-graphic--desktop-only{width:365px}.tribe-events-admin-tickets .tribe-events-admin-graphic--mobile-only{width:300px;top:230px}.tribe-events-admin-tickets .tribe-events-admin-title__heading{margin-top:0}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:4px;width:32px}body.tribe-welcome #fs_connect{border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;margin-left:22px;box-shadow:none}body.tribe-welcome #fs_connect .fs-actions{background-color:transparent}body.tribe-welcome #fs_connect .fs-permissions{border-top:1px solid #e1e1e4;margin:0 16px}body.tribe-welcome #fs_connect button{background-color:#3d54ff;border-color:#3d54ff}body.tribe-welcome #fs_connect .button-secondary{border-color:#3d54ff;color:#3d54ff;background:#fff}body.tribe-welcome #fs_connect a{color:#3d54ff}body.tribe-welcome #fs_connect a:focus{box-shadow:none;outline:none}body.tribe-welcome #fs_connect a:hover{color:#161b7d}@media only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){#tribe-loading span{background-image:url(../images/tribe-loading@2x.gif)}}@media screen and (max-width:782px){.tribe-half-column,.tribe-row .tribe-half-column:last-child{margin:0 0 20px;width:100%}input[type=email]{width:100%}}@media screen and (max-width:782px){.events-cal .subsubsub{float:none}.events-cal .search-box{width:98%}.events-cal #search-submit{width:100%}.events-cal .tablenav.top{display:none}}@media screen and (min-width:500px){.api-check .tribe-mascot{display:block}.api-check .notice-content{margin-right:180px}}@media screen and (min-width:320px){.tribe-marketing-notice .tribe-marketing-notice__icon{display:block}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-marketing-notice__content{margin-left:145px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px;padding:0}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-marketing-notice__content{margin-left:130px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px;padding:0}.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe-welcome .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:642px}}@media screen and (min-width:400px){.notice-tribe-banner .tribe-marketing-notice__icon{width:67px}}@media screen and (min-width:800px){.notice-tribe-banner h3{display:inline-block;font-size:1rem;margin:0 .5rem 0 0}.notice-tribe-banner a{line-height:1.5}.notice-tribe-banner a,.notice-tribe-banner p{font-size:1rem}.notice-tribe-banner p{margin:0 .5rem 0 0}.notice-tribe-banner .tribe-marketing-notice__cta{display:inline-block;margin-left:.5rem}}@media screen and (min-width:1215px){.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:992px}.tribe-welcome .notice-tribe-banner .tribe-marketing-notice{max-width:1036px}}@media screen and (min-width:710px){.tribe-events-admin-content-wrapper{width:670px}.tribe-events-admin-card--1up{display:inline-block;width:calc(50% - 18px);margin-left:32px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--1up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--2up{display:inline-block;width:calc(50% - 20px)}.tribe-events-admin-card--2up.tribe-events-admin-card--first{margin-right:36px}.tribe-events-admin-card--2up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--2up .tribe-events-admin-card__image{height:100px;margin-bottom:12px}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:340px;margin-bottom:27px}.tribe-events-admin-card--3up{display:inline-block;margin-bottom:32px;width:calc(50% - 18px)}.tribe-events-admin-card--3up.tribe-events-admin-card--first{margin-right:32px}.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:0}.tribe-events-admin-card--promo-blue{display:block;margin-left:0;min-height:170px;width:100%}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{float:left;max-width:300px}.tribe-events-admin-graphic{top:0;max-width:250px}.tribe-events-admin-graphic--desktop-only{display:block}.tribe-events-admin-graphic--mobile-only{display:none}.tribe-events-admin-card__form{float:right;width:300px}input[type=email].tribe-events-admin-card__input{width:300px}.tribe-events-admin-card__title{font-size:20px;line-height:23px}.tribe-events-admin-section-header{font-size:28px;line-height:32px;margin-bottom:21px}.tribe-events-admin-title{padding-top:50px}.tribe-events-admin-title__description{padding-top:15px}.tribe-events-admin-title__heading{font-size:48px;line-height:55px;margin:0}.tribe-events-admin-title__logo{margin-right:14px;padding-top:5px;width:40px}.tribe-events-admin-tickets .tribe-events-admin-card__title{font-size:18px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{font-size:18px;height:66px}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:8px;padding-top:4px;width:60px}}@media screen and (min-width:1217px){.tribe-events-admin-content-wrapper{width:100%;max-width:1060px}.tribe-events-admin-card--1up{margin:0 0 36px;padding:33px 44px 30px;text-align:left;width:1012px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:auto}.tribe-events-admin-card--1up .tribe-events-admin-card__image{float:left;margin:0 48px 10px 0}.tribe-events-admin-card--2up{margin-right:36px;width:486px}.tribe-events-admin-card--3up{width:310px}.tribe-events-admin-card--3up.tribe-events-admin-card--first,.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:36px}.tribe-events-admin-card--3up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--promo-blue{min-height:150px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{max-width:450px}.tribe-events-admin-graphic{max-width:none}.tribe-events-admin-card__form,input[type=email].tribe-events-admin-card__input{width:365px}.tribe-events-admin-quick-nav{display:inline-block;border-radius:100px;margin:24px 0 94px;max-width:1010px;padding:0 36px 0 0;height:54px}.tribe-events-admin-quick-nav__link-item{display:inline-block;padding:18px 10px 0}.tribe-events-admin-quick-nav__title{padding:19px 6px 17px 32px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{height:auto}}
common/src/resources/images/mascot.png CHANGED
Binary file
common/src/resources/js/admin-log-controls.js CHANGED
@@ -59,7 +59,7 @@ var tribe_logger_data = tribe_logger_data || {};
59
  function on_success( data ) {
60
  unfreeze();
61
 
62
- if ( $.isArray( data.data.entries ) ) {
63
  $viewer.html( to_table( data.data.entries ) );
64
  update_download_link();
65
  }
@@ -100,7 +100,7 @@ var tribe_logger_data = tribe_logger_data || {};
100
  var matches = url.match(/&log=([a-z0-9\-]+)/i);
101
 
102
  // Update or add the log parameter
103
- if ( $.isArray( matches ) && 2 === matches.length ) {
104
  url = url.replace( matches[0], '&log=' + log );
105
  } else if ( url.indexOf( '?' ) ) {
106
  url = url + '&log=' + log;
@@ -172,5 +172,5 @@ var tribe_logger_data = tribe_logger_data || {};
172
  current_engine = get_current_engine();
173
 
174
  update_download_link();
175
- $options.change( update );
176
  } )( jQuery, tribe_logger_admin );
59
  function on_success( data ) {
60
  unfreeze();
61
 
62
+ if ( Array.isArray( data.data.entries ) ) {
63
  $viewer.html( to_table( data.data.entries ) );
64
  update_download_link();
65
  }
100
  var matches = url.match(/&log=([a-z0-9\-]+)/i);
101
 
102
  // Update or add the log parameter
103
+ if ( Array.isArray( matches ) && 2 === matches.length ) {
104
  url = url.replace( matches[0], '&log=' + log );
105
  } else if ( url.indexOf( '?' ) ) {
106
  url = url + '&log=' + log;
172
  current_engine = get_current_engine();
173
 
174
  update_download_link();
175
+ $options.on( 'change', update );
176
  } )( jQuery, tribe_logger_admin );
common/src/resources/js/admin-log-controls.min.js CHANGED
@@ -1 +1 @@
1
- var tribe_logger_admin=tribe_logger_admin||{},tribe_logger_data=tribe_logger_data||{};!function(e,t){var r=!1,n="",a="",o=!1,i=e("#tribe-log-controls"),l=i.find("select"),d=i.find(".working"),g=e("#tribe-log-viewer"),c=e("a.download_log");function s(t){v(),e.isArray(t.data.entries)&&(g.html(function(e){var t="<table>";for(var r in e){for(var n in t+="<tr>",e[r])t+="<td>"+e[r][n]+"</td>";t+="</tr>"}return t+"</table>"}(t.data.entries)),f())}function f(){if(!(1>c.length)){var t=c.attr("href"),r=encodeURI(_()),n=t.match(/&log=([a-z0-9\-]+)/i);t=e.isArray(n)&&2===n.length?t.replace(n[0],"&log="+r):t.indexOf("?")?t+"&log="+r:t+"?log="+r,c.attr("href",t)}}function u(){v()}function v(){r=!1,l.prop("disabled",!1),d.addClass("hidden")}function _(){return e("#log-selector").find(":selected").attr("name")}function b(){return e("#log-engine").find(":selected").attr("name")}n=_(),a=b(),f(),l.change(function(){var t,i;r||(t=_(),i=b(),t!==n||i!==a?(o=!0,n=t,a=i):o=!1,r=!0,l.prop("disabled",!0),d.removeClass("hidden"),g={action:"tribe_logging_controls",check:tribe_logger_data.check,"log-level":e("#log-level").find(":selected").attr("name"),"log-engine":e("#log-engine").find(":selected").attr("name")},o&&(g["log-view"]=n),e.ajax(ajaxurl,{method:"POST",success:s,error:u,dataType:"json",data:g}));var g})}(jQuery);
1
+ var tribe_logger_admin=tribe_logger_admin||{},tribe_logger_data=tribe_logger_data||{};!function(e,r){var t=!1,n="",a="",o=!1,i=e("#tribe-log-controls"),l=i.find("select"),d=i.find(".working"),g=e("#tribe-log-viewer"),c=e("a.download_log");function s(e){v(),Array.isArray(e.data.entries)&&(g.html(function(e){var r="<table>";for(var t in e){for(var n in r+="<tr>",e[t])r+="<td>"+e[t][n]+"</td>";r+="</tr>"}return r+"</table>"}(e.data.entries)),f())}function f(){if(!(1>c.length)){var e=c.attr("href"),r=encodeURI(_()),t=e.match(/&log=([a-z0-9\-]+)/i);e=Array.isArray(t)&&2===t.length?e.replace(t[0],"&log="+r):e.indexOf("?")?e+"&log="+r:e+"?log="+r,c.attr("href",e)}}function u(){v()}function v(){t=!1,l.prop("disabled",!1),d.addClass("hidden")}function _(){return e("#log-selector").find(":selected").attr("name")}function b(){return e("#log-engine").find(":selected").attr("name")}n=_(),a=b(),f(),l.on("change",function(){var r,i;t||(r=_(),i=b(),r!==n||i!==a?(o=!0,n=r,a=i):o=!1,t=!0,l.prop("disabled",!0),d.removeClass("hidden"),g={action:"tribe_logging_controls",check:tribe_logger_data.check,"log-level":e("#log-level").find(":selected").attr("name"),"log-engine":e("#log-engine").find(":selected").attr("name")},o&&(g["log-view"]=n),e.ajax(ajaxurl,{method:"POST",success:s,error:u,dataType:"json",data:g}));var g})}(jQuery);
common/src/resources/js/admin/help-page.js CHANGED
@@ -27,9 +27,12 @@ tribe.helpPage = tribe.helpPage || {};
27
  var button_text = tribe_system_info.clipboard_btn_text;
28
 
29
  //Prevent Button From Doing Anything Else
30
- $( '.system-info-copy-btn' ).click( function ( e ) {
31
- e.preventDefault();
32
- } );
 
 
 
33
 
34
  clipboard.on( 'success', function ( event ) {
35
  event.clearSelection();
27
  var button_text = tribe_system_info.clipboard_btn_text;
28
 
29
  //Prevent Button From Doing Anything Else
30
+ $( '.system-info-copy-btn' ).on(
31
+ 'click',
32
+ function ( e ) {
33
+ e.preventDefault();
34
+ }
35
+ );
36
 
37
  clipboard.on( 'success', function ( event ) {
38
  event.clearSelection();
common/src/resources/js/dependency.js CHANGED
@@ -9,7 +9,7 @@
9
  * active = the class we use to denote an "active" (not hidden & enabled) element
10
  * selector = the css selector for the dependency, must be an ID, includes the hash "#"
11
  * linked = data attribute for linked dependents mainly for radio buttons to
12
- * ensure they all get triggered togther
13
  */
14
  ( function( $, _, obj ) {
15
  'use strict';
9
  * active = the class we use to denote an "active" (not hidden & enabled) element
10
  * selector = the css selector for the dependency, must be an ID, includes the hash "#"
11
  * linked = data attribute for linked dependents mainly for radio buttons to
12
+ * ensure they all get triggered together
13
  */
14
  ( function( $, _, obj ) {
15
  'use strict';
common/src/resources/js/dropdowns.js CHANGED
@@ -153,7 +153,7 @@ var tribe_dropdowns = window.tribe_dropdowns || {};
153
  * @return {Object|boolean}
154
  */
155
  function find_item( description, haystack ) {
156
- if ( ! $.isArray( haystack ) ) {
157
  return false;
158
  }
159
 
@@ -168,7 +168,7 @@ var tribe_dropdowns = window.tribe_dropdowns || {};
168
  return possible_match;
169
  }
170
 
171
- if ( possible_match.hasOwnProperty( 'children' ) && $.isArray( possible_match.children ) ) {
172
  var subsearch = find_item( description, possible_match.children );
173
 
174
  if ( subsearch ) {
153
  * @return {Object|boolean}
154
  */
155
  function find_item( description, haystack ) {
156
+ if ( ! _.isArray( haystack ) ) {
157
  return false;
158
  }
159
 
168
  return possible_match;
169
  }
170
 
171
+ if ( possible_match.hasOwnProperty( 'children' ) && _.isArray( possible_match.children ) ) {
172
  var subsearch = find_item( description, possible_match.children );
173
 
174
  if ( subsearch ) {
common/src/resources/js/dropdowns.min.js CHANGED
@@ -1 +1 @@
1
- var tribe_dropdowns=window.tribe_dropdowns||{};!function(e,t,r){"use strict";t.selector={dropdown:".tribe-dropdown",created:".tribe-dropdown-created",searchField:".select2-search__field"},e.fn.tribe_dropdowns=function(){return t.dropdown(this,{}),this},t.freefrom_create_search_choice=function(t){var a=e.trim(t.term);if(""===a)return null;var o=this.options.options,s=o.$select;if(a.match(o.regexToken)&&(!s.is("[data-int]")||s.is("[data-int]")&&a.match(/\d+/))){var n={id:a,text:a,new:!0};return s.is("[data-create-choice-template]")&&(n.text=r.template(s.data("createChoiceTemplate"))({term:a})),n}return null},t.search_id=function(e){var t=void 0;return void 0!==e.id?t=e.id:void 0!==e.ID?t=e.ID:void 0!==e.value&&(t=e.value),void 0===e?void 0:t},t.matcher=function(a,o){if(""===e.trim(a.term))return o;if(void 0===o.text)return null;var s=e.trim(a.term),n=o.text,i=e(o.element).closest("select").data("dropdown"),d=-1!==n.toUpperCase().indexOf(s.toUpperCase());if(!d&&void 0!==i.tags){var c=r.where(i.tags,{text:n});if(i.tags.length>0&&r.isObject(c))d=-1!==t.search_id(c[0]).toUpperCase().indexOf(s.toUpperCase())}return d},t.init_selection=function(t,r){var a=t.is("[multiple]"),o=t.data("dropdown"),s=(t.data("isEmpty"),t.val().split(o.regexSplit)),n=[];if(e(s).each(function(r,a){var s=function t(r,a){if(!e.isArray(a))return!1;for(var o in a){var s=a[o];if(s.hasOwnProperty("id")&&s.id==r.id)return s;if(s.hasOwnProperty("text")&&s.text==r.text)return s;if(s.hasOwnProperty("children")&&e.isArray(s.children)){var n=t(r,s.children);if(n)return n}}return!1}({id:this,text:this},o.ajax?t.data("options"):o.data);s&&s.selected&&n.push(s)}),n.length&&a)r(n);else{if(!n.length)return void r(!1);r(n[0])}},t.getSelectClasses=function(e){var t=e.attr("class").split(/\s+/);return r.difference(t,["select2-hidden-accessible","hide-before-select2-init"])},t.element=function(a,o){var s,n=e(a);o=e.extend({},o);if(n.addClass(t.selector.created.className()),o.$select=n,o.dropdownAutoWidth=!0,o.width="resolve",o.containerCss={},n.is(":visible")&&(o.containerCss.display="inline-block",o.containerCss.position="relative"),o.dropdownCss={},o.dropdownCss.width="auto",n.is("[data-dropdown-css-width]")&&(o.dropdownCss.width=n.data("dropdown-css-width"),o.dropdownCss.width&&"false"!==o.dropdownCss.width||(delete o.dropdownCss.width,delete o.containerCss)),o.allowClear=!0,n.is("[data-prevent-clear]")&&(o.allowClear=!1),n.is("[data-searching-placeholder]")&&(o.formatSearching=n.data("searching-placeholder")),!n.is("[data-placeholder]")&&n.is("[placeholder]")&&(o.placeholder=n.attr("placeholder")),n.is("[data-options]")&&(o.data=n.data("options")),o.minimumResultsForSearch=10,n.is("[data-hide-search]")&&(o.minimumResultsForSearch=1/0),n.is("[data-force-search]")&&delete o.minimumResultsForSearch,n.is("[data-freeform]")&&(o.createTag=t.freefrom_create_search_choice,o.tags=!0,n.data("tags",!0)),n.is("[multiple]")&&(o.multiple=!0,n.is("[data-maximum-selection-size]")&&(o.maximumSelectionSize=n.data("maximum-selection-size")),n.is("data-separator")||n.data("separator",","),r.isArray(n.data("separator"))?o.tokenSeparators=n.data("separator"):o.tokenSeparators=[n.data("separator")],o.separator=n.data("separator"),o.regexSeparatorElements=["^("],o.regexSplitElements=["(?:"],e.each(o.tokenSeparators,function(e,t){o.regexSeparatorElements.push("[^"+t+"]+"),o.regexSplitElements.push("["+t+"]")}),o.regexSeparatorElements.push(")$"),o.regexSplitElements.push(")"),o.regexSeparatorString=o.regexSeparatorElements.join(""),o.regexSplitString=o.regexSplitElements.join(""),o.regexToken=new RegExp(o.regexSeparatorString,"ig"),o.regexSplit=new RegExp(o.regexSplitString,"ig")),n.is("[data-tags]")&&(o.tags=n.data("tags"),o.createSearchChoice=function(e,t){if(e.match(o.regexToken))return{id:e,text:e}},0===o.tags.length&&(o.formatNoMatches=function(){return n.attr("placeholder")})),n.is("[data-source]")){var i=n.data("source");o.data={results:[]},o.formatResult=function(t,r,a){return void 0!==t.breadcrumbs?e.merge(t.breadcrumbs,[t.text]).join(" &#187; "):t.text},o.ajax={dataType:"json",type:"POST",url:t.ajaxurl(),processResults:function(t,r,a){return e.isPlainObject(t)&&void 0!==t.success?e.isPlainObject(t.data)&&void 0!==t.data.results?t.success?t.data:("string"===e.type(t.data.message)?console.error(t.data.message):console.error("The Select2 search failed in some way... Verify the source."),{results:[]}):(console.error("We received a malformed results array, could not complete the Select2 Search."),{results:[]}):(console.error("We received a malformed Object, could not complete the Select2 Search."),{results:[]})}},o.ajax.data=function(e,t){return{action:"tribe_dropdown",source:i,search:e,page:t,args:n.data("source-args")}}}n.is("[data-attach-container]")&&(n.is("[multiple]")?(e.fn.select2.amd.define("AttachedDropdownAdapter",["select2/utils","select2/dropdown","select2/dropdown/attachContainer"],function(e,t,r){return e.Decorate(t,r)}),o.dropdownAdapter=e.fn.select2.amd.require("AttachedDropdownAdapter")):(e.fn.select2.amd.define("AttachedWithSearchDropdownAdapter",["select2/utils","select2/dropdown","select2/dropdown/search","select2/dropdown/minimumResultsForSearch","select2/dropdown/attachContainer"],function(e,t,r,a,o){var s=e.Decorate(t,o);return s=e.Decorate(s,r),s=e.Decorate(s,a)}),o.dropdownAdapter=e.fn.select2.amd.require("AttachedWithSearchDropdownAdapter"))),n.data("dropdown",o),(s=n.select2(o)).data("select2").$container.addClass(t.getSelectClasses(n).join(" ")),s.data("select2").$container.removeClass("hide-before-select2-init"),s.on("select2:open",t.action_select2_open)},t.ajaxurl=function(){return void 0!==window.ajaxurl?window.ajaxurl:"undefined"!=typeof TEC&&void 0!==TEC.ajaxurl?TEC.ajaxurl:void console.error("Dropdowns framework cannot properly do an AJAX request without the WordPress `ajaxurl` variable setup.")},t.action_select2_open=function(r){var a=e(this),o=(a.data("dropdown"),a.data("select2")),s=o.$dropdown.find(t.selector.searchField);o.$dropdown.addClass(t.selector.dropdown.className()),a.is("[data-search-placeholder]")&&s.attr("placeholder",a.data("searchPlaceholder"))},t.dropdown=function(e,r){var a=e.not(".select2-offscreen, .select2-container, "+t.selector.created.className());return 0===a.length?a:(r||(r={}),a.each(function(e,a){t.element(a,r)}),a)},e(function(){e(t.selector.dropdown).tribe_dropdowns()}),e(window).on("unload",function(){e(t.selector.dropdown).tribe_dropdowns()})}(jQuery,tribe_dropdowns,window.underscore||window._);
1
+ var tribe_dropdowns=window.tribe_dropdowns||{};!function(e,t,r){"use strict";t.selector={dropdown:".tribe-dropdown",created:".tribe-dropdown-created",searchField:".select2-search__field"},e.fn.tribe_dropdowns=function(){return t.dropdown(this,{}),this},t.freefrom_create_search_choice=function(t){var a=e.trim(t.term);if(""===a)return null;var o=this.options.options,s=o.$select;if(a.match(o.regexToken)&&(!s.is("[data-int]")||s.is("[data-int]")&&a.match(/\d+/))){var n={id:a,text:a,new:!0};return s.is("[data-create-choice-template]")&&(n.text=r.template(s.data("createChoiceTemplate"))({term:a})),n}return null},t.search_id=function(e){var t=void 0;return void 0!==e.id?t=e.id:void 0!==e.ID?t=e.ID:void 0!==e.value&&(t=e.value),void 0===e?void 0:t},t.matcher=function(a,o){if(""===e.trim(a.term))return o;if(void 0===o.text)return null;var s=e.trim(a.term),n=o.text,i=e(o.element).closest("select").data("dropdown"),d=-1!==n.toUpperCase().indexOf(s.toUpperCase());if(!d&&void 0!==i.tags){var c=r.where(i.tags,{text:n});if(i.tags.length>0&&r.isObject(c))d=-1!==t.search_id(c[0]).toUpperCase().indexOf(s.toUpperCase())}return d},t.init_selection=function(t,a){var o=t.is("[multiple]"),s=t.data("dropdown"),n=(t.data("isEmpty"),t.val().split(s.regexSplit)),i=[];if(e(n).each(function(e,a){var o=function e(t,a){if(!r.isArray(a))return!1;for(var o in a){var s=a[o];if(s.hasOwnProperty("id")&&s.id==t.id)return s;if(s.hasOwnProperty("text")&&s.text==t.text)return s;if(s.hasOwnProperty("children")&&r.isArray(s.children)){var n=e(t,s.children);if(n)return n}}return!1}({id:this,text:this},s.ajax?t.data("options"):s.data);o&&o.selected&&i.push(o)}),i.length&&o)a(i);else{if(!i.length)return void a(!1);a(i[0])}},t.getSelectClasses=function(e){var t=e.attr("class").split(/\s+/);return r.difference(t,["select2-hidden-accessible","hide-before-select2-init"])},t.element=function(a,o){var s,n=e(a);o=e.extend({},o);if(n.addClass(t.selector.created.className()),o.$select=n,o.dropdownAutoWidth=!0,o.width="resolve",o.containerCss={},n.is(":visible")&&(o.containerCss.display="inline-block",o.containerCss.position="relative"),o.dropdownCss={},o.dropdownCss.width="auto",n.is("[data-dropdown-css-width]")&&(o.dropdownCss.width=n.data("dropdown-css-width"),o.dropdownCss.width&&"false"!==o.dropdownCss.width||(delete o.dropdownCss.width,delete o.containerCss)),o.allowClear=!0,n.is("[data-prevent-clear]")&&(o.allowClear=!1),n.is("[data-searching-placeholder]")&&(o.formatSearching=n.data("searching-placeholder")),!n.is("[data-placeholder]")&&n.is("[placeholder]")&&(o.placeholder=n.attr("placeholder")),n.is("[data-options]")&&(o.data=n.data("options")),o.minimumResultsForSearch=10,n.is("[data-hide-search]")&&(o.minimumResultsForSearch=1/0),n.is("[data-force-search]")&&delete o.minimumResultsForSearch,n.is("[data-freeform]")&&(o.createTag=t.freefrom_create_search_choice,o.tags=!0,n.data("tags",!0)),n.is("[multiple]")&&(o.multiple=!0,n.is("[data-maximum-selection-size]")&&(o.maximumSelectionSize=n.data("maximum-selection-size")),n.is("data-separator")||n.data("separator",","),r.isArray(n.data("separator"))?o.tokenSeparators=n.data("separator"):o.tokenSeparators=[n.data("separator")],o.separator=n.data("separator"),o.regexSeparatorElements=["^("],o.regexSplitElements=["(?:"],e.each(o.tokenSeparators,function(e,t){o.regexSeparatorElements.push("[^"+t+"]+"),o.regexSplitElements.push("["+t+"]")}),o.regexSeparatorElements.push(")$"),o.regexSplitElements.push(")"),o.regexSeparatorString=o.regexSeparatorElements.join(""),o.regexSplitString=o.regexSplitElements.join(""),o.regexToken=new RegExp(o.regexSeparatorString,"ig"),o.regexSplit=new RegExp(o.regexSplitString,"ig")),n.is("[data-tags]")&&(o.tags=n.data("tags"),o.createSearchChoice=function(e,t){if(e.match(o.regexToken))return{id:e,text:e}},0===o.tags.length&&(o.formatNoMatches=function(){return n.attr("placeholder")})),n.is("[data-source]")){var i=n.data("source");o.data={results:[]},o.formatResult=function(t,r,a){return void 0!==t.breadcrumbs?e.merge(t.breadcrumbs,[t.text]).join(" &#187; "):t.text},o.ajax={dataType:"json",type:"POST",url:t.ajaxurl(),processResults:function(t,r,a){return e.isPlainObject(t)&&void 0!==t.success?e.isPlainObject(t.data)&&void 0!==t.data.results?t.success?t.data:("string"===e.type(t.data.message)?console.error(t.data.message):console.error("The Select2 search failed in some way... Verify the source."),{results:[]}):(console.error("We received a malformed results array, could not complete the Select2 Search."),{results:[]}):(console.error("We received a malformed Object, could not complete the Select2 Search."),{results:[]})}},o.ajax.data=function(e,t){return{action:"tribe_dropdown",source:i,search:e,page:t,args:n.data("source-args")}}}n.is("[data-attach-container]")&&(n.is("[multiple]")?(e.fn.select2.amd.define("AttachedDropdownAdapter",["select2/utils","select2/dropdown","select2/dropdown/attachContainer"],function(e,t,r){return e.Decorate(t,r)}),o.dropdownAdapter=e.fn.select2.amd.require("AttachedDropdownAdapter")):(e.fn.select2.amd.define("AttachedWithSearchDropdownAdapter",["select2/utils","select2/dropdown","select2/dropdown/search","select2/dropdown/minimumResultsForSearch","select2/dropdown/attachContainer"],function(e,t,r,a,o){var s=e.Decorate(t,o);return s=e.Decorate(s,r),s=e.Decorate(s,a)}),o.dropdownAdapter=e.fn.select2.amd.require("AttachedWithSearchDropdownAdapter"))),n.data("dropdown",o),(s=n.select2(o)).data("select2").$container.addClass(t.getSelectClasses(n).join(" ")),s.data("select2").$container.removeClass("hide-before-select2-init"),s.on("select2:open",t.action_select2_open)},t.ajaxurl=function(){return void 0!==window.ajaxurl?window.ajaxurl:"undefined"!=typeof TEC&&void 0!==TEC.ajaxurl?TEC.ajaxurl:void console.error("Dropdowns framework cannot properly do an AJAX request without the WordPress `ajaxurl` variable setup.")},t.action_select2_open=function(r){var a=e(this),o=(a.data("dropdown"),a.data("select2")),s=o.$dropdown.find(t.selector.searchField);o.$dropdown.addClass(t.selector.dropdown.className()),a.is("[data-search-placeholder]")&&s.attr("placeholder",a.data("searchPlaceholder"))},t.dropdown=function(e,r){var a=e.not(".select2-offscreen, .select2-container, "+t.selector.created.className());return 0===a.length?a:(r||(r={}),a.each(function(e,a){t.element(a,r)}),a)},e(function(){e(t.selector.dropdown).tribe_dropdowns()}),e(window).on("unload",function(){e(t.selector.dropdown).tribe_dropdowns()})}(jQuery,tribe_dropdowns,window.underscore||window._);
common/src/views/dialog/button.php CHANGED
@@ -3,18 +3,28 @@
3
  * Dialog Button Template
4
  * The button template for Tribe Dialog trigger.
5
  *
6
- * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/buton.php
7
  *
8
  * @since 4.10.0
 
 
9
  *
10
  * @package Tribe
11
- * @version 4.10.0
12
  */
13
- $classes = $button_classes ?: 'tribe-button';
14
- $classes = implode( ' ' , (array) $classes );
 
 
 
 
 
 
 
15
  ?>
16
  <button
17
  class="<?php echo esc_attr( $classes ); ?>"
 
18
  data-content="<?php echo esc_attr( 'dialog-content-' . $id ); ?>"
19
  data-js="<?php echo esc_attr( 'trigger-dialog-' . $id ); ?>"
20
  <?php if ( ! empty( $button_id ) ) : ?>
3
  * Dialog Button Template
4
  * The button template for Tribe Dialog trigger.
5
  *
6
+ * Override this template in your own theme by creating a file at [your-theme]/tribe/dialogs/button.php
7
  *
8
  * @since 4.10.0
9
+ * @since 4.12.15 Add data attributes to the button.
10
+ * @since 4.12.15 Don't render template if `$button_display` is set to false.
11
  *
12
  * @package Tribe
13
+ * @version 4.12.15
14
  */
15
+
16
+ if ( empty( $button_display ) ) {
17
+ return;
18
+ }
19
+
20
+ $classes = $button_classes ?: 'tribe-button';
21
+ $classes = implode( ' ', (array) $classes );
22
+ $attributes = $button_attributes ?: [];
23
+
24
  ?>
25
  <button
26
  class="<?php echo esc_attr( $classes ); ?>"
27
+ <?php tribe_attributes( $attributes ); ?>
28
  data-content="<?php echo esc_attr( 'dialog-content-' . $id ); ?>"
29
  data-js="<?php echo esc_attr( 'trigger-dialog-' . $id ); ?>"
30
  <?php if ( ! empty( $button_id ) ) : ?>
common/src/views/v2/components/icons/arrow-right.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Arrow Right Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/arrow-right.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--arrow-right' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 22 19" xmlns="http://www.w3.org/2000/svg"><path d="M11.648 0L9.62 1.956l6.23 6.005H0v2.793h15.85L9.62 16.76l2.028 1.956 9.705-9.358z" class="tribe-common-c-svgicon__svg-fill"/></svg>
common/src/views/v2/components/icons/caret-down.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Caret Down Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/caret-down.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--caret-down' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 10 7" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.008.609L5 4.6 8.992.61l.958.958L5 6.517.05 1.566l.958-.958z" class="tribe-common-c-svgicon__svg-fill"/></svg>
common/src/views/v2/components/icons/close-alt.php CHANGED
@@ -11,7 +11,7 @@
11
  *
12
  * @var array<string> $classes Additional classes to add to the svg icon.
13
  *
14
- * @version 4.12.10
15
  *
16
  */
17
  $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--close-alt' ];
@@ -20,4 +20,4 @@ if ( ! empty( $classes ) ) {
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
- <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1l6 6M7 1L1 7" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
11
  *
12
  * @var array<string> $classes Additional classes to add to the svg icon.
13
  *
14
+ * @version 4.12.14
15
  *
16
  */
17
  $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--close-alt' ];
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg"><path d="M1 1l6 6M7 1L1 7" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
common/src/views/v2/components/icons/close.php CHANGED
@@ -11,7 +11,7 @@
11
  *
12
  * @var array<string> $classes Additional classes to add to the svg icon.
13
  *
14
- * @version 4.12.10
15
  *
16
  */
17
  $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--close' ];
@@ -20,4 +20,4 @@ if ( ! empty( $classes ) ) {
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
- <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 1L1 11M1 1l10 10" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/></svg>
11
  *
12
  * @var array<string> $classes Additional classes to add to the svg icon.
13
  *
14
+ * @version 4.12.14
15
  *
16
  */
17
  $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--close' ];
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg"><path d="M11 1L1 11M1 1l10 10" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/></svg>
common/src/views/v2/components/icons/day.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Day Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/day.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--day' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 19 18" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M.363 17.569V.43C.363.193.526 0 .726 0H18c.201 0 .364.193.364.431V17.57c0 .238-.163.431-.364.431H.726c-.2 0-.363-.193-.363-.431zm16.985-16.33H1.354v2.314h15.994V1.24zM1.354 4.688h15.994v12.07H1.354V4.687zm11.164 9.265v-1.498c0-.413.335-.748.748-.748h1.498c.413 0 .748.335.748.748v1.498a.749.749 0 01-.748.748h-1.498a.749.749 0 01-.748-.748z" class="tribe-common-c-svgicon__svg-fill"/></svg>
common/src/views/v2/components/icons/dot.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Dot Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/dot.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--dot' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg"><circle cx="7.5" cy="7.5" r="7.5"/></svg>
common/src/views/v2/components/icons/error.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Error Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/error.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--error' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 18 18"><g fill-rule="evenodd" transform="translate(1 1)"><circle cx="8" cy="8" r="7.467" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" class="tribe-common-c-svgicon__svg-stroke"/><circle cx="8" cy="11.733" r="1.067" fill-rule="nonzero" class="tribe-common-c-svgicon__svg-fill"/><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M8 3.733v4.8" class="tribe-common-c-svgicon__svg-stroke"/></g></svg>
common/src/views/v2/components/icons/featured.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Featured Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/featured.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--featured' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 8 10" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 0h8v10L4.049 7.439 0 10V0z"/></svg>
common/src/views/v2/components/icons/filter.php CHANGED
@@ -11,7 +11,7 @@
11
  *
12
  * @var array $classes Additional classes to add to the svg icon.
13
  *
14
- * @version 4.12.10
15
  *
16
  */
17
  $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--filter' ];
@@ -20,4 +20,4 @@ if ( ! empty( $classes ) ) {
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
- <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.44 1a.775.775 0 10-1.55 0v1.89H1a.775.775 0 000 1.55h1.89v1.893a.775.775 0 001.55 0V4.44H17a.775.775 0 000-1.55H4.44V1zM.224 14.332c0-.428.347-.775.775-.775h12.56v-1.893a.775.775 0 011.55 0v1.893h1.89a.775.775 0 010 1.55h-1.89v1.89a.775.775 0 01-1.55 0v-1.89H.998a.775.775 0 01-.775-.775z"/></svg>
11
  *
12
  * @var array $classes Additional classes to add to the svg icon.
13
  *
14
+ * @version 4.12.14
15
  *
16
  */
17
  $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--filter' ];
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.44 1a.775.775 0 10-1.55 0v1.89H1a.775.775 0 000 1.55h1.89v1.893a.775.775 0 001.55 0V4.44H17a.775.775 0 000-1.55H4.44V1zM.224 14.332c0-.428.347-.775.775-.775h12.56v-1.893a.775.775 0 011.55 0v1.893h1.89a.775.775 0 010 1.55h-1.89v1.89a.775.775 0 01-1.55 0v-1.89H.998a.775.775 0 01-.775-.775z"/></svg>
common/src/views/v2/components/icons/list.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: List Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/list.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--list' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 19 19" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M.451.432V17.6c0 .238.163.432.364.432H18.12c.2 0 .364-.194.364-.432V.432c0-.239-.163-.432-.364-.432H.815c-.2 0-.364.193-.364.432zm.993.81h16.024V3.56H1.444V1.24zM17.468 3.56H1.444v13.227h16.024V3.56z" class="tribe-common-c-svgicon__svg-fill"/><g clip-path="url(#clip0)" class="tribe-common-c-svgicon__svg-fill"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.831 4.912v1.825c0 .504.409.913.913.913h1.825a.913.913 0 00.912-.913V4.912A.913.913 0 0014.57 4h-1.825a.912.912 0 00-.913.912z"/><path d="M8.028 7.66a.449.449 0 00.446-.448v-.364c0-.246-.2-.448-.446-.448h-4.13a.449.449 0 00-.447.448v.364c0 .246.201.448.447.448h4.13zM9.797 5.26a.449.449 0 00.447-.448v-.364c0-.246-.201-.448-.447-.448h-5.9a.449.449 0 00-.446.448v.364c0 .246.201.448.447.448h5.9z"/></g><g clip-path="url(#clip1)" class="tribe-common-c-svgicon__svg-fill"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.831 10.912v1.825c0 .505.409.913.913.913h1.825a.913.913 0 00.912-.912v-1.825A.913.913 0 0014.57 10h-1.825a.912.912 0 00-.913.912z"/><path d="M8.028 13.66a.449.449 0 00.446-.448v-.364c0-.246-.2-.448-.446-.448h-4.13a.449.449 0 00-.447.448v.364c0 .246.201.448.447.448h4.13zM9.797 11.26a.449.449 0 00.447-.448v-.364c0-.246-.201-.448-.447-.448h-5.9a.449.449 0 00-.446.448v.364c0 .246.201.448.447.448h5.9z"/></g><defs><clipPath id="clip0"><path transform="translate(3.451 4)" d="M0 0h13v4H0z"/></clipPath><clipPath id="clip1"><path transform="translate(3.451 10)" d="M0 0h13v4H0z"/></clipPath></defs></svg>
common/src/views/v2/components/icons/location.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Location Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/location.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--location' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 10 16" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.682 1.548a5.166 5.166 0 00-7.375 0C-3.073 5.984 4.959 15.36 4.994 15.36c.051-.001 8.092-9.35 3.688-13.812zM4.994 2.833c1.27 0 2.301 1.043 2.301 2.331 0 1.287-1.03 2.33-2.301 2.33-1.272 0-2.3-1.043-2.3-2.33 0-1.287 1.028-2.331 2.3-2.331z"/></svg>
common/src/views/v2/components/icons/mail.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Mail Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/mail.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--mail' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path d="M1.405 1.405l7.87 7.043 7.313-7.051" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tribe-common-c-svgicon__svg-stroke"/><path clip-rule="evenodd" d="M1 2.38v10.482c0 .762.618 1.38 1.38 1.38h13.24a1.38 1.38 0 001.38-1.38V2.38A1.38 1.38 0 0015.62 1H2.38A1.38 1.38 0 001 2.38z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tribe-common-c-svgicon__svg-stroke"/></svg>
common/src/views/v2/components/icons/map-pin.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Map Pin Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/map-pin.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--map-pin' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 14 18" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M12.932 6.992C12.932 11.034 6.966 17 6.966 17S1 11.034 1 6.992C1 3.2 4.083 1 6.966 1s5.966 2.2 5.966 5.992z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tribe-common-c-svgicon__svg-stroke"/><path clip-rule="evenodd" d="M6.966 9.136a2.17 2.17 0 100-4.34 2.17 2.17 0 000 4.34z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tribe-common-c-svgicon__svg-stroke"/></svg>
common/src/views/v2/components/icons/map.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Map Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/map.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--map' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 19 18" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.308 7.726c0 2.27-3.66 6.807-3.816 6.999-.04.05-.1.078-.161.078a.208.208 0 01-.16-.078c-.157-.192-3.817-4.729-3.817-6.999 0-2.333 1.784-4.232 3.977-4.232 2.193 0 3.977 1.899 3.977 4.232zm-3.977-3.78c-1.959 0-3.552 1.696-3.552 3.78 0 1.849 2.839 5.59 3.552 6.5.713-.91 3.552-4.652 3.552-6.5 0-2.084-1.593-3.78-3.552-3.78z" class="tribe-common-c-svgicon__svg-fill"/><path d="M9.492 14.725l.271.22-.271-.22zm-.322 0l-.272.22.272-.22zm.16-.499l-.275.216.276.352.275-.352-.275-.216zm.434.72a35.15 35.15 0 001.988-2.75c.472-.729.944-1.53 1.3-2.299.35-.759.606-1.525.606-2.171h-.7c0 .49-.201 1.141-.542 1.878-.336.726-.789 1.497-1.251 2.21a34.437 34.437 0 01-1.945 2.69l.544.441zm-.433.207c.172 0 .329-.08.432-.207l-.543-.442a.143.143 0 01.11-.05v.7zm-.433-.207c.104.128.261.207.433.207v-.7c.048 0 .088.023.11.051l-.543.442zm-3.894-7.22c0 .646.256 1.412.606 2.171.356.769.828 1.57 1.3 2.298a35.153 35.153 0 001.988 2.75l.544-.44a34.442 34.442 0 01-1.945-2.69c-.462-.714-.915-1.485-1.251-2.211-.34-.737-.542-1.389-.542-1.878h-.7zM9.33 3.144c-2.407 0-4.327 2.076-4.327 4.582h.7c0-2.161 1.647-3.882 3.627-3.882v-.7zm4.327 4.582c0-2.506-1.92-4.582-4.327-4.582v.7c1.98 0 3.627 1.721 3.627 3.882h.7zm-7.53 0c0-1.912 1.458-3.43 3.203-3.43v-.7c-2.172 0-3.902 1.873-3.902 4.13h.7zm3.478 6.285a35.082 35.082 0 01-2.022-2.868 15.842 15.842 0 01-1.03-1.891c-.273-.613-.425-1.139-.425-1.526h-.7c0 .537.202 1.173.485 1.81.286.645.672 1.33 1.076 1.977a35.767 35.767 0 002.065 2.93l.551-.432zm2.927-6.285c0 .387-.153.912-.425 1.525a15.841 15.841 0 01-1.03 1.891 35.097 35.097 0 01-2.023 2.869l.551.431c.36-.46 1.257-1.633 2.065-2.93.405-.647.79-1.331 1.077-1.977.283-.636.485-1.272.485-1.809h-.7zm-3.202-3.43c1.745 0 3.202 1.518 3.202 3.43h.7c0-2.257-1.73-4.13-3.902-4.13v.7z" class="tribe-common-c-svgicon__svg-fill"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9.331 6.321c.742 0 1.346.634 1.346 1.414 0 .78-.604 1.414-1.346 1.414-.742 0-1.346-.635-1.346-1.414 0-.78.604-1.414 1.346-1.414zm0 .267c-.602 0-1.092.514-1.092 1.147 0 .632.49 1.147 1.092 1.147.602 0 1.093-.515 1.093-1.147 0-.633-.49-1.147-1.093-1.147z" class="tribe-common-c-svgicon__svg-fill"/><path d="M11.027 7.735c0-.957-.744-1.764-1.696-1.764v.7c.533 0 .996.461.996 1.064h.7zM9.331 9.499c.952 0 1.696-.808 1.696-1.764h-.7c0 .602-.463 1.064-.996 1.064v.7zM7.635 7.735c0 .956.745 1.764 1.696 1.764v-.7c-.533 0-.996-.462-.996-1.064h-.7zM9.33 5.97c-.951 0-1.696.807-1.696 1.764h.7c0-.603.463-1.064.996-1.064v-.7zM8.59 7.735c0-.456.349-.797.742-.797v-.7c-.812 0-1.442.687-1.442 1.497h.7zm.742.797c-.393 0-.742-.341-.742-.797h-.7c0 .81.63 1.497 1.442 1.497v-.7zm.742-.797c0 .455-.349.797-.742.797v.7c.812 0 1.443-.688 1.443-1.497h-.7zm-.742-.797c.393 0 .742.341.742.797h.7c0-.81-.63-1.497-1.442-1.497v.7z" class="tribe-common-c-svgicon__svg-fill"/><path fill-rule="evenodd" clip-rule="evenodd" d="M.363.431V17.57c0 .238.163.431.363.431H18c.201 0 .364-.193.364-.431V.43c0-.238-.163-.431-.364-.431H.726c-.2 0-.363.193-.363.431zm.99.808h15.995v2.314H1.354V1.24zm0 2.314h15.995v13.204H1.354V3.553z" class="tribe-common-c-svgicon__svg-fill"/></svg>
common/src/views/v2/components/icons/messages-not-found.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Messages Not Found Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/messages-not-found.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--messages-not-found' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 21 23" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M.5 2.5h20v20H.5z"/><path stroke-linecap="round" d="M7.583 11.583l5.834 5.834m0-5.834l-5.834 5.834" class="tribe-common-c-svgicon__svg-stroke"/><path stroke-linecap="round" d="M4.5.5v4m12-4v4"/><path stroke-linecap="square" d="M.5 7.5h20"/></g></svg>
common/src/views/v2/components/icons/minus.php CHANGED
@@ -11,7 +11,7 @@
11
  *
12
  * @var array<string> $classes Additional classes to add to the svg icon.
13
  *
14
- * @version 4.12.10
15
  *
16
  */
17
  $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--minus' ];
@@ -20,4 +20,4 @@ if ( ! empty( $classes ) ) {
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
- <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 12 3" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 1.88H1" stroke-width="2" stroke-linecap="square"/></svg>
11
  *
12
  * @var array<string> $classes Additional classes to add to the svg icon.
13
  *
14
+ * @version 4.12.14
15
  *
16
  */
17
  $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--minus' ];
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 12 3" xmlns="http://www.w3.org/2000/svg"><path d="M11 1.88H1" stroke-width="2" stroke-linecap="square"/></svg>
common/src/views/v2/components/icons/month.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Month Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/month.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--month' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 18 19" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 .991v17.04c0 .236.162.428.361.428h17.175c.2 0 .361-.192.361-.429V.991c0-.237-.162-.428-.361-.428H.36C.161.563 0 .754 0 .99zm.985.803H16.89v2.301H.985v-2.3zM16.89 5.223H.985v12H16.89v-12zM6.31 7.366v.857c0 .237.192.429.429.429h.857a.429.429 0 00.428-.429v-.857a.429.429 0 00-.428-.429H6.74a.429.429 0 00-.429.429zm3.429.857v-.857c0-.237.191-.429.428-.429h.857c.237 0 .429.192.429.429v.857a.429.429 0 01-.429.429h-.857a.429.429 0 01-.428-.429zm3.428-.857v.857c0 .237.192.429.429.429h.857a.429.429 0 00.428-.429v-.857a.429.429 0 00-.428-.429h-.857a.429.429 0 00-.429.429zm-6.857 4.286v-.858c0-.236.192-.428.429-.428h.857c.236 0 .428.192.428.428v.858a.429.429 0 01-.428.428H6.74a.429.429 0 01-.429-.428zm3.429-.858v.858c0 .236.191.428.428.428h.857a.429.429 0 00.429-.428v-.858a.429.429 0 00-.429-.428h-.857a.428.428 0 00-.428.428zm3.428.858v-.858c0-.236.192-.428.429-.428h.857c.236 0 .428.192.428.428v.858a.429.429 0 01-.428.428h-.857a.429.429 0 01-.429-.428zm-10.286-.858v.858c0 .236.192.428.429.428h.857a.429.429 0 00.429-.428v-.858a.429.429 0 00-.429-.428h-.857a.429.429 0 00-.429.428zm0 4.286v-.857c0-.237.192-.429.429-.429h.857c.237 0 .429.192.429.429v.857a.429.429 0 01-.429.429h-.857a.429.429 0 01-.429-.429zm3.429-.857v.857c0 .237.192.429.429.429h.857a.429.429 0 00.428-.429v-.857a.429.429 0 00-.428-.429H6.74a.429.429 0 00-.429.429zm3.429.857v-.857c0-.237.191-.429.428-.429h.857c.237 0 .429.192.429.429v.857a.429.429 0 01-.429.429h-.857a.429.429 0 01-.428-.429z" class="tribe-common-c-svgicon__svg-fill"/></svg>
common/src/views/v2/components/icons/no-map.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: No Map Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/no-map.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--no-map' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 67 66" xmlns="http://www.w3.org/2000/svg"><path d="M24.432 65S1 43.672 1 24.477C.992 12.344 10.225 2.207 22.293 1.1 34.361-.008 45.281 8.28 47.476 20.212M24.806 65s2.152-1.959 5.151-5.223" stroke-width="2" stroke-linecap="round" class="tribe-common-c-svgicon__svg-stroke"/><path d="M25 31.476a6.476 6.476 0 100-12.952 6.476 6.476 0 000 12.952zM48.365 61.063c9.468 0 17.143-7.675 17.143-17.142 0-9.468-7.675-17.143-17.142-17.143-9.468 0-17.143 7.675-17.143 17.143 0 9.467 7.675 17.142 17.142 17.142z" stroke-width="2" class="tribe-common-c-svgicon__svg-stroke"/><path d="M48.78 55.095a2.065 2.065 0 100-4.13 2.065 2.065 0 000 4.13z" class="tribe-common-c-svgicon__svg-fill"/><path d="M48.636 33.762v13.763" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tribe-common-c-svgicon__svg-stroke"/></svg>
common/src/views/v2/components/icons/phone.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Phone Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/phone.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--phone' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M11.682 10.882l-1.304 1.629a13.762 13.762 0 01-4.89-4.888l1.63-1.304c.393-.315.525-.855.32-1.315L5.953 1.66a1.108 1.108 0 00-1.292-.623l-2.828.733c-.547.143-.9.672-.822 1.231A16.435 16.435 0 0015 16.99a1.114 1.114 0 001.23-.822l.734-2.83a1.109 1.109 0 00-.622-1.29l-3.346-1.486c-.46-.205-1-.073-1.314.32z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tribe-common-c-svgicon__svg-stroke"/></svg>
common/src/views/v2/components/icons/photo.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Photo Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/photo.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--photo' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 19 18" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.536 0H.539a.484.484 0 00-.495.483v17.034c0 .27.218.483.495.483h16.997a.484.484 0 00.495-.483V.483A.484.484 0 0017.536 0zm-.515.986V13.73l-1.907-2.938c-.555-.58-1.584-.58-2.139 0l-1.327 1.41-3.841-4.31a1.548 1.548 0 00-1.169-.502c-.435 0-.871.193-1.148.522l-4.436 4.929V.986h15.967zM1.054 14.329v2.705h15.987v-1.835l-2.66-3.73c-.178-.175-.495-.175-.653 0l-1.703 1.816c-.1.097-.218.174-.377.155a.569.569 0 01-.376-.174L7.054 8.53a.577.577 0 00-.416-.174.504.504 0 00-.396.174l-5.188 5.798z" class="tribe-common-c-svgicon__svg-fill"/><path fill-rule="evenodd" clip-rule="evenodd" d="M14.682 5.875c0 1.043-.825 1.875-1.82 1.875-.993 0-1.818-.832-1.818-1.875C11.044 4.83 11.85 4 12.863 4c1.012 0 1.819.831 1.819 1.875zm-.957 0c0-.483-.393-.89-.862-.89s-.863.407-.863.89c0 .483.394.889.863.889s.862-.406.862-.89z" class="tribe-common-c-svgicon__svg-fill"/></svg>
common/src/views/v2/components/icons/play.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Play Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/play.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @version 4.12.14
13
+ *
14
+ * @var array $classes Additional classes to add to the svg icon.
15
+ */
16
+
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--play' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 12"><path d="M10 6a1 1 0 01-.47.848l-8 5a.996.996 0 01-1.237-.14A.999.999 0 010 11V1A1 1 0 011.53.153l8 5A1 1 0 0110 6z" fill-rule="nonzero"/></svg>
common/src/views/v2/components/icons/plus.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
  /**
3
- * View: Minus Icon
4
  *
5
  * Override this template in your own theme by creating a file at:
6
- * [your-theme]/tribe/v2/components/icons/minus.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
@@ -11,13 +11,13 @@
11
  *
12
  * @var array<string> $classes Additional classes to add to the svg icon.
13
  *
14
- * @version 4.12.10
15
  *
16
  */
17
- $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--minus' ];
18
 
19
  if ( ! empty( $classes ) ) {
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
- <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 5.881H1M5.88 1v10" stroke-width="2" stroke-linecap="square"/></svg>
1
  <?php
2
  /**
3
+ * View: Plus Icon
4
  *
5
  * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/plus.php
7
  *
8
  * See more documentation about our views templating system.
9
  *
11
  *
12
  * @var array<string> $classes Additional classes to add to the svg icon.
13
  *
14
+ * @version 4.12.14
15
  *
16
  */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--plus' ];
18
 
19
  if ( ! empty( $classes ) ) {
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg"><path d="M11 5.881H1M5.88 1v10" stroke-width="2" stroke-linecap="square"/></svg>
common/src/views/v2/components/icons/recurring.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Recurring Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/recurring.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--recurring' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M9 3.296c0 .039 0 .078-.012.104 0 .013-.012.04-.012.052a.54.54 0 01-.118.222L7.27 5.422a.479.479 0 01-.711 0 .61.61 0 010-.783l.734-.809H4.781c-1.53 0-2.785 1.37-2.785 3.066 0 .821.284 1.591.817 2.165a.61.61 0 010 .782.478.478 0 01-.71 0C1.39 9.061 1 8.017 1 6.91c0-2.296 1.695-4.161 3.78-4.161h2.525l-.735-.809a.61.61 0 010-.782.482.482 0 01.711 0L8.87 2.904c.059.066.094.144.118.222 0 .013.012.04.012.052v.118zM13 7.091c0 2.296-1.695 4.161-3.78 4.161H6.694l.735.809a.582.582 0 010 .783.479.479 0 01-.711 0l-1.577-1.761a.569.569 0 01-.118-.222c0-.013-.012-.04-.012-.052C5 10.769 5 10.743 5 10.704c0-.039 0-.078.012-.104 0-.013.012-.04.012-.052a.54.54 0 01.118-.222L6.73 8.578a.482.482 0 01.711 0 .582.582 0 010 .783l-.734.809H9.23c1.529 0 2.785-1.37 2.785-3.066 0-.821-.284-1.591-.818-2.165a.582.582 0 010-.782.482.482 0 01.712 0C12.609 4.927 13 5.97 13 7.09z" stroke-width=".25"/></svg>
common/src/views/v2/components/icons/reset.php CHANGED
@@ -11,7 +11,7 @@
11
  *
12
  * @var array<string> $classes Additional classes to add to the svg icon.
13
  *
14
- * @version 4.12.10
15
  *
16
  */
17
  $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--reset' ];
@@ -20,4 +20,4 @@ if ( ! empty( $classes ) ) {
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
- <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12.268 7.5a5.633 5.633 0 11-.886-3.033M11.4 1v3.467H7.934" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
11
  *
12
  * @var array<string> $classes Additional classes to add to the svg icon.
13
  *
14
+ * @version 4.12.14
15
  *
16
  */
17
  $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--reset' ];
20
  $svg_classes = array_merge( $svg_classes, $classes );
21
  }
22
  ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg"><path d="M12.268 7.5a5.633 5.633 0 11-.886-3.033M11.4 1v3.467H7.934" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
common/src/views/v2/components/icons/search.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Search Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/search.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--search' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.164 10.133L16 14.97 14.969 16l-4.836-4.836a6.225 6.225 0 01-3.875 1.352 6.24 6.24 0 01-4.427-1.832A6.272 6.272 0 010 6.258 6.24 6.24 0 011.831 1.83 6.272 6.272 0 016.258 0c1.67 0 3.235.658 4.426 1.831a6.272 6.272 0 011.832 4.427c0 1.422-.48 2.773-1.352 3.875zM6.258 1.458c-1.28 0-2.49.498-3.396 1.404-1.866 1.867-1.866 4.925 0 6.791a4.774 4.774 0 003.396 1.405c1.28 0 2.489-.498 3.395-1.405 1.867-1.866 1.867-4.924 0-6.79a4.774 4.774 0 00-3.395-1.405z"/></svg>
common/src/views/v2/components/icons/video.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Video Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/video.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ */
16
+
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--video' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 12"><path d="M11 4V1c0-.6-.4-1-1-1H1C.4 0 0 .4 0 1v10c0 .6.4 1 1 1h9c.6 0 1-.4 1-1V8l5 2V2l-5 2z" fill-rule="nonzero" class="tribe-common-c-svgicon__svg-fill"/></svg>
common/src/views/v2/components/icons/virtual.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Virtual Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/virtual.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ */
16
+
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--virtual' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 16"><defs/><g fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" transform="translate(1 1)"><path d="M18 10.7333333c2.16-2.09999997 2.16-5.44444441 0-7.46666663M21.12 13.7666667c3.84-3.7333334 3.84-9.80000003 0-13.53333337M6 10.7333333C3.84 8.63333333 3.84 5.28888889 6 3.26666667M2.88 13.7666667C-.96 10.0333333-.96 3.96666667 2.88.23333333" class="tribe-common-c-svgicon__svg-stroke"/><ellipse cx="12" cy="7" rx="2.4" ry="2.33333333" class="tribe-common-c-svgicon__svg-stroke"/></g></svg>
common/src/views/v2/components/icons/website.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Website Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/website.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--website' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 16 18" xmlns="http://www.w3.org/2000/svg"><path d="M14.531 1.5l-7.5 8M7.969 1.5h6.562v7M4.219 1.5H1.406c-.517 0-.937.448-.937 1v13c0 .552.42 1 .937 1h12.188c.517 0 .937-.448.937-1v-3" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="tribe-common-c-svgicon__svg-stroke"/></svg>
common/src/views/v2/components/icons/week.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * View: Week Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/v2/components/icons/week.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @var array<string> $classes Additional classes to add to the svg icon.
13
+ *
14
+ * @version 4.12.14
15
+ *
16
+ */
17
+ $svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--week' ];
18
+
19
+ if ( ! empty( $classes ) ) {
20
+ $svg_classes = array_merge( $svg_classes, $classes );
21
+ }
22
+ ?>
23
+ <svg <?php tribe_classes( $svg_classes ); ?> viewBox="0 0 19 18" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M.363.431V17.57c0 .238.163.431.363.431H18c.201 0 .364-.193.364-.431V.43c0-.238-.163-.431-.364-.431H.726c-.2 0-.363.193-.363.431zm.99.808h15.995v2.314H1.354V1.24zm15.995 3.449H1.354v12.07h15.994V4.687zM6.71 10.29v.862c0 .239.193.431.431.431h.862a.431.431 0 00.431-.43v-.863a.431.431 0 00-.43-.43H7.14a.431.431 0 00-.43.43zm3.448.862v-.862c0-.238.193-.43.431-.43h.862c.238 0 .431.192.431.43v.862a.431.431 0 01-.43.431h-.863a.431.431 0 01-.43-.43zm3.449-.862v.862c0 .239.193.431.43.431h.863a.431.431 0 00.43-.43v-.863a.431.431 0 00-.43-.43h-.862a.431.431 0 00-.431.43zm-10.345.862v-.862c0-.238.193-.43.43-.43h.863c.238 0 .43.192.43.43v.862a.431.431 0 01-.43.431h-.862a.431.431 0 01-.431-.43z" class="tribe-common-c-svgicon__svg-fill"/></svg>
common/vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInita5209126f285bbb0b9ea28bf267ced21::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit1c903fdb1f51711059c14962ddf56c98::getLoader();
common/vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit78c6545cd43926a267b2abd8a75d4a61::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit0d696ede8f7794740a7ebee33d7641a3::getLoader();
common/vendor/composer/autoload_classmap.php CHANGED
@@ -114,6 +114,8 @@ return array(
114
  'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php',
115
  'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
116
  'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php',
 
 
117
  'Tribe\\DB_Lock' => $baseDir . '/src/Tribe/DB_Lock.php',
118
  'Tribe\\Dialog\\View' => $baseDir . '/src/Tribe/Dialog/View.php',
119
  'Tribe\\Log\\Action_Logger' => $baseDir . '/src/Tribe/Log/Action_Logger.php',
@@ -150,6 +152,7 @@ return array(
150
  'Tribe\\Utils\\Lazy_Collection' => $baseDir . '/src/Tribe/Utils/Lazy_Collection.php',
151
  'Tribe\\Utils\\Lazy_Events' => $baseDir . '/src/Tribe/Utils/Lazy_Events.php',
152
  'Tribe\\Utils\\Lazy_String' => $baseDir . '/src/Tribe/Utils/Lazy_String.php',
 
153
  'Tribe\\Utils\\Post_Thumbnail' => $baseDir . '/src/Tribe/Utils/Post_Thumbnail.php',
154
  'Tribe\\Utils\\Query' => $baseDir . '/src/Tribe/Utils/Query.php',
155
  'Tribe\\Utils\\Strings' => $baseDir . '/src/Tribe/Utils/Strings.php',
114
  'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php',
115
  'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
116
  'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php',
117
+ 'Tribe\\Customizer\\Control' => $baseDir . '/src/Tribe/Customizer/Control.php',
118
+ 'Tribe\\Customizer\\Controls\\Heading' => $baseDir . '/src/Tribe/Customizer/Controls/Heading.php',
119
  'Tribe\\DB_Lock' => $baseDir . '/src/Tribe/DB_Lock.php',
120
  'Tribe\\Dialog\\View' => $baseDir . '/src/Tribe/Dialog/View.php',
121
  'Tribe\\Log\\Action_Logger' => $baseDir . '/src/Tribe/Log/Action_Logger.php',
152
  'Tribe\\Utils\\Lazy_Collection' => $baseDir . '/src/Tribe/Utils/Lazy_Collection.php',
153
  'Tribe\\Utils\\Lazy_Events' => $baseDir . '/src/Tribe/Utils/Lazy_Events.php',
154
  'Tribe\\Utils\\Lazy_String' => $baseDir . '/src/Tribe/Utils/Lazy_String.php',
155
+ 'Tribe\\Utils\\Paths' => $baseDir . '/src/Tribe/Utils/Paths.php',
156
  'Tribe\\Utils\\Post_Thumbnail' => $baseDir . '/src/Tribe/Utils/Post_Thumbnail.php',
157
  'Tribe\\Utils\\Query' => $baseDir . '/src/Tribe/Utils/Query.php',
158
  'Tribe\\Utils\\Strings' => $baseDir . '/src/Tribe/Utils/Strings.php',
common/vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInita5209126f285bbb0b9ea28bf267ced21
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInita5209126f285bbb0b9ea28bf267ced21
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInita5209126f285bbb0b9ea28bf267ced21', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInita5209126f285bbb0b9ea28bf267ced21', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInita5209126f285bbb0b9ea28bf267ced21::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit1c903fdb1f51711059c14962ddf56c98
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit1c903fdb1f51711059c14962ddf56c98', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit1c903fdb1f51711059c14962ddf56c98', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit1c903fdb1f51711059c14962ddf56c98::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
common/vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInit78c6545cd43926a267b2abd8a75d4a61 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit78c6545cd43926a267b2abd8a75d4a61 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit78c6545cd43926a267b2abd8a75d4a61', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit78c6545cd43926a267b2abd8a75d4a61', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit0d696ede8f7794740a7ebee33d7641a3 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit0d696ede8f7794740a7ebee33d7641a3', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit0d696ede8f7794740a7ebee33d7641a3', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
common/vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInita5209126f285bbb0b9ea28bf267ced21
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -170,6 +170,8 @@ class ComposerStaticInita5209126f285bbb0b9ea28bf267ced21
170
  'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php',
171
  'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
172
  'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php',
 
 
173
  'Tribe\\DB_Lock' => __DIR__ . '/../..' . '/src/Tribe/DB_Lock.php',
174
  'Tribe\\Dialog\\View' => __DIR__ . '/../..' . '/src/Tribe/Dialog/View.php',
175
  'Tribe\\Log\\Action_Logger' => __DIR__ . '/../..' . '/src/Tribe/Log/Action_Logger.php',
@@ -206,6 +208,7 @@ class ComposerStaticInita5209126f285bbb0b9ea28bf267ced21
206
  'Tribe\\Utils\\Lazy_Collection' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_Collection.php',
207
  'Tribe\\Utils\\Lazy_Events' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_Events.php',
208
  'Tribe\\Utils\\Lazy_String' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_String.php',
 
209
  'Tribe\\Utils\\Post_Thumbnail' => __DIR__ . '/../..' . '/src/Tribe/Utils/Post_Thumbnail.php',
210
  'Tribe\\Utils\\Query' => __DIR__ . '/../..' . '/src/Tribe/Utils/Query.php',
211
  'Tribe\\Utils\\Strings' => __DIR__ . '/../..' . '/src/Tribe/Utils/Strings.php',
@@ -224,10 +227,10 @@ class ComposerStaticInita5209126f285bbb0b9ea28bf267ced21
224
  public static function getInitializer(ClassLoader $loader)
225
  {
226
  return \Closure::bind(function () use ($loader) {
227
- $loader->prefixLengthsPsr4 = ComposerStaticInita5209126f285bbb0b9ea28bf267ced21::$prefixLengthsPsr4;
228
- $loader->prefixDirsPsr4 = ComposerStaticInita5209126f285bbb0b9ea28bf267ced21::$prefixDirsPsr4;
229
- $loader->prefixesPsr0 = ComposerStaticInita5209126f285bbb0b9ea28bf267ced21::$prefixesPsr0;
230
- $loader->classMap = ComposerStaticInita5209126f285bbb0b9ea28bf267ced21::$classMap;
231
 
232
  }, null, ClassLoader::class);
233
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit1c903fdb1f51711059c14962ddf56c98
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
170
  'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php',
171
  'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
172
  'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php',
173
+ 'Tribe\\Customizer\\Control' => __DIR__ . '/../..' . '/src/Tribe/Customizer/Control.php',
174
+ 'Tribe\\Customizer\\Controls\\Heading' => __DIR__ . '/../..' . '/src/Tribe/Customizer/Controls/Heading.php',
175
  'Tribe\\DB_Lock' => __DIR__ . '/../..' . '/src/Tribe/DB_Lock.php',
176
  'Tribe\\Dialog\\View' => __DIR__ . '/../..' . '/src/Tribe/Dialog/View.php',
177
  'Tribe\\Log\\Action_Logger' => __DIR__ . '/../..' . '/src/Tribe/Log/Action_Logger.php',
208
  'Tribe\\Utils\\Lazy_Collection' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_Collection.php',
209
  'Tribe\\Utils\\Lazy_Events' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_Events.php',
210
  'Tribe\\Utils\\Lazy_String' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_String.php',
211
+ 'Tribe\\Utils\\Paths' => __DIR__ . '/../..' . '/src/Tribe/Utils/Paths.php',
212
  'Tribe\\Utils\\Post_Thumbnail' => __DIR__ . '/../..' . '/src/Tribe/Utils/Post_Thumbnail.php',
213
  'Tribe\\Utils\\Query' => __DIR__ . '/../..' . '/src/Tribe/Utils/Query.php',
214
  'Tribe\\Utils\\Strings' => __DIR__ . '/../..' . '/src/Tribe/Utils/Strings.php',
227
  public static function getInitializer(ClassLoader $loader)
228
  {
229
  return \Closure::bind(function () use ($loader) {
230
+ $loader->prefixLengthsPsr4 = ComposerStaticInit1c903fdb1f51711059c14962ddf56c98::$prefixLengthsPsr4;
231
+ $loader->prefixDirsPsr4 = ComposerStaticInit1c903fdb1f51711059c14962ddf56c98::$prefixDirsPsr4;
232
+ $loader->prefixesPsr0 = ComposerStaticInit1c903fdb1f51711059c14962ddf56c98::$prefixesPsr0;
233
+ $loader->classMap = ComposerStaticInit1c903fdb1f51711059c14962ddf56c98::$classMap;
234
 
235
  }, null, ClassLoader::class);
236
  }
common/vendor/composer/installed.json CHANGED
@@ -61,17 +61,17 @@
61
  },
62
  {
63
  "name": "lucatume/di52",
64
- "version": "2.0.12",
65
- "version_normalized": "2.0.12.0",
66
  "source": {
67
  "type": "git",
68
  "url": "https://github.com/lucatume/di52.git",
69
- "reference": "b5ae39274b03c697f20d8d620e534539d6d8d27e"
70
  },
71
  "dist": {
72
  "type": "zip",
73
- "url": "https://api.github.com/repos/lucatume/di52/zipball/b5ae39274b03c697f20d8d620e534539d6d8d27e",
74
- "reference": "b5ae39274b03c697f20d8d620e534539d6d8d27e",
75
  "shasum": ""
76
  },
77
  "require": {
@@ -82,7 +82,7 @@
82
  "phpunit/phpunit-mock-objects-php52": "dev-1.1.0-php52",
83
  "phpunit/phpunit-php52": "dev-3.6.12-php52"
84
  },
85
- "time": "2019-10-14T08:27:38+00:00",
86
  "type": "library",
87
  "installation-source": "dist",
88
  "autoload": {
61
  },
62
  {
63
  "name": "lucatume/di52",
64
+ "version": "2.1.3",
65
+ "version_normalized": "2.1.3.0",
66
  "source": {
67
  "type": "git",
68
  "url": "https://github.com/lucatume/di52.git",
69
+ "reference": "d57c267abf32a1d0ffd97b401e755028a9e2bc78"
70
  },
71
  "dist": {
72
  "type": "zip",
73
+ "url": "https://api.github.com/repos/lucatume/di52/zipball/d57c267abf32a1d0ffd97b401e755028a9e2bc78",
74
+ "reference": "d57c267abf32a1d0ffd97b401e755028a9e2bc78",
75
  "shasum": ""
76
  },
77
  "require": {
82
  "phpunit/phpunit-mock-objects-php52": "dev-1.1.0-php52",
83
  "phpunit/phpunit-php52": "dev-3.6.12-php52"
84
  },
85
+ "time": "2020-11-02T11:14:57+00:00",
86
  "type": "library",
87
  "installation-source": "dist",
88
  "autoload": {
common/vendor/faction23/a11y-dialog/a11y-dialog.min.js CHANGED
@@ -1 +1 @@
1
- !function(t){"use strict";function e(t){if(this.options=h({appendTarget:"",bodyLock:!0,closeButtonAriaLabel:"Close this dialog window",closeButtonClasses:"a11y-dialog__close-button",contentClasses:"a11y-dialog__content",effect:"none",effectSpeed:300,effectEasing:"ease-in-out",overlayClasses:"a11y-dialog__overlay",overlayClickCloses:!0,trigger:null,wrapperClasses:"a11y-dialog"},t),this._rendered=!1,this._show=this.show.bind(this),this._hide=this.hide.bind(this),this._maintainFocus=this._maintainFocus.bind(this),this._bindKeypress=this._bindKeypress.bind(this),this.trigger=a(this.options.trigger)?o(this.options.trigger,!1,document,!0)[0]:this.options.trigger,this.node=null,!this.trigger)return void console.warn("Lookup for a11y target node failed.");this._listeners={},this.create()}function i(t){var e=[],i=t.length;for(i;i--;e.unshift(t[i]));return e}function o(t,e,o,n){o||(o=document);var s=n?t:'[data-js="'+t+'"]',r=o.querySelectorAll(s);return e&&(r=i(r)),r}function n(t,e){return i((e||document).querySelectorAll(t))}function s(t){var e=d(t);e.length&&e[0].focus()}function r(t,e){e.parentNode.insertBefore(t,e.nextElementSibling)}function d(t){return n(p.join(","),t).filter(function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)})}function a(t){return"[object String]"===Object.prototype.toString.call(t)}function h(t,e){return Object.keys(e).forEach(function(i){t[i]=e[i]}),t}function c(t,e){var i=d(t),o=i.indexOf(document.activeElement);e.shiftKey&&0===o?(i[i.length-1].focus(),e.preventDefault()):e.shiftKey||o!==i.length-1||(i[0].focus(),e.preventDefault())}function l(){g=b.scrollTop,document.body.classList.add("a11y-dialog__body-locked"),document.body.style.position="fixed",document.body.style.width="100%",document.body.style.marginTop="-"+g+"px"}function u(){document.body.style.marginTop="",document.body.style.position="",document.body.style.width="",b.scrollTop=g,document.body.classList.remove("a11y-dialog__body-locked")}var f,p=["a[href]","area[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])'],y=function(){var t=/(android)/i.test(navigator.userAgent),e=!!window.chrome,i="undefined"!=typeof InstallTrigger,o=document.documentMode,n=!o&&!!window.StyleMedia,s=!!navigator.userAgent.match(/(iPod|iPhone|iPad)/i),r=!!navigator.userAgent.match(/(iPod|iPhone)/i),d=!!window.opera||navigator.userAgent.indexOf(" OPR/")>=0;return{android:t,chrome:e,edge:n,firefox:i,ie:o,ios:s,iosMobile:r,opera:d,safari:Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0||!e&&!d&&"undefined"!==window.webkitAudioContext,os:navigator.platform}}(),g=0,b=y.ie||y.firefox||y.chrome&&!y.edge?document.documentElement:document.body;e.prototype.create=function(){return this.shown=!1,this.trigger.addEventListener("click",this._show),this._fire("create"),this},e.prototype.render=function(t){var e=o(this.trigger.dataset.content)[0];if(!e)return this;var i=document.createElement("div");i.setAttribute("aria-hidden","true"),i.classList.add(this.options.wrapperClasses),i.innerHTML='<div data-js="a11y-overlay" tabindex="-1" class="'+this.options.overlayClasses+'"></div>\n <div class="'+this.options.contentClasses+'" role="dialog">\n <div role="document">\n <button data-js="a11y-close-button" class="'+this.options.closeButtonClasses+'" type="button" aria-label="'+this.options.closeButtonAriaLabel+'" ></button>\n '+e.innerHTML+" </div>\n </div>";var n=this.trigger;return this.options.appendTarget.length&&(n=document.querySelectorAll(this.options.appendTarget)[0]||this.trigger),r(i,n),this.node=i,this.overlay=o("a11y-overlay",!1,this.node)[0],this.closeButton=o("a11y-close-button",!1,this.node)[0],this.options.overlayClickCloses&&this.overlay.addEventListener("click",this._hide),this.closeButton.addEventListener("click",this._hide),this._rendered=!0,this._fire("render",t),this},e.prototype.show=function(t){return this.shown?this:(this._rendered||this.render(t),this._rendered?(this.shown=!0,this._applyOpenEffect(),this.node.setAttribute("aria-hidden","false"),this.options.bodyLock&&l(),f=document.activeElement,s(this.node),document.body.addEventListener("focus",this._maintainFocus,!0),document.addEventListener("keydown",this._bindKeypress),this._fire("show",t),this):this)},e.prototype.hide=function(t){return this.shown?(this.shown=!1,this.node.setAttribute("aria-hidden","true"),this._applyCloseEffect(),this.options.bodyLock&&u(),f&&f.focus(),document.body.removeEventListener("focus",this._maintainFocus,!0),document.removeEventListener("keydown",this._bindKeypress),this._fire("hide",t),this):this},e.prototype.destroy=function(){return this.hide(),this.trigger.removeEventListener("click",this._show),this.options.overlayClickCloses&&this.overlay.removeEventListener("click",this._hide),this.closeButton.removeEventListener("click",this._hide),this._fire("destroy"),this._listeners={},this},e.prototype.on=function(t,e){return void 0===this._listeners[t]&&(this._listeners[t]=[]),this._listeners[t].push(e),this},e.prototype.off=function(t,e){var i=this._listeners[t].indexOf(e);return i>-1&&this._listeners[t].splice(i,1),this},e.prototype._fire=function(t,e){(this._listeners[t]||[]).forEach(function(t){t(this.node,e)}.bind(this))},e.prototype._bindKeypress=function(t){this.shown&&27===t.which&&(t.preventDefault(),this.hide()),this.shown&&9===t.which&&c(this.node,t)},e.prototype._maintainFocus=function(t){this.shown&&!this.node.contains(t.target)&&s(this.node)},e.prototype._applyOpenEffect=function(){var t=this;"fade"===this.options.effect&&(this.node.style.opacity="0",this.node.style.transition="opacity "+this.options.effectSpeed+"ms "+this.options.effectEasing,setTimeout(function(){t.node.style.opacity="1"},50))},e.prototype._applyCloseEffect=function(){var t=this;"fade"===this.options.effect&&(this.node.setAttribute("aria-hidden","false"),this.node.style.opacity="0",setTimeout(function(){t.node.style.transition="",t.node.setAttribute("aria-hidden","true")},this.options.effectSpeed))},"undefined"!=typeof module&&void 0!==module.exports?module.exports=e:"function"==typeof define&&define.amd?define("A11yDialog",[],function(){return e}):"object"==typeof t&&(t.A11yDialog=e)}("undefined"!=typeof global?global:window);
1
+ !function(t){"use strict";function e(t){if(this.options=h({appendTarget:"",bodyLock:!0,closeButtonAriaLabel:"Close this dialog window",closeButtonClasses:"a11y-dialog__close-button",contentClasses:"a11y-dialog__content",effect:"none",effectSpeed:300,effectEasing:"ease-in-out",overlayClasses:"a11y-dialog__overlay",overlayClickCloses:!0,trigger:null,wrapperClasses:"a11y-dialog"},t),this._rendered=!1,this._show=this.show.bind(this),this._hide=this.hide.bind(this),this._maintainFocus=this._maintainFocus.bind(this),this._bindKeypress=this._bindKeypress.bind(this),this.trigger=a(this.options.trigger)?o(this.options.trigger,!0,document,!0):this.options.trigger,this.node=null,!this.trigger)return void console.warn("Lookup for a11y target node failed.");this._listeners={},this.create()}function i(t){var e=[],i=t.length;for(i;i--;e.unshift(t[i]));return e}function o(t,e,o,n){o||(o=document);var s=n?t:'[data-js="'+t+'"]',r=o.querySelectorAll(s);return e&&(r=i(r)),r}function n(t,e){return i((e||document).querySelectorAll(t))}function s(t){var e=d(t);e.length&&e[0].focus()}function r(t,e){e.parentNode.insertBefore(t,e.nextElementSibling)}function d(t){return n(p.join(","),t).filter(function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)})}function a(t){return"[object String]"===Object.prototype.toString.call(t)}function h(t,e){return Object.keys(e).forEach(function(i){t[i]=e[i]}),t}function c(t,e){var i=d(t),o=i.indexOf(document.activeElement);e.shiftKey&&0===o?(i[i.length-1].focus(),e.preventDefault()):e.shiftKey||o!==i.length-1||(i[0].focus(),e.preventDefault())}function l(){g=b.scrollTop,document.body.classList.add("a11y-dialog__body-locked"),document.body.style.position="fixed",document.body.style.width="100%",document.body.style.marginTop="-"+g+"px"}function u(){document.body.style.marginTop="",document.body.style.position="",document.body.style.width="",b.scrollTop=g,document.body.classList.remove("a11y-dialog__body-locked")}var f,p=["a[href]","area[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])'],y=function(){var t=/(android)/i.test(navigator.userAgent),e=!!window.chrome,i="undefined"!=typeof InstallTrigger,o=document.documentMode,n=!o&&!!window.StyleMedia,s=!!navigator.userAgent.match(/(iPod|iPhone|iPad)/i),r=!!navigator.userAgent.match(/(iPod|iPhone)/i),d=!!window.opera||navigator.userAgent.indexOf(" OPR/")>=0;return{android:t,chrome:e,edge:n,firefox:i,ie:o,ios:s,iosMobile:r,opera:d,safari:Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0||!e&&!d&&"undefined"!==window.webkitAudioContext,os:navigator.platform}}(),g=0,b=y.ie||y.firefox||y.chrome&&!y.edge?document.documentElement:document.body;e.prototype.create=function(){return this.shown=!1,this.trigger.forEach(function(t){t.addEventListener("click",this._show)}.bind(this)),this._fire("create"),this},e.prototype.render=function(t){var e=o(this.trigger[0].dataset.content)[0];if(!e)return this;var i=document.createElement("div");i.setAttribute("aria-hidden","true"),i.classList.add(this.options.wrapperClasses),i.innerHTML='<div data-js="a11y-overlay" tabindex="-1" class="'+this.options.overlayClasses+'"></div>\n <div class="'+this.options.contentClasses+'" role="dialog">\n <div role="document">\n <button data-js="a11y-close-button" class="'+this.options.closeButtonClasses+'" type="button" aria-label="'+this.options.closeButtonAriaLabel+'" ></button>\n '+e.innerHTML+" </div>\n </div>";var n=this.trigger;return this.options.appendTarget.length&&(n=document.querySelectorAll(this.options.appendTarget)[0]||this.trigger),r(i,n),this.node=i,this.overlay=o("a11y-overlay",!1,this.node)[0],this.closeButton=o("a11y-close-button",!1,this.node)[0],this.options.overlayClickCloses&&this.overlay.addEventListener("click",this._hide),this.closeButton.addEventListener("click",this._hide),this._rendered=!0,this._fire("render",t),this},e.prototype.show=function(t){return this.shown?this:(this._rendered||this.render(t),this._rendered?(this.shown=!0,this._applyOpenEffect(),this.node.setAttribute("aria-hidden","false"),this.options.bodyLock&&l(),f=document.activeElement,s(this.node),document.body.addEventListener("focus",this._maintainFocus,!0),document.addEventListener("keydown",this._bindKeypress),this._fire("show",t),this):this)},e.prototype.hide=function(t){return this.shown?(this.shown=!1,"none"===this.options.effect&&this.node.setAttribute("aria-hidden","true"),this._applyCloseEffect(),this.options.bodyLock&&u(),f&&f.focus(),document.body.removeEventListener("focus",this._maintainFocus,!0),document.removeEventListener("keydown",this._bindKeypress),this._fire("hide",t),this):this},e.prototype.destroy=function(){return this.hide(),this.trigger.forEach(function(t){t.removeEventListener("click",this._show)}.bind(this)),this._rendered&&(this.options.overlayClickCloses&&this.overlay.removeEventListener("click",this._hide),this.closeButton.removeEventListener("click",this._hide)),this._fire("destroy"),this._listeners={},this},e.prototype.on=function(t,e){return void 0===this._listeners[t]&&(this._listeners[t]=[]),this._listeners[t].push(e),this},e.prototype.off=function(t,e){var i=this._listeners[t].indexOf(e);return i>-1&&this._listeners[t].splice(i,1),this},e.prototype._fire=function(t,e){(this._listeners[t]||[]).forEach(function(t){t(this.node,e)}.bind(this))},e.prototype._bindKeypress=function(t){this.shown&&27===t.which&&(t.preventDefault(),this.hide()),this.shown&&9===t.which&&c(this.node,t)},e.prototype._maintainFocus=function(t){this.shown&&!this.node.contains(t.target)&&s(this.node)},e.prototype._applyOpenEffect=function(){var t=this;setTimeout(function(){t.node.classList.add("a11y-dialog--open")},50),"fade"===this.options.effect&&(this.node.style.opacity="0",this.node.style.transition="opacity "+this.options.effectSpeed+"ms "+this.options.effectEasing,setTimeout(function(){t.node.style.opacity="1"},50))},e.prototype._applyCloseEffect=function(){var t=this;this.node.classList.remove("a11y-dialog--open"),"fade"===this.options.effect?(this.node.style.opacity="0",setTimeout(function(){t.node.style.transition="",t.node.setAttribute("aria-hidden","true")},this.options.effectSpeed)):"css"===this.options.effect&&setTimeout(function(){t.node.setAttribute("aria-hidden","true")},this.options.effectSpeed)},"undefined"!=typeof module&&void 0!==module.exports?module.exports=e:"function"==typeof define&&define.amd?define("A11yDialog",[],function(){return e}):"object"==typeof t&&(t.A11yDialog=e)}("undefined"!=typeof global?global:window);
common/vendor/lucatume/di52/src/tad/DI52/Container.php CHANGED
@@ -296,6 +296,8 @@ class tad_DI52_Container implements ArrayAccess {
296
  *
297
  * @param string $classOrInterface
298
  *
 
 
299
  * @return array|mixed
300
  */
301
  protected function resolve($classOrInterface) {
@@ -315,6 +317,8 @@ class tad_DI52_Container implements ArrayAccess {
315
  } catch (Exception $e) {
316
  if ( $e instanceof ReflectionException ) {
317
  throw $e;
 
 
318
  }
319
 
320
  throw new RuntimeException("'{$classOrInterface}' is not a bound alias or an existing class.");
@@ -340,14 +344,14 @@ class tad_DI52_Container implements ArrayAccess {
340
  preg_match('/Error while making/', $e->getMessage(), $matches);
341
  if (count($matches)) {
342
  // @codeCoverageIgnoreStart
343
- $divider = "\n\t => ";
344
- $prefix = ' ';
345
  // @codeCoverageIgnoreEnd
346
  } else {
347
- $divider = ':';
348
- $prefix = 'Error while making ';
349
  }
350
- $message = "{$prefix} '{$classOrInterface}'{$divider} " . $e->getMessage();
351
 
352
  throw new RuntimeException($message);
353
  }
@@ -697,8 +701,19 @@ class tad_DI52_Container implements ArrayAccess {
697
  * an object or a closure.
698
  * @param array $afterBuildMethods An array of methods that should be called on the built implementation after
699
  * resolving it.
 
 
 
700
  */
701
- public function bind($classOrInterface, $implementation, array $afterBuildMethods = null) {
 
 
 
 
 
 
 
 
702
  $this->offsetUnset($classOrInterface);
703
 
704
  $this->bindings[$classOrInterface] = $classOrInterface;
@@ -729,7 +744,7 @@ class tad_DI52_Container implements ArrayAccess {
729
  * @param array $afterBuildMethods An array of methods that should be called on the built implementation after
730
  * resolving it.
731
  */
732
- public function singleton($classOrInterface, $implementation, array $afterBuildMethods = null) {
733
  $this->bind($classOrInterface, $implementation, $afterBuildMethods);
734
 
735
  $this->singletons[$classOrInterface] = $classOrInterface;
@@ -739,9 +754,9 @@ class tad_DI52_Container implements ArrayAccess {
739
  * Returns a lambda function suitable to use as a callback; when called the function will build the implementation
740
  * bound to `$classOrInterface` and return the value of a call to `$method` method with the call arguments.
741
  *
742
- * @param string $classOrInterface A class or interface fully qualified name or a string slug.
743
- * @param string $method The method that should be called on the resolved implementation with the
744
- * specified array arguments.
745
  *
746
  * @return mixed The called method return value.
747
  */
@@ -752,6 +767,14 @@ class tad_DI52_Container implements ArrayAccess {
752
  throw new RuntimeException('Callback method must be a string');
753
  }
754
 
 
 
 
 
 
 
 
 
755
  if ($this->useClosures) {
756
  $f = di52_callbackClosure($this, $classOrInterface, $method);
757
  } else {
@@ -776,11 +799,7 @@ class tad_DI52_Container implements ArrayAccess {
776
  // @codeCoverageIgnoreEnd
777
  }
778
 
779
- if (is_object($classOrInterface)) {
780
- $classOrInterface = get_class($classOrInterface);
781
- }
782
-
783
- $this->callbacks[$classOrInterface . '::' . $method] = $f;
784
 
785
  return $f;
786
  }
296
  *
297
  * @param string $classOrInterface
298
  *
299
+ * @throws RuntimeException|ReflectionException
300
+ *
301
  * @return array|mixed
302
  */
303
  protected function resolve($classOrInterface) {
317
  } catch (Exception $e) {
318
  if ( $e instanceof ReflectionException ) {
319
  throw $e;
320
+ } elseif ( $e instanceof RuntimeException ) {
321
+ throw $e;
322
  }
323
 
324
  throw new RuntimeException("'{$classOrInterface}' is not a bound alias or an existing class.");
344
  preg_match('/Error while making/', $e->getMessage(), $matches);
345
  if (count($matches)) {
346
  // @codeCoverageIgnoreStart
347
+ $separator = "\n\t =>";
348
+ $prefix = '';
349
  // @codeCoverageIgnoreEnd
350
  } else {
351
+ $separator = ':';
352
+ $prefix = 'Error while making ';
353
  }
354
+ $message = "{$prefix}'{$classOrInterface}'{$separator} " . $e->getMessage();
355
 
356
  throw new RuntimeException($message);
357
  }
701
  * an object or a closure.
702
  * @param array $afterBuildMethods An array of methods that should be called on the built implementation after
703
  * resolving it.
704
+ *
705
+ * @throws ReflectionException When binding a class that does not exist without defining an implementation.
706
+ * @throws InvalidArgumentException When binding a class that cannot be instantiated without defining an implementation.
707
  */
708
+ public function bind($classOrInterface, $implementation = null, array $afterBuildMethods = null) {
709
+ if (is_null($implementation)) {
710
+ $reflection = new ReflectionClass($classOrInterface);
711
+ if (!$reflection->isInstantiable()) {
712
+ throw new InvalidArgumentException( sprintf('To bind a class in the Container without defining an implementation, the class must be instantiable. %s is not instantiable.', $classOrInterface) );
713
+ }
714
+ $implementation = $classOrInterface;
715
+ }
716
+
717
  $this->offsetUnset($classOrInterface);
718
 
719
  $this->bindings[$classOrInterface] = $classOrInterface;
744
  * @param array $afterBuildMethods An array of methods that should be called on the built implementation after
745
  * resolving it.
746
  */
747
+ public function singleton($classOrInterface, $implementation = null, array $afterBuildMethods = null) {
748
  $this->bind($classOrInterface, $implementation, $afterBuildMethods);
749
 
750
  $this->singletons[$classOrInterface] = $classOrInterface;
754
  * Returns a lambda function suitable to use as a callback; when called the function will build the implementation
755
  * bound to `$classOrInterface` and return the value of a call to `$method` method with the call arguments.
756
  *
757
+ * @param string|object $classOrInterface A class or interface fully qualified name or a string slug.
758
+ * @param string $method The method that should be called on the resolved implementation with the
759
+ * specified array arguments.
760
  *
761
  * @return mixed The called method return value.
762
  */
767
  throw new RuntimeException('Callback method must be a string');
768
  }
769
 
770
+ $classOrInterfaceName = is_object($classOrInterface) ? spl_object_hash($classOrInterface) : $classOrInterface;
771
+ $cacheKey = $classOrInterfaceName . '::' . $method;
772
+
773
+ if ( isset( $this->callbacks[ $cacheKey ] ) ) {
774
+ // Only return the existing callback if $classOrInterface was not an object (so it remains unique).
775
+ return $this->callbacks[ $cacheKey ];
776
+ }
777
+
778
  if ($this->useClosures) {
779
  $f = di52_callbackClosure($this, $classOrInterface, $method);
780
  } else {
799
  // @codeCoverageIgnoreEnd
800
  }
801
 
802
+ $this->callbacks[ $cacheKey ] = $f;
 
 
 
 
803
 
804
  return $f;
805
  }
common/vendor/lucatume/di52/src/tad/DI52/closuresSupport.php CHANGED
@@ -4,24 +4,31 @@
4
  * method value.
5
  *
6
  * @param tad_DI52_Container $container
7
- * @param string $classOrInterface
8
- * @param string $method
9
  *
10
  * @return Closure
11
  */
12
  function di52_callbackClosure(tad_DI52_Container $container, $classOrInterface, $method) {
13
- $classOrInterfaceName = is_object($classOrInterface) ? get_class($classOrInterface) : $classOrInterface;
14
- if (is_object($classOrInterface)) {
15
- $objectId = uniqid(rand(1, 9999) . md5($classOrInterfaceName));
16
- $container->bind($objectId, $classOrInterface);
17
  } else {
18
  $objectId = $classOrInterface;
19
  }
20
 
21
- return function () use ($container, $objectId, $method) {
22
- $a = func_get_args();
23
- $i = $container->make($objectId);
24
- return call_user_func_array(array($i, $method), $a);
 
 
 
 
 
 
 
 
25
  };
26
  }
27
 
4
  * method value.
5
  *
6
  * @param tad_DI52_Container $container
7
+ * @param string|object $classOrInterface
8
+ * @param string $method
9
  *
10
  * @return Closure
11
  */
12
  function di52_callbackClosure(tad_DI52_Container $container, $classOrInterface, $method) {
13
+ if ( is_object( $classOrInterface ) ) {
14
+ $objectId = uniqid( spl_object_hash( $classOrInterface ), true );
15
+ $container->bind( $objectId, $classOrInterface );
 
16
  } else {
17
  $objectId = $classOrInterface;
18
  }
19
 
20
+ $isStatic = false;
21
+ try {
22
+ $reflectionMethod = new ReflectionMethod($classOrInterface, $method);
23
+ $isStatic = $reflectionMethod->isStatic();
24
+ } catch ( ReflectionException $e ) {
25
+ // no-op
26
+ }
27
+
28
+ return function () use ( $isStatic, $container, $objectId, $method ) {
29
+ return $isStatic ?
30
+ call_user_func_array( array( $objectId, $method ), func_get_args() )
31
+ : call_user_func_array( array( $container->make( $objectId ), $method ), func_get_args() );
32
  };
33
  }
34
 
event-tickets.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Event Tickets
4
  Plugin URI: http://m.tri.be/1acb
5
  Description: Event Tickets allows you to sell basic tickets and collect RSVPs from any post, page, or event.
6
- Version: 5.0.3.1
7
  Author: Modern Tribe, Inc.
8
  Author URI: http://m.tri.be/28
9
  License: GPLv2 or later
3
  Plugin Name: Event Tickets
4
  Plugin URI: http://m.tri.be/1acb
5
  Description: Event Tickets allows you to sell basic tickets and collect RSVPs from any post, page, or event.
6
+ Version: 5.0.4
7
  Author: Modern Tribe, Inc.
8
  Author URI: http://m.tri.be/28
9
  License: GPLv2 or later
lang/event-tickets-de_DE.mo CHANGED
Binary file
lang/event-tickets-es_ES.mo CHANGED
Binary file
lang/event-tickets-ro_RO.mo CHANGED
Binary file
lang/event-tickets-sv_SE.mo CHANGED
Binary file
lang/event-tickets.pot CHANGED
@@ -2,19 +2,19 @@
2
  # This file is distributed under the same license as the Event Tickets package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Event Tickets 5.0.3\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/event-tickets\n"
7
- "POT-Creation-Date: 2020-11-17 16:55:57+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2020-11-17 16:55\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
15
- #. #-#-#-#-# event-tickets.pot (Event Tickets 5.0.3) #-#-#-#-#
16
  #. Plugin Name of the plugin/theme
17
- #: event-tickets.php:62 src/Tribe/Admin/Notices.php:90 src/Tribe/Main.php:677
18
  #: src/Tribe/Privacy.php:59 src/admin-views/admin-welcome-message.php:58
19
  msgid "Event Tickets"
20
  msgstr ""
@@ -146,13 +146,13 @@ msgstr ""
146
  msgid "This ticket was moved to %1$s from %2$s"
147
  msgstr ""
148
 
149
- #: src/Tribe/Admin/Notices.php:86
150
  msgctxt "Admin notice link text"
151
  msgid "RSVP Display Settings"
152
  msgstr ""
153
 
154
  #. translators: %1$s: RSVP singular text, %2$s: Link to settings page.
155
- #: src/Tribe/Admin/Notices.php:95
156
  msgid ""
157
  "With this new version, we've introduced newly redesigned %1$s frontend "
158
  "views. If you have customized the %1$s section, this update will likely "
@@ -161,7 +161,42 @@ msgid ""
161
  "\t\t\tTo upgrade to the new frontend views, please enable them in the %2$s."
162
  msgstr ""
163
 
164
- #: src/Tribe/Admin/Notices.php:154
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
  msgid ""
166
  "Event Tickets does not support ticket sales via third party ecommerce "
167
  "plugins. If you want to sell tickets with %1$s, please purchase a license "
@@ -212,7 +247,7 @@ msgstr ""
212
  msgid "Please enter in without thousand separators and currency symbols."
213
  msgstr ""
214
 
215
- #: src/Tribe/Assets.php:348
216
  msgid ""
217
  "There is unsaved attendee information. Are you sure you want to continue?"
218
  msgstr ""
@@ -260,96 +295,100 @@ msgstr ""
260
  msgid "See who purchased tickets to this event"
261
  msgstr ""
262
 
263
- #: src/Tribe/Attendees.php:312
264
  msgid "You need to select a user or type a valid email address"
265
  msgstr ""
266
 
267
- #: src/Tribe/Attendees.php:313
268
  msgid "Sending..."
269
  msgstr ""
270
 
271
- #: src/Tribe/Attendees.php:317
272
  msgid "You must first select one or more tickets before you can move them!"
273
  msgstr ""
274
 
275
- #: src/Tribe/Attendees.php:348
 
 
 
 
276
  msgid "Columns"
277
  msgstr ""
278
 
279
- #: src/Tribe/Attendees.php:348
280
  msgid ""
281
  "You can use Screen Options to select which columns you want to see. The "
282
  "selection works in the table below, in the email, for print and for the CSV "
283
  "export."
284
  msgstr ""
285
 
286
- #: src/Tribe/Attendees.php:426
287
  msgid "%s - Attendee list"
288
  msgstr ""
289
 
290
- #: src/Tribe/Attendees.php:499
291
  msgctxt "attendee export"
292
  msgid "Order ID"
293
  msgstr ""
294
 
295
- #: src/Tribe/Attendees.php:500
296
  msgctxt "attendee export"
297
  msgid "Order Status"
298
  msgstr ""
299
 
300
- #: src/Tribe/Attendees.php:501
301
  msgctxt "attendee export"
302
  msgid "%s ID"
303
  msgstr ""
304
 
305
- #: src/Tribe/Attendees.php:502
306
  msgctxt "attendee export"
307
  msgid "Customer Name"
308
  msgstr ""
309
 
310
- #: src/Tribe/Attendees.php:503
311
  msgctxt "attendee export"
312
  msgid "Customer Email Address"
313
  msgstr ""
314
 
315
- #: src/Tribe/Attendees.php:532 src/admin-views/tribe-options-tickets.php:234
316
- #: src/admin-views/tribe-options-tickets.php:246
317
  msgid "Yes"
318
  msgstr ""
319
 
320
- #: src/Tribe/Attendees.php:641
321
  msgid "attendees"
322
  msgstr ""
323
 
324
- #: src/Tribe/Attendees.php:675
325
  msgid "Invalid Event ID"
326
  msgstr ""
327
 
328
- #: src/Tribe/Attendees.php:692
329
  msgid "Cheatin Huh?"
330
  msgstr ""
331
 
332
- #: src/Tribe/Attendees.php:698
333
  msgid "Empty user and email"
334
  msgstr ""
335
 
336
- #: src/Tribe/Attendees.php:710
337
  msgid "Invalid Email"
338
  msgstr ""
339
 
340
- #: src/Tribe/Attendees.php:716 src/Tribe/Attendees.php:732
341
  msgid "Invalid User ID"
342
  msgstr ""
343
 
344
- #: src/Tribe/Attendees.php:752
345
  msgid "Attendee List for: %s"
346
  msgstr ""
347
 
348
- #: src/Tribe/Attendees.php:753
349
  msgid "Error when sending the email"
350
  msgstr ""
351
 
352
- #: src/Tribe/Attendees.php:760
353
  msgid "Email sent successfully!"
354
  msgstr ""
355
 
@@ -783,7 +822,7 @@ msgstr ""
783
  msgid "Post draft updated."
784
  msgstr ""
785
 
786
- #: src/Tribe/Commerce/PayPal/Main.php:2962 src/Tribe/RSVP.php:2062
787
  msgid "(deleted)"
788
  msgstr ""
789
 
@@ -918,23 +957,23 @@ msgstr ""
918
  msgid "unavailable"
919
  msgstr ""
920
 
921
- #: src/Tribe/Editor/Attendee_Registration.php:117
922
  msgid "return to the content editor"
923
  msgstr ""
924
 
925
- #: src/Tribe/Editor/Attendee_Registration.php:119
926
  msgid "Attendee Registration fields saved. Make additional changes or %1$s"
927
  msgstr ""
928
 
929
- #: src/Tribe/Editor/Attendee_Registration.php:146
930
  msgid "Back to Editor"
931
  msgstr ""
932
 
933
- #: src/Tribe/Editor/Attendee_Registration.php:155
934
  msgid "Save Changes"
935
  msgstr ""
936
 
937
- #: src/Tribe/Editor/Attendee_Registration.php:167
938
  msgid "Are you sure you want to leave this page?"
939
  msgstr ""
940
 
@@ -946,27 +985,27 @@ msgstr ""
946
  msgid "Are you sure you want to cancel?"
947
  msgstr ""
948
 
949
- #: src/Tribe/Editor/Blocks/Tickets.php:297 src/Tribe/Tickets.php:3746
950
  msgctxt "Error message title, will be followed by the error code."
951
  msgid "API Error"
952
  msgstr ""
953
 
954
- #: src/Tribe/Editor/Blocks/Tickets.php:298 src/Tribe/Tickets.php:3747
955
  msgid ""
956
  "Refresh this page or wait a few minutes before trying again. If this happens "
957
  "repeatedly, please contact the Site Admin."
958
  msgstr ""
959
 
960
- #: src/Tribe/Editor/Blocks/Tickets.php:299 src/Tribe/Tickets.php:3748
961
  msgid ""
962
  "The ticket for this event has sold out and has been removed from your cart."
963
  msgstr ""
964
 
965
- #: src/Tribe/Editor/Blocks/Tickets.php:300 src/Tribe/Tickets.php:3749
966
  msgid "Whoops!"
967
  msgstr ""
968
 
969
- #: src/Tribe/Editor/Blocks/Tickets.php:301 src/Tribe/Tickets.php:3750
970
  msgctxt "The %s will change based on the error produced."
971
  msgid "You have %s ticket(s) with a field that requires information."
972
  msgstr ""
@@ -994,6 +1033,26 @@ msgstr ""
994
  msgid "%s was not able to be updated"
995
  msgstr ""
996
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
997
  #: src/Tribe/Editor.php:208
998
  msgid "Tickets Blocks"
999
  msgstr ""
@@ -1057,113 +1116,108 @@ msgctxt "provider_plugin_name"
1057
  msgid "Tickets"
1058
  msgstr ""
1059
 
1060
- #: src/Tribe/Main.php:416
1061
  msgid ""
1062
  "When The Events Calendar and Event Tickets are both activated, The Events "
1063
  "Calendar must be running version %1$s or greater. Please %2$supdate now.%3$s"
1064
  msgstr ""
1065
 
1066
- #: src/Tribe/Main.php:479
1067
  msgid ""
1068
  "Sorry, Event Tickets requires WordPress %s or higher. Please upgrade your "
1069
  "WordPress install."
1070
  msgstr ""
1071
 
1072
- #: src/Tribe/Main.php:483
1073
  msgid ""
1074
  "Sorry, Event Tickets requires PHP %s or higher. Talk to your Web host about "
1075
  "moving you to a newer version of PHP."
1076
  msgstr ""
1077
 
1078
- #: src/Tribe/Main.php:607
1079
  msgid "Support for Event Tickets"
1080
  msgstr ""
1081
 
1082
- #: src/Tribe/Main.php:609
1083
  msgid "Settings overview"
1084
  msgstr ""
1085
 
1086
- #: src/Tribe/Main.php:610
1087
  msgid "Features overview"
1088
  msgstr ""
1089
 
1090
- #: src/Tribe/Main.php:611
1091
  msgid "Troubleshooting common problems"
1092
  msgstr ""
1093
 
1094
- #: src/Tribe/Main.php:612
1095
  msgid "Customizing Event Tickets"
1096
  msgstr ""
1097
 
1098
- #: src/Tribe/Main.php:629
1099
  msgid "New User Primer"
1100
  msgstr ""
1101
 
1102
- #: src/Tribe/Main.php:631
1103
  msgctxt "help feature box section"
1104
  msgid ""
1105
  "We are committed to helping you sell %1$s for your event. Check out our "
1106
  "handy %2$s to get started."
1107
  msgstr ""
1108
 
1109
- #: src/Tribe/Main.php:648
1110
  msgid "open-source forum on WordPress.org"
1111
  msgstr ""
1112
 
1113
- #: src/Tribe/Main.php:649
1114
  msgid ""
1115
  "If you have tried the above steps and are still having trouble, you can post "
1116
  "a new thread to our %s. Our support staff monitors these forums once a week "
1117
  "and would be happy to assist you there."
1118
  msgstr ""
1119
 
1120
- #: src/Tribe/Main.php:651
1121
  msgid "premium support on our website"
1122
  msgstr ""
1123
 
1124
- #: src/Tribe/Main.php:652 src/admin-views/admin-welcome-message.php:56
1125
- #: src/admin-views/tribe-options-tickets.php:146
1126
- msgid "Event Tickets Plus"
1127
- msgstr ""
1128
-
1129
- #: src/Tribe/Main.php:653
1130
  msgid ""
1131
  "Looking for more immediate support? We offer %1$s with the purchase of any "
1132
  "of our premium plugins (like %2$s). Pick up a license and you can post there "
1133
  "directly and expect a response within 24-48 hours during weekdays."
1134
  msgstr ""
1135
 
1136
- #: src/Tribe/Main.php:655 src/Tribe/Main.php:660
1137
  msgid "post a thread"
1138
  msgstr ""
1139
 
1140
- #: src/Tribe/Main.php:656
1141
  msgid ""
1142
  "Already have Event Tickets Plus? You can %s in our premium support forums. "
1143
  "Our support team monitors the forums and will respond to your thread within "
1144
  "24-48 hours (during the week)."
1145
  msgstr ""
1146
 
1147
- #: src/Tribe/Main.php:661
1148
  msgid ""
1149
  "If you have a valid license for one of our paid plugins, you can %s in our "
1150
  "premium support forums. Our support team monitors the forums and will "
1151
  "respond to your thread within 24-48 hours (during the week)."
1152
  msgstr ""
1153
 
1154
- #: src/Tribe/Main.php:683
1155
  msgid "Event Tickets - Legacy"
1156
  msgstr ""
1157
 
1158
- #: src/Tribe/Main.php:810
1159
  msgid "Welcome to Event Tickets!"
1160
  msgstr ""
1161
 
1162
- #: src/Tribe/Main.php:963
1163
  msgid "Buy"
1164
  msgstr ""
1165
 
1166
- #: src/Tribe/Main.php:1042
1167
  msgid ""
1168
  "When Event Tickets and Event Tickets Plus are both activated, Event Tickets "
1169
  "Plus must be running version %1$s or greater. Please %2$smanually update now"
@@ -2230,169 +2284,169 @@ msgstr ""
2230
  msgid "Quick Links:"
2231
  msgstr ""
2232
 
2233
- #: src/admin-views/admin-welcome-message.php:75
2234
- #: src/admin-views/admin-welcome-message.php:79
2235
- #: src/admin-views/admin-welcome-message.php:83
2236
- #: src/admin-views/admin-welcome-message.php:87
2237
  msgid "Configure Settings"
2238
  msgstr ""
2239
 
2240
- #: src/admin-views/admin-welcome-message.php:76
2241
- #: src/admin-views/admin-welcome-message.php:80
2242
  msgid "Install WooCommerce"
2243
  msgstr ""
2244
 
2245
- #: src/admin-views/admin-welcome-message.php:77
2246
  msgid "Create Ticket"
2247
  msgstr ""
2248
 
2249
- #: src/admin-views/admin-welcome-message.php:81
2250
- #: src/admin-views/admin-welcome-message.php:88
2251
  msgid "Install The Events Calendar"
2252
  msgstr ""
2253
 
2254
- #: src/admin-views/admin-welcome-message.php:84
2255
  msgid "Create RSVP"
2256
  msgstr ""
2257
 
2258
- #: src/admin-views/admin-welcome-message.php:85
2259
- #: src/admin-views/admin-welcome-message.php:89
2260
  msgid "Setup PayPal"
2261
  msgstr ""
2262
 
2263
- #: src/admin-views/admin-welcome-message.php:94
2264
  msgid "Helpful Resources"
2265
  msgstr ""
2266
 
2267
- #: src/admin-views/admin-welcome-message.php:109
2268
- #: src/admin-views/admin-welcome-message.php:162
2269
- #: src/admin-views/admin-welcome-message.php:184
2270
  msgid "Illustration of a book with The Events Calendar logo"
2271
  msgstr ""
2272
 
2273
- #: src/admin-views/admin-welcome-message.php:111
2274
  msgid "Getting Started Guide"
2275
  msgstr ""
2276
 
2277
- #: src/admin-views/admin-welcome-message.php:112
2278
  msgid "New to Event Tickets? Here's everything you need to get started."
2279
  msgstr ""
2280
 
2281
- #: src/admin-views/admin-welcome-message.php:113
2282
  msgid "Check out the guide"
2283
  msgstr ""
2284
 
2285
- #: src/admin-views/admin-welcome-message.php:119
2286
  msgid "Illustration of a thought lightbulb coming from a book"
2287
  msgstr ""
2288
 
2289
- #: src/admin-views/admin-welcome-message.php:121
2290
  msgid "Knowledgebase"
2291
  msgstr ""
2292
 
2293
- #: src/admin-views/admin-welcome-message.php:122
2294
  msgid ""
2295
  "Ready to dig deeper? Our Knowledgebase can help you get the most out of The "
2296
  "Events Calendar suite."
2297
  msgstr ""
2298
 
2299
- #: src/admin-views/admin-welcome-message.php:123
2300
  msgid "Dig deeper"
2301
  msgstr ""
2302
 
2303
- #: src/admin-views/admin-welcome-message.php:129
2304
  msgid "Illustration of characters being translated"
2305
  msgstr ""
2306
 
2307
- #: src/admin-views/admin-welcome-message.php:131
2308
  msgid "Translations"
2309
  msgstr ""
2310
 
2311
- #: src/admin-views/admin-welcome-message.php:132
2312
  msgid "Need a language other than English? We've got you covered here."
2313
  msgstr ""
2314
 
2315
- #: src/admin-views/admin-welcome-message.php:133
2316
- #: src/admin-views/admin-welcome-message.php:155
2317
- #: src/admin-views/admin-welcome-message.php:175
2318
  msgid "Learn more"
2319
  msgstr ""
2320
 
2321
- #: src/admin-views/admin-welcome-message.php:140
2322
  msgid "Illustration of a phone screen with a person's face"
2323
  msgstr ""
2324
 
2325
- #: src/admin-views/admin-welcome-message.php:142
2326
  msgid "Virtual Event Resources"
2327
  msgstr ""
2328
 
2329
- #: src/admin-views/admin-welcome-message.php:143
2330
  msgid ""
2331
  "Tips and tools to help with planning online events, webinars, and more on "
2332
  "WordPress and beyond."
2333
  msgstr ""
2334
 
2335
- #: src/admin-views/admin-welcome-message.php:144
2336
  msgid "Get started with online events"
2337
  msgstr ""
2338
 
2339
- #: src/admin-views/admin-welcome-message.php:152
2340
  msgid "Illustration of a power plug and gears"
2341
  msgstr ""
2342
 
2343
- #: src/admin-views/admin-welcome-message.php:154
2344
  msgid "Browse our library of free extensions for Event Tickets."
2345
  msgstr ""
2346
 
2347
- #: src/admin-views/admin-welcome-message.php:164
2348
- #: src/admin-views/admin-welcome-message.php:186
2349
  msgid "Want to take your events to the next level?"
2350
  msgstr ""
2351
 
2352
- #: src/admin-views/admin-welcome-message.php:165
2353
- #: src/admin-views/admin-welcome-message.php:187
2354
  msgid "Check out our suite of add-ons"
2355
  msgstr ""
2356
 
2357
- #: src/admin-views/admin-welcome-message.php:172
2358
  msgid "Illustration of a calendar"
2359
  msgstr ""
2360
 
2361
- #: src/admin-views/admin-welcome-message.php:174
2362
  msgid "Add The Events Calendar (it's free!) to enhance Event Tickets."
2363
  msgstr ""
2364
 
2365
- #: src/admin-views/admin-welcome-message.php:194
2366
  msgid "Illustration of a hand holding a ticket and the WooCommerce logo"
2367
  msgstr ""
2368
 
2369
- #: src/admin-views/admin-welcome-message.php:196
2370
  msgid "Add WooCommerce integration, advanced registration, and more."
2371
  msgstr ""
2372
 
2373
- #: src/admin-views/admin-welcome-message.php:197
2374
  msgid "Check out Event Tickets Plus"
2375
  msgstr ""
2376
 
2377
- #: src/admin-views/admin-welcome-message.php:202
2378
  msgid "Want this emailed to you?"
2379
  msgstr ""
2380
 
2381
- #: src/admin-views/admin-welcome-message.php:203
2382
  msgid ""
2383
  "Keep this list of links on hand and stay subscribed to receive tips and "
2384
  "tricks about The Events Calendar products."
2385
  msgstr ""
2386
 
2387
- #: src/admin-views/admin-welcome-message.php:206
2388
  msgid "Your email"
2389
  msgstr ""
2390
 
2391
- #: src/admin-views/admin-welcome-message.php:208
2392
  msgid "Sign Up"
2393
  msgstr ""
2394
 
2395
- #: src/admin-views/admin-welcome-message.php:221
2396
  msgid "The Events Calendar brand logo"
2397
  msgstr ""
2398
 
@@ -2451,77 +2505,14 @@ msgstr ""
2451
  msgid "Price"
2452
  msgstr ""
2453
 
2454
- #: src/admin-views/editor/fieldset/advanced.php:40
2455
- msgid "Start sale date cannot be empty."
2456
- msgstr ""
2457
-
2458
- #: src/admin-views/editor/fieldset/advanced.php:41
2459
- msgid "Start sale date cannot be greater than End Sale date"
2460
- msgstr ""
2461
-
2462
- #: src/admin-views/editor/fieldset/advanced.php:45
2463
  msgid "Advanced"
2464
  msgstr ""
2465
 
2466
- #: src/admin-views/editor/fieldset/advanced.php:48
2467
  msgid "Advanced Settings"
2468
  msgstr ""
2469
 
2470
- #: src/admin-views/editor/fieldset/advanced.php:50
2471
- msgid "Description:"
2472
- msgstr ""
2473
-
2474
- #: src/admin-views/editor/fieldset/advanced.php:70
2475
- msgid "Show description on front end %s form."
2476
- msgstr ""
2477
-
2478
- #: src/admin-views/editor/fieldset/advanced.php:78
2479
- #: src/admin-views/meta-box.php:225
2480
- msgid "Start sale:"
2481
- msgstr ""
2482
-
2483
- #: src/admin-views/editor/fieldset/advanced.php:91
2484
- #: src/admin-views/editor/fieldset/advanced.php:133
2485
- msgid "YYYY-MM-DD"
2486
- msgstr ""
2487
-
2488
- #: src/admin-views/editor/fieldset/advanced.php:92
2489
- #: src/admin-views/editor/fieldset/advanced.php:134
2490
- msgid "at"
2491
- msgstr ""
2492
-
2493
- #: src/admin-views/editor/fieldset/advanced.php:106
2494
- msgid "%s start date"
2495
- msgstr ""
2496
-
2497
- #: src/admin-views/editor/fieldset/advanced.php:111
2498
- #: src/admin-views/editor/fieldset/advanced.php:153
2499
- msgid "HH:MM"
2500
- msgstr ""
2501
-
2502
- #: src/admin-views/editor/fieldset/advanced.php:115
2503
- msgid "If you do not set a start sale date, %s will be available immediately."
2504
- msgstr ""
2505
-
2506
- #: src/admin-views/editor/fieldset/advanced.php:123
2507
- #: src/admin-views/meta-box.php:256
2508
- msgid "End sale:"
2509
- msgstr ""
2510
-
2511
- #: src/admin-views/editor/fieldset/advanced.php:148
2512
- msgid "%s end date"
2513
- msgstr ""
2514
-
2515
- #: src/admin-views/editor/fieldset/advanced.php:160
2516
- msgid ""
2517
- "If you do not set an end sale date, %s will be available until the event "
2518
- "begins."
2519
- msgstr ""
2520
-
2521
- #: src/admin-views/editor/fieldset/advanced.php:168
2522
- msgid "If you do not set an end sale date, %s will be available forever."
2523
- msgstr ""
2524
-
2525
  #: src/admin-views/editor/fieldset/history.php:30
2526
  msgid "History"
2527
  msgstr ""
@@ -2560,18 +2551,18 @@ msgid ""
2560
  "Current sale or member price. This can be managed via the product editor."
2561
  msgstr ""
2562
 
2563
- #: src/admin-views/editor/fieldset/settings-provider.php:38
2564
  msgid "Sell %s using:"
2565
  msgstr ""
2566
 
2567
- #: src/admin-views/editor/fieldset/settings-provider.php:45
2568
  msgid ""
2569
  "It looks like you have multiple ecommerce plugins active. We recommend "
2570
  "running only one at a time. However, if you need to run multiple, please "
2571
  "select which one to use to sell %s for this event."
2572
  msgstr ""
2573
 
2574
- #: src/admin-views/editor/fieldset/settings-provider.php:51
2575
  msgid ""
2576
  "Note: adjusting this setting will only impact new %1$s. Existing %1$s will "
2577
  "not change. We highly recommend that all %1$s for one event use the same "
@@ -2667,51 +2658,141 @@ msgid "Save settings"
2667
  msgstr ""
2668
 
2669
  #: src/admin-views/editor/panel/settings.php:112
2670
- #: src/admin-views/editor/panel/ticket.php:261 src/admin-views/meta-box.php:304
2671
  #: src/views/v2/rsvp/ari/form/buttons.php:22
2672
  #: src/views/v2/rsvp/form/fields/cancel.php:23
2673
  msgid "Cancel"
2674
  msgstr ""
2675
 
2676
- #: src/admin-views/editor/panel/ticket.php:62
2677
- #: src/admin-views/editor/panel/ticket.php:95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2678
  msgctxt "admin add new ticket panel heading"
2679
  msgid "Add new %s"
2680
  msgstr ""
2681
 
2682
- #: src/admin-views/editor/panel/ticket.php:75
2683
- #: src/admin-views/editor/panel/ticket.php:109
 
 
2684
  msgctxt "admin edit ticket panel heading"
2685
  msgid "Edit %s"
2686
  msgstr ""
2687
 
2688
- #: src/admin-views/editor/panel/ticket.php:117
2689
  msgid "Type:"
2690
  msgstr ""
2691
 
2692
- #: src/admin-views/editor/panel/ticket.php:126
2693
- msgctxt "admin edit ticket panel error"
2694
- msgid "%s type is a required field"
 
 
 
2695
  msgstr ""
2696
 
2697
- #: src/admin-views/editor/panel/ticket.php:135
2698
- #: src/admin-views/editor/panel/ticket.php:148
2699
- msgctxt "admin edit ticket panel note"
2700
- msgid "%1$s type name shows on the front end and emailed %2$s"
 
 
2701
  msgstr ""
2702
 
2703
- #: src/admin-views/editor/panel/ticket.php:156 src/admin-views/meta-box.php:167
2704
- msgid "Sell using:"
2705
  msgstr ""
2706
 
2707
- #: src/admin-views/editor/panel/ticket.php:243
2708
- msgctxt "meta box ticket form button text"
2709
- msgid "Save %s"
 
2710
  msgstr ""
2711
 
2712
- #: src/admin-views/editor/panel/ticket.php:252
2713
- msgctxt "RSVP form save value"
2714
- msgid "Save %s"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2715
  msgstr ""
2716
 
2717
  #: src/admin-views/legacy-ticket-fields.php:19
@@ -3149,44 +3230,45 @@ msgctxt "tickets fields settings title"
3149
  msgid "%s Settings"
3150
  msgstr ""
3151
 
3152
- #: src/admin-views/tribe-options-tickets.php:63
 
3153
  msgctxt "tickets fields settings enabled post types"
3154
  msgid "Post types that can have %s"
3155
  msgstr ""
3156
 
3157
- #: src/admin-views/tribe-options-tickets.php:80
3158
  msgid "Below the event details [default]"
3159
  msgstr ""
3160
 
3161
- #: src/admin-views/tribe-options-tickets.php:81
3162
  msgid "Above the event details"
3163
  msgstr ""
3164
 
3165
- #: src/admin-views/tribe-options-tickets.php:82
3166
  msgid "Below the event description"
3167
  msgstr ""
3168
 
3169
- #: src/admin-views/tribe-options-tickets.php:83
3170
  msgid "Above the event description"
3171
  msgstr ""
3172
 
3173
- #: src/admin-views/tribe-options-tickets.php:89
3174
- #: src/admin-views/tribe-options-tickets.php:98
3175
  msgctxt "form location setting"
3176
  msgid "Location of %s form"
3177
  msgstr ""
3178
 
3179
- #: src/admin-views/tribe-options-tickets.php:90
3180
- #: src/admin-views/tribe-options-tickets.php:99
3181
  msgid "This setting only impacts events made with the classic editor."
3182
  msgstr ""
3183
 
3184
- #: src/admin-views/tribe-options-tickets.php:107
3185
  msgctxt "tickets remaining threshold label"
3186
  msgid "Display # %s left threshold"
3187
  msgstr ""
3188
 
3189
- #: src/admin-views/tribe-options-tickets.php:108
3190
  msgctxt "tickets remaining threshold tooltip"
3191
  msgid ""
3192
  "If this number is less than the number of %1$s left for sale on your event, "
@@ -3194,11 +3276,11 @@ msgid ""
3194
  "You can leave this blank if you would like to always show the text."
3195
  msgstr ""
3196
 
3197
- #: src/admin-views/tribe-options-tickets.php:120
3198
  msgid "Login Requirements"
3199
  msgstr ""
3200
 
3201
- #: src/admin-views/tribe-options-tickets.php:125
3202
  msgctxt "ticket authentication requirements"
3203
  msgid ""
3204
  "You can require that users log into your site before they are able to %1$s "
@@ -3206,11 +3288,11 @@ msgid ""
3206
  "%3$sGeneral Settings admin screen%4$s) before adjusting this setting."
3207
  msgstr ""
3208
 
3209
- #: src/admin-views/tribe-options-tickets.php:151
3210
  msgid "Check it out!"
3211
  msgstr ""
3212
 
3213
- #: src/admin-views/tribe-options-tickets.php:155
3214
  msgctxt "about Tribe Commerce"
3215
  msgid ""
3216
  "Tribe Commerce is a light implementation of a commerce gateway using PayPal "
@@ -3221,11 +3303,11 @@ msgid ""
3221
  "%3$s"
3222
  msgstr ""
3223
 
3224
- #: src/admin-views/tribe-options-tickets.php:181
3225
  msgid "these instructions"
3226
  msgstr ""
3227
 
3228
- #: src/admin-views/tribe-options-tickets.php:182
3229
  msgctxt "tickets fields settings PayPal setup"
3230
  msgid ""
3231
  "In order to use Tribe Commerce to sell %1$s, you must configure your PayPal "
@@ -3233,154 +3315,154 @@ msgid ""
3233
  "set up, follow %2$s"
3234
  msgstr ""
3235
 
3236
- #: src/admin-views/tribe-options-tickets.php:186
3237
  msgid ""
3238
  "Have you entered this site's address in the Notification URL field in IPN "
3239
  "Settings?"
3240
  msgstr ""
3241
 
3242
- #: src/admin-views/tribe-options-tickets.php:188
3243
  msgid "Your site address is: %s"
3244
  msgstr ""
3245
 
3246
- #: src/admin-views/tribe-options-tickets.php:196
3247
  msgid "Tribe Commerce"
3248
  msgstr ""
3249
 
3250
- #: src/admin-views/tribe-options-tickets.php:204
3251
  msgid "Enable Tribe Commerce "
3252
  msgstr ""
3253
 
3254
- #: src/admin-views/tribe-options-tickets.php:205
3255
  msgid "Check this box if you wish to turn on Tribe Commerce functionality."
3256
  msgstr ""
3257
 
3258
- #: src/admin-views/tribe-options-tickets.php:218
3259
  msgid "Configure PayPal:"
3260
  msgstr ""
3261
 
3262
- #: src/admin-views/tribe-options-tickets.php:224
3263
  msgid "PayPal email to receive payments:"
3264
  msgstr ""
3265
 
3266
- #: src/admin-views/tribe-options-tickets.php:232
3267
  msgid ""
3268
  "Have you enabled instant payment notifications (IPN) in your PayPal "
3269
  "account's Selling Tools?"
3270
  msgstr ""
3271
 
3272
- #: src/admin-views/tribe-options-tickets.php:235
3273
- #: src/admin-views/tribe-options-tickets.php:247
3274
  msgid "No"
3275
  msgstr ""
3276
 
3277
- #: src/admin-views/tribe-options-tickets.php:258
3278
  msgid "PayPal configuration status:"
3279
  msgstr ""
3280
 
3281
- #: src/admin-views/tribe-options-tickets.php:261
3282
  msgid ""
3283
  "For help creating and configuring your account, call PayPal at "
3284
  "1-844-720-4038 (USA)"
3285
  msgstr ""
3286
 
3287
- #: src/admin-views/tribe-options-tickets.php:270
3288
  msgid "PayPal Sandbox"
3289
  msgstr ""
3290
 
3291
- #: src/admin-views/tribe-options-tickets.php:271
3292
  msgid "Enables PayPal Sandbox mode for testing."
3293
  msgstr ""
3294
 
3295
- #: src/admin-views/tribe-options-tickets.php:277
3296
  msgid "Currency Code"
3297
  msgstr ""
3298
 
3299
- #: src/admin-views/tribe-options-tickets.php:278
3300
  msgid "The currency that will be used for Tribe Commerce transactions."
3301
  msgstr ""
3302
 
3303
- #: src/admin-views/tribe-options-tickets.php:285
3304
  msgid "Stock Handling"
3305
  msgstr ""
3306
 
3307
- #: src/admin-views/tribe-options-tickets.php:286
3308
  msgctxt "tickets fields settings paypal stock handling"
3309
  msgid ""
3310
  "When a customer purchases a %s, PayPal might flag the order as Pending. The "
3311
  "order will be Complete once payment is confirmed by PayPal."
3312
  msgstr ""
3313
 
3314
- #: src/admin-views/tribe-options-tickets.php:291
3315
  msgid "Decrease available %s stock as soon as a Pending order is created."
3316
  msgstr ""
3317
 
3318
- #: src/admin-views/tribe-options-tickets.php:295
3319
  msgid ""
3320
  "Only decrease available %s stock if an order is confirmed as Completed by "
3321
  "PayPal."
3322
  msgstr ""
3323
 
3324
- #: src/admin-views/tribe-options-tickets.php:303
3325
  msgid "Success page"
3326
  msgstr ""
3327
 
3328
- #: src/admin-views/tribe-options-tickets.php:306
3329
  msgid ""
3330
  "After a successful PayPal order users will be redirected to this page; use "
3331
  "the %s shortcode to display the order confirmation to the user in the page "
3332
  "content."
3333
  msgstr ""
3334
 
3335
- #: src/admin-views/tribe-options-tickets.php:317
3336
  msgid "Confirmation email sender address"
3337
  msgstr ""
3338
 
3339
- #: src/admin-views/tribe-options-tickets.php:318
3340
  msgctxt "tickets fields settings paypal confirmation email"
3341
  msgid ""
3342
  "Email address PayPal %s customers will receive confirmation from. Leave "
3343
  "empty to use the default WordPress site email address."
3344
  msgstr ""
3345
 
3346
- #: src/admin-views/tribe-options-tickets.php:326
3347
  msgid "Confirmation email sender name"
3348
  msgstr ""
3349
 
3350
- #: src/admin-views/tribe-options-tickets.php:327
3351
  msgctxt "tickets fields settings paypal email sender"
3352
  msgid ""
3353
  "Sender name of the confirmation email sent to customers when confirming a %s "
3354
  "purchase."
3355
  msgstr ""
3356
 
3357
- #: src/admin-views/tribe-options-tickets.php:335
3358
  msgid "Confirmation email subject"
3359
  msgstr ""
3360
 
3361
- #: src/admin-views/tribe-options-tickets.php:336
3362
  msgctxt "tickets fields settings paypal email subject"
3363
  msgid ""
3364
  "Subject of the confirmation email sent to customers when confirming a %s "
3365
  "purchase."
3366
  msgstr ""
3367
 
3368
- #: src/admin-views/tribe-options-tickets.php:338
3369
  msgctxt "tickets fields settings paypal email subject"
3370
  msgid "You have %s!"
3371
  msgstr ""
3372
 
3373
- #: src/admin-views/tribe-options-tickets.php:350
3374
  msgid ""
3375
  "You can see and manage your IPN Notifications history from the IPN "
3376
  "Notifications settings area (%s)."
3377
  msgstr ""
3378
 
3379
- #: src/admin-views/tribe-options-tickets.php:360
3380
  msgid "IPN Notify URL"
3381
  msgstr ""
3382
 
3383
- #: src/admin-views/tribe-options-tickets.php:362
3384
  msgid ""
3385
  "Override the default IPN notify URL with this value. This value must be the "
3386
  "same set in PayPal IPN Notifications settings area (%s)."
@@ -3788,7 +3870,7 @@ msgid ""
3788
  "information as well as change ticket quantities."
3789
  msgstr ""
3790
 
3791
- #: src/views/components/loader.php:16
3792
  msgid "Loading..."
3793
  msgstr ""
3794
 
@@ -3824,14 +3906,14 @@ msgid "Attendee Details"
3824
  msgstr ""
3825
 
3826
  #: src/views/modal/registration-js.php:50
3827
- #: src/views/registration-js/content.php:99
3828
  msgctxt ""
3829
  "Note about missing required fields, %s is the html-wrapped number of tickets."
3830
  msgid "You have %s ticket(s) with a field that requires information."
3831
  msgstr ""
3832
 
3833
  #: src/views/modal/registration-js.php:97
3834
- #: src/views/registration-js/content.php:199
3835
  msgctxt ""
3836
  "Note that there are more tickets in the cart, %s is the html-wrapped number."
3837
  msgid ""
@@ -3841,7 +3923,6 @@ msgstr ""
3841
 
3842
  #: src/views/modal/registration-js.php:116 src/views/modal/registration.php:35
3843
  #: src/views/registration/content.php:111
3844
- #: src/views/registration-js/content.php:178
3845
  msgid "Save and Checkout"
3846
  msgstr ""
3847
 
2
  # This file is distributed under the same license as the Event Tickets package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Event Tickets 5.0.4\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/event-tickets\n"
7
+ "POT-Creation-Date: 2020-12-11 06:25:33+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2020-12-11 06:25\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
15
+ #. #-#-#-#-# event-tickets.pot (Event Tickets 5.0.4) #-#-#-#-#
16
  #. Plugin Name of the plugin/theme
17
+ #: event-tickets.php:62 src/Tribe/Admin/Notices.php:92 src/Tribe/Main.php:674
18
  #: src/Tribe/Privacy.php:59 src/admin-views/admin-welcome-message.php:58
19
  msgid "Event Tickets"
20
  msgstr ""
146
  msgid "This ticket was moved to %1$s from %2$s"
147
  msgstr ""
148
 
149
+ #: src/Tribe/Admin/Notices.php:88
150
  msgctxt "Admin notice link text"
151
  msgid "RSVP Display Settings"
152
  msgstr ""
153
 
154
  #. translators: %1$s: RSVP singular text, %2$s: Link to settings page.
155
+ #: src/Tribe/Admin/Notices.php:97
156
  msgid ""
157
  "With this new version, we've introduced newly redesigned %1$s frontend "
158
  "views. If you have customized the %1$s section, this update will likely "
161
  "\t\t\tTo upgrade to the new frontend views, please enable them in the %2$s."
162
  msgstr ""
163
 
164
+ #. Translators: %1$s: dynamic "Tickets" text, %2$s: dynamic "Event" text.
165
+ #: src/Tribe/Admin/Notices.php:152
166
+ msgctxt ""
167
+ "heading for classic editor notice if Events Calendar Pro event has tickets"
168
+ msgid "%1$s for Recurring %2$s"
169
+ msgstr ""
170
+
171
+ #. Translators: %1$s: dynamic "event" text, %2$s: dynamic "ticket" text, %3$s:
172
+ #. dynamic "tickets" text, %4$s: dynamic "RSVP" text, %5$s: dynamic "Ticket"
173
+ #. text.
174
+ #: src/Tribe/Admin/Notices.php:163
175
+ msgctxt ""
176
+ "text for classic editor notice if Events Calendar Pro event has tickets"
177
+ msgid ""
178
+ "Heads up! You saved a recurring %1$s with a %2$s. Please note that we do not "
179
+ "currently support recurring %3$s. Only the first instance of this recurring "
180
+ "series will have your %4$s or %5$s displayed."
181
+ msgstr ""
182
+
183
+ #: src/Tribe/Admin/Notices.php:214 src/Tribe/Main.php:649
184
+ #: src/admin-views/admin-welcome-message.php:56
185
+ #: src/admin-views/tribe-options-tickets.php:156
186
+ msgid "Event Tickets Plus"
187
+ msgstr ""
188
+
189
+ #: src/Tribe/Admin/Notices.php:218
190
+ msgid "WooCommerce"
191
+ msgstr ""
192
+
193
+ #: src/Tribe/Admin/Notices.php:219
194
+ msgid "Easy Digital Downloads"
195
+ msgstr ""
196
+
197
+ #. translators: %1$s: The ticket commerce provider (WooCommerce, etc); %2$s:
198
+ #. The Event Tickets Plus plugin name and link.
199
+ #: src/Tribe/Admin/Notices.php:229
200
  msgid ""
201
  "Event Tickets does not support ticket sales via third party ecommerce "
202
  "plugins. If you want to sell tickets with %1$s, please purchase a license "
247
  msgid "Please enter in without thousand separators and currency symbols."
248
  msgstr ""
249
 
250
+ #: src/Tribe/Assets.php:359
251
  msgid ""
252
  "There is unsaved attendee information. Are you sure you want to continue?"
253
  msgstr ""
295
  msgid "See who purchased tickets to this event"
296
  msgstr ""
297
 
298
+ #: src/Tribe/Attendees.php:318
299
  msgid "You need to select a user or type a valid email address"
300
  msgstr ""
301
 
302
+ #: src/Tribe/Attendees.php:319
303
  msgid "Sending..."
304
  msgstr ""
305
 
306
+ #: src/Tribe/Attendees.php:323
307
  msgid "You must first select one or more tickets before you can move them!"
308
  msgstr ""
309
 
310
+ #: src/Tribe/Attendees.php:325
311
+ msgid "Please confirm that you would like to delete this attendee."
312
+ msgstr ""
313
+
314
+ #: src/Tribe/Attendees.php:360
315
  msgid "Columns"
316
  msgstr ""
317
 
318
+ #: src/Tribe/Attendees.php:360
319
  msgid ""
320
  "You can use Screen Options to select which columns you want to see. The "
321
  "selection works in the table below, in the email, for print and for the CSV "
322
  "export."
323
  msgstr ""
324
 
325
+ #: src/Tribe/Attendees.php:438
326
  msgid "%s - Attendee list"
327
  msgstr ""
328
 
329
+ #: src/Tribe/Attendees.php:511
330
  msgctxt "attendee export"
331
  msgid "Order ID"
332
  msgstr ""
333
 
334
+ #: src/Tribe/Attendees.php:512
335
  msgctxt "attendee export"
336
  msgid "Order Status"
337
  msgstr ""
338
 
339
+ #: src/Tribe/Attendees.php:513
340
  msgctxt "attendee export"
341
  msgid "%s ID"
342
  msgstr ""
343
 
344
+ #: src/Tribe/Attendees.php:514
345
  msgctxt "attendee export"
346
  msgid "Customer Name"
347
  msgstr ""
348
 
349
+ #: src/Tribe/Attendees.php:515
350
  msgctxt "attendee export"
351
  msgid "Customer Email Address"
352
  msgstr ""
353
 
354
+ #: src/Tribe/Attendees.php:544 src/admin-views/tribe-options-tickets.php:244
355
+ #: src/admin-views/tribe-options-tickets.php:256
356
  msgid "Yes"
357
  msgstr ""
358
 
359
+ #: src/Tribe/Attendees.php:653
360
  msgid "attendees"
361
  msgstr ""
362
 
363
+ #: src/Tribe/Attendees.php:687
364
  msgid "Invalid Event ID"
365
  msgstr ""
366
 
367
+ #: src/Tribe/Attendees.php:704
368
  msgid "Cheatin Huh?"
369
  msgstr ""
370
 
371
+ #: src/Tribe/Attendees.php:710
372
  msgid "Empty user and email"
373
  msgstr ""
374
 
375
+ #: src/Tribe/Attendees.php:722
376
  msgid "Invalid Email"
377
  msgstr ""
378
 
379
+ #: src/Tribe/Attendees.php:728 src/Tribe/Attendees.php:744
380
  msgid "Invalid User ID"
381
  msgstr ""
382
 
383
+ #: src/Tribe/Attendees.php:764
384
  msgid "Attendee List for: %s"
385
  msgstr ""
386
 
387
+ #: src/Tribe/Attendees.php:765
388
  msgid "Error when sending the email"
389
  msgstr ""
390
 
391
+ #: src/Tribe/Attendees.php:772
392
  msgid "Email sent successfully!"
393
  msgstr ""
394
 
822
  msgid "Post draft updated."
823
  msgstr ""
824
 
825
+ #: src/Tribe/Commerce/PayPal/Main.php:2966 src/Tribe/RSVP.php:2062
826
  msgid "(deleted)"
827
  msgstr ""
828
 
957
  msgid "unavailable"
958
  msgstr ""
959
 
960
+ #: src/Tribe/Editor/Attendee_Registration.php:127
961
  msgid "return to the content editor"
962
  msgstr ""
963
 
964
+ #: src/Tribe/Editor/Attendee_Registration.php:129
965
  msgid "Attendee Registration fields saved. Make additional changes or %1$s"
966
  msgstr ""
967
 
968
+ #: src/Tribe/Editor/Attendee_Registration.php:156
969
  msgid "Back to Editor"
970
  msgstr ""
971
 
972
+ #: src/Tribe/Editor/Attendee_Registration.php:165
973
  msgid "Save Changes"
974
  msgstr ""
975
 
976
+ #: src/Tribe/Editor/Attendee_Registration.php:177
977
  msgid "Are you sure you want to leave this page?"
978
  msgstr ""
979
 
985
  msgid "Are you sure you want to cancel?"
986
  msgstr ""
987
 
988
+ #: src/Tribe/Editor/Blocks/Tickets.php:297 src/Tribe/Tickets.php:3755
989
  msgctxt "Error message title, will be followed by the error code."
990
  msgid "API Error"
991
  msgstr ""
992
 
993
+ #: src/Tribe/Editor/Blocks/Tickets.php:298 src/Tribe/Tickets.php:3756
994
  msgid ""
995
  "Refresh this page or wait a few minutes before trying again. If this happens "
996
  "repeatedly, please contact the Site Admin."
997
  msgstr ""
998
 
999
+ #: src/Tribe/Editor/Blocks/Tickets.php:299 src/Tribe/Tickets.php:3757
1000
  msgid ""
1001
  "The ticket for this event has sold out and has been removed from your cart."
1002
  msgstr ""
1003
 
1004
+ #: src/Tribe/Editor/Blocks/Tickets.php:300 src/Tribe/Tickets.php:3758
1005
  msgid "Whoops!"
1006
  msgstr ""
1007
 
1008
+ #: src/Tribe/Editor/Blocks/Tickets.php:301 src/Tribe/Tickets.php:3759
1009
  msgctxt "The %s will change based on the error produced."
1010
  msgid "You have %s ticket(s) with a field that requires information."
1011
  msgstr ""
1033
  msgid "%s was not able to be updated"
1034
  msgstr ""
1035
 
1036
+ #. translators: %1$s: URL for help link, %2$s: Label for help link.
1037
+ #: src/Tribe/Editor/Warnings.php:77
1038
+ msgctxt "Helper link in Ticket Editor"
1039
+ msgid "Learn More"
1040
+ msgstr ""
1041
+
1042
+ #. translators: %1$s: link to help article.
1043
+ #: src/Tribe/Editor/Warnings.php:83
1044
+ msgid ""
1045
+ "There is no payment gateway configured. To create tickets, you'll need to "
1046
+ "enable and configure an ecommerce solution. %1$s"
1047
+ msgstr ""
1048
+
1049
+ #: src/Tribe/Editor/Warnings.php:97
1050
+ msgid ""
1051
+ "This is a recurring event. If you add tickets, they will only show up on "
1052
+ "first event in the recurrence series. Please carefully configure your "
1053
+ "recurring events."
1054
+ msgstr ""
1055
+
1056
  #: src/Tribe/Editor.php:208
1057
  msgid "Tickets Blocks"
1058
  msgstr ""
1116
  msgid "Tickets"
1117
  msgstr ""
1118
 
1119
+ #: src/Tribe/Main.php:413
1120
  msgid ""
1121
  "When The Events Calendar and Event Tickets are both activated, The Events "
1122
  "Calendar must be running version %1$s or greater. Please %2$supdate now.%3$s"
1123
  msgstr ""
1124
 
1125
+ #: src/Tribe/Main.php:476
1126
  msgid ""
1127
  "Sorry, Event Tickets requires WordPress %s or higher. Please upgrade your "
1128
  "WordPress install."
1129
  msgstr ""
1130
 
1131
+ #: src/Tribe/Main.php:480
1132
  msgid ""
1133
  "Sorry, Event Tickets requires PHP %s or higher. Talk to your Web host about "
1134
  "moving you to a newer version of PHP."
1135
  msgstr ""
1136
 
1137
+ #: src/Tribe/Main.php:604
1138
  msgid "Support for Event Tickets"
1139
  msgstr ""
1140
 
1141
+ #: src/Tribe/Main.php:606
1142
  msgid "Settings overview"
1143
  msgstr ""
1144
 
1145
+ #: src/Tribe/Main.php:607
1146
  msgid "Features overview"
1147
  msgstr ""
1148
 
1149
+ #: src/Tribe/Main.php:608
1150
  msgid "Troubleshooting common problems"
1151
  msgstr ""
1152
 
1153
+ #: src/Tribe/Main.php:609
1154
  msgid "Customizing Event Tickets"
1155
  msgstr ""
1156
 
1157
+ #: src/Tribe/Main.php:626
1158
  msgid "New User Primer"
1159
  msgstr ""
1160
 
1161
+ #: src/Tribe/Main.php:628
1162
  msgctxt "help feature box section"
1163
  msgid ""
1164
  "We are committed to helping you sell %1$s for your event. Check out our "
1165
  "handy %2$s to get started."
1166
  msgstr ""
1167
 
1168
+ #: src/Tribe/Main.php:645
1169
  msgid "open-source forum on WordPress.org"
1170
  msgstr ""
1171
 
1172
+ #: src/Tribe/Main.php:646
1173
  msgid ""
1174
  "If you have tried the above steps and are still having trouble, you can post "
1175
  "a new thread to our %s. Our support staff monitors these forums once a week "
1176
  "and would be happy to assist you there."
1177
  msgstr ""
1178
 
1179
+ #: src/Tribe/Main.php:648
1180
  msgid "premium support on our website"
1181
  msgstr ""
1182
 
1183
+ #: src/Tribe/Main.php:650
 
 
 
 
 
1184
  msgid ""
1185
  "Looking for more immediate support? We offer %1$s with the purchase of any "
1186
  "of our premium plugins (like %2$s). Pick up a license and you can post there "
1187
  "directly and expect a response within 24-48 hours during weekdays."
1188
  msgstr ""
1189
 
1190
+ #: src/Tribe/Main.php:652 src/Tribe/Main.php:657
1191
  msgid "post a thread"
1192
  msgstr ""
1193
 
1194
+ #: src/Tribe/Main.php:653
1195
  msgid ""
1196
  "Already have Event Tickets Plus? You can %s in our premium support forums. "
1197
  "Our support team monitors the forums and will respond to your thread within "
1198
  "24-48 hours (during the week)."
1199
  msgstr ""
1200
 
1201
+ #: src/Tribe/Main.php:658
1202
  msgid ""
1203
  "If you have a valid license for one of our paid plugins, you can %s in our "
1204
  "premium support forums. Our support team monitors the forums and will "
1205
  "respond to your thread within 24-48 hours (during the week)."
1206
  msgstr ""
1207
 
1208
+ #: src/Tribe/Main.php:680
1209
  msgid "Event Tickets - Legacy"
1210
  msgstr ""
1211
 
1212
+ #: src/Tribe/Main.php:816
1213
  msgid "Welcome to Event Tickets!"
1214
  msgstr ""
1215
 
1216
+ #: src/Tribe/Main.php:969
1217
  msgid "Buy"
1218
  msgstr ""
1219
 
1220
+ #: src/Tribe/Main.php:1048
1221
  msgid ""
1222
  "When Event Tickets and Event Tickets Plus are both activated, Event Tickets "
1223
  "Plus must be running version %1$s or greater. Please %2$smanually update now"
2284
  msgid "Quick Links:"
2285
  msgstr ""
2286
 
2287
+ #: src/admin-views/admin-welcome-message.php:76
2288
+ #: src/admin-views/admin-welcome-message.php:86
2289
+ #: src/admin-views/admin-welcome-message.php:96
2290
+ #: src/admin-views/admin-welcome-message.php:106
2291
  msgid "Configure Settings"
2292
  msgstr ""
2293
 
2294
+ #: src/admin-views/admin-welcome-message.php:79
2295
+ #: src/admin-views/admin-welcome-message.php:89
2296
  msgid "Install WooCommerce"
2297
  msgstr ""
2298
 
2299
+ #: src/admin-views/admin-welcome-message.php:82
2300
  msgid "Create Ticket"
2301
  msgstr ""
2302
 
2303
+ #: src/admin-views/admin-welcome-message.php:92
2304
+ #: src/admin-views/admin-welcome-message.php:109
2305
  msgid "Install The Events Calendar"
2306
  msgstr ""
2307
 
2308
+ #: src/admin-views/admin-welcome-message.php:99
2309
  msgid "Create RSVP"
2310
  msgstr ""
2311
 
2312
+ #: src/admin-views/admin-welcome-message.php:102
2313
+ #: src/admin-views/admin-welcome-message.php:112
2314
  msgid "Setup PayPal"
2315
  msgstr ""
2316
 
2317
+ #: src/admin-views/admin-welcome-message.php:118
2318
  msgid "Helpful Resources"
2319
  msgstr ""
2320
 
2321
+ #: src/admin-views/admin-welcome-message.php:133
2322
+ #: src/admin-views/admin-welcome-message.php:186
2323
+ #: src/admin-views/admin-welcome-message.php:208
2324
  msgid "Illustration of a book with The Events Calendar logo"
2325
  msgstr ""
2326
 
2327
+ #: src/admin-views/admin-welcome-message.php:135
2328
  msgid "Getting Started Guide"
2329
  msgstr ""
2330
 
2331
+ #: src/admin-views/admin-welcome-message.php:136
2332
  msgid "New to Event Tickets? Here's everything you need to get started."
2333
  msgstr ""
2334
 
2335
+ #: src/admin-views/admin-welcome-message.php:137
2336
  msgid "Check out the guide"
2337
  msgstr ""
2338
 
2339
+ #: src/admin-views/admin-welcome-message.php:143
2340
  msgid "Illustration of a thought lightbulb coming from a book"
2341
  msgstr ""
2342
 
2343
+ #: src/admin-views/admin-welcome-message.php:145
2344
  msgid "Knowledgebase"
2345
  msgstr ""
2346
 
2347
+ #: src/admin-views/admin-welcome-message.php:146
2348
  msgid ""
2349
  "Ready to dig deeper? Our Knowledgebase can help you get the most out of The "
2350
  "Events Calendar suite."
2351
  msgstr ""
2352
 
2353
+ #: src/admin-views/admin-welcome-message.php:147
2354
  msgid "Dig deeper"
2355
  msgstr ""
2356
 
2357
+ #: src/admin-views/admin-welcome-message.php:153
2358
  msgid "Illustration of characters being translated"
2359
  msgstr ""
2360
 
2361
+ #: src/admin-views/admin-welcome-message.php:155
2362
  msgid "Translations"
2363
  msgstr ""
2364
 
2365
+ #: src/admin-views/admin-welcome-message.php:156
2366
  msgid "Need a language other than English? We've got you covered here."
2367
  msgstr ""
2368
 
2369
+ #: src/admin-views/admin-welcome-message.php:157
2370
+ #: src/admin-views/admin-welcome-message.php:179
2371
+ #: src/admin-views/admin-welcome-message.php:199
2372
  msgid "Learn more"
2373
  msgstr ""
2374
 
2375
+ #: src/admin-views/admin-welcome-message.php:164
2376
  msgid "Illustration of a phone screen with a person's face"
2377
  msgstr ""
2378
 
2379
+ #: src/admin-views/admin-welcome-message.php:166
2380
  msgid "Virtual Event Resources"
2381
  msgstr ""
2382
 
2383
+ #: src/admin-views/admin-welcome-message.php:167
2384
  msgid ""
2385
  "Tips and tools to help with planning online events, webinars, and more on "
2386
  "WordPress and beyond."
2387
  msgstr ""
2388
 
2389
+ #: src/admin-views/admin-welcome-message.php:168
2390
  msgid "Get started with online events"
2391
  msgstr ""
2392
 
2393
+ #: src/admin-views/admin-welcome-message.php:176
2394
  msgid "Illustration of a power plug and gears"
2395
  msgstr ""
2396
 
2397
+ #: src/admin-views/admin-welcome-message.php:178
2398
  msgid "Browse our library of free extensions for Event Tickets."
2399
  msgstr ""
2400
 
2401
+ #: src/admin-views/admin-welcome-message.php:188
2402
+ #: src/admin-views/admin-welcome-message.php:210
2403
  msgid "Want to take your events to the next level?"
2404
  msgstr ""
2405
 
2406
+ #: src/admin-views/admin-welcome-message.php:189
2407
+ #: src/admin-views/admin-welcome-message.php:211
2408
  msgid "Check out our suite of add-ons"
2409
  msgstr ""
2410
 
2411
+ #: src/admin-views/admin-welcome-message.php:196
2412
  msgid "Illustration of a calendar"
2413
  msgstr ""
2414
 
2415
+ #: src/admin-views/admin-welcome-message.php:198
2416
  msgid "Add The Events Calendar (it's free!) to enhance Event Tickets."
2417
  msgstr ""
2418
 
2419
+ #: src/admin-views/admin-welcome-message.php:218
2420
  msgid "Illustration of a hand holding a ticket and the WooCommerce logo"
2421
  msgstr ""
2422
 
2423
+ #: src/admin-views/admin-welcome-message.php:220
2424
  msgid "Add WooCommerce integration, advanced registration, and more."
2425
  msgstr ""
2426
 
2427
+ #: src/admin-views/admin-welcome-message.php:221
2428
  msgid "Check out Event Tickets Plus"
2429
  msgstr ""
2430
 
2431
+ #: src/admin-views/admin-welcome-message.php:226
2432
  msgid "Want this emailed to you?"
2433
  msgstr ""
2434
 
2435
+ #: src/admin-views/admin-welcome-message.php:227
2436
  msgid ""
2437
  "Keep this list of links on hand and stay subscribed to receive tips and "
2438
  "tricks about The Events Calendar products."
2439
  msgstr ""
2440
 
2441
+ #: src/admin-views/admin-welcome-message.php:230
2442
  msgid "Your email"
2443
  msgstr ""
2444
 
2445
+ #: src/admin-views/admin-welcome-message.php:232
2446
  msgid "Sign Up"
2447
  msgstr ""
2448
 
2449
+ #: src/admin-views/admin-welcome-message.php:245
2450
  msgid "The Events Calendar brand logo"
2451
  msgstr ""
2452
 
2505
  msgid "Price"
2506
  msgstr ""
2507
 
2508
+ #: src/admin-views/editor/fieldset/advanced.php:22
 
 
 
 
 
 
 
 
2509
  msgid "Advanced"
2510
  msgstr ""
2511
 
2512
+ #: src/admin-views/editor/fieldset/advanced.php:25
2513
  msgid "Advanced Settings"
2514
  msgstr ""
2515
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2516
  #: src/admin-views/editor/fieldset/history.php:30
2517
  msgid "History"
2518
  msgstr ""
2551
  "Current sale or member price. This can be managed via the product editor."
2552
  msgstr ""
2553
 
2554
+ #: src/admin-views/editor/fieldset/settings-provider.php:36
2555
  msgid "Sell %s using:"
2556
  msgstr ""
2557
 
2558
+ #: src/admin-views/editor/fieldset/settings-provider.php:43
2559
  msgid ""
2560
  "It looks like you have multiple ecommerce plugins active. We recommend "
2561
  "running only one at a time. However, if you need to run multiple, please "
2562
  "select which one to use to sell %s for this event."
2563
  msgstr ""
2564
 
2565
+ #: src/admin-views/editor/fieldset/settings-provider.php:49
2566
  msgid ""
2567
  "Note: adjusting this setting will only impact new %1$s. Existing %1$s will "
2568
  "not change. We highly recommend that all %1$s for one event use the same "
2658
  msgstr ""
2659
 
2660
  #: src/admin-views/editor/panel/settings.php:112
2661
+ #: src/admin-views/editor/panel/ticket.php:514 src/admin-views/meta-box.php:304
2662
  #: src/views/v2/rsvp/ari/form/buttons.php:22
2663
  #: src/views/v2/rsvp/form/fields/cancel.php:23
2664
  msgid "Cancel"
2665
  msgstr ""
2666
 
2667
+ #: src/admin-views/editor/panel/ticket.php:55
2668
+ msgid "Start sale date cannot be empty."
2669
+ msgstr ""
2670
+
2671
+ #: src/admin-views/editor/panel/ticket.php:56
2672
+ msgid "Start sale date cannot be greater than End Sale date"
2673
+ msgstr ""
2674
+
2675
+ #. Translators: %s: dynamic 'RSVP' text.
2676
+ #: src/admin-views/editor/panel/ticket.php:66
2677
+ msgctxt "admin edit ticket panel error"
2678
+ msgid "%s type is a required field"
2679
+ msgstr ""
2680
+
2681
+ #. Translators: %s: dynamic 'Ticket' text.
2682
+ #: src/admin-views/editor/panel/ticket.php:76
2683
+ msgctxt "input start time ARIA label"
2684
+ msgid "%s start date"
2685
+ msgstr ""
2686
+
2687
+ #. Translators: %s: dynamic 'tickets' text.
2688
+ #: src/admin-views/editor/panel/ticket.php:86
2689
+ msgctxt "input start time help text title"
2690
+ msgid "If you do not set a start sale date, %s will be available immediately."
2691
+ msgstr ""
2692
+
2693
+ #. Translators: %s: dynamic 'Ticket' text.
2694
+ #: src/admin-views/editor/panel/ticket.php:96
2695
+ msgctxt "input end time ARIA label"
2696
+ msgid "%s end date"
2697
+ msgstr ""
2698
+
2699
+ #. Translators: %s: dynamic 'tickets' text.
2700
+ #: src/admin-views/editor/panel/ticket.php:106
2701
+ msgctxt "input end time help text title"
2702
+ msgid ""
2703
+ "If you do not set an end sale date, %s will be available until the event "
2704
+ "begins."
2705
+ msgstr ""
2706
+
2707
+ #. Translators: %s: dynamic 'tickets' text.
2708
+ #: src/admin-views/editor/panel/ticket.php:116
2709
+ msgctxt "input end time help text title"
2710
+ msgid "If you do not set an end sale date, %s will be available forever."
2711
+ msgstr ""
2712
+
2713
+ #. Translators: %s: dynamic 'tickets' text.
2714
+ #: src/admin-views/editor/panel/ticket.php:126
2715
+ msgctxt "meta box ticket form button text"
2716
+ msgid "Save %s"
2717
+ msgstr ""
2718
+
2719
+ #. Translators: %s: dynamic 'RSVP' text.
2720
+ #: src/admin-views/editor/panel/ticket.php:136
2721
+ msgctxt "RSVP form save value"
2722
+ msgid "Save %s"
2723
+ msgstr ""
2724
+
2725
+ #. Translators: %s: dynamic 'ticket' text.
2726
+ #. Translators: %s: dynamic 'RSVP' text.
2727
+ #: src/admin-views/editor/panel/ticket.php:175
2728
+ #: src/admin-views/editor/panel/ticket.php:220
2729
  msgctxt "admin add new ticket panel heading"
2730
  msgid "Add new %s"
2731
  msgstr ""
2732
 
2733
+ #. Translators: %s: dynamic 'ticket' text.
2734
+ #. Translators: %s: dynamic 'RSVP' text.
2735
+ #: src/admin-views/editor/panel/ticket.php:195
2736
+ #: src/admin-views/editor/panel/ticket.php:240
2737
  msgctxt "admin edit ticket panel heading"
2738
  msgid "Edit %s"
2739
  msgstr ""
2740
 
2741
+ #: src/admin-views/editor/panel/ticket.php:253
2742
  msgid "Type:"
2743
  msgstr ""
2744
 
2745
+ #. Translators: %1$s: dynamic 'ticket' text.
2746
+ #: src/admin-views/editor/panel/ticket.php:272
2747
+ msgctxt "admin edit ticket panel note"
2748
+ msgid ""
2749
+ "This is the name of your %1$s. It is displayed on the frontend of your "
2750
+ "website and within %1$s emails."
2751
  msgstr ""
2752
 
2753
+ #. Translators: %1$s: dynamic 'RSVP' text.
2754
+ #: src/admin-views/editor/panel/ticket.php:290
2755
+ msgctxt "admin edit RSVP panel note"
2756
+ msgid ""
2757
+ "This is the name of your %1$s. It is displayed on the frontend of your "
2758
+ "website and within %1$s emails."
2759
  msgstr ""
2760
 
2761
+ #: src/admin-views/editor/panel/ticket.php:302
2762
+ msgid "Description:"
2763
  msgstr ""
2764
 
2765
+ #. Translators: %s: dynamic 'tickets' text.
2766
+ #: src/admin-views/editor/panel/ticket.php:324
2767
+ msgctxt "default ticket provider"
2768
+ msgid "Show description on frontend %s form."
2769
  msgstr ""
2770
 
2771
+ #: src/admin-views/editor/panel/ticket.php:337 src/admin-views/meta-box.php:225
2772
+ msgid "Start sale:"
2773
+ msgstr ""
2774
+
2775
+ #: src/admin-views/editor/panel/ticket.php:350
2776
+ #: src/admin-views/editor/panel/ticket.php:380
2777
+ msgid "YYYY-MM-DD"
2778
+ msgstr ""
2779
+
2780
+ #: src/admin-views/editor/panel/ticket.php:351
2781
+ #: src/admin-views/editor/panel/ticket.php:381
2782
+ msgid "at"
2783
+ msgstr ""
2784
+
2785
+ #: src/admin-views/editor/panel/ticket.php:364
2786
+ #: src/admin-views/editor/panel/ticket.php:394
2787
+ msgid "HH:MM"
2788
+ msgstr ""
2789
+
2790
+ #: src/admin-views/editor/panel/ticket.php:370 src/admin-views/meta-box.php:256
2791
+ msgid "End sale:"
2792
+ msgstr ""
2793
+
2794
+ #: src/admin-views/editor/panel/ticket.php:410 src/admin-views/meta-box.php:167
2795
+ msgid "Sell using:"
2796
  msgstr ""
2797
 
2798
  #: src/admin-views/legacy-ticket-fields.php:19
3230
  msgid "%s Settings"
3231
  msgstr ""
3232
 
3233
+ #. Translators: %s: dynamic "tickets" text.
3234
+ #: src/admin-views/tribe-options-tickets.php:66
3235
  msgctxt "tickets fields settings enabled post types"
3236
  msgid "Post types that can have %s"
3237
  msgstr ""
3238
 
3239
+ #: src/admin-views/tribe-options-tickets.php:90
3240
  msgid "Below the event details [default]"
3241
  msgstr ""
3242
 
3243
+ #: src/admin-views/tribe-options-tickets.php:91
3244
  msgid "Above the event details"
3245
  msgstr ""
3246
 
3247
+ #: src/admin-views/tribe-options-tickets.php:92
3248
  msgid "Below the event description"
3249
  msgstr ""
3250
 
3251
+ #: src/admin-views/tribe-options-tickets.php:93
3252
  msgid "Above the event description"
3253
  msgstr ""
3254
 
3255
+ #: src/admin-views/tribe-options-tickets.php:99
3256
+ #: src/admin-views/tribe-options-tickets.php:108
3257
  msgctxt "form location setting"
3258
  msgid "Location of %s form"
3259
  msgstr ""
3260
 
3261
+ #: src/admin-views/tribe-options-tickets.php:100
3262
+ #: src/admin-views/tribe-options-tickets.php:109
3263
  msgid "This setting only impacts events made with the classic editor."
3264
  msgstr ""
3265
 
3266
+ #: src/admin-views/tribe-options-tickets.php:117
3267
  msgctxt "tickets remaining threshold label"
3268
  msgid "Display # %s left threshold"
3269
  msgstr ""
3270
 
3271
+ #: src/admin-views/tribe-options-tickets.php:118
3272
  msgctxt "tickets remaining threshold tooltip"
3273
  msgid ""
3274
  "If this number is less than the number of %1$s left for sale on your event, "
3276
  "You can leave this blank if you would like to always show the text."
3277
  msgstr ""
3278
 
3279
+ #: src/admin-views/tribe-options-tickets.php:130
3280
  msgid "Login Requirements"
3281
  msgstr ""
3282
 
3283
+ #: src/admin-views/tribe-options-tickets.php:135
3284
  msgctxt "ticket authentication requirements"
3285
  msgid ""
3286
  "You can require that users log into your site before they are able to %1$s "
3288
  "%3$sGeneral Settings admin screen%4$s) before adjusting this setting."
3289
  msgstr ""
3290
 
3291
+ #: src/admin-views/tribe-options-tickets.php:161
3292
  msgid "Check it out!"
3293
  msgstr ""
3294
 
3295
+ #: src/admin-views/tribe-options-tickets.php:165
3296
  msgctxt "about Tribe Commerce"
3297
  msgid ""
3298
  "Tribe Commerce is a light implementation of a commerce gateway using PayPal "
3303
  "%3$s"
3304
  msgstr ""
3305
 
3306
+ #: src/admin-views/tribe-options-tickets.php:191
3307
  msgid "these instructions"
3308
  msgstr ""
3309
 
3310
+ #: src/admin-views/tribe-options-tickets.php:192
3311
  msgctxt "tickets fields settings PayPal setup"
3312
  msgid ""
3313
  "In order to use Tribe Commerce to sell %1$s, you must configure your PayPal "
3315
  "set up, follow %2$s"
3316
  msgstr ""
3317
 
3318
+ #: src/admin-views/tribe-options-tickets.php:196
3319
  msgid ""
3320
  "Have you entered this site's address in the Notification URL field in IPN "
3321
  "Settings?"
3322
  msgstr ""
3323
 
3324
+ #: src/admin-views/tribe-options-tickets.php:198
3325
  msgid "Your site address is: %s"
3326
  msgstr ""
3327
 
3328
+ #: src/admin-views/tribe-options-tickets.php:206
3329
  msgid "Tribe Commerce"
3330
  msgstr ""
3331
 
3332
+ #: src/admin-views/tribe-options-tickets.php:214
3333
  msgid "Enable Tribe Commerce "
3334
  msgstr ""
3335
 
3336
+ #: src/admin-views/tribe-options-tickets.php:215
3337
  msgid "Check this box if you wish to turn on Tribe Commerce functionality."
3338
  msgstr ""
3339
 
3340
+ #: src/admin-views/tribe-options-tickets.php:228
3341
  msgid "Configure PayPal:"
3342
  msgstr ""
3343
 
3344
+ #: src/admin-views/tribe-options-tickets.php:234
3345
  msgid "PayPal email to receive payments:"
3346
  msgstr ""
3347
 
3348
+ #: src/admin-views/tribe-options-tickets.php:242
3349
  msgid ""
3350
  "Have you enabled instant payment notifications (IPN) in your PayPal "
3351
  "account's Selling Tools?"
3352
  msgstr ""
3353
 
3354
+ #: src/admin-views/tribe-options-tickets.php:245
3355
+ #: src/admin-views/tribe-options-tickets.php:257
3356
  msgid "No"
3357
  msgstr ""
3358
 
3359
+ #: src/admin-views/tribe-options-tickets.php:268
3360
  msgid "PayPal configuration status:"
3361
  msgstr ""
3362
 
3363
+ #: src/admin-views/tribe-options-tickets.php:271
3364
  msgid ""
3365
  "For help creating and configuring your account, call PayPal at "
3366
  "1-844-720-4038 (USA)"
3367
  msgstr ""
3368
 
3369
+ #: src/admin-views/tribe-options-tickets.php:280
3370
  msgid "PayPal Sandbox"
3371
  msgstr ""
3372
 
3373
+ #: src/admin-views/tribe-options-tickets.php:281
3374
  msgid "Enables PayPal Sandbox mode for testing."
3375
  msgstr ""
3376
 
3377
+ #: src/admin-views/tribe-options-tickets.php:287
3378
  msgid "Currency Code"
3379
  msgstr ""
3380
 
3381
+ #: src/admin-views/tribe-options-tickets.php:288
3382
  msgid "The currency that will be used for Tribe Commerce transactions."
3383
  msgstr ""
3384
 
3385
+ #: src/admin-views/tribe-options-tickets.php:295
3386
  msgid "Stock Handling"
3387
  msgstr ""
3388
 
3389
+ #: src/admin-views/tribe-options-tickets.php:296
3390
  msgctxt "tickets fields settings paypal stock handling"
3391
  msgid ""
3392
  "When a customer purchases a %s, PayPal might flag the order as Pending. The "
3393
  "order will be Complete once payment is confirmed by PayPal."
3394
  msgstr ""
3395
 
3396
+ #: src/admin-views/tribe-options-tickets.php:301
3397
  msgid "Decrease available %s stock as soon as a Pending order is created."
3398
  msgstr ""
3399
 
3400
+ #: src/admin-views/tribe-options-tickets.php:305
3401
  msgid ""
3402
  "Only decrease available %s stock if an order is confirmed as Completed by "
3403
  "PayPal."
3404
  msgstr ""
3405
 
3406
+ #: src/admin-views/tribe-options-tickets.php:313
3407
  msgid "Success page"
3408
  msgstr ""
3409
 
3410
+ #: src/admin-views/tribe-options-tickets.php:316
3411
  msgid ""
3412
  "After a successful PayPal order users will be redirected to this page; use "
3413
  "the %s shortcode to display the order confirmation to the user in the page "
3414
  "content."
3415
  msgstr ""
3416
 
3417
+ #: src/admin-views/tribe-options-tickets.php:327
3418
  msgid "Confirmation email sender address"
3419
  msgstr ""
3420
 
3421
+ #: src/admin-views/tribe-options-tickets.php:328
3422
  msgctxt "tickets fields settings paypal confirmation email"
3423
  msgid ""
3424
  "Email address PayPal %s customers will receive confirmation from. Leave "
3425
  "empty to use the default WordPress site email address."
3426
  msgstr ""
3427
 
3428
+ #: src/admin-views/tribe-options-tickets.php:336
3429
  msgid "Confirmation email sender name"
3430
  msgstr ""
3431
 
3432
+ #: src/admin-views/tribe-options-tickets.php:337
3433
  msgctxt "tickets fields settings paypal email sender"
3434
  msgid ""
3435
  "Sender name of the confirmation email sent to customers when confirming a %s "
3436
  "purchase."
3437
  msgstr ""
3438
 
3439
+ #: src/admin-views/tribe-options-tickets.php:345
3440
  msgid "Confirmation email subject"
3441
  msgstr ""
3442
 
3443
+ #: src/admin-views/tribe-options-tickets.php:346
3444
  msgctxt "tickets fields settings paypal email subject"
3445
  msgid ""
3446
  "Subject of the confirmation email sent to customers when confirming a %s "
3447
  "purchase."
3448
  msgstr ""
3449
 
3450
+ #: src/admin-views/tribe-options-tickets.php:348
3451
  msgctxt "tickets fields settings paypal email subject"
3452
  msgid "You have %s!"
3453
  msgstr ""
3454
 
3455
+ #: src/admin-views/tribe-options-tickets.php:360
3456
  msgid ""
3457
  "You can see and manage your IPN Notifications history from the IPN "
3458
  "Notifications settings area (%s)."
3459
  msgstr ""
3460
 
3461
+ #: src/admin-views/tribe-options-tickets.php:370
3462
  msgid "IPN Notify URL"
3463
  msgstr ""
3464
 
3465
+ #: src/admin-views/tribe-options-tickets.php:372
3466
  msgid ""
3467
  "Override the default IPN notify URL with this value. This value must be the "
3468
  "same set in PayPal IPN Notifications settings area (%s)."
3870
  "information as well as change ticket quantities."
3871
  msgstr ""
3872
 
3873
+ #: src/views/components/loader.php:18
3874
  msgid "Loading..."
3875
  msgstr ""
3876
 
3906
  msgstr ""
3907
 
3908
  #: src/views/modal/registration-js.php:50
3909
+ #: src/views/registration-js/content.php:100
3910
  msgctxt ""
3911
  "Note about missing required fields, %s is the html-wrapped number of tickets."
3912
  msgid "You have %s ticket(s) with a field that requires information."
3913
  msgstr ""
3914
 
3915
  #: src/views/modal/registration-js.php:97
3916
+ #: src/views/registration-js/content.php:196
3917
  msgctxt ""
3918
  "Note that there are more tickets in the cart, %s is the html-wrapped number."
3919
  msgid ""
3923
 
3924
  #: src/views/modal/registration-js.php:116 src/views/modal/registration.php:35
3925
  #: src/views/registration/content.php:111
 
3926
  msgid "Save and Checkout"
3927
  msgstr ""
3928
 
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Event Tickets ===
2
 
3
- Contributors: ModernTribe, brianjessee, camwynsp, paulkim, sc0ttkclark, aguseo, bordoni, borkweb, cliffpaulick, GeoffBel, geoffgraham, jentheo, leahkoerper, lucatume, neillmcshea, patriciahillebrandt, peterchester, reid.peifer, shane.pearlman, vicskf, zbtirrell, juanfra
4
  Tags: tickets, registration, The Events Calendar, RSVP, ticket sales, attendee management
5
  Requires at least: 4.9.14
6
- Tested up to: 5.5.3
7
- Stable tag: 5.0.3.1
8
  Requires PHP: 5.6
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -17,7 +17,7 @@ Manage tickets and RSVPs for free with [Event Tickets](https://m.tri.be/1ao8), f
17
 
18
  This plugin makes it easy to sell tickets and collect registration for in-person or virtual events. Plus, it comes with features backed by our world-class team of developers and designers. Integrate Event Tickets with your PayPal business account and manage attendees from your WordPress dashboard.
19
 
20
- https://vimeo.com/480516958
21
 
22
  = 🎟️ Ticketing and Registration for WordPress =
23
 
@@ -176,6 +176,26 @@ Check out our extensive [knowledgebase](https://m.tri.be/18wm) for articles on u
176
 
177
  == Changelog ==
178
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  = [5.0.3.1] 2020-11-19 =
180
 
181
  * Fix - Require Event Tickets Plus 5.1+ for compatibility purposes on certain areas in Event Tickets that have direct calls to Event Tickets Plus functionality. [ET-964]
1
  === Event Tickets ===
2
 
3
+ Contributors: ModernTribe, brianjessee, camwynsp, paulkim, sc0ttkclark, aguseo, bordoni, borkweb, GeoffBel, geoffgraham, jentheo, leahkoerper, lucatume, neillmcshea, patriciahillebrandt, peterchester, reid.peifer, shane.pearlman, vicskf, zbtirrell, juanfra
4
  Tags: tickets, registration, The Events Calendar, RSVP, ticket sales, attendee management
5
  Requires at least: 4.9.14
6
+ Tested up to: 5.6.0
7
+ Stable tag: 5.0.4
8
  Requires PHP: 5.6
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
17
 
18
  This plugin makes it easy to sell tickets and collect registration for in-person or virtual events. Plus, it comes with features backed by our world-class team of developers and designers. Integrate Event Tickets with your PayPal business account and manage attendees from your WordPress dashboard.
19
 
20
+ https://vimeo.com/480516958/dda22d4e01
21
 
22
  = 🎟️ Ticketing and Registration for WordPress =
23
 
176
 
177
  == Changelog ==
178
 
179
+ = [5.0.4] 2020-12-15 =
180
+
181
+ * Fix - Exclude the "RSVP" ticket provider from the providers list in the editor for tickets. [ET-953]
182
+ * Fix - Post type settings label typo changed to plural "tickets". [ET-954]
183
+ * Fix - RSVP/Ticket's end sale date for non-event post types now defaults to 1 year and 2 hrs from current date instead of 100 years. [ET-954]
184
+ * Fix - Remove the Custom Class Name from the block interface for the Event Tickets blocks to prevent extra interface options that are unused. [ET-960]
185
+ * Fix - Remove extraneous "Save and checkout" heading from the `registration-js/content.php` view. [ET-955]
186
+ * Fix - Prevent PHP notices by setting up the `must_login` argument within the `registration-js/mini-cart.php` view. [ET-955]
187
+ * Fix - Make the "Configure Settings" link on the Welcome screen for Event Tickets open up in a new tab. [ET-958]
188
+ * Fix - Update loader templates to use new icons from Tribe Common. [ET-588]
189
+ * Fix - Resolve PHP notices on the Attendee Registration Page from Tribe Commerce ticket details when multiple Commerce Providers may be available. [ET-599]
190
+ * Fix - Prevent potential conflicts with themes like Avada that manually trigger a jQuery ready event during the normal jQuery ready event. [ETP-601]
191
+ * Tweak - Add opaque backgrounds for selected bordered elements. [ET-944]
192
+ * Tweak - Added admin notice when editing an Events Calendar Pro recurring event that has tickets in classic editor to warn about how tickets will act on recurring events. [ET-949]
193
+ * Tweak - Show warning message within the classic ticket editor if no commerce provider is active. [ET-957]
194
+ * Tweak - Show warning message within the classic ticket editor for recurring events about the limitations of tickets on recurring events. [ET-947]
195
+ * Tweak - Show confirmation dialog before deleting an attendee on the attendee list. [ET-648]
196
+ * Tweak - Rearrange Classic Editor's ticket settings so all "Advanced" fields are into the main section, other than the non-RSVP fields for "SKU" and "Ecommerce". [ET-950]
197
+ * Language - 16 new strings added, 167 updated, 0 fuzzied, and 7 obsoleted
198
+
199
  = [5.0.3.1] 2020-11-19 =
200
 
201
  * Fix - Require Event Tickets Plus 5.1+ for compatibility purposes on certain areas in Event Tickets that have direct calls to Event Tickets Plus functionality. [ET-964]
src/Tribe/Admin/Notices.php CHANGED
@@ -13,7 +13,7 @@ class Tribe__Tickets__Admin__Notices {
13
  * @since 4.7
14
  */
15
  public function hook() {
16
- add_action( 'admin_init', array( $this, 'maybe_display_notices' ) );
17
  }
18
 
19
  /**
@@ -30,9 +30,11 @@ class Tribe__Tickets__Admin__Notices {
30
  return;
31
  }
32
 
33
- $this->maybe_display_plus_commerce_notice();
34
 
35
  $this->maybe_display_rsvp_new_views_options_notice();
 
 
36
  }
37
 
38
  /**
@@ -112,6 +114,80 @@ class Tribe__Tickets__Admin__Notices {
112
  );
113
  }
114
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  /**
116
  * Display a notice for the user about missing support if ET+ supported commerce providers are active
117
  * but ET+ is not.
@@ -119,8 +195,6 @@ class Tribe__Tickets__Admin__Notices {
119
  * @since 4.7
120
  */
121
  public function maybe_display_plus_commerce_notice() {
122
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
123
-
124
  if ( class_exists( 'Tribe__Tickets_Plus__Main' ) ) {
125
  return;
126
  }
@@ -137,26 +211,30 @@ class Tribe__Tickets__Admin__Notices {
137
  $plus = sprintf(
138
  '<a target="_blank" rel="noopener nofollow" href="%s">%s</a>',
139
  esc_attr( $plus_link ),
140
- esc_html( 'Event Tickets Plus', 'event-tickets' )
141
  );
142
 
143
- $plus_commerce_providers = array(
144
- esc_html( 'WooCommerce', 'event-tickets' ) => 'woocommerce/woocommerce.php',
145
- esc_html( 'Easy Digital Downloads', 'event-tickets' ) => 'easy-digital-downloads/easy-digital-downloads.php',
146
- );
147
 
148
- foreach ( $plus_commerce_providers as $provider => $path ) {
149
  if ( ! is_plugin_active( $path ) ) {
150
  continue;
151
  }
152
 
153
  $message = sprintf(
154
- __( 'Event Tickets does not support ticket sales via third party ecommerce plugins. If you want to sell tickets with %1$s, please purchase a license for %2$s.' ),
155
- $provider,
 
156
  $plus
157
  );
158
 
159
- tribe_notice( "event-tickets-plus-missing-{$provider}-support", "<p>{$message}</p>", 'dismiss=1&type=warning' );
 
 
 
160
  }
161
  }
162
  }
13
  * @since 4.7
14
  */
15
  public function hook() {
16
+ add_action( 'admin_init', [ $this, 'maybe_display_notices' ] );
17
  }
18
 
19
  /**
30
  return;
31
  }
32
 
33
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
34
 
35
  $this->maybe_display_rsvp_new_views_options_notice();
36
+ $this->maybe_display_classic_editor_ecp_recurring_tickets_notice();
37
+ $this->maybe_display_plus_commerce_notice();
38
  }
39
 
40
  /**
114
  );
115
  }
116
 
117
+ /**
118
+ * Display dismissible notice about recurring events tickets, per event.
119
+ *
120
+ * @since 5.0.4
121
+ */
122
+ public function maybe_display_classic_editor_ecp_recurring_tickets_notice() {
123
+ $post_id = absint( tribe_get_request_var( 'post' ) );
124
+
125
+ if ( empty( $post_id ) ) {
126
+ return;
127
+ }
128
+
129
+ // Warning: Changing this would invalidate all past dismissals.
130
+ $slug_prefix = 'tribe_notice_classic_editor_ecp_recurring_tickets';
131
+ $notice_slug = sprintf( '%s-%d', $slug_prefix, $post_id );
132
+
133
+ // Bail if this notice was previously dismissed for this TEC event.
134
+ if ( Tribe__Admin__Notices::instance()->has_user_dimissed( $notice_slug ) ) {
135
+ return;
136
+ }
137
+
138
+ /** @var Tribe__Tickets__Editor__Template__Overwrite $template_overwrite */
139
+ $template_overwrite = tribe( 'tickets.editor.template.overwrite' );
140
+
141
+ if (
142
+ ! function_exists( 'tribe_is_recurring_event' )
143
+ || ! tribe_is_recurring_event( $post_id )
144
+ || ! tribe_events_has_tickets( $post_id )
145
+ || ! $template_overwrite->has_classic_editor( $post_id )
146
+ ) {
147
+ return;
148
+ }
149
+
150
+ $heading = sprintf(
151
+ // Translators: %1$s: dynamic "Tickets" text, %2$s: dynamic "Event" text.
152
+ _x(
153
+ '%1$s for Recurring %2$s',
154
+ 'heading for classic editor notice if Events Calendar Pro event has tickets',
155
+ 'event-tickets'
156
+ ),
157
+ tribe_get_ticket_label_plural( $slug_prefix ),
158
+ tribe_get_event_label_singular()
159
+ );
160
+
161
+ $text = sprintf(
162
+ // Translators: %1$s: dynamic "event" text, %2$s: dynamic "ticket" text, %3$s: dynamic "tickets" text, %4$s: dynamic "RSVP" text, %5$s: dynamic "Ticket" text.
163
+ _x(
164
+ 'Heads up! You saved a recurring %1$s with a %2$s. Please note that we do not currently support recurring %3$s. Only the first instance of this recurring series will have your %4$s or %5$s displayed.',
165
+ 'text for classic editor notice if Events Calendar Pro event has tickets',
166
+ 'event-tickets'
167
+ ),
168
+ tribe_get_event_label_singular_lowercase(),
169
+ tribe_get_ticket_label_singular_lowercase( $slug_prefix ),
170
+ tribe_get_ticket_label_plural_lowercase( $slug_prefix ),
171
+ tribe_get_rsvp_label_singular( $slug_prefix ),
172
+ tribe_get_ticket_label_singular( $slug_prefix )
173
+ );
174
+
175
+ $message = sprintf(
176
+ '<h3>%1$s</h3>%2$s',
177
+ esc_html( $heading ),
178
+ wpautop( esc_html( $text ) )
179
+ );
180
+
181
+ tribe_notice(
182
+ $notice_slug,
183
+ $message,
184
+ [
185
+ 'dismiss' => true,
186
+ 'type' => 'warning',
187
+ ]
188
+ );
189
+ }
190
+
191
  /**
192
  * Display a notice for the user about missing support if ET+ supported commerce providers are active
193
  * but ET+ is not.
195
  * @since 4.7
196
  */
197
  public function maybe_display_plus_commerce_notice() {
 
 
198
  if ( class_exists( 'Tribe__Tickets_Plus__Main' ) ) {
199
  return;
200
  }
211
  $plus = sprintf(
212
  '<a target="_blank" rel="noopener nofollow" href="%s">%s</a>',
213
  esc_attr( $plus_link ),
214
+ esc_html__( 'Event Tickets Plus', 'event-tickets' )
215
  );
216
 
217
+ $plus_commerce_providers = [
218
+ 'woocommerce/woocommerce.php' => __( 'WooCommerce', 'event-tickets' ),
219
+ 'easy-digital-downloads/easy-digital-downloads.php' => __( 'Easy Digital Downloads', 'event-tickets' ),
220
+ ];
221
 
222
+ foreach ( $plus_commerce_providers as $path => $provider ) {
223
  if ( ! is_plugin_active( $path ) ) {
224
  continue;
225
  }
226
 
227
  $message = sprintf(
228
+ // translators: %1$s: The ticket commerce provider (WooCommerce, etc); %2$s: The Event Tickets Plus plugin name and link.
229
+ esc_html__( 'Event Tickets does not support ticket sales via third party ecommerce plugins. If you want to sell tickets with %1$s, please purchase a license for %2$s.', 'event-tickets' ),
230
+ esc_html( $provider ),
231
  $plus
232
  );
233
 
234
+ // Wrap in <p> tag.
235
+ $message = sprintf( '<p>%s</p>', $message );
236
+
237
+ tribe_notice( "event-tickets-plus-missing-{$provider}-support", $message, 'dismiss=1&type=warning' );
238
  }
239
  }
240
  }
src/Tribe/Attendees.php CHANGED
@@ -307,7 +307,13 @@ class Tribe__Tickets__Attendees {
307
 
308
  add_thickbox();
309
 
310
- $mail_data = array(
 
 
 
 
 
 
311
  'nonce' => wp_create_nonce( 'email-attendee-list' ),
312
  'required' => esc_html__( 'You need to select a user or type a valid email address', 'event-tickets' ),
313
  'sending' => esc_html__( 'Sending...', 'event-tickets' ),
@@ -315,14 +321,20 @@ class Tribe__Tickets__Attendees {
315
  'checkin_nonce' => wp_create_nonce( 'checkin' ),
316
  'uncheckin_nonce' => wp_create_nonce( 'uncheckin' ),
317
  'cannot_move' => esc_html__( 'You must first select one or more tickets before you can move them!', 'event-tickets' ),
318
- 'move_url' => add_query_arg( array(
319
- 'dialog' => Tribe__Tickets__Main::instance()->move_tickets()->dialog_name(),
320
- 'check' => wp_create_nonce( 'move_tickets' ),
321
- 'TB_iframe' => 'true',
322
- ) ),
323
- );
 
 
 
 
 
 
324
 
325
- wp_localize_script( $this->slug() . '-js', 'Attendees', $mail_data );
326
  }
327
 
328
  /**
307
 
308
  add_thickbox();
309
 
310
+ $move_url_args = [
311
+ 'dialog' => Tribe__Tickets__Main::instance()->move_tickets()->dialog_name(),
312
+ 'check' => wp_create_nonce( 'move_tickets' ),
313
+ 'TB_iframe' => 'true',
314
+ ];
315
+
316
+ $config_data = [
317
  'nonce' => wp_create_nonce( 'email-attendee-list' ),
318
  'required' => esc_html__( 'You need to select a user or type a valid email address', 'event-tickets' ),
319
  'sending' => esc_html__( 'Sending...', 'event-tickets' ),
321
  'checkin_nonce' => wp_create_nonce( 'checkin' ),
322
  'uncheckin_nonce' => wp_create_nonce( 'uncheckin' ),
323
  'cannot_move' => esc_html__( 'You must first select one or more tickets before you can move them!', 'event-tickets' ),
324
+ 'move_url' => add_query_arg( $move_url_args ),
325
+ 'confirmation' => esc_html__( 'Please confirm that you would like to delete this attendee.', 'event-tickets' ),
326
+ ];
327
+
328
+ /**
329
+ * Allow filtering the configuration data for the Attendee objects on Attendees report page.
330
+ *
331
+ * @since 5.0.4
332
+ *
333
+ * @param array $config_data List of configuration data to be localized.
334
+ */
335
+ $config_data = apply_filters( 'tribe_tickets_attendees_report_js_config', $config_data );
336
 
337
+ wp_localize_script( $this->slug() . '-js', 'Attendees', $config_data );
338
  }
339
 
340
  /**
src/Tribe/Commerce/PayPal/Main.php CHANGED
@@ -2401,6 +2401,10 @@ class Tribe__Tickets__Commerce__PayPal__Main extends Tribe__Tickets__Tickets {
2401
  $commerce_tickets = $this->commerce_get_tickets_in_cart( $tickets );
2402
 
2403
  foreach ( $commerce_tickets as $ticket ) {
 
 
 
 
2404
  $tickets[ $ticket['ticket_id'] ] = $ticket['quantity'];
2405
  }
2406
 
2401
  $commerce_tickets = $this->commerce_get_tickets_in_cart( $tickets );
2402
 
2403
  foreach ( $commerce_tickets as $ticket ) {
2404
+ if ( ! is_array( $ticket ) ) {
2405
+ continue;
2406
+ }
2407
+
2408
  $tickets[ $ticket['ticket_id'] ] = $ticket['quantity'];
2409
  }
2410
 
src/Tribe/Editor.php CHANGED
@@ -241,12 +241,15 @@ class Tribe__Tickets__Editor extends Tribe__Editor {
241
  * @return string
242
  */
243
  public function add_column_content_price( $ticket, $provider_obj ) {
244
- $context = array(
 
 
 
245
  'ticket' => $ticket,
246
  'provider_obj' => $provider_obj,
247
- );
248
 
249
- return tribe( 'tickets.admin.views' )->template( 'editor/column-body-price', $context );
250
  }
251
 
252
  /**
@@ -260,8 +263,11 @@ class Tribe__Tickets__Editor extends Tribe__Editor {
260
  * @return bool
261
  */
262
  public function flush_blocks() {
263
- // Bail because we dont have access to any of the classes we need for Blocks Editor
264
- if ( ! tribe( 'editor' )->should_load_blocks() ) {
 
 
 
265
  return false;
266
  }
267
 
@@ -278,14 +284,8 @@ class Tribe__Tickets__Editor extends Tribe__Editor {
278
  /** @var Tribe__Tickets__Editor__Template__Overwrite $template_overwrite */
279
  $template_overwrite = tribe( 'tickets.editor.template.overwrite' );
280
 
281
- $is_event = function_exists( 'tribe_is_event' ) && tribe_is_event( $post_id );
282
- $has_event_classic_editor = $is_event && ! $template_overwrite->has_early_access_to_blocks();
283
-
284
- /** @var Tribe__Editor $editor */
285
- $editor = tribe( 'editor' );
286
-
287
- // Set meta key only if is classic editor and bail
288
- if ( $editor->is_classic_editor() || $has_event_classic_editor ) {
289
  update_post_meta( $post_id, $this->meta_key_flush_flag, 1 );
290
 
291
  return false;
241
  * @return string
242
  */
243
  public function add_column_content_price( $ticket, $provider_obj ) {
244
+ /** @var Tribe__Tickets__Admin__Views $admin_views */
245
+ $admin_views = tribe( 'tickets.admin.views' );
246
+
247
+ $context = [
248
  'ticket' => $ticket,
249
  'provider_obj' => $provider_obj,
250
+ ];
251
 
252
+ return $admin_views->template( 'editor/column-body-price', $context );
253
  }
254
 
255
  /**
263
  * @return bool
264
  */
265
  public function flush_blocks() {
266
+ /** @var Tribe__Editor $editor */
267
+ $editor = tribe( 'editor' );
268
+
269
+ // Bail because we dont have access to any of the classes we need for Blocks Editor.
270
+ if ( ! $editor->should_load_blocks() ) {
271
  return false;
272
  }
273
 
284
  /** @var Tribe__Tickets__Editor__Template__Overwrite $template_overwrite */
285
  $template_overwrite = tribe( 'tickets.editor.template.overwrite' );
286
 
287
+ // Set meta key only if is classic editor and bail.
288
+ if ( $template_overwrite->has_classic_editor( $post_id ) ) {
 
 
 
 
 
 
289
  update_post_meta( $post_id, $this->meta_key_flush_flag, 1 );
290
 
291
  return false;
src/Tribe/Editor/Configuration.php CHANGED
@@ -28,17 +28,18 @@ class Tribe__Tickets__Editor__Configuration implements Tribe__Editor__Configurat
28
  * @return array
29
  */
30
  public function editor_config( $editor_config ) {
31
- $tickets = empty( $editor_js_config['tickets'] ) ? array() : $editor_js_config['tickets'];
 
32
  $editor_config = $this->set_defaults( $editor_config );
33
 
34
  $editor_config['common']['rest']['nonce'] = array_merge(
35
  $editor_config['common']['rest']['nonce'],
36
- array(
37
  'add_ticket_nonce' => wp_create_nonce( 'add_ticket_nonce' ),
38
  'edit_ticket_nonce' => wp_create_nonce( 'edit_ticket_nonce' ),
39
  'remove_ticket_nonce' => wp_create_nonce( 'remove_ticket_nonce' ),
40
  'move_tickets' => wp_create_nonce( 'move_tickets' ),
41
- )
42
  );
43
 
44
  $editor_config['tickets'] = array_merge(
@@ -46,6 +47,24 @@ class Tribe__Tickets__Editor__Configuration implements Tribe__Editor__Configurat
46
  $this->localize()
47
  );
48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  return $editor_config;
50
  }
51
 
@@ -86,7 +105,7 @@ class Tribe__Tickets__Editor__Configuration implements Tribe__Editor__Configurat
86
  }
87
 
88
  /**
89
- * Return an array with all the providers used by tickets
90
  *
91
  * @since 4.9
92
  *
@@ -94,36 +113,35 @@ class Tribe__Tickets__Editor__Configuration implements Tribe__Editor__Configurat
94
  */
95
  public function get_providers() {
96
  $modules = Tribe__Tickets__Tickets::modules();
97
- $class_names = array_keys( $modules );
98
- $providers = array();
99
  $default_currency_symbol = tribe_get_option( 'defaultCurrencySymbol', '$' );
100
 
101
- foreach ( $class_names as $class ) {
102
- if ( 'RSVP' === $modules[ $class ] ) {
103
  continue;
104
  }
105
 
106
  $currency = tribe( 'tickets.commerce.currency' );
107
 
108
- // Backwards to avoid fatals
109
  $currency_symbol = $default_currency_symbol;
110
- if ( is_callable( array( $currency, 'get_provider_symbol' ) ) ) {
111
- $currency_symbol = $currency->get_provider_symbol( $class, null );
112
  }
113
 
114
  $currency_position = 'prefix';
115
- if ( is_callable( array( $currency, 'get_provider_symbol_position' ) ) ) {
116
- $currency_position = $currency->get_provider_symbol_position( $class, null );
117
  }
118
 
119
- $providers[] = array(
120
- 'name' => $modules[ $class ],
121
- 'class' => $class,
122
  'currency' => html_entity_decode( $currency_symbol ),
123
  'currency_position' => $currency_position,
124
- );
125
  }
126
 
127
  return $providers;
128
  }
129
- }
28
  * @return array
29
  */
30
  public function editor_config( $editor_config ) {
31
+ $tickets = empty( $editor_config['tickets'] ) ? [] : $editor_config['tickets'];
32
+
33
  $editor_config = $this->set_defaults( $editor_config );
34
 
35
  $editor_config['common']['rest']['nonce'] = array_merge(
36
  $editor_config['common']['rest']['nonce'],
37
+ [
38
  'add_ticket_nonce' => wp_create_nonce( 'add_ticket_nonce' ),
39
  'edit_ticket_nonce' => wp_create_nonce( 'edit_ticket_nonce' ),
40
  'remove_ticket_nonce' => wp_create_nonce( 'remove_ticket_nonce' ),
41
  'move_tickets' => wp_create_nonce( 'move_tickets' ),
42
+ ]
43
  );
44
 
45
  $editor_config['tickets'] = array_merge(
47
  $this->localize()
48
  );
49
 
50
+ /**
51
+ * Filter the default buffer duration between ticket sale start time and end time.
52
+ *
53
+ * @since 5.0.4
54
+ *
55
+ * @param int $buffer Number in hours to be used.
56
+ */
57
+ $editor_config['tickets']['end_sale_buffer_duration'] = apply_filters( 'tribe_tickets_editor_end_sale_buffer_duration_hours', 2 );
58
+
59
+ /**
60
+ * Filter the default buffer years between ticket sale start date and end date.
61
+ *
62
+ * @since 5.0.4
63
+ *
64
+ * @param int $buffer Number in years to be used.
65
+ */
66
+ $editor_config['tickets']['end_sale_buffer_years'] = apply_filters( 'tribe_tickets_editor_end_sale_buffer_years', 1 );
67
+
68
  return $editor_config;
69
  }
70
 
105
  }
106
 
107
  /**
108
+ * Return an array with all the currently-active ticket providers (not RSVP).
109
  *
110
  * @since 4.9
111
  *
113
  */
114
  public function get_providers() {
115
  $modules = Tribe__Tickets__Tickets::modules();
116
+ $providers = [];
 
117
  $default_currency_symbol = tribe_get_option( 'defaultCurrencySymbol', '$' );
118
 
119
+ foreach ( $modules as $class_name => $display_name ) {
120
+ if ( Tribe__Tickets__RSVP::class === $class_name ) {
121
  continue;
122
  }
123
 
124
  $currency = tribe( 'tickets.commerce.currency' );
125
 
126
+ // Backwards to avoid fatals.
127
  $currency_symbol = $default_currency_symbol;
128
+ if ( is_callable( [ $currency, 'get_provider_symbol' ] ) ) {
129
+ $currency_symbol = $currency->get_provider_symbol( $class_name, null );
130
  }
131
 
132
  $currency_position = 'prefix';
133
+ if ( is_callable( [ $currency, 'get_provider_symbol_position' ] ) ) {
134
+ $currency_position = $currency->get_provider_symbol_position( $class_name, null );
135
  }
136
 
137
+ $providers[] = [
138
+ 'name' => $modules[ $class_name ],
139
+ 'class' => $class_name,
140
  'currency' => html_entity_decode( $currency_symbol ),
141
  'currency_position' => $currency_position,
142
+ ];
143
  }
144
 
145
  return $providers;
146
  }
147
+ }
src/Tribe/Editor/Provider.php CHANGED
@@ -1,4 +1,10 @@
1
  <?php
 
 
 
 
 
 
2
  /**
3
  * Register Event Tickets provider
4
  *
@@ -9,37 +15,51 @@ class Tribe__Tickets__Editor__Provider extends tad_DI52_ServiceProvider {
9
  * Binds and sets up implementations.
10
  *
11
  * @since 4.9
12
- *
13
  */
14
  public function register() {
 
 
 
15
  // Register these all the time - as we now use them in most of the templates, blocks or otherwise.
 
16
  $this->container->singleton( 'tickets.editor.template', 'Tribe__Tickets__Editor__Template' );
17
  $this->container->singleton( 'tickets.editor.blocks.tickets', 'Tribe__Tickets__Editor__Blocks__Tickets' );
18
  $this->container->singleton( 'tickets.editor.blocks.rsvp', 'Tribe__Tickets__Editor__Blocks__Rsvp' );
19
- $this->container->singleton( 'tickets.editor.configuration', 'Tribe__Tickets__Editor__Configuration', array( 'hook' ) );
 
 
20
 
21
- if (
22
- ! tribe( 'editor' )->should_load_blocks()
23
- || ! class_exists( 'Tribe__Tickets__Main' )
24
- ) {
 
 
 
 
 
 
 
 
 
 
 
25
  return;
26
  }
27
 
28
- $this->container->singleton( 'tickets.editor.template.overwrite', 'Tribe__Tickets__Editor__Template__Overwrite', array( 'hook' ) );
29
-
30
  $this->container->singleton(
31
  'tickets.editor.compatibility.tickets',
32
  'Tribe__Tickets__Editor__Compatibility__Tickets',
33
- array( 'hook' )
34
  );
35
 
36
- $this->container->singleton( 'tickets.editor.assets', 'Tribe__Tickets__Editor__Assets', array( 'register' ) );
37
 
38
  $this->container->singleton( 'tickets.editor.blocks.tickets-item', 'Tribe__Tickets__Editor__Blocks__Tickets_Item' );
39
  $this->container->singleton( 'tickets.editor.blocks.attendees', 'Tribe__Tickets__Editor__Blocks__Attendees' );
40
 
41
  $this->container->singleton( 'tickets.editor.meta', 'Tribe__Tickets__Editor__Meta' );
42
- $this->container->singleton( 'tickets.editor.rest.compatibility', 'Tribe__Tickets__Editor__REST__Compatibility', array( 'hook' ) );
43
  $this->container->singleton( 'tickets.editor.attendees_table', 'Tribe__Tickets__Attendees_Table' );
44
 
45
  $this->hook();
@@ -54,7 +74,7 @@ class Tribe__Tickets__Editor__Provider extends tad_DI52_ServiceProvider {
54
  // Initialize the correct Singleton
55
  tribe( 'tickets.editor.assets' );
56
  tribe( 'tickets.editor.configuration' );
57
- tribe( 'tickets.editor.template.overwrite' );
58
  }
59
 
60
  /**
1
  <?php
2
+ /**
3
+ * Handle the provider for the Event Tickets Editor functionality.
4
+ */
5
+
6
+ use Tribe\Tickets\Editor\Warnings;
7
+
8
  /**
9
  * Register Event Tickets provider
10
  *
15
  * Binds and sets up implementations.
16
  *
17
  * @since 4.9
 
18
  */
19
  public function register() {
20
+ // The general warnings class.
21
+ $this->container->singleton( 'tickets.editor.warnings', Warnings::class, [ 'hook' ] );
22
+
23
  // Register these all the time - as we now use them in most of the templates, blocks or otherwise.
24
+ $this->container->singleton( 'tickets.editor.template.overwrite', 'Tribe__Tickets__Editor__Template__Overwrite' );
25
  $this->container->singleton( 'tickets.editor.template', 'Tribe__Tickets__Editor__Template' );
26
  $this->container->singleton( 'tickets.editor.blocks.tickets', 'Tribe__Tickets__Editor__Blocks__Tickets' );
27
  $this->container->singleton( 'tickets.editor.blocks.rsvp', 'Tribe__Tickets__Editor__Blocks__Rsvp' );
28
+ $this->container->singleton( 'tickets.editor.configuration', 'Tribe__Tickets__Editor__Configuration', [ 'hook' ] );
29
+
30
+ $this->register_for_blocks();
31
 
32
+ // Handle general non-block-specific instances.
33
+ tribe( 'tickets.editor.warnings' );
34
+ }
35
+
36
+ /**
37
+ * Handle registration for blocks-functionality separately.
38
+ *
39
+ * @since 5.0.4
40
+ */
41
+ public function register_for_blocks() {
42
+ /** @var \Tribe__Editor $editor */
43
+ $editor = tribe( 'editor' );
44
+
45
+ // Only register for blocks if we are using them.
46
+ if ( ! $editor->should_load_blocks() ) {
47
  return;
48
  }
49
 
 
 
50
  $this->container->singleton(
51
  'tickets.editor.compatibility.tickets',
52
  'Tribe__Tickets__Editor__Compatibility__Tickets',
53
+ [ 'hook' ]
54
  );
55
 
56
+ $this->container->singleton( 'tickets.editor.assets', 'Tribe__Tickets__Editor__Assets', [ 'register' ] );
57
 
58
  $this->container->singleton( 'tickets.editor.blocks.tickets-item', 'Tribe__Tickets__Editor__Blocks__Tickets_Item' );
59
  $this->container->singleton( 'tickets.editor.blocks.attendees', 'Tribe__Tickets__Editor__Blocks__Attendees' );
60
 
61
  $this->container->singleton( 'tickets.editor.meta', 'Tribe__Tickets__Editor__Meta' );
62
+ $this->container->singleton( 'tickets.editor.rest.compatibility', 'Tribe__Tickets__Editor__REST__Compatibility', [ 'hook' ] );
63
  $this->container->singleton( 'tickets.editor.attendees_table', 'Tribe__Tickets__Attendees_Table' );
64
 
65
  $this->hook();
74
  // Initialize the correct Singleton
75
  tribe( 'tickets.editor.assets' );
76
  tribe( 'tickets.editor.configuration' );
77
+ tribe( 'tickets.editor.template.overwrite' )->hook();
78
  }
79
 
80
  /**
src/Tribe/Editor/Template/Overwrite.php CHANGED
@@ -83,7 +83,7 @@ class Tribe__Tickets__Editor__Template__Overwrite {
83
  }
84
 
85
  /**
86
- * Return if the classic editor is active on the post
87
  *
88
  * @since 4.9.2
89
  *
@@ -93,6 +93,7 @@ class Tribe__Tickets__Editor__Template__Overwrite {
93
  */
94
  public function has_classic_editor( $post_id ) {
95
  $is_event = function_exists( 'tribe_is_event' ) && tribe_is_event( $post_id );
 
96
  if ( $is_event && $this->has_early_access_to_blocks() ) {
97
  return false;
98
  }
83
  }
84
 
85
  /**
86
+ * Return if the classic editor is active on the post.
87
  *
88
  * @since 4.9.2
89
  *
93
  */
94
  public function has_classic_editor( $post_id ) {
95
  $is_event = function_exists( 'tribe_is_event' ) && tribe_is_event( $post_id );
96
+
97
  if ( $is_event && $this->has_early_access_to_blocks() ) {
98
  return false;
99
  }
src/Tribe/Editor/Warnings.php ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Conditional Warnings for the Editor.
4
+ */
5
+
6
+ namespace Tribe\Tickets\Editor;
7
+
8
+ /**
9
+ * Warnings handling class.
10
+ *
11
+ * @since 5.0.4
12
+ */
13
+ class Warnings {
14
+
15
+ /**
16
+ * Hooks actions for showing warnings
17
+ *
18
+ * @since 5.0.4
19
+ */
20
+ public function hook() {
21
+ add_action( 'tribe_events_tickets_new_ticket_buttons', [ $this, 'show_recurring_event_warning_message' ] );
22
+ add_action( 'tribe_events_tickets_new_ticket_buttons', [ $this, 'add_commerce_provider_warning' ] );
23
+ }
24
+
25
+ /**
26
+ * Show the Recurring Event warning message.
27
+ *
28
+ * @since 5.0.4
29
+ *
30
+ * @param int $post_id Post ID.
31
+ */
32
+ public function show_recurring_event_warning_message( $post_id ) {
33
+ if ( ! class_exists( 'Tribe__Events__Pro__Main' ) || ! class_exists( 'Tribe__Events__Main' ) ) {
34
+ return;
35
+ }
36
+
37
+ if ( ! function_exists( 'tribe_is_recurring_event' ) ) {
38
+ return;
39
+ }
40
+
41
+ if ( \Tribe__Events__Main::POSTTYPE != get_post_type( $post_id ) ) {
42
+ return;
43
+ }
44
+
45
+ $this->render_notice( $this->get_recurring_event_warning_message(), 'info', '#tribe-recurrence-active', 'checked' );
46
+ }
47
+
48
+ /**
49
+ * Add Provider missing warning for tickets.
50
+ *
51
+ * @since 5.0.4
52
+ */
53
+ public function add_commerce_provider_warning() {
54
+ $available_modules = array_diff_key( \Tribe__Tickets__Tickets::modules(), [ 'Tribe__Tickets__RSVP' => true ] );
55
+
56
+ if ( count( $available_modules ) > 0 ) {
57
+ return;
58
+ }
59
+
60
+ $this->render_notice( $this->get_commerce_provider_missing_warning_message() );
61
+ }
62
+
63
+ /**
64
+ * Get the Commerce Provider missing warning message.
65
+ *
66
+ * @since 5.0.4
67
+ *
68
+ * @return string The Commerce Provider missing message.
69
+ */
70
+ public function get_commerce_provider_missing_warning_message() {
71
+ $kb_url = 'https://evnt.is/1ao5';
72
+
73
+ /* translators: %1$s: URL for help link, %2$s: Label for help link. */
74
+ $link = sprintf(
75
+ '<a href="%1$s" target="_blank" rel="noopener noreferrer">%2$s</a>',
76
+ esc_url( $kb_url ),
77
+ esc_html_x( 'Learn More', 'Helper link in Ticket Editor', 'event-tickets' )
78
+ );
79
+
80
+ return wp_kses_post(
81
+ sprintf(
82
+ /* translators: %1$s: link to help article. */
83
+ __( 'There is no payment gateway configured. To create tickets, you\'ll need to enable and configure an ecommerce solution. %1$s', 'event-tickets' ),
84
+ $link
85
+ )
86
+ );
87
+ }
88
+
89
+ /**
90
+ * Get the Recurring Event warning message.
91
+ *
92
+ * @since 5.0.4
93
+ *
94
+ * @return string The Recurring Event warning message.
95
+ */
96
+ public function get_recurring_event_warning_message() {
97
+ return __( 'This is a recurring event. If you add tickets, they will only show up on first event in the recurrence series. Please carefully configure your recurring events.', 'event-tickets' );
98
+ }
99
+
100
+ /**
101
+ * Render the notice block.
102
+ *
103
+ * @since 5.0.4
104
+ *
105
+ * @param string $message Tee message to show.
106
+ * @param string $type Type of message.
107
+ * @param string $depends_on Dependency selector.
108
+ * @param string $condition Dependency condition like 'checked' | 'not-checked' | 'numeric'.
109
+ */
110
+ public function render_notice( $message, $type = 'info', $depends_on = '', $condition = '' ) {
111
+ $icon = 'dashicons-' . $type;
112
+ $has_dependency = empty( $depends_on ) ? '' : 'tribe-dependent';
113
+ $classes = $type . ' ' . $has_dependency;
114
+ $condition_attr = empty( $condition ) ? '' : 'data-condition-is-' . $condition;
115
+ ?>
116
+ <div class="ticket-editor-notice <?php echo esc_attr( $classes ); ?>"
117
+ <?php if ( $depends_on ) { ?>
118
+ data-depends="<?php echo esc_attr( $depends_on ); ?>"
119
+ <?php } ?>
120
+ <?php echo esc_attr( $condition_attr ); ?>
121
+ >
122
+ <span class="dashicons <?php echo esc_attr( $icon ); ?>"></span>
123
+ <span class="message"><?php echo wp_kses_post( $message ); ?></span>
124
+ </div>
125
+ <?php
126
+ }
127
+ }
src/Tribe/Main.php CHANGED
@@ -8,7 +8,7 @@ class Tribe__Tickets__Main {
8
  /**
9
  * Current version of this plugin
10
  */
11
- const VERSION = '5.0.3.1';
12
 
13
  /**
14
  * Used to store the version history.
8
  /**
9
  * Current version of this plugin
10
  */
11
+ const VERSION = '5.0.4';
12
 
13
  /**
14
  * Used to store the version history.
src/Tribe/Metabox.php CHANGED
@@ -148,7 +148,7 @@ class Tribe__Tickets__Metabox {
148
  }
149
 
150
  /**
151
- * Get the Panels for a given
152
  *
153
  * @since 4.6.2
154
  *
@@ -162,7 +162,7 @@ class Tribe__Tickets__Metabox {
162
  $post = get_post( $post );
163
  }
164
 
165
- // Bail on Invalid post
166
  if ( ! $post instanceof WP_Post ) {
167
  return [];
168
  }
148
  }
149
 
150
  /**
151
+ * Get the Panels for a given post.
152
  *
153
  * @since 4.6.2
154
  *
162
  $post = get_post( $post );
163
  }
164
 
165
+ // Bail on invalid post.
166
  if ( ! $post instanceof WP_Post ) {
167
  return [];
168
  }
src/Tribe/Tickets.php CHANGED
@@ -694,7 +694,7 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
694
  $cache = tribe( 'cache' );
695
  $key = __METHOD__ . '-' . $this->orm_provider . '-' . $post_id;
696
 
697
- if ( isset( $cache[ $key ] ) ) {
698
  return $cache[ $key ];
699
  }
700
 
694
  $cache = tribe( 'cache' );
695
  $key = __METHOD__ . '-' . $this->orm_provider . '-' . $post_id;
696
 
697
+ if ( isset( $cache[ $key ] ) && is_array( $cache[ $key ] ) ) {
698
  return $cache[ $key ];
699
  }
700
 
src/admin-views/admin-welcome-message.php CHANGED
@@ -72,21 +72,45 @@ if ( $has_plus ) {
72
  <div class="tribe-events-admin-quick-nav__title"><?php esc_html_e( 'Quick Links:', 'event-tickets' ); ?></div>
73
  <ul class="tribe-events-admin-quick-nav__links">
74
  <?php if ( $has_plus && $has_tec ) : // ET+ with TEC. ?>
75
- <li class="tribe-events-admin-quick-nav__link-item"><a href="edit.php?page=tribe-common&tab=event-tickets&post_type=tribe_events" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Configure Settings', 'event-tickets' ); ?></a></li>
76
- <li class="tribe-events-admin-quick-nav__link-item"><a href="plugin-install.php?tab=plugin-information&amp;plugin=woocommerce&amp;TB_iframe=true" class="tribe-events-admin-quick-nav__link thickbox open-plugin-details-modal"><?php esc_html_e( 'Install WooCommerce', 'event-tickets' ); ?></a></li>
77
- <li class="tribe-events-admin-quick-nav__link-item"><a href="post-new.php?post_type=tribe_events" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Create Ticket', 'event-tickets' ); ?></a></li>
 
 
 
 
 
 
78
  <?php elseif ( $has_plus ) : // ET+ without TEC. ?>
79
- <li class="tribe-events-admin-quick-nav__link-item"><a href="edit.php?page=tribe-common&tab=event-tickets" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Configure Settings', 'event-tickets' ); ?></a></li>
80
- <li class="tribe-events-admin-quick-nav__link-item"><a href="plugin-install.php?tab=plugin-information&amp;plugin=woocommerce&amp;TB_iframe=true" class="tribe-events-admin-quick-nav__link thickbox open-plugin-details-modal"><?php esc_html_e( 'Install WooCommerce', 'event-tickets' ); ?></a></li>
81
- <li class="tribe-events-admin-quick-nav__link-item"><a href="plugin-install.php?tab=plugin-information&amp;plugin=the-events-calendar&amp;TB_iframe=true" class="tribe-events-admin-quick-nav__link thickbox open-plugin-details-modal"><?php esc_html_e( 'Install The Events Calendar', 'event-tickets' ); ?></a></li>
 
 
 
 
 
 
82
  <?php elseif ( $has_tec ) : // ET with TEC. ?>
83
- <li class="tribe-events-admin-quick-nav__link-item"><a href="edit.php?page=tribe-common&tab=event-tickets&post_type=tribe_events" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Configure Settings', 'event-tickets' ); ?></a></li>
84
- <li class="tribe-events-admin-quick-nav__link-item"><a href="post-new.php?post_type=tribe_events" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Create RSVP', 'event-tickets' ); ?></a></li>
85
- <li class="tribe-events-admin-quick-nav__link-item"><a href="https://m.tri.be/1an7" target="_blank" rel="noopener noreferrer" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Setup PayPal', 'event-tickets' ); ?></a></li>
 
 
 
 
 
 
86
  <?php else : // ET without TEC. ?>
87
- <li class="tribe-events-admin-quick-nav__link-item"><a href="edit.php?page=tribe-common&tab=event-tickets" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Configure Settings', 'event-tickets' ); ?></a></li>
88
- <li class="tribe-events-admin-quick-nav__link-item"><a href="plugin-install.php?tab=plugin-information&amp;plugin=the-events-calendar&amp;TB_iframe=true" class="tribe-events-admin-quick-nav__link thickbox open-plugin-details-modal"><?php esc_html_e( 'Install The Events Calendar', 'event-tickets' ); ?></a></li>
89
- <li class="tribe-events-admin-quick-nav__link-item"><a href="https://m.tri.be/1an8" target="_blank" rel="noopener noreferrer" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Setup PayPal', 'event-tickets' ); ?></a></li>
 
 
 
 
 
 
90
  <?php endif; ?>
91
  </ul>
92
  </div>
72
  <div class="tribe-events-admin-quick-nav__title"><?php esc_html_e( 'Quick Links:', 'event-tickets' ); ?></div>
73
  <ul class="tribe-events-admin-quick-nav__links">
74
  <?php if ( $has_plus && $has_tec ) : // ET+ with TEC. ?>
75
+ <li class="tribe-events-admin-quick-nav__link-item">
76
+ <a href="edit.php?page=tribe-common&tab=event-tickets&post_type=tribe_events" target="_blank" rel="noopener noreferrer" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Configure Settings', 'event-tickets' ); ?></a>
77
+ </li>
78
+ <li class="tribe-events-admin-quick-nav__link-item">
79
+ <a href="plugin-install.php?tab=plugin-information&amp;plugin=woocommerce&amp;TB_iframe=true" class="tribe-events-admin-quick-nav__link thickbox open-plugin-details-modal"><?php esc_html_e( 'Install WooCommerce', 'event-tickets' ); ?></a>
80
+ </li>
81
+ <li class="tribe-events-admin-quick-nav__link-item">
82
+ <a href="post-new.php?post_type=tribe_events" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Create Ticket', 'event-tickets' ); ?></a>
83
+ </li>
84
  <?php elseif ( $has_plus ) : // ET+ without TEC. ?>
85
+ <li class="tribe-events-admin-quick-nav__link-item">
86
+ <a href="edit.php?page=tribe-common&tab=event-tickets" target="_blank" rel="noopener noreferrer" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Configure Settings', 'event-tickets' ); ?></a>
87
+ </li>
88
+ <li class="tribe-events-admin-quick-nav__link-item">
89
+ <a href="plugin-install.php?tab=plugin-information&amp;plugin=woocommerce&amp;TB_iframe=true" class="tribe-events-admin-quick-nav__link thickbox open-plugin-details-modal"><?php esc_html_e( 'Install WooCommerce', 'event-tickets' ); ?></a>
90
+ </li>
91
+ <li class="tribe-events-admin-quick-nav__link-item">
92
+ <a href="plugin-install.php?tab=plugin-information&amp;plugin=the-events-calendar&amp;TB_iframe=true" class="tribe-events-admin-quick-nav__link thickbox open-plugin-details-modal"><?php esc_html_e( 'Install The Events Calendar', 'event-tickets' ); ?></a>
93
+ </li>
94
  <?php elseif ( $has_tec ) : // ET with TEC. ?>
95
+ <li class="tribe-events-admin-quick-nav__link-item">
96
+ <a href="edit.php?page=tribe-common&tab=event-tickets&post_type=tribe_events" target="_blank" rel="noopener noreferrer" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Configure Settings', 'event-tickets' ); ?></a>
97
+ </li>
98
+ <li class="tribe-events-admin-quick-nav__link-item">
99
+ <a href="post-new.php?post_type=tribe_events" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Create RSVP', 'event-tickets' ); ?></a>
100
+ </li>
101
+ <li class="tribe-events-admin-quick-nav__link-item">
102
+ <a href="https://m.tri.be/1an7" target="_blank" rel="noopener noreferrer" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Setup PayPal', 'event-tickets' ); ?></a>
103
+ </li>
104
  <?php else : // ET without TEC. ?>
105
+ <li class="tribe-events-admin-quick-nav__link-item">
106
+ <a href="edit.php?page=tribe-common&tab=event-tickets" target="_blank" rel="noopener noreferrer" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Configure Settings', 'event-tickets' ); ?></a>
107
+ </li>
108
+ <li class="tribe-events-admin-quick-nav__link-item">
109
+ <a href="plugin-install.php?tab=plugin-information&amp;plugin=the-events-calendar&amp;TB_iframe=true" class="tribe-events-admin-quick-nav__link thickbox open-plugin-details-modal"><?php esc_html_e( 'Install The Events Calendar', 'event-tickets' ); ?></a>
110
+ </li>
111
+ <li class="tribe-events-admin-quick-nav__link-item">
112
+ <a href="https://m.tri.be/1an8" target="_blank" rel="noopener noreferrer" class="tribe-events-admin-quick-nav__link"><?php esc_html_e( 'Setup PayPal', 'event-tickets' ); ?></a>
113
+ </li>
114
  <?php endif; ?>
115
  </ul>
116
  </div>
src/admin-views/editor/fieldset/advanced.php CHANGED
@@ -15,175 +15,26 @@ if ( ! isset( $ticket_id ) ) {
15
  if ( ! empty( $provider ) ) {
16
  $ticket = $provider->get_ticket( $post_id, $ticket_id );
17
  }
18
-
19
- if ( ! empty( $ticket->start_date ) ) {
20
- $start_date = Tribe__Date_Utils::date_only( $ticket->start_date, false, $datepicker_format );
21
- } else {
22
- $start_date = null;
23
- }
24
-
25
- if ( ! empty( $ticket->end_date ) ) {
26
- $end_date = Tribe__Date_Utils::date_only( $ticket->end_date, false, $datepicker_format );
27
- } else {
28
- $end_date = null;
29
- }
30
- }
31
-
32
- $timepicker_step = 30;
33
- if ( class_exists( 'Tribe__Events__Main' ) ) {
34
- $timepicker_step = (int) tribe( 'tec.admin.event-meta-box' )->get_timepicker_step( 'start' );
35
  }
36
-
37
- $timepicker_round = '00:00:00';
38
-
39
- $start_date_errors = [
40
- 'is-required' => __( 'Start sale date cannot be empty.', 'event-tickets' ),
41
- 'is-less-or-equal-to' => __( 'Start sale date cannot be greater than End Sale date', 'event-tickets' ),
42
- ];
43
  ?>
44
- <button class="accordion-header tribe_advanced_meta">
45
- <?php esc_html_e( 'Advanced', 'event-tickets' ); ?>
46
- </button>
47
- <section id="ticket_form_advanced" class="advanced accordion-content" data-datepicker_format="<?php echo esc_attr( Tribe__Date_Utils::get_datepicker_format_index() ); ?>">
48
- <h4 class="accordion-label screen_reader_text"><?php esc_html_e( 'Advanced Settings', 'event-tickets' ); ?></h4>
49
- <div class="input_block">
50
- <label class="ticket_form_label ticket_form_left" for="ticket_description"><?php esc_html_e( 'Description:', 'event-tickets' ); ?></label>
51
- <textarea
52
- rows="5"
53
- cols="40"
54
- name="ticket_description"
55
- class="ticket_field ticket_form_right"
56
- id="ticket_description"
57
- ><?php echo esc_textarea( $ticket ? $ticket->description : null ) ?></textarea>
58
- <div class="input_block">
59
- <label class="tribe_soft_note">
60
- <input
61
- type="checkbox"
62
- id="tribe_tickets_show_description"
63
- name="ticket_show_description"
64
- value="1"
65
- class="ticket_field ticket_form_left"
66
- <?php checked( true, $ticket ? $ticket->show_description : true ); ?>
67
- >
68
- <?php
69
- echo esc_html( sprintf(
70
- __( 'Show description on front end %s form.', 'event-tickets' ),
71
- tribe_get_ticket_label_singular_lowercase( 'default_ticket_provider' )
72
- ) );
73
- ?>
74
- </label>
75
- </div>
76
- </div>
77
- <div class="input_block">
78
- <label class="ticket_form_label ticket_form_left" for="ticket_start_date"><?php esc_html_e( 'Start sale:', 'event-tickets' ); ?></label>
79
- <div class="ticket_form_right">
80
- <input
81
- autocomplete="off"
82
- type="text"
83
- class="tribe-datepicker tribe-field-start_date ticket_field"
84
- name="ticket_start_date"
85
- id="ticket_start_date"
86
- value="<?php echo esc_attr( $ticket ? $start_date : null ); ?>"
87
- data-validation-type="datepicker"
88
- data-validation-is-less-or-equal-to="#ticket_end_date"
89
- data-validation-error="<?php echo esc_attr( json_encode( $start_date_errors ) ) ?>"
90
- />
91
- <span class="helper-text hide-if-js"><?php esc_html_e( 'YYYY-MM-DD', 'event-tickets' ) ?></span>
92
- <span class="datetime_seperator"> <?php esc_html_e( 'at', 'event-tickets' ); ?> </span>
93
- <input
94
- autocomplete="off"
95
- type="text"
96
- class="tribe-timepicker tribe-field-start_time ticket_field"
97
- name="ticket_start_time"
98
- id="ticket_start_time"
99
- <?php echo Tribe__View_Helpers::is_24hr_format() ? 'data-format="H:i"' : '' ?>
100
- data-step="<?php echo esc_attr( $timepicker_step ); ?>"
101
- data-round="<?php echo esc_attr( $timepicker_round ); ?>"
102
- value="<?php echo esc_attr( $ticket ? $ticket->start_time : null ); ?>"
103
- aria-label="<?php
104
- echo esc_html(
105
- sprintf(
106
- __( '%s start date', 'event-tickets' ),
107
- tribe_get_ticket_label_singular( 'input_start_time_aria_label' )
108
- )
109
- ); ?>"
110
- />
111
- <span class="helper-text hide-if-js"><?php esc_html_e( 'HH:MM', 'event-tickets' ) ?></span>
112
- <span class="dashicons dashicons-editor-help" title="<?php
113
- echo esc_html(
114
- sprintf(
115
- __( 'If you do not set a start sale date, %s will be available immediately.', 'event-tickets' ),
116
- tribe_get_ticket_label_plural_lowercase( 'input_start_time_help_text_title' )
117
- )
118
- ); ?>">
119
- </span>
120
- </div>
121
- </div>
122
- <div class="input_block">
123
- <label class="ticket_form_label ticket_form_left" for="ticket_end_date"><?php esc_html_e( 'End sale:', 'event-tickets' ); ?></label>
124
- <div class="ticket_form_right">
125
- <input
126
- autocomplete="off"
127
- type="text"
128
- class="tribe-datepicker tribe-field-end_date ticket_field"
129
- name="ticket_end_date"
130
- id="ticket_end_date"
131
- value="<?php echo esc_attr( $ticket ? $end_date : null ); ?>"
132
- />
133
- <span class="helper-text hide-if-js"><?php esc_html_e( 'YYYY-MM-DD', 'event-tickets' ) ?></span>
134
- <span class="datetime_seperator"> <?php esc_html_e( 'at', 'event-tickets' ); ?> </span>
135
- <input
136
- autocomplete="off"
137
- type="text"
138
- class="tribe-timepicker tribe-field-end_time ticket_field"
139
- name="ticket_end_time"
140
- id="ticket_end_time"
141
- <?php echo Tribe__View_Helpers::is_24hr_format() ? 'data-format="H:i"' : '' ?>
142
- data-step="<?php echo esc_attr( $timepicker_step ); ?>"
143
- data-round="<?php echo esc_attr( $timepicker_round ); ?>"
144
- value="<?php echo esc_attr( $ticket ? $ticket->end_time : null ); ?>"
145
- aria-label="<?php
146
- echo esc_html(
147
- sprintf(
148
- __( '%s end date', 'event-tickets' ),
149
- tribe_get_ticket_label_singular( 'input_end_time_aria_label' )
150
- )
151
- ); ?>"
152
- />
153
- <span class="helper-text hide-if-js"><?php esc_html_e( 'HH:MM', 'event-tickets' ) ?></span>
154
- <span
155
- class="dashicons dashicons-editor-help"
156
- <?php if ( class_exists( 'Tribe__Events__Main' ) && Tribe__Events__Main::POSTTYPE === get_post_type( $post_id ) ) : ?>
157
- title="<?php
158
- echo esc_html(
159
- sprintf(
160
- __( 'If you do not set an end sale date, %s will be available until the event begins.', 'event-tickets' ),
161
- tribe_get_ticket_label_plural_lowercase( 'input_end_time_help_text_title' )
162
- )
163
- ); ?>"
164
- <?php else : ?>
165
- title="<?php
166
- echo esc_html(
167
- sprintf(
168
- __( 'If you do not set an end sale date, %s will be available forever.', 'event-tickets' ),
169
- tribe_get_ticket_label_plural_lowercase( 'input_end_time_help_text_title' )
170
- )
171
- ); ?>"
172
- <?php endif; ?>
173
- ></span>
174
  </div>
175
- </div>
176
- <div id="advanced_fields">
177
- <?php
178
- /**
179
- * Allows for the insertion of additional content into the ticket edit form - advanced section
180
- *
181
- * @since 4.6
182
- *
183
- * @param int $post_id Post ID
184
- * @param int|null $ticket_id Ticket ID
185
- */
186
- do_action( 'tribe_events_tickets_metabox_edit_advanced', $post_id, $ticket_id );
187
- ?>
188
- </div>
189
- </section><!-- #ticket_form_advanced -->
15
  if ( ! empty( $provider ) ) {
16
  $ticket = $provider->get_ticket( $post_id, $ticket_id );
17
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  }
 
 
 
 
 
 
 
19
  ?>
20
+ <div class="tribe-dependent" data-depends="#Tribe__Tickets__RSVP_radio" data-condition-is-not-checked>
21
+ <button class="accordion-header tribe_advanced_meta">
22
+ <?php esc_html_e( 'Advanced', 'event-tickets' ); ?>
23
+ </button>
24
+ <section id="ticket_form_advanced" class="advanced accordion-content" data-datepicker_format="<?php echo esc_attr( Tribe__Date_Utils::get_datepicker_format_index() ); ?>">
25
+ <h4 class="accordion-label screen_reader_text"><?php esc_html_e( 'Advanced Settings', 'event-tickets' ); ?></h4>
26
+ <div id="advanced_fields">
27
+ <?php
28
+ /**
29
+ * Allows for the insertion of additional content into the ticket edit form - advanced section
30
+ *
31
+ * @since 4.6
32
+ *
33
+ * @param int $post_id Post ID
34
+ * @param int|null $ticket_id Ticket ID
35
+ */
36
+ do_action( 'tribe_events_tickets_metabox_edit_advanced', $post_id, $ticket_id );
37
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  </div>
39
+ </section><!-- #ticket_form_advanced -->
40
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
src/admin-views/editor/fieldset/settings-provider.php CHANGED
@@ -1,32 +1,30 @@
1
  <?php
2
  $post_id = get_the_ID();
3
 
4
- // Go ahead and get the necessary values.
5
- // Set up default provider.
6
- $modules = Tribe__Tickets__Tickets::modules();
7
 
8
- $default_module = Tribe__Tickets__Tickets::get_event_ticket_provider( $post_id );
 
9
 
10
- $default_module_class = empty( $default_module ) ? '' : $default_module;
11
 
12
- // We don't need this one here - RSVP and tickets are different now.
13
- unset( $modules['Tribe__Tickets__RSVP'] );
14
-
15
- $multiple_modules = 1 < count( $modules );
16
  // We use 'screen-reader-text' to hide it if there really aren't any choices.
17
- $fieldset_class = $multiple_modules ? 'input_block' : 'screen-reader-text';
 
 
18
  ?>
19
 
20
  <?php if ( tribe_is_truthy( tribe_get_request_var( 'is_admin', true ) ) ) : ?>
21
  <fieldset class="<?php echo esc_attr( $fieldset_class ); ?>">
22
- <?php if ( ! $multiple_modules ) : ?>
23
- <?php foreach ( $modules as $class => $module ) : ?>
24
  <input
25
  type="radio"
26
  class="tribe-ticket-editor-field-default_provider settings_field"
27
  name="tribe-tickets[settings][default_provider]"
28
- id="provider_<?php echo esc_attr( $class . '_radio' ); ?>"
29
- value="<?php echo esc_attr( $class ); ?>"
30
  checked
31
  >
32
  <?php endforeach; ?>
@@ -53,14 +51,14 @@ $fieldset_class = $multiple_modules ? 'input_block' : 'screen-reader-text';
53
  ) );
54
  ?></em>
55
  </p>
56
- <?php foreach ( $modules as $class => $module ) : ?>
57
- <label class="ticket_form_right" for="provider_<?php echo esc_attr( $class . '_radio' ); ?>">
58
  <input
59
- <?php checked( $default_module_class, $class ); ?>
60
  type="radio"
61
  name="tribe-tickets[settings][default_provider]"
62
- id="provider_<?php echo esc_attr( $class . '_radio' ); ?>"
63
- value="<?php echo esc_attr( $class ); ?>"
64
  class="tribe-ticket-editor-field-default_provider settings_field ticket_field"
65
  aria-labelledby="default_ticket_provider_legend"
66
  >
@@ -72,7 +70,7 @@ $fieldset_class = $multiple_modules ? 'input_block' : 'screen-reader-text';
72
  *
73
  * @param string $module - the name of the module
74
  */
75
- echo apply_filters( 'tribe_events_tickets_module_name', esc_html( $module ) );
76
  ?>
77
  </label>
78
  <?php endforeach; ?>
1
  <?php
2
  $post_id = get_the_ID();
3
 
4
+ /** @var Tribe__Tickets__Editor__Configuration $editor_config */
5
+ $editor_config = tribe( 'tickets.editor.configuration' );
 
6
 
7
+ // Get list of providers (excluding RSVP).
8
+ $active_providers = $editor_config->get_providers();
9
 
10
+ $multiple_providers = 1 < count( $active_providers );
11
 
 
 
 
 
12
  // We use 'screen-reader-text' to hide it if there really aren't any choices.
13
+ $fieldset_class = $multiple_providers ? 'input_block' : 'screen-reader-text';
14
+
15
+ $default_module_class = (string) Tribe__Tickets__Tickets::get_event_ticket_provider( $post_id );
16
  ?>
17
 
18
  <?php if ( tribe_is_truthy( tribe_get_request_var( 'is_admin', true ) ) ) : ?>
19
  <fieldset class="<?php echo esc_attr( $fieldset_class ); ?>">
20
+ <?php if ( ! $multiple_providers ) : ?>
21
+ <?php foreach ( $active_providers as $active_provider ) : ?>
22
  <input
23
  type="radio"
24
  class="tribe-ticket-editor-field-default_provider settings_field"
25
  name="tribe-tickets[settings][default_provider]"
26
+ id="provider_<?php echo esc_attr( $active_provider['class'] . '_radio' ); ?>"
27
+ value="<?php echo esc_attr( $active_provider['class'] ); ?>"
28
  checked
29
  >
30
  <?php endforeach; ?>
51
  ) );
52
  ?></em>
53
  </p>
54
+ <?php foreach ( $active_providers as $active_provider ) : ?>
55
+ <label class="ticket_form_right" for="provider_<?php echo esc_attr( $active_provider['class'] . '_radio' ); ?>">
56
  <input
57
+ <?php checked( $default_module_class, $active_provider['class'] ); ?>
58
  type="radio"
59
  name="tribe-tickets[settings][default_provider]"
60
+ id="provider_<?php echo esc_attr( $active_provider['class'] . '_radio' ); ?>"
61
+ value="<?php echo esc_attr( $active_provider['class'] ); ?>"
62
  class="tribe-ticket-editor-field-default_provider settings_field ticket_field"
63
  aria-labelledby="default_ticket_provider_legend"
64
  >
70
  *
71
  * @param string $module - the name of the module
72
  */
73
+ echo esc_html( apply_filters( 'tribe_events_tickets_module_name', $active_provider['name'] ) );
74
  ?>
75
  </label>
76
  <?php endforeach; ?>
src/admin-views/editor/panel/ticket.php CHANGED
@@ -9,6 +9,8 @@ $provider = null;
9
  $provider_class = null;
10
  $ticket = null;
11
 
 
 
12
  if ( ! isset( $ticket_id ) ) {
13
  $ticket_id = null;
14
 
@@ -23,11 +25,121 @@ if ( ! isset( $ticket_id ) ) {
23
 
24
  $ticket = $provider->get_ticket( $post_id, $ticket_id );
25
  }
 
 
 
 
 
 
 
 
 
 
 
 
26
  }
27
 
28
  $modules = Tribe__Tickets__Tickets::modules();
29
 
30
  $default_module_class = empty( $default_module ) ? '' : $default_module->class_name;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  ?>
32
 
33
  <div id="tribe_panel_edit" class="ticket_panel panel_edit tribe-validation" aria-hidden="true" data-default-provider="<?php echo esc_attr( $default_module_class ); ?>">
@@ -59,9 +171,16 @@ $default_module_class = empty( $default_module ) ? '' : $default_module->class_n
59
  <?php
60
  echo esc_html(
61
  sprintf(
62
- _x( 'Add new %s', 'admin add new ticket panel heading', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'admin_add_new_ticket_panel_heading' )
 
 
 
 
 
 
63
  )
64
- ); ?>
 
65
  </h4>
66
  <h4
67
  id="ticket_title_edit"
@@ -72,7 +191,12 @@ $default_module_class = empty( $default_module ) ? '' : $default_module->class_n
72
  <?php
73
  echo esc_html(
74
  sprintf(
75
- _x( 'Edit %s', 'admin edit ticket panel heading', 'event-tickets' ),
 
 
 
 
 
76
  tribe_get_ticket_label_singular_lowercase( 'admin_edit_ticket_panel_heading' )
77
  )
78
  ); ?>
@@ -92,10 +216,16 @@ $default_module_class = empty( $default_module ) ? '' : $default_module->class_n
92
  <?php
93
  echo esc_html(
94
  sprintf(
95
- _x( 'Add new %s', 'admin add new ticket panel heading', 'event-tickets' ),
 
 
 
 
 
96
  tribe_get_rsvp_label_singular( 'admin_add_new_ticket_panel_heading' )
97
  )
98
- ); ?>
 
99
  </h4>
100
  <h4
101
  id="rsvp_title_edit"
@@ -106,10 +236,16 @@ $default_module_class = empty( $default_module ) ? '' : $default_module->class_n
106
  <?php
107
  echo esc_html(
108
  sprintf(
109
- _x( 'Edit %s', 'admin edit ticket panel heading', 'event-tickets' ),
 
 
 
 
 
110
  tribe_get_rsvp_label_singular( 'admin_edit_ticket_panel_heading' )
111
  )
112
- ); ?>
 
113
  </h4>
114
  </div>
115
  <section id="ticket_form_main" class="main">
@@ -121,9 +257,9 @@ $default_module_class = empty( $default_module ) ? '' : $default_module->class_n
121
  name='ticket_name'
122
  class="ticket_field ticket_form_right"
123
  size='25'
124
- value="<?php echo esc_attr( $ticket ? $ticket->name : null ); ?>"
125
  data-validation-is-required
126
- data-validation-error="<?php echo esc_attr( sprintf( _x( '%s type is a required field', 'admin edit ticket panel error', 'event-tickets' ), tribe_get_rsvp_label_singular( 'admin_edit_ticket_panel_error' ) ) ); ?>"
127
  />
128
  <span
129
  class="tribe_soft_note ticket_form_right"
@@ -132,11 +268,16 @@ $default_module_class = empty( $default_module ) ? '' : $default_module->class_n
132
  ><?php
133
  echo esc_html(
134
  sprintf(
135
- _x( '%1$s type name shows on the front end and emailed %2$s', 'admin edit ticket panel note', 'event-tickets' ),
136
- tribe_get_ticket_label_singular( 'admin_edit_ticket_panel_note' ),
137
- tribe_get_ticket_label_plural_lowercase( 'admin_edit_ticket_panel_note' )
 
 
 
 
138
  )
139
- ); ?>
 
140
  </span>
141
  <span
142
  class="tribe_soft_note ticket_form_right"
@@ -145,14 +286,127 @@ $default_module_class = empty( $default_module ) ? '' : $default_module->class_n
145
  ><?php
146
  echo esc_html(
147
  sprintf(
148
- _x( '%1$s type name shows on the front end and emailed %2$s', 'admin edit ticket panel note', 'event-tickets' ),
149
- tribe_get_rsvp_label_singular( 'admin_edit_rsvp_panel_note' ),
150
- tribe_get_rsvp_label_plural_lowercase( 'admin_edit_ticket_panel_note' )
 
 
 
 
151
  )
152
- ); ?>
 
153
  </span>
154
  </div>
155
- <fieldset id="tribe_ticket_provider_wrapper" class="input_block" aria-hidden="true" >
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  <legend class="ticket_form_label"><?php esc_html_e( 'Sell using:', 'event-tickets' ); ?></legend>
157
  <?php foreach ( $modules as $class => $module ) : ?>
158
  <input
@@ -189,7 +443,6 @@ $default_module_class = empty( $default_module ) ? '' : $default_module->class_n
189
  */
190
  do_action( 'tribe_events_tickets_metabox_edit_main', $post_id, $ticket_id ); ?>
191
  </section>
192
-
193
  <div class="accordion">
194
  <?php
195
  /** @var Tribe__Tickets__Admin__Views $admin_views */
@@ -240,7 +493,7 @@ $default_module_class = empty( $default_module ) ? '' : $default_module->class_n
240
  id="ticket_form_save"
241
  class="button-primary tribe-dependent tribe-validation-submit"
242
  name="ticket_form_save"
243
- value="<?php echo esc_attr( sprintf( _x( 'Save %s', 'meta box ticket form button text', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'meta_box_ticket_form_button_text' ) ) ); ?>"
244
  data-depends="#Tribe__Tickets__RSVP_radio"
245
  data-condition-is-not-checked
246
  />
@@ -249,7 +502,7 @@ $default_module_class = empty( $default_module ) ? '' : $default_module->class_n
249
  id="rsvp_form_save"
250
  class="button-primary tribe-dependent tribe-validation-submit"
251
  name="ticket_form_save"
252
- value="<?php echo esc_attr( sprintf( _x( 'Save %s', 'RSVP form save value', 'event-tickets' ), tribe_get_rsvp_label_singular( 'form_save_value' ) ) ); ?>"
253
  data-depends="#Tribe__Tickets__RSVP_radio"
254
  data-condition-is-checked
255
  />
9
  $provider_class = null;
10
  $ticket = null;
11
 
12
+ $datepicker_format = Tribe__Date_Utils::datepicker_formats( Tribe__Date_Utils::get_datepicker_format_index() );
13
+
14
  if ( ! isset( $ticket_id ) ) {
15
  $ticket_id = null;
16
 
25
 
26
  $ticket = $provider->get_ticket( $post_id, $ticket_id );
27
  }
28
+
29
+ if ( ! empty( $ticket->start_date ) ) {
30
+ $start_date = Tribe__Date_Utils::date_only( $ticket->start_date, false, $datepicker_format );
31
+ } else {
32
+ $start_date = null;
33
+ }
34
+
35
+ if ( ! empty( $ticket->end_date ) ) {
36
+ $end_date = Tribe__Date_Utils::date_only( $ticket->end_date, false, $datepicker_format );
37
+ } else {
38
+ $end_date = null;
39
+ }
40
  }
41
 
42
  $modules = Tribe__Tickets__Tickets::modules();
43
 
44
  $default_module_class = empty( $default_module ) ? '' : $default_module->class_name;
45
+
46
+ $timepicker_step = 30;
47
+
48
+ if ( class_exists( 'Tribe__Events__Main' ) ) {
49
+ $timepicker_step = (int) tribe( 'tec.admin.event-meta-box' )->get_timepicker_step( 'start' );
50
+ }
51
+
52
+ $timepicker_round = '00:00:00';
53
+
54
+ $start_date_errors = [
55
+ 'is-required' => __( 'Start sale date cannot be empty.', 'event-tickets' ),
56
+ 'is-less-or-equal-to' => __( 'Start sale date cannot be greater than End Sale date', 'event-tickets' ),
57
+ ];
58
+
59
+ $ticket_name = $ticket ? $ticket->name : '';
60
+ $ticket_description = $ticket ? $ticket->description : '';
61
+ $ticket_start_time = $ticket ? $ticket->start_time : '';
62
+ $ticket_end_time = $ticket ? $ticket->end_time : '';
63
+
64
+ $msg_rsvp_type_required = sprintf(
65
+ // Translators: %s: dynamic 'RSVP' text.
66
+ _x(
67
+ '%s type is a required field',
68
+ 'admin edit ticket panel error',
69
+ 'event-tickets'
70
+ ),
71
+ tribe_get_rsvp_label_singular( 'admin_edit_ticket_panel_error' )
72
+ );
73
+
74
+ $msg_ticket_start_time_aria = sprintf(
75
+ // Translators: %s: dynamic 'Ticket' text.
76
+ _x(
77
+ '%s start date',
78
+ 'input start time ARIA label',
79
+ 'event-tickets'
80
+ ),
81
+ tribe_get_ticket_label_singular( 'input_start_time_aria_label' )
82
+ );
83
+
84
+ $msg_ticket_start_date = sprintf(
85
+ // Translators: %s: dynamic 'tickets' text.
86
+ _x(
87
+ 'If you do not set a start sale date, %s will be available immediately.',
88
+ 'input start time help text title',
89
+ 'event-tickets'
90
+ ),
91
+ tribe_get_ticket_label_plural_lowercase( 'input_start_time_help_text_title' )
92
+ );
93
+
94
+ $msg_ticket_end_date_aria = sprintf(
95
+ // Translators: %s: dynamic 'Ticket' text.
96
+ _x(
97
+ '%s end date',
98
+ 'input end time ARIA label',
99
+ 'event-tickets'
100
+ ),
101
+ tribe_get_ticket_label_singular( 'input_end_time_aria_label' )
102
+ );
103
+
104
+ $msg_ticket_end_date_title_if_tec = sprintf(
105
+ // Translators: %s: dynamic 'tickets' text.
106
+ _x(
107
+ 'If you do not set an end sale date, %s will be available until the event begins.',
108
+ 'input end time help text title',
109
+ 'event-tickets'
110
+ ),
111
+ tribe_get_ticket_label_plural_lowercase( 'input_end_time_help_text_title' )
112
+ );
113
+
114
+ $msg_ticket_end_date_title_if_not_tec = sprintf(
115
+ // Translators: %s: dynamic 'tickets' text.
116
+ _x(
117
+ 'If you do not set an end sale date, %s will be available forever.',
118
+ 'input end time help text title',
119
+ 'event-tickets'
120
+ ),
121
+ tribe_get_ticket_label_plural_lowercase( 'input_end_time_help_text_title' )
122
+ );
123
+
124
+ $msg_ticket_form_save = sprintf(
125
+ // Translators: %s: dynamic 'tickets' text.
126
+ _x(
127
+ 'Save %s',
128
+ 'meta box ticket form button text',
129
+ 'event-tickets'
130
+ ),
131
+ tribe_get_ticket_label_singular_lowercase( 'meta_box_ticket_form_button_text' )
132
+ );
133
+
134
+ $msg_rsvp_form_save = sprintf(
135
+ // Translators: %s: dynamic 'RSVP' text.
136
+ _x(
137
+ 'Save %s',
138
+ 'RSVP form save value',
139
+ 'event-tickets'
140
+ ),
141
+ tribe_get_rsvp_label_singular( 'form_save_value' )
142
+ );
143
  ?>
144
 
145
  <div id="tribe_panel_edit" class="ticket_panel panel_edit tribe-validation" aria-hidden="true" data-default-provider="<?php echo esc_attr( $default_module_class ); ?>">
171
  <?php
172
  echo esc_html(
173
  sprintf(
174
+ // Translators: %s: dynamic 'ticket' text.
175
+ _x(
176
+ 'Add new %s',
177
+ 'admin add new ticket panel heading',
178
+ 'event-tickets'
179
+ ),
180
+ tribe_get_ticket_label_singular_lowercase( 'admin_add_new_ticket_panel_heading' )
181
  )
182
+ );
183
+ ?>
184
  </h4>
185
  <h4
186
  id="ticket_title_edit"
191
  <?php
192
  echo esc_html(
193
  sprintf(
194
+ // Translators: %s: dynamic 'ticket' text.
195
+ _x(
196
+ 'Edit %s',
197
+ 'admin edit ticket panel heading',
198
+ 'event-tickets'
199
+ ),
200
  tribe_get_ticket_label_singular_lowercase( 'admin_edit_ticket_panel_heading' )
201
  )
202
  ); ?>
216
  <?php
217
  echo esc_html(
218
  sprintf(
219
+ // Translators: %s: dynamic 'RSVP' text.
220
+ _x(
221
+ 'Add new %s',
222
+ 'admin add new ticket panel heading',
223
+ 'event-tickets'
224
+ ),
225
  tribe_get_rsvp_label_singular( 'admin_add_new_ticket_panel_heading' )
226
  )
227
+ );
228
+ ?>
229
  </h4>
230
  <h4
231
  id="rsvp_title_edit"
236
  <?php
237
  echo esc_html(
238
  sprintf(
239
+ // Translators: %s: dynamic 'RSVP' text.
240
+ _x(
241
+ 'Edit %s',
242
+ 'admin edit ticket panel heading',
243
+ 'event-tickets'
244
+ ),
245
  tribe_get_rsvp_label_singular( 'admin_edit_ticket_panel_heading' )
246
  )
247
+ );
248
+ ?>
249
  </h4>
250
  </div>
251
  <section id="ticket_form_main" class="main">
257
  name='ticket_name'
258
  class="ticket_field ticket_form_right"
259
  size='25'
260
+ value="<?php echo esc_attr( $ticket_name ); ?>"
261
  data-validation-is-required
262
+ data-validation-error="<?php echo esc_attr( $msg_rsvp_type_required ); ?>"
263
  />
264
  <span
265
  class="tribe_soft_note ticket_form_right"
268
  ><?php
269
  echo esc_html(
270
  sprintf(
271
+ // Translators: %1$s: dynamic 'ticket' text.
272
+ _x(
273
+ 'This is the name of your %1$s. It is displayed on the frontend of your website and within %1$s emails.',
274
+ 'admin edit ticket panel note',
275
+ 'event-tickets'
276
+ ),
277
+ tribe_get_ticket_label_singular_lowercase( 'admin_edit_ticket_panel_note' )
278
  )
279
+ );
280
+ ?>
281
  </span>
282
  <span
283
  class="tribe_soft_note ticket_form_right"
286
  ><?php
287
  echo esc_html(
288
  sprintf(
289
+ // Translators: %1$s: dynamic 'RSVP' text.
290
+ _x(
291
+ 'This is the name of your %1$s. It is displayed on the frontend of your website and within %1$s emails.',
292
+ 'admin edit RSVP panel note',
293
+ 'event-tickets'
294
+ ),
295
+ tribe_get_rsvp_label_singular( 'admin_edit_rsvp_panel_note' )
296
  )
297
+ );
298
+ ?>
299
  </span>
300
  </div>
301
+ <div class="input_block">
302
+ <label class="ticket_form_label ticket_form_left" for="ticket_description"><?php esc_html_e( 'Description:', 'event-tickets' ); ?></label>
303
+ <textarea
304
+ rows="5"
305
+ cols="40"
306
+ name="ticket_description"
307
+ class="ticket_field ticket_form_right"
308
+ id="ticket_description"
309
+ ><?php echo esc_textarea( $ticket_description ); ?></textarea>
310
+ <div class="input_block">
311
+ <label class="tribe_soft_note">
312
+ <input
313
+ type="checkbox"
314
+ id="tribe_tickets_show_description"
315
+ name="ticket_show_description"
316
+ value="1"
317
+ class="ticket_field ticket_form_left"
318
+ <?php checked( true, $ticket ? $ticket->show_description : true ); ?>
319
+ >
320
+ <?php
321
+ echo esc_html(
322
+ sprintf(
323
+ // Translators: %s: dynamic 'tickets' text.
324
+ _x(
325
+ 'Show description on frontend %s form.',
326
+ 'default ticket provider',
327
+ 'event-tickets'
328
+ ),
329
+ tribe_get_ticket_label_singular_lowercase( 'default_ticket_provider' )
330
+ )
331
+ );
332
+ ?>
333
+ </label>
334
+ </div>
335
+ </div>
336
+ <div class="input_block">
337
+ <label class="ticket_form_label ticket_form_left" for="ticket_start_date"><?php esc_html_e( 'Start sale:', 'event-tickets' ); ?></label>
338
+ <div class="ticket_form_right">
339
+ <input
340
+ autocomplete="off"
341
+ type="text"
342
+ class="tribe-datepicker tribe-field-start_date ticket_field"
343
+ name="ticket_start_date"
344
+ id="ticket_start_date"
345
+ value="<?php echo esc_attr( $ticket ? $start_date : null ); ?>"
346
+ data-validation-type="datepicker"
347
+ data-validation-is-less-or-equal-to="#ticket_end_date"
348
+ data-validation-error="<?php echo esc_attr( wp_json_encode( $start_date_errors ) ); ?>"
349
+ />
350
+ <span class="helper-text hide-if-js"><?php esc_html_e( 'YYYY-MM-DD', 'event-tickets' ); ?></span>
351
+ <span class="datetime_seperator"> <?php esc_html_e( 'at', 'event-tickets' ); ?> </span>
352
+ <input
353
+ autocomplete="off"
354
+ type="text"
355
+ class="tribe-timepicker tribe-field-start_time ticket_field"
356
+ name="ticket_start_time"
357
+ id="ticket_start_time"
358
+ <?php echo Tribe__View_Helpers::is_24hr_format() ? 'data-format="H:i"' : ''; ?>
359
+ data-step="<?php echo esc_attr( $timepicker_step ); ?>"
360
+ data-round="<?php echo esc_attr( $timepicker_round ); ?>"
361
+ value="<?php echo esc_attr( $ticket_start_time ); ?>"
362
+ aria-label="<?php echo esc_attr( $msg_ticket_start_time_aria ); ?>"
363
+ />
364
+ <span class="helper-text hide-if-js"><?php esc_html_e( 'HH:MM', 'event-tickets' ); ?></span>
365
+ <span class="dashicons dashicons-editor-help" title="<?php echo esc_attr( $msg_ticket_start_date ); ?>">
366
+ </span>
367
+ </div>
368
+ </div>
369
+ <div class="input_block">
370
+ <label class="ticket_form_label ticket_form_left" for="ticket_end_date"><?php esc_html_e( 'End sale:', 'event-tickets' ); ?></label>
371
+ <div class="ticket_form_right">
372
+ <input
373
+ autocomplete="off"
374
+ type="text"
375
+ class="tribe-datepicker tribe-field-end_date ticket_field"
376
+ name="ticket_end_date"
377
+ id="ticket_end_date"
378
+ value="<?php echo esc_attr( $ticket ? $end_date : null ); ?>"
379
+ />
380
+ <span class="helper-text hide-if-js"><?php esc_html_e( 'YYYY-MM-DD', 'event-tickets' ); ?></span>
381
+ <span class="datetime_seperator"> <?php esc_html_e( 'at', 'event-tickets' ); ?> </span>
382
+ <input
383
+ autocomplete="off"
384
+ type="text"
385
+ class="tribe-timepicker tribe-field-end_time ticket_field"
386
+ name="ticket_end_time"
387
+ id="ticket_end_time"
388
+ <?php echo Tribe__View_Helpers::is_24hr_format() ? 'data-format="H:i"' : ''; ?>
389
+ data-step="<?php echo esc_attr( $timepicker_step ); ?>"
390
+ data-round="<?php echo esc_attr( $timepicker_round ); ?>"
391
+ value="<?php echo esc_attr( $ticket_end_time ); ?>"
392
+ aria-label="<?php echo esc_attr( $msg_ticket_end_date_aria ); ?>"
393
+ />
394
+ <span class="helper-text hide-if-js"><?php esc_html_e( 'HH:MM', 'event-tickets' ); ?></span>
395
+ <span class="dashicons dashicons-editor-help"
396
+ <?php
397
+ if (
398
+ class_exists( 'Tribe__Events__Main' )
399
+ && Tribe__Events__Main::POSTTYPE === get_post_type( $post_id )
400
+ ) :
401
+ ?>
402
+ title="<?php echo esc_attr( $msg_ticket_end_date_title_if_tec ); ?>"
403
+ <?php else : ?>
404
+ title="<?php echo esc_attr( $msg_ticket_end_date_title_if_not_tec ); ?>"
405
+ <?php endif; ?>
406
+ ></span>
407
+ </div>
408
+ </div>
409
+ <fieldset id="tribe_ticket_provider_wrapper" class="input_block" aria-hidden="true">
410
  <legend class="ticket_form_label"><?php esc_html_e( 'Sell using:', 'event-tickets' ); ?></legend>
411
  <?php foreach ( $modules as $class => $module ) : ?>
412
  <input
443
  */
444
  do_action( 'tribe_events_tickets_metabox_edit_main', $post_id, $ticket_id ); ?>
445
  </section>
 
446
  <div class="accordion">
447
  <?php
448
  /** @var Tribe__Tickets__Admin__Views $admin_views */
493
  id="ticket_form_save"
494
  class="button-primary tribe-dependent tribe-validation-submit"
495
  name="ticket_form_save"
496
+ value="<?php echo esc_attr( $msg_ticket_form_save ); ?>"
497
  data-depends="#Tribe__Tickets__RSVP_radio"
498
  data-condition-is-not-checked
499
  />
502
  id="rsvp_form_save"
503
  class="button-primary tribe-dependent tribe-validation-submit"
504
  name="ticket_form_save"
505
+ value="<?php echo esc_attr( $msg_rsvp_form_save ); ?>"
506
  data-depends="#Tribe__Tickets__RSVP_radio"
507
  data-condition-is-checked
508
  />
src/admin-views/tribe-options-tickets.php CHANGED
@@ -60,7 +60,17 @@ $tickets_fields = [
60
  ],
61
  'ticket-enabled-post-types' => [
62
  'type' => 'checkbox_list',
63
- 'label' => esc_html( sprintf( _x( 'Post types that can have %s', 'tickets fields settings enabled post types', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'tickets_fields_settings_enabled_post_types' ) ) ),
 
 
 
 
 
 
 
 
 
 
64
  // only set the default to tribe_events if the ticket-enabled-post-types index has never been saved
65
  'default' => array_key_exists( 'ticket-enabled-post-types', $options ) ? false : 'tribe_events',
66
  'options' => $all_post_types,
60
  ],
61
  'ticket-enabled-post-types' => [
62
  'type' => 'checkbox_list',
63
+ 'label' => esc_html(
64
+ sprintf(
65
+ // Translators: %s: dynamic "tickets" text.
66
+ _x(
67
+ 'Post types that can have %s',
68
+ 'tickets fields settings enabled post types',
69
+ 'event-tickets'
70
+ ),
71
+ tribe_get_ticket_label_plural_lowercase( 'tickets_fields_settings_enabled_post_types' )
72
+ )
73
+ ),
74
  // only set the default to tribe_events if the ticket-enabled-post-types index has never been saved
75
  'default' => array_key_exists( 'ticket-enabled-post-types', $options ) ? false : 'tribe_events',
76
  'options' => $all_post_types,
src/modules/blocks/attendees/index.js CHANGED
@@ -29,6 +29,7 @@ export default {
29
 
30
  supports: {
31
  html: false,
 
32
  },
33
 
34
  attributes: {
29
 
30
  supports: {
31
  html: false,
32
+ customClassName: false,
33
  },
34
 
35
  attributes: {
src/modules/blocks/rsvp/index.js CHANGED
@@ -31,6 +31,7 @@ export default {
31
  supports: {
32
  html: false,
33
  multiple: false,
 
34
  },
35
 
36
  attributes: {
31
  supports: {
32
  html: false,
33
  multiple: false,
34
+ customClassName: false,
35
  },
36
 
37
  attributes: {
src/modules/blocks/ticket/index.js CHANGED
@@ -22,6 +22,7 @@ export default {
22
 
23
  supports: {
24
  html: false,
 
25
  },
26
 
27
  attributes: {
22
 
23
  supports: {
24
  html: false,
25
+ customClassName: false,
26
  },
27
 
28
  attributes: {
src/modules/blocks/tickets/controls/template.js CHANGED
@@ -23,7 +23,7 @@ const message = __(
23
  );
24
 
25
  const note = __(
26
- 'Note: adjusting this setting will only impact new tickets. Existing tickets will not change. We highly recommend that all tickets for one event use the same ecommerce plugin',
27
  'event-tickets',
28
  );
29
 
23
  );
24
 
25
  const note = __(
26
+ 'Note: adjusting this setting will only impact new tickets. Existing tickets will not change. We highly recommend that all tickets for one event use the same ecommerce plugin.',
27
  'event-tickets',
28
  );
29
 
src/modules/blocks/tickets/index.js CHANGED
@@ -31,6 +31,7 @@ export default {
31
  supports: {
32
  html: false,
33
  multiple: false,
 
34
  },
35
 
36
  attributes: {
31
  supports: {
32
  html: false,
33
  multiple: false,
34
+ customClassName: false,
35
  },
36
 
37
  attributes: {
src/modules/data/blocks/rsvp/reducers/details.js CHANGED
@@ -11,7 +11,9 @@ import { globals, moment as momentUtil } from '@moderntribe/common/utils';
11
 
12
  const datePickerFormat = globals.tecDateSettings().datepickerFormat;
13
  const currentMoment = moment();
14
- const endMoment = currentMoment.clone();
 
 
15
 
16
  const startDateInput = datePickerFormat
17
  ? currentMoment.format( momentUtil.toFormat( datePickerFormat ) )
11
 
12
  const datePickerFormat = globals.tecDateSettings().datepickerFormat;
13
  const currentMoment = moment();
14
+ const bufferDuration = globals.tickets().end_sale_buffer_duration ? globals.tickets().end_sale_buffer_duration : 2;
15
+ const bufferYears = globals.tickets().end_sale_buffer_years ? globals.tickets().end_sale_buffer_years : 1;
16
+ const endMoment = currentMoment.clone().add( bufferDuration, 'hours' ).add( bufferYears, 'years' );
17
 
18
  const startDateInput = datePickerFormat
19
  ? currentMoment.format( momentUtil.toFormat( datePickerFormat ) )
src/modules/data/blocks/rsvp/sagas.js CHANGED
@@ -626,7 +626,6 @@ export function* setNonEventPostTypeEndDate() {
626
 
627
  const tempEndMoment = yield select( selectors.getRSVPTempEndDateMoment );
628
  const endMoment = yield call( [ tempEndMoment, 'clone' ] );
629
- yield call( [ endMoment, 'add' ], 100, 'years' );
630
  const { date, dateInput, moment, time } = yield call( createDates, endMoment.toDate() );
631
 
632
  yield all( [
626
 
627
  const tempEndMoment = yield select( selectors.getRSVPTempEndDateMoment );
628
  const endMoment = yield call( [ tempEndMoment, 'clone' ] );
 
629
  const { date, dateInput, moment, time } = yield call( createDates, endMoment.toDate() );
630
 
631
  yield all( [
src/modules/data/blocks/ticket/reducers/tickets/ticket/details.js CHANGED
@@ -12,7 +12,9 @@ import { globals, moment as momentUtil } from '@moderntribe/common/utils';
12
 
13
  const datePickerFormat = globals.tecDateSettings().datepickerFormat;
14
  const currentMoment = moment();
15
- const endMoment = currentMoment.clone().add( 100, 'years' );
 
 
16
 
17
  const startDateInput = datePickerFormat
18
  ? currentMoment.format( momentUtil.toFormat( datePickerFormat ) )
12
 
13
  const datePickerFormat = globals.tecDateSettings().datepickerFormat;
14
  const currentMoment = moment();
15
+ const bufferDuration = globals.tickets().end_sale_buffer_duration ? globals.tickets().end_sale_buffer_duration : 2;
16
+ const bufferYears = globals.tickets().end_sale_buffer_years ? globals.tickets().end_sale_buffer_years : 1;
17
+ const endMoment = currentMoment.clone().add( bufferDuration, 'hours' ).add( bufferYears, 'years' );
18
 
19
  const startDateInput = datePickerFormat
20
  ? currentMoment.format( momentUtil.toFormat( datePickerFormat ) )
src/modules/data/blocks/ticket/reducers/tickets/ticket/temp-details.js CHANGED
@@ -12,7 +12,9 @@ import { globals, moment as momentUtil } from '@moderntribe/common/utils';
12
 
13
  const datePickerFormat = globals.tecDateSettings().datepickerFormat;
14
  const currentMoment = moment();
15
- const endMoment = currentMoment.clone().add( 100, 'years' );
 
 
16
 
17
  const startDateInput = datePickerFormat
18
  ? currentMoment.format( momentUtil.toFormat( datePickerFormat ) )
12
 
13
  const datePickerFormat = globals.tecDateSettings().datepickerFormat;
14
  const currentMoment = moment();
15
+ const bufferDuration = globals.tickets().end_sale_buffer_duration ? globals.tickets().end_sale_buffer_duration : 2;
16
+ const bufferYears = globals.tickets().end_sale_buffer_years ? globals.tickets().end_sale_buffer_years : 1;
17
+ const endMoment = currentMoment.clone().add( bufferDuration, 'hours' ).add( bufferYears, 'years' );
18
 
19
  const startDateInput = datePickerFormat
20
  ? currentMoment.format( momentUtil.toFormat( datePickerFormat ) )
src/resources/css/tickets-admin.css CHANGED
@@ -725,10 +725,6 @@
725
  margin-right: 5px;
726
  }
727
 
728
- #ticket_form span.datetime_seperator {
729
- margin-left: 10px;
730
- }
731
-
732
  .ticket_list h4 {
733
  border-bottom: 1px solid #e5e5e5;
734
  padding-bottom: 6px;
@@ -1253,6 +1249,37 @@ p.description {
1253
  margin-right: 0;
1254
  }
1255
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1256
  @media (min-width: 768px) {
1257
 
1258
  .tribe-common-c-loader.tribe-tickets-loader__tickets-block,
725
  margin-right: 5px;
726
  }
727
 
 
 
 
 
728
  .ticket_list h4 {
729
  border-bottom: 1px solid #e5e5e5;
730
  padding-bottom: 6px;
1249
  margin-right: 0;
1250
  }
1251
 
1252
+ .ticket-editor-notice {
1253
+ padding: 10px;
1254
+ margin-bottom: 10px;
1255
+ font-size: 13px;
1256
+ border-radius: 4px;
1257
+ display: flex;
1258
+ }
1259
+
1260
+ .ticket-editor-notice.info {
1261
+ background-color: #EDF6FC;
1262
+ }
1263
+
1264
+ .ticket-editor-notice.info .dashicons {
1265
+ color: #2A709D;
1266
+ }
1267
+
1268
+ .ticket-editor-notice.tribe-dependent {
1269
+ display: none;
1270
+ }
1271
+
1272
+ .ticket-editor-notice.tribe-dependent.tribe-active {
1273
+ display: flex;
1274
+ }
1275
+
1276
+ .ticket-editor-notice .dashicons {
1277
+ font-size: 20px;
1278
+ width: 20px;
1279
+ height: 20px;
1280
+ margin-right: 2px;
1281
+ }
1282
+
1283
  @media (min-width: 768px) {
1284
 
1285
  .tribe-common-c-loader.tribe-tickets-loader__tickets-block,
src/resources/css/tickets-admin.min.css CHANGED
@@ -1 +1 @@
1
- .accordion-header{background:none;border:0;color:inherit;cursor:pointer;font-size:12px;font-weight:700;padding:10px 20px;box-sizing:border-box;position:relative;text-align:left;width:100%}.accordion-header:before{background-color:#000;border-radius:100%;box-sizing:border-box;color:#fff;content:"\f132";font-family:dashicons;font-size:10px;line-height:17px;font-weight:400;height:14px;left:0;padding:0;position:absolute;top:12px;width:15px;text-align:center;padding-right:1px}.accordion-header:after{content:"";border-bottom:1px solid #ddd;position:absolute;right:0;width:80%;top:50%;transform:translateY(-50%)}.accordion-header.is-active:before{content:"\f460";line-height:15px}.accordion-header:focus{outline:1px solid #5b9dd9}.accordion-header:hover{background:none}.tribe-tickets-editor-history:after{width:calc(100% - 80px)}.tribe_attendee_meta:after{width:calc(100% - 170px)}.tribe_advanced_meta:after{width:calc(100% - 105px)}.accordion-label:focus{outline:none}.accordion-content{display:none}.ticket_panel .accordion-content{margin:1em 0 2em}.accordion-content.is-active{display:block}.tribe-common-c-loader.tribe-tickets-loader__modal,.tribe-common-c-loader.tribe-tickets-loader__tickets-block{align-items:center;background:hsla(0,0%,100%,.6);display:flex;height:100%;justify-content:center;left:0;padding:0;position:absolute;top:0;width:100%;z-index:100}.tribe-common-c-loader.tribe-tickets-loader__modal{height:100vh;position:fixed;width:100vw}.event-tickets .tribe-common-c-loader{align-items:center;background:hsla(0,0%,100%,.6);display:flex;height:100%;justify-content:center;left:0;padding:0;position:absolute;top:0;width:100%;z-index:100}.tribe-common .tribe-tickets__notice{padding:16px;background-color:#f7f6f6;border-radius:4px;margin:20px 0}.tribe-common .tribe-tickets__notice>:last-child{padding-bottom:0;margin-bottom:0}.tribe-common .tribe-tickets-notice__title{margin:0;position:relative}.tribe-common .tribe-tickets-notice__title:empty{display:none}.tribe-common .tribe-tickets__notice--error{background-color:rgba(218,57,77,.08);display:none;padding-left:50px}.tribe-common .tribe-tickets__notice--error .tribe-tickets-notice__title{position:relative}.tribe-common .tribe-tickets__notice--error .tribe-tickets-notice__title:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='none' fill-rule='evenodd' transform='translate(1 1)'%3E%3Ccircle cx='8' cy='8' r='7.467' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5'/%3E%3Ccircle cx='8' cy='11.733' r='1.067' fill='%23141827' fill-rule='nonzero'/%3E%3Cpath stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M8 3.733v4.8' fill='%23141827'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;content:"";height:16px;left:-32px;position:absolute;top:2px;width:16px}.tribe-common .tribe-tickets__notice--barred{background-color:#fff;border:4px solid #e4e4e4;border-bottom:0;border-radius:0;border-top:0;padding:0 12px}.tribe-common .tribe-tickets__notice--barred-left{border-right:0;padding:0 0 0 12px}.tribe-common .tribe-tickets__notice--barred-right{border-left:0;padding:0 12px 0 0}.event-tickets .tribe-tickets-svgicon{background-repeat:no-repeat;background-size:contain}.tooltipster-base.tribe-tickets-tooltip-theme{background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14);height:auto!important;padding:24px;max-width:254px}.tooltipster-base.tribe-tickets-tooltip-theme .tooltipster-box{background-color:transparent;border:0;border-radius:0;box-shadow:none;margin:0}.tooltipster-base.tribe-tickets-tooltip-theme .tooltipster-box .tooltipster-content{color:#141827;overflow:inherit;padding:0;word-break:break-word}.tooltipster-base.tribe-tickets-tooltip-theme .tooltipster-arrow{display:none}.tribe-common a.tribe-common-c-btn--small,.tribe-common button.tribe-common-c-btn--small,.tribe-common input[type=button].tribe-common-c-btn--small,.tribe-common input[type=submit].tribe-common-c-btn--small{background-color:#334aff;padding:11px 14px;width:auto}.tribe-common a.tribe-common-c-btn-link,.tribe-common button.tribe-common-c-btn-link,.tribe-common input[type=button].tribe-common-c-btn-link,.tribe-common input[type=submit].tribe-common-c-btn-link{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;text-align:center;text-decoration:underline;transition:color .2s ease}.tribe-common a.tribe-common-c-btn-link:focus,.tribe-common a.tribe-common-c-btn-link:hover,.tribe-common button.tribe-common-c-btn-link:focus,.tribe-common button.tribe-common-c-btn-link:hover,.tribe-common input[type=button].tribe-common-c-btn-link:focus,.tribe-common input[type=button].tribe-common-c-btn-link:hover,.tribe-common input[type=submit].tribe-common-c-btn-link:focus,.tribe-common input[type=submit].tribe-common-c-btn-link:hover{background-color:transparent}.tribe-common a.tribe-common-c-btn-link,.tribe-common button.tribe-common-c-btn-link,.tribe-common input[type=button].tribe-common-c-btn-link,.tribe-common input[type=submit].tribe-common-c-btn-link{background-color:transparent;color:#334aff;padding:11px 20px;width:100%}.tribe-common a.tribe-common-c-btn-link:focus,.tribe-common a.tribe-common-c-btn-link:hover,.tribe-common button.tribe-common-c-btn-link:focus,.tribe-common button.tribe-common-c-btn-link:hover,.tribe-common input[type=button].tribe-common-c-btn-link:focus,.tribe-common input[type=button].tribe-common-c-btn-link:hover,.tribe-common input[type=submit].tribe-common-c-btn-link:focus,.tribe-common input[type=submit].tribe-common-c-btn-link:hover{color:rgba(51,74,255,.8)}.tribe-common a.tribe-common-c-btn-link:active,.tribe-common button.tribe-common-c-btn-link:active,.tribe-common input[type=button].tribe-common-c-btn-link:active,.tribe-common input[type=submit].tribe-common-c-btn-link:active{color:rgba(51,74,255,.9)}.tribe-common a.tribe-common-c-btn-link:disabled,.tribe-common button.tribe-common-c-btn-link:disabled,.tribe-common input[type=button].tribe-common-c-btn-link:disabled,.tribe-common input[type=submit].tribe-common-c-btn-link:disabled{color:rgba(51,74,255,.07)}.tribe-tickets-column-attendees-link{display:inline-block}#ticket_form input[type=radio]{margin-right:5px}#ticket_form span.datetime_seperator{margin-left:10px}.ticket_list h4{border-bottom:1px solid #e5e5e5;padding-bottom:6px;text-transform:uppercase}.ticket_list h4 a{font-size:11px;font-weight:400;text-transform:none}.ticket_list tr:hover td div.ticket_controls{visibility:visible}.ticket_list tr td{padding:10px;vertical-align:middle}.ticket_list tr td div.ticket_controls{visibility:hidden}.ticket_name p:first-child{font-weight:700}#tribe_ticket_header_preview img{height:auto!important;max-width:95%!important}#tribe_ticket_header_remove,.ticket_time{display:none}.tribe-tickets-remaining{font-size:10px}.eventtable{margin:0;padding-top:0;width:100%}#event_tickets,.eventtable.ticket_list.eventForm{table-layout:fixed}.tribe-strong-label{font-weight:700}.tribe-theme-twentyfifteen .tribe-events-tickets input[type=number]{padding:.375em;width:100%}.screen_reader_text{clip:rect(0 0 0 0);clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}#poststuff .inside{margin-top:12px}.tribe-tickets-editor-blocker{background:hsla(0,0%,100%,.7);bottom:0;display:none;left:0;position:absolute;right:0;top:0;z-index:100000}.tribe-tickets-editor-blocker .spinner{left:50%;margin-left:-10px;margin-top:-10px;position:absolute;top:50%;z-index:100404}.tribe-tickets-editor-history-list{margin-left:20px}#event_tickets{position:relative}#event_tickets fieldset{border:0;padding:0;margin:0 0 1em}#event_tickets .ticket_form_left{font-weight:700}#event_tickets label{font-weight:400}#event_tickets input[type=color].ticket_form_right,#event_tickets input[type=date].ticket_form_right,#event_tickets input[type=datetime-local].ticket_form_right,#event_tickets input[type=datetime].ticket_form_right,#event_tickets input[type=email].ticket_form_right,#event_tickets input[type=month].ticket_form_right,#event_tickets input[type=number].ticket_form_right,#event_tickets input[type=password].ticket_form_right,#event_tickets input[type=range].ticket_form_right,#event_tickets input[type=search].ticket_form_right,#event_tickets input[type=tel].ticket_form_right,#event_tickets input[type=text].ticket_form_right,#event_tickets input[type=time].ticket_form_right,#event_tickets input[type=url].ticket_form_right,#event_tickets input[type=week].ticket_form_right,#event_tickets label.ticket_form_right,#event_tickets textarea.ticket_form_right{display:block}#event_tickets .tribe-description-small{font-size:.95em;margin-top:5px;color:#888}.ticket_panel{border:1px solid #a3a3a3;border-radius:5px;box-sizing:border-box;opacity:1;position:relative;padding:8px;visibility:visible;width:100%;will-change:transform}.ticket_panel[aria-hidden=true]{opacity:0;position:absolute;visibility:hidden}.ticket_panel section{margin:2em 0}.ticket_panel #tribe-tickets-image{margin-top:.5em}.ticket_panel.panel_base{border:0;padding:.5em 0 0}.ticket_panel.panel_edit{border:0}.ticket_panel.panel_settings h4{margin:0}.ticket_panel.panel_settings .settings_main{margin-bottom:0;margin-top:0}.ticket_panel.panel_settings .settings_main p{font-size:inherit}.ticket_panel h4,.ticket_title{text-transform:uppercase}.ticket_title{margin-top:0}.ticket_list_container{margin-bottom:20px}.tribe_no_capacity{margin:0}.ticket_delete{color:#a00}.ticket_delete:hover{color:#dc3232}#settings_form_toggle{margin-top:1em}.global_capacity-wrapper{margin-bottom:1em}.global_capacity_edit_button{background:none;border:0;color:#ccc;cursor:pointer;padding:0}.tribe-button-icon:before{font-family:dashicons;font-size:1.25em;left:-.25em;position:relative;vertical-align:middle}.tribe-button-icon .tribe-hidden{display:none}.tribe-button-icon.tribe-button-icon-plus:before{content:"\f132"}.tribe-button-icon.tribe-button-icon-edit:before{content:"\f464"}.tribe-button-icon.tribe-button-icon-settings:before{content:"\f111";top:-2px}.tribe-tickets-image-preview{margin-top:2em;max-width:200px}#tribe_ticket_header_image{margin-right:2em;vertical-align:baseline}#tribe_tickets_image_preview_filename{display:none;font-weight:700}#tribe_tickets_image_preview_filename.-active{display:inline}#tribe_tickets_image_preview_filename .dashicons{vertical-align:text-bottom}#tribe_tickets_image_preview_filename .filename{margin-left:.5em}.ticket_table_intro .button-secondary{float:right;margin-bottom:15px;margin-left:5px}.ticket_table_intro #ticket_form_total_capacity{display:inline-block;line-height:28px;position:relative}.ticket_table_intro #ticket_form_total_capacity .tooltip{background-color:#efefef;border-radius:3px;border:1px solid #a3a3a3;display:none;margin-left:.5em;padding:.5em;position:absolute;top:50%;transform:translateY(-50%);z-index:1}.ticket_table_intro #ticket_form_total_capacity:hover .tooltip{display:block}.ticket_table_intro #ticket_form_total_capacity .tooltip{left:100%;top:53%;white-space:nowrap}.input_block{margin-bottom:1em;position:relative}.input_block .ticket_form_left{display:block;box-sizing:border-box;float:left;margin:0;padding-left:0;padding-right:1em}.input_block input,.input_block textarea{max-width:calc(100% - 132px)}.input_block .ticket_field.hasDatepicker{border-radius:3px;font-size:13px;margin-bottom:0}.input_block .input_block,.input_block .ticket_form_right{display:block;margin-top:0}.input_block .input_block:last-child,.input_block .ticket_form_right:last-child{margin-bottom:0}.input_block .input_block{margin-top:1em}.input_block legend+.input_block{margin-top:0}.input_block .tribe_stock_block{padding-left:calc(20px + .4em)}.input_block .tribe_stock_block.tribe-active{padding-top:1em}.input_block label.ticket_form_right{margin-bottom:1em}.input_block .tribe_block_label{display:block}.input_block .ticket_stock_total{color:#666;font-style:italic;margin-left:1em}#ticket_form .input_block .ticket_stock_total_value{margin-right:0}.input_block .tribe-timepicker{width:6em}#tribe_ticket_provider_wrapper{clip:rect(0 0 0 0);clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}#event_tickets{font-size:12px}h4.ticket_form_title{font-size:1.2em;margin-top:0}#ticket_form input[type=checkbox],#ticket_form input[type=radio]{margin-right:.4em}.tribe_soft_note,p.description{color:#a3a3a3;font-size:inherit;font-style:normal}#ticket_form .ticket_advanced.history._show span:first-child,#ticket_form .ticket_advanced.history .toggle-history span:nth-child(2),#ticket_form .ticket_advanced.history ul{display:none}#ticket_form .ticket_advanced.history._show span:nth-child(2){display:inline}#ticket_form .ticket_advanced.history._show ul{display:block}.ticket_bottom{margin-top:1em}.tribe_preview{cursor:pointer}#ticket_form .tooltip_container{position:relative}#ticket_form .tooltip_container .tooltip{border-radius:3px;border:1px solid #a3a3a3;display:none;margin-left:.5em;padding:.5em;position:absolute;top:50%;transform:translateY(-50%);z-index:1}#ticket_form .tooltip_container:hover .tooltip{display:block}#ticket_form .tooltip_container{display:inline;vertical-align:middle}#ticket_form .tooltip_container .tooltip{background-color:#efefef;left:100%;margin:0;width:200px}#settings_global_capacity_edit{background-color:#fff;border:1px solid #b4b9be;float:left;font-size:inherit;margin-right:10px}#settings_global_capacity_edit:disabled{background-color:transparent;border:0;box-shadow:none;color:#555}#settings_global_capacity_edit:enabled{margin-right:7px}#ticket_form .original_stock_cap span{margin-right:0}@media (min-width:768px){.event-tickets .tribe-common-c-loader,.tribe-common-c-loader.tribe-tickets-loader__modal,.tribe-common-c-loader.tribe-tickets-loader__tickets-block{padding:0}.tribe-common a.tribe-common-c-btn-link,.tribe-common button.tribe-common-c-btn-link,.tribe-common input[type=button].tribe-common-c-btn-link,.tribe-common input[type=submit].tribe-common-c-btn-link{background-color:transparent;width:auto}}@media (min-width:782px){.ticket_panel{padding:16px}.input_block .input_block,.input_block .ticket_form_right{margin-left:132px}#ticket_bottom_right{float:right}}@media (min-width:400px){#settings_form_toggle{float:right;margin-top:0}}@media screen and (max-width:520px){.ticket_table_intro #ticket_form_total_capacity{width:100%}}@media screen and (max-width:782px){.ticket_table_intro #ticket_form_total_capacity .tooltip{left:auto;margin-top:5px;position:relative;top:auto;transform:none;width:100%}.input_block .ticket_form_left{float:none;display:inline-block;padding:0 0 6px}.input_block .tribe_stock_block{padding-left:36px}.input_block .tribe_stock_block.tribe-active{padding-top:5px}#ticket_form .tooltip_container .tooltip{left:auto;margin-top:5px;position:relative;top:auto;transform:none;width:100%}}@media (max-width:782px){#ticket_bottom_right{margin-top:1em}}@media screen and (max-width:390px){#ticket_form .tooltip_container{display:none}}
1
+ .accordion-header{background:none;border:0;color:inherit;cursor:pointer;font-size:12px;font-weight:700;padding:10px 20px;box-sizing:border-box;position:relative;text-align:left;width:100%}.accordion-header:before{background-color:#000;border-radius:100%;box-sizing:border-box;color:#fff;content:"\f132";font-family:dashicons;font-size:10px;line-height:17px;font-weight:400;height:14px;left:0;padding:0;position:absolute;top:12px;width:15px;text-align:center;padding-right:1px}.accordion-header:after{content:"";border-bottom:1px solid #ddd;position:absolute;right:0;width:80%;top:50%;transform:translateY(-50%)}.accordion-header.is-active:before{content:"\f460";line-height:15px}.accordion-header:focus{outline:1px solid #5b9dd9}.accordion-header:hover{background:none}.tribe-tickets-editor-history:after{width:calc(100% - 80px)}.tribe_attendee_meta:after{width:calc(100% - 170px)}.tribe_advanced_meta:after{width:calc(100% - 105px)}.accordion-label:focus{outline:none}.accordion-content{display:none}.ticket_panel .accordion-content{margin:1em 0 2em}.accordion-content.is-active{display:block}.tribe-common-c-loader.tribe-tickets-loader__modal,.tribe-common-c-loader.tribe-tickets-loader__tickets-block{align-items:center;background:hsla(0,0%,100%,.6);display:flex;height:100%;justify-content:center;left:0;padding:0;position:absolute;top:0;width:100%;z-index:100}.tribe-common-c-loader.tribe-tickets-loader__modal{height:100vh;position:fixed;width:100vw}.event-tickets .tribe-common-c-loader{align-items:center;background:hsla(0,0%,100%,.6);display:flex;height:100%;justify-content:center;left:0;padding:0;position:absolute;top:0;width:100%;z-index:100}.tribe-common .tribe-tickets__notice{padding:16px;background-color:#f7f6f6;border-radius:4px;margin:20px 0}.tribe-common .tribe-tickets__notice>:last-child{padding-bottom:0;margin-bottom:0}.tribe-common .tribe-tickets-notice__title{margin:0;position:relative}.tribe-common .tribe-tickets-notice__title:empty{display:none}.tribe-common .tribe-tickets__notice--error{background-color:rgba(218,57,77,.08);display:none;padding-left:50px}.tribe-common .tribe-tickets__notice--error .tribe-tickets-notice__title{position:relative}.tribe-common .tribe-tickets__notice--error .tribe-tickets-notice__title:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cg fill='none' fill-rule='evenodd' transform='translate(1 1)'%3E%3Ccircle cx='8' cy='8' r='7.467' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5'/%3E%3Ccircle cx='8' cy='11.733' r='1.067' fill='%23141827' fill-rule='nonzero'/%3E%3Cpath stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M8 3.733v4.8' fill='%23141827'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;content:"";height:16px;left:-32px;position:absolute;top:2px;width:16px}.tribe-common .tribe-tickets__notice--barred{background-color:#fff;border:4px solid #e4e4e4;border-bottom:0;border-radius:0;border-top:0;padding:0 12px}.tribe-common .tribe-tickets__notice--barred-left{border-right:0;padding:0 0 0 12px}.tribe-common .tribe-tickets__notice--barred-right{border-left:0;padding:0 12px 0 0}.event-tickets .tribe-tickets-svgicon{background-repeat:no-repeat;background-size:contain}.tooltipster-base.tribe-tickets-tooltip-theme{background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.14);height:auto!important;padding:24px;max-width:254px}.tooltipster-base.tribe-tickets-tooltip-theme .tooltipster-box{background-color:transparent;border:0;border-radius:0;box-shadow:none;margin:0}.tooltipster-base.tribe-tickets-tooltip-theme .tooltipster-box .tooltipster-content{color:#141827;overflow:inherit;padding:0;word-break:break-word}.tooltipster-base.tribe-tickets-tooltip-theme .tooltipster-arrow{display:none}.tribe-common a.tribe-common-c-btn--small,.tribe-common button.tribe-common-c-btn--small,.tribe-common input[type=button].tribe-common-c-btn--small,.tribe-common input[type=submit].tribe-common-c-btn--small{background-color:#334aff;padding:11px 14px;width:auto}.tribe-common a.tribe-common-c-btn-link,.tribe-common button.tribe-common-c-btn-link,.tribe-common input[type=button].tribe-common-c-btn-link,.tribe-common input[type=submit].tribe-common-c-btn-link{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;text-align:center;text-decoration:underline;transition:color .2s ease}.tribe-common a.tribe-common-c-btn-link:focus,.tribe-common a.tribe-common-c-btn-link:hover,.tribe-common button.tribe-common-c-btn-link:focus,.tribe-common button.tribe-common-c-btn-link:hover,.tribe-common input[type=button].tribe-common-c-btn-link:focus,.tribe-common input[type=button].tribe-common-c-btn-link:hover,.tribe-common input[type=submit].tribe-common-c-btn-link:focus,.tribe-common input[type=submit].tribe-common-c-btn-link:hover{background-color:transparent}.tribe-common a.tribe-common-c-btn-link,.tribe-common button.tribe-common-c-btn-link,.tribe-common input[type=button].tribe-common-c-btn-link,.tribe-common input[type=submit].tribe-common-c-btn-link{background-color:transparent;color:#334aff;padding:11px 20px;width:100%}.tribe-common a.tribe-common-c-btn-link:focus,.tribe-common a.tribe-common-c-btn-link:hover,.tribe-common button.tribe-common-c-btn-link:focus,.tribe-common button.tribe-common-c-btn-link:hover,.tribe-common input[type=button].tribe-common-c-btn-link:focus,.tribe-common input[type=button].tribe-common-c-btn-link:hover,.tribe-common input[type=submit].tribe-common-c-btn-link:focus,.tribe-common input[type=submit].tribe-common-c-btn-link:hover{color:rgba(51,74,255,.8)}.tribe-common a.tribe-common-c-btn-link:active,.tribe-common button.tribe-common-c-btn-link:active,.tribe-common input[type=button].tribe-common-c-btn-link:active,.tribe-common input[type=submit].tribe-common-c-btn-link:active{color:rgba(51,74,255,.9)}.tribe-common a.tribe-common-c-btn-link:disabled,.tribe-common button.tribe-common-c-btn-link:disabled,.tribe-common input[type=button].tribe-common-c-btn-link:disabled,.tribe-common input[type=submit].tribe-common-c-btn-link:disabled{color:rgba(51,74,255,.07)}.tribe-tickets-column-attendees-link{display:inline-block}#ticket_form input[type=radio]{margin-right:5px}.ticket_list h4{border-bottom:1px solid #e5e5e5;padding-bottom:6px;text-transform:uppercase}.ticket_list h4 a{font-size:11px;font-weight:400;text-transform:none}.ticket_list tr:hover td div.ticket_controls{visibility:visible}.ticket_list tr td{padding:10px;vertical-align:middle}.ticket_list tr td div.ticket_controls{visibility:hidden}.ticket_name p:first-child{font-weight:700}#tribe_ticket_header_preview img{height:auto!important;max-width:95%!important}#tribe_ticket_header_remove,.ticket_time{display:none}.tribe-tickets-remaining{font-size:10px}.eventtable{margin:0;padding-top:0;width:100%}#event_tickets,.eventtable.ticket_list.eventForm{table-layout:fixed}.tribe-strong-label{font-weight:700}.tribe-theme-twentyfifteen .tribe-events-tickets input[type=number]{padding:.375em;width:100%}.screen_reader_text{clip:rect(0 0 0 0);clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}#poststuff .inside{margin-top:12px}.tribe-tickets-editor-blocker{background:hsla(0,0%,100%,.7);bottom:0;display:none;left:0;position:absolute;right:0;top:0;z-index:100000}.tribe-tickets-editor-blocker .spinner{left:50%;margin-left:-10px;margin-top:-10px;position:absolute;top:50%;z-index:100404}.tribe-tickets-editor-history-list{margin-left:20px}#event_tickets{position:relative}#event_tickets fieldset{border:0;padding:0;margin:0 0 1em}#event_tickets .ticket_form_left{font-weight:700}#event_tickets label{font-weight:400}#event_tickets input[type=color].ticket_form_right,#event_tickets input[type=date].ticket_form_right,#event_tickets input[type=datetime-local].ticket_form_right,#event_tickets input[type=datetime].ticket_form_right,#event_tickets input[type=email].ticket_form_right,#event_tickets input[type=month].ticket_form_right,#event_tickets input[type=number].ticket_form_right,#event_tickets input[type=password].ticket_form_right,#event_tickets input[type=range].ticket_form_right,#event_tickets input[type=search].ticket_form_right,#event_tickets input[type=tel].ticket_form_right,#event_tickets input[type=text].ticket_form_right,#event_tickets input[type=time].ticket_form_right,#event_tickets input[type=url].ticket_form_right,#event_tickets input[type=week].ticket_form_right,#event_tickets label.ticket_form_right,#event_tickets textarea.ticket_form_right{display:block}#event_tickets .tribe-description-small{font-size:.95em;margin-top:5px;color:#888}.ticket_panel{border:1px solid #a3a3a3;border-radius:5px;box-sizing:border-box;opacity:1;position:relative;padding:8px;visibility:visible;width:100%;will-change:transform}.ticket_panel[aria-hidden=true]{opacity:0;position:absolute;visibility:hidden}.ticket_panel section{margin:2em 0}.ticket_panel #tribe-tickets-image{margin-top:.5em}.ticket_panel.panel_base{border:0;padding:.5em 0 0}.ticket_panel.panel_edit{border:0}.ticket_panel.panel_settings h4{margin:0}.ticket_panel.panel_settings .settings_main{margin-bottom:0;margin-top:0}.ticket_panel.panel_settings .settings_main p{font-size:inherit}.ticket_panel h4,.ticket_title{text-transform:uppercase}.ticket_title{margin-top:0}.ticket_list_container{margin-bottom:20px}.tribe_no_capacity{margin:0}.ticket_delete{color:#a00}.ticket_delete:hover{color:#dc3232}#settings_form_toggle{margin-top:1em}.global_capacity-wrapper{margin-bottom:1em}.global_capacity_edit_button{background:none;border:0;color:#ccc;cursor:pointer;padding:0}.tribe-button-icon:before{font-family:dashicons;font-size:1.25em;left:-.25em;position:relative;vertical-align:middle}.tribe-button-icon .tribe-hidden{display:none}.tribe-button-icon.tribe-button-icon-plus:before{content:"\f132"}.tribe-button-icon.tribe-button-icon-edit:before{content:"\f464"}.tribe-button-icon.tribe-button-icon-settings:before{content:"\f111";top:-2px}.tribe-tickets-image-preview{margin-top:2em;max-width:200px}#tribe_ticket_header_image{margin-right:2em;vertical-align:baseline}#tribe_tickets_image_preview_filename{display:none;font-weight:700}#tribe_tickets_image_preview_filename.-active{display:inline}#tribe_tickets_image_preview_filename .dashicons{vertical-align:text-bottom}#tribe_tickets_image_preview_filename .filename{margin-left:.5em}.ticket_table_intro .button-secondary{float:right;margin-bottom:15px;margin-left:5px}.ticket_table_intro #ticket_form_total_capacity{display:inline-block;line-height:28px;position:relative}.ticket_table_intro #ticket_form_total_capacity .tooltip{background-color:#efefef;border-radius:3px;border:1px solid #a3a3a3;display:none;margin-left:.5em;padding:.5em;position:absolute;top:50%;transform:translateY(-50%);z-index:1}.ticket_table_intro #ticket_form_total_capacity:hover .tooltip{display:block}.ticket_table_intro #ticket_form_total_capacity .tooltip{left:100%;top:53%;white-space:nowrap}.input_block{margin-bottom:1em;position:relative}.input_block .ticket_form_left{display:block;box-sizing:border-box;float:left;margin:0;padding-left:0;padding-right:1em}.input_block input,.input_block textarea{max-width:calc(100% - 132px)}.input_block .ticket_field.hasDatepicker{border-radius:3px;font-size:13px;margin-bottom:0}.input_block .input_block,.input_block .ticket_form_right{display:block;margin-top:0}.input_block .input_block:last-child,.input_block .ticket_form_right:last-child{margin-bottom:0}.input_block .input_block{margin-top:1em}.input_block legend+.input_block{margin-top:0}.input_block .tribe_stock_block{padding-left:calc(20px + .4em)}.input_block .tribe_stock_block.tribe-active{padding-top:1em}.input_block label.ticket_form_right{margin-bottom:1em}.input_block .tribe_block_label{display:block}.input_block .ticket_stock_total{color:#666;font-style:italic;margin-left:1em}#ticket_form .input_block .ticket_stock_total_value{margin-right:0}.input_block .tribe-timepicker{width:6em}#tribe_ticket_provider_wrapper{clip:rect(0 0 0 0);clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}#event_tickets{font-size:12px}h4.ticket_form_title{font-size:1.2em;margin-top:0}#ticket_form input[type=checkbox],#ticket_form input[type=radio]{margin-right:.4em}.tribe_soft_note,p.description{color:#a3a3a3;font-size:inherit;font-style:normal}#ticket_form .ticket_advanced.history._show span:first-child,#ticket_form .ticket_advanced.history .toggle-history span:nth-child(2),#ticket_form .ticket_advanced.history ul{display:none}#ticket_form .ticket_advanced.history._show span:nth-child(2){display:inline}#ticket_form .ticket_advanced.history._show ul{display:block}.ticket_bottom{margin-top:1em}.tribe_preview{cursor:pointer}#ticket_form .tooltip_container{position:relative}#ticket_form .tooltip_container .tooltip{border-radius:3px;border:1px solid #a3a3a3;display:none;margin-left:.5em;padding:.5em;position:absolute;top:50%;transform:translateY(-50%);z-index:1}#ticket_form .tooltip_container:hover .tooltip{display:block}#ticket_form .tooltip_container{display:inline;vertical-align:middle}#ticket_form .tooltip_container .tooltip{background-color:#efefef;left:100%;margin:0;width:200px}#settings_global_capacity_edit{background-color:#fff;border:1px solid #b4b9be;float:left;font-size:inherit;margin-right:10px}#settings_global_capacity_edit:disabled{background-color:transparent;border:0;box-shadow:none;color:#555}#settings_global_capacity_edit:enabled{margin-right:7px}#ticket_form .original_stock_cap span{margin-right:0}.ticket-editor-notice{padding:10px;margin-bottom:10px;font-size:13px;border-radius:4px;display:flex}.ticket-editor-notice.info{background-color:#edf6fc}.ticket-editor-notice.info .dashicons{color:#2a709d}.ticket-editor-notice.tribe-dependent{display:none}.ticket-editor-notice.tribe-dependent.tribe-active{display:flex}.ticket-editor-notice .dashicons{font-size:20px;width:20px;height:20px;margin-right:2px}@media (min-width:768px){.event-tickets .tribe-common-c-loader,.tribe-common-c-loader.tribe-tickets-loader__modal,.tribe-common-c-loader.tribe-tickets-loader__tickets-block{padding:0}.tribe-common a.tribe-common-c-btn-link,.tribe-common button.tribe-common-c-btn-link,.tribe-common input[type=button].tribe-common-c-btn-link,.tribe-common input[type=submit].tribe-common-c-btn-link{background-color:transparent;width:auto}}@media (min-width:782px){.ticket_panel{padding:16px}.input_block .input_block,.input_block .ticket_form_right{margin-left:132px}#ticket_bottom_right{float:right}}@media (min-width:400px){#settings_form_toggle{float:right;margin-top:0}}@media screen and (max-width:520px){.ticket_table_intro #ticket_form_total_capacity{width:100%}}@media screen and (max-width:782px){.ticket_table_intro #ticket_form_total_capacity .tooltip{left:auto;margin-top:5px;position:relative;top:auto;transform:none;width:100%}.input_block .ticket_form_left{float:none;display:inline-block;padding:0 0 6px}.input_block .tribe_stock_block{padding-left:36px}.input_block .tribe_stock_block.tribe-active{padding-top:5px}#ticket_form .tooltip_container .tooltip{left:auto;margin-top:5px;position:relative;top:auto;transform:none;width:100%}}@media (max-width:782px){#ticket_bottom_right{margin-top:1em}}@media screen and (max-width:390px){#ticket_form .tooltip_container{display:none}}
src/resources/js/app/blocks.js CHANGED
@@ -1197,7 +1197,9 @@ var utils_getDefaultCurrencyPosition = function getDefaultCurrencyPosition() {
1197
 
1198
  var details_datePickerFormat = external_tribe_common_utils_["globals"].tecDateSettings().datepickerFormat;
1199
  var currentMoment = moment_default()();
1200
- var details_endMoment = currentMoment.clone().add(100, 'years');
 
 
1201
 
1202
  var details_startDateInput = details_datePickerFormat ? currentMoment.format(external_tribe_common_utils_["moment"].toFormat(details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(currentMoment);
1203
  var details_endDateInput = details_datePickerFormat ? details_endMoment.format(external_tribe_common_utils_["moment"].toFormat(details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(details_endMoment);
@@ -1316,7 +1318,9 @@ var DEFAULT_STATE = {
1316
 
1317
  var temp_details_datePickerFormat = external_tribe_common_utils_["globals"].tecDateSettings().datepickerFormat;
1318
  var temp_details_currentMoment = moment_default()();
1319
- var temp_details_endMoment = temp_details_currentMoment.clone().add(100, 'years');
 
 
1320
 
1321
  var temp_details_startDateInput = temp_details_datePickerFormat ? temp_details_currentMoment.format(external_tribe_common_utils_["moment"].toFormat(temp_details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(temp_details_currentMoment);
1322
  var temp_details_endDateInput = temp_details_datePickerFormat ? temp_details_endMoment.format(external_tribe_common_utils_["moment"].toFormat(temp_details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(temp_details_endMoment);
@@ -10671,7 +10675,9 @@ var moment_default = /*#__PURE__*/__webpack_require__.n(moment_moment);
10671
 
10672
  var details_datePickerFormat = external_tribe_common_utils_["globals"].tecDateSettings().datepickerFormat;
10673
  var currentMoment = moment_default()();
10674
- var details_endMoment = currentMoment.clone();
 
 
10675
 
10676
  var details_startDateInput = details_datePickerFormat ? currentMoment.format(external_tribe_common_utils_["moment"].toFormat(details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(currentMoment);
10677
  var details_endDateInput = details_datePickerFormat ? details_endMoment.format(external_tribe_common_utils_["moment"].toFormat(details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(details_endMoment);
@@ -12167,22 +12173,18 @@ function setNonEventPostTypeEndDate() {
12167
  case 11:
12168
  endMoment = _context19.sent;
12169
  _context19.next = 14;
12170
- return Object(effects["b" /* call */])([endMoment, 'add'], 100, 'years');
12171
-
12172
- case 14:
12173
- _context19.next = 16;
12174
  return Object(effects["b" /* call */])(sagas["a" /* createDates */], endMoment.toDate());
12175
 
12176
- case 16:
12177
  _ref8 = _context19.sent;
12178
  date = _ref8.date;
12179
  dateInput = _ref8.dateInput;
12180
  moment = _ref8.moment;
12181
  time = _ref8.time;
12182
- _context19.next = 23;
12183
  return Object(effects["a" /* all */])([Object(effects["e" /* put */])(actions["setRSVPTempEndDate"](date)), Object(effects["e" /* put */])(actions["setRSVPTempEndDateInput"](dateInput)), Object(effects["e" /* put */])(actions["setRSVPTempEndDateMoment"](moment)), Object(effects["e" /* put */])(actions["setRSVPTempEndTime"](time)), Object(effects["e" /* put */])(actions["setRSVPEndDate"](date)), Object(effects["e" /* put */])(actions["setRSVPEndDateInput"](dateInput)), Object(effects["e" /* put */])(actions["setRSVPEndDateMoment"](moment)), Object(effects["e" /* put */])(actions["setRSVPEndTime"](time))]);
12184
 
12185
- case 23:
12186
  case 'end':
12187
  return _context19.stop();
12188
  }
@@ -44194,7 +44196,8 @@ var utils = __webpack_require__(8);
44194
 
44195
  supports: {
44196
  html: false,
44197
- multiple: false
 
44198
  },
44199
 
44200
  attributes: {
@@ -45257,7 +45260,7 @@ var controls_style = __webpack_require__(519);
45257
 
45258
  var message = Object(external_var_wp_i18n_root_wp_i18n_["__"])('It looks like you have multiple ecommerce plugins active. We recommend running only one at a time. However, if you need to run multiple, please select which one to use to sell tickets for this event. ', 'event-tickets');
45259
 
45260
- var note = Object(external_var_wp_i18n_root_wp_i18n_["__"])('Note: adjusting this setting will only impact new tickets. Existing tickets will not change. We highly recommend that all tickets for one event use the same ecommerce plugin', 'event-tickets');
45261
 
45262
  /**
45263
  * @todo: create radio input element, move this over to element
@@ -45527,7 +45530,8 @@ var tickets_container_mapDispatchToProps = function mapDispatchToProps(dispatch)
45527
 
45528
  supports: {
45529
  html: false,
45530
- multiple: false
 
45531
  },
45532
 
45533
  attributes: {
@@ -48095,7 +48099,8 @@ var ticket_container_mergeProps = function mergeProps(stateProps, dispatchProps,
48095
  parent: ['tribe/tickets'],
48096
 
48097
  supports: {
48098
- html: false
 
48099
  },
48100
 
48101
  attributes: {
@@ -48360,7 +48365,8 @@ var attendees_container_mapDispatchToProps = function mapDispatchToProps(dispatc
48360
  keywords: ['event', 'events-gutenberg', 'tribe'],
48361
 
48362
  supports: {
48363
- html: false
 
48364
  },
48365
 
48366
  attributes: {
1197
 
1198
  var details_datePickerFormat = external_tribe_common_utils_["globals"].tecDateSettings().datepickerFormat;
1199
  var currentMoment = moment_default()();
1200
+ var bufferDuration = external_tribe_common_utils_["globals"].tickets().end_sale_buffer_duration ? external_tribe_common_utils_["globals"].tickets().end_sale_buffer_duration : 2;
1201
+ var bufferYears = external_tribe_common_utils_["globals"].tickets().end_sale_buffer_years ? external_tribe_common_utils_["globals"].tickets().end_sale_buffer_years : 1;
1202
+ var details_endMoment = currentMoment.clone().add(bufferDuration, 'hours').add(bufferYears, 'years');
1203
 
1204
  var details_startDateInput = details_datePickerFormat ? currentMoment.format(external_tribe_common_utils_["moment"].toFormat(details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(currentMoment);
1205
  var details_endDateInput = details_datePickerFormat ? details_endMoment.format(external_tribe_common_utils_["moment"].toFormat(details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(details_endMoment);
1318
 
1319
  var temp_details_datePickerFormat = external_tribe_common_utils_["globals"].tecDateSettings().datepickerFormat;
1320
  var temp_details_currentMoment = moment_default()();
1321
+ var temp_details_bufferDuration = external_tribe_common_utils_["globals"].tickets().end_sale_buffer_duration ? external_tribe_common_utils_["globals"].tickets().end_sale_buffer_duration : 2;
1322
+ var temp_details_bufferYears = external_tribe_common_utils_["globals"].tickets().end_sale_buffer_years ? external_tribe_common_utils_["globals"].tickets().end_sale_buffer_years : 1;
1323
+ var temp_details_endMoment = temp_details_currentMoment.clone().add(temp_details_bufferDuration, 'hours').add(temp_details_bufferYears, 'years');
1324
 
1325
  var temp_details_startDateInput = temp_details_datePickerFormat ? temp_details_currentMoment.format(external_tribe_common_utils_["moment"].toFormat(temp_details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(temp_details_currentMoment);
1326
  var temp_details_endDateInput = temp_details_datePickerFormat ? temp_details_endMoment.format(external_tribe_common_utils_["moment"].toFormat(temp_details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(temp_details_endMoment);
10675
 
10676
  var details_datePickerFormat = external_tribe_common_utils_["globals"].tecDateSettings().datepickerFormat;
10677
  var currentMoment = moment_default()();
10678
+ var bufferDuration = external_tribe_common_utils_["globals"].tickets().end_sale_buffer_duration ? external_tribe_common_utils_["globals"].tickets().end_sale_buffer_duration : 2;
10679
+ var bufferYears = external_tribe_common_utils_["globals"].tickets().end_sale_buffer_years ? external_tribe_common_utils_["globals"].tickets().end_sale_buffer_years : 1;
10680
+ var details_endMoment = currentMoment.clone().add(bufferDuration, 'hours').add(bufferYears, 'years');
10681
 
10682
  var details_startDateInput = details_datePickerFormat ? currentMoment.format(external_tribe_common_utils_["moment"].toFormat(details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(currentMoment);
10683
  var details_endDateInput = details_datePickerFormat ? details_endMoment.format(external_tribe_common_utils_["moment"].toFormat(details_datePickerFormat)) : external_tribe_common_utils_["moment"].toDate(details_endMoment);
12173
  case 11:
12174
  endMoment = _context19.sent;
12175
  _context19.next = 14;
 
 
 
 
12176
  return Object(effects["b" /* call */])(sagas["a" /* createDates */], endMoment.toDate());
12177
 
12178
+ case 14:
12179
  _ref8 = _context19.sent;
12180
  date = _ref8.date;
12181
  dateInput = _ref8.dateInput;
12182
  moment = _ref8.moment;
12183
  time = _ref8.time;
12184
+ _context19.next = 21;
12185
  return Object(effects["a" /* all */])([Object(effects["e" /* put */])(actions["setRSVPTempEndDate"](date)), Object(effects["e" /* put */])(actions["setRSVPTempEndDateInput"](dateInput)), Object(effects["e" /* put */])(actions["setRSVPTempEndDateMoment"](moment)), Object(effects["e" /* put */])(actions["setRSVPTempEndTime"](time)), Object(effects["e" /* put */])(actions["setRSVPEndDate"](date)), Object(effects["e" /* put */])(actions["setRSVPEndDateInput"](dateInput)), Object(effects["e" /* put */])(actions["setRSVPEndDateMoment"](moment)), Object(effects["e" /* put */])(actions["setRSVPEndTime"](time))]);
12186
 
12187
+ case 21:
12188
  case 'end':
12189
  return _context19.stop();
12190
  }
44196
 
44197
  supports: {
44198
  html: false,
44199
+ multiple: false,
44200
+ customClassName: false
44201
  },
44202
 
44203
  attributes: {
45260
 
45261
  var message = Object(external_var_wp_i18n_root_wp_i18n_["__"])('It looks like you have multiple ecommerce plugins active. We recommend running only one at a time. However, if you need to run multiple, please select which one to use to sell tickets for this event. ', 'event-tickets');
45262
 
45263
+ var note = Object(external_var_wp_i18n_root_wp_i18n_["__"])('Note: adjusting this setting will only impact new tickets. Existing tickets will not change. We highly recommend that all tickets for one event use the same ecommerce plugin.', 'event-tickets');
45264
 
45265
  /**
45266
  * @todo: create radio input element, move this over to element
45530
 
45531
  supports: {
45532
  html: false,
45533
+ multiple: false,
45534
+ customClassName: false
45535
  },
45536
 
45537
  attributes: {
48099
  parent: ['tribe/tickets'],
48100
 
48101
  supports: {
48102
+ html: false,
48103
+ customClassName: false
48104
  },
48105
 
48106
  attributes: {
48365
  keywords: ['event', 'events-gutenberg', 'tribe'],
48366
 
48367
  supports: {
48368
+ html: false,
48369
+ customClassName: false
48370
  },
48371
 
48372
  attributes: {
src/resources/js/app/blocks.min.js CHANGED
@@ -1,4 +1,4 @@
1
- var tribe="object"==typeof tribe?tribe:{};tribe.tickets=tribe.tickets||{},tribe.tickets.blocks=function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=538)}([function(e,t,n){"use strict";n.d(t,"g",(function(){return r.i})),n.d(t,"e",(function(){return r.g})),n.d(t,"a",(function(){return r.b})),n.d(t,"b",(function(){return r.d})),n.d(t,"d",(function(){return r.f})),n.d(t,"c",(function(){return r.e})),n.d(t,"f",(function(){return r.h})),n.d(t,"h",(function(){return i})),n.d(t,"i",(function(){return o}));var r=n(17),a=n(59);function i(e,t){for(var n=arguments.length,i=Array(n>2?n-2:0),o=2;o<n;o++)i[o-2]=arguments[o];return r.f.apply(void 0,[a.a,e,t].concat(i))}function o(e,t){for(var n=arguments.length,i=Array(n>2?n-2:0),o=2;o<n;o++)i[o-2]=arguments[o];return r.f.apply(void 0,[a.b,e,t].concat(i))}},function(e,t,n){e.exports=n(458)()},function(e,t,n){"use strict";n.r(t),n.d(t,"SET_TICKETS_INITIAL_STATE",(function(){return a})),n.d(t,"RESET_TICKETS_BLOCK",(function(){return i})),n.d(t,"SET_TICKETS_HEADER_IMAGE",(function(){return o})),n.d(t,"SET_TICKETS_IS_SELECTED",(function(){return s})),n.d(t,"SET_TICKETS_IS_SETTINGS_OPEN",(function(){return c})),n.d(t,"SET_TICKETS_IS_SETTINGS_LOADING",(function(){return u})),n.d(t,"SET_TICKETS_PROVIDER",(function(){return d})),n.d(t,"SET_TICKETS_SHARED_CAPACITY",(function(){return l})),n.d(t,"SET_TICKETS_TEMP_SHARED_CAPACITY",(function(){return _})),n.d(t,"FETCH_TICKETS_HEADER_IMAGE",(function(){return m})),n.d(t,"UPDATE_TICKETS_HEADER_IMAGE",(function(){return p})),n.d(t,"DELETE_TICKETS_HEADER_IMAGE",(function(){return f})),n.d(t,"REGISTER_TICKET_BLOCK",(function(){return T})),n.d(t,"REMOVE_TICKET_BLOCK",(function(){return h})),n.d(t,"REMOVE_TICKET_BLOCKS",(function(){return y})),n.d(t,"SET_TICKET_TITLE",(function(){return b})),n.d(t,"SET_TICKET_DESCRIPTION",(function(){return M})),n.d(t,"SET_TICKET_PRICE",(function(){return S})),n.d(t,"SET_TICKET_SKU",(function(){return E})),n.d(t,"SET_TICKET_IAC_SETTING",(function(){return g})),n.d(t,"SET_TICKET_START_DATE",(function(){return k})),n.d(t,"SET_TICKET_START_DATE_INPUT",(function(){return v})),n.d(t,"SET_TICKET_START_DATE_MOMENT",(function(){return D})),n.d(t,"SET_TICKET_END_DATE",(function(){return L})),n.d(t,"SET_TICKET_END_DATE_INPUT",(function(){return O})),n.d(t,"SET_TICKET_END_DATE_MOMENT",(function(){return Y})),n.d(t,"SET_TICKET_START_TIME",(function(){return w})),n.d(t,"SET_TICKET_END_TIME",(function(){return j})),n.d(t,"SET_TICKET_START_TIME_INPUT",(function(){return I})),n.d(t,"SET_TICKET_END_TIME_INPUT",(function(){return P})),n.d(t,"SET_TICKET_CAPACITY_TYPE",(function(){return C})),n.d(t,"SET_TICKET_CAPACITY",(function(){return x})),n.d(t,"SET_TICKET_TEMP_TITLE",(function(){return R})),n.d(t,"SET_TICKET_TEMP_DESCRIPTION",(function(){return A})),n.d(t,"SET_TICKET_TEMP_PRICE",(function(){return H})),n.d(t,"SET_TICKET_TEMP_SKU",(function(){return N})),n.d(t,"SET_TICKET_TEMP_IAC_SETTING",(function(){return V})),n.d(t,"SET_TICKET_TEMP_START_DATE",(function(){return F})),n.d(t,"SET_TICKET_TEMP_START_DATE_INPUT",(function(){return K})),n.d(t,"SET_TICKET_TEMP_START_DATE_MOMENT",(function(){return W})),n.d(t,"SET_TICKET_TEMP_END_DATE",(function(){return U})),n.d(t,"SET_TICKET_TEMP_END_DATE_INPUT",(function(){return z})),n.d(t,"SET_TICKET_TEMP_END_DATE_MOMENT",(function(){return G})),n.d(t,"SET_TICKET_TEMP_START_TIME",(function(){return B})),n.d(t,"SET_TICKET_TEMP_END_TIME",(function(){return q})),n.d(t,"SET_TICKET_TEMP_START_TIME_INPUT",(function(){return J})),n.d(t,"SET_TICKET_TEMP_END_TIME_INPUT",(function(){return $})),n.d(t,"SET_TICKET_TEMP_CAPACITY_TYPE",(function(){return Z})),n.d(t,"SET_TICKET_TEMP_CAPACITY",(function(){return Q})),n.d(t,"SET_TICKET_SOLD",(function(){return X})),n.d(t,"SET_TICKET_AVAILABLE",(function(){return ee})),n.d(t,"SET_TICKET_ID",(function(){return te})),n.d(t,"SET_TICKET_CURRENCY_SYMBOL",(function(){return ne})),n.d(t,"SET_TICKET_CURRENCY_POSITION",(function(){return re})),n.d(t,"SET_TICKET_PROVIDER",(function(){return ae})),n.d(t,"SET_TICKET_HAS_ATTENDEE_INFO_FIELDS",(function(){return ie})),n.d(t,"SET_TICKET_IS_LOADING",(function(){return oe})),n.d(t,"SET_TICKET_IS_MODAL_OPEN",(function(){return se})),n.d(t,"SET_TICKET_HAS_BEEN_CREATED",(function(){return ce})),n.d(t,"SET_TICKET_HAS_CHANGES",(function(){return ue})),n.d(t,"SET_TICKET_HAS_DURATION_ERROR",(function(){return de})),n.d(t,"SET_TICKET_IS_SELECTED",(function(){return le})),n.d(t,"SET_TICKET_DETAILS",(function(){return _e})),n.d(t,"SET_TICKET_TEMP_DETAILS",(function(){return me})),n.d(t,"HANDLE_TICKET_START_DATE",(function(){return pe})),n.d(t,"HANDLE_TICKET_END_DATE",(function(){return fe})),n.d(t,"HANDLE_TICKET_START_TIME",(function(){return Te})),n.d(t,"HANDLE_TICKET_END_TIME",(function(){return he})),n.d(t,"FETCH_TICKET",(function(){return ye})),n.d(t,"CREATE_NEW_TICKET",(function(){return be})),n.d(t,"UPDATE_TICKET",(function(){return Me})),n.d(t,"DELETE_TICKET",(function(){return Se})),n.d(t,"SET_TICKET_INITIAL_STATE",(function(){return Ee}));var r=n(8),a=r.n+"/SET_TICKETS_INITIAL_STATE",i=r.n+"/RESET_TICKETS_BLOCK",o=r.n+"/SET_TICKETS_HEADER_IMAGE",s=r.n+"/SET_TICKETS_IS_SELECTED",c=r.n+"/SET_TICKETS_IS_SETTINGS_OPEN",u=r.n+"/SET_TICKETS_IS_SETTINGS_LOADING",d=r.n+"/SET_TICKETS_PROVIDER",l=r.n+"/SET_TICKETS_SHARED_CAPACITY",_=r.n+"/SET_TICKETS_TEMP_SHARED_CAPACITY",m=r.n+"/FETCH_TICKETS_HEADER_IMAGE",p=r.n+"/UPDATE_TICKETS_HEADER_IMAGE",f=r.n+"/DELETE_TICKETS_HEADER_IMAGE",T=r.n+"/REGISTER_TICKET_BLOCK",h=r.n+"/REMOVE_TICKET_BLOCK",y=r.n+"/REMOVE_TICKET_BLOCKS",b=r.n+"/SET_TICKET_TITLE",M=r.n+"/SET_TICKET_DESCRIPTION",S=r.n+"/SET_TICKET_PRICE",E=r.n+"/SET_TICKET_SKU",g=r.n+"/SET_TICKET_IAC_SETTING",k=r.n+"/SET_TICKET_START_DATE",v=r.n+"/SET_TICKET_START_DATE_INPUT",D=r.n+"/SET_TICKET_START_DATE_MOMENT",L=r.n+"/SET_TICKET_END_DATE",O=r.n+"/SET_TICKET_END_DATE_INPUT",Y=r.n+"/SET_TICKET_END_DATE_MOMENT",w=r.n+"/SET_TICKET_START_TIME",j=r.n+"/SET_TICKET_END_TIME",I=r.n+"/SET_TICKET_START_TIME_INPUT",P=r.n+"/SET_TICKET_END_TIME_INPUT",C=r.n+"/SET_TICKET_CAPACITY_TYPE",x=r.n+"/SET_TICKET_CAPACITY",R=r.n+"/SET_TICKET_TEMP_TITLE",A=r.n+"/SET_TICKET_TEMP_DESCRIPTION",H=r.n+"/SET_TICKET_TEMP_PRICE",N=r.n+"/SET_TICKET_TEMP_SKU",V=r.n+"/SET_TICKET_TEMP_IAC_SETTING",F=r.n+"/SET_TICKET_TEMP_START_DATE",K=r.n+"/SET_TICKET_TEMP_START_DATE_INPUT",W=r.n+"/SET_TICKET_TEMP_START_DATE_MOMENT",U=r.n+"/SET_TICKET_TEMP_END_DATE",z=r.n+"/SET_TICKET_TEMP_END_DATE_INPUT",G=r.n+"/SET_TICKET_TEMP_END_DATE_MOMENT",B=r.n+"/SET_TICKET_TEMP_START_TIME",q=r.n+"/SET_TICKET_TEMP_END_TIME",J=r.n+"/SET_TICKET_TEMP_START_TIME_INPUT",$=r.n+"/SET_TICKET_TEMP_END_TIME_INPUT",Z=r.n+"/SET_TICKET_TEMP_CAPACITY_TYPE",Q=r.n+"/SET_TICKET_TEMP_CAPACITY",X=r.n+"/SET_TICKET_SOLD",ee=r.n+"/SET_TICKET_AVAILABLE",te=r.n+"/SET_TICKET_ID",ne=r.n+"/SET_TICKET_CURRENCY_SYMBOL",re=r.n+"/SET_TICKET_CURRENCY_POSITION",ae=r.n+"/SET_TICKET_PROVIDER",ie=r.n+"/SET_TICKET_HAS_ATTENDEE_INFO_FIELDS",oe=r.n+"/SET_TICKET_IS_LOADING",se=r.n+"/SET_TICKET_IS_MODAL_OPEN",ce=r.n+"/SET_TICKET_HAS_BEEN_CREATED",ue=r.n+"/SET_TICKET_HAS_CHANGES",de=r.n+"/SET_TICKET_HAS_DURATION_ERROR",le=r.n+"/SET_TICKET_IS_SELECTED",_e=r.n+"/SET_TICKET_DETAILS",me=r.n+"/SET_TICKET_TEMP_DETAILS",pe=r.n+"/HANDLE_TICKET_START_DATE",fe=r.n+"/HANDLE_TICKET_END_DATE",Te=r.n+"/HANDLE_TICKET_START_TIME",he=r.n+"/HANDLE_TICKET_END_TIME",ye=r.n+"/FETCH_TICKET",be=r.n+"/CREATE_NEW_TICKET",Me=r.n+"/UPDATE_TICKET",Se=r.n+"/DELETE_TICKET",Ee=r.n+"/SET_TICKET_INITIAL_STATE"},function(e,t){e.exports=tribe.common.utils},function(e,t,n){"use strict";n.d(t,"b",(function(){return D})),n.d(t,"d",(function(){return r})),n.d(t,"g",(function(){return f})),n.d(t,"a",(function(){return fn})),n.d(t,"f",(function(){return a})),n.d(t,"e",(function(){return Vr}));var r={};n.r(r),n.d(r,"CAPACITY_TYPE_OPTIONS",(function(){return O}));var a={};n.r(a),n.d(a,"getState",(function(){return C})),n.d(a,"getBlock",(function(){return x})),n.d(a,"getTicketsIsSelected",(function(){return R})),n.d(a,"getTicketsIsSettingsOpen",(function(){return A})),n.d(a,"getTicketsIsSettingsLoading",(function(){return H})),n.d(a,"getTicketsProvider",(function(){return N})),n.d(a,"getTicketsSharedCapacity",(function(){return V})),n.d(a,"getTicketsSharedCapacityInt",(function(){return F})),n.d(a,"getTicketsTempSharedCapacity",(function(){return K})),n.d(a,"getTicketsTempSharedCapacityInt",(function(){return W})),n.d(a,"getTicketsHeaderImage",(function(){return U})),n.d(a,"getTicketsHeaderImageId",(function(){return z})),n.d(a,"getTicketsHeaderImageSrc",(function(){return G})),n.d(a,"getTicketsHeaderImageAlt",(function(){return B})),n.d(a,"getTickets",(function(){return q})),n.d(a,"getTicketsAllClientIds",(function(){return J})),n.d(a,"getTicketsByClientId",(function(){return $})),n.d(a,"getTicketsArray",(function(){return Z})),n.d(a,"getTicketsCount",(function(){return Q})),n.d(a,"hasTickets",(function(){return X})),n.d(a,"hasCreatedTickets",(function(){return ee})),n.d(a,"getIndependentTickets",(function(){return te})),n.d(a,"getSharedTickets",(function(){return ne})),n.d(a,"getSharedTicketsCount",(function(){return re})),n.d(a,"getUnlimitedTickets",(function(){return ae})),n.d(a,"hasATicketSelected",(function(){return ie})),n.d(a,"getTicketsIdsInBlocks",(function(){return oe})),n.d(a,"getTicketClientId",(function(){return se})),n.d(a,"getTicket",(function(){return ce})),n.d(a,"getTicketSold",(function(){return ue})),n.d(a,"getTicketAvailable",(function(){return de})),n.d(a,"getTicketId",(function(){return le})),n.d(a,"getTicketCurrencySymbol",(function(){return _e})),n.d(a,"getTicketCurrencyPosition",(function(){return me})),n.d(a,"getTicketProvider",(function(){return pe})),n.d(a,"getTicketHasAttendeeInfoFields",(function(){return fe})),n.d(a,"getTicketIsLoading",(function(){return Te})),n.d(a,"getTicketIsModalOpen",(function(){return he})),n.d(a,"getTicketHasBeenCreated",(function(){return ye})),n.d(a,"getTicketHasChanges",(function(){return be})),n.d(a,"getTicketHasDurationError",(function(){return Me})),n.d(a,"getTicketIsSelected",(function(){return Se})),n.d(a,"isTicketDisabled",(function(){return Ee})),n.d(a,"getTicketDetails",(function(){return ge})),n.d(a,"getTicketTitle",(function(){return ke})),n.d(a,"getTicketDescription",(function(){return ve})),n.d(a,"getTicketPrice",(function(){return De})),n.d(a,"getTicketSku",(function(){return Le})),n.d(a,"getTicketIACSetting",(function(){return Oe})),n.d(a,"getTicketStartDate",(function(){return Ye})),n.d(a,"getTicketStartDateInput",(function(){return we})),n.d(a,"getTicketStartDateMoment",(function(){return je})),n.d(a,"getTicketEndDate",(function(){return Ie})),n.d(a,"getTicketEndDateInput",(function(){return Pe})),n.d(a,"getTicketEndDateMoment",(function(){return Ce})),n.d(a,"getTicketStartTime",(function(){return xe})),n.d(a,"getTicketStartTimeNoSeconds",(function(){return Re})),n.d(a,"getTicketEndTime",(function(){return Ae})),n.d(a,"getTicketEndTimeNoSeconds",(function(){return He})),n.d(a,"getTicketStartTimeInput",(function(){return Ne})),n.d(a,"getTicketEndTimeInput",(function(){return Ve})),n.d(a,"getTicketCapacityType",(function(){return Fe})),n.d(a,"getTicketCapacity",(function(){return Ke})),n.d(a,"getTicketCapacityInt",(function(){return We})),n.d(a,"isUnlimitedTicket",(function(){return Ue})),n.d(a,"isSharedTicket",(function(){return ze})),n.d(a,"isIndependentTicket",(function(){return Ge})),n.d(a,"isTicketPast",(function(){return Be})),n.d(a,"isTicketFuture",(function(){return qe})),n.d(a,"isTicketOnSale",(function(){return Je})),n.d(a,"hasTicketOnSale",(function(){return $e})),n.d(a,"allTicketsPast",(function(){return Ze})),n.d(a,"allTicketsFuture",(function(){return Qe})),n.d(a,"getTicketTempDetails",(function(){return Xe})),n.d(a,"getTicketTempTitle",(function(){return et})),n.d(a,"getTicketTempDescription",(function(){return tt})),n.d(a,"getTicketTempPrice",(function(){return nt})),n.d(a,"getTicketTempSku",(function(){return rt})),n.d(a,"getTicketTempIACSetting",(function(){return at})),n.d(a,"getTicketTempStartDate",(function(){return it})),n.d(a,"getTicketTempStartDateInput",(function(){return ot})),n.d(a,"getTicketTempStartDateMoment",(function(){return st})),n.d(a,"getTicketTempEndDate",(function(){return ct})),n.d(a,"getTicketTempEndDateInput",(function(){return ut})),n.d(a,"getTicketTempEndDateMoment",(function(){return dt})),n.d(a,"getTicketTempStartTime",(function(){return lt})),n.d(a,"getTicketTempStartTimeNoSeconds",(function(){return _t})),n.d(a,"getTicketTempEndTime",(function(){return mt})),n.d(a,"getTicketTempEndTimeNoSeconds",(function(){return pt})),n.d(a,"getTicketTempStartTimeInput",(function(){return ft})),n.d(a,"getTicketTempEndTimeInput",(function(){return Tt})),n.d(a,"getTicketTempCapacityType",(function(){return ht})),n.d(a,"getTicketTempCapacity",(function(){return yt})),n.d(a,"getTicketTempCapacityInt",(function(){return bt})),n.d(a,"getTicketTempCapacityTypeOption",(function(){return Mt})),n.d(a,"isTempTitleValid",(function(){return St})),n.d(a,"isTempCapacityValid",(function(){return Et})),n.d(a,"isTempSharedCapacityValid",(function(){return gt})),n.d(a,"isZeroPriceValid",(function(){return kt})),n.d(a,"isTicketValid",(function(){return vt})),n.d(a,"_getTotalCapacity",(function(){return Dt})),n.d(a,"_getTotalTempCapacity",(function(){return Lt})),n.d(a,"_getTotalSold",(function(){return Ot})),n.d(a,"_getTotalAvailable",(function(){return Yt})),n.d(a,"getIndependentTicketsCapacity",(function(){return wt})),n.d(a,"getIndependentTicketsTempCapacity",(function(){return jt})),n.d(a,"getIndependentTicketsSold",(function(){return It})),n.d(a,"getIndependentTicketsAvailable",(function(){return Pt})),n.d(a,"getSharedTicketsSold",(function(){return Ct})),n.d(a,"getSharedTicketsAvailable",(function(){return xt})),n.d(a,"getIndependentAndSharedTicketsCapacity",(function(){return Rt})),n.d(a,"getIndependentAndSharedTicketsTempCapacity",(function(){return At})),n.d(a,"getIndependentAndSharedTicketsSold",(function(){return Ht})),n.d(a,"getIndependentAndSharedTicketsAvailable",(function(){return Nt})),n.d(a,"getTicketProviders",(function(){return Vt})),n.d(a,"getDefaultTicketProvider",(function(){return Ft})),n.d(a,"hasValidTicketProvider",(function(){return Kt})),n.d(a,"hasMultipleTicketProviders",(function(){return Wt})),n.d(a,"hasTicketProviders",(function(){return Ut})),n.d(a,"canCreateTickets",(function(){return zt}));var i,o=n(9),s=n.n(o),c=n(262),u=n.n(c),d=n(25),l=n.n(d),_=n(16),m=n(321),p=n.n(m),f=n(2),T=n(44),h=n.n(T),y=n(3),b=n(87),M=n.n(b),S=n(85),E=n.n(S),g=n(6),k=n(5),v=n.n(k),D=n(23),L=n(15),O=[{label:Object(L.__)("Share capacity with other tickets","event-tickets"),value:D.TICKET_TYPES[D.SHARED]},{label:Object(L.__)("Set capacity for this ticket only","event-tickets"),value:D.TICKET_TYPES[D.INDEPENDENT]},{label:Object(L.__)("Unlimited","event-tickets"),value:D.TICKET_TYPES[D.UNLIMITED]}],Y=D.UNLIMITED,w=D.INDEPENDENT,j=D.SHARED,I=D.TICKET_TYPES,P=y.globals.tickets,C=function(e){return e},x=function(e){return e.tickets.blocks.ticket},R=Object(g.createSelector)([x],(function(e){return e.isSelected})),A=Object(g.createSelector)([x],(function(e){return e.isSettingsOpen})),H=Object(g.createSelector)([x],(function(e){return e.isSettingsLoading})),N=Object(g.createSelector)([x],(function(e){return e.provider})),V=Object(g.createSelector)([x],(function(e){return e.sharedCapacity})),F=Object(g.createSelector)([V],(function(e){return parseInt(e,10)||0})),K=Object(g.createSelector)([x],(function(e){return e.tempSharedCapacity})),W=Object(g.createSelector)([K],(function(e){return parseInt(e,10)||0})),U=Object(g.createSelector)([x],(function(e){return e.headerImage})),z=Object(g.createSelector)([U],(function(e){return e.id})),G=Object(g.createSelector)([U],(function(e){return e.src})),B=Object(g.createSelector)([U],(function(e){return e.alt})),q=Object(g.createSelector)([x],(function(e){return e.tickets})),J=Object(g.createSelector)([q],(function(e){return e.allClientIds})),$=Object(g.createSelector)([q],(function(e){return e.byClientId})),Z=Object(g.createSelector)([J,$],(function(e,t){return e.map((function(e){return t[e]}))})),Q=Object(g.createSelector)([J],(function(e){return e.length})),X=Object(g.createSelector)([Q],(function(e){return e>0})),ee=Object(g.createSelector)([Z],(function(e){return e.reduce((function(e,t){return e||t.hasBeenCreated}),!1)})),te=Object(g.createSelector)([Z],(function(e){return e.filter((function(e){return e.details.capacityType===I[w]}))})),ne=Object(g.createSelector)([Z],(function(e){return e.filter((function(e){return e.details.capacityType===I[j]}))})),re=Object(g.createSelector)([ne],(function(e){return e.length})),ae=Object(g.createSelector)([Z],(function(e){return e.filter((function(e){return e.details.capacityType===I[Y]}))})),ie=Object(g.createSelector)([Z],(function(e){return e.reduce((function(e,t){return e||t.isSelected}),!1)})),oe=Object(g.createSelector)([Z],(function(e){return e.reduce((function(e,t){return 0!==t.ticketId&&e.push(t.ticketId),e}),[])})),se=function(e,t){return t.clientId},ce=Object(g.createSelector)([$,se],(function(e,t){return e[t]||{}})),ue=Object(g.createSelector)([ce],(function(e){return e.sold})),de=Object(g.createSelector)([ce],(function(e){return e.available})),le=Object(g.createSelector)([ce],(function(e){return e.ticketId})),_e=Object(g.createSelector)([ce],(function(e){return e.currencySymbol})),me=Object(g.createSelector)([ce],(function(e){return e.currencyPosition})),pe=Object(g.createSelector)([ce],(function(e){return e.provider})),fe=Object(g.createSelector)([ce],(function(e){return e.hasAttendeeInfoFields})),Te=Object(g.createSelector)([ce],(function(e){return e.isLoading})),he=Object(g.createSelector)([ce],(function(e){return e.isModalOpen})),ye=Object(g.createSelector)([ce],(function(e){return e.hasBeenCreated})),be=Object(g.createSelector)([ce],(function(e){return e.hasChanges})),Me=Object(g.createSelector)([ce],(function(e){return e.hasDurationError})),Se=Object(g.createSelector)([ce],(function(e){return e.isSelected})),Ee=Object(g.createSelector)([ie,Se,Te,A],(function(e,t,n,r){return e&&!t||n||r})),ge=Object(g.createSelector)([ce],(function(e){return e.details||{}})),ke=Object(g.createSelector)([ge],(function(e){return e.title})),ve=Object(g.createSelector)([ge],(function(e){return e.description})),De=Object(g.createSelector)([ge],(function(e){return e.price})),Le=Object(g.createSelector)([ge],(function(e){return e.sku})),Oe=Object(g.createSelector)([ge],(function(e){return e.iac})),Ye=Object(g.createSelector)([ge],(function(e){return e.startDate})),we=Object(g.createSelector)([ge],(function(e){return e.startDateInput})),je=Object(g.createSelector)([ge],(function(e){return e.startDateMoment})),Ie=Object(g.createSelector)([ge],(function(e){return e.endDate})),Pe=Object(g.createSelector)([ge],(function(e){return e.endDateInput})),Ce=Object(g.createSelector)([ge],(function(e){return e.endDateMoment})),xe=Object(g.createSelector)([ge],(function(e){return e.startTime||""})),Re=Object(g.createSelector)([xe],(function(e){return e.slice(0,-3)})),Ae=Object(g.createSelector)([ge],(function(e){return e.endTime||""})),He=Object(g.createSelector)([Ae],(function(e){return e.slice(0,-3)})),Ne=Object(g.createSelector)([ge],(function(e){return e.startTimeInput})),Ve=Object(g.createSelector)([ge],(function(e){return e.endTimeInput})),Fe=Object(g.createSelector)([ge],(function(e){return e.capacityType})),Ke=Object(g.createSelector)([ge],(function(e){return e.capacity})),We=Object(g.createSelector)([Ke],(function(e){return parseInt(e,10)||0})),Ue=Object(g.createSelector)([ge],(function(e){return e.capacityType===I[Y]})),ze=Object(g.createSelector)([ge],(function(e){return e.capacityType===I[j]})),Ge=Object(g.createSelector)([ge],(function(e){return e.capacityType===I[w]})),Be=Object(g.createSelector)([Ce],(function(e){return v()().isAfter(e)})),qe=Object(g.createSelector)([je],(function(e){return v()().isBefore(e)})),Je=Object(g.createSelector)([ye,Be,qe],(function(e,t,n){return e&&!t&&!n})),$e=Object(g.createSelector)([J,C],(function(e,t){return e.reduce((function(e,n){return e||Je(t,{clientId:n})}),!1)})),Ze=Object(g.createSelector)([J,C],(function(e,t){return e.reduce((function(e,n){var r={clientId:n};return ye(t,r)?e&&Be(t,r):e}),!0)})),Qe=Object(g.createSelector)([J,C],(function(e,t){return e.reduce((function(e,n){var r={clientId:n};return ye(t,r)?e&&qe(t,r):e}),!0)})),Xe=Object(g.createSelector)([ce],(function(e){return e.tempDetails||{}})),et=Object(g.createSelector)([Xe],(function(e){return e.title})),tt=Object(g.createSelector)([Xe],(function(e){return e.description})),nt=Object(g.createSelector)([Xe],(function(e){return e.price})),rt=Object(g.createSelector)([Xe],(function(e){return e.sku})),at=Object(g.createSelector)([Xe],(function(e){return e.iac})),it=Object(g.createSelector)([Xe],(function(e){return e.startDate})),ot=Object(g.createSelector)([Xe],(function(e){return e.startDateInput})),st=Object(g.createSelector)([Xe],(function(e){return e.startDateMoment})),ct=Object(g.createSelector)([Xe],(function(e){return e.endDate})),ut=Object(g.createSelector)([Xe],(function(e){return e.endDateInput})),dt=Object(g.createSelector)([Xe],(function(e){return e.endDateMoment})),lt=Object(g.createSelector)([Xe],(function(e){return e.startTime||""})),_t=Object(g.createSelector)([lt],(function(e){return e.slice(0,-3)})),mt=Object(g.createSelector)([Xe],(function(e){return e.endTime||""})),pt=Object(g.createSelector)([mt],(function(e){return e.slice(0,-3)})),ft=Object(g.createSelector)([Xe],(function(e){return e.startTimeInput})),Tt=Object(g.createSelector)([Xe],(function(e){return e.endTimeInput})),ht=Object(g.createSelector)([Xe],(function(e){return e.capacityType})),yt=Object(g.createSelector)([Xe],(function(e){return e.capacity})),bt=Object(g.createSelector)([yt],(function(e){return parseInt(e,10)||0})),Mt=Object(g.createSelector)([ht],(function(e){return E()(O,{value:e})||{}})),St=Object(g.createSelector)([et],(function(e){return""!==M()(e)})),Et=Object(g.createSelector)([yt],(function(e){return""!==M()(e)&&!isNaN(e)})),gt=Object(g.createSelector)([K],(function(e){return""!==M()(e)&&!isNaN(e)})),kt=Object(g.createSelector)([nt,N],(function(e,t){return 0<parseInt(e,10)||t!==D.TC_CLASS})),vt=Object(g.createSelector)([ht,St,Et,gt,kt],(function(e,t,n,r,a){return e===I[Y]?t&&a:e===I[j]?t&&r&&a:t&&n&&a})),Dt=function(e){return e.reduce((function(e,t){return e+(parseInt(t.details.capacity,10)||0)}),0)},Lt=function(e){return e.reduce((function(e,t){return e+(parseInt(t.tempDetails.capacity,10)||0)}),0)},Ot=function(e){return e.reduce((function(e,t){return e+(parseInt(t.sold,10)||0)}),0)},Yt=function(e){return e.reduce((function(e,t){return e+(parseInt(t.available,10)||0)}),0)},wt=Object(g.createSelector)(te,Dt),jt=Object(g.createSelector)(te,Lt),It=Object(g.createSelector)(te,Ot),Pt=Object(g.createSelector)(te,Yt),Ct=Object(g.createSelector)(ne,Ot),xt=Object(g.createSelector)([F,Ct],(function(e,t){return Math.max(e-t,0)})),Rt=Object(g.createSelector)([wt,F],(function(e,t){return e+t})),At=Object(g.createSelector)([jt,W],(function(e,t){return e+t})),Ht=Object(g.createSelector)([It,Ct],(function(e,t){return e+t})),Nt=Object(g.createSelector)([Pt,xt],(function(e,t){return e+t})),Vt=function(){return P().providers||[]},Ft=function(){return P().default_provider||""},Kt=function(){var e=Ft();return""!==e&&e!==D.RSVP_CLASS},Wt=Object(g.createSelector)([Vt],(function(e){return e.length>1})),Ut=Object(g.createSelector)([Vt],(function(e){return e.length>0})),zt=Object(g.createSelector)([Ut,Kt],(function(e,t){return e&&t})),Gt=y.globals.settings,Bt=y.globals.priceSettings,qt=y.globals.tickets,Jt=y.globals.tecDateSettings().datepickerFormat,$t=v()(),Zt=$t.clone().add(100,"years"),Qt=Jt?$t.format(y.moment.toFormat(Jt)):y.moment.toDate($t),Xt=Jt?Zt.format(y.moment.toFormat(Jt)):y.moment.toDate(Zt),en={title:"",description:"",price:"",sku:"",iac:y.globals.iacVars().iacDefault?y.globals.iacVars().iacDefault:"none",startDate:y.moment.toDatabaseDate($t),startDateInput:Qt,startDateMoment:$t,endDate:y.moment.toDatabaseDate(Zt),endDateInput:Xt,endDateMoment:Zt,startTime:y.moment.toDatabaseTime($t),endTime:y.moment.toDatabaseTime(Zt),startTimeInput:y.moment.toTime($t),endTimeInput:y.moment.toTime(Zt),capacityType:D.TICKET_TYPES[D.UNLIMITED],capacity:""},tn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:en,t=arguments[1];switch(t.type){case f.SET_TICKET_TITLE:return s()({},e,{title:t.payload.title});case f.SET_TICKET_DESCRIPTION:return s()({},e,{description:t.payload.description});case f.SET_TICKET_PRICE:return s()({},e,{price:t.payload.price});case f.SET_TICKET_SKU:return s()({},e,{sku:t.payload.sku});case f.SET_TICKET_IAC_SETTING:return s()({},e,{iac:t.payload.iac});case f.SET_TICKET_START_DATE:return s()({},e,{startDate:t.payload.startDate});case f.SET_TICKET_START_DATE_INPUT:return s()({},e,{startDateInput:t.payload.startDateInput});case f.SET_TICKET_START_DATE_MOMENT:return s()({},e,{startDateMoment:t.payload.startDateMoment});case f.SET_TICKET_END_DATE:return s()({},e,{endDate:t.payload.endDate});case f.SET_TICKET_END_DATE_INPUT:return s()({},e,{endDateInput:t.payload.endDateInput});case f.SET_TICKET_END_DATE_MOMENT:return s()({},e,{endDateMoment:t.payload.endDateMoment});case f.SET_TICKET_START_TIME:return s()({},e,{startTime:t.payload.startTime});case f.SET_TICKET_END_TIME:return s()({},e,{endTime:t.payload.endTime});case f.SET_TICKET_START_TIME_INPUT:return s()({},e,{startTimeInput:t.payload.startTimeInput});case f.SET_TICKET_END_TIME_INPUT:return s()({},e,{endTimeInput:t.payload.endTimeInput});case f.SET_TICKET_CAPACITY_TYPE:return s()({},e,{capacityType:t.payload.capacityType});case f.SET_TICKET_CAPACITY:return s()({},e,{capacity:t.payload.capacity});default:return e}},nn=y.globals.tecDateSettings().datepickerFormat,rn=v()(),an=rn.clone().add(100,"years"),on=nn?rn.format(y.moment.toFormat(nn)):y.moment.toDate(rn),sn=nn?an.format(y.moment.toFormat(nn)):y.moment.toDate(an),cn={title:"",description:"",price:"",sku:"",iac:y.globals.iacVars().iacDefault?y.globals.iacVars().iacDefault:"none",startDate:y.moment.toDatabaseDate(rn),startDateInput:on,startDateMoment:rn,endDate:y.moment.toDatabaseDate(an),endDateInput:sn,endDateMoment:an,startTime:y.moment.toDatabaseTime(rn),endTime:y.moment.toDatabaseTime(an),startTimeInput:y.moment.toTime(rn),endTimeInput:y.moment.toTime(an),capacityType:D.TICKET_TYPES[D.UNLIMITED],capacity:""},un=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:cn,t=arguments[1];switch(t.type){case f.SET_TICKET_TEMP_TITLE:return s()({},e,{title:t.payload.title});case f.SET_TICKET_TEMP_DESCRIPTION:return s()({},e,{description:t.payload.description});case f.SET_TICKET_TEMP_PRICE:return s()({},e,{price:t.payload.price});case f.SET_TICKET_TEMP_SKU:return s()({},e,{sku:t.payload.sku});case f.SET_TICKET_TEMP_IAC_SETTING:return s()({},e,{iac:t.payload.iac});case f.SET_TICKET_TEMP_START_DATE:return s()({},e,{startDate:t.payload.startDate});case f.SET_TICKET_TEMP_START_DATE_INPUT:return s()({},e,{startDateInput:t.payload.startDateInput});case f.SET_TICKET_TEMP_START_DATE_MOMENT:return s()({},e,{startDateMoment:t.payload.startDateMoment});case f.SET_TICKET_TEMP_END_DATE:return s()({},e,{endDate:t.payload.endDate});case f.SET_TICKET_TEMP_END_DATE_INPUT:return s()({},e,{endDateInput:t.payload.endDateInput});case f.SET_TICKET_TEMP_END_DATE_MOMENT:return s()({},e,{endDateMoment:t.payload.endDateMoment});case f.SET_TICKET_TEMP_START_TIME:return s()({},e,{startTime:t.payload.startTime});case f.SET_TICKET_TEMP_END_TIME:return s()({},e,{endTime:t.payload.endTime});case f.SET_TICKET_TEMP_START_TIME_INPUT:return s()({},e,{startTimeInput:t.payload.startTimeInput});case f.SET_TICKET_TEMP_END_TIME_INPUT:return s()({},e,{endTimeInput:t.payload.endTimeInput});case f.SET_TICKET_TEMP_CAPACITY_TYPE:return s()({},e,{capacityType:t.payload.capacityType});case f.SET_TICKET_TEMP_CAPACITY:return s()({},e,{capacity:t.payload.capacity});default:return e}},dn={details:en,tempDetails:cn,sold:0,available:0,ticketId:0,currencySymbol:function(e){var t=qt(),n=Vt();if(""===e)return t.default_currency;var r=n.filter((function(t){return t.class===e})),a=h()(r,1)[0];return a?a.currency:t.default_currency}(Ft()),currencyPosition:(i=y.string.isTruthy(Gt()&&Gt().reverseCurrencyPosition)?"suffix":"prefix",Bt()&&Bt().defaultCurrencyPosition?Bt().defaultCurrencyPosition:i),provider:"",hasAttendeeInfoFields:!1,isLoading:!1,isModalOpen:!1,hasBeenCreated:!1,hasChanges:!1,hasDurationError:!1,isSelected:!1},ln=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:dn,t=arguments[1];switch(t.type){case f.SET_TICKET_TITLE:case f.SET_TICKET_DESCRIPTION:case f.SET_TICKET_PRICE:case f.SET_TICKET_SKU:case f.SET_TICKET_IAC_SETTING:case f.SET_TICKET_START_DATE:case f.SET_TICKET_START_DATE_INPUT:case f.SET_TICKET_START_DATE_MOMENT:case f.SET_TICKET_END_DATE:case f.SET_TICKET_END_DATE_INPUT:case f.SET_TICKET_END_DATE_MOMENT:case f.SET_TICKET_START_TIME:case f.SET_TICKET_END_TIME:case f.SET_TICKET_START_TIME_INPUT:case f.SET_TICKET_END_TIME_INPUT:case f.SET_TICKET_CAPACITY_TYPE:case f.SET_TICKET_CAPACITY:return s()({},e,{details:tn(e.details,t)});case f.SET_TICKET_TEMP_TITLE:case f.SET_TICKET_TEMP_DESCRIPTION:case f.SET_TICKET_TEMP_PRICE:case f.SET_TICKET_TEMP_SKU:case f.SET_TICKET_TEMP_IAC_SETTING:case f.SET_TICKET_TEMP_START_DATE:case f.SET_TICKET_TEMP_START_DATE_INPUT:case f.SET_TICKET_TEMP_START_DATE_MOMENT:case f.SET_TICKET_TEMP_END_DATE:case f.SET_TICKET_TEMP_END_DATE_INPUT:case f.SET_TICKET_TEMP_END_DATE_MOMENT:case f.SET_TICKET_TEMP_START_TIME:case f.SET_TICKET_TEMP_END_TIME:case f.SET_TICKET_TEMP_START_TIME_INPUT:case f.SET_TICKET_TEMP_END_TIME_INPUT:case f.SET_TICKET_TEMP_CAPACITY_TYPE:case f.SET_TICKET_TEMP_CAPACITY:return s()({},e,{tempDetails:un(e.tempDetails,t)});case f.SET_TICKET_SOLD:return s()({},e,{sold:t.payload.sold});case f.SET_TICKET_AVAILABLE:return s()({},e,{available:t.payload.available});case f.SET_TICKET_ID:return s()({},e,{ticketId:t.payload.ticketId});case f.SET_TICKET_CURRENCY_SYMBOL:return s()({},e,{currencySymbol:t.payload.currencySymbol});case f.SET_TICKET_CURRENCY_POSITION:return s()({},e,{currencyPosition:t.payload.currencyPosition});case f.SET_TICKET_PROVIDER:return s()({},e,{provider:t.payload.provider});case f.SET_TICKET_HAS_ATTENDEE_INFO_FIELDS:return s()({},e,{hasAttendeeInfoFields:t.payload.hasAttendeeInfoFields});case f.SET_TICKET_IS_LOADING:return s()({},e,{isLoading:t.payload.isLoading});case f.SET_TICKET_IS_MODAL_OPEN:return s()({},e,{isModalOpen:t.payload.isModalOpen});case f.SET_TICKET_HAS_BEEN_CREATED:return s()({},e,{hasBeenCreated:t.payload.hasBeenCreated});case f.SET_TICKET_HAS_CHANGES:return s()({},e,{hasChanges:t.payload.hasChanges});case f.SET_TICKET_HAS_DURATION_ERROR:return s()({},e,{hasDurationError:t.payload.hasDurationError});case f.SET_TICKET_IS_SELECTED:return s()({},e,{isSelected:t.payload.isSelected});default:return e}},_n=Object(_.b)({byClientId:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case f.SET_TICKET_TITLE:case f.SET_TICKET_DESCRIPTION:case f.SET_TICKET_PRICE:case f.SET_TICKET_SKU:case f.SET_TICKET_IAC_SETTING:case f.SET_TICKET_START_DATE:case f.SET_TICKET_START_DATE_INPUT:case f.SET_TICKET_START_DATE_MOMENT:case f.SET_TICKET_END_DATE:case f.SET_TICKET_END_DATE_INPUT:case f.SET_TICKET_END_DATE_MOMENT:case f.SET_TICKET_START_TIME:case f.SET_TICKET_END_TIME:case f.SET_TICKET_START_TIME_INPUT:case f.SET_TICKET_END_TIME_INPUT:case f.SET_TICKET_CAPACITY_TYPE:case f.SET_TICKET_CAPACITY:case f.SET_TICKET_TEMP_TITLE:case f.SET_TICKET_TEMP_DESCRIPTION:case f.SET_TICKET_TEMP_PRICE:case f.SET_TICKET_TEMP_SKU:case f.SET_TICKET_TEMP_IAC_SETTING:case f.SET_TICKET_TEMP_START_DATE:case f.SET_TICKET_TEMP_START_DATE_INPUT:case f.SET_TICKET_TEMP_START_DATE_MOMENT:case f.SET_TICKET_TEMP_END_DATE:case f.SET_TICKET_TEMP_END_DATE_INPUT:case f.SET_TICKET_TEMP_END_DATE_MOMENT:case f.SET_TICKET_TEMP_START_TIME:case f.SET_TICKET_TEMP_END_TIME:case f.SET_TICKET_TEMP_START_TIME_INPUT:case f.SET_TICKET_TEMP_END_TIME_INPUT:case f.SET_TICKET_TEMP_CAPACITY_TYPE:case f.SET_TICKET_TEMP_CAPACITY:case f.SET_TICKET_SOLD:case f.SET_TICKET_AVAILABLE:case f.SET_TICKET_ID:case f.SET_TICKET_CURRENCY_SYMBOL:case f.SET_TICKET_CURRENCY_POSITION:case f.SET_TICKET_PROVIDER:case f.SET_TICKET_HAS_ATTENDEE_INFO_FIELDS:case f.SET_TICKET_IS_LOADING:case f.SET_TICKET_IS_MODAL_OPEN:case f.SET_TICKET_HAS_BEEN_CREATED:case f.SET_TICKET_HAS_CHANGES:case f.SET_TICKET_HAS_DURATION_ERROR:case f.SET_TICKET_IS_SELECTED:case f.REGISTER_TICKET_BLOCK:return s()({},e,l()({},t.payload.clientId,ln(e[t.payload.clientId],t)));case f.REMOVE_TICKET_BLOCK:return p()(e,[t.payload.clientId]);case f.REMOVE_TICKET_BLOCKS:return{};default:return e}},allClientIds:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];switch(t.type){case f.REGISTER_TICKET_BLOCK:return[].concat(u()(e),[t.payload.clientId]);case f.REMOVE_TICKET_BLOCK:return e.filter((function(e){return t.payload.clientId!==e}));case f.REMOVE_TICKET_BLOCKS:return[];default:return e}}}),mn=n(62),pn={headerImage:mn.a,isSelected:!1,isSettingsOpen:!1,isSettingsLoading:!1,provider:"",sharedCapacity:"",tempSharedCapacity:"",tickets:_n(void 0,{})},fn=n(10),Tn=n(12),hn=n.n(Tn),yn=n(112),bn=n.n(yn),Mn=n(0),Sn=n(18),En=n(111),gn=n(14),kn=n(60),vn=n(8),Dn=n(35),Ln=n(20),On=n(33),Yn=n(27),wn=hn.a.mark(_r),jn=hn.a.mark(mr),In=hn.a.mark(pr),Pn=hn.a.mark(fr),Cn=hn.a.mark(Tr),xn=hn.a.mark(hr),Rn=hn.a.mark(yr),An=hn.a.mark(br),Hn=hn.a.mark(Mr),Nn=hn.a.mark(Sr),Vn=hn.a.mark(Er),Fn=hn.a.mark(gr),Kn=hn.a.mark(kr),Wn=hn.a.mark(vr),Un=hn.a.mark(Dr),zn=hn.a.mark(Lr),Gn=hn.a.mark(Or),Bn=hn.a.mark(Yr),qn=hn.a.mark(wr),Jn=hn.a.mark(jr),$n=hn.a.mark(Ir),Zn=hn.a.mark(Pr),Qn=hn.a.mark(Cr),Xn=hn.a.mark(xr),er=hn.a.mark(Rr),tr=hn.a.mark(Ar),nr=hn.a.mark(Hr),rr=hn.a.mark(Nr),ar=hn.a.mark(Vr),ir=D.UNLIMITED,or=D.SHARED,sr=D.TICKET_TYPES,cr=D.PROVIDER_CLASS_TO_PROVIDER_MAPPING,ur=(y.globals.tickets,y.globals.restNonce),dr=y.globals.tecDateSettings,lr=y.api.wpREST;function _r(e){var t,n,r,a,i;return hn.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,Object(Mn.b)(Sn.dispatch,"core/editor");case 2:return t=o.sent,n=t.insertBlock,o.next=6,Object(Mn.b)(Sn.select,"core/editor");case 6:return r=o.sent,a=r.getBlockCount,i=r.getBlocks,o.next=11,Object(Mn.b)([i(),"filter"],(function(e){return"tribe/tickets"===e.name}));case 11:o.sent.forEach((function(t){var r=t.clientId;e.forEach((function(e){var t={hasBeenCreated:!0,ticketId:e},i=a(r),o=Object(En.createBlock)("tribe/tickets-item",t);n(o,i,r,!1)}))}));case 13:case"end":return o.stop()}}),wn,this)}function mr(e){var t,n,r,a,i,o,s,c;return hn.a.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return t=e.payload.get,n=parseInt(t("header",mn.a.id),10),r=t("sharedCapacity"),a=t("tickets",[]),u.next=6,Object(Mn.f)(oe);case 6:if(i=u.sent,!((o=a.filter((function(e){return!bn()(i,e)}))).length>=1)){u.next=11;break}return u.next=11,Object(Mn.b)(_r,o);case 11:if("0"===r){u.next=14;break}return u.next=14,Object(Mn.a)([Object(Mn.e)(fn.setTicketsSharedCapacity(r)),Object(Mn.e)(fn.setTicketsTempSharedCapacity(r))]);case 14:if(isNaN(n)||0===n){u.next=17;break}return u.next=17,Object(Mn.e)(fn.fetchTicketsHeaderImage(n));case 17:if((s=t("provider",pn.provider))!==D.RSVP_CLASS&&s){u.next=23;break}return u.next=21,Object(Mn.f)(Ft);case 21:c=u.sent,s=c===D.RSVP_CLASS?"":c;case 23:return u.next=25,Object(Mn.e)(fn.setTicketsProvider(s));case 25:case"end":return u.stop()}}),jn,this)}function pr(){var e,t,n;return hn.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,Object(Mn.f)(ee);case 2:return e=r.sent,r.next=5,Object(Mn.a)([Object(Mn.e)(fn.removeTicketBlocks()),Object(Mn.e)(fn.setTicketsIsSettingsOpen(!1))]);case 5:if(e){r.next=14;break}return r.next=8,Object(Mn.b)([Object(Sn.select)("core/editor"),"getCurrentPostAttribute"],"meta");case 8:return t=r.sent,n=s()({},t,l()({},vn.d,"")),r.next=12,Object(Mn.b)([Object(Sn.dispatch)("core/editor"),"editPost"],{meta:n});case 12:return r.next=14,Object(Mn.a)([Object(Mn.e)(fn.setTicketsSharedCapacity("")),Object(Mn.e)(fn.setTicketsTempSharedCapacity(""))]);case 14:case"end":return r.stop()}}),In,this)}function fr(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,h,b,M;return hn.a.wrap((function(S){for(;;)switch(S.prev=S.next){case 0:return t=e.payload,n=t.clientId,r=t.get,a=r("ticketId",dn.ticketId),i=r("hasBeenCreated",dn.hasBeenCreated),o=dr().datepickerFormat,S.next=6,Object(Mn.b)([Object(Sn.select)("core/editor"),"getEditedPostAttribute"],"date");case 6:return s=S.sent,S.next=9,Object(Mn.b)(y.moment.toMoment,s);case 9:return c=S.sent,S.next=12,Object(Mn.b)(y.moment.toDatabaseDate,c);case 12:return u=S.sent,S.next=15,o?Object(Mn.b)(y.moment.toDate,c,o):Object(Mn.b)(y.moment.toDate,c);case 15:return d=S.sent,S.next=18,Object(Mn.b)(y.moment.toDatabaseTime,c);case 18:return l=S.sent,S.next=21,Object(Mn.b)(y.moment.toTime,c);case 21:return _=S.sent,S.next=24,Object(Mn.a)([Object(Mn.e)(fn.setTicketStartDate(n,u)),Object(Mn.e)(fn.setTicketStartDateInput(n,d)),Object(Mn.e)(fn.setTicketStartDateMoment(n,c)),Object(Mn.e)(fn.setTicketStartTime(n,l)),Object(Mn.e)(fn.setTicketStartTimeInput(n,_)),Object(Mn.e)(fn.setTicketTempStartDate(n,u)),Object(Mn.e)(fn.setTicketTempStartDateInput(n,d)),Object(Mn.e)(fn.setTicketTempStartDateMoment(n,c)),Object(Mn.e)(fn.setTicketTempStartTime(n,l)),Object(Mn.e)(fn.setTicketTempStartTimeInput(n,_)),Object(Mn.e)(fn.setTicketHasBeenCreated(n,i))]);case 24:return S.next=26,Object(Mn.b)(Yn.e);case 26:if(!S.sent||!window.tribe.events){S.next=54;break}return S.prev=28,S.next=31,Object(Mn.f)(tribe.events.data.blocks.datetime.selectors.getStart);case 31:return m=S.sent,S.next=34,Object(Mn.b)(y.moment.toMoment,m);case 34:return p=S.sent,S.next=37,Object(Mn.b)(y.moment.toDatabaseDate,p);case 37:return f=S.sent,S.next=40,o?Object(Mn.b)(y.moment.toDate,p,o):Object(Mn.b)(y.moment.toDate,p);case 40:return T=S.sent,S.next=43,Object(Mn.b)(y.moment.toDatabaseTime,p);case 43:return h=S.sent,S.next=46,Object(Mn.b)(y.moment.toTime,p);case 46:return b=S.sent,S.next=49,Object(Mn.a)([Object(Mn.e)(fn.setTicketEndDate(n,f)),Object(Mn.e)(fn.setTicketEndDateInput(n,T)),Object(Mn.e)(fn.setTicketEndDateMoment(n,p)),Object(Mn.e)(fn.setTicketEndTime(n,h)),Object(Mn.e)(fn.setTicketEndTimeInput(n,b)),Object(Mn.e)(fn.setTicketTempEndDate(n,f)),Object(Mn.e)(fn.setTicketTempEndDateInput(n,T)),Object(Mn.e)(fn.setTicketTempEndDateMoment(n,p)),Object(Mn.e)(fn.setTicketTempEndTime(n,h)),Object(Mn.e)(fn.setTicketTempEndTimeInput(n,b))]);case 49:S.next=54;break;case 51:S.prev=51,S.t0=S.catch(28),console.error(S.t0);case 54:return S.next=56,Object(Mn.f)(Dn.plugins.selectors.hasPlugin,Dn.plugins.constants.TICKETS_PLUS);case 56:if(!S.sent){S.next=60;break}return S.next=60,Object(Mn.a)([Object(Mn.e)(fn.setTicketCapacityType(n,D.TICKET_TYPES[D.SHARED])),Object(Mn.e)(fn.setTicketTempCapacityType(n,D.TICKET_TYPES[D.SHARED]))]);case 60:return S.next=62,Object(Mn.f)(V);case 62:if(!(M=S.sent)){S.next=66;break}return S.next=66,Object(Mn.a)([Object(Mn.e)(fn.setTicketCapacity(n,M)),Object(Mn.e)(fn.setTicketTempCapacity(n,M))]);case 66:if(0===a){S.next=69;break}return S.next=69,Object(Mn.a)([Object(Mn.e)(fn.setTicketId(n,a)),Object(Mn.b)(yr,{payload:{clientId:n,ticketId:a}})]);case 69:return S.next=71,Object(Mn.b)(jr,n);case 71:return S.next=73,Object(Mn.d)(Lr,n);case 73:case"end":return S.stop()}}),Pn,this,[[28,51]])}function Tr(e){var t,n,r,a,i,o,s,c;return hn.a.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return t=new FormData,n={clientId:e},u.next=4,Object(Mn.b)([Object(Sn.select)("core/editor"),"getBlockRootClientId"],e);case 4:return r=u.sent,u.next=7,Object(Mn.f)(pe,n);case 7:return a=u.sent,u.next=10,Object(Mn.f)(N);case 10:return i=u.sent,u.t0=t,u.next=14,Object(Mn.b)([Object(Sn.select)("core/editor"),"getCurrentPostId"]);case 14:return u.t1=u.sent,u.t0.append.call(u.t0,"post_id",u.t1),t.append("provider",a||i),u.t2=t,u.next=20,Object(Mn.f)(et,n);case 20:return u.t3=u.sent,u.t2.append.call(u.t2,"name",u.t3),u.t4=t,u.next=25,Object(Mn.f)(tt,n);case 25:return u.t5=u.sent,u.t4.append.call(u.t4,"description",u.t5),u.t6=t,u.next=30,Object(Mn.f)(nt,n);case 30:return u.t7=u.sent,u.t6.append.call(u.t6,"price",u.t7),u.t8=t,u.next=35,Object(Mn.f)(it,n);case 35:return u.t9=u.sent,u.t8.append.call(u.t8,"start_date",u.t9),u.t10=t,u.next=40,Object(Mn.f)(lt,n);case 40:return u.t11=u.sent,u.t10.append.call(u.t10,"start_time",u.t11),u.t12=t,u.next=45,Object(Mn.f)(ct,n);case 45:return u.t13=u.sent,u.t12.append.call(u.t12,"end_date",u.t13),u.t14=t,u.next=50,Object(Mn.f)(mt,n);case 50:return u.t15=u.sent,u.t14.append.call(u.t14,"end_time",u.t15),u.t16=t,u.next=55,Object(Mn.f)(rt,n);case 55:return u.t17=u.sent,u.t16.append.call(u.t16,"sku",u.t17),u.t18=t,u.next=60,Object(Mn.f)(at,n);case 60:return u.t19=u.sent,u.t18.append.call(u.t18,"iac",u.t19),u.t20=t,u.next=65,Object(Mn.b)([Object(Sn.select)("core/editor"),"getBlockIndex"],e,r);case 65:return u.t21=u.sent,u.t20.append.call(u.t20,"menu_order",u.t21),u.next=69,Object(Mn.f)(ht,n);case 69:return o=u.sent,u.next=72,Object(Mn.f)(yt,n);case 72:if(s=u.sent,c=o===sr[ir],t.append("ticket[mode]",c?"":o),t.append("ticket[capacity]",c?"":s),o!==sr[or]){u.next=82;break}return u.t22=t,u.next=80,Object(Mn.f)(K);case 80:u.t23=u.sent,u.t22.append.call(u.t22,"ticket[event_capacity]",u.t23);case 82:return u.abrupt("return",t);case 83:case"end":return u.stop()}}),Cn,this)}function hr(e){var t,n;return hn.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return t=Object(Sn.dispatch)("core/editor"),n=t.removeBlock,r.next=3,Object(Mn.a)([Object(Mn.e)(fn.removeTicketBlock(e)),Object(Mn.b)(n,e)]);case 3:case"end":return r.stop()}}),xn,this)}function yr(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,h,b,M,S,E,g,k,v,L,O,Y,w,j,I,P,C,x;return hn.a.wrap((function(R){for(;;)switch(R.prev=R.next){case 0:if(t=e.payload,n=t.ticketId,r=t.clientId,0!==n){R.next=3;break}return R.abrupt("return");case 3:return R.next=5,Object(Mn.e)(fn.setTicketIsLoading(r,!0));case 5:return R.prev=5,R.next=8,Object(Mn.b)(lr,{path:"tickets/"+n,namespace:"tribe/tickets/v1"});case 8:if(a=R.sent,i=a.response,o=a.data,s=o.status,c=void 0===s?"":s,u=o.provider,404!==i.status&&"trash"!==c&&u!==D.RSVP){R.next=16;break}return R.next=15,Object(Mn.b)(hr,r);case 15:return R.abrupt("return");case 16:if(!i.ok){R.next=60;break}return d=o.totals,l=void 0===d?{}:d,_=o.available_from,m=o.available_until,p=o.cost_details,f=o.title,T=o.description,h=o.sku,b=o.iac,M=o.capacity_type,S=o.capacity,E=o.supports_attendee_information,g=dr().datepickerFormat,R.next=21,Object(Mn.b)(y.moment.toMoment,_);case 21:return k=R.sent,R.next=24,Object(Mn.b)(y.moment.toDatabaseDate,k);case 24:return v=R.sent,R.next=27,g?Object(Mn.b)(y.moment.toDate,k,g):Object(Mn.b)(y.moment.toDate,k);case 27:return L=R.sent,R.next=30,Object(Mn.b)(y.moment.toDatabaseTime,k);case 30:return O=R.sent,R.next=33,Object(Mn.b)(y.moment.toTime,k);case 33:return Y=R.sent,R.next=36,Object(Mn.b)(y.moment.toMoment,"");case 36:if(w=R.sent,j="",I="",P="",C="",!m){R.next=57;break}return R.next=44,Object(Mn.b)(y.moment.toMoment,m);case 44:return w=R.sent,R.next=47,Object(Mn.b)(y.moment.toDatabaseDate,w);case 47:return j=R.sent,R.next=50,g?Object(Mn.b)(y.moment.toDate,w,g):Object(Mn.b)(y.moment.toDate,w);case 50:return I=R.sent,R.next=53,Object(Mn.b)(y.moment.toDatabaseTime,w);case 53:return P=R.sent,R.next=56,Object(Mn.b)(y.moment.toTime,w);case 56:C=R.sent;case 57:return x={title:f,description:T,price:p.values[0],sku:h,iac:b,startDate:v,startDateInput:L,startDateMoment:k,endDate:j,endDateInput:I,endDateMoment:w,startTime:O,endTime:P,startTimeInput:Y,endTimeInput:C,capacityType:M,capacity:S},R.next=60,Object(Mn.a)([Object(Mn.e)(fn.setTicketDetails(r,x)),Object(Mn.e)(fn.setTicketTempDetails(r,x)),Object(Mn.e)(fn.setTicketSold(r,l.sold)),Object(Mn.e)(fn.setTicketAvailable(r,l.stock)),Object(Mn.e)(fn.setTicketCurrencySymbol(r,p.currency_symbol)),Object(Mn.e)(fn.setTicketCurrencyPosition(r,p.currency_position)),Object(Mn.e)(fn.setTicketProvider(r,u)),Object(Mn.e)(fn.setTicketHasAttendeeInfoFields(r,E)),Object(Mn.e)(fn.setTicketHasBeenCreated(r,!0))]);case 60:R.next=65;break;case 62:R.prev=62,R.t0=R.catch(5),console.error(R.t0);case 65:return R.next=67,Object(Mn.e)(fn.setTicketIsLoading(r,!1));case 67:case"end":return R.stop()}}),Rn,this,[[5,62]])}function br(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,y,b,M,S,E,g,k,v,D,L,O,Y,w,j,I;return hn.a.wrap((function(P){for(;;)switch(P.prev=P.next){case 0:return t=e.payload.clientId,n={clientId:t},r=ur(),a=r.add_ticket_nonce,i=void 0===a?"":a,P.next=5,Object(Mn.b)(Tr,t);case 5:return(o=P.sent).append("add_ticket_nonce",i),P.prev=7,P.next=10,Object(Mn.e)(fn.setTicketIsLoading(t,!0));case 10:return P.next=12,Object(Mn.b)(lr,{path:"tickets/",namespace:"tribe/tickets/v1",initParams:{method:"POST",body:o}});case 12:if(s=P.sent,c=s.response,u=s.data,!c.ok){P.next=51;break}return P.next=18,Object(Mn.f)(V);case 18:return d=P.sent,P.next=21,Object(Mn.f)(K);case 21:if(l=P.sent,""!==d||isNaN(l)||!(l>0)){P.next=25;break}return P.next=25,Object(Mn.e)(fn.setTicketsSharedCapacity(l));case 25:return _=-1===u.capacity_details.available?0:u.capacity_details.available,P.next=28,Object(Mn.a)([Object(Mn.f)(et,n),Object(Mn.f)(tt,n),Object(Mn.f)(nt,n),Object(Mn.f)(rt,n),Object(Mn.f)(at,n),Object(Mn.f)(it,n),Object(Mn.f)(ot,n),Object(Mn.f)(st,n),Object(Mn.f)(ct,n),Object(Mn.f)(ut,n),Object(Mn.f)(dt,n),Object(Mn.f)(lt,n),Object(Mn.f)(mt,n),Object(Mn.f)(ft,n),Object(Mn.f)(Tt,n),Object(Mn.f)(ht,n),Object(Mn.f)(yt,n)]);case 28:return m=P.sent,p=h()(m,17),f=p[0],T=p[1],y=p[2],b=p[3],M=p[4],S=p[5],E=p[6],g=p[7],k=p[8],v=p[9],D=p[10],L=p[11],O=p[12],Y=p[13],w=p[14],j=p[15],I=p[16],P.next=49,Object(Mn.a)([Object(Mn.e)(fn.setTicketDetails(t,{title:f,description:T,price:y,sku:b,iac:M,startDate:S,startDateInput:E,startDateMoment:g,endDate:k,endDateInput:v,endDateMoment:D,startTime:L,endTime:O,startTimeInput:Y,endTimeInput:w,capacityType:j,capacity:I})),Object(Mn.e)(fn.setTicketId(t,u.id)),Object(Mn.e)(fn.setTicketHasBeenCreated(t,!0)),Object(Mn.e)(fn.setTicketAvailable(t,_)),Object(Mn.e)(fn.setTicketProvider(t,cr[u.provider_class])),Object(Mn.e)(fn.setTicketHasChanges(t,!1))]);case 49:return P.next=51,Object(Mn.d)(Lr,t);case 51:P.next=56;break;case 53:P.prev=53,P.t0=P.catch(7),console.error(P.t0);case 56:return P.prev=56,P.next=59,Object(Mn.e)(fn.setTicketIsLoading(t,!1));case 59:return P.finish(56);case 60:case"end":return P.stop()}}),An,this,[[7,53,56,60]])}function Mr(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,y,b,M,S,E,g,k,v,D,L,O,Y,w,j,I,P,C,x,R,A,H,N,V,F,K;return hn.a.wrap((function(W){for(;;)switch(W.prev=W.next){case 0:return t=e.payload.clientId,n={clientId:t},r=ur(),a=r.edit_ticket_nonce,i=void 0===a?"":a,W.next=5,Object(Mn.b)(Tr,t);case 5:return(o=W.sent).append("edit_ticket_nonce",i),W.next=9,Object(Mn.f)(le,n);case 9:for(s=W.sent,W.prev=10,c=[],u=!0,d=!1,l=void 0,W.prev=15,_=o.entries()[Symbol.iterator]();!(u=(m=_.next()).done);u=!0)p=m.value,f=h()(p,2),T=f[0],y=f[1],c.push(encodeURIComponent(T)+"="+encodeURIComponent(y));W.next=23;break;case 19:W.prev=19,W.t0=W.catch(15),d=!0,l=W.t0;case 23:W.prev=23,W.prev=24,!u&&_.return&&_.return();case 26:if(W.prev=26,!d){W.next=29;break}throw l;case 29:return W.finish(26);case 30:return W.finish(23);case 31:return W.next=33,Object(Mn.e)(fn.setTicketIsLoading(t,!0));case 33:return W.next=35,Object(Mn.b)(lr,{path:"tickets/"+s,namespace:"tribe/tickets/v1",headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},initParams:{method:"PUT",body:c.join("&")}});case 35:if(b=W.sent,M=b.response,S=b.data,!M.ok){W.next=64;break}return E=S.capacity_details,g=-1===E.available?0:E.available,W.next=43,Object(Mn.a)([Object(Mn.f)(et,n),Object(Mn.f)(tt,n),Object(Mn.f)(nt,n),Object(Mn.f)(rt,n),Object(Mn.f)(at,n),Object(Mn.f)(it,n),Object(Mn.f)(ot,n),Object(Mn.f)(st,n),Object(Mn.f)(ct,n),Object(Mn.f)(ut,n),Object(Mn.f)(dt,n),Object(Mn.f)(lt,n),Object(Mn.f)(mt,n),Object(Mn.f)(ft,n),Object(Mn.f)(Tt,n),Object(Mn.f)(ht,n),Object(Mn.f)(yt,n)]);case 43:return k=W.sent,v=h()(k,17),D=v[0],L=v[1],O=v[2],Y=v[3],w=v[4],j=v[5],I=v[6],P=v[7],C=v[8],x=v[9],R=v[10],A=v[11],H=v[12],N=v[13],V=v[14],F=v[15],K=v[16],W.next=64,Object(Mn.a)([Object(Mn.e)(fn.setTicketDetails(t,{title:D,description:L,price:O,sku:Y,iac:w,startDate:j,startDateInput:I,startDateMoment:P,endDate:C,endDateInput:x,endDateMoment:R,startTime:A,endTime:H,startTimeInput:N,endTimeInput:V,capacityType:F,capacity:K})),Object(Mn.e)(fn.setTicketSold(t,E.sold)),Object(Mn.e)(fn.setTicketAvailable(t,g)),Object(Mn.e)(fn.setTicketHasChanges(t,!1))]);case 64:W.next=69;break;case 66:W.prev=66,W.t1=W.catch(10),console.error(W.t1);case 69:return W.prev=69,W.next=72,Object(Mn.e)(fn.setTicketIsLoading(t,!1));case 72:return W.finish(69);case 73:case"end":return W.stop()}}),Hn,this,[[10,66,69,73],[15,19,23,31],[24,,26,30]])}function Sr(e){var t,n,r,a,i,o,s,c,u;return hn.a.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return t=e.payload.clientId,n={clientId:t},d.next=4,Object(Mn.b)([window,"confirm"],Object(L.__)("Are you sure you want to delete this ticket? It cannot be undone."));case 4:if(!d.sent){d.next=33;break}return d.next=8,Object(Mn.f)(le,n);case 8:return r=d.sent,d.next=11,Object(Mn.f)(ye,n);case 11:return a=d.sent,d.next=14,Object(Mn.e)(fn.setTicketIsSelected(t,!1));case 14:return d.next=16,Object(Mn.e)(fn.removeTicketBlock(t));case 16:return d.next=18,Object(Mn.b)([Object(Sn.dispatch)("core/editor"),"clearSelectedBlock"]);case 18:return d.next=20,Object(Mn.b)([Object(Sn.dispatch)("core/editor"),"removeBlocks"],[t]);case 20:if(!a){d.next=33;break}return i=ur(),o=i.remove_ticket_nonce,s=void 0===o?"":o,d.next=24,Object(Mn.b)([Object(Sn.select)("core/editor"),"getCurrentPostId"]);case 24:return c=d.sent,u=[encodeURIComponent("post_id")+"="+encodeURIComponent(c),encodeURIComponent("remove_ticket_nonce")+"="+encodeURIComponent(s)],d.prev=26,d.next=29,Object(Mn.b)(lr,{path:"tickets/"+r,namespace:"tribe/tickets/v1",headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},initParams:{method:"DELETE",body:u.join("&")}});case 29:d.next=33;break;case 31:d.prev=31,d.t0=d.catch(26);case 33:case"end":return d.stop()}}),Nn,this,[[26,31]])}function Er(e){var t,n,r,a,i;return hn.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload.id,o.next=3,Object(Mn.e)(fn.setTicketsIsSettingsLoading(!0));case 3:return o.prev=3,o.next=6,Object(Mn.b)(lr,{path:"media/"+t});case 6:if(n=o.sent,r=n.response,a=n.data,!r.ok){o.next=13;break}return i={id:a.id,alt:a.alt_text,src:a.media_details.sizes.medium.source_url},o.next=13,Object(Mn.e)(fn.setTicketsHeaderImage(i));case 13:o.next=18;break;case 15:o.prev=15,o.t0=o.catch(3),console.error(o.t0);case 18:return o.prev=18,o.next=21,Object(Mn.e)(fn.setTicketsIsSettingsLoading(!1));case 21:return o.finish(18);case 22:case"end":return o.stop()}}),Vn,this,[[3,15,18,22]])}function gr(e){var t,n,r,a,i,o,s,c;return hn.a.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return t=e.payload.image,u.next=3,Object(Mn.b)([Object(Sn.select)("core/editor"),"getCurrentPostId"]);case 3:return n=u.sent,r={meta:l()({},vn.i,""+t.id)},u.prev=5,u.next=8,Object(Mn.e)(fn.setTicketsIsSettingsLoading(!0));case 8:return u.next=10,Object(Mn.e)(gn.setRSVPIsSettingsLoading(!0));case 10:return a=Object(Sn.select)("core/editor").getCurrentPostType(),i=Object(Sn.select)("core").getPostType(a),o=i.rest_base,u.next=15,Object(Mn.b)(lr,{path:o+"/"+n,headers:{"Content-Type":"application/json"},initParams:{method:"PUT",body:JSON.stringify(r)}});case 15:if(s=u.sent,!s.response.ok){u.next=23;break}return c={id:t.id,alt:t.alt,src:t.sizes.medium.url},u.next=21,Object(Mn.e)(fn.setTicketsHeaderImage(c));case 21:return u.next=23,Object(Mn.e)(gn.setRSVPHeaderImage(c));case 23:u.next=27;break;case 25:u.prev=25,u.t0=u.catch(5);case 27:return u.prev=27,u.next=30,Object(Mn.e)(fn.setTicketsIsSettingsLoading(!1));case 30:return u.next=32,Object(Mn.e)(gn.setRSVPIsSettingsLoading(!1));case 32:return u.finish(27);case 33:case"end":return u.stop()}}),Fn,this,[[5,25,27,33]])}function kr(){var e,t,n,r,a,i;return hn.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,Object(Mn.b)([Object(Sn.select)("core/editor"),"getCurrentPostId"]);case 2:return e=o.sent,t={meta:l()({},vn.i,null)},o.prev=4,o.next=7,Object(Mn.e)(fn.setTicketsIsSettingsLoading(!0));case 7:return o.next=9,Object(Mn.e)(gn.setRSVPIsSettingsLoading(!0));case 9:return n=Object(Sn.select)("core/editor").getCurrentPostType(),r=Object(Sn.select)("core").getPostType(n),a=r.rest_base,o.next=14,Object(Mn.b)(y.api.wpREST,{path:a+"/"+e,headers:{"Content-Type":"application/json"},initParams:{method:"PUT",body:JSON.stringify(t)}});case 14:if(i=o.sent,!i.response.ok){o.next=21;break}return o.next=19,Object(Mn.e)(fn.setTicketsHeaderImage(mn.a));case 19:return o.next=21,Object(Mn.e)(gn.setRSVPHeaderImage(kn.a));case 21:o.next=25;break;case 23:o.prev=23,o.t0=o.catch(4);case 25:return o.prev=25,o.next=28,Object(Mn.e)(fn.setTicketsIsSettingsLoading(!1));case 28:return o.next=30,Object(Mn.e)(gn.setRSVPIsSettingsLoading(!1));case 30:return o.finish(25);case 31:case"end":return o.stop()}}),Kn,this,[[4,23,25,31]])}function vr(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,h,y,b,M;return hn.a.wrap((function(S){for(;;)switch(S.prev=S.next){case 0:return t=e.payload,n=t.clientId,r=t.details,a=r.title,i=r.description,o=r.price,s=r.sku,c=r.iac,u=r.startDate,d=r.startDateInput,l=r.startDateMoment,_=r.endDate,m=r.endDateInput,p=r.endDateMoment,f=r.startTime,T=r.endTime,h=r.startTimeInput,y=r.endTimeInput,b=r.capacityType,M=r.capacity,S.next=4,Object(Mn.a)([Object(Mn.e)(fn.setTicketTitle(n,a)),Object(Mn.e)(fn.setTicketDescription(n,i)),Object(Mn.e)(fn.setTicketPrice(n,o)),Object(Mn.e)(fn.setTicketSku(n,s)),Object(Mn.e)(fn.setTicketIACSetting(n,c)),Object(Mn.e)(fn.setTicketStartDate(n,u)),Object(Mn.e)(fn.setTicketStartDateInput(n,d)),Object(Mn.e)(fn.setTicketStartDateMoment(n,l)),Object(Mn.e)(fn.setTicketEndDate(n,_)),Object(Mn.e)(fn.setTicketEndDateInput(n,m)),Object(Mn.e)(fn.setTicketEndDateMoment(n,p)),Object(Mn.e)(fn.setTicketStartTime(n,f)),Object(Mn.e)(fn.setTicketEndTime(n,T)),Object(Mn.e)(fn.setTicketStartTimeInput(n,h)),Object(Mn.e)(fn.setTicketEndTimeInput(n,y)),Object(Mn.e)(fn.setTicketCapacityType(n,b)),Object(Mn.e)(fn.setTicketCapacity(n,M))]);case 4:case"end":return S.stop()}}),Wn,this)}function Dr(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,h,y,b,M;return hn.a.wrap((function(S){for(;;)switch(S.prev=S.next){case 0:return t=e.payload,n=t.clientId,r=t.tempDetails,a=r.title,i=r.description,o=r.price,s=r.sku,c=r.iac,u=r.startDate,d=r.startDateInput,l=r.startDateMoment,_=r.endDate,m=r.endDateInput,p=r.endDateMoment,f=r.startTime,T=r.endTime,h=r.startTimeInput,y=r.endTimeInput,b=r.capacityType,M=r.capacity,S.next=4,Object(Mn.a)([Object(Mn.e)(fn.setTicketTempTitle(n,a)),Object(Mn.e)(fn.setTicketTempDescription(n,i)),Object(Mn.e)(fn.setTicketTempPrice(n,o)),Object(Mn.e)(fn.setTicketTempSku(n,s)),Object(Mn.e)(fn.setTicketTempIACSetting(n,c)),Object(Mn.e)(fn.setTicketTempStartDate(n,u)),Object(Mn.e)(fn.setTicketTempStartDateInput(n,d)),Object(Mn.e)(fn.setTicketTempStartDateMoment(n,l)),Object(Mn.e)(fn.setTicketTempEndDate(n,_)),Object(Mn.e)(fn.setTicketTempEndDateInput(n,m)),Object(Mn.e)(fn.setTicketTempEndDateMoment(n,p)),Object(Mn.e)(fn.setTicketTempStartTime(n,f)),Object(Mn.e)(fn.setTicketTempEndTime(n,T)),Object(Mn.e)(fn.setTicketTempStartTimeInput(n,h)),Object(Mn.e)(fn.setTicketTempEndTimeInput(n,y)),Object(Mn.e)(fn.setTicketTempCapacityType(n,b)),Object(Mn.e)(fn.setTicketTempCapacity(n,M))]);case 4:case"end":return S.stop()}}),Un,this)}function Lr(e){var t,n;return hn.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return t=void 0,n=void 0,r.prev=1,r.next=4,Object(Mn.f)(ye,{clientId:e});case 4:if(!r.sent){r.next=20;break}return r.next=7,Object(Mn.b)(Yn.c);case 7:return t=r.sent,r.next=10,Object(Mn.b)(Yn.b);case 10:n=r.sent;case 11:return r.next=14,Object(Mn.g)(t);case 14:return r.next=16,Object(Mn.b)(Mr,{payload:{clientId:e}});case 16:return r.next=18,Object(Mn.g)(n);case 18:r.next=11;break;case 20:r.next=25;break;case 22:r.prev=22,r.t0=r.catch(1),console.error(r.t0);case 25:if(r.prev=25,!t){r.next=29;break}return r.next=29,Object(Mn.b)([t,"close"]);case 29:if(!n){r.next=32;break}return r.next=32,Object(Mn.b)([n,"close"]);case 32:return r.finish(25);case 33:case"end":return r.stop()}}),zn,this,[[1,22,25,33]])}function Or(e){var t,n,r;return hn.a.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,Object(Mn.f)(J);case 2:t=a.sent,n=0;case 4:if(!(n<t.length)){a.next=11;break}return r=t[n],a.next=8,Object(Mn.b)(Yr,e,r);case 8:n++,a.next=4;break;case 11:case"end":return a.stop()}}),Gn,this)}function Yr(e,t){var n,r,a,i,o,s,c,u,d,l,_,m,p;return hn.a.wrap((function(f){for(;;)switch(f.prev=f.next){case 0:return f.prev=0,f.next=3,Object(Mn.f)(dt,{clientId:t});case 3:return n=f.sent,f.next=6,Object(Mn.f)(Ce,{clientId:t});case 6:return r=f.sent,f.next=9,Object(Mn.b)(Yn.a,e);case 9:return a=f.sent,i=a.moment,f.next=13,Object(Mn.a)([Object(Mn.b)([n,"local"]),Object(Mn.b)([r,"local"]),Object(Mn.b)([i,"local"])]);case 13:return f.next=15,Object(Mn.b)([n,"isSame"],r,"minute");case 15:return o=f.sent,f.next=18,Object(Mn.b)([n,"isSame"],i,"minute");case 18:return s=f.sent,f.next=21,Object(Mn.b)(Yn.e);case 21:if(!(f.sent&&window.tribe.events&&o&&s)){f.next=36;break}return f.next=25,Object(Mn.f)(window.tribe.events.data.blocks.datetime.selectors.getStart);case 25:return c=f.sent,f.next=28,Object(Mn.b)(Yn.a,c);case 28:return u=f.sent,d=u.moment,l=u.date,_=u.dateInput,m=u.time,p=u.timeInput,f.next=36,Object(Mn.a)([Object(Mn.e)(fn.setTicketTempEndDate(t,l)),Object(Mn.e)(fn.setTicketTempEndDateInput(t,_)),Object(Mn.e)(fn.setTicketTempEndDateMoment(t,d)),Object(Mn.e)(fn.setTicketTempEndTime(t,m)),Object(Mn.e)(fn.setTicketTempEndTimeInput(t,p)),Object(Mn.e)(fn.setTicketEndDate(t,l)),Object(Mn.e)(fn.setTicketEndDateInput(t,_)),Object(Mn.e)(fn.setTicketEndDateMoment(t,d)),Object(Mn.e)(fn.setTicketEndTime(t,m)),Object(Mn.e)(fn.setTicketEndTimeInput(t,p)),Object(Mn.e)(fn.setTicketHasChanges(t,!0)),Object(Mn.b)(jr,t)]);case 36:f.next=41;break;case 38:f.prev=38,f.t0=f.catch(0),console.error(f.t0);case 41:case"end":return f.stop()}}),Bn,this,[[0,38]])}function wr(){var e,t,n,r,a,i;return hn.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.prev=0,o.next=3,Object(Mn.b)(Yn.d);case 3:return e=o.sent,o.next=6,Object(Mn.g)(e);case 6:return o.next=8,Object(Mn.b)([e,"close"]);case 8:return o.next=10,Object(Mn.b)(Yn.e);case 10:if(!o.sent||!window.tribe.events){o.next=28;break}t=window.tribe.events.data.blocks.datetime.types,n=t.SET_START_DATE_TIME,r=t.SET_START_TIME,a=void 0;case 14:return o.next=17,Object(Mn.f)(window.tribe.events.data.blocks.datetime.selectors.getStart);case 17:return i=o.sent,o.next=20,Object(Mn.g)([n,r]);case 20:if(!a){o.next=23;break}return o.next=23,Object(Mn.c)(a);case 23:return o.next=25,Object(Mn.d)(Or,i);case 25:a=o.sent,o.next=14;break;case 28:o.next=33;break;case 30:o.prev=30,o.t0=o.catch(0),console.error(o.t0);case 33:case"end":return o.stop()}}),qn,this,[[0,30]])}function jr(e){var t,n,r,a,i,o,s,c,u;return hn.a.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return t=!1,d.next=3,Object(Mn.f)(st,{clientId:e});case 3:return n=d.sent,d.next=6,Object(Mn.f)(dt,{clientId:e});case 6:if(r=d.sent,n&&r){d.next=11;break}t=!0,d.next=33;break;case 11:return d.next=13,Object(Mn.f)(lt,{clientId:e});case 13:return a=d.sent,d.next=16,Object(Mn.f)(mt,{clientId:e});case 16:return i=d.sent,d.next=19,Object(Mn.b)(y.time.toSeconds,a,y.time.TIME_FORMAT_HH_MM_SS);case 19:return o=d.sent,d.next=22,Object(Mn.b)(y.time.toSeconds,i,y.time.TIME_FORMAT_HH_MM_SS);case 22:return s=d.sent,d.next=25,Object(Mn.b)(y.moment.setTimeInSeconds,n.clone(),o);case 25:return c=d.sent,d.next=28,Object(Mn.b)(y.moment.setTimeInSeconds,r.clone(),s);case 28:return u=d.sent,d.next=31,Object(Mn.b)([c,"isSameOrAfter"],u);case 31:d.sent&&(t=!0);case 33:return d.next=35,Object(Mn.e)(fn.setTicketHasDurationError(e,t));case 35:case"end":return d.stop()}}),Jn,this)}function Ir(e){var t,n,r,a,i,o;return hn.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.clientId,r=t.date,a=t.dayPickerInput,s.next=3,r?Object(Mn.b)(y.moment.toMoment,r):void 0;case 3:return i=s.sent,s.next=6,r?Object(Mn.b)(y.moment.toDatabaseDate,i):"";case 6:return o=s.sent,s.next=9,Object(Mn.e)(fn.setTicketTempStartDate(n,o));case 9:return s.next=11,Object(Mn.e)(fn.setTicketTempStartDateInput(n,a.state.value));case 11:return s.next=13,Object(Mn.e)(fn.setTicketTempStartDateMoment(n,i));case 13:case"end":return s.stop()}}),$n,this)}function Pr(e){var t,n,r,a,i,o;return hn.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.clientId,r=t.date,a=t.dayPickerInput,s.next=3,r?Object(Mn.b)(y.moment.toMoment,r):void 0;case 3:return i=s.sent,s.next=6,r?Object(Mn.b)(y.moment.toDatabaseDate,i):"";case 6:return o=s.sent,s.next=9,Object(Mn.e)(fn.setTicketTempEndDate(n,o));case 9:return s.next=11,Object(Mn.e)(fn.setTicketTempEndDateInput(n,a.state.value));case 11:return s.next=13,Object(Mn.e)(fn.setTicketTempEndDateMoment(n,i));case 13:case"end":return s.stop()}}),Zn,this)}function Cr(e){var t,n,r,a;return hn.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.clientId,r=t.seconds,i.next=3,Object(Mn.b)(y.time.fromSeconds,r,y.time.TIME_FORMAT_HH_MM);case 3:return a=i.sent,i.next=6,Object(Mn.e)(fn.setTicketTempStartTime(n,a+":00"));case 6:case"end":return i.stop()}}),Qn,this)}function xr(e){var t,n,r,a,i,o;return hn.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.clientId,r=t.seconds,s.next=3,Object(Mn.b)(y.time.fromSeconds,r,y.time.TIME_FORMAT_HH_MM);case 3:return a=s.sent,s.next=6,Object(Mn.b)(y.moment.toMoment,a,y.moment.TIME_FORMAT,!1);case 6:return i=s.sent,s.next=9,Object(Mn.b)(y.moment.toTime,i);case 9:return o=s.sent,s.next=12,Object(Mn.e)(fn.setTicketTempStartTimeInput(n,o));case 12:case"end":return s.stop()}}),Xn,this)}function Rr(e){var t,n,r,a;return hn.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.clientId,r=t.seconds,i.next=3,Object(Mn.b)(y.time.fromSeconds,r,y.time.TIME_FORMAT_HH_MM);case 3:return a=i.sent,i.next=6,Object(Mn.e)(fn.setTicketTempEndTime(n,a+":00"));case 6:case"end":return i.stop()}}),er,this)}function Ar(e){var t,n,r,a,i,o;return hn.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.clientId,r=t.seconds,s.next=3,Object(Mn.b)(y.time.fromSeconds,r,y.time.TIME_FORMAT_HH_MM);case 3:return a=s.sent,s.next=6,Object(Mn.b)(y.moment.toMoment,a,y.moment.TIME_FORMAT,!1);case 6:return i=s.sent,s.next=9,Object(Mn.b)(y.moment.toTime,i);case 9:return o=s.sent,s.next=12,Object(Mn.e)(fn.setTicketTempEndTimeInput(n,o));case 12:case"end":return s.stop()}}),tr,this)}function Hr(){var e,t;return hn.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,Object(Mn.f)(J);case 2:return e=n.sent,n.next=5,Object(Mn.f)(On.a);case 5:if(t=n.sent,!e.includes(t)){n.next=13;break}return n.next=9,Object(Mn.e)(fn.setTicketIsSelected(t,!1));case 9:return n.next=11,Object(Mn.e)(fn.removeTicketBlock(t));case 11:return n.next=13,Object(Mn.b)([Object(Sn.dispatch)("core/editor"),"removeBlocks"],[t]);case 13:case"end":return n.stop()}}),nr,this)}function Nr(e){return hn.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:t.t0=e.type,t.next=t.t0===f.SET_TICKETS_INITIAL_STATE?3:t.t0===f.RESET_TICKETS_BLOCK?6:t.t0===f.SET_TICKET_INITIAL_STATE?9:t.t0===f.FETCH_TICKET?12:t.t0===f.CREATE_NEW_TICKET?15:t.t0===f.UPDATE_TICKET?18:t.t0===f.DELETE_TICKET?21:t.t0===f.FETCH_TICKETS_HEADER_IMAGE?24:t.t0===f.UPDATE_TICKETS_HEADER_IMAGE?27:t.t0===f.DELETE_TICKETS_HEADER_IMAGE?30:t.t0===f.SET_TICKET_DETAILS?33:t.t0===f.SET_TICKET_TEMP_DETAILS?36:t.t0===f.HANDLE_TICKET_START_DATE?39:t.t0===f.HANDLE_TICKET_END_DATE?46:t.t0===f.HANDLE_TICKET_START_TIME?53:t.t0===f.HANDLE_TICKET_END_TIME?62:t.t0===Ln.k?71:74;break;case 3:return t.next=5,Object(Mn.b)(mr,e);case 5:return t.abrupt("break",75);case 6:return t.next=8,Object(Mn.b)(pr);case 8:return t.abrupt("break",75);case 9:return t.next=11,Object(Mn.b)(fr,e);case 11:return t.abrupt("break",75);case 12:return t.next=14,Object(Mn.b)(yr,e);case 14:return t.abrupt("break",75);case 15:return t.next=17,Object(Mn.b)(br,e);case 17:return t.abrupt("break",75);case 18:return t.next=20,Object(Mn.b)(Mr,e);case 20:return t.abrupt("break",75);case 21:return t.next=23,Object(Mn.b)(Sr,e);case 23:return t.abrupt("break",75);case 24:return t.next=26,Object(Mn.b)(Er,e);case 26:return t.abrupt("break",75);case 27:return t.next=29,Object(Mn.b)(gr,e);case 29:return t.abrupt("break",75);case 30:return t.next=32,Object(Mn.b)(kr);case 32:return t.abrupt("break",75);case 33:return t.next=35,Object(Mn.b)(vr,e);case 35:return t.abrupt("break",75);case 36:return t.next=38,Object(Mn.b)(Dr,e);case 38:return t.abrupt("break",75);case 39:return t.next=41,Object(Mn.b)(Ir,e);case 41:return t.next=43,Object(Mn.b)(jr,e.payload.clientId);case 43:return t.next=45,Object(Mn.e)(fn.setTicketHasChanges(e.payload.clientId,!0));case 45:return t.abrupt("break",75);case 46:return t.next=48,Object(Mn.b)(Pr,e);case 48:return t.next=50,Object(Mn.b)(jr,e.payload.clientId);case 50:return t.next=52,Object(Mn.e)(fn.setTicketHasChanges(e.payload.clientId,!0));case 52:return t.abrupt("break",75);case 53:return t.next=55,Object(Mn.b)(Cr,e);case 55:return t.next=57,Object(Mn.b)(xr,e);case 57:return t.next=59,Object(Mn.b)(jr,e.payload.clientId);case 59:return t.next=61,Object(Mn.e)(fn.setTicketHasChanges(e.payload.clientId,!0));case 61:return t.abrupt("break",75);case 62:return t.next=64,Object(Mn.b)(Rr,e);case 64:return t.next=66,Object(Mn.b)(Ar,e);case 66:return t.next=68,Object(Mn.b)(jr,e.payload.clientId);case 68:return t.next=70,Object(Mn.e)(fn.setTicketHasChanges(e.payload.clientId,!0));case 70:return t.abrupt("break",75);case 71:return t.next=73,Object(Mn.b)(Hr);case 73:case 74:return t.abrupt("break",75);case 75:case"end":return t.stop()}}),rr,this)}function Vr(){return hn.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(Mn.h)([f.SET_TICKETS_INITIAL_STATE,f.RESET_TICKETS_BLOCK,f.SET_TICKET_INITIAL_STATE,f.FETCH_TICKET,f.CREATE_NEW_TICKET,f.UPDATE_TICKET,f.DELETE_TICKET,f.FETCH_TICKETS_HEADER_IMAGE,f.UPDATE_TICKETS_HEADER_IMAGE,f.DELETE_TICKETS_HEADER_IMAGE,f.SET_TICKET_DETAILS,f.SET_TICKET_TEMP_DETAILS,f.HANDLE_TICKET_START_DATE,f.HANDLE_TICKET_END_DATE,f.HANDLE_TICKET_START_TIME,f.HANDLE_TICKET_END_TIME,Ln.k],Nr);case 2:return e.next=4,Object(Mn.d)(wr);case 4:case"end":return e.stop()}}),ar,this)}t.c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:pn,t=arguments[1];switch(t.type){case f.SET_TICKETS_HEADER_IMAGE:return s()({},e,{headerImage:Object(mn.b)(e.headerImage,t)});case f.SET_TICKETS_IS_SELECTED:return s()({},e,{isSelected:t.payload.isSelected});case f.SET_TICKETS_IS_SETTINGS_OPEN:return s()({},e,{isSettingsOpen:t.payload.isSettingsOpen});case f.SET_TICKETS_IS_SETTINGS_LOADING:return s()({},e,{isSettingsLoading:t.payload.isSettingsLoading});case f.SET_TICKETS_PROVIDER:return s()({},e,{provider:t.payload.provider});case f.SET_TICKETS_SHARED_CAPACITY:return s()({},e,{sharedCapacity:t.payload.sharedCapacity});case f.SET_TICKETS_TEMP_SHARED_CAPACITY:return s()({},e,{tempSharedCapacity:t.payload.tempSharedCapacity});case f.SET_TICKET_TITLE:case f.SET_TICKET_DESCRIPTION:case f.SET_TICKET_PRICE:case f.SET_TICKET_SKU:case f.SET_TICKET_IAC_SETTING:case f.SET_TICKET_START_DATE:case f.SET_TICKET_START_DATE_INPUT:case f.SET_TICKET_START_DATE_MOMENT:case f.SET_TICKET_END_DATE:case f.SET_TICKET_END_DATE_INPUT:case f.SET_TICKET_END_DATE_MOMENT:case f.SET_TICKET_START_TIME:case f.SET_TICKET_END_TIME:case f.SET_TICKET_START_TIME_INPUT:case f.SET_TICKET_END_TIME_INPUT:case f.SET_TICKET_CAPACITY_TYPE:case f.SET_TICKET_CAPACITY:case f.SET_TICKET_TEMP_TITLE:case f.SET_TICKET_TEMP_DESCRIPTION:case f.SET_TICKET_TEMP_PRICE:case f.SET_TICKET_TEMP_SKU:case f.SET_TICKET_TEMP_IAC_SETTING:case f.SET_TICKET_TEMP_START_DATE:case f.SET_TICKET_TEMP_START_DATE_INPUT:case f.SET_TICKET_TEMP_START_DATE_MOMENT:case f.SET_TICKET_TEMP_END_DATE:case f.SET_TICKET_TEMP_END_DATE_INPUT:case f.SET_TICKET_TEMP_END_DATE_MOMENT:case f.SET_TICKET_TEMP_START_TIME:case f.SET_TICKET_TEMP_END_TIME:case f.SET_TICKET_TEMP_START_TIME_INPUT:case f.SET_TICKET_TEMP_END_TIME_INPUT:case f.SET_TICKET_TEMP_CAPACITY_TYPE:case f.SET_TICKET_TEMP_CAPACITY:case f.SET_TICKET_SOLD:case f.SET_TICKET_AVAILABLE:case f.SET_TICKET_ID:case f.SET_TICKET_CURRENCY_SYMBOL:case f.SET_TICKET_CURRENCY_POSITION:case f.SET_TICKET_PROVIDER:case f.SET_TICKET_HAS_ATTENDEE_INFO_FIELDS:case f.SET_TICKET_IS_LOADING:case f.SET_TICKET_IS_MODAL_OPEN:case f.SET_TICKET_HAS_BEEN_CREATED:case f.SET_TICKET_HAS_CHANGES:case f.SET_TICKET_HAS_DURATION_ERROR:case f.SET_TICKET_IS_SELECTED:case f.REGISTER_TICKET_BLOCK:case f.REMOVE_TICKET_BLOCK:case f.REMOVE_TICKET_BLOCKS:return s()({},e,{tickets:_n(e.tickets,t)});default:return e}}},function(e,t,n){(function(e){e.exports=function(){"use strict";var t,r;function a(){return t.apply(null,arguments)}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e){return void 0===e}function c(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var n,r=[];for(n=0;n<e.length;++n)r.push(t(e[n],n));return r}function l(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)l(t,n)&&(e[n]=t[n]);return l(t,"toString")&&(e.toString=t.toString),l(t,"valueOf")&&(e.valueOf=t.valueOf),e}function m(e,t,n,r){return gt(e,t,n,r,!0).utc()}function p(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function f(e){if(null==e._isValid){var t=p(e),n=r.call(t.parsedDateParts,(function(e){return null!=e})),a=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(a=a&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return a;e._isValid=a}return e._isValid}function T(e){var t=m(NaN);return null!=e?_(p(t),e):p(t).userInvalidated=!0,t}r=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,r=0;r<n;r++)if(r in t&&e.call(this,t[r],r,t))return!0;return!1};var h=a.momentProperties=[];function y(e,t){var n,r,a;if(s(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),s(t._i)||(e._i=t._i),s(t._f)||(e._f=t._f),s(t._l)||(e._l=t._l),s(t._strict)||(e._strict=t._strict),s(t._tzm)||(e._tzm=t._tzm),s(t._isUTC)||(e._isUTC=t._isUTC),s(t._offset)||(e._offset=t._offset),s(t._pf)||(e._pf=p(t)),s(t._locale)||(e._locale=t._locale),h.length>0)for(n=0;n<h.length;n++)s(a=t[r=h[n]])||(e[r]=a);return e}var b=!1;function M(e){y(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===b&&(b=!0,a.updateOffset(this),b=!1)}function S(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function E(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function g(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=E(t)),n}function k(e,t,n){var r,a=Math.min(e.length,t.length),i=Math.abs(e.length-t.length),o=0;for(r=0;r<a;r++)(n&&e[r]!==t[r]||!n&&g(e[r])!==g(t[r]))&&o++;return o+i}function v(e){!1===a.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function D(e,t){var n=!0;return _((function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,e),n){for(var r,i=[],o=0;o<arguments.length;o++){if(r="","object"==typeof arguments[o]){for(var s in r+="\n["+o+"] ",arguments[0])r+=s+": "+arguments[0][s]+", ";r=r.slice(0,-2)}else r=arguments[o];i.push(r)}v(e+"\nArguments: "+Array.prototype.slice.call(i).join("")+"\n"+(new Error).stack),n=!1}return t.apply(this,arguments)}),t)}var L,O={};function Y(e,t){null!=a.deprecationHandler&&a.deprecationHandler(e,t),O[e]||(v(t),O[e]=!0)}function w(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function j(e,t){var n,r=_({},e);for(n in t)l(t,n)&&(o(e[n])&&o(t[n])?(r[n]={},_(r[n],e[n]),_(r[n],t[n])):null!=t[n]?r[n]=t[n]:delete r[n]);for(n in e)l(e,n)&&!l(t,n)&&o(e[n])&&(r[n]=_({},r[n]));return r}function I(e){null!=e&&this.set(e)}a.suppressDeprecationWarnings=!1,a.deprecationHandler=null,L=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)l(e,t)&&n.push(t);return n};var P={};function C(e,t){var n=e.toLowerCase();P[n]=P[n+"s"]=P[t]=e}function x(e){return"string"==typeof e?P[e]||P[e.toLowerCase()]:void 0}function R(e){var t,n,r={};for(n in e)l(e,n)&&(t=x(n))&&(r[t]=e[n]);return r}var A={};function H(e,t){A[e]=t}function N(e,t,n){var r=""+Math.abs(e),a=t-r.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+r}var V=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,F=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,K={},W={};function U(e,t,n,r){var a=r;"string"==typeof r&&(a=function(){return this[r]()}),e&&(W[e]=a),t&&(W[t[0]]=function(){return N(a.apply(this,arguments),t[1],t[2])}),n&&(W[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),e)})}function z(e,t){return e.isValid()?(t=G(t,e.localeData()),K[t]=K[t]||function(e){var t,n,r,a=e.match(V);for(t=0,n=a.length;t<n;t++)W[a[t]]?a[t]=W[a[t]]:a[t]=(r=a[t]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(t){var r,i="";for(r=0;r<n;r++)i+=w(a[r])?a[r].call(t,e):a[r];return i}}(t),K[t](e)):e.localeData().invalidDate()}function G(e,t){var n=5;function r(e){return t.longDateFormat(e)||e}for(F.lastIndex=0;n>=0&&F.test(e);)e=e.replace(F,r),F.lastIndex=0,n-=1;return e}var B=/\d/,q=/\d\d/,J=/\d{3}/,$=/\d{4}/,Z=/[+-]?\d{6}/,Q=/\d\d?/,X=/\d\d\d\d?/,ee=/\d\d\d\d\d\d?/,te=/\d{1,3}/,ne=/\d{1,4}/,re=/[+-]?\d{1,6}/,ae=/\d+/,ie=/[+-]?\d+/,oe=/Z|[+-]\d\d:?\d\d/gi,se=/Z|[+-]\d\d(?::?\d\d)?/gi,ce=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ue={};function de(e,t,n){ue[e]=w(t)?t:function(e,r){return e&&n?n:t}}function le(e,t){return l(ue,e)?ue[e](t._strict,t._locale):new RegExp(_e(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,n,r,a){return t||n||r||a}))))}function _e(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var me={};function pe(e,t){var n,r=t;for("string"==typeof e&&(e=[e]),c(t)&&(r=function(e,n){n[t]=g(e)}),n=0;n<e.length;n++)me[e[n]]=r}function fe(e,t){pe(e,(function(e,n,r,a){r._w=r._w||{},t(e,r._w,r,a)}))}function Te(e,t,n){null!=t&&l(me,e)&&me[e](t,n._a,n,e)}function he(e){return ye(e)?366:365}function ye(e){return e%4==0&&e%100!=0||e%400==0}U("Y",0,0,(function(){var e=this.year();return e<=9999?""+e:"+"+e})),U(0,["YY",2],0,(function(){return this.year()%100})),U(0,["YYYY",4],0,"year"),U(0,["YYYYY",5],0,"year"),U(0,["YYYYYY",6,!0],0,"year"),C("year","y"),H("year",1),de("Y",ie),de("YY",Q,q),de("YYYY",ne,$),de("YYYYY",re,Z),de("YYYYYY",re,Z),pe(["YYYYY","YYYYYY"],0),pe("YYYY",(function(e,t){t[0]=2===e.length?a.parseTwoDigitYear(e):g(e)})),pe("YY",(function(e,t){t[0]=a.parseTwoDigitYear(e)})),pe("Y",(function(e,t){t[0]=parseInt(e,10)})),a.parseTwoDigitYear=function(e){return g(e)+(g(e)>68?1900:2e3)};var be,Me=Se("FullYear",!0);function Se(e,t){return function(n){return null!=n?(ge(this,e,n),a.updateOffset(this,t),this):Ee(this,e)}}function Ee(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function ge(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ye(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),ke(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function ke(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,r=(t%(n=12)+n)%n;return e+=(t-r)/12,1===r?ye(e)?29:28:31-r%7%2}be=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},U("M",["MM",2],"Mo",(function(){return this.month()+1})),U("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),U("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),C("month","M"),H("month",8),de("M",Q),de("MM",Q,q),de("MMM",(function(e,t){return t.monthsShortRegex(e)})),de("MMMM",(function(e,t){return t.monthsRegex(e)})),pe(["M","MM"],(function(e,t){t[1]=g(e)-1})),pe(["MMM","MMMM"],(function(e,t,n,r){var a=n._locale.monthsParse(e,r,n._strict);null!=a?t[1]=a:p(n).invalidMonth=e}));var ve=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,De="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Le="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Oe(e,t,n){var r,a,i,o=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)i=m([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(a=be.call(this._shortMonthsParse,o))?a:null:-1!==(a=be.call(this._longMonthsParse,o))?a:null:"MMM"===t?-1!==(a=be.call(this._shortMonthsParse,o))||-1!==(a=be.call(this._longMonthsParse,o))?a:null:-1!==(a=be.call(this._longMonthsParse,o))||-1!==(a=be.call(this._shortMonthsParse,o))?a:null}function Ye(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=g(t);else if(!c(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),ke(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function we(e){return null!=e?(Ye(this,e),a.updateOffset(this,!0),this):Ee(this,"Month")}var je=ce,Ie=ce;function Pe(){function e(e,t){return t.length-e.length}var t,n,r=[],a=[],i=[];for(t=0;t<12;t++)n=m([2e3,t]),r.push(this.monthsShort(n,"")),a.push(this.months(n,"")),i.push(this.months(n,"")),i.push(this.monthsShort(n,""));for(r.sort(e),a.sort(e),i.sort(e),t=0;t<12;t++)r[t]=_e(r[t]),a[t]=_e(a[t]);for(t=0;t<24;t++)i[t]=_e(i[t]);this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Ce(e,t,n,r,a,i,o){var s=new Date(e,t,n,r,a,i,o);return e<100&&e>=0&&isFinite(s.getFullYear())&&s.setFullYear(e),s}function xe(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&e>=0&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function Re(e,t,n){var r=7+t-n;return-(7+xe(e,0,r).getUTCDay()-t)%7+r-1}function Ae(e,t,n,r,a){var i,o,s=1+7*(t-1)+(7+n-r)%7+Re(e,r,a);return s<=0?o=he(i=e-1)+s:s>he(e)?(i=e+1,o=s-he(e)):(i=e,o=s),{year:i,dayOfYear:o}}function He(e,t,n){var r,a,i=Re(e.year(),t,n),o=Math.floor((e.dayOfYear()-i-1)/7)+1;return o<1?r=o+Ne(a=e.year()-1,t,n):o>Ne(e.year(),t,n)?(r=o-Ne(e.year(),t,n),a=e.year()+1):(a=e.year(),r=o),{week:r,year:a}}function Ne(e,t,n){var r=Re(e,t,n),a=Re(e+1,t,n);return(he(e)-r+a)/7}U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),C("week","w"),C("isoWeek","W"),H("week",5),H("isoWeek",5),de("w",Q),de("ww",Q,q),de("W",Q),de("WW",Q,q),fe(["w","ww","W","WW"],(function(e,t,n,r){t[r.substr(0,1)]=g(e)})),U("d",0,"do","day"),U("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),U("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),U("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),C("day","d"),C("weekday","e"),C("isoWeekday","E"),H("day",11),H("weekday",11),H("isoWeekday",11),de("d",Q),de("e",Q),de("E",Q),de("dd",(function(e,t){return t.weekdaysMinRegex(e)})),de("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),de("dddd",(function(e,t){return t.weekdaysRegex(e)})),fe(["dd","ddd","dddd"],(function(e,t,n,r){var a=n._locale.weekdaysParse(e,r,n._strict);null!=a?t.d=a:p(n).invalidWeekday=e})),fe(["d","e","E"],(function(e,t,n,r){t[r]=g(e)}));var Ve="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Fe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ke="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function We(e,t,n){var r,a,i,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)i=m([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(i,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(a=be.call(this._weekdaysParse,o))?a:null:"ddd"===t?-1!==(a=be.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=be.call(this._minWeekdaysParse,o))?a:null:"dddd"===t?-1!==(a=be.call(this._weekdaysParse,o))||-1!==(a=be.call(this._shortWeekdaysParse,o))||-1!==(a=be.call(this._minWeekdaysParse,o))?a:null:"ddd"===t?-1!==(a=be.call(this._shortWeekdaysParse,o))||-1!==(a=be.call(this._weekdaysParse,o))||-1!==(a=be.call(this._minWeekdaysParse,o))?a:null:-1!==(a=be.call(this._minWeekdaysParse,o))||-1!==(a=be.call(this._weekdaysParse,o))||-1!==(a=be.call(this._shortWeekdaysParse,o))?a:null}var Ue=ce,ze=ce,Ge=ce;function Be(){function e(e,t){return t.length-e.length}var t,n,r,a,i,o=[],s=[],c=[],u=[];for(t=0;t<7;t++)n=m([2e3,1]).day(t),r=this.weekdaysMin(n,""),a=this.weekdaysShort(n,""),i=this.weekdays(n,""),o.push(r),s.push(a),c.push(i),u.push(r),u.push(a),u.push(i);for(o.sort(e),s.sort(e),c.sort(e),u.sort(e),t=0;t<7;t++)s[t]=_e(s[t]),c[t]=_e(c[t]),u[t]=_e(u[t]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function qe(){return this.hours()%12||12}function Je(e,t){U(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function $e(e,t){return t._meridiemParse}U("H",["HH",2],0,"hour"),U("h",["hh",2],0,qe),U("k",["kk",2],0,(function(){return this.hours()||24})),U("hmm",0,0,(function(){return""+qe.apply(this)+N(this.minutes(),2)})),U("hmmss",0,0,(function(){return""+qe.apply(this)+N(this.minutes(),2)+N(this.seconds(),2)})),U("Hmm",0,0,(function(){return""+this.hours()+N(this.minutes(),2)})),U("Hmmss",0,0,(function(){return""+this.hours()+N(this.minutes(),2)+N(this.seconds(),2)})),Je("a",!0),Je("A",!1),C("hour","h"),H("hour",13),de("a",$e),de("A",$e),de("H",Q),de("h",Q),de("k",Q),de("HH",Q,q),de("hh",Q,q),de("kk",Q,q),de("hmm",X),de("hmmss",ee),de("Hmm",X),de("Hmmss",ee),pe(["H","HH"],3),pe(["k","kk"],(function(e,t,n){var r=g(e);t[3]=24===r?0:r})),pe(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),pe(["h","hh"],(function(e,t,n){t[3]=g(e),p(n).bigHour=!0})),pe("hmm",(function(e,t,n){var r=e.length-2;t[3]=g(e.substr(0,r)),t[4]=g(e.substr(r)),p(n).bigHour=!0})),pe("hmmss",(function(e,t,n){var r=e.length-4,a=e.length-2;t[3]=g(e.substr(0,r)),t[4]=g(e.substr(r,2)),t[5]=g(e.substr(a)),p(n).bigHour=!0})),pe("Hmm",(function(e,t,n){var r=e.length-2;t[3]=g(e.substr(0,r)),t[4]=g(e.substr(r))})),pe("Hmmss",(function(e,t,n){var r=e.length-4,a=e.length-2;t[3]=g(e.substr(0,r)),t[4]=g(e.substr(r,2)),t[5]=g(e.substr(a))}));var Ze,Qe=Se("Hours",!0),Xe={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:De,monthsShort:Le,week:{dow:0,doy:6},weekdays:Ve,weekdaysMin:Ke,weekdaysShort:Fe,meridiemParse:/[ap]\.?m?\.?/i},et={},tt={};function nt(e){return e?e.toLowerCase().replace("_","-"):e}function rt(t){var r=null;if(!et[t]&&void 0!==e&&e&&e.exports)try{r=Ze._abbr,n(276)("./"+t),at(r)}catch(e){}return et[t]}function at(e,t){var n;return e&&(n=s(t)?ot(e):it(e,t))&&(Ze=n),Ze._abbr}function it(e,t){if(null!==t){var n=Xe;if(t.abbr=e,null!=et[e])Y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=et[e]._config;else if(null!=t.parentLocale){if(null==et[t.parentLocale])return tt[t.parentLocale]||(tt[t.parentLocale]=[]),tt[t.parentLocale].push({name:e,config:t}),null;n=et[t.parentLocale]._config}return et[e]=new I(j(n,t)),tt[e]&&tt[e].forEach((function(e){it(e.name,e.config)})),at(e),et[e]}return delete et[e],null}function ot(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Ze;if(!i(e)){if(t=rt(e))return t;e=[e]}return function(e){for(var t,n,r,a,i=0;i<e.length;){for(t=(a=nt(e[i]).split("-")).length,n=(n=nt(e[i+1]))?n.split("-"):null;t>0;){if(r=rt(a.slice(0,t).join("-")))return r;if(n&&n.length>=t&&k(a,n,!0)>=t-1)break;t--}i++}return null}(e)}function st(e){var t,n=e._a;return n&&-2===p(e).overflow&&(t=n[1]<0||n[1]>11?1:n[2]<1||n[2]>ke(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,p(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),p(e)._overflowWeeks&&-1===t&&(t=7),p(e)._overflowWeekday&&-1===t&&(t=8),p(e).overflow=t),e}function ct(e,t,n){return null!=e?e:null!=t?t:n}function ut(e){var t,n,r,i,o=[];if(!e._d){for(r=function(e){var t=new Date(a.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[2]&&null==e._a[1]&&function(e){var t,n,r,a,i,o,s,c;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)i=1,o=4,n=ct(t.GG,e._a[0],He(kt(),1,4).year),r=ct(t.W,1),((a=ct(t.E,1))<1||a>7)&&(c=!0);else{i=e._locale._week.dow,o=e._locale._week.doy;var u=He(kt(),i,o);n=ct(t.gg,e._a[0],u.year),r=ct(t.w,u.week),null!=t.d?((a=t.d)<0||a>6)&&(c=!0):null!=t.e?(a=t.e+i,(t.e<0||t.e>6)&&(c=!0)):a=i}r<1||r>Ne(n,i,o)?p(e)._overflowWeeks=!0:null!=c?p(e)._overflowWeekday=!0:(s=Ae(n,r,a,i,o),e._a[0]=s.year,e._dayOfYear=s.dayOfYear)}(e),null!=e._dayOfYear&&(i=ct(e._a[0],r[0]),(e._dayOfYear>he(i)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),n=xe(i,0,e._dayOfYear),e._a[1]=n.getUTCMonth(),e._a[2]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=o[t]=r[t];for(;t<7;t++)e._a[t]=o[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?xe:Ce).apply(null,o),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==e._d.getDay()&&(p(e).weekdayMismatch=!0)}}var dt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,lt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/Z|[+-]\d\d(?::?\d\d)?/,mt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],pt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ft=/^\/?Date\((\-?\d+)/i;function Tt(e){var t,n,r,a,i,o,s=e._i,c=dt.exec(s)||lt.exec(s);if(c){for(p(e).iso=!0,t=0,n=mt.length;t<n;t++)if(mt[t][1].exec(c[1])){a=mt[t][0],r=!1!==mt[t][2];break}if(null==a)return void(e._isValid=!1);if(c[3]){for(t=0,n=pt.length;t<n;t++)if(pt[t][1].exec(c[3])){i=(c[2]||" ")+pt[t][0];break}if(null==i)return void(e._isValid=!1)}if(!r&&null!=i)return void(e._isValid=!1);if(c[4]){if(!_t.exec(c[4]))return void(e._isValid=!1);o="Z"}e._f=a+(i||"")+(o||""),St(e)}else e._isValid=!1}var ht=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function yt(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}var bt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Mt(e){var t,n,r,a,i,o,s,c=ht.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(c){var u=(t=c[4],n=c[3],r=c[2],a=c[5],i=c[6],o=c[7],s=[yt(t),Le.indexOf(n),parseInt(r,10),parseInt(a,10),parseInt(i,10)],o&&s.push(parseInt(o,10)),s);if(!function(e,t,n){return!e||Fe.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(p(n).weekdayMismatch=!0,n._isValid=!1,!1)}(c[1],u,e))return;e._a=u,e._tzm=function(e,t,n){if(e)return bt[e];if(t)return 0;var r=parseInt(n,10),a=r%100;return(r-a)/100*60+a}(c[8],c[9],c[10]),e._d=xe.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),p(e).rfc2822=!0}else e._isValid=!1}function St(e){if(e._f!==a.ISO_8601)if(e._f!==a.RFC_2822){e._a=[],p(e).empty=!0;var t,n,r,i,o,s=""+e._i,c=s.length,u=0;for(r=G(e._f,e._locale).match(V)||[],t=0;t<r.length;t++)i=r[t],(n=(s.match(le(i,e))||[])[0])&&((o=s.substr(0,s.indexOf(n))).length>0&&p(e).unusedInput.push(o),s=s.slice(s.indexOf(n)+n.length),u+=n.length),W[i]?(n?p(e).empty=!1:p(e).unusedTokens.push(i),Te(i,n,e)):e._strict&&!n&&p(e).unusedTokens.push(i);p(e).charsLeftOver=c-u,s.length>0&&p(e).unusedInput.push(s),e._a[3]<=12&&!0===p(e).bigHour&&e._a[3]>0&&(p(e).bigHour=void 0),p(e).parsedDateParts=e._a.slice(0),p(e).meridiem=e._meridiem,e._a[3]=function(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}(e._locale,e._a[3],e._meridiem),ut(e),st(e)}else Mt(e);else Tt(e)}function Et(e){var t=e._i,n=e._f;return e._locale=e._locale||ot(e._l),null===t||void 0===n&&""===t?T({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),S(t)?new M(st(t)):(u(t)?e._d=t:i(n)?function(e){var t,n,r,a,i;if(0===e._f.length)return p(e).invalidFormat=!0,void(e._d=new Date(NaN));for(a=0;a<e._f.length;a++)i=0,t=y({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[a],St(t),f(t)&&(i+=p(t).charsLeftOver,i+=10*p(t).unusedTokens.length,p(t).score=i,(null==r||i<r)&&(r=i,n=t));_(e,n||t)}(e):n?St(e):function(e){var t=e._i;s(t)?e._d=new Date(a.now()):u(t)?e._d=new Date(t.valueOf()):"string"==typeof t?function(e){var t=ft.exec(e._i);null===t?(Tt(e),!1===e._isValid&&(delete e._isValid,Mt(e),!1===e._isValid&&(delete e._isValid,a.createFromInputFallback(e)))):e._d=new Date(+t[1])}(e):i(t)?(e._a=d(t.slice(0),(function(e){return parseInt(e,10)})),ut(e)):o(t)?function(e){if(!e._d){var t=R(e._i);e._a=d([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),ut(e)}}(e):c(t)?e._d=new Date(t):a.createFromInputFallback(e)}(e),f(e)||(e._d=null),e))}function gt(e,t,n,r,a){var s,c={};return!0!==n&&!1!==n||(r=n,n=void 0),(o(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||i(e)&&0===e.length)&&(e=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=a,c._l=n,c._i=e,c._f=t,c._strict=r,(s=new M(st(Et(c))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function kt(e,t,n,r){return gt(e,t,n,r,!1)}a.createFromInputFallback=D("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))})),a.ISO_8601=function(){},a.RFC_2822=function(){};var vt=D("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=kt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:T()})),Dt=D("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=kt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:T()}));function Lt(e,t){var n,r;if(1===t.length&&i(t[0])&&(t=t[0]),!t.length)return kt();for(n=t[0],r=1;r<t.length;++r)t[r].isValid()&&!t[r][e](n)||(n=t[r]);return n}var Ot=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Yt(e){var t=R(e),n=t.year||0,r=t.quarter||0,a=t.month||0,i=t.week||0,o=t.day||0,s=t.hour||0,c=t.minute||0,u=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===be.call(Ot,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,r=0;r<Ot.length;++r)if(e[Ot[r]]){if(n)return!1;parseFloat(e[Ot[r]])!==g(e[Ot[r]])&&(n=!0)}return!0}(t),this._milliseconds=+d+1e3*u+6e4*c+1e3*s*60*60,this._days=+o+7*i,this._months=+a+3*r+12*n,this._data={},this._locale=ot(),this._bubble()}function wt(e){return e instanceof Yt}function jt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function It(e,t){U(e,0,0,(function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+N(~~(e/60),2)+t+N(~~e%60,2)}))}It("Z",":"),It("ZZ",""),de("Z",se),de("ZZ",se),pe(["Z","ZZ"],(function(e,t,n){n._useUTC=!0,n._tzm=Ct(se,e)}));var Pt=/([\+\-]|\d\d)/gi;function Ct(e,t){var n=(t||"").match(e);if(null===n)return null;var r=((n[n.length-1]||[])+"").match(Pt)||["-",0,0],a=60*r[1]+g(r[2]);return 0===a?0:"+"===r[0]?a:-a}function xt(e,t){var n,r;return t._isUTC?(n=t.clone(),r=(S(e)||u(e)?e.valueOf():kt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+r),a.updateOffset(n,!1),n):kt(e).local()}function Rt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function At(){return!!this.isValid()&&this._isUTC&&0===this._offset}a.updateOffset=function(){};var Ht=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Nt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Vt(e,t){var n,r,a,i,o,s,u=e,d=null;return wt(e)?u={ms:e._milliseconds,d:e._days,M:e._months}:c(e)?(u={},t?u[t]=e:u.milliseconds=e):(d=Ht.exec(e))?(n="-"===d[1]?-1:1,u={y:0,d:g(d[2])*n,h:g(d[3])*n,m:g(d[4])*n,s:g(d[5])*n,ms:g(jt(1e3*d[6]))*n}):(d=Nt.exec(e))?(n="-"===d[1]?-1:(d[1],1),u={y:Ft(d[2],n),M:Ft(d[3],n),w:Ft(d[4],n),d:Ft(d[5],n),h:Ft(d[6],n),m:Ft(d[7],n),s:Ft(d[8],n)}):null==u?u={}:"object"==typeof u&&("from"in u||"to"in u)&&(i=kt(u.from),o=kt(u.to),a=i.isValid()&&o.isValid()?(o=xt(o,i),i.isBefore(o)?s=Kt(i,o):((s=Kt(o,i)).milliseconds=-s.milliseconds,s.months=-s.months),s):{milliseconds:0,months:0},(u={}).ms=a.milliseconds,u.M=a.months),r=new Yt(u),wt(e)&&l(e,"_locale")&&(r._locale=e._locale),r}function Ft(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Kt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Wt(e,t){return function(n,r){var a;return null===r||isNaN(+r)||(Y(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),a=n,n=r,r=a),Ut(this,Vt(n="string"==typeof n?+n:n,r),e),this}}function Ut(e,t,n,r){var i=t._milliseconds,o=jt(t._days),s=jt(t._months);e.isValid()&&(r=null==r||r,s&&Ye(e,Ee(e,"Month")+s*n),o&&ge(e,"Date",Ee(e,"Date")+o*n),i&&e._d.setTime(e._d.valueOf()+i*n),r&&a.updateOffset(e,o||s))}Vt.fn=Yt.prototype,Vt.invalid=function(){return Vt(NaN)};var zt=Wt(1,"add"),Gt=Wt(-1,"subtract");function Bt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,"months");return-(n+(t-r<0?(t-r)/(r-e.clone().add(n-1,"months")):(t-r)/(e.clone().add(n+1,"months")-r)))||0}function qt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ot(e))&&(this._locale=t),this)}a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Jt=D("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function $t(){return this._locale}function Zt(e,t){U(0,[e,e.length],0,t)}function Qt(e,t,n,r,a){var i;return null==e?He(this,r,a).year:(t>(i=Ne(e,r,a))&&(t=i),Xt.call(this,e,t,n,r,a))}function Xt(e,t,n,r,a){var i=Ae(e,t,n,r,a),o=xe(i.year,0,i.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}U(0,["gg",2],0,(function(){return this.weekYear()%100})),U(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Zt("gggg","weekYear"),Zt("ggggg","weekYear"),Zt("GGGG","isoWeekYear"),Zt("GGGGG","isoWeekYear"),C("weekYear","gg"),C("isoWeekYear","GG"),H("weekYear",1),H("isoWeekYear",1),de("G",ie),de("g",ie),de("GG",Q,q),de("gg",Q,q),de("GGGG",ne,$),de("gggg",ne,$),de("GGGGG",re,Z),de("ggggg",re,Z),fe(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,r){t[r.substr(0,2)]=g(e)})),fe(["gg","GG"],(function(e,t,n,r){t[r]=a.parseTwoDigitYear(e)})),U("Q",0,"Qo","quarter"),C("quarter","Q"),H("quarter",7),de("Q",B),pe("Q",(function(e,t){t[1]=3*(g(e)-1)})),U("D",["DD",2],"Do","date"),C("date","D"),H("date",9),de("D",Q),de("DD",Q,q),de("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),pe(["D","DD"],2),pe("Do",(function(e,t){t[2]=g(e.match(Q)[0])}));var en=Se("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),C("dayOfYear","DDD"),H("dayOfYear",4),de("DDD",te),de("DDDD",J),pe(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=g(e)})),U("m",["mm",2],0,"minute"),C("minute","m"),H("minute",14),de("m",Q),de("mm",Q,q),pe(["m","mm"],4);var tn=Se("Minutes",!1);U("s",["ss",2],0,"second"),C("second","s"),H("second",15),de("s",Q),de("ss",Q,q),pe(["s","ss"],5);var nn,rn=Se("Seconds",!1);for(U("S",0,0,(function(){return~~(this.millisecond()/100)})),U(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),U(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),U(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),U(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),U(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),U(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),C("millisecond","ms"),H("millisecond",16),de("S",te,B),de("SS",te,q),de("SSS",te,J),nn="SSSS";nn.length<=9;nn+="S")de(nn,ae);function an(e,t){t[6]=g(1e3*("0."+e))}for(nn="S";nn.length<=9;nn+="S")pe(nn,an);var on=Se("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var sn=M.prototype;function cn(e){return e}sn.add=zt,sn.calendar=function(e,t){var n=e||kt(),r=xt(n,this).startOf("day"),i=a.calendarFormat(this,r)||"sameElse",o=t&&(w(t[i])?t[i].call(this,n):t[i]);return this.format(o||this.localeData().calendar(i,this,kt(n)))},sn.clone=function(){return new M(this)},sn.diff=function(e,t,n){var r,a,i;if(!this.isValid())return NaN;if(!(r=xt(e,this)).isValid())return NaN;switch(a=6e4*(r.utcOffset()-this.utcOffset()),t=x(t)){case"year":i=Bt(this,r)/12;break;case"month":i=Bt(this,r);break;case"quarter":i=Bt(this,r)/3;break;case"second":i=(this-r)/1e3;break;case"minute":i=(this-r)/6e4;break;case"hour":i=(this-r)/36e5;break;case"day":i=(this-r-a)/864e5;break;case"week":i=(this-r-a)/6048e5;break;default:i=this-r}return n?i:E(i)},sn.endOf=function(e){return void 0===(e=x(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},sn.format=function(e){e||(e=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var t=z(this,e);return this.localeData().postformat(t)},sn.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||kt(e).isValid())?Vt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},sn.fromNow=function(e){return this.from(kt(),e)},sn.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||kt(e).isValid())?Vt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},sn.toNow=function(e){return this.to(kt(),e)},sn.get=function(e){return w(this[e=x(e)])?this[e]():this},sn.invalidAt=function(){return p(this).overflow},sn.isAfter=function(e,t){var n=S(e)?e:kt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=x(s(t)?"millisecond":t))?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},sn.isBefore=function(e,t){var n=S(e)?e:kt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=x(s(t)?"millisecond":t))?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},sn.isBetween=function(e,t,n,r){return("("===(r=r||"()")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===r[1]?this.isBefore(t,n):!this.isAfter(t,n))},sn.isSame=function(e,t){var n,r=S(e)?e:kt(e);return!(!this.isValid()||!r.isValid())&&("millisecond"===(t=x(t||"millisecond"))?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},sn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},sn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},sn.isValid=function(){return f(this)},sn.lang=Jt,sn.locale=qt,sn.localeData=$t,sn.max=Dt,sn.min=vt,sn.parsingFlags=function(){return _({},p(this))},sn.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:A[n]});return t.sort((function(e,t){return e.priority-t.priority})),t}(e=R(e)),r=0;r<n.length;r++)this[n[r].unit](e[n[r].unit]);else if(w(this[e=x(e)]))return this[e](t);return this},sn.startOf=function(e){switch(e=x(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},sn.subtract=Gt,sn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},sn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},sn.toDate=function(){return new Date(this.valueOf())},sn.toISOString=function(){if(!this.isValid())return null;var e=this.clone().utc();return e.year()<0||e.year()>9999?z(e,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):w(Date.prototype.toISOString)?this.toDate().toISOString():z(e,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},sn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a=t+'[")]';return this.format(n+r+"-MM-DD[T]HH:mm:ss.SSS"+a)},sn.toJSON=function(){return this.isValid()?this.toISOString():null},sn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},sn.unix=function(){return Math.floor(this.valueOf()/1e3)},sn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},sn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},sn.year=Me,sn.isLeapYear=function(){return ye(this.year())},sn.weekYear=function(e){return Qt.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},sn.isoWeekYear=function(e){return Qt.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},sn.quarter=sn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},sn.month=we,sn.daysInMonth=function(){return ke(this.year(),this.month())},sn.week=sn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},sn.isoWeek=sn.isoWeeks=function(e){var t=He(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},sn.weeksInYear=function(){var e=this.localeData()._week;return Ne(this.year(),e.dow,e.doy)},sn.isoWeeksInYear=function(){return Ne(this.year(),1,4)},sn.date=en,sn.day=sn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},sn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},sn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},sn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},sn.hour=sn.hours=Qe,sn.minute=sn.minutes=tn,sn.second=sn.seconds=rn,sn.millisecond=sn.milliseconds=on,sn.utcOffset=function(e,t,n){var r,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Ct(se,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(r=Rt(this)),this._offset=e,this._isUTC=!0,null!=r&&this.add(r,"m"),i!==e&&(!t||this._changeInProgress?Ut(this,Vt(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Rt(this)},sn.utc=function(e){return this.utcOffset(0,e)},sn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Rt(this),"m")),this},sn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Ct(oe,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},sn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?kt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},sn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},sn.isLocal=function(){return!!this.isValid()&&!this._isUTC},sn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},sn.isUtc=At,sn.isUTC=At,sn.zoneAbbr=function(){return this._isUTC?"UTC":""},sn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},sn.dates=D("dates accessor is deprecated. Use date instead.",en),sn.months=D("months accessor is deprecated. Use month instead",we),sn.years=D("years accessor is deprecated. Use year instead",Me),sn.zone=D("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),sn.isDSTShifted=D("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var e={};if(y(e,this),(e=Et(e))._a){var t=e._isUTC?m(e._a):kt(e._a);this._isDSTShifted=this.isValid()&&k(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var un=I.prototype;function dn(e,t,n,r){var a=ot(),i=m().set(r,t);return a[n](i,e)}function ln(e,t,n){if(c(e)&&(t=e,e=void 0),e=e||"",null!=t)return dn(e,t,n,"month");var r,a=[];for(r=0;r<12;r++)a[r]=dn(e,r,n,"month");return a}function _n(e,t,n,r){"boolean"==typeof e?(c(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,c(t)&&(n=t,t=void 0),t=t||"");var a,i=ot(),o=e?i._week.dow:0;if(null!=n)return dn(t,(n+o)%7,r,"day");var s=[];for(a=0;a<7;a++)s[a]=dn(t,(a+o)%7,r,"day");return s}un.calendar=function(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return w(r)?r.call(t,n):r},un.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,(function(e){return e.slice(1)})),this._longDateFormat[e])},un.invalidDate=function(){return this._invalidDate},un.ordinal=function(e){return this._ordinal.replace("%d",e)},un.preparse=cn,un.postformat=cn,un.relativeTime=function(e,t,n,r){var a=this._relativeTime[n];return w(a)?a(e,t,n,r):a.replace(/%d/i,e)},un.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return w(n)?n(t):n.replace(/%s/i,t)},un.set=function(e){var t,n;for(n in e)w(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},un.months=function(e,t){return e?i(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||ve).test(t)?"format":"standalone"][e.month()]:i(this._months)?this._months:this._months.standalone},un.monthsShort=function(e,t){return e?i(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[ve.test(t)?"format":"standalone"][e.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},un.monthsParse=function(e,t,n){var r,a,i;if(this._monthsParseExact)return Oe.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(a=m([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(a,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(a,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(i="^"+this.months(a,"")+"|^"+this.monthsShort(a,""),this._monthsParse[r]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[r].test(e))return r;if(n&&"MMM"===t&&this._shortMonthsParse[r].test(e))return r;if(!n&&this._monthsParse[r].test(e))return r}},un.monthsRegex=function(e){return this._monthsParseExact?(l(this,"_monthsRegex")||Pe.call(this),e?this._monthsStrictRegex:this._monthsRegex):(l(this,"_monthsRegex")||(this._monthsRegex=Ie),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},un.monthsShortRegex=function(e){return this._monthsParseExact?(l(this,"_monthsRegex")||Pe.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(l(this,"_monthsShortRegex")||(this._monthsShortRegex=je),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},un.week=function(e){return He(e,this._week.dow,this._week.doy).week},un.firstDayOfYear=function(){return this._week.doy},un.firstDayOfWeek=function(){return this._week.dow},un.weekdays=function(e,t){return e?i(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:i(this._weekdays)?this._weekdays:this._weekdays.standalone},un.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},un.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},un.weekdaysParse=function(e,t,n){var r,a,i;if(this._weekdaysParseExact)return We.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(a=m([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(a,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(a,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(a,"").replace(".",".?")+"$","i")),this._weekdaysParse[r]||(i="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[r]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}},un.weekdaysRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=Ue),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},un.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ze),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},un.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ge),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},un.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},un.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},at("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===g(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),a.lang=D("moment.lang is deprecated. Use moment.locale instead.",at),a.langData=D("moment.langData is deprecated. Use moment.localeData instead.",ot);var mn=Math.abs;function pn(e,t,n,r){var a=Vt(t,n);return e._milliseconds+=r*a._milliseconds,e._days+=r*a._days,e._months+=r*a._months,e._bubble()}function fn(e){return e<0?Math.floor(e):Math.ceil(e)}function Tn(e){return 4800*e/146097}function hn(e){return 146097*e/4800}function yn(e){return function(){return this.as(e)}}var bn=yn("ms"),Mn=yn("s"),Sn=yn("m"),En=yn("h"),gn=yn("d"),kn=yn("w"),vn=yn("M"),Dn=yn("y");function Ln(e){return function(){return this.isValid()?this._data[e]:NaN}}var On=Ln("milliseconds"),Yn=Ln("seconds"),wn=Ln("minutes"),jn=Ln("hours"),In=Ln("days"),Pn=Ln("months"),Cn=Ln("years"),xn=Math.round,Rn={ss:44,s:45,m:45,h:22,d:26,M:11};function An(e,t,n,r,a){return a.relativeTime(t||1,!!n,e,r)}var Hn=Math.abs;function Nn(e){return(e>0)-(e<0)||+e}function Vn(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Hn(this._milliseconds)/1e3,r=Hn(this._days),a=Hn(this._months);e=E(n/60),t=E(e/60),n%=60,e%=60;var i=E(a/12),o=a%=12,s=r,c=t,u=e,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",l=this.asSeconds();if(!l)return"P0D";var _=l<0?"-":"",m=Nn(this._months)!==Nn(l)?"-":"",p=Nn(this._days)!==Nn(l)?"-":"",f=Nn(this._milliseconds)!==Nn(l)?"-":"";return _+"P"+(i?m+i+"Y":"")+(o?m+o+"M":"")+(s?p+s+"D":"")+(c||u||d?"T":"")+(c?f+c+"H":"")+(u?f+u+"M":"")+(d?f+d+"S":"")}var Fn=Yt.prototype;return Fn.isValid=function(){return this._isValid},Fn.abs=function(){var e=this._data;return this._milliseconds=mn(this._milliseconds),this._days=mn(this._days),this._months=mn(this._months),e.milliseconds=mn(e.milliseconds),e.seconds=mn(e.seconds),e.minutes=mn(e.minutes),e.hours=mn(e.hours),e.months=mn(e.months),e.years=mn(e.years),this},Fn.add=function(e,t){return pn(this,e,t,1)},Fn.subtract=function(e,t){return pn(this,e,t,-1)},Fn.as=function(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=x(e))||"year"===e)return t=this._days+r/864e5,n=this._months+Tn(t),"month"===e?n:n/12;switch(t=this._days+Math.round(hn(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}},Fn.asMilliseconds=bn,Fn.asSeconds=Mn,Fn.asMinutes=Sn,Fn.asHours=En,Fn.asDays=gn,Fn.asWeeks=kn,Fn.asMonths=vn,Fn.asYears=Dn,Fn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12):NaN},Fn._bubble=function(){var e,t,n,r,a,i=this._milliseconds,o=this._days,s=this._months,c=this._data;return i>=0&&o>=0&&s>=0||i<=0&&o<=0&&s<=0||(i+=864e5*fn(hn(s)+o),o=0,s=0),c.milliseconds=i%1e3,e=E(i/1e3),c.seconds=e%60,t=E(e/60),c.minutes=t%60,n=E(t/60),c.hours=n%24,o+=E(n/24),a=E(Tn(o)),s+=a,o-=fn(hn(a)),r=E(s/12),s%=12,c.days=o,c.months=s,c.years=r,this},Fn.clone=function(){return Vt(this)},Fn.get=function(e){return e=x(e),this.isValid()?this[e+"s"]():NaN},Fn.milliseconds=On,Fn.seconds=Yn,Fn.minutes=wn,Fn.hours=jn,Fn.days=In,Fn.weeks=function(){return E(this.days()/7)},Fn.months=Pn,Fn.years=Cn,Fn.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),n=function(e,t,n){var r=Vt(e).abs(),a=xn(r.as("s")),i=xn(r.as("m")),o=xn(r.as("h")),s=xn(r.as("d")),c=xn(r.as("M")),u=xn(r.as("y")),d=a<=Rn.ss&&["s",a]||a<Rn.s&&["ss",a]||i<=1&&["m"]||i<Rn.m&&["mm",i]||o<=1&&["h"]||o<Rn.h&&["hh",o]||s<=1&&["d"]||s<Rn.d&&["dd",s]||c<=1&&["M"]||c<Rn.M&&["MM",c]||u<=1&&["y"]||["yy",u];return d[2]=t,d[3]=+e>0,d[4]=n,An.apply(null,d)}(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)},Fn.toISOString=Vn,Fn.toString=Vn,Fn.toJSON=Vn,Fn.locale=qt,Fn.localeData=$t,Fn.toIsoString=D("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Vn),Fn.lang=Jt,U("X",0,0,"unix"),U("x",0,0,"valueOf"),de("x",ie),de("X",/[+-]?\d+(\.\d{1,3})?/),pe("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))})),pe("x",(function(e,t,n){n._d=new Date(g(e))})),a.version="2.19.3",t=kt,a.fn=sn,a.min=function(){var e=[].slice.call(arguments,0);return Lt("isBefore",e)},a.max=function(){var e=[].slice.call(arguments,0);return Lt("isAfter",e)},a.now=function(){return Date.now?Date.now():+new Date},a.utc=m,a.unix=function(e){return kt(1e3*e)},a.months=function(e,t){return ln(e,t,"months")},a.isDate=u,a.locale=at,a.invalid=T,a.duration=Vt,a.isMoment=S,a.weekdays=function(e,t,n){return _n(e,t,n,"weekdays")},a.parseZone=function(){return kt.apply(null,arguments).parseZone()},a.localeData=ot,a.isDuration=wt,a.monthsShort=function(e,t){return ln(e,t,"monthsShort")},a.weekdaysMin=function(e,t,n){return _n(e,t,n,"weekdaysMin")},a.defineLocale=it,a.updateLocale=function(e,t){if(null!=t){var n,r,a=Xe;null!=(r=rt(e))&&(a=r._config),t=j(a,t),(n=new I(t)).parentLocale=et[e],et[e]=n,at(e)}else null!=et[e]&&(null!=et[e].parentLocale?et[e]=et[e].parentLocale:null!=et[e]&&delete et[e]);return et[e]},a.locales=function(){return L(et)},a.weekdaysShort=function(e,t,n){return _n(e,t,n,"weekdaysShort")},a.normalizeUnits=x,a.relativeTimeRounding=function(e){return void 0===e?xn:"function"==typeof e&&(xn=e,!0)},a.relativeTimeThreshold=function(e,t){return void 0!==Rn[e]&&(void 0===t?Rn[e]:(Rn[e]=t,"s"===e&&(Rn.ss=t-1),!0))},a.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},a.prototype=sn,a}()}).call(this,n(82)(e))},function(e,t,n){"use strict";function r(e,t){return e===t}function a(e,t,n){if(null===t||null===n||t.length!==n.length)return!1;for(var r=t.length,a=0;a<r;a++)if(!e(t[a],n[a]))return!1;return!0}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r,n=null,i=null;return function(){return a(t,n,arguments)||(i=e.apply(null,arguments)),n=arguments,i}}function o(e){var t=Array.isArray(e[0])?e[0]:e;if(!t.every((function(e){return"function"==typeof e}))){var n=t.map((function(e){return typeof e})).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, instead received the following types: ["+n+"]")}return t}function s(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return function(){for(var t=arguments.length,r=Array(t),a=0;a<t;a++)r[a]=arguments[a];var s=0,c=r.pop(),u=o(r),d=e.apply(void 0,[function(){return s++,c.apply(null,arguments)}].concat(n)),l=i((function(){for(var e=[],t=u.length,n=0;n<t;n++)e.push(u[n].apply(null,arguments));return d.apply(null,e)}));return l.resultFunc=c,l.recomputations=function(){return s},l.resetRecomputations=function(){return s=0},l}}t.__esModule=!0,t.defaultMemoize=i,t.createSelectorCreator=s,t.createStructuredSelector=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c;if("object"!=typeof e)throw new Error("createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);var n=Object.keys(e);return t(n.map((function(t){return e[t]})),(function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.reduce((function(e,t,r){return e[n[r]]=t,e}),{})}))};var c=t.createSelector=s(i)},function(e,t,n){"use strict";n.d(t,"u",(function(){return i})),n.d(t,"e",(function(){return o})),n.d(t,"b",(function(){return c})),n.d(t,"a",(function(){return u})),n.d(t,"c",(function(){return d})),n.d(t,"d",(function(){return l})),n.d(t,"o",(function(){return m})),n.d(t,"r",(function(){return p})),n.d(t,"l",(function(){return f})),n.d(t,"g",(function(){return T})),n.d(t,"n",(function(){return b})),n.d(t,"s",(function(){return M})),n.d(t,"t",(function(){return S})),n.d(t,"f",(function(){return E})),n.d(t,"i",(function(){return g})),n.d(t,"j",(function(){return k})),n.d(t,"v",(function(){return D})),n.d(t,"q",(function(){return Y})),n.d(t,"p",(function(){return w})),n.d(t,"k",(function(){return j})),n.d(t,"w",(function(){return I})),n.d(t,"m",(function(){return P})),n.d(t,"h",(function(){return C})),n.d(t,"x",(function(){return x}));var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(e){return"@@redux-saga/"+e},o=i("TASK"),s=i("HELPER"),c=i("MATCH"),u=i("CANCEL_PROMISE"),d=i("SAGA_ACTION"),l=i("SELF_CANCELLATION"),_=function(e){return function(){return e}},m=_(!0),p=function(){},f=function(e){return e};function T(e,t,n){if(!t(e))throw w("error","uncaught at check",n),new Error(n)}var h=Object.prototype.hasOwnProperty;function y(e,t){return b.notUndef(e)&&h.call(e,t)}var b={undef:function(e){return null==e},notUndef:function(e){return null!=e},func:function(e){return"function"==typeof e},number:function(e){return"number"==typeof e},string:function(e){return"string"==typeof e},array:Array.isArray,object:function(e){return e&&!b.array(e)&&"object"===(void 0===e?"undefined":a(e))},promise:function(e){return e&&b.func(e.then)},iterator:function(e){return e&&b.func(e.next)&&b.func(e.throw)},iterable:function(e){return e&&b.func(Symbol)?b.func(e[Symbol.iterator]):b.array(e)},task:function(e){return e&&e[o]},observable:function(e){return e&&b.func(e.subscribe)},buffer:function(e){return e&&b.func(e.isEmpty)&&b.func(e.take)&&b.func(e.put)},pattern:function(e){return e&&(b.string(e)||"symbol"===(void 0===e?"undefined":a(e))||b.func(e)||b.array(e))},channel:function(e){return e&&b.func(e.take)&&b.func(e.close)},helper:function(e){return e&&e[s]},stringableFunc:function(e){return b.func(e)&&y(e,"toString")}},M={assign:function(e,t){for(var n in t)y(t,n)&&(e[n]=t[n])}};function S(e,t){var n=e.indexOf(t);n>=0&&e.splice(n,1)}var E={from:function(e){var t=Array(e.length);for(var n in e)y(e,n)&&(t[n]=e[n]);return t}};function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=r({},e),n=new Promise((function(e,n){t.resolve=e,t.reject=n}));return t.promise=n,t}function k(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=void 0,r=new Promise((function(r){n=setTimeout((function(){return r(t)}),e)}));return r[u]=function(){return clearTimeout(n)},r}function v(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return function(){return++e}}var D=v(),L=function(e){throw e},O=function(e){return{value:e,done:!0}};function Y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:L,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments[3],a={name:n,next:e,throw:t,return:O};return r&&(a[s]=!0),"undefined"!=typeof Symbol&&(a[Symbol.iterator]=function(){return a}),a}function w(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";"undefined"==typeof window?console.log("redux-saga "+e+": "+t+"\n"+(n&&n.stack||n)):console[e](t,n)}function j(e,t){return function(){return e.apply(void 0,arguments)}}var I=function(e,t){return e+" has been deprecated in favor of "+t+", please update your code"},P=function(e){return new Error("\n redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug\n in redux-saga code and not yours. Thanks for reporting this in the project's github repo.\n Error: "+e+"\n")},C=function(e,t){return(e?e+".":"")+"setContext(props): argument "+t+" is not a plain object"},x=function(e){return function(t){return e(Object.defineProperty(t,d,{value:!0}))}}},function(e,t,n){"use strict";n.d(t,"n",(function(){return r})),n.d(t,"o",(function(){return a})),n.d(t,"b",(function(){return i})),n.d(t,"k",(function(){return o})),n.d(t,"a",(function(){return s})),n.d(t,"d",(function(){return c})),n.d(t,"m",(function(){return u})),n.d(t,"f",(function(){return d})),n.d(t,"l",(function(){return l})),n.d(t,"i",(function(){return _})),n.d(t,"e",(function(){return m})),n.d(t,"c",(function(){return p})),n.d(t,"g",(function(){return f})),n.d(t,"j",(function(){return T})),n.d(t,"h",(function(){return h}));var r="@@MT/TICKETS",a="tribe_rsvp_tickets",i="_tribe_rsvp_for_event",o="_tribe_ticket_show_description",s="_price",c="_tribe_ticket_capacity",u="_ticket_start_date",d="_ticket_end_date",l="_tribe_ticket_show_not_going",_="_tribe_ticket_header",m="_tribe_default_ticket_provider",p="_tribe_tickets_list",f="_tribe_ticket_going_count",T="_tribe_ticket_not_going_count",h="_tribe_ticket_has_attendee_info_fields"},function(e,t,n){"use strict";t.__esModule=!0;var r,a=n(270),i=(r=a)&&r.__esModule?r:{default:r};t.default=i.default||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}},function(e,t,n){"use strict";n.r(t),n.d(t,"setTicketsInitialState",(function(){return a})),n.d(t,"resetTicketsBlock",(function(){return i})),n.d(t,"setTicketsHeaderImage",(function(){return o})),n.d(t,"setTicketsIsSelected",(function(){return s})),n.d(t,"setTicketsIsSettingsOpen",(function(){return c})),n.d(t,"setTicketsIsSettingsLoading",(function(){return u})),n.d(t,"openSettings",(function(){return d})),n.d(t,"closeSettings",(function(){return l})),n.d(t,"setTicketsProvider",(function(){return _})),n.d(t,"setTicketsSharedCapacity",(function(){return m})),n.d(t,"setTicketsTempSharedCapacity",(function(){return p})),n.d(t,"fetchTicketsHeaderImage",(function(){return f})),n.d(t,"updateTicketsHeaderImage",(function(){return T})),n.d(t,"deleteTicketsHeaderImage",(function(){return h})),n.d(t,"setTicketTitle",(function(){return y})),n.d(t,"setTicketDescription",(function(){return b})),n.d(t,"setTicketPrice",(function(){return M})),n.d(t,"setTicketSku",(function(){return S})),n.d(t,"setTicketIACSetting",(function(){return E})),n.d(t,"setTicketStartDate",(function(){return g})),n.d(t,"setTicketStartDateInput",(function(){return k})),n.d(t,"setTicketStartDateMoment",(function(){return v})),n.d(t,"setTicketEndDate",(function(){return D})),n.d(t,"setTicketEndDateInput",(function(){return L})),n.d(t,"setTicketEndDateMoment",(function(){return O})),n.d(t,"setTicketStartTime",(function(){return Y})),n.d(t,"setTicketEndTime",(function(){return w})),n.d(t,"setTicketStartTimeInput",(function(){return j})),n.d(t,"setTicketEndTimeInput",(function(){return I})),n.d(t,"setTicketCapacityType",(function(){return P})),n.d(t,"setTicketCapacity",(function(){return C})),n.d(t,"setTicketTempTitle",(function(){return x})),n.d(t,"setTicketTempDescription",(function(){return R})),n.d(t,"setTicketTempPrice",(function(){return A})),n.d(t,"setTicketTempSku",(function(){return H})),n.d(t,"setTicketTempIACSetting",(function(){return N})),n.d(t,"setTicketTempStartDate",(function(){return V})),n.d(t,"setTicketTempStartDateInput",(function(){return F})),n.d(t,"setTicketTempStartDateMoment",(function(){return K})),n.d(t,"setTicketTempEndDate",(function(){return W})),n.d(t,"setTicketTempEndDateInput",(function(){return U})),n.d(t,"setTicketTempEndDateMoment",(function(){return z})),n.d(t,"setTicketTempStartTime",(function(){return G})),n.d(t,"setTicketTempEndTime",(function(){return B})),n.d(t,"setTicketTempStartTimeInput",(function(){return q})),n.d(t,"setTicketTempEndTimeInput",(function(){return J})),n.d(t,"setTicketTempCapacityType",(function(){return $})),n.d(t,"setTicketTempCapacity",(function(){return Z})),n.d(t,"registerTicketBlock",(function(){return Q})),n.d(t,"removeTicketBlock",(function(){return X})),n.d(t,"removeTicketBlocks",(function(){return ee})),n.d(t,"setTicketSold",(function(){return te})),n.d(t,"setTicketAvailable",(function(){return ne})),n.d(t,"setTicketId",(function(){return re})),n.d(t,"setTicketCurrencySymbol",(function(){return ae})),n.d(t,"setTicketCurrencyPosition",(function(){return ie})),n.d(t,"setTicketProvider",(function(){return oe})),n.d(t,"setTicketHasAttendeeInfoFields",(function(){return se})),n.d(t,"setTicketIsLoading",(function(){return ce})),n.d(t,"setTicketIsModalOpen",(function(){return ue})),n.d(t,"setTicketHasBeenCreated",(function(){return de})),n.d(t,"setTicketHasChanges",(function(){return le})),n.d(t,"setTicketHasDurationError",(function(){return _e})),n.d(t,"setTicketIsSelected",(function(){return me})),n.d(t,"setTicketDetails",(function(){return pe})),n.d(t,"setTicketTempDetails",(function(){return fe})),n.d(t,"handleTicketStartDate",(function(){return Te})),n.d(t,"handleTicketEndDate",(function(){return he})),n.d(t,"handleTicketStartTime",(function(){return ye})),n.d(t,"handleTicketEndTime",(function(){return be})),n.d(t,"fetchTicket",(function(){return Me})),n.d(t,"createNewTicket",(function(){return Se})),n.d(t,"updateTicket",(function(){return Ee})),n.d(t,"deleteTicket",(function(){return ge})),n.d(t,"setTicketInitialState",(function(){return ke}));var r=n(4),a=function(e){return{type:r.g.SET_TICKETS_INITIAL_STATE,payload:e}},i=function(){return{type:r.g.RESET_TICKETS_BLOCK}},o=function(e){return{type:r.g.SET_TICKETS_HEADER_IMAGE,payload:e}},s=function(e){return{type:r.g.SET_TICKETS_IS_SELECTED,payload:{isSelected:e}}},c=function(e){return{type:r.g.SET_TICKETS_IS_SETTINGS_OPEN,payload:{isSettingsOpen:e}}},u=function(e){return{type:r.g.SET_TICKETS_IS_SETTINGS_LOADING,payload:{isSettingsLoading:e}}},d=function(){return c(!0)},l=function(){return c(!1)},_=function(e){return{type:r.g.SET_TICKETS_PROVIDER,payload:{provider:e}}},m=function(e){return{type:r.g.SET_TICKETS_SHARED_CAPACITY,payload:{sharedCapacity:e}}},p=function(e){return{type:r.g.SET_TICKETS_TEMP_SHARED_CAPACITY,payload:{tempSharedCapacity:e}}},f=function(e){return{type:r.g.FETCH_TICKETS_HEADER_IMAGE,payload:{id:e}}},T=function(e){return{type:r.g.UPDATE_TICKETS_HEADER_IMAGE,payload:{image:e}}},h=function(){return{type:r.g.DELETE_TICKETS_HEADER_IMAGE}},y=function(e,t){return{type:r.g.SET_TICKET_TITLE,payload:{clientId:e,title:t}}},b=function(e,t){return{type:r.g.SET_TICKET_DESCRIPTION,payload:{clientId:e,description:t}}},M=function(e,t){return{type:r.g.SET_TICKET_PRICE,payload:{clientId:e,price:t}}},S=function(e,t){return{type:r.g.SET_TICKET_SKU,payload:{clientId:e,sku:t}}},E=function(e,t){return{type:r.g.SET_TICKET_IAC_SETTING,payload:{clientId:e,iac:t}}},g=function(e,t){return{type:r.g.SET_TICKET_START_DATE,payload:{clientId:e,startDate:t}}},k=function(e,t){return{type:r.g.SET_TICKET_START_DATE_INPUT,payload:{clientId:e,startDateInput:t}}},v=function(e,t){return{type:r.g.SET_TICKET_START_DATE_MOMENT,payload:{clientId:e,startDateMoment:t}}},D=function(e,t){return{type:r.g.SET_TICKET_END_DATE,payload:{clientId:e,endDate:t}}},L=function(e,t){return{type:r.g.SET_TICKET_END_DATE_INPUT,payload:{clientId:e,endDateInput:t}}},O=function(e,t){return{type:r.g.SET_TICKET_END_DATE_MOMENT,payload:{clientId:e,endDateMoment:t}}},Y=function(e,t){return{type:r.g.SET_TICKET_START_TIME,payload:{clientId:e,startTime:t}}},w=function(e,t){return{type:r.g.SET_TICKET_END_TIME,payload:{clientId:e,endTime:t}}},j=function(e,t){return{type:r.g.SET_TICKET_START_TIME_INPUT,payload:{clientId:e,startTimeInput:t}}},I=function(e,t){return{type:r.g.SET_TICKET_END_TIME_INPUT,payload:{clientId:e,endTimeInput:t}}},P=function(e,t){return{type:r.g.SET_TICKET_CAPACITY_TYPE,payload:{clientId:e,capacityType:t}}},C=function(e,t){return{type:r.g.SET_TICKET_CAPACITY,payload:{clientId:e,capacity:t}}},x=function(e,t){return{type:r.g.SET_TICKET_TEMP_TITLE,payload:{clientId:e,title:t}}},R=function(e,t){return{type:r.g.SET_TICKET_TEMP_DESCRIPTION,payload:{clientId:e,description:t}}},A=function(e,t){return{type:r.g.SET_TICKET_TEMP_PRICE,payload:{clientId:e,price:t}}},H=function(e,t){return{type:r.g.SET_TICKET_TEMP_SKU,payload:{clientId:e,sku:t}}},N=function(e,t){return{type:r.g.SET_TICKET_TEMP_IAC_SETTING,payload:{clientId:e,iac:t}}},V=function(e,t){return{type:r.g.SET_TICKET_TEMP_START_DATE,payload:{clientId:e,startDate:t}}},F=function(e,t){return{type:r.g.SET_TICKET_TEMP_START_DATE_INPUT,payload:{clientId:e,startDateInput:t}}},K=function(e,t){return{type:r.g.SET_TICKET_TEMP_START_DATE_MOMENT,payload:{clientId:e,startDateMoment:t}}},W=function(e,t){return{type:r.g.SET_TICKET_TEMP_END_DATE,payload:{clientId:e,endDate:t}}},U=function(e,t){return{type:r.g.SET_TICKET_TEMP_END_DATE_INPUT,payload:{clientId:e,endDateInput:t}}},z=function(e,t){return{type:r.g.SET_TICKET_TEMP_END_DATE_MOMENT,payload:{clientId:e,endDateMoment:t}}},G=function(e,t){return{type:r.g.SET_TICKET_TEMP_START_TIME,payload:{clientId:e,startTime:t}}},B=function(e,t){return{type:r.g.SET_TICKET_TEMP_END_TIME,payload:{clientId:e,endTime:t}}},q=function(e,t){return{type:r.g.SET_TICKET_TEMP_START_TIME_INPUT,payload:{clientId:e,startTimeInput:t}}},J=function(e,t){return{type:r.g.SET_TICKET_TEMP_END_TIME_INPUT,payload:{clientId:e,endTimeInput:t}}},$=function(e,t){return{type:r.g.SET_TICKET_TEMP_CAPACITY_TYPE,payload:{clientId:e,capacityType:t}}},Z=function(e,t){return{type:r.g.SET_TICKET_TEMP_CAPACITY,payload:{clientId:e,capacity:t}}},Q=function(e){return{type:r.g.REGISTER_TICKET_BLOCK,payload:{clientId:e}}},X=function(e){return{type:r.g.REMOVE_TICKET_BLOCK,payload:{clientId:e}}},ee=function(){return{type:r.g.REMOVE_TICKET_BLOCKS}},te=function(e,t){return{type:r.g.SET_TICKET_SOLD,payload:{clientId:e,sold:t}}},ne=function(e,t){return{type:r.g.SET_TICKET_AVAILABLE,payload:{clientId:e,available:t}}},re=function(e,t){return{type:r.g.SET_TICKET_ID,payload:{clientId:e,ticketId:t}}},ae=function(e,t){return{type:r.g.SET_TICKET_CURRENCY_SYMBOL,payload:{clientId:e,currencySymbol:t}}},ie=function(e,t){return{type:r.g.SET_TICKET_CURRENCY_POSITION,payload:{clientId:e,currencyPosition:t}}},oe=function(e,t){return{type:r.g.SET_TICKET_PROVIDER,payload:{clientId:e,provider:t}}},se=function(e,t){return{type:r.g.SET_TICKET_HAS_ATTENDEE_INFO_FIELDS,payload:{clientId:e,hasAttendeeInfoFields:t}}},ce=function(e,t){return{type:r.g.SET_TICKET_IS_LOADING,payload:{clientId:e,isLoading:t}}},ue=function(e,t){return{type:r.g.SET_TICKET_IS_MODAL_OPEN,payload:{clientId:e,isModalOpen:t}}},de=function(e,t){return{type:r.g.SET_TICKET_HAS_BEEN_CREATED,payload:{clientId:e,hasBeenCreated:t}}},le=function(e,t){return{type:r.g.SET_TICKET_HAS_CHANGES,payload:{clientId:e,hasChanges:t}}},_e=function(e,t){return{type:r.g.SET_TICKET_HAS_DURATION_ERROR,payload:{clientId:e,hasDurationError:t}}},me=function(e,t){return{type:r.g.SET_TICKET_IS_SELECTED,payload:{clientId:e,isSelected:t}}},pe=function(e,t){return{type:r.g.SET_TICKET_DETAILS,payload:{clientId:e,details:t}}},fe=function(e,t){return{type:r.g.SET_TICKET_TEMP_DETAILS,payload:{clientId:e,tempDetails:t}}},Te=function(e,t,n){return{type:r.g.HANDLE_TICKET_START_DATE,payload:{clientId:e,date:t,dayPickerInput:n}}},he=function(e,t,n){return{type:r.g.HANDLE_TICKET_END_DATE,payload:{clientId:e,date:t,dayPickerInput:n}}},ye=function(e,t){return{type:r.g.HANDLE_TICKET_START_TIME,payload:{clientId:e,seconds:t}}},be=function(e,t){return{type:r.g.HANDLE_TICKET_END_TIME,payload:{clientId:e,seconds:t}}},Me=function(e,t){return{type:r.g.FETCH_TICKET,payload:{clientId:e,ticketId:t}}},Se=function(e){return{type:r.g.CREATE_NEW_TICKET,payload:{clientId:e}}},Ee=function(e){return{type:r.g.UPDATE_TICKET,payload:{clientId:e}}},ge=function(e){return{type:r.g.DELETE_TICKET,payload:{clientId:e}}},ke=function(e){return{type:r.g.SET_TICKET_INITIAL_STATE,payload:e}}},function(e,t){e.exports=React},function(e,t,n){e.exports=n(327)},function(e,t,n){"use strict";n.d(t,"f",(function(){return r})),n.d(t,"a",(function(){return ae})),n.d(t,"c",(function(){return Dn})),n.d(t,"d",(function(){return a})),n.d(t,"e",(function(){return i}));var r={};n.r(r),n.d(r,"SET_RSVP_ID",(function(){return s})),n.d(r,"SET_RSVP_SETTINGS_OPEN",(function(){return c})),n.d(r,"SET_RSVP_HAS_CHANGES",(function(){return u})),n.d(r,"SET_RSVP_IS_LOADING",(function(){return d})),n.d(r,"SET_RSVP_IS_SETTINGS_LOADING",(function(){return l})),n.d(r,"SET_RSVP_IS_MODAL_OPEN",(function(){return _})),n.d(r,"SET_RSVP_GOING_COUNT",(function(){return m})),n.d(r,"SET_RSVP_NOT_GOING_COUNT",(function(){return p})),n.d(r,"SET_RSVP_HAS_ATTENDEE_INFO_FIELDS",(function(){return f})),n.d(r,"SET_RSVP_HAS_DURATION_ERROR",(function(){return T})),n.d(r,"SET_RSVP_DETAILS",(function(){return h})),n.d(r,"SET_RSVP_TEMP_DETAILS",(function(){return y})),n.d(r,"SET_RSVP_HEADER_IMAGE",(function(){return b})),n.d(r,"SET_RSVP_TITLE",(function(){return M})),n.d(r,"SET_RSVP_DESCRIPTION",(function(){return S})),n.d(r,"SET_RSVP_CAPACITY",(function(){return E})),n.d(r,"SET_RSVP_NOT_GOING_RESPONSES",(function(){return g})),n.d(r,"SET_RSVP_START_DATE",(function(){return k})),n.d(r,"SET_RSVP_START_DATE_INPUT",(function(){return v})),n.d(r,"SET_RSVP_START_DATE_MOMENT",(function(){return D})),n.d(r,"SET_RSVP_END_DATE",(function(){return L})),n.d(r,"SET_RSVP_END_DATE_INPUT",(function(){return O})),n.d(r,"SET_RSVP_END_DATE_MOMENT",(function(){return Y})),n.d(r,"SET_RSVP_START_TIME",(function(){return w})),n.d(r,"SET_RSVP_END_TIME",(function(){return j})),n.d(r,"SET_RSVP_START_TIME_INPUT",(function(){return I})),n.d(r,"SET_RSVP_END_TIME_INPUT",(function(){return P})),n.d(r,"SET_RSVP_TEMP_TITLE",(function(){return C})),n.d(r,"SET_RSVP_TEMP_DESCRIPTION",(function(){return x})),n.d(r,"SET_RSVP_TEMP_CAPACITY",(function(){return R})),n.d(r,"SET_RSVP_TEMP_NOT_GOING_RESPONSES",(function(){return A})),n.d(r,"SET_RSVP_TEMP_START_DATE",(function(){return H})),n.d(r,"SET_RSVP_TEMP_START_DATE_INPUT",(function(){return N})),n.d(r,"SET_RSVP_TEMP_START_DATE_MOMENT",(function(){return V})),n.d(r,"SET_RSVP_TEMP_END_DATE",(function(){return F})),n.d(r,"SET_RSVP_TEMP_END_DATE_INPUT",(function(){return K})),n.d(r,"SET_RSVP_TEMP_END_DATE_MOMENT",(function(){return W})),n.d(r,"SET_RSVP_TEMP_START_TIME",(function(){return U})),n.d(r,"SET_RSVP_TEMP_END_TIME",(function(){return z})),n.d(r,"SET_RSVP_TEMP_START_TIME_INPUT",(function(){return G})),n.d(r,"SET_RSVP_TEMP_END_TIME_INPUT",(function(){return B})),n.d(r,"CREATE_RSVP",(function(){return q})),n.d(r,"INITIALIZE_RSVP",(function(){return J})),n.d(r,"DELETE_RSVP",(function(){return $})),n.d(r,"HANDLE_RSVP_START_DATE",(function(){return Z})),n.d(r,"HANDLE_RSVP_END_DATE",(function(){return Q})),n.d(r,"HANDLE_RSVP_START_TIME",(function(){return X})),n.d(r,"HANDLE_RSVP_END_TIME",(function(){return ee})),n.d(r,"FETCH_RSVP_HEADER_IMAGE",(function(){return te})),n.d(r,"UPDATE_RSVP_HEADER_IMAGE",(function(){return ne})),n.d(r,"DELETE_RSVP_HEADER_IMAGE",(function(){return re}));var a={};n.r(a),n.d(a,"getRSVPBlock",(function(){return oe})),n.d(a,"getRSVPId",(function(){return se})),n.d(a,"getRSVPCreated",(function(){return ce})),n.d(a,"getRSVPSettingsOpen",(function(){return ue})),n.d(a,"getRSVPHasChanges",(function(){return de})),n.d(a,"getRSVPIsLoading",(function(){return le})),n.d(a,"getRSVPIsSettingsLoading",(function(){return _e})),n.d(a,"getRSVPIsModalOpen",(function(){return me})),n.d(a,"getRSVPGoingCount",(function(){return pe})),n.d(a,"getRSVPNotGoingCount",(function(){return fe})),n.d(a,"getRSVPHasAttendeeInfoFields",(function(){return Te})),n.d(a,"getRSVPHasDurationError",(function(){return he})),n.d(a,"getRSVPDetails",(function(){return ye})),n.d(a,"getRSVPTitle",(function(){return be})),n.d(a,"getRSVPDescription",(function(){return Me})),n.d(a,"getRSVPCapacity",(function(){return Se})),n.d(a,"getRSVPAvailable",(function(){return Ee})),n.d(a,"getRSVPNotGoingResponses",(function(){return ge})),n.d(a,"getRSVPStartDate",(function(){return ke})),n.d(a,"getRSVPStartDateInput",(function(){return ve})),n.d(a,"getRSVPStartDateMoment",(function(){return De})),n.d(a,"getRSVPStartTime",(function(){return Le})),n.d(a,"getRSVPStartTimeNoSeconds",(function(){return Oe})),n.d(a,"getRSVPEndDate",(function(){return Ye})),n.d(a,"getRSVPEndDateInput",(function(){return we})),n.d(a,"getRSVPEndDateMoment",(function(){return je})),n.d(a,"getRSVPEndTime",(function(){return Ie})),n.d(a,"getRSVPEndTimeNoSeconds",(function(){return Pe})),n.d(a,"getRSVPStartTimeInput",(function(){return Ce})),n.d(a,"getRSVPEndTimeInput",(function(){return xe})),n.d(a,"getRSVPTempDetails",(function(){return Re})),n.d(a,"getRSVPTempTitle",(function(){return Ae})),n.d(a,"getRSVPTempDescription",(function(){return He})),n.d(a,"getRSVPTempCapacity",(function(){return Ne})),n.d(a,"getRSVPTempNotGoingResponses",(function(){return Ve})),n.d(a,"getRSVPTempStartDate",(function(){return Fe})),n.d(a,"getRSVPTempStartDateInput",(function(){return Ke})),n.d(a,"getRSVPTempStartDateMoment",(function(){return We})),n.d(a,"getRSVPTempStartTime",(function(){return Ue})),n.d(a,"getRSVPTempStartTimeNoSeconds",(function(){return ze})),n.d(a,"getRSVPTempEndDate",(function(){return Ge})),n.d(a,"getRSVPTempEndDateInput",(function(){return Be})),n.d(a,"getRSVPTempEndDateMoment",(function(){return qe})),n.d(a,"getRSVPTempEndTime",(function(){return Je})),n.d(a,"getRSVPTempEndTimeNoSeconds",(function(){return $e})),n.d(a,"getRSVPTempStartTimeInput",(function(){return Ze})),n.d(a,"getRSVPTempEndTimeInput",(function(){return Qe})),n.d(a,"getRSVPHeaderImage",(function(){return Xe})),n.d(a,"getRSVPHeaderImageId",(function(){return et})),n.d(a,"getRSVPHeaderImageSrc",(function(){return tt})),n.d(a,"getRSVPHeaderImageAlt",(function(){return nt}));var i={};n.r(i),n.d(i,"createRSVP",(function(){return pt})),n.d(i,"updateRSVP",(function(){return ft})),n.d(i,"deleteRSVP",(function(){return Tt})),n.d(i,"getRSVP",(function(){return ht}));var o=n(8),s=o.n+"/SET_RSVP_ID",c=o.n+"/SET_RSVP_SETTINGS_OPEN",u=o.n+"/SET_RSVP_HAS_CHANGES",d=o.n+"/SET_RSVP_IS_LOADING",l=o.n+"/SET_RSVP_IS_SETTINGS_LOADING",_=o.n+"/SET_RSVP_IS_MODAL_OPEN",m=o.n+"/SET_RSVP_GOING_COUNT",p=o.n+"/SET_RSVP_NOT_GOING_COUNT",f=o.n+"/SET_RSVP_HAS_ATTENDEE_INFO_FIELDS",T=o.n+"/SET_RSVP_HAS_DURATION_ERROR",h=o.n+"/SET_RSVP_DETAILS",y=o.n+"/SET_RSVP_TEMP_DETAILS",b=o.n+"/SET_RSVP_HEADER_IMAGE",M=o.n+"/SET_RSVP_TITLE",S=o.n+"/SET_RSVP_DESCRIPTION",E=o.n+"/SET_RSVP_CAPACITY",g=o.n+"/SET_RSVP_NOT_GOING_RESPONSES",k=o.n+"/SET_RSVP_START_DATE",v=o.n+"/SET_RSVP_START_DATE_INPUT",D=o.n+"/SET_RSVP_START_DATE_MOMENT",L=o.n+"/SET_RSVP_END_DATE",O=o.n+"/SET_RSVP_END_DATE_INPUT",Y=o.n+"/SET_RSVP_END_DATE_MOMENT",w=o.n+"/SET_RSVP_START_TIME",j=o.n+"/SET_RSVP_END_TIME",I=o.n+"/SET_RSVP_START_TIME_INPUT",P=o.n+"/SET_RSVP_END_TIME_INPUT",C=o.n+"/SET_RSVP_TEMP_TITLE",x=o.n+"/SET_RSVP_TEMP_DESCRIPTION",R=o.n+"/SET_RSVP_TEMP_CAPACITY",A=o.n+"/SET_RSVP_TEMP_NOT_GOING_RESPONSES",H=o.n+"/SET_RSVP_TEMP_START_DATE",N=o.n+"/SET_RSVP_TEMP_START_DATE_INPUT",V=o.n+"/SET_RSVP_TEMP_START_DATE_MOMENT",F=o.n+"/SET_RSVP_TEMP_END_DATE",K=o.n+"/SET_RSVP_TEMP_END_DATE_INPUT",W=o.n+"/SET_RSVP_TEMP_END_DATE_MOMENT",U=o.n+"/SET_RSVP_TEMP_START_TIME",z=o.n+"/SET_RSVP_TEMP_END_TIME",G=o.n+"/SET_RSVP_TEMP_START_TIME_INPUT",B=o.n+"/SET_RSVP_TEMP_END_TIME_INPUT",q=o.n+"/CREATE_RSVP",J=o.n+"/INITIALIZE_RSVP",$=o.n+"/DELETE_RSVP",Z=o.n+"/HANDLE_RSVP_START_DATE",Q=o.n+"/HANDLE_RSVP_END_DATE",X=o.n+"/HANDLE_RSVP_START_TIME",ee=o.n+"/HANDLE_RSVP_END_TIME",te=o.n+"/FETCH_RSVP_HEADER_IMAGE",ne=o.n+"/UPDATE_RSVP_HEADER_IMAGE",re=o.n+"/DELETE_RSVP_HEADER_IMAGE",ae=n(14),ie=n(6),oe=function(e){return e.tickets.blocks.rsvp},se=Object(ie.createSelector)([oe],(function(e){return e.id})),ce=Object(ie.createSelector)([oe],(function(e){return e.created})),ue=Object(ie.createSelector)([oe],(function(e){return e.settingsOpen})),de=Object(ie.createSelector)([oe],(function(e){return e.hasChanges})),le=Object(ie.createSelector)([oe],(function(e){return e.isLoading})),_e=Object(ie.createSelector)([oe],(function(e){return e.isSettingsLoading})),me=Object(ie.createSelector)([oe],(function(e){return e.isModalOpen})),pe=Object(ie.createSelector)([oe],(function(e){return e.goingCount})),fe=Object(ie.createSelector)([oe],(function(e){return e.notGoingCount})),Te=Object(ie.createSelector)([oe],(function(e){return e.hasAttendeeInfoFields})),he=Object(ie.createSelector)([oe],(function(e){return e.hasDurationError})),ye=Object(ie.createSelector)([oe],(function(e){return e.details})),be=Object(ie.createSelector)([ye],(function(e){return e.title})),Me=Object(ie.createSelector)([ye],(function(e){return e.description})),Se=Object(ie.createSelector)([ye],(function(e){return e.capacity})),Ee=Object(ie.createSelector)([Se,pe],(function(e,t){if(""===e)return-1;var n=parseInt(e,10)||0,r=parseInt(t,10)||0;return Math.max(n-r,0)})),ge=Object(ie.createSelector)([ye],(function(e){return e.notGoingResponses})),ke=Object(ie.createSelector)([ye],(function(e){return e.startDate})),ve=Object(ie.createSelector)([ye],(function(e){return e.startDateInput})),De=Object(ie.createSelector)([ye],(function(e){return e.startDateMoment})),Le=Object(ie.createSelector)([ye],(function(e){return e.startTime})),Oe=Object(ie.createSelector)([Le],(function(e){return e.slice(0,-3)})),Ye=Object(ie.createSelector)([ye],(function(e){return e.endDate})),we=Object(ie.createSelector)([ye],(function(e){return e.endDateInput})),je=Object(ie.createSelector)([ye],(function(e){return e.endDateMoment})),Ie=Object(ie.createSelector)([ye],(function(e){return e.endTime})),Pe=Object(ie.createSelector)([Ie],(function(e){return e.slice(0,-3)})),Ce=Object(ie.createSelector)([ye],(function(e){return e.startTimeInput})),xe=Object(ie.createSelector)([ye],(function(e){return e.endTimeInput})),Re=Object(ie.createSelector)([oe],(function(e){return e.tempDetails})),Ae=Object(ie.createSelector)([Re],(function(e){return e.title})),He=Object(ie.createSelector)([Re],(function(e){return e.description})),Ne=Object(ie.createSelector)([Re],(function(e){return e.capacity})),Ve=Object(ie.createSelector)([Re],(function(e){return e.notGoingResponses})),Fe=Object(ie.createSelector)([Re],(function(e){return e.startDate})),Ke=Object(ie.createSelector)([Re],(function(e){return e.startDateInput})),We=Object(ie.createSelector)([Re],(function(e){return e.startDateMoment})),Ue=Object(ie.createSelector)([Re],(function(e){return e.startTime})),ze=Object(ie.createSelector)([Ue],(function(e){return e.slice(0,-3)})),Ge=Object(ie.createSelector)([Re],(function(e){return e.endDate})),Be=Object(ie.createSelector)([Re],(function(e){return e.endDateInput})),qe=Object(ie.createSelector)([Re],(function(e){return e.endDateMoment})),Je=Object(ie.createSelector)([Re],(function(e){return e.endTime})),$e=Object(ie.createSelector)([Je],(function(e){return e.slice(0,-3)})),Ze=Object(ie.createSelector)([Re],(function(e){return e.startTimeInput})),Qe=Object(ie.createSelector)([Re],(function(e){return e.endTimeInput})),Xe=Object(ie.createSelector)([oe],(function(e){return e.headerImage})),et=Object(ie.createSelector)([Xe],(function(e){return e.id})),tt=Object(ie.createSelector)([Xe],(function(e){return e.src})),nt=Object(ie.createSelector)([Xe],(function(e){return e.alt})),rt=n(25),at=n.n(rt),it=n(60),ot=n(61),st=n(3),ct=ot.middlewares.request.actions,ut="DELETE",dt="GET",lt="POST",_t="PUT",mt=function(e){return function(t){return function(n){var r,a=t.title,i=t.description,s=t.capacity,c=t.notGoingResponses,u=t.startDateMoment,d=t.startTime,l=t.endDateMoment,_=t.endTime,m=u.clone().startOf("day").seconds(st.time.toSeconds(d,st.time.TIME_FORMAT_HH_MM_SS)),p=l.clone().startOf("day").seconds(st.time.toSeconds(_,st.time.TIME_FORMAT_HH_MM_SS)),f=""+o.o,T={title:a,excerpt:i,meta:(r={},at()(r,o.d,s),at()(r,o.m,st.moment.toDateTime(m)),at()(r,o.f,st.moment.toDateTime(p)),at()(r,o.l,c),r)};e===lt?(T.status="publish",T.meta[o.b]=""+t.postId,T.meta[o.k]="yes",T.meta[o.a]="0"):e===_t&&(f+="/"+t.id);var h={path:f,params:{method:e,body:JSON.stringify(T)},actions:{start:function(){return n(ae.setRSVPIsLoading(!0))},success:function(r){var a=r.body;e===lt&&(n(ae.createRSVP()),n(ae.setRSVPId(a.id))),n(ae.setRSVPDetails(t)),n(ae.setRSVPHasChanges(!1)),n(ae.setRSVPIsLoading(!1))},error:function(){return n(ae.setRSVPIsLoading(!1))}}};n(ct.wpRequest(h))}}},pt=mt(lt),ft=mt(_t),Tt=function(e){return function(t){var n={path:o.o+"/"+e,params:{method:ut}};t(ct.wpRequest(n))}},ht=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return function(r){var a={path:o.o+"?per_page=100&page="+n+"&context=edit",params:{method:dt},actions:{start:function(){return r(ae.setRSVPIsLoading(!0))},success:function(a){var i=a.body,s=a.headers,c=i.filter((function(e){return e.meta[o.b]==t})),u=s.get("x-wp-totalpages");if(c.length){var d=st.globals.tecDateSettings().datepickerFormat,l=c[0],_=l.meta,m=void 0===_?{}:_,p=st.moment.toMoment(m[o.m]),f=st.moment.toMoment(m[o.f]),T=d?p.format(st.moment.toFormat(d)):st.moment.toDate(p),h=d?f.format(st.moment.toFormat(d)):st.moment.toDate(f),y=m[o.d]>=0?m[o.d]:"",b=m[o.l];r(ae.createRSVP()),r(ae.setRSVPId(l.id)),r(ae.setRSVPGoingCount(parseInt(m[o.g],10)||0)),r(ae.setRSVPNotGoingCount(parseInt(m[o.j],10)||0)),r(ae.setRSVPHasAttendeeInfoFields(m[o.h])),r(ae.setRSVPDetails({title:l.title.rendered,description:l.excerpt.raw,capacity:y,notGoingResponses:b,startDate:st.moment.toDate(p),startDateInput:T,startDateMoment:p.clone().startOf("day"),endDate:st.moment.toDate(f),endDateInput:h,endDateMoment:f.clone().seconds(0),startTime:st.moment.toDatabaseTime(p),endTime:st.moment.toDatabaseTime(f),startTimeInput:st.moment.toTime(p),endTimeInput:st.moment.toTime(f)})),r(ae.setRSVPTempDetails({tempTitle:l.title.rendered,tempDescription:l.excerpt.raw,tempCapacity:y,tempNotGoingResponses:b,tempStartDate:st.moment.toDate(p),tempStartDateInput:T,tempStartDateMoment:p.clone().startOf("day"),tempEndDate:st.moment.toDate(f),tempEndDateInput:h,tempEndDateMoment:f.clone().seconds(0),tempStartTime:st.moment.toDatabaseTime(p),tempEndTime:st.moment.toDatabaseTime(f),tempStartTimeInput:st.moment.toTime(p),tempEndTimeInput:st.moment.toTime(f)})),r(ae.setRSVPIsLoading(!1))}else r(n<u?e(t,n+1):ae.setRSVPIsLoading(!1))},error:function(){return r(ae.setRSVPIsLoading(!1))}}};r(ct.wpRequest(a))}},yt=n(9),bt=n.n(yt),Mt=n(5),St=n.n(Mt),Et=st.globals.tecDateSettings().datepickerFormat,gt=St()(),kt=gt.clone(),vt=Et?gt.format(st.moment.toFormat(Et)):st.moment.toDate(gt),Dt=Et?kt.format(st.moment.toFormat(Et)):st.moment.toDate(kt),Lt={title:"",description:"",capacity:"",notGoingResponses:!1,startDate:st.moment.toDatabaseDate(gt),startDateInput:vt,startDateMoment:gt,endDate:st.moment.toDatabaseDate(kt),endDateInput:Dt,endDateMoment:kt,startTime:st.moment.toDatabaseTime(gt),endTime:st.moment.toDatabaseTime(kt),startTimeInput:st.moment.toTime(gt),endTimeInput:st.moment.toTime(kt)},Ot=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Lt,t=arguments[1];switch(t.type){case r.SET_RSVP_TITLE:return bt()({},e,{title:t.payload.title});case r.SET_RSVP_DESCRIPTION:return bt()({},e,{description:t.payload.description});case r.SET_RSVP_CAPACITY:return bt()({},e,{capacity:t.payload.capacity});case r.SET_RSVP_NOT_GOING_RESPONSES:return bt()({},e,{notGoingResponses:t.payload.notGoingResponses});case r.SET_RSVP_START_DATE:return bt()({},e,{startDate:t.payload.startDate});case r.SET_RSVP_START_DATE_INPUT:return bt()({},e,{startDateInput:t.payload.startDateInput});case r.SET_RSVP_START_DATE_MOMENT:return bt()({},e,{startDateMoment:t.payload.startDateMoment});case r.SET_RSVP_END_DATE:return bt()({},e,{endDate:t.payload.endDate});case r.SET_RSVP_END_DATE_INPUT:return bt()({},e,{endDateInput:t.payload.endDateInput});case r.SET_RSVP_END_DATE_MOMENT:return bt()({},e,{endDateMoment:t.payload.endDateMoment});case r.SET_RSVP_START_TIME:return bt()({},e,{startTime:t.payload.startTime});case r.SET_RSVP_END_TIME:return bt()({},e,{endTime:t.payload.endTime});case r.SET_RSVP_START_TIME_INPUT:return bt()({},e,{startTimeInput:t.payload.startTimeInput});case r.SET_RSVP_END_TIME_INPUT:return bt()({},e,{endTimeInput:t.payload.endTimeInput});default:return e}},Yt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Lt,t=arguments[1];switch(t.type){case r.SET_RSVP_TEMP_TITLE:return bt()({},e,{title:t.payload.title});case r.SET_RSVP_TEMP_DESCRIPTION:return bt()({},e,{description:t.payload.description});case r.SET_RSVP_TEMP_CAPACITY:return bt()({},e,{capacity:t.payload.capacity});case r.SET_RSVP_TEMP_NOT_GOING_RESPONSES:return bt()({},e,{notGoingResponses:t.payload.notGoingResponses});case r.SET_RSVP_TEMP_START_DATE:return bt()({},e,{startDate:t.payload.startDate});case r.SET_RSVP_TEMP_START_DATE_INPUT:return bt()({},e,{startDateInput:t.payload.startDateInput});case r.SET_RSVP_TEMP_START_DATE_MOMENT:return bt()({},e,{startDateMoment:t.payload.startDateMoment});case r.SET_RSVP_TEMP_END_DATE:return bt()({},e,{endDate:t.payload.endDate});case r.SET_RSVP_TEMP_END_DATE_INPUT:return bt()({},e,{endDateInput:t.payload.endDateInput});case r.SET_RSVP_TEMP_END_DATE_MOMENT:return bt()({},e,{endDateMoment:t.payload.endDateMoment});case r.SET_RSVP_TEMP_START_TIME:return bt()({},e,{startTime:t.payload.startTime});case r.SET_RSVP_TEMP_END_TIME:return bt()({},e,{endTime:t.payload.endTime});case r.SET_RSVP_TEMP_START_TIME_INPUT:return bt()({},e,{startTimeInput:t.payload.startTimeInput});case r.SET_RSVP_TEMP_END_TIME_INPUT:return bt()({},e,{endTimeInput:t.payload.endTimeInput});default:return e}},wt={id:0,created:!1,settingsOpen:!1,hasChanges:!1,isLoading:!1,isSettingsLoading:!1,isModalOpen:!1,goingCount:0,notGoingCount:0,hasAttendeeInfoFields:!1,details:Lt,tempDetails:Lt,headerImage:it.a},jt=n(12),It=n.n(jt),Pt=n(18),Ct=n(0),xt=n(10),Rt=n(62),At=n(20),Ht=n(33),Nt=n(27),Vt=It.a.mark(sn),Ft=It.a.mark(cn),Kt=It.a.mark(un),Wt=It.a.mark(dn),Ut=It.a.mark(ln),zt=It.a.mark(_n),Gt=It.a.mark(mn),Bt=It.a.mark(pn),qt=It.a.mark(fn),Jt=It.a.mark(Tn),$t=It.a.mark(hn),Zt=It.a.mark(yn),Qt=It.a.mark(bn),Xt=It.a.mark(Mn),en=It.a.mark(Sn),tn=It.a.mark(En),nn=It.a.mark(gn),rn=It.a.mark(kn),an=It.a.mark(vn),on=It.a.mark(Dn);function sn(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f;return It.a.wrap((function(T){for(;;)switch(T.prev=T.next){case 0:return t=e.payload,n=t.title,r=t.description,a=t.capacity,i=t.notGoingResponses,o=t.startDate,s=t.startDateInput,c=t.startDateMoment,u=t.startTime,d=t.endDate,l=t.endDateInput,_=t.endDateMoment,m=t.endTime,p=t.startTimeInput,f=t.endTimeInput,T.next=3,Object(Ct.a)([Object(Ct.e)(ae.setRSVPTitle(n)),Object(Ct.e)(ae.setRSVPDescription(r)),Object(Ct.e)(ae.setRSVPCapacity(a)),Object(Ct.e)(ae.setRSVPNotGoingResponses(i)),Object(Ct.e)(ae.setRSVPStartDate(o)),Object(Ct.e)(ae.setRSVPStartDateInput(s)),Object(Ct.e)(ae.setRSVPStartDateMoment(c)),Object(Ct.e)(ae.setRSVPStartTime(u)),Object(Ct.e)(ae.setRSVPEndDate(d)),Object(Ct.e)(ae.setRSVPEndDateInput(l)),Object(Ct.e)(ae.setRSVPEndDateMoment(_)),Object(Ct.e)(ae.setRSVPEndTime(m)),Object(Ct.e)(ae.setRSVPStartTimeInput(p)),Object(Ct.e)(ae.setRSVPEndTimeInput(f))]);case 3:case"end":return T.stop()}}),Vt,this)}function cn(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f;return It.a.wrap((function(T){for(;;)switch(T.prev=T.next){case 0:return t=e.payload,n=t.tempTitle,r=t.tempDescription,a=t.tempCapacity,i=t.tempNotGoingResponses,o=t.tempStartDate,s=t.tempStartDateInput,c=t.tempStartDateMoment,u=t.tempStartTime,d=t.tempEndDate,l=t.tempEndDateInput,_=t.tempEndDateMoment,m=t.tempEndTime,p=t.tempStartTimeInput,f=t.tempEndTimeInput,T.next=3,Object(Ct.a)([Object(Ct.e)(ae.setRSVPTempTitle(n)),Object(Ct.e)(ae.setRSVPTempDescription(r)),Object(Ct.e)(ae.setRSVPTempCapacity(a)),Object(Ct.e)(ae.setRSVPTempNotGoingResponses(i)),Object(Ct.e)(ae.setRSVPTempStartDate(o)),Object(Ct.e)(ae.setRSVPTempStartDateInput(s)),Object(Ct.e)(ae.setRSVPTempStartDateMoment(c)),Object(Ct.e)(ae.setRSVPTempStartTime(u)),Object(Ct.e)(ae.setRSVPTempEndDate(d)),Object(Ct.e)(ae.setRSVPTempEndDateInput(l)),Object(Ct.e)(ae.setRSVPTempEndDateMoment(_)),Object(Ct.e)(ae.setRSVPTempEndTime(m)),Object(Ct.e)(ae.setRSVPTempStartTimeInput(p)),Object(Ct.e)(ae.setRSVPTempEndTimeInput(f))]);case 3:case"end":return T.stop()}}),Ft,this)}function un(){var e,t,n,r,a,i,o,s,c,u,d,l,_,m;return It.a.wrap((function(p){for(;;)switch(p.prev=p.next){case 0:return p.next=2,Object(Ct.b)([Object(Pt.select)("core/editor"),"getEditedPostAttribute"],"date");case 2:return e=p.sent,p.next=5,Object(Ct.b)(Nt.a,e);case 5:return t=p.sent,n=t.moment,r=t.date,a=t.dateInput,i=t.time,o=t.timeInput,p.next=13,Object(Ct.a)([Object(Ct.e)(ae.setRSVPStartDate(r)),Object(Ct.e)(ae.setRSVPStartDateInput(a)),Object(Ct.e)(ae.setRSVPStartDateMoment(n)),Object(Ct.e)(ae.setRSVPStartTime(i)),Object(Ct.e)(ae.setRSVPStartTimeInput(o)),Object(Ct.e)(ae.setRSVPTempStartDate(r)),Object(Ct.e)(ae.setRSVPTempStartDateInput(a)),Object(Ct.e)(ae.setRSVPTempStartDateMoment(n)),Object(Ct.e)(ae.setRSVPTempStartTime(i)),Object(Ct.e)(ae.setRSVPTempStartTimeInput(o))]);case 13:return p.prev=13,p.next=16,Object(Ct.b)(Nt.e);case 16:if(!p.sent){p.next=30;break}return p.next=19,Object(Ct.f)(window.tribe.events.data.blocks.datetime.selectors.getStart);case 19:return s=p.sent,p.next=22,Object(Ct.b)(Nt.a,s);case 22:return c=p.sent,u=c.moment,d=c.date,l=c.dateInput,_=c.time,m=c.timeInput,p.next=30,Object(Ct.a)([Object(Ct.e)(ae.setRSVPEndDate(d)),Object(Ct.e)(ae.setRSVPEndDateInput(l)),Object(Ct.e)(ae.setRSVPEndDateMoment(u)),Object(Ct.e)(ae.setRSVPEndTime(_)),Object(Ct.e)(ae.setRSVPEndTimeInput(m)),Object(Ct.e)(ae.setRSVPTempEndDate(d)),Object(Ct.e)(ae.setRSVPTempEndDateInput(l)),Object(Ct.e)(ae.setRSVPTempEndDateMoment(u)),Object(Ct.e)(ae.setRSVPTempEndTime(_)),Object(Ct.e)(ae.setRSVPTempEndTimeInput(m))]);case 30:p.next=35;break;case 32:p.prev=32,p.t0=p.catch(13),console.error(p.t0);case 35:return p.next=37,Object(Ct.b)(mn);case 37:case"end":return p.stop()}}),Kt,this,[[13,32]])}function dn(e){var t,n,r,a,i,o,s,c,u,d,l,_,m;return It.a.wrap((function(p){for(;;)switch(p.prev=p.next){case 0:return p.prev=0,p.next=3,Object(Ct.f)(qe);case 3:return t=p.sent,p.next=6,Object(Ct.f)(je);case 6:return n=p.sent,p.next=9,Object(Ct.b)(Nt.a,e);case 9:return r=p.sent,a=r.moment,p.next=13,Object(Ct.a)([Object(Ct.b)([t,"local"]),Object(Ct.b)([n,"local"]),Object(Ct.b)([a,"local"])]);case 13:return p.next=15,Object(Ct.b)([t,"isSame"],n,"minute");case 15:return i=p.sent,p.next=18,Object(Ct.b)([t,"isSame"],a,"minute");case 18:if(o=p.sent,!i||!o){p.next=35;break}return p.next=22,Object(Ct.f)(window.tribe.events.data.blocks.datetime.selectors.getStart);case 22:return s=p.sent,p.next=25,Object(Ct.b)(Nt.a,s);case 25:return c=p.sent,u=c.moment,d=c.date,l=c.dateInput,_=c.time,m=c.timeInput,p.next=33,Object(Ct.a)([Object(Ct.e)(ae.setRSVPTempEndDate(d)),Object(Ct.e)(ae.setRSVPTempEndDateInput(l)),Object(Ct.e)(ae.setRSVPTempEndDateMoment(u)),Object(Ct.e)(ae.setRSVPTempEndTime(_)),Object(Ct.e)(ae.setRSVPTempEndTimeInput(m)),Object(Ct.e)(ae.setRSVPEndDate(d)),Object(Ct.e)(ae.setRSVPEndDateInput(l)),Object(Ct.e)(ae.setRSVPEndDateMoment(u)),Object(Ct.e)(ae.setRSVPEndTime(_)),Object(Ct.e)(ae.setRSVPEndTimeInput(m)),Object(Ct.e)(ae.setRSVPHasChanges(!0)),Object(Ct.b)(mn)]);case 33:return p.next=35,Object(Ct.d)(ln);case 35:p.next=40;break;case 37:p.prev=37,p.t0=p.catch(0),console.error(p.t0);case 40:case"end":return p.stop()}}),Wt,this,[[0,37]])}function ln(){var e,t;return It.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=void 0,n.prev=1,n.next=4,Object(Ct.f)(ce);case 4:if(!n.sent){n.next=15;break}return n.next=7,Object(Ct.b)(Nt.c);case 7:return e=n.sent,n.next=10,Object(Ct.g)(e);case 10:return n.next=12,Object(Ct.a)({id:Object(Ct.f)(se),title:Object(Ct.f)(Ae),description:Object(Ct.f)(He),capacity:Object(Ct.f)(Ne),notGoingResponses:Object(Ct.f)(Ve),startDate:Object(Ct.f)(Fe),startDateInput:Object(Ct.f)(Ke),startDateMoment:Object(Ct.f)(We),endDate:Object(Ct.f)(Ge),endDateInput:Object(Ct.f)(Be),endDateMoment:Object(Ct.f)(qe),startTime:Object(Ct.f)(Ue),endTime:Object(Ct.f)(Je)});case 12:return t=n.sent,n.next=15,Object(Ct.e)(ft(t));case 15:n.next=20;break;case 17:n.prev=17,n.t0=n.catch(1),console.error(n.t0);case 20:if(n.prev=20,!e){n.next=24;break}return n.next=24,Object(Ct.b)([e,"close"]);case 24:return n.finish(20);case 25:case"end":return n.stop()}}),Ut,this,[[1,17,20,25]])}function _n(){var e,t,n,r,a;return It.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,Object(Ct.g)([J,h]);case 3:return i.next=5,Object(Ct.b)(Nt.e);case 5:if(!i.sent||!window.tribe.events){i.next=23;break}e=window.tribe.events.data.blocks.datetime.types,t=e.SET_START_DATE_TIME,n=e.SET_START_TIME,r=void 0;case 9:return i.next=12,Object(Ct.f)(window.tribe.events.data.blocks.datetime.selectors.getStart);case 12:return a=i.sent,i.next=15,Object(Ct.g)([t,n]);case 15:if(!r){i.next=18;break}return i.next=18,Object(Ct.c)(r);case 18:return i.next=20,Object(Ct.d)(dn,a);case 20:r=i.sent,i.next=9;break;case 23:i.next=28;break;case 25:i.prev=25,i.t0=i.catch(0),console.error(i.t0);case 28:case"end":return i.stop()}}),zt,this,[[0,25]])}function mn(){var e,t,n,r,a,i,o,s,c;return It.a.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return e=!1,u.next=3,Object(Ct.f)(We);case 3:return t=u.sent,u.next=6,Object(Ct.f)(qe);case 6:if(n=u.sent,t&&n){u.next=11;break}e=!0,u.next=33;break;case 11:return u.next=13,Object(Ct.f)(Ue);case 13:return r=u.sent,u.next=16,Object(Ct.f)(Je);case 16:return a=u.sent,u.next=19,Object(Ct.b)(st.time.toSeconds,r,st.time.TIME_FORMAT_HH_MM_SS);case 19:return i=u.sent,u.next=22,Object(Ct.b)(st.time.toSeconds,a,st.time.TIME_FORMAT_HH_MM_SS);case 22:return o=u.sent,u.next=25,Object(Ct.b)(st.moment.setTimeInSeconds,t.clone(),i);case 25:return s=u.sent,u.next=28,Object(Ct.b)(st.moment.setTimeInSeconds,n.clone(),o);case 28:return c=u.sent,u.next=31,Object(Ct.b)([s,"isSameOrAfter"],c);case 31:u.sent&&(e=!0);case 33:return u.next=35,Object(Ct.e)(ae.setRSVPHasDurationError(e));case 35:case"end":return u.stop()}}),Gt,this)}function pn(e){var t,n,r,a,i;return It.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.date,r=t.dayPickerInput,o.next=3,n?Object(Ct.b)(st.moment.toMoment,n):void 0;case 3:return a=o.sent,o.next=6,n?Object(Ct.b)(st.moment.toDatabaseDate,a):"";case 6:return i=o.sent,o.next=9,Object(Ct.e)(ae.setRSVPTempStartDate(i));case 9:return o.next=11,Object(Ct.e)(ae.setRSVPTempStartDateInput(r.state.value));case 11:return o.next=13,Object(Ct.e)(ae.setRSVPTempStartDateMoment(a));case 13:case"end":return o.stop()}}),Bt,this)}function fn(e){var t,n,r,a,i;return It.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.date,r=t.dayPickerInput,o.next=3,n?Object(Ct.b)(st.moment.toMoment,n):void 0;case 3:return a=o.sent,o.next=6,n?Object(Ct.b)(st.moment.toDatabaseDate,a):"";case 6:return i=o.sent,o.next=9,Object(Ct.e)(ae.setRSVPTempEndDate(i));case 9:return o.next=11,Object(Ct.e)(ae.setRSVPTempEndDateInput(r.state.value));case 11:return o.next=13,Object(Ct.e)(ae.setRSVPTempEndDateMoment(a));case 13:case"end":return o.stop()}}),qt,this)}function Tn(e){var t;return It.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,Object(Ct.b)(st.time.fromSeconds,e.payload.seconds,st.time.TIME_FORMAT_HH_MM);case 2:return t=n.sent,n.next=5,Object(Ct.e)(ae.setRSVPTempStartTime(t+":00"));case 5:case"end":return n.stop()}}),Jt,this)}function hn(e){var t,n,r;return It.a.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,Object(Ct.b)(st.time.fromSeconds,e.payload.seconds,st.time.TIME_FORMAT_HH_MM);case 2:return t=a.sent,a.next=5,Object(Ct.b)(st.moment.toMoment,t,st.moment.TIME_FORMAT,!1);case 5:return n=a.sent,a.next=8,Object(Ct.b)(st.moment.toTime,n);case 8:return r=a.sent,a.next=11,Object(Ct.e)(ae.setRSVPTempStartTimeInput(r));case 11:case"end":return a.stop()}}),$t,this)}function yn(e){var t;return It.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,Object(Ct.b)(st.time.fromSeconds,e.payload.seconds,st.time.TIME_FORMAT_HH_MM);case 2:return t=n.sent,n.next=5,Object(Ct.e)(ae.setRSVPTempEndTime(t+":00"));case 5:case"end":return n.stop()}}),Zt,this)}function bn(e){var t,n,r;return It.a.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,Object(Ct.b)(st.time.fromSeconds,e.payload.seconds,st.time.TIME_FORMAT_HH_MM);case 2:return t=a.sent,a.next=5,Object(Ct.b)(st.moment.toMoment,t,st.moment.TIME_FORMAT,!1);case 5:return n=a.sent,a.next=8,Object(Ct.b)(st.moment.toTime,n);case 8:return r=a.sent,a.next=11,Object(Ct.e)(ae.setRSVPTempEndTimeInput(r));case 11:case"end":return a.stop()}}),Qt,this)}function Mn(){var e,t,n;return It.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,Object(Ct.f)(se);case 2:return e=r.sent,r.next=5,Object(Ct.f)(Ht.e);case 5:if(t=r.sent,e!==t){r.next=14;break}return r.next=9,Object(Ct.f)(Ht.a);case 9:return n=r.sent,r.next=12,Object(Ct.e)(ae.deleteRSVP());case 12:return r.next=14,Object(Ct.b)([Object(Pt.dispatch)("core/editor"),"removeBlocks"],[n]);case 14:case"end":return r.stop()}}),Xt,this)}function Sn(e){var t,n,r,a,i;return It.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload.id,o.next=3,Object(Ct.e)(ae.setRSVPIsSettingsLoading(!0));case 3:return o.prev=3,o.next=6,Object(Ct.b)(st.api.wpREST,{path:"media/"+t});case 6:if(n=o.sent,r=n.response,a=n.data,!r.ok){o.next=13;break}return i={id:a.id,alt:a.alt_text,src:a.media_details.sizes.medium.source_url},o.next=13,Object(Ct.e)(ae.setRSVPHeaderImage(i));case 13:o.next=18;break;case 15:o.prev=15,o.t0=o.catch(3),console.error(o.t0);case 18:return o.prev=18,o.next=21,Object(Ct.e)(ae.setRSVPIsSettingsLoading(!1));case 21:return o.finish(18);case 22:case"end":return o.stop()}}),en,this,[[3,15,18,22]])}function En(e){var t,n,r,a,i,s,c,u;return It.a.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return t=e.payload.image,d.next=3,Object(Ct.b)([Object(Pt.select)("core/editor"),"getCurrentPostId"]);case 3:return n=d.sent,r={meta:at()({},o.i,""+t.id)},d.prev=5,d.next=8,Object(Ct.e)(ae.setRSVPIsSettingsLoading(!0));case 8:return d.next=10,Object(Ct.e)(xt.setTicketsIsSettingsLoading(!0));case 10:return a=Object(Pt.select)("core/editor").getCurrentPostType(),i=Object(Pt.select)("core").getPostType(a),s=i.rest_base,d.next=15,Object(Ct.b)(st.api.wpREST,{path:s+"/"+n,headers:{"Content-Type":"application/json"},initParams:{method:"PUT",body:JSON.stringify(r)}});case 15:if(c=d.sent,!c.response.ok){d.next=23;break}return u={id:t.id,alt:t.alt,src:t.sizes.medium.url},d.next=21,Object(Ct.e)(ae.setRSVPHeaderImage(u));case 21:return d.next=23,Object(Ct.e)(xt.setTicketsHeaderImage(u));case 23:d.next=27;break;case 25:d.prev=25,d.t0=d.catch(5);case 27:return d.prev=27,d.next=30,Object(Ct.e)(ae.setRSVPIsSettingsLoading(!1));case 30:return d.next=32,Object(Ct.e)(xt.setTicketsIsSettingsLoading(!1));case 32:return d.finish(27);case 33:case"end":return d.stop()}}),tn,this,[[5,25,27,33]])}function gn(){var e,t,n,r,a,i;return It.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return s.next=2,Object(Ct.b)([Object(Pt.select)("core/editor"),"getCurrentPostId"]);case 2:return e=s.sent,t={meta:at()({},o.i,null)},s.prev=4,s.next=7,Object(Ct.e)(ae.setRSVPIsSettingsLoading(!0));case 7:return s.next=9,Object(Ct.e)(xt.setTicketsIsSettingsLoading(!0));case 9:return n=Object(Pt.select)("core/editor").getCurrentPostType(),r=Object(Pt.select)("core").getPostType(n),a=r.rest_base,s.next=14,Object(Ct.b)(st.api.wpREST,{path:a+"/"+e,headers:{"Content-Type":"application/json"},initParams:{method:"PUT",body:JSON.stringify(t)}});case 14:if(i=s.sent,!i.response.ok){s.next=21;break}return s.next=19,Object(Ct.e)(ae.setRSVPHeaderImage(it.a));case 19:return s.next=21,Object(Ct.e)(xt.setTicketsHeaderImage(Rt.a));case 21:s.next=25;break;case 23:s.prev=23,s.t0=s.catch(4);case 25:return s.prev=25,s.next=28,Object(Ct.e)(ae.setRSVPIsSettingsLoading(!1));case 28:return s.next=30,Object(Ct.e)(xt.setTicketsIsSettingsLoading(!1));case 30:return s.finish(25);case 31:case"end":return s.stop()}}),nn,this,[[4,23,25,31]])}function kn(e){return It.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:t.t0=e.type,t.next=t.t0===h?3:t.t0===y?6:t.t0===J?9:t.t0===Z?12:t.t0===Q?19:t.t0===X?26:t.t0===ee?35:t.t0===te?44:t.t0===ne?47:t.t0===re?50:t.t0===At.k?53:56;break;case 3:return t.next=5,Object(Ct.b)(sn,e);case 5:return t.abrupt("break",57);case 6:return t.next=8,Object(Ct.b)(cn,e);case 8:return t.abrupt("break",57);case 9:return t.next=11,Object(Ct.b)(un);case 11:return t.abrupt("break",57);case 12:return t.next=14,Object(Ct.b)(pn,e);case 14:return t.next=16,Object(Ct.b)(mn);case 16:return t.next=18,Object(Ct.e)(ae.setRSVPHasChanges(!0));case 18:return t.abrupt("break",57);case 19:return t.next=21,Object(Ct.b)(fn,e);case 21:return t.next=23,Object(Ct.b)(mn);case 23:return t.next=25,Object(Ct.e)(ae.setRSVPHasChanges(!0));case 25:return t.abrupt("break",57);case 26:return t.next=28,Object(Ct.b)(Tn,e);case 28:return t.next=30,Object(Ct.b)(hn,e);case 30:return t.next=32,Object(Ct.b)(mn);case 32:return t.next=34,Object(Ct.e)(ae.setRSVPHasChanges(!0));case 34:return t.abrupt("break",57);case 35:return t.next=37,Object(Ct.b)(yn,e);case 37:return t.next=39,Object(Ct.b)(bn,e);case 39:return t.next=41,Object(Ct.b)(mn);case 41:return t.next=43,Object(Ct.e)(ae.setRSVPHasChanges(!0));case 43:return t.abrupt("break",57);case 44:return t.next=46,Object(Ct.b)(Sn,e);case 46:return t.abrupt("break",57);case 47:return t.next=49,Object(Ct.b)(En,e);case 49:return t.abrupt("break",57);case 50:return t.next=52,Object(Ct.b)(gn);case 52:return t.abrupt("break",57);case 53:return t.next=55,Object(Ct.b)(Mn);case 55:case 56:return t.abrupt("break",57);case 57:case"end":return t.stop()}}),rn,this)}function vn(){var e,t,n,r,a,i,o;return It.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return s.next=2,Object(Ct.g)([J]);case 2:return s.next=4,Object(Ct.b)(Nt.e);case 4:if(!s.sent){s.next=6;break}return s.abrupt("return");case 6:return s.next=8,Object(Ct.f)(qe);case 8:return e=s.sent,s.next=11,Object(Ct.b)([e,"clone"]);case 11:return t=s.sent,s.next=14,Object(Ct.b)([t,"add"],100,"years");case 14:return s.next=16,Object(Ct.b)(Nt.a,t.toDate());case 16:return n=s.sent,r=n.date,a=n.dateInput,i=n.moment,o=n.time,s.next=23,Object(Ct.a)([Object(Ct.e)(ae.setRSVPTempEndDate(r)),Object(Ct.e)(ae.setRSVPTempEndDateInput(a)),Object(Ct.e)(ae.setRSVPTempEndDateMoment(i)),Object(Ct.e)(ae.setRSVPTempEndTime(o)),Object(Ct.e)(ae.setRSVPEndDate(r)),Object(Ct.e)(ae.setRSVPEndDateInput(a)),Object(Ct.e)(ae.setRSVPEndDateMoment(i)),Object(Ct.e)(ae.setRSVPEndTime(o))]);case 23:case"end":return s.stop()}}),an,this)}function Dn(){return It.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(Ct.h)([h,y,J,Z,Q,X,ee,te,ne,re,At.k],kn);case 2:return e.next=4,Object(Ct.d)(_n);case 4:return e.next=6,Object(Ct.d)(vn);case 6:case"end":return e.stop()}}),on,this)}t.b=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:wt,t=arguments[1];switch(t.type){case r.CREATE_RSVP:return bt()({},e,{created:!0});case r.DELETE_RSVP:return wt;case r.SET_RSVP_ID:return bt()({},e,{id:t.payload.id});case r.SET_RSVP_SETTINGS_OPEN:return bt()({},e,{settingsOpen:t.payload.settingsOpen});case r.SET_RSVP_HAS_CHANGES:return bt()({},e,{hasChanges:t.payload.hasChanges});case r.SET_RSVP_IS_LOADING:return bt()({},e,{isLoading:t.payload.isLoading});case r.SET_RSVP_IS_SETTINGS_LOADING:return bt()({},e,{isSettingsLoading:t.payload.isSettingsLoading});case r.SET_RSVP_IS_MODAL_OPEN:return bt()({},e,{isModalOpen:t.payload.isModalOpen});case r.SET_RSVP_GOING_COUNT:return bt()({},e,{goingCount:t.payload.goingCount});case r.SET_RSVP_NOT_GOING_COUNT:return bt()({},e,{notGoingCount:t.payload.notGoingCount});case r.SET_RSVP_HAS_ATTENDEE_INFO_FIELDS:return bt()({},e,{hasAttendeeInfoFields:t.payload.hasAttendeeInfoFields});case r.SET_RSVP_HAS_DURATION_ERROR:return bt()({},e,{hasDurationError:t.payload.hasDurationError});case r.SET_RSVP_TITLE:case r.SET_RSVP_DESCRIPTION:case r.SET_RSVP_CAPACITY:case r.SET_RSVP_NOT_GOING_RESPONSES:case r.SET_RSVP_START_DATE:case r.SET_RSVP_START_DATE_INPUT:case r.SET_RSVP_START_DATE_MOMENT:case r.SET_RSVP_END_DATE:case r.SET_RSVP_END_DATE_INPUT:case r.SET_RSVP_END_DATE_MOMENT:case r.SET_RSVP_START_TIME:case r.SET_RSVP_END_TIME:case r.SET_RSVP_START_TIME_INPUT:case r.SET_RSVP_END_TIME_INPUT:return bt()({},e,{details:Ot(e.details,t)});case r.SET_RSVP_TEMP_TITLE:case r.SET_RSVP_TEMP_DESCRIPTION:case r.SET_RSVP_TEMP_CAPACITY:case r.SET_RSVP_TEMP_NOT_GOING_RESPONSES:case r.SET_RSVP_TEMP_START_DATE:case r.SET_RSVP_TEMP_START_DATE_INPUT:case r.SET_RSVP_TEMP_START_DATE_MOMENT:case r.SET_RSVP_TEMP_END_DATE:case r.SET_RSVP_TEMP_END_DATE_INPUT:case r.SET_RSVP_TEMP_END_DATE_MOMENT:case r.SET_RSVP_TEMP_START_TIME:case r.SET_RSVP_TEMP_END_TIME:case r.SET_RSVP_TEMP_START_TIME_INPUT:case r.SET_RSVP_TEMP_END_TIME_INPUT:return bt()({},e,{tempDetails:Yt(e.tempDetails,t)});case r.SET_RSVP_HEADER_IMAGE:return bt()({},e,{headerImage:Object(it.b)(e.headerImage,t)});default:return e}}},function(e,t,n){"use strict";n.r(t),n.d(t,"setRSVPId",(function(){return a})),n.d(t,"setRSVPSettingsOpen",(function(){return i})),n.d(t,"setRSVPHasChanges",(function(){return o})),n.d(t,"setRSVPIsLoading",(function(){return s})),n.d(t,"setRSVPIsSettingsLoading",(function(){return c})),n.d(t,"setRSVPIsModalOpen",(function(){return u})),n.d(t,"setRSVPGoingCount",(function(){return d})),n.d(t,"setRSVPNotGoingCount",(function(){return l})),n.d(t,"setRSVPHasAttendeeInfoFields",(function(){return _})),n.d(t,"setRSVPHasDurationError",(function(){return m})),n.d(t,"setRSVPDetails",(function(){return p})),n.d(t,"setRSVPTempDetails",(function(){return f})),n.d(t,"setRSVPHeaderImage",(function(){return T})),n.d(t,"setRSVPTitle",(function(){return h})),n.d(t,"setRSVPDescription",(function(){return y})),n.d(t,"setRSVPCapacity",(function(){return b})),n.d(t,"setRSVPNotGoingResponses",(function(){return M})),n.d(t,"setRSVPStartDate",(function(){return S})),n.d(t,"setRSVPStartDateInput",(function(){return E})),n.d(t,"setRSVPStartDateMoment",(function(){return g})),n.d(t,"setRSVPEndDate",(function(){return k})),n.d(t,"setRSVPEndDateInput",(function(){return v})),n.d(t,"setRSVPEndDateMoment",(function(){return D})),n.d(t,"setRSVPStartTime",(function(){return L})),n.d(t,"setRSVPEndTime",(function(){return O})),n.d(t,"setRSVPStartTimeInput",(function(){return Y})),n.d(t,"setRSVPEndTimeInput",(function(){return w})),n.d(t,"setRSVPTempTitle",(function(){return j})),n.d(t,"setRSVPTempDescription",(function(){return I})),n.d(t,"setRSVPTempCapacity",(function(){return P})),n.d(t,"setRSVPTempNotGoingResponses",(function(){return C})),n.d(t,"setRSVPTempStartDate",(function(){return x})),n.d(t,"setRSVPTempStartDateInput",(function(){return R})),n.d(t,"setRSVPTempStartDateMoment",(function(){return A})),n.d(t,"setRSVPTempEndDate",(function(){return H})),n.d(t,"setRSVPTempEndDateInput",(function(){return N})),n.d(t,"setRSVPTempEndDateMoment",(function(){return V})),n.d(t,"setRSVPTempStartTime",(function(){return F})),n.d(t,"setRSVPTempEndTime",(function(){return K})),n.d(t,"setRSVPTempStartTimeInput",(function(){return W})),n.d(t,"setRSVPTempEndTimeInput",(function(){return U})),n.d(t,"createRSVP",(function(){return z})),n.d(t,"initializeRSVP",(function(){return G})),n.d(t,"deleteRSVP",(function(){return B})),n.d(t,"handleRSVPStartDate",(function(){return q})),n.d(t,"handleRSVPEndDate",(function(){return J})),n.d(t,"handleRSVPStartTime",(function(){return $})),n.d(t,"handleRSVPEndTime",(function(){return Z})),n.d(t,"fetchRSVPHeaderImage",(function(){return Q})),n.d(t,"updateRSVPHeaderImage",(function(){return X})),n.d(t,"deleteRSVPHeaderImage",(function(){return ee}));var r=n(13),a=function(e){return{type:r.f.SET_RSVP_ID,payload:{id:e}}},i=function(e){return{type:r.f.SET_RSVP_SETTINGS_OPEN,payload:{settingsOpen:e}}},o=function(e){return{type:r.f.SET_RSVP_HAS_CHANGES,payload:{hasChanges:e}}},s=function(e){return{type:r.f.SET_RSVP_IS_LOADING,payload:{isLoading:e}}},c=function(e){return{type:r.f.SET_RSVP_IS_SETTINGS_LOADING,payload:{isSettingsLoading:e}}},u=function(e){return{type:r.f.SET_RSVP_IS_MODAL_OPEN,payload:{isModalOpen:e}}},d=function(e){return{type:r.f.SET_RSVP_GOING_COUNT,payload:{goingCount:e}}},l=function(e){return{type:r.f.SET_RSVP_NOT_GOING_COUNT,payload:{notGoingCount:e}}},_=function(e){return{type:r.f.SET_RSVP_HAS_ATTENDEE_INFO_FIELDS,payload:{hasAttendeeInfoFields:e}}},m=function(e){return{type:r.f.SET_RSVP_HAS_DURATION_ERROR,payload:{hasDurationError:e}}},p=function(e){return{type:r.f.SET_RSVP_DETAILS,payload:e}},f=function(e){return{type:r.f.SET_RSVP_TEMP_DETAILS,payload:e}},T=function(e){return{type:r.f.SET_RSVP_HEADER_IMAGE,payload:e}},h=function(e){return{type:r.f.SET_RSVP_TITLE,payload:{title:e}}},y=function(e){return{type:r.f.SET_RSVP_DESCRIPTION,payload:{description:e}}},b=function(e){return{type:r.f.SET_RSVP_CAPACITY,payload:{capacity:e}}},M=function(e){return{type:r.f.SET_RSVP_NOT_GOING_RESPONSES,payload:{notGoingResponses:e}}},S=function(e){return{type:r.f.SET_RSVP_START_DATE,payload:{startDate:e}}},E=function(e){return{type:r.f.SET_RSVP_START_DATE_INPUT,payload:{startDateInput:e}}},g=function(e){return{type:r.f.SET_RSVP_START_DATE_MOMENT,payload:{startDateMoment:e}}},k=function(e){return{type:r.f.SET_RSVP_END_DATE,payload:{endDate:e}}},v=function(e){return{type:r.f.SET_RSVP_END_DATE_INPUT,payload:{endDateInput:e}}},D=function(e){return{type:r.f.SET_RSVP_END_DATE_MOMENT,payload:{endDateMoment:e}}},L=function(e){return{type:r.f.SET_RSVP_START_TIME,payload:{startTime:e}}},O=function(e){return{type:r.f.SET_RSVP_END_TIME,payload:{endTime:e}}},Y=function(e){return{type:r.f.SET_RSVP_START_TIME_INPUT,payload:{startTimeInput:e}}},w=function(e){return{type:r.f.SET_RSVP_END_TIME_INPUT,payload:{endTimeInput:e}}},j=function(e){return{type:r.f.SET_RSVP_TEMP_TITLE,payload:{title:e}}},I=function(e){return{type:r.f.SET_RSVP_TEMP_DESCRIPTION,payload:{description:e}}},P=function(e){return{type:r.f.SET_RSVP_TEMP_CAPACITY,payload:{capacity:e}}},C=function(e){return{type:r.f.SET_RSVP_TEMP_NOT_GOING_RESPONSES,payload:{notGoingResponses:e}}},x=function(e){return{type:r.f.SET_RSVP_TEMP_START_DATE,payload:{startDate:e}}},R=function(e){return{type:r.f.SET_RSVP_TEMP_START_DATE_INPUT,payload:{startDateInput:e}}},A=function(e){return{type:r.f.SET_RSVP_TEMP_START_DATE_MOMENT,payload:{startDateMoment:e}}},H=function(e){return{type:r.f.SET_RSVP_TEMP_END_DATE,payload:{endDate:e}}},N=function(e){return{type:r.f.SET_RSVP_TEMP_END_DATE_INPUT,payload:{endDateInput:e}}},V=function(e){return{type:r.f.SET_RSVP_TEMP_END_DATE_MOMENT,payload:{endDateMoment:e}}},F=function(e){return{type:r.f.SET_RSVP_TEMP_START_TIME,payload:{startTime:e}}},K=function(e){return{type:r.f.SET_RSVP_TEMP_END_TIME,payload:{endTime:e}}},W=function(e){return{type:r.f.SET_RSVP_TEMP_START_TIME_INPUT,payload:{startTimeInput:e}}},U=function(e){return{type:r.f.SET_RSVP_TEMP_END_TIME_INPUT,payload:{endTimeInput:e}}},z=function(){return{type:r.f.CREATE_RSVP}},G=function(){return{type:r.f.INITIALIZE_RSVP}},B=function(){return{type:r.f.DELETE_RSVP}},q=function(e){return{type:r.f.HANDLE_RSVP_START_DATE,payload:e}},J=function(e){return{type:r.f.HANDLE_RSVP_END_DATE,payload:e}},$=function(e){return{type:r.f.HANDLE_RSVP_START_TIME,payload:{seconds:e}}},Z=function(e){return{type:r.f.HANDLE_RSVP_END_TIME,payload:{seconds:e}}},Q=function(e){return{type:r.f.FETCH_RSVP_HEADER_IMAGE,payload:{id:e}}},X=function(e){return{type:r.f.UPDATE_RSVP_HEADER_IMAGE,payload:{image:e}}},ee=function(){return{type:r.f.DELETE_RSVP_HEADER_IMAGE}}},function(e,t){e.exports=wp.i18n},function(e,t,n){"use strict";n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return u}));n(263);var r=function(){return Math.random().toString(36).substring(7).split("").join(".")},a={INIT:"@@redux/INIT"+r(),REPLACE:"@@redux/REPLACE"+r(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+r()}};function i(e,t){var n=t&&t.type;return"Given "+(n&&'action "'+String(n)+'"'||"an action")+', reducer "'+e+'" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function o(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var o=t[r];0,"function"==typeof e[o]&&(n[o]=e[o])}var s,c=Object.keys(n);try{!function(e){Object.keys(e).forEach((function(t){var n=e[t];if(void 0===n(void 0,{type:a.INIT}))throw new Error('Reducer "'+t+"\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.");if(void 0===n(void 0,{type:a.PROBE_UNKNOWN_ACTION()}))throw new Error('Reducer "'+t+"\" returned undefined when probed with a random type. Don't try to handle "+a.INIT+' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')}))}(n)}catch(e){s=e}return function(e,t){if(void 0===e&&(e={}),s)throw s;for(var r=!1,a={},o=0;o<c.length;o++){var u=c[o],d=n[u],l=e[u],_=d(l,t);if(void 0===_){var m=i(u,t);throw new Error(m)}a[u]=_,r=r||_!==l}return(r=r||c.length!==Object.keys(e).length)?a:e}}function s(e,t){return function(){return t(e.apply(this,arguments))}}function c(e,t){if("function"==typeof e)return s(e,t);if("object"!=typeof e||null===e)throw new Error("bindActionCreators expected an object or a function, instead received "+(null===e?"null":typeof e)+'. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');var n={};for(var r in e){var a=e[r];"function"==typeof a&&(n[r]=s(a,t))}return n}function u(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce((function(e,t){return function(){return e(t.apply(void 0,arguments))}}))}},function(e,t,n){"use strict";n.d(t,"i",(function(){return c})),n.d(t,"g",(function(){return u})),n.d(t,"b",(function(){return d})),n.d(t,"d",(function(){return _})),n.d(t,"f",(function(){return m})),n.d(t,"e",(function(){return p})),n.d(t,"h",(function(){return f})),n.d(t,"a",(function(){return T})),n.d(t,"c",(function(){return y}));var r=n(7),a=Object(r.u)("IO"),i="TAKE",o="\n(HINT: if you are getting this errors in tests, consider using createMockTask from redux-saga/utils)",s=function(e,t){var n;return(n={})[a]=!0,n[e]=t,n};function c(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"*";if(arguments.length&&Object(r.g)(arguments[0],r.n.notUndef,"take(patternOrChannel): patternOrChannel is undefined"),r.n.pattern(e))return s(i,{pattern:e});if(r.n.channel(e))return s(i,{channel:e});throw new Error("take(patternOrChannel): argument "+String(e)+" is not valid channel or a valid pattern")}c.maybe=function(){var e=c.apply(void 0,arguments);return e[i].maybe=!0,e};c.maybe;function u(e,t){return arguments.length>1?(Object(r.g)(e,r.n.notUndef,"put(channel, action): argument channel is undefined"),Object(r.g)(e,r.n.channel,"put(channel, action): argument "+e+" is not a valid channel"),Object(r.g)(t,r.n.notUndef,"put(channel, action): argument action is undefined")):(Object(r.g)(e,r.n.notUndef,"put(action): argument action is undefined"),t=e,e=null),s("PUT",{channel:e,action:t})}function d(e){return s("ALL",e)}function l(e,t,n){Object(r.g)(t,r.n.notUndef,e+": argument fn is undefined");var a=null;if(r.n.array(t)){var i=t;a=i[0],t=i[1]}else if(t.fn){var o=t;a=o.context,t=o.fn}return a&&r.n.string(t)&&r.n.func(a[t])&&(t=a[t]),Object(r.g)(t,r.n.func,e+": argument "+t+" is not a function"),{context:a,fn:t,args:n}}function _(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return s("CALL",l("call",e,n))}function m(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return s("FORK",l("fork",e,n))}function p(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(t.length>1)return d(t.map((function(e){return p(e)})));var a=t[0];return 1===t.length&&(Object(r.g)(a,r.n.notUndef,"cancel(task): argument task is undefined"),Object(r.g)(a,r.n.task,"cancel(task): argument "+a+" is not a valid Task object "+o)),s("CANCEL",a||r.d)}function f(e){for(var t=arguments.length,n=Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];return 0===arguments.length?e=r.l:(Object(r.g)(e,r.n.notUndef,"select(selector,[...]): argument selector is undefined"),Object(r.g)(e,r.n.func,"select(selector,[...]): argument "+e+" is not a function")),s("SELECT",{selector:e,args:n})}function T(e,t){return Object(r.g)(e,r.n.notUndef,"actionChannel(pattern,...): argument pattern is undefined"),arguments.length>1&&(Object(r.g)(t,r.n.notUndef,"actionChannel(pattern, buffer): argument buffer is undefined"),Object(r.g)(t,r.n.buffer,"actionChannel(pattern, buffer): argument "+t+" is not a valid buffer")),s("ACTION_CHANNEL",{pattern:e,buffer:t})}u.resolve=function(){var e=u.apply(void 0,arguments);return e.PUT.resolve=!0,e},u.sync=Object(r.k)(u.resolve,Object(r.w)("put.sync","put.resolve"));var h=function(e){return function(t){return t&&t[a]&&t[e]}},y={take:h(i),put:h("PUT"),all:h("ALL"),race:h("RACE"),call:h("CALL"),cps:h("CPS"),fork:h("FORK"),join:h("JOIN"),cancel:h("CANCEL"),select:h("SELECT"),actionChannel:h("ACTION_CHANNEL"),cancelled:h("CANCELLED"),flush:h("FLUSH"),getContext:h("GET_CONTEXT"),setContext:h("SET_CONTEXT")}},function(e,t){e.exports=wp.data},function(e,t){e.exports=tribe.common.hoc},function(e,t,n){"use strict";n.d(t,"m",(function(){return a})),n.d(t,"l",(function(){return i})),n.d(t,"o",(function(){return o})),n.d(t,"h",(function(){return s})),n.d(t,"n",(function(){return c})),n.d(t,"g",(function(){return u})),n.d(t,"d",(function(){return d})),n.d(t,"f",(function(){return l})),n.d(t,"e",(function(){return _})),n.d(t,"a",(function(){return m})),n.d(t,"c",(function(){return p})),n.d(t,"b",(function(){return f})),n.d(t,"i",(function(){return T})),n.d(t,"k",(function(){return h})),n.d(t,"j",(function(){return y}));var r=n(8),a=r.n+"/SET_MODAL_DATA",i=r.n+"/RESET_MODAL_DATA",o=r.n+"/SUBMIT_MODAL",s=r.n+"/INITIALIZE_MODAL",c=r.n+"/SHOW_MODAL",u=r.n+"/HIDE_MODAL",d=r.n+"/FETCH_POST_TYPES",l=r.n+"/FETCH_POST_TYPES_SUCCESS",_=r.n+"/FETCH_POST_TYPES_ERROR",m=r.n+"/FETCH_POST_CHOICES",p=r.n+"/FETCH_POST_CHOICES_SUCCESS",f=r.n+"/FETCH_POST_CHOICES_ERROR",T=r.n+"/MOVE_TICKET",h=r.n+"/MOVE_TICKET_SUCCESS",y=r.n+"/MOVE_TICKET_ERROR"},function(e,t){e.exports=tribe.common.elements},function(e,t,n){var r;
1
+ var tribe="object"==typeof tribe?tribe:{};tribe.tickets=tribe.tickets||{},tribe.tickets.blocks=function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=538)}([function(e,t,n){"use strict";n.d(t,"g",(function(){return r.i})),n.d(t,"e",(function(){return r.g})),n.d(t,"a",(function(){return r.b})),n.d(t,"b",(function(){return r.d})),n.d(t,"d",(function(){return r.f})),n.d(t,"c",(function(){return r.e})),n.d(t,"f",(function(){return r.h})),n.d(t,"h",(function(){return i})),n.d(t,"i",(function(){return o}));var r=n(17),a=n(59);function i(e,t){for(var n=arguments.length,i=Array(n>2?n-2:0),o=2;o<n;o++)i[o-2]=arguments[o];return r.f.apply(void 0,[a.a,e,t].concat(i))}function o(e,t){for(var n=arguments.length,i=Array(n>2?n-2:0),o=2;o<n;o++)i[o-2]=arguments[o];return r.f.apply(void 0,[a.b,e,t].concat(i))}},function(e,t,n){e.exports=n(458)()},function(e,t,n){"use strict";n.r(t),n.d(t,"SET_TICKETS_INITIAL_STATE",(function(){return a})),n.d(t,"RESET_TICKETS_BLOCK",(function(){return i})),n.d(t,"SET_TICKETS_HEADER_IMAGE",(function(){return o})),n.d(t,"SET_TICKETS_IS_SELECTED",(function(){return s})),n.d(t,"SET_TICKETS_IS_SETTINGS_OPEN",(function(){return c})),n.d(t,"SET_TICKETS_IS_SETTINGS_LOADING",(function(){return u})),n.d(t,"SET_TICKETS_PROVIDER",(function(){return d})),n.d(t,"SET_TICKETS_SHARED_CAPACITY",(function(){return l})),n.d(t,"SET_TICKETS_TEMP_SHARED_CAPACITY",(function(){return _})),n.d(t,"FETCH_TICKETS_HEADER_IMAGE",(function(){return m})),n.d(t,"UPDATE_TICKETS_HEADER_IMAGE",(function(){return p})),n.d(t,"DELETE_TICKETS_HEADER_IMAGE",(function(){return f})),n.d(t,"REGISTER_TICKET_BLOCK",(function(){return T})),n.d(t,"REMOVE_TICKET_BLOCK",(function(){return h})),n.d(t,"REMOVE_TICKET_BLOCKS",(function(){return y})),n.d(t,"SET_TICKET_TITLE",(function(){return b})),n.d(t,"SET_TICKET_DESCRIPTION",(function(){return M})),n.d(t,"SET_TICKET_PRICE",(function(){return S})),n.d(t,"SET_TICKET_SKU",(function(){return E})),n.d(t,"SET_TICKET_IAC_SETTING",(function(){return g})),n.d(t,"SET_TICKET_START_DATE",(function(){return k})),n.d(t,"SET_TICKET_START_DATE_INPUT",(function(){return v})),n.d(t,"SET_TICKET_START_DATE_MOMENT",(function(){return D})),n.d(t,"SET_TICKET_END_DATE",(function(){return L})),n.d(t,"SET_TICKET_END_DATE_INPUT",(function(){return O})),n.d(t,"SET_TICKET_END_DATE_MOMENT",(function(){return Y})),n.d(t,"SET_TICKET_START_TIME",(function(){return w})),n.d(t,"SET_TICKET_END_TIME",(function(){return j})),n.d(t,"SET_TICKET_START_TIME_INPUT",(function(){return I})),n.d(t,"SET_TICKET_END_TIME_INPUT",(function(){return P})),n.d(t,"SET_TICKET_CAPACITY_TYPE",(function(){return C})),n.d(t,"SET_TICKET_CAPACITY",(function(){return x})),n.d(t,"SET_TICKET_TEMP_TITLE",(function(){return R})),n.d(t,"SET_TICKET_TEMP_DESCRIPTION",(function(){return A})),n.d(t,"SET_TICKET_TEMP_PRICE",(function(){return H})),n.d(t,"SET_TICKET_TEMP_SKU",(function(){return N})),n.d(t,"SET_TICKET_TEMP_IAC_SETTING",(function(){return V})),n.d(t,"SET_TICKET_TEMP_START_DATE",(function(){return F})),n.d(t,"SET_TICKET_TEMP_START_DATE_INPUT",(function(){return K})),n.d(t,"SET_TICKET_TEMP_START_DATE_MOMENT",(function(){return W})),n.d(t,"SET_TICKET_TEMP_END_DATE",(function(){return U})),n.d(t,"SET_TICKET_TEMP_END_DATE_INPUT",(function(){return z})),n.d(t,"SET_TICKET_TEMP_END_DATE_MOMENT",(function(){return G})),n.d(t,"SET_TICKET_TEMP_START_TIME",(function(){return B})),n.d(t,"SET_TICKET_TEMP_END_TIME",(function(){return q})),n.d(t,"SET_TICKET_TEMP_START_TIME_INPUT",(function(){return J})),n.d(t,"SET_TICKET_TEMP_END_TIME_INPUT",(function(){return $})),n.d(t,"SET_TICKET_TEMP_CAPACITY_TYPE",(function(){return Z})),n.d(t,"SET_TICKET_TEMP_CAPACITY",(function(){return Q})),n.d(t,"SET_TICKET_SOLD",(function(){return X})),n.d(t,"SET_TICKET_AVAILABLE",(function(){return ee})),n.d(t,"SET_TICKET_ID",(function(){return te})),n.d(t,"SET_TICKET_CURRENCY_SYMBOL",(function(){return ne})),n.d(t,"SET_TICKET_CURRENCY_POSITION",(function(){return re})),n.d(t,"SET_TICKET_PROVIDER",(function(){return ae})),n.d(t,"SET_TICKET_HAS_ATTENDEE_INFO_FIELDS",(function(){return ie})),n.d(t,"SET_TICKET_IS_LOADING",(function(){return oe})),n.d(t,"SET_TICKET_IS_MODAL_OPEN",(function(){return se})),n.d(t,"SET_TICKET_HAS_BEEN_CREATED",(function(){return ce})),n.d(t,"SET_TICKET_HAS_CHANGES",(function(){return ue})),n.d(t,"SET_TICKET_HAS_DURATION_ERROR",(function(){return de})),n.d(t,"SET_TICKET_IS_SELECTED",(function(){return le})),n.d(t,"SET_TICKET_DETAILS",(function(){return _e})),n.d(t,"SET_TICKET_TEMP_DETAILS",(function(){return me})),n.d(t,"HANDLE_TICKET_START_DATE",(function(){return pe})),n.d(t,"HANDLE_TICKET_END_DATE",(function(){return fe})),n.d(t,"HANDLE_TICKET_START_TIME",(function(){return Te})),n.d(t,"HANDLE_TICKET_END_TIME",(function(){return he})),n.d(t,"FETCH_TICKET",(function(){return ye})),n.d(t,"CREATE_NEW_TICKET",(function(){return be})),n.d(t,"UPDATE_TICKET",(function(){return Me})),n.d(t,"DELETE_TICKET",(function(){return Se})),n.d(t,"SET_TICKET_INITIAL_STATE",(function(){return Ee}));var r=n(8),a=r.n+"/SET_TICKETS_INITIAL_STATE",i=r.n+"/RESET_TICKETS_BLOCK",o=r.n+"/SET_TICKETS_HEADER_IMAGE",s=r.n+"/SET_TICKETS_IS_SELECTED",c=r.n+"/SET_TICKETS_IS_SETTINGS_OPEN",u=r.n+"/SET_TICKETS_IS_SETTINGS_LOADING",d=r.n+"/SET_TICKETS_PROVIDER",l=r.n+"/SET_TICKETS_SHARED_CAPACITY",_=r.n+"/SET_TICKETS_TEMP_SHARED_CAPACITY",m=r.n+"/FETCH_TICKETS_HEADER_IMAGE",p=r.n+"/UPDATE_TICKETS_HEADER_IMAGE",f=r.n+"/DELETE_TICKETS_HEADER_IMAGE",T=r.n+"/REGISTER_TICKET_BLOCK",h=r.n+"/REMOVE_TICKET_BLOCK",y=r.n+"/REMOVE_TICKET_BLOCKS",b=r.n+"/SET_TICKET_TITLE",M=r.n+"/SET_TICKET_DESCRIPTION",S=r.n+"/SET_TICKET_PRICE",E=r.n+"/SET_TICKET_SKU",g=r.n+"/SET_TICKET_IAC_SETTING",k=r.n+"/SET_TICKET_START_DATE",v=r.n+"/SET_TICKET_START_DATE_INPUT",D=r.n+"/SET_TICKET_START_DATE_MOMENT",L=r.n+"/SET_TICKET_END_DATE",O=r.n+"/SET_TICKET_END_DATE_INPUT",Y=r.n+"/SET_TICKET_END_DATE_MOMENT",w=r.n+"/SET_TICKET_START_TIME",j=r.n+"/SET_TICKET_END_TIME",I=r.n+"/SET_TICKET_START_TIME_INPUT",P=r.n+"/SET_TICKET_END_TIME_INPUT",C=r.n+"/SET_TICKET_CAPACITY_TYPE",x=r.n+"/SET_TICKET_CAPACITY",R=r.n+"/SET_TICKET_TEMP_TITLE",A=r.n+"/SET_TICKET_TEMP_DESCRIPTION",H=r.n+"/SET_TICKET_TEMP_PRICE",N=r.n+"/SET_TICKET_TEMP_SKU",V=r.n+"/SET_TICKET_TEMP_IAC_SETTING",F=r.n+"/SET_TICKET_TEMP_START_DATE",K=r.n+"/SET_TICKET_TEMP_START_DATE_INPUT",W=r.n+"/SET_TICKET_TEMP_START_DATE_MOMENT",U=r.n+"/SET_TICKET_TEMP_END_DATE",z=r.n+"/SET_TICKET_TEMP_END_DATE_INPUT",G=r.n+"/SET_TICKET_TEMP_END_DATE_MOMENT",B=r.n+"/SET_TICKET_TEMP_START_TIME",q=r.n+"/SET_TICKET_TEMP_END_TIME",J=r.n+"/SET_TICKET_TEMP_START_TIME_INPUT",$=r.n+"/SET_TICKET_TEMP_END_TIME_INPUT",Z=r.n+"/SET_TICKET_TEMP_CAPACITY_TYPE",Q=r.n+"/SET_TICKET_TEMP_CAPACITY",X=r.n+"/SET_TICKET_SOLD",ee=r.n+"/SET_TICKET_AVAILABLE",te=r.n+"/SET_TICKET_ID",ne=r.n+"/SET_TICKET_CURRENCY_SYMBOL",re=r.n+"/SET_TICKET_CURRENCY_POSITION",ae=r.n+"/SET_TICKET_PROVIDER",ie=r.n+"/SET_TICKET_HAS_ATTENDEE_INFO_FIELDS",oe=r.n+"/SET_TICKET_IS_LOADING",se=r.n+"/SET_TICKET_IS_MODAL_OPEN",ce=r.n+"/SET_TICKET_HAS_BEEN_CREATED",ue=r.n+"/SET_TICKET_HAS_CHANGES",de=r.n+"/SET_TICKET_HAS_DURATION_ERROR",le=r.n+"/SET_TICKET_IS_SELECTED",_e=r.n+"/SET_TICKET_DETAILS",me=r.n+"/SET_TICKET_TEMP_DETAILS",pe=r.n+"/HANDLE_TICKET_START_DATE",fe=r.n+"/HANDLE_TICKET_END_DATE",Te=r.n+"/HANDLE_TICKET_START_TIME",he=r.n+"/HANDLE_TICKET_END_TIME",ye=r.n+"/FETCH_TICKET",be=r.n+"/CREATE_NEW_TICKET",Me=r.n+"/UPDATE_TICKET",Se=r.n+"/DELETE_TICKET",Ee=r.n+"/SET_TICKET_INITIAL_STATE"},function(e,t){e.exports=tribe.common.utils},function(e,t,n){"use strict";n.d(t,"b",(function(){return D})),n.d(t,"d",(function(){return r})),n.d(t,"g",(function(){return f})),n.d(t,"a",(function(){return bn})),n.d(t,"f",(function(){return a})),n.d(t,"e",(function(){return Ur}));var r={};n.r(r),n.d(r,"CAPACITY_TYPE_OPTIONS",(function(){return O}));var a={};n.r(a),n.d(a,"getState",(function(){return C})),n.d(a,"getBlock",(function(){return x})),n.d(a,"getTicketsIsSelected",(function(){return R})),n.d(a,"getTicketsIsSettingsOpen",(function(){return A})),n.d(a,"getTicketsIsSettingsLoading",(function(){return H})),n.d(a,"getTicketsProvider",(function(){return N})),n.d(a,"getTicketsSharedCapacity",(function(){return V})),n.d(a,"getTicketsSharedCapacityInt",(function(){return F})),n.d(a,"getTicketsTempSharedCapacity",(function(){return K})),n.d(a,"getTicketsTempSharedCapacityInt",(function(){return W})),n.d(a,"getTicketsHeaderImage",(function(){return U})),n.d(a,"getTicketsHeaderImageId",(function(){return z})),n.d(a,"getTicketsHeaderImageSrc",(function(){return G})),n.d(a,"getTicketsHeaderImageAlt",(function(){return B})),n.d(a,"getTickets",(function(){return q})),n.d(a,"getTicketsAllClientIds",(function(){return J})),n.d(a,"getTicketsByClientId",(function(){return $})),n.d(a,"getTicketsArray",(function(){return Z})),n.d(a,"getTicketsCount",(function(){return Q})),n.d(a,"hasTickets",(function(){return X})),n.d(a,"hasCreatedTickets",(function(){return ee})),n.d(a,"getIndependentTickets",(function(){return te})),n.d(a,"getSharedTickets",(function(){return ne})),n.d(a,"getSharedTicketsCount",(function(){return re})),n.d(a,"getUnlimitedTickets",(function(){return ae})),n.d(a,"hasATicketSelected",(function(){return ie})),n.d(a,"getTicketsIdsInBlocks",(function(){return oe})),n.d(a,"getTicketClientId",(function(){return se})),n.d(a,"getTicket",(function(){return ce})),n.d(a,"getTicketSold",(function(){return ue})),n.d(a,"getTicketAvailable",(function(){return de})),n.d(a,"getTicketId",(function(){return le})),n.d(a,"getTicketCurrencySymbol",(function(){return _e})),n.d(a,"getTicketCurrencyPosition",(function(){return me})),n.d(a,"getTicketProvider",(function(){return pe})),n.d(a,"getTicketHasAttendeeInfoFields",(function(){return fe})),n.d(a,"getTicketIsLoading",(function(){return Te})),n.d(a,"getTicketIsModalOpen",(function(){return he})),n.d(a,"getTicketHasBeenCreated",(function(){return ye})),n.d(a,"getTicketHasChanges",(function(){return be})),n.d(a,"getTicketHasDurationError",(function(){return Me})),n.d(a,"getTicketIsSelected",(function(){return Se})),n.d(a,"isTicketDisabled",(function(){return Ee})),n.d(a,"getTicketDetails",(function(){return ge})),n.d(a,"getTicketTitle",(function(){return ke})),n.d(a,"getTicketDescription",(function(){return ve})),n.d(a,"getTicketPrice",(function(){return De})),n.d(a,"getTicketSku",(function(){return Le})),n.d(a,"getTicketIACSetting",(function(){return Oe})),n.d(a,"getTicketStartDate",(function(){return Ye})),n.d(a,"getTicketStartDateInput",(function(){return we})),n.d(a,"getTicketStartDateMoment",(function(){return je})),n.d(a,"getTicketEndDate",(function(){return Ie})),n.d(a,"getTicketEndDateInput",(function(){return Pe})),n.d(a,"getTicketEndDateMoment",(function(){return Ce})),n.d(a,"getTicketStartTime",(function(){return xe})),n.d(a,"getTicketStartTimeNoSeconds",(function(){return Re})),n.d(a,"getTicketEndTime",(function(){return Ae})),n.d(a,"getTicketEndTimeNoSeconds",(function(){return He})),n.d(a,"getTicketStartTimeInput",(function(){return Ne})),n.d(a,"getTicketEndTimeInput",(function(){return Ve})),n.d(a,"getTicketCapacityType",(function(){return Fe})),n.d(a,"getTicketCapacity",(function(){return Ke})),n.d(a,"getTicketCapacityInt",(function(){return We})),n.d(a,"isUnlimitedTicket",(function(){return Ue})),n.d(a,"isSharedTicket",(function(){return ze})),n.d(a,"isIndependentTicket",(function(){return Ge})),n.d(a,"isTicketPast",(function(){return Be})),n.d(a,"isTicketFuture",(function(){return qe})),n.d(a,"isTicketOnSale",(function(){return Je})),n.d(a,"hasTicketOnSale",(function(){return $e})),n.d(a,"allTicketsPast",(function(){return Ze})),n.d(a,"allTicketsFuture",(function(){return Qe})),n.d(a,"getTicketTempDetails",(function(){return Xe})),n.d(a,"getTicketTempTitle",(function(){return et})),n.d(a,"getTicketTempDescription",(function(){return tt})),n.d(a,"getTicketTempPrice",(function(){return nt})),n.d(a,"getTicketTempSku",(function(){return rt})),n.d(a,"getTicketTempIACSetting",(function(){return at})),n.d(a,"getTicketTempStartDate",(function(){return it})),n.d(a,"getTicketTempStartDateInput",(function(){return ot})),n.d(a,"getTicketTempStartDateMoment",(function(){return st})),n.d(a,"getTicketTempEndDate",(function(){return ct})),n.d(a,"getTicketTempEndDateInput",(function(){return ut})),n.d(a,"getTicketTempEndDateMoment",(function(){return dt})),n.d(a,"getTicketTempStartTime",(function(){return lt})),n.d(a,"getTicketTempStartTimeNoSeconds",(function(){return _t})),n.d(a,"getTicketTempEndTime",(function(){return mt})),n.d(a,"getTicketTempEndTimeNoSeconds",(function(){return pt})),n.d(a,"getTicketTempStartTimeInput",(function(){return ft})),n.d(a,"getTicketTempEndTimeInput",(function(){return Tt})),n.d(a,"getTicketTempCapacityType",(function(){return ht})),n.d(a,"getTicketTempCapacity",(function(){return yt})),n.d(a,"getTicketTempCapacityInt",(function(){return bt})),n.d(a,"getTicketTempCapacityTypeOption",(function(){return Mt})),n.d(a,"isTempTitleValid",(function(){return St})),n.d(a,"isTempCapacityValid",(function(){return Et})),n.d(a,"isTempSharedCapacityValid",(function(){return gt})),n.d(a,"isZeroPriceValid",(function(){return kt})),n.d(a,"isTicketValid",(function(){return vt})),n.d(a,"_getTotalCapacity",(function(){return Dt})),n.d(a,"_getTotalTempCapacity",(function(){return Lt})),n.d(a,"_getTotalSold",(function(){return Ot})),n.d(a,"_getTotalAvailable",(function(){return Yt})),n.d(a,"getIndependentTicketsCapacity",(function(){return wt})),n.d(a,"getIndependentTicketsTempCapacity",(function(){return jt})),n.d(a,"getIndependentTicketsSold",(function(){return It})),n.d(a,"getIndependentTicketsAvailable",(function(){return Pt})),n.d(a,"getSharedTicketsSold",(function(){return Ct})),n.d(a,"getSharedTicketsAvailable",(function(){return xt})),n.d(a,"getIndependentAndSharedTicketsCapacity",(function(){return Rt})),n.d(a,"getIndependentAndSharedTicketsTempCapacity",(function(){return At})),n.d(a,"getIndependentAndSharedTicketsSold",(function(){return Ht})),n.d(a,"getIndependentAndSharedTicketsAvailable",(function(){return Nt})),n.d(a,"getTicketProviders",(function(){return Vt})),n.d(a,"getDefaultTicketProvider",(function(){return Ft})),n.d(a,"hasValidTicketProvider",(function(){return Kt})),n.d(a,"hasMultipleTicketProviders",(function(){return Wt})),n.d(a,"hasTicketProviders",(function(){return Ut})),n.d(a,"canCreateTickets",(function(){return zt}));var i,o=n(9),s=n.n(o),c=n(262),u=n.n(c),d=n(25),l=n.n(d),_=n(16),m=n(321),p=n.n(m),f=n(2),T=n(44),h=n.n(T),y=n(3),b=n(87),M=n.n(b),S=n(85),E=n.n(S),g=n(6),k=n(5),v=n.n(k),D=n(23),L=n(15),O=[{label:Object(L.__)("Share capacity with other tickets","event-tickets"),value:D.TICKET_TYPES[D.SHARED]},{label:Object(L.__)("Set capacity for this ticket only","event-tickets"),value:D.TICKET_TYPES[D.INDEPENDENT]},{label:Object(L.__)("Unlimited","event-tickets"),value:D.TICKET_TYPES[D.UNLIMITED]}],Y=D.UNLIMITED,w=D.INDEPENDENT,j=D.SHARED,I=D.TICKET_TYPES,P=y.globals.tickets,C=function(e){return e},x=function(e){return e.tickets.blocks.ticket},R=Object(g.createSelector)([x],(function(e){return e.isSelected})),A=Object(g.createSelector)([x],(function(e){return e.isSettingsOpen})),H=Object(g.createSelector)([x],(function(e){return e.isSettingsLoading})),N=Object(g.createSelector)([x],(function(e){return e.provider})),V=Object(g.createSelector)([x],(function(e){return e.sharedCapacity})),F=Object(g.createSelector)([V],(function(e){return parseInt(e,10)||0})),K=Object(g.createSelector)([x],(function(e){return e.tempSharedCapacity})),W=Object(g.createSelector)([K],(function(e){return parseInt(e,10)||0})),U=Object(g.createSelector)([x],(function(e){return e.headerImage})),z=Object(g.createSelector)([U],(function(e){return e.id})),G=Object(g.createSelector)([U],(function(e){return e.src})),B=Object(g.createSelector)([U],(function(e){return e.alt})),q=Object(g.createSelector)([x],(function(e){return e.tickets})),J=Object(g.createSelector)([q],(function(e){return e.allClientIds})),$=Object(g.createSelector)([q],(function(e){return e.byClientId})),Z=Object(g.createSelector)([J,$],(function(e,t){return e.map((function(e){return t[e]}))})),Q=Object(g.createSelector)([J],(function(e){return e.length})),X=Object(g.createSelector)([Q],(function(e){return e>0})),ee=Object(g.createSelector)([Z],(function(e){return e.reduce((function(e,t){return e||t.hasBeenCreated}),!1)})),te=Object(g.createSelector)([Z],(function(e){return e.filter((function(e){return e.details.capacityType===I[w]}))})),ne=Object(g.createSelector)([Z],(function(e){return e.filter((function(e){return e.details.capacityType===I[j]}))})),re=Object(g.createSelector)([ne],(function(e){return e.length})),ae=Object(g.createSelector)([Z],(function(e){return e.filter((function(e){return e.details.capacityType===I[Y]}))})),ie=Object(g.createSelector)([Z],(function(e){return e.reduce((function(e,t){return e||t.isSelected}),!1)})),oe=Object(g.createSelector)([Z],(function(e){return e.reduce((function(e,t){return 0!==t.ticketId&&e.push(t.ticketId),e}),[])})),se=function(e,t){return t.clientId},ce=Object(g.createSelector)([$,se],(function(e,t){return e[t]||{}})),ue=Object(g.createSelector)([ce],(function(e){return e.sold})),de=Object(g.createSelector)([ce],(function(e){return e.available})),le=Object(g.createSelector)([ce],(function(e){return e.ticketId})),_e=Object(g.createSelector)([ce],(function(e){return e.currencySymbol})),me=Object(g.createSelector)([ce],(function(e){return e.currencyPosition})),pe=Object(g.createSelector)([ce],(function(e){return e.provider})),fe=Object(g.createSelector)([ce],(function(e){return e.hasAttendeeInfoFields})),Te=Object(g.createSelector)([ce],(function(e){return e.isLoading})),he=Object(g.createSelector)([ce],(function(e){return e.isModalOpen})),ye=Object(g.createSelector)([ce],(function(e){return e.hasBeenCreated})),be=Object(g.createSelector)([ce],(function(e){return e.hasChanges})),Me=Object(g.createSelector)([ce],(function(e){return e.hasDurationError})),Se=Object(g.createSelector)([ce],(function(e){return e.isSelected})),Ee=Object(g.createSelector)([ie,Se,Te,A],(function(e,t,n,r){return e&&!t||n||r})),ge=Object(g.createSelector)([ce],(function(e){return e.details||{}})),ke=Object(g.createSelector)([ge],(function(e){return e.title})),ve=Object(g.createSelector)([ge],(function(e){return e.description})),De=Object(g.createSelector)([ge],(function(e){return e.price})),Le=Object(g.createSelector)([ge],(function(e){return e.sku})),Oe=Object(g.createSelector)([ge],(function(e){return e.iac})),Ye=Object(g.createSelector)([ge],(function(e){return e.startDate})),we=Object(g.createSelector)([ge],(function(e){return e.startDateInput})),je=Object(g.createSelector)([ge],(function(e){return e.startDateMoment})),Ie=Object(g.createSelector)([ge],(function(e){return e.endDate})),Pe=Object(g.createSelector)([ge],(function(e){return e.endDateInput})),Ce=Object(g.createSelector)([ge],(function(e){return e.endDateMoment})),xe=Object(g.createSelector)([ge],(function(e){return e.startTime||""})),Re=Object(g.createSelector)([xe],(function(e){return e.slice(0,-3)})),Ae=Object(g.createSelector)([ge],(function(e){return e.endTime||""})),He=Object(g.createSelector)([Ae],(function(e){return e.slice(0,-3)})),Ne=Object(g.createSelector)([ge],(function(e){return e.startTimeInput})),Ve=Object(g.createSelector)([ge],(function(e){return e.endTimeInput})),Fe=Object(g.createSelector)([ge],(function(e){return e.capacityType})),Ke=Object(g.createSelector)([ge],(function(e){return e.capacity})),We=Object(g.createSelector)([Ke],(function(e){return parseInt(e,10)||0})),Ue=Object(g.createSelector)([ge],(function(e){return e.capacityType===I[Y]})),ze=Object(g.createSelector)([ge],(function(e){return e.capacityType===I[j]})),Ge=Object(g.createSelector)([ge],(function(e){return e.capacityType===I[w]})),Be=Object(g.createSelector)([Ce],(function(e){return v()().isAfter(e)})),qe=Object(g.createSelector)([je],(function(e){return v()().isBefore(e)})),Je=Object(g.createSelector)([ye,Be,qe],(function(e,t,n){return e&&!t&&!n})),$e=Object(g.createSelector)([J,C],(function(e,t){return e.reduce((function(e,n){return e||Je(t,{clientId:n})}),!1)})),Ze=Object(g.createSelector)([J,C],(function(e,t){return e.reduce((function(e,n){var r={clientId:n};return ye(t,r)?e&&Be(t,r):e}),!0)})),Qe=Object(g.createSelector)([J,C],(function(e,t){return e.reduce((function(e,n){var r={clientId:n};return ye(t,r)?e&&qe(t,r):e}),!0)})),Xe=Object(g.createSelector)([ce],(function(e){return e.tempDetails||{}})),et=Object(g.createSelector)([Xe],(function(e){return e.title})),tt=Object(g.createSelector)([Xe],(function(e){return e.description})),nt=Object(g.createSelector)([Xe],(function(e){return e.price})),rt=Object(g.createSelector)([Xe],(function(e){return e.sku})),at=Object(g.createSelector)([Xe],(function(e){return e.iac})),it=Object(g.createSelector)([Xe],(function(e){return e.startDate})),ot=Object(g.createSelector)([Xe],(function(e){return e.startDateInput})),st=Object(g.createSelector)([Xe],(function(e){return e.startDateMoment})),ct=Object(g.createSelector)([Xe],(function(e){return e.endDate})),ut=Object(g.createSelector)([Xe],(function(e){return e.endDateInput})),dt=Object(g.createSelector)([Xe],(function(e){return e.endDateMoment})),lt=Object(g.createSelector)([Xe],(function(e){return e.startTime||""})),_t=Object(g.createSelector)([lt],(function(e){return e.slice(0,-3)})),mt=Object(g.createSelector)([Xe],(function(e){return e.endTime||""})),pt=Object(g.createSelector)([mt],(function(e){return e.slice(0,-3)})),ft=Object(g.createSelector)([Xe],(function(e){return e.startTimeInput})),Tt=Object(g.createSelector)([Xe],(function(e){return e.endTimeInput})),ht=Object(g.createSelector)([Xe],(function(e){return e.capacityType})),yt=Object(g.createSelector)([Xe],(function(e){return e.capacity})),bt=Object(g.createSelector)([yt],(function(e){return parseInt(e,10)||0})),Mt=Object(g.createSelector)([ht],(function(e){return E()(O,{value:e})||{}})),St=Object(g.createSelector)([et],(function(e){return""!==M()(e)})),Et=Object(g.createSelector)([yt],(function(e){return""!==M()(e)&&!isNaN(e)})),gt=Object(g.createSelector)([K],(function(e){return""!==M()(e)&&!isNaN(e)})),kt=Object(g.createSelector)([nt,N],(function(e,t){return 0<parseInt(e,10)||t!==D.TC_CLASS})),vt=Object(g.createSelector)([ht,St,Et,gt,kt],(function(e,t,n,r,a){return e===I[Y]?t&&a:e===I[j]?t&&r&&a:t&&n&&a})),Dt=function(e){return e.reduce((function(e,t){return e+(parseInt(t.details.capacity,10)||0)}),0)},Lt=function(e){return e.reduce((function(e,t){return e+(parseInt(t.tempDetails.capacity,10)||0)}),0)},Ot=function(e){return e.reduce((function(e,t){return e+(parseInt(t.sold,10)||0)}),0)},Yt=function(e){return e.reduce((function(e,t){return e+(parseInt(t.available,10)||0)}),0)},wt=Object(g.createSelector)(te,Dt),jt=Object(g.createSelector)(te,Lt),It=Object(g.createSelector)(te,Ot),Pt=Object(g.createSelector)(te,Yt),Ct=Object(g.createSelector)(ne,Ot),xt=Object(g.createSelector)([F,Ct],(function(e,t){return Math.max(e-t,0)})),Rt=Object(g.createSelector)([wt,F],(function(e,t){return e+t})),At=Object(g.createSelector)([jt,W],(function(e,t){return e+t})),Ht=Object(g.createSelector)([It,Ct],(function(e,t){return e+t})),Nt=Object(g.createSelector)([Pt,xt],(function(e,t){return e+t})),Vt=function(){return P().providers||[]},Ft=function(){return P().default_provider||""},Kt=function(){var e=Ft();return""!==e&&e!==D.RSVP_CLASS},Wt=Object(g.createSelector)([Vt],(function(e){return e.length>1})),Ut=Object(g.createSelector)([Vt],(function(e){return e.length>0})),zt=Object(g.createSelector)([Ut,Kt],(function(e,t){return e&&t})),Gt=y.globals.settings,Bt=y.globals.priceSettings,qt=y.globals.tickets,Jt=y.globals.tecDateSettings().datepickerFormat,$t=v()(),Zt=y.globals.tickets().end_sale_buffer_duration?y.globals.tickets().end_sale_buffer_duration:2,Qt=y.globals.tickets().end_sale_buffer_years?y.globals.tickets().end_sale_buffer_years:1,Xt=$t.clone().add(Zt,"hours").add(Qt,"years"),en=Jt?$t.format(y.moment.toFormat(Jt)):y.moment.toDate($t),tn=Jt?Xt.format(y.moment.toFormat(Jt)):y.moment.toDate(Xt),nn={title:"",description:"",price:"",sku:"",iac:y.globals.iacVars().iacDefault?y.globals.iacVars().iacDefault:"none",startDate:y.moment.toDatabaseDate($t),startDateInput:en,startDateMoment:$t,endDate:y.moment.toDatabaseDate(Xt),endDateInput:tn,endDateMoment:Xt,startTime:y.moment.toDatabaseTime($t),endTime:y.moment.toDatabaseTime(Xt),startTimeInput:y.moment.toTime($t),endTimeInput:y.moment.toTime(Xt),capacityType:D.TICKET_TYPES[D.UNLIMITED],capacity:""},rn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:nn,t=arguments[1];switch(t.type){case f.SET_TICKET_TITLE:return s()({},e,{title:t.payload.title});case f.SET_TICKET_DESCRIPTION:return s()({},e,{description:t.payload.description});case f.SET_TICKET_PRICE:return s()({},e,{price:t.payload.price});case f.SET_TICKET_SKU:return s()({},e,{sku:t.payload.sku});case f.SET_TICKET_IAC_SETTING:return s()({},e,{iac:t.payload.iac});case f.SET_TICKET_START_DATE:return s()({},e,{startDate:t.payload.startDate});case f.SET_TICKET_START_DATE_INPUT:return s()({},e,{startDateInput:t.payload.startDateInput});case f.SET_TICKET_START_DATE_MOMENT:return s()({},e,{startDateMoment:t.payload.startDateMoment});case f.SET_TICKET_END_DATE:return s()({},e,{endDate:t.payload.endDate});case f.SET_TICKET_END_DATE_INPUT:return s()({},e,{endDateInput:t.payload.endDateInput});case f.SET_TICKET_END_DATE_MOMENT:return s()({},e,{endDateMoment:t.payload.endDateMoment});case f.SET_TICKET_START_TIME:return s()({},e,{startTime:t.payload.startTime});case f.SET_TICKET_END_TIME:return s()({},e,{endTime:t.payload.endTime});case f.SET_TICKET_START_TIME_INPUT:return s()({},e,{startTimeInput:t.payload.startTimeInput});case f.SET_TICKET_END_TIME_INPUT:return s()({},e,{endTimeInput:t.payload.endTimeInput});case f.SET_TICKET_CAPACITY_TYPE:return s()({},e,{capacityType:t.payload.capacityType});case f.SET_TICKET_CAPACITY:return s()({},e,{capacity:t.payload.capacity});default:return e}},an=y.globals.tecDateSettings().datepickerFormat,on=v()(),sn=y.globals.tickets().end_sale_buffer_duration?y.globals.tickets().end_sale_buffer_duration:2,cn=y.globals.tickets().end_sale_buffer_years?y.globals.tickets().end_sale_buffer_years:1,un=on.clone().add(sn,"hours").add(cn,"years"),dn=an?on.format(y.moment.toFormat(an)):y.moment.toDate(on),ln=an?un.format(y.moment.toFormat(an)):y.moment.toDate(un),_n={title:"",description:"",price:"",sku:"",iac:y.globals.iacVars().iacDefault?y.globals.iacVars().iacDefault:"none",startDate:y.moment.toDatabaseDate(on),startDateInput:dn,startDateMoment:on,endDate:y.moment.toDatabaseDate(un),endDateInput:ln,endDateMoment:un,startTime:y.moment.toDatabaseTime(on),endTime:y.moment.toDatabaseTime(un),startTimeInput:y.moment.toTime(on),endTimeInput:y.moment.toTime(un),capacityType:D.TICKET_TYPES[D.UNLIMITED],capacity:""},mn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:_n,t=arguments[1];switch(t.type){case f.SET_TICKET_TEMP_TITLE:return s()({},e,{title:t.payload.title});case f.SET_TICKET_TEMP_DESCRIPTION:return s()({},e,{description:t.payload.description});case f.SET_TICKET_TEMP_PRICE:return s()({},e,{price:t.payload.price});case f.SET_TICKET_TEMP_SKU:return s()({},e,{sku:t.payload.sku});case f.SET_TICKET_TEMP_IAC_SETTING:return s()({},e,{iac:t.payload.iac});case f.SET_TICKET_TEMP_START_DATE:return s()({},e,{startDate:t.payload.startDate});case f.SET_TICKET_TEMP_START_DATE_INPUT:return s()({},e,{startDateInput:t.payload.startDateInput});case f.SET_TICKET_TEMP_START_DATE_MOMENT:return s()({},e,{startDateMoment:t.payload.startDateMoment});case f.SET_TICKET_TEMP_END_DATE:return s()({},e,{endDate:t.payload.endDate});case f.SET_TICKET_TEMP_END_DATE_INPUT:return s()({},e,{endDateInput:t.payload.endDateInput});case f.SET_TICKET_TEMP_END_DATE_MOMENT:return s()({},e,{endDateMoment:t.payload.endDateMoment});case f.SET_TICKET_TEMP_START_TIME:return s()({},e,{startTime:t.payload.startTime});case f.SET_TICKET_TEMP_END_TIME:return s()({},e,{endTime:t.payload.endTime});case f.SET_TICKET_TEMP_START_TIME_INPUT:return s()({},e,{startTimeInput:t.payload.startTimeInput});case f.SET_TICKET_TEMP_END_TIME_INPUT:return s()({},e,{endTimeInput:t.payload.endTimeInput});case f.SET_TICKET_TEMP_CAPACITY_TYPE:return s()({},e,{capacityType:t.payload.capacityType});case f.SET_TICKET_TEMP_CAPACITY:return s()({},e,{capacity:t.payload.capacity});default:return e}},pn={details:nn,tempDetails:_n,sold:0,available:0,ticketId:0,currencySymbol:function(e){var t=qt(),n=Vt();if(""===e)return t.default_currency;var r=n.filter((function(t){return t.class===e})),a=h()(r,1)[0];return a?a.currency:t.default_currency}(Ft()),currencyPosition:(i=y.string.isTruthy(Gt()&&Gt().reverseCurrencyPosition)?"suffix":"prefix",Bt()&&Bt().defaultCurrencyPosition?Bt().defaultCurrencyPosition:i),provider:"",hasAttendeeInfoFields:!1,isLoading:!1,isModalOpen:!1,hasBeenCreated:!1,hasChanges:!1,hasDurationError:!1,isSelected:!1},fn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:pn,t=arguments[1];switch(t.type){case f.SET_TICKET_TITLE:case f.SET_TICKET_DESCRIPTION:case f.SET_TICKET_PRICE:case f.SET_TICKET_SKU:case f.SET_TICKET_IAC_SETTING:case f.SET_TICKET_START_DATE:case f.SET_TICKET_START_DATE_INPUT:case f.SET_TICKET_START_DATE_MOMENT:case f.SET_TICKET_END_DATE:case f.SET_TICKET_END_DATE_INPUT:case f.SET_TICKET_END_DATE_MOMENT:case f.SET_TICKET_START_TIME:case f.SET_TICKET_END_TIME:case f.SET_TICKET_START_TIME_INPUT:case f.SET_TICKET_END_TIME_INPUT:case f.SET_TICKET_CAPACITY_TYPE:case f.SET_TICKET_CAPACITY:return s()({},e,{details:rn(e.details,t)});case f.SET_TICKET_TEMP_TITLE:case f.SET_TICKET_TEMP_DESCRIPTION:case f.SET_TICKET_TEMP_PRICE:case f.SET_TICKET_TEMP_SKU:case f.SET_TICKET_TEMP_IAC_SETTING:case f.SET_TICKET_TEMP_START_DATE:case f.SET_TICKET_TEMP_START_DATE_INPUT:case f.SET_TICKET_TEMP_START_DATE_MOMENT:case f.SET_TICKET_TEMP_END_DATE:case f.SET_TICKET_TEMP_END_DATE_INPUT:case f.SET_TICKET_TEMP_END_DATE_MOMENT:case f.SET_TICKET_TEMP_START_TIME:case f.SET_TICKET_TEMP_END_TIME:case f.SET_TICKET_TEMP_START_TIME_INPUT:case f.SET_TICKET_TEMP_END_TIME_INPUT:case f.SET_TICKET_TEMP_CAPACITY_TYPE:case f.SET_TICKET_TEMP_CAPACITY:return s()({},e,{tempDetails:mn(e.tempDetails,t)});case f.SET_TICKET_SOLD:return s()({},e,{sold:t.payload.sold});case f.SET_TICKET_AVAILABLE:return s()({},e,{available:t.payload.available});case f.SET_TICKET_ID:return s()({},e,{ticketId:t.payload.ticketId});case f.SET_TICKET_CURRENCY_SYMBOL:return s()({},e,{currencySymbol:t.payload.currencySymbol});case f.SET_TICKET_CURRENCY_POSITION:return s()({},e,{currencyPosition:t.payload.currencyPosition});case f.SET_TICKET_PROVIDER:return s()({},e,{provider:t.payload.provider});case f.SET_TICKET_HAS_ATTENDEE_INFO_FIELDS:return s()({},e,{hasAttendeeInfoFields:t.payload.hasAttendeeInfoFields});case f.SET_TICKET_IS_LOADING:return s()({},e,{isLoading:t.payload.isLoading});case f.SET_TICKET_IS_MODAL_OPEN:return s()({},e,{isModalOpen:t.payload.isModalOpen});case f.SET_TICKET_HAS_BEEN_CREATED:return s()({},e,{hasBeenCreated:t.payload.hasBeenCreated});case f.SET_TICKET_HAS_CHANGES:return s()({},e,{hasChanges:t.payload.hasChanges});case f.SET_TICKET_HAS_DURATION_ERROR:return s()({},e,{hasDurationError:t.payload.hasDurationError});case f.SET_TICKET_IS_SELECTED:return s()({},e,{isSelected:t.payload.isSelected});default:return e}},Tn=Object(_.b)({byClientId:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case f.SET_TICKET_TITLE:case f.SET_TICKET_DESCRIPTION:case f.SET_TICKET_PRICE:case f.SET_TICKET_SKU:case f.SET_TICKET_IAC_SETTING:case f.SET_TICKET_START_DATE:case f.SET_TICKET_START_DATE_INPUT:case f.SET_TICKET_START_DATE_MOMENT:case f.SET_TICKET_END_DATE:case f.SET_TICKET_END_DATE_INPUT:case f.SET_TICKET_END_DATE_MOMENT:case f.SET_TICKET_START_TIME:case f.SET_TICKET_END_TIME:case f.SET_TICKET_START_TIME_INPUT:case f.SET_TICKET_END_TIME_INPUT:case f.SET_TICKET_CAPACITY_TYPE:case f.SET_TICKET_CAPACITY:case f.SET_TICKET_TEMP_TITLE:case f.SET_TICKET_TEMP_DESCRIPTION:case f.SET_TICKET_TEMP_PRICE:case f.SET_TICKET_TEMP_SKU:case f.SET_TICKET_TEMP_IAC_SETTING:case f.SET_TICKET_TEMP_START_DATE:case f.SET_TICKET_TEMP_START_DATE_INPUT:case f.SET_TICKET_TEMP_START_DATE_MOMENT:case f.SET_TICKET_TEMP_END_DATE:case f.SET_TICKET_TEMP_END_DATE_INPUT:case f.SET_TICKET_TEMP_END_DATE_MOMENT:case f.SET_TICKET_TEMP_START_TIME:case f.SET_TICKET_TEMP_END_TIME:case f.SET_TICKET_TEMP_START_TIME_INPUT:case f.SET_TICKET_TEMP_END_TIME_INPUT:case f.SET_TICKET_TEMP_CAPACITY_TYPE:case f.SET_TICKET_TEMP_CAPACITY:case f.SET_TICKET_SOLD:case f.SET_TICKET_AVAILABLE:case f.SET_TICKET_ID:case f.SET_TICKET_CURRENCY_SYMBOL:case f.SET_TICKET_CURRENCY_POSITION:case f.SET_TICKET_PROVIDER:case f.SET_TICKET_HAS_ATTENDEE_INFO_FIELDS:case f.SET_TICKET_IS_LOADING:case f.SET_TICKET_IS_MODAL_OPEN:case f.SET_TICKET_HAS_BEEN_CREATED:case f.SET_TICKET_HAS_CHANGES:case f.SET_TICKET_HAS_DURATION_ERROR:case f.SET_TICKET_IS_SELECTED:case f.REGISTER_TICKET_BLOCK:return s()({},e,l()({},t.payload.clientId,fn(e[t.payload.clientId],t)));case f.REMOVE_TICKET_BLOCK:return p()(e,[t.payload.clientId]);case f.REMOVE_TICKET_BLOCKS:return{};default:return e}},allClientIds:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];switch(t.type){case f.REGISTER_TICKET_BLOCK:return[].concat(u()(e),[t.payload.clientId]);case f.REMOVE_TICKET_BLOCK:return e.filter((function(e){return t.payload.clientId!==e}));case f.REMOVE_TICKET_BLOCKS:return[];default:return e}}}),hn=n(62),yn={headerImage:hn.a,isSelected:!1,isSettingsOpen:!1,isSettingsLoading:!1,provider:"",sharedCapacity:"",tempSharedCapacity:"",tickets:Tn(void 0,{})},bn=n(10),Mn=n(12),Sn=n.n(Mn),En=n(112),gn=n.n(En),kn=n(0),vn=n(18),Dn=n(111),Ln=n(14),On=n(60),Yn=n(8),wn=n(35),jn=n(20),In=n(33),Pn=n(27),Cn=Sn.a.mark(Tr),xn=Sn.a.mark(hr),Rn=Sn.a.mark(yr),An=Sn.a.mark(br),Hn=Sn.a.mark(Mr),Nn=Sn.a.mark(Sr),Vn=Sn.a.mark(Er),Fn=Sn.a.mark(gr),Kn=Sn.a.mark(kr),Wn=Sn.a.mark(vr),Un=Sn.a.mark(Dr),zn=Sn.a.mark(Lr),Gn=Sn.a.mark(Or),Bn=Sn.a.mark(Yr),qn=Sn.a.mark(wr),Jn=Sn.a.mark(jr),$n=Sn.a.mark(Ir),Zn=Sn.a.mark(Pr),Qn=Sn.a.mark(Cr),Xn=Sn.a.mark(xr),er=Sn.a.mark(Rr),tr=Sn.a.mark(Ar),nr=Sn.a.mark(Hr),rr=Sn.a.mark(Nr),ar=Sn.a.mark(Vr),ir=Sn.a.mark(Fr),or=Sn.a.mark(Kr),sr=Sn.a.mark(Wr),cr=Sn.a.mark(Ur),ur=D.UNLIMITED,dr=D.SHARED,lr=D.TICKET_TYPES,_r=D.PROVIDER_CLASS_TO_PROVIDER_MAPPING,mr=(y.globals.tickets,y.globals.restNonce),pr=y.globals.tecDateSettings,fr=y.api.wpREST;function Tr(e){var t,n,r,a,i;return Sn.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,Object(kn.b)(vn.dispatch,"core/editor");case 2:return t=o.sent,n=t.insertBlock,o.next=6,Object(kn.b)(vn.select,"core/editor");case 6:return r=o.sent,a=r.getBlockCount,i=r.getBlocks,o.next=11,Object(kn.b)([i(),"filter"],(function(e){return"tribe/tickets"===e.name}));case 11:o.sent.forEach((function(t){var r=t.clientId;e.forEach((function(e){var t={hasBeenCreated:!0,ticketId:e},i=a(r),o=Object(Dn.createBlock)("tribe/tickets-item",t);n(o,i,r,!1)}))}));case 13:case"end":return o.stop()}}),Cn,this)}function hr(e){var t,n,r,a,i,o,s,c;return Sn.a.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return t=e.payload.get,n=parseInt(t("header",hn.a.id),10),r=t("sharedCapacity"),a=t("tickets",[]),u.next=6,Object(kn.f)(oe);case 6:if(i=u.sent,!((o=a.filter((function(e){return!gn()(i,e)}))).length>=1)){u.next=11;break}return u.next=11,Object(kn.b)(Tr,o);case 11:if("0"===r){u.next=14;break}return u.next=14,Object(kn.a)([Object(kn.e)(bn.setTicketsSharedCapacity(r)),Object(kn.e)(bn.setTicketsTempSharedCapacity(r))]);case 14:if(isNaN(n)||0===n){u.next=17;break}return u.next=17,Object(kn.e)(bn.fetchTicketsHeaderImage(n));case 17:if((s=t("provider",yn.provider))!==D.RSVP_CLASS&&s){u.next=23;break}return u.next=21,Object(kn.f)(Ft);case 21:c=u.sent,s=c===D.RSVP_CLASS?"":c;case 23:return u.next=25,Object(kn.e)(bn.setTicketsProvider(s));case 25:case"end":return u.stop()}}),xn,this)}function yr(){var e,t,n;return Sn.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,Object(kn.f)(ee);case 2:return e=r.sent,r.next=5,Object(kn.a)([Object(kn.e)(bn.removeTicketBlocks()),Object(kn.e)(bn.setTicketsIsSettingsOpen(!1))]);case 5:if(e){r.next=14;break}return r.next=8,Object(kn.b)([Object(vn.select)("core/editor"),"getCurrentPostAttribute"],"meta");case 8:return t=r.sent,n=s()({},t,l()({},Yn.d,"")),r.next=12,Object(kn.b)([Object(vn.dispatch)("core/editor"),"editPost"],{meta:n});case 12:return r.next=14,Object(kn.a)([Object(kn.e)(bn.setTicketsSharedCapacity("")),Object(kn.e)(bn.setTicketsTempSharedCapacity(""))]);case 14:case"end":return r.stop()}}),Rn,this)}function br(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,h,b,M;return Sn.a.wrap((function(S){for(;;)switch(S.prev=S.next){case 0:return t=e.payload,n=t.clientId,r=t.get,a=r("ticketId",pn.ticketId),i=r("hasBeenCreated",pn.hasBeenCreated),o=pr().datepickerFormat,S.next=6,Object(kn.b)([Object(vn.select)("core/editor"),"getEditedPostAttribute"],"date");case 6:return s=S.sent,S.next=9,Object(kn.b)(y.moment.toMoment,s);case 9:return c=S.sent,S.next=12,Object(kn.b)(y.moment.toDatabaseDate,c);case 12:return u=S.sent,S.next=15,o?Object(kn.b)(y.moment.toDate,c,o):Object(kn.b)(y.moment.toDate,c);case 15:return d=S.sent,S.next=18,Object(kn.b)(y.moment.toDatabaseTime,c);case 18:return l=S.sent,S.next=21,Object(kn.b)(y.moment.toTime,c);case 21:return _=S.sent,S.next=24,Object(kn.a)([Object(kn.e)(bn.setTicketStartDate(n,u)),Object(kn.e)(bn.setTicketStartDateInput(n,d)),Object(kn.e)(bn.setTicketStartDateMoment(n,c)),Object(kn.e)(bn.setTicketStartTime(n,l)),Object(kn.e)(bn.setTicketStartTimeInput(n,_)),Object(kn.e)(bn.setTicketTempStartDate(n,u)),Object(kn.e)(bn.setTicketTempStartDateInput(n,d)),Object(kn.e)(bn.setTicketTempStartDateMoment(n,c)),Object(kn.e)(bn.setTicketTempStartTime(n,l)),Object(kn.e)(bn.setTicketTempStartTimeInput(n,_)),Object(kn.e)(bn.setTicketHasBeenCreated(n,i))]);case 24:return S.next=26,Object(kn.b)(Pn.e);case 26:if(!S.sent||!window.tribe.events){S.next=54;break}return S.prev=28,S.next=31,Object(kn.f)(tribe.events.data.blocks.datetime.selectors.getStart);case 31:return m=S.sent,S.next=34,Object(kn.b)(y.moment.toMoment,m);case 34:return p=S.sent,S.next=37,Object(kn.b)(y.moment.toDatabaseDate,p);case 37:return f=S.sent,S.next=40,o?Object(kn.b)(y.moment.toDate,p,o):Object(kn.b)(y.moment.toDate,p);case 40:return T=S.sent,S.next=43,Object(kn.b)(y.moment.toDatabaseTime,p);case 43:return h=S.sent,S.next=46,Object(kn.b)(y.moment.toTime,p);case 46:return b=S.sent,S.next=49,Object(kn.a)([Object(kn.e)(bn.setTicketEndDate(n,f)),Object(kn.e)(bn.setTicketEndDateInput(n,T)),Object(kn.e)(bn.setTicketEndDateMoment(n,p)),Object(kn.e)(bn.setTicketEndTime(n,h)),Object(kn.e)(bn.setTicketEndTimeInput(n,b)),Object(kn.e)(bn.setTicketTempEndDate(n,f)),Object(kn.e)(bn.setTicketTempEndDateInput(n,T)),Object(kn.e)(bn.setTicketTempEndDateMoment(n,p)),Object(kn.e)(bn.setTicketTempEndTime(n,h)),Object(kn.e)(bn.setTicketTempEndTimeInput(n,b))]);case 49:S.next=54;break;case 51:S.prev=51,S.t0=S.catch(28),console.error(S.t0);case 54:return S.next=56,Object(kn.f)(wn.plugins.selectors.hasPlugin,wn.plugins.constants.TICKETS_PLUS);case 56:if(!S.sent){S.next=60;break}return S.next=60,Object(kn.a)([Object(kn.e)(bn.setTicketCapacityType(n,D.TICKET_TYPES[D.SHARED])),Object(kn.e)(bn.setTicketTempCapacityType(n,D.TICKET_TYPES[D.SHARED]))]);case 60:return S.next=62,Object(kn.f)(V);case 62:if(!(M=S.sent)){S.next=66;break}return S.next=66,Object(kn.a)([Object(kn.e)(bn.setTicketCapacity(n,M)),Object(kn.e)(bn.setTicketTempCapacity(n,M))]);case 66:if(0===a){S.next=69;break}return S.next=69,Object(kn.a)([Object(kn.e)(bn.setTicketId(n,a)),Object(kn.b)(Er,{payload:{clientId:n,ticketId:a}})]);case 69:return S.next=71,Object(kn.b)(xr,n);case 71:return S.next=73,Object(kn.d)(jr,n);case 73:case"end":return S.stop()}}),An,this,[[28,51]])}function Mr(e){var t,n,r,a,i,o,s,c;return Sn.a.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return t=new FormData,n={clientId:e},u.next=4,Object(kn.b)([Object(vn.select)("core/editor"),"getBlockRootClientId"],e);case 4:return r=u.sent,u.next=7,Object(kn.f)(pe,n);case 7:return a=u.sent,u.next=10,Object(kn.f)(N);case 10:return i=u.sent,u.t0=t,u.next=14,Object(kn.b)([Object(vn.select)("core/editor"),"getCurrentPostId"]);case 14:return u.t1=u.sent,u.t0.append.call(u.t0,"post_id",u.t1),t.append("provider",a||i),u.t2=t,u.next=20,Object(kn.f)(et,n);case 20:return u.t3=u.sent,u.t2.append.call(u.t2,"name",u.t3),u.t4=t,u.next=25,Object(kn.f)(tt,n);case 25:return u.t5=u.sent,u.t4.append.call(u.t4,"description",u.t5),u.t6=t,u.next=30,Object(kn.f)(nt,n);case 30:return u.t7=u.sent,u.t6.append.call(u.t6,"price",u.t7),u.t8=t,u.next=35,Object(kn.f)(it,n);case 35:return u.t9=u.sent,u.t8.append.call(u.t8,"start_date",u.t9),u.t10=t,u.next=40,Object(kn.f)(lt,n);case 40:return u.t11=u.sent,u.t10.append.call(u.t10,"start_time",u.t11),u.t12=t,u.next=45,Object(kn.f)(ct,n);case 45:return u.t13=u.sent,u.t12.append.call(u.t12,"end_date",u.t13),u.t14=t,u.next=50,Object(kn.f)(mt,n);case 50:return u.t15=u.sent,u.t14.append.call(u.t14,"end_time",u.t15),u.t16=t,u.next=55,Object(kn.f)(rt,n);case 55:return u.t17=u.sent,u.t16.append.call(u.t16,"sku",u.t17),u.t18=t,u.next=60,Object(kn.f)(at,n);case 60:return u.t19=u.sent,u.t18.append.call(u.t18,"iac",u.t19),u.t20=t,u.next=65,Object(kn.b)([Object(vn.select)("core/editor"),"getBlockIndex"],e,r);case 65:return u.t21=u.sent,u.t20.append.call(u.t20,"menu_order",u.t21),u.next=69,Object(kn.f)(ht,n);case 69:return o=u.sent,u.next=72,Object(kn.f)(yt,n);case 72:if(s=u.sent,c=o===lr[ur],t.append("ticket[mode]",c?"":o),t.append("ticket[capacity]",c?"":s),o!==lr[dr]){u.next=82;break}return u.t22=t,u.next=80,Object(kn.f)(K);case 80:u.t23=u.sent,u.t22.append.call(u.t22,"ticket[event_capacity]",u.t23);case 82:return u.abrupt("return",t);case 83:case"end":return u.stop()}}),Hn,this)}function Sr(e){var t,n;return Sn.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return t=Object(vn.dispatch)("core/editor"),n=t.removeBlock,r.next=3,Object(kn.a)([Object(kn.e)(bn.removeTicketBlock(e)),Object(kn.b)(n,e)]);case 3:case"end":return r.stop()}}),Nn,this)}function Er(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,h,b,M,S,E,g,k,v,L,O,Y,w,j,I,P,C,x;return Sn.a.wrap((function(R){for(;;)switch(R.prev=R.next){case 0:if(t=e.payload,n=t.ticketId,r=t.clientId,0!==n){R.next=3;break}return R.abrupt("return");case 3:return R.next=5,Object(kn.e)(bn.setTicketIsLoading(r,!0));case 5:return R.prev=5,R.next=8,Object(kn.b)(fr,{path:"tickets/"+n,namespace:"tribe/tickets/v1"});case 8:if(a=R.sent,i=a.response,o=a.data,s=o.status,c=void 0===s?"":s,u=o.provider,404!==i.status&&"trash"!==c&&u!==D.RSVP){R.next=16;break}return R.next=15,Object(kn.b)(Sr,r);case 15:return R.abrupt("return");case 16:if(!i.ok){R.next=60;break}return d=o.totals,l=void 0===d?{}:d,_=o.available_from,m=o.available_until,p=o.cost_details,f=o.title,T=o.description,h=o.sku,b=o.iac,M=o.capacity_type,S=o.capacity,E=o.supports_attendee_information,g=pr().datepickerFormat,R.next=21,Object(kn.b)(y.moment.toMoment,_);case 21:return k=R.sent,R.next=24,Object(kn.b)(y.moment.toDatabaseDate,k);case 24:return v=R.sent,R.next=27,g?Object(kn.b)(y.moment.toDate,k,g):Object(kn.b)(y.moment.toDate,k);case 27:return L=R.sent,R.next=30,Object(kn.b)(y.moment.toDatabaseTime,k);case 30:return O=R.sent,R.next=33,Object(kn.b)(y.moment.toTime,k);case 33:return Y=R.sent,R.next=36,Object(kn.b)(y.moment.toMoment,"");case 36:if(w=R.sent,j="",I="",P="",C="",!m){R.next=57;break}return R.next=44,Object(kn.b)(y.moment.toMoment,m);case 44:return w=R.sent,R.next=47,Object(kn.b)(y.moment.toDatabaseDate,w);case 47:return j=R.sent,R.next=50,g?Object(kn.b)(y.moment.toDate,w,g):Object(kn.b)(y.moment.toDate,w);case 50:return I=R.sent,R.next=53,Object(kn.b)(y.moment.toDatabaseTime,w);case 53:return P=R.sent,R.next=56,Object(kn.b)(y.moment.toTime,w);case 56:C=R.sent;case 57:return x={title:f,description:T,price:p.values[0],sku:h,iac:b,startDate:v,startDateInput:L,startDateMoment:k,endDate:j,endDateInput:I,endDateMoment:w,startTime:O,endTime:P,startTimeInput:Y,endTimeInput:C,capacityType:M,capacity:S},R.next=60,Object(kn.a)([Object(kn.e)(bn.setTicketDetails(r,x)),Object(kn.e)(bn.setTicketTempDetails(r,x)),Object(kn.e)(bn.setTicketSold(r,l.sold)),Object(kn.e)(bn.setTicketAvailable(r,l.stock)),Object(kn.e)(bn.setTicketCurrencySymbol(r,p.currency_symbol)),Object(kn.e)(bn.setTicketCurrencyPosition(r,p.currency_position)),Object(kn.e)(bn.setTicketProvider(r,u)),Object(kn.e)(bn.setTicketHasAttendeeInfoFields(r,E)),Object(kn.e)(bn.setTicketHasBeenCreated(r,!0))]);case 60:R.next=65;break;case 62:R.prev=62,R.t0=R.catch(5),console.error(R.t0);case 65:return R.next=67,Object(kn.e)(bn.setTicketIsLoading(r,!1));case 67:case"end":return R.stop()}}),Vn,this,[[5,62]])}function gr(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,y,b,M,S,E,g,k,v,D,L,O,Y,w,j,I;return Sn.a.wrap((function(P){for(;;)switch(P.prev=P.next){case 0:return t=e.payload.clientId,n={clientId:t},r=mr(),a=r.add_ticket_nonce,i=void 0===a?"":a,P.next=5,Object(kn.b)(Mr,t);case 5:return(o=P.sent).append("add_ticket_nonce",i),P.prev=7,P.next=10,Object(kn.e)(bn.setTicketIsLoading(t,!0));case 10:return P.next=12,Object(kn.b)(fr,{path:"tickets/",namespace:"tribe/tickets/v1",initParams:{method:"POST",body:o}});case 12:if(s=P.sent,c=s.response,u=s.data,!c.ok){P.next=51;break}return P.next=18,Object(kn.f)(V);case 18:return d=P.sent,P.next=21,Object(kn.f)(K);case 21:if(l=P.sent,""!==d||isNaN(l)||!(l>0)){P.next=25;break}return P.next=25,Object(kn.e)(bn.setTicketsSharedCapacity(l));case 25:return _=-1===u.capacity_details.available?0:u.capacity_details.available,P.next=28,Object(kn.a)([Object(kn.f)(et,n),Object(kn.f)(tt,n),Object(kn.f)(nt,n),Object(kn.f)(rt,n),Object(kn.f)(at,n),Object(kn.f)(it,n),Object(kn.f)(ot,n),Object(kn.f)(st,n),Object(kn.f)(ct,n),Object(kn.f)(ut,n),Object(kn.f)(dt,n),Object(kn.f)(lt,n),Object(kn.f)(mt,n),Object(kn.f)(ft,n),Object(kn.f)(Tt,n),Object(kn.f)(ht,n),Object(kn.f)(yt,n)]);case 28:return m=P.sent,p=h()(m,17),f=p[0],T=p[1],y=p[2],b=p[3],M=p[4],S=p[5],E=p[6],g=p[7],k=p[8],v=p[9],D=p[10],L=p[11],O=p[12],Y=p[13],w=p[14],j=p[15],I=p[16],P.next=49,Object(kn.a)([Object(kn.e)(bn.setTicketDetails(t,{title:f,description:T,price:y,sku:b,iac:M,startDate:S,startDateInput:E,startDateMoment:g,endDate:k,endDateInput:v,endDateMoment:D,startTime:L,endTime:O,startTimeInput:Y,endTimeInput:w,capacityType:j,capacity:I})),Object(kn.e)(bn.setTicketId(t,u.id)),Object(kn.e)(bn.setTicketHasBeenCreated(t,!0)),Object(kn.e)(bn.setTicketAvailable(t,_)),Object(kn.e)(bn.setTicketProvider(t,_r[u.provider_class])),Object(kn.e)(bn.setTicketHasChanges(t,!1))]);case 49:return P.next=51,Object(kn.d)(jr,t);case 51:P.next=56;break;case 53:P.prev=53,P.t0=P.catch(7),console.error(P.t0);case 56:return P.prev=56,P.next=59,Object(kn.e)(bn.setTicketIsLoading(t,!1));case 59:return P.finish(56);case 60:case"end":return P.stop()}}),Fn,this,[[7,53,56,60]])}function kr(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,y,b,M,S,E,g,k,v,D,L,O,Y,w,j,I,P,C,x,R,A,H,N,V,F,K;return Sn.a.wrap((function(W){for(;;)switch(W.prev=W.next){case 0:return t=e.payload.clientId,n={clientId:t},r=mr(),a=r.edit_ticket_nonce,i=void 0===a?"":a,W.next=5,Object(kn.b)(Mr,t);case 5:return(o=W.sent).append("edit_ticket_nonce",i),W.next=9,Object(kn.f)(le,n);case 9:for(s=W.sent,W.prev=10,c=[],u=!0,d=!1,l=void 0,W.prev=15,_=o.entries()[Symbol.iterator]();!(u=(m=_.next()).done);u=!0)p=m.value,f=h()(p,2),T=f[0],y=f[1],c.push(encodeURIComponent(T)+"="+encodeURIComponent(y));W.next=23;break;case 19:W.prev=19,W.t0=W.catch(15),d=!0,l=W.t0;case 23:W.prev=23,W.prev=24,!u&&_.return&&_.return();case 26:if(W.prev=26,!d){W.next=29;break}throw l;case 29:return W.finish(26);case 30:return W.finish(23);case 31:return W.next=33,Object(kn.e)(bn.setTicketIsLoading(t,!0));case 33:return W.next=35,Object(kn.b)(fr,{path:"tickets/"+s,namespace:"tribe/tickets/v1",headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},initParams:{method:"PUT",body:c.join("&")}});case 35:if(b=W.sent,M=b.response,S=b.data,!M.ok){W.next=64;break}return E=S.capacity_details,g=-1===E.available?0:E.available,W.next=43,Object(kn.a)([Object(kn.f)(et,n),Object(kn.f)(tt,n),Object(kn.f)(nt,n),Object(kn.f)(rt,n),Object(kn.f)(at,n),Object(kn.f)(it,n),Object(kn.f)(ot,n),Object(kn.f)(st,n),Object(kn.f)(ct,n),Object(kn.f)(ut,n),Object(kn.f)(dt,n),Object(kn.f)(lt,n),Object(kn.f)(mt,n),Object(kn.f)(ft,n),Object(kn.f)(Tt,n),Object(kn.f)(ht,n),Object(kn.f)(yt,n)]);case 43:return k=W.sent,v=h()(k,17),D=v[0],L=v[1],O=v[2],Y=v[3],w=v[4],j=v[5],I=v[6],P=v[7],C=v[8],x=v[9],R=v[10],A=v[11],H=v[12],N=v[13],V=v[14],F=v[15],K=v[16],W.next=64,Object(kn.a)([Object(kn.e)(bn.setTicketDetails(t,{title:D,description:L,price:O,sku:Y,iac:w,startDate:j,startDateInput:I,startDateMoment:P,endDate:C,endDateInput:x,endDateMoment:R,startTime:A,endTime:H,startTimeInput:N,endTimeInput:V,capacityType:F,capacity:K})),Object(kn.e)(bn.setTicketSold(t,E.sold)),Object(kn.e)(bn.setTicketAvailable(t,g)),Object(kn.e)(bn.setTicketHasChanges(t,!1))]);case 64:W.next=69;break;case 66:W.prev=66,W.t1=W.catch(10),console.error(W.t1);case 69:return W.prev=69,W.next=72,Object(kn.e)(bn.setTicketIsLoading(t,!1));case 72:return W.finish(69);case 73:case"end":return W.stop()}}),Kn,this,[[10,66,69,73],[15,19,23,31],[24,,26,30]])}function vr(e){var t,n,r,a,i,o,s,c,u;return Sn.a.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return t=e.payload.clientId,n={clientId:t},d.next=4,Object(kn.b)([window,"confirm"],Object(L.__)("Are you sure you want to delete this ticket? It cannot be undone."));case 4:if(!d.sent){d.next=33;break}return d.next=8,Object(kn.f)(le,n);case 8:return r=d.sent,d.next=11,Object(kn.f)(ye,n);case 11:return a=d.sent,d.next=14,Object(kn.e)(bn.setTicketIsSelected(t,!1));case 14:return d.next=16,Object(kn.e)(bn.removeTicketBlock(t));case 16:return d.next=18,Object(kn.b)([Object(vn.dispatch)("core/editor"),"clearSelectedBlock"]);case 18:return d.next=20,Object(kn.b)([Object(vn.dispatch)("core/editor"),"removeBlocks"],[t]);case 20:if(!a){d.next=33;break}return i=mr(),o=i.remove_ticket_nonce,s=void 0===o?"":o,d.next=24,Object(kn.b)([Object(vn.select)("core/editor"),"getCurrentPostId"]);case 24:return c=d.sent,u=[encodeURIComponent("post_id")+"="+encodeURIComponent(c),encodeURIComponent("remove_ticket_nonce")+"="+encodeURIComponent(s)],d.prev=26,d.next=29,Object(kn.b)(fr,{path:"tickets/"+r,namespace:"tribe/tickets/v1",headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},initParams:{method:"DELETE",body:u.join("&")}});case 29:d.next=33;break;case 31:d.prev=31,d.t0=d.catch(26);case 33:case"end":return d.stop()}}),Wn,this,[[26,31]])}function Dr(e){var t,n,r,a,i;return Sn.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload.id,o.next=3,Object(kn.e)(bn.setTicketsIsSettingsLoading(!0));case 3:return o.prev=3,o.next=6,Object(kn.b)(fr,{path:"media/"+t});case 6:if(n=o.sent,r=n.response,a=n.data,!r.ok){o.next=13;break}return i={id:a.id,alt:a.alt_text,src:a.media_details.sizes.medium.source_url},o.next=13,Object(kn.e)(bn.setTicketsHeaderImage(i));case 13:o.next=18;break;case 15:o.prev=15,o.t0=o.catch(3),console.error(o.t0);case 18:return o.prev=18,o.next=21,Object(kn.e)(bn.setTicketsIsSettingsLoading(!1));case 21:return o.finish(18);case 22:case"end":return o.stop()}}),Un,this,[[3,15,18,22]])}function Lr(e){var t,n,r,a,i,o,s,c;return Sn.a.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return t=e.payload.image,u.next=3,Object(kn.b)([Object(vn.select)("core/editor"),"getCurrentPostId"]);case 3:return n=u.sent,r={meta:l()({},Yn.i,""+t.id)},u.prev=5,u.next=8,Object(kn.e)(bn.setTicketsIsSettingsLoading(!0));case 8:return u.next=10,Object(kn.e)(Ln.setRSVPIsSettingsLoading(!0));case 10:return a=Object(vn.select)("core/editor").getCurrentPostType(),i=Object(vn.select)("core").getPostType(a),o=i.rest_base,u.next=15,Object(kn.b)(fr,{path:o+"/"+n,headers:{"Content-Type":"application/json"},initParams:{method:"PUT",body:JSON.stringify(r)}});case 15:if(s=u.sent,!s.response.ok){u.next=23;break}return c={id:t.id,alt:t.alt,src:t.sizes.medium.url},u.next=21,Object(kn.e)(bn.setTicketsHeaderImage(c));case 21:return u.next=23,Object(kn.e)(Ln.setRSVPHeaderImage(c));case 23:u.next=27;break;case 25:u.prev=25,u.t0=u.catch(5);case 27:return u.prev=27,u.next=30,Object(kn.e)(bn.setTicketsIsSettingsLoading(!1));case 30:return u.next=32,Object(kn.e)(Ln.setRSVPIsSettingsLoading(!1));case 32:return u.finish(27);case 33:case"end":return u.stop()}}),zn,this,[[5,25,27,33]])}function Or(){var e,t,n,r,a,i;return Sn.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,Object(kn.b)([Object(vn.select)("core/editor"),"getCurrentPostId"]);case 2:return e=o.sent,t={meta:l()({},Yn.i,null)},o.prev=4,o.next=7,Object(kn.e)(bn.setTicketsIsSettingsLoading(!0));case 7:return o.next=9,Object(kn.e)(Ln.setRSVPIsSettingsLoading(!0));case 9:return n=Object(vn.select)("core/editor").getCurrentPostType(),r=Object(vn.select)("core").getPostType(n),a=r.rest_base,o.next=14,Object(kn.b)(y.api.wpREST,{path:a+"/"+e,headers:{"Content-Type":"application/json"},initParams:{method:"PUT",body:JSON.stringify(t)}});case 14:if(i=o.sent,!i.response.ok){o.next=21;break}return o.next=19,Object(kn.e)(bn.setTicketsHeaderImage(hn.a));case 19:return o.next=21,Object(kn.e)(Ln.setRSVPHeaderImage(On.a));case 21:o.next=25;break;case 23:o.prev=23,o.t0=o.catch(4);case 25:return o.prev=25,o.next=28,Object(kn.e)(bn.setTicketsIsSettingsLoading(!1));case 28:return o.next=30,Object(kn.e)(Ln.setRSVPIsSettingsLoading(!1));case 30:return o.finish(25);case 31:case"end":return o.stop()}}),Gn,this,[[4,23,25,31]])}function Yr(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,h,y,b,M;return Sn.a.wrap((function(S){for(;;)switch(S.prev=S.next){case 0:return t=e.payload,n=t.clientId,r=t.details,a=r.title,i=r.description,o=r.price,s=r.sku,c=r.iac,u=r.startDate,d=r.startDateInput,l=r.startDateMoment,_=r.endDate,m=r.endDateInput,p=r.endDateMoment,f=r.startTime,T=r.endTime,h=r.startTimeInput,y=r.endTimeInput,b=r.capacityType,M=r.capacity,S.next=4,Object(kn.a)([Object(kn.e)(bn.setTicketTitle(n,a)),Object(kn.e)(bn.setTicketDescription(n,i)),Object(kn.e)(bn.setTicketPrice(n,o)),Object(kn.e)(bn.setTicketSku(n,s)),Object(kn.e)(bn.setTicketIACSetting(n,c)),Object(kn.e)(bn.setTicketStartDate(n,u)),Object(kn.e)(bn.setTicketStartDateInput(n,d)),Object(kn.e)(bn.setTicketStartDateMoment(n,l)),Object(kn.e)(bn.setTicketEndDate(n,_)),Object(kn.e)(bn.setTicketEndDateInput(n,m)),Object(kn.e)(bn.setTicketEndDateMoment(n,p)),Object(kn.e)(bn.setTicketStartTime(n,f)),Object(kn.e)(bn.setTicketEndTime(n,T)),Object(kn.e)(bn.setTicketStartTimeInput(n,h)),Object(kn.e)(bn.setTicketEndTimeInput(n,y)),Object(kn.e)(bn.setTicketCapacityType(n,b)),Object(kn.e)(bn.setTicketCapacity(n,M))]);case 4:case"end":return S.stop()}}),Bn,this)}function wr(e){var t,n,r,a,i,o,s,c,u,d,l,_,m,p,f,T,h,y,b,M;return Sn.a.wrap((function(S){for(;;)switch(S.prev=S.next){case 0:return t=e.payload,n=t.clientId,r=t.tempDetails,a=r.title,i=r.description,o=r.price,s=r.sku,c=r.iac,u=r.startDate,d=r.startDateInput,l=r.startDateMoment,_=r.endDate,m=r.endDateInput,p=r.endDateMoment,f=r.startTime,T=r.endTime,h=r.startTimeInput,y=r.endTimeInput,b=r.capacityType,M=r.capacity,S.next=4,Object(kn.a)([Object(kn.e)(bn.setTicketTempTitle(n,a)),Object(kn.e)(bn.setTicketTempDescription(n,i)),Object(kn.e)(bn.setTicketTempPrice(n,o)),Object(kn.e)(bn.setTicketTempSku(n,s)),Object(kn.e)(bn.setTicketTempIACSetting(n,c)),Object(kn.e)(bn.setTicketTempStartDate(n,u)),Object(kn.e)(bn.setTicketTempStartDateInput(n,d)),Object(kn.e)(bn.setTicketTempStartDateMoment(n,l)),Object(kn.e)(bn.setTicketTempEndDate(n,_)),Object(kn.e)(bn.setTicketTempEndDateInput(n,m)),Object(kn.e)(bn.setTicketTempEndDateMoment(n,p)),Object(kn.e)(bn.setTicketTempStartTime(n,f)),Object(kn.e)(bn.setTicketTempEndTime(n,T)),Object(kn.e)(bn.setTicketTempStartTimeInput(n,h)),Object(kn.e)(bn.setTicketTempEndTimeInput(n,y)),Object(kn.e)(bn.setTicketTempCapacityType(n,b)),Object(kn.e)(bn.setTicketTempCapacity(n,M))]);case 4:case"end":return S.stop()}}),qn,this)}function jr(e){var t,n;return Sn.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return t=void 0,n=void 0,r.prev=1,r.next=4,Object(kn.f)(ye,{clientId:e});case 4:if(!r.sent){r.next=20;break}return r.next=7,Object(kn.b)(Pn.c);case 7:return t=r.sent,r.next=10,Object(kn.b)(Pn.b);case 10:n=r.sent;case 11:return r.next=14,Object(kn.g)(t);case 14:return r.next=16,Object(kn.b)(kr,{payload:{clientId:e}});case 16:return r.next=18,Object(kn.g)(n);case 18:r.next=11;break;case 20:r.next=25;break;case 22:r.prev=22,r.t0=r.catch(1),console.error(r.t0);case 25:if(r.prev=25,!t){r.next=29;break}return r.next=29,Object(kn.b)([t,"close"]);case 29:if(!n){r.next=32;break}return r.next=32,Object(kn.b)([n,"close"]);case 32:return r.finish(25);case 33:case"end":return r.stop()}}),Jn,this,[[1,22,25,33]])}function Ir(e){var t,n,r;return Sn.a.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,Object(kn.f)(J);case 2:t=a.sent,n=0;case 4:if(!(n<t.length)){a.next=11;break}return r=t[n],a.next=8,Object(kn.b)(Pr,e,r);case 8:n++,a.next=4;break;case 11:case"end":return a.stop()}}),$n,this)}function Pr(e,t){var n,r,a,i,o,s,c,u,d,l,_,m,p;return Sn.a.wrap((function(f){for(;;)switch(f.prev=f.next){case 0:return f.prev=0,f.next=3,Object(kn.f)(dt,{clientId:t});case 3:return n=f.sent,f.next=6,Object(kn.f)(Ce,{clientId:t});case 6:return r=f.sent,f.next=9,Object(kn.b)(Pn.a,e);case 9:return a=f.sent,i=a.moment,f.next=13,Object(kn.a)([Object(kn.b)([n,"local"]),Object(kn.b)([r,"local"]),Object(kn.b)([i,"local"])]);case 13:return f.next=15,Object(kn.b)([n,"isSame"],r,"minute");case 15:return o=f.sent,f.next=18,Object(kn.b)([n,"isSame"],i,"minute");case 18:return s=f.sent,f.next=21,Object(kn.b)(Pn.e);case 21:if(!(f.sent&&window.tribe.events&&o&&s)){f.next=36;break}return f.next=25,Object(kn.f)(window.tribe.events.data.blocks.datetime.selectors.getStart);case 25:return c=f.sent,f.next=28,Object(kn.b)(Pn.a,c);case 28:return u=f.sent,d=u.moment,l=u.date,_=u.dateInput,m=u.time,p=u.timeInput,f.next=36,Object(kn.a)([Object(kn.e)(bn.setTicketTempEndDate(t,l)),Object(kn.e)(bn.setTicketTempEndDateInput(t,_)),Object(kn.e)(bn.setTicketTempEndDateMoment(t,d)),Object(kn.e)(bn.setTicketTempEndTime(t,m)),Object(kn.e)(bn.setTicketTempEndTimeInput(t,p)),Object(kn.e)(bn.setTicketEndDate(t,l)),Object(kn.e)(bn.setTicketEndDateInput(t,_)),Object(kn.e)(bn.setTicketEndDateMoment(t,d)),Object(kn.e)(bn.setTicketEndTime(t,m)),Object(kn.e)(bn.setTicketEndTimeInput(t,p)),Object(kn.e)(bn.setTicketHasChanges(t,!0)),Object(kn.b)(xr,t)]);case 36:f.next=41;break;case 38:f.prev=38,f.t0=f.catch(0),console.error(f.t0);case 41:case"end":return f.stop()}}),Zn,this,[[0,38]])}function Cr(){var e,t,n,r,a,i;return Sn.a.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.prev=0,o.next=3,Object(kn.b)(Pn.d);case 3:return e=o.sent,o.next=6,Object(kn.g)(e);case 6:return o.next=8,Object(kn.b)([e,"close"]);case 8:return o.next=10,Object(kn.b)(Pn.e);case 10:if(!o.sent||!window.tribe.events){o.next=28;break}t=window.tribe.events.data.blocks.datetime.types,n=t.SET_START_DATE_TIME,r=t.SET_START_TIME,a=void 0;case 14:return o.next=17,Object(kn.f)(window.tribe.events.data.blocks.datetime.selectors.getStart);case 17:return i=o.sent,o.next=20,Object(kn.g)([n,r]);case 20:if(!a){o.next=23;break}return o.next=23,Object(kn.c)(a);case 23:return o.next=25,Object(kn.d)(Ir,i);case 25:a=o.sent,o.next=14;break;case 28:o.next=33;break;case 30:o.prev=30,o.t0=o.catch(0),console.error(o.t0);case 33:case"end":return o.stop()}}),Qn,this,[[0,30]])}function xr(e){var t,n,r,a,i,o,s,c,u;return Sn.a.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return t=!1,d.next=3,Object(kn.f)(st,{clientId:e});case 3:return n=d.sent,d.next=6,Object(kn.f)(dt,{clientId:e});case 6:if(r=d.sent,n&&r){d.next=11;break}t=!0,d.next=33;break;case 11:return d.next=13,Object(kn.f)(lt,{clientId:e});case 13:return a=d.sent,d.next=16,Object(kn.f)(mt,{clientId:e});case 16:return i=d.sent,d.next=19,Object(kn.b)(y.time.toSeconds,a,y.time.TIME_FORMAT_HH_MM_SS);case 19:return o=d.sent,d.next=22,Object(kn.b)(y.time.toSeconds,i,y.time.TIME_FORMAT_HH_MM_SS);case 22:return s=d.sent,d.next=25,Object(kn.b)(y.moment.setTimeInSeconds,n.clone(),o);case 25:return c=d.sent,d.next=28,Object(kn.b)(y.moment.setTimeInSeconds,r.clone(),s);case 28:return u=d.sent,d.next=31,Object(kn.b)([c,"isSameOrAfter"],u);case 31:d.sent&&(t=!0);case 33:return d.next=35,Object(kn.e)(bn.setTicketHasDurationError(e,t));case 35:case"end":return d.stop()}}),Xn,this)}function Rr(e){var t,n,r,a,i,o;return Sn.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.clientId,r=t.date,a=t.dayPickerInput,s.next=3,r?Object(kn.b)(y.moment.toMoment,r):void 0;case 3:return i=s.sent,s.next=6,r?Object(kn.b)(y.moment.toDatabaseDate,i):"";case 6:return o=s.sent,s.next=9,Object(kn.e)(bn.setTicketTempStartDate(n,o));case 9:return s.next=11,Object(kn.e)(bn.setTicketTempStartDateInput(n,a.state.value));case 11:return s.next=13,Object(kn.e)(bn.setTicketTempStartDateMoment(n,i));case 13:case"end":return s.stop()}}),er,this)}function Ar(e){var t,n,r,a,i,o;return Sn.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.clientId,r=t.date,a=t.dayPickerInput,s.next=3,r?Object(kn.b)(y.moment.toMoment,r):void 0;case 3:return i=s.sent,s.next=6,r?Object(kn.b)(y.moment.toDatabaseDate,i):"";case 6:return o=s.sent,s.next=9,Object(kn.e)(bn.setTicketTempEndDate(n,o));case 9:return s.next=11,Object(kn.e)(bn.setTicketTempEndDateInput(n,a.state.value));case 11:return s.next=13,Object(kn.e)(bn.setTicketTempEndDateMoment(n,i));case 13:case"end":return s.stop()}}),tr,this)}function Hr(e){var t,n,r,a;return Sn.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.clientId,r=t.seconds,i.next=3,Object(kn.b)(y.time.fromSeconds,r,y.time.TIME_FORMAT_HH_MM);case 3:return a=i.sent,i.next=6,Object(kn.e)(bn.setTicketTempStartTime(n,a+":00"));case 6:case"end":return i.stop()}}),nr,this)}function Nr(e){var t,n,r,a,i,o;return Sn.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.clientId,r=t.seconds,s.next=3,Object(kn.b)(y.time.fromSeconds,r,y.time.TIME_FORMAT_HH_MM);case 3:return a=s.sent,s.next=6,Object(kn.b)(y.moment.toMoment,a,y.moment.TIME_FORMAT,!1);case 6:return i=s.sent,s.next=9,Object(kn.b)(y.moment.toTime,i);case 9:return o=s.sent,s.next=12,Object(kn.e)(bn.setTicketTempStartTimeInput(n,o));case 12:case"end":return s.stop()}}),rr,this)}function Vr(e){var t,n,r,a;return Sn.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.clientId,r=t.seconds,i.next=3,Object(kn.b)(y.time.fromSeconds,r,y.time.TIME_FORMAT_HH_MM);case 3:return a=i.sent,i.next=6,Object(kn.e)(bn.setTicketTempEndTime(n,a+":00"));case 6:case"end":return i.stop()}}),ar,this)}function Fr(e){var t,n,r,a,i,o;return Sn.a.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.clientId,r=t.seconds,s.next=3,Object(kn.b)(y.time.fromSeconds,r,y.time.TIME_FORMAT_HH_MM);case 3:return a=s.sent,s.next=6,Object(kn.b)(y.moment.toMoment,a,y.moment.TIME_FORMAT,!1);case 6:return i=s.sent,s.next=9,Object(kn.b)(y.moment.toTime,i);case 9:return o=s.sent,s.next=12,Object(kn.e)(bn.setTicketTempEndTimeInput(n,o));case 12:case"end":return s.stop()}}),ir,this)}function Kr(){var e,t;return Sn.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,Object(kn.f)(J);case 2:return e=n.sent,n.next=5,Object(kn.f)(In.a);case 5:if(t=n.sent,!e.includes(t)){n.next=13;break}return n.next=9,Object(kn.e)(bn.setTicketIsSelected(t,!1));case 9:return n.next=11,Object(kn.e)(bn.removeTicketBlock(t));case 11:return n.next=13,Object(kn.b)([Object(vn.dispatch)("core/editor"),"removeBlocks"],[t]);case 13:case"end":return n.stop()}}),or,this)}function Wr(e){return Sn.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:t.t0=e.type,t.next=t.t0===f.SET_TICKETS_INITIAL_STATE?3:t.t0===f.RESET_TICKETS_BLOCK?6:t.t0===f.SET_TICKET_INITIAL_STATE?9:t.t0===f.FETCH_TICKET?12:t.t0===f.CREATE_NEW_TICKET?15:t.t0===f.UPDATE_TICKET?18:t.t0===f.DELETE_TICKET?21:t.t0===f.FETCH_TICKETS_HEADER_IMAGE?24:t.t0===f.UPDATE_TICKETS_HEADER_IMAGE?27:t.t0===f.DELETE_TICKETS_HEADER_IMAGE?30:t.t0===f.SET_TICKET_DETAILS?33:t.t0===f.SET_TICKET_TEMP_DETAILS?36:t.t0===f.HANDLE_TICKET_START_DATE?39:t.t0===f.HANDLE_TICKET_END_DATE?46:t.t0===f.HANDLE_TICKET_START_TIME?53:t.t0===f.HANDLE_TICKET_END_TIME?62:t.t0===jn.k?71:74;break;case 3:return t.next=5,Object(kn.b)(hr,e);case 5:return t.abrupt("break",75);case 6:return t.next=8,Object(kn.b)(yr);case 8:return t.abrupt("break",75);case 9:return t.next=11,Object(kn.b)(br,e);case 11:return t.abrupt("break",75);case 12:return t.next=14,Object(kn.b)(Er,e);case 14:return t.abrupt("break",75);case 15:return t.next=17,Object(kn.b)(gr,e);case 17:return t.abrupt("break",75);case 18:return t.next=20,Object(kn.b)(kr,e);case 20:return t.abrupt("break",75);case 21:return t.next=23,Object(kn.b)(vr,e);case 23:return t.abrupt("break",75);case 24:return t.next=26,Object(kn.b)(Dr,e);case 26:return t.abrupt("break",75);case 27:return t.next=29,Object(kn.b)(Lr,e);case 29:return t.abrupt("break",75);case 30:return t.next=32,Object(kn.b)(Or);case 32:return t.abrupt("break",75);case 33:return t.next=35,Object(kn.b)(Yr,e);case 35:return t.abrupt("break",75);case 36:return t.next=38,Object(kn.b)(wr,e);case 38:return t.abrupt("break",75);case 39:return t.next=41,Object(kn.b)(Rr,e);case 41:return t.next=43,Object(kn.b)(xr,e.payload.clientId);case 43:return t.next=45,Object(kn.e)(bn.setTicketHasChanges(e.payload.clientId,!0));case 45:return t.abrupt("break",75);case 46:return t.next=48,Object(kn.b)(Ar,e);case 48:return t.next=50,Object(kn.b)(xr,e.payload.clientId);case 50:return t.next=52,Object(kn.e)(bn.setTicketHasChanges(e.payload.clientId,!0));case 52:return t.abrupt("break",75);case 53:return t.next=55,Object(kn.b)(Hr,e);case 55:return t.next=57,Object(kn.b)(Nr,e);case 57:return t.next=59,Object(kn.b)(xr,e.payload.clientId);case 59:return t.next=61,Object(kn.e)(bn.setTicketHasChanges(e.payload.clientId,!0));case 61:return t.abrupt("break",75);case 62:return t.next=64,Object(kn.b)(Vr,e);case 64:return t.next=66,Object(kn.b)(Fr,e);case 66:return t.next=68,Object(kn.b)(xr,e.payload.clientId);case 68:return t.next=70,Object(kn.e)(bn.setTicketHasChanges(e.payload.clientId,!0));case 70:return t.abrupt("break",75);case 71:return t.next=73,Object(kn.b)(Kr);case 73:case 74:return t.abrupt("break",75);case 75:case"end":return t.stop()}}),sr,this)}function Ur(){return Sn.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(kn.h)([f.SET_TICKETS_INITIAL_STATE,f.RESET_TICKETS_BLOCK,f.SET_TICKET_INITIAL_STATE,f.FETCH_TICKET,f.CREATE_NEW_TICKET,f.UPDATE_TICKET,f.DELETE_TICKET,f.FETCH_TICKETS_HEADER_IMAGE,f.UPDATE_TICKETS_HEADER_IMAGE,f.DELETE_TICKETS_HEADER_IMAGE,f.SET_TICKET_DETAILS,f.SET_TICKET_TEMP_DETAILS,f.HANDLE_TICKET_START_DATE,f.HANDLE_TICKET_END_DATE,f.HANDLE_TICKET_START_TIME,f.HANDLE_TICKET_END_TIME,jn.k],Wr);case 2:return e.next=4,Object(kn.d)(Cr);case 4:case"end":return e.stop()}}),cr,this)}t.c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:yn,t=arguments[1];switch(t.type){case f.SET_TICKETS_HEADER_IMAGE:return s()({},e,{headerImage:Object(hn.b)(e.headerImage,t)});case f.SET_TICKETS_IS_SELECTED:return s()({},e,{isSelected:t.payload.isSelected});case f.SET_TICKETS_IS_SETTINGS_OPEN:return s()({},e,{isSettingsOpen:t.payload.isSettingsOpen});case f.SET_TICKETS_IS_SETTINGS_LOADING:return s()({},e,{isSettingsLoading:t.payload.isSettingsLoading});case f.SET_TICKETS_PROVIDER:return s()({},e,{provider:t.payload.provider});case f.SET_TICKETS_SHARED_CAPACITY:return s()({},e,{sharedCapacity:t.payload.sharedCapacity});case f.SET_TICKETS_TEMP_SHARED_CAPACITY:return s()({},e,{tempSharedCapacity:t.payload.tempSharedCapacity});case f.SET_TICKET_TITLE:case f.SET_TICKET_DESCRIPTION:case f.SET_TICKET_PRICE:case f.SET_TICKET_SKU:case f.SET_TICKET_IAC_SETTING:case f.SET_TICKET_START_DATE:case f.SET_TICKET_START_DATE_INPUT:case f.SET_TICKET_START_DATE_MOMENT:case f.SET_TICKET_END_DATE:case f.SET_TICKET_END_DATE_INPUT:case f.SET_TICKET_END_DATE_MOMENT:case f.SET_TICKET_START_TIME:case f.SET_TICKET_END_TIME:case f.SET_TICKET_START_TIME_INPUT:case f.SET_TICKET_END_TIME_INPUT:case f.SET_TICKET_CAPACITY_TYPE:case f.SET_TICKET_CAPACITY:case f.SET_TICKET_TEMP_TITLE:case f.SET_TICKET_TEMP_DESCRIPTION:case f.SET_TICKET_TEMP_PRICE:case f.SET_TICKET_TEMP_SKU:case f.SET_TICKET_TEMP_IAC_SETTING:case f.SET_TICKET_TEMP_START_DATE:case f.SET_TICKET_TEMP_START_DATE_INPUT:case f.SET_TICKET_TEMP_START_DATE_MOMENT:case f.SET_TICKET_TEMP_END_DATE:case f.SET_TICKET_TEMP_END_DATE_INPUT:case f.SET_TICKET_TEMP_END_DATE_MOMENT:case f.SET_TICKET_TEMP_START_TIME:case f.SET_TICKET_TEMP_END_TIME:case f.SET_TICKET_TEMP_START_TIME_INPUT:case f.SET_TICKET_TEMP_END_TIME_INPUT:case f.SET_TICKET_TEMP_CAPACITY_TYPE:case f.SET_TICKET_TEMP_CAPACITY:case f.SET_TICKET_SOLD:case f.SET_TICKET_AVAILABLE:case f.SET_TICKET_ID:case f.SET_TICKET_CURRENCY_SYMBOL:case f.SET_TICKET_CURRENCY_POSITION:case f.SET_TICKET_PROVIDER:case f.SET_TICKET_HAS_ATTENDEE_INFO_FIELDS:case f.SET_TICKET_IS_LOADING:case f.SET_TICKET_IS_MODAL_OPEN:case f.SET_TICKET_HAS_BEEN_CREATED:case f.SET_TICKET_HAS_CHANGES:case f.SET_TICKET_HAS_DURATION_ERROR:case f.SET_TICKET_IS_SELECTED:case f.REGISTER_TICKET_BLOCK:case f.REMOVE_TICKET_BLOCK:case f.REMOVE_TICKET_BLOCKS:return s()({},e,{tickets:Tn(e.tickets,t)});default:return e}}},function(e,t,n){(function(e){e.exports=function(){"use strict";var t,r;function a(){return t.apply(null,arguments)}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e){return void 0===e}function c(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var n,r=[];for(n=0;n<e.length;++n)r.push(t(e[n],n));return r}function l(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)l(t,n)&&(e[n]=t[n]);return l(t,"toString")&&(e.toString=t.toString),l(t,"valueOf")&&(e.valueOf=t.valueOf),e}function m(e,t,n,r){return gt(e,t,n,r,!0).utc()}function p(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function f(e){if(null==e._isValid){var t=p(e),n=r.call(t.parsedDateParts,(function(e){return null!=e})),a=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(a=a&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return a;e._isValid=a}return e._isValid}function T(e){var t=m(NaN);return null!=e?_(p(t),e):p(t).userInvalidated=!0,t}r=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,r=0;r<n;r++)if(r in t&&e.call(this,t[r],r,t))return!0;return!1};var h=a.momentProperties=[];function y(e,t){var n,r,a;if(s(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),s(t._i)||(e._i=t._i),s(t._f)||(e._f=t._f),s(t._l)||(e._l=t._l),s(t._strict)||(e._strict=t._strict),s(t._tzm)||(e._tzm=t._tzm),s(t._isUTC)||(e._isUTC=t._isUTC),s(t._offset)||(e._offset=t._offset),s(t._pf)||(e._pf=p(t)),s(t._locale)||(e._locale=t._locale),h.length>0)for(n=0;n<h.length;n++)s(a=t[r=h[n]])||(e[r]=a);return e}var b=!1;function M(e){y(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===b&&(b=!0,a.updateOffset(this),b=!1)}function S(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function E(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function g(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=E(t)),n}function k(e,t,n){var r,a=Math.min(e.length,t.length),i=Math.abs(e.length-t.length),o=0;for(r=0;r<a;r++)(n&&e[r]!==t[r]||!n&&g(e[r])!==g(t[r]))&&o++;return o+i}function v(e){!1===a.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function D(e,t){var n=!0;return _((function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,e),n){for(var r,i=[],o=0;o<arguments.length;o++){if(r="","object"==typeof arguments[o]){for(var s in r+="\n["+o+"] ",arguments[0])r+=s+": "+arguments[0][s]+", ";r=r.slice(0,-2)}else r=arguments[o];i.push(r)}v(e+"\nArguments: "+Array.prototype.slice.call(i).join("")+"\n"+(new Error).stack),n=!1}return t.apply(this,arguments)}),t)}var L,O={};function Y(e,t){null!=a.deprecationHandler&&a.deprecationHandler(e,t),O[e]||(v(t),O[e]=!0)}function w(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function j(e,t){var n,r=_({},e);for(n in t)l(t,n)&&(o(e[n])&&o(t[n])?(r[n]={},_(r[n],e[n]),_(r[n],t[n])):null!=t[n]?r[n]=t[n]:delete r[n]);for(n in e)l(e,n)&&!l(t,n)&&o(e[n])&&(r[n]=_({},r[n]));return r}function I(e){null!=e&&this.set(e)}a.suppressDeprecationWarnings=!1,a.deprecationHandler=null,L=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)l(e,t)&&n.push(t);return n};var P={};function C(e,t){var n=e.toLowerCase();P[n]=P[n+"s"]=P[t]=e}function x(e){return"string"==typeof e?P[e]||P[e.toLowerCase()]:void 0}function R(e){var t,n,r={};for(n in e)l(e,n)&&(t=x(n))&&(r[t]=e[n]);return r}var A={};function H(e,t){A[e]=t}function N(e,t,n){var r=""+Math.abs(e),a=t-r.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+r}var V=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,F=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,K={},W={};function U(e,t,n,r){var a=r;"string"==typeof r&&(a=function(){return this[r]()}),e&&(W[e]=a),t&&(W[t[0]]=function(){return N(a.apply(this,arguments),t[1],t[2])}),n&&(W[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),e)})}function z(e,t){return e.isValid()?(t=G(t,e.localeData()),K[t]=K[t]||function(e){var t,n,r,a=e.match(V);for(t=0,n=a.length;t<n;t++)W[a[t]]?a[t]=W[a[t]]:a[t]=(r=a[t]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(t){var r,i="";for(r=0;r<n;r++)i+=w(a[r])?a[r].call(t,e):a[r];return i}}(t),K[t](e)):e.localeData().invalidDate()}function G(e,t){var n=5;function r(e){return t.longDateFormat(e)||e}for(F.lastIndex=0;n>=0&&F.test(e);)e=e.replace(F,r),F.lastIndex=0,n-=1;return e}var B=/\d/,q=/\d\d/,J=/\d{3}/,$=/\d{4}/,Z=/[+-]?\d{6}/,Q=/\d\d?/,X=/\d\d\d\d?/,ee=/\d\d\d\d\d\d?/,te=/\d{1,3}/,ne=/\d{1,4}/,re=/[+-]?\d{1,6}/,ae=/\d+/,ie=/[+-]?\d+/,oe=/Z|[+-]\d\d:?\d\d/gi,se=/Z|[+-]\d\d(?::?\d\d)?/gi,ce=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ue={};function de(e,t,n){ue[e]=w(t)?t:function(e,r){return e&&n?n:t}}function le(e,t){return l(ue,e)?ue[e](t._strict,t._locale):new RegExp(_e(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,n,r,a){return t||n||r||a}))))}function _e(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var me={};function pe(e,t){var n,r=t;for("string"==typeof e&&(e=[e]),c(t)&&(r=function(e,n){n[t]=g(e)}),n=0;n<e.length;n++)me[e[n]]=r}function fe(e,t){pe(e,(function(e,n,r,a){r._w=r._w||{},t(e,r._w,r,a)}))}function Te(e,t,n){null!=t&&l(me,e)&&me[e](t,n._a,n,e)}function he(e){return ye(e)?366:365}function ye(e){return e%4==0&&e%100!=0||e%400==0}U("Y",0,0,(function(){var e=this.year();return e<=9999?""+e:"+"+e})),U(0,["YY",2],0,(function(){return this.year()%100})),U(0,["YYYY",4],0,"year"),U(0,["YYYYY",5],0,"year"),U(0,["YYYYYY",6,!0],0,"year"),C("year","y"),H("year",1),de("Y",ie),de("YY",Q,q),de("YYYY",ne,$),de("YYYYY",re,Z),de("YYYYYY",re,Z),pe(["YYYYY","YYYYYY"],0),pe("YYYY",(function(e,t){t[0]=2===e.length?a.parseTwoDigitYear(e):g(e)})),pe("YY",(function(e,t){t[0]=a.parseTwoDigitYear(e)})),pe("Y",(function(e,t){t[0]=parseInt(e,10)})),a.parseTwoDigitYear=function(e){return g(e)+(g(e)>68?1900:2e3)};var be,Me=Se("FullYear",!0);function Se(e,t){return function(n){return null!=n?(ge(this,e,n),a.updateOffset(this,t),this):Ee(this,e)}}function Ee(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function ge(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ye(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),ke(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function ke(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,r=(t%(n=12)+n)%n;return e+=(t-r)/12,1===r?ye(e)?29:28:31-r%7%2}be=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},U("M",["MM",2],"Mo",(function(){return this.month()+1})),U("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),U("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),C("month","M"),H("month",8),de("M",Q),de("MM",Q,q),de("MMM",(function(e,t){return t.monthsShortRegex(e)})),de("MMMM",(function(e,t){return t.monthsRegex(e)})),pe(["M","MM"],(function(e,t){t[1]=g(e)-1})),pe(["MMM","MMMM"],(function(e,t,n,r){var a=n._locale.monthsParse(e,r,n._strict);null!=a?t[1]=a:p(n).invalidMonth=e}));var ve=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,De="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Le="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Oe(e,t,n){var r,a,i,o=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)i=m([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(a=be.call(this._shortMonthsParse,o))?a:null:-1!==(a=be.call(this._longMonthsParse,o))?a:null:"MMM"===t?-1!==(a=be.call(this._shortMonthsParse,o))||-1!==(a=be.call(this._longMonthsParse,o))?a:null:-1!==(a=be.call(this._longMonthsParse,o))||-1!==(a=be.call(this._shortMonthsParse,o))?a:null}function Ye(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=g(t);else if(!c(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),ke(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function we(e){return null!=e?(Ye(this,e),a.updateOffset(this,!0),this):Ee(this,"Month")}var je=ce,Ie=ce;function Pe(){function e(e,t){return t.length-e.length}var t,n,r=[],a=[],i=[];for(t=0;t<12;t++)n=m([2e3,t]),r.push(this.monthsShort(n,"")),a.push(this.months(n,"")),i.push(this.months(n,"")),i.push(this.monthsShort(n,""));for(r.sort(e),a.sort(e),i.sort(e),t=0;t<12;t++)r[t]=_e(r[t]),a[t]=_e(a[t]);for(t=0;t<24;t++)i[t]=_e(i[t]);this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Ce(e,t,n,r,a,i,o){var s=new Date(e,t,n,r,a,i,o);return e<100&&e>=0&&isFinite(s.getFullYear())&&s.setFullYear(e),s}function xe(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&e>=0&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function Re(e,t,n){var r=7+t-n;return-(7+xe(e,0,r).getUTCDay()-t)%7+r-1}function Ae(e,t,n,r,a){var i,o,s=1+7*(t-1)+(7+n-r)%7+Re(e,r,a);return s<=0?o=he(i=e-1)+s:s>he(e)?(i=e+1,o=s-he(e)):(i=e,o=s),{year:i,dayOfYear:o}}function He(e,t,n){var r,a,i=Re(e.year(),t,n),o=Math.floor((e.dayOfYear()-i-1)/7)+1;return o<1?r=o+Ne(a=e.year()-1,t,n):o>Ne(e.year(),t,n)?(r=o-Ne(e.year(),t,n),a=e.year()+1):(a=e.year(),r=o),{week:r,year:a}}function Ne(e,t,n){var r=Re(e,t,n),a=Re(e+1,t,n);return(he(e)-r+a)/7}U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),C("week","w"),C("isoWeek","W"),H("week",5),H("isoWeek",5),de("w",Q),de("ww",Q,q),de("W",Q),de("WW",Q,q),fe(["w","ww","W","WW"],(function(e,t,n,r){t[r.substr(0,1)]=g(e)})),U("d",0,"do","day"),U("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),U("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),U("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),C("day","d"),C("weekday","e"),C("isoWeekday","E"),H("day",11),H("weekday",11),H("isoWeekday",11),de("d",Q),de("e",Q),de("E",Q),de("dd",(function(e,t){return t.weekdaysMinRegex(e)})),de("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),de("dddd",(function(e,t){return t.weekdaysRegex(e)})),fe(["dd","ddd","dddd"],(function(e,t,n,r){var a=n._locale.weekdaysParse(e,r,n._strict);null!=a?t.d=a:p(n).invalidWeekday=e})),fe(["d","e","E"],(function(e,t,n,r){t[r]=g(e)}));var Ve="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Fe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ke="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function We(e,t,n){var r,a,i,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)i=m([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(i,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(a=be.call(this._weekdaysParse,o))?a:null:"ddd"===t?-1!==(a=be.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=be.call(this._minWeekdaysParse,o))?a:null:"dddd"===t?-1!==(a=be.call(this._weekdaysParse,o))||-1!==(a=be.call(this._shortWeekdaysParse,o))||-1!==(a=be.call(this._minWeekdaysParse,o))?a:null:"ddd"===t?-1!==(a=be.call(this._shortWeekdaysParse,o))||-1!==(a=be.call(this._weekdaysParse,o))||-1!==(a=be.call(this._minWeekdaysParse,o))?a:null:-1!==(a=be.call(this._minWeekdaysParse,o))||-1!==(a=be.call(this._weekdaysParse,o))||-1!==(a=be.call(this._shortWeekdaysParse,o))?a:null}var Ue=ce,ze=ce,Ge=ce;function Be(){function e(e,t){return t.length-e.length}var t,n,r,a,i,o=[],s=[],c=[],u=[];for(t=0;t<7;t++)n=m([2e3,1]).day(t),r=this.weekdaysMin(n,""),a=this.weekdaysShort(n,""),i=this.weekdays(n,""),o.push(r),s.push(a),c.push(i),u.push(r),u.push(a),u.push(i);for(o.sort(e),s.sort(e),c.sort(e),u.sort(e),t=0;t<7;t++)s[t]=_e(s[t]),c[t]=_e(c[t]),u[t]=_e(u[t]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function qe(){return this.hours()%12||12}function Je(e,t){U(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function $e(e,t){return t._meridiemParse}U("H",["HH",2],0,"hour"),U("h",["hh",2],0,qe),U("k",["kk",2],0,(function(){return this.hours()||24})),U("hmm",0,0,(function(){return""+qe.apply(this)+N(this.minutes(),2)})),U("hmmss",0,0,(function(){return""+qe.apply(this)+N(this.minutes(),2)+N(this.seconds(),2)})),U("Hmm",0,0,(function(){return""+this.hours()+N(this.minutes(),2)})),U("Hmmss",0,0,(function(){return""+this.hours()+N(this.minutes(),2)+N(this.seconds(),2)})),Je("a",!0),Je("A",!1),C("hour","h"),H("hour",13),de("a",$e),de("A",$e),de("H",Q),de("h",Q),de("k",Q),de("HH",Q,q),de("hh",Q,q),de("kk",Q,q),de("hmm",X),de("hmmss",ee),de("Hmm",X),de("Hmmss",ee),pe(["H","HH"],3),pe(["k","kk"],(function(e,t,n){var r=g(e);t[3]=24===r?0:r})),pe(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),pe(["h","hh"],(function(e,t,n){t[3]=g(e),p(n).bigHour=!0})),pe("hmm",(function(e,t,n){var r=e.length-2;t[3]=g(e.substr(0,r)),t[4]=g(e.substr(r)),p(n).bigHour=!0})),pe("hmmss",(function(e,t,n){var r=e.length-4,a=e.length-2;t[3]=g(e.substr(0,r)),t[4]=g(e.substr(r,2)),t[5]=g(e.substr(a)),p(n).bigHour=!0})),pe("Hmm",(function(e,t,n){var r=e.length-2;t[3]=g(e.substr(0,r)),t[4]=g(e.substr(r))})),pe("Hmmss",(function(e,t,n){var r=e.length-4,a=e.length-2;t[3]=g(e.substr(0,r)),t[4]=g(e.substr(r,2)),t[5]=g(e.substr(a))}));var Ze,Qe=Se("Hours",!0),Xe={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:De,monthsShort:Le,week:{dow:0,doy:6},weekdays:Ve,weekdaysMin:Ke,weekdaysShort:Fe,meridiemParse:/[ap]\.?m?\.?/i},et={},tt={};function nt(e){return e?e.toLowerCase().replace("_","-"):e}function rt(t){var r=null;if(!et[t]&&void 0!==e&&e&&e.exports)try{r=Ze._abbr,n(276)("./"+t),at(r)}catch(e){}return et[t]}function at(e,t){var n;return e&&(n=s(t)?ot(e):it(e,t))&&(Ze=n),Ze._abbr}function it(e,t){if(null!==t){var n=Xe;if(t.abbr=e,null!=et[e])Y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=et[e]._config;else if(null!=t.parentLocale){if(null==et[t.parentLocale])return tt[t.parentLocale]||(tt[t.parentLocale]=[]),tt[t.parentLocale].push({name:e,config:t}),null;n=et[t.parentLocale]._config}return et[e]=new I(j(n,t)),tt[e]&&tt[e].forEach((function(e){it(e.name,e.config)})),at(e),et[e]}return delete et[e],null}function ot(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Ze;if(!i(e)){if(t=rt(e))return t;e=[e]}return function(e){for(var t,n,r,a,i=0;i<e.length;){for(t=(a=nt(e[i]).split("-")).length,n=(n=nt(e[i+1]))?n.split("-"):null;t>0;){if(r=rt(a.slice(0,t).join("-")))return r;if(n&&n.length>=t&&k(a,n,!0)>=t-1)break;t--}i++}return null}(e)}function st(e){var t,n=e._a;return n&&-2===p(e).overflow&&(t=n[1]<0||n[1]>11?1:n[2]<1||n[2]>ke(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,p(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),p(e)._overflowWeeks&&-1===t&&(t=7),p(e)._overflowWeekday&&-1===t&&(t=8),p(e).overflow=t),e}function ct(e,t,n){return null!=e?e:null!=t?t:n}function ut(e){var t,n,r,i,o=[];if(!e._d){for(r=function(e){var t=new Date(a.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[2]&&null==e._a[1]&&function(e){var t,n,r,a,i,o,s,c;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)i=1,o=4,n=ct(t.GG,e._a[0],He(kt(),1,4).year),r=ct(t.W,1),((a=ct(t.E,1))<1||a>7)&&(c=!0);else{i=e._locale._week.dow,o=e._locale._week.doy;var u=He(kt(),i,o);n=ct(t.gg,e._a[0],u.year),r=ct(t.w,u.week),null!=t.d?((a=t.d)<0||a>6)&&(c=!0):null!=t.e?(a=t.e+i,(t.e<0||t.e>6)&&(c=!0)):a=i}r<1||r>Ne(n,i,o)?p(e)._overflowWeeks=!0:null!=c?p(e)._overflowWeekday=!0:(s=Ae(n,r,a,i,o),e._a[0]=s.year,e._dayOfYear=s.dayOfYear)}(e),null!=e._dayOfYear&&(i=ct(e._a[0],r[0]),(e._dayOfYear>he(i)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),n=xe(i,0,e._dayOfYear),e._a[1]=n.getUTCMonth(),e._a[2]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=o[t]=r[t];for(;t<7;t++)e._a[t]=o[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?xe:Ce).apply(null,o),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==e._d.getDay()&&(p(e).weekdayMismatch=!0)}}var dt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,lt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/Z|[+-]\d\d(?::?\d\d)?/,mt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],pt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ft=/^\/?Date\((\-?\d+)/i;function Tt(e){var t,n,r,a,i,o,s=e._i,c=dt.exec(s)||lt.exec(s);if(c){for(p(e).iso=!0,t=0,n=mt.length;t<n;t++)if(mt[t][1].exec(c[1])){a=mt[t][0],r=!1!==mt[t][2];break}if(null==a)return void(e._isValid=!1);if(c[3]){for(t=0,n=pt.length;t<n;t++)if(pt[t][1].exec(c[3])){i=(c[2]||" ")+pt[t][0];break}if(null==i)return void(e._isValid=!1)}if(!r&&null!=i)return void(e._isValid=!1);if(c[4]){if(!_t.exec(c[4]))return void(e._isValid=!1);o="Z"}e._f=a+(i||"")+(o||""),St(e)}else e._isValid=!1}var ht=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function yt(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}var bt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Mt(e){var t,n,r,a,i,o,s,c=ht.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(c){var u=(t=c[4],n=c[3],r=c[2],a=c[5],i=c[6],o=c[7],s=[yt(t),Le.indexOf(n),parseInt(r,10),parseInt(a,10),parseInt(i,10)],o&&s.push(parseInt(o,10)),s);if(!function(e,t,n){return!e||Fe.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(p(n).weekdayMismatch=!0,n._isValid=!1,!1)}(c[1],u,e))return;e._a=u,e._tzm=function(e,t,n){if(e)return bt[e];if(t)return 0;var r=parseInt(n,10),a=r%100;return(r-a)/100*60+a}(c[8],c[9],c[10]),e._d=xe.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),p(e).rfc2822=!0}else e._isValid=!1}function St(e){if(e._f!==a.ISO_8601)if(e._f!==a.RFC_2822){e._a=[],p(e).empty=!0;var t,n,r,i,o,s=""+e._i,c=s.length,u=0;for(r=G(e._f,e._locale).match(V)||[],t=0;t<r.length;t++)i=r[t],(n=(s.match(le(i,e))||[])[0])&&((o=s.substr(0,s.indexOf(n))).length>0&&p(e).unusedInput.push(o),s=s.slice(s.indexOf(n)+n.length),u+=n.length),W[i]?(n?p(e).empty=!1:p(e).unusedTokens.push(i),Te(i,n,e)):e._strict&&!n&&p(e).unusedTokens.push(i);p(e).charsLeftOver=c-u,s.length>0&&p(e).unusedInput.push(s),e._a[3]<=12&&!0===p(e).bigHour&&e._a[3]>0&&(p(e).bigHour=void 0),p(e).parsedDateParts=e._a.slice(0),p(e).meridiem=e._meridiem,e._a[3]=function(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}(e._locale,e._a[3],e._meridiem),ut(e),st(e)}else Mt(e);else Tt(e)}function Et(e){var t=e._i,n=e._f;return e._locale=e._locale||ot(e._l),null===t||void 0===n&&""===t?T({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),S(t)?new M(st(t)):(u(t)?e._d=t:i(n)?function(e){var t,n,r,a,i;if(0===e._f.length)return p(e).invalidFormat=!0,void(e._d=new Date(NaN));for(a=0;a<e._f.length;a++)i=0,t=y({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[a],St(t),f(t)&&(i+=p(t).charsLeftOver,i+=10*p(t).unusedTokens.length,p(t).score=i,(null==r||i<r)&&(r=i,n=t));_(e,n||t)}(e):n?St(e):function(e){var t=e._i;s(t)?e._d=new Date(a.now()):u(t)?e._d=new Date(t.valueOf()):"string"==typeof t?function(e){var t=ft.exec(e._i);null===t?(Tt(e),!1===e._isValid&&(delete e._isValid,Mt(e),!1===e._isValid&&(delete e._isValid,a.createFromInputFallback(e)))):e._d=new Date(+t[1])}(e):i(t)?(e._a=d(t.slice(0),(function(e){return parseInt(e,10)})),ut(e)):o(t)?function(e){if(!e._d){var t=R(e._i);e._a=d([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),ut(e)}}(e):c(t)?e._d=new Date(t):a.createFromInputFallback(e)}(e),f(e)||(e._d=null),e))}function gt(e,t,n,r,a){var s,c={};return!0!==n&&!1!==n||(r=n,n=void 0),(o(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||i(e)&&0===e.length)&&(e=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=a,c._l=n,c._i=e,c._f=t,c._strict=r,(s=new M(st(Et(c))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function kt(e,t,n,r){return gt(e,t,n,r,!1)}a.createFromInputFallback=D("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))})),a.ISO_8601=function(){},a.RFC_2822=function(){};var vt=D("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=kt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:T()})),Dt=D("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=kt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:T()}));function Lt(e,t){var n,r;if(1===t.length&&i(t[0])&&(t=t[0]),!t.length)return kt();for(n=t[0],r=1;r<t.length;++r)t[r].isValid()&&!t[r][e](n)||(n=t[r]);return n}var Ot=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Yt(e){var t=R(e),n=t.year||0,r=t.quarter||0,a=t.month||0,i=t.week||0,o=t.day||0,s=t.hour||0,c=t.minute||0,u=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===be.call(Ot,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,r=0;r<Ot.length;++r)if(e[Ot[r]]){if(n)return!1;parseFloat(e[Ot[r]])!==g(e[Ot[r]])&&(n=!0)}return!0}(t),this._milliseconds=+d+1e3*u+6e4*c+1e3*s*60*60,this._days=+o+7*i,this._months=+a+3*r+12*n,this._data={},this._locale=ot(),this._bubble()}function wt(e){return e instanceof Yt}function jt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function It(e,t){U(e,0,0,(function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+N(~~(e/60),2)+t+N(~~e%60,2)}))}It("Z",":"),It("ZZ",""),de("Z",se),de("ZZ",se),pe(["Z","ZZ"],(function(e,t,n){n._useUTC=!0,n._tzm=Ct(se,e)}));var Pt=/([\+\-]|\d\d)/gi;function Ct(e,t){var n=(t||"").match(e);if(null===n)return null;var r=((n[n.length-1]||[])+"").match(Pt)||["-",0,0],a=60*r[1]+g(r[2]);return 0===a?0:"+"===r[0]?a:-a}function xt(e,t){var n,r;return t._isUTC?(n=t.clone(),r=(S(e)||u(e)?e.valueOf():kt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+r),a.updateOffset(n,!1),n):kt(e).local()}function Rt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function At(){return!!this.isValid()&&this._isUTC&&0===this._offset}a.updateOffset=function(){};var Ht=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Nt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Vt(e,t){var n,r,a,i,o,s,u=e,d=null;return wt(e)?u={ms:e._milliseconds,d:e._days,M:e._months}:c(e)?(u={},t?u[t]=e:u.milliseconds=e):(d=Ht.exec(e))?(n="-"===d[1]?-1:1,u={y:0,d:g(d[2])*n,h:g(d[3])*n,m:g(d[4])*n,s:g(d[5])*n,ms:g(jt(1e3*d[6]))*n}):(d=Nt.exec(e))?(n="-"===d[1]?-1:(d[1],1),u={y:Ft(d[2],n),M:Ft(d[3],n),w:Ft(d[4],n),d:Ft(d[5],n),h:Ft(d[6],n),m:Ft(d[7],n),s:Ft(d[8],n)}):null==u?u={}:"object"==typeof u&&("from"in u||"to"in u)&&(i=kt(u.from),o=kt(u.to),a=i.isValid()&&o.isValid()?(o=xt(o,i),i.isBefore(o)?s=Kt(i,o):((s=Kt(o,i)).milliseconds=-s.milliseconds,s.months=-s.months),s):{milliseconds:0,months:0},(u={}).ms=a.milliseconds,u.M=a.months),r=new Yt(u),wt(e)&&l(e,"_locale")&&(r._locale=e._locale),r}function Ft(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Kt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Wt(e,t){return function(n,r){var a;return null===r||isNaN(+r)||(Y(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),a=n,n=r,r=a),Ut(this,Vt(n="string"==typeof n?+n:n,r),e),this}}function Ut(e,t,n,r){var i=t._milliseconds,o=jt(t._days),s=jt(t._months);e.isValid()&&(r=null==r||r,s&&Ye(e,Ee(e,"Month")+s*n),o&&ge(e,"Date",Ee(e,"Date")+o*n),i&&e._d.setTime(e._d.valueOf()+i*n),r&&a.updateOffset(e,o||s))}Vt.fn=Yt.prototype,Vt.invalid=function(){return Vt(NaN)};var zt=Wt(1,"add"),Gt=Wt(-1,"subtract");function Bt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,"months");return-(n+(t-r<0?(t-r)/(r-e.clone().add(n-1,"months")):(t-r)/(e.clone().add(n+1,"months")-r)))||0}function qt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ot(e))&&(this._locale=t),this)}a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Jt=D("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function $t(){return this._locale}function Zt(e,t){U(0,[e,e.length],0,t)}function Qt(e,t,n,r,a){var i;return null==e?He(this,r,a).year:(t>(i=Ne(e,r,a))&&(t=i),Xt.call(this,e,t,n,r,a))}function Xt(e,t,n,r,a){var i=Ae(e,t,n,r,a),o=xe(i.year,0,i.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}U(0,["gg",2],0,(function(){return this.weekYear()%100})),U(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Zt("gggg","weekYear"),Zt("ggggg","weekYear"),Zt("GGGG","isoWeekYear"),Zt("GGGGG","isoWeekYear"),C("weekYear","gg"),C("isoWeekYear","GG"),H("weekYear",1),H("isoWeekYear",1),de("G",ie),de("g",ie),de("GG",Q,q),de("gg",Q,q),de("GGGG",ne,$),de("gggg",ne,$),de("GGGGG",re,Z),de("ggggg",re,Z),fe(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,r){t[r.substr(0,2)]=g(e)})),fe(["gg","GG"],(function(e,t,n,r){t[r]=a.parseTwoDigitYear(e)})),U("Q",0,"Qo","quarter"),C("quarter","Q"),H("quarter",7),de("Q",B),pe("Q",(function(e,t){t[1]=3*(g(e)-1)})),U("D",["DD",2],"Do","date"),C("date","D"),H("date",9),de("D",Q),de("DD",Q,q),de("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),pe(["D","DD"],2),pe("Do",(function(e,t){t[2]=g(e.match(Q)[0])}));var en=Se("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),C("dayOfYear","DDD"),H("dayOfYear",4),de("DDD",te),de("DDDD",J),pe(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=g(e)})),U("m",["mm",2],0,"minute"),C("minute","m"),H("minute",14),de("m",Q),de("mm",Q,q),pe(["m","mm"],4);var tn=Se("Minutes",!1);U("s",["ss",2],0,"second"),C("second","s"),H("second",15),de("s",Q),de("ss",Q,q),pe(["s","ss"],5);var nn,rn=Se("Seconds",!1);for(U("S",0,0,(function(){return~~(this.millisecond()/100)})),U(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),U(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),U(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),U(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),U(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),U(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),C("millisecond","ms"),H("millisecond",16),de("S",te,B),de("SS",te,q),de("SSS",te,J),nn="SSSS";nn.length<=9;nn+="S")de(nn,ae);function an(e,t){t[6]=g(1e3*("0."+e))}for(nn="S";nn.length<=9;nn+="S")pe(nn,an);var on=Se("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var sn=M.prototype;function cn(e){return e}sn.add=zt,sn.calendar=function(e,t){var n=e||kt(),r=xt(n,this).startOf("day"),i=a.calendarFormat(this,r)||"sameElse",o=t&&(w(t[i])?t[i].call(this,n):t[i]);return this.format(o||this.localeData().calendar(i,this,kt(n)))},sn.clone=function(){return new M(this)},sn.diff=function(e,t,n){var r,a,i;if(!this.isValid())return NaN;if(!(r=xt(e,this)).isValid())return NaN;switch(a=6e4*(r.utcOffset()-this.utcOffset()),t=x(t)){case"year":i=Bt(this,r)/12;break;case"month":i=Bt(this,r);break;case"quarter":i=Bt(this,r)/3;break;case"second":i=(this-r)/1e3;break;case"minute":i=(this-r)/6e4;break;case"hour":i=(this-r)/36e5;break;case"day":i=(this-r-a)/864e5;break;case"week":i=(this-r-a)/6048e5;break;default:i=this-r}return n?i:E(i)},sn.endOf=function(e){return void 0===(e=x(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},sn.format=function(e){e||(e=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var t=z(this,e);return this.localeData().postformat(t)},sn.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||kt(e).isValid())?Vt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},sn.fromNow=function(e){return this.from(kt(),e)},sn.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||kt(e).isValid())?Vt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},sn.toNow=function(e){return this.to(kt(),e)},sn.get=function(e){return w(this[e=x(e)])?this[e]():this},sn.invalidAt=function(){return p(this).overflow},sn.isAfter=function(e,t){var n=S(e)?e:kt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=x(s(t)?"millisecond":t))?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},sn.isBefore=function(e,t){var n=S(e)?e:kt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=x(s(t)?"millisecond":t))?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},sn.isBetween=function(e,t,n,r){return("("===(r=r||"()")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===r[1]?this.isBefore(t,n):!this.isAfter(t,n))},sn.isSame=function(e,t){var n,r=S(e)?e:kt(e);return!(!this.isValid()||!r.isValid())&&("millisecond"===(t=x(t||"millisecond"))?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},sn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},sn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},sn.isValid=function(){return f(this)},sn.lang=Jt,sn.locale=qt,sn.localeData=$t,sn.max=Dt,sn.min=vt,sn.parsingFlags=function(){return _({},p(this))},sn.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:A[n]});return t.sort((function(e,t){return e.priority-t.priority})),t}(e=R(e)),r=0;r<n.length;r++)this[n[r].unit](e[n[r].unit]);else if(w(this[e=x(e)]))return this[e](t);return this},sn.startOf=function(e){switch(e=x(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},sn.subtract=Gt,sn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},sn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},sn.toDate=function(){return new Date(this.valueOf())},sn.toISOString=function(){if(!this.isValid())return null;var e=this.clone().utc();return e.year()<0||e.year()>9999?z(e,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):w(Date.prototype.toISOString)?this.toDate().toISOString():z(e,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},sn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a=t+'[")]';return this.format(n+r+"-MM-DD[T]HH:mm:ss.SSS"+a)},sn.toJSON=function(){return this.isValid()?this.toISOString():null},sn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},sn.unix=function(){return Math.floor(this.valueOf()/1e3)},sn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},sn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},sn.year=Me,sn.isLeapYear=function(){return ye(this.year())},sn.weekYear=function(e){return Qt.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},sn.isoWeekYear=function(e){return Qt.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},sn.quarter=sn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},sn.month=we,sn.daysInMonth=function(){return ke(this.year(),this.month())},sn.week=sn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},sn.isoWeek=sn.isoWeeks=function(e){var t=He(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},sn.weeksInYear=function(){var e=this.localeData()._week;return Ne(this.year(),e.dow,e.doy)},sn.isoWeeksInYear=function(){return Ne(this.year(),1,4)},sn.date=en,sn.day=sn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},sn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},sn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},sn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},sn.hour=sn.hours=Qe,sn.minute=sn.minutes=tn,sn.second=sn.seconds=rn,sn.millisecond=sn.milliseconds=on,sn.utcOffset=function(e,t,n){var r,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Ct(se,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(r=Rt(this)),this._offset=e,this._isUTC=!0,null!=r&&this.add(r,"m"),i!==e&&(!t||this._changeInProgress?Ut(this,Vt(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Rt(this)},sn.utc=function(e){return this.utcOffset(0,e)},sn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Rt(this),"m")),this},sn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Ct(oe,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},sn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?kt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},sn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},sn.isLocal=function(){return!!this.isValid()&&!this._isUTC},sn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},sn.isUtc=At,sn.isUTC=At,sn.zoneAbbr=function(){return this._isUTC?"UTC":""},sn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},sn.dates=D("dates accessor is deprecated. Use date instead.",en),sn.months=D("months accessor is deprecated. Use month instead",we),sn.years=D("years accessor is deprecated. Use year instead",Me),sn.zone=D("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),sn.isDSTShifted=D("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var e={};if(y(e,this),(e=Et(e))._a){var t=e._isUTC?m(e._a):kt(e._a);this._isDSTShifted=this.isValid()&&k(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var un=I.prototype;function dn(e,t,n,r){var a=ot(),i=m().set(r,t);return a[n](i,e)}function ln(e,t,n){if(c(e)&&(t=e,e=void 0),e=e||"",null!=t)return dn(e,t,n,"month");var r,a=[];for(r=0;r<12;r++)a[r]=dn(e,r,n,"month");return a}function _n(e,t,n,r){"boolean"==typeof e?(c(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,c(t)&&(n=t,t=void 0),t=t||"");var a,i=ot(),o=e?i._week.dow:0;if(null!=n)return dn(t,(n+o)%7,r,"day");var s=[];for(a=0;a<7;a++)s[a]=dn(t,(a+o)%7,r,"day");return s}un.calendar=function(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return w(r)?r.call(t,n):r},un.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,(function(e){return e.slice(1)})),this._longDateFormat[e])},un.invalidDate=function(){return this._invalidDate},un.ordinal=function(e){return this._ordinal.replace("%d",e)},un.preparse=cn,un.postformat=cn,un.relativeTime=function(e,t,n,r){var a=this._relativeTime[n];return w(a)?a(e,t,n,r):a.replace(/%d/i,e)},un.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return w(n)?n(t):n.replace(/%s/i,t)},un.set=function(e){var t,n;for(n in e)w(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},un.months=function(e,t){return e?i(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||ve).test(t)?"format":"standalone"][e.month()]:i(this._months)?this._months:this._months.standalone},un.monthsShort=function(e,t){return e?i(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[ve.test(t)?"format":"standalone"][e.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},un.monthsParse=function(e,t,n){var r,a,i;if(this._monthsParseExact)return Oe.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(a=m([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(a,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(a,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(i="^"+this.months(a,"")+"|^"+this.monthsShort(a,""),this._monthsParse[r]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[r].test(e))return r;if(n&&"MMM"===t&&this._shortMonthsParse[r].test(e))return r;if(!n&&this._monthsParse[r].test(e))return r}},un.monthsRegex=function(e){return this._monthsParseExact?(l(this,"_monthsRegex")||Pe.call(this),e?this._monthsStrictRegex:this._monthsRegex):(l(this,"_monthsRegex")||(this._monthsRegex=Ie),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},un.monthsShortRegex=function(e){return this._monthsParseExact?(l(this,"_monthsRegex")||Pe.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(l(this,"_monthsShortRegex")||(this._monthsShortRegex=je),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},un.week=function(e){return He(e,this._week.dow,this._week.doy).week},un.firstDayOfYear=function(){return this._week.doy},un.firstDayOfWeek=function(){return this._week.dow},un.weekdays=function(e,t){return e?i(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:i(this._weekdays)?this._weekdays:this._weekdays.standalone},un.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},un.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},un.weekdaysParse=function(e,t,n){var r,a,i;if(this._weekdaysParseExact)return We.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(a=m([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(a,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(a,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(a,"").replace(".",".?")+"$","i")),this._weekdaysParse[r]||(i="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[r]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}},un.weekdaysRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=Ue),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},un.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ze),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},un.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ge),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},un.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},un.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},at("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===g(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),a.lang=D("moment.lang is deprecated. Use moment.locale instead.",at),a.langData=D("moment.langData is deprecated. Use moment.localeData instead.",ot);var mn=Math.abs;function pn(e,t,n,r){var a=Vt(t,n);return e._milliseconds+=r*a._milliseconds,e._days+=r*a._days,e._months+=r*a._months,e._bubble()}function fn(e){return e<0?Math.floor(e):Math.ceil(e)}function Tn(e){return 4800*e/146097}function hn(e){return 146097*e/4800}function yn(e){return function(){return this.as(e)}}var bn=yn("ms"),Mn=yn("s"),Sn=yn("m"),En=yn("h"),gn=yn("d"),kn=yn("w"),vn=yn("M"),Dn=yn("y");function Ln(e){return function(){return this.isValid()?this._data[e]:NaN}}var On=Ln("milliseconds"),Yn=Ln("seconds"),wn=Ln("minutes"),jn=Ln("hours"),In=Ln("days"),Pn=Ln("months"),Cn=Ln("years"),xn=Math.round,Rn={ss:44,s:45,m:45,h:22,d:26,M:11};function An(e,t,n,r,a){return a.relativeTime(t||1,!!n,e,r)}var Hn=Math.abs;function Nn(e){return(e>0)-(e<0)||+e}function Vn(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Hn(this._milliseconds)/1e3,r=Hn(this._days),a=Hn(this._months);e=E(n/60),t=E(e/60),n%=60,e%=60;var i=E(a/12),o=a%=12,s=r,c=t,u=e,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",l=this.asSeconds();if(!l)return"P0D";var _=l<0?"-":"",m=Nn(this._months)!==Nn(l)?"-":"",p=Nn(this._days)!==Nn(l)?"-":"",f=Nn(this._milliseconds)!==Nn(l)?"-":"";return _+"P"+(i?m+i+"Y":"")+(o?m+o+"M":"")+(s?p+s+"D":"")+(c||u||d?"T":"")+(c?f+c+"H":"")+(u?f+u+"M":"")+(d?f+d+"S":"")}var Fn=Yt.prototype;return Fn.isValid=function(){return this._isValid},Fn.abs=function(){var e=this._data;return this._milliseconds=mn(this._milliseconds),this._days=mn(this._days),this._months=mn(this._months),e.milliseconds=mn(e.milliseconds),e.seconds=mn(e.seconds),e.minutes=mn(e.minutes),e.hours=mn(e.hours),e.months=mn(e.months),e.years=mn(e.years),this},Fn.add=function(e,t){return pn(this,e,t,1)},Fn.subtract=function(e,t){return pn(this,e,t,-1)},Fn.as=function(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=x(e))||"year"===e)return t=this._days+r/864e5,n=this._months+Tn(t),"month"===e?n:n/12;switch(t=this._days+Math.round(hn(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}},Fn.asMilliseconds=bn,Fn.asSeconds=Mn,Fn.asMinutes=Sn,Fn.asHours=En,Fn.asDays=gn,Fn.asWeeks=kn,Fn.asMonths=vn,Fn.asYears=Dn,Fn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12):NaN},Fn._bubble=function(){var e,t,n,r,a,i=this._milliseconds,o=this._days,s=this._months,c=this._data;return i>=0&&o>=0&&s>=0||i<=0&&o<=0&&s<=0||(i+=864e5*fn(hn(s)+o),o=0,s=0),c.milliseconds=i%1e3,e=E(i/1e3),c.seconds=e%60,t=E(e/60),c.minutes=t%60,n=E(t/60),c.hours=n%24,o+=E(n/24),a=E(Tn(o)),s+=a,o-=fn(hn(a)),r=E(s/12),s%=12,c.days=o,c.months=s,c.years=r,this},Fn.clone=function(){return Vt(this)},Fn.get=function(e){return e=x(e),this.isValid()?this[e+"s"]():NaN},Fn.milliseconds=On,Fn.seconds=Yn,Fn.minutes=wn,Fn.hours=jn,Fn.days=In,Fn.weeks=function(){return E(this.days()/7)},Fn.months=Pn,Fn.years=Cn,Fn.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),n=function(e,t,n){var r=Vt(e).abs(),a=xn(r.as("s")),i=xn(r.as("m")),o=xn(r.as("h")),s=xn(r.as("d")),c=xn(r.as("M")),u=xn(r.as("y")),d=a<=Rn.ss&&["s",a]||a<Rn.s&&["ss",a]||i<=1&&["m"]||i<Rn.m&&["mm",i]||o<=1&&["h"]||o<Rn.h&&["hh",o]||s<=1&&["d"]||s<Rn.d&&["dd",s]||c<=1&&["M"]||c<Rn.M&&["MM",c]||u<=1&&["y"]||["yy",u];return d[2]=t,d[3]=+e>0,d[4]=n,An.apply(null,d)}(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)},Fn.toISOString=Vn,Fn.toString=Vn,Fn.toJSON=Vn,Fn.locale=qt,Fn.localeData=$t,Fn.toIsoString=D("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Vn),Fn.lang=Jt,U("X",0,0,"unix"),U("x",0,0,"valueOf"),de("x",ie),de("X",/[+-]?\d+(\.\d{1,3})?/),pe("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))})),pe("x",(function(e,t,n){n._d=new Date(g(e))})),a.version="2.19.3",t=kt,a.fn=sn,a.min=function(){var e=[].slice.call(arguments,0);return Lt("isBefore",e)},a.max=function(){var e=[].slice.call(arguments,0);return Lt("isAfter",e)},a.now=function(){return Date.now?Date.now():+new Date},a.utc=m,a.unix=function(e){return kt(1e3*e)},a.months=function(e,t){return ln(e,t,"months")},a.isDate=u,a.locale=at,a.invalid=T,a.duration=Vt,a.isMoment=S,a.weekdays=function(e,t,n){return _n(e,t,n,"weekdays")},a.parseZone=function(){return kt.apply(null,arguments).parseZone()},a.localeData=ot,a.isDuration=wt,a.monthsShort=function(e,t){return ln(e,t,"monthsShort")},a.weekdaysMin=function(e,t,n){return _n(e,t,n,"weekdaysMin")},a.defineLocale=it,a.updateLocale=function(e,t){if(null!=t){var n,r,a=Xe;null!=(r=rt(e))&&(a=r._config),t=j(a,t),(n=new I(t)).parentLocale=et[e],et[e]=n,at(e)}else null!=et[e]&&(null!=et[e].parentLocale?et[e]=et[e].parentLocale:null!=et[e]&&delete et[e]);return et[e]},a.locales=function(){return L(et)},a.weekdaysShort=function(e,t,n){return _n(e,t,n,"weekdaysShort")},a.normalizeUnits=x,a.relativeTimeRounding=function(e){return void 0===e?xn:"function"==typeof e&&(xn=e,!0)},a.relativeTimeThreshold=function(e,t){return void 0!==Rn[e]&&(void 0===t?Rn[e]:(Rn[e]=t,"s"===e&&(Rn.ss=t-1),!0))},a.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},a.prototype=sn,a}()}).call(this,n(82)(e))},function(e,t,n){"use strict";function r(e,t){return e===t}function a(e,t,n){if(null===t||null===n||t.length!==n.length)return!1;for(var r=t.length,a=0;a<r;a++)if(!e(t[a],n[a]))return!1;return!0}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r,n=null,i=null;return function(){return a(t,n,arguments)||(i=e.apply(null,arguments)),n=arguments,i}}function o(e){var t=Array.isArray(e[0])?e[0]:e;if(!t.every((function(e){return"function"==typeof e}))){var n=t.map((function(e){return typeof e})).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, instead received the following types: ["+n+"]")}return t}function s(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return function(){for(var t=arguments.length,r=Array(t),a=0;a<t;a++)r[a]=arguments[a];var s=0,c=r.pop(),u=o(r),d=e.apply(void 0,[function(){return s++,c.apply(null,arguments)}].concat(n)),l=i((function(){for(var e=[],t=u.length,n=0;n<t;n++)e.push(u[n].apply(null,arguments));return d.apply(null,e)}));return l.resultFunc=c,l.recomputations=function(){return s},l.resetRecomputations=function(){return s=0},l}}t.__esModule=!0,t.defaultMemoize=i,t.createSelectorCreator=s,t.createStructuredSelector=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c;if("object"!=typeof e)throw new Error("createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);var n=Object.keys(e);return t(n.map((function(t){return e[t]})),(function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.reduce((function(e,t,r){return e[n[r]]=t,e}),{})}))};var c=t.createSelector=s(i)},function(e,t,n){"use strict";n.d(t,"u",(function(){return i})),n.d(t,"e",(function(){return o})),n.d(t,"b",(function(){return c})),n.d(t,"a",(function(){return u})),n.d(t,"c",(function(){return d})),n.d(t,"d",(function(){return l})),n.d(t,"o",(function(){return m})),n.d(t,"r",(function(){return p})),n.d(t,"l",(function(){return f})),n.d(t,"g",(function(){return T})),n.d(t,"n",(function(){return b})),n.d(t,"s",(function(){return M})),n.d(t,"t",(function(){return S})),n.d(t,"f",(function(){return E})),n.d(t,"i",(function(){return g})),n.d(t,"j",(function(){return k})),n.d(t,"v",(function(){return D})),n.d(t,"q",(function(){return Y})),n.d(t,"p",(function(){return w})),n.d(t,"k",(function(){return j})),n.d(t,"w",(function(){return I})),n.d(t,"m",(function(){return P})),n.d(t,"h",(function(){return C})),n.d(t,"x",(function(){return x}));var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(e){return"@@redux-saga/"+e},o=i("TASK"),s=i("HELPER"),c=i("MATCH"),u=i("CANCEL_PROMISE"),d=i("SAGA_ACTION"),l=i("SELF_CANCELLATION"),_=function(e){return function(){return e}},m=_(!0),p=function(){},f=function(e){return e};function T(e,t,n){if(!t(e))throw w("error","uncaught at check",n),new Error(n)}var h=Object.prototype.hasOwnProperty;function y(e,t){return b.notUndef(e)&&h.call(e,t)}var b={undef:function(e){return null==e},notUndef:function(e){return null!=e},func:function(e){return"function"==typeof e},number:function(e){return"number"==typeof e},string:function(e){return"string"==typeof e},array:Array.isArray,object:function(e){return e&&!b.array(e)&&"object"===(void 0===e?"undefined":a(e))},promise:function(e){return e&&b.func(e.then)},iterator:function(e){return e&&b.func(e.next)&&b.func(e.throw)},iterable:function(e){return e&&b.func(Symbol)?b.func(e[Symbol.iterator]):b.array(e)},task:function(e){return e&&e[o]},observable:function(e){return e&&b.func(e.subscribe)},buffer:function(e){return e&&b.func(e.isEmpty)&&b.func(e.take)&&b.func(e.put)},pattern:function(e){return e&&(b.string(e)||"symbol"===(void 0===e?"undefined":a(e))||b.func(e)||b.array(e))},channel:function(e){return e&&b.func(e.take)&&b.func(e.close)},helper:function(e){return e&&e[s]},stringableFunc:function(e){return b.func(e)&&y(e,"toString")}},M={assign:function(e,t){for(var n in t)y(t,n)&&(e[n]=t[n])}};function S(e,t){var n=e.indexOf(t);n>=0&&e.splice(n,1)}var E={from:function(e){var t=Array(e.length);for(var n in e)y(e,n)&&(t[n]=e[n]);return t}};function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=r({},e),n=new Promise((function(e,n){t.resolve=e,t.reject=n}));return t.promise=n,t}function k(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=void 0,r=new Promise((function(r){n=setTimeout((function(){return r(t)}),e)}));return r[u]=function(){return clearTimeout(n)},r}function v(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return function(){return++e}}var D=v(),L=function(e){throw e},O=function(e){return{value:e,done:!0}};function Y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:L,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments[3],a={name:n,next:e,throw:t,return:O};return r&&(a[s]=!0),"undefined"!=typeof Symbol&&(a[Symbol.iterator]=function(){return a}),a}function w(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";"undefined"==typeof window?console.log("redux-saga "+e+": "+t+"\n"+(n&&n.stack||n)):console[e](t,n)}function j(e,t){return function(){return e.apply(void 0,arguments)}}var I=function(e,t){return e+" has been deprecated in favor of "+t+", please update your code"},P=function(e){return new Error("\n redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug\n in redux-saga code and not yours. Thanks for reporting this in the project's github repo.\n Error: "+e+"\n")},C=function(e,t){return(e?e+".":"")+"setContext(props): argument "+t+" is not a plain object"},x=function(e){return function(t){return e(Object.defineProperty(t,d,{value:!0}))}}},function(e,t,n){"use strict";n.d(t,"n",(function(){return r})),n.d(t,"o",(function(){return a})),n.d(t,"b",(function(){return i})),n.d(t,"k",(function(){return o})),n.d(t,"a",(function(){return s})),n.d(t,"d",(function(){return c})),n.d(t,"m",(function(){return u})),n.d(t,"f",(function(){return d})),n.d(t,"l",(function(){return l})),n.d(t,"i",(function(){return _})),n.d(t,"e",(function(){return m})),n.d(t,"c",(function(){return p})),n.d(t,"g",(function(){return f})),n.d(t,"j",(function(){return T})),n.d(t,"h",(function(){return h}));var r="@@MT/TICKETS",a="tribe_rsvp_tickets",i="_tribe_rsvp_for_event",o="_tribe_ticket_show_description",s="_price",c="_tribe_ticket_capacity",u="_ticket_start_date",d="_ticket_end_date",l="_tribe_ticket_show_not_going",_="_tribe_ticket_header",m="_tribe_default_ticket_provider",p="_tribe_tickets_list",f="_tribe_ticket_going_count",T="_tribe_ticket_not_going_count",h="_tribe_ticket_has_attendee_info_fields"},function(e,t,n){"use strict";t.__esModule=!0;var r,a=n(270),i=(r=a)&&r.__esModule?r:{default:r};t.default=i.default||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}},function(e,t,n){"use strict";n.r(t),n.d(t,"setTicketsInitialState",(function(){return a})),n.d(t,"resetTicketsBlock",(function(){return i})),n.d(t,"setTicketsHeaderImage",(function(){return o})),n.d(t,"setTicketsIsSelected",(function(){return s})),n.d(t,"setTicketsIsSettingsOpen",(function(){return c})),n.d(t,"setTicketsIsSettingsLoading",(function(){return u})),n.d(t,"openSettings",(function(){return d})),n.d(t,"closeSettings",(function(){return l})),n.d(t,"setTicketsProvider",(function(){return _})),n.d(t,"setTicketsSharedCapacity",(function(){return m})),n.d(t,"setTicketsTempSharedCapacity",(function(){return p})),n.d(t,"fetchTicketsHeaderImage",(function(){return f})),n.d(t,"updateTicketsHeaderImage",(function(){return T})),n.d(t,"deleteTicketsHeaderImage",(function(){return h})),n.d(t,"setTicketTitle",(function(){return y})),n.d(t,"setTicketDescription",(function(){return b})),n.d(t,"setTicketPrice",(function(){return M})),n.d(t,"setTicketSku",(function(){return S})),n.d(t,"setTicketIACSetting",(function(){return E})),n.d(t,"setTicketStartDate",(function(){return g})),n.d(t,"setTicketStartDateInput",(function(){return k})),n.d(t,"setTicketStartDateMoment",(function(){return v})),n.d(t,"setTicketEndDate",(function(){return D})),n.d(t,"setTicketEndDateInput",(function(){return L})),n.d(t,"setTicketEndDateMoment",(function(){return O})),n.d(t,"setTicketStartTime",(function(){return Y})),n.d(t,"setTicketEndTime",(function(){return w})),n.d(t,"setTicketStartTimeInput",(function(){return j})),n.d(t,"setTicketEndTimeInput",(function(){return I})),n.d(t,"setTicketCapacityType",(function(){return P})),n.d(t,"setTicketCapacity",(function(){return C})),n.d(t,"setTicketTempTitle",(function(){return x})),n.d(t,"setTicketTempDescription",(function(){return R})),n.d(t,"setTicketTempPrice",(function(){return A})),n.d(t,"setTicketTempSku",(function(){return H})),n.d(t,"setTicketTempIACSetting",(function(){return N})),n.d(t,"setTicketTempStartDate",(function(){return V})),n.d(t,"setTicketTempStartDateInput",(function(){return F})),n.d(t,"setTicketTempStartDateMoment",(function(){return K})),n.d(t,"setTicketTempEndDate",(function(){return W})),n.d(t,"setTicketTempEndDateInput",(function(){return U})),n.d(t,"setTicketTempEndDateMoment",(function(){return z})),n.d(t,"setTicketTempStartTime",(function(){return G})),n.d(t,"setTicketTempEndTime",(function(){return B})),n.d(t,"setTicketTempStartTimeInput",(function(){return q})),n.d(t,"setTicketTempEndTimeInput",(function(){return J})),n.d(t,"setTicketTempCapacityType",(function(){return $})),n.d(t,"setTicketTempCapacity",(function(){return Z})),n.d(t,"registerTicketBlock",(function(){return Q})),n.d(t,"removeTicketBlock",(function(){return X})),n.d(t,"removeTicketBlocks",(function(){return ee})),n.d(t,"setTicketSold",(function(){return te})),n.d(t,"setTicketAvailable",(function(){return ne})),n.d(t,"setTicketId",(function(){return re})),n.d(t,"setTicketCurrencySymbol",(function(){return ae})),n.d(t,"setTicketCurrencyPosition",(function(){return ie})),n.d(t,"setTicketProvider",(function(){return oe})),n.d(t,"setTicketHasAttendeeInfoFields",(function(){return se})),n.d(t,"setTicketIsLoading",(function(){return ce})),n.d(t,"setTicketIsModalOpen",(function(){return ue})),n.d(t,"setTicketHasBeenCreated",(function(){return de})),n.d(t,"setTicketHasChanges",(function(){return le})),n.d(t,"setTicketHasDurationError",(function(){return _e})),n.d(t,"setTicketIsSelected",(function(){return me})),n.d(t,"setTicketDetails",(function(){return pe})),n.d(t,"setTicketTempDetails",(function(){return fe})),n.d(t,"handleTicketStartDate",(function(){return Te})),n.d(t,"handleTicketEndDate",(function(){return he})),n.d(t,"handleTicketStartTime",(function(){return ye})),n.d(t,"handleTicketEndTime",(function(){return be})),n.d(t,"fetchTicket",(function(){return Me})),n.d(t,"createNewTicket",(function(){return Se})),n.d(t,"updateTicket",(function(){return Ee})),n.d(t,"deleteTicket",(function(){return ge})),n.d(t,"setTicketInitialState",(function(){return ke}));var r=n(4),a=function(e){return{type:r.g.SET_TICKETS_INITIAL_STATE,payload:e}},i=function(){return{type:r.g.RESET_TICKETS_BLOCK}},o=function(e){return{type:r.g.SET_TICKETS_HEADER_IMAGE,payload:e}},s=function(e){return{type:r.g.SET_TICKETS_IS_SELECTED,payload:{isSelected:e}}},c=function(e){return{type:r.g.SET_TICKETS_IS_SETTINGS_OPEN,payload:{isSettingsOpen:e}}},u=function(e){return{type:r.g.SET_TICKETS_IS_SETTINGS_LOADING,payload:{isSettingsLoading:e}}},d=function(){return c(!0)},l=function(){return c(!1)},_=function(e){return{type:r.g.SET_TICKETS_PROVIDER,payload:{provider:e}}},m=function(e){return{type:r.g.SET_TICKETS_SHARED_CAPACITY,payload:{sharedCapacity:e}}},p=function(e){return{type:r.g.SET_TICKETS_TEMP_SHARED_CAPACITY,payload:{tempSharedCapacity:e}}},f=function(e){return{type:r.g.FETCH_TICKETS_HEADER_IMAGE,payload:{id:e}}},T=function(e){return{type:r.g.UPDATE_TICKETS_HEADER_IMAGE,payload:{image:e}}},h=function(){return{type:r.g.DELETE_TICKETS_HEADER_IMAGE}},y=function(e,t){return{type:r.g.SET_TICKET_TITLE,payload:{clientId:e,title:t}}},b=function(e,t){return{type:r.g.SET_TICKET_DESCRIPTION,payload:{clientId:e,description:t}}},M=function(e,t){return{type:r.g.SET_TICKET_PRICE,payload:{clientId:e,price:t}}},S=function(e,t){return{type:r.g.SET_TICKET_SKU,payload:{clientId:e,sku:t}}},E=function(e,t){return{type:r.g.SET_TICKET_IAC_SETTING,payload:{clientId:e,iac:t}}},g=function(e,t){return{type:r.g.SET_TICKET_START_DATE,payload:{clientId:e,startDate:t}}},k=function(e,t){return{type:r.g.SET_TICKET_START_DATE_INPUT,payload:{clientId:e,startDateInput:t}}},v=function(e,t){return{type:r.g.SET_TICKET_START_DATE_MOMENT,payload:{clientId:e,startDateMoment:t}}},D=function(e,t){return{type:r.g.SET_TICKET_END_DATE,payload:{clientId:e,endDate:t}}},L=function(e,t){return{type:r.g.SET_TICKET_END_DATE_INPUT,payload:{clientId:e,endDateInput:t}}},O=function(e,t){return{type:r.g.SET_TICKET_END_DATE_MOMENT,payload:{clientId:e,endDateMoment:t}}},Y=function(e,t){return{type:r.g.SET_TICKET_START_TIME,payload:{clientId:e,startTime:t}}},w=function(e,t){return{type:r.g.SET_TICKET_END_TIME,payload:{clientId:e,endTime:t}}},j=function(e,t){return{type:r.g.SET_TICKET_START_TIME_INPUT,payload:{clientId:e,startTimeInput:t}}},I=function(e,t){return{type:r.g.SET_TICKET_END_TIME_INPUT,payload:{clientId:e,endTimeInput:t}}},P=function(e,t){return{type:r.g.SET_TICKET_CAPACITY_TYPE,payload:{clientId:e,capacityType:t}}},C=function(e,t){return{type:r.g.SET_TICKET_CAPACITY,payload:{clientId:e,capacity:t}}},x=function(e,t){return{type:r.g.SET_TICKET_TEMP_TITLE,payload:{clientId:e,title:t}}},R=function(e,t){return{type:r.g.SET_TICKET_TEMP_DESCRIPTION,payload:{clientId:e,description:t}}},A=function(e,t){return{type:r.g.SET_TICKET_TEMP_PRICE,payload:{clientId:e,price:t}}},H=function(e,t){return{type:r.g.SET_TICKET_TEMP_SKU,payload:{clientId:e,sku:t}}},N=function(e,t){return{type:r.g.SET_TICKET_TEMP_IAC_SETTING,payload:{clientId:e,iac:t}}},V=function(e,t){return{type:r.g.SET_TICKET_TEMP_START_DATE,payload:{clientId:e,startDate:t}}},F=function(e,t){return{type:r.g.SET_TICKET_TEMP_START_DATE_INPUT,payload:{clientId:e,startDateInput:t}}},K=function(e,t){return{type:r.g.SET_TICKET_TEMP_START_DATE_MOMENT,payload:{clientId:e,startDateMoment:t}}},W=function(e,t){return{type:r.g.SET_TICKET_TEMP_END_DATE,payload:{clientId:e,endDate:t}}},U=function(e,t){return{type:r.g.SET_TICKET_TEMP_END_DATE_INPUT,payload:{clientId:e,endDateInput:t}}},z=function(e,t){return{type:r.g.SET_TICKET_TEMP_END_DATE_MOMENT,payload:{clientId:e,endDateMoment:t}}},G=function(e,t){return{type:r.g.SET_TICKET_TEMP_START_TIME,payload:{clientId:e,startTime:t}}},B=function(e,t){return{type:r.g.SET_TICKET_TEMP_END_TIME,payload:{clientId:e,endTime:t}}},q=function(e,t){return{type:r.g.SET_TICKET_TEMP_START_TIME_INPUT,payload:{clientId:e,startTimeInput:t}}},J=function(e,t){return{type:r.g.SET_TICKET_TEMP_END_TIME_INPUT,payload:{clientId:e,endTimeInput:t}}},$=function(e,t){return{type:r.g.SET_TICKET_TEMP_CAPACITY_TYPE,payload:{clientId:e,capacityType:t}}},Z=function(e,t){return{type:r.g.SET_TICKET_TEMP_CAPACITY,payload:{clientId:e,capacity:t}}},Q=function(e){return{type:r.g.REGISTER_TICKET_BLOCK,payload:{clientId:e}}},X=function(e){return{type:r.g.REMOVE_TICKET_BLOCK,payload:{clientId:e}}},ee=function(){return{type:r.g.REMOVE_TICKET_BLOCKS}},te=function(e,t){return{type:r.g.SET_TICKET_SOLD,payload:{clientId:e,sold:t}}},ne=function(e,t){return{type:r.g.SET_TICKET_AVAILABLE,payload:{clientId:e,available:t}}},re=function(e,t){return{type:r.g.SET_TICKET_ID,payload:{clientId:e,ticketId:t}}},ae=function(e,t){return{type:r.g.SET_TICKET_CURRENCY_SYMBOL,payload:{clientId:e,currencySymbol:t}}},ie=function(e,t){return{type:r.g.SET_TICKET_CURRENCY_POSITION,payload:{clientId:e,currencyPosition:t}}},oe=function(e,t){return{type:r.g.SET_TICKET_PROVIDER,payload:{clientId:e,provider:t}}},se=function(e,t){return{type:r.g.SET_TICKET_HAS_ATTENDEE_INFO_FIELDS,payload:{clientId:e,hasAttendeeInfoFields:t}}},ce=function(e,t){return{type:r.g.SET_TICKET_IS_LOADING,payload:{clientId:e,isLoading:t}}},ue=function(e,t){return{type:r.g.SET_TICKET_IS_MODAL_OPEN,payload:{clientId:e,isModalOpen:t}}},de=function(e,t){return{type:r.g.SET_TICKET_HAS_BEEN_CREATED,payload:{clientId:e,hasBeenCreated:t}}},le=function(e,t){return{type:r.g.SET_TICKET_HAS_CHANGES,payload:{clientId:e,hasChanges:t}}},_e=function(e,t){return{type:r.g.SET_TICKET_HAS_DURATION_ERROR,payload:{clientId:e,hasDurationError:t}}},me=function(e,t){return{type:r.g.SET_TICKET_IS_SELECTED,payload:{clientId:e,isSelected:t}}},pe=function(e,t){return{type:r.g.SET_TICKET_DETAILS,payload:{clientId:e,details:t}}},fe=function(e,t){return{type:r.g.SET_TICKET_TEMP_DETAILS,payload:{clientId:e,tempDetails:t}}},Te=function(e,t,n){return{type:r.g.HANDLE_TICKET_START_DATE,payload:{clientId:e,date:t,dayPickerInput:n}}},he=function(e,t,n){return{type:r.g.HANDLE_TICKET_END_DATE,payload:{clientId:e,date:t,dayPickerInput:n}}},ye=function(e,t){return{type:r.g.HANDLE_TICKET_START_TIME,payload:{clientId:e,seconds:t}}},be=function(e,t){return{type:r.g.HANDLE_TICKET_END_TIME,payload:{clientId:e,seconds:t}}},Me=function(e,t){return{type:r.g.FETCH_TICKET,payload:{clientId:e,ticketId:t}}},Se=function(e){return{type:r.g.CREATE_NEW_TICKET,payload:{clientId:e}}},Ee=function(e){return{type:r.g.UPDATE_TICKET,payload:{clientId:e}}},ge=function(e){return{type:r.g.DELETE_TICKET,payload:{clientId:e}}},ke=function(e){return{type:r.g.SET_TICKET_INITIAL_STATE,payload:e}}},function(e,t){e.exports=React},function(e,t,n){e.exports=n(327)},function(e,t,n){"use strict";n.d(t,"f",(function(){return r})),n.d(t,"a",(function(){return ae})),n.d(t,"c",(function(){return On})),n.d(t,"d",(function(){return a})),n.d(t,"e",(function(){return i}));var r={};n.r(r),n.d(r,"SET_RSVP_ID",(function(){return s})),n.d(r,"SET_RSVP_SETTINGS_OPEN",(function(){return c})),n.d(r,"SET_RSVP_HAS_CHANGES",(function(){return u})),n.d(r,"SET_RSVP_IS_LOADING",(function(){return d})),n.d(r,"SET_RSVP_IS_SETTINGS_LOADING",(function(){return l})),n.d(r,"SET_RSVP_IS_MODAL_OPEN",(function(){return _})),n.d(r,"SET_RSVP_GOING_COUNT",(function(){return m})),n.d(r,"SET_RSVP_NOT_GOING_COUNT",(function(){return p})),n.d(r,"SET_RSVP_HAS_ATTENDEE_INFO_FIELDS",(function(){return f})),n.d(r,"SET_RSVP_HAS_DURATION_ERROR",(function(){return T})),n.d(r,"SET_RSVP_DETAILS",(function(){return h})),n.d(r,"SET_RSVP_TEMP_DETAILS",(function(){return y})),n.d(r,"SET_RSVP_HEADER_IMAGE",(function(){return b})),n.d(r,"SET_RSVP_TITLE",(function(){return M})),n.d(r,"SET_RSVP_DESCRIPTION",(function(){return S})),n.d(r,"SET_RSVP_CAPACITY",(function(){return E})),n.d(r,"SET_RSVP_NOT_GOING_RESPONSES",(function(){return g})),n.d(r,"SET_RSVP_START_DATE",(function(){return k})),n.d(r,"SET_RSVP_START_DATE_INPUT",(function(){return v})),n.d(r,"SET_RSVP_START_DATE_MOMENT",(function(){return D})),n.d(r,"SET_RSVP_END_DATE",(function(){return L})),n.d(r,"SET_RSVP_END_DATE_INPUT",(function(){return O})),n.d(r,"SET_RSVP_END_DATE_MOMENT",(function(){return Y})),n.d(r,"SET_RSVP_START_TIME",(function(){return w})),n.d(r,"SET_RSVP_END_TIME",(function(){return j})),n.d(r,"SET_RSVP_START_TIME_INPUT",(function(){return I})),n.d(r,"SET_RSVP_END_TIME_INPUT",(function(){return P})),n.d(r,"SET_RSVP_TEMP_TITLE",(function(){return C})),n.d(r,"SET_RSVP_TEMP_DESCRIPTION",(function(){return x})),n.d(r,"SET_RSVP_TEMP_CAPACITY",(function(){return R})),n.d(r,"SET_RSVP_TEMP_NOT_GOING_RESPONSES",(function(){return A})),n.d(r,"SET_RSVP_TEMP_START_DATE",(function(){return H})),n.d(r,"SET_RSVP_TEMP_START_DATE_INPUT",(function(){return N})),n.d(r,"SET_RSVP_TEMP_START_DATE_MOMENT",(function(){return V})),n.d(r,"SET_RSVP_TEMP_END_DATE",(function(){return F})),n.d(r,"SET_RSVP_TEMP_END_DATE_INPUT",(function(){return K})),n.d(r,"SET_RSVP_TEMP_END_DATE_MOMENT",(function(){return W})),n.d(r,"SET_RSVP_TEMP_START_TIME",(function(){return U})),n.d(r,"SET_RSVP_TEMP_END_TIME",(function(){return z})),n.d(r,"SET_RSVP_TEMP_START_TIME_INPUT",(function(){return G})),n.d(r,"SET_RSVP_TEMP_END_TIME_INPUT",(function(){return B})),n.d(r,"CREATE_RSVP",(function(){return q})),n.d(r,"INITIALIZE_RSVP",(function(){return J})),n.d(r,"DELETE_RSVP",(function(){return $})),n.d(r,"HANDLE_RSVP_START_DATE",(function(){return Z})),n.d(r,"HANDLE_RSVP_END_DATE",(function(){return Q})),n.d(r,"HANDLE_RSVP_START_TIME",(function(){return X})),n.d(r,"HANDLE_RSVP_END_TIME",(function(){return ee})),n.d(r,"FETCH_RSVP_HEADER_IMAGE",(function(){return te})),n.d(r,"UPDATE_RSVP_HEADER_IMAGE",(function(){return ne})),n.d(r,"DELETE_RSVP_HEADER_IMAGE",(function(){return re}));var a={};n.r(a),n.d(a,"getRSVPBlock",(function(){return oe})),n.d(a,"getRSVPId",(function(){return se})),n.d(a,"getRSVPCreated",(function(){return ce})),n.d(a,"getRSVPSettingsOpen",(function(){return ue})),n.d(a,"getRSVPHasChanges",(function(){return de})),n.d(a,"getRSVPIsLoading",(function(){return le})),n.d(a,"getRSVPIsSettingsLoading",(function(){return _e})),n.d(a,"getRSVPIsModalOpen",(function(){return me})),n.d(a,"getRSVPGoingCount",(function(){return pe})),n.d(a,"getRSVPNotGoingCount",(function(){return fe})),n.d(a,"getRSVPHasAttendeeInfoFields",(function(){return Te})),n.d(a,"getRSVPHasDurationError",(function(){return he})),n.d(a,"getRSVPDetails",(function(){return ye})),n.d(a,"getRSVPTitle",(function(){return be})),n.d(a,"getRSVPDescription",(function(){return Me})),n.d(a,"getRSVPCapacity",(function(){return Se})),n.d(a,"getRSVPAvailable",(function(){return Ee})),n.d(a,"getRSVPNotGoingResponses",(function(){return ge})),n.d(a,"getRSVPStartDate",(function(){return ke})),n.d(a,"getRSVPStartDateInput",(function(){return ve})),n.d(a,"getRSVPStartDateMoment",(function(){return De})),n.d(a,"getRSVPStartTime",(function(){return Le})),n.d(a,"getRSVPStartTimeNoSeconds",(function(){return Oe})),n.d(a,"getRSVPEndDate",(function(){return Ye})),n.d(a,"getRSVPEndDateInput",(function(){return we})),n.d(a,"getRSVPEndDateMoment",(function(){return je})),n.d(a,"getRSVPEndTime",(function(){return Ie})),n.d(a,"getRSVPEndTimeNoSeconds",(function(){return Pe})),n.d(a,"getRSVPStartTimeInput",(function(){return Ce})),n.d(a,"getRSVPEndTimeInput",(function(){return xe})),n.d(a,"getRSVPTempDetails",(function(){return Re})),n.d(a,"getRSVPTempTitle",(function(){return Ae})),n.d(a,"getRSVPTempDescription",(function(){return He})),n.d(a,"getRSVPTempCapacity",(function(){return Ne})),n.d(a,"getRSVPTempNotGoingResponses",(function(){return Ve})),n.d(a,"getRSVPTempStartDate",(function(){return Fe})),n.d(a,"getRSVPTempStartDateInput",(function(){return Ke})),n.d(a,"getRSVPTempStartDateMoment",(function(){return We})),n.d(a,"getRSVPTempStartTime",(function(){return Ue})),n.d(a,"getRSVPTempStartTimeNoSeconds",(function(){return ze})),n.d(a,"getRSVPTempEndDate",(function(){return Ge})),n.d(a,"getRSVPTempEndDateInput",(function(){return Be})),n.d(a,"getRSVPTempEndDateMoment",(function(){return qe})),n.d(a,"getRSVPTempEndTime",(function(){return Je})),n.d(a,"getRSVPTempEndTimeNoSeconds",(function(){return $e})),n.d(a,"getRSVPTempStartTimeInput",(function(){return Ze})),n.d(a,"getRSVPTempEndTimeInput",(function(){return Qe})),n.d(a,"getRSVPHeaderImage",(function(){return Xe})),n.d(a,"getRSVPHeaderImageId",(function(){return et})),n.d(a,"getRSVPHeaderImageSrc",(function(){return tt})),n.d(a,"getRSVPHeaderImageAlt",(function(){return nt}));var i={};n.r(i),n.d(i,"createRSVP",(function(){return pt})),n.d(i,"updateRSVP",(function(){return ft})),n.d(i,"deleteRSVP",(function(){return Tt})),n.d(i,"getRSVP",(function(){return ht}));var o=n(8),s=o.n+"/SET_RSVP_ID",c=o.n+"/SET_RSVP_SETTINGS_OPEN",u=o.n+"/SET_RSVP_HAS_CHANGES",d=o.n+"/SET_RSVP_IS_LOADING",l=o.n+"/SET_RSVP_IS_SETTINGS_LOADING",_=o.n+"/SET_RSVP_IS_MODAL_OPEN",m=o.n+"/SET_RSVP_GOING_COUNT",p=o.n+"/SET_RSVP_NOT_GOING_COUNT",f=o.n+"/SET_RSVP_HAS_ATTENDEE_INFO_FIELDS",T=o.n+"/SET_RSVP_HAS_DURATION_ERROR",h=o.n+"/SET_RSVP_DETAILS",y=o.n+"/SET_RSVP_TEMP_DETAILS",b=o.n+"/SET_RSVP_HEADER_IMAGE",M=o.n+"/SET_RSVP_TITLE",S=o.n+"/SET_RSVP_DESCRIPTION",E=o.n+"/SET_RSVP_CAPACITY",g=o.n+"/SET_RSVP_NOT_GOING_RESPONSES",k=o.n+"/SET_RSVP_START_DATE",v=o.n+"/SET_RSVP_START_DATE_INPUT",D=o.n+"/SET_RSVP_START_DATE_MOMENT",L=o.n+"/SET_RSVP_END_DATE",O=o.n+"/SET_RSVP_END_DATE_INPUT",Y=o.n+"/SET_RSVP_END_DATE_MOMENT",w=o.n+"/SET_RSVP_START_TIME",j=o.n+"/SET_RSVP_END_TIME",I=o.n+"/SET_RSVP_START_TIME_INPUT",P=o.n+"/SET_RSVP_END_TIME_INPUT",C=o.n+"/SET_RSVP_TEMP_TITLE",x=o.n+"/SET_RSVP_TEMP_DESCRIPTION",R=o.n+"/SET_RSVP_TEMP_CAPACITY",A=o.n+"/SET_RSVP_TEMP_NOT_GOING_RESPONSES",H=o.n+"/SET_RSVP_TEMP_START_DATE",N=o.n+"/SET_RSVP_TEMP_START_DATE_INPUT",V=o.n+"/SET_RSVP_TEMP_START_DATE_MOMENT",F=o.n+"/SET_RSVP_TEMP_END_DATE",K=o.n+"/SET_RSVP_TEMP_END_DATE_INPUT",W=o.n+"/SET_RSVP_TEMP_END_DATE_MOMENT",U=o.n+"/SET_RSVP_TEMP_START_TIME",z=o.n+"/SET_RSVP_TEMP_END_TIME",G=o.n+"/SET_RSVP_TEMP_START_TIME_INPUT",B=o.n+"/SET_RSVP_TEMP_END_TIME_INPUT",q=o.n+"/CREATE_RSVP",J=o.n+"/INITIALIZE_RSVP",$=o.n+"/DELETE_RSVP",Z=o.n+"/HANDLE_RSVP_START_DATE",Q=o.n+"/HANDLE_RSVP_END_DATE",X=o.n+"/HANDLE_RSVP_START_TIME",ee=o.n+"/HANDLE_RSVP_END_TIME",te=o.n+"/FETCH_RSVP_HEADER_IMAGE",ne=o.n+"/UPDATE_RSVP_HEADER_IMAGE",re=o.n+"/DELETE_RSVP_HEADER_IMAGE",ae=n(14),ie=n(6),oe=function(e){return e.tickets.blocks.rsvp},se=Object(ie.createSelector)([oe],(function(e){return e.id})),ce=Object(ie.createSelector)([oe],(function(e){return e.created})),ue=Object(ie.createSelector)([oe],(function(e){return e.settingsOpen})),de=Object(ie.createSelector)([oe],(function(e){return e.hasChanges})),le=Object(ie.createSelector)([oe],(function(e){return e.isLoading})),_e=Object(ie.createSelector)([oe],(function(e){return e.isSettingsLoading})),me=Object(ie.createSelector)([oe],(function(e){return e.isModalOpen})),pe=Object(ie.createSelector)([oe],(function(e){return e.goingCount})),fe=Object(ie.createSelector)([oe],(function(e){return e.notGoingCount})),Te=Object(ie.createSelector)([oe],(function(e){return e.hasAttendeeInfoFields})),he=Object(ie.createSelector)([oe],(function(e){return e.hasDurationError})),ye=Object(ie.createSelector)([oe],(function(e){return e.details})),be=Object(ie.createSelector)([ye],(function(e){return e.title})),Me=Object(ie.createSelector)([ye],(function(e){return e.description})),Se=Object(ie.createSelector)([ye],(function(e){return e.capacity})),Ee=Object(ie.createSelector)([Se,pe],(function(e,t){if(""===e)return-1;var n=parseInt(e,10)||0,r=parseInt(t,10)||0;return Math.max(n-r,0)})),ge=Object(ie.createSelector)([ye],(function(e){return e.notGoingResponses})),ke=Object(ie.createSelector)([ye],(function(e){return e.startDate})),ve=Object(ie.createSelector)([ye],(function(e){return e.startDateInput})),De=Object(ie.createSelector)([ye],(function(e){return e.startDateMoment})),Le=Object(ie.createSelector)([ye],(function(e){return e.startTime})),Oe=Object(ie.createSelector)([Le],(function(e){return e.slice(0,-3)})),Ye=Object(ie.createSelector)([ye],(function(e){return e.endDate})),we=Object(ie.createSelector)([ye],(function(e){return e.endDateInput})),je=Object(ie.createSelector)([ye],(function(e){return e.endDateMoment})),Ie=Object(ie.createSelector)([ye],(function(e){return e.endTime})),Pe=Object(ie.createSelector)([Ie],(function(e){return e.slice(0,-3)})),Ce=Object(ie.createSelector)([ye],(function(e){return e.startTimeInput})),xe=Object(ie.createSelector)([ye],(function(e){return e.endTimeInput})),Re=Object(ie.createSelector)([oe],(function(e){return e.tempDetails})),Ae=Object(ie.createSelector)([Re],(function(e){return e.title})),He=Object(ie.createSelector)([Re],(function(e){return e.description})),Ne=Object(ie.createSelector)([Re],(function(e){return e.capacity})),Ve=Object(ie.createSelector)([Re],(function(e){return e.notGoingResponses})),Fe=Object(ie.createSelector)([Re],(function(e){return e.startDate})),Ke=Object(ie.createSelector)([Re],(function(e){return e.startDateInput})),We=Object(ie.createSelector)([Re],(function(e){return e.startDateMoment})),Ue=Object(ie.createSelector)([Re],(function(e){return e.startTime})),ze=Object(ie.createSelector)([Ue],(function(e){return e.slice(0,-3)})),Ge=Object(ie.createSelector)([Re],(function(e){return e.endDate})),Be=Object(ie.createSelector)([Re],(function(e){return e.endDateInput})),qe=Object(ie.createSelector)([Re],(function(e){return e.endDateMoment})),Je=Object(ie.createSelector)([Re],(function(e){return e.endTime})),$e=Object(ie.createSelector)([Je],(function(e){return e.slice(0,-3)})),Ze=Object(ie.createSelector)([Re],(function(e){return e.startTimeInput})),Qe=Object(ie.createSelector)([Re],(function(e){return e.endTimeInput})),Xe=Object(ie.createSelector)([oe],(function(e){return e.headerImage})),et=Object(ie.createSelector)([Xe],(function(e){return e.id})),tt=Object(ie.createSelector)([Xe],(function(e){return e.src})),nt=Object(ie.createSelecto