From e3fbf9a2398462eec0be91431dcd93a2ae620f24 Mon Sep 17 00:00:00 2001 From: Greta Thunberg Date: Tue, 26 Sep 2023 10:09:00 +0200 Subject: [PATCH] events --- .../the-events-calendar/common/README.md | 2 + .../common/lang/readme.txt | 3 + .../common/lang/tribe-common-af.mo | Bin 0 -> 14594 bytes .../common/lang/tribe-common-bg_BG.mo | Bin 0 -> 21755 bytes .../common/lang/tribe-common-ca.mo | Bin 0 -> 16003 bytes .../common/lang/tribe-common-cs_CZ.mo | Bin 0 -> 42662 bytes .../common/lang/tribe-common-da_DK.mo | Bin 0 -> 15463 bytes .../common/lang/tribe-common-de_DE.mo | Bin 0 -> 84176 bytes .../common/lang/tribe-common-el.mo | Bin 0 -> 20100 bytes .../common/lang/tribe-common-en_GB.mo | Bin 0 -> 14753 bytes .../common/lang/tribe-common-es_ES.mo | Bin 0 -> 35696 bytes .../common/lang/tribe-common-et.mo | Bin 0 -> 13970 bytes .../common/lang/tribe-common-fi.mo | Bin 0 -> 15500 bytes .../common/lang/tribe-common-fr_CA.mo | Bin 0 -> 36243 bytes .../common/lang/tribe-common-fr_FR.mo | Bin 0 -> 36243 bytes .../common/lang/tribe-common-hu_HU.mo | Bin 0 -> 36250 bytes .../common/lang/tribe-common-id_ID.mo | Bin 0 -> 14725 bytes .../common/lang/tribe-common-is_IS.mo | Bin 0 -> 15181 bytes .../common/lang/tribe-common-it_IT.mo | Bin 0 -> 36007 bytes .../common/lang/tribe-common-ja.mo | Bin 0 -> 40124 bytes .../common/lang/tribe-common-lt_LT.mo | Bin 0 -> 16376 bytes .../common/lang/tribe-common-lv.mo | Bin 0 -> 14761 bytes .../common/lang/tribe-common-nb_NO.mo | Bin 0 -> 15392 bytes .../common/lang/tribe-common-nl_NL.mo | Bin 0 -> 24998 bytes .../common/lang/tribe-common-pt_BR.mo | Bin 0 -> 38753 bytes .../common/lang/tribe-common-pt_PT.mo | Bin 0 -> 31028 bytes .../common/lang/tribe-common-ro_RO.mo | Bin 0 -> 14195 bytes .../common/lang/tribe-common-ru_RU.mo | Bin 0 -> 23050 bytes .../common/lang/tribe-common-sk_SK.mo | Bin 0 -> 16541 bytes .../common/lang/tribe-common-sl_SI.mo | Bin 0 -> 15263 bytes .../common/lang/tribe-common-sr_RS.mo | Bin 0 -> 14491 bytes .../common/lang/tribe-common-sv_SE.mo | Bin 0 -> 15655 bytes .../common/lang/tribe-common-tr_TR.mo | Bin 0 -> 15339 bytes .../common/lang/tribe-common-zh_CN.mo | Bin 0 -> 15441 bytes .../common/lang/tribe-common-zh_TW.mo | Bin 0 -> 15285 bytes .../common/lang/tribe-common.pot | 3953 +++ .../clipboard/dist/clipboard.min.js | 7 + .../common/node_modules/intro.js/intro.js | 4421 +++ .../node_modules/intro.js/introjs-rtl.css | 23 + .../common/node_modules/intro.js/introjs.css | 436 + .../Common/Configuration/Configuration.php | 77 + .../Configuration/Configuration_Loader.php | 67 + .../Configuration_Provider_Interface.php | 50 + .../Configuration/Constants_Provider.php | 44 + .../common/src/Common/Configuration/readme.md | 60 + .../src/Common/Context/Post_Request_Type.php | 156 + .../common/src/Common/Contracts/Container.php | 30 + .../Common/Contracts/Provider/Controller.php | 147 + .../src/Common/Contracts/Service_Provider.php | 9 + .../Editor/Full_Site/Template_Utils.php | 88 + .../Common/Exceptions/Container_Exception.php | 16 + .../Common/Exceptions/Not_Bound_Exception.php | 16 + .../Integrations/Integration_Abstract.php | 151 + .../src/Common/Integrations/Provider.php | 27 + .../Traits/Module_Integration.php | 16 + .../Traits/Plugin_Integration.php | 16 + .../Traits/Server_Integration.php | 16 + .../Integrations/Traits/Theme_Integration.php | 16 + .../Common/Libraries/Installer/Provider.php | 50 + .../common/src/Common/Libraries/Provider.php | 43 + .../common/src/Common/Site_Health/Factory.php | 100 + .../Site_Health/Fields/Generic_Info_Field.php | 61 + .../Fields/Post_Status_Count_Field.php | 102 + .../Site_Health/Info_Field_Abstract.php | 159 + .../Site_Health/Info_Field_Interface.php | 85 + .../Site_Health/Info_Section_Abstract.php | 233 + .../Site_Health/Info_Section_Interface.php | 123 + .../src/Common/Site_Health/Provider.php | 51 + .../src/Common/Storage/Timed_Option.php | 340 + .../common/src/Common/Telemetry/Migration.php | 314 + .../common/src/Common/Telemetry/Provider.php | 158 + .../common/src/Common/Telemetry/Telemetry.php | 592 + .../common/src/Common/Translations_Loader.php | 198 + .../src/Tribe/Abstract_Deactivation.php | 71 + .../src/Tribe/Abstract_Plugin_Register.php | 72 + .../src/Tribe/Admin/Activation_Page.php | 380 + .../Conditional_Content/Black_Friday.php | 84 + .../Datetime_Conditional_Abstract.php | 160 + .../Conditional_Content/End_Of_Year_Sale.php | 85 + .../Conditional_Content/Service_Provider.php | 52 + .../common/src/Tribe/Admin/Help_Page.php | 1188 + .../common/src/Tribe/Admin/Helpers.php | 193 + .../src/Tribe/Admin/Live_Date_Preview.php | 68 + .../src/Tribe/Admin/Notice/Date_Based.php | 378 + .../src/Tribe/Admin/Notice/Marketing.php | 190 + .../Admin/Notice/Marketing/Black_Friday.php | 72 + .../Notice/Marketing/End_Of_Year_Sale.php | 66 + .../Admin/Notice/Marketing/Stellar_Sale.php | 82 + .../src/Tribe/Admin/Notice/Php_Version.php | 106 + .../Tribe/Admin/Notice/Plugin_Download.php | 164 + .../Admin/Notice/Plugin_Upgrade_Notice.php | 239 + .../Tribe/Admin/Notice/Service_Provider.php | 66 + .../src/Tribe/Admin/Notice/WP_Version.php | 87 + .../common/src/Tribe/Admin/Notices.php | 821 + .../common/src/Tribe/Admin/Pages.php | 309 + .../common/src/Tribe/Admin/Settings.php | 82 + .../src/Tribe/Admin/Troubleshooting.php | 382 + .../src/Tribe/Admin/Upsell_Notice/Main.php | 97 + .../src/Tribe/Admin/Upsell_Notice/README.md | 65 + .../common/src/Tribe/Admin/Wysiwyg.php | 143 + .../common/src/Tribe/Ajax/Dropdown.php | 340 + .../common/src/Tribe/Ajax/Operations.php | 22 + .../common/src/Tribe/App_Shop.php | 379 + .../common/src/Tribe/Asset/Data.php | 67 + .../common/src/Tribe/Asset/Factory.php | 56 + .../common/src/Tribe/Assets.php | 949 + .../common/src/Tribe/Assets_Pipeline.php | 71 + .../common/src/Tribe/Autoloader.php | 297 + .../common/src/Tribe/Cache.php | 646 + .../common/src/Tribe/Cache_Listener.php | 215 + .../common/src/Tribe/Changelog_Reader.php | 53 + .../common/src/Tribe/Container.php | 358 + .../common/src/Tribe/Context.php | 1655 + .../common/src/Tribe/Context/locations.php | 163 + .../common/src/Tribe/Cost_Utils.php | 542 + .../common/src/Tribe/Credits.php | 116 + .../common/src/Tribe/Customizer.php | 1073 + .../common/src/Tribe/Customizer/Control.php | 20 + .../src/Tribe/Customizer/Controls/Heading.php | 69 + .../src/Tribe/Customizer/Controls/Number.php | 78 + .../src/Tribe/Customizer/Controls/Radio.php | 73 + .../Customizer/Controls/Range_Slider.php | 97 + .../Tribe/Customizer/Controls/Separator.php | 62 + .../src/Tribe/Customizer/Controls/Toggle.php | 86 + .../common/src/Tribe/Customizer/Section.php | 930 + .../common/src/Tribe/DB_Lock.php | 352 + .../common/src/Tribe/Data.php | 235 + .../common/src/Tribe/Date_Utils.php | 1678 + .../common/src/Tribe/Db.php | 38 + .../common/src/Tribe/Debug.php | 59 + .../src/Tribe/Debug_Bar/Panels/Context.php | 99 + .../src/Tribe/Debug_Bar/Panels/Json_Ld.php | 84 + .../common/src/Tribe/Dependency.php | 616 + .../common/src/Tribe/Deprecation.php | 194 + .../common/src/Tribe/Dialog/View.php | 617 + .../Swagger/Builder_Interface.php | 29 + .../Cost_Details_Definition_Provider.php | 50 + .../Date_Details_Definition_Provider.php | 60 + .../Swagger/Image_Definition_Provider.php | 64 + .../Image_Size_Definition_Provider.php | 53 + .../Swagger/Provider_Interface.php | 17 + .../Swagger/Term_Definition_Provider.php | 73 + .../common/src/Tribe/Duplicate/Post.php | 443 + .../src/Tribe/Duplicate/Strategy/Base.php | 24 + .../Tribe/Duplicate/Strategy/Interface.php | 31 + .../src/Tribe/Duplicate/Strategy/Like.php | 85 + .../src/Tribe/Duplicate/Strategy/Same.php | 51 + .../src/Tribe/Duplicate/Strategy_Factory.php | 108 + .../common/src/Tribe/Editor.php | 297 + .../common/src/Tribe/Editor/Assets.php | 141 + .../src/Tribe/Editor/Blocks/Abstract.php | 249 + .../src/Tribe/Editor/Blocks/Interface.php | 70 + .../common/src/Tribe/Editor/Compatibility.php | 33 + .../Editor/Compatibility/Classic_Editor.php | 386 + .../src/Tribe/Editor/Compatibility/Divi.php | 109 + .../common/src/Tribe/Editor/Configuration.php | 111 + .../Tribe/Editor/Configuration_Interface.php | 17 + .../common/src/Tribe/Editor/Meta.php | 217 + .../src/Tribe/Editor/Meta_Interface.php | 15 + .../common/src/Tribe/Editor/Provider.php | 67 + .../common/src/Tribe/Editor/Utils.php | 142 + .../common/src/Tribe/Error.php | 200 + .../common/src/Tribe/Exception.php | 90 + .../common/src/Tribe/Extension.php | 454 + .../common/src/Tribe/Extension_Loader.php | 168 + .../common/src/Tribe/Feature_Detection.php | 250 + .../common/src/Tribe/Field.php | 952 + .../common/src/Tribe/Field_Conditional.php | 79 + .../common/src/Tribe/Image/Uploader.php | 319 + .../common/src/Tribe/JSON_LD/Abstract.php | 349 + .../common/src/Tribe/Languages/Locations.php | 413 + .../src/Tribe/Languages/Map_Interface.php | 32 + .../src/Tribe/Languages/Recaptcha_Map.php | 125 + .../common/src/Tribe/Log.php | 437 + .../common/src/Tribe/Log/Action_Logger.php | 125 + .../common/src/Tribe/Log/Admin.php | 283 + .../src/Tribe/Log/Canonical_Formatter.php | 174 + .../common/src/Tribe/Log/File_Logger.php | 314 + .../common/src/Tribe/Log/Logger.php | 88 + .../common/src/Tribe/Log/Monolog_Logger.php | 54 + .../common/src/Tribe/Log/Null_Logger.php | 106 + .../common/src/Tribe/Log/README.md | 154 + .../common/src/Tribe/Log/Service_Provider.php | 205 + .../common/src/Tribe/Main.php | 858 + .../common/src/Tribe/Meta/Chunker.php | 965 + .../src/Tribe/Models/Post_Types/Base.php | 369 + .../src/Tribe/Models/Post_Types/Nothing.php | 44 + .../common/src/Tribe/Notices.php | 89 + .../src/Tribe/Onboarding/Hints_Abstract.php | 98 + .../common/src/Tribe/Onboarding/Main.php | 223 + .../common/src/Tribe/Onboarding/README.md | 242 + .../src/Tribe/Onboarding/Tour_Abstract.php | 98 + .../common/src/Tribe/PUE/Checker.php | 1917 + .../common/src/Tribe/PUE/Notices.php | 533 + .../common/src/Tribe/PUE/Package_Handler.php | 157 + .../common/src/Tribe/PUE/Plugin_Info.php | 141 + .../src/Tribe/PUE/Update_Prevention.php | 199 + .../common/src/Tribe/PUE/Utility.php | 126 + .../common/src/Tribe/Plugin_Meta_Links.php | 147 + .../common/src/Tribe/Plugins.php | 184 + .../common/src/Tribe/Plugins_API.php | 289 + .../common/src/Tribe/Post_History.php | 134 + .../common/src/Tribe/Post_Transient.php | 214 + .../common/src/Tribe/Process/Handler.php | 361 + .../Tribe/Process/Post_Thumbnail_Setter.php | 176 + .../common/src/Tribe/Process/Queue.php | 1129 + .../common/src/Tribe/Process/Tester.php | 98 + .../common/src/Tribe/Promise.php | 309 + .../common/src/Tribe/Promoter/Auth.php | 112 + .../common/src/Tribe/Promoter/Connector.php | 277 + .../common/src/Tribe/Promoter/PUE.php | 96 + .../common/src/Tribe/Promoter/View.php | 96 + .../Endpoints/CREATE_Endpoint_Interface.php | 29 + .../Endpoints/DELETE_Endpoint_Interface.php | 28 + .../Endpoints/READ_Endpoint_Interface.php | 22 + .../Endpoints/UPDATE_Endpoint_Interface.php | 28 + .../src/Tribe/REST/Exceptions/Exception.php | 25 + .../src/Tribe/REST/Headers/Base_Header.php | 19 + .../src/Tribe/REST/Headers/Base_Interface.php | 49 + .../src/Tribe/REST/Headers/Disabled.php | 23 + .../Tribe/REST/Headers/Headers_Interface.php | 18 + .../src/Tribe/REST/Headers/Supported.php | 49 + .../src/Tribe/REST/Headers/Unsupported.php | 39 + .../common/src/Tribe/REST/Main.php | 149 + .../src/Tribe/REST/Messages_Interface.php | 30 + .../common/src/Tribe/REST/Post_Repository.php | 107 + .../Tribe/REST/Post_Repository_Interface.php | 14 + .../common/src/Tribe/REST/System.php | 33 + .../common/src/Tribe/Repository.php | 3774 ++ .../Tribe/Repository/Core_Read_Interface.php | 402 + .../common/src/Tribe/Repository/Decorator.php | 704 + .../Tribe/Repository/Filter_Validation.php | 61 + .../Tribe/Repository/Formatter_Interface.php | 24 + .../Tribe/Repository/Implementation_Error.php | 11 + .../common/src/Tribe/Repository/Interface.php | 350 + .../src/Tribe/Repository/Query_Filters.php | 1129 + .../src/Tribe/Repository/Read_Interface.php | 173 + .../src/Tribe/Repository/Setter_Interface.php | 46 + .../src/Tribe/Repository/Update_Interface.php | 133 + .../src/Tribe/Repository/Usage_Error.php | 304 + .../Tribe/Repository/Void_Query_Exception.php | 27 + .../common/src/Tribe/Rewrite.php | 1173 + .../Tribe/Service_Providers/Body_Classes.php | 88 + .../src/Tribe/Service_Providers/Crons.php | 39 + .../src/Tribe/Service_Providers/Debug_Bar.php | 50 + .../src/Tribe/Service_Providers/Dialog.php | 113 + .../Tribe/Service_Providers/Onboarding.php | 149 + .../src/Tribe/Service_Providers/PUE.php | 52 + .../src/Tribe/Service_Providers/Processes.php | 281 + .../src/Tribe/Service_Providers/Promoter.php | 119 + .../Tribe/Service_Providers/Shortcodes.php | 123 + .../src/Tribe/Service_Providers/Tooltip.php | 67 + .../src/Tribe/Service_Providers/Widgets.php | 79 + .../common/src/Tribe/Settings.php | 819 + .../common/src/Tribe/Settings_Manager.php | 355 + .../common/src/Tribe/Settings_Tab.php | 230 + .../common/src/Tribe/Shortcode/Manager.php | 182 + .../Tribe/Shortcode/Shortcode_Abstract.php | 254 + .../Tribe/Shortcode/Shortcode_Interface.php | 125 + .../common/src/Tribe/Shortcode/Utils.php | 45 + .../common/src/Tribe/Simple_Table.php | 166 + .../common/src/Tribe/Support.php | 478 + .../common/src/Tribe/Support/Obfuscator.php | 68 + .../src/Tribe/Support/Template_Checker.php | 275 + .../Tribe/Support/Template_Checker_Report.php | 119 + .../common/src/Tribe/Tabbed_View.php | 381 + .../common/src/Tribe/Tabbed_View/Tab.php | 238 + .../common/src/Tribe/Template.php | 1483 + .../common/src/Tribe/Template_Part_Cache.php | 123 + .../common/src/Tribe/Templates.php | 79 + .../common/src/Tribe/Terms.php | 56 + .../common/src/Tribe/Timezones.php | 633 + .../common/src/Tribe/Tooltip/View.php | 138 + .../common/src/Tribe/Tracker.php | 471 + .../common/src/Tribe/Traits/Cache_User.php | 145 + .../common/src/Tribe/Traits/With_DB_Lock.php | 50 + .../Traits/With_Meta_Updates_Handling.php | 66 + .../Traits/With_Post_Attribute_Detection.php | 82 + .../common/src/Tribe/Updater.php | 180 + .../common/src/Tribe/Utils/Array.php | 732 + .../common/src/Tribe/Utils/Body_Classes.php | 350 + .../common/src/Tribe/Utils/Callback.php | 177 + .../common/src/Tribe/Utils/Collection.php | 56 + .../src/Tribe/Utils/Collection_Interface.php | 57 + .../src/Tribe/Utils/Collection_Trait.php | 253 + .../common/src/Tribe/Utils/Color.php | 574 + .../src/Tribe/Utils/Compatibility_Classes.php | 352 + .../src/Tribe/Utils/Coordinates_Provider.php | 134 + .../common/src/Tribe/Utils/Date_I18n.php | 49 + .../src/Tribe/Utils/Date_I18n_Immutable.php | 49 + .../src/Tribe/Utils/Element_Attributes.php | 241 + .../src/Tribe/Utils/Element_Classes.php | 246 + .../common/src/Tribe/Utils/Global_ID.php | 165 + .../common/src/Tribe/Utils/JSON.php | 38 + .../src/Tribe/Utils/Lazy_Collection.php | 118 + .../common/src/Tribe/Utils/Lazy_Events.php | 172 + .../common/src/Tribe/Utils/Lazy_String.php | 172 + .../common/src/Tribe/Utils/Paths.php | 75 + .../common/src/Tribe/Utils/Plugins.php | 80 + .../src/Tribe/Utils/Post_Collection.php | 292 + .../common/src/Tribe/Utils/Post_Root_Pool.php | 203 + .../common/src/Tribe/Utils/Post_Thumbnail.php | 356 + .../common/src/Tribe/Utils/Query.php | 72 + .../common/src/Tribe/Utils/Strings.php | 65 + .../common/src/Tribe/Utils/Taxonomy.php | 199 + .../src/Tribe/Utils/Theme_Compatibility.php | 276 + .../common/src/Tribe/Validate.php | 557 + .../common/src/Tribe/Validator/Base.php | 266 + .../common/src/Tribe/Validator/Interface.php | 102 + .../src/Tribe/Values/Abstract_Currency.php | 369 + .../src/Tribe/Values/Abstract_Value.php | 455 + .../src/Tribe/Values/Currency_Interface.php | 86 + .../src/Tribe/Values/Value_Calculation.php | 71 + .../src/Tribe/Values/Value_Formatting.php | 58 + .../src/Tribe/Values/Value_Interface.php | 145 + .../common/src/Tribe/Values/Value_Update.php | 58 + .../common/src/Tribe/View_Helpers.php | 348 + .../common/src/Tribe/Widget/Manager.php | 97 + .../src/Tribe/Widget/Widget_Abstract.php | 879 + .../src/Tribe/Widget/Widget_Interface.php | 331 + .../common/src/admin-views/app-shop.php | 257 + .../src/admin-views/components/icons/dot.php | 23 + .../src/admin-views/components/loader.php | 44 + .../src/admin-views/components/switch.php | 57 + .../conditional_content/black-friday.php | 35 + .../conditional_content/end-of-year-sale.php | 35 + .../common/src/admin-views/event-log.php | 117 + .../common/src/admin-views/help-calendar.php | 248 + .../common/src/admin-views/help-community.php | 241 + .../common/src/admin-views/help-ticketing.php | 244 + .../common/src/admin-views/help.php | 107 + .../admin-views/notices/end-of-year-sale.php | 30 + .../admin-views/notices/tribe-bf-general.php | 31 + .../notices/tribe-stellar-sale-premium.php | 60 + .../notices/tribe-stellar-sale.php | 60 + .../src/admin-views/notices/upsell/icon.php | 21 + .../src/admin-views/notices/upsell/main.php | 50 + .../src/admin-views/tabbed-view/tab.php | 4 + .../admin-views/tabbed-view/tabbed-view.php | 41 + .../src/admin-views/tribe-options-help.php | 120 + .../admin-views/tribe-options-licenses.php | 67 + .../src/admin-views/troubleshooting.php | 55 + .../troubleshooting/common-issues.php | 40 + .../troubleshooting/detected-issues.php | 54 + .../admin-views/troubleshooting/ea-status.php | 52 + .../ea-status/current-status.php | 41 + .../ea-status/current-usage.php | 42 + .../troubleshooting/ea-status/eventbrite.php | 48 + .../troubleshooting/ea-status/license-key.php | 54 + .../troubleshooting/ea-status/meetup.php | 39 + .../ea-status/scheduler-status.php | 33 + .../ea-status/server-connection.php | 55 + .../admin-views/troubleshooting/event-log.php | 18 + .../troubleshooting/first-steps.php | 55 + .../troubleshooting/footer-logo.php | 14 + .../troubleshooting/introduction.php | 31 + .../admin-views/troubleshooting/notice.php | 20 + .../recent-template-changes.php | 16 + .../troubleshooting/support-cta.php | 31 + .../troubleshooting/system-information.php | 42 + .../admin-views/widgets/components/fields.php | 43 + .../widgets/components/fields/checkbox.php | 42 + .../widgets/components/fields/dropdown.php | 53 + .../widgets/components/fields/fieldset.php | 39 + .../widgets/components/fields/number.php | 47 + .../widgets/components/fields/radio.php | 43 + .../widgets/components/fields/section.php | 40 + .../widgets/components/fields/text.php | 41 + .../admin-views/widgets/components/form.php | 31 + ...__Admin__Notice__Archive_Slug_Conflict.php | 28 + .../Tribe__Events__Abstract_Deactivation.php | 4 + .../Tribe__Events__Admin__Helpers.php | 4 + .../deprecated/Tribe__Events__App_Shop.php | 4 + .../deprecated/Tribe__Events__Autoloader.php | 4 + .../src/deprecated/Tribe__Events__Cache.php | 4 + .../Tribe__Events__Cache_Listener.php | 4 + .../Tribe__Events__Changelog_Reader.php | 4 + .../src/deprecated/Tribe__Events__Credits.php | 4 + .../deprecated/Tribe__Events__Date_Utils.php | 4 + .../src/deprecated/Tribe__Events__Field.php | 4 + .../deprecated/Tribe__Events__Settings.php | 4 + .../Tribe__Events__Settings_Tab.php | 4 + .../src/deprecated/Tribe__Events__Support.php | 4 + .../Tribe__Events__Template_Part_Cache.php | 4 + .../deprecated/Tribe__Events__Validate.php | 4 + .../Tribe__Events__View_Helpers.php | 4 + .../common/src/deprecated/Tribe__Freemius.php | 69 + .../Tribe__Plugin_Download_Notice.php | 4 + .../deprecated/Tribe__Template_Factory.php | 32 + .../common/src/functions/aliases.php | 17 + .../common/src/functions/conditionals.php | 78 + .../common/src/functions/editor.php | 20 + .../common/src/functions/files.php | 42 + .../common/src/functions/multibyte.php | 193 + .../common/src/functions/query.php | 97 + .../src/functions/template-tags/date.php | 453 + .../src/functions/template-tags/general.php | 875 + .../src/functions/template-tags/html.php | 225 + .../src/functions/template-tags/post.php | 100 + .../common/src/functions/transient.php | 25 + .../common/src/functions/url.php | 182 + .../common/src/functions/utils.php | 1332 + .../common/src/modules/icons/alert.svg | 1 + .../common/src/modules/icons/clipboard.svg | 1 + .../common/src/modules/icons/close.svg | 1 + .../common/src/modules/icons/cog.svg | 1 + .../common/src/modules/icons/index.js | 9 + .../common/src/modules/icons/info.svg | 1 + .../common/src/modules/icons/link.svg | 7 + .../common/src/modules/icons/pencil.svg | 1 + .../common/src/modules/icons/recurrence.svg | 1 + .../common/src/modules/icons/tag.svg | 1 + .../common/src/modules/icons/tec.svg | 1 + .../common/src/modules/icons/user.svg | 1 + .../src/resources/css/accessibility.min.css | 1 + .../common/src/resources/css/app-shop.min.css | 1 + .../common/src/resources/css/app/main.min.css | 1 + .../src/resources/css/app/vendor.min.css | 1 + .../common/src/resources/css/bumpdown.min.css | 1 + .../src/resources/css/buttonset.min.css | 1 + .../src/resources/css/common-full.min.css | 1 + .../src/resources/css/common-skeleton.min.css | 1 + .../resources/css/customizer-controls.min.css | 1 + .../src/resources/css/datatables.min.css | 1 + .../src/resources/css/datepicker.min.css | 1 + .../src/resources/css/dependency.min.css | 1 + .../common/src/resources/css/dialog.min.css | 1 + .../src/resources/css/onboarding.min.css | 1 + .../common/src/resources/css/promoter.min.css | 1 + .../common/src/resources/css/tooltip.min.css | 1 + .../resources/css/tribe-common-admin.min.css | 1 + .../common/src/resources/css/tribe-ui.min.css | 1 + .../src/resources/css/validation.min.css | 1 + .../src/resources/css/variables-full.min.css | 1 + .../resources/css/variables-skeleton.min.css | 1 + .../images/donate-link-screenshot.png | Bin 0 -> 80820 bytes .../images/gutenberg-admin-notice-TEC.png | Bin 0 -> 9636 bytes .../images/gutenberg-admin-notice-tickets.png | Bin 0 -> 9976 bytes .../resources/images/header/all-solutions.jpg | Bin 0 -> 31953 bytes .../src/resources/images/header/bundles.jpg | Bin 0 -> 42555 bytes .../resources/images/header/extensions.jpg | Bin 0 -> 40455 bytes .../images/header/welcome-desktop-et.jpg | Bin 0 -> 104454 bytes .../images/header/welcome-desktop-etplus.jpg | Bin 0 -> 142591 bytes .../images/header/welcome-desktop.jpg | Bin 0 -> 94188 bytes .../images/header/welcome-mobile-et.jpg | Bin 0 -> 123095 bytes .../images/header/welcome-mobile-etplus.jpg | Bin 0 -> 141196 bytes .../images/header/welcome-mobile.jpg | Bin 0 -> 87364 bytes .../common/src/resources/images/help/1.png | Bin 0 -> 1611 bytes .../common/src/resources/images/help/2.png | Bin 0 -> 1960 bytes .../src/resources/images/help/arrow-down.svg | 3 + .../src/resources/images/help/arrow-up.svg | 3 + .../resources/images/help/common-issues.png | Bin 0 -> 158876 bytes .../src/resources/images/help/customizing.png | Bin 0 -> 148377 bytes .../src/resources/images/help/error-icon.svg | 5 + .../resources/images/help/getting-started.png | Bin 0 -> 129168 bytes .../images/help/help-calendar-header.png | Bin 0 -> 90195 bytes .../images/help/help-community-header.png | Bin 0 -> 157483 bytes .../images/help/help-start-guide-tickets.png | Bin 0 -> 63714 bytes .../images/help/help-ticketing-header.png | Bin 0 -> 82949 bytes .../src/resources/images/help/polygon.svg | 3 + .../resources/images/help/success-icon.svg | 4 + .../images/help/troubleshooting-hero.png | Bin 0 -> 9178 bytes .../images/help/troubleshooting-support.png | Bin 0 -> 18472 bytes .../resources/images/help/troubleshooting.png | Bin 0 -> 139797 bytes .../resources/images/help/warning-icon.svg | 4 + .../resources/images/icons/arrow-right.svg | 1 + .../src/resources/images/icons/caret-down.svg | 1 + .../src/resources/images/icons/caret-left.svg | 1 + .../resources/images/icons/caret-right.svg | 1 + .../src/resources/images/icons/caret-up.svg | 1 + .../src/resources/images/icons/check.svg | 1 + .../resources/images/icons/circle-bolt.svg | 1 + .../common/src/resources/images/icons/day.svg | 1 + .../src/resources/images/icons/dropdown.svg | 1 + .../common/src/resources/images/icons/faq.png | Bin 0 -> 1046 bytes .../resources/images/icons/featured-event.svg | 1 + .../src/resources/images/icons/filters.svg | 1 + .../resources/images/icons/horns-white.svg | 1 + .../src/resources/images/icons/horns.svg | 1 + .../src/resources/images/icons/list.svg | 1 + .../common/src/resources/images/icons/map.svg | 1 + .../src/resources/images/icons/month.svg | 1 + .../src/resources/images/icons/photo.svg | 1 + .../images/icons/recurring-events.svg | 1 + .../src/resources/images/icons/sale-burst.svg | 12 + .../src/resources/images/icons/search.svg | 1 + .../resources/images/icons/small-arrow.svg | 1 + .../src/resources/images/icons/week.svg | 1 + .../images/logo/bundle-community-manager.svg | 1 + .../images/logo/bundle-event-importer.svg | 1 + .../images/logo/bundle-event-marketing.svg | 1 + .../resources/images/logo/bundle-ultimate.svg | 1 + .../images/logo/bundle-virtual-events.svg | 1 + .../images/logo/community-events.svg | 1 + .../images/logo/community-tickets.svg | 1 + .../images/logo/event-aggregator.svg | 1 + .../resources/images/logo/event-automator.svg | 1 + .../images/logo/event-tickets-plus.svg | 1 + .../resources/images/logo/event-tickets.svg | 1 + .../images/logo/eventbrite-tickets.svg | 1 + .../images/logo/events-calendar-pro.svg | 1 + .../src/resources/images/logo/filterbar.svg | 1 + .../images/logo/image-widget-plus.svg | 1 + .../src/resources/images/logo/promoter.svg | 1 + .../src/resources/images/logo/tec-brand.svg | 1 + .../images/logo/the-events-calendar.svg | 1 + .../resources/images/logo/virtual-events.svg | 1 + .../resources/images/marketing/bf-promo.png | Bin 0 -> 57766 bytes .../images/marketing/eoy-sale-2021.svg | 9 + .../images/marketing/eoy-sale-promo.png | Bin 0 -> 31365 bytes .../marketing/stellar-sale-banner-bg.svg | 12 + .../common/src/resources/images/mascot.png | Bin 0 -> 29301 bytes .../src/resources/images/modern-tribe.png | Bin 0 -> 761 bytes .../src/resources/images/modern-tribe@2x.png | Bin 0 -> 1376 bytes .../src/resources/images/promos/bf-promo.png | Bin 0 -> 57766 bytes .../src/resources/images/shop/aggregator.jpg | Bin 0 -> 9015 bytes .../src/resources/images/shop/automator.svg | 1 + .../src/resources/images/shop/calendar.jpg | Bin 0 -> 6299 bytes .../images/shop/community-tickets.jpg | Bin 0 -> 10321 bytes .../src/resources/images/shop/community.jpg | Bin 0 -> 8938 bytes .../src/resources/images/shop/eventbrite.jpg | Bin 0 -> 6950 bytes .../shop/extension-advanced-options.jpg | Bin 0 -> 13556 bytes .../images/shop/extension-change-label.jpg | Bin 0 -> 12938 bytes .../shop/extension-custom-venue-links.jpg | Bin 0 -> 6528 bytes .../shop/extension-events-happening-now.jpg | Bin 0 -> 15231 bytes .../images/shop/extension-link-to-webinar.jpg | Bin 0 -> 15487 bytes .../images/shop/extension-web-url-cta.jpg | Bin 0 -> 12735 bytes .../src/resources/images/shop/filter-bar.jpg | Bin 0 -> 6459 bytes .../images/shop/image-widget-plus.jpg | Bin 0 -> 6702 bytes .../common/src/resources/images/shop/pro.jpg | Bin 0 -> 12844 bytes .../src/resources/images/shop/promoter.jpg | Bin 0 -> 6635 bytes .../images/shop/stellar-give-cta.jpg | Bin 0 -> 19603 bytes .../images/shop/stellar-give-logo.png | Bin 0 -> 5038 bytes .../images/shop/stellar-iconic-cta.jpg | Bin 0 -> 16602 bytes .../images/shop/stellar-iconic-logo.png | Bin 0 -> 3565 bytes .../images/shop/stellar-ithemes-cta.jpg | Bin 0 -> 18038 bytes .../images/shop/stellar-ithemes-logo.png | Bin 0 -> 3638 bytes .../images/shop/stellar-kadence-cta.jpg | Bin 0 -> 29785 bytes .../images/shop/stellar-kadence-logo.png | Bin 0 -> 7339 bytes .../images/shop/stellar-learndash-cta.jpg | Bin 0 -> 23981 bytes .../images/shop/stellar-learndash-logo.png | Bin 0 -> 3480 bytes .../resources/images/shop/stellar-logo.png | Bin 0 -> 6829 bytes .../resources/images/shop/stellar-rcp-cta.jpg | Bin 0 -> 25450 bytes .../images/shop/stellar-rcp-logo.png | Bin 0 -> 8582 bytes .../resources/images/shop/tickets-plus.jpg | Bin 0 -> 13017 bytes .../src/resources/images/shop/tickets.jpg | Bin 0 -> 7553 bytes .../resources/images/shop/virtual-events.jpg | Bin 0 -> 8453 bytes .../src/resources/images/tribe-loading.gif | Bin 0 -> 4697 bytes .../src/resources/images/tribe-loading@2x.gif | Bin 0 -> 4697 bytes .../src/resources/images/welcome/calendar.jpg | Bin 0 -> 20563 bytes .../images/welcome/et-plus-upsell.jpg | Bin 0 -> 29943 bytes .../images/welcome/extension-library.jpg | Bin 0 -> 25042 bytes .../images/welcome/guide-book-green.jpg | Bin 0 -> 31571 bytes .../resources/images/welcome/guide-book.jpg | Bin 0 -> 22788 bytes .../images/welcome/knowledgebase.jpg | Bin 0 -> 16717 bytes .../resources/images/welcome/migration.jpg | Bin 0 -> 15252 bytes .../resources/images/welcome/next-level.jpg | Bin 0 -> 42308 bytes .../src/resources/images/welcome/promo.jpg | Bin 0 -> 503190 bytes .../images/welcome/tickets-commerce.png | Bin 0 -> 7204 bytes .../resources/images/welcome/translations.jpg | Bin 0 -> 13129 bytes .../src/resources/images/welcome/up-sell.jpg | Bin 0 -> 20026 bytes .../images/welcome/virtual-events.jpg | Bin 0 -> 15162 bytes .../src/resources/js/admin-color-field.js | 57 + .../src/resources/js/admin-color-field.min.js | 11 + .../src/resources/js/admin-date-preview.js | 34 + .../resources/js/admin-date-preview.min.js | 11 + .../src/resources/js/admin-image-field.js | 172 + .../src/resources/js/admin-image-field.min.js | 11 + .../src/resources/js/admin-log-controls.js | 176 + .../resources/js/admin-log-controls.min.js | 11 + .../src/resources/js/admin/help-page.js | 129 + .../src/resources/js/admin/help-page.min.js | 11 + .../resources/js/admin/url-fragment-scroll.js | 119 + .../js/admin/url-fragment-scroll.min.js | 11 + .../common/src/resources/js/app-shop.js | 10 + .../common/src/resources/js/app-shop.min.js | 11 + .../common/src/resources/js/app/main.min.js | 11 + .../src/resources/js/app/modules.min.js | 37 + .../common/src/resources/js/app/vendor.min.js | 13 + .../common/src/resources/js/bumpdown.js | 293 + .../common/src/resources/js/bumpdown.min.js | 11 + .../common/src/resources/js/buttonset.js | 94 + .../common/src/resources/js/buttonset.min.js | 11 + .../common/src/resources/js/dependency.js | 336 + .../common/src/resources/js/dependency.min.js | 11 + .../common/src/resources/js/dialog.js | 73 + .../common/src/resources/js/dialog.min.js | 11 + .../common/src/resources/js/dropdowns.js | 558 + .../common/src/resources/js/dropdowns.min.js | 11 + .../common/src/resources/js/notice-dismiss.js | 40 + .../src/resources/js/notice-dismiss.min.js | 11 + .../common/src/resources/js/onboarding.js | 106 + .../common/src/resources/js/onboarding.min.js | 11 + .../common/src/resources/js/pue-notices.js | 31 + .../src/resources/js/pue-notices.min.js | 11 + .../common/src/resources/js/select2-after.js | 59 + .../src/resources/js/select2-after.min.js | 11 + .../src/resources/js/tec-a11y-dialog.js | 554 + .../src/resources/js/tec-a11y-dialog.min.js | 11 + .../common/src/resources/js/timepicker.js | 111 + .../common/src/resources/js/timepicker.min.js | 11 + .../common/src/resources/js/tooltip.js | 64 + .../common/src/resources/js/tooltip.min.js | 11 + .../common/src/resources/js/tribe-common.js | 37 + .../src/resources/js/tribe-common.min.js | 11 + .../src/resources/js/tribe-datatables.js | 200 + .../src/resources/js/tribe-datatables.min.js | 11 + .../src/resources/js/underscore-after.js | 19 + .../src/resources/js/underscore-after.min.js | 11 + .../src/resources/js/underscore-before.js | 42 + .../src/resources/js/underscore-before.min.js | 11 + .../src/resources/js/utils-camelcase.js | 112 + .../src/resources/js/utils-camelcase.min.js | 11 + .../src/resources/js/utils/query-string.js | 737 + .../resources/js/utils/query-string.min.js | 11 + .../common/src/resources/js/validation.js | 825 + .../common/src/resources/js/validation.min.js | 11 + .../common/src/views/dialog/alert.php | 31 + .../common/src/views/dialog/button.php | 46 + .../common/src/views/dialog/confirm.php | 32 + .../common/src/views/dialog/dialog.php | 28 + .../common/src/views/dialog/modal.php | 28 + .../common/src/views/dialog/warning.php | 32 + .../common/src/views/promoter/auth.php | 85 + .../common/src/views/tooltip/tooltip.php | 24 + .../views/v2/components/icons/arrow-right.php | 23 + .../views/v2/components/icons/cal-export.php | 28 + .../views/v2/components/icons/caret-down.php | 23 + .../views/v2/components/icons/caret-left.php | 23 + .../views/v2/components/icons/caret-right.php | 23 + .../views/v2/components/icons/close-alt.php | 23 + .../src/views/v2/components/icons/close.php | 23 + .../src/views/v2/components/icons/day.php | 23 + .../src/views/v2/components/icons/dot.php | 23 + .../src/views/v2/components/icons/error.php | 23 + .../views/v2/components/icons/featured.php | 30 + .../src/views/v2/components/icons/filter.php | 23 + .../src/views/v2/components/icons/hybrid.php | 34 + .../src/views/v2/components/icons/list.php | 34 + .../views/v2/components/icons/location.php | 23 + .../src/views/v2/components/icons/mail.php | 23 + .../src/views/v2/components/icons/map-pin.php | 23 + .../src/views/v2/components/icons/map.php | 23 + .../components/icons/messages-not-found.php | 23 + .../src/views/v2/components/icons/minus.php | 23 + .../src/views/v2/components/icons/month.php | 23 + .../src/views/v2/components/icons/no-map.php | 23 + .../src/views/v2/components/icons/phone.php | 23 + .../src/views/v2/components/icons/photo.php | 23 + .../src/views/v2/components/icons/play.php | 23 + .../src/views/v2/components/icons/plus.php | 23 + .../views/v2/components/icons/recurring.php | 31 + .../src/views/v2/components/icons/reset.php | 23 + .../src/views/v2/components/icons/search.php | 23 + .../v2/components/icons/stellar-icon.php | 27 + .../src/views/v2/components/icons/summary.php | 27 + .../src/views/v2/components/icons/video.php | 23 + .../src/views/v2/components/icons/virtual.php | 33 + .../src/views/v2/components/icons/website.php | 23 + .../src/views/v2/components/icons/week.php | 23 + .../common/tribe-autoload.php | 9 + .../common/vendor/attrchange/js/attrchange.js | 124 + .../vendor/attrchange/js/attrchange_ext.js | 97 + .../common/vendor/autoload.php | 25 + .../common/vendor/composer/ClassLoader.php | 579 + .../vendor/composer/InstalledVersions.php | 359 + .../common/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 125 + .../vendor/composer/autoload_namespaces.php | 9 + .../common/vendor/composer/autoload_psr4.php | 24 + .../common/vendor/composer/autoload_real.php | 38 + .../vendor/composer/autoload_static.php | 236 + .../common/vendor/composer/installed.json | 565 + .../common/vendor/composer/installed.php | 110 + .../common/vendor/composer/platform_check.php | 26 + .../DataTables-1.10.23/images/sort_asc.png | Bin 0 -> 160 bytes .../images/sort_asc_disabled.png | Bin 0 -> 148 bytes .../DataTables-1.10.23/images/sort_both.png | Bin 0 -> 201 bytes .../DataTables-1.10.23/images/sort_desc.png | Bin 0 -> 158 bytes .../images/sort_desc_disabled.png | Bin 0 -> 146 bytes .../common/vendor/datatables/datatables.css | 1279 + .../common/vendor/datatables/datatables.js | 28818 ++++++++++++++++ .../vendor/datatables/datatables.min.css | 140 + .../vendor/datatables/datatables.min.js | 641 + .../jquery.timepicker.css | 72 + .../jquery.timepicker.min.js | 7 + .../lib/bootstrap-datepicker.css | 512 + .../lib/glyphicons-halflings.png | Bin 0 -> 13826 bytes .../lib/screenshot.png | Bin 0 -> 4756 bytes .../jquery-tribe-timepicker/lib/site.css | 195 + .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../jquery/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../jquery/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../jquery/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../jquery/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../jquery/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../common/vendor/jquery/ui.datepicker.css | 208 + .../common/vendor/jquery/ui.theme.css | 563 + .../common/vendor/ky/ky.min.js | 8 + .../common/vendor/ky/tec-ky.js | 2 + .../common/vendor/momentjs/locale.min.js | 1 + .../common/vendor/momentjs/moment.min.js | 1 + .../tooltipster/tooltipster.bundle.min.css | 1 + .../tooltipster/tooltipster.bundle.min.js | 2 + .../tooltipster/tooltipster.main.min.css | 1 + .../tooltipster/tooltipster.main.min.js | 1 + .../tribe-select2/select2-bootstrap.css | 87 + .../vendor/tribe-select2/select2-spinner.gif | Bin 0 -> 1849 bytes .../common/vendor/tribe-select2/select2.css | 692 + .../vendor/tribe-select2/select2.min.js | 23 + .../common/vendor/tribe-select2/select2.png | Bin 0 -> 613 bytes .../common/vendor/tribe-select2/select2x2.png | Bin 0 -> 845 bytes .../tribe-selectWoo/dist/css/select2.css | 484 + .../tribe-selectWoo/dist/css/select2.min.css | 1 + .../tribe-selectWoo/dist/css/selectWoo.css | 484 + .../dist/css/selectWoo.min.css | 1 + .../tribe-selectWoo/dist/js/select2.full.js | 6586 ++++ .../dist/js/select2.full.min.js | 1 + .../vendor/tribe-selectWoo/dist/js/select2.js | 5875 ++++ .../tribe-selectWoo/dist/js/select2.min.js | 1 + .../tribe-selectWoo/dist/js/selectWoo.full.js | 6595 ++++ .../dist/js/selectWoo.full.min.js | 16 + .../tribe-selectWoo/dist/js/selectWoo.js | 5879 ++++ .../tribe-selectWoo/dist/js/selectWoo.min.js | 1 + .../vendor-prefixed/autoload-classmap.php | 201 + .../vendor/vendor-prefixed/autoload.php | 20 + .../php-jwt/src/BeforeValidException.php | 13 + .../firebase/php-jwt/src/CachedKeySet.php | 235 + .../firebase/php-jwt/src/ExpiredException.php | 13 + .../firebase/php-jwt/src/JWK.php | 328 + .../firebase/php-jwt/src/JWT.php | 634 + .../firebase/php-jwt/src/Key.php | 70 + .../php-jwt/src/SignatureInvalidException.php | 13 + .../vendor-prefixed/lucatume/di52/src/App.php | 538 + .../di52/src/Builders/BuilderInterface.php | 27 + .../di52/src/Builders/CallableBuilder.php | 98 + .../di52/src/Builders/ClassBuilder.php | 242 + .../di52/src/Builders/ClosureBuilder.php | 60 + .../lucatume/di52/src/Builders/Factory.php | 90 + .../lucatume/di52/src/Builders/Parameter.php | 222 + .../ReinitializableBuilderInterface.php | 30 + .../lucatume/di52/src/Builders/Resolver.php | 323 + .../di52/src/Builders/ValueBuilder.php | 59 + .../lucatume/di52/src/Container.php | 876 + .../lucatume/di52/src/ContainerException.php | 138 + .../lucatume/di52/src/NestedParseError.php | 73 + .../lucatume/di52/src/NotFoundException.php | 23 + .../lucatume/di52/src/ServiceProvider.php | 78 + .../monolog/src/Monolog/ErrorHandler.php | 242 + .../Monolog/Formatter/ChromePHPFormatter.php | 81 + .../Monolog/Formatter/ElasticaFormatter.php | 92 + .../Monolog/Formatter/FlowdockFormatter.php | 119 + .../Monolog/Formatter/FluentdFormatter.php | 89 + .../Monolog/Formatter/FormatterInterface.php | 39 + .../Formatter/GelfMessageFormatter.php | 141 + .../src/Monolog/Formatter/HtmlFormatter.php | 144 + .../src/Monolog/Formatter/JsonFormatter.php | 217 + .../src/Monolog/Formatter/LineFormatter.php | 184 + .../src/Monolog/Formatter/LogglyFormatter.php | 50 + .../Monolog/Formatter/LogstashFormatter.php | 169 + .../Monolog/Formatter/MongoDBFormatter.php | 110 + .../Monolog/Formatter/NormalizerFormatter.php | 317 + .../src/Monolog/Formatter/ScalarFormatter.php | 51 + .../Monolog/Formatter/WildfireFormatter.php | 116 + .../src/Monolog/Handler/AbstractHandler.php | 199 + .../Handler/AbstractProcessingHandler.php | 71 + .../Monolog/Handler/AbstractSyslogHandler.php | 104 + .../src/Monolog/Handler/AmqpHandler.php | 151 + .../Monolog/Handler/BrowserConsoleHandler.php | 243 + .../src/Monolog/Handler/BufferHandler.php | 132 + .../src/Monolog/Handler/ChromePHPHandler.php | 214 + .../src/Monolog/Handler/CouchDBHandler.php | 75 + .../src/Monolog/Handler/CubeHandler.php | 154 + .../monolog/src/Monolog/Handler/Curl/Util.php | 60 + .../Monolog/Handler/DeduplicationHandler.php | 172 + .../Handler/DoctrineCouchDBHandler.php | 48 + .../src/Monolog/Handler/DynamoDbHandler.php | 110 + .../Monolog/Handler/ElasticSearchHandler.php | 131 + .../src/Monolog/Handler/ErrorLogHandler.php | 85 + .../src/Monolog/Handler/FilterHandler.php | 143 + .../ActivationStrategyInterface.php | 31 + .../ChannelLevelActivationStrategy.php | 62 + .../ErrorLevelActivationStrategy.php | 37 + .../Monolog/Handler/FingersCrossedHandler.php | 180 + .../src/Monolog/Handler/FirePHPHandler.php | 198 + .../src/Monolog/Handler/FleepHookHandler.php | 129 + .../src/Monolog/Handler/FlowdockHandler.php | 130 + .../src/Monolog/Handler/GelfHandler.php | 68 + .../src/Monolog/Handler/GroupHandler.php | 119 + .../src/Monolog/Handler/HandlerInterface.php | 93 + .../src/Monolog/Handler/HandlerWrapper.php | 119 + .../src/Monolog/Handler/HipChatHandler.php | 368 + .../src/Monolog/Handler/IFTTTHandler.php | 72 + .../src/Monolog/Handler/InsightOpsHandler.php | 65 + .../src/Monolog/Handler/LogEntriesHandler.php | 58 + .../src/Monolog/Handler/LogglyHandler.php | 105 + .../src/Monolog/Handler/MailHandler.php | 70 + .../src/Monolog/Handler/MandrillHandler.php | 71 + .../Handler/MissingExtensionException.php | 24 + .../src/Monolog/Handler/MongoDBHandler.php | 62 + .../Monolog/Handler/NativeMailerHandler.php | 188 + .../src/Monolog/Handler/NewRelicHandler.php | 207 + .../src/Monolog/Handler/NullHandler.php | 48 + .../src/Monolog/Handler/PHPConsoleHandler.php | 245 + .../src/Monolog/Handler/PsrHandler.php | 59 + .../src/Monolog/Handler/PushoverHandler.php | 188 + .../src/Monolog/Handler/RavenHandler.php | 235 + .../src/Monolog/Handler/RedisHandler.php | 100 + .../src/Monolog/Handler/RollbarHandler.php | 147 + .../Monolog/Handler/RotatingFileHandler.php | 193 + .../src/Monolog/Handler/SamplingHandler.php | 85 + .../src/Monolog/Handler/Slack/SlackRecord.php | 297 + .../src/Monolog/Handler/SlackHandler.php | 223 + .../Monolog/Handler/SlackWebhookHandler.php | 123 + .../src/Monolog/Handler/SlackbotHandler.php | 83 + .../src/Monolog/Handler/SocketHandler.php | 388 + .../src/Monolog/Handler/StreamHandler.php | 179 + .../Monolog/Handler/SwiftMailerHandler.php | 114 + .../src/Monolog/Handler/SyslogHandler.php | 70 + .../Monolog/Handler/SyslogUdp/UdpSocket.php | 59 + .../src/Monolog/Handler/SyslogUdpHandler.php | 106 + .../src/Monolog/Handler/TestHandler.php | 167 + .../Handler/WhatFailureGroupHandler.php | 74 + .../Monolog/Handler/ZendMonitorHandler.php | 98 + .../monolog/monolog/src/Monolog/Logger.php | 794 + .../src/Monolog/Processor/GitProcessor.php | 67 + .../Processor/IntrospectionProcessor.php | 115 + .../Processor/MemoryPeakUsageProcessor.php | 38 + .../src/Monolog/Processor/MemoryProcessor.php | 66 + .../Processor/MemoryUsageProcessor.php | 38 + .../Monolog/Processor/MercurialProcessor.php | 66 + .../Monolog/Processor/ProcessIdProcessor.php | 34 + .../Monolog/Processor/ProcessorInterface.php | 28 + .../Processor/PsrLogMessageProcessor.php | 53 + .../src/Monolog/Processor/TagProcessor.php | 47 + .../src/Monolog/Processor/UidProcessor.php | 62 + .../src/Monolog/Processor/WebProcessor.php | 116 + .../monolog/monolog/src/Monolog/Registry.php | 137 + .../src/Monolog/ResettableInterface.php | 34 + .../monolog/src/Monolog/SignalHandler.php | 118 + .../monolog/monolog/src/Monolog/Utils.php | 28 + .../src/ContainerExceptionInterface.php | 16 + .../psr/container/src/ContainerInterface.php | 42 + .../src/NotFoundExceptionInterface.php | 16 + .../psr/log/Psr/Log/AbstractLogger.php | 134 + .../log/Psr/Log/InvalidArgumentException.php | 13 + .../psr/log/Psr/Log/LogLevel.php | 24 + .../psr/log/Psr/Log/LoggerAwareInterface.php | 24 + .../psr/log/Psr/Log/LoggerAwareTrait.php | 32 + .../psr/log/Psr/Log/LoggerInterface.php | 131 + .../psr/log/Psr/Log/LoggerTrait.php | 148 + .../psr/log/Psr/Log/NullLogger.php | 36 + .../psr/log/Psr/Log/Test/DummyTest.php | 24 + .../log/Psr/Log/Test/LoggerInterfaceTest.php | 144 + .../psr/log/Psr/Log/Test/TestLogger.php | 153 + .../src/ContainerInterface.php | 64 + .../stellarwp/db/src/DB/Config.php | 75 + .../stellarwp/db/src/DB/DB.php | 332 + .../Database/Actions/EnableBigSqlSelects.php | 38 + .../Exceptions/DatabaseQueryException.php | 62 + .../stellarwp/db/src/DB/Database/Provider.php | 36 + .../db/src/DB/QueryBuilder/Clauses/From.php | 35 + .../db/src/DB/QueryBuilder/Clauses/Having.php | 127 + .../db/src/DB/QueryBuilder/Clauses/Join.php | 65 + .../DB/QueryBuilder/Clauses/JoinCondition.php | 78 + .../src/DB/QueryBuilder/Clauses/MetaTable.php | 42 + .../src/DB/QueryBuilder/Clauses/OrderBy.php | 57 + .../db/src/DB/QueryBuilder/Clauses/RawSQL.php | 29 + .../db/src/DB/QueryBuilder/Clauses/Select.php | 33 + .../db/src/DB/QueryBuilder/Clauses/Union.php | 35 + .../db/src/DB/QueryBuilder/Clauses/Where.php | 118 + .../DB/QueryBuilder/Concerns/Aggregate.php | 118 + .../db/src/DB/QueryBuilder/Concerns/CRUD.php | 121 + .../DB/QueryBuilder/Concerns/FromClause.php | 61 + .../Concerns/GroupByStatement.php | 38 + .../DB/QueryBuilder/Concerns/HavingClause.php | 302 + .../DB/QueryBuilder/Concerns/JoinClause.php | 166 + .../QueryBuilder/Concerns/LimitStatement.php | 36 + .../DB/QueryBuilder/Concerns/MetaQuery.php | 141 + .../QueryBuilder/Concerns/OffsetStatement.php | 36 + .../Concerns/OrderByStatement.php | 53 + .../QueryBuilder/Concerns/SelectStatement.php | 128 + .../DB/QueryBuilder/Concerns/TablePrefix.php | 41 + .../QueryBuilder/Concerns/UnionOperator.php | 61 + .../DB/QueryBuilder/Concerns/WhereClause.php | 494 + .../src/DB/QueryBuilder/JoinQueryBuilder.php | 172 + .../db/src/DB/QueryBuilder/QueryBuilder.php | 69 + .../db/src/DB/QueryBuilder/Types/JoinType.php | 18 + .../db/src/DB/QueryBuilder/Types/Math.php | 20 + .../db/src/DB/QueryBuilder/Types/Operator.php | 30 + .../db/src/DB/QueryBuilder/Types/Type.php | 25 + .../src/DB/QueryBuilder/WhereQueryBuilder.php | 25 + .../installer/src/Installer/Assets.php | 140 + .../installer/src/Installer/Button.php | 231 + .../installer/src/Installer/Config.php | 70 + .../src/Installer/Contracts/Handler.php | 86 + .../src/Installer/Handler/Plugin.php | 490 + .../installer/src/Installer/Installer.php | 388 + .../src/Installer/Utils/Array_Utils.php | 109 + .../installer/src/admin-views/button.php | 43 + .../installer/src/assets/js/installer.js | 134 + .../src/Telemetry/Admin/Admin_Subscriber.php | 67 + .../src/Telemetry/Admin/Resources.php | 138 + .../telemetry/src/Telemetry/Config.php | 235 + .../Contracts/Abstract_Subscriber.php | 37 + .../src/Telemetry/Contracts/Data_Provider.php | 33 + .../src/Telemetry/Contracts/Runnable.php | 32 + .../Contracts/Subscriber_Interface.php | 28 + .../Contracts/Template_Interface.php | 52 + .../telemetry/src/Telemetry/Core.php | 181 + .../Telemetry/Data_Providers/Debug_Data.php | 58 + .../Exit_Interview_Subscriber.php | 169 + .../src/Telemetry/Exit_Interview/Template.php | 185 + .../src/Telemetry/Last_Send/Last_Send.php | 138 + .../Last_Send/Last_Send_Subscriber.php | 48 + .../Telemetry/Opt_In/Opt_In_Subscriber.php | 156 + .../src/Telemetry/Opt_In/Opt_In_Template.php | 226 + .../telemetry/src/Telemetry/Opt_In/Status.php | 288 + .../src/Telemetry/Telemetry/Telemetry.php | 408 + .../Telemetry/Telemetry_Subscriber.php | 95 + .../telemetry/src/Telemetry/Uninstall.php | 74 + .../telemetry/src/resources/css/styles.css | 216 + .../src/resources/images/stellar-logo.svg | 12 + .../telemetry/src/resources/js/scripts.js | 122 + .../telemetry/src/views/exit-interview.php | 45 + .../stellarwp/telemetry/src/views/optin.php | 69 + .../the-events-calendar/lang/readme.txt | 3 + .../lang/the-events-calendar-bg_BG.mo | Bin 0 -> 108616 bytes .../lang/the-events-calendar-ca.mo | Bin 0 -> 284029 bytes .../lang/the-events-calendar-cs_CZ.mo | Bin 0 -> 96648 bytes .../lang/the-events-calendar-da_DK.mo | Bin 0 -> 234348 bytes .../lang/the-events-calendar-de_CH.mo | Bin 0 -> 307929 bytes .../the-events-calendar-de_CH_informal.mo | Bin 0 -> 307598 bytes .../lang/the-events-calendar-de_DE.mo | Bin 0 -> 306803 bytes .../lang/the-events-calendar-de_DE_formal.mo | Bin 0 -> 307886 bytes .../lang/the-events-calendar-el.mo | Bin 0 -> 71665 bytes .../lang/the-events-calendar-en_AU.mo | Bin 0 -> 174362 bytes .../lang/the-events-calendar-en_CA.mo | Bin 0 -> 212041 bytes .../lang/the-events-calendar-en_GB.mo | Bin 0 -> 184661 bytes .../lang/the-events-calendar-en_NZ.mo | Bin 0 -> 174370 bytes .../lang/the-events-calendar-en_ZA.mo | Bin 0 -> 237567 bytes .../lang/the-events-calendar-es_AR.mo | Bin 0 -> 178179 bytes .../lang/the-events-calendar-es_CO.mo | Bin 0 -> 265026 bytes .../lang/the-events-calendar-es_DO.mo | Bin 0 -> 230799 bytes .../lang/the-events-calendar-es_EC.mo | Bin 0 -> 255659 bytes .../lang/the-events-calendar-es_ES.mo | Bin 0 -> 304724 bytes .../lang/the-events-calendar-es_MX.mo | Bin 0 -> 228581 bytes .../lang/the-events-calendar-es_VE.mo | Bin 0 -> 265026 bytes .../lang/the-events-calendar-eu.mo | Bin 0 -> 64815 bytes .../lang/the-events-calendar-fi.mo | Bin 0 -> 108730 bytes .../lang/the-events-calendar-fr_CA.mo | Bin 0 -> 69697 bytes .../lang/the-events-calendar-fr_FR.mo | Bin 0 -> 270068 bytes .../lang/the-events-calendar-gl_ES.mo | Bin 0 -> 195264 bytes .../lang/the-events-calendar-he_IL.mo | Bin 0 -> 68335 bytes .../lang/the-events-calendar-hr.mo | Bin 0 -> 102227 bytes .../lang/the-events-calendar-hu_HU.mo | Bin 0 -> 193645 bytes .../lang/the-events-calendar-it_IT.mo | Bin 0 -> 233453 bytes .../lang/the-events-calendar-ja.mo | Bin 0 -> 251022 bytes .../lang/the-events-calendar-ko_KR.mo | Bin 0 -> 58140 bytes .../lang/the-events-calendar-lt_LT.mo | Bin 0 -> 82177 bytes .../lang/the-events-calendar-nb_NO.mo | Bin 0 -> 130674 bytes .../lang/the-events-calendar-nl_BE.mo | Bin 0 -> 58964 bytes .../lang/the-events-calendar-nl_NL.mo | Bin 0 -> 299571 bytes .../lang/the-events-calendar-nn_NO.mo | Bin 0 -> 208553 bytes .../lang/the-events-calendar-pl_PL.mo | Bin 0 -> 106165 bytes .../lang/the-events-calendar-pt_BR.mo | Bin 0 -> 248160 bytes .../lang/the-events-calendar-pt_PT.mo | Bin 0 -> 148871 bytes .../lang/the-events-calendar-ro_RO.mo | Bin 0 -> 60182 bytes .../lang/the-events-calendar-ru_RU.mo | Bin 0 -> 402567 bytes .../lang/the-events-calendar-sk_SK.mo | Bin 0 -> 59563 bytes .../lang/the-events-calendar-sl_SI.mo | Bin 0 -> 50026 bytes .../lang/the-events-calendar-sq.mo | Bin 0 -> 62711 bytes .../lang/the-events-calendar-sv_SE.mo | Bin 0 -> 137746 bytes .../lang/the-events-calendar-tr_TR.mo | Bin 0 -> 221173 bytes .../lang/the-events-calendar-uk.mo | Bin 0 -> 96699 bytes .../lang/the-events-calendar-zh_CN.mo | Bin 0 -> 253293 bytes .../lang/the-events-calendar.pot | 8270 +++++ .../plugins/the-events-calendar/license.txt | 309 + .../plugins/the-events-calendar/readme.txt | 2796 ++ .../src/Events/Configuration/Provider.php | 30 + .../Events/Custom_Tables/V1/Activation.php | 179 + .../V1/Events/Event_Cleaner/Event_Cleaner.php | 45 + .../V1/Events/Event_Cleaner/Provider.php | 102 + .../V1/Events/Occurrences/Max_Recurrence.php | 70 + .../Occurrences/Max_Recurrence_Provider.php | 80 + .../Occurrences/Occurrences_Generator.php | 70 + .../V1/Feedback/Feedback_Interface.php | 50 + .../V1/Feedback/Google_Form_Feedback.php | 186 + .../Custom_Tables/V1/Feedback/Provider.php | 42 + .../V1/Full_Activation_Provider.php | 164 + .../Events/Custom_Tables/V1/Health_Check.php | 135 + .../V1/Integrations/ACF/Controller.php | 207 + .../V1/Integrations/ACF/Query_Modifier.php | 65 + .../V1/Integrations/Provider.php | 40 + .../Migration/Admin/Phase_View_Renderer.php | 249 + .../V1/Migration/Admin/Progress_Modal.php | 166 + .../V1/Migration/Admin/Template.php | 31 + .../V1/Migration/Admin/Upgrade_Tab.php | 100 + .../Custom_Tables/V1/Migration/Ajax.php | 556 + .../V1/Migration/Asset_Loader.php | 145 + .../CSV_Report/Download_Report_Provider.php | 61 + .../V1/Migration/CSV_Report/File_Download.php | 123 + .../Custom_Tables/V1/Migration/Events.php | 344 + .../Expected_Migration_Exception.php | 22 + .../V1/Migration/Maintenance_Mode.php | 156 + .../V1/Migration/Migration_Exception.php | 21 + .../Custom_Tables/V1/Migration/Process.php | 258 + .../V1/Migration/Process_Worker.php | 971 + .../Custom_Tables/V1/Migration/Provider.php | 373 + .../V1/Migration/Reports/Event_Report.php | 535 + .../Reports/Event_Report_Categories.php | 71 + .../V1/Migration/Reports/Site_Report.php | 197 + .../Custom_Tables/V1/Migration/State.php | 370 + .../Strategies/Null_Migration_Strategy.php | 42 + .../Single_Event_Migration_Strategy.php | 118 + .../Strategies/Strategy_Interface.php | 47 + .../V1/Migration/String_Dictionary.php | 492 + .../Custom_Tables/V1/Models/Builder.php | 1641 + .../Events/Custom_Tables/V1/Models/Event.php | 260 + .../Models/Formatters/Boolean_Formatter.php | 21 + .../V1/Models/Formatters/Date_Formatter.php | 63 + .../Models/Formatters/End_Date_Formatter.php | 57 + .../V1/Models/Formatters/Formatter.php | 38 + .../Formatters/Integer_Key_Formatter.php | 41 + .../Models/Formatters/Numeric_Formatter.php | 12 + .../V1/Models/Formatters/Text_Formatter.php | 17 + .../Models/Formatters/Timezone_Formatter.php | 25 + .../Events/Custom_Tables/V1/Models/Model.php | 706 + .../V1/Models/Model_Date_Attributes.php | 87 + .../Custom_Tables/V1/Models/Occurrence.php | 468 + .../Custom_Tables/V1/Models/Post_Model.php | 34 + .../V1/Models/Validators/Duration.php | 94 + .../V1/Models/Validators/End_Date.php | 91 + .../V1/Models/Validators/End_Date_UTC.php | 109 + .../V1/Models/Validators/Ignore_Validator.php | 36 + .../V1/Models/Validators/Integer_Key.php | 74 + .../Models/Validators/Occurrence_Duration.php | 77 + .../V1/Models/Validators/Positive_Integer.php | 55 + .../V1/Models/Validators/Present.php | 33 + .../V1/Models/Validators/Range_Dates.php | 40 + .../V1/Models/Validators/Start_Date.php | 66 + .../V1/Models/Validators/Start_Date_UTC.php | 96 + .../V1/Models/Validators/String_Validator.php | 59 + .../V1/Models/Validators/Valid_Date.php | 51 + .../V1/Models/Validators/Valid_Event.php | 36 + .../Models/Validators/Valid_Event_Model.php | 49 + .../V1/Models/Validators/Valid_Timezone.php | 40 + .../V1/Models/Validators/Validator.php | 67 + .../Models/Validators/ValidatorInterface.php | 62 + .../V1/Models/Validators/Whole_Number.php | 30 + .../src/Events/Custom_Tables/V1/Notices.php | 81 + .../src/Events/Custom_Tables/V1/Provider.php | 254 + .../Custom_Tables/V1/Provider_Contract.php | 33 + .../Custom_Tables/V1/Repository/Events.php | 136 + .../Custom_Tables/V1/Repository/Provider.php | 62 + .../Schema_Builder/Abstract_Custom_Field.php | 172 + .../Schema_Builder/Abstract_Custom_Table.php | 282 + .../Abstract_Schema_Provider.php | 58 + .../Schema_Builder/Field_Schema_Interface.php | 54 + .../V1/Schema_Builder/Schema_Builder.php | 362 + .../Schema_Provider_Interface.php | 61 + .../Schema_Builder/Table_Schema_Interface.php | 103 + .../Events/Custom_Tables/V1/Tables/Events.php | 105 + .../Custom_Tables/V1/Tables/Occurrences.php | 124 + .../Custom_Tables/V1/Tables/Provider.php | 30 + .../V1/Traits/With_Core_Tables.php | 55 + .../V1/Traits/With_Database_Transactions.php | 177 + .../V1/Traits/With_Dates_Representation.php | 52 + .../V1/Traits/With_Observable_Filtering.php | 57 + .../V1/Traits/With_Reflection.php | 47 + .../V1/Traits/With_String_Dictionary.php | 43 + .../V1/Traits/With_Timezones.php | 48 + .../V1/Traits/With_Unbound_Queries.php | 114 + .../V1/Traits/With_WP_Query_Introspection.php | 98 + .../Custom_Tables/V1/Updates/Controller.php | 381 + .../Custom_Tables/V1/Updates/Events.php | 259 + .../Custom_Tables/V1/Updates/Meta_Watcher.php | 191 + .../Custom_Tables/V1/Updates/Provider.php | 300 + .../Custom_Tables/V1/Updates/Requests.php | 179 + .../V1/Views/V2/By_Day_View_Compatibility.php | 63 + .../V1/Views/V2/Customizer_Compatibility.php | 75 + .../Custom_Tables/V1/Views/V2/Provider.php | 84 + .../V1/WP_Query/Custom_Tables_Meta_Query.php | 548 + .../V1/WP_Query/Custom_Tables_Query.php | 724 + .../V1/WP_Query/Modifiers/Base_Modifier.php | 94 + .../Modifiers/Events_Admin_List_Modifier.php | 66 + .../Modifiers/Events_Only_Modifier.php | 164 + .../WP_Query/Modifiers/WP_Query_Modifier.php | 88 + .../Monitors/Custom_Tables_Query_Monitor.php | 63 + .../V1/WP_Query/Monitors/Query_Monitor.php | 309 + .../V1/WP_Query/Monitors/WP_Query_Monitor.php | 66 + .../Custom_Tables/V1/WP_Query/Provider.php | 148 + .../V1/WP_Query/Redirection_Schema.php | 87 + .../Custom_Tables_Query_Filters.php | 444 + .../V1/WP_Query/Repository/Query_Replace.php | 367 + .../V1/admin-views/migration/icons/rerun.php | 18 + .../phase/cancel-complete.php | 32 + .../phase/cancel-in-progress.php | 10 + .../phase/migration-complete.php | 32 + .../phase/migration-failed-complete.php | 31 + .../phase/migration-in-progress.php | 50 + .../phase/migration-prompt.php | 113 + .../phase/revert-complete.php | 32 + .../phase/revert-in-progress.php | 9 + .../migration/partials/event-items.php | 22 + .../migration/partials/event-loop.php | 61 + .../migration/partials/failure-event-loop.php | 28 + .../migration/partials/progress-bar.php | 74 + .../migration/phase/cancel-in-progress.php | 38 + .../migration/phase/migration-complete.php | 54 + .../phase/migration-failed-complete.php | 92 + .../migration/phase/migration-in-progress.php | 50 + .../migration/phase/migration-prompt.php | 142 + .../migration/phase/preview-in-progress.php | 37 + .../migration/phase/preview-prompt.php | 54 + .../V1/admin-views/migration/phase/report.php | 69 + .../migration/phase/revert-in-progress.php | 9 + .../migration/settings-maintenance-modal.php | 52 + .../V1/admin-views/migration/upgrade-box.php | 42 + .../V1/admin-views/migration/upgrade-logo.php | 5 + .../Events/Custom_Tables/V1/template-tags.php | 146 + .../src/Events/Editor/Full_Site/Hooks.php | 145 + .../src/Events/Editor/Full_Site/Provider.php | 104 + .../src/Events/Editor/Full_Site/Templates.php | 94 + .../Full_Site/Templates/archive-events.html | 3 + .../src/Events/Installer/Provider.php | 22 + .../Integrations/Integration_Abstract.php | 76 + .../Plugins/Colbri_Page_Builder/Provider.php | 50 + .../Plugins/Elementor/Provider.php | 63 + .../Event_Tickets/Emails/Email/RSVP.php | 200 + .../Event_Tickets/Emails/Email/Ticket.php | 211 + .../Plugins/Event_Tickets/Emails/Emails.php | 262 + .../Plugins/Event_Tickets/Emails/Hooks.php | 289 + .../Emails/JSON_LD/Event_Data.php | 79 + .../Plugins/Event_Tickets/Emails/Provider.php | 57 + .../Plugins/Event_Tickets/Emails/Template.php | 31 + .../Plugins/Event_Tickets/Provider.php | 39 + .../Plugins/Rank_Math/Provider.php | 40 + .../Plugins/WordPress_SEO/Events_Schema.php | 296 + .../Plugins/WordPress_SEO/Provider.php | 95 + .../src/Events/Integrations/Provider.php | 37 + .../src/Events/Legacy/Views/V1/Provider.php | 129 + .../src/Events/Site_Health/Info_Section.php | 214 + .../src/Events/Site_Health/Provider.php | 72 + .../src/Events/Telemetry/Provider.php | 128 + .../src/Events/Telemetry/Telemetry.php | 273 + .../the-events-calendar/src/Tribe/API.php | 918 + .../src/Tribe/Adjacent_Events.php | 347 + .../src/Tribe/Admin/Bar/Admin_Bar.php | 68 + .../Admin/Bar/Configurator_Interface.php | 14 + .../Tribe/Admin/Bar/Default_Configurator.php | 113 + .../src/Tribe/Admin/Event_Meta_Box.php | 423 + .../src/Tribe/Admin/Filter_Bar/Provider.php | 170 + .../Tribe/Admin/Notice/Full_Site_Editor.php | 76 + .../Admin/Notice/Install_Event_Tickets.php | 285 + .../Admin/Notice/Legacy_Views_Deprecation.php | 106 + .../Admin/Notice/Legacy_Views_Updated.php | 130 + .../src/Tribe/Admin/Notice/Marketing.php | 59 + .../src/Tribe/Admin/Notice/Timezones.php | 159 + .../src/Tribe/Admin/Notice/Update.php | 167 + .../src/Tribe/Admin/Provider.php | 56 + .../src/Tribe/Admin/Settings.php | 755 + .../src/Tribe/Admin/Timezone_Settings.php | 100 + .../src/Tribe/Admin/Timezone_Updater.php | 235 + .../src/Tribe/Admin_List.php | 475 + .../src/Tribe/Aggregator.php | 637 + .../src/Tribe/Aggregator/API/Abstract.php | 16 + .../src/Tribe/Aggregator/API/Image.php | 161 + .../src/Tribe/Aggregator/API/Import.php | 226 + .../src/Tribe/Aggregator/API/Origins.php | 275 + .../src/Tribe/Aggregator/API/Requests.php | 69 + .../src/Tribe/Aggregator/Admin_Bar.php | 146 + .../src/Tribe/Aggregator/CLI/Command.php | 612 + .../Tribe/Aggregator/CLI/Service_Provider.php | 30 + .../src/Tribe/Aggregator/Cron.php | 846 + .../src/Tribe/Aggregator/Errors.php | 360 + .../src/Tribe/Aggregator/Event.php | 471 + .../src/Tribe/Aggregator/Meta_Box.php | 77 + .../src/Tribe/Aggregator/Migrate.php | 494 + .../src/Tribe/Aggregator/Page.php | 567 + .../Aggregator/Processes/Batch_Imports.php | 86 + .../Aggregator/Processes/Import_Events.php | 484 + .../Aggregator/Processes/Queue_Control.php | 54 + .../Aggregator/Processes/Service_Provider.php | 131 + .../Aggregator/REST/V1/Endpoints/Base.php | 80 + .../Aggregator/REST/V1/Endpoints/Batch.php | 200 + .../Aggregator/REST/V1/Endpoints/State.php | 109 + .../Aggregator/REST/V1/Service_Provider.php | 68 + .../src/Tribe/Aggregator/Record/Abstract.php | 2835 ++ .../src/Tribe/Aggregator/Record/Activity.php | 358 + .../Tribe/Aggregator/Record/Async_Queue.php | 392 + .../Tribe/Aggregator/Record/Batch_Queue.php | 451 + .../src/Tribe/Aggregator/Record/CSV.php | 475 + .../Tribe/Aggregator/Record/Eventbrite.php | 187 + .../src/Tribe/Aggregator/Record/ICS.php | 51 + .../src/Tribe/Aggregator/Record/Items.php | 126 + .../Tribe/Aggregator/Record/List_Table.php | 864 + .../src/Tribe/Aggregator/Record/Meetup.php | 131 + .../src/Tribe/Aggregator/Record/Queue.php | 503 + .../Tribe/Aggregator/Record/Queue_Cleaner.php | 190 + .../Aggregator/Record/Queue_Interface.php | 109 + .../Aggregator/Record/Queue_Processor.php | 381 + .../Aggregator/Record/Queue_Realtime.php | 314 + .../Tribe/Aggregator/Record/Unsupported.php | 98 + .../src/Tribe/Aggregator/Record/Url.php | 20 + .../Tribe/Aggregator/Record/Void_Queue.php | 161 + .../src/Tribe/Aggregator/Record/gCal.php | 32 + .../src/Tribe/Aggregator/Record/iCal.php | 32 + .../src/Tribe/Aggregator/Records.php | 845 + .../src/Tribe/Aggregator/Service.php | 1106 + .../src/Tribe/Aggregator/Settings.php | 979 + .../src/Tribe/Aggregator/Tabs.php | 134 + .../src/Tribe/Aggregator/Tabs/Abstract.php | 266 + .../src/Tribe/Aggregator/Tabs/Edit.php | 166 + .../src/Tribe/Aggregator/Tabs/Favorite.php | 41 + .../src/Tribe/Aggregator/Tabs/History.php | 96 + .../src/Tribe/Aggregator/Tabs/New.php | 675 + .../src/Tribe/Aggregator/Tabs/Scheduled.php | 395 + .../src/Tribe/Ajax/Operations.php | 10 + .../src/Tribe/Amalgamator.php | 484 + .../the-events-calendar/src/Tribe/Assets.php | 747 + .../src/Tribe/Capabilities.php | 245 + .../Collections/Lazy_Post_Collection.php | 91 + .../src/Tribe/Constants.php | 81 + .../src/Tribe/Cost_Utils.php | 192 + .../src/Tribe/Customizer/Day_List_View.php | 129 + .../src/Tribe/Customizer/General_Theme.php | 461 + .../src/Tribe/Customizer/Global_Elements.php | 320 + .../src/Tribe/Customizer/Month_Week_View.php | 250 + .../src/Tribe/Customizer/Single_Event.php | 197 + .../src/Tribe/Customizer/Widget.php | 149 + .../src/Tribe/Dates/Known_Range.php | 169 + .../src/Tribe/Deactivation.php | 54 + .../src/Tribe/Default_Values.php | 59 + .../the-events-calendar/src/Tribe/Editor.php | 694 + .../src/Tribe/Editor/Assets.php | 87 + .../Tribe/Editor/Blocks/Archive_Events.php | 45 + .../Editor/Blocks/Classic_Event_Details.php | 53 + .../Tribe/Editor/Blocks/Event_Category.php | 53 + .../Tribe/Editor/Blocks/Event_Datetime.php | 134 + .../src/Tribe/Editor/Blocks/Event_Links.php | 84 + .../Tribe/Editor/Blocks/Event_Organizer.php | 53 + .../src/Tribe/Editor/Blocks/Event_Price.php | 67 + .../src/Tribe/Editor/Blocks/Event_Tags.php | 53 + .../src/Tribe/Editor/Blocks/Event_Venue.php | 53 + .../src/Tribe/Editor/Blocks/Event_Website.php | 67 + .../Tribe/Editor/Blocks/Featured_Image.php | 53 + .../src/Tribe/Editor/Compatibility.php | 241 + .../src/Tribe/Editor/Configuration.php | 136 + .../src/Tribe/Editor/Hooks.php | 115 + .../src/Tribe/Editor/I18n.php | 49 + .../src/Tribe/Editor/Meta.php | 253 + .../Objects/Editor_Object_Interface.php | 33 + .../src/Tribe/Editor/Objects/Event.php | 119 + .../src/Tribe/Editor/Provider.php | 95 + .../src/Tribe/Editor/Settings.php | 66 + .../src/Tribe/Editor/Template.php | 74 + .../src/Tribe/Editor/Template/Overwrite.php | 147 + .../src/Tribe/Embedded_Maps.php | 205 + .../src/Tribe/Event_Cleaner.php | 92 + .../src/Tribe/Event_Cleaner_Scheduler.php | 297 + .../src/Tribe/Event_Status/Admin_Template.php | 38 + .../src/Tribe/Event_Status/Classic_Editor.php | 255 + .../Events_Control_Extension/JSON_LD.php | 111 + .../Service_Provider.php | 221 + .../Compatibility/Filter_Bar/Detect.php | 38 + .../Filter_Bar/Events_Status_Filter.php | 224 + .../Filter_Bar/Service_Provider.php | 116 + .../src/Tribe/Event_Status/Event_Meta.php | 76 + .../Event_Status/Event_Status_Provider.php | 349 + .../src/Tribe/Event_Status/JSON_LD.php | 94 + .../src/Tribe/Event_Status/Models/Event.php | 99 + .../src/Tribe/Event_Status/Status_Labels.php | 132 + .../src/Tribe/Event_Status/Template.php | 38 + .../Event_Status/Template_Modifications.php | 132 + .../Tribe/Event_Tickets/Attendees_Report.php | 65 + .../src/Tribe/Event_Tickets/Main.php | 95 + .../src/Tribe/Event_Tickets/Ticket_Email.php | 42 + .../src/Tribe/Featured_Events.php | 80 + .../Featured_Events/Permalinks_Helper.php | 28 + .../Tribe/Featured_Events/Query_Helper.php | 24 + .../src/Tribe/Front_Page_View.php | 377 + .../src/Tribe/Google/Maps_API_Key.php | 188 + .../src/Tribe/Gutenberg.php | 132 + .../the-events-calendar/src/Tribe/I18n.php | 393 + .../src/Tribe/Ignored_Events.php | 1051 + .../src/Tribe/Importer/Column_Mapper.php | 138 + .../Importer/Featured_Image_Uploader.php | 9 + .../src/Tribe/Importer/File_Importer.php | 486 + .../Tribe/Importer/File_Importer_Events.php | 551 + .../Importer/File_Importer_Organizers.php | 118 + .../Tribe/Importer/File_Importer_Venues.php | 251 + .../src/Tribe/Importer/File_Reader.php | 155 + .../src/Tribe/Importer/File_Uploader.php | 76 + .../src/Tribe/Integrations/ACF/ACF.php | 55 + .../ACF/resources/tribe-admin-acf-compat.js | 31 + .../src/Tribe/Integrations/Beaver_Builder.php | 57 + .../Integrations/Divi/Service_Provider.php | 85 + .../Integrations/Fusion/Service_Provider.php | 71 + .../Integrations/Fusion/Widget_Shortcode.php | 74 + .../Hello_Elementor/Service_Provider.php | 30 + .../Hello_Elementor/Templates.php | 70 + .../hello-elementor-functions.php | 29 + .../src/Tribe/Integrations/Manager.php | 218 + .../Restrict_Content_Pro/Service_Provider.php | 148 + .../Tribe/Integrations/Twenty_Seventeen.php | 82 + .../WPML/Category_Translation.php | 114 + .../src/Tribe/Integrations/WPML/Defaults.php | 122 + .../Integrations/WPML/Language_Switcher.php | 67 + .../Tribe/Integrations/WPML/Linked_Posts.php | 348 + .../src/Tribe/Integrations/WPML/Meta.php | 264 + .../src/Tribe/Integrations/WPML/Option.php | 67 + .../Tribe/Integrations/WPML/Permalinks.php | 134 + .../src/Tribe/Integrations/WPML/Rewrites.php | 446 + .../src/Tribe/Integrations/WPML/Utils.php | 136 + .../Integrations/WPML/Views/V2/Filters.php | 193 + .../src/Tribe/Integrations/WPML/WPML.php | 141 + .../src/Tribe/Integrations/WP_Rocket.php | 43 + .../Tribe/Integrations/X_Theme/X_Theme.php | 115 + .../src/Tribe/JSON_LD/Event.php | 224 + .../src/Tribe/JSON_LD/Organizer.php | 85 + .../src/Tribe/JSON_LD/Venue.php | 105 + .../src/Tribe/Linked_Posts.php | 1420 + .../src/Tribe/Linked_Posts/Base.php | 362 + .../Tribe/Linked_Posts/Chooser_Meta_Box.php | 353 + .../the-events-calendar/src/Tribe/Main.php | 4155 +++ .../src/Tribe/Meta/Context.php | 58 + .../src/Tribe/Meta/Save.php | 247 + .../src/Tribe/Models/Post_Types/Event.php | 393 + .../src/Tribe/Models/Post_Types/Organizer.php | 57 + .../src/Tribe/Models/Post_Types/Venue.php | 65 + .../src/Tribe/Options_Exception.php | 23 + .../src/Tribe/Organizer.php | 829 + .../src/Tribe/Plugin_Register.php | 32 + .../src/Tribe/Post_Exception.php | 28 + .../the-events-calendar/src/Tribe/Privacy.php | 57 + .../the-events-calendar/src/Tribe/Query.php | 586 + .../Tribe/REST/Interfaces/Post_Repository.php | 68 + .../src/Tribe/REST/V1/Auth.php | 10 + .../Event_Definition_Provider.php | 203 + .../Organizer_Definition_Provider.php | 110 + .../Venue_Definition_Provider.php | 152 + .../src/Tribe/REST/V1/EA_Messages.php | 68 + .../Tribe/REST/V1/Endpoints/Archive_Base.php | 182 + .../REST/V1/Endpoints/Archive_Category.php | 173 + .../Tribe/REST/V1/Endpoints/Archive_Event.php | 675 + .../REST/V1/Endpoints/Archive_Organizer.php | 360 + .../Tribe/REST/V1/Endpoints/Archive_Tag.php | 184 + .../Tribe/REST/V1/Endpoints/Archive_Venue.php | 359 + .../src/Tribe/REST/V1/Endpoints/Base.php | 244 + .../REST/V1/Endpoints/Linked_Post_Base.php | 101 + .../Linked_Post_Endpoint_Interface.php | 21 + .../REST/V1/Endpoints/Single_Category.php | 191 + .../Tribe/REST/V1/Endpoints/Single_Event.php | 681 + .../REST/V1/Endpoints/Single_Event_Slug.php | 86 + .../REST/V1/Endpoints/Single_Organizer.php | 506 + .../V1/Endpoints/Single_Organizer_Slug.php | 86 + .../Tribe/REST/V1/Endpoints/Single_Tag.php | 185 + .../Tribe/REST/V1/Endpoints/Single_Venue.php | 570 + .../REST/V1/Endpoints/Single_Venue_Slug.php | 86 + .../V1/Endpoints/Swagger_Documentation.php | 177 + .../REST/V1/Endpoints/Term_Archive_Base.php | 131 + .../REST/V1/Endpoints/Term_Single_Base.php | 237 + .../src/Tribe/REST/V1/Headers/Base.php | 174 + .../src/Tribe/REST/V1/Main.php | 833 + .../src/Tribe/REST/V1/Messages.php | 153 + .../src/Tribe/REST/V1/Post_Repository.php | 726 + .../src/Tribe/REST/V1/Settings.php | 49 + .../src/Tribe/REST/V1/System.php | 55 + .../src/Tribe/REST/V1/Validator/Base.php | 122 + .../src/Tribe/REST/V1/Validator/Interface.php | 6 + .../src/Tribe/Repositories/Event.php | 1875 + .../src/Tribe/Repositories/Linked_Posts.php | 96 + .../src/Tribe/Repositories/Organizer.php | 120 + .../src/Tribe/Repositories/Venue.php | 133 + .../src/Tribe/Revisions/Event.php | 35 + .../src/Tribe/Revisions/Post.php | 52 + .../src/Tribe/Revisions/Preview.php | 118 + .../the-events-calendar/src/Tribe/Rewrite.php | 740 + .../src/Tribe/Service_Providers/Context.php | 417 + .../Tribe/Service_Providers/First_Boot.php | 89 + .../src/Tribe/Service_Providers/ORM.php | 105 + .../src/Tribe/Shortcode/Event_Details.php | 205 + .../src/Tribe/Taxonomy/Event_Tag.php | 57 + .../src/Tribe/Taxonomy/Taxonomy_Provider.php | 59 + .../src/Tribe/Template/Embed.php | 53 + .../src/Tribe/Template/Single_Event.php | 57 + .../src/Tribe/Template_Factory.php | 510 + .../src/Tribe/Templates.php | 189 + .../src/Tribe/Timezones.php | 210 + .../the-events-calendar/src/Tribe/Updater.php | 344 + .../src/Tribe/Utils/Dates.php | 0 .../src/Tribe/Utils/Id_Generator.php | 35 + .../src/Tribe/Utils/Radius.php | 58 + .../src/Tribe/Validator/Base.php | 261 + .../src/Tribe/Validator/Interface.php | 87 + .../the-events-calendar/src/Tribe/Venue.php | 943 + .../src/Tribe/Views/V2/Assets.php | 734 + .../src/Tribe/Views/V2/Customizer.php | 834 + .../Views/V2/Customizer/Configuration.php | 74 + .../src/Tribe/Views/V2/Customizer/Hooks.php | 174 + .../src/Tribe/Views/V2/Customizer/Notice.php | 91 + .../V2/Customizer/Section/Events_Bar.php | 448 + .../V2/Customizer/Section/Global_Elements.php | 514 + .../V2/Customizer/Section/Month_View.php | 458 + .../V2/Customizer/Section/Single_Event.php | 233 + .../Views/V2/Customizer/Service_Provider.php | 64 + .../src/Tribe/Views/V2/Hooks.php | 1338 + .../Tribe/Views/V2/Implementation_Error.php | 35 + .../src/Tribe/Views/V2/Index.php | 27 + .../Interfaces/Repository_User_Interface.php | 47 + .../V2/Interfaces/View_Partial_Interface.php | 28 + .../View_Url_Provider_Interface.php | 77 + .../src/Tribe/Views/V2/Kitchen_Sink.php | 91 + .../src/Tribe/Views/V2/Manager.php | 459 + .../src/Tribe/Views/V2/Messages.php | 293 + .../Views/V2/Query/Event_Query_Controller.php | 318 + .../Query/Hide_From_Upcoming_Controller.php | 56 + .../src/Tribe/Views/V2/README.md | 342 + .../Views/V2/Repository/Event_Period.php | 1262 + .../Views/V2/Repository/Event_Result.php | 182 + .../Views/V2/Repository/Events_Result_Set.php | 245 + .../src/Tribe/Views/V2/Rest_Endpoint.php | 352 + .../src/Tribe/Views/V2/Rewrite.php | 122 + .../src/Tribe/Views/V2/Service_Provider.php | 91 + .../src/Tribe/Views/V2/Template.php | 245 + .../src/Tribe/Views/V2/Template/Event.php | 220 + .../src/Tribe/Views/V2/Template/Excerpt.php | 135 + .../Views/V2/Template/Featured_Title.php | 48 + .../src/Tribe/Views/V2/Template/JSON_LD.php | 48 + .../src/Tribe/Views/V2/Template/Page.php | 430 + .../src/Tribe/Views/V2/Template/Promo.php | 39 + .../V2/Template/Settings/Advanced_Display.php | 122 + .../src/Tribe/Views/V2/Template/Title.php | 441 + .../src/Tribe/Views/V2/Template_Bootstrap.php | 508 + .../Tribe/Views/V2/Theme_Compatibility.php | 97 + .../src/Tribe/Views/V2/Url.php | 384 + .../src/Tribe/Views/V2/Utils/Separators.php | 224 + .../src/Tribe/Views/V2/Utils/Stack.php | 497 + .../src/Tribe/Views/V2/Utils/View.php | 88 + .../src/Tribe/Views/V2/View.php | 2832 ++ .../src/Tribe/Views/V2/View_Interface.php | 287 + .../src/Tribe/Views/V2/View_Register.php | 268 + .../src/Tribe/Views/V2/Views/By_Day_View.php | 816 + .../src/Tribe/Views/V2/Views/Day_View.php | 413 + .../Tribe/Views/V2/Views/Latest_Past_View.php | 250 + .../src/Tribe/Views/V2/Views/List_View.php | 321 + .../src/Tribe/Views/V2/Views/Month_View.php | 800 + .../Tribe/Views/V2/Views/Reflector_View.php | 60 + .../V2/Views/Traits/Breakpoint_Behavior.php | 126 + .../Views/V2/Views/Traits/HTML_Cache.php | 528 + .../Views/V2/Views/Traits/Json_Ld_Data.php | 84 + .../Views/V2/Views/Traits/List_Behavior.php | 237 + .../Views/Traits/With_Fast_Forward_Link.php | 148 + .../Tribe/Views/V2/Views/Traits/iCal_Data.php | 141 + .../V2/Views/Widgets/Widget_List_View.php | 105 + .../Views/V2/Views/Widgets/Widget_View.php | 247 + .../Tribe/Views/V2/Widgets/Admin_Template.php | 37 + .../src/Tribe/Views/V2/Widgets/Assets.php | 81 + .../Tribe/Views/V2/Widgets/Compatibility.php | 145 + .../Views/V2/Widgets/Service_Provider.php | 115 + .../Views/V2/Widgets/Widget_Abstract.php | 356 + .../Tribe/Views/V2/Widgets/Widget_List.php | 226 + .../src/Tribe/Views/V2/functions/classes.php | 159 + .../Views/V2/functions/template-tags.php | 71 + .../V2/iCalendar/Links/Google_Calendar.php | 276 + .../V2/iCalendar/Links/Link_Abstract.php | 357 + .../V2/iCalendar/Links/Link_Interface.php | 100 + .../Views/V2/iCalendar/Links/Outlook_365.php | 47 + .../V2/iCalendar/Links/Outlook_Export.php | 79 + .../Views/V2/iCalendar/Links/Outlook_Live.php | 47 + .../Tribe/Views/V2/iCalendar/Links/iCal.php | 37 + .../V2/iCalendar/Links/iCalendar_Export.php | 73 + .../src/Tribe/Views/V2/iCalendar/Request.php | 78 + .../Views/V2/iCalendar/Single_Events.php | 96 + .../src/Tribe/Views/V2/iCalendar/Template.php | 47 + .../V2/iCalendar/Traits/Outlook_Methods.php | 247 + .../Views/V2/iCalendar/iCalendar_Handler.php | 234 + .../the-events-calendar/src/Tribe/iCal.php | 1012 + .../src/admin-views/admin-update-message.php | 74 + .../src/admin-views/admin-welcome-message.php | 128 + .../aggregator/banners/eventbrite-upsell.php | 23 + .../aggregator/fields/schedule.php | 81 + .../src/admin-views/aggregator/header.php | 11 + .../src/admin-views/aggregator/meta-box.php | 58 + .../admin-views/aggregator/origins/csv.php | 102 + .../aggregator/origins/eventbrite.php | 222 + .../admin-views/aggregator/origins/gcal.php | 129 + .../admin-views/aggregator/origins/ical.php | 125 + .../admin-views/aggregator/origins/ics.php | 72 + .../admin-views/aggregator/origins/limit.php | 44 + .../admin-views/aggregator/origins/meetup.php | 151 + .../admin-views/aggregator/origins/refine.php | 140 + .../admin-views/aggregator/origins/url.php | 133 + .../src/admin-views/aggregator/page.php | 13 + .../src/admin-views/aggregator/settings.php | 760 + .../src/admin-views/aggregator/status.php | 230 + .../src/admin-views/aggregator/tab.php | 7 + .../src/admin-views/aggregator/tabs/edit.php | 17 + .../admin-views/aggregator/tabs/favorite.php | 0 .../admin-views/aggregator/tabs/history.php | 10 + .../aggregator/tabs/import-form.php | 383 + .../src/admin-views/aggregator/tabs/new.php | 5 + .../admin-views/aggregator/tabs/scheduled.php | 14 + .../admin-views/create-organizer-fields.php | 21 + .../src/admin-views/create-venue-fields.php | 255 + .../src/admin-views/event-sidebar-options.php | 34 + .../src/admin-views/events-meta-box.php | 308 + .../src/admin-views/filter_bar/upsell.php | 36 + .../src/admin-views/linked-post-meta-box.php | 55 + .../src/admin-views/linked-post-section.php | 53 + .../events-control-extension/mark-online.php | 62 + .../metabox/components/dropdown.php | 43 + .../src/admin-views/metabox/event-status.php | 74 + .../src/admin-views/no-comments.php | 2 + .../notices/install-event-tickets.php | 38 + .../notices/legacy-views-updated.php | 35 + .../src/admin-views/notices/update-6-0-0.php | 32 + .../src/admin-views/organizer-meta-box.php | 80 + .../src/admin-views/privacy.php | 65 + .../admin-views/tribe-options-addons-api.php | 163 + .../src/admin-views/tribe-options-display.php | 504 + .../src/admin-views/tribe-options-general.php | 427 + .../src/admin-views/tribe-options-network.php | 34 + .../admin-views/tribe-options-timezones.php | 52 + .../src/admin-views/tribe-options-upgrade.php | 131 + .../src/admin-views/updates/6.0.0.php | 123 + .../src/admin-views/venue-meta-box.php | 278 + .../src/admin-views/widgets/events-list.php | 18 + .../Traits/Tribe__Events__Main_Deprecated.php | 41 + .../Tribe__Events__Query_Deprecated.php | 33 + .../src/deprecated/Tribe__Events__Bar.php | 57 + .../Tribe__Events__Integrations__Freemius.php | 479 + .../deprecated/Tribe__Events__List_Widget.php | 37 + .../Tribe__Events__Template__Day.php | 55 + .../Tribe__Events__Template__List.php | 28 + .../Tribe__Events__Template__Month.php | 149 + .../src/deprecated/facebook.php | 150 + .../src/deprecated/functions.php | 423 + .../functions/advanced-functions/event.php | 142 + .../advanced-functions/linked-posts.php | 215 + .../advanced-functions/organizer.php | 74 + .../functions/advanced-functions/rest-v1.php | 30 + .../functions/advanced-functions/venue.php | 79 + .../src/functions/php-min-version.php | 126 + .../src/functions/template-tags/date.php | 175 + .../src/functions/template-tags/day.php | 52 + .../functions/template-tags/deprecated.php | 50 + .../src/functions/template-tags/event.php | 196 + .../src/functions/template-tags/general.php | 1988 ++ .../functions/template-tags/google-map.php | 213 + .../src/functions/template-tags/ical.php | 71 + .../src/functions/template-tags/link.php | 470 + .../src/functions/template-tags/loop.php | 543 + .../src/functions/template-tags/month.php | 162 + .../src/functions/template-tags/organizer.php | 661 + .../src/functions/template-tags/orm.php | 103 + .../src/functions/template-tags/query.php | 64 + .../src/functions/template-tags/url.php | 25 + .../src/functions/template-tags/venue.php | 1003 + .../src/functions/utils/array.php | 23 + .../src/functions/utils/install.php | 19 + .../src/functions/utils/labels.php | 42 + .../src/functions/views/provider.php | 219 + .../src/modules/icons/caret-down.svg | 3 + .../src/modules/icons/categories.svg | 1 + .../src/modules/icons/checkbox-off.svg | 1 + .../src/modules/icons/checkbox-on.svg | 1 + .../src/modules/icons/classic.svg | 1 + .../src/modules/icons/date-time.svg | 1 + .../src/modules/icons/events-list.svg | 9 + .../src/modules/icons/featured-image.svg | 1 + .../src/modules/icons/index.js | 15 + .../src/modules/icons/link.svg | 6 + .../src/modules/icons/organizer.svg | 1 + .../src/modules/icons/price.svg | 1 + .../src/modules/icons/sharing.svg | 1 + .../src/modules/icons/tags.svg | 1 + .../src/modules/icons/venue.svg | 1 + .../src/modules/icons/website.svg | 1 + .../src/resources/css/admin-menu.min.css | 1 + .../resources/css/admin-update-page.min.css | 1 + .../notice-install-event-tickets.min.css | 1 + .../src/resources/css/aggregator-page.min.css | 1 + .../classic-event-details/frontend.min.css | 1 + .../css/app/event-category/frontend.min.css | 1 + .../css/app/event-datetime/frontend.min.css | 1 + .../css/app/event-links/frontend.min.css | 1 + .../css/app/event-organizer/frontend.min.css | 1 + .../css/app/event-price/frontend.min.css | 1 + .../css/app/event-tags/frontend.min.css | 1 + .../css/app/event-venue/frontend.min.css | 1 + .../css/app/event-website/frontend.min.css | 1 + .../src/resources/css/app/main.min.css | 27 + .../src/resources/css/app/widgets.min.css | 1 + .../css/custom-tables-v1/ct1-upgrade.css | 381 + .../css/custom-tables-v1/ct1-upgrade.min.css | 1 + .../src/resources/css/debugger.min.css | 1 + .../src/resources/css/events-admin.min.css | 1 + .../css/tec-admin-filterbar-upsell.min.css | 1 + .../tribe-admin-block-category-icons.min.css | 1 + .../css/tribe-admin-single-blocks.min.css | 1 + .../resources/css/tribe-events-embed.min.css | 1 + .../css/tribe-events-full-mobile.min.css | 1 + .../resources/css/tribe-events-full.min.css | 1 + .../css/tribe-events-single-blocks.min.css | 1 + .../css/tribe-events-single-full.min.css | 1 + .../css/tribe-events-single-skeleton.min.css | 1 + .../css/tribe-events-skeleton.min.css | 1 + .../css/tribe-events-theme-mobile.min.css | 1 + .../resources/css/tribe-events-theme.min.css | 1 + .../src/resources/css/views-full.min.css | 1 + .../src/resources/css/views-print.min.css | 1 + .../src/resources/css/views-skeleton.min.css | 1 + .../css/widget-events-list-full.min.css | 1 + .../css/widget-events-list-skeleton.min.css | 1 + .../src/resources/icons/filterbar-banner.png | Bin 0 -> 224745 bytes .../src/resources/icons/filterbar.svg | 1 + .../resources/icons/freemius-icon-notice.svg | 1 + .../resources/icons/freemius-icon-plugin.svg | 1 + .../resources/icons/freemius-icon-profile.svg | 1 + .../resources/icons/freemius-icon-site.svg | 1 + .../resources/icons/freemius-icon-themes.svg | 1 + .../src/resources/icons/freemius-logo.svg | 1 + .../src/resources/icons/link.svg | 1 + .../src/resources/icons/map-pin.svg | 1 + .../src/resources/icons/phone.svg | 1 + .../src/resources/icons/tec-horns.svg | 1 + .../src/resources/icons/tec-logo-2020.svg | 1 + .../aggregator/EventAggregator-icon.svg | 6 + .../images/aggregator/ea-intro-img-text.png | Bin 0 -> 199330 bytes .../images/aggregator/ea-upsell-bkg.svg | 1 + .../images/aggregator/eventbrite-tickets.svg | 1 + .../images/aggregator/eventbrite.png | Bin 0 -> 42215 bytes .../resources/images/aggregator/facebook.png | Bin 0 -> 3982 bytes .../resources/images/aggregator/meetup.png | Bin 0 -> 2913 bytes .../images/aggregator/upsell-banner.png | Bin 0 -> 5299 bytes .../src/resources/images/alert.svg | 7 + .../images/attendees-screen-icon.png | Bin 0 -> 330 bytes .../src/resources/images/bg_fade.png | Bin 0 -> 88 bytes .../datepicker/ui-icons_222222_256x240.png | Bin 0 -> 3699 bytes .../datepicker/ui-icons_454545_256x240.png | Bin 0 -> 3699 bytes .../datepicker/ui-icons_666666_256x240.png | Bin 0 -> 3699 bytes .../src/resources/images/eb_press_little.gif | Bin 0 -> 5048 bytes .../resources/images/event-example-image.jpg | Bin 0 -> 721332 bytes .../images/events-bar/icon-day-hover.png | Bin 0 -> 215 bytes .../images/events-bar/icon-day-hover@2x.png | Bin 0 -> 350 bytes .../resources/images/events-bar/icon-day.png | Bin 0 -> 217 bytes .../images/events-bar/icon-day@2x.png | Bin 0 -> 379 bytes .../resources/images/events-bar/icon-gear.png | Bin 0 -> 442 bytes .../images/events-bar/icon-gear@2x.png | Bin 0 -> 984 bytes .../images/events-bar/icon-list-hover.png | Bin 0 -> 84 bytes .../images/events-bar/icon-list-hover@2x.png | Bin 0 -> 90 bytes .../resources/images/events-bar/icon-list.png | Bin 0 -> 92 bytes .../images/events-bar/icon-list@2x.png | Bin 0 -> 101 bytes .../images/events-bar/icon-map-hover.png | Bin 0 -> 225 bytes .../images/events-bar/icon-map-hover@2x.png | Bin 0 -> 400 bytes .../resources/images/events-bar/icon-map.png | Bin 0 -> 237 bytes .../images/events-bar/icon-map@2x.png | Bin 0 -> 428 bytes .../images/events-bar/icon-month-hover.png | Bin 0 -> 116 bytes .../images/events-bar/icon-month-hover@2x.png | Bin 0 -> 129 bytes .../images/events-bar/icon-month.png | Bin 0 -> 123 bytes .../images/events-bar/icon-month@2x.png | Bin 0 -> 136 bytes .../images/events-bar/icon-photo-hover.png | Bin 0 -> 163 bytes .../images/events-bar/icon-photo-hover@2x.png | Bin 0 -> 245 bytes .../images/events-bar/icon-photo.png | Bin 0 -> 167 bytes .../images/events-bar/icon-photo@2x.png | Bin 0 -> 256 bytes .../images/events-bar/icon-search.png | Bin 0 -> 296 bytes .../images/events-bar/icon-search@2x.png | Bin 0 -> 569 bytes .../images/events-bar/icon-week-hover.png | Bin 0 -> 123 bytes .../images/events-bar/icon-week-hover@2x.png | Bin 0 -> 136 bytes .../resources/images/events-bar/icon-week.png | Bin 0 -> 127 bytes .../images/events-bar/icon-week@2x.png | Bin 0 -> 142 bytes .../resources/images/events-screen-icon.png | Bin 0 -> 142 bytes .../images/events-screen-icon@2x.png | Bin 0 -> 196 bytes .../resources/images/icons/arrow-right.svg | 1 + .../resources/images/icons/bitmap/link.png | Bin 0 -> 1154 bytes .../resources/images/icons/bitmap/map-pin.png | Bin 0 -> 2384 bytes .../resources/images/icons/bitmap/phone.png | Bin 0 -> 2157 bytes .../src/resources/images/icons/bolt.svg | 3 + .../src/resources/images/icons/bulb.svg | 9 + .../src/resources/images/icons/caret-down.svg | 1 + .../src/resources/images/icons/caret-left.svg | 1 + .../resources/images/icons/caret-right.svg | 1 + .../src/resources/images/icons/caret-up.svg | 1 + .../src/resources/images/icons/check.svg | 1 + .../src/resources/images/icons/day.svg | 1 + .../src/resources/images/icons/dropdown.svg | 1 + .../resources/images/icons/featured-event.svg | 1 + .../src/resources/images/icons/filters.svg | 1 + .../src/resources/images/icons/lightning.svg | 4 + .../src/resources/images/icons/list.svg | 1 + .../src/resources/images/icons/map.svg | 1 + .../src/resources/images/icons/month.svg | 1 + .../src/resources/images/icons/photo.svg | 1 + .../images/icons/recurring-events.svg | 1 + .../src/resources/images/icons/search.svg | 1 + .../resources/images/icons/small-arrow.svg | 1 + .../src/resources/images/icons/tec-horns.svg | 4 + .../src/resources/images/icons/warning.svg | 9 + .../src/resources/images/icons/week.svg | 1 + .../src/resources/images/logos/tec-brand.svg | 1 + .../src/resources/images/menu.png | Bin 0 -> 200 bytes .../src/resources/images/menu@2x.png | Bin 0 -> 273 bytes .../migration-complete-screenshot.png | Bin 0 -> 40592 bytes .../migration/migration-prompt-screenshot.png | Bin 0 -> 58174 bytes .../preview-in-progress-screenshot.png | Bin 0 -> 40815 bytes .../migration/preview-prompt-screenshot.png | Bin 0 -> 67877 bytes .../resources/images/recurring-event-icon.png | Bin 0 -> 870 bytes .../images/settings-icons/icon-et.svg | 6 + .../settings-icons/icon-event-aggregator.svg | 5 + .../settings-icons/icon-image-high-five.svg | 13 + .../src/resources/images/tribe-loading.gif | Bin 0 -> 4697 bytes .../tribe-theme/tribe-theme-tooltips.png | Bin 0 -> 329 bytes .../tribe-theme/tribe-theme-tooltips@2x.png | Bin 0 -> 568 bytes .../src/resources/images/tribe-tooltips.png | Bin 0 -> 586 bytes .../resources/images/tribe-tooltips@2x.png | Bin 0 -> 1237 bytes .../images/update-page-features-1.png | Bin 0 -> 15343 bytes .../images/update-page-features-2.png | Bin 0 -> 2053 bytes .../images/update-page-features-3.png | Bin 0 -> 1776 bytes .../resources/images/update-page-graphic.png | Bin 0 -> 3389 bytes .../images/upgrade-views-success.png | Bin 0 -> 90145 bytes .../src/resources/js/admin-ignored-events.js | 99 + .../resources/js/admin-ignored-events.min.js | 11 + .../src/resources/js/admin-upgrade-page.js | 40 + .../resources/js/admin-upgrade-page.min.js | 11 + .../js/admin/notice-install-event-tickets.js | 68 + .../admin/notice-install-event-tickets.min.js | 11 + .../js/aggregator-admin-legacy-settings.js | 45 + .../aggregator-admin-legacy-settings.min.js | 11 + .../src/resources/js/aggregator-fields.js | 1113 + .../src/resources/js/aggregator-fields.min.js | 11 + .../src/resources/js/aggregator-notice.js | 174 + .../src/resources/js/aggregator-notice.min.js | 11 + .../src/resources/js/app/main.min.js | 1 + .../src/resources/js/app/vendor.min.js | 1 + .../src/resources/js/app/widgets.min.js | 1 + .../js/custom-tables-v1/ct1-upgrade.js | 528 + .../js/custom-tables-v1/ct1-upgrade.min.js | 11 + .../js/customizer-views-v2-controls.js | 261 + .../js/customizer-views-v2-controls.min.js | 11 + .../js/customizer-views-v2-live-preview.js | 1014 + .../customizer-views-v2-live-preview.min.js | 11 + .../src/resources/js/embedded-map.js | 114 + .../src/resources/js/embedded-map.min.js | 11 + .../src/resources/js/event-editor.js | 148 + .../src/resources/js/event-editor.min.js | 11 + .../js/events-admin-timezone-updater.js | 57 + .../js/events-admin-timezone-updater.min.js | 11 + .../src/resources/js/events-admin.js | 828 + .../src/resources/js/events-admin.min.js | 11 + .../src/resources/js/events-dynamic.js | 180 + .../src/resources/js/events-dynamic.min.js | 11 + .../src/resources/js/jquery-ecp-plugins.js | 39 + .../resources/js/jquery-ecp-plugins.min.js | 11 + .../resources/js/tec-update-6.0.0-notice.js | 28 + .../js/tec-update-6.0.0-notice.min.js | 11 + .../src/resources/js/tribe-settings.js | 53 + .../src/resources/js/tribe-settings.min.js | 11 + .../src/resources/js/views/README.md | 93 + .../src/resources/js/views/accordion.js | 306 + .../src/resources/js/views/accordion.min.js | 11 + .../src/resources/js/views/breakpoints.js | 228 + .../src/resources/js/views/breakpoints.min.js | 11 + .../src/resources/js/views/datepicker.js | 746 + .../src/resources/js/views/datepicker.min.js | 11 + .../resources/js/views/events-bar-inputs.js | 184 + .../js/views/events-bar-inputs.min.js | 11 + .../src/resources/js/views/events-bar.js | 334 + .../src/resources/js/views/events-bar.min.js | 11 + .../src/resources/js/views/ical-links.js | 195 + .../src/resources/js/views/ical-links.min.js | 11 + .../src/resources/js/views/manager.js | 718 + .../src/resources/js/views/manager.min.js | 11 + .../src/resources/js/views/month-grid.js | 417 + .../src/resources/js/views/month-grid.min.js | 11 + .../resources/js/views/month-mobile-events.js | 328 + .../js/views/month-mobile-events.min.js | 11 + .../src/resources/js/views/multiday-events.js | 283 + .../resources/js/views/multiday-events.min.js | 11 + .../resources/js/views/navigation-scroll.js | 69 + .../js/views/navigation-scroll.min.js | 11 + .../src/resources/js/views/tooltip.js | 347 + .../src/resources/js/views/tooltip.min.js | 11 + .../src/resources/js/views/view-selector.js | 348 + .../resources/js/views/view-selector.min.js | 11 + .../src/resources/js/views/viewport.js | 159 + .../src/resources/js/views/viewport.min.js | 11 + .../src/views/blocks/archive-events.php | 24 + .../views/blocks/classic-event-details.php | 63 + .../src/views/blocks/event-category.php | 32 + .../src/views/blocks/event-datetime.php | 121 + .../src/views/blocks/event-links.php | 65 + .../src/views/blocks/event-organizer.php | 39 + .../src/views/blocks/event-price.php | 26 + .../src/views/blocks/event-tags.php | 20 + .../src/views/blocks/event-venue.php | 27 + .../src/views/blocks/event-website.php | 42 + .../src/views/blocks/featured-image.php | 18 + .../src/views/blocks/parts/details.php | 189 + .../src/views/blocks/parts/map.php | 35 + .../src/views/blocks/parts/organizer.php | 92 + .../src/views/blocks/parts/subscribe-list.php | 56 + .../views/blocks/parts/subscribe-single.php | 43 + .../src/views/blocks/parts/venue.php | 52 + .../the-events-calendar/src/views/embed.php | 52 + .../src/views/embed/content.php | 29 + .../src/views/embed/cost.php | 27 + .../src/views/embed/footer.php | 33 + .../src/views/embed/image.php | 89 + .../src/views/embed/meta.php | 43 + .../src/views/embed/schedule.php | 22 + .../src/views/embed/venue.php | 34 + .../emails/template-parts/body/event/date.php | 37 + .../template-parts/body/event/image.php | 42 + .../template-parts/body/event/links.php | 38 + .../template-parts/body/event/links/gcal.php | 34 + .../template-parts/body/event/links/ical.php | 33 + .../template-parts/body/event/venue.php | 62 + .../body/event/venue/address.php | 73 + .../template-parts/body/event/venue/phone.php | 40 + .../body/event/venue/website.php | 51 + .../template-parts/header/head/tec-styles.php | 180 + .../src/views/kitchen-sink/page.php | 311 + .../src/views/modules/address.php | 67 + .../src/views/modules/map-basic.php | 38 + .../src/views/modules/map.php | 21 + .../src/views/modules/meta.php | 80 + .../src/views/modules/meta/details.php | 191 + .../src/views/modules/meta/map.php | 27 + .../src/views/modules/meta/organizer.php | 80 + .../src/views/modules/meta/venue.php | 55 + .../the-events-calendar/src/views/silence.php | 1 + .../src/views/single-event-blocks.php | 37 + .../src/views/single-event.php | 141 + .../src/views/single-event/back-link.php | 25 + .../src/views/single-event/comments.php | 22 + .../src/views/single-event/content.php | 20 + .../src/views/single-event/footer.php | 26 + .../src/views/single-event/notices.php | 17 + .../single-event/recurring-description.php | 29 + .../src/views/single-event/title.php | 17 + .../the-events-calendar/src/views/v2/base.php | 44 + .../src/views/v2/components/after.php | 23 + .../src/views/v2/components/before.php | 23 + .../src/views/v2/components/breadcrumbs.php | 34 + .../v2/components/breadcrumbs/breadcrumb.php | 22 + .../breadcrumbs/linked-breadcrumb.php | 26 + .../src/views/v2/components/breakpoints.php | 68 + .../src/views/v2/components/data.php | 66 + .../src/views/v2/components/events-bar.php | 54 + .../components/events-bar/search-button.php | 26 + .../views/v2/components/events-bar/search.php | 36 + .../components/events-bar/search/keyword.php | 42 + .../components/events-bar/search/submit.php | 22 + .../views/v2/components/events-bar/views.php | 46 + .../v2/components/events-bar/views/list.php | 30 + .../components/events-bar/views/list/item.php | 37 + .../src/views/v2/components/filter-bar.php | 15 + .../src/views/v2/components/ical-link.php | 57 + .../src/views/v2/components/json-ld-data.php | 41 + .../src/views/v2/components/loader.php | 29 + .../src/views/v2/components/messages.php | 48 + .../v2/components/messages/error-icon.php | 15 + .../v2/components/messages/notice-icon.php | 15 + .../src/views/v2/components/read-more.php | 23 + .../v2/components/subscribe-links/item.php | 40 + .../v2/components/subscribe-links/legacy.php | 33 + .../v2/components/subscribe-links/list.php | 37 + .../subscribe-links/single-event-list.php | 40 + .../v2/components/subscribe-links/single.php | 42 + .../views/v2/components/top-bar/actions.php | 18 + .../v2/components/top-bar/actions/content.php | 14 + .../src/views/v2/components/top-bar/today.php | 27 + .../the-events-calendar/src/views/v2/day.php | 91 + .../src/views/v2/day/event.php | 44 + .../src/views/v2/day/event/cost.php | 27 + .../src/views/v2/day/event/date.php | 32 + .../src/views/v2/day/event/date/featured.php | 33 + .../src/views/v2/day/event/date/meta.php | 17 + .../src/views/v2/day/event/description.php | 25 + .../src/views/v2/day/event/featured-image.php | 47 + .../src/views/v2/day/event/title.php | 31 + .../src/views/v2/day/event/venue.php | 38 + .../src/views/v2/day/nav.php | 38 + .../src/views/v2/day/nav/next-disabled.php | 26 + .../src/views/v2/day/nav/next.php | 31 + .../src/views/v2/day/nav/prev-disabled.php | 26 + .../src/views/v2/day/nav/prev.php | 31 + .../src/views/v2/day/time-separator.php | 39 + .../src/views/v2/day/top-bar.php | 26 + .../src/views/v2/day/top-bar/datepicker.php | 75 + .../src/views/v2/day/top-bar/nav.php | 36 + .../v2/day/top-bar/nav/next-disabled.php | 25 + .../src/views/v2/day/top-bar/nav/next.php | 29 + .../v2/day/top-bar/nav/prev-disabled.php | 25 + .../src/views/v2/day/top-bar/nav/prev.php | 29 + .../src/views/v2/day/type-separator.php | 36 + .../src/views/v2/default-template.php | 21 + .../single/event-statuses-container.php | 29 + .../canceled-status.php | 38 + .../postponed-status.php | 38 + .../views/v2/event-status/status-label.php | 29 + .../status-label/canceled-label.php | 28 + .../status-label/postponed-label.php | 28 + .../src/views/v2/latest-past.php | 28 + .../src/views/v2/latest-past/event.php | 47 + .../src/views/v2/latest-past/event/cost.php | 27 + .../views/v2/latest-past/event/date-tag.php | 38 + .../src/views/v2/latest-past/event/date.php | 32 + .../v2/latest-past/event/date/featured.php | 33 + .../views/v2/latest-past/event/date/meta.php | 17 + .../v2/latest-past/event/description.php | 25 + .../v2/latest-past/event/featured-image.php | 49 + .../src/views/v2/latest-past/event/title.php | 31 + .../src/views/v2/latest-past/event/venue.php | 38 + .../src/views/v2/latest-past/heading.php | 19 + .../the-events-calendar/src/views/v2/list.php | 89 + .../src/views/v2/list/event.php | 47 + .../src/views/v2/list/event/cost.php | 27 + .../src/views/v2/list/event/date-tag.php | 45 + .../src/views/v2/list/event/date.php | 32 + .../src/views/v2/list/event/date/featured.php | 33 + .../src/views/v2/list/event/date/meta.php | 17 + .../src/views/v2/list/event/description.php | 25 + .../views/v2/list/event/featured-image.php | 48 + .../src/views/v2/list/event/title.php | 31 + .../src/views/v2/list/event/venue.php | 52 + .../src/views/v2/list/month-separator.php | 51 + .../src/views/v2/list/nav.php | 40 + .../src/views/v2/list/nav/next-disabled.php | 34 + .../src/views/v2/list/nav/next.php | 38 + .../src/views/v2/list/nav/prev-disabled.php | 33 + .../src/views/v2/list/nav/prev.php | 38 + .../src/views/v2/list/nav/today.php | 28 + .../src/views/v2/list/top-bar.php | 26 + .../src/views/v2/list/top-bar/datepicker.php | 97 + .../src/views/v2/list/top-bar/nav.php | 36 + .../v2/list/top-bar/nav/next-disabled.php | 26 + .../src/views/v2/list/top-bar/nav/next.php | 29 + .../v2/list/top-bar/nav/prev-disabled.php | 26 + .../src/views/v2/list/top-bar/nav/prev.php | 29 + .../src/views/v2/month.php | 90 + .../src/views/v2/month/calendar-body.php | 35 + .../src/views/v2/month/calendar-body/day.php | 57 + .../calendar-body/day/calendar-events.php | 31 + .../day/calendar-events/calendar-event.php | 38 + .../calendar-events/calendar-event/date.php | 38 + .../calendar-event/date/featured.php | 30 + .../calendar-event/date/meta.php | 17 + .../calendar-event/featured-image.php | 48 + .../calendar-events/calendar-event/title.php | 35 + .../calendar-event/tooltip.php | 32 + .../calendar-event/tooltip/cost.php | 27 + .../calendar-event/tooltip/date.php | 31 + .../calendar-event/tooltip/date/featured.php | 30 + .../calendar-event/tooltip/date/meta.php | 17 + .../calendar-event/tooltip/description.php | 25 + .../calendar-event/tooltip/featured-image.php | 46 + .../calendar-event/tooltip/title.php | 32 + .../v2/month/calendar-body/day/cell-title.php | 71 + .../views/v2/month/calendar-body/day/cell.php | 58 + .../month/calendar-body/day/date-extras.php | 63 + .../views/v2/month/calendar-body/day/date.php | 82 + .../month/calendar-body/day/more-events.php | 41 + .../calendar-body/day/multiday-events.php | 46 + .../multiday-events/multiday-event-spacer.php | 17 + .../day/multiday-events/multiday-event.php | 55 + .../multiday-events/multiday-event/bar.php | 39 + .../multiday-event/bar/featured.php | 30 + .../multiday-event/bar/title.php | 24 + .../multiday-events/multiday-event/hidden.php | 25 + .../multiday-event/hidden/date.php | 28 + .../multiday-event/hidden/link.php | 31 + .../multiday-event/hidden/link/featured.php | 30 + .../multiday-event/hidden/link/title.php | 24 + .../src/views/v2/month/calendar-header.php | 42 + .../src/views/v2/month/mobile-events.php | 29 + .../v2/month/mobile-events/mobile-day.php | 84 + .../mobile-events/mobile-day/day-marker.php | 45 + .../mobile-events/mobile-day/mobile-event.php | 33 + .../mobile-day/mobile-event/cost.php | 33 + .../mobile-day/mobile-event/date.php | 38 + .../mobile-day/mobile-event/date/featured.php | 33 + .../mobile-day/mobile-event/date/meta.php | 17 + .../mobile-event/featured-image.php | 40 + .../mobile-day/mobile-event/title.php | 34 + .../mobile-events/mobile-day/more-events.php | 39 + .../src/views/v2/month/mobile-events/nav.php | 42 + .../month/mobile-events/nav/next-disabled.php | 29 + .../views/v2/month/mobile-events/nav/next.php | 32 + .../month/mobile-events/nav/prev-disabled.php | 28 + .../views/v2/month/mobile-events/nav/prev.php | 32 + .../v2/month/mobile-events/nav/today.php | 28 + .../src/views/v2/month/top-bar.php | 26 + .../src/views/v2/month/top-bar/datepicker.php | 74 + .../src/views/v2/month/top-bar/nav.php | 36 + .../v2/month/top-bar/nav/next-disabled.php | 25 + .../src/views/v2/month/top-bar/nav/next.php | 29 + .../v2/month/top-bar/nav/prev-disabled.php | 25 + .../src/views/v2/month/top-bar/nav/prev.php | 29 + .../src/views/v2/not-found.php | 18 + .../views/v2/widgets/widget-events-list.php | 82 + .../v2/widgets/widget-events-list/event.php | 43 + .../widget-events-list/event/date-tag.php | 36 + .../widgets/widget-events-list/event/date.php | 38 + .../event/date/featured.php | 31 + .../widget-events-list/event/title.php | 31 + .../widgets/widget-events-list/view-more.php | 36 + .../the-events-calendar.php | 77 + .../plugins/the-events-calendar/uninstall.php | 6 + .../vendor/ForceUTF8/Encoding.php | 336 + .../the-events-calendar/vendor/autoload.php | 25 + .../bootstrap-datepicker.standalone.min.css | 7 + .../js/bootstrap-datepicker.min.js | 5 + .../vendor/chosen/public/chosen-sprite.png | Bin 0 -> 646 bytes .../vendor/chosen/public/chosen-sprite@2x.png | Bin 0 -> 872 bytes .../vendor/chosen/public/chosen.jquery.min.js | 2 + .../vendor/chosen/public/chosen.min.css | 3 + .../vendor/chosen/public/chosen.proto.min.js | 2 + .../vendor/composer/ClassLoader.php | 579 + .../vendor/composer/InstalledVersions.php | 359 + .../vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 278 + .../vendor/composer/autoload_namespaces.php | 9 + .../vendor/composer/autoload_psr4.php | 11 + .../vendor/composer/autoload_real.php | 36 + .../vendor/composer/autoload_static.php | 309 + .../vendor/composer/installed.json | 49 + .../vendor/composer/installed.php | 32 + .../jquery-placeholder/jquery.placeholder.js | 281 + .../jquery.placeholder.min.js | 5 + .../jquery-resize/jquery.ba-resize.min.js | 9 + .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../smoothness/jquery-ui-1.8.23.custom.css | 563 + .../vendor/jquery/ui.datepicker.css | 21 + .../js/php-date-formatter.min.js | 13 + .../tribe-common-libraries.class.php | 70 + .../woocommerce/action-scheduler/README.md | 35 + .../action-scheduler/action-scheduler.php | 65 + .../action-scheduler/changelog.txt | 104 + .../classes/ActionScheduler_ActionClaim.php | 23 + .../classes/ActionScheduler_ActionFactory.php | 342 + .../classes/ActionScheduler_AdminView.php | 252 + ...tionScheduler_AsyncRequest_QueueRunner.php | 97 + .../classes/ActionScheduler_Compatibility.php | 105 + .../ActionScheduler_DataController.php | 187 + .../classes/ActionScheduler_DateTime.php | 79 + .../classes/ActionScheduler_Exception.php | 11 + .../ActionScheduler_FatalErrorMonitor.php | 55 + ...ActionScheduler_InvalidActionException.php | 47 + .../classes/ActionScheduler_ListTable.php | 657 + .../classes/ActionScheduler_LogEntry.php | 67 + .../classes/ActionScheduler_NullLogEntry.php | 11 + .../classes/ActionScheduler_OptionLock.php | 49 + .../classes/ActionScheduler_QueueCleaner.php | 233 + .../classes/ActionScheduler_QueueRunner.php | 226 + .../classes/ActionScheduler_Versions.php | 62 + .../ActionScheduler_WPCommentCleaner.php | 115 + .../ActionScheduler_wcSystemStatus.php | 166 + .../ActionScheduler_WPCLI_Clean_Command.php | 125 + .../ActionScheduler_WPCLI_QueueRunner.php | 197 + ...ctionScheduler_WPCLI_Scheduler_command.php | 210 + .../classes/WP_CLI/Migration_Command.php | 148 + .../classes/WP_CLI/ProgressBar.php | 119 + .../classes/abstracts/ActionScheduler.php | 337 + .../ActionScheduler_Abstract_ListTable.php | 776 + .../ActionScheduler_Abstract_QueueRunner.php | 372 + ...onScheduler_Abstract_RecurringSchedule.php | 102 + .../ActionScheduler_Abstract_Schedule.php | 83 + .../ActionScheduler_Abstract_Schema.php | 172 + .../abstracts/ActionScheduler_Lock.php | 62 + .../abstracts/ActionScheduler_Logger.php | 176 + .../abstracts/ActionScheduler_Store.php | 450 + .../ActionScheduler_TimezoneHelper.php | 152 + .../actions/ActionScheduler_Action.php | 135 + .../ActionScheduler_CanceledAction.php | 23 + .../ActionScheduler_FinishedAction.php | 16 + .../actions/ActionScheduler_NullAction.php | 16 + .../data-stores/ActionScheduler_DBLogger.php | 154 + .../data-stores/ActionScheduler_DBStore.php | 1170 + .../ActionScheduler_HybridStore.php | 426 + .../ActionScheduler_wpCommentLogger.php | 240 + .../ActionScheduler_wpPostStore.php | 1088 + ...eduler_wpPostStore_PostStatusRegistrar.php | 58 + ...cheduler_wpPostStore_PostTypeRegistrar.php | 50 + ...cheduler_wpPostStore_TaxonomyRegistrar.php | 26 + .../classes/migration/ActionMigrator.php | 109 + .../ActionScheduler_DBStoreMigrator.php | 47 + .../classes/migration/BatchFetcher.php | 86 + .../classes/migration/Config.php | 168 + .../classes/migration/Controller.php | 226 + .../migration/DryRun_ActionMigrator.php | 28 + .../classes/migration/DryRun_LogMigrator.php | 23 + .../classes/migration/LogMigrator.php | 49 + .../classes/migration/Runner.php | 136 + .../classes/migration/Scheduler.php | 128 + .../ActionScheduler_CanceledSchedule.php | 57 + .../ActionScheduler_CronSchedule.php | 102 + .../ActionScheduler_IntervalSchedule.php | 81 + .../ActionScheduler_NullSchedule.php | 31 + .../schedules/ActionScheduler_Schedule.php | 18 + .../ActionScheduler_SimpleSchedule.php | 71 + .../schema/ActionScheduler_LoggerSchema.php | 90 + .../schema/ActionScheduler_StoreSchema.php | 130 + ...eduler_Abstract_QueueRunner_Deprecated.php | 27 + .../ActionScheduler_AdminView_Deprecated.php | 147 + .../ActionScheduler_Schedule_Deprecated.php | 29 + .../ActionScheduler_Store_Deprecated.php | 49 + .../action-scheduler/deprecated/functions.php | 126 + .../action-scheduler/functions.php | 492 + .../action-scheduler/lib/WP_Async_Request.php | 191 + .../lib/cron-expression/CronExpression.php | 318 + .../CronExpression_AbstractField.php | 100 + .../CronExpression_DayOfMonthField.php | 110 + .../CronExpression_DayOfWeekField.php | 124 + .../CronExpression_FieldFactory.php | 55 + .../CronExpression_FieldInterface.php | 39 + .../CronExpression_HoursField.php | 47 + .../CronExpression_MinutesField.php | 39 + .../CronExpression_MonthField.php | 55 + .../CronExpression_YearField.php | 43 + .../lib/cron-expression/LICENSE | 19 + .../lib/cron-expression/README.md | 92 + .../woocommerce/action-scheduler/license.txt | 674 + .../woocommerce/action-scheduler/readme.txt | 148 + 2145 files changed, 348986 insertions(+) create mode 100644 wp-content/plugins/the-events-calendar/common/README.md create mode 100644 wp-content/plugins/the-events-calendar/common/lang/readme.txt create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-af.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-bg_BG.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-ca.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-cs_CZ.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-da_DK.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-de_DE.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-el.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-en_GB.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-es_ES.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-et.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-fi.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-fr_CA.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-fr_FR.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-hu_HU.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-id_ID.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-is_IS.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-it_IT.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-ja.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-lt_LT.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-lv.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-nb_NO.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-nl_NL.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-pt_BR.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-pt_PT.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-ro_RO.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-ru_RU.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-sk_SK.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-sl_SI.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-sr_RS.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-sv_SE.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-tr_TR.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-zh_CN.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common-zh_TW.mo create mode 100644 wp-content/plugins/the-events-calendar/common/lang/tribe-common.pot create mode 100644 wp-content/plugins/the-events-calendar/common/node_modules/clipboard/dist/clipboard.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/node_modules/intro.js/intro.js create mode 100644 wp-content/plugins/the-events-calendar/common/node_modules/intro.js/introjs-rtl.css create mode 100644 wp-content/plugins/the-events-calendar/common/node_modules/intro.js/introjs.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration_Loader.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration_Provider_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Constants_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Configuration/readme.md create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Context/Post_Request_Type.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Container.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Provider/Controller.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Editor/Full_Site/Template_Utils.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Exceptions/Container_Exception.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Exceptions/Not_Bound_Exception.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Integration_Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Traits/Module_Integration.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Traits/Plugin_Integration.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Traits/Server_Integration.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Traits/Theme_Integration.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Libraries/Installer/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Libraries/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Factory.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Fields/Generic_Info_Field.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Fields/Post_Status_Count_Field.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Field_Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Field_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Section_Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Section_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Storage/Timed_Option.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Migration.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Telemetry.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Common/Translations_Loader.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Abstract_Deactivation.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Abstract_Plugin_Register.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Activation_Page.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Black_Friday.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Datetime_Conditional_Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/End_Of_Year_Sale.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Help_Page.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Helpers.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Live_Date_Preview.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Date_Based.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/Black_Friday.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/End_Of_Year_Sale.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/Stellar_Sale.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Php_Version.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Plugin_Download.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Plugin_Upgrade_Notice.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/WP_Version.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notices.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Pages.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Settings.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Troubleshooting.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Upsell_Notice/Main.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Upsell_Notice/README.md create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Wysiwyg.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Ajax/Dropdown.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Ajax/Operations.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/App_Shop.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Asset/Data.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Asset/Factory.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Assets.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Assets_Pipeline.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Autoloader.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Cache.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Cache_Listener.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Changelog_Reader.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Container.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Context.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Context/locations.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Cost_Utils.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Credits.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer/Control.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer/Controls/Heading.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer/Controls/Number.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer/Controls/Radio.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer/Controls/Range_Slider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer/Controls/Separator.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer/Controls/Toggle.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer/Section.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/DB_Lock.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Data.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Date_Utils.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Db.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Debug.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Debug_Bar/Panels/Context.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Debug_Bar/Panels/Json_Ld.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Dependency.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Deprecation.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Dialog/View.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Builder_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Provider_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Post.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy/Base.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy/Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy/Like.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy/Same.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy_Factory.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Assets.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Blocks/Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Blocks/Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Compatibility.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Compatibility/Classic_Editor.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Compatibility/Divi.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Configuration.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Configuration_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Meta.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Meta_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Utils.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Error.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Exception.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Extension.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Extension_Loader.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Feature_Detection.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Field.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Field_Conditional.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Image/Uploader.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/JSON_LD/Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Locations.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Map_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Recaptcha_Map.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Log.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Action_Logger.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Admin.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Canonical_Formatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Log/File_Logger.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Logger.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Monolog_Logger.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Null_Logger.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Log/README.md create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Main.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Meta/Chunker.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Models/Post_Types/Base.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Models/Post_Types/Nothing.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Notices.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Hints_Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Main.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/README.md create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Tour_Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Checker.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Notices.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Package_Handler.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Plugin_Info.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Update_Prevention.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Utility.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Plugin_Meta_Links.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Plugins.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Plugins_API.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Post_History.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Post_Transient.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Handler.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Post_Thumbnail_Setter.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Queue.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Tester.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Promise.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/Auth.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/Connector.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/PUE.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/View.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Endpoints/CREATE_Endpoint_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Endpoints/DELETE_Endpoint_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Endpoints/READ_Endpoint_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Endpoints/UPDATE_Endpoint_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Exceptions/Exception.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Base_Header.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Base_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Disabled.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Headers_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Supported.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Unsupported.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Main.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Messages_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Post_Repository.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Post_Repository_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/REST/System.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Core_Read_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Decorator.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Filter_Validation.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Formatter_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Implementation_Error.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Query_Filters.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Read_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Setter_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Update_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Usage_Error.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Void_Query_Exception.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Rewrite.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Body_Classes.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Crons.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Debug_Bar.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Dialog.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Onboarding.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/PUE.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Processes.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Promoter.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Shortcodes.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Tooltip.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Widgets.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Settings.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Settings_Manager.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Settings_Tab.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Manager.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Shortcode_Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Shortcode_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Utils.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Simple_Table.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Support.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Obfuscator.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Template_Checker.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Template_Checker_Report.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Tabbed_View.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Tabbed_View/Tab.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Template.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Template_Part_Cache.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Templates.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Terms.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Timezones.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Tooltip/View.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Tracker.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/Cache_User.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/With_DB_Lock.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/With_Meta_Updates_Handling.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/With_Post_Attribute_Detection.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Updater.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Array.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Body_Classes.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Callback.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Collection.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Collection_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Collection_Trait.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Color.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Compatibility_Classes.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Coordinates_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Date_I18n.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Date_I18n_Immutable.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Element_Attributes.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Element_Classes.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Global_ID.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/JSON.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_Collection.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_Events.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_String.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Paths.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Plugins.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Collection.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Root_Pool.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Thumbnail.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Query.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Strings.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Taxonomy.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Theme_Compatibility.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Validate.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Validator/Base.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Validator/Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Abstract_Currency.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Abstract_Value.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Currency_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Value_Calculation.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Value_Formatting.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Value_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Value_Update.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/View_Helpers.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Widget/Manager.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Widget/Widget_Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/Tribe/Widget/Widget_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/app-shop.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/components/icons/dot.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/components/loader.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/components/switch.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/conditional_content/black-friday.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/conditional_content/end-of-year-sale.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/event-log.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/help-calendar.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/help-community.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/help-ticketing.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/help.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/notices/end-of-year-sale.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-bf-general.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-stellar-sale-premium.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-stellar-sale.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/notices/upsell/icon.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/notices/upsell/main.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/tabbed-view/tab.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/tabbed-view/tabbed-view.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/tribe-options-help.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/tribe-options-licenses.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/common-issues.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/detected-issues.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/current-status.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/current-usage.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/eventbrite.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/license-key.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/meetup.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/scheduler-status.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/server-connection.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/event-log.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/first-steps.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/footer-logo.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/introduction.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/notice.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/recent-template-changes.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/support-cta.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/system-information.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/checkbox.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/dropdown.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/fieldset.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/number.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/radio.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/section.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/text.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/form.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Admin__Notice__Archive_Slug_Conflict.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Abstract_Deactivation.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Admin__Helpers.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__App_Shop.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Autoloader.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Cache.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Cache_Listener.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Changelog_Reader.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Credits.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Date_Utils.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Field.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Settings.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Settings_Tab.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Support.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Template_Part_Cache.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__Validate.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Events__View_Helpers.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Freemius.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Plugin_Download_Notice.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Template_Factory.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/aliases.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/conditionals.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/editor.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/files.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/multibyte.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/query.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/template-tags/date.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/template-tags/general.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/template-tags/html.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/template-tags/post.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/transient.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/url.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/functions/utils.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/alert.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/clipboard.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/close.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/cog.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/index.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/info.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/link.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/pencil.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/recurrence.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/tag.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/tec.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/modules/icons/user.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/accessibility.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/app-shop.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/app/main.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/app/vendor.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/bumpdown.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/buttonset.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/common-full.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/common-skeleton.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/customizer-controls.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/datatables.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/datepicker.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/dependency.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/dialog.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/onboarding.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/promoter.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/tooltip.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/tribe-common-admin.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/tribe-ui.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/validation.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/variables-full.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/css/variables-skeleton.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/donate-link-screenshot.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/gutenberg-admin-notice-TEC.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/gutenberg-admin-notice-tickets.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/header/all-solutions.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/header/bundles.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/header/extensions.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-desktop-et.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-desktop-etplus.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-desktop.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-mobile-et.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-mobile-etplus.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-mobile.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/1.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/2.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/arrow-down.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/arrow-up.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/common-issues.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/customizing.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/error-icon.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/getting-started.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/help-calendar-header.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/help-community-header.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/help-start-guide-tickets.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/help-ticketing-header.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/polygon.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/success-icon.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/troubleshooting-hero.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/troubleshooting-support.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/troubleshooting.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/help/warning-icon.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/arrow-right.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-down.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-left.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-right.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-up.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/check.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/circle-bolt.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/day.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/dropdown.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/faq.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/featured-event.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/filters.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/horns-white.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/horns.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/list.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/map.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/month.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/photo.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/recurring-events.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/sale-burst.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/search.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/small-arrow.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/icons/week.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-community-manager.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-event-importer.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-event-marketing.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-ultimate.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-virtual-events.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/community-events.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/community-tickets.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-aggregator.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-automator.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-tickets-plus.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-tickets.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/eventbrite-tickets.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/events-calendar-pro.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/filterbar.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/image-widget-plus.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/promoter.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/tec-brand.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/the-events-calendar.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/logo/virtual-events.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/marketing/bf-promo.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/marketing/eoy-sale-2021.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/marketing/eoy-sale-promo.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/marketing/stellar-sale-banner-bg.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/mascot.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/modern-tribe.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/modern-tribe@2x.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/promos/bf-promo.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/aggregator.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/automator.svg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/calendar.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/community-tickets.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/community.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/eventbrite.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-advanced-options.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-change-label.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-custom-venue-links.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-events-happening-now.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-link-to-webinar.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-web-url-cta.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/filter-bar.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/image-widget-plus.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/pro.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/promoter.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-give-cta.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-give-logo.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-iconic-cta.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-iconic-logo.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-ithemes-cta.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-ithemes-logo.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-kadence-cta.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-kadence-logo.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-learndash-cta.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-learndash-logo.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-logo.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-rcp-cta.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-rcp-logo.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/tickets-plus.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/tickets.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/shop/virtual-events.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/tribe-loading.gif create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/tribe-loading@2x.gif create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/calendar.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/et-plus-upsell.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/extension-library.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/guide-book-green.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/guide-book.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/knowledgebase.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/migration.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/next-level.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/promo.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/tickets-commerce.png create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/translations.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/up-sell.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/virtual-events.jpg create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin-color-field.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin-color-field.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin-date-preview.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin-date-preview.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin-image-field.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin-image-field.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin-log-controls.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin-log-controls.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin/help-page.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin/help-page.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin/url-fragment-scroll.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/admin/url-fragment-scroll.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/app-shop.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/app-shop.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/app/main.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/app/modules.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/app/vendor.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/bumpdown.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/bumpdown.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/buttonset.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/buttonset.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/dependency.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/dependency.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/dialog.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/dialog.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/dropdowns.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/dropdowns.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/notice-dismiss.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/notice-dismiss.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/onboarding.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/onboarding.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/pue-notices.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/pue-notices.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/select2-after.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/select2-after.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/tec-a11y-dialog.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/tec-a11y-dialog.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/timepicker.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/timepicker.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/tooltip.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/tooltip.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-common.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-common.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-datatables.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-datatables.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-after.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-after.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-before.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-before.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/utils-camelcase.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/utils-camelcase.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/utils/query-string.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/utils/query-string.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/validation.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/resources/js/validation.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/dialog/alert.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/dialog/button.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/dialog/confirm.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/dialog/dialog.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/dialog/modal.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/dialog/warning.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/promoter/auth.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/tooltip/tooltip.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/arrow-right.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/cal-export.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/caret-down.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/caret-left.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/caret-right.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/close-alt.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/close.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/day.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/dot.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/error.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/featured.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/filter.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/hybrid.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/list.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/location.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/mail.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/map-pin.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/map.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/messages-not-found.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/minus.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/month.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/no-map.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/phone.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/photo.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/play.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/plus.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/recurring.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/reset.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/search.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/stellar-icon.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/summary.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/video.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/virtual.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/website.php create mode 100644 wp-content/plugins/the-events-calendar/common/src/views/v2/components/icons/week.php create mode 100644 wp-content/plugins/the-events-calendar/common/tribe-autoload.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/attrchange/js/attrchange.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/attrchange/js/attrchange_ext.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/autoload.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/composer/ClassLoader.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/composer/InstalledVersions.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/composer/LICENSE create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/composer/autoload_classmap.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/composer/autoload_namespaces.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/composer/autoload_psr4.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/composer/autoload_real.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/composer/autoload_static.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/composer/installed.json create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/composer/installed.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/composer/platform_check.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/datatables/DataTables-1.10.23/images/sort_asc.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/datatables/DataTables-1.10.23/images/sort_asc_disabled.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/datatables/DataTables-1.10.23/images/sort_both.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/datatables/DataTables-1.10.23/images/sort_desc.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/datatables/DataTables-1.10.23/images/sort_desc_disabled.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/datatables/datatables.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/datatables/datatables.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/datatables/datatables.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/datatables/datatables.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery-tribe-timepicker/jquery.timepicker.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery-tribe-timepicker/jquery.timepicker.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery-tribe-timepicker/lib/bootstrap-datepicker.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery-tribe-timepicker/lib/glyphicons-halflings.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery-tribe-timepicker/lib/screenshot.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery-tribe-timepicker/lib/site.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-icons_222222_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-icons_2e83ff_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-icons_454545_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-icons_888888_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/images/ui-icons_cd0a0a_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/ui.datepicker.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/jquery/ui.theme.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/ky/ky.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/ky/tec-ky.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/momentjs/locale.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/momentjs/moment.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tooltipster/tooltipster.bundle.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tooltipster/tooltipster.bundle.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tooltipster/tooltipster.main.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tooltipster/tooltipster.main.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-select2/select2-bootstrap.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-select2/select2-spinner.gif create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-select2/select2.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-select2/select2.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-select2/select2.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-select2/select2x2.png create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/css/select2.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/css/select2.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/css/selectWoo.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/css/selectWoo.min.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/js/select2.full.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/js/select2.full.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/js/select2.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/js/select2.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/js/selectWoo.full.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/js/selectWoo.full.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/js/selectWoo.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/tribe-selectWoo/dist/js/selectWoo.min.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/autoload-classmap.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/autoload.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/firebase/php-jwt/src/BeforeValidException.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/firebase/php-jwt/src/CachedKeySet.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/firebase/php-jwt/src/ExpiredException.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/firebase/php-jwt/src/JWK.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/firebase/php-jwt/src/JWT.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/firebase/php-jwt/src/Key.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/firebase/php-jwt/src/SignatureInvalidException.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/App.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/Builders/BuilderInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/Builders/CallableBuilder.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/Builders/ClassBuilder.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/Builders/ClosureBuilder.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/Builders/Factory.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/Builders/Parameter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/Builders/ReinitializableBuilderInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/Builders/Resolver.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/Builders/ValueBuilder.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/Container.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/ContainerException.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/NestedParseError.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/NotFoundException.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/lucatume/di52/src/ServiceProvider.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/ErrorHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/LineFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/AbstractHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/AmqpHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/BufferHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/CubeHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/Curl/Util.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/FilterHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/GelfHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/GroupHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/HandlerInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/HipChatHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/LogglyHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/MailHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/MandrillHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/NullHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/PsrHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/PushoverHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/RavenHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/RedisHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/RollbarHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/SamplingHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/SlackHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/SocketHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/StreamHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/SyslogHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/TestHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Logger.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/GitProcessor.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/TagProcessor.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/UidProcessor.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Processor/WebProcessor.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Registry.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/ResettableInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/SignalHandler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/monolog/monolog/src/Monolog/Utils.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/container/src/ContainerExceptionInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/container/src/ContainerInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/container/src/NotFoundExceptionInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/log/Psr/Log/AbstractLogger.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/log/Psr/Log/InvalidArgumentException.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/log/Psr/Log/LogLevel.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/log/Psr/Log/LoggerAwareInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/log/Psr/Log/LoggerAwareTrait.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/log/Psr/Log/LoggerInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/log/Psr/Log/LoggerTrait.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/log/Psr/Log/NullLogger.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/log/Psr/Log/Test/DummyTest.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/log/Psr/Log/Test/LoggerInterfaceTest.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/psr/log/Psr/Log/Test/TestLogger.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/container-contract/src/ContainerInterface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/Config.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/DB.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/Database/Actions/EnableBigSqlSelects.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/Database/Exceptions/DatabaseQueryException.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/Database/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Clauses/From.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Clauses/Having.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Clauses/Join.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Clauses/JoinCondition.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Clauses/MetaTable.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Clauses/OrderBy.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Clauses/RawSQL.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Clauses/Select.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Clauses/Union.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Clauses/Where.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/Aggregate.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/CRUD.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/FromClause.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/GroupByStatement.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/HavingClause.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/JoinClause.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/LimitStatement.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/MetaQuery.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/OffsetStatement.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/OrderByStatement.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/SelectStatement.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/TablePrefix.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/UnionOperator.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Concerns/WhereClause.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/JoinQueryBuilder.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/QueryBuilder.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Types/JoinType.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Types/Math.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Types/Operator.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/Types/Type.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/db/src/DB/QueryBuilder/WhereQueryBuilder.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/installer/src/Installer/Assets.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/installer/src/Installer/Button.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/installer/src/Installer/Config.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/installer/src/Installer/Contracts/Handler.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/installer/src/Installer/Handler/Plugin.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/installer/src/Installer/Installer.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/installer/src/Installer/Utils/Array_Utils.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/installer/src/admin-views/button.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/installer/src/assets/js/installer.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Admin/Admin_Subscriber.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Admin/Resources.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Config.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Contracts/Abstract_Subscriber.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Contracts/Data_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Contracts/Runnable.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Contracts/Subscriber_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Contracts/Template_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Core.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Data_Providers/Debug_Data.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Exit_Interview/Exit_Interview_Subscriber.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Exit_Interview/Template.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Last_Send/Last_Send.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Last_Send/Last_Send_Subscriber.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Opt_In/Opt_In_Subscriber.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Opt_In/Opt_In_Template.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Opt_In/Status.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Telemetry/Telemetry.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Telemetry/Telemetry_Subscriber.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/Telemetry/Uninstall.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/resources/css/styles.css create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/resources/images/stellar-logo.svg create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/resources/js/scripts.js create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/views/exit-interview.php create mode 100644 wp-content/plugins/the-events-calendar/common/vendor/vendor-prefixed/stellarwp/telemetry/src/views/optin.php create mode 100644 wp-content/plugins/the-events-calendar/lang/readme.txt create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-bg_BG.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-ca.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-cs_CZ.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-da_DK.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-de_CH.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-de_CH_informal.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-de_DE.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-de_DE_formal.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-el.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-en_AU.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-en_CA.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-en_GB.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-en_NZ.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-en_ZA.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-es_AR.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-es_CO.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-es_DO.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-es_EC.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-es_ES.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-es_MX.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-es_VE.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-eu.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-fi.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-fr_CA.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-fr_FR.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-gl_ES.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-he_IL.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-hr.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-hu_HU.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-it_IT.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-ja.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-ko_KR.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-lt_LT.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-nb_NO.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-nl_BE.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-nl_NL.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-nn_NO.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-pl_PL.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-pt_BR.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-pt_PT.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-ro_RO.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-ru_RU.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-sk_SK.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-sl_SI.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-sq.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-sv_SE.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-tr_TR.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-uk.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar-zh_CN.mo create mode 100644 wp-content/plugins/the-events-calendar/lang/the-events-calendar.pot create mode 100644 wp-content/plugins/the-events-calendar/license.txt create mode 100644 wp-content/plugins/the-events-calendar/readme.txt create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Configuration/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Activation.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Events/Event_Cleaner/Event_Cleaner.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Events/Event_Cleaner/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Events/Occurrences/Max_Recurrence.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Events/Occurrences/Max_Recurrence_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Events/Occurrences/Occurrences_Generator.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Feedback/Feedback_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Feedback/Google_Form_Feedback.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Feedback/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Full_Activation_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Health_Check.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Integrations/ACF/Controller.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Integrations/ACF/Query_Modifier.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Integrations/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Admin/Phase_View_Renderer.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Admin/Progress_Modal.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Admin/Template.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Admin/Upgrade_Tab.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Ajax.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Asset_Loader.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/CSV_Report/Download_Report_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/CSV_Report/File_Download.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Events.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Expected_Migration_Exception.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Maintenance_Mode.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Migration_Exception.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Process.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Process_Worker.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Reports/Event_Report.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Reports/Event_Report_Categories.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Reports/Site_Report.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/State.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Strategies/Null_Migration_Strategy.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Strategies/Single_Event_Migration_Strategy.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/Strategies/Strategy_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Migration/String_Dictionary.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Builder.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Formatters/Boolean_Formatter.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Formatters/Date_Formatter.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Formatters/End_Date_Formatter.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Formatters/Formatter.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Formatters/Integer_Key_Formatter.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Formatters/Numeric_Formatter.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Formatters/Text_Formatter.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Formatters/Timezone_Formatter.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Model.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Model_Date_Attributes.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Occurrence.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Post_Model.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Duration.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/End_Date.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/End_Date_UTC.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Ignore_Validator.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Integer_Key.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Occurrence_Duration.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Positive_Integer.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Present.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Range_Dates.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Start_Date.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Start_Date_UTC.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/String_Validator.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Valid_Date.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Valid_Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Valid_Event_Model.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Valid_Timezone.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Validator.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/ValidatorInterface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Models/Validators/Whole_Number.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Notices.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Provider_Contract.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Repository/Events.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Repository/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Schema_Builder/Abstract_Custom_Field.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Schema_Builder/Abstract_Custom_Table.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Schema_Builder/Abstract_Schema_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Schema_Builder/Field_Schema_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Schema_Builder/Schema_Builder.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Schema_Builder/Schema_Provider_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Schema_Builder/Table_Schema_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Tables/Events.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Tables/Occurrences.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Tables/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Traits/With_Core_Tables.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Traits/With_Database_Transactions.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Traits/With_Dates_Representation.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Traits/With_Observable_Filtering.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Traits/With_Reflection.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Traits/With_String_Dictionary.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Traits/With_Timezones.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Traits/With_Unbound_Queries.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Traits/With_WP_Query_Introspection.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Updates/Controller.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Updates/Events.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Updates/Meta_Watcher.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Updates/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Updates/Requests.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Views/V2/By_Day_View_Compatibility.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Views/V2/Customizer_Compatibility.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/Views/V2/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Custom_Tables_Meta_Query.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Custom_Tables_Query.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Modifiers/Base_Modifier.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Modifiers/Events_Admin_List_Modifier.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Modifiers/Events_Only_Modifier.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Modifiers/WP_Query_Modifier.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Monitors/Custom_Tables_Query_Monitor.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Monitors/Query_Monitor.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Monitors/WP_Query_Monitor.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Redirection_Schema.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Repository/Custom_Tables_Query_Filters.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/WP_Query/Repository/Query_Replace.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/icons/rerun.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/maintenance-mode/phase/cancel-complete.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/maintenance-mode/phase/cancel-in-progress.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/maintenance-mode/phase/migration-complete.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/maintenance-mode/phase/migration-failed-complete.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/maintenance-mode/phase/migration-in-progress.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/maintenance-mode/phase/migration-prompt.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/maintenance-mode/phase/revert-complete.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/maintenance-mode/phase/revert-in-progress.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/partials/event-items.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/partials/event-loop.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/partials/failure-event-loop.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/partials/progress-bar.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/phase/cancel-in-progress.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/phase/migration-complete.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/phase/migration-failed-complete.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/phase/migration-in-progress.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/phase/migration-prompt.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/phase/preview-in-progress.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/phase/preview-prompt.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/phase/report.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/phase/revert-in-progress.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/settings-maintenance-modal.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/upgrade-box.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/admin-views/migration/upgrade-logo.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Custom_Tables/V1/template-tags.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Editor/Full_Site/Hooks.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Editor/Full_Site/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Editor/Full_Site/Templates.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Editor/Full_Site/Templates/archive-events.html create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Installer/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Integration_Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/Colbri_Page_Builder/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/Elementor/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/Event_Tickets/Emails/Email/RSVP.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/Event_Tickets/Emails/Email/Ticket.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/Event_Tickets/Emails/Emails.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/Event_Tickets/Emails/Hooks.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/Event_Tickets/Emails/JSON_LD/Event_Data.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/Event_Tickets/Emails/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/Event_Tickets/Emails/Template.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/Event_Tickets/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/Rank_Math/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/WordPress_SEO/Events_Schema.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Plugins/WordPress_SEO/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Integrations/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Legacy/Views/V1/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Site_Health/Info_Section.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Site_Health/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Telemetry/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Events/Telemetry/Telemetry.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/API.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Adjacent_Events.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Bar/Admin_Bar.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Bar/Configurator_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Bar/Default_Configurator.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Event_Meta_Box.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Filter_Bar/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Notice/Full_Site_Editor.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Notice/Install_Event_Tickets.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Notice/Legacy_Views_Deprecation.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Notice/Legacy_Views_Updated.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Notice/Marketing.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Notice/Timezones.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Notice/Update.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Settings.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Timezone_Settings.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin/Timezone_Updater.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Admin_List.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/API/Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/API/Image.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/API/Import.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/API/Origins.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/API/Requests.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Admin_Bar.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/CLI/Command.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/CLI/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Cron.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Errors.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Meta_Box.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Migrate.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Page.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Processes/Batch_Imports.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Processes/Import_Events.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Processes/Queue_Control.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Processes/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/REST/V1/Endpoints/Base.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/REST/V1/Endpoints/Batch.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/REST/V1/Endpoints/State.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/REST/V1/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Activity.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Async_Queue.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Batch_Queue.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/CSV.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Eventbrite.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/ICS.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Items.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/List_Table.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Meetup.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Queue.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Queue_Cleaner.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Queue_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Queue_Processor.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Queue_Realtime.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Unsupported.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Url.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/Void_Queue.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/gCal.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Record/iCal.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Records.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Service.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Settings.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Tabs.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Tabs/Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Tabs/Edit.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Tabs/Favorite.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Tabs/History.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Tabs/New.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Aggregator/Tabs/Scheduled.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Ajax/Operations.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Amalgamator.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Assets.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Capabilities.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Collections/Lazy_Post_Collection.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Constants.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Cost_Utils.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Customizer/Day_List_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Customizer/General_Theme.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Customizer/Global_Elements.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Customizer/Month_Week_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Customizer/Single_Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Customizer/Widget.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Dates/Known_Range.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Deactivation.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Default_Values.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Assets.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Blocks/Archive_Events.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Blocks/Classic_Event_Details.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Blocks/Event_Category.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Blocks/Event_Datetime.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Blocks/Event_Links.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Blocks/Event_Organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Blocks/Event_Price.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Blocks/Event_Tags.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Blocks/Event_Venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Blocks/Event_Website.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Blocks/Featured_Image.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Compatibility.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Configuration.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Hooks.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/I18n.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Meta.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Objects/Editor_Object_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Objects/Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Settings.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Template.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Editor/Template/Overwrite.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Embedded_Maps.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Cleaner.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Cleaner_Scheduler.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Admin_Template.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Classic_Editor.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Compatibility/Events_Control_Extension/JSON_LD.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Compatibility/Events_Control_Extension/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Compatibility/Filter_Bar/Detect.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Compatibility/Filter_Bar/Events_Status_Filter.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Compatibility/Filter_Bar/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Event_Meta.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Event_Status_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/JSON_LD.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Models/Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Status_Labels.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Template.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Status/Template_Modifications.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Tickets/Attendees_Report.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Tickets/Main.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Event_Tickets/Ticket_Email.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Featured_Events.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Featured_Events/Permalinks_Helper.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Featured_Events/Query_Helper.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Front_Page_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Google/Maps_API_Key.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Gutenberg.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/I18n.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Ignored_Events.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Importer/Column_Mapper.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Importer/Featured_Image_Uploader.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Importer/File_Importer.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Importer/File_Importer_Events.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Importer/File_Importer_Organizers.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Importer/File_Importer_Venues.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Importer/File_Reader.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Importer/File_Uploader.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/ACF/ACF.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/ACF/resources/tribe-admin-acf-compat.js create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/Beaver_Builder.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/Divi/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/Fusion/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/Fusion/Widget_Shortcode.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/Hello_Elementor/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/Hello_Elementor/Templates.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/Hello_Elementor/hello-elementor-functions.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/Manager.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/Restrict_Content_Pro/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/Twenty_Seventeen.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/Category_Translation.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/Defaults.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/Language_Switcher.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/Linked_Posts.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/Meta.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/Option.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/Permalinks.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/Rewrites.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/Utils.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/Views/V2/Filters.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/WPML.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WP_Rocket.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Integrations/X_Theme/X_Theme.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/JSON_LD/Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/JSON_LD/Organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/JSON_LD/Venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Linked_Posts.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Linked_Posts/Base.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Linked_Posts/Chooser_Meta_Box.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Main.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Meta/Context.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Meta/Save.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Models/Post_Types/Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Models/Post_Types/Organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Models/Post_Types/Venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Options_Exception.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Plugin_Register.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Post_Exception.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Privacy.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Query.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/Interfaces/Post_Repository.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Auth.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/EA_Messages.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Archive_Base.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Archive_Category.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Archive_Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Archive_Organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Archive_Tag.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Archive_Venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Base.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Linked_Post_Base.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Linked_Post_Endpoint_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Single_Category.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Single_Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Single_Event_Slug.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Single_Organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Single_Organizer_Slug.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Single_Tag.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Single_Venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Single_Venue_Slug.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Term_Archive_Base.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Term_Single_Base.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Headers/Base.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Main.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Messages.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Post_Repository.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Settings.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/System.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Validator/Base.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Validator/Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Repositories/Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Repositories/Linked_Posts.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Repositories/Organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Repositories/Venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Revisions/Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Revisions/Post.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Revisions/Preview.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Rewrite.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Service_Providers/Context.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Service_Providers/First_Boot.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Service_Providers/ORM.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Shortcode/Event_Details.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Taxonomy/Event_Tag.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Taxonomy/Taxonomy_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Template/Embed.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Template/Single_Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Template_Factory.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Templates.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Timezones.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Updater.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Utils/Dates.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Utils/Id_Generator.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Utils/Radius.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Validator/Base.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Validator/Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Assets.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Customizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Customizer/Configuration.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Customizer/Hooks.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Customizer/Notice.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Customizer/Section/Events_Bar.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Customizer/Section/Global_Elements.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Customizer/Section/Month_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Customizer/Section/Single_Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Customizer/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Hooks.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Implementation_Error.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Index.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Interfaces/Repository_User_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Interfaces/View_Partial_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Interfaces/View_Url_Provider_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Kitchen_Sink.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Manager.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Messages.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Query/Event_Query_Controller.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Query/Hide_From_Upcoming_Controller.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/README.md create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Repository/Event_Period.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Repository/Event_Result.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Repository/Events_Result_Set.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Rest_Endpoint.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Rewrite.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Template.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Template/Event.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Template/Excerpt.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Template/Featured_Title.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Template/JSON_LD.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Template/Page.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Template/Promo.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Template/Settings/Advanced_Display.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Template/Title.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Template_Bootstrap.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Theme_Compatibility.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Url.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Utils/Separators.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Utils/Stack.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Utils/View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/View_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/View_Register.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/By_Day_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Day_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Latest_Past_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/List_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Month_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Reflector_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Traits/Breakpoint_Behavior.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Traits/HTML_Cache.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Traits/Json_Ld_Data.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Traits/List_Behavior.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Traits/With_Fast_Forward_Link.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Traits/iCal_Data.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Widgets/Widget_List_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Views/Widgets/Widget_View.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Widgets/Admin_Template.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Widgets/Assets.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Widgets/Compatibility.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Widgets/Service_Provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Widgets/Widget_Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/Widgets/Widget_List.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/functions/classes.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/functions/template-tags.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Links/Google_Calendar.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Links/Link_Abstract.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Links/Link_Interface.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Links/Outlook_365.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Links/Outlook_Export.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Links/Outlook_Live.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Links/iCal.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Links/iCalendar_Export.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Request.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Single_Events.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Template.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/Traits/Outlook_Methods.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/Views/V2/iCalendar/iCalendar_Handler.php create mode 100644 wp-content/plugins/the-events-calendar/src/Tribe/iCal.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/admin-update-message.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/admin-welcome-message.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/banners/eventbrite-upsell.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/fields/schedule.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/header.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/meta-box.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/origins/csv.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/origins/eventbrite.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/origins/gcal.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/origins/ical.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/origins/ics.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/origins/limit.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/origins/meetup.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/origins/refine.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/origins/url.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/page.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/settings.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/status.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/tab.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/tabs/edit.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/tabs/favorite.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/tabs/history.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/tabs/import-form.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/tabs/new.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/aggregator/tabs/scheduled.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/create-organizer-fields.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/create-venue-fields.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/event-sidebar-options.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/events-meta-box.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/filter_bar/upsell.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/linked-post-meta-box.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/linked-post-section.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/metabox/compatibility/events-control-extension/mark-online.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/metabox/components/dropdown.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/metabox/event-status.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/no-comments.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/notices/install-event-tickets.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/notices/legacy-views-updated.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/notices/update-6-0-0.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/organizer-meta-box.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/privacy.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/tribe-options-addons-api.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/tribe-options-display.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/tribe-options-general.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/tribe-options-network.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/tribe-options-timezones.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/tribe-options-upgrade.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/updates/6.0.0.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/venue-meta-box.php create mode 100644 wp-content/plugins/the-events-calendar/src/admin-views/widgets/events-list.php create mode 100644 wp-content/plugins/the-events-calendar/src/deprecated/Traits/Tribe__Events__Main_Deprecated.php create mode 100644 wp-content/plugins/the-events-calendar/src/deprecated/Traits/Tribe__Events__Query_Deprecated.php create mode 100644 wp-content/plugins/the-events-calendar/src/deprecated/Tribe__Events__Bar.php create mode 100644 wp-content/plugins/the-events-calendar/src/deprecated/Tribe__Events__Integrations__Freemius.php create mode 100644 wp-content/plugins/the-events-calendar/src/deprecated/Tribe__Events__List_Widget.php create mode 100644 wp-content/plugins/the-events-calendar/src/deprecated/Tribe__Events__Template__Day.php create mode 100644 wp-content/plugins/the-events-calendar/src/deprecated/Tribe__Events__Template__List.php create mode 100644 wp-content/plugins/the-events-calendar/src/deprecated/Tribe__Events__Template__Month.php create mode 100644 wp-content/plugins/the-events-calendar/src/deprecated/facebook.php create mode 100644 wp-content/plugins/the-events-calendar/src/deprecated/functions.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/advanced-functions/event.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/advanced-functions/linked-posts.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/advanced-functions/organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/advanced-functions/rest-v1.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/advanced-functions/venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/php-min-version.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/date.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/day.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/deprecated.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/event.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/general.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/google-map.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/ical.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/link.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/loop.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/month.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/orm.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/query.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/url.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/template-tags/venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/utils/array.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/utils/install.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/utils/labels.php create mode 100644 wp-content/plugins/the-events-calendar/src/functions/views/provider.php create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/caret-down.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/categories.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/checkbox-off.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/checkbox-on.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/classic.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/date-time.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/events-list.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/featured-image.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/index.js create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/link.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/organizer.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/price.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/sharing.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/tags.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/venue.svg create mode 100644 wp-content/plugins/the-events-calendar/src/modules/icons/website.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/admin-menu.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/admin-update-page.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/admin/notice-install-event-tickets.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/aggregator-page.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/app/classic-event-details/frontend.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/app/event-category/frontend.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/app/event-datetime/frontend.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/app/event-links/frontend.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/app/event-organizer/frontend.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/app/event-price/frontend.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/app/event-tags/frontend.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/app/event-venue/frontend.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/app/event-website/frontend.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/app/main.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/app/widgets.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/custom-tables-v1/ct1-upgrade.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/custom-tables-v1/ct1-upgrade.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/debugger.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/events-admin.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tec-admin-filterbar-upsell.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tribe-admin-block-category-icons.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tribe-admin-single-blocks.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tribe-events-embed.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tribe-events-full-mobile.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tribe-events-full.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tribe-events-single-blocks.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tribe-events-single-full.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tribe-events-single-skeleton.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tribe-events-skeleton.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tribe-events-theme-mobile.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/tribe-events-theme.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/views-full.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/views-print.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/views-skeleton.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/widget-events-list-full.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/css/widget-events-list-skeleton.min.css create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/filterbar-banner.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/filterbar.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/freemius-icon-notice.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/freemius-icon-plugin.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/freemius-icon-profile.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/freemius-icon-site.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/freemius-icon-themes.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/freemius-logo.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/link.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/map-pin.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/phone.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/tec-horns.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/icons/tec-logo-2020.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/aggregator/EventAggregator-icon.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/aggregator/ea-intro-img-text.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/aggregator/ea-upsell-bkg.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/aggregator/eventbrite-tickets.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/aggregator/eventbrite.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/aggregator/facebook.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/aggregator/meetup.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/aggregator/upsell-banner.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/alert.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/attendees-screen-icon.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/bg_fade.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/datepicker/ui-icons_222222_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/datepicker/ui-icons_454545_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/datepicker/ui-icons_666666_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/eb_press_little.gif create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/event-example-image.jpg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-day-hover.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-day-hover@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-day.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-day@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-gear.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-gear@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-list-hover.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-list-hover@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-list.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-list@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-map-hover.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-map-hover@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-map.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-map@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-month-hover.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-month-hover@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-month.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-month@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-photo-hover.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-photo-hover@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-photo.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-photo@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-search.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-search@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-week-hover.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-week-hover@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-week.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-bar/icon-week@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-screen-icon.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/events-screen-icon@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/arrow-right.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/bitmap/link.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/bitmap/map-pin.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/bitmap/phone.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/bolt.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/bulb.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/caret-down.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/caret-left.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/caret-right.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/caret-up.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/check.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/day.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/dropdown.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/featured-event.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/filters.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/lightning.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/list.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/map.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/month.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/photo.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/recurring-events.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/search.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/small-arrow.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/tec-horns.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/warning.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/icons/week.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/logos/tec-brand.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/menu.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/menu@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/migration/migration-complete-screenshot.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/migration/migration-prompt-screenshot.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/migration/preview-in-progress-screenshot.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/migration/preview-prompt-screenshot.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/recurring-event-icon.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/settings-icons/icon-et.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/settings-icons/icon-event-aggregator.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/settings-icons/icon-image-high-five.svg create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/tribe-loading.gif create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/tribe-theme/tribe-theme-tooltips.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/tribe-theme/tribe-theme-tooltips@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/tribe-tooltips.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/tribe-tooltips@2x.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/update-page-features-1.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/update-page-features-2.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/update-page-features-3.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/update-page-graphic.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/images/upgrade-views-success.png create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/admin-ignored-events.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/admin-ignored-events.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/admin-upgrade-page.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/admin-upgrade-page.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/admin/notice-install-event-tickets.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/admin/notice-install-event-tickets.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/aggregator-admin-legacy-settings.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/aggregator-admin-legacy-settings.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/aggregator-fields.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/aggregator-fields.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/aggregator-notice.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/aggregator-notice.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/app/main.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/app/vendor.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/app/widgets.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/custom-tables-v1/ct1-upgrade.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/custom-tables-v1/ct1-upgrade.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/customizer-views-v2-controls.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/customizer-views-v2-controls.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/customizer-views-v2-live-preview.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/customizer-views-v2-live-preview.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/embedded-map.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/embedded-map.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/event-editor.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/event-editor.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/events-admin-timezone-updater.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/events-admin-timezone-updater.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/events-admin.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/events-admin.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/events-dynamic.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/events-dynamic.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/jquery-ecp-plugins.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/jquery-ecp-plugins.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/tec-update-6.0.0-notice.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/tec-update-6.0.0-notice.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/tribe-settings.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/tribe-settings.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/README.md create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/accordion.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/accordion.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/breakpoints.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/breakpoints.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/datepicker.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/datepicker.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/events-bar-inputs.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/events-bar-inputs.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/events-bar.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/events-bar.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/ical-links.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/ical-links.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/manager.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/manager.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/month-grid.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/month-grid.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/month-mobile-events.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/month-mobile-events.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/multiday-events.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/multiday-events.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/navigation-scroll.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/navigation-scroll.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/tooltip.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/tooltip.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/view-selector.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/view-selector.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/viewport.js create mode 100644 wp-content/plugins/the-events-calendar/src/resources/js/views/viewport.min.js create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/archive-events.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/classic-event-details.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/event-category.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/event-datetime.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/event-links.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/event-organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/event-price.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/event-tags.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/event-venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/event-website.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/featured-image.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/parts/details.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/parts/map.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/parts/organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/parts/subscribe-list.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/parts/subscribe-single.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/blocks/parts/venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/embed.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/embed/content.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/embed/cost.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/embed/footer.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/embed/image.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/embed/meta.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/embed/schedule.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/embed/venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/integrations/event-tickets/emails/template-parts/body/event/date.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/integrations/event-tickets/emails/template-parts/body/event/image.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/integrations/event-tickets/emails/template-parts/body/event/links.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/integrations/event-tickets/emails/template-parts/body/event/links/gcal.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/integrations/event-tickets/emails/template-parts/body/event/links/ical.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/integrations/event-tickets/emails/template-parts/body/event/venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/integrations/event-tickets/emails/template-parts/body/event/venue/address.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/integrations/event-tickets/emails/template-parts/body/event/venue/phone.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/integrations/event-tickets/emails/template-parts/body/event/venue/website.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/integrations/event-tickets/emails/template-parts/header/head/tec-styles.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/kitchen-sink/page.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/modules/address.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/modules/map-basic.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/modules/map.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/modules/meta.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/modules/meta/details.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/modules/meta/map.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/modules/meta/organizer.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/modules/meta/venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/silence.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/single-event-blocks.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/single-event.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/single-event/back-link.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/single-event/comments.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/single-event/content.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/single-event/footer.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/single-event/notices.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/single-event/recurring-description.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/single-event/title.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/base.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/after.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/before.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/breadcrumbs.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/breadcrumbs/breadcrumb.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/breadcrumbs/linked-breadcrumb.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/breakpoints.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/data.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/events-bar.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/events-bar/search-button.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/events-bar/search.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/events-bar/search/keyword.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/events-bar/search/submit.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/events-bar/views.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/events-bar/views/list.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/events-bar/views/list/item.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/filter-bar.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/ical-link.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/json-ld-data.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/loader.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/messages.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/messages/error-icon.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/messages/notice-icon.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/read-more.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/subscribe-links/item.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/subscribe-links/legacy.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/subscribe-links/list.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/subscribe-links/single-event-list.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/subscribe-links/single.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/top-bar/actions.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/top-bar/actions/content.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/components/top-bar/today.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/event.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/event/cost.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/event/date.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/event/date/featured.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/event/date/meta.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/event/description.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/event/featured-image.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/event/title.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/event/venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/nav.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/nav/next-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/nav/next.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/nav/prev-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/nav/prev.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/time-separator.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/top-bar.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/top-bar/datepicker.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/top-bar/nav.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/top-bar/nav/next-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/top-bar/nav/next.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/top-bar/nav/prev-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/top-bar/nav/prev.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/day/type-separator.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/default-template.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/event-status/single/event-statuses-container.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/event-status/single/event-statuses-container/canceled-status.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/event-status/single/event-statuses-container/postponed-status.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/event-status/status-label.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/event-status/status-label/canceled-label.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/event-status/status-label/postponed-label.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past/event.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past/event/cost.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past/event/date-tag.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past/event/date.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past/event/date/featured.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past/event/date/meta.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past/event/description.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past/event/featured-image.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past/event/title.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past/event/venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/latest-past/heading.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/event.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/event/cost.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/event/date-tag.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/event/date.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/event/date/featured.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/event/date/meta.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/event/description.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/event/featured-image.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/event/title.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/event/venue.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/month-separator.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/nav.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/nav/next-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/nav/next.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/nav/prev-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/nav/prev.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/nav/today.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/top-bar.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/top-bar/datepicker.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/top-bar/nav.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/top-bar/nav/next-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/top-bar/nav/next.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/top-bar/nav/prev-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/list/top-bar/nav/prev.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date/featured.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/date/meta.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/featured-image.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/title.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/cost.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date/featured.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date/meta.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/description.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/featured-image.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/title.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/cell-title.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/cell.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/date-extras.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/date.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/more-events.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/multiday-events.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/multiday-events/multiday-event-spacer.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/multiday-events/multiday-event.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/multiday-events/multiday-event/bar.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/multiday-events/multiday-event/bar/featured.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/multiday-events/multiday-event/bar/title.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/multiday-events/multiday-event/hidden.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/multiday-events/multiday-event/hidden/date.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/multiday-events/multiday-event/hidden/link.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/multiday-events/multiday-event/hidden/link/featured.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-body/day/multiday-events/multiday-event/hidden/link/title.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/calendar-header.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/mobile-day.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/mobile-day/day-marker.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/mobile-day/mobile-event.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/mobile-day/mobile-event/cost.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/mobile-day/mobile-event/date.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/mobile-day/mobile-event/date/meta.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/mobile-day/mobile-event/featured-image.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/mobile-day/mobile-event/title.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/mobile-day/more-events.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/nav.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/nav/next-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/nav/next.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/nav/prev-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/nav/prev.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/mobile-events/nav/today.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/top-bar.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/top-bar/datepicker.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/top-bar/nav.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/top-bar/nav/next-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/top-bar/nav/next.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/top-bar/nav/prev-disabled.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/month/top-bar/nav/prev.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/not-found.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/widgets/widget-events-list.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/widgets/widget-events-list/event.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/widgets/widget-events-list/event/date-tag.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/widgets/widget-events-list/event/date.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/widgets/widget-events-list/event/date/featured.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/widgets/widget-events-list/event/title.php create mode 100644 wp-content/plugins/the-events-calendar/src/views/v2/widgets/widget-events-list/view-more.php create mode 100644 wp-content/plugins/the-events-calendar/the-events-calendar.php create mode 100644 wp-content/plugins/the-events-calendar/uninstall.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/ForceUTF8/Encoding.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/autoload.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/bootstrap-datepicker/css/bootstrap-datepicker.standalone.min.css create mode 100644 wp-content/plugins/the-events-calendar/vendor/bootstrap-datepicker/js/bootstrap-datepicker.min.js create mode 100644 wp-content/plugins/the-events-calendar/vendor/chosen/public/chosen-sprite.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/chosen/public/chosen-sprite@2x.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/chosen/public/chosen.jquery.min.js create mode 100644 wp-content/plugins/the-events-calendar/vendor/chosen/public/chosen.min.css create mode 100644 wp-content/plugins/the-events-calendar/vendor/chosen/public/chosen.proto.min.js create mode 100644 wp-content/plugins/the-events-calendar/vendor/composer/ClassLoader.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/composer/InstalledVersions.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/composer/LICENSE create mode 100644 wp-content/plugins/the-events-calendar/vendor/composer/autoload_classmap.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/composer/autoload_namespaces.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/composer/autoload_psr4.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/composer/autoload_real.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/composer/autoload_static.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/composer/installed.json create mode 100644 wp-content/plugins/the-events-calendar/vendor/composer/installed.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery-placeholder/jquery.placeholder.js create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery-placeholder/jquery.placeholder.min.js create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery-resize/jquery.ba-resize.min.js create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-icons_222222_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-icons_2e83ff_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-icons_454545_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-icons_888888_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/images/ui-icons_cd0a0a_256x240.png create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/smoothness/jquery-ui-1.8.23.custom.css create mode 100644 wp-content/plugins/the-events-calendar/vendor/jquery/ui.datepicker.css create mode 100644 wp-content/plugins/the-events-calendar/vendor/php-date-formatter/js/php-date-formatter.min.js create mode 100644 wp-content/plugins/the-events-calendar/vendor/tribe-common-libraries/tribe-common-libraries.class.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/README.md create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/action-scheduler.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/changelog.txt create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_ActionClaim.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_ActionFactory.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_AdminView.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_AsyncRequest_QueueRunner.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_Compatibility.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_DataController.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_DateTime.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_Exception.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_FatalErrorMonitor.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_InvalidActionException.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_ListTable.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_LogEntry.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_NullLogEntry.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_OptionLock.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_QueueCleaner.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_QueueRunner.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_Versions.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_WPCommentCleaner.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/ActionScheduler_wcSystemStatus.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_Clean_Command.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_QueueRunner.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_Scheduler_command.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/WP_CLI/Migration_Command.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/WP_CLI/ProgressBar.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_QueueRunner.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_RecurringSchedule.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_Schedule.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_Schema.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Lock.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Logger.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Store.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_TimezoneHelper.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_Action.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_CanceledAction.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_FinishedAction.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_NullAction.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBLogger.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_HybridStore.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpCommentLogger.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_PostStatusRegistrar.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_PostTypeRegistrar.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_TaxonomyRegistrar.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/migration/ActionMigrator.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/migration/ActionScheduler_DBStoreMigrator.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/migration/BatchFetcher.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/migration/Config.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/migration/Controller.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/migration/DryRun_ActionMigrator.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/migration/DryRun_LogMigrator.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/migration/LogMigrator.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/migration/Runner.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/migration/Scheduler.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_CanceledSchedule.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_CronSchedule.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_IntervalSchedule.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_NullSchedule.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_Schedule.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_SimpleSchedule.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/schema/ActionScheduler_LoggerSchema.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/classes/schema/ActionScheduler_StoreSchema.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/deprecated/ActionScheduler_Abstract_QueueRunner_Deprecated.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/deprecated/ActionScheduler_AdminView_Deprecated.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/deprecated/ActionScheduler_Schedule_Deprecated.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/deprecated/ActionScheduler_Store_Deprecated.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/deprecated/functions.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/functions.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/WP_Async_Request.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_AbstractField.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_DayOfMonthField.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_DayOfWeekField.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_FieldFactory.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_FieldInterface.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_HoursField.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_MinutesField.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_MonthField.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_YearField.php create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/LICENSE create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/lib/cron-expression/README.md create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/license.txt create mode 100644 wp-content/plugins/the-events-calendar/vendor/woocommerce/action-scheduler/readme.txt diff --git a/wp-content/plugins/the-events-calendar/common/README.md b/wp-content/plugins/the-events-calendar/common/README.md new file mode 100644 index 000000000..0eaf4a026 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/README.md @@ -0,0 +1,2 @@ +# tribe-common +Common classes and functions used in our plugins diff --git a/wp-content/plugins/the-events-calendar/common/lang/readme.txt b/wp-content/plugins/the-events-calendar/common/lang/readme.txt new file mode 100644 index 000000000..ac9c376f1 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/lang/readme.txt @@ -0,0 +1,3 @@ +If you are interested in contributing to translations, you can get started at https://translations.theeventscalendar.com/projects/tribe-common/ + +On that site you can also find the .po translation files for doing local translations. We do not include these in the plugin itself to save space. \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-af.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-af.mo new file mode 100644 index 0000000000000000000000000000000000000000..809e19d960dac7bbc2750aa58986afc1e691617f GIT binary patch literal 14594 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 So~Sebagf|_jKluXvi}Ek&6Vc> literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-bg_BG.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-bg_BG.mo new file mode 100644 index 0000000000000000000000000000000000000000..5aaebd12e3b99c33ccf9a97c99efcb559732e6e7 GIT binary patch literal 21755 zcmb`O3z%JHdG8kzCH1*oWz>~qZK&?Od z-9d0Bcp-QOcn$bo@CNWy@Ii1U_^j{$2Y5OC_d?{uU<^(K9|zmPuY*&-UxOEc=e#Ef zP6Tt{yTDbT__z!F18@^~B>1@R|Cz^a;Ngt#_Wga}arD39`!9jo_kHjv@Kta;_%Gnm z;G3Z6AI4=ge>AB6383WhUQp{oKYli-{ZoDaQjfFz_(D*0uJYrN#{?7~*Mp+F%8%dR z$8YidJ3;Ng4?Gs!?B_oZo<@HM_=n)PK&|@`_;&DhP<;Q|kH75{$LBGi)}7?>bWnUu z^ms0)`+N|T+@^u3B@$^@NTK6dsRR>Rc+zaZwmpuLe)cSt{#owD? z7x5)v5BwugC~F!LEYyPQ2b8^b^aBg&RYS> zuDbpBfX6kU_TLVQ-ov2I+X8Ce=Rxtc6BJ*2K*{|@KmR?C{|M^5*Ffp(4Ucbu;_FzL zekXV$C_W~FI`2{t5d_mg?YkC~ofZ9jKPZ0w1Qb8Fc)SY~-9H6I=Mhl*9|tApt)S@s z6)66H0BZfKpy>R>kN+IhdA|e^ZSc0!ojgtlwSFq7`455GHv<$u^Ff`v+|OSFYJCif zkD~9d26g^g-@g^qzPms~6Knt_w{4)#*#qjF7d(Cg)c%)1t@}IQf7Q?b7}UNuK=J<@ zP;u$x(4BLM$B%-dI|~$_3qjFc3Tk|X?{|ZmFL+Er-M1gq`D;P#y8~4J9#HEa1hwul zkbl8n@Z%leH$csQAJqJ-pw9bOkN?Z#Z$Z&La)Pt7w}bMhlR=#`1(aMr1nRzXJYE5c z?lqwHuk`(*?+<`F|C6BT-0bmAPb#3R&hX=lJTCX+*ZO|q@p@2v*Fn+0 z(f4lyb?#lD&f5fv|1BP$0d?L!k6#0||J$JUeIHajcny?%ego>h!Ta5L<3aI#JgE7T zLD})CAR#xn1eD(`2iw35R6Kgj<1?V*+I~=R^Xs7a{1Nyz@PC4$`>&w*`ZwSI4^S!k zu>a=r;>n=)wS!uBAt-rV=ErA((&v0X|1nVK#^5+G19jg4Q2W<`qW5Xv-vG*f9|p&P zpZDY2K;3^2sQq6Cb?)DQlG95bUk0`AHSh-TXQ0kc&vfIT043*}L7jU)D0-X0Bfvig zrKhc+_C4qEYoPS`9gnYqipOt&I`8lgIC{r`;{OCtbj|=prwtUJ9ia3z6V(0x7}WX# zC_1aac5n@-eb0c><6htYI>?d1_rN2---4n$?kv|o4iw!JL5-gZ9toZW>YnYO@<0bD zIV|?`-JtkQK<%r7qJM+On?cdN15`fQ04nZ11#SRe04IZ2O?30?!I1ugAS?!Zz$xGl zLD4;7lGE?W;2+RG71a2dzJCrVzRw3GhYsJL<8cwFeak@I=Z`?iDFdaawIHew?gn+w zouJl#70iL(1jm8rpY85_F(|*70czdHz@x#u@0Y-%==X!#cO$6vH-oAdAMx`$!146= zg5u+=p!oU@_$T0xK+*m9Id0u`pw6p-y8kCZ$#)%iCU`%n`|SgDpKpP0xX>~l5vcJR~SufPXEt=mA55a0KMh$8p`2+82P;0M9OF~Sdl9pEgm z3U+{dzykR1;CbM+=LW$izhxx9!q~KNXQTN`|*GD_&O*$zXnD3=<}WaPXjf69(X+XQQyA; z6#b8bCxE?v{02~Q?@o}^9z5yCUjVi4+o0(DlOKN*6yHZ);OM>6<7uGyoaFoSLGiI1 z)czPWyYl@T!OIxG2Nb<;`tk3B%FC~V+JD4_ZvTnkiS*C({SHv`^Fi%j0qTA|;5)$# z6hF6s((lut?C2FxeEb;H`k#Z!C;uDNy7yod7lB=%lX3_l`D1N^U>fF~r@%2;iH{jtHJGyUy;^%k{p9a1M)c$Kct^{@d^}c@-sB`WF zb^oXR{Ij6!`fH%%@eA-h;9(fE)|~=s{A^J4E&}CubNzhD<0n0S8vFqB4}seEWk3E+ zQ1^HlYzKc1%1$O+;^OOaY+V>!+^M$!`lNx_=JJFZY3{Bslz1x4r|EKIVWr_hX>e_k!AggYVx8 zivA|>-QZKc|2(Mkzv1z_9$x{)$Lk({3yS_bFmB;#pyt~^(Y?%%&j&?sh406p_^E=B z2yO*G3Vy}UANdi-=et1BI}H@Qb3K08<2;YcL9NUAeian`wV?Rg2 zlG8Up$>oROY2Z)%{LvqEaybdq{&rCNJ_L&HY*6FNK*{gpAgT;jftue5ivE8GweEYM z&VLou_%A?>A3e?WPXxusBv9u}1-1Sopy+k_`9B7=uK-Q}E1>RsAE@7Pt zKLN$Zzk`zRxS7s>j|I=Be?AB+!L?u?xCPYuci>#7gQtPw=Q3~#xB`@%KLw5h9|m>K z7C-)ZQ0MFer-Cnn?clFK@i%d{+kYXbeX~K0Ujc^TwSN9a@Fe>8fTH)5AKwa!zrO;t zzX3|$e-Ene{FxsQ=6Jb+?`8ab;Jd(!KRwlY+E)cd_h#^ehfz;}lK)@Nb>lCC z+V?sret!vy-VyWM_$i>)e*l!+I>58R6`=fMy~jtuQ|S+aI`7+{=)D3`ssumvhkIA6;oDD)c_!y}5p95uAgW!1ZtA6}j zpzP;|p!oWQ?;p0ntveAslkw9*&Cdd*rzO6hfTG{;`|ExGGoa+N1=M{8!3oIuMNs;A zZK0!g_#&4dkN3C)6yF=cqrjIv{xf(S{hxv2|1FQ>7dtxd0#(nR;ro|(oC|8-GVn++ z555oV_5Itx3+UhN@dZ%pe+7OEJgU>}`+HD!_XttL?Exk4mp#4#PM|+-iL=iSfEOUA>7dpPbh-Q90Ul5PKHvWwsQ9}LlssPt&jF8G z>gw7HK;@g2;M>6`LG9lLz76~`_)hRE;Njrkg0j;efI%3Q@?mghCG3i;)uhx@Q9Bov zN@+Fhj>9O-*UH5t7ggiY6V*Z-R-!&uRKhbW?V9YXRs5b(t*<-I*k2up<5D=q4w-u1 z!B?eOSdOz?T&hMr@t7s$LRyMLM{ev?T1l!&{~>1kqhgW|E5%w*IMHpdOb&}&G0te@ zqe>wLb@y5+&sZ+a;>x7qBXVh}l5m}LWq6@Kf5at6%(iH@PH7P@r~zFpICRC0U#gSEAfXtz1so zYr-z)v7|~cEuUvmu9jt(Tp0JGd=2(Tr5w9D5nQ-1Dq#;PuNt%BNW->`99TwWMf`YLw-wtPG}QJ+P6K z)Jj&ThP_d#62V#47u!Kut($4=JmcEFC0re6-BEHKEKZLKa99y$s0J+c6r+4xDbQq5 zK4mU0Mp@0UC#m(RpRA67k~YLyUo9U6(+f3Sd3st*`Z;1cN*X{UG-~~EHJn!|BG6!Z z7OhT-0KQNug!4-IggY*!`V?K zRR?!Sf*DaUF6E<4jRYO)?lYpk?iA{3#95k_Xp|xt1#)o_D97RQILpU0>wTQ>SgZsy z5G(Qur>%4vSrV6P-B?U8qY&l!krdfdkl<$&G8B#Yn%A3AOtGqJ0h{9JV%if9BxrIV z7%|b8<{{o3PjhJ{oH##5q@|uo!#t$Lw69y-)5y>QjlRBGDXG@OSIy(759%)=$J#u;f1snx>;ibBoEiYoddVpv{LSCKL2R}nz*K?Vp0ip(q1 zVlhP|Jz|3`9pQ(&v&)usO%9iFW%hSf<%c#JE}P#Pp3jzi+SeY;$Wrbdg%cN~Ii$M? zop*$Dv;L@x<4p=?$PZ@V2WcNVFLC(=NvW56*2^;N8LQ)5A#CY+CiXrMWpOYwF7-uO zZ!nWfVG9;dPzc!q&CI+m=}v3aB$%1@B_+wA*(i-5#jS%`5i(htpsrw6u7)zfo_e_& z%qrsU#eO$(eJ#THv6^sB4beowEW9BT!nQ1W7Iu}E)sO*%#H6;xrHbz@O>(_4LCG73 zgRtosVds*?ekzhS;6e6*emyJDmI+B5Vo-J$|UBpG;U4=v&};0 z&Fr9cUBZtd87d@F&@7pU&&FO8+-!CxKLcX>Q9{7nOA&z~^*YmHy%bltk00nlnuRzU z4g?92cTUue>(0TMSvZGS6P4=093m{eq#HLS9tLyLu$qQfrdhs|v{(t3xv)(R=!yMg znbew;lom7uQ}8BmOw+R1FbD0##k5vtvKIB}M>Xyv0?{&^IB1)m5SMBU*2T!&h-k*o zfhYmuVmX-0-KbFFaN=^zQel0DJlCvv60@azEhFgC=n3cZBbZw&5#Q>;JVKM=HWuB26Dv>>5$(~_i{vlsZpK0mIv+9dgjl}TaEj3VFO9Iw#8 z?W+_5)tE%KAgLB=mY)}-wFK!R=>@e_F=?ch^#lteA}K%fQBPFKVRQ>4EP|iJio~EU zjnL0ind)%FskAG#*J$xgsFv5 zJtdk33*%KuE)5nYxkA!|MiwT-XQaVN*rooJ%bZOE&S_8^Xt`p!ssI{Lb{Lo9p3LT| z71D21Wj2f3+uMa{&bF@Ji%#vJ_^x#vKxJcSN=v=7{9mu4s-l5D7 zv1O&+T8U&y!#mlcG$X$?vnCv6)dKR!PzG9X-I-CZ^k*G~K+Hl0*s>TV2B;Dj&kq)p z1cJqc>q1IpxtMquEGC{?8XaA8w1!7j9E-EK2lwfWdX0Y?MeMqh!ywlgm1|Kbq5F8( z=_FeZI^$BQQYTkQg`F{a@1zitp<#MKXHv~YNd{S}RaDi<9cw*U1M#?zlChPn==W=| zKS?p@&MfJVauBb@83CL^A`PyH6w#N&Q9dML#Swf+zN_KY4>&(m`SVH-W@plm>s^NlKj#aLUCcvUedpXO~gvi>?kv@MFZ?MO`mS{%y>Q zw?8K0b;Wg@poqAFu0(DgE{Ii_bWsIFJa%Xm(|#<10?M_*W-&C$rtCG*rJ58GH=|e= zcUL^=;-ylbY;UO%UO+ez_efb!^QfPCH0mz$V74^xi)-I$IfI+?&fq$8;xy|?qRFA_ zBE0+nfp3_LG6D{|vLsv(m54%JJVxjf_^@a$HlPQGY_e+r-7qtdRC)fmp}M@xD z5;U+~f2(mGZIVg{15o@|ai;2Al5;8y7t3gyliunpwHzj0Sy?MmZFp7d#lvgAf zN1&Io)h0`8SZ^&@Mn=VLm-Xs790&gWAr}p2^(FW=PUHvu>!aE2vNy`;UPx{xbS$n_ zi*;$W={w6xy`^-Zq_AR|iL1e~tVRy22g{l-$V!1Inp3bLHs+H`xfs>`w+Dn1;Z#I1 z#VSOG0T8Wt&Go1N=6gxf%L6a&#tAZ)G&8uxodDL`-RSLaxae$62w+Ut=(A>}BXnYV2%m4TsiRYiM0#TjROLF4k{7>Il2&M-Lw#oMAs53WcJXyTcaV3 zn;JWq#**YxvRFK75c9AG(_v#f`hQjmME@d!7TAcFphDR|<1?fE0RNV8jPU@dS~Oti zwxRX>+$jb_D085EU?)blhNHd&e+;4Wt&KfgYn`XgLU&@&*eD_lZzl*?fH7u8WINp1 zO@?llh!kqf8n>Bq?HaoK5WmT2+=HR*fFwR7DXA4S?!hs)+DS;#y2x#<_;YjOK^yLN zU3u^t#KDqXUNeo)!QyjrH{yX-S)}3S(7>RLR@m4=NAfkY`&hgm0s4-#0~gx6udxGZ zC`h@kyQ_r6Afc5t>?6>ctKcxrA;JPwT3tI^f*)GzwkTXS?|}{!neBw_-U}_vxmz}e z{H32YU2kLmZa5%5=$7|FdA+V=_d}5_Z&o1k^Khz7Zn>^zvPMorx49K-Oz@HgT;9uK zt}W(0)?mEz+3O?uE?u#vn7$ z+=}QdQ`k}l6t_ocQ-W7`-H(z7M@+EF90Qbo-AN{HWsBV+eg~Jt3WsOc(Zs{0yRh-3 zG}hR!g^a_J&Ox4=IE2JwUG_Ey2-0?t*Q{3UMW*sJ6y;W#If|0&atyP~ZH7si2{P3_ zc7?dP*hfQdY&X=nHT00$0XqJi_)$<|&2zSDtIHXqET8E?0*NmLG!-dZ>f)x|31xKk#p0~?b*pFaY=(D>VLWd9Ca_F7%NJm`8AhakYiD)@F>!R z3*)MQM3Dzo<58}HPJHbkvSI-CoGRt?So0=W5z8))?P2vz8l-NqWyS&4{}?wi1KC2l zP>{YuT?_9+YmHC4zN}ptN|rIYMzk%%g^ZF8SLUY8d;0yHWh1i9otB8;T*V7zkVLed z!@L=qYlYs=aEGCr+;8(5TL{;GMylPyCLJLUHl>6I%>ksU+f5U@+^_wJKpWUSCLoY% zKWnl?irmrJlsOM>^C)s(17jBFVNWr?X(SlZb|#g^&8m=bV=q;*vYC{n|0L^Om9HQniLE}CyC;L*$;12g;U0g`!7@!Xs z{-{}7Y@~?AHZ83;Hn7UHrRaVi>|jn}%5|ML_=tL+?#4Z2jx2uE7Hfs<+ysp`VJt{{ zxc)%33T$!`#z-b`N}s?g#F9iptl15LZ;a|$bZNKrpX1)AR1 zJk|;6NxF)FzF>Khrc$R~1D1FPvC-$X1^JL$pdsP6%)_fk_u#H$<_I_Jbgm}jhv3K+ zIN4qBit@~t(d;Smby%6Cu-K1+W;rq z?0SgB$wOIH7l#3hFxZMMkUiaESC+Yi*u?X!q9)LKw^pBH%6g=`-26LGkr<&QCxAX| zOEpbFZ{S?TBX1H;Sj|Dp0J`UP?jk-gIH)1;4K%pCpM$$WBq7hz+(^e6(P@*#BUwU7 zbCH+OXW1$t!niA{x|8z2iayd!8lA&{)yg&vTz z*j{8VbGXOKR8^-INu05e-9+jEQTF>>vw5nU(GjvvBLtJs*89t%5LrQ!y1}Rq0>q!u zKErkFWTZBB3)YTZYQLLNCbrZ`h?T0C^^Vu#wZ))W5$W;)8lx_(XekdvhniJr;sA-_ z8Pl9T)S$a(jIkc8MNEa3lOwUT| z6wv7%n+KxA;4WemWt_r}**>QJFthRt%t=kD zOO|ghO2yuXS#HlO&B`Vam0POL?xrETSrsTF=9>%Q2!2?C+;1~72d{M93dJ@q>@14o zP4m(pe&whr2;9o;^lIdN<=CMzvAeg-O)R-VePGz_R_&JR)Ks0w`Uv z57WdCnU|i8bwwWg55ur)(J>KPM?Nhv8Yzn*DDF8nU=$D2v<#s&t|VHcX2@wu3r1c` zP>i}_Z!-!V)L#@hp+TWVTkdRGLuIWP)qVF$w1GaI(v(Ts$#lh{;^iaU*OCaQn5Sw$ zA4G9y#Xjk>6}B`dYsVI}Q@Vm%Ijr*{UC_}sJ{o|-eX>dnNln8^Mg!su4^tCiIR@3y=Lp2yvh5M2jIHJ* zg<2_y*u=BT1f;~RA@5=CH3oT=zyuUoh~~6Gfu1iz&@t9fkAkaaq)UD9+yNmMh4{V9 zsJ|(JElaCF{}{YjT#|jDd%2j1SvkW1 zsvea^WzveF_G0P?*gr@m&22bOS75897Y;Of&5yc_n+G`e@Z!OYxAE@8NX%~)zD+M$ zse{=BsKU^0eu-m3l{3S+tXdq4A;+Xuif(*NHQgRIcwLS4IC+*Nf4OteasGzKVj_>Hp*3EE!aL8DXr|?f-Gb91M z387+!Gv*6P*!ZHoYfYm!b75bDwMGxf1Fe}+8DPZdm!vJu)~__~#(0}Y(2$wQ4iSQi z?1Kv9fg$BYQ;X#Hw0M#dG=k+JQ8Pul)-;x7N4zYznEBz~UTOrorx_v#IOSM}_k-Tc zP<86DS4OibyOfie^`dK~N0y?TCXL5AYPX%k`Rdq3P5s(zY&~u|Q!R-lJpni)u>&=y zD%2iCju^2)Qn5etnPvZ{h1MUWyN_Wbiw<9@FG`%qBz z$95Ga7R&i21ck@_fS71nE$0&L;6qW$oP~Q>fuP87)4~6ii~1Y(^)M1i48b+@Yb50! z$_b5I@S=$jlqa-WfvjcR>c9%d;^tx4Su`80tQ4UqAa52cZ+rr4mO%8lrMsD=bf3Py z=vXTith$yKw8i@zAGr09(T$0l3RHG^VggIXghvE@WYIkABNRs^!}>x-dRn=^$;{X17(r zy7eiR#oDAR!`pWKMTyUWj3}~;M`vO((S2rvoM-!Fa{L7c6_*IYzC|k5+qs&QuDne2 znVeD>Gy0-POBp<7*gC3U{fr4$&jG|?$8*22zhcJ)5erlln7Jtj+pl4?S+$Mif$F7K znb|GIA%?|}WhF~*sun*Z($Il`Lh_@WrSxpCNd5Maqs1#kRY-6XHZbU-Xlrmxg8aSL zKobXtc|w<^Y|gZT6OXm*;{Qlt6k)e%%nDML3Qkz$uA3l&?TeV#hh5L9-YlLew5zv^ zj9==b&~l&R)(@?7F719@z1<6{S(=WpArs(!`{Neul6Rl#Ui}8is1X9tx~g|`QWz0) zG6WeYKd>!v=)4IoygFs;DsYT@oTp{7jX_LLL_|}`h$~uZK|8AXG@1yT{+N(;u_4_Jk(y|n6^9jwt2J#2d#>l@9WL9U%K}=6U<3Y}`_@gpcUZ(ei=Soaq z!DgO~-EACT#TUceQ6XWCP8hm-0)YY^l(tPDBMKoHdSG}$rfu&87g@Q%^L#_lh54I= z5HgR;x{at2lI?TPu`h$6+Z8@sMCUgq5YQhFJjYuF&6tTxE3hN?b01U`3yq{5hhA_7 s3R+oT>lXy~+a~>`i2ht{Frb_`=${wz2ZfR~s}+-)fsupFVldqQ149CvH~;_u literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-ca.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-ca.mo new file mode 100644 index 0000000000000000000000000000000000000000..a9a0b0d641cf57d5b3a5193cb8219721734c037b GIT binary patch literal 16003 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 H#@YTq_-MH* literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-cs_CZ.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-cs_CZ.mo new file mode 100644 index 0000000000000000000000000000000000000000..cc45b395ac80e88592ec68db769655b1ff369f7c GIT binary patch literal 42662 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

KOnvj+cXK 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 Z4+`JPvaEr|02(sw5|PqC@hJ=n{tt>8Bn1Ef literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-da_DK.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-da_DK.mo new file mode 100644 index 0000000000000000000000000000000000000000..ef0b12517c192083117840813a341da838d840b5 GIT binary patch literal 15463 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 YwAtG-jr=M85Ud#Cc)5Rs2xITR045j2(f|Me literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-de_DE.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-de_DE.mo new file mode 100644 index 0000000000000000000000000000000000000000..59864464523f694efe7d97a036b2f73cef89d9b6 GIT binary patch literal 84176 zcmd4437B0~mA8KaVV>t1P6C-ARY@RBVXRatNs*~YRT2n8JXQBp)lJ>WJET%k5vLZ~ z2}iWW32{P2yH&6mv^5TZGt#2A0^&s5IG}WEtLXRs*4pRZTa{@0|DNyrKOc|gt#i&k z`|Q2;+H0@9_CDu6dieA=M*R2IJ)`JE_>BJHzb~KP;<5bs6^{3UKY@$kQ*bk!u_TJF zhR=rw!0*7h@W)X19ejc3I|r`ecp01pUk7KxPr~Ejzd_yiU+^S&%7syMD!d3D0~5Fm zPC%vq6g&}r2P*x4!OP&07ex_&Mq8lry9IW_&xiBRz=a$yx|p__W!2PC0 z(Sw&n(GeU!e5t2<5~@7U!Vkk4T~Ty6{2DwIJ^^+8H}Eug%u+AMh45^SCm>lyAA#q> zUqa={^t7f!~Cx|NaQ= zKzJ5B3SJ78|3;|#55pKf52_xwKqZQ#am{#v*%=kxF^SPj?T z8+Zp){qBS+=Y8S)&T#%qa0cfe3g@4JlG`7l@;!o1B6*((mCxz$WVi^boPB|VQ1z&X z>$gJP{~0K~co3@mk3gyzJq9J;xvMJMLn)8UWctKh#w)oXl>_nRAG%<;P*m!i)? z$>)%@F3;J4^P$@R%y8Ttj(ee=vl*%%)&gGvCC7I|)%&wh^?NMvNhmoy4G)6*tn+?& z6x8!)!TsQcP|sZsPk@`Co>zma$19=a{&v_8-wT!Q_fXG2y3enl4W%C!LFq#`+z3;6 z2)q{_0KW_mgx`kB|Hp74{4G>_%)Q+0{T3*BzX9qw?||3APeD{Gx@bK*3ttWohEKyo zp$e(;9|m>b=}_&{3zcpylsvA1>Q`e>{pLETeswEU`R;>~>x1w(_*1CzOdIfe90=7O z$3p4#La6-Dg{tpzsON8ll2-#_dZO1twbLU|a(z4;KM9ZE_-VKm?zO?~Uj-`t%K~2w zRqmUi>UDcK{}HHie-cU#pNCJwZ$Xv&ej4Kz_)VziRyKM5+o9U+RZ#8odN>=t1FAe< zfRe*^VGMr@C9h+z@O&FnR9+dj?KLpi2pMZM)7opncQMdyB0!k0g z8TR&A56_tvMP)dX^Y0z;d>(*%ar_Y62Ywr>UXR03_%kT^^>ZM(T?^H|MK}-sJ(Rur zI8=Z943r)}43+M2sOLQkr^7h!c6b)l@g-2tT?QqO)i9!*{qR@(Ik45s*Mo8?-72W^ z_Cuw=6222YCmc^JczO4Q`*QvWsPreoJ>kr7em0aoEr18Yi{NZ{8B{%<3zh#%q3Zt% z7{fO~$@#8u{fpuFt5E444g7bg@;(#zM|c^>(~Ew79aOnCLFIQ1JOCD<^lk#G-@Xby z0N(>upK>YKGk6fkH$k0$J3I}(561Az@L2eBh>4E&E_=IffhuPncECDRKDUPJ9}U;< zhAQ9Z!||8G@wcGl@;#{M{xI+9J_f%57d_X{?^$*350&3xQ2p?DsC<^d zS#TMY{I^1-+Xhw67eeL#hH(7WaQ&lD&;Mtr@_r`p%i;VZfses$T>mLldt6)d^y5(N z{9<@8d=s1j-vgEJ7vU!OwQxMA?s8oKRlc*K^1C>k-vm|uYoN-Thmu<*@H(h+zB2G; zsC;gPy6=PVaCjF~J3a^{pRYl+=XapW^;o$6Q>f=Z1=X&5HN2fqg|dSe!{gvKC_8i$ zl$<{VWuG4k=YI}2aJ(Nvl0I&MlE}Yo;5?{u&xfklVyJqbAC8y8MI5hylEVbl{V#(@!`H*3;O$V)`xhv?_C9V*`)@KE@oaQ$^q_q`RW{&zr?=N_nZ z4?)%Ehfw8y5-Q(k;9U4DJPyv@!CVAh3f}>1@GN-5^Squbpyav%>Uk;DecPeR^*X40 z-vZTdZiPz!*}#XO%JBp|0sa&!{hrTvxgQ8G;rK|X^8--&at&0yo(E5dH^3Lek3p5= zoELb#dZFaB0jgcDg3_ZrRJ*FfKT#+!eH()WjA=@b>9czo8iZx%CY)|KCc;oO8-r$^N+(*;FD1G+V^^w z>j_Zxo(Wa1HBk4ZQ2JJdYS$Z}+T#r{hIc^K_iOM}_!w0E_I#1ocR#3nj)XCs5ssHa zJ%1fkI}AeAZ!B;E9>(#@q4fDJa5nrnl)n8NJP|$xRj>VMEVcJxP|xdtx_=2&`qfb7 zyaq0SMX3AU2BlZ;flB`&sQP{iD*eMy?e-(6_V^`~+>d;Tm-`H;=Prgy*9X=AuL|eO z@C=S$0adQMpxWzm;rOf2>H{VBr^5B=FZFsK3?-j=@NRe}RJnc*RsLsT8SeEm_tzS* zm*d-@p7#qV`}K!#y#L?1z8(Yj;`~KW(->6}%Uo1dn~W z_uq4%^4khk-U>V!PC(`RX1F)J6-tjj0FQ*9fYO5pq3-)WRJxx)mE-47?fg4>iJ#pK)3-O1P7t?r2-FzFAB#uL0x|rJPUpV9!a@=2-Uv7dyVINiF;AIq+jJhChR|;Q_Bhr{I}T#}zmS z-VB$)Ps12ar}Aq5Sy1I(0#(kH;W!7+=C}&=y!XRS_^(iL?dfm8C+7IzH!_C6>*3Ly ze+DYw18(+u#&842m%}=I9~^}zVk}<`#S!?;}9=_&*Au+ z@F=+Wt=`_3!Q~v+q3r5C@KE?~fltA1j-Q3n*RET9d|Cnb;dnLF`2nbQ-VBd`Bk&OT zJU9kl0hRu@Q04tIR6lva+x)(lLX8uzg{s%>Q2M^`?Vj%Zz)PX>Spk**IyfD>LHI7H>(k#w3)zw{zZX7_tKfE+zzy)ba3fs! zL1YbI4yCWZfFFf>e26{|KL&4vr+wI;dk0*^@%>Qs`#nr3e|(4c^A~@_uYVG5=K9Z| zGvJ=^LbwOK6sp|a z@I<%?&V+TS=iD5450qVbEFAyW$9x<-{^M@v=R>vI>)>MeE+~0^3!VV?{DhbP6sUSH zgZsg)@G@A3hrv%n_2+Lu)%V-*Joqd;5T0|Vm#-V@co_aStU>8{@h)$#*T9Q8ej^-$ z55ueBd7pGSyb*SA{9bsnu0z%LH*ga?=AYfJm7(hK78t`Xz_Z~`!|_RXd%BCE`pYQX z0&jpP!6%{0wf8;#oVjo_$1C7Ecq=>u{u-VIPrldV*z4iB9KRVJ1HTUQ@JV<-Tz?;W zNPC>{DepJW{j}@J3!(bS8z4oD?uEy~ZU5qW@*231DwRRHSmy~J`XCw zqd9&j)ctos-S;q5`F{&lzC%Cf=~lx>I39vW!3#d`o zxE1!o&%u4*!8GFD@Mx%VoCMV$W<%w(5bAl$pwjojec=^>3EYe0tx(UYK$ZI?Q1`tW zo&f&=4#GR(EO^`l-maHGmFEUH7d`}){tr-kam<6RS1X{Nzaj7%sQgp7FMKYPJa)i? z;D?~n-wjp2&q9^+fpGq7;rt`;6wW^imCv7`+HIdN`SB@G`OSsG^ODEJD@ujZn|M1g72e>UndZ?pp>??Pygvf5_L|PRxh% zbsnlb+o7KKEhu^ZDRBDNef-=X9>n?Mq2w|bo(h-17+woipBKVT_zHL+yc??AUxbp! zH{kK`yHNT3CzL+!^9|4c1gP}$pxWUqD7{$&CBJ+)ei4+s-Ue60_dxaUU&9%2zlXd$ zXF%2GTqwC*1pDA-co_U3RJrei`@;vI+3UdHK;?J%H~s#_Q0Xp*lHb*E7~Tl4g1>^V zfvX>OyYf9K`|+Pp`g6d)dVUL`?7@0?Fx&(Wg~M)5zo7e&5XR5VPU@8Bp!{eJJ_=7%JcC z-}Q1F1kdL9ICvaf2V&5VRxEAVq9!fu+2i0%hAFkgCRsL_lW8i;4 z<-h0mT}}r>8CyFA9p#ehtK19GdvJ}3!Vah2{FM+F}>ibHlcDfmA{CyWZ2i^^(Ur$5HXYVIG-;?2MIbH$JfZu^?uf2ZgdVTa~ zWl+!WgO|dqq4e!-Q1bf-JQ4mR9Pjy4pSLf8Cvg4_D7iccRqpsnZ?6uh@}C3M9+$$4 z;Fa)Fcr%ng_7U<;X&{*DE;_3RJ;EPo&=BjrR&RCQ0=-ta8uybP|r^SN8#a= zvkd3M7yru3^^vEYcR|VJ({MlddH5yxHK=^v`fD%$tx$6MFjV?G!})u|`7c71_v`R5 z_yeeZ{TrzC2mQwLI|3fS@$oQ*v!T+jfXe?$cnBPXl0!A{dMJ6mI`BRg12JdS2x}{rUvd^Iiva{+&?iKLFJ}k3iXjKS1f>5&z}o zxioMkJdg8z@L+f&lsw-Ycq^0~J_Mx?{}hhzgOc-3sOLTib>BCk+V}fV_dOBLKMCh@ z{A;Lko$y=lSC>HbyQ|<*xE-n-_dq@GL8$!y6{?<(LbbzFP|y1vlzjL2otI~SsQeFu zx5Klcu0I~GKM9rJFQM}J9aKKk|J(b+!BFSVgG#py>iQa}`fh@A;I-lU-$CX78mRK# z9C&Lu|KY$-z#F-KADjtS{ND553e`VqQ2O**I2*njD⋙Ecj43{vDKDqd)lldqc_f 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 P5?K@`n*5q%spkIyo@P1C literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-en_GB.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-en_GB.mo new file mode 100644 index 0000000000000000000000000000000000000000..71f3c696a2fe58eb01975931fdd96ca227170219 GIT binary patch literal 14753 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 V^J#46)7byXr?J=l#>H2y{{}1(!07-0 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-es_ES.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-es_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..01bb5b2babb4de845a35d22f0c075cf7e5e9e5eb GIT binary patch literal 35696 zcmchf378yLb??hqm>}=FFt#b#9(iO*W629PKh({7k&0Ps_q$$ zgdzFDhxPAUb?YwYo_n@?&-~qKOWqvtzo$MW2+jpJo}y9^R6+y8W&EsCek%A%@cH2D zz~jMx1oi%hpuRt8c@Xq~tH2Au8^LqHCfE!9I(Q!VA@D-*tKdfP2~hQJ;3KtjGpKsA z;5P8h;I-iY1=Y@ZeB1|a0`SD$SR>7;lL!jvJ|G<;Me*sSfk71B!f+vG| z-vd4kTn8QpKF61z>v0QsEYC-Lc?_h>;Q8Q5;LAYucej847oght68J0N-+)WOZ-ScN zKY>pNk6G#ZJswoO(|!3|Q0sXS_;m0R|NIJ2?Of~2n?3II&-a3AXWT!Z_LzYh&#!@M z_fG%()&BW!`0`u9vv~izpxU_~6umwM>iaK%=YwAXPX&Jfs@_vC34#;AlR(k&nV{x* zA*lCPflI;X`to*ljmNiv`tH4;`1wPz;^L@Dis-FWO zTO_yxJRW=}cmnvpKz;upxD@;XcsuwoC_3(4_%vGEnon3e>#Td)x-9zg?i}-303U7lNmN6;SQo28thk z8x%d>59+%Qf@<%hpy==!@MQ2|Q1u=GHIDCr;-jB{n(vwG-1ohp-d_r;o#%iW=K!ej z4Egsrg6i*AL5*+Rm+PSVnf2w{K*`~kgZln=!ENBXK*{6pgIbppFLV8#1*+fBV=t)o z)`F_{Z17a@2LJp>uT^Bl&|yU zy`b8CKB#$?!2o$b4Qf0U7F+Kdpvnh8)w{#vt3dVt22kVvZBX^z>C5j1MYs2ZE5MI| zr-A>u0>^_|$JL+xd${4$UI{`q=e9tQVPf446m0yV!6fa>o-U;Y%Rar_0Se!mK8 zp5O5JT~Pf#?s3W0?)#HLeYXr0KU@Tgj#q)2=e3~v+XQO-L;n33sQq*ksQoqz(sXb) zD8Bv+P;%qjpy(7l$JJW_>iGb;27Cdi{qkCmzXM7R-vcfK?*}!XzXT=czY0DD{2{1u z{sa^qe&)-^^}G2T59+(K!Ex|>Q2X$upz6N^)V%%>RJ}u>_~kzT{?nkw@kRgqZ$b6< z7$|!E3uyg<+N#H0%nJ$+rSVkgBsr}K=ILQLG|+%kN*=qm-72SjpqxXBFDp2KqQ1spmYJOEv{bas;8>n_)2A&VT&cFX7Q1kczD0=-VsD1xupy>S# z|Nfsr&F{yc=<}54x_$C2Q2p!$G4X>4H2Q+-@3o-z)0@Ec;O9Zn=j4GPh`|d%?Vr2A z5d0vh^?Mk6BltZ~`{zzR);!+^N*=r$6y5FzMTgJ&@>l))?||axAA)Bb69g+axb?Vx zqigSGa4qjMP~&+Qcmen!a5?z5;HBWtK#hORAUXt$K}2G3HyDC{4z2(n1!0Nc)J^XB zPEd5LgBtHEK=H#Heff_;t>;HT`9qI^w^IJmX2t|gZE@rKI`~w|CvJ87?Q~H5ung4m z5ENZjfSSkU{{3d~Hp)A}+^(vf9y6_Zz-tuPX(7Su4jND<@2|@ z`P=}C-eaKVRRS*pZw19KZvnO6?g3SA4pe(z0>{CxflI*ah8#bw2Q{8yQ1vFjr-LQK~0E$ok(7*qPFMkG9|6d11{~v*(%kjgmzh{9O_a&glcQyDea5JcW zSM6~1t^_rn=Ypd17EtZ%0PEm5*aLnUjG)uwp!)mO5l4?YsQvI}Q1t&WsCj%GR6Bp} z-+u!XUmSCz`|dnY?XCwQeJ}-{3f>Ef&YuRa1|J1a059C-_;xM$IOS3BS>W)f^JA;v z4CPzFrQjo=`ul;$lgC`UtH6tSKH|&!!8MfM4u;_8eEBgDmJH6>?c_)ayo~al;BxQ- zAWIzlH8=oXxW}~{gW6B82VwQ#Bj6yoWUrIo+rYO|9tXb<2G2uhL)U)>HUBj?JAd&8 z@GQzx;2GdcK=uD7@N)38pxXZ_sQ%agD(!$T2Q}_bfTF|F=ezYk6IA;bfoFox29F1a zK&}7tK&{`4e0kDi3W^_RL9N4!L9NSOpyc)^L0BUA5~y~TzreM#5)>b-1vQT6fa-rE zDE`|6s{V^W)tmC=TS4(*8&tiQ_~&>E0 zp!)rmFMrpU{}mLSp8(a)$uD&MEd%xaMPM(u3e-HtK-HT7MVAy*yDtVsmzRSY*PA^4 zu7Cd?P~ZKDFF)wZbKqK@e;(`ye+KINt8a1bZveI5M?kH|K5zw?f-AwdfH#642SvZr zUgU5YcpByNJ+1>q$Bp1K!4Xj7sd#LGr%=8f)I5J3)VvOY6W~3d*5#DQwSNvMeG-Cd zcLS(#?*zraH~aFf;BAy&463~+K+WSR2uqcp28zxngX;e*Q1reS)c8g~^?MVjeoCO$ zD+Tr4%R$w9Ehzqe6DT^o2h{xE2c87Zf$Hx|puYPWsP_IIyaN0u|NerKoBt)C>R;<| zBdC6cK&{7aP~%NO^>c^EH+uX7j~@or&ga3?!LNY720j9cU&>{-pPQi8|3OgW`w^&d z{|wYPPl%mdUj{CryaLqst3c7`8c_WVdK?Bd-rbgBthUzWi2D>v#}6 z5xgHf4*V3Tem>{Re+7!49`?__5ALG;Ls0bGGU>+qd{F(wzMOj8530SF`tqwl@%L}| z=kElcM)}>KzJDM167T^~^XQ*)blwDtj(fmfa1y){{0&g^`V4qJ_&HyG6jZz42af}P ztmnrN_wnUp_qq2=LA^f>{1xySzI*|=l=4dd{0dO>xXzb1fa3QdQ0qAkik`0n)!so+ z<9|1JA$T9Cc|QzlT#tg9@4x!;zj<6T?cSdNs=qTpeRmFcF1Q-hJhy`SehSq3H9(F3 z4p8;)^5wUIODVq#RC|By%OCLNkAoWTXF!eX3!vJ0$iM$PkKYEhA07qO@8h8A9b0kz zp8%?#b3i@s0o7ig$7g%I-oM`jhP>Yis=Ye64mx^~V2PoaDvsQOoc z`o14L5!?t$AMEnwSAi!}elw_ce;-tPhd}Lv`+fN#kADY>f4&2%{U3mrfRBSGffqGg z`F@&-`jcsHo_{{;Mf@Ig@Xk22SP4b=E&K+)q>U@!OvQ0;#ZRQ=C@XMOv5-Uq-lz&kp=@{h-G2QSdbI z)1caW7?fW47I+@`@8BBn+?E^PHc<22>&q_!Rlf@A`&Waa#~VS7>+PV%@m_Efcps>G zKLtgP<7QmFv%!$^3Q+YogKB3dsBzxppT7uHe^a37^D_Vb*Fmk@TRi>`a2e%y`u7il zs{ct)^ZFuqJ@^=?epbyoKl(~g?TmwZJ_V{?1Ka|>A3Pm=0%VDUllD7(@=|a$BPJw62LyN5kK2A)khIN<2N3|vNW6{va}!RLU_1Gk`m?glTR{I?h(7l6mT z*!lGoH z?&h%*6dz20;?D*syZWV|=KFSVIrspm@q8Urd*1^mz#oB2z!$v2wKEQ$N4W;7-s?c| z&6|Ar9iYbf2jH>bAA{=eUho|7Fa7&RLG}9sQ1d(Ul}^5_0!9BpQ2XZjpyb^osPVPH z$G}&C>bLnSSMPREyf%k&y@8VY@6QR>qQ2qS)E+>~xdW~D}tH9%U zJ^^YTRZ!!b0Y%5xf#-w21**Ldf){{)1Bx#H25P+Lyw>T9UQl#c1#0}4g5s+IFbI3o zdR)uGq!vbDEuIZ$lUg~QU5U3+D~CbPx{I>)tv2r}Nr`%K&t(^7;Y8X9n^SQ(I1|^J z;lSi%Bc62IdMmf;bQm?``7hLI7FDT{g*~o?YAf^K)LPZ?xWV_$**LC+Yi$OX zt+Rd(tHogJaf2x}qse$dmHJd#i$mAk!dGd=bY}9mVW*j+S6uLRCaNUmaLd^6P*_SU zG*U{-3rFGVWR=!r*z3lUtqv>DD{kAn$%Q*k5i3%54EdB<Geqmek*$(U#}x!0q^E(fg=nKT{Z=#@US!j8Srcg#Yha&GrtDC)#Q(KQ;Y1^? zhN{NcOaMZ%i3zAOm9RC%=QgL*XsVHiSl4&C{5XL8u3gL&-Mi?1{!p8O+_=@nhCO?cOt1EO_+v_@s{C%=iS2RO=LB4 zv5_E7f__AFB`!6o)Kd-{>1@{hXq}$$ASxjgk=E9^ggjEMRn=M}VZ~!dsl#mZN&{#a zCwVGKZQA&oX@-mu3eMIL3rtJWSF>PaN&D;?932aH?-~jQV33B!88sSFTbvQWbNU_` z5jT>O+m{{fRf6<<<>ahaZ??qaVg=eZ(u}v=BG*tWX=56BSxst;vLS`nci8vStO`rl zh;MBrMp<@7zVI4#t6qjqSul`Otf%Yu2*N(8xp#568P~y zBN&*NoQgD#i29XiJgP>*Y+5kR8zB`9EBvm68>6;i(u}K;dTt-pX^x!$BV~S}`@&$r z2nG+2M%9#-Acv{?%&Th{1}$v#5a(4jC~`5P(P{ZS8@Q`0i0$x;n)o{s)zLKC z?1L)nqbZ1z2^(k%ur^tV;I=7#QmLHsF0Mq4mf>X5s;ZnEhylb8|2C=`&ibjAsJuR{ zBr|leKFt_`4R}l3I1o>!GaBl8RLLxK;74mFZu(6YtZzgIk_v#?kWGbK*$t3&XDR02 zvADtGw9)2us}?7$5QE90O2kN7mB~n}x4zYwru}eJl%*=5?2}-_inNq8O4qRC$`@~) zNntg@$`$rn)X9`z$`q-l*GwTL+ZrMM!H3aX^(w8?Nr1Z&JD&8f82 zM3Xh6{b?<&w)2Xte~4m53~FDMS`FKRm2}cpKdu29NIees#Er6kw&9IJ;B1gsLAne~ zupN26E3Ts{l2Wi?Dk}3&T$(mXxxJRoR^swxJRW5<;-8~Nk)m`jmMg=M6+~YHZR#qR zRv1tBhslKLms!ypVVENJ8%bFT8BySOalYNPT{T^|$B{8KhFI3WEair&20IKU%2#tk z1hiK0S2$}GL3oz zW-Z4kQ_*lDi7SY8wON};8dc$>2E)Ir!;Nt@Eg|I)ocTI=(?m6Dnq8^Yu*N!)?-#xlI+zsLQezYmUYEQ%6+l$BB`J|jyS*k|LWTLQlC@sN*JJ=EZ z;g$w!3!%9(*dT$jq1A|1;JB2N$~6&`XxAkjHXMl2ra2LUjqya(sx-r1D9uK|cw-S| zS+E3X%#FyDS;QbeYSoBf@5UsHu!qX}fmX$ULN~GWxGV6$#(l{+n=J`8rcx}>DgV*6 zKQ=-cp3l}QDMk3&)ab+6V?qEqDl=Y}cE?U2KSK=zL0@}G+bK50l zY;&BvS}=%6WSazox3;9t66mtI1<|8m5Xpq06AWT-NRkZlVOrM@=kt}zYjzS~^QFQA z^bdwKLaUgw@4QloqVwO5(@)Gq9Ftou|0WA_i58CR+Uc6h@|x1I5gubB#?He`gHbVa z;p=!m)>oE5@33y#lo>}zIJS^Ug*eI*>Z9wh4P38A7c=By4H<#LFj&u?ayXpSTGG~o zxeW{_Vr}LkMPiV~tC$2516>>Xw~kw&oArl^s|#b(=N+jr~6{$NwGFX0~gd}o6$8i zuo)E+)!LwW_TeyYX}ATmws*(r~vkl`!-s zWB<}Eshlc3Vmi!9;HJwjQ*N8t4=4v*fqN@;ZLEl_9+wizOwzwZge5iUHg+^h!L~p>$}&|+XPFbMzS`ERI$v?= z&8__7X_hr2?4Pa9_Q}vR)3NsE#V~6tla^8BYjrpdQKWsk?FA;7xX}~~D`9G)+3HFU zHA7^GWI?EinfX_?^$Ckf!S!5z5ljEebkAZi#$R9nM9Pjff~e9CwqYns^K6Ui7`ofo zfxvcWac_?fMAK8OA5U2SR%yDeAMGgEo-~qiST>k%u5D+-NAt{wkvL_!*de(JMF9rB z+Pp_C_FgmC-fm2`4_J>wQ5qIsFJh1cLyp#1n@;XhmW@8d_N|%d;V0e@;%O+(@Z{5A zC?QCwD#Q%=tnC znoV3mNLGTOw1r}jlo@L6kFm*Hjmcm*!dTG5m zmVy0ADGi1byzEI9oFB+E$%@tCrkEfj)GiDy))4i`TLK3B%52v-TZ8El1U}r{uv%2C z*O>@kP>&yJrJT;tLpLi7BXczpnWFOV_`%p6#Fgy0Qw?vj;0w4%|$;7A$!A?c1kg457YHtVRZ3R1Gl$m_+ z9dSLX@UN7p7K4g0Hkn?`nq7ko)>o9aMAdpWB@a%eZE!NYsGoi{^z$Yn5BBWl816vk z^Uz7m}DQWdyo(O82`$y)3NMr&_p9 z3I3f6Hq4)ii)AeOuC~S^ni0$E)JL}))vDpvAhf+o*^xHzJ97VqJ{!1-8?eIAwGh>c z8>4CM04vC1V*hEU7h97TvqWBY$as>cjE&Z7;Ytc3f~d1H*ttE}iG>~P#Q2*^3Fhp? ziVAiTFc0DJw2=inIb=bO?ZgM3jmJ5Lh%LO^gEo>aJc-mLv|Az2E;CB8T?||zs?yzZ zJBX)=)tz?JLl;a;4rq1QiQZmDE$z%b=G;!r7au7Yj6~Be>NEl;wkXyjMmrMK3F3%V zy@@sA*pT{ht(LWMNW||W7>AM+Po=hEFzf&V~oXZ|H4JFV=*ap)q8iQCEi5@OCc_=FKn2^#Snd?DSEf0Y*Q>;Yq1tPvzE=C7+V)G9F+_j@E^2f3K> zuyjHN%DFdtFeN4C#Zy{T=Rg=Ay1?fs6VZOIrF_vUC*eRNlC&SyK~KJ1qb}Osy}(9p zh4BOTvL94D2s-;HNaqP+K?}pkrP$!hQ9_vNBagLabcV?>8n=<&gq5f{#i_|H!-G3^ z-;zh_?U|Npt#S{;Sio&5-A%{^~ zj0kVoFU7A|kr?X9XU|zvrqgHz4L+^liu)Djx_qU*vXJelqF(T2ZnBKRFjDQKgoxX# zLu5;LKnu-|6cTGHKw0P{$RN+uM-Y9X5XkPG7s#%#IZhjsvR_=01uf5F-gHL6xe60% zB;in0LvfE1@uiGmf?Q+TD2MUf72Iar(B^QUn8U21yOJuSv)D&`NHCEQw0qQ+A~2RI z=n;&zu@tLem+KXbMF|@O*q3wN;dwa5#{d^~5jbko;Au^>42=KaiMlSs2q1qWAb@t(Kkh%;kqEw<2yBv6kUh{FqdvI}sO%_i*lPPXarcD1}5+@ZbTZWCNqKarov z?(DNB7D(I0p8cmILOQx|;hETnfi!qdmb6`aK&m~lQ(xOOI8k)QIoZA@LYF_Wsr zd6mU0)LbXJVehwYw9n8G$djC~3e<`!Zr_JH>ARr1m-1Q5ZdbV2mzNJ}eqKYq?l0Mt zPRD$NzeK#Ojnh)G!Rq`9OR?Q4a9Ggjl!#(l%uM64x@`L9ROfw$At-~mc;7~Tx>C$Z zeFb4|3R4W>$X)Dy<3GsJMRBY~`-Y`3|C-RQor2`iKZ$lvSTmH|X}F?wFq_z!ue5ti zdh1|Tt8L=D`xqN$g}*p7E35jzKS1IpZnPr70)cHq#h zE}C&v?F+|rtZiF}HW2VFI{?LrQ@mWmoFL{andr_pbaE`ktcD7G{>BM!{Rb#=MqYMONd^+ExZWfCU+8uc^6||T2srS^|anpUBpX1rcP4b9wxpxKGY?$^; zC-IHM+^Nn(Q-hj`RpCfU1GL}pp#r_dJ6%;$DYqzP#O6UTh$hRqOOabts;hdy1~+uIgg-wTjrd$4ATv+ZHmK-}O{? z4>-AOhhn4!tH%eashX5?$+46hIk=o-Fm4o#5q!i3w@Xqg)HvvH5&N-pJW_RhB*o9h zT8(i9J|Y|=Hv_-hb&>>?R0@KFEJ1E&Xl?As=a%uPG|e1Kaqmj&YPBjFOLlj;+G((yb6WLDqBL=+-l@*P z0Oz_W$fEVb8@DA{I5{!9uAB5h1o?1bmmRI(ZMZoXda57^E>A5StR}2VoaGPwVQ^j? zwIk#CrI4T|Bi-3*R@yRi^R?Mso90#m%iD0qS=7I#$XRX~neE7lED z#PG=tROcFt)RaEJFI60DFE?L##<6s;SB{JuAU&$20Nf}Sf4Fqy?$7X&H5Sc_C+XWj@3h~rr1UZ{| zb(={#D|D&3%Ctfwpv;YB{dtzRt(@nS%lAIc>7<aCim+5P zRDXpwSMa^yHH<1f=mb1EN(hq!VCy6RS~RPF~sE{2)xw z5m#eBLV0&fp5RE=c)LdHeB}9d1LKADV4?r65u=+VZ1W*Y?durFjd+1*Hg33>t>6t& zL?=^BeU#jcJ=vhF4Ht&EtiuWsPi7T5Ldmc{?0o-KlPsoWYznj$Esl zq#Xt1k$>5{KKyT-xA2T$i5UhH-PQX8+1|xym((tef{X(oR1eF*`5Tvt*=%fZH!t*4 zHCwVe42+Bfng}Zt)#ugZ%Bfb;!pQC`lY~LbD@ti5c_x+}wVSM^_ZRsY(nSFPoLONX}(53WHK*m-KWu5azq z4JZZpV9gj#UO%S){^q3|GbFWZ%&5Y-zHax}rZrc0>Tv|0O~j2ggB;ZB@^625^?1@; zN^~BlaLpz-AnOlntUtxl~BfPkQ!IKTQtD5IBduhV6gtW-!Y0%*JUg8B0Gb37-v#d@EOSv za}Vg6r^S6^;=k?Cr@t Pm%J9RlQ`&{*JBlhUL;~BX1$uybQ zKCHRY+`Z*w(uj$85w9Spoe9tBMKV^$Ekadp@#9l|bW1)v1B$tB6iQ zOiy)bFduJTw-`A#x_p&JIsuz-5UA{!B<))FBe&(}ezX>R_plGmu)`T|J_0&(gA#`w zrCv^J>eso|k{Tx)We;mIuUbrwZ}J7QWeMjV(Dg@b7MJxkzZu)Qkyt|3e-=mDnF>Tw zki}BZcU+RyIa=q`+L4KEWevGqH4~NQ4y8=0FO*}6@56tbFS7I4byz|v*KnbAFBkf- zN-&Y~Cx`{!BO)f5C%-fb1Sy$URUA0Jo;%3)zO^-XsL%T%6`KjK_)^veF`2MBcaZ+( z4%Ts2HFVwKV6#)97=#$5FXR?yR1@37Dyj%MEiSLVbQe)XQn%K2j0KzbKwY9j@d4K= zOUFT&BoEJVz937L!6Tvw!KMpFswUX03I0@2hcavsjVk~>`3G+D!$Eob-$ zQLYLjMX(R;8|J|^$A~#{#kb9xa^%M}OE8yO(nOdUaneM*%*fn)M|rIJb-Pbpp)Yi# zCo?O-DTTThy%7YfZ7;a`%*mW$jW=bdpl(|n*rj1RqFesqV1YaRT!)2Eq#dhpj$cKZ zNyllECQa}cYXG%4ltTwfREu<3$`qSKe+ODM^~8d?o9kY#qg%Adab~L;wK+s`+r}6J zqH(B(a+XC8lT{M8d|DGC6|1pfq6+yU(8zb1tAhP?T@Z)fqMIYE2<`ipNR)e;gvX4v_JAKSutR?yG;#OMFmH@i*!vK2LU-RiW1YSDI=PxG;*acMxTvHUG= zbHRREvF6-8_!XShsu`?Il1KbV-EM29 zt2G{lLZ%{2Id|%ob4_k8giaGheVo)%*VfY+6s3xei)mqDRYy$ET+D`x3UC74>V%n3 z5>gPb`01=>A_>Oj>XbA5}!a-53mDa32cMumb3OODpYbYG>Nkjy&*xam{*Xu5>`1Zu;|cLx*9XQ_Xe{ZD9@EXnn$=WZ zmF-81x+>LN+lEew^WwSS?>MPQbXAwAI6R+wKxsx?zJSw6199m`jN8(VoMcs+AY2R& zuE%Xv`-ohQgQ^nNX%=i)SdAeW%ObzXI3znoDHpOjAenT8ZHbbWiDkaygxGc5;%83#h}p9TCYqBu=eYlAVr-O`4ld^#qVMW#qC{ zNkvkCoG<;QmZlhycfVvRQq0{~fBx^cvaA5NP5pxjtQ#~7_LpR3WcC3p33a)gmSF2k z(wHdbrT@}v3tnIf)>DZ-D6i}!xQSl`_U&K0E}Ac^yBR!pP{*%y2PvAY!^x2?onNE+$^bT{`p;S0<(L zB$&xYLVQ|&EWKboF-7^A-3dv$(?S(ejNnRZb~?F>&i*$+CxQp z5-AhheWn5UnZp$b>(4<@BT7sPcalPkv0UlOP~vnkotL7t2VUXJQd-+52SS4&j=>C^ zKE~3;timnfMMfZWQpR4e6`4DCPv+A(LM1@CTd<3yEs?b(xw64h2E4+uw#|!Ydo1+k zp|qDPjK%3D=41Iu45H$^e!Ta2eVy>EZAzrXw zYuNLt{saaNfNdy?rShBMDEh#2Gw&Szj|;Lb@@*8g#F9aq`7!4RE0;$sd9qY zWmdI|ysBV8-cm5^6RPmpY#VrA)zqNV5>j85O9dTCm|$WH6LeMqdO+lui zUg^;G6V{4LwPM#|W$D_Fg}I=u#I@7K^XkwN)m&o=`66X22jqNm0f8* z3gK%-m=_(zRrTy5g*-LuNVY6dk$KB9lGa;_ zL@ltSP@4;DvTWOZo)#y=q&1lb(If*MbLfz$jnWHS{aFNAD?lJ0XLfgSSpr3Dv4ePjx{~s}< zD>u>A&o7qK1v^+y7b?ERl~E{ncvjcpMi^2PQ*ZtsQ{XPck#n?2zculb=V$3y2$@K} z{$d$g_BPMaQt&g(v$X7u%hR%-H(R2q99jiCF&enwANK3c|>6kRTx z=k5)49YQX%0^X7dI|z=VGTlmXg(nYwOFJSab$cmys(s)J4V5>N?~5mEqtTh^U8!9> zPCV3nXUIKA_;c2%z_j<`6+CiTT~aFOka0}c{6Or8^^T?z{b8EE?em@d9O5wE?r>&4 z^PGG`{~yF7-qCf1>;-(qJ%=kfy+MVdca;* zKA5&zUWb}3T$$X{kX=LcfxvDr{dkgE2p!LkGs;DB!xS|d)$x&?y+iSxe8!C!=F?+Z z$ptf5FI`&Ir7&r0{0rO*#QX#{2Kx)n^l>+&sasQ0#ae7OxRnPPCkx&aLkV-+E00er zMyVmAp!u65-f7XAjCO}N4im{DF%r0HrYC3 z+_5nE)^Qu{MB1*bx~j4pO_54>E@o)vAuSTl<_@vi<|}y<8F_kS+q1Ax;Zf1UsFaHf z{`MNN1>U$Ax6enDG?E($BPw!hOKp)Zxs#F`5(gZ>B@zaNV0_E~7V4}CADI)>7k={K z5O;JmEgf5#CkzA20ku;dI5}_1I$EqtBw$pTBrKUb)kLpxyOuA=TWdK_%&A1T^~qsl zdKdwirANqGYqPQobJl8v4#^oLqBeIAF>q{3{oxCjs#Xg(=x+(l-8;_I+u@D`nxY1* zQl6~F9l4l4&BAM!rzVOjShq*k4jP$5SqO_Ki&!u&KP*XYz|zx*@R6&AeSxn_Dt|*J zzCE4^n`d}^BWUh+s+_e0%I%nwifZel9J7SL&4ve*Sn)3Vr{$tKZTwdL_iY%r^C?i2RHM?ucp zbrB!l=vFE;Zc@?id$0t!Hyx!7iCRR@Ejm44wUCe2tyom_1A$VO&!!u&mgxq;=$;CL z+!mO7KMdTR+h%&hCAZ}*FuZYPxV6I~zl}6DpV!9RN3p&PkonL~e>=fvuer^l{zet5 zsB+gjPh~4FlFQcRBPa-J9^gps?Mi&*=V~x{9@N*#Ek$&Zb1(}BZedQ_z@n$+E(!(@ zTO^VEUP<_b7Ol+sqdz)lIfS z?itIAr;PM-mwW8IITqtf71_N*`7xFw$7S)uMgC&XLa)nz=~$s6Rq{0$hl@|m4-PUP zC9+wFsUSF<+l;Dkl+N%i&}GpB%|hvKW_lD~?o!9bX)32J*bm zsha6ZigV>U?TUa}s)d!6E~gY?7wlDxRz8AT){Y=@+orR$1B$`75XsP&Km10pR99nk zm!W8nj)^KF%*($OOO;V2rxGg4bvl zPV(z3T*4^vcV?+z(Kc(T!_bz8=T3rLj9jzmj=;HrT5OeokOYgC_63ul> z*X0quP~5en+!oo?PJFX_Fzz&Kx54?c<4Bk&VkrDMA~p_n+yxmEG^Eui{?uKa=g789 z2c?~F6raRMU_km8WzL_bntxJ%-l{89~-iB&2=utS>SCBx$HgzB2DM1J?<{5LzCO|vw> zCTDj#=e4oLP6WDQxAI4f>UL|qBeh%t0Dr+vCkUK{b}rM{4k}_JPP*C0jL1Y!Vf?WM zPP^-NoZKx-V=+Q>JZV-%H@6o!XRcXt3^5uxjBgdUeO!K@hSfDBcRjcmllQW_2UWzF zy}7}k8~sm?h`UcdZt8Omk3cFDshpr-+vMI~*K~UPSUdNfE4pQ;k8;MyqY|qRpRvL* zu)pm`Od~BNN0a%5Y5p4C;;UB-X$-9*DJ(wi$*@lB_(b&Xn%&_;TtNBN#>zUhR-_{r z_n6G6l`hTYHd2WYIJ-)!Vi5yPf54CYz9*ZYNEFbgC$cN!1DrnE8K24T&cSFwNI87P zO+(`ur|*gjgZzmflP+Gcbq8or?HaQ?8g&sJyRGLhcY2dl8Etl%&u&##^6(P|xH8&J zlR9%|UQVMfx>{;wC#%spBx59<7*SnnW01!@`GKR+NonK{b}D?b!)%JWYzud@bYbFO zUx-k!Tt;>sT-e!#F*pDD!_1aiXo-yy+s;_jRPwNavjV1c6%_Gh(HpI%=2YZ3Itfks z?EECh-Lg$crI8q1YzV7yD>~d*uozZ##U(t7{?6)Auxdg3Jn=dKHKIS^ikN2)8D}q~ zLa{?Q)wFXwn8!zR4l{0?E9SGn31GM!NNgAd2QUfT1r(w;#l;ixJtQbzxs`-)W*Re0 zS$czmeY{T7^BL=!_odlA`V}qBtx5--7^alOac+=wM*ZRL9M!@Na$&)T=l0QuD zV)$Iz8P*ZCE`n(F@uFHRgwd4)8UF603)B%};~iEHy~zZvavG(>bXyOq=SI7eIWxM( z%^9xcxk!RbtLuud1noWUexM>h)=C};98C(J!`a?;^5;0gqSD@er!({JX^!&{Ba6Dg z&9ckmiWssrq66HwhRIl9Y63qx5D^wGwWz2 zm`MABDVg-@Qc*Z1Iu_DwxnpKFK1QYVKSItONb4Ky40F+m%QO&Ci@UAruuD=J~SdKv?XPw#MbHgmMY;$jbITXnt<{8Mv&@nzIK4>0CA?@Bm zsIt>^auUPw3zIc5%j74phhblTNrH49@dkeiJ5S5Bja`^)U9n5f{On{BPA`mF6taov zDt{yyA+}fz`KL0v@+vY|*ffPNq48LEnD9!o>}ow&9a{FD1yZ!(`Br)<3b=P##3$@7 PA?#61N@JRL(=GV_UPd$y literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-et.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-et.mo new file mode 100644 index 0000000000000000000000000000000000000000..03dafd29fa401e4f21975c66bc27e45660df41a8 GIT binary patch literal 13970 zcmc(l3zS_|dB+cwXCxpX-~;N3l8{Jd@<0$Lpq)%!lbK0|+?jwpD*N8MbMKjZ?m3t9 znBhi?6kRG-saQcs$DCf)KMkt>S@1Y`He3Sxpr(2uRKFWt`F5ACK+XFK zsCvfbx1idmE`6Qj8(scQP~-fu%m0AmhoR)S3##8wyZn1x{^wl!OHl2<441-hy7I^1 zZ6z5!nVA9eY^gwl(pD7(fx18STz9nXepx7wAT2i4z&Q0uq_s=rI2Z-sQg;YMh&(&fB}8=D8oL{@=Uue}roHRj7G?3rep4bmc#Ss{cPwavaIvN@_*>kPq^}5I37)>n(qlvhES)=nX`*z1yM2`zxsRyccSo4?2DWYP|12wf~Vz|J0?AWN{_eaZvr7 z!Iqu9jg8{KYWz1s$^SN&{u9UBpxWI5 zCD&g<>BoIgdiW4L8~z)VyvM${tp9u{d0zyjM}01T3oOcP5LA3G!Y6eRu`D5WW_w{(ksM_yF7lPd>-<&V{?-dGH3P zbM{FndA<#`?`u|;>$U+NLwX2G?(I-=RiM`4DyVg7!eil#v`?EysU%`9FfkQT}tNc1N!&y?hr`fBT^N`3opH_q+7pxbn|Kt=|K# z{3}rF^(d5H{n(Ws_mZ-|lc3~11Im7#1$965Lyfb=aVOOHmqG3C)llu;54C?Ef|Bzt zxCGtYQ(cr~bTGFSe4Q2P9Om;Y|Z+g$#Kq2_lF)Hr_!)!ze- zUxm*i{Vk|$xm5)KyzZ5Qozw6Q=)cC1Ocj0f5z8>lxd;^p`AAlO?BT)V9cRT>qeio|U=Uw_i zD0#jDCC|S?$^CsO`*TEpDc^Fa_Ah~|zt-_W$KP?>1~u+DlpL43v~lSs)cA?Ze~nAu z;L?8pCC59U*5yy3_WuJ=<9`CG{oPP<%)0dbF8vTZk^FB!o=D#Jq53;=O}U;+q563N zlzhve%FlKA7r69AF1;0MK4VbhPC&K03QE2PRDU6q-Xu`{y&kImO>ilE7nDAK(3Rf_ zCI11(d!g!o0jmFpUHY3)ovs_#Sfa}HGfb*}v7Q1Whc z>1|N;FM+CenM+>{wT=xaxu>D-s~e#Dy%lQw_e1sf5vcL+gj$!o;R<*UlpcKtY9E)Z zolx?8%H@C7<=^kp4?x}P zUxS+GV^H(@Z>aW1tS|GAbvy|c>*>-y)c7l*+O2_Vw*hM0L8yHmb?M8Y#<5WC+VB*Z zLDhc~JORD~YMl2$t?M0*cfpfLA8_SgfVy`dhH7^_iRJKgsCE}QZh;za9ID?-UH;WB ze+o*jYg~C3Y9DTJyP;%V`)&Hkm`d-KTq1rtNp98-J)$Va9d-Mc68=iPRZwGiDRQ)liekb8+@Jg4T zK<(3BmwqFZoHs$~+dJWD@S{-kpM{d^L8$&7fhWUnL)rhIK-D|tg3^y#2IW6(f~s$z z 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 UAu*wO%Nh7l&?d_49efb~7g^dmB>(^b literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-fi.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-fi.mo new file mode 100644 index 0000000000000000000000000000000000000000..cb12eca516f100318172ab885c757941be489892 GIT binary patch literal 15500 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%0A1SBF|t%J{~HsbI$1A5>MXNUbxC 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 Lm27e?;rskAc`Yod literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-fr_CA.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-fr_CA.mo new file mode 100644 index 0000000000000000000000000000000000000000..372edaa67dfdf2a269e6c4b0a0ca9de343b7801b GIT binary patch literal 36243 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 C#hq;c literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-fr_FR.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-fr_FR.mo new file mode 100644 index 0000000000000000000000000000000000000000..0fc6d69a274a0a62ee45c08990e60cb0d7d064fb GIT binary patch literal 36243 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 IW@GSw0cz!)!2kdN literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-hu_HU.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-hu_HU.mo new file mode 100644 index 0000000000000000000000000000000000000000..3b22f6fc6bcf2d0b17b9d5a528184667d7a4878b GIT binary patch literal 36250 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-it_IT.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-it_IT.mo new file mode 100644 index 0000000000000000000000000000000000000000..d4830f84133db3f64d21eb87ac0cd82f6c50c475 GIT binary patch literal 36007 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 EH>x|wPXGV_ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-nl_NL.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-nl_NL.mo new file mode 100644 index 0000000000000000000000000000000000000000..6e7f32347872cd2d6707416f7d25c8fd3c1ae634 GIT binary patch literal 24998 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 Ai~s-t literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-pt_BR.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-pt_BR.mo new file mode 100644 index 0000000000000000000000000000000000000000..d7f0275b08994f84988bfe74f828b9d50d836fb3 GIT binary patch literal 38753 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 z z-yz=1Z!@@TZ`9Ajq_ zUWshMnbIxF_$H8MnpB6Du_!nnn~O*aYr<^bdC4vO>uw@cc7Ltng<0V8q0~F-wmfiI z-OlXSL#ii&ZQ0-yazCWV1r9+s3w%6t0kEACQ;?I6yQ3#CHq)xosZAB~-d6$CddJOaTXq!fT>zW?W8?Nw{M_@_i(o@do%5lSV z+D^_AC#KLCdgqSh`57KW0ZJqy@*gcXavnv7ySF4?^G z0rA z$&UGA7Hm|~O#1Agm%~>kK3Ev(f}C`9!5ZbbHUHTL;$ZxooMog}9{BtbYA8fI$4;~f zD>D`fS{jN@63hIiUH$Ybv%^%CIXq^*%RN?-)Ip+|S~BXAJ6Ta2CXpD0Et!6I;@WM; zSzJ`Y1VafkzA%mHjOCN?ks1Hm8PEsbQtrARWvtirVsB*qSdt#JNzq;x*yIG8q&2S7ke>i|uf~TU(9b zx^bA&{ta(sd`Y0l(dll{lGJ{FEm$8~nzTP3UFypy@SQXX=(fWn65XZl7({VI*11!` F{{|AP4v+u< literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-pt_PT.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-pt_PT.mo new file mode 100644 index 0000000000000000000000000000000000000000..0a5c830a0b493da715cc26e9f5c3ff0d26a02e23 GIT binary patch literal 31028 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-sk_SK.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-sk_SK.mo new file mode 100644 index 0000000000000000000000000000000000000000..9d4b5900281597315ea51a26f3cd8b16c746b63b GIT binary patch literal 16541 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 Bt)~D0 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-sr_RS.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-sr_RS.mo new file mode 100644 index 0000000000000000000000000000000000000000..c26af0747b68de87f2db5bfa4d001904d98f805c GIT binary patch literal 14491 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 q;8zlv@xX=7IIBhMtQ~mhR>+f<;3|xES`2PddI< literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-sv_SE.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-sv_SE.mo new file mode 100644 index 0000000000000000000000000000000000000000..966059445ef14ead07ce9e34bd19ca7721c95671 GIT binary patch literal 15655 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-zh_CN.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-zh_CN.mo new file mode 100644 index 0000000000000000000000000000000000000000..6d6a007a363b9d5eb2a6e4c297d1108b6fdc623b GIT binary patch literal 15441 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common-zh_TW.mo b/wp-content/plugins/the-events-calendar/common/lang/tribe-common-zh_TW.mo new file mode 100644 index 0000000000000000000000000000000000000000..55212b4f3ae9824fafd248d00e33acd10937c620 GIT binary patch literal 15285 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/lang/tribe-common.pot b/wp-content/plugins/the-events-calendar/common/lang/tribe-common.pot new file mode 100644 index 000000000..b2053bbae --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/lang/tribe-common.pot @@ -0,0 +1,3953 @@ +# Copyright (C) 2023 The Events Calendar +# This file is distributed under the GPLv2 or later. +msgid "" +msgstr "" +"Project-Id-Version: Tribe Common 5.1.3\n" +"Report-Msgid-Bugs-To: https://evnt.is/191x\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"POT-Creation-Date: 2023-07-10T08:26:14-07:00\n" +"PO-Revision-Date: 2023-07-10 15:26\n" +"X-Generator: WP-CLI 2.7.1\n" +"X-Domain: tribe-common\n" + +#. Plugin Name of the plugin +msgid "Tribe Common" +msgstr "" + +#. Description of the plugin +msgid "An event settings framework for managing shared options" +msgstr "" + +#. Author of the plugin +#: src/admin-views/help-calendar.php:97 +#: src/Tribe/Admin/Help_Page.php:116 +#: src/Tribe/Customizer.php:664 +#: src/Tribe/Plugins_API.php:25 +msgid "The Events Calendar" +msgstr "" + +#. Author URI of the plugin +msgid "http://evnt.is/1x" +msgstr "" + +#: src/admin-views/app-shop.php:30 +#: src/admin-views/conditional_content/black-friday.php:16 +#: src/admin-views/conditional_content/end-of-year-sale.php:16 +#: src/admin-views/help.php:27 +#: src/admin-views/help.php:86 +#: src/admin-views/troubleshooting/footer-logo.php:12 +#: src/admin-views/troubleshooting/introduction.php:19 +msgid "The Events Calendar brand logo" +msgstr "" + +#: src/admin-views/app-shop.php:35 +msgid "All Solutions" +msgstr "" + +#: src/admin-views/app-shop.php:36 +msgid "Save with Bundles" +msgstr "" + +#: src/admin-views/app-shop.php:37 +msgid "Extensions" +msgstr "" + +#: src/admin-views/app-shop.php:38 +msgid "Stellar Discounts" +msgstr "" + +#: src/admin-views/app-shop.php:47 +#: src/admin-views/app-shop.php:109 +#: src/admin-views/app-shop.php:167 +#: src/admin-views/app-shop.php:201 +msgid "Shapes and lines for visual interest" +msgstr "" + +#: src/admin-views/app-shop.php:53 +msgid "One calendar. Countless ways to make it your own." +msgstr "" + +#: src/admin-views/app-shop.php:54 +msgid "Calendars, ticketing, and powerful WordPress tools to manage your events from start to finish." +msgstr "" + +#: src/admin-views/app-shop.php:56 +msgid "Already Installed" +msgstr "" + +#: src/admin-views/app-shop.php:62 +#: src/admin-views/app-shop.php:119 +#: src/admin-views/app-shop.php:141 +msgid "TEC Logo" +msgstr "" + +#: src/admin-views/app-shop.php:66 +#: src/admin-views/help-calendar.php:44 +#: src/admin-views/help-community.php:44 +#: src/admin-views/help-ticketing.php:44 +msgid "Active" +msgstr "" + +#: src/admin-views/app-shop.php:68 +#: src/admin-views/app-shop.php:177 +msgid "FREE" +msgstr "" + +#: src/admin-views/app-shop.php:93 +msgid "Manage" +msgstr "" + +#: src/admin-views/app-shop.php:95 +#: src/admin-views/help-calendar.php:65 +#: src/admin-views/help-community.php:58 +#: src/admin-views/help-ticketing.php:65 +msgid "Learn More" +msgstr "" + +#: src/admin-views/app-shop.php:113 +msgid "The plugins you need at one discounted price" +msgstr "" + +#: src/admin-views/app-shop.php:114 +msgid "We've packaged our most popular plugins into bundles jam-packed with value." +msgstr "" + +#: src/admin-views/app-shop.php:126 +#: src/admin-views/app-shop.php:153 +msgid "Save With A Bundle" +msgstr "" + +#: src/admin-views/app-shop.php:132 +msgid "Includes" +msgstr "" + +#: src/admin-views/app-shop.php:171 +msgid "Free extensions to power up your plugins" +msgstr "" + +#: src/admin-views/app-shop.php:172 +msgid "Extensions are quick solutions our team came up with to solve specific issues you may need. (Note - extensions are not covered by our support team.)" +msgstr "" + +#: src/admin-views/app-shop.php:186 +msgid "Download" +msgstr "" + +#: src/admin-views/app-shop.php:190 +msgid "Browse Extensions" +msgstr "" + +#: src/admin-views/app-shop.php:209 +msgid "Stellar is a collective of WordPress innovators, and home to WordPress products done right." +msgstr "" + +#: src/admin-views/app-shop.php:213 +msgid "$25 towards any Stellar product using code %s" +msgstr "" + +#: src/admin-views/components/loader.php:18 +msgid "Loading..." +msgstr "" + +#: src/admin-views/conditional_content/black-friday.php:23 +msgid "Our biggest
sale of the
year ends
soon

" +msgstr "" + +#: src/admin-views/conditional_content/black-friday.php:30 +#: src/admin-views/conditional_content/end-of-year-sale.php:31 +msgid "Save now" +msgstr "" + +#: src/admin-views/conditional_content/end-of-year-sale.php:23 +msgid "End of Year Sale!
Save 30% on
all our plugins.
Offer expires soon!" +msgstr "" + +#: src/admin-views/event-log.php:21 +msgid "Logging level" +msgstr "" + +#: src/admin-views/event-log.php:43 +msgid "Method" +msgstr "" + +#: src/admin-views/event-log.php:65 +msgid "View" +msgstr "" + +#: src/admin-views/event-log.php:100 +msgid "The selected log file is empty or has not been generated yet." +msgstr "" + +#: src/admin-views/event-log.php:117 +msgid "Download log" +msgstr "" + +#: src/admin-views/help-calendar.php:16 +#: src/admin-views/help-community.php:16 +#: src/admin-views/help-ticketing.php:16 +msgid "Get help for these products and learn more about products you don't have." +msgstr "" + +#: src/admin-views/help-calendar.php:27 +#: src/admin-views/help-community.php:27 +#: src/admin-views/help-ticketing.php:27 +msgid "logo icon" +msgstr "" + +#: src/admin-views/help-calendar.php:51 +#: src/admin-views/help-ticketing.php:51 +msgid "Add license key" +msgstr "" + +#: src/admin-views/help-calendar.php:58 +#: src/admin-views/help-community.php:51 +#: src/admin-views/help-ticketing.php:58 +msgid "Activate" +msgstr "" + +#: src/admin-views/help-calendar.php:76 +#: src/admin-views/help-community.php:69 +#: src/admin-views/help-ticketing.php:76 +msgid "Start Here" +msgstr "" + +#: src/admin-views/help-calendar.php:80 +#: src/admin-views/help-community.php:73 +#: src/admin-views/help-ticketing.php:80 +msgid "Visit Knowledgebase" +msgstr "" + +#: src/admin-views/help-calendar.php:89 +#: src/admin-views/help-calendar.php:122 +#: src/admin-views/help-calendar.php:155 +msgid "book with The Events Calendar logo" +msgstr "" + +#: src/admin-views/help-calendar.php:92 +#: src/admin-views/help-community.php:85 +#: src/admin-views/help-ticketing.php:92 +msgid "Getting Started Guides" +msgstr "" + +#: src/admin-views/help-calendar.php:102 +#: src/Tribe/Admin/Help_Page.php:285 +#: src/Tribe/Plugins_API.php:45 +msgid "Event Aggregator" +msgstr "" + +#: src/admin-views/help-calendar.php:107 +#: src/Tribe/Admin/Help_Page.php:295 +#: src/Tribe/Plugins_API.php:166 +msgid "Filter Bar" +msgstr "" + +#: src/admin-views/help-calendar.php:112 +#: src/Tribe/Admin/Help_Page.php:303 +#: src/Tribe/Plugins_API.php:266 +msgid "Virtual Events" +msgstr "" + +#: src/admin-views/help-calendar.php:125 +msgid "Customizing" +msgstr "" + +#: src/admin-views/help-calendar.php:130 +msgid "Getting started with customizations" +msgstr "" + +#: src/admin-views/help-calendar.php:135 +msgid "Highlighting events" +msgstr "" + +#: src/admin-views/help-calendar.php:140 +msgid "How to Customize Template Files" +msgstr "" + +#: src/admin-views/help-calendar.php:145 +msgid "Customizing CSS (Video)" +msgstr "" + +#: src/admin-views/help-calendar.php:158 +msgid "Common Issues" +msgstr "" + +#: src/admin-views/help-calendar.php:163 +msgid "Known Issues" +msgstr "" + +#: src/admin-views/help-calendar.php:168 +#: src/admin-views/help-community.php:161 +#: src/admin-views/help-ticketing.php:164 +msgid "Release notes" +msgstr "" + +#: src/admin-views/help-calendar.php:173 +#: src/admin-views/help-community.php:166 +#: src/admin-views/help-ticketing.php:169 +msgid "Integrations" +msgstr "" + +#: src/admin-views/help-calendar.php:178 +#: src/admin-views/help-ticketing.php:140 +#: src/Tribe/Plugins_API.php:96 +msgid "Shortcodes" +msgstr "" + +#: src/admin-views/help-calendar.php:188 +#: src/admin-views/help-community.php:181 +#: src/admin-views/help-ticketing.php:184 +msgid "FAQs" +msgstr "" + +#: src/admin-views/help-calendar.php:192 +#: src/admin-views/help-community.php:185 +#: src/admin-views/help-ticketing.php:188 +msgid "All FAQs" +msgstr "" + +#: src/admin-views/help-calendar.php:202 +#: src/admin-views/help-community.php:195 +#: src/admin-views/help-ticketing.php:198 +#: src/admin-views/troubleshooting/common-issues.php:24 +#: src/admin-views/troubleshooting/first-steps.php:20 +#: src/admin-views/troubleshooting/first-steps.php:40 +msgid "lightbulb icon" +msgstr "" + +#: src/admin-views/help-calendar.php:222 +#: src/admin-views/help-community.php:215 +#: src/admin-views/help-ticketing.php:218 +msgid "Free extensions" +msgstr "" + +#: src/admin-views/help-calendar.php:226 +#: src/admin-views/help-community.php:219 +#: src/admin-views/help-ticketing.php:222 +msgid "All Extensions" +msgstr "" + +#: src/admin-views/help-calendar.php:231 +#: src/admin-views/help-community.php:224 +#: src/admin-views/help-ticketing.php:227 +msgid "Small, lightweight WordPress plugins that add new capabilities to our core plugins. Support is not offered for extensions; however they provide enhanced functionality and bonus features." +msgstr "" + +#: src/admin-views/help-community.php:82 +#: src/admin-views/help-community.php:148 +msgid "book with The Events community logo" +msgstr "" + +#: src/admin-views/help-community.php:90 +#: src/Tribe/Admin/Help_Page.php:277 +#: src/Tribe/Plugins_API.php:186 +msgid "Community Events" +msgstr "" + +#: src/admin-views/help-community.php:95 +#: src/Tribe/Admin/Help_Page.php:320 +#: src/Tribe/Plugins_API.php:206 +msgid "Community Tickets" +msgstr "" + +#: src/admin-views/help-community.php:100 +msgid "Community Events Shortcodes" +msgstr "" + +#: src/admin-views/help-community.php:105 +msgid "Locating Links to Your Community Events Pages" +msgstr "" + +#: src/admin-views/help-community.php:115 +#: src/admin-views/help-ticketing.php:117 +msgid "book with Event Tickets logo" +msgstr "" + +#: src/admin-views/help-community.php:118 +msgid "Managing Submissions" +msgstr "" + +#: src/admin-views/help-community.php:123 +msgid "Managing Submissions Overview" +msgstr "" + +#: src/admin-views/help-community.php:128 +msgid "Setting Notifications" +msgstr "" + +#: src/admin-views/help-community.php:133 +msgid "Auto-Publish Events Submitted By Logged-In Users" +msgstr "" + +#: src/admin-views/help-community.php:138 +msgid "Preventing Spam Submissions" +msgstr "" + +#: src/admin-views/help-community.php:151 +#: src/admin-views/help-ticketing.php:154 +msgid "Plugin Maintenance" +msgstr "" + +#: src/admin-views/help-community.php:156 +#: src/admin-views/help-ticketing.php:159 +msgid "Testing for Conflicts" +msgstr "" + +#: src/admin-views/help-community.php:171 +#: src/admin-views/help-ticketing.php:174 +msgid "Automatic Updates" +msgstr "" + +#: src/admin-views/help-ticketing.php:89 +#: src/admin-views/help-ticketing.php:151 +msgid "book with The Events ticketing logo" +msgstr "" + +#: src/admin-views/help-ticketing.php:97 +#: src/Tribe/Admin/Help_Page.php:135 +#: src/Tribe/Plugins_API.php:106 +msgid "Event Tickets" +msgstr "" + +#: src/admin-views/help-ticketing.php:102 +msgid "Calendar & Ticket Shortcodes" +msgstr "" + +#: src/admin-views/help-ticketing.php:107 +#: src/Tribe/Plugins_API.php:146 +#: src/Tribe/Promoter/PUE.php:28 +#: src/views/promoter/auth.php:30 +#: src/views/promoter/auth.php:74 +msgid "Promoter" +msgstr "" + +#: src/admin-views/help-ticketing.php:120 +msgid "Creating Tickets & RSVPs" +msgstr "" + +#: src/admin-views/help-ticketing.php:125 +msgid "Creating Tickets" +msgstr "" + +#: src/admin-views/help-ticketing.php:130 +msgid "Creating RSVPs" +msgstr "" + +#: src/admin-views/help-ticketing.php:135 +msgid "Configuring Paypal for Tickets" +msgstr "" + +#: src/admin-views/help-ticketing.php:142 +msgid "(Event Tickets Plus)" +msgstr "" + +#: src/admin-views/help.php:30 +msgid "Help" +msgstr "" + +#: src/admin-views/help.php:31 +msgid "We're committed to helping make your calendar spectacular and have a wealth of resources available." +msgstr "" + +#: src/admin-views/help.php:34 +msgid "Calendar" +msgstr "" + +#: src/admin-views/help.php:35 +msgid "Ticketing & RSVP" +msgstr "" + +#: src/admin-views/help.php:36 +msgid "Community" +msgstr "" + +#: src/admin-views/help.php:67 +#: src/admin-views/troubleshooting/support-cta.php:13 +msgid "Graphic with an electrical plug and gears" +msgstr "" + +#: src/admin-views/help.php:72 +msgid "Need additional support?" +msgstr "" + +#: src/admin-views/help.php:77 +msgid "Visit Troubleshooting next" +msgstr "" + +#: src/admin-views/notices/end-of-year-sale.php:16 +msgid "End of year savings!" +msgstr "" + +#: src/admin-views/notices/end-of-year-sale.php:18 +msgid "Get 30% off on all plugins from now through December 31." +msgstr "" + +#: src/admin-views/notices/end-of-year-sale.php:25 +#: src/admin-views/notices/tribe-bf-general.php:26 +msgid "Shop now" +msgstr "" + +#: src/admin-views/notices/tribe-bf-general.php:17 +msgid "Save 40% on every single plugin." +msgstr "" + +#: src/admin-views/notices/tribe-bf-general.php:19 +msgid "Black Friday Sale now through %s." +msgstr "" + +#: src/admin-views/notices/tribe-stellar-sale-premium.php:16 +msgid "Make it stellar." +msgstr "" + +#: src/admin-views/notices/tribe-stellar-sale-premium.php:19 +msgid "Save 30% on all StellarWP products." +msgstr "" + +#: src/admin-views/notices/tribe-stellar-sale-premium.php:24 +#: src/admin-views/notices/tribe-stellar-sale-premium.php:38 +#: src/admin-views/notices/tribe-stellar-sale.php:24 +#: src/admin-views/notices/tribe-stellar-sale.php:38 +msgctxt "Shop now link text" +msgid "Shop now" +msgstr "" + +#: src/admin-views/notices/tribe-stellar-sale-premium.php:32 +#: src/admin-views/notices/tribe-stellar-sale.php:32 +msgid "Purchase any StellarWP product during the sale and get 100% off WP Business Reviews and take 40% off all other brands." +msgstr "" + +#: src/admin-views/notices/tribe-stellar-sale-premium.php:46 +#: src/admin-views/notices/tribe-stellar-sale.php:46 +msgctxt "View all StellarWP Deals link text" +msgid "View all StellarWP Deals" +msgstr "" + +#: src/admin-views/notices/tribe-stellar-sale.php:16 +msgid "Make it yours." +msgstr "" + +#: src/admin-views/notices/tribe-stellar-sale.php:19 +msgid "Save 30% on all The Events Calendar products." +msgstr "" + +#: src/admin-views/notices/upsell/icon.php:19 +msgid "The Events Calendar important notice icon" +msgstr "" + +#: src/admin-views/tribe-options-help.php:11 +msgid "Thank you for using %s! All of us at The Events Calendar sincerely appreciate your support and we’re excited to see you using our plugins." +msgstr "" + +#: src/admin-views/tribe-options-help.php:14 +msgid "Getting Support" +msgstr "" + +#: src/admin-views/tribe-options-help.php:15 +msgid "Our website’s %s is a great place to find tips and tricks for using and customizing our plugins." +msgstr "" + +#: src/admin-views/tribe-options-help.php:15 +msgid "Knowledgebase" +msgstr "" + +#: src/admin-views/tribe-options-help.php:18 +msgid "Want to dive deeper?" +msgstr "" + +#: src/admin-views/tribe-options-help.php:20 +msgid "Check out our %s for developers." +msgstr "" + +#: src/admin-views/tribe-options-help.php:21 +msgid "list of available functions" +msgstr "" + +#: src/admin-views/tribe-options-help.php:26 +msgid "Getting More Help" +msgstr "" + +#: src/admin-views/tribe-options-help.php:27 +msgid "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:" +msgstr "" + +#: src/admin-views/tribe-options-help.php:33 +msgid "%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!" +msgstr "" + +#: src/admin-views/tribe-options-help.php:37 +msgid "Check our Knowledgebase" +msgstr "" + +#: src/admin-views/tribe-options-help.php:43 +msgid "%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." +msgstr "" + +#: src/admin-views/tribe-options-help.php:47 +msgid "Test for a theme or plugin conflict" +msgstr "" + +#: src/admin-views/tribe-options-help.php:53 +msgid "%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." +msgstr "" + +#: src/admin-views/tribe-options-help.php:57 +msgid "Search our support help desk" +msgstr "" + +#: src/admin-views/tribe-options-help.php:67 +msgid "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 😄" +msgstr "" + +#: src/admin-views/tribe-options-help.php:68 +msgid "Read more about our support policy" +msgstr "" + +#: src/admin-views/tribe-options-help.php:71 +#: src/admin-views/troubleshooting/system-information.php:16 +msgid "System Information" +msgstr "" + +#: src/admin-views/tribe-options-help.php:72 +msgid "The details of your calendar plugin and settings is often needed for you or our staff to help troubleshoot an issue. Please opt-in below to automatically share your system information with our support team. This will allow us to assist you faster if you post in our help desk." +msgstr "" + +#: src/admin-views/tribe-options-help.php:80 +#: src/admin-views/troubleshooting/system-information.php:39 +msgid "Copy to clipboard" +msgstr "" + +#: src/admin-views/tribe-options-help.php:82 +msgid "Recent Template Changes" +msgstr "" + +#: src/admin-views/tribe-options-help.php:85 +msgid "Event Log" +msgstr "" + +#: src/admin-views/tribe-options-help.php:104 +msgid "News and Tutorials" +msgstr "" + +#: src/admin-views/tribe-options-help.php:110 +msgid "More..." +msgstr "" + +#: src/admin-views/tribe-options-licenses.php:5 +msgid "If you've purchased a premium add-on, you'll need to enter your license key here in order to have access to automatic updates when new versions are available." +msgstr "" + +#: src/admin-views/tribe-options-licenses.php:10 +msgid "In order to register a plugin license, you'll first need to %1$sdownload and install%2$s the plugin you purchased. You can download the latest version of your plugin(s) from %3$syour account's downloads page%4$s. Once the plugin is installed and activated on this site, the license key field will appear below." +msgstr "" + +#: src/admin-views/tribe-options-licenses.php:19 +msgid "Each paid add-on has its own unique license key. Paste the key into its appropriate field below, and give it a moment to validate. You know you're set when a green expiration date appears alongside a \"valid\" message. Then click Save Changes." +msgstr "" + +#: src/admin-views/tribe-options-licenses.php:23 +msgid "Helpful Links:" +msgstr "" + +#: src/admin-views/tribe-options-licenses.php:28 +msgid "Why am I being told my license key is out of installs?" +msgstr "" + +#: src/admin-views/tribe-options-licenses.php:31 +msgid "View and manage your license keys" +msgstr "" + +#: src/admin-views/tribe-options-licenses.php:34 +msgid "Moving your license keys" +msgstr "" + +#: src/admin-views/tribe-options-licenses.php:37 +msgid "Expired license keys and subscriptions" +msgstr "" + +#: src/admin-views/tribe-options-licenses.php:43 +msgid "Licenses for Multisites" +msgstr "" + +#: src/admin-views/tribe-options-licenses.php:57 +#: src/Tribe/Settings_Manager.php:296 +msgid "Licenses" +msgstr "" + +#: src/admin-views/troubleshooting/common-issues.php:14 +msgid "Common Problems" +msgstr "" + +#: src/admin-views/troubleshooting/detected-issues.php:14 +msgid "We’ve detected the following issues" +msgstr "" + +#: src/admin-views/troubleshooting/detected-issues.php:30 +msgid "warning-icon" +msgstr "" + +#: src/admin-views/troubleshooting/detected-issues.php:45 +msgid "Learn more" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status.php:24 +msgid "Event Aggregator system status " +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/current-status.php:15 +msgid "Imports Enabled in Settings" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/current-status.php:20 +msgid "Imports disabled in Settings" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/current-status.php:25 +msgid "Edit Import Settings" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/current-status.php:31 +msgid "Enabled" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/current-usage.php:18 +msgid "You have reached your daily import limit. Scheduled imports will be paused until tomorrow." +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/current-usage.php:21 +msgid "You are approaching your daily import limit. You may want to adjust your Scheduled Import frequencies." +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/current-usage.php:25 +msgid "%1$d import used out of %2$d available today" +msgid_plural "%1$d imports used out of %2$d available today" +msgstr[0] "" +msgstr[1] "" + +#: src/admin-views/troubleshooting/ea-status/current-usage.php:32 +msgid "Current usage" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/eventbrite.php:11 +msgid "Third Party Accounts" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/eventbrite.php:24 +msgid "You have not connected Event Aggregator to Eventbrite" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/eventbrite.php:28 +msgctxt "link for connecting eventbrite" +msgid "Connect to Eventbrite" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/eventbrite.php:32 +msgid "Limited connectivity with Eventbrite" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/eventbrite.php:33 +#: src/admin-views/troubleshooting/ea-status/meetup.php:23 +msgid "The service has disabled oAuth. Some types of events may not import." +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/eventbrite.php:38 +msgid "Eventbrite" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/license-key.php:19 +msgid "Your license is valid" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/license-key.php:26 +msgid "You do not have a license" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/license-key.php:28 +msgid "Buy Event Aggregator to access more event sources and automatic imports!" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/license-key.php:31 +msgid "Your license is invalid" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/license-key.php:32 +msgid "Check your license key" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/license-key.php:38 +msgid "License & Usage" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/license-key.php:44 +#: src/Tribe/PUE/Checker.php:620 +#: src/Tribe/PUE/Checker.php:631 +msgid "License Key" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/meetup.php:16 +msgid "You have not connected Event Aggregator to Meetup" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/meetup.php:18 +msgctxt "link for connecting meetup" +msgid "Connect to Meetup" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/meetup.php:22 +msgid "Limited connectivity with Meetup" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/meetup.php:29 +msgid "Meetup" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/scheduler-status.php:14 +msgid "WP Cron not enabled" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/scheduler-status.php:15 +msgid "Scheduled imports may not run reliably" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/scheduler-status.php:17 +msgid "WP Cron enabled" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/scheduler-status.php:23 +msgid "Scheduler Status" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/server-connection.php:11 +msgid "Import Services" +msgstr "" + +#. translators: %s: Event Aggregator Server URL +#: src/admin-views/troubleshooting/ea-status/server-connection.php:24 +#: src/admin-views/troubleshooting/ea-status/server-connection.php:32 +msgid "Not connected to %s" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/server-connection.php:25 +msgid "The server is not currently responding" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/server-connection.php:33 +msgid "The server is responding with an error:" +msgstr "" + +#. translators: %s: Event Aggregator Server URL +#: src/admin-views/troubleshooting/ea-status/server-connection.php:39 +msgid "Connected to %s" +msgstr "" + +#: src/admin-views/troubleshooting/ea-status/server-connection.php:45 +msgid "Server Connection" +msgstr "" + +#: src/admin-views/troubleshooting/event-log.php:13 +msgid "Event log" +msgstr "" + +#: src/admin-views/troubleshooting/first-steps.php:11 +msgid "First Steps" +msgstr "" + +#: src/admin-views/troubleshooting/first-steps.php:25 +msgid "Test for conflicts" +msgstr "" + +#: src/admin-views/troubleshooting/first-steps.php:29 +#: src/admin-views/troubleshooting/first-steps.php:49 +msgid "View article" +msgstr "" + +#: src/admin-views/troubleshooting/first-steps.php:30 +msgid "Most issues are caused by conflicts with the theme or other plugins. Follow these steps as a first point of action. %s" +msgstr "" + +#: src/admin-views/troubleshooting/first-steps.php:45 +msgid "Share your system info" +msgstr "" + +#: src/admin-views/troubleshooting/first-steps.php:50 +msgid "Providing the details of your calendar plugin and settings (located below) helps our support team troubleshoot an issue faster. %s" +msgstr "" + +#: src/admin-views/troubleshooting/introduction.php:21 +#: src/Tribe/Admin/Troubleshooting.php:66 +#: src/Tribe/Admin/Troubleshooting.php:67 +#: src/Tribe/Admin/Troubleshooting.php:142 +msgid "Troubleshooting" +msgstr "" + +#: src/admin-views/troubleshooting/introduction.php:22 +msgid "Sometimes things just don’t work as expected. We’ve created a wealth of resources to get you back on track." +msgstr "" + +#: src/admin-views/troubleshooting/notice.php:12 +msgid "Help page?" +msgstr "" + +#: src/admin-views/troubleshooting/notice.php:17 +msgid "Hey there... did you check out the %s" +msgstr "" + +#: src/admin-views/troubleshooting/recent-template-changes.php:12 +msgid "Recent template changes" +msgstr "" + +#: src/admin-views/troubleshooting/support-cta.php:18 +msgid "Get support from humans" +msgstr "" + +#: src/admin-views/troubleshooting/support-cta.php:22 +msgid "Included with our premium products" +msgstr "" + +#: src/admin-views/troubleshooting/support-cta.php:27 +msgid "Open a ticket" +msgstr "" + +#: src/admin-views/troubleshooting/system-information.php:19 +msgid "Please opt-in below to automatically share your system information with our support team. This will allow us to assist you faster if you post in our help desk." +msgstr "" + +#: src/admin-views/troubleshooting/system-information.php:24 +msgid "Yes, automatically share my system information with The Events Calendar support team*" +msgstr "" + +#: src/admin-views/troubleshooting/system-information.php:28 +msgid "* Your system information will only be used by The Events Calendar support team. All information is stored securely. We do not share this information with any third parties." +msgstr "" + +#. Translators: %1$s the post type label. +#: src/Common/Site_Health/Fields/Post_Status_Count_Field.php:54 +msgid "%1$s counts" +msgstr "" + +#: src/Common/Telemetry/Telemetry.php:270 +msgid "See which plugins you have opted in to tracking for" +msgstr "" + +#: src/Common/Telemetry/Telemetry.php:271 +msgid "We hope you love TEC Common!" +msgstr "" + +#: src/Common/Telemetry/Telemetry.php:356 +msgid "We’re sorry to see you go." +msgstr "" + +#: src/Common/Telemetry/Telemetry.php:357 +msgid "We’d love to know why you’re leaving so we can improve our plugin." +msgstr "" + +#: src/Common/Telemetry/Telemetry.php:361 +msgid "I couldn’t understand how to make it work." +msgstr "" + +#: src/Common/Telemetry/Telemetry.php:365 +msgid "I found a better plugin." +msgstr "" + +#: src/Common/Telemetry/Telemetry.php:370 +msgid "I need a specific feature it doesn’t provide." +msgstr "" + +#: src/Common/Telemetry/Telemetry.php:375 +msgid "The plugin doesn’t work." +msgstr "" + +#: src/Common/Telemetry/Telemetry.php:380 +msgid "Other" +msgstr "" + +#: src/functions/template-tags/html.php:101 +msgctxt "The associated field is required." +msgid "(required)" +msgstr "" + +#: src/Tribe/Admin/Activation_Page.php:113 +msgid "Go to plugins page" +msgstr "" + +#: src/Tribe/Admin/Activation_Page.php:121 +msgid "Go to WordPress Updates page" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:90 +msgctxt "Copy to clipboard button text." +msgid "Copy to clipboard" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:91 +msgctxt "Copy to clipboard success message" +msgid "System info copied" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:92 +msgctxt "Copy to clipboard instructions" +msgid "Press \"Cmd + C\" to copy" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:93 +msgctxt "Default error message for system info optin" +msgid "Something has gone wrong!" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:94 +msgctxt "Error code label for system info optin" +msgid "Code:" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:95 +msgctxt "Error status label for system info optin" +msgid "Status:" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:120 +msgid "The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:139 +msgid "Events Tickets is a carefully crafted, extensible plugin that lets you easily sell tickets for your events." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:154 +msgid "Advanced Post Manager" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:158 +msgid "Turbo charge your posts admin for any custom post type with sortable filters and columns, and auto-registration of metaboxes." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:236 +msgid " and " +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:260 +msgid "Events Calendar PRO" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:269 +#: src/Tribe/Plugins_API.php:227 +msgid "Eventbrite Tickets" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:311 +#: src/Tribe/Plugins_API.php:126 +msgid "Event Tickets Plus" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:481 +msgctxt "not available" +msgid "n/a" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:489 +msgid "You need to upgrade!" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:489 +#: src/Tribe/Admin/Help_Page.php:864 +msgid "You are up to date!" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:854 +msgid "Activate %s" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:854 +msgid "Activate Plugin" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:862 +msgid "Upgrade Plugin" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:878 +msgid "Install %s" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:878 +msgid "Install Plugin" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:895 +msgid "Latest Version:" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:898 +msgid "Requires:" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:899 +msgid "WordPress " +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:901 +msgid "Active Users:" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:904 +msgid "Rating:" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:927 +msgid "Premium Add-Ons" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:933 +msgid "Plugin Active" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:935 +msgid "Plugin Inactive" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:940 +msgid "Visit the Add-on Page" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:964 +msgid "Can I have more than one calendar?" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:965 +msgid "No, but you can use event categories or tags to display certain events like having..." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:969 +msgid "What do I get with Events Calendar Pro?" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:974 +msgid "How do I sell tickets to events?" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:975 +msgid "Use our free Event Tickets plugin to get started with tickets and RSVPs." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:979 +msgid "Where can I find a list of available shortcodes?" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:980 +msgid "Our plugins include many shortcodes that do everything from embedding the calendar..." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:998 +msgid "Calendar widget areas" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:999 +msgid "This extension creates a useful variety of WordPress widget areas (a.k.a. sidebars)." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1004 +msgid "Event block patterns" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1005 +msgid "This extension adds a set of block patterns for events to the WordPress block editor." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1010 +msgid "Alternative photo view" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1011 +msgid "This extension replaces photo view with a tiled grid of cards featuring event images." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1016 +msgid "The Events Calendar Tweaks" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1017 +msgid "This extension is a collection of tweaks and snippets for The Events Calendar." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1055 +msgid "How Do I create events with Tickets or RSVP’s?" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1056 +msgid "We’ve put together a video tutorial showing how to create events with Tickets using our plugins. Click on the link in the link in the title to learn more." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1060 +msgid "How Do I Set Up E-Commerce Plugins for Selling Tickets?" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1061 +msgid "You can sell tickets using our built-in e-commerce option, or upgrade to Event Tickets Plus to use ecommerce plugins such as WooCommerce." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1065 +msgid "Can I have a seating chart associated with my tickets?" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1066 +msgid "Yes! You can easily accomplish this task using the stock options and multiple ticket types available with Event Tickets." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1070 +msgid "How do I process refunds for tickets?" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1071 +msgid "When it comes to paid tickets, these orders can be refunded through the e-commerce platform in use." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1089 +msgid "Ticket Email Settings" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1090 +msgid "Adds a new settings panel in Events > Settings that gives more control over the ticket and rsvp emails that are sent to attendees after registration." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1095 +msgid "Per Event Check In API" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1096 +msgid "This extension shows a meta box with an API key on each Event with Ticket/RSVP." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1101 +msgid "Add Event & Attendee Info to WooCommerce Order Details" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1102 +msgid "Displays the information collected by “attendee meta fields” in the WooCommerce order screens as well." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1107 +msgid "Organizer Notification Email" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1108 +msgid "This extension will send an email to event organizers whenever a user registers for their event." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1145 +msgid "Add Cost Currency Symbol" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1146 +msgid "This extension allows you to set default currency symbols for your users to choose from instead of having a plain text field." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1151 +msgid "Add Google Maps Display and Link Options" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1152 +msgid "This extension adds the “Show Google Maps” and “Show Google Maps Link” checkboxes when creating a new Venue." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1157 +msgid "Hide Others’ Organizers and Venues" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1158 +msgid "This extension allows you to hide the Organizers and Venues that a visitor has not created from the Community Events submission form." +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1163 +msgid "Display Custom HTML" +msgstr "" + +#: src/Tribe/Admin/Help_Page.php:1164 +msgid "This extension allows you to add custom HTML content to the top of the Community Events submission form." +msgstr "" + +#: src/Tribe/Admin/Notice/Php_Version.php:59 +#: src/Tribe/Admin/Notice/Plugin_Download.php:147 +msgctxt "separator used in a list of items" +msgid ", " +msgstr "" + +#: src/Tribe/Admin/Notice/Php_Version.php:60 +#: src/Tribe/Admin/Notice/Plugin_Download.php:148 +msgctxt "the final separator in a list of two or more items" +msgid " and " +msgstr "" + +#. Translators: %1$s list of plugins, %2$s current PHP version, %3$s open anchor html link for read more, %4$s open anchor html link for read more +#: src/Tribe/Admin/Notice/Php_Version.php:96 +msgctxt "Message notifying users they need to upgrade PHP" +msgid "Starting February 2023, %1$s will require PHP 7.4 or later. Currently, your site is using PHP version %2$s. Please update to a newer version. %3$sRead more%4$s." +msgstr "" + +#: src/Tribe/Admin/Notice/Plugin_Download.php:120 +msgid "To begin using %2$s, please install (or upgrade) and activate %3$s." +msgstr "" + +#: src/Tribe/Admin/Notice/Plugin_Download.php:122 +#: src/Tribe/PUE/Update_Prevention.php:181 +msgid "Read more" +msgstr "" + +#: src/Tribe/Admin/Notice/Plugin_Download.php:123 +msgid "There’s a new version of %1$s available, but your license is expired. You’ll need to renew your license to get access to the latest version. If you plan to continue using your current version of the plugin(s), be sure to use a compatible version of The Events Calendar. %2$s" +msgstr "" + +#: src/Tribe/Admin/Notice/WP_Version.php:79 +msgid "You are using WordPress 5.7 which included a major jQuery update that may cause compatibility issues with past versions of The Events Calendar, Event Tickets and other plugins." +msgstr "" + +#: src/Tribe/Admin/Notice/WP_Version.php:81 +msgid "WordPress 5.7 includes a major jQuery update that may cause compatibility issues with past versions of The Events Calendar, Event Tickets and other plugins." +msgstr "" + +#: src/Tribe/Admin/Notice/WP_Version.php:83 +msgid "Read more." +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:297 +msgid "Site time zone uses UTC" +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:298 +msgid "When using The Events Calendar, we highly recommend that you use a geographic timezone such as \"America/Los_Angeles\" and avoid using a UTC timezone offset such as “UTC+9”. Choosing a UTC timezone for your site or individual events may cause problems when importing events or with Daylight Saving Time. Go to your the General WordPress settings to adjust your site timezone." +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:300 +msgid "Adjust your timezone" +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:305 +msgid "Install max has been reached" +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:306 +msgid "License keys can only be used on a limited number of sites, which varies depending on your license level. You'll need to remove the license from one or more other site's in order to use it on this one." +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:308 +msgid "Manage your licenses" +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:313 +msgid "Default Google Maps API key" +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:314 +msgid "The Events Calendar comes with an API key for basic maps functionality. If you’d like to use more advanced features like custom map pins, dynamic map loads, or Events Calendar Pro's Location Search and advanced Map View, you’ll need to get your own Google Maps API key and add it to Events > Settings > Integrations" +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:316 +msgid "Enter a custom API key" +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:321 +msgid "Plugin(s) are out of date" +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:322 +msgid "It's important to use the most recent versions of our plugins so that you have access to the latest features, bug fixes, and security updates. Plugin functionality can be comprimised if your site is running outdated or mis-matched versions." +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:324 +msgid "Check for updates" +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:343 +msgid "Common Error Messages" +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:344 +msgid "Here’s an overview of %s and what they mean." +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:349 +msgid "My calendar doesn’t look right." +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:355 +msgid "I installed the calendar and it crashed my site." +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:356 +msgid "%s and other common installation issues." +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:361 +msgid "I keep getting “Page Not Found” on events." +msgstr "" + +#: src/Tribe/Admin/Troubleshooting.php:362 +msgid "There are a few %s to resolve and prevent 404 errors." +msgstr "" + +#: src/Tribe/Ajax/Dropdown.php:38 +msgid "Cannot look for Terms without a taxonomy" +msgstr "" + +#: src/Tribe/Ajax/Dropdown.php:270 +msgid "Missing data source for this dropdown" +msgstr "" + +#: src/Tribe/Ajax/Dropdown.php:283 +msgid "Empty data set for this dropdown" +msgstr "" + +#: src/Tribe/Ajax/Dropdown.php:336 +msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance." +msgstr "" + +#: src/Tribe/App_Shop.php:50 +#: src/Tribe/App_Shop.php:51 +#: src/Tribe/App_Shop.php:82 +msgid "Event Add-Ons" +msgstr "" + +#: src/Tribe/App_Shop.php:177 +msgid "Events Marketing Bundle" +msgstr "" + +#: src/Tribe/App_Shop.php:180 +#: src/Tribe/App_Shop.php:204 +#: src/Tribe/App_Shop.php:223 +#: src/Tribe/App_Shop.php:236 +msgid "Save over 20%" +msgstr "" + +#: src/Tribe/App_Shop.php:181 +msgid "Ticket sales, attendee management, and email marketing for your events" +msgstr "" + +#: src/Tribe/App_Shop.php:189 +msgid "Event Importer Bundle" +msgstr "" + +#: src/Tribe/App_Shop.php:192 +msgid "Save over 25%" +msgstr "" + +#: src/Tribe/App_Shop.php:193 +msgid "Fill your calendar with events from across the web, including Google Calendar, Meetup, and more." +msgstr "" + +#: src/Tribe/App_Shop.php:201 +msgid "Virtual Events Marketing Bundle" +msgstr "" + +#: src/Tribe/App_Shop.php:205 +msgid "Streamline your online events and increase revenue." +msgstr "" + +#: src/Tribe/App_Shop.php:213 +msgid "Sell tickets and earn revenue for online events" +msgstr "" + +#: src/Tribe/App_Shop.php:214 +#: src/Tribe/Plugins_API.php:274 +msgid "Zoom integration" +msgstr "" + +#: src/Tribe/App_Shop.php:215 +msgid "Automated emails optimized for virtual events" +msgstr "" + +#: src/Tribe/App_Shop.php:216 +msgid "Add recurring events" +msgstr "" + +#: src/Tribe/App_Shop.php:220 +msgid "Community Manager Bundle" +msgstr "" + +#: src/Tribe/App_Shop.php:224 +msgid "Handle event submissions with ticket sales and everything you need to build a robust community." +msgstr "" + +#: src/Tribe/App_Shop.php:233 +msgid "Ultimate Bundle" +msgstr "" + +#: src/Tribe/App_Shop.php:237 +msgid "All of our premium events management plugins at a deep discount." +msgstr "" + +#: src/Tribe/App_Shop.php:264 +msgid "Website URL CTA" +msgstr "" + +#: src/Tribe/App_Shop.php:267 +msgid "Create a strong call-to-action for attendees to \"Join Webinar\" instead of only sharing a website address." +msgstr "" + +#: src/Tribe/App_Shop.php:270 +msgid "Link Directly to Webinar" +msgstr "" + +#: src/Tribe/App_Shop.php:273 +msgid "When users click on the event title, they’ll be taken right to the source of your event, offering a direct route to join." +msgstr "" + +#: src/Tribe/App_Shop.php:276 +msgid "Events Happening Now" +msgstr "" + +#: src/Tribe/App_Shop.php:279 +msgid "Use this shortcode to display events that are currently in progress, like webinars and livestreams." +msgstr "" + +#: src/Tribe/App_Shop.php:282 +msgid "Custom Venue Links" +msgstr "" + +#: src/Tribe/App_Shop.php:285 +msgid "Turn the venue name for your event into a clickable URL — a great way to link directly to a venue’s website or a virtual meeting." +msgstr "" + +#: src/Tribe/App_Shop.php:288 +msgid "Adjust Label" +msgstr "" + +#: src/Tribe/App_Shop.php:291 +msgid "Change \"Events\" to \"Webinars,\" or \"Venues\" to \"Livestream,\" or \"Organizers\" to \"Hosts.\" Tailor your calendar for virtual events and meetings." +msgstr "" + +#: src/Tribe/App_Shop.php:294 +msgid "Reach Attendees" +msgstr "" + +#: src/Tribe/App_Shop.php:297 +msgid "From registration to attendance history, view every step of the event lifecycle with this HubSpot integration." +msgstr "" + +#: src/Tribe/App_Shop.php:314 +msgid "The online course platform created by e-learning experts." +msgstr "" + +#: src/Tribe/App_Shop.php:316 +msgid "Add Courses" +msgstr "" + +#: src/Tribe/App_Shop.php:317 +msgid "Trusted to power learning programs for major universities, startups, entrepreneurs, and bloggers worldwide." +msgstr "" + +#: src/Tribe/App_Shop.php:322 +msgid "Foundational favorites: iThemes Security and Developer Toolkit." +msgstr "" + +#: src/Tribe/App_Shop.php:324 +msgid "Add Security" +msgstr "" + +#: src/Tribe/App_Shop.php:325 +msgid "iThemes Security, the WordPress security plugin that’s easy to use. Built with performance in mind." +msgstr "" + +#: src/Tribe/App_Shop.php:330 +msgid "Built with developers in mind." +msgstr "" + +#: src/Tribe/App_Shop.php:332 +msgid "Add Content Restriction" +msgstr "" + +#: src/Tribe/App_Shop.php:333 +msgid "Restrict Content Pro is flexible, easy to extend, and chock full of action hooks and filters, making it easy to modify and tweak to your specific needs." +msgstr "" + +#: src/Tribe/App_Shop.php:338 +msgid "Build better WordPress websites with Kadence." +msgstr "" + +#: src/Tribe/App_Shop.php:340 +msgid "Add Starter Templates" +msgstr "" + +#: src/Tribe/App_Shop.php:341 +msgid "Kadence lets you unlock your creativity in the WordPress Block Editor with expertly designed blocks, a robust theme, and a massive library of starter templates." +msgstr "" + +#: src/Tribe/App_Shop.php:346 +msgid "Sales-boosting WooCommerce plugins." +msgstr "" + +#: src/Tribe/App_Shop.php:348 +msgid "Add Commerce Tools" +msgstr "" + +#: src/Tribe/App_Shop.php:349 +msgid "" +"Easy-to-use WooCommerce plugins work perfectly together, with any theme. Create a fast and profitable eCommerce store without any technical knowledge.\n" +"\t\t\t\t\t" +msgstr "" + +#: src/Tribe/App_Shop.php:355 +msgid "The best WordPress donation plugin." +msgstr "" + +#: src/Tribe/App_Shop.php:357 +msgid "Add Donations" +msgstr "" + +#: src/Tribe/App_Shop.php:358 +msgid "GiveWP makes it easy to raise money online with donation forms, donor databases, and fundraising reporting." +msgstr "" + +#: src/Tribe/Cost_Utils.php:114 +msgid "Free" +msgstr "" + +#: src/Tribe/Credits.php:31 +msgid "This calendar is powered by The Events Calendar." +msgstr "" + +#: src/Tribe/Credits.php:48 +msgid "Rate %1$sThe Events Calendar%2$s %3$s" +msgstr "" + +#: src/Tribe/Credits.php:51 +msgid "If you like %1$sEvent Tickets%2$s please leave us a %3$s. It takes a minute and it helps a lot." +msgstr "" + +#: src/Tribe/Customizer.php:665 +msgid "Use the following panel of your customizer to change the styling of your Calendar and Event pages." +msgstr "" + +#: src/Tribe/Customizer.php:1026 +msgctxt "Page title for the TEC Customizer section." +msgid "Customize The Events Calendar" +msgstr "" + +#: src/Tribe/Customizer.php:1027 +msgctxt "Menu item text for the TEC Customizer section link." +msgid "Customize The Events Calendar" +msgstr "" + +#: src/Tribe/Customizer.php:1052 +msgid "Customizer" +msgstr "" + +#: src/Tribe/Customizer.php:1056 +msgid "Adjust colors, fonts, and more with the WordPress Customizer." +msgstr "" + +#. translators: %1$s: opening anchor tag; %2$s: closing anchor tag +#: src/Tribe/Customizer.php:1062 +msgctxt "Link text added to the TEC->Settings->Display tab." +msgid "%1$sCustomize The Events Calendar%2$s" +msgstr "" + +#: src/Tribe/Debug_Bar/Panels/Context.php:22 +#: src/Tribe/Debug_Bar/Panels/Context.php:50 +msgid "The Events Calendar Context" +msgstr "" + +#: src/Tribe/Debug_Bar/Panels/Context.php:53 +msgid "PHP Render Context" +msgstr "" + +#: src/Tribe/Debug_Bar/Panels/Context.php:61 +msgid "Key" +msgstr "" + +#: src/Tribe/Debug_Bar/Panels/Context.php:62 +msgid "Value" +msgstr "" + +#: src/Tribe/Debug_Bar/Panels/Context.php:63 +msgid "ORM arg" +msgstr "" + +#: src/Tribe/Debug_Bar/Panels/Context.php:64 +msgid "Reads" +msgstr "" + +#: src/Tribe/Debug_Bar/Panels/Context.php:65 +msgid "Writes" +msgstr "" + +#: src/Tribe/Debug_Bar/Panels/Context.php:91 +msgid "State" +msgstr "" + +#: src/Tribe/Debug_Bar/Panels/Json_Ld.php:21 +#: src/Tribe/Debug_Bar/Panels/Json_Ld.php:40 +msgid "The Events Calendar JSON-LD Data" +msgstr "" + +#: src/Tribe/Dialog/View.php:157 +msgid "Open the modal window" +msgstr "" + +#: src/Tribe/Dialog/View.php:158 +msgid "Close this modal window" +msgstr "" + +#: src/Tribe/Dialog/View.php:228 +#: src/Tribe/Dialog/View.php:300 +msgid "Cancel" +msgstr "" + +#: src/Tribe/Dialog/View.php:229 +msgid "Confirm" +msgstr "" + +#: src/Tribe/Dialog/View.php:302 +#: src/Tribe/Dialog/View.php:371 +msgid "OK" +msgstr "" + +#: src/Tribe/Dialog/View.php:443 +msgid "Open the dialog window" +msgstr "" + +#: src/Tribe/Dialog/View.php:460 +msgid "Close this dialog window" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:24 +msgid "The cost currency symbol" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:28 +msgid "The position of the currency symbol in the cost string" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:34 +msgid "A sorted array of all the numeric values for the cost" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:24 +msgid "The date year" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:28 +msgid "The date month" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:32 +msgid "The date day" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:36 +msgid "The date hour" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:40 +msgid "The date minutes" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:44 +msgid "The date seconds" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:25 +msgid "The URL to the full size version of the image" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:29 +msgid "The image WordPress post ID" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:33 +msgid "The image file extension" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:37 +msgid "The image natural width in pixels" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:41 +msgid "The image natural height in pixels" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:45 +msgid "The details about each size available for the image" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:24 +msgid "The image width in pixels in the specified size" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:28 +msgid "The image height in pixels in the specified size" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:32 +msgid "The image mime-type" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:37 +msgid "The link to the image in the specified size on the site" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:24 +msgid "The WordPress term ID" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:28 +msgid "The term name" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:32 +msgid "The term slug" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:36 +msgid "The taxonomy the term belongs to" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:40 +msgid "The term description" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:44 +msgid "The term parent term if any" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:48 +msgid "The number of posts associated with the term" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:52 +msgid "The URL to the term archive page" +msgstr "" + +#: src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:57 +msgid "A list of links to the term own, archive and parent REST URL" +msgstr "" + +#: src/Tribe/Editor/Blocks/Abstract.php:123 +msgid "Problem loading the block, please remove this block to restart." +msgstr "" + +#: src/Tribe/Editor/Meta.php:105 +msgid "Numeric Array" +msgstr "" + +#: src/Tribe/Editor/Meta.php:123 +msgid "Text Array" +msgstr "" + +#: src/Tribe/Extension.php:144 +msgid "Tutorial" +msgstr "" + +#: src/Tribe/Extension.php:406 +msgid "Unable to run Tribe Extensions. Your website host is running PHP 5.2 or older, and has likely disabled or misconfigured debug_backtrace(). You, or your website host, will need to upgrade PHP or properly configure debug_backtrace() for Tribe Extensions to work." +msgstr "" + +#: src/Tribe/Extension.php:421 +msgctxt "extension disallowed" +msgid "This extension has been programmatically disallowed. The most common reason is due to another The Events Calendar plugin having absorbed or replaced this extension's functionality. This extension plugin has been deactivated, and you should likely delete it." +msgstr "" + +#: src/Tribe/Field.php:253 +msgid "Invalid field type specified" +msgstr "" + +#: src/Tribe/Field.php:557 +msgid "No radio options specified" +msgstr "" + +#: src/Tribe/Field.php:593 +msgid "No checkbox options specified" +msgstr "" + +#: src/Tribe/Field.php:655 +msgid "No select options specified" +msgstr "" + +#: src/Tribe/Field.php:757 +msgid "Select Image" +msgstr "" + +#: src/Tribe/Field.php:758 +msgid "Remove Image" +msgstr "" + +#: src/Tribe/Field.php:762 +msgid "Select an image" +msgstr "" + +#: src/Tribe/Field.php:763 +msgid "Use this image" +msgstr "" + +#: src/Tribe/Languages/Locations.php:79 +msgid "United States" +msgstr "" + +#: src/Tribe/Languages/Locations.php:80 +msgid "Afghanistan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:81 +msgid "Åland Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:82 +msgid "Albania" +msgstr "" + +#: src/Tribe/Languages/Locations.php:83 +msgid "Algeria" +msgstr "" + +#: src/Tribe/Languages/Locations.php:84 +msgid "American Samoa" +msgstr "" + +#: src/Tribe/Languages/Locations.php:85 +msgid "Andorra" +msgstr "" + +#: src/Tribe/Languages/Locations.php:86 +msgid "Angola" +msgstr "" + +#: src/Tribe/Languages/Locations.php:87 +msgid "Anguilla" +msgstr "" + +#: src/Tribe/Languages/Locations.php:88 +msgid "Antarctica" +msgstr "" + +#: src/Tribe/Languages/Locations.php:89 +msgid "Antigua and Barbuda" +msgstr "" + +#: src/Tribe/Languages/Locations.php:90 +msgid "Argentina" +msgstr "" + +#: src/Tribe/Languages/Locations.php:91 +msgid "Armenia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:92 +msgid "Aruba" +msgstr "" + +#: src/Tribe/Languages/Locations.php:93 +msgid "Australia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:94 +msgid "Austria" +msgstr "" + +#: src/Tribe/Languages/Locations.php:95 +msgid "Azerbaijan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:96 +msgid "Bahamas" +msgstr "" + +#: src/Tribe/Languages/Locations.php:97 +msgid "Bahrain" +msgstr "" + +#: src/Tribe/Languages/Locations.php:98 +msgid "Bangladesh" +msgstr "" + +#: src/Tribe/Languages/Locations.php:99 +msgid "Barbados" +msgstr "" + +#: src/Tribe/Languages/Locations.php:100 +msgid "Belarus" +msgstr "" + +#: src/Tribe/Languages/Locations.php:101 +msgid "Belgium" +msgstr "" + +#: src/Tribe/Languages/Locations.php:102 +msgid "Belize" +msgstr "" + +#: src/Tribe/Languages/Locations.php:103 +msgid "Benin" +msgstr "" + +#: src/Tribe/Languages/Locations.php:104 +msgid "Bermuda" +msgstr "" + +#: src/Tribe/Languages/Locations.php:105 +msgid "Bhutan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:106 +msgid "Bolivia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:107 +msgid "Bosnia and Herzegovina" +msgstr "" + +#: src/Tribe/Languages/Locations.php:108 +msgid "Botswana" +msgstr "" + +#: src/Tribe/Languages/Locations.php:109 +msgid "Bouvet Island" +msgstr "" + +#: src/Tribe/Languages/Locations.php:110 +msgid "Brazil" +msgstr "" + +#: src/Tribe/Languages/Locations.php:111 +msgid "British Indian Ocean Territory" +msgstr "" + +#: src/Tribe/Languages/Locations.php:112 +msgid "Brunei Darussalam" +msgstr "" + +#: src/Tribe/Languages/Locations.php:113 +msgid "Bulgaria" +msgstr "" + +#: src/Tribe/Languages/Locations.php:114 +msgid "Burkina Faso" +msgstr "" + +#: src/Tribe/Languages/Locations.php:115 +msgid "Burundi" +msgstr "" + +#: src/Tribe/Languages/Locations.php:116 +msgid "Cambodia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:117 +msgid "Cameroon" +msgstr "" + +#: src/Tribe/Languages/Locations.php:118 +msgid "Canada" +msgstr "" + +#: src/Tribe/Languages/Locations.php:119 +msgid "Cape Verde" +msgstr "" + +#: src/Tribe/Languages/Locations.php:120 +msgid "Cayman Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:121 +msgid "Central African Republic" +msgstr "" + +#: src/Tribe/Languages/Locations.php:122 +msgid "Chad" +msgstr "" + +#: src/Tribe/Languages/Locations.php:123 +msgid "Chile" +msgstr "" + +#: src/Tribe/Languages/Locations.php:124 +msgid "China" +msgstr "" + +#: src/Tribe/Languages/Locations.php:125 +msgid "Christmas Island" +msgstr "" + +#: src/Tribe/Languages/Locations.php:126 +msgid "Cocos (Keeling) Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:127 +msgid "Collectivity of Saint Martin" +msgstr "" + +#: src/Tribe/Languages/Locations.php:128 +msgid "Colombia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:129 +msgid "Comoros" +msgstr "" + +#: src/Tribe/Languages/Locations.php:130 +msgid "Congo" +msgstr "" + +#: src/Tribe/Languages/Locations.php:131 +msgid "Congo, Democratic Republic of the" +msgstr "" + +#: src/Tribe/Languages/Locations.php:132 +msgid "Cook Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:133 +msgid "Costa Rica" +msgstr "" + +#: src/Tribe/Languages/Locations.php:134 +msgid "Côte d'Ivoire" +msgstr "" + +#: src/Tribe/Languages/Locations.php:135 +msgid "Croatia (Local Name: Hrvatska)" +msgstr "" + +#: src/Tribe/Languages/Locations.php:136 +msgid "Cuba" +msgstr "" + +#: src/Tribe/Languages/Locations.php:137 +msgid "Curaçao" +msgstr "" + +#: src/Tribe/Languages/Locations.php:138 +msgid "Cyprus" +msgstr "" + +#: src/Tribe/Languages/Locations.php:139 +msgid "Czech Republic" +msgstr "" + +#: src/Tribe/Languages/Locations.php:140 +msgid "Denmark" +msgstr "" + +#: src/Tribe/Languages/Locations.php:141 +msgid "Djibouti" +msgstr "" + +#: src/Tribe/Languages/Locations.php:142 +msgid "Dominica" +msgstr "" + +#: src/Tribe/Languages/Locations.php:143 +msgid "Dominican Republic" +msgstr "" + +#: src/Tribe/Languages/Locations.php:144 +msgid "East Timor" +msgstr "" + +#: src/Tribe/Languages/Locations.php:145 +msgid "Ecuador" +msgstr "" + +#: src/Tribe/Languages/Locations.php:146 +msgid "Egypt" +msgstr "" + +#: src/Tribe/Languages/Locations.php:147 +msgid "El Salvador" +msgstr "" + +#: src/Tribe/Languages/Locations.php:148 +msgid "Equatorial Guinea" +msgstr "" + +#: src/Tribe/Languages/Locations.php:149 +msgid "Eritrea" +msgstr "" + +#: src/Tribe/Languages/Locations.php:150 +msgid "Estonia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:151 +msgid "Ethiopia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:152 +msgid "Falkland Islands (Malvinas)" +msgstr "" + +#: src/Tribe/Languages/Locations.php:153 +msgid "Faroe Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:154 +msgid "Fiji" +msgstr "" + +#: src/Tribe/Languages/Locations.php:155 +msgid "Finland" +msgstr "" + +#: src/Tribe/Languages/Locations.php:156 +msgid "France" +msgstr "" + +#: src/Tribe/Languages/Locations.php:157 +msgid "French Guiana" +msgstr "" + +#: src/Tribe/Languages/Locations.php:158 +msgid "French Polynesia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:159 +msgid "French Southern Territories" +msgstr "" + +#: src/Tribe/Languages/Locations.php:160 +msgid "Gabon" +msgstr "" + +#: src/Tribe/Languages/Locations.php:161 +msgid "Gambia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:162 +msgctxt "The country" +msgid "Georgia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:163 +msgid "Germany" +msgstr "" + +#: src/Tribe/Languages/Locations.php:164 +msgid "Ghana" +msgstr "" + +#: src/Tribe/Languages/Locations.php:165 +msgid "Gibraltar" +msgstr "" + +#: src/Tribe/Languages/Locations.php:166 +msgid "Greece" +msgstr "" + +#: src/Tribe/Languages/Locations.php:167 +msgid "Greenland" +msgstr "" + +#: src/Tribe/Languages/Locations.php:168 +msgid "Grenada" +msgstr "" + +#: src/Tribe/Languages/Locations.php:169 +msgid "Guadeloupe" +msgstr "" + +#: src/Tribe/Languages/Locations.php:170 +msgid "Guam" +msgstr "" + +#: src/Tribe/Languages/Locations.php:171 +msgid "Guatemala" +msgstr "" + +#: src/Tribe/Languages/Locations.php:172 +msgid "Guinea" +msgstr "" + +#: src/Tribe/Languages/Locations.php:173 +msgid "Guinea-Bissau" +msgstr "" + +#: src/Tribe/Languages/Locations.php:174 +msgid "Guyana" +msgstr "" + +#: src/Tribe/Languages/Locations.php:175 +msgid "Haiti" +msgstr "" + +#: src/Tribe/Languages/Locations.php:176 +msgid "Heard and McDonald Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:177 +msgid "Holy See (Vatican City State)" +msgstr "" + +#: src/Tribe/Languages/Locations.php:178 +msgid "Honduras" +msgstr "" + +#: src/Tribe/Languages/Locations.php:179 +msgid "Hong Kong" +msgstr "" + +#: src/Tribe/Languages/Locations.php:180 +msgid "Hungary" +msgstr "" + +#: src/Tribe/Languages/Locations.php:181 +msgid "Iceland" +msgstr "" + +#: src/Tribe/Languages/Locations.php:182 +msgid "India" +msgstr "" + +#: src/Tribe/Languages/Locations.php:183 +msgid "Indonesia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:184 +msgid "Iran, Islamic Republic of" +msgstr "" + +#: src/Tribe/Languages/Locations.php:185 +msgid "Iraq" +msgstr "" + +#: src/Tribe/Languages/Locations.php:186 +msgid "Ireland" +msgstr "" + +#: src/Tribe/Languages/Locations.php:187 +msgid "Israel" +msgstr "" + +#: src/Tribe/Languages/Locations.php:188 +msgid "Italy" +msgstr "" + +#: src/Tribe/Languages/Locations.php:189 +msgid "Jamaica" +msgstr "" + +#: src/Tribe/Languages/Locations.php:190 +msgid "Japan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:191 +msgid "Jordan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:192 +msgid "Kazakhstan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:193 +msgid "Kenya" +msgstr "" + +#: src/Tribe/Languages/Locations.php:194 +msgid "Kiribati" +msgstr "" + +#: src/Tribe/Languages/Locations.php:195 +msgid "Korea, Democratic People's Republic of" +msgstr "" + +#: src/Tribe/Languages/Locations.php:196 +msgid "Korea, Republic of" +msgstr "" + +#: src/Tribe/Languages/Locations.php:197 +msgid "Kuwait" +msgstr "" + +#: src/Tribe/Languages/Locations.php:198 +msgid "Kyrgyzstan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:199 +msgid "Lao People's Democratic Republic" +msgstr "" + +#: src/Tribe/Languages/Locations.php:200 +msgid "Latvia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:201 +msgid "Lebanon" +msgstr "" + +#: src/Tribe/Languages/Locations.php:202 +msgid "Lesotho" +msgstr "" + +#: src/Tribe/Languages/Locations.php:203 +msgid "Liberia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:204 +msgid "Libya" +msgstr "" + +#: src/Tribe/Languages/Locations.php:205 +msgid "Liechtenstein" +msgstr "" + +#: src/Tribe/Languages/Locations.php:206 +msgid "Lithuania" +msgstr "" + +#: src/Tribe/Languages/Locations.php:207 +msgid "Luxembourg" +msgstr "" + +#: src/Tribe/Languages/Locations.php:208 +msgid "Macau" +msgstr "" + +#: src/Tribe/Languages/Locations.php:209 +msgid "Madagascar" +msgstr "" + +#: src/Tribe/Languages/Locations.php:210 +msgid "Malawi" +msgstr "" + +#: src/Tribe/Languages/Locations.php:211 +msgid "Malaysia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:212 +msgid "Maldives" +msgstr "" + +#: src/Tribe/Languages/Locations.php:213 +msgid "Mali" +msgstr "" + +#: src/Tribe/Languages/Locations.php:214 +msgid "Malta" +msgstr "" + +#: src/Tribe/Languages/Locations.php:215 +msgid "Marshall Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:216 +msgid "Martinique" +msgstr "" + +#: src/Tribe/Languages/Locations.php:217 +msgid "Mauritania" +msgstr "" + +#: src/Tribe/Languages/Locations.php:218 +msgid "Mauritius" +msgstr "" + +#: src/Tribe/Languages/Locations.php:219 +msgid "Mayotte" +msgstr "" + +#: src/Tribe/Languages/Locations.php:220 +msgid "Mexico" +msgstr "" + +#: src/Tribe/Languages/Locations.php:221 +msgid "Micronesia, Federated States of" +msgstr "" + +#: src/Tribe/Languages/Locations.php:222 +msgid "Moldova, Republic of" +msgstr "" + +#: src/Tribe/Languages/Locations.php:223 +msgid "Monaco" +msgstr "" + +#: src/Tribe/Languages/Locations.php:224 +msgid "Mongolia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:225 +msgid "Montenegro" +msgstr "" + +#: src/Tribe/Languages/Locations.php:226 +msgid "Montserrat" +msgstr "" + +#: src/Tribe/Languages/Locations.php:227 +msgid "Morocco" +msgstr "" + +#: src/Tribe/Languages/Locations.php:228 +msgid "Mozambique" +msgstr "" + +#: src/Tribe/Languages/Locations.php:229 +msgid "Myanmar" +msgstr "" + +#: src/Tribe/Languages/Locations.php:230 +msgid "Namibia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:231 +msgid "Nauru" +msgstr "" + +#: src/Tribe/Languages/Locations.php:232 +msgid "Nepal" +msgstr "" + +#: src/Tribe/Languages/Locations.php:233 +msgid "Netherlands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:234 +msgid "New Caledonia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:235 +msgid "New Zealand" +msgstr "" + +#: src/Tribe/Languages/Locations.php:236 +msgid "Nicaragua" +msgstr "" + +#: src/Tribe/Languages/Locations.php:237 +msgid "Niger" +msgstr "" + +#: src/Tribe/Languages/Locations.php:238 +msgid "Nigeria" +msgstr "" + +#: src/Tribe/Languages/Locations.php:239 +msgid "Niue" +msgstr "" + +#: src/Tribe/Languages/Locations.php:240 +msgid "Norfolk Island" +msgstr "" + +#: src/Tribe/Languages/Locations.php:241 +msgid "North Macedonia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:242 +msgid "Northern Mariana Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:243 +msgid "Norway" +msgstr "" + +#: src/Tribe/Languages/Locations.php:244 +msgid "Oman" +msgstr "" + +#: src/Tribe/Languages/Locations.php:245 +msgid "Pakistan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:246 +msgid "Palau" +msgstr "" + +#: src/Tribe/Languages/Locations.php:247 +msgid "Panama" +msgstr "" + +#: src/Tribe/Languages/Locations.php:248 +msgid "Papua New Guinea" +msgstr "" + +#: src/Tribe/Languages/Locations.php:249 +msgid "Paraguay" +msgstr "" + +#: src/Tribe/Languages/Locations.php:250 +msgid "Peru" +msgstr "" + +#: src/Tribe/Languages/Locations.php:251 +msgid "Philippines" +msgstr "" + +#: src/Tribe/Languages/Locations.php:252 +msgid "Pitcairn" +msgstr "" + +#: src/Tribe/Languages/Locations.php:253 +msgid "Poland" +msgstr "" + +#: src/Tribe/Languages/Locations.php:254 +msgid "Portugal" +msgstr "" + +#: src/Tribe/Languages/Locations.php:255 +msgid "Puerto Rico" +msgstr "" + +#: src/Tribe/Languages/Locations.php:256 +msgid "Qatar" +msgstr "" + +#: src/Tribe/Languages/Locations.php:257 +msgid "Reunion" +msgstr "" + +#: src/Tribe/Languages/Locations.php:258 +msgid "Romania" +msgstr "" + +#: src/Tribe/Languages/Locations.php:259 +msgid "Russian Federation" +msgstr "" + +#: src/Tribe/Languages/Locations.php:260 +msgid "Rwanda" +msgstr "" + +#: src/Tribe/Languages/Locations.php:261 +msgid "Saint Barthélemy" +msgstr "" + +#: src/Tribe/Languages/Locations.php:262 +msgid "Saint Helena" +msgstr "" + +#: src/Tribe/Languages/Locations.php:263 +msgid "Saint Kitts and Nevis" +msgstr "" + +#: src/Tribe/Languages/Locations.php:264 +msgid "Saint Lucia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:265 +msgid "Saint Pierre and Miquelon" +msgstr "" + +#: src/Tribe/Languages/Locations.php:266 +msgid "Saint Vincent and The Grenadines" +msgstr "" + +#: src/Tribe/Languages/Locations.php:267 +msgid "Samoa" +msgstr "" + +#: src/Tribe/Languages/Locations.php:268 +msgid "San Marino" +msgstr "" + +#: src/Tribe/Languages/Locations.php:269 +msgid "São Tomé and Príncipe" +msgstr "" + +#: src/Tribe/Languages/Locations.php:270 +msgid "Saudi Arabia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:271 +msgid "Senegal" +msgstr "" + +#: src/Tribe/Languages/Locations.php:272 +msgid "Serbia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:273 +msgid "Seychelles" +msgstr "" + +#: src/Tribe/Languages/Locations.php:274 +msgid "Sierra Leone" +msgstr "" + +#: src/Tribe/Languages/Locations.php:275 +msgid "Singapore" +msgstr "" + +#: src/Tribe/Languages/Locations.php:276 +msgid "Sint Maarten" +msgstr "" + +#: src/Tribe/Languages/Locations.php:277 +msgid "Slovakia (Slovak Republic)" +msgstr "" + +#: src/Tribe/Languages/Locations.php:278 +msgid "Slovenia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:279 +msgid "Solomon Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:280 +msgid "Somalia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:281 +msgid "South Africa" +msgstr "" + +#: src/Tribe/Languages/Locations.php:282 +msgid "South Georgia, South Sandwich Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:283 +msgid "Spain" +msgstr "" + +#: src/Tribe/Languages/Locations.php:284 +msgid "Sri Lanka" +msgstr "" + +#: src/Tribe/Languages/Locations.php:285 +msgid "Sudan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:286 +msgid "Suriname" +msgstr "" + +#: src/Tribe/Languages/Locations.php:287 +msgid "Svalbard and Jan Mayen Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:288 +msgid "Swaziland" +msgstr "" + +#: src/Tribe/Languages/Locations.php:289 +msgid "Sweden" +msgstr "" + +#: src/Tribe/Languages/Locations.php:290 +msgid "Switzerland" +msgstr "" + +#: src/Tribe/Languages/Locations.php:291 +msgid "Syrian Arab Republic" +msgstr "" + +#: src/Tribe/Languages/Locations.php:292 +msgid "Taiwan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:293 +msgid "Tajikistan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:294 +msgid "Tanzania, United Republic of" +msgstr "" + +#: src/Tribe/Languages/Locations.php:295 +msgid "Thailand" +msgstr "" + +#: src/Tribe/Languages/Locations.php:296 +msgid "Togo" +msgstr "" + +#: src/Tribe/Languages/Locations.php:297 +msgid "Tokelau" +msgstr "" + +#: src/Tribe/Languages/Locations.php:298 +msgid "Tonga" +msgstr "" + +#: src/Tribe/Languages/Locations.php:299 +msgid "Trinidad and Tobago" +msgstr "" + +#: src/Tribe/Languages/Locations.php:300 +msgid "Tunisia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:301 +msgid "Turkey" +msgstr "" + +#: src/Tribe/Languages/Locations.php:302 +msgid "Turkmenistan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:303 +msgid "Turks and Caicos Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:304 +msgid "Tuvalu" +msgstr "" + +#: src/Tribe/Languages/Locations.php:305 +msgid "Uganda" +msgstr "" + +#: src/Tribe/Languages/Locations.php:306 +msgid "Ukraine" +msgstr "" + +#: src/Tribe/Languages/Locations.php:307 +msgid "United Arab Emirates" +msgstr "" + +#: src/Tribe/Languages/Locations.php:308 +msgid "United Kingdom" +msgstr "" + +#: src/Tribe/Languages/Locations.php:309 +msgid "United States Minor Outlying Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:310 +msgid "Uruguay" +msgstr "" + +#: src/Tribe/Languages/Locations.php:311 +msgid "Uzbekistan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:312 +msgid "Vanuatu" +msgstr "" + +#: src/Tribe/Languages/Locations.php:313 +msgid "Venezuela" +msgstr "" + +#: src/Tribe/Languages/Locations.php:314 +msgid "Viet Nam" +msgstr "" + +#: src/Tribe/Languages/Locations.php:315 +msgid "Virgin Islands (British)" +msgstr "" + +#: src/Tribe/Languages/Locations.php:316 +msgid "Virgin Islands (U.S.)" +msgstr "" + +#: src/Tribe/Languages/Locations.php:317 +msgid "Wallis and Futuna Islands" +msgstr "" + +#: src/Tribe/Languages/Locations.php:318 +msgid "Western Sahara" +msgstr "" + +#: src/Tribe/Languages/Locations.php:319 +msgid "Yemen" +msgstr "" + +#: src/Tribe/Languages/Locations.php:320 +msgid "Zambia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:321 +msgid "Zimbabwe" +msgstr "" + +#: src/Tribe/Languages/Locations.php:348 +msgid "Alabama" +msgstr "" + +#: src/Tribe/Languages/Locations.php:349 +msgid "Alaska" +msgstr "" + +#: src/Tribe/Languages/Locations.php:350 +msgid "Arizona" +msgstr "" + +#: src/Tribe/Languages/Locations.php:351 +msgid "Arkansas" +msgstr "" + +#: src/Tribe/Languages/Locations.php:352 +msgid "California" +msgstr "" + +#: src/Tribe/Languages/Locations.php:353 +msgid "Colorado" +msgstr "" + +#: src/Tribe/Languages/Locations.php:354 +msgid "Connecticut" +msgstr "" + +#: src/Tribe/Languages/Locations.php:355 +msgid "Delaware" +msgstr "" + +#: src/Tribe/Languages/Locations.php:356 +msgid "District of Columbia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:357 +msgid "Florida" +msgstr "" + +#: src/Tribe/Languages/Locations.php:358 +msgctxt "The US state Georgia" +msgid "Georgia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:359 +msgid "Hawaii" +msgstr "" + +#: src/Tribe/Languages/Locations.php:360 +msgid "Idaho" +msgstr "" + +#: src/Tribe/Languages/Locations.php:361 +msgid "Illinois" +msgstr "" + +#: src/Tribe/Languages/Locations.php:362 +msgid "Indiana" +msgstr "" + +#: src/Tribe/Languages/Locations.php:363 +msgid "Iowa" +msgstr "" + +#: src/Tribe/Languages/Locations.php:364 +msgid "Kansas" +msgstr "" + +#: src/Tribe/Languages/Locations.php:365 +msgid "Kentucky" +msgstr "" + +#: src/Tribe/Languages/Locations.php:366 +msgid "Louisiana" +msgstr "" + +#: src/Tribe/Languages/Locations.php:367 +msgid "Maine" +msgstr "" + +#: src/Tribe/Languages/Locations.php:368 +msgid "Maryland" +msgstr "" + +#: src/Tribe/Languages/Locations.php:369 +msgid "Massachusetts" +msgstr "" + +#: src/Tribe/Languages/Locations.php:370 +msgid "Michigan" +msgstr "" + +#: src/Tribe/Languages/Locations.php:371 +msgid "Minnesota" +msgstr "" + +#: src/Tribe/Languages/Locations.php:372 +msgid "Mississippi" +msgstr "" + +#: src/Tribe/Languages/Locations.php:373 +msgid "Missouri" +msgstr "" + +#: src/Tribe/Languages/Locations.php:374 +msgid "Montana" +msgstr "" + +#: src/Tribe/Languages/Locations.php:375 +msgid "Nebraska" +msgstr "" + +#: src/Tribe/Languages/Locations.php:376 +msgid "Nevada" +msgstr "" + +#: src/Tribe/Languages/Locations.php:377 +msgid "New Hampshire" +msgstr "" + +#: src/Tribe/Languages/Locations.php:378 +msgid "New Jersey" +msgstr "" + +#: src/Tribe/Languages/Locations.php:379 +msgid "New Mexico" +msgstr "" + +#: src/Tribe/Languages/Locations.php:380 +msgid "New York" +msgstr "" + +#: src/Tribe/Languages/Locations.php:381 +msgid "North Carolina" +msgstr "" + +#: src/Tribe/Languages/Locations.php:382 +msgid "North Dakota" +msgstr "" + +#: src/Tribe/Languages/Locations.php:383 +msgid "Ohio" +msgstr "" + +#: src/Tribe/Languages/Locations.php:384 +msgid "Oklahoma" +msgstr "" + +#: src/Tribe/Languages/Locations.php:385 +msgid "Oregon" +msgstr "" + +#: src/Tribe/Languages/Locations.php:386 +msgid "Pennsylvania" +msgstr "" + +#: src/Tribe/Languages/Locations.php:387 +msgid "Rhode Island" +msgstr "" + +#: src/Tribe/Languages/Locations.php:388 +msgid "South Carolina" +msgstr "" + +#: src/Tribe/Languages/Locations.php:389 +msgid "South Dakota" +msgstr "" + +#: src/Tribe/Languages/Locations.php:390 +msgid "Tennessee" +msgstr "" + +#: src/Tribe/Languages/Locations.php:391 +msgid "Texas" +msgstr "" + +#: src/Tribe/Languages/Locations.php:392 +msgid "Utah" +msgstr "" + +#: src/Tribe/Languages/Locations.php:393 +msgid "Vermont" +msgstr "" + +#: src/Tribe/Languages/Locations.php:394 +msgid "Virginia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:395 +msgid "Washington" +msgstr "" + +#: src/Tribe/Languages/Locations.php:396 +msgid "West Virginia" +msgstr "" + +#: src/Tribe/Languages/Locations.php:397 +msgid "Wisconsin" +msgstr "" + +#: src/Tribe/Languages/Locations.php:398 +msgid "Wyoming" +msgstr "" + +#: src/Tribe/Log.php:288 +msgid "Cannot set %s as the current logging engine" +msgstr "" + +#: src/Tribe/Log.php:387 +msgid "Disabled" +msgstr "" + +#: src/Tribe/Log.php:388 +msgid "Only errors" +msgstr "" + +#: src/Tribe/Log.php:389 +msgid "Warnings and errors" +msgstr "" + +#: src/Tribe/Log.php:390 +msgid "Full debug (all events)" +msgstr "" + +#: src/Tribe/Log/Action_Logger.php:39 +msgid "Action-based Logger" +msgstr "" + +#: src/Tribe/Log/Action_Logger.php:84 +msgid "The Action Logger will dispatch any logging message using the \"tribe_log\" action writing, by default, to the PHP error log." +msgstr "" + +#: src/Tribe/Log/Admin.php:146 +msgctxt "log selector" +msgid "None currently available" +msgstr "" + +#: src/Tribe/Log/Admin.php:161 +msgctxt "log engines" +msgid "None currently available" +msgstr "" + +#: src/Tribe/Log/File_Logger.php:128 +msgid "Default (uses temporary files)" +msgstr "" + +#: src/Tribe/Log/Null_Logger.php:26 +msgid "Null logger (will log nothing)" +msgstr "" + +#: src/Tribe/Main.php:403 +msgid ": activate to sort column ascending" +msgstr "" + +#: src/Tribe/Main.php:404 +msgid ": activate to sort column descending" +msgstr "" + +#: src/Tribe/Main.php:406 +msgid "Show _MENU_ entries" +msgstr "" + +#: src/Tribe/Main.php:407 +msgid "No data available in table" +msgstr "" + +#: src/Tribe/Main.php:408 +msgid "Showing _START_ to _END_ of _TOTAL_ entries" +msgstr "" + +#: src/Tribe/Main.php:409 +msgid "Showing 0 to 0 of 0 entries" +msgstr "" + +#: src/Tribe/Main.php:410 +msgid "(filtered from _MAX_ total entries)" +msgstr "" + +#: src/Tribe/Main.php:411 +msgid "No matching records found" +msgstr "" + +#: src/Tribe/Main.php:412 +msgid "Search:" +msgstr "" + +#: src/Tribe/Main.php:413 +msgid "All items on this page were selected. " +msgstr "" + +#: src/Tribe/Main.php:414 +msgid "Select all pages" +msgstr "" + +#: src/Tribe/Main.php:415 +msgid "Clear Selection." +msgstr "" + +#: src/Tribe/Main.php:417 +msgid "All" +msgstr "" + +#: src/Tribe/Main.php:418 +#: src/Tribe/Main.php:435 +msgid "Next" +msgstr "" + +#: src/Tribe/Main.php:419 +msgid "Previous" +msgstr "" + +#: src/Tribe/Main.php:424 +msgid ": Selected %d rows" +msgstr "" + +#: src/Tribe/Main.php:425 +msgid ": Selected 1 row" +msgstr "" + +#: src/Tribe/Main.php:436 +msgid "Prev" +msgstr "" + +#: src/Tribe/Main.php:437 +#: src/Tribe/Main.php:439 +msgid "Today" +msgstr "" + +#: src/Tribe/Main.php:438 +msgid "Done" +msgstr "" + +#: src/Tribe/Main.php:440 +msgid "Clear" +msgstr "" + +#: src/Tribe/Plugins.php:147 +msgid "Using this function before \"plugins_loaded\" action has fired can return unreliable results." +msgstr "" + +#: src/Tribe/Plugins_API.php:30 +msgid "Our flagship free calendar" +msgstr "" + +#: src/Tribe/Plugins_API.php:31 +#: src/Tribe/Plugins_API.php:91 +msgid "The #1 calendar for WordPress" +msgstr "" + +#: src/Tribe/Plugins_API.php:33 +#: src/Tribe/Plugins_API.php:54 +msgid "Customizable" +msgstr "" + +#: src/Tribe/Plugins_API.php:34 +msgid "Import & export events" +msgstr "" + +#: src/Tribe/Plugins_API.php:35 +msgid "Timezone support" +msgstr "" + +#: src/Tribe/Plugins_API.php:36 +msgid "Multiple views" +msgstr "" + +#: src/Tribe/Plugins_API.php:50 +msgid "Automated imports for your calendar" +msgstr "" + +#: src/Tribe/Plugins_API.php:51 +msgid "Import events from Meetup, Eventbrite, iCal, Google Calendar, and more." +msgstr "" + +#: src/Tribe/Plugins_API.php:53 +msgid "Schedule automated imports" +msgstr "" + +#: src/Tribe/Plugins_API.php:55 +msgid "Works with Google Calendar, Meetup, and more" +msgstr "" + +#: src/Tribe/Plugins_API.php:56 +msgid "Refine by date, location, or keyword" +msgstr "" + +#: src/Tribe/Plugins_API.php:65 +msgid "Event Automator" +msgstr "" + +#: src/Tribe/Plugins_API.php:70 +msgid "Automate your event workflow with Zapier—no code required!" +msgstr "" + +#: src/Tribe/Plugins_API.php:71 +msgid "Connect The Events Calendar and Event Tickets with thousands of the most popular apps." +msgstr "" + +#: src/Tribe/Plugins_API.php:73 +msgid "Lead Management" +msgstr "" + +#: src/Tribe/Plugins_API.php:74 +msgid "Communication Outreach" +msgstr "" + +#: src/Tribe/Plugins_API.php:75 +msgid "Internal Processes" +msgstr "" + +#: src/Tribe/Plugins_API.php:76 +msgid "Data Management" +msgstr "" + +#: src/Tribe/Plugins_API.php:85 +msgid "Events Calendar Pro" +msgstr "" + +#: src/Tribe/Plugins_API.php:90 +msgid "Power up your calendar with Pro" +msgstr "" + +#: src/Tribe/Plugins_API.php:93 +msgid "Premium support" +msgstr "" + +#: src/Tribe/Plugins_API.php:94 +msgid "Recurring events & series" +msgstr "" + +#: src/Tribe/Plugins_API.php:95 +msgid "Additional views" +msgstr "" + +#: src/Tribe/Plugins_API.php:97 +msgid "Duplicate events" +msgstr "" + +#: src/Tribe/Plugins_API.php:111 +msgid "Manage ticketing and RSVPs" +msgstr "" + +#: src/Tribe/Plugins_API.php:112 +#: src/Tribe/Plugins_API.php:132 +msgid "Collect RSVPs and sell tickets" +msgstr "" + +#: src/Tribe/Plugins_API.php:114 +msgid "Add tickets and RSVP to any post" +msgstr "" + +#: src/Tribe/Plugins_API.php:115 +msgid "Paypal integration" +msgstr "" + +#: src/Tribe/Plugins_API.php:116 +msgid "Attendee reports" +msgstr "" + +#: src/Tribe/Plugins_API.php:117 +msgid "Customizable ticket template" +msgstr "" + +#: src/Tribe/Plugins_API.php:131 +msgid "Monetize your events" +msgstr "" + +#: src/Tribe/Plugins_API.php:134 +msgid "Custom registration fields" +msgstr "" + +#: src/Tribe/Plugins_API.php:135 +msgid "WooCommerce compatibility" +msgstr "" + +#: src/Tribe/Plugins_API.php:136 +msgid "Ticket scanning with mobile app" +msgstr "" + +#: src/Tribe/Plugins_API.php:137 +msgid "Custom attendee registration fields" +msgstr "" + +#: src/Tribe/Plugins_API.php:151 +msgid "An email marketing solution for events and the people running them" +msgstr "" + +#: src/Tribe/Plugins_API.php:152 +msgid "Email marketing to promote your events" +msgstr "" + +#: src/Tribe/Plugins_API.php:154 +msgid "Automate email touchpoints" +msgstr "" + +#: src/Tribe/Plugins_API.php:155 +msgid "Customize email templates" +msgstr "" + +#: src/Tribe/Plugins_API.php:156 +msgid "Streamline your email process" +msgstr "" + +#: src/Tribe/Plugins_API.php:157 +msgid "Segment your attendee lists" +msgstr "" + +#: src/Tribe/Plugins_API.php:171 +msgid "Help users find exactly the right event" +msgstr "" + +#: src/Tribe/Plugins_API.php:172 +msgid "Allow users to search for events by category, tag, venue, organizer, day of the week, time of day, and price." +msgstr "" + +#: src/Tribe/Plugins_API.php:174 +msgid "Configurable set of filters" +msgstr "" + +#: src/Tribe/Plugins_API.php:175 +msgid "Horizontal or vertical" +msgstr "" + +#: src/Tribe/Plugins_API.php:176 +msgid "Filter category, price, and more" +msgstr "" + +#: src/Tribe/Plugins_API.php:177 +msgid "Filter distance (for Events Calendar Pro)" +msgstr "" + +#: src/Tribe/Plugins_API.php:191 +msgid "Users submit events to your calendar" +msgstr "" + +#: src/Tribe/Plugins_API.php:192 +msgid "Enable 3rd party event submissions." +msgstr "" + +#: src/Tribe/Plugins_API.php:194 +msgid "Publishing Control" +msgstr "" + +#: src/Tribe/Plugins_API.php:195 +msgid "Event Submission Form" +msgstr "" + +#: src/Tribe/Plugins_API.php:196 +msgid "Registered User Settings" +msgstr "" + +#: src/Tribe/Plugins_API.php:197 +msgid "Email notifications" +msgstr "" + +#: src/Tribe/Plugins_API.php:211 +msgid "Run your own events marketplace" +msgstr "" + +#: src/Tribe/Plugins_API.php:212 +msgid "Let users create and sell tickets for events they submit to your calendar." +msgstr "" + +#: src/Tribe/Plugins_API.php:214 +msgid "Users submit events and sell tickets" +msgstr "" + +#: src/Tribe/Plugins_API.php:215 +msgid "Split commission with users" +msgstr "" + +#: src/Tribe/Plugins_API.php:216 +msgid "No admin access required" +msgstr "" + +#: src/Tribe/Plugins_API.php:217 +msgid "Sales reporting" +msgstr "" + +#: src/Tribe/Plugins_API.php:219 +msgctxt "Names of required plugins for Community Tickets" +msgid "Event Tickets Plus and Community Events" +msgstr "" + +#: src/Tribe/Plugins_API.php:232 +msgid "Unite the power of TEC with the ticketing of Eventbrite" +msgstr "" + +#: src/Tribe/Plugins_API.php:233 +msgid "Create Eventbrite tickets and events right from your WordPress dashboard." +msgstr "" + +#: src/Tribe/Plugins_API.php:235 +msgid "Manage tickets from WordPress" +msgstr "" + +#: src/Tribe/Plugins_API.php:236 +msgid "Ticket availability automatically updates" +msgstr "" + +#: src/Tribe/Plugins_API.php:237 +msgid "Integrated with your events on Eventbrite" +msgstr "" + +#: src/Tribe/Plugins_API.php:238 +msgid "Automatically import your events" +msgstr "" + +#: src/Tribe/Plugins_API.php:247 +msgid "Image Widget Plus" +msgstr "" + +#: src/Tribe/Plugins_API.php:252 +msgid "Beautiful display options for your favorite photos." +msgstr "" + +#: src/Tribe/Plugins_API.php:254 +msgid "Multi-Image Support" +msgstr "" + +#: src/Tribe/Plugins_API.php:255 +msgid "Lightbox" +msgstr "" + +#: src/Tribe/Plugins_API.php:256 +msgid "Slideshow" +msgstr "" + +#: src/Tribe/Plugins_API.php:257 +msgid "Random Images" +msgstr "" + +#: src/Tribe/Plugins_API.php:271 +msgid "Features to optimize your calendar for virtual events." +msgstr "" + +#: src/Tribe/Plugins_API.php:272 +msgid "Highlight virtual events on you calendar and integrate with your favorite online meeting tools." +msgstr "" + +#: src/Tribe/Plugins_API.php:275 +msgid "Virtual event labels" +msgstr "" + +#: src/Tribe/Plugins_API.php:276 +msgid "Status control for canceled or postponed events" +msgstr "" + +#: src/Tribe/Plugins_API.php:277 +msgid "Embed livestreams and videos" +msgstr "" + +#: src/Tribe/Process/Queue.php:1024 +msgid "Every %d Minutes" +msgstr "" + +#: src/Tribe/Promoter/Auth.php:41 +msgid "Promoter Key" +msgstr "" + +#: src/Tribe/PUE/Checker.php:605 +msgid "A valid license key is required for support and updates" +msgstr "" + +#: src/Tribe/PUE/Checker.php:608 +msgid "%1$sBuy a license%2$s for the Event Aggregator service to access additional import features." +msgstr "" + +#: src/Tribe/PUE/Checker.php:640 +#: src/Tribe/PUE/Checker.php:674 +msgid "License Key Status:" +msgstr "" + +#: src/Tribe/PUE/Checker.php:649 +msgid "Override network license key" +msgstr "" + +#: src/Tribe/PUE/Checker.php:650 +msgid "Check this box if you wish to override the network license key with your own" +msgstr "" + +#: src/Tribe/PUE/Checker.php:661 +msgid "Site License Key" +msgstr "" + +#: src/Tribe/PUE/Checker.php:761 +msgid "License key(s) updated." +msgstr "" + +#: src/Tribe/PUE/Checker.php:1015 +msgid "Hmmm... something's wrong with this validator. Please contact %ssupport%s." +msgstr "" + +#: src/Tribe/PUE/Checker.php:1028 +msgid "unknown date" +msgstr "" + +#: src/Tribe/PUE/Checker.php:1034 +msgid "Sorry, key validation server is not available." +msgstr "" + +#: src/Tribe/PUE/Checker.php:1060 +msgid "Valid Key! Expires on %s" +msgstr "" + +#: src/Tribe/PUE/Checker.php:1065 +msgid "Thanks for setting up a valid key. It will expire on %s" +msgstr "" + +#: src/Tribe/PUE/Checker.php:1094 +#: src/Tribe/PUE/Notices.php:360 +msgid "Renew Your License Now" +msgstr "" + +#: src/Tribe/PUE/Checker.php:1096 +#: src/Tribe/PUE/Notices.php:362 +msgid " (opens in a new window)" +msgstr "" + +#: src/Tribe/PUE/Checker.php:1113 +msgid "Please refresh the page and try your request again." +msgstr "" + +#: src/Tribe/PUE/Checker.php:1133 +msgid "There is an update for %s. You'll need to %scheck your license%s to have access to updates, downloads, and support." +msgstr "" + +#: src/Tribe/PUE/Checker.php:1190 +msgid "There is an update for %s. %sRenew your license%s to get access to bug fixes, security updates, and new features." +msgstr "" + +#: src/Tribe/PUE/Checker.php:1220 +msgid "Update now to version %s." +msgstr "" + +#: src/Tribe/PUE/Checker.php:1231 +msgid "There is a new version of %1$s available. %2$s" +msgstr "" + +#: src/Tribe/PUE/Checker.php:1812 +msgid "A valid license has been entered by your network administrator." +msgstr "" + +#: src/Tribe/PUE/Checker.php:1813 +msgid "No license entered. Consult your network administrator." +msgstr "" + +#: src/Tribe/PUE/Checker.php:1814 +msgid "Expired license. Consult your network administrator." +msgstr "" + +#: src/Tribe/PUE/Notices.php:293 +msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s." +msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s." +msgstr[0] "" +msgstr[1] "" + +#: src/Tribe/PUE/Notices.php:347 +msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s" +msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s" +msgstr[0] "" +msgstr[1] "" + +#: src/Tribe/PUE/Notices.php:388 +msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one." +msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones." +msgstr[0] "" +msgstr[1] "" + +#: src/Tribe/PUE/Notices.php:430 +msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s." +msgstr "" + +#: src/Tribe/PUE/Notices.php:485 +#: src/Tribe/PUE/Notices.php:528 +msgctxt "formatted plugin list" +msgid "%1$s and %2$s" +msgstr "" + +#: src/Tribe/PUE/Update_Prevention.php:184 +msgid "Your update failed due to an incompatibility between the version (%1$s) of the %2$s you tried to update to and the version of %3$s that you are using. %4$s" +msgstr "" + +#: src/Tribe/Repository.php:2543 +msgid "Could not delete post with ID " +msgstr "" + +#: src/Tribe/Service_Providers/Onboarding.php:111 +msgid "Got it" +msgstr "" + +#: src/Tribe/Settings.php:200 +msgid "Events" +msgstr "" + +#. Translators: %s is the name of the menu item. +#: src/Tribe/Settings.php:331 +msgid "%s Settings" +msgstr "" + +#: src/Tribe/Settings.php:375 +msgid "You've requested a non-existent tab." +msgstr "" + +#: src/Tribe/Settings.php:383 +msgid "Save Changes" +msgstr "" + +#: src/Tribe/Settings.php:453 +msgid "You don't have permission to do that." +msgstr "" + +#: src/Tribe/Settings.php:459 +msgid "The request was sent insecurely." +msgstr "" + +#: src/Tribe/Settings.php:465 +msgid "The request wasn't sent from this tab." +msgstr "" + +#: src/Tribe/Settings.php:646 +msgid "Your form had the following errors:" +msgstr "" + +#: src/Tribe/Settings.php:657 +msgid "The above setting was not saved. Other settings were successfully saved." +msgid_plural "The above settings were not saved. Other settings were successfully saved." +msgstr[0] "" +msgstr[1] "" + +#: src/Tribe/Settings.php:678 +msgid "Settings saved." +msgstr "" + +#: src/Tribe/Settings_Tab.php:225 +msgid "There are no fields set up for this tab yet." +msgstr "" + +#: src/Tribe/Support.php:194 +msgid "English" +msgstr "" + +#: src/Tribe/Support.php:213 +#: src/Tribe/Support.php:214 +msgid "Unknown or not set" +msgstr "" + +#: src/Tribe/Support.php:224 +msgid "Rewrite rules were purged on load of this help page. Chances are there is a rewrite rule flush occurring in a plugin or theme!" +msgstr "" + +#: src/Tribe/Support.php:336 +msgid "Yes, automatically share my system information with The Events Calendar's support team" +msgstr "" + +#: src/Tribe/Support.php:337 +msgid "Your system information will only be used by The Events Calendar's support team. All information is stored securely. We do not share this information with any third parties." +msgstr "" + +#: src/Tribe/Support.php:356 +#: src/Tribe/Support.php:361 +msgid "Invalid Key" +msgstr "" + +#: src/Tribe/Support.php:394 +#: src/Tribe/Support.php:420 +msgid "Permission Error" +msgstr "" + +#: src/Tribe/Support.php:408 +msgid "Unique System Info Key Generated" +msgstr "" + +#: src/Tribe/Support/Template_Checker_Report.php:78 +msgid "No notable changes detected" +msgstr "" + +#: src/Tribe/Support/Template_Checker_Report.php:82 +msgid "Templates introduced or updated with this release (%s):" +msgstr "" + +#: src/Tribe/Support/Template_Checker_Report.php:92 +msgid "Existing theme overrides that may need revision:" +msgstr "" + +#: src/Tribe/Support/Template_Checker_Report.php:96 +msgid "version data missing from override" +msgstr "" + +#: src/Tribe/Support/Template_Checker_Report.php:97 +msgid "based on %s version" +msgstr "" + +#: src/Tribe/Support/Template_Checker_Report.php:113 +msgid "No notable template changes detected." +msgstr "" + +#: src/Tribe/Support/Template_Checker_Report.php:115 +msgid "Information about recent template changes and potentially impacted template overrides is provided below." +msgstr "" + +#: src/Tribe/Validate.php:72 +#: src/Tribe/Validate.php:84 +msgid "Invalid or incomplete field passed" +msgstr "" + +#: src/Tribe/Validate.php:73 +#: src/Tribe/Validate.php:85 +#: src/Tribe/Validate.php:105 +msgid "Field ID:" +msgstr "" + +#: src/Tribe/Validate.php:104 +msgid "Non-existant field validation function passed" +msgstr "" + +#: src/Tribe/Validate.php:105 +msgctxt "non-existant function name passed for field validation" +msgid "with function name:" +msgstr "" + +#: src/Tribe/Validate.php:118 +#: src/Tribe/Validate.php:132 +msgid "%s must contain numbers and letters only" +msgstr "" + +#: src/Tribe/Validate.php:146 +msgid "%s must contain numbers, letters and dots only" +msgstr "" + +#: src/Tribe/Validate.php:160 +msgid "%s must contain numbers, letters, dashes and undescores only" +msgstr "" + +#: src/Tribe/Validate.php:174 +msgid "%s must not be empty" +msgstr "" + +#: src/Tribe/Validate.php:188 +#: src/Tribe/Validate.php:212 +msgid "%s must be a positive number." +msgstr "" + +#: src/Tribe/Validate.php:200 +msgid "%s must be a positive number or percent." +msgstr "" + +#: src/Tribe/Validate.php:230 +msgid "%s must be a whole number." +msgstr "" + +#: src/Tribe/Validate.php:250 +msgid "%s must be a valid slug (numbers, letters, dashes, and underscores)." +msgstr "" + +#: src/Tribe/Validate.php:263 +msgid "%s must be a valid URL." +msgstr "" + +#: src/Tribe/Validate.php:277 +#: src/Tribe/Validate.php:289 +#: src/Tribe/Validate.php:302 +#: src/Tribe/Validate.php:322 +msgid "%s must have a value that's part of its options." +msgstr "" + +#: src/Tribe/Validate.php:334 +msgid "Comparison validation failed because no comparison value was provided, for field %s" +msgstr "" + +#: src/Tribe/Validate.php:341 +msgid "%s cannot be the same as %s." +msgstr "" + +#: src/Tribe/Validate.php:343 +msgid "%s cannot be a duplicate" +msgstr "" + +#: src/Tribe/Validate.php:357 +msgid "%s must be a number or percentage." +msgstr "" + +#: src/Tribe/Validate.php:401 +msgid "%s must be a number between 0 and 21." +msgstr "" + +#: src/Tribe/Validate.php:415 +msgid "%s must consist of letters, numbers, dashes, apostrophes, and spaces only." +msgstr "" + +#: src/Tribe/Validate.php:429 +msgid "%s must consist of letters, spaces, apostrophes, and dashes." +msgstr "" + +#: src/Tribe/Validate.php:441 +msgid "%s must consist of 5 numbers." +msgstr "" + +#: src/Tribe/Validate.php:453 +msgid "%s must be a phone number." +msgstr "" + +#: src/Tribe/Validate.php:467 +msgid "Country List must be formatted as one country per line in the following format:
US, United States
UK, United Kingdom." +msgstr "" + +#: src/Tribe/Validate.php:496 +msgid "%s must be an email address." +msgstr "" + +#. Translators: %s - Label of the form input field. +#: src/Tribe/Validate.php:534 +msgid "%s must be a list of valid email addresses separated by commas or semicolons." +msgstr "" + +#: src/Tribe/Validate.php:552 +msgid "%s must be a valid HTML color code." +msgstr "" + +#: src/Tribe/View_Helpers.php:59 +msgid "Select a Country:" +msgstr "" + +#: src/Tribe/Widget/Widget_Abstract.php:183 +msgid "Widget" +msgstr "" + +#: src/views/promoter/auth.php:35 +msgid "Promoter would like to sync with your site" +msgstr "" + +#: src/views/promoter/auth.php:42 +msgid "Please log in to continue" +msgstr "" + +#: src/views/promoter/auth.php:47 +msgid "You do not have access to authenticate this site." +msgstr "" + +#: src/views/promoter/auth.php:49 +msgid "Please log out and log back in as an admin account" +msgstr "" + +#: src/views/promoter/auth.php:55 +msgid "Sorry, unable to authenticate your site. Please contact Promoter support." +msgstr "" + +#: src/views/promoter/auth.php:57 +msgid "Please authorize to continue onboarding." +msgstr "" + +#: src/views/promoter/auth.php:65 +msgid "Authorize Promoter" +msgstr "" + +#: src/views/promoter/auth.php:78 +msgid "Promoter All rights reserved." +msgstr "" + +#: src/views/promoter/auth.php:79 +msgid "Privacy" +msgstr "" + +#: src/views/promoter/auth.php:80 +msgid "and" +msgstr "" + +#: src/views/promoter/auth.php:81 +msgid "Terms" +msgstr "" + +#: src/views/v2/components/icons/featured.php:24 +msgid "Featured" +msgstr "" + +#: src/views/v2/components/icons/hybrid.php:24 +msgid "Hybrid" +msgstr "" + +#: src/views/v2/components/icons/recurring.php:25 +msgid "Recurring" +msgstr "" + +#: src/views/v2/components/icons/virtual.php:24 +msgid "Virtual" +msgstr "" + +#: src/modules/elements/image-upload/element.js:48 +msgid "remove" +msgstr "" + +#: src/modules/elements/time-picker/element.js:56 +#: src/modules/elements/time-picker/element.js:149 +msgid "All Day" +msgstr "" + +#: src/modules/utils/date.js:103 +msgid "at" +msgstr "" diff --git a/wp-content/plugins/the-events-calendar/common/node_modules/clipboard/dist/clipboard.min.js b/wp-content/plugins/the-events-calendar/common/node_modules/clipboard/dist/clipboard.min.js new file mode 100644 index 000000000..1103f811e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/node_modules/clipboard/dist/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1 1 && arguments[1] !== undefined ? arguments[1] : "introjs-stamp"; + // each group increments from 0 + keys[key] = keys[key] || 0; // stamp only once per object + + if (obj[key] === undefined) { + // increment key for each new object + obj[key] = keys[key]++; + } + + return obj[key]; + }; + }(); + + /** + * Iterates arrays + * + * @param {Array} arr + * @param {Function} forEachFnc + * @param {Function} completeFnc + * @return {Null} + */ + function forEach(arr, forEachFnc, completeFnc) { + // in case arr is an empty query selector node list + if (arr) { + for (var i = 0, len = arr.length; i < len; i++) { + forEachFnc(arr[i], i); + } + } + + if (typeof completeFnc === "function") { + completeFnc(); + } + } + + /** + * DOMEvent Handles all DOM events + * + * methods: + * + * on - add event handler + * off - remove event + */ + + var DOMEvent = function () { + function DOMEvent() { + var events_key = "introjs_event"; + /** + * Gets a unique ID for an event listener + * + * @param obj Object + * @param type event type + * @param listener Function + * @param context Object + * @return String + */ + + this._id = function (obj, type, listener, context) { + return type + stamp(listener) + (context ? "_".concat(stamp(context)) : ""); + }; + /** + * Adds event listener + * + * @param obj Object obj + * @param type String + * @param listener Function + * @param context Object + * @param useCapture Boolean + * @return null + */ + + + this.on = function (obj, type, listener, context, useCapture) { + var id = this._id.apply(this, arguments); + + var handler = function handler(e) { + return listener.call(context || obj, e || window.event); + }; + + if ("addEventListener" in obj) { + obj.addEventListener(type, handler, useCapture); + } else if ("attachEvent" in obj) { + obj.attachEvent("on".concat(type), handler); + } + + obj[events_key] = obj[events_key] || {}; + obj[events_key][id] = handler; + }; + /** + * Removes event listener + * + * @param obj Object + * @param type String + * @param listener Function + * @param context Object + * @param useCapture Boolean + * @return null + */ + + + this.off = function (obj, type, listener, context, useCapture) { + var id = this._id.apply(this, arguments); + + var handler = obj[events_key] && obj[events_key][id]; + + if (!handler) { + return; + } + + if ("removeEventListener" in obj) { + obj.removeEventListener(type, handler, useCapture); + } else if ("detachEvent" in obj) { + obj.detachEvent("on".concat(type), handler); + } + + obj[events_key][id] = null; + }; + } + + return new DOMEvent(); + }(); + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + var check = function (it) { + return it && it.Math == Math && it; + }; + + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 + var global_1 = + /* global globalThis -- safe */ + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + check(typeof self == 'object' && self) || + check(typeof commonjsGlobal == 'object' && commonjsGlobal) || + // eslint-disable-next-line no-new-func -- fallback + (function () { return this; })() || Function('return this')(); + + var fails = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } + }; + + // Detect IE8's incomplete defineProperty implementation + var descriptors = !fails(function () { + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; + }); + + var nativePropertyIsEnumerable = {}.propertyIsEnumerable; + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + + // Nashorn ~ JDK8 bug + var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); + + // `Object.prototype.propertyIsEnumerable` method implementation + // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable + var f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; + } : nativePropertyIsEnumerable; + + var objectPropertyIsEnumerable = { + f: f + }; + + var createPropertyDescriptor = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; + }; + + var toString = {}.toString; + + var classofRaw = function (it) { + return toString.call(it).slice(8, -1); + }; + + var split = ''.split; + + // fallback for non-array-like ES3 and non-enumerable old V8 strings + var indexedObject = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins -- safe + return !Object('z').propertyIsEnumerable(0); + }) ? function (it) { + return classofRaw(it) == 'String' ? split.call(it, '') : Object(it); + } : Object; + + // `RequireObjectCoercible` abstract operation + // https://tc39.es/ecma262/#sec-requireobjectcoercible + var requireObjectCoercible = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; + }; + + // toObject with fallback for non-array-like ES3 strings + + + + var toIndexedObject = function (it) { + return indexedObject(requireObjectCoercible(it)); + }; + + var isObject = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; + }; + + // `ToPrimitive` abstract operation + // https://tc39.es/ecma262/#sec-toprimitive + // instead of the ES6 spec version, we didn't implement @@toPrimitive case + // and the second argument - flag - preferred type is a string + var toPrimitive = function (input, PREFERRED_STRING) { + if (!isObject(input)) return input; + var fn, val; + if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; + if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; + if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; + throw TypeError("Can't convert object to primitive value"); + }; + + var hasOwnProperty = {}.hasOwnProperty; + + var has = function (it, key) { + return hasOwnProperty.call(it, key); + }; + + var document$1 = global_1.document; + // typeof document.createElement is 'object' in old IE + var EXISTS = isObject(document$1) && isObject(document$1.createElement); + + var documentCreateElement = function (it) { + return EXISTS ? document$1.createElement(it) : {}; + }; + + // Thank's IE8 for his funny defineProperty + var ie8DomDefine = !descriptors && !fails(function () { + return Object.defineProperty(documentCreateElement('div'), 'a', { + get: function () { return 7; } + }).a != 7; + }); + + var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + + // `Object.getOwnPropertyDescriptor` method + // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor + var f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPrimitive(P, true); + if (ie8DomDefine) try { + return nativeGetOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } + if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]); + }; + + var objectGetOwnPropertyDescriptor = { + f: f$1 + }; + + var anObject = function (it) { + if (!isObject(it)) { + throw TypeError(String(it) + ' is not an object'); + } return it; + }; + + var nativeDefineProperty = Object.defineProperty; + + // `Object.defineProperty` method + // https://tc39.es/ecma262/#sec-object.defineproperty + var f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (ie8DomDefine) try { + return nativeDefineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; + }; + + var objectDefineProperty = { + f: f$2 + }; + + var createNonEnumerableProperty = descriptors ? function (object, key, value) { + return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value)); + } : function (object, key, value) { + object[key] = value; + return object; + }; + + var setGlobal = function (key, value) { + try { + createNonEnumerableProperty(global_1, key, value); + } catch (error) { + global_1[key] = value; + } return value; + }; + + var SHARED = '__core-js_shared__'; + var store = global_1[SHARED] || setGlobal(SHARED, {}); + + var sharedStore = store; + + var functionToString = Function.toString; + + // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper + if (typeof sharedStore.inspectSource != 'function') { + sharedStore.inspectSource = function (it) { + return functionToString.call(it); + }; + } + + var inspectSource = sharedStore.inspectSource; + + var WeakMap = global_1.WeakMap; + + var nativeWeakMap = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap)); + + var shared = createCommonjsModule(function (module) { + (module.exports = function (key, value) { + return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {}); + })('versions', []).push({ + version: '3.9.1', + mode: 'global', + copyright: '© 2021 Denis Pushkarev (zloirock.ru)' + }); + }); + + var id = 0; + var postfix = Math.random(); + + var uid = function (key) { + return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); + }; + + var keys = shared('keys'); + + var sharedKey = function (key) { + return keys[key] || (keys[key] = uid(key)); + }; + + var hiddenKeys = {}; + + var WeakMap$1 = global_1.WeakMap; + var set, get, has$1; + + var enforce = function (it) { + return has$1(it) ? get(it) : set(it, {}); + }; + + var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; + }; + + if (nativeWeakMap) { + var store$1 = sharedStore.state || (sharedStore.state = new WeakMap$1()); + var wmget = store$1.get; + var wmhas = store$1.has; + var wmset = store$1.set; + set = function (it, metadata) { + metadata.facade = it; + wmset.call(store$1, it, metadata); + return metadata; + }; + get = function (it) { + return wmget.call(store$1, it) || {}; + }; + has$1 = function (it) { + return wmhas.call(store$1, it); + }; + } else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + metadata.facade = it; + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return has(it, STATE) ? it[STATE] : {}; + }; + has$1 = function (it) { + return has(it, STATE); + }; + } + + var internalState = { + set: set, + get: get, + has: has$1, + enforce: enforce, + getterFor: getterFor + }; + + var redefine = createCommonjsModule(function (module) { + var getInternalState = internalState.get; + var enforceInternalState = internalState.enforce; + var TEMPLATE = String(String).split('String'); + + (module.exports = function (O, key, value, options) { + var unsafe = options ? !!options.unsafe : false; + var simple = options ? !!options.enumerable : false; + var noTargetGet = options ? !!options.noTargetGet : false; + var state; + if (typeof value == 'function') { + if (typeof key == 'string' && !has(value, 'name')) { + createNonEnumerableProperty(value, 'name', key); + } + state = enforceInternalState(value); + if (!state.source) { + state.source = TEMPLATE.join(typeof key == 'string' ? key : ''); + } + } + if (O === global_1) { + if (simple) O[key] = value; + else setGlobal(key, value); + return; + } else if (!unsafe) { + delete O[key]; + } else if (!noTargetGet && O[key]) { + simple = true; + } + if (simple) O[key] = value; + else createNonEnumerableProperty(O, key, value); + // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative + })(Function.prototype, 'toString', function toString() { + return typeof this == 'function' && getInternalState(this).source || inspectSource(this); + }); + }); + + var path = global_1; + + var aFunction = function (variable) { + return typeof variable == 'function' ? variable : undefined; + }; + + var getBuiltIn = function (namespace, method) { + return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global_1[namespace]) + : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method]; + }; + + var ceil = Math.ceil; + var floor = Math.floor; + + // `ToInteger` abstract operation + // https://tc39.es/ecma262/#sec-tointeger + var toInteger = function (argument) { + return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); + }; + + var min = Math.min; + + // `ToLength` abstract operation + // https://tc39.es/ecma262/#sec-tolength + var toLength = function (argument) { + return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 + }; + + var max = Math.max; + var min$1 = Math.min; + + // Helper for a popular repeating case of the spec: + // Let integer be ? ToInteger(index). + // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). + var toAbsoluteIndex = function (index, length) { + var integer = toInteger(index); + return integer < 0 ? max(integer + length, 0) : min$1(integer, length); + }; + + // `Array.prototype.{ indexOf, includes }` methods implementation + var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare -- NaN check + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare -- NaN check + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; + }; + + var arrayIncludes = { + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) + }; + + var indexOf = arrayIncludes.indexOf; + + + var objectKeysInternal = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~indexOf(result, key) || result.push(key); + } + return result; + }; + + // IE8- don't enum bug keys + var enumBugKeys = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' + ]; + + var hiddenKeys$1 = enumBugKeys.concat('length', 'prototype'); + + // `Object.getOwnPropertyNames` method + // https://tc39.es/ecma262/#sec-object.getownpropertynames + var f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return objectKeysInternal(O, hiddenKeys$1); + }; + + var objectGetOwnPropertyNames = { + f: f$3 + }; + + var f$4 = Object.getOwnPropertySymbols; + + var objectGetOwnPropertySymbols = { + f: f$4 + }; + + // all object keys, includes non-enumerable and symbols + var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = objectGetOwnPropertyNames.f(anObject(it)); + var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; + return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; + }; + + var copyConstructorProperties = function (target, source) { + var keys = ownKeys(source); + var defineProperty = objectDefineProperty.f; + var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + }; + + var replacement = /#|\.prototype\./; + + var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true + : value == NATIVE ? false + : typeof detection == 'function' ? fails(detection) + : !!detection; + }; + + var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); + }; + + var data = isForced.data = {}; + var NATIVE = isForced.NATIVE = 'N'; + var POLYFILL = isForced.POLYFILL = 'P'; + + var isForced_1 = isForced; + + var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; + + + + + + + /* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.noTargetGet - prevent calling a getter on target + */ + var _export = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global_1; + } else if (STATIC) { + target = global_1[TARGET] || setGlobal(TARGET, {}); + } else { + target = (global_1[TARGET] || {}).prototype; + } + if (target) for (key in source) { + sourceProperty = source[key]; + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor$1(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty === typeof targetProperty) continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + createNonEnumerableProperty(sourceProperty, 'sham', true); + } + // extend global + redefine(target, key, sourceProperty, options); + } + }; + + // `RegExp.prototype.flags` getter implementation + // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags + var regexpFlags = function () { + var that = anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.dotAll) result += 's'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; + }; + + // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError, + // so we use an intermediate function. + function RE(s, f) { + return RegExp(s, f); + } + + var UNSUPPORTED_Y = fails(function () { + // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError + var re = RE('a', 'y'); + re.lastIndex = 2; + return re.exec('abcd') != null; + }); + + var BROKEN_CARET = fails(function () { + // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 + var re = RE('^r', 'gy'); + re.lastIndex = 2; + return re.exec('str') != null; + }); + + var regexpStickyHelpers = { + UNSUPPORTED_Y: UNSUPPORTED_Y, + BROKEN_CARET: BROKEN_CARET + }; + + var nativeExec = RegExp.prototype.exec; + // This always refers to the native implementation, because the + // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, + // which loads this file before patching the method. + var nativeReplace = String.prototype.replace; + + var patchedExec = nativeExec; + + var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/; + var re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; + })(); + + var UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET; + + // nonparticipating capturing group, copied from es5-shim's String#split patch. + // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing + var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + + var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$1; + + if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + var sticky = UNSUPPORTED_Y$1 && re.sticky; + var flags = regexpFlags.call(re); + var source = re.source; + var charsAdded = 0; + var strCopy = str; + + if (sticky) { + flags = flags.replace('y', ''); + if (flags.indexOf('g') === -1) { + flags += 'g'; + } + + strCopy = String(str).slice(re.lastIndex); + // Support anchored sticky behavior. + if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) { + source = '(?: ' + source + ')'; + strCopy = ' ' + strCopy; + charsAdded++; + } + // ^(? + rx + ) is needed, in combination with some str slicing, to + // simulate the 'y' flag. + reCopy = new RegExp('^(?:' + source + ')', flags); + } + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + source + '$(?!\\s)', flags); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; + + match = nativeExec.call(sticky ? reCopy : re, strCopy); + + if (sticky) { + if (match) { + match.input = match.input.slice(charsAdded); + match[0] = match[0].slice(charsAdded); + match.index = re.lastIndex; + re.lastIndex += match[0].length; + } else re.lastIndex = 0; + } else if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + return match; + }; + } + + var regexpExec = patchedExec; + + // `RegExp.prototype.exec` method + // https://tc39.es/ecma262/#sec-regexp.prototype.exec + _export({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec }, { + exec: regexpExec + }); + + var engineIsNode = classofRaw(global_1.process) == 'process'; + + var engineUserAgent = getBuiltIn('navigator', 'userAgent') || ''; + + var process = global_1.process; + var versions = process && process.versions; + var v8 = versions && versions.v8; + var match, version; + + if (v8) { + match = v8.split('.'); + version = match[0] + match[1]; + } else if (engineUserAgent) { + match = engineUserAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = engineUserAgent.match(/Chrome\/(\d+)/); + if (match) version = match[1]; + } + } + + var engineV8Version = version && +version; + + var nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () { + /* global Symbol -- required for testing */ + return !Symbol.sham && + // Chrome 38 Symbol has incorrect toString conversion + // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances + (engineIsNode ? engineV8Version === 38 : engineV8Version > 37 && engineV8Version < 41); + }); + + var useSymbolAsUid = nativeSymbol + /* global Symbol -- safe */ + && !Symbol.sham + && typeof Symbol.iterator == 'symbol'; + + var WellKnownSymbolsStore = shared('wks'); + var Symbol$1 = global_1.Symbol; + var createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid; + + var wellKnownSymbol = function (name) { + if (!has(WellKnownSymbolsStore, name) || !(nativeSymbol || typeof WellKnownSymbolsStore[name] == 'string')) { + if (nativeSymbol && has(Symbol$1, name)) { + WellKnownSymbolsStore[name] = Symbol$1[name]; + } else { + WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); + } + } return WellKnownSymbolsStore[name]; + }; + + // TODO: Remove from `core-js@4` since it's moved to entry points + + + + + + + + var SPECIES = wellKnownSymbol('species'); + + var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + // #replace needs built-in support for named groups. + // #match works fine because it just return the exec results, even if it has + // a "grops" property. + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + return ''.replace(re, '$
') !== '7'; + }); + + // IE <= 11 replaces $0 with the whole match, as if it was $& + // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 + var REPLACE_KEEPS_$0 = (function () { + return 'a'.replace(/./, '$0') === '$0'; + })(); + + var REPLACE = wellKnownSymbol('replace'); + // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { + if (/./[REPLACE]) { + return /./[REPLACE]('a', '$0') === ''; + } + return false; + })(); + + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec + // Weex JS has frozen built-in prototypes, so use try / catch wrapper + var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { + // eslint-disable-next-line regexp/no-empty-group -- required for testing + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; + }); + + var fixRegexpWellKnownSymbolLogic = function (KEY, length, exec, sham) { + var SYMBOL = wellKnownSymbol(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + + if (KEY === 'split') { + // We can't use real regex here since it causes deoptimization + // and serious performance degradation in V8 + // https://github.com/zloirock/core-js/issues/306 + re = {}; + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; + re.flags = ''; + re[SYMBOL] = /./[SYMBOL]; + } + + re.exec = function () { execCalled = true; return null; }; + + re[SYMBOL](''); + return !execCalled; + }); + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + (KEY === 'replace' && !( + REPLACE_SUPPORTS_NAMED_GROUPS && + REPLACE_KEEPS_$0 && + !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE + )) || + (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { + if (regexp.exec === regexpExec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; + } + return { done: true, value: nativeMethod.call(str, regexp, arg2) }; + } + return { done: false }; + }, { + REPLACE_KEEPS_$0: REPLACE_KEEPS_$0, + REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE + }); + var stringMethod = methods[0]; + var regexMethod = methods[1]; + + redefine(String.prototype, KEY, stringMethod); + redefine(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { return regexMethod.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { return regexMethod.call(string, this); } + ); + } + + if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true); + }; + + // `String.prototype.{ codePointAt, at }` methods implementation + var createMethod$1 = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = String(requireObjectCoercible($this)); + var position = toInteger(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = S.charCodeAt(position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING ? S.charAt(position) : first + : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; + }; + + var stringMultibyte = { + // `String.prototype.codePointAt` method + // https://tc39.es/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod$1(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod$1(true) + }; + + var charAt = stringMultibyte.charAt; + + // `AdvanceStringIndex` abstract operation + // https://tc39.es/ecma262/#sec-advancestringindex + var advanceStringIndex = function (S, index, unicode) { + return index + (unicode ? charAt(S, index).length : 1); + }; + + // `RegExpExec` abstract operation + // https://tc39.es/ecma262/#sec-regexpexec + var regexpExecAbstract = function (R, S) { + var exec = R.exec; + if (typeof exec === 'function') { + var result = exec.call(R, S); + if (typeof result !== 'object') { + throw TypeError('RegExp exec method returned something other than an Object or null'); + } + return result; + } + + if (classofRaw(R) !== 'RegExp') { + throw TypeError('RegExp#exec called on incompatible receiver'); + } + + return regexpExec.call(R, S); + }; + + // @@match logic + fixRegexpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.es/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = requireObjectCoercible(this); + var matcher = regexp == undefined ? undefined : regexp[MATCH]; + return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@match + function (regexp) { + var res = maybeCallNative(nativeMatch, regexp, this); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + + if (!rx.global) return regexpExecAbstract(rx, S); + + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regexpExecAbstract(rx, S)) !== null) { + var matchStr = String(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; + } + ]; + }); + + // `IsArray` abstract operation + // https://tc39.es/ecma262/#sec-isarray + var isArray = Array.isArray || function isArray(arg) { + return classofRaw(arg) == 'Array'; + }; + + // `ToObject` abstract operation + // https://tc39.es/ecma262/#sec-toobject + var toObject = function (argument) { + return Object(requireObjectCoercible(argument)); + }; + + var createProperty = function (object, key, value) { + var propertyKey = toPrimitive(key); + if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value)); + else object[propertyKey] = value; + }; + + var SPECIES$1 = wellKnownSymbol('species'); + + // `ArraySpeciesCreate` abstract operation + // https://tc39.es/ecma262/#sec-arrayspeciescreate + var arraySpeciesCreate = function (originalArray, length) { + var C; + if (isArray(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; + else if (isObject(C)) { + C = C[SPECIES$1]; + if (C === null) C = undefined; + } + } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); + }; + + var SPECIES$2 = wellKnownSymbol('species'); + + var arrayMethodHasSpeciesSupport = function (METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return engineV8Version >= 51 || !fails(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES$2] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); + }; + + var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); + var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; + var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; + + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/679 + var IS_CONCAT_SPREADABLE_SUPPORT = engineV8Version >= 51 || !fails(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; + }); + + var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); + + var isConcatSpreadable = function (O) { + if (!isObject(O)) return false; + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray(O); + }; + + var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; + + // `Array.prototype.concat` method + // https://tc39.es/ecma262/#sec-array.prototype.concat + // with adding support of @@isConcatSpreadable and @@species + _export({ target: 'Array', proto: true, forced: FORCED }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + concat: function concat(arg) { + var O = toObject(this); + var A = arraySpeciesCreate(O, 0); + var n = 0; + var i, k, length, len, E; + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments[i]; + if (isConcatSpreadable(E)) { + len = toLength(E.length); + if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); + for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); + } else { + if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); + createProperty(A, n++, E); + } + } + A.length = n; + return A; + } + }); + + var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + var test = {}; + + test[TO_STRING_TAG] = 'z'; + + var toStringTagSupport = String(test) === '[object z]'; + + var TO_STRING_TAG$1 = wellKnownSymbol('toStringTag'); + // ES3 wrong here + var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; + + // fallback for IE11 Script Access Denied error + var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } + }; + + // getting tag from ES6+ `Object.prototype.toString` + var classof = toStringTagSupport ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$1)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; + }; + + // `Object.prototype.toString` method implementation + // https://tc39.es/ecma262/#sec-object.prototype.tostring + var objectToString = toStringTagSupport ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; + }; + + // `Object.prototype.toString` method + // https://tc39.es/ecma262/#sec-object.prototype.tostring + if (!toStringTagSupport) { + redefine(Object.prototype, 'toString', objectToString, { unsafe: true }); + } + + var TO_STRING = 'toString'; + var RegExpPrototype = RegExp.prototype; + var nativeToString = RegExpPrototype[TO_STRING]; + + var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; }); + // FF44- RegExp#toString has a wrong name + var INCORRECT_NAME = nativeToString.name != TO_STRING; + + // `RegExp.prototype.toString` method + // https://tc39.es/ecma262/#sec-regexp.prototype.tostring + if (NOT_GENERIC || INCORRECT_NAME) { + redefine(RegExp.prototype, TO_STRING, function toString() { + var R = anObject(this); + var p = String(R.source); + var rf = R.flags; + var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? regexpFlags.call(R) : rf); + return '/' + p + '/' + f; + }, { unsafe: true }); + } + + var MATCH = wellKnownSymbol('match'); + + // `IsRegExp` abstract operation + // https://tc39.es/ecma262/#sec-isregexp + var isRegexp = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp'); + }; + + var aFunction$1 = function (it) { + if (typeof it != 'function') { + throw TypeError(String(it) + ' is not a function'); + } return it; + }; + + var SPECIES$3 = wellKnownSymbol('species'); + + // `SpeciesConstructor` abstract operation + // https://tc39.es/ecma262/#sec-speciesconstructor + var speciesConstructor = function (O, defaultConstructor) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES$3]) == undefined ? defaultConstructor : aFunction$1(S); + }; + + var arrayPush = [].push; + var min$2 = Math.min; + var MAX_UINT32 = 0xFFFFFFFF; + + // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError + var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); }); + + // @@split logic + fixRegexpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) { + var internalSplit; + if ( + 'abbc'.split(/(b)*/)[1] == 'c' || + // eslint-disable-next-line regexp/no-empty-group -- required for testing + 'test'.split(/(?:)/, -1).length != 4 || + 'ab'.split(/(?:ab)*/).length != 2 || + '.'.split(/(.?)(.?)/).length != 4 || + // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing + '.'.split(/()()/).length > 1 || + ''.split(/.?/).length + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = String(requireObjectCoercible(this)); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (separator === undefined) return [string]; + // If `separator` is not a regex, use native split + if (!isRegexp(separator)) { + return nativeSplit.call(string, separator, lim); + } + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = regexpExec.call(separatorCopy, string)) { + lastIndex = separatorCopy.lastIndex; + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1)); + lastLength = match[0].length; + lastLastIndex = lastIndex; + if (output.length >= lim) break; + } + if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop + } + if (lastLastIndex === string.length) { + if (lastLength || !separatorCopy.test('')) output.push(''); + } else output.push(string.slice(lastLastIndex)); + return output.length > lim ? output.slice(0, lim) : output; + }; + // Chakra, V8 + } else if ('0'.split(undefined, 0).length) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit); + }; + } else internalSplit = nativeSplit; + + return [ + // `String.prototype.split` method + // https://tc39.es/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = requireObjectCoercible(this); + var splitter = separator == undefined ? undefined : separator[SPLIT]; + return splitter !== undefined + ? splitter.call(separator, O, limit) + : internalSplit.call(String(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (regexp, limit) { + var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var C = speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (SUPPORTS_Y ? 'y' : 'g'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return regexpExecAbstract(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = SUPPORTS_Y ? q : 0; + var z = regexpExecAbstract(splitter, SUPPORTS_Y ? S : S.slice(q)); + var e; + if ( + z === null || + (e = min$2(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + A.push(S.slice(p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + A.push(z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + A.push(S.slice(p)); + return A; + } + ]; + }, !SUPPORTS_Y); + + /** + * Append a class to an element + * + * @api private + * @method _addClass + * @param {Object} element + * @param {String} className + * @returns null + */ + + function addClass(element, className) { + if (element instanceof SVGElement) { + // svg + var pre = element.getAttribute("class") || ""; + + if (!pre.match(className)) { + // check if element doesn't already have className + element.setAttribute("class", "".concat(pre, " ").concat(className)); + } + } else { + if (element.classList !== undefined) { + // check for modern classList property + var classes = className.split(" "); + forEach(classes, function (cls) { + element.classList.add(cls); + }); + } else if (!element.className.match(className)) { + // check if element doesn't already have className + element.className += " ".concat(className); + } + } + } + + /** + * Get an element CSS property on the page + * Thanks to JavaScript Kit: http://www.javascriptkit.com/dhtmltutors/dhtmlcascade4.shtml + * + * @api private + * @method _getPropValue + * @param {Object} element + * @param {String} propName + * @returns string property value + */ + function getPropValue(element, propName) { + var propValue = ""; + + if (element.currentStyle) { + //IE + propValue = element.currentStyle[propName]; + } else if (document.defaultView && document.defaultView.getComputedStyle) { + //Others + propValue = document.defaultView.getComputedStyle(element, null).getPropertyValue(propName); + } //Prevent exception in IE + + + if (propValue && propValue.toLowerCase) { + return propValue.toLowerCase(); + } else { + return propValue; + } + } + + /** + * To set the show element + * This function set a relative (in most cases) position and changes the z-index + * + * @api private + * @method _setShowElement + * @param {Object} targetElement + */ + + function setShowElement(_ref) { + var element = _ref.element; + addClass(element, "introjs-showElement"); + var currentElementPosition = getPropValue(element, "position"); + + if (currentElementPosition !== "absolute" && currentElementPosition !== "relative" && currentElementPosition !== "sticky" && currentElementPosition !== "fixed") { + //change to new intro item + addClass(element, "introjs-relativePosition"); + } + } + + /** + * Find the nearest scrollable parent + * copied from https://stackoverflow.com/questions/35939886/find-first-scrollable-parent + * + * @param Element element + * @return Element + */ + function getScrollParent(element) { + var style = window.getComputedStyle(element); + var excludeStaticParent = style.position === "absolute"; + var overflowRegex = /(auto|scroll)/; + if (style.position === "fixed") return document.body; + + for (var parent = element; parent = parent.parentElement;) { + style = window.getComputedStyle(parent); + + if (excludeStaticParent && style.position === "static") { + continue; + } + + if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) return parent; + } + + return document.body; + } + + /** + * scroll a scrollable element to a child element + * + * @param {Object} targetElement + */ + + function scrollParentToElement(targetElement) { + var element = targetElement.element; + if (!this._options.scrollToElement) return; + var parent = getScrollParent(element); + if (parent === document.body) return; + parent.scrollTop = element.offsetTop - parent.offsetTop; + } + + /** + * Provides a cross-browser way to get the screen dimensions + * via: http://stackoverflow.com/questions/5864467/internet-explorer-innerheight + * + * @api private + * @method _getWinSize + * @returns {Object} width and height attributes + */ + function getWinSize() { + if (window.innerWidth !== undefined) { + return { + width: window.innerWidth, + height: window.innerHeight + }; + } else { + var D = document.documentElement; + return { + width: D.clientWidth, + height: D.clientHeight + }; + } + } + + /** + * Check to see if the element is in the viewport or not + * http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport + * + * @api private + * @method _elementInViewport + * @param {Object} el + */ + function elementInViewport(el) { + var rect = el.getBoundingClientRect(); + return rect.top >= 0 && rect.left >= 0 && rect.bottom + 80 <= window.innerHeight && // add 80 to get the text right + rect.right <= window.innerWidth; + } + + /** + * To change the scroll of `window` after highlighting an element + * + * @api private + * @param {String} scrollTo + * @param {Object} targetElement + * @param {Object} tooltipLayer + */ + + function scrollTo(scrollTo, _ref, tooltipLayer) { + var element = _ref.element; + if (scrollTo === "off") return; + var rect; + if (!this._options.scrollToElement) return; + + if (scrollTo === "tooltip") { + rect = tooltipLayer.getBoundingClientRect(); + } else { + rect = element.getBoundingClientRect(); + } + + if (!elementInViewport(element)) { + var winHeight = getWinSize().height; + var top = rect.bottom - (rect.bottom - rect.top); // TODO (afshinm): do we need scroll padding now? + // I have changed the scroll option and now it scrolls the window to + // the center of the target element or tooltip. + + if (top < 0 || element.clientHeight > winHeight) { + window.scrollBy(0, rect.top - (winHeight / 2 - rect.height / 2) - this._options.scrollPadding); // 30px padding from edge to look nice + //Scroll down + } else { + window.scrollBy(0, rect.top - (winHeight / 2 - rect.height / 2) + this._options.scrollPadding); // 30px padding from edge to look nice + } + } + } + + /** + * Setting anchors to behave like buttons + * + * @api private + * @method _setAnchorAsButton + */ + function setAnchorAsButton(anchor) { + anchor.setAttribute("role", "button"); + anchor.tabIndex = 0; + } + + // `Object.keys` method + // https://tc39.es/ecma262/#sec-object.keys + var objectKeys = Object.keys || function keys(O) { + return objectKeysInternal(O, enumBugKeys); + }; + + var nativeAssign = Object.assign; + var defineProperty = Object.defineProperty; + + // `Object.assign` method + // https://tc39.es/ecma262/#sec-object.assign + var objectAssign = !nativeAssign || fails(function () { + // should have correct order of operations (Edge bug) + if (descriptors && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', { + enumerable: true, + get: function () { + defineProperty(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { b: 2 })).b !== 1) return true; + // should work with symbols and should have deterministic property order (V8 bug) + var A = {}; + var B = {}; + /* global Symbol -- required for testing */ + var symbol = Symbol(); + var alphabet = 'abcdefghijklmnopqrst'; + A[symbol] = 7; + alphabet.split('').forEach(function (chr) { B[chr] = chr; }); + return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; + }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` + var T = toObject(target); + var argumentsLength = arguments.length; + var index = 1; + var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; + var propertyIsEnumerable = objectPropertyIsEnumerable.f; + while (argumentsLength > index) { + var S = indexedObject(arguments[index++]); + var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!descriptors || propertyIsEnumerable.call(S, key)) T[key] = S[key]; + } + } return T; + } : nativeAssign; + + // `Object.assign` method + // https://tc39.es/ecma262/#sec-object.assign + _export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, { + assign: objectAssign + }); + + /** + * Get an element position on the page relative to another element (or body) + * Thanks to `meouw`: http://stackoverflow.com/a/442474/375966 + * + * @api private + * @method getOffset + * @param {Object} element + * @param {Object} relativeEl + * @returns Element's position info + */ + + function getOffset(element, relativeEl) { + var body = document.body; + var docEl = document.documentElement; + var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop; + var scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft; + relativeEl = relativeEl || body; + var x = element.getBoundingClientRect(); + var xr = relativeEl.getBoundingClientRect(); + var relativeElPosition = getPropValue(relativeEl, "position"); + var obj = { + width: x.width, + height: x.height + }; + + if (relativeEl.tagName.toLowerCase() !== "body" && relativeElPosition === "relative" || relativeElPosition === "sticky") { + // when the container of our target element is _not_ body and has either "relative" or "sticky" position, we should not + // consider the scroll position but we need to include the relative x/y of the container element + return Object.assign(obj, { + top: x.top - xr.top, + left: x.left - xr.left + }); + } else { + return Object.assign(obj, { + top: x.top + scrollTop, + left: x.left + scrollLeft + }); + } + } + + /** + * Checks to see if target element (or parents) position is fixed or not + * + * @api private + * @method _isFixed + * @param {Object} element + * @returns Boolean + */ + + function isFixed(element) { + var p = element.parentNode; + + if (!p || p.nodeName === "HTML") { + return false; + } + + if (getPropValue(element, "position") === "fixed") { + return true; + } + + return isFixed(p); + } + + var floor$1 = Math.floor; + var replace = ''.replace; + var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g; + var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; + + // https://tc39.es/ecma262/#sec-getsubstitution + var getSubstitution = function (matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return replace.call(replacement, symbols, function (match, ch) { + var capture; + switch (ch.charAt(0)) { + case '$': return '$'; + case '&': return matched; + case '`': return str.slice(0, position); + case "'": return str.slice(tailPos); + case '<': + capture = namedCaptures[ch.slice(1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor$1(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); + }; + + var max$1 = Math.max; + var min$3 = Math.min; + + var maybeToString = function (it) { + return it === undefined ? it : String(it); + }; + + // @@replace logic + fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) { + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE; + var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0; + var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; + + return [ + // `String.prototype.replace` method + // https://tc39.es/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = requireObjectCoercible(this); + var replacer = searchValue == undefined ? undefined : searchValue[REPLACE]; + return replacer !== undefined + ? replacer.call(searchValue, O, replaceValue) + : nativeReplace.call(String(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace + function (regexp, replaceValue) { + if ( + (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) || + (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1) + ) { + var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); + if (res.done) return res.value; + } + + var rx = anObject(regexp); + var S = String(this); + + var functionalReplace = typeof replaceValue === 'function'; + if (!functionalReplace) replaceValue = String(replaceValue); + + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = regexpExecAbstract(rx, S); + if (result === null) break; + + results.push(result); + if (!global) break; + + var matchStr = String(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + + var matched = String(result[0]); + var position = max$1(min$3(toInteger(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = [matched].concat(captures, position, S); + if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); + var replacement = String(replaceValue.apply(undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += S.slice(nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + S.slice(nextSourcePosition); + } + ]; + }); + + /** + * Remove a class from an element + * + * @api private + * @method _removeClass + * @param {Object} element + * @param {RegExp|String} classNameRegex can be regex or string + * @returns null + */ + function removeClass(element, classNameRegex) { + if (element instanceof SVGElement) { + var pre = element.getAttribute("class") || ""; + element.setAttribute("class", pre.replace(classNameRegex, "").replace(/^\s+|\s+$/g, "")); + } else { + element.className = element.className.replace(classNameRegex, "").replace(/^\s+|\s+$/g, ""); + } + } + + /** + * Sets the style of an DOM element + * + * @param {Object} element + * @param {Object|string} style + * @return null + */ + function setStyle(element, style) { + var cssText = ""; + + if (element.style.cssText) { + cssText += element.style.cssText; + } + + if (typeof style === "string") { + cssText += style; + } else { + for (var rule in style) { + cssText += "".concat(rule, ":").concat(style[rule], ";"); + } + } + + element.style.cssText = cssText; + } + + /** + * Update the position of the helper layer on the screen + * + * @api private + * @method _setHelperLayerPosition + * @param {Object} helperLayer + */ + + function setHelperLayerPosition(helperLayer) { + if (helperLayer) { + //prevent error when `this._currentStep` in undefined + if (!this._introItems[this._currentStep]) return; + var currentElement = this._introItems[this._currentStep]; + var elementPosition = getOffset(currentElement.element, this._targetElement); + var widthHeightPadding = this._options.helperElementPadding; // If the target element is fixed, the tooltip should be fixed as well. + // Otherwise, remove a fixed class that may be left over from the previous + // step. + + if (isFixed(currentElement.element)) { + addClass(helperLayer, "introjs-fixedTooltip"); + } else { + removeClass(helperLayer, "introjs-fixedTooltip"); + } + + if (currentElement.position === "floating") { + widthHeightPadding = 0; + } //set new position to helper layer + + + setStyle(helperLayer, { + width: "".concat(elementPosition.width + widthHeightPadding, "px"), + height: "".concat(elementPosition.height + widthHeightPadding, "px"), + top: "".concat(elementPosition.top - widthHeightPadding / 2, "px"), + left: "".concat(elementPosition.left - widthHeightPadding / 2, "px") + }); + } + } + + // `Object.defineProperties` method + // https://tc39.es/ecma262/#sec-object.defineproperties + var objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) objectDefineProperty.f(O, key = keys[index++], Properties[key]); + return O; + }; + + var html = getBuiltIn('document', 'documentElement'); + + var GT = '>'; + var LT = '<'; + var PROTOTYPE = 'prototype'; + var SCRIPT = 'script'; + var IE_PROTO = sharedKey('IE_PROTO'); + + var EmptyConstructor = function () { /* empty */ }; + + var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; + }; + + // Create object with fake `null` prototype: use ActiveX Object with cleared prototype + var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; // avoid memory leak + return temp; + }; + + // Create object with fake `null` prototype: use iframe Object with cleared prototype + var NullProtoObjectViaIFrame = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; + }; + + // Check for document.domain and active x support + // No need to use active x approach when document.domain is not set + // see https://github.com/es-shims/es5-shim/issues/150 + // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 + // avoid IE GC bug + var activeXDocument; + var NullProtoObject = function () { + try { + /* global ActiveXObject -- old IE */ + activeXDocument = document.domain && new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); + }; + + hiddenKeys[IE_PROTO] = true; + + // `Object.create` method + // https://tc39.es/ecma262/#sec-object.create + var objectCreate = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = NullProtoObject(); + return Properties === undefined ? result : objectDefineProperties(result, Properties); + }; + + var UNSCOPABLES = wellKnownSymbol('unscopables'); + var ArrayPrototype = Array.prototype; + + // Array.prototype[@@unscopables] + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + if (ArrayPrototype[UNSCOPABLES] == undefined) { + objectDefineProperty.f(ArrayPrototype, UNSCOPABLES, { + configurable: true, + value: objectCreate(null) + }); + } + + // add a key to Array.prototype[@@unscopables] + var addToUnscopables = function (key) { + ArrayPrototype[UNSCOPABLES][key] = true; + }; + + var $includes = arrayIncludes.includes; + + + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + _export({ target: 'Array', proto: true }, { + includes: function includes(el /* , fromIndex = 0 */) { + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables('includes'); + + var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); + + var SPECIES$4 = wellKnownSymbol('species'); + var nativeSlice = [].slice; + var max$2 = Math.max; + + // `Array.prototype.slice` method + // https://tc39.es/ecma262/#sec-array.prototype.slice + // fallback for not array-like ES3 strings and DOM objects + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + slice: function slice(start, end) { + var O = toIndexedObject(this); + var length = toLength(O.length); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible + var Constructor, result, n; + if (isArray(O)) { + Constructor = O.constructor; + // cross-realm fallback + if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) { + Constructor = undefined; + } else if (isObject(Constructor)) { + Constructor = Constructor[SPECIES$4]; + if (Constructor === null) Constructor = undefined; + } + if (Constructor === Array || Constructor === undefined) { + return nativeSlice.call(O, k, fin); + } + } + result = new (Constructor === undefined ? Array : Constructor)(max$2(fin - k, 0)); + for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); + result.length = n; + return result; + } + }); + + var notARegexp = function (it) { + if (isRegexp(it)) { + throw TypeError("The method doesn't accept regular expressions"); + } return it; + }; + + var MATCH$1 = wellKnownSymbol('match'); + + var correctIsRegexpLogic = function (METHOD_NAME) { + var regexp = /./; + try { + '/./'[METHOD_NAME](regexp); + } catch (error1) { + try { + regexp[MATCH$1] = false; + return '/./'[METHOD_NAME](regexp); + } catch (error2) { /* empty */ } + } return false; + }; + + // `String.prototype.includes` method + // https://tc39.es/ecma262/#sec-string.prototype.includes + _export({ target: 'String', proto: true, forced: !correctIsRegexpLogic('includes') }, { + includes: function includes(searchString /* , position = 0 */) { + return !!~String(requireObjectCoercible(this)) + .indexOf(notARegexp(searchString), arguments.length > 1 ? arguments[1] : undefined); + } + }); + + var arrayMethodIsStrict = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing + method.call(null, argument || function () { throw 1; }, 1); + }); + }; + + var nativeJoin = [].join; + + var ES3_STRINGS = indexedObject != Object; + var STRICT_METHOD = arrayMethodIsStrict('join', ','); + + // `Array.prototype.join` method + // https://tc39.es/ecma262/#sec-array.prototype.join + _export({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, { + join: function join(separator) { + return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator); + } + }); + + // optional / simple context binding + var functionBindContext = function (fn, that, length) { + aFunction$1(fn); + if (that === undefined) return fn; + switch (length) { + case 0: return function () { + return fn.call(that); + }; + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; + }; + + var push = [].push; + + // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation + var createMethod$2 = function (TYPE) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var IS_FILTER_OUT = TYPE == 7; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject($this); + var self = indexedObject(O); + var boundFunction = functionBindContext(callbackfn, that, 3); + var length = toLength(self.length); + var index = 0; + var create = specificCreate || arraySpeciesCreate; + var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined; + var value, result; + for (;length > index; index++) if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + if (TYPE) { + if (IS_MAP) target[index] = result; // map + else if (result) switch (TYPE) { + case 3: return true; // some + case 5: return value; // find + case 6: return index; // findIndex + case 2: push.call(target, value); // filter + } else switch (TYPE) { + case 4: return false; // every + case 7: push.call(target, value); // filterOut + } + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; + }; + + var arrayIteration = { + // `Array.prototype.forEach` method + // https://tc39.es/ecma262/#sec-array.prototype.foreach + forEach: createMethod$2(0), + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + map: createMethod$2(1), + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + filter: createMethod$2(2), + // `Array.prototype.some` method + // https://tc39.es/ecma262/#sec-array.prototype.some + some: createMethod$2(3), + // `Array.prototype.every` method + // https://tc39.es/ecma262/#sec-array.prototype.every + every: createMethod$2(4), + // `Array.prototype.find` method + // https://tc39.es/ecma262/#sec-array.prototype.find + find: createMethod$2(5), + // `Array.prototype.findIndex` method + // https://tc39.es/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod$2(6), + // `Array.prototype.filterOut` method + // https://github.com/tc39/proposal-array-filtering + filterOut: createMethod$2(7) + }; + + var $filter = arrayIteration.filter; + + + var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport('filter'); + + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + // with adding support of @@species + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + /** + * Set tooltip left so it doesn't go off the right side of the window + * + * @return boolean true, if tooltipLayerStyleLeft is ok. false, otherwise. + */ + function checkRight(targetOffset, tooltipLayerStyleLeft, tooltipOffset, windowSize, tooltipLayer) { + if (targetOffset.left + tooltipLayerStyleLeft + tooltipOffset.width > windowSize.width) { + // off the right side of the window + tooltipLayer.style.left = "".concat(windowSize.width - tooltipOffset.width - targetOffset.left, "px"); + return false; + } + + tooltipLayer.style.left = "".concat(tooltipLayerStyleLeft, "px"); + return true; + } + + /** + * Set tooltip right so it doesn't go off the left side of the window + * + * @return boolean true, if tooltipLayerStyleRight is ok. false, otherwise. + */ + function checkLeft(targetOffset, tooltipLayerStyleRight, tooltipOffset, tooltipLayer) { + if (targetOffset.left + targetOffset.width - tooltipLayerStyleRight - tooltipOffset.width < 0) { + // off the left side of the window + tooltipLayer.style.left = "".concat(-targetOffset.left, "px"); + return false; + } + + tooltipLayer.style.right = "".concat(tooltipLayerStyleRight, "px"); + return true; + } + + var HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport('splice'); + + var max$3 = Math.max; + var min$4 = Math.min; + var MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF; + var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; + + // `Array.prototype.splice` method + // https://tc39.es/ecma262/#sec-array.prototype.splice + // with adding support of @@species + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$2 }, { + splice: function splice(start, deleteCount /* , ...items */) { + var O = toObject(this); + var len = toLength(O.length); + var actualStart = toAbsoluteIndex(start, len); + var argumentsLength = arguments.length; + var insertCount, actualDeleteCount, A, k, from, to; + if (argumentsLength === 0) { + insertCount = actualDeleteCount = 0; + } else if (argumentsLength === 1) { + insertCount = 0; + actualDeleteCount = len - actualStart; + } else { + insertCount = argumentsLength - 2; + actualDeleteCount = min$4(max$3(toInteger(deleteCount), 0), len - actualStart); + } + if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$1) { + throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); + } + A = arraySpeciesCreate(O, actualDeleteCount); + for (k = 0; k < actualDeleteCount; k++) { + from = actualStart + k; + if (from in O) createProperty(A, k, O[from]); + } + A.length = actualDeleteCount; + if (insertCount < actualDeleteCount) { + for (k = actualStart; k < len - actualDeleteCount; k++) { + from = k + actualDeleteCount; + to = k + insertCount; + if (from in O) O[to] = O[from]; + else delete O[to]; + } + for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1]; + } else if (insertCount > actualDeleteCount) { + for (k = len - actualDeleteCount; k > actualStart; k--) { + from = k + actualDeleteCount - 1; + to = k + insertCount - 1; + if (from in O) O[to] = O[from]; + else delete O[to]; + } + } + for (k = 0; k < insertCount; k++) { + O[k + actualStart] = arguments[k + 2]; + } + O.length = len - actualDeleteCount + insertCount; + return A; + } + }); + + /** + * Remove an entry from a string array if it's there, does nothing if it isn't there. + * + * @param {Array} stringArray + * @param {String} stringToRemove + */ + function removeEntry(stringArray, stringToRemove) { + if (stringArray.includes(stringToRemove)) { + stringArray.splice(stringArray.indexOf(stringToRemove), 1); + } + } + + /** + * auto-determine alignment + * @param {Integer} offsetLeft + * @param {Integer} tooltipWidth + * @param {Object} windowSize + * @param {String} desiredAlignment + * @return {String} calculatedAlignment + */ + + function _determineAutoAlignment(offsetLeft, tooltipWidth, _ref, desiredAlignment) { + var width = _ref.width; + var halfTooltipWidth = tooltipWidth / 2; + var winWidth = Math.min(width, window.screen.width); + var possibleAlignments = ["-left-aligned", "-middle-aligned", "-right-aligned"]; + var calculatedAlignment = ""; // valid left must be at least a tooltipWidth + // away from right side + + if (winWidth - offsetLeft < tooltipWidth) { + removeEntry(possibleAlignments, "-left-aligned"); + } // valid middle must be at least half + // width away from both sides + + + if (offsetLeft < halfTooltipWidth || winWidth - offsetLeft < halfTooltipWidth) { + removeEntry(possibleAlignments, "-middle-aligned"); + } // valid right must be at least a tooltipWidth + // width away from left side + + + if (offsetLeft < tooltipWidth) { + removeEntry(possibleAlignments, "-right-aligned"); + } + + if (possibleAlignments.length) { + if (possibleAlignments.includes(desiredAlignment)) { + // the desired alignment is valid + calculatedAlignment = desiredAlignment; + } else { + // pick the first valid position, in order + calculatedAlignment = possibleAlignments[0]; + } + } else { + // if screen width is too small + // for ANY alignment, middle is + // probably the best for visibility + calculatedAlignment = "-middle-aligned"; + } + + return calculatedAlignment; + } + /** + * Determines the position of the tooltip based on the position precedence and availability + * of screen space. + * + * @param {Object} targetElement + * @param {Object} tooltipLayer + * @param {String} desiredTooltipPosition + * @return {String} calculatedPosition + */ + + + function _determineAutoPosition(targetElement, tooltipLayer, desiredTooltipPosition) { + // Take a clone of position precedence. These will be the available + var possiblePositions = this._options.positionPrecedence.slice(); + + var windowSize = getWinSize(); + var tooltipHeight = getOffset(tooltipLayer).height + 10; + var tooltipWidth = getOffset(tooltipLayer).width + 20; + var targetElementRect = targetElement.getBoundingClientRect(); // If we check all the possible areas, and there are no valid places for the tooltip, the element + // must take up most of the screen real estate. Show the tooltip floating in the middle of the screen. + + var calculatedPosition = "floating"; + /* + * auto determine position + */ + // Check for space below + + if (targetElementRect.bottom + tooltipHeight > windowSize.height) { + removeEntry(possiblePositions, "bottom"); + } // Check for space above + + + if (targetElementRect.top - tooltipHeight < 0) { + removeEntry(possiblePositions, "top"); + } // Check for space to the right + + + if (targetElementRect.right + tooltipWidth > windowSize.width) { + removeEntry(possiblePositions, "right"); + } // Check for space to the left + + + if (targetElementRect.left - tooltipWidth < 0) { + removeEntry(possiblePositions, "left"); + } // @var {String} ex: 'right-aligned' + + + var desiredAlignment = function (pos) { + var hyphenIndex = pos.indexOf("-"); + + if (hyphenIndex !== -1) { + // has alignment + return pos.substr(hyphenIndex); + } + + return ""; + }(desiredTooltipPosition || ""); // strip alignment from position + + + if (desiredTooltipPosition) { + // ex: "bottom-right-aligned" + // should return 'bottom' + desiredTooltipPosition = desiredTooltipPosition.split("-")[0]; + } + + if (possiblePositions.length) { + if (possiblePositions.includes(desiredTooltipPosition)) { + // If the requested position is in the list, choose that + calculatedPosition = desiredTooltipPosition; + } else { + // Pick the first valid position, in order + calculatedPosition = possiblePositions[0]; + } + } // only top and bottom positions have optional alignments + + + if (["top", "bottom"].includes(calculatedPosition)) { + calculatedPosition += _determineAutoAlignment(targetElementRect.left, tooltipWidth, windowSize, desiredAlignment); + } + + return calculatedPosition; + } + /** + * Render tooltip box in the page + * + * @api private + * @method placeTooltip + * @param {HTMLElement} targetElement + * @param {HTMLElement} tooltipLayer + * @param {HTMLElement} arrowLayer + * @param {Boolean} hintMode + */ + + + function placeTooltip(targetElement, tooltipLayer, arrowLayer, hintMode) { + var tooltipCssClass = ""; + var currentStepObj; + var tooltipOffset; + var targetOffset; + var windowSize; + var currentTooltipPosition; + hintMode = hintMode || false; //reset the old style + + tooltipLayer.style.top = null; + tooltipLayer.style.right = null; + tooltipLayer.style.bottom = null; + tooltipLayer.style.left = null; + tooltipLayer.style.marginLeft = null; + tooltipLayer.style.marginTop = null; + arrowLayer.style.display = "inherit"; //prevent error when `this._currentStep` is undefined + + if (!this._introItems[this._currentStep]) return; //if we have a custom css class for each step + + currentStepObj = this._introItems[this._currentStep]; + + if (typeof currentStepObj.tooltipClass === "string") { + tooltipCssClass = currentStepObj.tooltipClass; + } else { + tooltipCssClass = this._options.tooltipClass; + } + + tooltipLayer.className = ["introjs-tooltip", tooltipCssClass].filter(Boolean).join(" "); + tooltipLayer.setAttribute("role", "dialog"); + currentTooltipPosition = this._introItems[this._currentStep].position; // Floating is always valid, no point in calculating + + if (currentTooltipPosition !== "floating" && this._options.autoPosition) { + currentTooltipPosition = _determineAutoPosition.call(this, targetElement, tooltipLayer, currentTooltipPosition); + } + + var tooltipLayerStyleLeft; + targetOffset = getOffset(targetElement); + tooltipOffset = getOffset(tooltipLayer); + windowSize = getWinSize(); + addClass(tooltipLayer, "introjs-".concat(currentTooltipPosition)); + + switch (currentTooltipPosition) { + case "top-right-aligned": + arrowLayer.className = "introjs-arrow bottom-right"; + var tooltipLayerStyleRight = 0; + checkLeft(targetOffset, tooltipLayerStyleRight, tooltipOffset, tooltipLayer); + tooltipLayer.style.bottom = "".concat(targetOffset.height + 20, "px"); + break; + + case "top-middle-aligned": + arrowLayer.className = "introjs-arrow bottom-middle"; + var tooltipLayerStyleLeftRight = targetOffset.width / 2 - tooltipOffset.width / 2; // a fix for middle aligned hints + + if (hintMode) { + tooltipLayerStyleLeftRight += 5; + } + + if (checkLeft(targetOffset, tooltipLayerStyleLeftRight, tooltipOffset, tooltipLayer)) { + tooltipLayer.style.right = null; + checkRight(targetOffset, tooltipLayerStyleLeftRight, tooltipOffset, windowSize, tooltipLayer); + } + + tooltipLayer.style.bottom = "".concat(targetOffset.height + 20, "px"); + break; + + case "top-left-aligned": // top-left-aligned is the same as the default top + + case "top": + arrowLayer.className = "introjs-arrow bottom"; + tooltipLayerStyleLeft = hintMode ? 0 : 15; + checkRight(targetOffset, tooltipLayerStyleLeft, tooltipOffset, windowSize, tooltipLayer); + tooltipLayer.style.bottom = "".concat(targetOffset.height + 20, "px"); + break; + + case "right": + tooltipLayer.style.left = "".concat(targetOffset.width + 20, "px"); + + if (targetOffset.top + tooltipOffset.height > windowSize.height) { + // In this case, right would have fallen below the bottom of the screen. + // Modify so that the bottom of the tooltip connects with the target + arrowLayer.className = "introjs-arrow left-bottom"; + tooltipLayer.style.top = "-".concat(tooltipOffset.height - targetOffset.height - 20, "px"); + } else { + arrowLayer.className = "introjs-arrow left"; + } + + break; + + case "left": + if (!hintMode && this._options.showStepNumbers === true) { + tooltipLayer.style.top = "15px"; + } + + if (targetOffset.top + tooltipOffset.height > windowSize.height) { + // In this case, left would have fallen below the bottom of the screen. + // Modify so that the bottom of the tooltip connects with the target + tooltipLayer.style.top = "-".concat(tooltipOffset.height - targetOffset.height - 20, "px"); + arrowLayer.className = "introjs-arrow right-bottom"; + } else { + arrowLayer.className = "introjs-arrow right"; + } + + tooltipLayer.style.right = "".concat(targetOffset.width + 20, "px"); + break; + + case "floating": + arrowLayer.style.display = "none"; //we have to adjust the top and left of layer manually for intro items without element + + tooltipLayer.style.left = "50%"; + tooltipLayer.style.top = "50%"; + tooltipLayer.style.marginLeft = "-".concat(tooltipOffset.width / 2, "px"); + tooltipLayer.style.marginTop = "-".concat(tooltipOffset.height / 2, "px"); + break; + + case "bottom-right-aligned": + arrowLayer.className = "introjs-arrow top-right"; + tooltipLayerStyleRight = 0; + checkLeft(targetOffset, tooltipLayerStyleRight, tooltipOffset, tooltipLayer); + tooltipLayer.style.top = "".concat(targetOffset.height + 20, "px"); + break; + + case "bottom-middle-aligned": + arrowLayer.className = "introjs-arrow top-middle"; + tooltipLayerStyleLeftRight = targetOffset.width / 2 - tooltipOffset.width / 2; // a fix for middle aligned hints + + if (hintMode) { + tooltipLayerStyleLeftRight += 5; + } + + if (checkLeft(targetOffset, tooltipLayerStyleLeftRight, tooltipOffset, tooltipLayer)) { + tooltipLayer.style.right = null; + checkRight(targetOffset, tooltipLayerStyleLeftRight, tooltipOffset, windowSize, tooltipLayer); + } + + tooltipLayer.style.top = "".concat(targetOffset.height + 20, "px"); + break; + // case 'bottom-left-aligned': + // Bottom-left-aligned is the same as the default bottom + // case 'bottom': + // Bottom going to follow the default behavior + + default: + arrowLayer.className = "introjs-arrow top"; + tooltipLayerStyleLeft = 0; + checkRight(targetOffset, tooltipLayerStyleLeft, tooltipOffset, windowSize, tooltipLayer); + tooltipLayer.style.top = "".concat(targetOffset.height + 20, "px"); + } + } + + /** + * To remove all show element(s) + * + * @api private + * @method _removeShowElement + */ + + function removeShowElement() { + var elms = document.querySelectorAll(".introjs-showElement"); + forEach(elms, function (elm) { + removeClass(elm, /introjs-[a-zA-Z]+/g); + }); + } + + function _createElement(tagname, attrs) { + var element = document.createElement(tagname); + attrs = attrs || {}; // regex for matching attributes that need to be set with setAttribute + + var setAttRegex = /^(?:role|data-|aria-)/; + + for (var k in attrs) { + var v = attrs[k]; + + if (k === "style") { + setStyle(element, v); + } else if (k.match(setAttRegex)) { + element.setAttribute(k, v); + } else { + element[k] = v; + } + } + + return element; + } + + /** + * Appends `element` to `parentElement` + * + * @param {Element} parentElement + * @param {Element} element + * @param {Boolean} [animate=false] + */ + + function appendChild(parentElement, element, animate) { + if (animate) { + var existingOpacity = element.style.opacity || "1"; + setStyle(element, { + opacity: "0" + }); + window.setTimeout(function () { + setStyle(element, { + opacity: existingOpacity + }); + }, 10); + } + + parentElement.appendChild(element); + } + + /** + * Gets the current progress percentage + * + * @api private + * @method _getProgress + * @returns current progress percentage + */ + + function _getProgress() { + // Steps are 0 indexed + var currentStep = parseInt(this._currentStep + 1, 10); + return currentStep / this._introItems.length * 100; + } + /** + * Add disableinteraction layer and adjust the size and position of the layer + * + * @api private + * @method _disableInteraction + */ + + + function _disableInteraction() { + var disableInteractionLayer = document.querySelector(".introjs-disableInteraction"); + + if (disableInteractionLayer === null) { + disableInteractionLayer = _createElement("div", { + className: "introjs-disableInteraction" + }); + + this._targetElement.appendChild(disableInteractionLayer); + } + + setHelperLayerPosition.call(this, disableInteractionLayer); + } + /** + * Show an element on the page + * + * @api private + * @method _showElement + * @param {Object} targetElement + */ + + + function _showElement(targetElement) { + var _this = this; + + if (typeof this._introChangeCallback !== "undefined") { + this._introChangeCallback.call(this, targetElement.element); + } + + var self = this; + var oldHelperLayer = document.querySelector(".introjs-helperLayer"); + var oldReferenceLayer = document.querySelector(".introjs-tooltipReferenceLayer"); + var highlightClass = "introjs-helperLayer"; + var nextTooltipButton; + var prevTooltipButton; + var skipTooltipButton; + + if (typeof targetElement.highlightClass === "string") { + highlightClass += " ".concat(targetElement.highlightClass); + } //check for options highlight class + + + if (typeof this._options.highlightClass === "string") { + highlightClass += " ".concat(this._options.highlightClass); + } + + if (oldHelperLayer !== null) { + var oldHelperNumberLayer = oldReferenceLayer.querySelector(".introjs-helperNumberLayer"); + var oldtooltipLayer = oldReferenceLayer.querySelector(".introjs-tooltiptext"); + var oldTooltipTitleLayer = oldReferenceLayer.querySelector(".introjs-tooltip-title"); + var oldArrowLayer = oldReferenceLayer.querySelector(".introjs-arrow"); + var oldtooltipContainer = oldReferenceLayer.querySelector(".introjs-tooltip"); + skipTooltipButton = oldReferenceLayer.querySelector(".introjs-skipbutton"); + prevTooltipButton = oldReferenceLayer.querySelector(".introjs-prevbutton"); + nextTooltipButton = oldReferenceLayer.querySelector(".introjs-nextbutton"); //update or reset the helper highlight class + + oldHelperLayer.className = highlightClass; //hide the tooltip + + oldtooltipContainer.style.opacity = 0; + oldtooltipContainer.style.display = "none"; // if the target element is within a scrollable element + + scrollParentToElement.call(self, targetElement); // set new position to helper layer + + setHelperLayerPosition.call(self, oldHelperLayer); + setHelperLayerPosition.call(self, oldReferenceLayer); //remove old classes if the element still exist + + removeShowElement(); //we should wait until the CSS3 transition is competed (it's 0.3 sec) to prevent incorrect `height` and `width` calculation + + if (self._lastShowElementTimer) { + window.clearTimeout(self._lastShowElementTimer); + } + + self._lastShowElementTimer = window.setTimeout(function () { + // set current step to the label + if (oldHelperNumberLayer !== null) { + oldHelperNumberLayer.innerHTML = "".concat(targetElement.step, " of ").concat(_this._introItems.length); + } // set current tooltip text + + + oldtooltipLayer.innerHTML = targetElement.intro; // set current tooltip title + + oldTooltipTitleLayer.innerHTML = targetElement.title; //set the tooltip position + + oldtooltipContainer.style.display = "block"; + placeTooltip.call(self, targetElement.element, oldtooltipContainer, oldArrowLayer); //change active bullet + + if (self._options.showBullets) { + oldReferenceLayer.querySelector(".introjs-bullets li > a.active").className = ""; + oldReferenceLayer.querySelector(".introjs-bullets li > a[data-stepnumber=\"".concat(targetElement.step, "\"]")).className = "active"; + } + + oldReferenceLayer.querySelector(".introjs-progress .introjs-progressbar").style.cssText = "width:".concat(_getProgress.call(self), "%;"); + oldReferenceLayer.querySelector(".introjs-progress .introjs-progressbar").setAttribute("aria-valuenow", _getProgress.call(self)); //show the tooltip + + oldtooltipContainer.style.opacity = 1; //reset button focus + + if (typeof nextTooltipButton !== "undefined" && nextTooltipButton !== null && /introjs-donebutton/gi.test(nextTooltipButton.className)) { + // skip button is now "done" button + nextTooltipButton.focus(); + } else if (typeof nextTooltipButton !== "undefined" && nextTooltipButton !== null) { + //still in the tour, focus on next + nextTooltipButton.focus(); + } // change the scroll of the window, if needed + + + scrollTo.call(self, targetElement.scrollTo, targetElement, oldtooltipLayer); + }, 350); // end of old element if-else condition + } else { + var helperLayer = _createElement("div", { + className: highlightClass + }); + var referenceLayer = _createElement("div", { + className: "introjs-tooltipReferenceLayer" + }); + var arrowLayer = _createElement("div", { + className: "introjs-arrow" + }); + var tooltipLayer = _createElement("div", { + className: "introjs-tooltip" + }); + var tooltipTextLayer = _createElement("div", { + className: "introjs-tooltiptext" + }); + var tooltipHeaderLayer = _createElement("div", { + className: "introjs-tooltip-header" + }); + var tooltipTitleLayer = _createElement("h1", { + className: "introjs-tooltip-title" + }); + var bulletsLayer = _createElement("div", { + className: "introjs-bullets" + }); + var progressLayer = _createElement("div"); + var buttonsLayer = _createElement("div"); + setStyle(helperLayer, { + "box-shadow": "0 0 1px 2px rgba(33, 33, 33, 0.8), rgba(33, 33, 33, ".concat(self._options.overlayOpacity.toString(), ") 0 0 0 5000px") + }); // target is within a scrollable element + + scrollParentToElement.call(self, targetElement); //set new position to helper layer + + setHelperLayerPosition.call(self, helperLayer); + setHelperLayerPosition.call(self, referenceLayer); //add helper layer to target element + + appendChild(this._targetElement, helperLayer, true); + appendChild(this._targetElement, referenceLayer); + tooltipTextLayer.innerHTML = targetElement.intro; + tooltipTitleLayer.innerHTML = targetElement.title; + + if (this._options.showBullets === false) { + bulletsLayer.style.display = "none"; + } + + var ulContainer = _createElement("ul"); + ulContainer.setAttribute("role", "tablist"); + + var anchorClick = function anchorClick() { + self.goToStep(this.getAttribute("data-stepnumber")); + }; + + forEach(this._introItems, function (_ref, i) { + var step = _ref.step; + var innerLi = _createElement("li"); + var anchorLink = _createElement("a"); + innerLi.setAttribute("role", "presentation"); + anchorLink.setAttribute("role", "tab"); + anchorLink.onclick = anchorClick; + + if (i === targetElement.step - 1) { + anchorLink.className = "active"; + } + + setAnchorAsButton(anchorLink); + anchorLink.innerHTML = " "; + anchorLink.setAttribute("data-stepnumber", step); + innerLi.appendChild(anchorLink); + ulContainer.appendChild(innerLi); + }); + bulletsLayer.appendChild(ulContainer); + progressLayer.className = "introjs-progress"; + + if (this._options.showProgress === false) { + progressLayer.style.display = "none"; + } + + var progressBar = _createElement("div", { + className: "introjs-progressbar" + }); + + if (this._options.progressBarAdditionalClass) { + progressBar.className += " " + this._options.progressBarAdditionalClass; + } + + progressBar.setAttribute("role", "progress"); + progressBar.setAttribute("aria-valuemin", 0); + progressBar.setAttribute("aria-valuemax", 100); + progressBar.setAttribute("aria-valuenow", _getProgress.call(this)); + progressBar.style.cssText = "width:".concat(_getProgress.call(this), "%;"); + progressLayer.appendChild(progressBar); + buttonsLayer.className = "introjs-tooltipbuttons"; + + if (this._options.showButtons === false) { + buttonsLayer.style.display = "none"; + } + + tooltipHeaderLayer.appendChild(tooltipTitleLayer); + tooltipLayer.appendChild(tooltipHeaderLayer); + tooltipLayer.appendChild(tooltipTextLayer); + tooltipLayer.appendChild(bulletsLayer); + tooltipLayer.appendChild(progressLayer); // add helper layer number + + var helperNumberLayer = _createElement("div"); + + if (this._options.showStepNumbers === true) { + helperNumberLayer.className = "introjs-helperNumberLayer"; + helperNumberLayer.innerHTML = "".concat(targetElement.step, " of ").concat(this._introItems.length); + tooltipLayer.appendChild(helperNumberLayer); + } + + tooltipLayer.appendChild(arrowLayer); + referenceLayer.appendChild(tooltipLayer); //next button + + nextTooltipButton = _createElement("a"); + + nextTooltipButton.onclick = function () { + if (self._introItems.length - 1 !== self._currentStep) { + nextStep.call(self); + } else if (/introjs-donebutton/gi.test(nextTooltipButton.className)) { + if (typeof self._introCompleteCallback === "function") { + self._introCompleteCallback.call(self); + } + + exitIntro.call(self, self._targetElement); + } + }; + + setAnchorAsButton(nextTooltipButton); + nextTooltipButton.innerHTML = this._options.nextLabel; //previous button + + prevTooltipButton = _createElement("a"); + + prevTooltipButton.onclick = function () { + if (self._currentStep !== 0) { + previousStep.call(self); + } + }; + + setAnchorAsButton(prevTooltipButton); + prevTooltipButton.innerHTML = this._options.prevLabel; //skip button + + skipTooltipButton = _createElement("a", { + className: "introjs-skipbutton" + }); + setAnchorAsButton(skipTooltipButton); + skipTooltipButton.innerHTML = this._options.skipLabel; + + skipTooltipButton.onclick = function () { + if (self._introItems.length - 1 === self._currentStep && typeof self._introCompleteCallback === "function") { + self._introCompleteCallback.call(self); + } + + if (typeof self._introSkipCallback === "function") { + self._introSkipCallback.call(self); + } + + exitIntro.call(self, self._targetElement); + }; + + tooltipHeaderLayer.appendChild(skipTooltipButton); //in order to prevent displaying previous button always + + if (this._introItems.length > 1) { + buttonsLayer.appendChild(prevTooltipButton); + } // we always need the next button because this + // button changes to "Done" in the last step of the tour + + + buttonsLayer.appendChild(nextTooltipButton); + tooltipLayer.appendChild(buttonsLayer); //set proper position + + placeTooltip.call(self, targetElement.element, tooltipLayer, arrowLayer); // change the scroll of the window, if needed + + scrollTo.call(this, targetElement.scrollTo, targetElement, tooltipLayer); //end of new element if-else condition + } // removing previous disable interaction layer + + + var disableInteractionLayer = self._targetElement.querySelector(".introjs-disableInteraction"); + + if (disableInteractionLayer) { + disableInteractionLayer.parentNode.removeChild(disableInteractionLayer); + } //disable interaction + + + if (targetElement.disableInteraction) { + _disableInteraction.call(self); + } // when it's the first step of tour + + + if (this._currentStep === 0 && this._introItems.length > 1) { + if (typeof nextTooltipButton !== "undefined" && nextTooltipButton !== null) { + nextTooltipButton.className = "".concat(this._options.buttonClass, " introjs-nextbutton"); + nextTooltipButton.innerHTML = this._options.nextLabel; + } + + if (this._options.hidePrev === true) { + if (typeof prevTooltipButton !== "undefined" && prevTooltipButton !== null) { + prevTooltipButton.className = "".concat(this._options.buttonClass, " introjs-prevbutton introjs-hidden"); + } + + if (typeof nextTooltipButton !== "undefined" && nextTooltipButton !== null) { + addClass(nextTooltipButton, "introjs-fullbutton"); + } + } else { + if (typeof prevTooltipButton !== "undefined" && prevTooltipButton !== null) { + prevTooltipButton.className = "".concat(this._options.buttonClass, " introjs-prevbutton introjs-disabled"); + } + } + } else if (this._introItems.length - 1 === this._currentStep || this._introItems.length === 1) { + // last step of tour + if (typeof prevTooltipButton !== "undefined" && prevTooltipButton !== null) { + prevTooltipButton.className = "".concat(this._options.buttonClass, " introjs-prevbutton"); + } + + if (this._options.hideNext === true) { + if (typeof nextTooltipButton !== "undefined" && nextTooltipButton !== null) { + nextTooltipButton.className = "".concat(this._options.buttonClass, " introjs-nextbutton introjs-hidden"); + } + + if (typeof prevTooltipButton !== "undefined" && prevTooltipButton !== null) { + addClass(prevTooltipButton, "introjs-fullbutton"); + } + } else { + if (typeof nextTooltipButton !== "undefined" && nextTooltipButton !== null) { + if (this._options.nextToDone === true) { + nextTooltipButton.innerHTML = this._options.doneLabel; + addClass(nextTooltipButton, "".concat(this._options.buttonClass, " introjs-nextbutton introjs-donebutton")); + } else { + nextTooltipButton.className = "".concat(this._options.buttonClass, " introjs-nextbutton introjs-disabled"); + } + } + } + } else { + // steps between start and end + if (typeof prevTooltipButton !== "undefined" && prevTooltipButton !== null) { + prevTooltipButton.className = "".concat(this._options.buttonClass, " introjs-prevbutton"); + } + + if (typeof nextTooltipButton !== "undefined" && nextTooltipButton !== null) { + nextTooltipButton.className = "".concat(this._options.buttonClass, " introjs-nextbutton"); + nextTooltipButton.innerHTML = this._options.nextLabel; + } + } + + if (typeof prevTooltipButton !== "undefined" && prevTooltipButton !== null) { + prevTooltipButton.setAttribute("role", "button"); + } + + if (typeof nextTooltipButton !== "undefined" && nextTooltipButton !== null) { + nextTooltipButton.setAttribute("role", "button"); + } + + if (typeof skipTooltipButton !== "undefined" && skipTooltipButton !== null) { + skipTooltipButton.setAttribute("role", "button"); + } //Set focus on "next" button, so that hitting Enter always moves you onto the next step + + + if (typeof nextTooltipButton !== "undefined" && nextTooltipButton !== null) { + nextTooltipButton.focus(); + } + + setShowElement(targetElement); + + if (typeof this._introAfterChangeCallback !== "undefined") { + this._introAfterChangeCallback.call(this, targetElement.element); + } + } + + /** + * Go to specific step of introduction + * + * @api private + * @method _goToStep + */ + + function goToStep(step) { + //because steps starts with zero + this._currentStep = step - 2; + + if (typeof this._introItems !== "undefined") { + nextStep.call(this); + } + } + /** + * Go to the specific step of introduction with the explicit [data-step] number + * + * @api private + * @method _goToStepNumber + */ + + function goToStepNumber(step) { + this._currentStepNumber = step; + + if (typeof this._introItems !== "undefined") { + nextStep.call(this); + } + } + /** + * Go to next step on intro + * + * @api private + * @method _nextStep + */ + + function nextStep() { + var _this = this; + + this._direction = "forward"; + + if (typeof this._currentStepNumber !== "undefined") { + forEach(this._introItems, function (_ref, i) { + var step = _ref.step; + + if (step === _this._currentStepNumber) { + _this._currentStep = i - 1; + _this._currentStepNumber = undefined; + } + }); + } + + if (typeof this._currentStep === "undefined") { + this._currentStep = 0; + } else { + ++this._currentStep; + } + + var nextStep = this._introItems[this._currentStep]; + var continueStep = true; + + if (typeof this._introBeforeChangeCallback !== "undefined") { + continueStep = this._introBeforeChangeCallback.call(this, nextStep && nextStep.element); + } // if `onbeforechange` returned `false`, stop displaying the element + + + if (continueStep === false) { + --this._currentStep; + return false; + } + + if (this._introItems.length <= this._currentStep) { + //end of the intro + //check if any callback is defined + if (typeof this._introCompleteCallback === "function") { + this._introCompleteCallback.call(this); + } + + exitIntro.call(this, this._targetElement); + return; + } + + _showElement.call(this, nextStep); + } + /** + * Go to previous step on intro + * + * @api private + * @method _previousStep + */ + + function previousStep() { + this._direction = "backward"; + + if (this._currentStep === 0) { + return false; + } + + --this._currentStep; + var nextStep = this._introItems[this._currentStep]; + var continueStep = true; + + if (typeof this._introBeforeChangeCallback !== "undefined") { + continueStep = this._introBeforeChangeCallback.call(this, nextStep && nextStep.element); + } // if `onbeforechange` returned `false`, stop displaying the element + + + if (continueStep === false) { + ++this._currentStep; + return false; + } + + _showElement.call(this, nextStep); + } + /** + * Returns the current step of the intro + * + * @returns {number | boolean} + */ + + function currentStep() { + return this._currentStep; + } + + /** + * on keyCode: + * https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode + * This feature has been removed from the Web standards. + * Though some browsers may still support it, it is in + * the process of being dropped. + * Instead, you should use KeyboardEvent.code, + * if it's implemented. + * + * jQuery's approach is to test for + * (1) e.which, then + * (2) e.charCode, then + * (3) e.keyCode + * https://github.com/jquery/jquery/blob/a6b0705294d336ae2f63f7276de0da1195495363/src/event.js#L638 + * + * @param type var + * @return type + */ + + function onKeyDown(e) { + var code = e.code === undefined ? e.which : e.code; // if e.which is null + + if (code === null) { + code = e.charCode === null ? e.keyCode : e.charCode; + } + + if ((code === "Escape" || code === 27) && this._options.exitOnEsc === true) { + //escape key pressed, exit the intro + //check if exit callback is defined + exitIntro.call(this, this._targetElement); + } else if (code === "ArrowLeft" || code === 37) { + //left arrow + previousStep.call(this); + } else if (code === "ArrowRight" || code === 39) { + //right arrow + nextStep.call(this); + } else if (code === "Enter" || code === "NumpadEnter" || code === 13) { + //srcElement === ie + var target = e.target || e.srcElement; + + if (target && target.className.match("introjs-prevbutton")) { + //user hit enter while focusing on previous button + previousStep.call(this); + } else if (target && target.className.match("introjs-skipbutton")) { + //user hit enter while focusing on skip button + if (this._introItems.length - 1 === this._currentStep && typeof this._introCompleteCallback === "function") { + this._introCompleteCallback.call(this); + } + + exitIntro.call(this, this._targetElement); + } else if (target && target.getAttribute("data-stepnumber")) { + // user hit enter while focusing on step bullet + target.click(); + } else { + //default behavior for responding to enter + nextStep.call(this); + } //prevent default behaviour on hitting Enter, to prevent steps being skipped in some browsers + + + if (e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + } + } + } + + /* + * makes a copy of the object + * @api private + * @method _cloneObject + */ + function cloneObject(object) { + if (object === null || _typeof(object) !== "object" || typeof object.nodeType !== "undefined") { + return object; + } + + var temp = {}; + + for (var key in object) { + if (typeof window.jQuery !== "undefined" && object[key] instanceof window.jQuery) { + temp[key] = object[key]; + } else { + temp[key] = cloneObject(object[key]); + } + } + + return temp; + } + + /** + * Get a queryselector within the hint wrapper + * + * @param {String} selector + * @return {NodeList|Array} + */ + + function hintQuerySelectorAll(selector) { + var hintsWrapper = document.querySelector(".introjs-hints"); + return hintsWrapper ? hintsWrapper.querySelectorAll(selector) : []; + } + /** + * Hide a hint + * + * @api private + * @method hideHint + */ + + function hideHint(stepId) { + var hint = hintQuerySelectorAll(".introjs-hint[data-step=\"".concat(stepId, "\"]"))[0]; + removeHintTooltip.call(this); + + if (hint) { + addClass(hint, "introjs-hidehint"); + } // call the callback function (if any) + + + if (typeof this._hintCloseCallback !== "undefined") { + this._hintCloseCallback.call(this, stepId); + } + } + /** + * Hide all hints + * + * @api private + * @method hideHints + */ + + function hideHints() { + var _this = this; + + var hints = hintQuerySelectorAll(".introjs-hint"); + forEach(hints, function (hint) { + hideHint.call(_this, hint.getAttribute("data-step")); + }); + } + /** + * Show all hints + * + * @api private + * @method _showHints + */ + + function showHints() { + var _this2 = this; + + var hints = hintQuerySelectorAll(".introjs-hint"); + + if (hints && hints.length) { + forEach(hints, function (hint) { + showHint.call(_this2, hint.getAttribute("data-step")); + }); + } else { + populateHints.call(this, this._targetElement); + } + } + /** + * Show a hint + * + * @api private + * @method showHint + */ + + function showHint(stepId) { + var hint = hintQuerySelectorAll(".introjs-hint[data-step=\"".concat(stepId, "\"]"))[0]; + + if (hint) { + removeClass(hint, /introjs-hidehint/g); + } + } + /** + * Removes all hint elements on the page + * Useful when you want to destroy the elements and add them again (e.g. a modal or popup) + * + * @api private + * @method removeHints + */ + + function removeHints() { + var _this3 = this; + + var hints = hintQuerySelectorAll(".introjs-hint"); + forEach(hints, function (hint) { + removeHint.call(_this3, hint.getAttribute("data-step")); + }); + } + /** + * Remove one single hint element from the page + * Useful when you want to destroy the element and add them again (e.g. a modal or popup) + * Use removeHints if you want to remove all elements. + * + * @api private + * @method removeHint + */ + + function removeHint(stepId) { + var hint = hintQuerySelectorAll(".introjs-hint[data-step=\"".concat(stepId, "\"]"))[0]; + + if (hint) { + hint.parentNode.removeChild(hint); + } + } + /** + * Add all available hints to the page + * + * @api private + * @method addHints + */ + + function addHints() { + var _this4 = this; + + var self = this; + var hintsWrapper = document.querySelector(".introjs-hints"); + + if (hintsWrapper === null) { + hintsWrapper = _createElement("div", { + className: "introjs-hints" + }); + } + /** + * Returns an event handler unique to the hint iteration + * + * @param {Integer} i + * @return {Function} + */ + + + var getHintClick = function getHintClick(i) { + return function (e) { + var evt = e ? e : window.event; + + if (evt.stopPropagation) { + evt.stopPropagation(); + } + + if (evt.cancelBubble !== null) { + evt.cancelBubble = true; + } + + showHintDialog.call(self, i); + }; + }; + + forEach(this._introItems, function (item, i) { + // avoid append a hint twice + if (document.querySelector(".introjs-hint[data-step=\"".concat(i, "\"]"))) { + return; + } + + var hint = _createElement("a", { + className: "introjs-hint" + }); + setAnchorAsButton(hint); + hint.onclick = getHintClick(i); + + if (!item.hintAnimation) { + addClass(hint, "introjs-hint-no-anim"); + } // hint's position should be fixed if the target element's position is fixed + + + if (isFixed(item.element)) { + addClass(hint, "introjs-fixedhint"); + } + + var hintDot = _createElement("div", { + className: "introjs-hint-dot" + }); + var hintPulse = _createElement("div", { + className: "introjs-hint-pulse" + }); + hint.appendChild(hintDot); + hint.appendChild(hintPulse); + hint.setAttribute("data-step", i); // we swap the hint element with target element + // because _setHelperLayerPosition uses `element` property + + item.targetElement = item.element; + item.element = hint; // align the hint position + + alignHintPosition.call(_this4, item.hintPosition, hint, item.targetElement); + hintsWrapper.appendChild(hint); + }); // adding the hints wrapper + + document.body.appendChild(hintsWrapper); // call the callback function (if any) + + if (typeof this._hintsAddedCallback !== "undefined") { + this._hintsAddedCallback.call(this); + } + } + /** + * Aligns hint position + * + * @api private + * @method alignHintPosition + * @param {String} position + * @param {Object} hint + * @param {Object} element + */ + + function alignHintPosition(position, _ref, element) { + var style = _ref.style; + // get/calculate offset of target element + var offset = getOffset.call(this, element); + var iconWidth = 20; + var iconHeight = 20; // align the hint element + + switch (position) { + default: + case "top-left": + style.left = "".concat(offset.left, "px"); + style.top = "".concat(offset.top, "px"); + break; + + case "top-right": + style.left = "".concat(offset.left + offset.width - iconWidth, "px"); + style.top = "".concat(offset.top, "px"); + break; + + case "bottom-left": + style.left = "".concat(offset.left, "px"); + style.top = "".concat(offset.top + offset.height - iconHeight, "px"); + break; + + case "bottom-right": + style.left = "".concat(offset.left + offset.width - iconWidth, "px"); + style.top = "".concat(offset.top + offset.height - iconHeight, "px"); + break; + + case "middle-left": + style.left = "".concat(offset.left, "px"); + style.top = "".concat(offset.top + (offset.height - iconHeight) / 2, "px"); + break; + + case "middle-right": + style.left = "".concat(offset.left + offset.width - iconWidth, "px"); + style.top = "".concat(offset.top + (offset.height - iconHeight) / 2, "px"); + break; + + case "middle-middle": + style.left = "".concat(offset.left + (offset.width - iconWidth) / 2, "px"); + style.top = "".concat(offset.top + (offset.height - iconHeight) / 2, "px"); + break; + + case "bottom-middle": + style.left = "".concat(offset.left + (offset.width - iconWidth) / 2, "px"); + style.top = "".concat(offset.top + offset.height - iconHeight, "px"); + break; + + case "top-middle": + style.left = "".concat(offset.left + (offset.width - iconWidth) / 2, "px"); + style.top = "".concat(offset.top, "px"); + break; + } + } + /** + * Triggers when user clicks on the hint element + * + * @api private + * @method _showHintDialog + * @param {Number} stepId + */ + + function showHintDialog(stepId) { + var hintElement = document.querySelector(".introjs-hint[data-step=\"".concat(stepId, "\"]")); + var item = this._introItems[stepId]; // call the callback function (if any) + + if (typeof this._hintClickCallback !== "undefined") { + this._hintClickCallback.call(this, hintElement, item, stepId); + } // remove all open tooltips + + + var removedStep = removeHintTooltip.call(this); // to toggle the tooltip + + if (parseInt(removedStep, 10) === stepId) { + return; + } + + var tooltipLayer = _createElement("div", { + className: "introjs-tooltip" + }); + var tooltipTextLayer = _createElement("div"); + var arrowLayer = _createElement("div"); + var referenceLayer = _createElement("div"); + + tooltipLayer.onclick = function (e) { + //IE9 & Other Browsers + if (e.stopPropagation) { + e.stopPropagation(); + } //IE8 and Lower + else { + e.cancelBubble = true; + } + }; + + tooltipTextLayer.className = "introjs-tooltiptext"; + var tooltipWrapper = _createElement("p"); + tooltipWrapper.innerHTML = item.hint; + var closeButton = _createElement("a"); + closeButton.className = this._options.buttonClass; + closeButton.setAttribute("role", "button"); + closeButton.innerHTML = this._options.hintButtonLabel; + closeButton.onclick = hideHint.bind(this, stepId); + tooltipTextLayer.appendChild(tooltipWrapper); + tooltipTextLayer.appendChild(closeButton); + arrowLayer.className = "introjs-arrow"; + tooltipLayer.appendChild(arrowLayer); + tooltipLayer.appendChild(tooltipTextLayer); // set current step for _placeTooltip function + + this._currentStep = hintElement.getAttribute("data-step"); // align reference layer position + + referenceLayer.className = "introjs-tooltipReferenceLayer introjs-hintReference"; + referenceLayer.setAttribute("data-step", hintElement.getAttribute("data-step")); + setHelperLayerPosition.call(this, referenceLayer); + referenceLayer.appendChild(tooltipLayer); + document.body.appendChild(referenceLayer); //set proper position + + placeTooltip.call(this, hintElement, tooltipLayer, arrowLayer, true); + } + /** + * Removes open hint (tooltip hint) + * + * @api private + * @method _removeHintTooltip + */ + + function removeHintTooltip() { + var tooltip = document.querySelector(".introjs-hintReference"); + + if (tooltip) { + var step = tooltip.getAttribute("data-step"); + tooltip.parentNode.removeChild(tooltip); + return step; + } + } + /** + * Start parsing hint items + * + * @api private + * @param {Object} targetElm + * @method _startHint + */ + + function populateHints(targetElm) { + var _this5 = this; + + this._introItems = []; + + if (this._options.hints) { + forEach(this._options.hints, function (hint) { + var currentItem = cloneObject(hint); + + if (typeof currentItem.element === "string") { + //grab the element with given selector from the page + currentItem.element = document.querySelector(currentItem.element); + } + + currentItem.hintPosition = currentItem.hintPosition || _this5._options.hintPosition; + currentItem.hintAnimation = currentItem.hintAnimation || _this5._options.hintAnimation; + + if (currentItem.element !== null) { + _this5._introItems.push(currentItem); + } + }); + } else { + var hints = targetElm.querySelectorAll("*[data-hint]"); + + if (!hints || !hints.length) { + return false; + } //first add intro items with data-step + + + forEach(hints, function (currentElement) { + // hint animation + var hintAnimation = currentElement.getAttribute("data-hintanimation"); + + if (hintAnimation) { + hintAnimation = hintAnimation === "true"; + } else { + hintAnimation = _this5._options.hintAnimation; + } + + _this5._introItems.push({ + element: currentElement, + hint: currentElement.getAttribute("data-hint"), + hintPosition: currentElement.getAttribute("data-hintposition") || _this5._options.hintPosition, + hintAnimation: hintAnimation, + tooltipClass: currentElement.getAttribute("data-tooltipclass"), + position: currentElement.getAttribute("data-position") || _this5._options.tooltipPosition + }); + }); + } + + addHints.call(this); + /* + todo: + these events should be removed at some point + */ + + DOMEvent.on(document, "click", removeHintTooltip, this, false); + DOMEvent.on(window, "resize", reAlignHints, this, true); + } + /** + * Re-aligns all hint elements + * + * @api private + * @method _reAlignHints + */ + + function reAlignHints() { + var _this6 = this; + + forEach(this._introItems, function (_ref2) { + var targetElement = _ref2.targetElement, + hintPosition = _ref2.hintPosition, + element = _ref2.element; + + if (typeof targetElement === "undefined") { + return; + } + + alignHintPosition.call(_this6, hintPosition, element, targetElement); + }); + } + + /** + * Update placement of the intro objects on the screen + * @api private + */ + + function refresh() { + // re-align intros + setHelperLayerPosition.call(this, document.querySelector(".introjs-helperLayer")); + setHelperLayerPosition.call(this, document.querySelector(".introjs-tooltipReferenceLayer")); + setHelperLayerPosition.call(this, document.querySelector(".introjs-disableInteraction")); // re-align tooltip + + if (this._currentStep !== undefined && this._currentStep !== null) { + var oldArrowLayer = document.querySelector(".introjs-arrow"); + var oldtooltipContainer = document.querySelector(".introjs-tooltip"); + placeTooltip.call(this, this._introItems[this._currentStep].element, oldtooltipContainer, oldArrowLayer); + } //re-align hints + + + reAlignHints.call(this); + return this; + } + + function onResize() { + refresh.call(this); + } + + /** + * Removes `element` from `parentElement` + * + * @param {Element} element + * @param {Boolean} [animate=false] + */ + + function removeChild(element, animate) { + if (!element || !element.parentElement) return; + var parentElement = element.parentElement; + + if (animate) { + setStyle(element, { + opacity: "0" + }); + window.setTimeout(function () { + parentElement.removeChild(element); + }, 500); + } else { + parentElement.removeChild(element); + } + } + + /** + * Exit from intro + * + * @api private + * @method _exitIntro + * @param {Object} targetElement + * @param {Boolean} force - Setting to `true` will skip the result of beforeExit callback + */ + + function exitIntro(targetElement, force) { + var continueExit = true; // calling onbeforeexit callback + // + // If this callback return `false`, it would halt the process + + if (this._introBeforeExitCallback !== undefined) { + continueExit = this._introBeforeExitCallback.call(this); + } // skip this check if `force` parameter is `true` + // otherwise, if `onbeforeexit` returned `false`, don't exit the intro + + + if (!force && continueExit === false) return; // remove overlay layers from the page + + var overlayLayers = targetElement.querySelectorAll(".introjs-overlay"); + + if (overlayLayers && overlayLayers.length) { + forEach(overlayLayers, function (overlayLayer) { + return removeChild(overlayLayer); + }); + } //remove all helper layers + + + var helperLayer = targetElement.querySelector(".introjs-helperLayer"); + removeChild(helperLayer, true); + var referenceLayer = targetElement.querySelector(".introjs-tooltipReferenceLayer"); + removeChild(referenceLayer); //remove disableInteractionLayer + + var disableInteractionLayer = targetElement.querySelector(".introjs-disableInteraction"); + removeChild(disableInteractionLayer); //remove intro floating element + + var floatingElement = document.querySelector(".introjsFloatingElement"); + removeChild(floatingElement); + removeShowElement(); //clean listeners + + DOMEvent.off(window, "keydown", onKeyDown, this, true); + DOMEvent.off(window, "resize", onResize, this, true); //check if any callback is defined + + if (this._introExitCallback !== undefined) { + this._introExitCallback.call(this); + } //set the step to zero + + + this._currentStep = undefined; + } + + /** + * Add overlay layer to the page + * + * @api private + * @method _addOverlayLayer + * @param {Object} targetElm + */ + + function addOverlayLayer(targetElm) { + var _this = this; + + var overlayLayer = _createElement("div", { + className: "introjs-overlay" + }); + setStyle(overlayLayer, { + top: 0, + bottom: 0, + left: 0, + right: 0, + position: "fixed" + }); + targetElm.appendChild(overlayLayer); + + if (this._options.exitOnOverlayClick === true) { + setStyle(overlayLayer, { + cursor: "pointer" + }); + + overlayLayer.onclick = function () { + exitIntro.call(_this, targetElm); + }; + } + + return true; + } + + /** + * Initiate a new introduction/guide from an element in the page + * + * @api private + * @method _introForElement + * @param {Object} targetElm + * @param {String} group + * @returns {Boolean} Success or not? + */ + + function introForElement(targetElm, group) { + var _this = this; + + var allIntroSteps = targetElm.querySelectorAll("*[data-intro]"); + var introItems = []; + + if (this._options.steps) { + //use steps passed programmatically + forEach(this._options.steps, function (step) { + var currentItem = cloneObject(step); //set the step + + currentItem.step = introItems.length + 1; + currentItem.title = currentItem.title || ""; //use querySelector function only when developer used CSS selector + + if (typeof currentItem.element === "string") { + //grab the element with given selector from the page + currentItem.element = document.querySelector(currentItem.element); + } //intro without element + + + if (typeof currentItem.element === "undefined" || currentItem.element === null) { + var floatingElementQuery = document.querySelector(".introjsFloatingElement"); + + if (floatingElementQuery === null) { + floatingElementQuery = _createElement("div", { + className: "introjsFloatingElement" + }); + document.body.appendChild(floatingElementQuery); + } + + currentItem.element = floatingElementQuery; + currentItem.position = "floating"; + } + + currentItem.scrollTo = currentItem.scrollTo || _this._options.scrollTo; + + if (typeof currentItem.disableInteraction === "undefined") { + currentItem.disableInteraction = _this._options.disableInteraction; + } + + if (currentItem.element !== null) { + introItems.push(currentItem); + } + }); + } else { + //use steps from data-* annotations + var elmsLength = allIntroSteps.length; + var disableInteraction; //if there's no element to intro + + if (elmsLength < 1) { + return false; + } + + forEach(allIntroSteps, function (currentElement) { + // PR #80 + // start intro for groups of elements + if (group && currentElement.getAttribute("data-intro-group") !== group) { + return; + } // skip hidden elements + + + if (currentElement.style.display === "none") { + return; + } + + var step = parseInt(currentElement.getAttribute("data-step"), 10); + + if (currentElement.hasAttribute("data-disable-interaction")) { + disableInteraction = !!currentElement.getAttribute("data-disable-interaction"); + } else { + disableInteraction = _this._options.disableInteraction; + } + + if (step > 0) { + introItems[step - 1] = { + element: currentElement, + title: currentElement.getAttribute("data-title") || "", + intro: currentElement.getAttribute("data-intro"), + step: parseInt(currentElement.getAttribute("data-step"), 10), + tooltipClass: currentElement.getAttribute("data-tooltipclass"), + highlightClass: currentElement.getAttribute("data-highlightclass"), + position: currentElement.getAttribute("data-position") || _this._options.tooltipPosition, + scrollTo: currentElement.getAttribute("data-scrollto") || _this._options.scrollTo, + disableInteraction: disableInteraction + }; + } + }); //next add intro items without data-step + //todo: we need a cleanup here, two loops are redundant + + var _nextStep = 0; + forEach(allIntroSteps, function (currentElement) { + // PR #80 + // start intro for groups of elements + if (group && currentElement.getAttribute("data-intro-group") !== group) { + return; + } + + if (currentElement.getAttribute("data-step") === null) { + while (true) { + if (typeof introItems[_nextStep] === "undefined") { + break; + } else { + _nextStep++; + } + } + + if (currentElement.hasAttribute("data-disable-interaction")) { + disableInteraction = !!currentElement.getAttribute("data-disable-interaction"); + } else { + disableInteraction = _this._options.disableInteraction; + } + + introItems[_nextStep] = { + element: currentElement, + title: currentElement.getAttribute("data-title") || "", + intro: currentElement.getAttribute("data-intro"), + step: _nextStep + 1, + tooltipClass: currentElement.getAttribute("data-tooltipclass"), + highlightClass: currentElement.getAttribute("data-highlightclass"), + position: currentElement.getAttribute("data-position") || _this._options.tooltipPosition, + scrollTo: currentElement.getAttribute("data-scrollto") || _this._options.scrollTo, + disableInteraction: disableInteraction + }; + } + }); + } //removing undefined/null elements + + + var tempIntroItems = []; + + for (var z = 0; z < introItems.length; z++) { + if (introItems[z]) { + // copy non-falsy values to the end of the array + tempIntroItems.push(introItems[z]); + } + } + + introItems = tempIntroItems; //Ok, sort all items with given steps + + introItems.sort(function (a, b) { + return a.step - b.step; + }); //set it to the introJs object + + this._introItems = introItems; //add overlay layer to the page + + if (addOverlayLayer.call(this, targetElm)) { + //then, start the show + nextStep.call(this); + + if (this._options.keyboardNavigation) { + DOMEvent.on(window, "keydown", onKeyDown, this, true); + } //for window resize + + + DOMEvent.on(window, "resize", onResize, this, true); + } + + return false; + } + + var version$1 = "3.4.0"; + + /** + * IntroJs main class + * + * @class IntroJs + */ + + function IntroJs(obj) { + this._targetElement = obj; + this._introItems = []; + this._options = { + /* Next button label in tooltip box */ + nextLabel: "Next", + + /* Previous button label in tooltip box */ + prevLabel: "Back", + + /* Skip button label in tooltip box */ + skipLabel: "×", + + /* Done button label in tooltip box */ + doneLabel: "Done", + + /* Hide previous button in the first step? Otherwise, it will be disabled button. */ + hidePrev: false, + + /* Hide next button in the last step? Otherwise, it will be disabled button (note: this will also hide the "Done" button) */ + hideNext: false, + + /* Change the Next button to Done in the last step of the intro? otherwise, it will render a disabled button */ + nextToDone: true, + + /* Default tooltip box position */ + tooltipPosition: "bottom", + + /* Next CSS class for tooltip boxes */ + tooltipClass: "", + + /* CSS class that is added to the helperLayer */ + highlightClass: "", + + /* Close introduction when pressing Escape button? */ + exitOnEsc: true, + + /* Close introduction when clicking on overlay layer? */ + exitOnOverlayClick: true, + + /* Show step numbers in introduction? */ + showStepNumbers: false, + + /* Let user use keyboard to navigate the tour? */ + keyboardNavigation: true, + + /* Show tour control buttons? */ + showButtons: true, + + /* Show tour bullets? */ + showBullets: true, + + /* Show tour progress? */ + showProgress: false, + + /* Scroll to highlighted element? */ + scrollToElement: true, + + /* + * Should we scroll the tooltip or target element? + * + * Options are: 'element' or 'tooltip' + */ + scrollTo: "element", + + /* Padding to add after scrolling when element is not in the viewport (in pixels) */ + scrollPadding: 30, + + /* Set the overlay opacity */ + overlayOpacity: 0.5, + + /* To determine the tooltip position automatically based on the window.width/height */ + autoPosition: true, + + /* Precedence of positions, when auto is enabled */ + positionPrecedence: ["bottom", "top", "right", "left"], + + /* Disable an interaction with element? */ + disableInteraction: false, + + /* Set how much padding to be used around helper element */ + helperElementPadding: 10, + + /* Default hint position */ + hintPosition: "top-middle", + + /* Hint button label */ + hintButtonLabel: "Got it", + + /* Adding animation to hints? */ + hintAnimation: true, + + /* additional classes to put on the buttons */ + buttonClass: "introjs-button", + + /* additional classes to put on progress bar */ + progressBarAdditionalClass: false + }; + } + + var introJs = function introJs(targetElm) { + var instance; + + if (_typeof(targetElm) === "object") { + //Ok, create a new instance + instance = new IntroJs(targetElm); + } else if (typeof targetElm === "string") { + //select the target element with query selector + var targetElement = document.querySelector(targetElm); + + if (targetElement) { + instance = new IntroJs(targetElement); + } else { + throw new Error("There is no element with given selector."); + } + } else { + instance = new IntroJs(document.body); + } // add instance to list of _instances + // passing group to stamp to increment + // from 0 onward somewhat reliably + + + introJs.instances[stamp(instance, "introjs-instance")] = instance; + return instance; + }; + /** + * Current IntroJs version + * + * @property version + * @type String + */ + + + introJs.version = version$1; + /** + * key-val object helper for introJs instances + * + * @property instances + * @type Object + */ + + introJs.instances = {}; //Prototype + + introJs.fn = IntroJs.prototype = { + clone: function clone() { + return new IntroJs(this); + }, + setOption: function setOption(option, value) { + this._options[option] = value; + return this; + }, + setOptions: function setOptions(options) { + this._options = mergeOptions(this._options, options); + return this; + }, + start: function start(group) { + introForElement.call(this, this._targetElement, group); + return this; + }, + goToStep: function goToStep$1(step) { + goToStep.call(this, step); + + return this; + }, + addStep: function addStep(options) { + if (!this._options.steps) { + this._options.steps = []; + } + + this._options.steps.push(options); + + return this; + }, + addSteps: function addSteps(steps) { + if (!steps.length) return; + + for (var index = 0; index < steps.length; index++) { + this.addStep(steps[index]); + } + + return this; + }, + goToStepNumber: function goToStepNumber$1(step) { + goToStepNumber.call(this, step); + + return this; + }, + nextStep: function nextStep$1() { + nextStep.call(this); + + return this; + }, + previousStep: function previousStep$1() { + previousStep.call(this); + + return this; + }, + currentStep: function currentStep$1() { + return currentStep.call(this); + }, + exit: function exit(force) { + exitIntro.call(this, this._targetElement, force); + return this; + }, + refresh: function refresh$1() { + refresh.call(this); + + return this; + }, + onbeforechange: function onbeforechange(providedCallback) { + if (typeof providedCallback === "function") { + this._introBeforeChangeCallback = providedCallback; + } else { + throw new Error("Provided callback for onbeforechange was not a function"); + } + + return this; + }, + onchange: function onchange(providedCallback) { + if (typeof providedCallback === "function") { + this._introChangeCallback = providedCallback; + } else { + throw new Error("Provided callback for onchange was not a function."); + } + + return this; + }, + onafterchange: function onafterchange(providedCallback) { + if (typeof providedCallback === "function") { + this._introAfterChangeCallback = providedCallback; + } else { + throw new Error("Provided callback for onafterchange was not a function"); + } + + return this; + }, + oncomplete: function oncomplete(providedCallback) { + if (typeof providedCallback === "function") { + this._introCompleteCallback = providedCallback; + } else { + throw new Error("Provided callback for oncomplete was not a function."); + } + + return this; + }, + onhintsadded: function onhintsadded(providedCallback) { + if (typeof providedCallback === "function") { + this._hintsAddedCallback = providedCallback; + } else { + throw new Error("Provided callback for onhintsadded was not a function."); + } + + return this; + }, + onhintclick: function onhintclick(providedCallback) { + if (typeof providedCallback === "function") { + this._hintClickCallback = providedCallback; + } else { + throw new Error("Provided callback for onhintclick was not a function."); + } + + return this; + }, + onhintclose: function onhintclose(providedCallback) { + if (typeof providedCallback === "function") { + this._hintCloseCallback = providedCallback; + } else { + throw new Error("Provided callback for onhintclose was not a function."); + } + + return this; + }, + onexit: function onexit(providedCallback) { + if (typeof providedCallback === "function") { + this._introExitCallback = providedCallback; + } else { + throw new Error("Provided callback for onexit was not a function."); + } + + return this; + }, + onskip: function onskip(providedCallback) { + if (typeof providedCallback === "function") { + this._introSkipCallback = providedCallback; + } else { + throw new Error("Provided callback for onskip was not a function."); + } + + return this; + }, + onbeforeexit: function onbeforeexit(providedCallback) { + if (typeof providedCallback === "function") { + this._introBeforeExitCallback = providedCallback; + } else { + throw new Error("Provided callback for onbeforeexit was not a function."); + } + + return this; + }, + addHints: function addHints() { + populateHints.call(this, this._targetElement); + return this; + }, + hideHint: function hideHint$1(stepId) { + hideHint.call(this, stepId); + + return this; + }, + hideHints: function hideHints$1() { + hideHints.call(this); + + return this; + }, + showHint: function showHint$1(stepId) { + showHint.call(this, stepId); + + return this; + }, + showHints: function showHints$1() { + showHints.call(this); + + return this; + }, + removeHints: function removeHints$1() { + removeHints.call(this); + + return this; + }, + removeHint: function removeHint$1(stepId) { + removeHint().call(this, stepId); + + return this; + }, + showHintDialog: function showHintDialog$1(stepId) { + showHintDialog.call(this, stepId); + + return this; + } + }; + + return introJs; + +}))); diff --git a/wp-content/plugins/the-events-calendar/common/node_modules/intro.js/introjs-rtl.css b/wp-content/plugins/the-events-calendar/common/node_modules/intro.js/introjs-rtl.css new file mode 100644 index 000000000..60249e211 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/node_modules/intro.js/introjs-rtl.css @@ -0,0 +1,23 @@ +.introjs-tooltipbuttons { + text-align: left; } + +.introjs-skipbutton { + margin-left: 5px; + float: left; } + +.introjs-tooltip-title { + float: right; } + +.introjs-tooltip { + direction: rtl; } + +.introjs-prevbutton { + border: 1px solid #d4d4d4; + float: right; } + +.introjs-nextbutton { + border: 1px solid #d4d4d4; + float: left; } + +.introjs-bullets ul li { + float: right; } diff --git a/wp-content/plugins/the-events-calendar/common/node_modules/intro.js/introjs.css b/wp-content/plugins/the-events-calendar/common/node_modules/intro.js/introjs.css new file mode 100644 index 000000000..1e8ffe7dd --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/node_modules/intro.js/introjs.css @@ -0,0 +1,436 @@ +/* + Buttons style by http://nicolasgallagher.com/lab/css3-github-buttons/ + Changed by Afshin Mehrabani +*/ +/* overrides extra padding on button elements in Firefox */ +@-webkit-keyframes introjspulse { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0; } + 25% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0.1; } + 50% { + -webkit-transform: scale(0.1); + transform: scale(0.1); + opacity: 0.3; } + 75% { + -webkit-transform: scale(0.5); + transform: scale(0.5); + opacity: 0.5; } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; } } +@keyframes introjspulse { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0; } + 25% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0.1; } + 50% { + -webkit-transform: scale(0.1); + transform: scale(0.1); + opacity: 0.3; } + 75% { + -webkit-transform: scale(0.5); + transform: scale(0.5); + opacity: 0.5; } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; } } + +.introjs-overlay { + position: absolute; + -webkit-box-sizing: content-box; + box-sizing: content-box; + z-index: 999999; + opacity: 0; + -webkit-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; } + +.introjs-showElement { + z-index: 9999999 !important; } + +tr.introjs-showElement > td { + z-index: 9999999 !important; + position: relative; } + +tr.introjs-showElement > th { + z-index: 9999999 !important; + position: relative; } + +.introjs-disableInteraction { + z-index: 99999999 !important; + position: absolute; + background-color: #ffffff; + opacity: 0; + filter: alpha(opacity=0); } + +.introjs-relativePosition { + position: relative; } + +.introjs-helperLayer { + -webkit-box-sizing: content-box; + box-sizing: content-box; + position: absolute; + z-index: 9999998; + border-radius: 4px; + -webkit-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; } + .introjs-helperLayer * { + -webkit-box-sizing: content-box; + box-sizing: content-box; } + .introjs-helperLayer *:before { + -webkit-box-sizing: content-box; + box-sizing: content-box; } + .introjs-helperLayer *:after { + -webkit-box-sizing: content-box; + box-sizing: content-box; } + +.introjs-tooltipReferenceLayer { + font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif; + -webkit-box-sizing: content-box; + box-sizing: content-box; + position: absolute; + visibility: hidden; + z-index: 100000000; + background-color: transparent; + -webkit-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; } + .introjs-tooltipReferenceLayer * { + font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif; } + +.introjs-helperNumberLayer { + font-family: "Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif; + color: #9e9e9e; + text-align: center; + padding-top: 10px; + padding-bottom: 10px; } + +.introjs-arrow { + border: 5px solid transparent; + content: ""; + position: absolute; } + +.introjs-arrow.top { + top: -10px; + left: 10px; + border-bottom-color: #ffffff; } + +.introjs-arrow.top-right { + top: -10px; + right: 10px; + border-bottom-color: #ffffff; } + +.introjs-arrow.top-middle { + top: -10px; + left: 50%; + margin-left: -5px; + border-bottom-color: #ffffff; } + +.introjs-arrow.right { + right: -10px; + top: 10px; + border-left-color: #ffffff; } + +.introjs-arrow.right-bottom { + bottom: 10px; + right: -10px; + border-left-color: #ffffff; } + +.introjs-arrow.bottom { + bottom: -10px; + left: 10px; + border-top-color: #ffffff; } + +.introjs-arrow.bottom-right { + bottom: -10px; + right: 10px; + border-top-color: #ffffff; } + +.introjs-arrow.bottom-middle { + bottom: -10px; + left: 50%; + margin-left: -5px; + border-top-color: #ffffff; } + +.introjs-arrow.left { + left: -10px; + top: 10px; + border-right-color: #ffffff; } + +.introjs-arrow.left-bottom { + left: -10px; + bottom: 10px; + border-right-color: #ffffff; } + +.introjs-tooltip { + -webkit-box-sizing: content-box; + box-sizing: content-box; + position: absolute; + visibility: visible; + background-color: #ffffff; + min-width: 250px; + max-width: 300px; + border-radius: 5px; + -webkit-box-shadow: 0 3px 30px rgba(33, 33, 33, 0.3); + box-shadow: 0 3px 30px rgba(33, 33, 33, 0.3); + -webkit-transition: opacity 0.1s ease-out; + -o-transition: opacity 0.1s ease-out; + transition: opacity 0.1s ease-out; } + +.introjs-tooltiptext { + padding: 20px; } + +.introjs-tooltip-title { + font-size: 18px; + margin: 0; + padding: 0; + font-weight: 700; + float: left; + line-height: 32px; } + +.introjs-tooltip-header { + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; } + .introjs-tooltip-header:after { + content: "."; + visibility: hidden; + display: block; + height: 0; + clear: both; } + +.introjs-tooltipbuttons { + border-top: 1px solid #e0e0e0; + padding: 10px; + text-align: right; + white-space: nowrap; } + .introjs-tooltipbuttons:after { + content: ""; + visibility: hidden; + display: block; + height: 0; + clear: both; } + +.introjs-button { + -webkit-box-sizing: content-box; + box-sizing: content-box; + position: relative; + overflow: visible; + display: inline-block; + padding: 0.5rem 1rem; + border: 1px solid #bdbdbd; + text-decoration: none; + text-shadow: 1px 1px 0 #ffffff; + font-size: 14px; + color: #424242; + white-space: nowrap; + cursor: pointer; + outline: none; + background-color: #f4f4f4; + border-radius: 0.2em; + zoom: 1; + *display: inline; } + .introjs-button:hover { + outline: none; + text-decoration: none; + border-color: #9e9e9e; + background-color: #e0e0e0; + color: #212121; } + .introjs-button:focus { + outline: none; + text-decoration: none; + background-color: #eeeeee; + -webkit-box-shadow: 0 0 0 0.2rem rgba(158, 158, 158, 0.5); + box-shadow: 0 0 0 0.2rem rgba(158, 158, 158, 0.5); + border: 1px solid #616161; + color: #212121; } + .introjs-button:active { + outline: none; + text-decoration: none; + background-color: #e0e0e0; + border-color: #9e9e9e; + color: #212121; } + .introjs-button::-moz-focus-inner { + padding: 0; + border: 0; } + +.introjs-skipbutton { + -webkit-box-sizing: content-box; + box-sizing: content-box; + color: #616161; + float: right; + font-size: 20px; + cursor: pointer; + font-weight: bold; + line-height: 1; + text-align: center; + padding: 7px 10px; } + .introjs-skipbutton:hover, .introjs-skipbutton:focus { + color: #212121; + outline: none; + text-decoration: none; } + +.introjs-prevbutton { + float: left; } + +.introjs-nextbutton { + float: right; } + +.introjs-disabled { + color: #9e9e9e; + border-color: #bdbdbd; + -webkit-box-shadow: none; + box-shadow: none; + cursor: default; + background-color: #f4f4f4; + background-image: none; + text-decoration: none; } + .introjs-disabled:hover, .introjs-disabled:focus { + color: #9e9e9e; + border-color: #bdbdbd; + -webkit-box-shadow: none; + box-shadow: none; + cursor: default; + background-color: #f4f4f4; + background-image: none; + text-decoration: none; } + +.introjs-hidden { + display: none; } + +.introjs-bullets { + text-align: center; + padding-top: 10px; + padding-bottom: 10px; } + .introjs-bullets ul { + -webkit-box-sizing: content-box; + box-sizing: content-box; + clear: both; + margin: 0 auto 0; + padding: 0; + display: inline-block; } + .introjs-bullets ul li { + -webkit-box-sizing: content-box; + box-sizing: content-box; + list-style: none; + float: left; + margin: 0 2px; } + .introjs-bullets ul li a { + -webkit-transition: width 0.1s ease-in; + -o-transition: width 0.1s ease-in; + transition: width 0.1s ease-in; + -webkit-box-sizing: content-box; + box-sizing: content-box; + display: block; + width: 6px; + height: 6px; + background: #ccc; + border-radius: 10px; + text-decoration: none; + cursor: pointer; } + .introjs-bullets ul li a:hover, .introjs-bullets ul li a:focus { + width: 15px; + background: #999; + text-decoration: none; + outline: none; } + .introjs-bullets ul li a.active { + width: 15px; + background: #999; } + +.introjs-progress { + -webkit-box-sizing: content-box; + box-sizing: content-box; + overflow: hidden; + height: 10px; + margin: 10px; + border-radius: 4px; + background-color: #e0e0e0; } + +.introjs-progressbar { + -webkit-box-sizing: content-box; + box-sizing: content-box; + float: left; + width: 0%; + height: 100%; + font-size: 10px; + line-height: 10px; + text-align: center; + background-color: #08c; } + +.introjsFloatingElement { + position: absolute; + height: 0; + width: 0; + left: 50%; + top: 50%; } + +.introjs-fixedTooltip { + position: fixed; } + +.introjs-hint { + -webkit-box-sizing: content-box; + box-sizing: content-box; + position: absolute; + background: transparent; + width: 20px; + height: 15px; + cursor: pointer; } + .introjs-hint:focus { + border: 0; + outline: 0; } + .introjs-hint:hover > .introjs-hint-pulse { + border: 5px solid rgba(60, 60, 60, 0.57); } + +.introjs-hidehint { + display: none; } + +.introjs-fixedhint { + position: fixed; } + +.introjs-hint-pulse { + -webkit-box-sizing: content-box; + box-sizing: content-box; + width: 10px; + height: 10px; + border: 5px solid rgba(60, 60, 60, 0.27); + border-radius: 30px; + background-color: rgba(136, 136, 136, 0.24); + z-index: 10; + position: absolute; + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; } + +.introjs-hint-no-anim .introjs-hint-dot { + -webkit-animation: none; + animation: none; } + +.introjs-hint-dot { + -webkit-box-sizing: content-box; + box-sizing: content-box; + border: 10px solid rgba(146, 146, 146, 0.36); + background: transparent; + border-radius: 60px; + height: 50px; + width: 50px; + -webkit-animation: introjspulse 3s ease-out; + animation: introjspulse 3s ease-out; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + position: absolute; + top: -25px; + left: -25px; + z-index: 1; + opacity: 0; } diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration.php b/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration.php new file mode 100644 index 000000000..6d508c08e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration.php @@ -0,0 +1,77 @@ +loader = $loader; + } + + /** + * @inheritDoc + */ + public function all(): array { + $configs = []; + foreach ( $this->loader->all() as $provider ) { + $configs = array_merge( $configs, $provider->all() ); + } + + return $configs; + } + + /** + * @inheritDoc + */ + public function get( $key ) { + foreach ( $this->loader->all() as $provider ) { + if ( $provider->has( $key ) ) { + return $provider->get( $key ); + } + } + + return null; + } + + /** + * @inheritDoc + */ + public function has( $key ): bool { + foreach ( $this->loader->all() as $provider ) { + if ( $provider->has( $key ) ) { + return true; + } + } + + return false; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration_Loader.php b/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration_Loader.php new file mode 100644 index 000000000..d99fa3d0d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration_Loader.php @@ -0,0 +1,67 @@ + + */ + protected static $providers = []; + + /** + * Add a var provider to the list of providers referenced when accessing a variable + * from within the Configuration object. + * + * @since 5.1.3 + * + * @param Configuration_Provider_Interface $provider + * + * @return $this + */ + public function add( Configuration_Provider_Interface $provider ): self { + if ( is_callable( [ $provider, 'register' ] ) ) { + $provider->register(); + } + self::$providers[] = $provider; + + return $this; + } + + /** + * Retrieve a list of all Configuration_Provider_Interface providers loaded. + * + * @since 5.1.3 + * + * @return Configuration_Provider_Interface[] + */ + public function all(): array { + return self::$providers; + } + + /** + * Remove the providers. + * + * @since 5.1.3 + * + * @return $this + */ + public function reset(): self { + self::$providers = []; + + return $this; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration_Provider_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration_Provider_Interface.php new file mode 100644 index 000000000..f29645ce7 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/Configuration_Provider_Interface.php @@ -0,0 +1,50 @@ +has( $key ) ) { + return constant( $key ); + } + return null; + } + + /** + * @inheritDoc + */ + public function all(): array { + return get_defined_constants( false ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/readme.md b/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/readme.md new file mode 100644 index 000000000..2735f1664 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Configuration/readme.md @@ -0,0 +1,60 @@ +# System Configuration + +Provides a system-wide set of configuration values. Easily access feature flags, and other immutable configurations. + +Inspired by systems that load configurations from various sources, like retrieving `conf.ini` or `.env` values. + +## Setup + +Add a configuration loader, so the system knows where to get the configuration values from. + +```php +// Constants_Provider.php +class Constants_Provider implements Configuration_Provider_Interface { + + public function has( $key ): bool { + return defined( $key ); + } + + public function get( $key ) { + if ( $this->has( $key ) ) { + + return constant( $key ); + } + + return null; + } + + public function all(): array { + return get_defined_constants( false ); + } +} +``` +```php +// Provider.php + +class Provider { + protected function register(): void { + // Can add other loaders with other configuration values, such as local vs prod configurations. + tribe( Configuration_Loader::class )->add( new Constants_Provider() ) + } +} +``` + +This is an extensible loader to allow various configuration sources and application specific logic to bind configuration providers in different ways. + +## Retrieve Configuration Value + +```php +// wp-config.php +define('TEC_FEATURE_FLAG', true); +``` +```php +// Model.php +public function tec_magic() { + // Feature enabled? + if ( tribe( Configuration::class )->get( 'TEC_FEATURE_FLAG' ) ) { + // do stuff... + } +} +``` \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Context/Post_Request_Type.php b/wp-content/plugins/the-events-calendar/common/src/Common/Context/Post_Request_Type.php new file mode 100644 index 000000000..eddd0ebea --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Context/Post_Request_Type.php @@ -0,0 +1,156 @@ + $post_type The post type or post types to check. + * + * @return bool Whether the current request is one to quick edit a single post of the specified post type or not. + */ + public function is_inline_editing_post( $post_type ): bool { + if ( ! ( ! empty( $post_type ) && wp_doing_ajax() && tribe_get_request_var( 'action' ) === 'inline-save' ) ) { + return false; + } + + $post_id = tribe_get_request_var( 'post_ID', null ); + + if ( empty( $post_id ) || ! is_numeric( $post_id ) ) { + return false; + } + + return in_array( get_post_type( $post_id ), (array) $post_type, true ); + } + + /** + * Whether the current request is one to edit a list of the specified post types or not. + * + * The admin edit screen for a post type is the one that lists all the posts of that typ, + * it has the URL `/wp-admin/edit.php?post_type=`. + * + * @since 5.0.13 + * + * @param string|array $post_type The post type or post types to check. + * + * @return bool Whether the current request is one to edit a list of the specified post types or not. + */ + public function is_editing_post_list( $post_type ): bool { + // Quick check: are we on the `/wp-admin/edit.php` page? + global $pagenow; + + if ( $pagenow !== 'edit.php' ) { + return false; + } + + // Run some more thorough checks for the post type(s). + $post_types = array_filter( (array) $post_type ); + + return $this->is_editing_post( $post_types ); + } + + /** + * Whether we are currently creating a new post, a post of post type(s) or not. + * + * @since 4.7.7 + * + * @param null $post_type The optional post type to check. + * + * @return bool Whether we are currently creating a new post, a post of post type(s) or not. + */ + public function is_new_post( $post_type = null ): bool { + global $pagenow; + $is_new = 'post-new.php' === $pagenow; + + return $is_new && $this->is_editing_post( $post_type ); + } + + + /** + * Whether we are currently editing a post(s), post type(s) or not. + * + * @since 4.7.7 + * + * @param null|array|string|int $post_or_type A post ID, post type, an array of post types or post IDs, `null` + * to just make sure we are currently editing a post. + * + * @return bool + */ + public function is_editing_post( $post_or_type = null ): bool { + global $pagenow; + $is_new = 'post-new.php' === $pagenow; + $is_post = 'post.php' === $pagenow; + $is_editing = 'edit.php' === $pagenow; + + if ( ! ( $is_new || $is_post || $is_editing ) ) { + return false; + } + + if ( ! empty( $post_or_type ) ) { + $lookup = []; + // Prevent a slew of warnings every time we call this. + if ( isset( $_REQUEST ) ) { + $lookup[] = (array) $_REQUEST; + } + + if ( isset( $_GET ) ) { + $lookup[] = (array) $_GET; + } + + if ( isset( $_POST ) ) { + $lookup[] = (array) $_POST; + } + + if ( empty( $lookup ) ) { + return false; + } + + $current_post = Arr::get_in_any( $lookup, 'post', get_post() ); + + if ( is_numeric( $post_or_type ) ) { + $post = $is_post ? get_post( $post_or_type ) : null; + + return ! empty( $post ) && $post == $current_post; + } + + $post_types = is_array( $post_or_type ) ? $post_or_type : [ $post_or_type ]; + + $post = $is_post ? get_post( $current_post ) : null; + + if ( count( array_filter( $post_types, 'is_numeric' ) ) === count( $post_types ) ) { + return ! empty( $post ) && in_array( $post->ID, $post_types ); + } + + if ( $is_post && $post instanceof WP_Post ) { + $post_type = $post->post_type; + } else { + $post_type = Arr::get_in_any( $lookup, 'post_type', 'post' ); + } + + return (bool) count( array_intersect( $post_types, [ $post_type ] ) ); + } + + return $is_new || $is_post; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Container.php b/wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Container.php new file mode 100644 index 000000000..1ff22f189 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Container.php @@ -0,0 +1,30 @@ +getMessage(), $e->getCode() ); + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Provider/Controller.php b/wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Provider/Controller.php new file mode 100644 index 000000000..5db034f84 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Provider/Controller.php @@ -0,0 +1,147 @@ +container->singleton( static::class, $this ); + + if ( ! $this->is_active() ) { + return; + } + + $this->container->setVar( static::class . '_registered', true ); + + $this->do_register(); + } + + /** + * Registers the filters and actions hooks added by the controller. + * + * @since 5.0.17 + * + * @return void + */ + abstract protected function do_register(): void; + + /** + * Removes the filters and actions hooks added by the controller. + * + * Bound implementations should not be removed in this method! + * + * @since 5.0.17 + * + * @return void Filters and actions hooks added by the controller are be removed. + */ + abstract public function unregister(): void; + + /** + * Whether the controller is active or not. + * + * Controllers will be active by default, if that is not the case, the controller should override this method. + * + * @since 5.0.17 + * + * @return bool Whether the controller is active or not. + */ + public function is_active(): bool { + return true; + } + + /** + * Logs a message at the `debug` level. + * + * @since 5.0.17 + * + * @param string $message The message to log. + * @param array $context An array of context to log with the message. + * + * @return void The message is logged. + */ + protected function debug( string $message, array $context = [] ): void { + do_action( 'tribe_log', Log::DEBUG, $message, array_merge( [ + 'controller' => static::class, + ], $context ) ); + } + + /** + * Logs a message at the `warning` level. + * + * @since 5.0.17 + * + * @param string $message The message to log. + * @param array $context An array of context to log with the message. + * + * @return void The message is logged. + */ + protected function warning( string $message, array $context = [] ): void { + do_action( 'tribe_log', Log::WARNING, $message, array_merge( [ + 'controller' => static::class, + ], $context ) ); + } + + /** + * Logs a message at the `error` level. + * + * @since 5.0.17 + * + * @param string $message The message to log. + * @param array $context An array of context to log with the message. + * + * @return void The message is logged. + */ + protected function error( string $message, array $context = [] ): void { + do_action( 'tribe_log', Log::ERROR, $message, array_merge( [ + 'controller' => static::class, + ], $context ) ); + } + + /** + * Returns whether any instance of this controller has been registered or not. + * + * @since 5.0.17 + * + * @return bool Whether any instance of this controller has been registered or not. + */ + public static function is_registered(): bool { + return (bool) tribe()->getVar( static::class . '_registered' ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Service_Provider.php b/wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Service_Provider.php new file mode 100644 index 000000000..29d3162b0 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Contracts/Service_Provider.php @@ -0,0 +1,9 @@ +> $blocks Array of parsed block objects. + * + * @return array> Block references to the passed blocks and their inner blocks. + */ + public static function flatten_blocks( &$blocks ) { + $all_blocks = []; + $queue = []; + + foreach ( $blocks as &$block ) { + $queue[] = &$block; + } + + $queue_count = count( $queue ); + + while ( $queue_count > 0 ) { + $block = &$queue[0]; + array_shift( $queue ); + $all_blocks[] = &$block; + + if ( ! empty( $block['innerBlocks'] ) ) { + foreach ( $block['innerBlocks'] as &$inner_block ) { + $queue[] = &$inner_block; + } + } + + $queue_count = count( $queue ); + } + + return $all_blocks; + } + + /** + * Parses wp_template content and injects the current theme's stylesheet as a theme attribute into + * each wp_template_part. + * + * @since 4.14.18 + * + * @param string $template_content serialized wp_template content. + * + * @return string Updated wp_template content. + */ + public static function inject_theme_attribute_in_content( $template_content ) { + $has_updated_content = false; + $new_content = ''; + $template_blocks = parse_blocks( $template_content ); + + $blocks = static::flatten_blocks( $template_blocks ); + foreach ( $blocks as &$block ) { + if ( + 'core/template-part' === $block['blockName'] && + ! isset( $block['attrs']['theme'] ) + ) { + $block['attrs']['theme'] = wp_get_theme()->get_stylesheet(); + $has_updated_content = true; + } + } + + if ( $has_updated_content ) { + foreach ( $template_blocks as &$block ) { + $new_content .= serialize_block( $block ); + } + + return $new_content; + } + + return $template_content; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Exceptions/Container_Exception.php b/wp-content/plugins/the-events-calendar/common/src/Common/Exceptions/Container_Exception.php new file mode 100644 index 000000000..679943066 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Exceptions/Container_Exception.php @@ -0,0 +1,16 @@ +container->singleton( self::class, self::class ); + + // Prevents any loading in case we shouldn't load. + if ( ! $this->should_load() ) { + return; + } + + $this->load(); + } + + /** + * Gets the slug for this integration parent, the main plugin that is being integrated to. + * + * @since 5.1.1 + * + * @return string + */ + abstract public static function get_parent(): string; + + /** + * Gets the slug for this integration. + * + * @since 5.1.1 + * + * @return string + */ + abstract public static function get_slug(): string; + + /** + * Determines whether this integration should load. + * + * @since 5.1.1 + * + * @return bool + */ + public function should_load(): bool { + return $this->filter_should_load( $this->load_conditionals() ); + } + + /** + * Filters whether the integration should load. + * + * @since 5.1.1 + * + * @param bool $value Whether the integration should load. + * + * @return bool + */ + protected function filter_should_load( bool $value ): bool { + $parent = static::get_parent(); + $slug = static::get_slug(); + $type = static::get_type(); + + /** + * Filters if integrations should be loaded. + * + * @since 5.1.1 + * + * @param bool $value Whether the integration should load. + * @param string $type Type of integration we are loading. + * @param string $slug Slug of the integration we are loading. + */ + $value = apply_filters( 'tec_integration:should_load', $value, $parent, $type, $slug ); + + /** + * Filters if integrations should be loaded. + * + * @since 5.1.1 + * + * @param bool $value Whether the integration should load. + * @param string $type Type of integration we are loading. + * @param string $slug Slug of the integration we are loading. + */ + $value = apply_filters( "tec_integration:{$parent}/should_load", $value, $type, $slug ); + + /** + * Filters if integrations of the current type should be loaded. + * + * @since 5.1.1 + * + * @param bool $value Whether the integration should load. + * @param string $slug Slug of the integration we are loading. + */ + $value = apply_filters( "tec_integration:{$parent}/{$type}/should_load", $value, $slug ); + + /** + * Filters if a specific integration (by type and slug) should be loaded. + * + * @since 5.1.1 + * + * @param bool $value Whether the integration should load. + */ + return (bool) apply_filters( "tec_integration:{$parent}/{$type}/{$slug}/should_load", $value ); + } + + /** + * Determines if the integration in question should be loaded. + * + * @since 5.1.1 + * + * @return bool + */ + abstract public function load_conditionals(): bool; + + /** + * Loads the integration itself. + * + * @since 5.1.1 + * + * @return void + */ + abstract protected function load(): void; + + /** + * Determines the integration type. + * + * @since 5.1.1 + * + * @return string + */ + abstract public static function get_type(): string; +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Provider.php b/wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Provider.php new file mode 100644 index 000000000..60535e663 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Provider.php @@ -0,0 +1,27 @@ +container->singleton( static::class, $this ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Traits/Module_Integration.php b/wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Traits/Module_Integration.php new file mode 100644 index 000000000..f3a053446 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Integrations/Traits/Module_Integration.php @@ -0,0 +1,16 @@ +container->singleton( static::class, $this ); + + $hook_prefix = $this->container->make( Libraries\Provider::class )->get_hook_prefix(); + + try { + Installer\Config::set_hook_prefix( $hook_prefix ); + } catch ( \Exception $e ) { + // Ignore. + } + + add_filter( "stellarwp/installer/{$hook_prefix}/button_classes", [ $this, 'filter_button_classes' ] ); + } + + /** + * Filters the installer button classes. + * + * @since 5.0.10 + * + * @param array|mixed $classes The button classes. + * + * @return array + */ + public function filter_button_classes( $classes ) { + if ( ! is_array( $classes ) ) { + $classes = (array) $classes; + } + + $classes[] = 'components-button'; + $classes[] = 'is-primary'; + $classes[] = 'tec-admin__notice-install-content-button'; + return $classes; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Libraries/Provider.php b/wp-content/plugins/the-events-calendar/common/src/Common/Libraries/Provider.php new file mode 100644 index 000000000..95c7a036e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Libraries/Provider.php @@ -0,0 +1,43 @@ +container->singleton( static::class, $this ); + + tribe_register_provider( Installer\Provider::class ); + + DB\Config::setHookPrefix( $this->get_hook_prefix() ); + } + + /** + * Gets the hook prefix. + * + * @since 5.0.10 + * + * @return string + */ + public function get_hook_prefix(): string { + return static::$hook_prefix; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Factory.php b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Factory.php new file mode 100644 index 000000000..b8be57896 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Factory.php @@ -0,0 +1,100 @@ + + */ + public function get_sections(): array { + /** + * Allows filtering of the Common Info Sections. + * + * @since 5.1.0 + * + * @param array $sections Which sections exist. + */ + $sections = (array) apply_filters( 'tec_debug_info_sections', [] ); + + return array_filter( $sections, static function ( $section ) { + return $section instanceof Info_Section_Abstract; + } ); + } + + /** + * Gets the section after which we will insert all the factory-generated sections. + * + * @since 5.1.0 + * + * @return string + */ + protected function get_insert_after_section_key(): string { + return 'wp-media'; + } + + /** + * Filters the actual site health data to include our sections. + * + * @since 5.1.0 + * + * @param array $info + * + * @return array + */ + public function filter_include_info_sections( array $info = [] ) { + $sections = []; + foreach ( $this->get_sections() as $key => $section ) { + $sections[ $key ] = $section->to_array(); + } + + $info = Tribe__Main::array_insert_after_key( $this->get_insert_after_section_key(), $info, $sections ); + + return $info; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Fields/Generic_Info_Field.php b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Fields/Generic_Info_Field.php new file mode 100644 index 000000000..96416649d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Fields/Generic_Info_Field.php @@ -0,0 +1,61 @@ +|string|null $value + * @param int $priority + */ + public function __construct( string $id, string $label, $value = null, int $priority = 50 ) { + $this->id = $id; + $this->label = $label; + $this->value = $value; + $this->priority = $priority; + $this->is_private = true; + $this->debug = false; + } + + /** + * Given an array of configurations sets up a new generic field instance. + * + * @since 5.1.0 + * + * @param array $field + * + * @return Info_Field_Abstract + */ + public static function from_array( array $field ): Info_Field_Abstract { + return new static( $field['id'], $field['label'], $field['value'], $field['priority'] ); + } + + /** + * Given all the arguments create a new Generic Field. + * + * @since 5.1.0 + * + * @param string $id + * @param string $label + * @param string|null $value + * @param int $priority + * + * @return Info_Field_Abstract + */ + public static function from_args( string $id, string $label, ?string $value, int $priority = 50 ): Info_Field_Abstract { + return new static( $id, $label, $value, $priority ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Fields/Post_Status_Count_Field.php b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Fields/Post_Status_Count_Field.php new file mode 100644 index 000000000..6809dbe6d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Fields/Post_Status_Count_Field.php @@ -0,0 +1,102 @@ +|string|null $value + * @param int $priority + */ + public function __construct( string $id, string $post_type = null, int $priority = 50 ) { + $this->id = $id; + $this->post_type = $post_type; + $this->priority = $priority; + $this->is_private = true; + $this->debug = false; + } + + /** + * @inheritDoc + */ + public function get_label(): string { + $post_type_obj = get_post_type_object( $this->post_type ); + $name = $post_type_obj->label; + + if ( ! empty( $post_type_obj->labels->singular_name ) ) { + $name = $post_type_obj->labels->singular_name; + } + + return sprintf( + /* Translators: %1$s the post type label. */ + esc_html__( '%1$s counts', 'tribe-common' ), + $name + ); + } + + /** + * @inheritDoc + */ + public function get_value() { + return $this->get_counts(); + } + + /** + * Converts a post status count object to an array in the format + * [ (string) status_slug => (int) count] + * + * @since 5.1.0 + * + * @param stdClass $obj The object returned from wp_count_posts(). + * + * @return array An array of stati (key) with counts (value). + */ + protected function get_counts(): array { + $counts = (array) wp_count_posts( $this->post_type ); + $stati = [ + 'publish', + 'future', + 'draft', + 'pending', + ]; + + /** + * Allows other plugins to add/remove stati to track. + * + * @param array $stati An array of stati to track. + * @param self $field The field instance. + */ + $stati = apply_filters( 'tec_site_heath_event_stati', $stati, $this ); + + $keys = array_keys( $counts ); + foreach( $keys as $key ) { + if ( ! in_array( $key, $stati ) ) { + unset( $counts[ $key ] ); + } + } + + return $counts; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Field_Abstract.php b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Field_Abstract.php new file mode 100644 index 000000000..6b0d991e5 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Field_Abstract.php @@ -0,0 +1,159 @@ +|array|array + */ + protected $value; + + /** + * Stores the priority for the field, used for sorting. + * + * @since 5.1.0 + * + * @var int + */ + protected int $priority; + + /** + * Stores the flag for if the field is private. + * + * @since 5.1.0 + * + * @var bool + */ + protected bool $is_private; + + /** + * Stores the debug value for the field. + * + * @since 5.1.0 + * + * @var string + */ + protected string $debug; + + /** + * @inheritDoc + */ + public function get_id(): string { + return $this->id; + } + + /** + * @inheritDoc + */ + public function get_label(): string { + return $this->label; + } + + /** + * @inheritDoc + */ + public function get_value() { + return $this->value; + } + + /** + * @inheritDoc + */ + public function get_priority(): int { + return $this->priority; + } + + /** + * @inheritDoc + */ + public function is_private(): bool { + return $this->is_private; + } + + /** + * @inheritDoc + */ + public function get_debug(): string { + return $this->debug; + } + + /** + * @inheritDoc + */ + public function to_array(): array { + return [ + 'id' => $this->filter_param( 'id', $this->get_id() ), + 'label' => $this->filter_param( 'label', $this->get_label() ), + 'value' => $this->filter_param( 'value', $this->get_value() ), + 'priority' => $this->filter_param( 'priority', $this->get_priority() ), + 'private' => $this->filter_param( 'private', $this->is_private() ), + 'debug' => $this->filter_param( 'debug', $this->get_debug() ), + ]; + } + + /** + * Internal method to the Field class, to allow filtering of specific values. + * + * @since 5.1.0 + * + * @param string $param The field parameter we're filtering. + * @param mixed $value Value of the field. + * + * @return mixed + */ + protected function filter_param( string $param, $value = null ) { + $field_id = $this->get_id(); + + /** + * Filters the get of a particular param for all fields. + * + * @since 5.1.0 + * + * @param mixed $value Value of the field. + * @param Info_Field_Abstract $field Current Field. + */ + $value = apply_filters( "tec_debug_info_field_get_{$param}", $value, $this ); + + /** + * Filters the get of a particular param for a specific section + field combination. + * + * @since 5.1.0 + * + * @param mixed $value Value of the field. + * @param Info_Field_Abstract $field Current Field. + */ + return apply_filters( "tec_debug_info_field_{$field_id}_get_{$param}", $value, $this ); + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Field_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Field_Interface.php new file mode 100644 index 000000000..a9e980d95 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Field_Interface.php @@ -0,0 +1,85 @@ +|array|array + */ + public function get_value(); + + /** + * Gets the priority for the field, used to order fields in a section. + * + * @since 5.1.0 + * + * @return int + */ + public function get_priority(): int; + + /** + * Get the debug value for the field. + * + * Optional. The output that is used for this field when the user copies the data. It should be more concise and + * not translated. If not set, the content of $value is used. Note that the array keys are used as labels for + * the copied data. + * + * @since 5.1.0 + * + * @return string + */ + public function get_debug(): string; + + /** + * Determines if the field is private or not. + * + * Optional. If set to true, the field will be excluded from the copied data, allowing you to show, for example, API keys here. Default false. + * + * @since 5.1.0 + * + * @return bool + */ + public function is_private(): bool; + + /** + * Pulls all the params for this field into an array consumable by the site health info page. + * + * @since 5.1.0 + * + * @return array + */ + public function to_array(): array; +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Section_Abstract.php b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Section_Abstract.php new file mode 100644 index 000000000..11db83c99 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Section_Abstract.php @@ -0,0 +1,233 @@ + $fields + */ + protected array $fields = []; + + /** + * @inheritDoc + */ + public static function get_slug(): string { + return static::$slug; + } + + /** + * @inheritDoc + */ + public function to_array(): array { + $fields = []; + foreach ( $this->get_fields() as $key => $field ) { + $fields[ $key ] = $field->to_array(); + } + + return [ + 'label' => $this->filter_param( 'label', $this->get_label() ), + 'description' => $this->filter_param( 'description', $this->get_description() ), + 'private' => $this->filter_param( 'private', $this->is_private() ), + 'show_count' => $this->filter_param( 'show_count', $this->get_show_count() ), + 'fields' => $this->filter_param( 'fields', $fields ), + ]; + } + + /** + * @inheritDoc + */ + public function get_label(): string { + return $this->label; + } + + /** + * @inheritDoc + */ + public function get_description(): string { + return $this->description; + } + + /** + * @inheritDoc + */ + public function get_fields(): array { + return $this->fields; + } + + /** + * @inheritDoc + */ + public function get_show_count(): bool { + return $this->show_count; + } + + /** + * @inheritDoc + */ + public function is_private(): bool { + return $this->is_private; + } + + /** + * @inheritDoc + */ + public function has_field( $field ): bool { + // Assume field is a key first. + $id = $field; + + // When it's a field use its ID. + if ( $field instanceof Info_Field_Abstract ) { + $id = $field->get_id(); + } + + // Keys can only be strings. + if ( ! is_string( $id ) ) { + return false; + } + + $fields = $this->get_fields(); + + return isset( $fields[ $id ] ); + } + + /** + * @inheritDoc + */ + public function get_field( string $id ): ?Info_Field_Abstract { + if ( ! $this->has_field( $id ) ) { + return null; + } + + return $this->get_fields()[ $id ]; + } + + /** + * @inheritDoc + */ + public function add_field( Info_Field_Abstract $field, bool $overwrite = false ): bool { + // Allow the adding of a field to overwrite existing fields. + if ( ! $overwrite && $this->has_field( $field ) ) { + return false; + } + + $this->fields[ $field->get_id() ] = $field; + + $this->sort_fields(); + + return true; + } + + /** + * Internal method to the Section class, to allow filtering of specific values. + * + * @since 5.1.0 + * + * @param string $param + * @param mixed $value + * + * @return mixed + */ + protected function filter_param( string $param, $value = null ) { + $section_slug = static::get_slug(); + /** + * Filters the get of a particular param for all sections. + * + * @since 5.1.0 + * + * @param mixed $value Value of the field. + * @param Info_Section_Abstract $section Current Section. + */ + $value = apply_filters( "tec_debug_info_section_get_{$param}", $value, $this ); + + /** + * Filters the get of a particular param for a specific section. + * + * @since 5.1.0 + * + * @param mixed $value Value of the field. + * @param Info_Section_Abstract $section Current Section. + */ + return apply_filters( "tec_debug_info_section_{$section_slug}_get_{$param}", $value, $this ); + } + + /** + * Sorts the fields stored on this section, will retain keys. + * + * @since 5.1.0 + * + * @return void + */ + protected function sort_fields(): void { + uasort( $this->fields, static function ( $field_a, $field_b ) { + $a = $field_a->get_priority(); + $b = $field_b->get_priority(); + + if ( $a === $b ) { + return 0; + } + + return ( $a < $b ) ? - 1 : 1; + } ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Section_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Section_Interface.php new file mode 100644 index 000000000..81ad0b681 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Info_Section_Interface.php @@ -0,0 +1,123 @@ + + */ + public function get_fields(): array; + + /** + * Determines if a given field exists. + * + * @since 5.1.0 + * + * @param string|Info_Field_Abstract $field + * + * @return bool + */ + public function has_field( $field ): bool; + + /** + * Based on the id of the field return the object. + * + * @since 5.1.0 + * + * @param string $id + * + * @return Info_Field_Abstract|null + */ + public function get_field( string $id ): ?Info_Field_Abstract; + + /** + * Adds a field to this section. + * + * @see Generic_Info_Field If you are looking on how to quickly generate a field without creating a new class. + * + * @since 5.1.0 + * + * @param Info_Field_Abstract $field What field we are trying to add. + * @param bool $overwrite (optional) Determines if we will overwrite the field or not, if found. + * + * @return bool Determined by if we found a field with that id already. + */ + public function add_field( Info_Field_Abstract $field, bool $overwrite = false ): bool; +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Provider.php b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Provider.php new file mode 100644 index 000000000..0d09d4e54 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Site_Health/Provider.php @@ -0,0 +1,51 @@ +add_filters(); + } + + /** + * Include the filters related to this module. + * + * @since 5.1.0 + * + * @return void + */ + protected function add_filters(): void { + add_filter( 'debug_information', [ $this, 'filter_include_info_section' ] ); + } + + /** + * Includes the info sections controlled by Common. + * + * @since 5.1.0 + * + * @param array $info Current set of info sections. + * + * @return array + */ + public function filter_include_info_section( $info ): array { + return $this->container->make( Factory::class )->filter_include_info_sections( (array) $info ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Storage/Timed_Option.php b/wp-content/plugins/the-events-calendar/common/src/Common/Storage/Timed_Option.php new file mode 100644 index 000000000..5b9d51959 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Storage/Timed_Option.php @@ -0,0 +1,340 @@ +active = false; + } + + /** + * Activate the usage of Database Timed Options. + * + * @since 5.0.6 + * + * @return void + */ + public function activate(): void { + $this->active = true; + } + + /** + * Is the timed options active? + * + * @since 5.0.6 + * + * @return bool + */ + public function is_active(): bool { + /** + * Allows the modification of the state of usage for Timed Options. + * + * @since 5.0.6 + * + * @param bool $active Whether we use Database Timed Options or a glorified Memoization system. + */ + return (bool) apply_filters( 'tec_common_timed_option_is_active', $this->active ); + } + + /** + * Gets the option name for a given timed option, by attaching a prefix and allowing filtering. + * + * @since 5.0.6 + * + * @param string $key Key for the option we are trying to get the option name for. + * + * @return string + */ + public function get_option_name( string $key ): string { + /** + * Allows the modification of where we store the Transient Data. + * + * @since 5.0.6 + * + * @param string $option_name Name of the option where all the transient data will live. + */ + return (string) apply_filters( 'tec_common_timed_option_name', $this->option_name_prefix . $key, $this->option_name_prefix ); + } + + /** + * Fetches the value of a given timed option. + * + * @since 5.0.6 + * + * @param string $key Key for the option we are trying to get. + * @param mixed $default Default value when the option is either expired or not-set. + * @param bool $force If we should expire cache and fetch from the database. + * + * @return mixed|null + */ + public function get( $key, $default = null, bool $force = false ) { + /** + * Allows the filtering the default timed_option value. + * + * @since 5.0.6 + * + * @param mixed $default Default value when the option is either expired or not-set. + * @param string $key Key for the option we are trying to get. + * @param bool $force If we should expire cache and fetch from the database. + */ + $default = apply_filters( 'tec_common_timed_option_default_value', $default, $key, $force ); + + /** + * Allows the filtering to short-circuit the whole fetch logic. + * + * @since 5.0.6 + * + * @param mixed|null $pre If anything diff than null it will short-circuit. + * @param string $key Key for the option we are trying to get. + * @param mixed $default Default value when the option is either expired or not-set. + * @param bool $force If we should expire cache and fetch from the database. + */ + $pre = apply_filters( 'tec_common_timed_option_pre_value', null, $key, $default, $force ); + + if ( null !== $pre ) { + return $pre; + } + + $time = time(); + + // If we have a stored value that is not expired, use it. + if ( + ! $force + && isset( $this->data[ $key ] ) + && is_numeric( $this->data[ $key ]['expiration'] ) + && $time < $this->data[ $key ]['expiration'] + ) { + /** + * Allows the filtering of the cached value of the timed option. + * + * @since 5.0.6 + * + * @param mixed $value If anything diff than null it will short-circuit. + * @param string $key Key for the option we are trying to get. + * @param mixed $default Default value when the option is either expired or not-set. + * @param bool $force If we should expire cache and fetch from the database. + * @param bool $cache If the value was pulled from cache. + */ + return apply_filters( 'tec_common_timed_option_value', $this->data[ $key ]['value'], $key, $default, $force, true ); + } + + $timed_option = null; + + if ( $this->is_active() ) { + $timed_option_name = $this->get_option_name( $key ); + if ( true === $force ) { + wp_cache_delete( $timed_option_name, 'options' ); + } + $timed_option = get_option( $timed_option_name, null ); + } + + // Bail with default when non-existent. + if ( empty( $timed_option ) ) { + if ( $this->is_active() ) { + // Avoids next request check, forces auto-loading. + $this->set( $key, null, 0 ); + } + + return $default; + } + + // Bail with default when expired. + if ( $time >= $timed_option['expiration'] ) { + $this->delete( $key ); + + return $default; + } + + $this->data[ $key ] = $timed_option; + + /** + * Allows the filtering of the value of the timed option. + * + * @since 5.0.6 + * + * @param mixed $value If anything diff than null it will short-circuit. + * @param string $key Key for the option we are trying to get. + * @param mixed $default Default value when the option is either expired or not-set. + * @param bool $force If we should expire cache and fetch from the database. + * @param bool $cache If the value was pulled from cache. + */ + return apply_filters( 'tec_common_timed_option_value', $timed_option['value'], $key, $default, $force, false ); + } + + /** + * Delete a given timed option based on a key. + * Will also clear local cache. + * + * @since 5.0.6 + * + * @param string $key Which timed option we are checking. + * + * @return bool + */ + public function delete( $key ): bool { + $key = (string) $key; + $updated = false; + + if ( $this->is_active() ) { + $timed_option_name = $this->get_option_name( $key ); + $updated = update_option( $timed_option_name, null, true ); + wp_cache_delete( $timed_option_name, 'options' ); + } + + // Bail with default when non-existent. + if ( ! isset( $this->data[ $key ] ) ) { + return $updated; + } + + unset( $this->data[ $key ] ); + + return $updated; + } + + /** + * Checks if a given timed option exists. + * + * @since 5.0.6 + * + * @param string $key Which timed option we are checking. + * @param bool $force Clears the cache before get_option() + * + * @return bool + */ + public function exists( $key, bool $force = false ): bool { + /** + * Allows the filtering to short-circuit the whole exists logic. + * + * @since 5.0.6 + * + * @param mixed|null $pre If anything diff than null it will short-circuit. + * @param string $key Key for the option we are trying to get. + * @param bool $force If we should expire cache and fetch from the database. + */ + $pre = apply_filters( 'tec_common_timed_option_pre_exists', null, $key, $force ); + + if ( null !== $pre ) { + return (bool) $pre; + } + + $time = time(); + $cached = false; + $timed_option = null; + + // If we have a stored value that is not expired, use it. + if ( + ! $force + && isset( $this->data[ $key ] ) + && is_numeric( $this->data[ $key ]['expiration'] ) + && $time < $this->data[ $key ]['expiration'] + ) { + $cached = true; + $timed_option = $this->data[ $key ]; + } elseif ( $this->is_active() ) { + $timed_option_name = $this->get_option_name( $key ); + if ( true === $force ) { + wp_cache_delete( $timed_option_name, 'options' ); + } + $timed_option = get_option( $timed_option_name, null ); + } + + $exists = true; + + if ( null === $timed_option ) { + $exists = false; + } + + if ( ! is_array( $timed_option ) ) { + $exists = false; + } + + if ( ! isset( $timed_option['expiration'] ) || ! is_numeric( $timed_option['expiration'] ) ) { + $exists = false; + } + + /** + * Does a particular timed option key exists. + * + * @since 5.0.6 + * + * @param mixed $exists If anything diff than null it will short-circuit. + * @param string $key Key for the option we are trying to get. + * @param bool $force If we should expire cache and fetch from the database. + * @param bool $cached If the value was pulled from cache. + */ + return (bool) apply_filters( 'tec_common_timed_option_exists', $exists, $key, $force, $cached ); + } + + /** + * Update the value of a timed option on the database and on local cache. + * + * @since 5.0.6 + * + * @param string $key Key for this option. + * @param mixed $value Value stored for this option. + * @param int $expiration Expiration in seconds for this timed option. + * + * @return bool + */ + public function set( $key, $value, int $expiration = DAY_IN_SECONDS ): bool { + $key = (string) $key; + $data = [ + 'key' => $key, + 'value' => $value, + 'expiration' => time() + $expiration, + ]; + + $this->data[ $key ] = $data; + $updated = true; + + if ( $this->is_active() ) { + $updated = update_option( $this->get_option_name( $key ), $data, true ); + } + + return $updated; + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Migration.php b/wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Migration.php new file mode 100644 index 000000000..7c48cab26 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Migration.php @@ -0,0 +1,314 @@ +get_var( "SELECT `option_value` FROM $wpdb->options WHERE `option_name` = 'fs_accounts' LIMIT 1" ); + + + if ( empty( $fs_accounts ) || $fs_accounts instanceof \WP_Error ) { + return []; + } + + // Store original here as backup. + update_option( static::$fs_accounts_slug, $fs_accounts ); + + // Prevent issues with incomplete classes + $fs_accounts = preg_replace_callback( + '/O:(\d+):"([^"]+)":([^:]+):\{/m', + static function( $matches ) { + if ( $matches[2] === 'stdClass' ) { + return $matches[0]; + } + + $key_slug = "tec_fs_key"; + $key_slug_count = strlen( $key_slug ); + $new_size = $matches[3] + 1; + + return "a:{$new_size}:{s:{$key_slug_count}:\"{$key_slug}\";s:{$matches[1]}:\"{$matches[2]}\";"; + }, + $fs_accounts + ); + + $fs_accounts = maybe_unserialize( $fs_accounts ); + + // Store the modified data here. + update_option( static::$fs_accounts_data, $fs_accounts ); + + // return the modified data. + return $fs_accounts; + } + + /** + * Determine if we are opted-in to Freemius + * + * @since 5.1.0 + * + * @return boolean + */ + public function is_opted_in(): bool { + if ( ! is_null( self::$is_opted_in ) ) { + return self::$is_opted_in; + } + + $fs_accounts = $this->get_fs_accounts(); + + $sites = Arr::get( $fs_accounts, 'sites', [] ); + + if ( empty( $sites ) ) { + self::$is_opted_in = false; + return false; + } + + $disconnected = []; + + foreach ( $this->our_plugins as $plugin ) { + if ( ! isset( $sites[ $plugin ] ) ) { + continue; + } + + $disconnected[] = (bool) Arr::get( $sites, [ $plugin, 'is_disconnected' ] ); + } + + if ( 1 > count( $disconnected ) ) { + self::$is_opted_in = false; + return false; + } + + self::$is_opted_in = in_array( false, $disconnected, true ); + return self::$is_opted_in; + } + + /** + * Whether the class should load/run. + * + * @since 5.1.0 + * + * @return boolean + */ + public function should_load(): bool { + // If we've already checked, bail. + if ( get_option( self::$fs_accounts_data ) ) { + return false; + } + + // When we have an archived plugin list we can bail. + if ( get_option( self::$fs_plugins_slug ) ) { + return false; + } + + $fs_active_plugins = get_option( self::$key_fs_active_plugins ); + + // Bail if empty. + if ( empty( $fs_active_plugins ) ) { + return false; + } + + /** + * Allows filtering of whether the class should load/run. + * + * @since 5.1.0 + * + * @param bool $should_load Whether the class should load/run. + */ + return apply_filters( 'tec_telemetry_migration_should_load', true ); + } + + /** + * Detect if the user has opted in to Freemius and auto-opt them in to Telemetry. + * + * @since 5.1.0 + */ + public function migrate_existing_opt_in(): void { + // Let's reduce the amount this triggers. + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { + return; + } + + if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { + return; + } + + if ( ! $this->should_load() ) { + return; + } + + $fs_active_plugins = get_option( self::$key_fs_active_plugins ); + + // Clean up our list. + $this->remove_inactive_plugins( $fs_active_plugins ); + + // Bail if none of our plugins are present. + if ( ! count( $this->our_plugins ) ) { + return; + } + + $this->auto_opt_in(); + + // Remove us from fs_active_plugins. + $this->handle_fs_active_plugins( $fs_active_plugins ); + } + + /** + * Filters our list of plugins to only the ones Freemius shows as active + * + * @since 5.1.0 + * + * @param Object $fs_active_plugins The stored list of active plugins from Freemius. + */ + private function remove_inactive_plugins( $fs_active_plugins ): void { + $freemius_plugins = ! empty( $fs_active_plugins->plugins ) ? (array) $fs_active_plugins->plugins : []; + + foreach ( $this->our_plugins as $plugin ) { + if ( ! isset( $freemius_plugins[ $plugin ] ) ) { + unset( $this->our_plugins[ $plugin ] ); + } + } + } + + /** + * Handles our entries in the fs_active_plugins option. + * Removes them from the Freemius option and stores a backup of the original. + * + * @since 5.1.0 + * + * @param Object $fs_active_plugins + * @return void + */ + private function handle_fs_active_plugins( $fs_active_plugins ): void { + // Store a backup of the original option. + update_option( self::$fs_plugins_slug, $fs_active_plugins ); + + foreach ( $this->our_plugins as $plugin ) { + $plugin .= '/common/vendor/freemius'; + + unset( $fs_active_plugins->plugins[ $plugin ] ); + + if ( ! empty( $fs_active_plugins->newest->sdk_path ) && $fs_active_plugins->newest->sdk_path === $plugin ) { + unset( $fs_active_plugins->newest ); + } + } + + // Update the Freemius option in the database with our edits. + update_option( self::$key_fs_active_plugins, $fs_active_plugins ); + } + + /** + * Opts the user in to Telemetry. + * + * @since 5.1.0 + * + */ + public function auto_opt_in() { + $opt_in = $this->is_opted_in(); + + $opt_in_subscriber = Config::get_container()->get( Opt_In_Subscriber::class ); + $telemetry = tribe( Telemetry::class ); + $slug = Telemetry::get_stellar_slug(); + + $opt_in_subscriber->opt_in( $slug ); + $telemetry->register_tec_telemetry_plugins( $opt_in ); + + /** + * Allows plugins to hook in and perform actions (like display a notice) when + * the user is automatically opted in to Telemetry. + * + * We also use this to trigger the actual auto-opt-in at the default priority. + * + * @since 5.1.0 + */ + do_action( 'tec_telemetry_auto_opt_in' ); + + // Disable the modal on all migrations. + $telemetry::disable_modal( $slug, 0 ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Provider.php b/wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Provider.php new file mode 100644 index 000000000..2963f079c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Provider.php @@ -0,0 +1,158 @@ +container->bind( Telemetry::class, Telemetry::class ); + + $this->add_actions(); + $this->add_filters(); + } + + /** + * Add the action hooks. + * + * @since 5.1.0 + */ + public function add_actions() { + add_action( 'tribe_plugins_loaded', [ $this, 'boot_telemetry' ], 50 ); + + /** + * All these actions here need to be hooked from `tec_common_telemetry_preload` action to make sure that we have + * all the telemetry code loaded and ready to go. + */ + add_action( 'tec_common_telemetry_preload', [ $this, 'hook_telemetry_init' ], 5 ); + + add_action( 'tec_telemetry_modal', [ $this, 'show_optin_modal' ] ); + add_action( 'tec_common_telemetry_preload', [ $this, 'migrate_existing_opt_in' ], 100 ); + add_action( 'tec_common_telemetry_loaded', [ $this, 'maybe_enqueue_admin_modal_assets' ] ); + } + + /** + * Add the filter hooks. + * + * @since 5.1.0 + */ + public function add_filters() { + add_filter( 'stellarwp/telemetry/optin_args', [ $this, 'filter_optin_args' ] ); + add_filter( 'stellarwp/telemetry/exit_interview_args', [ $this, 'filter_exit_interview_args' ] ); + } + + /** + * It's super important to make sure when hooking to WordPress actions that we don't do before we are sure that + * telemetry was properly booted into the system. + * + * @since 5.1.3 + */ + public function hook_telemetry_init(): void { + add_action( 'admin_init', [ $this, 'initialize_telemetry' ], 5 ); + } + + /** + * Initialize our internal Telemetry code. + * Drivers, start your engines... + * + * @since 5.1.0 + * + * @return void + */ + public function boot_telemetry() { + $this->container->make( Telemetry::class )->boot(); + } + + /** + * Initialize our internal Telemetry code. + * Drivers, start your engines... + * + * @since 5.1.0 + * + * @return void + */ + public function initialize_telemetry() { + $this->container->make( Telemetry::class )->init(); + } + + /** + * Placeholder for eventual Freemius removal hooking in to modify things. + * + * @since 5.1.0 + * + * @return void + */ + public function migrate_existing_opt_in() { + $this->container->make( Migration::class )->migrate_existing_opt_in(); + } + + /** + * Logic for if the opt-in modal should be shown. + * + * @since 5.1.0 + * + * @return void + */ + public function show_optin_modal( $slug ) { + $this->container->make( Telemetry::class )->show_optin_modal( $slug ); + } + + /** + * Filters the default opt-in modal args. + * + * @since 5.1.0 + * + * @param array $args The current optin modal args. + * + * @return array + */ + public function filter_optin_args( $args ): array { + return $this->container->make( Telemetry::class )->filter_optin_args( $args ); + } + + /** + * Filters the exit questionnaire shown during plugin deactivation/uninstall. + * + * @since 5.1.0 + * + * @param array $args The current args. + * + * @return array $args The modified args. + */ + public function filter_exit_interview_args( $args ) { + return $this->container->make( Telemetry::class )->filter_exit_interview_args( $args ); + } + + + /** + * Ensure the assets for the modal are enqueued, if needed. + * + * @since 5.1.0 + */ + public function maybe_enqueue_admin_modal_assets(): void { + $this->container->make( Asset_Subscriber::class )->maybe_enqueue_admin_assets(); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Telemetry.php b/wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Telemetry.php new file mode 100644 index 000000000..238bcd883 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Telemetry/Telemetry.php @@ -0,0 +1,592 @@ + + */ + public static $tec_slugs = []; + + + /** + * Gentlefolk, start your engines. + * + * @since 5.1.0 + * + * @return void + */ + public function boot(): void { + /** + * Configure the container. + * + * The container must be compatible with stellarwp/container-contract. + * See here: https://github.com/stellarwp/container-contract#usage. + * + * If you do not have a container, we recommend https://github.com/lucatume/di52 + * and the corresponding wrapper: + * https://github.com/stellarwp/container-contract/blob/main/examples/di52/Container.php + */ + $container = Container::init(); + + Config::set_container( $container ); + + static::clean_up(); + + self::$tec_slugs = self::get_tec_telemetry_slugs(); + self::$plugin_slug = self::get_parent_plugin_slug(); + self::$plugin_path = \Tribe__Main::instance()->get_parent_plugin_file_path(); + $stellar_slug = self::get_stellar_slug(); + + if ( empty( $stellar_slug ) ) { + return; + } + + $telemetry_server = ! defined('TELEMETRY_SERVER') ? 'https://telemetry.stellarwp.com/api/v1': TELEMETRY_SERVER; + + Config::set_server_url( $telemetry_server ); + + // Set a unique prefix for actions & filters. + Config::set_hook_prefix( self::$hook_prefix ); + + // Set a unique plugin slug. + Config::set_stellar_slug( $stellar_slug ); + + self::$plugin_path = \Tribe__Main::instance()->get_parent_plugin_file_path(); + + if ( empty( self::$plugin_path ) ) { + return; + } + + // Initialize the library. + Core::instance()->init( self::$plugin_path ); + + /** + * Allow plugins to hook in and add themselves, + * running their own actions once Telemetry is initiated, + * but before we register all our plugins. + * + * @since 5.1.0 + * + * @param self $telemetry The Telemetry instance. + */ + do_action( 'tec_common_telemetry_preload', $this ); + } + + /** + * Initializes the plugins and triggers the "loaded" action. + * + * @since 5.1.0 + * + * @return void + */ + public function init(): void { + $this->register_tec_telemetry_plugins(); + + /** + * Allow plugins to hook in and add themselves, + * running their own actions once Telemetry is initiated. + * + * @since 5.1.0 + * + * @param self $telemetry The Telemetry instance. + */ + do_action( 'tec_common_telemetry_loaded', $this ); + } + + /** + * Clean up some old data. + * If the "tec" plugin exists, and it has no wp_slug, remove it. + * This prevents a fatal with the Telemetry library when we call get_opted_in_plugins(). + * + * @since 5.1.1.1 + * + * @return void + */ + public static function clean_up(): void { + $status = static::get_status_object(); + $option = $status->get_option(); + if ( ! empty( $option['plugins'][ 'tec' ] ) && empty( $option['plugins'][ 'tec' ]['wp_slug'] ) ) { + $status->remove_plugin( 'tec' ); + } + } + + public static function get_plugin_slug() { + if ( empty( self::$plugin_slug ) ) { + self::$plugin_slug = self::get_parent_plugin_slug(); + } + + return self::$plugin_slug; + } + + /** + * Get the slug of the parent plugin. + * Hydrated lazily. + * + * @since 5.1.0 + * + * @return string + */ + public static function get_parent_plugin_slug(): string { + if ( empty( self::$parent_plugin ) ) { + $file = \Tribe__Main::instance()->get_parent_plugin_file_path(); + self::$parent_plugin = substr( + $file, + ( strrpos( $file, '/' ) + 1 ), + ( strlen( $file ) - ( strrpos( $file, '/' ) + 5 ) ) + ); + } + + return self::$parent_plugin; + } + + /** + * Get the stellar slug based on the parent plugin. + * + * @since 5.1.0 + */ + public static function get_stellar_slug(): string { + $tec_slugs = self::get_tec_telemetry_slugs(); + + foreach( $tec_slugs as $slug => $path ) { + if ( stripos( self::$plugin_path, $path ) ) { + return $slug; + } + } + + return ''; + } + + /** + * Filters the default optin modal args. + * + * @since 5.1.0 + * + * @param array $args The current optin modal args. + * + * @return array + */ + public function filter_optin_args( $args ): array { + $user_name = esc_html( wp_get_current_user()->display_name ); + + /* + if ET only change logo, name to Event Tickets + if TEC only change logo + If both, use The Events Calendar + */ + + $optin_args = [ + 'plugin_logo' => tribe_resource_url( 'images/logo/tec-brand.svg', false, null, \Tribe__Main::instance() ), + 'plugin_logo_width' => 'auto', + 'plugin_logo_height' => 42, + 'plugin_logo_alt' => 'TEC Common Logo', + 'plugin_name' => 'TEC Common', + 'plugin_slug' => self::get_plugin_slug(), + 'user_name' => $user_name, + 'permissions_url' => self::get_permissions_url(), + 'tos_url' => self::get_terms_url(), + 'privacy_url' => self::get_privacy_url(), + 'opted_in_plugins_text' => __( 'See which plugins you have opted in to tracking for', 'tribe-common' ), + 'heading' => __( 'We hope you love TEC Common!', 'tribe-common' ), + 'intro' => __( "Hi, {$user_name}! This is an invitation to help our StellarWP community. If you opt-in, some data about your usage of TEC Common and future StellarWP Products will be shared with our teams (so they can work their butts off to improve). We will also share some helpful info on WordPress, and our products from time to time. And if you skip this, that’s okay! Our products still work just fine.", 'tribe-common' ), + ]; + + /** + * Allows overriding the modal optin args. + * + * @since 5.1.0 + * + * @param array $optin_args The modal arguments to filter. + */ + $this->optin_args = apply_filters( 'tec_common_telemetry_optin_args', $optin_args ); + + return array_merge( $args, $this->optin_args ); + } + + /** + * Get the URL for the permission link in the optin modal. + * + * @since 5.1.0 + * + * @return string + */ + public static function get_permissions_url(): string { + /** + * Allow overriding the permissions URL. + * + * @since 5.1.0 + * + * @param string $url The URL to the permissions page. + */ + return esc_url( apply_filters( 'tec_common_telemetry_permissions_url', 'https://evnt.is/1bcl' ) ); + } + + /** + * Get the URL for the Terms of Service link in the optin modal. + * + * @since 5.1.0 + * + * @return string + */ + public static function get_terms_url(): string { + /** + * Allow overriding the Terms of Service URL. + * + * @since 5.1.0 + * + * @param string $url The URL to the Terms of Service page. + */ + return esc_url( apply_filters( 'tec_common_telemetry_terms_url', 'https://evnt.is/1bcm' ) ); + } + + /** + * Get the URL for the Privacy Policy link in the optin modal. + * + * @since 5.1.0 + * + * @return string + */ + public static function get_privacy_url(): string { + /** + * Allow overriding the Privacy Policy URL. + * + * @since 5.1.0 + * + * @param string $url The URL to the Privacy Policy page. + */ + return esc_url( apply_filters( 'tec_common_telemetry_privacy_url', 'https://evnt.is/1bcn' ) ); + } + + /** + * Filters the exit questionnaire shown during plugin deactivation/uninstall. + * + * @since 5.1.0 + * + * @param array $args The current args. + * + * @return array $args The modified args. + */ + public function filter_exit_interview_args( $args ) { + $new_args = [ + 'plugin_logo' => tribe_resource_url( 'images/logo/tec-brand.svg', false, null, \Tribe__Main::instance() ), + 'plugin_logo_width' => 'auto', + 'plugin_logo_height' => 32, + 'plugin_logo_alt' => 'TEC Common Logo', + 'heading' => __( 'We’re sorry to see you go.', 'tribe-common' ), + 'intro' => __( 'We’d love to know why you’re leaving so we can improve our plugin.', 'tribe-common' ), + 'uninstall_reasons' => [ + [ + 'uninstall_reason_id' => 'confusing', + 'uninstall_reason' => __( 'I couldn’t understand how to make it work.', 'tribe-common' ), + ], + [ + 'uninstall_reason_id' => 'better-plugin', + 'uninstall_reason' => __( 'I found a better plugin.', 'tribe-common' ), + 'show_comment' => true, + ], + [ + 'uninstall_reason_id' => 'no-feature', + 'uninstall_reason' => __( 'I need a specific feature it doesn’t provide.', 'tribe-common' ), + 'show_comment' => true, + ], + [ + 'uninstall_reason_id' => 'broken', + 'uninstall_reason' => __( 'The plugin doesn’t work.', 'tribe-common' ), + 'show_comment' => true, + ], + [ + 'uninstall_reason_id' => 'other', + 'uninstall_reason' => __( 'Other', 'tribe-common' ), + 'show_comment' => true, + ], + ], + ]; + + return array_merge( $args, $new_args ); + } + + /** + * Triggers Telemetry's opt-in modal with our parameters. + * + * @since 5.1.0 + * + * @return void + */ + public function show_optin_modal( $slug ): void { + + /** + * Filter allowing disabling of the optin modal. + * Returning boolean false will disable the modal + * + * @since 5.1.0 + * + * @param bool $show Whether to show the modal or not. + * + */ + $show = (bool) apply_filters( 'tec_common_telemetry_show_optin_modal', true, $slug ); + + if ( ! $show ) { + return; + } + + /** + * Telemetry uses this to determine when/where the optin modal should be shown. + * i.e. the modal is shown when we run this. + * + * @since 5.1.0 + * + * @param string $plugin_slug The slug of the plugin showing the modal. + */ + do_action( 'stellarwp/telemetry/optin', $slug ); + } + + /** + * Sugar function to get the status object from the container. + * + * @since 5.1.0 + * + * @return Status + */ + public static function get_status_object(): Status { + return Config::get_container()->get( Status::class ); + } + + /** + * Allows out plugins to hook in and add themselves, + * automating a lot of the registration and opt in/out process. + * + * @since 5.1.0 + * + * @return array An array of plugins in the format [ 'plugin_slug' => 'plugin_path' ] + */ + public static function get_tec_telemetry_slugs() { + /** + * Filter for plugins to hooked into Telemetry and add themselves. + * This acts a Telemetry "registry" for all TEC plugins. + * Used to ensure TEC plugins get (de)activated as a group. + * + * @since 5.1.0 + * + * @param array $slugs An array of plugins in the format [ 'plugin_slug' => 'plugin_path' ] + */ + return apply_filters( 'tec_telemetry_slugs', [] ); + } + + /** + * Register and opt in/out the plugins that are hooked into `tec_telemetry_slugs`. + * This keeps all TEC plugins in sync and only requires one optin modal response. + * + * @since 5.1.0 + * + * @return void + */ + public function register_tec_telemetry_plugins( $opted = NULL ) { + $new_opted = $opted; + // Let's reduce the amount this triggers. + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { + return; + } + + if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { + return; + } + + $tec_slugs = self::get_tec_telemetry_slugs(); + + // We've got no other plugins? + if ( empty( $tec_slugs ) ) { + return; + } + + // In case we're not specifically passed a status... + $new_opted = $this->calculate_optin_status( $opted ); + + $status = Config::get_container()->get( Status::class ); + $opt_in_subscriber = Config::get_container()->get( Opt_In_Subscriber::class ); + $opt_in_subscriber->initialize_optin_option(); + + foreach ( $tec_slugs as $slug => $path ) { + // Register each plugin with the already instantiated library. + Config::add_stellar_slug( $slug, $path ); + $status->add_plugin( $slug, $new_opted, $path ); + + if ( $new_opted ) { + $opt_in_subscriber->opt_in( $slug ); + $status->set_status( $new_opted, $slug ); + } + + // If we're manually opting in/out, don't show the modal(s). + if ( ! is_null( $opted ) || ! empty( $new_opted ) ) { + static::disable_modal( $slug ); + } + + // If we've already interacted with a modal, don't show another one. + $show = static::calculate_modal_status(); + if ( ! $show ) { + static::disable_modal( $slug, $show ); + } + } + } + + /** + * Calculate the optin status for the TEC plugins from various sources. + * + * @since 6.1.0 + * + * @param bool $opted + * + * @return bool $opted + */ + public function calculate_optin_status( $opted ) { + if ( NULL !== $opted ) { + return $opted; + } + + // If they have opted in to one plugin, opt them in to all TEC ones. + $status_obj = static::get_status_object(); + $stati = []; + $option = $status_obj->get_option(); + + foreach ( static::$base_parent_slugs as $slug ) { + if ( $status_obj->plugin_exists( $slug ) ) { + $stati[ $slug ] = $option['plugins'][ $slug ][ 'optin' ]; + } + } + + $status = array_filter( $stati ); + + return (bool) array_pop( $status ); + } + + /** + * Calculate the optin status for the TEC plugins from various sources. + * + * @since 5.1.1.1 + * + * @return bool $show If the modal should show + */ + public static function calculate_modal_status() { + // If they have already interacted with a modal, find out. + $shows = array_flip( static::$base_parent_slugs ); + $optin = Config::get_container()->get( Opt_In_Template::class ); + + foreach ( static::$base_parent_slugs as $slug ) { + $show = get_option( $optin->get_option_name( $slug ), null ); + // Remove unset entries from the array. + if ( is_null( $show ) ) { + unset( $shows[ $slug ] ); + continue; + } + + $shows[ $slug ] = $show; + } + + // No entries - show modal. + if ( empty( $shows ) ) { + return true; + } + + // Flip the array = duplicate entries will be overwritten. + $shows = array_flip( $shows ); + + // If we have interacted with any modals, don't show this one. + return ! isset( $shows[0] ); + } + + /** + * Sugar function to disable (or enable) the optin modal. + * + * @since 6.1.0 + * + * @param string $slug The plugin slug for Telemetry. + * @param boolean|int $enable Opt out (0|false) or in (1|true). + */ + public static function disable_modal( $slug, $enable = false ) { + // Ensure we have a integer representation of a boolean value. + $enable = tec_bool_to_int( tribe_is_truthy( $enable ) ); + + $option_slug = Config::get_container()->get( Opt_In_Template::class )->get_option_name( $slug ); + update_option( $option_slug, $enable ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Common/Translations_Loader.php b/wp-content/plugins/the-events-calendar/common/src/Common/Translations_Loader.php new file mode 100644 index 000000000..3bdcce0ac --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Common/Translations_Loader.php @@ -0,0 +1,198 @@ + + */ + protected $loaded_domains = []; + + /** + * Switches the locale to the one specified. + * + * Note: the method will not check what the current locale is and will just load the + * translations specified. The burden of checking the current locale is on the caller. + * + * @since 5.0.8 + * + * @param string $locale The locale to switch to. + * @param array $domains A map from text domains to the directory containing the translations. + * + * @return bool Whether the locale was switched or not. + */ + public function load( string $locale, array $domains = [] ): bool { + if ( empty( $domains ) ) { + return false; + } + + /** + * Fires before the locale translations are loaded. + * + * @since 5.0.8 + * + * @param string $locale The locale that will be loaded. + * @param array $domains The list of domains translations will be loaded for. + */ + do_action( 'tec_locale_translations_load_before', $locale, $domains ); + + $this->has_loaded_translations = true; + $this->override_locale = $locale; + $this->loaded_domains = $domains; + + /* + * The `plugin_locale` filter will be applied in `load_plugin_textdomain()` to determine + * the language file to load. + */ + add_filter( 'plugin_locale', [ $this, 'override_locale' ] ); + + $this->load_locale_translations( $domains, $locale ); + + remove_filter( 'plugin_locale', [ $this, 'override_locale' ] ); + + /** + * Fires after the locale translations are loaded. + * + * @since 5.0.8 + * + * @param string $locale The locale that has been loaded. + * @param array $domains The list of domains translations have been loaded for. + */ + do_action( 'tec_locale_translations_load_after', $locale, $domains ); + + return true; + } + + /** + * A proxy method to return the current override locale if set, or the input locale otherwise. + * + * Used during filter application. + * + * @since 5.0.8 + * + * @param string $locale The locale to override. + * + * @return string The overridden locale. + * + * @internal This function is public only for the purpose of being used as a filter callback. + */ + public function override_locale( $locale ) { + return $this->override_locale ?: $locale; + } + + /** + * Returns whether the locale has been switched or not. + * + * @since 5.0.8 + * + * @return bool Whether the locale has been switched or not. + */ + public function has_loaded_translations(): bool { + return $this->has_loaded_translations; + } + + /** + * Restored the locale to the previous one and removes the class filters. + * + * @since 5.0.8 + * + * @return void Translations for each domain will be reloaded. + */ + public function restore() { + if ( ! $this->has_loaded_translations ) { + return; + } + + $this->override_locale = ''; + + /** + * Fires before the locale translations are restored. + * + * @since 5.0.8 + * + * @param array $domains The list of domains translations will be loaded for. + */ + do_action( 'tec_locale_translations_restore_before', $this->loaded_domains ); + + // Reload the translations using the currently determined locale. + $this->load_locale_translations( $this->loaded_domains, determine_locale() ); + + /** + * Fires after the locale translations are restored. + * + * @since 5.0.8 + * + * @param array $domains The list of domains translations have been loaded for. + */ + do_action( 'tec_locale_translations_restore_after', $this->loaded_domains ); + + $this->has_loaded_translations = false; + } + + /** + * Load the translations for the map of domains for the current locale. + * + * @since 5.0.8 + * + * @param array $domains A map from text domains to the directory containing the translations. + * @param string $locale The locale to load the translations for. + * + * @return void Translations for each domain will be loaded for the current plugin locale. + */ + protected function load_locale_translations( array $domains, string $locale ): void { + global $l10n; + + if ( ! is_array( $l10n ) ) { + $l10n = []; + } + + foreach ( $domains as $domain => $lang_dir ) { + unload_textdomain( $domain, true ); + + if ( $locale === 'en_US' ) { + // There is no `en_US` language pack since it's the default, no-op the translations. + $l10n[ $domain ] = new \NOOP_Translations(); + } else { + // Load the translations using the wrapper Common function. + $dir = is_string( $lang_dir ) && ! empty( $lang_dir ) ? $lang_dir : false; + \Tribe__Main::instance()->load_text_domain( $domain, $dir ); + } + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Abstract_Deactivation.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Abstract_Deactivation.php new file mode 100644 index 000000000..b32c40f8d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Abstract_Deactivation.php @@ -0,0 +1,71 @@ +network = (bool) $network; + } + + /** + * Tell WordPress to flush rewrite rules. + * Since our post types are already registered, + * we delete the option and let WP regenerate it + * on the next page load. + */ + protected function flush_rewrite_rules() { + delete_option( 'rewrite_rules' ); + } + + /** + * Deactivate the plugin. This should not remove data. + * It's job is to remove run-time traces of the plugin. + * + * @return void + */ + public function deactivate() { + if ( is_multisite() && $this->network ) { + $this->multisite_deactivate(); + } else { + $this->blog_deactivate(); + } + } + + /** + * Run the deactivation script on every blog for a multisite install + * + * @return void + */ + protected function multisite_deactivate() { + /** @var wpdb $wpdb */ + global $wpdb; + $site = get_current_site(); + $blog_ids = $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM {$wpdb->blogs} WHERE site_id=%d", $site->id ) ); + $large = wp_is_large_network(); + foreach ( $blog_ids as $blog ) { + tribe_set_time_limit( 30 ); + switch_to_blog( $blog ); + $large ? $this->short_blog_deactivate() : $this->blog_deactivate(); + restore_current_blog(); + } + } + + /** + * The deactivation routine for a single blog + * + * @return void + */ + abstract protected function blog_deactivate(); + + + /** + * An abridged version that is less DB intensive for use on large networks. + * + * @see wp_is_large_network() and the 'wp_is_large_network' filter + * + * @return void + */ + protected function short_blog_deactivate() { + $this->blog_deactivate(); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Abstract_Plugin_Register.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Abstract_Plugin_Register.php new file mode 100644 index 000000000..d6d791aeb --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Abstract_Plugin_Register.php @@ -0,0 +1,72 @@ + [], + 'co-dependencies' => [], + 'addon-dependencies' => [], + ]; + + /** + * Registers a plugin with dependencies + */ + public function register_plugin() { + tribe_register_plugin( + $this->base_dir, + $this->main_class, + $this->version, + $this->classes_req, + $this->dependencies + ); + } + + /** + * Returns whether or not the dependencies have been met + * + * This is basically an aliased function - register_plugins, upon + * second calling, returns whether or not a plugin should load. + * + * @deprecated since 4.9.17 It is unused by any Tribe plugins and returned void. + * @todo remove in 4.11 + */ + public function has_valid_dependencies() { + _deprecated_function( __METHOD__, '4.9.17' ); + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Activation_Page.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Activation_Page.php new file mode 100644 index 000000000..c9db44099 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Activation_Page.php @@ -0,0 +1,380 @@ +args = wp_parse_args( $args, [ + 'slug' => '', + 'admin_page' => '', + 'admin_url' => '', + 'activation_transient' => '', + 'version' => '', + 'plugin_path' => '', + 'version_history_slug' => '', + 'update_page_title' => '', + 'update_page_template' => '', + 'welcome_page_title' => '', + 'welcome_page_template' => '', + ] ); + + $this->update_slug .= $this->args['slug']; + $this->welcome_slug .= $this->args['slug']; + + $this->hooks(); + } + + /** + * Determines if we are currently on the Welcome page. + * + * @since 4.12.11 + * + * @return bool + */ + public function is_welcome_page() { + return isset( $_GET[ $this->welcome_slug ] ); + } + + /** + * Determines if we are currently on the update page. + * + * @since 4.12.11 + * + * @return bool + */ + public function is_update_page() { + return isset( $_GET[ $this->update_slug ] ); + } + + /** + * Listen for opportunities to show update and welcome splash pages. + */ + public function hooks() { + // Never show this on the front-end. + if ( ! is_admin() ) { + return; + } + + if ( + tribe_is_truthy( get_option( 'tribe_skip_welcome', false ) ) + || tribe_is_truthy( tribe_get_option( 'skip_welcome', false ) ) + ) { + return; + } + + add_action( 'admin_init', [ $this, 'maybe_redirect' ], 10, 0 ); + add_action( 'admin_menu', [ $this, 'register_page' ], 100, 0 ); // Come in after the default page is registered. + + add_action( 'update_plugin_complete_actions', [ $this, 'update_complete_actions' ], 15, 2 ); + add_action( 'update_bulk_plugins_complete_actions', [ $this, 'update_complete_actions' ], 15, 2 ); + } + + /** + * Filter the Default WordPress actions when updating the plugin to prevent users to be redirected if they have an + * specific intention of going back to the plugins page. + * + * @param array $actions The Array of links (html) + * @param string $plugin Which plugins are been updated + * @return array The filtered Links + */ + public function update_complete_actions( $actions, $plugin ) { + $plugins = []; + + if ( ! empty( $_GET['plugins'] ) ) { + $plugins = explode( ',', esc_attr( $_GET['plugins'] ) ); + } + + if ( ! in_array( $this->args['plugin_path'], $plugins ) ) { + return $actions; + } + + if ( isset( $actions['plugins_page'] ) ) { + $actions['plugins_page'] = '' . esc_html__( 'Return to Plugins page' ) . ''; + + if ( ! current_user_can( 'activate_plugins' ) ) { + unset( $actions['plugins_page'] ); + } + } + + if ( isset( $actions['updates_page'] ) ) { + $actions['updates_page'] = '' . esc_html__( 'Return to WordPress Updates' ) . ''; + } + + return $actions; + } + + /** + * Maybe redirect to the welcome page (or to the update page - though this is + * currently disabled). + */ + public function maybe_redirect() { + if ( ! empty( $_POST ) ) { + return; // Don't interrupt anything the user's trying to do. + } + + if ( ! is_admin() || defined( 'DOING_AJAX' ) ) { + return; + } + + if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST ) { + return; // Probably the plugin update/install iframe. + } + + if ( isset( $_GET[ $this->welcome_slug ] ) || isset( $_GET[ $this->update_slug ] ) ) { + return; // No infinite redirects. + } + + if ( isset( $_GET['tribe-skip-welcome'] ) ) { + return; // A way to skip these checks and. + } + + if ( + ! $this->showed_update_message_for_current_version() + && ! $this->is_new_install() + ) { + $page = tribe_get_request_var( 'page' ); + if ( empty( $page ) ) { + return; + } + + $match_page = str_replace( 'tribe_events_page_', '', $this->args['admin_page'] ); + + if ( $page !== $match_page ) { + return; + } + + /** + * Filters whether we should disable the update page redirect. + * + * @since 5.0.0 + * + * @param $bypass bool + */ + $bypass_update_page = apply_filters( 'tec_admin_update_page_bypass', false, $this ); + + if ( $bypass_update_page ) { + return; + } + + $this->redirect_to_update_page(); + } + + // Bail if we aren't activating a plugin. + if ( ! get_transient( $this->args['activation_transient'] ) ) { + return; + } + + delete_transient( $this->args['activation_transient'] ); + + if ( ! current_user_can( Tribe__Settings::instance()->requiredCap ) ) { + return; + } + + // the redirect might be intercepted by another plugin, but + // we'll go ahead and mark it as viewed right now, just in case + // we end up in a redirect loop + // see #31088 + $this->log_display_of_message_page(); + + if ( $this->is_new_install() ) { + $this->redirect_to_welcome_page(); + } + } + + /** + * Have we shown the welcome/update message for the current version? + * + * @since 5.0.0 Turned this method public. + * + * @return bool + */ + public function showed_update_message_for_current_version() { + $message_version_displayed = Tribe__Settings_Manager::get_option( 'last-update-message-' . $this->args['slug'] ); + + if ( empty( $message_version_displayed ) ) { + return false; + } + + $current_version = explode( '.', $this->args['version'] ); + $current_version = array_splice( $current_version, 0, 2 ); + $current_version = array_pad( $current_version, 3, 0 ); + $current_version = implode( '.', $current_version ); + + $message_version_displayed = explode( '.', $message_version_displayed ); + $message_version_displayed = array_splice( $message_version_displayed, 0, 2 ); + $message_version_displayed = array_pad( $message_version_displayed, 3, 0 ); + $message_version_displayed = implode( '.', $message_version_displayed ); + + if ( version_compare( $message_version_displayed, $current_version, '<' ) ) { + return false; + } + return true; + } + + /** + * Records the fact that we displayed the update message in relation to a specific + * version of the plugin (so we don't show it again until/unless they update to + * a higher version). + */ + protected function log_display_of_message_page() { + Tribe__Settings_Manager::set_option( 'last-update-message-' . $this->args['slug'], $this->args['version'] ); + } + + /** + * The previous_ecp_versions option will be empty or set to 0 + * if the current version is the first version to be installed. + * + * @return bool + * @see Tribe__Events__Main::maybeSetTECVersion() + */ + protected function is_new_install() { + $previous_versions = Tribe__Settings_Manager::get_option( $this->args['version_history_slug'] ); + return empty( $previous_versions ) || ( end( $previous_versions ) == '0' ); + } + + /** + * Handles taking a user to a post-installation welcome page. + */ + protected function redirect_to_welcome_page() { + $url = $this->get_message_page_url( $this->welcome_slug ); + wp_safe_redirect( $url ); + exit(); + } + + /** + * Handles taking the user to a post-update splash screen. + * + * Disused since TEC PR 88 (targeting Tribe__Events__Activation_Page, + * which this class was derived from). + * + * @see https://github.com/the-events-calendar/the-events-calendar/pull/88 + * + * @todo decide whether to reinstate or remove + */ + protected function redirect_to_update_page() { + $url = $this->get_message_page_url( $this->update_slug ); + wp_safe_redirect( $url ); + exit(); + } + + /** + * Return the URL of the splash page. + * + * @param string $slug + * + * @return string + */ + protected function get_message_page_url( $slug ) { + $settings = Tribe__Settings::instance(); + + $url = ! empty( $this->args['admin_url'] ) ? $this->args['admin_url'] : $settings->get_url(); + + $url = esc_url_raw( add_query_arg( $slug, 1, $url ) ); + + return $url; + } + + /** + * Dynamically registers the splash page when required. + */ + public function register_page() { + if ( isset( $_GET[ $this->welcome_slug ] ) ) { + $this->current_context = 'welcome'; + } elseif ( isset( $_GET[ $this->update_slug ] ) ) { + $this->current_context = 'update'; + } else { + return; + } + + $this->disable_default_settings_page(); + add_filter( 'admin_body_class', [ $this, 'admin_body_class' ] ); + add_action( $this->args['admin_page'], [ $this, 'display_page' ] ); + } + + /** + * Hooked to admin_body_class to add a class for the update or welcome page + * + * @param string $classes a space separated string of classes to be added to body + * + * @return string + */ + public function admin_body_class( $classes ) { + $classes .= ' tribe-' . $this->current_context; + return $classes; + } + + /** + * Deactivates the regular settings screen (the splash screen will display + * in the Events > Settings slot instead, for this request only). + */ + protected function disable_default_settings_page() { + remove_action( $this->args['admin_page'], [ Tribe__Settings::instance(), 'generatePage' ] ); + } + + /** + * Prints the splash screen. + * + * @param string $context + * + * @return string|null + */ + public function display_page() { + if ( empty( $this->args[ $this->current_context . '_page_title' ] ) || empty( $this->args[ $this->current_context . '_page_template'] ) ) { + return null; + } + + do_action( 'tribe_settings_top' ); + + $context = isset( $_GET[ $this->welcome_slug ] ) ? 'welcome': 'update'; + $title = esc_html( $this->args[ $context . '_page_title'] ); + $html = $this->get_view( $this->args[ $context . '_page_template'] ); + + echo " +
+

{$title}

+ {$html} +
+ "; + + do_action( 'tribe_settings_bottom' ); + $this->log_display_of_message_page(); + } + + /** + * Returns the output of the specified template. + * + * @param string $path + * + * @return string + */ + protected function get_view( $path ) { + if ( ! file_exists( $path ) ) { + return ''; + } + + ob_start(); + include $path; + return ob_get_clean(); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Black_Friday.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Black_Friday.php new file mode 100644 index 000000000..320d41f7e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Black_Friday.php @@ -0,0 +1,84 @@ +modify( '-3 days' ); + + return $date; + } + + /** + * Replace the opening markup for the general settings info box. + * + * @since 4.14.7 + * @return void + */ + public function add_conditional_content( $fields ) { + // Check if the content should currently be displayed. + if( ! $this->should_display() ) { + return $fields; + } + + // Set up template variables. + $images_dir = \Tribe__Main::instance()->plugin_url . 'src/resources/images/'; + $template_args = [ + 'branding_logo' => $images_dir . 'logo/tec-brand.svg', + 'background_image' => $images_dir . 'marketing/bf-promo.png', + 'button_link' => 'https://evnt.is/1aqi', + ]; + + // Get the Black Friday promo content. + $content = $this->get_template()->template( 'conditional_content/black-friday', $template_args, false ); + + // Replace starting info box markup. + $fields['info-start']['html'] .= $content; + + return $fields; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Datetime_Conditional_Abstract.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Datetime_Conditional_Abstract.php new file mode 100644 index 000000000..47c93351c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Datetime_Conditional_Abstract.php @@ -0,0 +1,160 @@ +start_date, 'UTC' ); + // If not set, set to midnight. + if ( empty( $this->start_time ) ) { + $this->start_time = 0; + } + + $date = $date->setTime( $this->start_time, 0 ); + + /** + * Allow filtering of the start date for testing. + * + * @since 4.14.7 + * @param \DateTime $date - Unix timestamp for start date + * @param object $this + */ + $date = apply_filters( "tec_admin_conditional_content_{$this->slug}_start_date", $date, $this ); + + return $date; + } + + /** + * Unix datetime for content end. + * + * @since 4.14.7 + * @return \Tribe\Utils\Date_I18n - Date Object + */ + protected function get_end_time() { + $date = Dates::build_date_object( $this->end_date, 'UTC' ); + // If not set, set to midnight. + if ( empty( $this->end_time ) ) { + $this->end_time = 0; + } + + $date = $date->setTime( $this->end_time, 0 ); + + /** + * Allow filtering of the end date for testing. + * + * @since 4.14.7 + * @param \DateTime $date - Unix timestamp for end date + * @param object $this + */ + $date = apply_filters( "tec_admin_conditional_content_{$this->slug}_end_date", $date, $this ); + + return $date; + } + + /** + * Whether the content should display. + * + * @since 4.14.7 + * @return boolean - Whether the content should display + */ + protected function should_display() { + $now = Dates::build_date_object( 'now', 'UTC' ); + $notice_start = $this->get_start_time(); + $notice_end = $this->get_end_time(); + $display = $notice_start <= $now && $now < $notice_end; + + /** + * Allow filtering whether the content should display. + * + * @since 4.14.7 + * @param bool $should_display - whether the content should display + * @param object $this - the conditional content object + */ + $should_display = apply_filters( "tec_admin_conditional_content_{$this->slug}_should_display", $display, $this ); + + return $should_display; + } + + /** + * Gets the template instance used to setup the rendering of the page. + * + * @since 4.14.7 + * + * @return \Tribe__Template + */ + public function get_template() { + if ( empty( $this->template ) ) { + $this->template = new \Tribe__Template(); + $this->template->set_template_origin( \Tribe__Main::instance() ); + $this->template->set_template_folder( 'src/admin-views' ); + $this->template->set_template_context_extract( true ); + $this->template->set_template_folder_lookup( false ); + } + + return $this->template; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/End_Of_Year_Sale.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/End_Of_Year_Sale.php new file mode 100644 index 000000000..ffded7f29 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/End_Of_Year_Sale.php @@ -0,0 +1,85 @@ +should_display() ) { + return $fields; + } + + // Set up template variables. + $images_dir = \Tribe__Main::instance()->plugin_url . 'src/resources/images/'; + $template_args = [ + 'branding_logo' => $images_dir . 'logo/tec-brand.svg', + 'background_image' => $images_dir . 'marketing/eoy-sale-promo.png', + 'button_link' => 'https://evnt.is/1a-x', + ]; + + // Get the promo content. + $content = $this->get_template()->template( 'conditional_content/end-of-year-sale', $template_args, false ); + + // Replace starting info box markup. + $fields['info-start']['html'] .= $content; + + return $fields; + } + + /** + * Unix time for notice end. + * + * @since 4.14.9 + * + * @return \Tribe\Utils\Date_I18n - Date Object + */ + public function get_end_time() { + $date = parent::get_end_time(); + $date = $date->setTime( 23, 59 ); + + return $date; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Service_Provider.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Service_Provider.php new file mode 100644 index 000000000..f02671b36 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Conditional_Content/Service_Provider.php @@ -0,0 +1,52 @@ +container->singleton( Black_Friday::class, Black_Friday::class, [ 'hook' ] ); + // EOY Sale disabled for 2022 + // $this->container->singleton( End_Of_Year_Sale::class, End_Of_Year_Sale::class, [ 'hook' ] ); + $this->hooks(); + } + + /** + * Set up hooks for classes. + * + * @since 4.14.7 + */ + protected function hooks() { + add_action( 'tribe_plugins_loaded', [ $this, 'plugins_loaded' ] ); + } + + /** + * Setup for things that require plugins loaded first. + * + * @since 4.14.7 + */ + public function plugins_loaded() { + $this->container->make( Black_Friday::class ); + // EOY Sale disabled for 2022 + // $this->container->make( End_Of_Year_Sale::class ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Help_Page.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Help_Page.php new file mode 100644 index 000000000..b854f999a --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Help_Page.php @@ -0,0 +1,1188 @@ +is_current_page() ) { + return $classes; + } + + $classes .= ' tribe-help tec-help'; + return $classes; + } + + /** + * Checks if the current page is the Help one + * + * @since 4.5.7 + * + * @return bool + */ + public function is_current_page() { + global $current_screen; + + $help_pages = [ + 'tribe_events_page_tec-events-help', + 'tickets_page_tec-tickets-help', + ]; + + return in_array( $current_screen->id, $help_pages ); + } + + /** + * Register the Admin assets for the help page + * + * @since 4.9.12 + * + * @return void + */ + public function register_assets() { + $plugin = Tribe__Main::instance(); + tribe_asset( + $plugin, + 'tribe-admin-help-page', + 'admin/help-page.js', + [ 'tribe-clipboard', 'tribe-common' ], + 'admin_enqueue_scripts', + [ + 'conditionals' => [ $this, 'is_current_page' ], + 'localize' => [ + 'name' => 'tribe_system_info', + 'data' => [ + 'sysinfo_optin_nonce' => wp_create_nonce( 'sysinfo_optin_nonce' ), + 'clipboard_btn_text' => _x( 'Copy to clipboard', 'Copy to clipboard button text.', 'tribe-common' ), + 'clipboard_copied_text' => _x( 'System info copied', 'Copy to clipboard success message', 'tribe-common' ), + 'clipboard_fail_text' => _x( 'Press "Cmd + C" to copy', 'Copy to clipboard instructions', 'tribe-common' ), + 'sysinfo_error_message_text' => _x( 'Something has gone wrong!', 'Default error message for system info optin', 'tribe-common' ), + 'sysinfo_error_code_text' => _x( 'Code:', 'Error code label for system info optin', 'tribe-common'), + 'sysinfo_error_status_text' => _x( 'Status:', 'Error status label for system info optin', 'tribe-common'), + ], + ], + ] + ); + } + + /** + * Get the list of plugins + * + * @since 4.0 + * + * @param string $plugin_name Should get only one plugin? + * @param boolean $is_active Only get active plugins? + * @return array + */ + public function get_plugins( $plugin_name = null, $is_active = true ) { + $plugins = []; + + $plugins['the-events-calendar'] = [ + 'name' => 'the-events-calendar', + 'title' => esc_html__( 'The Events Calendar', 'tribe-common' ), + 'repo' => 'https://wordpress.org/plugins/the-events-calendar/', + 'forum' => 'https://wordpress.org/support/plugin/the-events-calendar/', + 'stars_url' => 'https://wordpress.org/support/plugin/the-events-calendar/reviews/?filter=5', + 'description' => esc_html__( + 'The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events.', + 'tribe-common' + ), + 'is_active' => false, + 'version' => null, + ]; + + if ( class_exists( 'Tribe__Events__Main' ) ) { + $plugins['the-events-calendar']['version'] = Tribe__Events__Main::VERSION; + $plugins['the-events-calendar']['is_active'] = true; + } + + $plugins['event-tickets'] = [ + 'name' => 'event-tickets', + 'title' => esc_html__( 'Event Tickets', 'tribe-common' ), + 'repo' => 'https://wordpress.org/plugins/event-tickets/', + 'forum' => 'https://wordpress.org/support/plugin/event-tickets', + 'stars_url' => 'https://wordpress.org/support/plugin/event-tickets/reviews/?filter=5', + 'description' => esc_html__( + 'Events Tickets is a carefully crafted, extensible plugin that lets you easily sell tickets for your events.', + 'tribe-common' + ), + 'is_active' => false, + 'version' => null, + ]; + + if ( class_exists( 'Tribe__Tickets__Main' ) ) { + $plugins['event-tickets']['version'] = Tribe__Tickets__Main::VERSION; + $plugins['event-tickets']['is_active'] = true; + } + + $plugins['advanced-post-manager'] = [ + 'name' => 'advanced-post-manager', + 'title' => esc_html__( 'Advanced Post Manager', 'tribe-common' ), + 'repo' => 'https://wordpress.org/plugins/advanced-post-manager/', + 'forum' => 'https://wordpress.org/support/plugin/advanced-post-manager/', + 'stars_url' => 'https://wordpress.org/support/plugin/advanced-post-manager/reviews/?filter=5', + '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' + ), + 'is_active' => false, + 'version' => null, + ]; + + if ( class_exists( 'Tribe_APM' ) ) { + $plugins['advanced-post-manager']['version'] = 1; + $plugins['advanced-post-manager']['is_active'] = true; + } + + $plugins = (array) apply_filters( 'tribe_help_plugins', $plugins ); + + // Only active ones? + if ( true === $is_active ) { + foreach ( $plugins as $key => $plugin ) { + if ( true !== $plugin['is_active'] ) { + unset( $plugins[ $key ] ); + } + } + } + + // Do the search + if ( is_string( $plugin_name ) ) { + if ( isset( $plugins[ $plugin_name ] ) ) { + return $plugins[ $plugin_name ]; + } else { + return false; + } + } else { + return $plugins; + } + } + + /** + * Get the formatted links of the possible plugins + * + * @since 4.0 + * + * @param boolean $is_active Filter only active plugins + * @return array + */ + public function get_plugin_forum_links( $is_active = true ) { + $plugins = $this->get_plugins( null, $is_active ); + + $list = []; + foreach ( $plugins as $plugin ) { + $list[] = '' . $plugin['title'] . ''; + } + + return $list; + } + + /** + * Get the formatted text of the possible plugins + * + * @since 4.0 + * + * @param boolean $is_active Filter only active plugins + * @return string + */ + public function get_plugins_text( $is_active = true ) { + $plugins = array_merge( $this->get_plugins( null, $is_active ), $this->get_addons( null, $is_active, true ) ); + + $plugins_text = ''; + $i = 0; + $count = count( $plugins ); + foreach ( $plugins as $plugin ) { + $i++; + if ( ! isset( $plugin['is_active'] ) || $plugin['is_active'] !== $is_active ) { + continue; + } + + $plugins_text .= $plugin['title']; + + if ( $i === $count - 1 ) { + $plugins_text .= esc_html__( ' and ', 'tribe-common' ); + } elseif ( $i !== $count ) { + $plugins_text .= ', '; + } + } + + return $plugins_text; + } + + /** + * Get the Addons + * + * @since 4.0 + * + * @param string $plugin Plugin Name to filter + * @param string $is_active Filter if it's active + * @param string $is_important filter if the plugin is important + * @return array + */ + public function get_addons( $plugin = null, $is_active = null, $is_important = null ) { + $addons = []; + + $addons['events-calendar-pro'] = [ + 'id' => 'events-calendar-pro', + 'title' => esc_html__( 'Events Calendar PRO', 'tribe-common' ), + 'link' => 'http://evnt.is/dr', + 'plugin' => [ 'the-events-calendar' ], + 'is_active' => class_exists( 'Tribe__Events__Pro__Main' ), + 'is_important' => true, + ]; + + $addons['eventbrite-tickets'] = [ + 'id' => 'eventbrite-tickets', + 'title' => esc_html__( 'Eventbrite Tickets', 'tribe-common' ), + 'link' => 'http://evnt.is/ds', + 'plugin' => [ 'the-events-calendar' ], + 'is_active' => class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ), + ]; + + $addons['community-events'] = [ + 'id' => 'community-events', + 'title' => esc_html__( 'Community Events', 'tribe-common' ), + 'link' => 'http://evnt.is/dt', + 'plugin' => [ 'the-events-calendar' ], + 'is_active' => class_exists( 'Tribe__Events__Community__Main' ), + ]; + + $addons['event-aggregator'] = [ + 'id' => 'event-aggregator', + 'title' => esc_html__( 'Event Aggregator', 'tribe-common' ), + 'link' => 'http://evnt.is/19mk', + 'plugin' => [ 'the-events-calendar' ], + 'is_active' => class_exists( 'Tribe__Events__Aggregator' ) && tribe( + 'events-aggregator.main' + )->is_service_active(), + ]; + + $addons['events-filter-bar'] = [ + 'id' => 'events-filter-bar', + 'title' => esc_html__( 'Filter Bar', 'tribe-common' ), + 'link' => 'http://evnt.is/hu', + 'plugin' => [ 'the-events-calendar' ], + 'is_active' => class_exists( 'Tribe__Events__Filterbar__View' ), + ]; + + $addons['events-virtual'] = [ + 'id' => 'events-virtual', + 'title' => esc_html__( 'Virtual Events', 'tribe-common' ), + 'link' => 'http://evnt.is/1alb', + 'plugin' => [ 'the-events-calendar' ], + 'is_active' => class_exists( '\Tribe\Events\Virtual\Plugin' ), + ]; + + $addons['event-tickets-plus'] = [ + 'id' => 'event-tickets-plus', + 'title' => esc_html__( 'Event Tickets Plus', 'tribe-common' ), + 'link' => 'http://evnt.is/18wa', + 'plugin' => [ 'event-tickets' ], + 'is_active' => class_exists( 'Tribe__Tickets_Plus__Main' ), + 'is_important' => true, + ]; + + $addons['event-community-tickets'] = [ + 'id' => 'event-community-tickets', + 'title' => esc_html__( 'Community Tickets', 'tribe-common' ), + 'link' => 'http://evnt.is/18m2', + 'plugin' => [ 'event-tickets' ], + 'is_active' => class_exists( 'Tribe__Events__Community__Tickets__Main' ), + ]; + + /** + * Filter the array of premium addons upsold on the sidebar of the Settings > Help tab + * + * @param array $addons + */ + $addons = (array) apply_filters( 'tribe_help_addons', $addons ); + + // Should I filter something + if ( is_null( $plugin ) && is_null( $is_active ) && is_null( $is_important ) ) { + return $addons; + } + + // Allow for easily grab the addons for a plugin + $filtered = []; + foreach ( $addons as $id => $addon ) { + if ( ! is_null( $plugin ) && ! in_array( $plugin, (array) $addon['plugin'] ) ) { + continue; + } + + // Filter by is_active + if ( + ! is_null( $is_active ) && + ( ! isset( $addon['is_active'] ) || $is_active !== $addon['is_active'] ) + ) { + continue; + } + + // Filter by is_important + if ( + ! is_null( $is_important ) && + ( ! isset( $addon['is_important'] ) || $is_important !== $addon['is_important'] ) + ) { + continue; + } + + $filtered[ $id ] = $addon; + } + + return $filtered; + } + + public function is_active( $should_be_active ) { + $plugins = $this->get_plugins( null, true ); + $addons = $this->get_addons( null, true ); + + $actives = array_merge( $plugins, $addons ); + $is_active = []; + + foreach ( $actives as $id => $active ) { + if ( in_array( $id, (array) $should_be_active ) ) { + $is_active[] = $id; + } + } + + return count( array_filter( $is_active ) ) === 0 ? false : true; + } + + /** + * From a Given link returns it with a GA arguments + * + * @since 4.0 + * + * @param string $link An absolute or a Relative link + * @param boolean $relative Is the Link absolute or relative? + * @return string Link with the GA arguments + */ + public function get_ga_link( $link = null, $relative = true ) { + $query_args = [ + 'utm_source' => 'helptab', + 'utm_medium' => 'plugin-tec', + 'utm_campaign' => 'in-app', + ]; + + if ( true === $relative ) { + $link = trailingslashit( Tribe__Main::$tec_url . $link ); + } + + return esc_url( add_query_arg( $query_args, $link ) ); + } + + /** + * Gets the Feed items from The Events Calendar's Blog + * + * @since 4.0 + * + * @return array Feed Title and Link + */ + public function get_feed_items() { + $news_rss = fetch_feed( Tribe__Main::FEED_URL ); + $news_feed = []; + + if ( ! is_wp_error( $news_rss ) ) { + /** + * Filter the maximum number of items returned from the tribe news feed + * + * @param int $max_items default 5 + */ + $maxitems = $news_rss->get_item_quantity( apply_filters( 'tribe_help_rss_max_items', 5 ) ); + $rss_items = $news_rss->get_items( 0, $maxitems ); + if ( $maxitems > 0 ) { + foreach ( $rss_items as $item ) { + $item = [ + 'title' => esc_html( $item->get_title() ), + 'link' => esc_url( $item->get_permalink() ), + ]; + $news_feed[] = $item; + } + } + } + + return $news_feed; + } + + /** + * Get the information from the Plugin API data + * + * @since 4.0 + * + * @param object $plugin Plugin Object to be used + * @return object An object with the API data + */ + private function get_plugin_api_data( $plugin = null ) { + if ( is_scalar( $plugin ) ) { + return false; + } + + $plugin = (object) $plugin; + + /** + * Filter the amount of time (seconds) we will keep api data to avoid too many external calls + * @var int + */ + $timeout = apply_filters( 'tribe_help_api_data_timeout', 3 * HOUR_IN_SECONDS ); + $transient = 'tribe_help_api_data-' . $plugin->name; + $data = get_transient( $transient ); + + if ( false === $data ) { + if ( ! function_exists( 'plugins_api' ) ) { + include_once ABSPATH . '/wp-admin/includes/plugin-install.php'; + } + + // Fetch the data + $data = plugins_api( 'plugin_information', [ + 'slug' => $plugin->name, + 'is_ssl' => is_ssl(), + 'fields' => [ + 'banners' => true, + 'reviews' => true, + 'downloaded' => true, + 'active_installs' => true, + ], + ] ); + + if ( ! is_wp_error( $data ) ) { + // Format Downloaded Infomation + $data->downloaded = $data->downloaded ? number_format( $data->downloaded ) : _x( 'n/a', 'not available', 'tribe-common' ); + } else { + // If there was a bug on the Current Request just leave + return false; + } + + set_transient( $transient, $data, $timeout ); + } + $data->up_to_date = ( version_compare( $plugin->version, $data->version, '<' ) ) ? esc_html__( 'You need to upgrade!', 'tribe-common' ) : esc_html__( 'You are up to date!', 'tribe-common' ); + + /** + * Filters the API data that was stored in the Transient option + * + * @var array + * @var object The plugin object, check `$this->get_plugins()` for more info + */ + return (object) apply_filters( 'tribe_help_api_data', $data, $plugin ); + } + + /** + * Parses the help text from an Array to the final HTML. + * + * It is the responsibility of code calling this function to ensure proper escaping + * within any HTML. + * + * @since 4.0 + * + * @param string|array $mixed The mixed value to create the HTML from + * @return string + */ + public function get_content_html( $mixed = '' ) { + // If it's an StdObj or String it will be converted + $mixed = (array) $mixed; + + // Loop to start the HTML + foreach ( $mixed as &$line ) { + // If we have content we use that + if ( isset( $line->content ) ) { + $line = $line->content; + } + + if ( is_string( $line ) ) { + continue; + } elseif ( is_array( $line ) ) { + // Allow the developer to pass some configuration + if ( empty( $line['type'] ) ) { + $line['type'] = 'ul'; + } + + $text = '<' . $line['type'] . '>' . "\n"; + foreach ( $line as $key => $item ) { + // Don't add non-numeric items (a.k.a.: configuration) + if ( ! is_numeric( $key ) ) { + continue; + } + + // Only add List Item if is a UL or OL + if ( in_array( $line['type'], [ 'ul', 'ol' ] ) ) { + $text .= '
  • ' . "\n"; + } + + $text .= $this->get_content_html( $item ); + + if ( in_array( $line['type'], [ 'ul', 'ol' ] ) ) { + $text .= '
  • ' . "\n"; + } + } + $text .= '' . "\n"; + + // Create the list as html instead of array + $line = $text; + } + } + + return wpautop( implode( "\n\n", $mixed ) ); + } + + /** + * A Private storage for sections. + * + * @since 4.0 + * + * @access private + * @var array + */ + private $sections = []; + + /** + * Incremented with each method call, then stored in $section->uid. + * + * Used when sorting two instances whose priorities are equal. + * + * @since 4.0 + * + * @static + * @access protected + * @var int + */ + protected static $section_count = 0; + + /** + * Helper function to compare two objects by priority, ensuring sort stability via uid. + * + * @since 4.0 + * + * @access protected + * @param object $a Object A. + * @param object $b Object B. + * + * @return int + */ + protected function by_priority( $a, $b ) { + if ( ! isset( $a->priority ) || ! isset( $b->priority ) || $a->priority === $b->priority ) { + if ( ! isset( $a->unique_call_order ) || ! isset( $b->unique_call_order ) ) { + return 0; + } else { + return $a->unique_call_order > $b->unique_call_order ? 1 : -1; + } + } else { + return $a->priority > $b->priority ? 1 : -1; + } + } + + /** + * Adds a new section to the Help Page + * + * @since 4.0 + * + * @param string $id HTML like ID + * @param string $title The Title of the section, doesn't allow HTML + * @param integer $priority A Numeric ordering for the Section + * @param string $type by default only 'default' or 'box' + * + * @return object The section added + */ + public function add_section( $id, $title = null, $priority = 10, $type = 'default' ) { + if ( empty( $id ) ) { + return false; + } + + // Everytime you call this we will add this up + self::$section_count++; + + $possible_types = (array) apply_filters( 'tribe_help_available_section_types', [ 'default', 'box' ] ); + + // Set a Default type + if ( empty( $type ) || ! in_array( $type, $possible_types ) ) { + $type = 'default'; + } + + // Create the section and Sanitize the values to avoid having to do it later + $section = (object) [ + 'id' => sanitize_html_class( $id ), + 'title' => esc_html( $title ), + 'priority' => absint( $priority ), + 'type' => sanitize_html_class( $type ), + + // This Method Unique count integer used for ordering with priority + 'unique_call_order' => self::$section_count, + + // Counter for ordering Content + 'content_count' => 0, + + // Setup the Base for the content to come + 'content' => [], + ]; + + $this->sections[ $section->id ] = $section; + + return $section; + } + + /** + * Add a New content Item to a Help page Section + * + * @since 4.0 + * + * @param string $section_id Which section this content should be assigned to + * @param string|array $content Item text or array of items, will be passed to `$this->get_content_html` + * @param integer $priority A Numeric priority + * @param array $arguments If you need arguments for item, they can be passed here + * + * @return object The content item added + */ + public function add_section_content( $section_id, $content, $priority = 10, $arguments = [] ) { + $section_id = sanitize_html_class( $section_id ); + + // Check if the section exists + if ( empty( $this->sections[ $section_id ] ) ) { + return false; + } + + // Make sure we have arguments as Array + if ( ! is_array( $arguments ) ) { + return false; + } + + $section = &$this->sections[ $section_id ]; + + // Increment the content counter + $section->content_count++; + + $item = (object) $arguments; + + // Set the priority + $item->priority = absint( $priority ); + + // Set the uid to help ordering + $item->unique_call_order = $section->content_count; + + // Content is not Safe, will be Sanitized on Output + $item->content = $content; + + $section->content[] = $item; + + return $item; + } + + /** + * Remove a section based on the ID + * This method will remove any sections that are indexed at that ID on the sections array + * And the sections that have a propriety of `id` equals to the given $section_id argument + * + * @param string|int $section_id You can use Numeric or String indexes to search + * @return bool|int Returns `false` when no sections were removed and an `int` with the number of sections removed + */ + public function remove_section( $section_id ) { + if ( + ! isset( $this->sections[ $section_id ] ) && + ! in_array( (object) [ 'id' => $section_id ], $this->sections, true ) + ) { + // There are no sections to remove, so false + return false; + } + + $removed = []; + foreach ( $this->sections as $id => $section ) { + if ( ! is_numeric( $id ) && ! is_numeric( $section_id ) && ! empty( $section->id ) ) { + if ( $section->id === $section_id ) { + unset( $this->sections[ $id ] ); + // Mark that this section was removed + $removed[ $id ] = true; + } + } elseif ( $id === $section_id ) { + unset( $this->sections[ $section_id ] ); + // Mark that this section was removed + $removed[ $id ] = true; + } else { + // Mark that this section was NOT removed + $removed[ $id ] = false; + } + } + + // Count how many were removed + $total = count( array_filter( $removed ) ); + + // if Zero just return false + return $total === 0 ? false : $total; + } + + /** + * Based on an Array of sections it render the Help Page contents + * + * @since 4.0 + * + * @param boolean $print Return or Print the HTML after + * @return void|string + */ + public function get_sections( $print = true ) { + /** + * Allow third-party sections here + * + * @var Tribe__Admin__Help_Page + */ + do_action( 'tribe_help_pre_get_sections', $this ); + + /** + * Allow developers to filter all the sections at once + * NOTE: You should be using `tribe_help_add_sections` to add new sections or content + * + * @var array + */ + $sections = apply_filters( 'tribe_help_sections', $this->sections ); + + if ( ! is_array( $sections ) || empty( $sections ) ) { + return false; + } + + // Sort by Priority + uasort( $sections, [ $this, 'by_priority' ] ); + + $html = []; + + foreach ( $sections as $index => $section ) { + $section = (object) $section; + + // If it has no ID or Content, skip + if ( empty( $section->id ) || empty( $section->content ) ) { + continue; + } + + // Set a Default type + if ( empty( $section->type ) ) { + $section->type = 'default'; + } + + /** + * Creates a way to filter a specific section based on the ID + * + * @var object + */ + $section = apply_filters( 'tribe_help_section_' . $section->id, $section, $this ); + + // Sort by Priority + uasort( $section->content, [ $this, 'by_priority' ] ); + + $html[ $section->id . '-start' ] = '
    '; + + if ( ! empty( $section->title ) ) { + $html[ $section->id . '-title' ] = '

    ' . esc_html__( $section->title ) . '

    '; + } + + $html[ $section->id . '-content' ] = $this->get_content_html( $section->content ); + + $html[ $section->id . '-end' ] = '
    '; + } + + /** + * Creates a way for developers to hook to the final HTML + * @var array $html + * @var array $sections + */ + $html = apply_filters( 'tribe_help_sections_html', $html, $sections ); + + if ( true === $print ) { + echo implode( "\n", $html ); + } else { + return $html; + } + + } + + /** + * Prints the Plugin box for the given plugin + * + * @since 4.0 + * + * @param string $plugin Plugin Name key + * @return void + */ + public function print_plugin_box( $plugin ) { + $plugin = (object) $this->get_plugins( $plugin, false ); + $api_data = $this->get_plugin_api_data( $plugin ); + $addons = $this->get_addons( $plugin->name ); + $plugins = get_plugins(); + + if ( $api_data ) { + if ( ! function_exists( 'install_plugin_install_status' ) ) { + include_once ABSPATH . '/wp-admin/includes/plugin-install.php'; + } + $status = install_plugin_install_status( $api_data ); + $plugin_active = is_plugin_active( $status['file'] ); + $plugin_exists = isset( $plugins[ $status['file'] ] ); + + if ( 'install' !== $status['status'] && ! $plugin_active ) { + $args = [ + 'action' => 'activate', + 'plugin' => $status['file'], + 'plugin_status' => 'all', + 'paged' => 1, + 's' => '', + ]; + $activate_url = wp_nonce_url( add_query_arg( $args, 'plugins.php' ), 'activate-plugin_' . $status['file'] ); + $link = '' . esc_html__( 'Activate Plugin', 'tribe-common' ) . ''; + } elseif ( 'update_available' === $status['status'] ) { + $args = [ + 'action' => 'upgrade-plugin', + 'plugin' => $status['file'], + ]; + $update_url = wp_nonce_url( add_query_arg( $args, 'update.php' ), 'upgrade-plugin_' . $status['file'] ); + + $link = '' . esc_html__( 'Upgrade Plugin', 'tribe-common' ) . ''; + } elseif ( $plugin_exists ) { + $link = '' . esc_html__( 'You are up to date!', 'tribe-common' ) . ''; + } + } + + if ( ! isset( $link ) ) { + if ( $api_data ) { + $args = [ + 'tab' => 'plugin-information', + 'plugin' => $plugin->name, + 'TB_iframe' => true, + 'width' => 772, + 'height' => 600, + ]; + $iframe_url = add_query_arg( $args, admin_url( '/plugin-install.php' ) ); + $link = '' . esc_html__( 'Install Plugin', 'tribe-common' ) . ''; + } else { + $link = null; + } + } + ?> +
    +

    title ); ?>

    + + description ) && ! $plugin->is_active ) { + echo wpautop( $plugin->description ); + } + ?> + + +
    +
    +
    version ); ?>
    + +
    +
    requires ); ?>+
    + +
    +
    active_installs ) ); ?>+
    + +
    +
    + + $api_data->rating, + 'type' => 'percent', + 'number' => $api_data->num_ratings, + ] ); + ?> + +
    +
    + + + ' . $link . '

    ' : ''; + } + ?> + + +

    + + +
    + __( 'Can I have more than one calendar?', 'tribe-common' ), + 'answer' => __( 'No, but you can use event categories or tags to display certain events like having...', 'tribe-common' ), + 'link' => 'https://evnt.is/1arh', + ], + [ + 'question' => __( 'What do I get with Events Calendar Pro?', 'tribe-common' ), + 'answer' => __( 'Events Calendar Pro runs alongside The Events Calendar and enhances...' ), + 'link' => 'https://evnt.is/1arj', + ], + [ + 'question' => __( 'How do I sell tickets to events?', 'tribe-common' ), + 'answer' => __( 'Use our free Event Tickets plugin to get started with tickets and RSVPs.', 'tribe-common' ), + 'link' => 'https://evnt.is/1ark', + ], + [ + 'question' => __( 'Where can I find a list of available shortcodes?', 'tribe-common' ), + 'answer' => __( 'Our plugins include many shortcodes that do everything from embedding the calendar...', 'tribe-common' ), + 'link' => 'https://evnt.is/1arl', + ], + ] ); + + return $faqs; + } + + /** + * Defines calendar extensions and displays them in the UI. + * + * @since 4.14.2 + * + * @return array of extensions which are displayed on the calendar and community tab of the in-app help page. + */ + public function get_calendar_extensions() { + $extensions = apply_filters( 'tec_help_calendar_extensions', [ + [ + 'title' => __( 'Calendar widget areas', 'tribe-common' ), + 'description' => __( 'This extension creates a useful variety of WordPress widget areas (a.k.a. sidebars).', 'tribe-common' ), + 'link' => 'https://evnt.is/1arc', + 'product-slug' => 'the-events-calendar', + ], + [ + 'title' => __( 'Event block patterns', 'tribe-common' ), + 'description' => __( 'This extension adds a set of block patterns for events to the WordPress block editor.', 'tribe-common' ), + 'link' => 'https://evnt.is/1ard', + 'product-slug' => 'the-events-calendar', + ], + [ + 'title' => __( 'Alternative photo view', 'tribe-common' ), + 'description' => __( 'This extension replaces photo view with a tiled grid of cards featuring event images.', 'tribe-common' ), + 'link' => 'https://evnt.is/1are', + 'product-slug' => 'events-calendar-pro', + ], + [ + 'title' => __( 'The Events Calendar Tweaks', 'tribe-common' ), + 'description' => __( 'This extension is a collection of tweaks and snippets for The Events Calendar.', 'tribe-common' ), + 'link' => 'https://evnt.is/1arg', + 'product-slug' => 'the-events-calendar', + ], + ] ); + + return $extensions; + } + + /** + * Defines calendar products. + * + * @since 4.14.2 + * + * @return array of products which are displayed on the calendar tab of the in-app help page. + */ + public function get_calendar_products() { + $calendar_products = apply_filters( 'tec_help_calendar_products', [ + 'events-calendar-pro', + 'tribe-filterbar', + 'event-aggregator', + 'event-automator', + 'events-virtual', + ] ); + + return $calendar_products; + } + + /** + * Defines ticketing frequently asked questions and displays them in the UI. + * + * @since 4.14.2 + * + * @return array of FAQs which are displayed on the ticketing tab of the in-app help page. + */ + public function get_ticketing_faqs() { + $faqs = apply_filters( 'tec_help_ticketing_faqs', [ + [ + 'question' => __( 'How Do I create events with Tickets or RSVP’s?', 'tribe-common' ), + 'answer' => __( 'We’ve put together a video tutorial showing how to create events with Tickets using our plugins. Click on the link in the link in the title to learn more.', 'tribe-common' ), + 'link' => 'https://evnt.is/1art', + ], + [ + 'question' => __( 'How Do I Set Up E-Commerce Plugins for Selling Tickets?', 'tribe-common' ), + 'answer' => __( 'You can sell tickets using our built-in e-commerce option, or upgrade to Event Tickets Plus to use ecommerce plugins such as WooCommerce.', 'tribe-common' ), + 'link' => 'https://evnt.is/1arq', + ], + [ + 'question' => __( 'Can I have a seating chart associated with my tickets?', 'tribe-common' ), + 'answer' => __( 'Yes! You can easily accomplish this task using the stock options and multiple ticket types available with Event Tickets.', 'tribe-common' ), + 'link' => 'https://evnt.is/1arr', + ], + [ + 'question' => __( 'How do I process refunds for tickets?', 'tribe-common' ), + 'answer' => __( 'When it comes to paid tickets, these orders can be refunded through the e-commerce platform in use.', 'tribe-common' ), + 'link' => 'https://evnt.is/1ars', + ], + ] ); + + return $faqs; + } + + /** + * Defines ticketing extensions and displays them in the UI. + * + * @since 4.14.2 + * + * @return array of extensions which are displayed on the ticketing tab of the in-app help page. + */ + public function get_ticketing_extensions() { + $extensions = apply_filters( 'tec_help_ticketing_extensions', [ + [ + 'title' => __( 'Ticket Email Settings', 'tribe-common' ), + 'description' => __( 'Adds a new settings panel in Events > Settings that gives more control over the ticket and rsvp emails that are sent to attendees after registration.', 'tribe-common' ), + 'link' => 'https://evnt.is/1arx', + 'product-slug' => 'event-tickets', + ], + [ + 'title' => __( 'Per Event Check In API', 'tribe-common' ), + 'description' => __( 'This extension shows a meta box with an API key on each Event with Ticket/RSVP.', 'tribe-common' ), + 'link' => 'https://evnt.is/1arw', + 'product-slug' => 'event-tickets', + ], + [ + 'title' => __( 'Add Event & Attendee Info to WooCommerce Order Details', 'tribe-common' ), + 'description' => __( 'Displays the information collected by “attendee meta fields” in the WooCommerce order screens as well.', 'tribe-common' ), + 'link' => 'https://evnt.is/1arv', + 'product-slug' => 'event-tickets', + ], + [ + 'title' => __( 'Organizer Notification Email', 'tribe-common' ), + 'description' => __( 'This extension will send an email to event organizers whenever a user registers for their event.', 'tribe-common' ), + 'link' => 'https://evnt.is/1aru', + 'product-slug' => 'event-tickets', + ], + ] ); + + return $extensions; + } + + /** + * Defines ticketing products. + * + * @since 4.14.2 + * + * @return array of products which are displayed on the ticketing tab of the in-app help page. + */ + public function get_ticketing_products() { + $ticketing_products = apply_filters( 'tec_help_ticketing_products', [ + 'event-tickets', + 'event-tickets-plus', + 'tribe-eventbrite', + 'promoter', + ] ); + + return $ticketing_products; + } + + /** + * Defines community extensions and displays them in the UI. + * + * @since 4.14.2 + * + * @return array of extensions which are displayed on the community tab of the in-app help page. + */ + public function get_community_extensions() { + $extensions = apply_filters( 'tec_help_ticketing_extensions', [ + [ + 'title' => __( 'Add Cost Currency Symbol', 'tribe-common' ), + 'description' => __( 'This extension allows you to set default currency symbols for your users to choose from instead of having a plain text field.', 'tribe-common' ), + 'link' => 'https://evnt.is/1arn', + 'product-slug' => 'community-events', + ], + [ + 'title' => __( 'Add Google Maps Display and Link Options', 'tribe-common' ), + 'description' => __( 'This extension adds the “Show Google Maps” and “Show Google Maps Link” checkboxes when creating a new Venue.', 'tribe-common' ), + 'link' => 'https://evnt.is/1arm', + 'product-slug' => 'community-events', + ], + [ + 'title' => __( 'Hide Others’ Organizers and Venues', 'tribe-common' ), + 'description' => __( 'This extension allows you to hide the Organizers and Venues that a visitor has not created from the Community Events submission form.', 'tribe-common' ), + 'link' => 'https://evnt.is/1aro', + 'product-slug' => 'community-events', + ], + [ + 'title' => __( 'Display Custom HTML', 'tribe-common' ), + 'description' => __( 'This extension allows you to add custom HTML content to the top of the Community Events submission form.', 'tribe-common' ), + 'link' => 'https://evnt.is/1arp', + 'product-slug' => 'community-events', + ], + ] ); + + return $extensions; + } + + /** + * Defines community products. + * + * @since 4.14.2 + * + * @return array of products which are displayed on the community tab of the in-app help page. + */ + public function get_community_products() { + $community_products = apply_filters( 'tec_help_ticketing_products', [ + 'events-community', + 'events-community-tickets', + ] ); + + return $community_products; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Helpers.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Helpers.php new file mode 100644 index 000000000..7f1d832b2 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Helpers.php @@ -0,0 +1,193 @@ +doing_ajax() ) { + return false; + } + + // Avoid Notices by checking the object type of WP_Screen + if ( ! $this->is_wp_screen() ) { + return false; + } + + $defaults = apply_filters( 'tribe_is_post_type_screen_post_types', Tribe__Main::get_post_types() ); + + // Match any Post Type from Tribe + if ( is_null( $post_type ) && in_array( $current_screen->post_type, $defaults ) ) { + return true; + } + + // Match any of the post_types set + if ( ! is_scalar( $post_type ) && in_array( $current_screen->post_type, (array) $post_type ) ) { + return true; + } + + // Match a specific Post Type + if ( $current_screen->post_type === $post_type ) { + return true; + } + + return false; + } + + /** + * Matcher for administration pages that are from Tribe the easier way + * + * @param string|array|null $id What will be checked to see if we return true or false + * + * @return boolean + */ + public function is_screen( $id = null ) { + global $current_screen; + + // Not in the admin we don't even care + if ( ! is_admin() ) { + return false; + } + + // Doing AJAX? bail. + if ( tribe( 'context' )->doing_ajax() ) { + return false; + } + + // Avoid Notices by checking the object type of WP_Screen. + if ( ! $this->is_wp_screen() ) { + return false; + } + + // Match any screen from Tribe. + if ( is_null( $id ) && false !== strpos( $current_screen->id, 'tribe' ) ) { + return true; + } + + // Match any screen from TEC. + if ( is_null( $id ) && false !== strpos( $current_screen->id, 'tec' ) ) { + return true; + } + + // Match any of the pages set + if ( ! is_scalar( $id ) && in_array( $current_screen->id, (array) $id ) ) { + return true; + } + + // Match a specific page. + if ( $current_screen->id === $id ) { + return true; + } + + // Match any post type page in the supported post types. + $defaults = apply_filters( 'tribe_is_post_type_screen_post_types', Tribe__Main::get_post_types() ); + if ( in_array( $current_screen->post_type, $defaults ) ) { + return true; + } + return false; + + } + + /** + * Matcher for administration pages action + * + * @param string|array|null $action What will be checked to see if we return true or false + * + * @return boolean + */ + public function is_action( $action = null ) { + global $current_screen; + + // Not in the admin we don't even care + if ( ! is_admin() ) { + return false; + } + + // Doing AJAX? bail. + if ( tribe( 'context' )->doing_ajax() ) { + return false; + } + + // Avoid Notices by checking the object type of WP_Screen + if ( ! $this->is_wp_screen() ) { + return false; + } + + // Match any of the pages set + if ( ! is_scalar( $action ) && in_array( $current_screen->action, (array) $action ) ) { + return true; + } + + // Match a specific page + if ( $current_screen->action === $action ) { + return true; + } + + return false; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Live_Date_Preview.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Live_Date_Preview.php new file mode 100644 index 000000000..9b53e99bc --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Live_Date_Preview.php @@ -0,0 +1,68 @@ + Settings > Display admin screen. + */ +class Tribe__Admin__Live_Date_Preview { + protected $target_fields = [ + 'dateWithYearFormat', + 'dateWithoutYearFormat', + 'monthAndYearFormat', + 'weekDayFormat', + ]; + + /** + * Static Singleton Holder + * + * @var self + */ + protected static $instance; + + /** + * Static Singleton Factory Method + * + * @return self + */ + public static function instance() { + return self::$instance ? self::$instance : self::$instance = new self; + } + + /** + * Adds live date previews to the display settings tab (nothing is setup unless + * the user is actually on that tab). + */ + public function __construct() { + add_action( 'tribe_settings_after_do_tabs', [ $this, 'listen' ] ); + } + + /** + * If the user looking at the Display settings tab, adds live date preview facilities. + */ + public function listen() { + // We are only interested in the "Display" tab + if ( 'display' !== Tribe__Settings::instance()->currentTab ) { + return; + } + + /** + * Add or remove fields which should have live date/time preview facilities. + * + * @var array $target_fields + */ + $this->target_fields = (array) apply_filters( 'tribe_settings_date_preview_fields', $this->target_fields ); + + add_filter( 'tribe_field_div_end', [ $this, 'setup_date_previews' ], 10, 2 ); + + // We are still before `admin_enqueue_scripts` making it safe to use `tribe_asset` + tribe_asset( Tribe__Main::instance(), 'tribe-date-live-refresh', 'admin-date-preview.js', [ 'jquery' ], 'admin_enqueue_scripts' ); + } + + public function setup_date_previews( $html, $field ) { + // Not one of the fields we're interested in? Return without modification + if ( ! in_array( $field->id, $this->target_fields ) ) { + return $html; + } + + $preview = esc_html( date_i18n( $field->value ) ); + return " $preview $html"; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Date_Based.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Date_Based.php new file mode 100644 index 000000000..79780d00c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Date_Based.php @@ -0,0 +1,378 @@ +tec_is_active = $tribe_dependency->is_plugin_active( 'Tribe__Events__Main' ); + $this->et_is_active = $tribe_dependency->is_plugin_active( 'Tribe__Tickets__Main' ); + + $now = Dates::build_date_object( 'now', 'UTC' ); + $notice_start = $this->get_start_time(); + $notice_end = $this->get_end_time(); + $extension_date = $this->get_extension_time(); + + // If we have an extension date defined. + if ( ! empty( $this->get_extension_time() ) ) { + // If the sale has started and + if ( + $notice_start <= $now + && $notice_end < $now + && $now < $extension_date + ) { + add_filter( "tribe_{$this->slug}_notice_end_date", function() { + return $this->get_extension_time(); + }); + } + } + + $this->hook(); + } + + /** + * Register the various Marketing notices. + * + * @since 4.14.2 + */ + public function hook() { + $this->hook_notice(); + } + + /** + * Register the notice. + * + * @since 4.14.2 + */ + public function hook_notice() { + tribe_notice( + $this->slug, + [ $this, "display_notice" ], + [ + 'type' => 'tribe-banner', + 'dismiss' => 1, + 'priority' => -1, + 'wrap' => false, + ], + [ $this, "should_display" ] + ); + } + + /** + * HTML for the notice. + * + * @since 4.14.2 + * + * @return string The HTML string to be displayed. + */ + abstract function display_notice(); + + /** + * Function to get and filter the screens the notice is displayed on. + * + * @since 4.15.4 + * + * @return array List of allowed screens. + */ + public function get_screens() { + $screens = $this->screens; + + /** + * Allows filtering of the screens for all date-based notices. + * + * @since 4.15.4 + * + * @param array $screens The current list of allowed screens. + * @param string $slug The slug for the current notice. + * + * @return array $screens The modified list of allowed screens. + */ + $screens = apply_filters( + 'tec_date_based_notice_get_screens', + $screens, + $this->slug + ); + + /** + * Allows filtering of the screens for a specific date-based notice. + * + * @since 4.15.4 + * + * @param array $screens The current list of allowed screens. + * + * @return array $screens The modified list of allowed screens. + */ + $screens = apply_filters( + "tec_date_based_notice_get_screens_{$this->slug}", + $screens + ); + + return $screens; + } + + /** + * Whether the notice should display. + * + * @since 4.14.2 + * + * @return boolean $should_display Whether the notice should display or not. + */ + public function should_display() { + // If upsells have been manually hidden, respect that. + if ( tec_should_hide_upsell() ) { + return false; + } + + $current_screen = get_current_screen(); + + $screens = $this->get_screens(); + + // If not a valid screen, don't display. + if ( empty( $current_screen->id ) || ! in_array( $current_screen->id, $screens, true ) ) { + return false; + } + + $now = Dates::build_date_object( 'now', 'UTC' ); + $notice_start = $this->get_start_time(); + $notice_end = $this->get_end_time(); + + $should_display = $notice_start <= $now && $now < $notice_end; + + + /** + * Allow filtering of whether the notice should display. + * + * @since 4.14.2 + * + * @param boolean $should_display Whether the notice should display. + * @param Tribe__Admin__Notice_Date_Based $notice The notice object. + */ + return apply_filters( "tribe_{$this->slug}_notice_should_display", $should_display, $this ); + } + + /** + * Unix time for notice start. + * + * @since 4.14.2 + * + * @return \Tribe\Utils\Date_I18n - Date Object + */ + public function get_start_time() { + $date = Dates::build_date_object( $this->start_date, 'UTC' ); + if ( $this->start_time !== null ) { + $date = $date->setTime( $this->start_time, 0 ); + } + + /** + * Allow filtering of the start date DateTime object, + * to allow for things like "the day before" ( $date->modify( '-1 day' ) ) and such. + * + * @since 4.14.2 + * + * @param \DateTime $date Date object for the notice start. + */ + $date = apply_filters( "tribe_{$this->slug}_notice_start_date", $date, $this ); + + return $date; + } + + /** + * Unix time for notice end. + * + * @since 4.14.2 + * + * @return \Tribe\Utils\Date_I18n - Date Object + */ + public function get_end_time() { + $date = Dates::build_date_object( $this->end_date, 'UTC' ); + if ( $this->end_time !== null ) { + $date = $date->setTime( $this->end_time, 0 ); + } + + /** + * Allow filtering of the end date DateTime object, + * to allow for things like "the day after" ( $date->modify( '+1 day' ) ) and such. + * + * @since 4.14.2 + * + * @param \DateTime $date Date object for the notice end. + */ + $date = apply_filters( "tribe_{$this->slug}_notice_end_date", $date, $this ); + + return $date; + } + + + + /** + * Unix time for notice extension end. + * + * @since 4.15.4 + * + * @return int $end_time The date & time the notice should stop displaying, as a Unix timestamp. + */ + public function get_extension_time() { + if ( $this->extension_date === null ) { + return null; + } + + $date = Dates::build_date_object( $this->extension_date, 'UTC' ); + + if ( $this->extension_time !== null ) { + $date = $date->setTime( $this->extension_time, 0 ); + } + + /** + * Allow filtering of the extension date DateTime object, + * to allow for things like "the day after" ( $date->modify( '+1 day' ) ) and such. + * + * @since 4.14.2 + * + * @param \DateTime $date Date object for the notice end. + */ + $date = apply_filters( "tribe_{$this->slug}_notice_extension_date", $date, $this ); + + return $date; + } + + /** + * Gets the template instance used to setup the rendering of the page. + * + * @since 4.14.7 + * + * @return \Tribe__Template + */ + public function get_template() { + if ( empty( $this->template ) ) { + $this->template = new \Tribe__Template(); + $this->template->set_template_origin( \Tribe__Main::instance() ); + $this->template->set_template_folder( 'src/admin-views' ); + $this->template->set_template_context_extract( true ); + $this->template->set_template_folder_lookup( false ); + } + + return $this->template; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing.php new file mode 100644 index 000000000..add054cb8 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing.php @@ -0,0 +1,190 @@ +tec_is_active = $tribe_dependency->is_plugin_active( 'Tribe__Events__Main' ); + $this->et_is_active = $tribe_dependency->is_plugin_active( 'Tribe__Tickets__Main' ); + } + + /** + * Register the various Marketing notices. + * + * @since 4.7.23 + */ + public function hook() { + $this->black_friday_hook_notice(); + } + + /** + * Register the Black Friday notice. + * + * @since 4.12.14 + */ + public function black_friday_hook_notice() { + + tribe_notice( + 'black-friday', + [ $this, 'black_friday_display_notice' ], + [ + 'type' => 'tribe-banner', + 'dismiss' => 1, + 'priority' => -1, + 'wrap' => false, + ], + [ $this, 'black_friday_should_display' ] + ); + } + + /** + * Unix time for Monday of Thanksgiving week @ 11am UTC. (11am UTC is 6am EST). + * + * @since 4.12.14 + * + * @return int + */ + public function get_black_friday_start_time() { + $date = Dates::build_date_object( 'fourth Thursday of November ' . date( 'Y' ), 'UTC' ); + $date = $date->modify( '-3 days' ); + $date = $date->setTime( 11, 0 ); + + $start_time = $date->format( 'U' ); + + /** + * Allow filtering of the Black Friday sale start date, mainly for testing purposes. + * + * @since 4.12.14 + * + * @param int $bf_start_date Unix time for the Monday of Thanksgiving week @ 6am UTC. + */ + return apply_filters( 'tribe_black_friday_start_time', $start_time ); + } + + /** + * Unix time for Dec 1 @ 5am UTC. (5am UTC is 12am EST). + * + * @since 4.12.14 + * + * @return int + */ + public function get_black_friday_end_time() { + $date = Dates::build_date_object( 'December 1st', 'UTC' ); + $date = $date->setTime( 5, 0 ); + + $end_time = $date->format( 'U' ); + + /** + * Allow filtering of the Black Friday sale end date, mainly for testing purposes. + * + * @since 4.12.14 + * + * @param int $bf_end_date Unix time for Dec 1 @ 6am UTC. + */ + return apply_filters( 'tribe_black_friday_end_time', $end_time ); + } + /** + * Whether the Black Friday notice should display. + * + * Unix times for Monday of Thanksgiving week @ 6am UTC and Dec 1 2020 @ 6am UTC. + * 6am UTC is midnight for TheEventsCalendar.com, which uses the America/Los_Angeles time zone. + * + * @since 4.12.14 + * + * @return boolean + */ + public function black_friday_should_display() { + // If upsells have been manually hidden, respect that. + if ( tec_should_hide_upsell() ) { + return false; + } + + $now = Dates::build_date_object( 'now', 'UTC' )->format( 'U' ); + $bf_sale_start = $this->get_black_friday_start_time(); + $bf_sale_end = $this->get_black_friday_end_time(); + + $current_screen = get_current_screen(); + + $screens = [ + 'tribe_events_page_tribe-app-shop', // App shop. + 'events_page_tribe-app-shop', // App shop. + 'tribe_events_page_tribe-common', // Settings & Welcome. + 'tribe_events_page_tec-events-settings', // New Settings & Welcome. + 'events_page_tribe-common', // Settings & Welcome. + 'toplevel_page_tribe-common', // Settings & Welcome. + ]; + + // If not a valid screen, don't display. + if ( empty( $current_screen->id ) || ! in_array( $current_screen->id, $screens, true ) ) { + return false; + } + + return $bf_sale_start <= $now && $now < $bf_sale_end; + } + + /** + * HTML for the Black Friday notice. + * + * @since 4.12.14 + * + * @return string + */ + public function black_friday_display_notice() { + Tribe__Assets::instance()->enqueue( [ 'tribe-common-admin' ] ); + + $current_screen = get_current_screen(); + + $icon_url = Tribe__Main::instance()->plugin_url . 'src/resources/images/icons/sale-burst.svg'; + $cta_url = 'https://evnt.is/bf' . date( 'Y' ); + $screens = [ + 'tribe_events_page_tribe-common', + 'tribe_events_page_tec-events-settings', + 'events_page_tribe-common', + 'toplevel_page_tribe-common', + ]; + + // If we are on the settings page or a welcome page, change the Black Friday URL. + if ( + ! empty( $current_screen->id ) + && in_array( $current_screen->id, $screens ) + ) { + if ( isset( $_GET['welcome-message-the-events-calendar'] ) || isset( $_GET['welcome-message-event-tickets' ] ) ) { + $cta_url .= 'welcome'; + } else { + $cta_url .= 'settings'; + } + } + + ob_start(); + + include Tribe__Main::instance()->plugin_path . 'src/admin-views/notices/tribe-bf-general.php'; + + return ob_get_clean(); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/Black_Friday.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/Black_Friday.php new file mode 100644 index 000000000..ddcb17f0d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/Black_Friday.php @@ -0,0 +1,72 @@ +enqueue( [ 'tribe-common-admin' ] ); + + // Set up template variables. + $template_args = [ + 'icon_url' => \Tribe__Main::instance()->plugin_url . 'src/resources/images/icons/sale-burst.svg', + 'cta_url' => 'https://evnt.is/1aqi', + 'end_date' => $this->get_end_time()->format_i18n( 'F jS' ), + ]; + + // Get the Black Friday notice content. + $content = $this->get_template()->template( 'notices/tribe-bf-general', $template_args, false ); + + return $content; + } + + /** + * Unix time for notice start. + * + * @since 4.14.2 + * + * @return \Tribe\Utils\Date_I18n - Date Object + */ + public function get_start_time() { + $date = parent::get_start_time(); + $date = $date->modify( '-3 days' ); + + return $date; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/End_Of_Year_Sale.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/End_Of_Year_Sale.php new file mode 100644 index 000000000..30de2a3c3 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/End_Of_Year_Sale.php @@ -0,0 +1,66 @@ + \Tribe__Main::instance()->plugin_url . 'src/resources/images/marketing/eoy-sale-2021.svg', + 'cta_url' => 'https://evnt.is/1a-x', + ]; + + // Get the sale notice content. + $content = $this->get_template()->template( 'notices/end-of-year-sale', $template_args, false ); + + return $content; + } + + /** + * Unix time for notice end. + * + * @since 4.14.9 + * + * @return \Tribe\Utils\Date_I18n - Date Object + */ + public function get_end_time() { + $date = parent::get_end_time(); + $date = $date->setTime( 23, 59 ); + + return $date; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/Stellar_Sale.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/Stellar_Sale.php new file mode 100644 index 000000000..232e72d60 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Marketing/Stellar_Sale.php @@ -0,0 +1,82 @@ +enqueue( [ 'tribe-common-admin' ] ); + + // Used in the template. + $cta_url = 'https://evnt.is/1bcv'; + $stellar_url = 'https://evnt.is/1bcu'; + $end_date = $this->get_end_time(); + $template_args = [ + 'cta_url' => 'https://evnt.is/1bcv', + 'stellar_url' => 'https://evnt.is/1bcu', + 'end_date' => $this->get_end_time(), + ]; + $dependency = tribe( \Tribe__Dependency::class ); + + if ( $dependency->has_active_premium_plugin() ) { + return $this->get_template()->template( 'notices/tribe-stellar-sale-premium', $template_args, false ); + } else { + return $this->get_template()->template( 'notices/tribe-stellar-sale', $template_args, false ); + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Php_Version.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Php_Version.php new file mode 100644 index 000000000..cfb18e4ee --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Php_Version.php @@ -0,0 +1,106 @@ + 'warning', + 'dismiss' => 1, + 'wrap' => 'p', + ], + [ $this, 'should_display' ] + ); + + } + + /** + * Return the list of the Tribe active plugins + * + * @since 4.7.16 + * + * @return string String of items + */ + public function get_active_plugins() { + + $active_plugins = Tribe__Dependency::instance()->get_active_plugins(); + + foreach ( $active_plugins as $active_plugin ) { + + if ( ! $active_plugin['path'] ) { + continue; + } + + $plugin_data = get_plugin_data( $active_plugin['path'] ); + $plugins[] = $plugin_data['Name']; + + } + + return $this->implode_with_grammar( $plugins ); + + } + + /** + * Implodes a list items using 'and' as the final separator and a comma everywhere else + * + * @param array $items List of items to implode + * @since 4.7.16 + * + * @return string String of items + */ + public function implode_with_grammar( $items ) { + + $separator = _x( ', ', 'separator used in a list of items', 'tribe-common' ); + $conjunction = _x( ' and ', 'the final separator in a list of two or more items', 'tribe-common' ); + $output = $last_item = array_pop( $items ); + + if ( $items ) { + $output = implode( $separator, $items ) . $conjunction . $last_item; + } + + return $output; + } + + /** + * We only want to display notices for users + * who are in PHP < 5.6 + * + * @since 4.7.16 + * + * @return boolean + */ + public function should_display() { + // Bail if the user is not admin or can manage plugins + if ( ! current_user_can( 'activate_plugins' ) ) { + return false; + } + + return version_compare( PHP_VERSION, '7.4.0' ) < 0; + } + + /** + * HTML for the PHP notice + * + * @since 4.7.16 + * + * @return string + */ + public function display_notice() { + /* Translators: %1$s list of plugins, %2$s current PHP version, %3$s open anchor html link for read more, %4$s open anchor html link for read more */ + $text = _x( + 'Starting February 2023, %1$s will require PHP 7.4 or later. Currently, your site is using PHP version %2$s. Please update to a newer version. %3$sRead more%4$s.', + 'Message notifying users they need to upgrade PHP', + 'tribe-common' + ); + + $plugins = $this->get_active_plugins(); + + return sprintf( $text, $plugins, PHP_VERSION, '', '' ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Plugin_Download.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Plugin_Download.php new file mode 100644 index 000000000..5efd1e234 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Plugin_Download.php @@ -0,0 +1,164 @@ +plugin_path = $plugin_path; + + tribe_notice( + plugin_basename( $plugin_path ), + [ $this, 'show_inactive_plugins_alert' ] + ); + } + + /** + * Add a required plugin to the notice + * + * @since 4.8.3 Method introduced. + * @since 4.9 Added $version and $addon parameters. + * @since 4.9.12 Add $has_pue_notice param + * @since 4.9.17 Appended "+" to all version numbers to indicate "or any later version". + * + * @param string $name Name of the required plugin + * @param null $thickbox_url Download or purchase URL for plugin from within /wp-admin/ thickbox + * @param bool $is_active Indicates if the plugin is installed and active or not + * @param string $version Optional version number of the required plugin + * @param bool $addon Indicates if the plugin is an add-on for The Events Calendar or Event Tickets + * @param bool $has_pue_notice Indicates that we need to change the messaging due to expired key. + */ + public function add_required_plugin( $name, $thickbox_url = null, $is_active = null, $version = null, $addon = false, $has_pue_notice = false ) { + $this->plugins_required[ $name ] = [ + 'name' => $name, + 'thickbox_url' => $thickbox_url, + 'is_active' => $is_active, + 'version' => $version ? $version . '+' : null, + 'addon' => $addon, + 'has_pue_notice' => $has_pue_notice, + ]; + } + + /** + * Echoes the admin notice, attach to admin_notices + * + * @see \Tribe__Admin__Notice__Plugin_Download::add_required_plugin() + * + * @since 4.9.17 Altered the notice to remove "latest version" verbiage since "+" is now added to the version numbers. + */ + public function show_inactive_plugins_alert() { + if ( ! current_user_can( 'activate_plugins' ) ) { + return; + } + + $plugin_data = get_plugin_data( $this->plugin_path ); + $req_plugins = []; + + if ( empty( $this->plugins_required ) ) { + return; + } + + // Make sure Thickbox is available and consistent appearance regardless of which admin page we're on + add_thickbox(); + + $has_pue_notices = false; + + foreach ( $this->plugins_required as $req_plugin ) { + $item = $req_plugin['name']; + $version = empty( $req_plugin['version'] ) ? '' : ' (' . str_replace( '-dev', '', $req_plugin['version'] ) . ')'; + + if ( ! empty( $req_plugin['thickbox_url'] ) ) { + $item = sprintf( + '%3$s%4$s', + esc_attr( $req_plugin['thickbox_url'] ), + esc_attr( $req_plugin['name'] ), + esc_html( $item ), + esc_html( $version ) + ); + } + + if ( false === $req_plugin['is_active'] ) { + $item = sprintf( + '%1$s', + $item + ); + } + + if ( ! empty( $req_plugin['addon'] ) ) { + $plugin_name[] = $req_plugin['name']; + } + + $req_plugins[] = $item; + + // If any of the items has PUE notice we will warn the user. + if ( $req_plugin['has_pue_notice'] ) { + $has_pue_notices = true; + } + } + + // If empty then add in the default name. + if ( empty( $plugin_name[0] ) ) { + $plugin_name[] = $plugin_data['Name']; + } + + $allowed_html = [ + 'strong' => [], + 'a' => [ 'href' => [] ], + ]; + + $plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $plugin_name ), $allowed_html ); + $req_plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $req_plugins ), $allowed_html ); + + $notice_html_content = '

    ' . esc_html__( 'To begin using %2$s, please install (or upgrade) and activate %3$s.', 'tribe-common' ) . '

    '; + + $read_more_link = '' . esc_html__( 'Read more', 'tribe-common' ) . '.'; + $pue_notice_text = esc_html__( 'There’s a new version of %1$s available, but your license is expired. You’ll need to renew your license to get access to the latest version. If you plan to continue using your current version of the plugin(s), be sure to use a compatible version of The Events Calendar. %2$s', 'tribe-common' ); + $pue_notice_html = '

    ' . sprintf( $pue_notice_text, $plugin_names_clean_text, $read_more_link ) . '

    '; + + printf( + '
    ' + . $notice_html_content + . ( $has_pue_notices ? $pue_notice_html : '' ) + . '
    ', + esc_attr( sanitize_title( $plugin_data['Name'] ) ), + $plugin_names_clean_text, + $req_plugin_names_clean_text + ); + } + + /** + * Implodes a list of items with proper grammar. + * + * If only 1 item, no grammar. If 2 items, just conjunction. If 3+ items, commas with conjunction. + * + * @param array $items List of items to implode + * + * @return string String of items + */ + public function implode_with_grammar( $items ) { + $separator = _x( ', ', 'separator used in a list of items', 'tribe-common' ); + $conjunction = _x( ' and ', 'the final separator in a list of two or more items', 'tribe-common' ); + $output = $last_item = array_pop( $items ); + + if ( $items ) { + $output = implode( $separator, $items ); + + if ( 1 < count( $items ) ) { + $output .= $separator; + } + + $output .= $conjunction . $last_item; + } + + return $output; + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Plugin_Upgrade_Notice.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Plugin_Upgrade_Notice.php new file mode 100644 index 000000000..819d85ba5 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Plugin_Upgrade_Notice.php @@ -0,0 +1,239 @@ +current_version = $current_version; + $this->plugin_path = $plugin_path; + + add_action( "in_plugin_update_message-$plugin_path", [ $this, 'maybe_run' ] ); + } + + /** + * Test if there is a plugin upgrade notice and displays it if so. + * + * Expects to fire during "in_plugin_update_message-{plugin_path}", therefore + * this should only run if WordPress has detected that an upgrade is indeed + * available. + */ + public function maybe_run() { + $this->test_for_upgrade_notice(); + + if ( $this->upgrade_notice ) { + $this->display_message(); + } + } + + /** + * Tests to see if an upgrade notice is available. + */ + protected function test_for_upgrade_notice() { + $cache_key = $this->cache_key(); + $this->upgrade_notice = get_transient( $cache_key ); + + if ( false === $this->upgrade_notice ) { + $this->discover_upgrade_notice(); + } + + set_transient( $cache_key, $this->upgrade_notice, $this->cache_expiration() ); + } + + /** + * Returns a cache key unique to the current plugin path and version, that + * still fits within the 45-char limit of regular WP transient keys. + * + * @return string + */ + protected function cache_key() { + return 'tribe_plugin_upgrade_notice-' . hash( 'crc32b', $this->plugin_path . $this->current_version ); + } + + /** + * Returns the period of time (in seconds) for which to cache plugin upgrade messages. + * + * @return int + */ + protected function cache_expiration() { + /** + * Number of seconds to cache plugin upgrade messages for. + * + * Defaults to one day, which provides a decent balance between efficiency savings + * and allowing for the possibility that some upgrade messages may be changed or + * rescinded. + * + * @var int $cache_expiration + */ + return (int) apply_filters( 'tribe_plugin_upgrade_notice_expiration', DAY_IN_SECONDS, $this->plugin_path ); + } + + /** + * Looks at the current stable plugin readme.txt and parses to try and find the first + * available upgrade notice relating to a plugin version higher than this one. + * + * By default, WP SVN is the source. + */ + protected function discover_upgrade_notice() { + /** + * The URL for the current plugin readme.txt file. + * + * @var string $url + * @var string $plugin_path + */ + $readme_url = apply_filters( 'tribe_plugin_upgrade_readme_url', + $this->form_wp_svn_readme_url(), + $this->plugin_path + ); + + if ( ! empty( $readme_url ) ) { + $response = wp_safe_remote_get( $readme_url ); + } + + if ( ! empty( $response ) && ! is_wp_error( $response ) ) { + $readme = $response['body']; + } + + if ( ! empty( $readme ) ) { + $this->parse_for_upgrade_notice( $readme ); + $this->format_upgrade_notice(); + } + + /** + * The upgrade notice for the current plugin (may be empty). + * + * @var string $upgrade_notice + * @var string $plugin_path + */ + return apply_filters( 'tribe_plugin_upgrade_notice', + $this->upgrade_notice, + $this->plugin_path + ); + } + + /** + * Forms the expected URL to the trunk readme.txt file as it is on WP SVN + * or an empty string if for any reason it cannot be determined. + * + * @return string + */ + protected function form_wp_svn_readme_url() { + $parts = explode( '/', $this->plugin_path ); + $slug = empty( $parts[0] ) ? '' : $parts[0]; + return esc_url( "https://plugins.svn.wordpress.org/$slug/trunk/readme.txt" ); + } + + /** + * Given a standard Markdown-format WP readme.txt file, finds the first upgrade + * notice (if any) for a version higher than $this->current_version. + * + * @param string $readme + * @return string + */ + protected function parse_for_upgrade_notice( $readme ) { + $in_upgrade_notice = false; + $in_version_notice = false; + $readme_lines = explode( "\n", $readme ); + + foreach ( $readme_lines as $line ) { + // Once we leave the Upgrade Notice section (ie, we encounter a new section header), bail + if ( $in_upgrade_notice && 0 === strpos( $line, '==' ) ) { + break; + } + + // Look out for the start of the Upgrade Notice section + if ( ! $in_upgrade_notice && preg_match( '/^==\s*Upgrade\s+Notice\s*==/i', $line ) ) { + $in_upgrade_notice = true; + } + + // Also test to see if we have left the version specific note (ie, we encounter a new sub heading or header) + if ( $in_upgrade_notice && $in_version_notice && 0 === strpos( $line, '=' ) ) { + break; + } + + // Look out for the first applicable version-specific note within the Upgrade Notice section + if ( $in_upgrade_notice && ! $in_version_notice && preg_match( '/^=\s*\[?([0-9\.]{3,})\]?\s*=/', $line, $matches ) ) { + // Is this a higher version than currently installed? + if ( version_compare( $matches[1], $this->current_version, '>' ) ) { + $in_version_notice = true; + } + } + + // Copy the details of the upgrade notice for the first higher version we find + if ( $in_upgrade_notice && $in_version_notice ) { + $this->upgrade_notice .= $line . "\n"; + } + } + } + + /** + * Convert the plugin version header and any links from Markdown to HTML. + */ + protected function format_upgrade_notice() { + // Convert [links](http://...) to tags + $this->upgrade_notice = preg_replace( + '/\[([^\]]*)\]\(([^\)]*)\)/', + '${1}', + $this->upgrade_notice + ); + + // Convert =4.0= headings to

    4.0

    tags + $this->upgrade_notice = preg_replace( + '/=\s*([a-zA-Z0-9\.]{3,})\s*=/', + '

    ${1}

    ', + $this->upgrade_notice + ); + } + + /** + * Render the actual upgrade notice. + * + * Please note if plugin-specific styling is required for the message, you can + * use an ID generated by WordPress for one of the message's parent elements + * which takes the form "{plugin_name}-update". Example: + * + * #the-events-calendar-update .tribe-plugin-update-message { ... } + */ + public function display_message() { + $notice = wp_kses_post( $this->upgrade_notice ); + echo "
    $notice
    "; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Service_Provider.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Service_Provider.php new file mode 100644 index 000000000..72ad60246 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/Service_Provider.php @@ -0,0 +1,66 @@ +hooks(); + } + + /** + * Set up hooks for classes. + * + * @since 4.14.2 + */ + private function hooks() { + add_action( 'tribe_plugins_loaded', [ $this, 'plugins_loaded'] ); + } + + /** + * Setup for things that require plugins loaded first. + * + * @since 4.14.2 + */ + public function plugins_loaded() { + tribe( 'pue.notices' ); + tribe( 'admin.notice.php.version' ); + tribe( WP_Version::class ); + + if ( defined( 'TRIBE_HIDE_MARKETING_NOTICES' ) ) { + return; + } + + tribe( Marketing\Stellar_Sale::class ); + tribe( Marketing\Black_Friday::class ); + // EOY Sale disabled for 2022 + // tribe( Marketing\End_Of_Year_Sale::class ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/WP_Version.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/WP_Version.php new file mode 100644 index 000000000..8c3137957 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notice/WP_Version.php @@ -0,0 +1,87 @@ + 'warning', + 'dismiss' => 1, + 'priority' => -1, + 'wrap' => 'p', + ], + [ $this, 'wp_version_57_should_display' ] + ); + } + + /** + * Whether the WordPress 5.7 notice should display. + * + * @since 4.12.17 + * + * @return boolean + */ + public function wp_version_57_should_display() { + global $wp_version, $current_screen; + + $screens = [ + 'tribe_events_page_tribe-app-shop', // App shop. + 'events_page_tribe-app-shop', // App shop. + 'tribe_events_page_tribe-common', // Settings & Welcome. + 'tribe_events_page_tec-events-settings', // New Settings & Welcome. + 'events_page_tribe-common', // Settings & Welcome. + 'toplevel_page_tribe-common', // Settings & Welcome. + ]; + + // If not a valid screen, don't display. + if ( empty( $current_screen->id ) || ! in_array( $current_screen->id, $screens, true ) ) { + return false; + } + + $wp_version_min_version_required = '5.8'; + $common_version_required = '4.12.18-dev'; + + return + version_compare( Common::VERSION, $common_version_required, '<' ) + && version_compare( $wp_version, $wp_version_min_version_required, '<' ); + } + + /** + * HTML for the WordPress 5.7 notice. + * + * @since 4.12.17 + * + * @see https://evnt.is/wp5-7 + * + * @return string + */ + public function wp_version_57_display_notice() { + global $wp_version; + $is_wp_57 = version_compare( $wp_version, '5.7-beta', '>=' ); + $html = ''; + + if ( $is_wp_57 ) { + $html .= esc_html__( 'You are using WordPress 5.7 which included a major jQuery update that may cause compatibility issues with past versions of The Events Calendar, Event Tickets and other plugins.', 'tribe-common' ); + } else { + $html .= esc_html__( 'WordPress 5.7 includes a major jQuery update that may cause compatibility issues with past versions of The Events Calendar, Event Tickets and other plugins.', 'tribe-common' ); + } + $html .= ' ' . esc_html__( 'Read more.', 'tribe-common' ) . ''; + + return $html; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notices.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notices.php new file mode 100644 index 000000000..f1a2965b4 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Notices.php @@ -0,0 +1,821 @@ +doing_ajax() ) { + return; + } + + // Hook the actual rendering of notices + add_action( 'current_screen', [ $this, 'hook' ], 20 ); + + // Add our notice dismissal script + tribe_asset( + Tribe__Main::instance(), + 'tribe-notice-dismiss', + 'notice-dismiss.js', + [ 'jquery' ], + null, + [ + 'groups' => 'tec-admin-notices', + ] + ); + } + + /** + * This will happen on the `current_screen` and will hook to the correct actions and display the notices + * + * @since 4.3 + * + * @return void + */ + public function hook() { + $transients = $this->get_transients(); + + foreach ( $transients as $slug => $transient ) { + if ( $this->transient_notice_expired( $slug ) ) { + continue; + } + list( $html, $args, $expire ) = $transients[ $slug ]; + $this->register( $slug, $html, $args ); + } + + foreach ( $this->notices as $notice ) { + if ( ! $this->showing_notice( $notice->slug ) ) { + continue; + } + + add_action( $notice->action, $notice->callback, $notice->priority ); + } + } + + /** + * This will allow the user to Dismiss the Notice using JS. + * + * We will dismiss the notice without checking to see if the slug was already + * registered (via a call to exists()) for the reason that, during dismissal + * ajax request, some valid notices may not have been registered yet. + * + * @since 4.3 + * + * @return void + */ + public function maybe_dismiss() { + if ( empty( $_GET[ self::$meta_key ] ) ) { + wp_send_json( false ); + } + + $slug = sanitize_key( $_GET[ self::$meta_key ] ); + + // Send a JSON answer with the status of dismissal + wp_send_json( $this->dismiss( $slug ) ); + } + + /** + * Allows a Magic to remove the Requirement of creating a callback + * + * @since 4.3 + * + * @param string $name Name of the method used to create the slug of the notice. + * @param array $arguments Which arguments were used, normally empty. + * + * @return string + */ + public function __call( $name, $arguments ) { + // Transform from Method name to Notice number + $slug = preg_replace( '/render_/', '', $name, 1 ); + + if ( ! $this->exists( $slug ) ) { + return false; + } + + $notice = $this->get( $slug ); + + if ( + empty( $notice->active_callback ) + || ( + is_callable( $notice->active_callback ) + && true == call_user_func( $notice->active_callback ) + ) + ) { + $content = $notice->content; + $wrap = isset( $notice->wrap ) ? $notice->wrap : false; + + if ( is_array( $content ) && isset( $content[0] ) && $content[0] instanceof __PHP_Incomplete_Class ) { + // From a class that no longer exists (e.g. the plugin is not active), clean and bail. + $this->remove( $slug ); + $this->remove_transient( $slug ); + + return false; + } + + if ( is_callable( $content ) ) { + $content = call_user_func_array( $content, [ $notice ] ); + } + + if ( empty( $content ) ) { + // There is nothing to render, let's avoid the empty notice frame. + return false; + } + + tribe_asset_enqueue_group( 'tec-admin-notices' ); + + // Return the rendered HTML. + $html = $this->render( $slug, $content, false, $wrap ); + + // Remove the notice and the transient (if any) since it's been rendered. + $this->remove( $slug ); + $this->remove_transient( $slug ); + + return $html; + } + + return false; + } + + /** + * This is a helper to actually print the Message + * + * @since 4.3 + * + * @param string $slug The name of the notice. + * @param string $content The content of the notice. + * @param boolean $return Echo or return the content. + * @param string|bool $wrap An optional HTML tag to wrap the content. + * + * @return bool|string + */ + public function render( $slug, $content = null, $return = true, $wrap = false ) { + if ( ! $this->exists( $slug ) ) { + return false; + } + + // Bail if we already rendered + if ( $this->is_rendered( $slug ) ) { + if ( $this->is_rendered_html( $slug, $content ) && ! $return ) { + echo $content; + } + + return false; + } + + $notice = $this->get( $slug ); + $this->notices[ $slug ]->is_rendered = true; + + $classes = [ 'tribe-dismiss-notice', 'notice' ]; + $classes[] = sanitize_html_class( 'notice-' . $notice->type ); + $classes[] = sanitize_html_class( 'tribe-notice-' . $notice->slug ); + + if ( $notice->dismiss ) { + $classes[] = 'is-dismissible'; + } + + if ( $notice->inline ) { + $classes[] = 'inline'; + } + + // Prevents Empty Notices + if ( empty( $content ) ) { + return false; + } + + if ( is_string( $wrap ) ) { + $content = sprintf( '<%1$s>' . $content . '', $wrap ); + } + + $html = sprintf( '
    %s
    ', implode( ' ', $classes ), $notice->slug, $content ); + tribe_asset_enqueue_group( 'tec-admin-notices' ); + + if ( ! $return ) { + echo $html; + } + + return $html; + } + + /** + * This is a helper to print the message surrounded by `p` tags. + * + * @since 4.3 + * + * @param string $slug The name of the notice. + * @param string $content The content of the notice. + * @param boolean $return Echo or return the content. + * + * @return boolean|string + */ + public function render_paragraph( $slug, $content = null, $return = true ) { + return $this->render( $slug, $content, $return, 'p' ); + } + + /** + * Checks if a given notice is rendered + * + * @since 4.7.10 + * + * @param string $slug Which notice to check. + * + * @return boolean + */ + public function is_rendered( $slug ) { + if ( ! $this->exists( $slug ) ) { + return false; + } + + $notice = $this->get( $slug ); + + return isset( $notice->is_rendered ) ? $notice->is_rendered : false; + } + + /** + * Checks if a given string is a notice rendered + * + * @since 4.7.10 + * + * @param string $slug Which notice to check. + * @param string $html Which html string we are check. + * + * @return boolean + */ + public function is_rendered_html( $slug, $html ) { + if ( ! $this->exists( $slug ) ) { + return false; + } + + $search = sprintf( 'data-ref="%s"', $slug ); + + return false !== strpos( $html, $search ); + } + + /** + * Checks if a given user has dismissed a given notice. + * + * @since 4.13.0 + * + * @param string $slug The name of the notice. + * @param int|null $user_id The user ID. + * + * @return boolean + */ + public function has_user_dismissed( $slug, $user_id = null ) { + + if ( is_null( $user_id ) ) { + $user_id = get_current_user_id(); + } + + $dismissed_notices = get_user_meta( $user_id, self::$meta_key ); + + if ( ! is_array( $dismissed_notices ) ) { + return false; + } + + if ( ! in_array( $slug, $dismissed_notices ) ) { + return false; + } + + $notice = $this->get( $slug ); + if ( + is_object( $notice ) + && $notice->recurring + && $this->should_recurring_notice_show( $slug, $user_id ) + ) { + return false; + } + + return true; + } + + /** + * Checks if a given user has dismissed a given notice. + * + * @since 4.3 + * @deprecated 4.13.0 Deprecated in favor of correcting the typo. + * + * @param string $slug The Name of the Notice + * @param int|null $user_id The user ID + * + * @return boolean + */ + public function has_user_dimissed( $slug, $user_id = null ) { + return $this->has_user_dismissed( $slug, $user_id ); + } + + /** + * Gets the last Dismissal for a given notice slug and user. + * + * @since 4.13.0 + * + * @param string $slug Slug of the notice to look for. + * @param int|null $user_id Which user? If null will default to current user. + * + * @return false|\Tribe\Utils\Date_I18n + */ + public function get_last_dismissal( $slug, $user_id = null ) { + if ( is_null( $user_id ) ) { + $user_id = get_current_user_id(); + } + + $dismissed_time = get_user_meta( $user_id, static::$meta_key_time_prefix . $slug, true ); + + if ( ! is_numeric( $dismissed_time ) ) { + return false; + } + + return Dates::build_date_object( $dismissed_time ); + } + + /** + * Determines if a given notice needs to be re-displayed in case of recurring notice. + * + * @since 4.13.0 + * + * @param string $slug Slug of the notice to look for. + * @param int|null $user_id Which user? If null will default to current user. + * + * @return false|\Tribe\Utils\Date_I18n + */ + public function should_recurring_notice_show( $slug, $user_id = null ) { + $notice = $this->get( $slug ); + if ( ! is_object( $notice ) ) { + return false; + } + + if ( ! $notice->recurring || ! $notice->recurring_interval ) { + return false; + } + + if ( is_null( $user_id ) ) { + $user_id = get_current_user_id(); + } + + $interval = Dates::interval( $notice->recurring_interval ); + $last_dismissal = $this->get_last_dismissal( $slug, $user_id ); + if ( ! $last_dismissal ) { + return false; + } + + $next_dismissal = $last_dismissal->add( $interval ); + $now = Dates::build_date_object( 'now' ); + + if ( $now >= $next_dismissal ) { + delete_user_meta( $user_id, self::$meta_key, $slug ); + + return true; + } + + return false; + } + + /** + * A Method to actually add the Meta value telling that this notice has been dismissed + * + * @since 4.3 + * + * @param string $slug The Name of the Notice + * @param int|null $user_id The user ID + * + * @return boolean + */ + public function dismiss( $slug, $user_id = null ) { + if ( is_null( $user_id ) ) { + $user_id = get_current_user_id(); + } + + // If this user has dismissed we don't care either + if ( $this->has_user_dismissed( $slug, $user_id ) ) { + return true; + } + + update_user_meta( $user_id, static::$meta_key_time_prefix . $slug, time() ); + + return add_user_meta( $user_id, self::$meta_key, $slug, false ); + } + + /** + * Removes the User meta holding if a notice was dismissed + * + * @param string $slug The Name of the Notice + * @param int|null $user_id The user ID + * + * @return boolean + */ + public function undismiss( $slug, $user_id = null ) { + if ( is_null( $user_id ) ) { + $user_id = get_current_user_id(); + } + + // If this user has dismissed we don't care either + if ( ! $this->has_user_dismissed( $slug, $user_id ) ) { + return false; + } + + return delete_user_meta( $user_id, self::$meta_key, $slug ); + } + + /** + * Undismisses the specified notice for all users. + * + * @since 4.3 + * + * @param string $slug + * + * @return int + */ + public function undismiss_for_all( $slug ) { + $user_query = new WP_User_Query( [ + 'meta_key' => self::$meta_key, + 'meta_value' => $slug, + ] ); + + $affected = 0; + + foreach ( $user_query->get_results() as $user ) { + if ( $this->undismiss( $slug, $user->ID ) ) { + $affected ++; + } + } + + return $affected; + } + + /** + * Register a Notice and attach a callback to the required action to display it correctly + * + * @since 4.3 + * + * @param string $slug Slug to save the notice + * @param callable|string $callback A callable Method/Function to actually display the notice + * @param array $arguments Arguments to Setup a notice + * @param callable|null $active_callback An optional callback that should return bool values + * to indicate whether the notice should display or not. + * + * @return stdClass + */ + public function register( $slug, $callback, $arguments = [], $active_callback = null ) { + // Prevent weird stuff here + $slug = sanitize_key( $slug ); + + $defaults = [ + 'callback' => null, + 'content' => null, + 'action' => 'admin_notices', + 'priority' => 10, + 'expire' => false, + 'dismiss' => false, + 'inline' => false, + 'recurring' => false, + 'recurring_interval' => null, + 'type' => 'error', + 'is_rendered' => false, + 'wrap' => false, + ]; + + $defaults['callback'] = [ $this, 'render_' . $slug ]; + $defaults['content'] = $callback; + + if ( is_callable( $active_callback ) ) { + $defaults['active_callback'] = $active_callback; + } + + // Merge Arguments + $notice = (object) wp_parse_args( $arguments, $defaults ); + + // Enforce this one + $notice->slug = $slug; + + // Clean these + $notice->priority = absint( $notice->priority ); + $notice->expire = (bool) $notice->expire; + $notice->recurring = (bool) $notice->recurring; + + if ( ! is_callable( $notice->dismiss ) ) { + $notice->dismiss = (bool) $notice->dismiss; + } + if ( ! is_callable( $notice->inline ) ) { + $notice->inline = (bool) $notice->inline; + } + + // Set the Notice on the array of notices + $this->notices[ $slug ] = $notice; + + // Return the notice Object because it might be modified + return $notice; + } + + /** + * Create a transient Admin Notice easily. + * + * A transient admin notice is a "fire-and-forget" admin notice that will display once registered and + * until dismissed (if dismissible) without need, on the side of the source code, to register it on each request. + * + * @since 4.7.7 + * + * @param string $slug Slug to save the notice + * @param string $html The notice output HTML code + * @param array $arguments Arguments to Setup a notice + * @param int $expire After how much time (in seconds) the notice will stop showing. + * + * @return stdClass Which notice was registered + */ + public function register_transient( $slug, $html, $arguments = [], $expire = null ) { + $notices = $this->get_transients(); + $notices[ $slug ] = [ $html, $arguments, time() + $expire ]; + $this->set_transients( $notices ); + } + + /** + * Removes a transient notice based on its slug. + * + * @since 4.7.7 + * + * @param string $slug + */ + public function remove_transient( $slug ) { + $notices = $this->get_transients(); + unset( $notices[ $slug ] ); + $this->set_transients( $notices ); + } + + /** + * Removes a notice based on its slug. + * + * @since 4.3 + * + * @param string $slug + * + * @return bool + */ + public function remove( $slug ) { + if ( ! $this->exists( $slug ) ) { + return false; + } + + unset( $this->notices[ $slug ] ); + + return true; + } + + /** + * Gets the configuration for the Notices + * + * @since 4.3 + * + * @param string $slug + * + * @return object|array|null + */ + public function get( $slug = null ) { + if ( is_null( $slug ) ) { + return $this->notices; + } + + // Prevent weird stuff here + $slug = sanitize_key( $slug ); + + if ( ! empty( $this->notices[ $slug ] ) ) { + // I want to avoid modifying the registered value. + $notice = $this->notices[ $slug ]; + + if ( is_callable( $notice->inline ) ) { + $notice->inline = call_user_func( $notice->inline, $notice ); + } + + if ( is_callable( $notice->dismiss ) ) { + $notice->dismiss = call_user_func( $notice->dismiss, $notice ); + } + + return $notice; + } + + return null; + } + + /** + * Checks if a given notice exists + * + * @since 4.3 + * + * @param string $slug + * + * @return bool + */ + public function exists( $slug ) { + return is_object( $this->get( $slug ) ) ? true : false; + } + + /** + * Returns an array of registered transient notices. + * + * @since 4.7.7 + * + * @return array An associative array in the shape [ => [ , , ] ] + */ + protected function get_transients() { + $cached = tribe( 'cache' )['transient_admin_notices']; + + if ( false !== $cached ) { + return $cached; + } + + $transient = self::$transient_notices_name; + $notices = get_transient( $transient ); + $notices = is_array( $notices ) ? $notices : []; + + if ( $this->did_prune_transients ) { + $this->did_prune_transients = true; + foreach ( $notices as $key => $notice ) { + list( $html, $args, $expire_at ) = $notice; + + if ( $expire_at < time() ) { + unset( $notices[ $key ] ); + } + } + } + + tribe( 'cache' )['transient_admin_notices'] = $notices; + + return $notices; + } + + /** + * Updates/sets the transient notices transient. + * + * @since 4.7.7 + * + * @param array $notices An associative array in the shape [ => [ , , ] ] + */ + protected function set_transients( $notices ) { + $transient = self::$transient_notices_name; + set_transient( $transient, $notices, MONTH_IN_SECONDS ); + } + + /** + * Checks whether a specific transient admin notices is being shown or not, depending on its expiration and + * dismissible status. + * + * + * @since 4.11.1 + * + * @param string|array $slug The slug, or slugs, of the transient notices to check. This is the same slug used + * to register the transient notice in the `tribe_transient_notice` function or the + * `Tribe__Admin__Notices::register_transient()` method. + * + * @return bool Whether the transient notice is showing or not. + */ + public function showing_transient_notice( $slug ) { + $transient_notices = (array) $this->get_transients(); + + return isset( $transient_notices[ $slug ] ) + && ! $this->has_user_dismissed( $slug ) + && ! $this->transient_notice_expired( $slug ); + } + + /** + * Checks whether a transient notice expired or not. + * + * @since 4.11.1 + * + * @param string|array $slug The slug, or slugs, of the transient notices to check. This is the same slug used + * to register the transient notice in the `tribe_transient_notice` function or the + * `Tribe__Admin__Notices::register_transient()` method. + * + * @return bool Whether the transient notice is expired or not. + */ + protected function transient_notice_expired( $slug ) { + $transients = (array) $this->get_transients(); + + if ( ! isset( $transients[ $slug ] ) ) { + return true; + } + + list( $html, $args, $expire ) = $transients[ $slug ]; + if ( $expire < time() ) { + return true; + } + + return false; + } + + /** + * Checks whether a notice is being shown or not; the result takes the notice callback and dismissible status into + * account. + * + * @since 4.11.1 + * + * @param string|array $slug The slug, or slugs, of the transient notices to check. This is the same slug used + * to register the transient notice in the `tribe_transient_notice` function or the + * `Tribe__Admin__Notices::register_transient()` method. + * + * @return bool Whether the notice is showing or not. + */ + public function showing_notice( $slug ) { + if ( ! isset( $this->notices[ $slug ] ) ) { + return false; + } + + $notice = $this->notices[ $slug ]; + if ( $notice->dismiss && $this->has_user_dismissed( $notice->slug ) ) { + return false; + } + + if ( + ! empty( $notice->active_callback ) + && is_callable( $notice->active_callback ) + && false == call_user_func( $notice->active_callback ) + ) { + return false; + } + + return true; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Pages.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Pages.php new file mode 100644 index 000000000..3a05e4f84 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Pages.php @@ -0,0 +1,309 @@ + + */ + private $pages = []; + + /** + * Get registered pages. + * + * @since 4.15.0 + * + * @return array $pages { + * Array containing the registered pages. + * + * @type array $page_id { + * @type string id Id to reference the page. + * @type array title Page title. Used in menus and breadcrumbs. + * @type string|null parent Parent ID. Null for new top level page. + * @type string path Path for this page, full path in app context; ex /analytics/report + * @type string capability Capability needed to access the page. + * @type string icon Icon. Dashicons helper class, base64-encoded SVG, or 'none'. + * @type int position Menu item position. + * @type int order Navigation item order. + * @type callable callback The function to be called to output the content for the page. + * } + * } + */ + public function get_pages() { + /** + * Filters the list of registered TEC admin pages. + * + * @since 4.15.0 + * + * @param array $pages { + * Array containing the registered pages to be filtered + * + * @type array $page_id { + * @type string id Id to reference the page. + * @type array title Page title. Used in menus and breadcrumbs. + * @type string|null parent Parent ID. Null for new top level page. + * @type string path Path for this page, full path in app context; ex /analytics/report + * @type string capability Capability needed to access the page. + * @type string icon Icon. Dashicons helper class, base64-encoded SVG, or 'none'. + * @type int position Menu item position. + * @type int order Navigation item order. + * @type callable callback The function to be called to output the content for the page. + * } + * } + */ + $pages = apply_filters( 'tec_admin_pages', $this->pages ); + + return $pages; + } + + /** + * Adds a page to `tec-admin`. + * + * @since 4.15.0 + * + * @param array $options { + * Array describing the page. + * + * @type string id Id to reference the page. + * @type string title Page title. Used in menus and breadcrumbs. + * @type string|null parent Parent ID. Null for new top level page. + * @type string path Path for this page, full path in app context; ex /analytics/report + * @type string capability Capability needed to access the page. + * @type string icon Icon. Dashicons helper class, base64-encoded SVG, or 'none'. + * @type int position Menu item position. + * @type int order Navigation item order. + * @type callable callback The function to be called to output the content for the page. + * } + * + * @return string $page The resulting page's hook_suffix. + * + */ + public function register_page( $options = [] ) { + $defaults = [ + 'id' => null, + 'parent' => null, + 'title' => '', + 'capability' => self::get_capability(), + 'path' => '', + 'icon' => '', + 'position' => null, + 'callback' => [ __CLASS__, 'render_page' ], + ]; + + $options = wp_parse_args( $options, $defaults ); + + if ( is_null( $options['parent'] ) ) { + $page = add_menu_page( + $options['title'], + $options['title'], + $options['capability'], + $options['path'], + $options['callback'], + $options['icon'], + $options['position'] + ); + } else { + $page = add_submenu_page( + $options['parent'], + $options['title'], + $options['title'], + $options['capability'], + $options['path'], + $options['callback'] + ); + } + + $this->connect_page( $options ); + + return $page; + } + + /** + * Get the current page. + * + * @since 4.15.0 + * + * @return string|boolean Current page or false if not registered with this controller. + */ + public function get_current_page() { + if ( is_null( $this->current_page ) ) { + $this->determine_current_page(); + } + + return $this->current_page; + } + + /** + * Determine the current page. + * + * @since 4.15.0 + * + * @return string|boolean Current page or false if not registered with this controller. + */ + public function determine_current_page() { + $current_screen = function_exists( 'get_current_screen' ) ? get_current_screen() : null; + + if ( is_null( $current_screen ) ) { + $this->current_page = tribe_get_request_var( 'page' ); + return $this->current_page; + } + + $this->current_page = $current_screen->id; + + return $this->current_page; + } + + /** + * Connect an existing page to wp-admin. + * + * @since 4.15.0 + * + * @param array $options { + * Array describing the page. + * + * @type string id Id to reference the page. + * @type string|array title Page title. Used in menus and breadcrumbs. + * @type string|null parent Parent ID. Null for new top level page. + * @type string path Path for this page. E.g. admin.php?page=wc-settings&tab=checkout + * @type string capability Capability needed to access the page. + * @type string icon Icon. Dashicons helper class, base64-encoded SVG, or 'none'. + * @type int position Menu item position. + * } + */ + public function connect_page( $options = [] ) { + if ( ! is_array( $options['title'] ) ) { + $options['title'] = array( $options['title'] ); + } + + /** + * Filter the options when connecting or registering a page. + * + * @param array $options { + * Array describing the page. + * + * @type string id Id to reference the page. + * @type string|array title Page title. Used in menus and breadcrumbs. + * @type string|null parent Parent ID. Null for new top level page. + * @type string screen_id The screen ID that represents the connected page. (Not required for registering). + * @type string path Path for this page. E.g. admin.php?page=wc-settings&tab=checkout + * @type string capability Capability needed to access the page. + * @type string icon Icon. Dashicons helper class, base64-encoded SVG, or 'none'. + * @type int position Menu item position. + * @type boolean js_page If this is a JS-powered page. + * } + */ + $options = apply_filters( 'tec_admin_pages_connect_page_options', $options ); + + $this->pages[ $options['id'] ] = $options; + } + + /** + * Get the capability. + * + * @param string $capability The capability required for a TEC page to be displayed to the user. + * + * @since 4.15.0 + * + * @return string The capability required for a TEC page to be displayed to the user. + */ + public static function get_capability( $capability = 'manage_options' ) { + /** + * Filters the default capability for Tribe admin pages. + * + * @param string $capability The capability required for a TEC page to be displayed to the user. + * + * @todo: We'll need to deprecate this one in favor of the one below. + */ + $capability = apply_filters( 'tribe_common_event_page_capability', $capability ); + + /** + * Filters the default capability for TEC admin pages. + * + * @param string $capability The capability required for a TEC page to be displayed to the user. + * + * @since 4.15.0 + */ + $capability = apply_filters( 'tec_admin_pages_capability', $capability ); + + return $capability; + } + + /** + * Define if is a `tec` admin page (registered). + * + * @since 4.15.0 + * + * @param string $page_id The ID of the page to check if is a `tec` admin page. + * + * @return boolean True if is a `tec` admin page, false otherwise. + */ + public function is_tec_page( $page_id = '' ) { + return in_array( $page_id, array_keys( $this->pages ), true ); + } + + /** + * Get pages with tabs. + * @since 4.15.0 + * + * @param array $pages The list of pages with tabs. + * @return array $pages The list of pages with tabs, filtered. + */ + public function get_pages_with_tabs( $pages = [] ) { + /** + * Filters the pages with tabs. + * + * @param array $pages Pages with tabs. + * + * @since 4.15.0 + */ + return apply_filters( + 'tec_admin_pages_with_tabs', + $pages + ); + } + + /** + * Check if the current page has tabs. + * + * @since 4.15.0 + * + * @param string $page The page slug. + * @return boolean True if the page has tabs, false otherwise. + */ + public function has_tabs( $page = '' ) { + if ( empty( $page ) ) { + $page = $this->get_current_page(); + } + + return in_array( $page, $this->get_pages_with_tabs() ); + } + + /** + * Generic page. + * + * @since 4.15.0 + */ + public static function render_page() { + ?> +
    + should_setup_pages() ) { + return; + } + + $page_title = esc_html__( 'Troubleshooting', 'tribe-common' ); + $menu_title = esc_html__( 'Troubleshooting', 'tribe-common' ); + + $capability = $this->get_required_capability(); + + $where = Tribe__Settings::instance()->get_parent_slug(); + + $this->admin_page = add_submenu_page( + $where, + $page_title, + $menu_title, + $capability, + static::MENU_SLUG, + [ + $this, + 'do_menu_page', + ] + ); + } + + /** + * Gets the required capability for the troubleshooting page. + * + * @since 4.14.2 + * + * @return string Which capability we required for the troubleshooting page. + */ + public function get_required_capability() { + /** + * Allows third party filtering of capability required to see the Troubleshooting page. + * + * @since 4.14.2 + * + * @param string $capability Which capability we are using as the one required for the + * troubleshooting page. + * @param static $troubleshooting The current instance of the class that handles this page. + */ + $capability = apply_filters( 'tec_troubleshooting_capability', 'install_plugins', $this ); + return $capability; + } + + /** + * Hooked to admin_body_class to add a class for troubleshooting page. + * + * @since 4.15.0 + * + * @param string $classes a space separated string of classes to be added to body. + * + * @return string $classes a space separated string of classes to be added to body. + */ + public function admin_body_class( $classes ) { + if ( ! $this->is_current_page() ) { + return $classes; + } + + $classes .= ' tec-troubleshooting'; + return $classes; + } + + /** + * Adds the troubleshooting menu to the the WP admin bar under events. + * + * @since 4.14.2 + * + */ + public function add_toolbar_item() { + $capability = $this->get_required_capability(); + + if ( ! current_user_can( $capability ) ) { + return; + } + + global $wp_admin_bar; + + $wp_admin_bar->add_menu( [ + 'id' => 'tec-troubleshooting', + 'title' => esc_html__( 'Troubleshooting', 'tribe-common' ), + 'href' => Tribe__Settings::instance()->get_url( [ 'page' => static::MENU_SLUG ] ), + 'parent' => 'tribe-events-settings-group', + ] ); + } + + /** + * Checks if the current page is the troubleshooting page. + * + * @since 4.14.2 + * + * @return boolean returns true if the current page is the troubleshooting page. + */ + public function is_current_page() { + if ( ! Tribe__Settings::instance()->should_setup_pages() || ! did_action( 'admin_menu' ) ) { + return false; + } + + if ( is_null( $this->admin_page ) ) { + _doing_it_wrong( + __FUNCTION__, + 'Function was called before it is possible to accurately determine what the current page is.', + '4.5.6' + ); + return false; + } + + global $current_screen; + + $troubleshooting_pages = [ + 'tribe_events_page_tec-troubleshooting', + 'tickets_page_tec-tickets-troubleshooting', + ]; + + return in_array( $current_screen->id, $troubleshooting_pages ); + } + + /** + * Renders the Troubleshooting page. + * + * @since 4.14.2 + * + */ + public function do_menu_page() { + tribe_asset_enqueue( 'tribe-admin-help-page' ); + $main = Tribe__Main::instance(); + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting.php'; + } + + /** + * This method checks if there are any active issues that need to be flagged. + * + * @since 4.14.2 + * + * @return boolean returns true if there are any active issues. + */ + public function is_any_issue_active() { + $issues = $this->get_issues_found(); + $active_issues = wp_list_pluck( $issues, 'active' ); + return in_array( true, $active_issues ); + } + + /** + * Checks if any active TEC plugins require an update. + * + * @since 4.14.2 + * + * @return boolean returns true is any of the plugins requires an update. + */ + public function is_any_tec_plugin_out_of_date() { + $current = get_site_transient( 'update_plugins' ); + $plugins = []; + if ( defined( 'TRIBE_EVENTS_FILE' ) ) { + $plugins[] = TRIBE_EVENTS_FILE; + } + if ( defined( 'EVENTS_CALENDAR_PRO_FILE' ) ) { + $plugins[] = EVENTS_CALENDAR_PRO_FILE; + } + if ( defined( 'EVENT_TICKETS_PLUS_FILE' ) ) { + $plugins[] = EVENT_TICKETS_PLUS_FILE; + } + if ( defined( 'EVENTS_VIRTUAL_FILE' ) ) { + $plugins[] = EVENTS_VIRTUAL_FILE; + } + if ( defined( 'EVENT_TICKETS_MAIN_PLUGIN_FILE' ) ) { + $plugins[] = EVENT_TICKETS_MAIN_PLUGIN_FILE; + } + if ( defined( 'TRIBE_EVENTS_FILTERBAR_FILE' ) ) { + $plugins[] = TRIBE_EVENTS_FILTERBAR_FILE; + } + if ( defined( 'EVENTS_COMMUNITY_TICKETS_FILE' ) ) { + $plugins[] = EVENTS_COMMUNITY_TICKETS_FILE; + } + if ( defined( 'EVENTS_COMMUNITY_FILE' ) ) { + $plugins[] = EVENTS_COMMUNITY_FILE; + } + if ( defined( 'EVENTBRITE_PLUGIN_FILE' ) ) { + $plugins[] = EVENTBRITE_PLUGIN_FILE; + } + if ( defined( 'TRIBE_APM_FILE' ) ) { + $plugins[] = TRIBE_APM_FILE; + } + if ( defined( 'IMAGE_WIDGET_PLUS_DIR' ) ) { + $plugins[] = IMAGE_WIDGET_PLUS_DIR; + } + $plugins = array_map( static function( $file ) { + $file = \str_replace( WP_PLUGIN_DIR . '/', '', $file ); + return $file; + }, $plugins ); + + foreach ( $plugins as $file ) { + if ( ! isset( $current->response[ $file ] ) ) { + continue; + } + $response = $current->response[ $file ]; + if ( ! empty( $response->new_version ) ) { + return true; + } + } + return false; + } + + /** + * Checks if any of the issues defined are active. + * + * @since 4.14.2 + * + * @param string $slug the slug of active issue. + * + * @return boolean returns a boolean value for each individual issue depending on whether it is active or not. + */ + public function is_active_issue( $slug ) { + if ( 'timezone' === $slug ) { + return Timezones::is_utc_offset( Timezones::wp_timezone_string() ); + } + if ( 'geolocation' === $slug && class_exists( 'Tribe__Events__Google__Maps_API_Key' ) ) { + $key = \tribe_get_option( 'google_maps_js_api_key', false ); + return empty( $key ) || Tribe__Events__Google__Maps_API_Key::$default_api_key === $key ; + } + if ( 'out-of-date' === $slug ) { + return $this->is_any_tec_plugin_out_of_date(); + } + return false; + } + + /** + * Displays issues found in the UI. + * + * @since 4.14.2 + * + * @return array of issues which are displayed on the troubleshooting page. + */ + public function get_issues_found() { + $issues_found = apply_filters( 'tec_help_troubleshooting_issues_found', [ + [ + 'title' => __( 'Site time zone uses UTC', 'tribe-common' ), + 'description' => __( 'When using The Events Calendar, we highly recommend that you use a geographic timezone such as "America/Los_Angeles" and avoid using a UTC timezone offset such as “UTC+9”. Choosing a UTC timezone for your site or individual events may cause problems when importing events or with Daylight Saving Time. Go to your the General WordPress settings to adjust your site timezone.', 'tribe-common' ), + 'more_info' => 'http://evnt.is/1ad3', + 'resolve_text' => __( 'Adjust your timezone', 'tribe-common' ), + 'fix' => '/wp-admin/options-general.php', + 'active' => $this->is_active_issue( 'timezone' ), + ], + [ + 'title' => __( 'Install max has been reached', 'tribe-common' ), + 'description' => __( 'License keys can only be used on a limited number of sites, which varies depending on your license level. You\'ll need to remove the license from one or more other site\'s in order to use it on this one.', 'tribe-common' ), + 'more_info' => 'https://evnt.is/1aqz', + 'resolve_text' => __( 'Manage your licenses', 'tribe-common' ), + 'fix' => 'https://evnt.is/1aq-', + 'active' => $this->is_active_issue( 'install-max' ), + ], + [ + 'title' => __( 'Default Google Maps API key', 'tribe-common' ), + 'description' => __( 'The Events Calendar comes with an API key for basic maps functionality. If you’d like to use more advanced features like custom map pins, dynamic map loads, or Events Calendar Pro\'s Location Search and advanced Map View, you’ll need to get your own Google Maps API key and add it to Events > Settings > Integrations', 'tribe-common' ), + 'more_info' => 'https://evnt.is/1aqx', + 'resolve_text' => __( 'Enter a custom API key', 'tribe-common' ), + 'fix' => '/wp-admin/edit.php?page=tec-events-settings&tab=addons&post_type=tribe_events#tribe-field-google_maps_js_api_key', + 'active' => $this->is_active_issue( 'geolocation' ), + ], + [ + 'title' => __( 'Plugin(s) are out of date', 'tribe-common' ), + 'description' => __( 'It\'s important to use the most recent versions of our plugins so that you have access to the latest features, bug fixes, and security updates. Plugin functionality can be comprimised if your site is running outdated or mis-matched versions.', 'tribe-common' ), + 'more_info' => 'https://evnt.is/1aqy', + 'resolve_text' => __( 'Check for updates', 'tribe-common' ), + 'fix' => '/wp-admin/update-core.php', + 'active' => $this->is_active_issue( 'out-of-date' ), + ], + ] ); + + return $issues_found; + } + + /** + * Defines common troubleshooting issues and displays them in the UI. + * + * @since 4.14.2 + * + * @return array of common issues which are displayed on the troubleshooting page. + */ + public function get_common_issues() { + $common_issues = apply_filters( 'tec_help_troubleshooting_issues', [ + [ + 'issue' => __( 'Common Error Messages', 'tribe-common' ), + 'solution' => __( 'Here’s an overview of %s and what they mean.', 'tribe-common' ), + 'link' => 'https://evnt.is/1as0', + 'link_label' => 'common error messages', + ], + [ + 'issue' => __( 'My calendar doesn’t look right.', 'tribe-common' ), + 'solution' => __( 'This can happen when other plugins try to improve performance. %s.' ), + 'link' => 'https://theeventscalendar.com/knowledgebase/k/troubleshooting-the-most-common-installation-issues/#layout-issue', + 'link_label' => 'More info', + ], + [ + 'issue' => __( 'I installed the calendar and it crashed my site.', 'tribe-common' ), + 'solution' => __( '%s and other common installation issues.', 'tribe-common' ), + 'link' => 'https://theeventscalendar.com/knowledgebase/k/troubleshooting-the-most-common-installation-issues/#fatal-errors', + 'link_label' => 'Find solutions to this', + ], + [ + 'issue' => __( 'I keep getting “Page Not Found” on events.', 'tribe-common' ), + 'solution' => __( 'There are a few %s to resolve and prevent 404 errors.', 'tribe-common' ), + 'link' => 'https://evnt.is/1as2', + 'link_label' => 'things you can do', + ], + ] ); + + return $common_issues; + } + + /** + * Fired to display notices in the admin pages where the method is called. + * + * @since 4.14.2 + * + * @param string $page the page which the action is being applied. + * + */ + public function admin_notice( $page ) { + do_action( 'tec_admin_notice_area', $page ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Upsell_Notice/Main.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Upsell_Notice/Main.php new file mode 100644 index 000000000..5f220d0e5 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Upsell_Notice/Main.php @@ -0,0 +1,97 @@ +template = new \Tribe__Template(); + $this->template->set_template_origin( \Tribe__Main::instance() ); + $this->template->set_template_folder( 'src/admin-views/notices/upsell' ); + $this->template->set_template_context_extract( true ); + $this->template->set_template_folder_lookup( false ); + } + + return $this->template; + } + + /** + * Checks if upsell should be rendered. + * + * @since 4.14.17 + * + * @return boolean + */ + private function should_render() { + if ( function_exists( 'tec_should_hide_upsell' ) ) { + return ! tec_should_hide_upsell(); + } + if ( defined( 'TRIBE_HIDE_UPSELL' ) ) { + return ! tribe_is_truthy( TRIBE_HIDE_UPSELL ); + } + return true; + } + + /** + * Render upsell notice. + * + * @since 4.14.17 + * + * @param array $args Array of arguments that will ultimately be sent to the template. + * @param bool $echo Whether or not to echo the HTML. Defaults to true. + * + * @return string HTML of upsell notice. + */ + public function render( $args, $echo = true ) { + // Check if upsell should be rendered. + if ( ! $this->should_render() ) { + return; + } + + // Default args for the container. + $args = wp_parse_args( $args, [ + 'classes' => [], + 'text' => '', + 'link_target' => '_blank', + 'icon_url' => tribe_resource_url( 'images/icons/circle-bolt.svg', false, null, \Tribe__Main::instance() ), + 'link' => [], + ] ); + + // Default args for the link. + $args['link'] = wp_parse_args( $args['link'], [ + 'classes' => [], + 'text' => '', + 'url' => '', + 'target' => '_blank', + 'rel' => 'noopener noreferrer', + ] ); + + $template = $this->get_template(); + return $template->template( 'main', $args, $echo ); + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Upsell_Notice/README.md b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Upsell_Notice/README.md new file mode 100644 index 000000000..aa0b1012e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Upsell_Notice/README.md @@ -0,0 +1,65 @@ +# Upsell Notices + +To add an upsell notice, use the following code: + +``` +tribe( \Tribe\Admin\Upsell_Notice\Main::class )->render( [ + 'text' => 'Text to explain what you are promoting.', + 'link' => [ + 'text' => 'Text for the link.', + 'url' => 'https://url.com/to/more/info', + ], +] ); +``` + +## Customizing the notice container + +There are a couple of classes you can add that will display the upsell notice with different styles. + +- `.tec-admin__upsell--rounded-corners` - Adds a rounded-corner, light gray background around the entire notice. +- `.tec-admin__upsell--rounded-corners-text` - Adds a rounded-corner, light gray background around the notice text, only. + +Example: +``` +tribe( \Tribe\Admin\Upsell_Notice\Main::class )->render( [ + 'classes' => [ + 'tec-admin__upsell--rounded-corners' + ], + 'text' => 'Text to explain what you are promoting.', + 'link' => [ + 'text' => 'Text for the link.', + 'url' => 'https://url.com/to/more/info', + ], +] ); +``` + +## Customizing the notice link + +Likewise, you can also add these classes to the link array to change the appearance. + +- `.tec-admin__upsell-link--dark` - Changes the color to a dark color, instead of the default blue. +- `.tec-admin__upsell-link--underlined` - Adds an underline to the link text. + +You can also change the following attributes of the link: + +- `target` - Default is '_blank'. +- `rel` - Default is 'nofollow noreferrer'. + +Example: +``` +tribe( \Tribe\Admin\Upsell_Notice\Main::class )->render( [ + 'classes' => [ + 'tec-admin__upsell--rounded-corners-text' + ], + 'text' => 'Text to explain what you are promoting.', + 'link' => [ + 'classes' => [ + 'tec-admin__upsell-link--dark', + 'tec-admin__upsell-link--underlined', + ], + 'text' => 'Text for the link.', + 'url' => 'https://url.com/to/more/info', + 'target' => '_parent' + ], +] ); +``` \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Wysiwyg.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Wysiwyg.php new file mode 100644 index 000000000..f2395e0cc --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Wysiwyg.php @@ -0,0 +1,143 @@ +name = $name; + $this->value = $value; + $default_args = [ + 'teeny' => true, + 'wpautop' => true, + 'textarea_name' => $name, + ]; + $this->args = wp_parse_args( $args, $default_args ); + } + + /** + * Filters editor buttons. + * + * @since 5.0.12 + * + * @param array $buttons Array of buttons to include. + * + * @return array Filtered array of buttons. + */ + public function filter_buttons( $buttons ) { + if ( + empty( $this->args ) + || ! isset( $this->args['buttons'] ) + || empty( $this->args['buttons'] ) + ) { + return $buttons; + } + + return $this->args['buttons']; + } + + /** + * Filter 2nd row of buttons. + * + * @since 5.0.12 + * + * @param array $buttons Array of buttons to include. + * + * @return array Filtered array of buttons. + */ + public function maybe_filter_buttons_2( $buttons ) { + if ( + empty( $this->args ) || + ! isset( $this->args['buttons_2'] ) || + empty( $this->args['buttons_2'] ) + ) { + return $buttons; + } + + return $this->args['buttons_2']; + } + + /** + * Get HTML of editor. + * + * @since 5.0.12 + * + * @return string HTML of editor + */ + public function get_html() { + // Add button filters. + add_filter( 'teeny_mce_buttons', [ $this, 'filter_buttons' ] ); + add_filter( 'tiny_mce_buttons', [ $this, 'filter_buttons' ] ); + add_filter( 'mce_buttons', [ $this, 'filter_buttons' ] ); + add_filter( 'mce_buttons_2', [ $this, 'maybe_filter_buttons_2' ] ); + + // Get HTML of editor. + ob_start(); + wp_editor( html_entity_decode( ( $this->value ) ), sanitize_html_class( $this->name ), $this->args ); + $html = ob_get_clean(); + + // Remove button filters. + remove_filter( 'teeny_mce_buttons', [ $this, 'filter_buttons' ] ); + remove_filter( 'tiny_mce_buttons', [ $this, 'filter_buttons' ] ); + remove_filter( 'mce_buttons', [ $this, 'filter_buttons' ] ); + remove_filter( 'mce_buttons_2', [ $this, 'maybe_filter_buttons_2' ] ); + + return $html; + } + + /** + * Renders editor HTML. + * + * @since 5.0.12 + * + * @return void + */ + public function render_html() { + echo $this->get_html(); + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Ajax/Dropdown.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Ajax/Dropdown.php new file mode 100644 index 000000000..071d977cf --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Ajax/Dropdown.php @@ -0,0 +1,340 @@ + $search Search string from Select2 + * @param int $page When we deal with pagination + * @param array $args Which arguments we got from the Template + * @param string $source What source it is + * + * @return array + */ + public function search_terms( $search, $page, $args, $source ) { + $data = []; + + if ( empty( $args['taxonomy'] ) ) { + $this->error( esc_attr__( 'Cannot look for Terms without a taxonomy', 'tribe-common' ) ); + } + + // We always want all the fields so we overwrite it + $args['fields'] = isset( $args['fields'] ) ? $args['fields'] : 'all'; + $args['hide_empty'] = isset( $args['hide_empty'] ) ? $args['hide_empty'] : false; + + if ( ! empty( $search ) ) { + if ( ! is_array( $search ) ) { + // For older pieces that still use Select2 format. + $args['search'] = $search; + } else { + // Newer SelectWoo uses a new search format. + $args['search'] = $search['term']; + } + } + + // On versions older than 4.5 taxonomy goes as an Param + if ( version_compare( $GLOBALS['wp_version'], '4.5', '<' ) ) { + $terms = get_terms( $args['taxonomy'], $args ); + } else { + $terms = get_terms( $args ); + } + + $results = []; + + // Respect the parent/child_of argument if set + $parent = ! empty( $args['child_of'] ) ? (int) $args['child_of'] : 0; + $parent = ! empty( $args['parent'] ) ? (int) $args['parent'] : $parent; + + if ( empty( $args['search'] ) ) { + $this->sort_terms_hierarchically( $terms, $results, $parent ); + $results = $this->convert_children_to_array( $results ); + } else { + foreach ( $terms as $term ) { + // Prep for Select2 + $term->id = $term->term_id; + $term->text = $term->name; + $term->breadcrumbs = []; + + if ( 0 !== (int) $term->parent ) { + $ancestors = get_ancestors( $term->id, $term->taxonomy ); + $ancestors = array_reverse( $ancestors ); + foreach ( $ancestors as $ancestor ) { + $ancestor = get_term( $ancestor ); + $term->breadcrumbs[] = $ancestor->name; + } + } + + $results[] = $term; + } + } + + foreach ( $results as $result ) { + $result->text = wp_specialchars_decode( wp_kses( $result->text, [] ) ); + } + + $data['results'] = $results; + $data['taxonomies'] = get_taxonomies(); + + return $data; + } + + /** + * Search for Posts using Select2 + * + * @since 4.12.17 + * + * @param string|array $search Search string from Select2. + * @param int $page Page we want when we're dealing with pagination. + * @param array $args Arguments to pass to the query. + * @param string|int $selected Selected item ID. + * + * @return array An Array of results. + */ + public function search_posts( $search, $page = 1, $args = [], $selected = null ) { + if ( ! empty( $search ) ) { + if ( is_array( $search ) ) { + // Newer SelectWoo uses a new search format. + $args['s'] = $search['term']; // post? + } else { + // For older pieces that still use Select2 format. + $args['s'] = $search; + } + } + + $args['paged'] = $page; + $args['update_post_meta_cache'] = false; + $args['update_post_term_cache'] = false; + + $results = new WP_Query( $args ); + $has_pagination = $results->post_count < $results->found_posts; + + return $this->format_posts_for_dropdown( $results->posts, $selected, $has_pagination ); + } + + /** + * Formats a given array of posts to be displayed into the Dropdown.js module with SelectWoo. + * + * @since 4.12.17 + * + * @param array $posts + * @param null|int $selected + * @param boolean $pagination + * + * @return array + */ + public function format_posts_for_dropdown( array $posts, $selected = null, $pagination = false ) { + $data = [ + 'posts' => [], + 'pagination' => $pagination, + ]; + + // Skip when we don't have posts + if ( empty( $posts ) ) { + return $data; + } + + foreach ( $posts as $post ) { + if ( ! $post instanceof \WP_Post ) { + $post = get_post( $post ); + } + + // Skip non WP Post Objects. + if ( ! $post instanceof \WP_Post ) { + continue; + } + + // Prep for Select2. + $data['posts'][] = [ + 'id' => $post->ID, + 'text' => ! empty( $post->post_title_formatted ) ? $post->post_title_formatted : $post->post_title, + 'selected' => ! empty( $selected ) && (int) $post->ID === (int) $selected, + ]; + } + + return $data; + } + + /** + * Sorts all the Terms for Select2 hierarchically. + * + * @since 4.6 + * + * @param array &$terms Array of Terms from `get_terms`. + * @param array &$into Variable where we will store the. + * @param integer $parent Used for the recursion. + * + * @return array + */ + public function sort_terms_hierarchically( &$terms, &$into, $parent = 0 ) { + foreach ( $terms as $i => $term ) { + if ( $term->parent === $parent ) { + // Prep for Select2 + $term->id = $term->term_id; + $term->text = $term->name; + + $into[ $term->term_id ] = $term; + unset( $terms[ $i ] ); + } + } + + foreach ( $into as $term ) { + $term->children = []; + $this->sort_terms_hierarchically( $terms, $term->children, $term->term_id ); + } + } + + /** + * Makes sure we have arrays for the JS data for Select2 + * + * @since 4.6 + * + * @param object|array $results The Select2 results + * + * @return array + */ + public function convert_children_to_array( $results ) { + if ( isset( $results->children ) ) { + $results->children = $this->convert_children_to_array( $results->children ); + if ( empty( $results->children ) ) { + unset( $results->children ); + } + } else { + foreach ( $results as $key => $item ) { + $item = $this->convert_children_to_array( $item ); + } + } + + if ( empty( $results ) ) { + return []; + } + + return array_values( (array) $results ); + } + + /** + * Parses the Params coming from Select2 Search box + * + * @since 4.6 + * + * @param array $params Params to overwrite the defaults + * + * @return object + */ + public function parse_params( $params ) { + $defaults = [ + 'search' => null, + 'page' => 0, + 'args' => [], + 'source' => null, + ]; + + $arguments = wp_parse_args( $params, $defaults ); + + // Return Object just for the sake of making it simpler to read + return (object) $arguments; + } + + /** + * The default Method that will route all the AJAX calls from our Dropdown AJAX requests + * It is like a Catch All on `wp_ajax_tribe_dropdown` and `wp_ajax_nopriv_tribe_dropdown` + * + * @since 4.6 + * + * @return void + */ + public function route() { + // Push all POST params into a Default set of data + $args = $this->parse_params( empty( $_POST ) ? [] : $_POST ); + + if ( empty( $args->source ) ) { + $this->error( esc_attr__( 'Missing data source for this dropdown', 'tribe-common' ) ); + } + + // Define a Filter to allow external calls to our Select2 Dropdowns. + $filter = sanitize_key( 'tribe_dropdown_' . $args->source ); + if ( has_filter( $filter ) ) { + $data = apply_filters( $filter, [], $args->search, $args->page, $args->args, $args->source ); + } else { + $data = call_user_func_array( [ $this, $args->source ], array_values( (array) $args ) ); + } + + // If we've got a empty dataset we return an error. + if ( empty( $data ) ) { + $this->error( esc_attr__( 'Empty data set for this dropdown', 'tribe-common' ) ); + } else { + $this->success( $data ); + } + } + + /** + * Prints a success message and ensures that we don't hit bugs on Select2 + * + * @since 4.6 + * + * @param array $data + * + * @return void + */ + private function success( $data ) { + // We need a Results item for Select2 Work + if ( ! isset( $data['results'] ) ) { + $data['results'] = []; + } + + wp_send_json_success( $data ); + } + + /** + * Prints an error message and ensures that we don't hit bugs on Select2 + * + * @since 4.6 + * + * @param string $message + * + * @return void + */ + private function error( $message ) { + $data = [ + 'message' => $message, + 'results' => [], + ]; + + wp_send_json_error( $data ); + } + + /** + * Avoid throwing fatals or notices on sources that are invalid + * + * @since 4.6 + * + * @param string $name + * @param mixed $arguments + * + * @return void + */ + public function __call( $name, $arguments ) { + $message = __( 'The "%s" source is invalid and cannot be reached on "%s" instance.', 'tribe-common' ); + + return $this->error( sprintf( $message, $name, __CLASS__ ) ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Ajax/Operations.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Ajax/Operations.php new file mode 100644 index 000000000..09b54ae99 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Ajax/Operations.php @@ -0,0 +1,22 @@ +register_assets(); + } + + /** + * Adds the page to the admin menu + */ + public function add_menu_page() { + if ( ! Tribe__Settings::instance()->should_setup_pages() ) { + return; + } + + $page_title = esc_html__( 'Event Add-Ons', 'tribe-common' ); + $menu_title = esc_html__( 'Event Add-Ons', 'tribe-common' ); + $capability = apply_filters( 'tribe_events_addon_page_capability', 'install_plugins' ); + + $where = Tribe__Settings::instance()->get_parent_slug(); + + $this->admin_page = add_submenu_page( + $where, + $page_title, + $menu_title, + $capability, + self::MENU_SLUG, + [ + $this, + 'do_menu_page', + ] + ); + } + + /** + * Adds a link to the shop app to the WP admin bar + */ + public function add_toolbar_item() { + + $capability = apply_filters( 'tribe_events_addon_page_capability', 'install_plugins' ); + + // prevent users who cannot install plugins from seeing addons link + if ( current_user_can( $capability ) ) { + global $wp_admin_bar; + + $wp_admin_bar->add_menu( [ + 'id' => 'tribe-events-app-shop', + 'title' => esc_html__( 'Event Add-Ons', 'tribe-common' ), + 'href' => Tribe__Settings::instance()->get_url( [ 'page' => self::MENU_SLUG ] ), + 'parent' => 'tribe-events-settings-group', + ] ); + } + } + + /** + * Registers the plugin assets + */ + protected function register_assets() { + tribe_assets( + Tribe__Main::instance(), + [ + [ 'tribe-app-shop-css', 'app-shop.css' ], + [ 'tribe-app-shop-js', 'app-shop.js', [ 'jquery' ] ], + ], + 'admin_enqueue_scripts', + [ + 'conditionals' => [ $this, 'is_current_page' ], + ] + ); + } + + /** + * Checks if the current page is the app shop + * + * @since 4.5.7 + * + * @return bool + */ + public function is_current_page() { + if ( ! Tribe__Settings::instance()->should_setup_pages() || ! did_action( 'admin_menu' ) ) { + return false; + } + + if ( is_null( $this->admin_page ) ) { + _doing_it_wrong( + __FUNCTION__, + 'Function was called before it is possible to accurately determine what the current page is.', + '4.5.6' + ); + return false; + } + + return Tribe__Admin__Helpers::instance()->is_screen( $this->admin_page ); + } + + /** + * Renders the Shop App page + */ + public function do_menu_page() { + $main = Tribe__Main::instance(); + $products = $this->get_all_products(); + $bundles = $this->get_bundles(); + $extensions = $this->get_extensions(); + $stellar_brands = $this->get_stellar_brands(); + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/app-shop.php'; + } + + /** + * Gets all products from the API + * + * @return array|WP_Error + */ + private function get_all_products() { + $all_products = tribe( 'plugins.api' )->get_products(); + + $products = [ + 'the-events-calendar' => (object) $all_products['the-events-calendar'], + 'events-calendar-pro' => (object) $all_products['events-calendar-pro'], + 'events-virtual' => (object) $all_products['events-virtual'], + 'event-aggregator' => (object) $all_products['event-aggregator'], + 'event-automator' => (object) $all_products['event-automator'], + 'event-tickets' => (object) $all_products['event-tickets'], + 'event-tickets-plus' => (object) $all_products['event-tickets-plus'], + 'promoter' => (object) $all_products['promoter'], + 'tribe-filterbar' => (object) $all_products['tribe-filterbar'], + 'events-community' => (object) $all_products['events-community'], + 'events-community-tickets' => (object) $all_products['events-community-tickets'], + 'tribe-eventbrite' => (object) $all_products['tribe-eventbrite'], + 'image-widget-plus' => (object) $all_products['image-widget-plus'], + ]; + + return $products; + } + + /** + * Gets product bundles + * + * @return array|WP_Error + */ + private function get_bundles() { + $bundles = [ + (object) [ + 'title' => __( 'Events Marketing Bundle', 'tribe-common' ), + 'logo' => 'images/logo/bundle-event-marketing.svg', + 'link' => 'https://evnt.is/1aj3', + 'discount' => __( 'Save over 20%', 'tribe-common' ), + 'description' => __( 'Ticket sales, attendee management, and email marketing for your events', 'tribe-common' ), + 'includes' => [ + 'events-calendar-pro', + 'event-tickets-plus', + 'promoter', + ], + ], + (object) [ + 'title' => __( 'Event Importer Bundle', 'tribe-common' ), + 'logo' => 'images/logo/bundle-event-importer.svg', + 'link' => 'https://evnt.is/1aj2', + 'discount' => __( 'Save over 25%', 'tribe-common' ), + 'description' => __( 'Fill your calendar with events from across the web, including Google Calendar, Meetup, and more.', 'tribe-common' ), + 'includes' => [ + 'events-calendar-pro', + 'tribe-filterbar', + 'event-aggregator' + ], + ], + (object) [ + 'title' => __( 'Virtual Events Marketing Bundle', 'tribe-common' ), + 'logo' => 'images/logo/bundle-virtual-events.svg', + 'link' => 'http://evnt.is/ve-bundle', + 'discount' => __( 'Save over 20%', 'tribe-common' ), + 'description' => __( 'Streamline your online events and increase revenue.', 'tribe-common' ), + 'includes' => [ + 'events-calendar-pro', + 'event-tickets-plus', + 'events-virtual', + 'promoter', + ], + 'features' => [ + __( 'Sell tickets and earn revenue for online events', 'tribe-common' ), + __( 'Zoom integration', 'tribe-common' ), + __( 'Automated emails optimized for virtual events', 'tribe-common' ), + __( 'Add recurring events', 'tribe-common' ), + ], + ], + (object) [ + 'title' => __( 'Community Manager Bundle', 'tribe-common' ), + 'logo' => 'images/logo/bundle-community-manager.svg', + 'link' => 'https://evnt.is/1aj4', + 'discount' => __( 'Save over 20%', 'tribe-common' ), /* code review: fix this */ + 'description' => __( 'Handle event submissions with ticket sales and everything you need to build a robust community.', 'tribe-common' ), + 'includes' => [ + 'event-tickets-plus', + 'events-community', + 'events-community-tickets', + 'tribe-filterbar', + ], + ], + (object) [ + 'title' => __( 'Ultimate Bundle', 'tribe-common' ), + 'logo' => 'images/logo/bundle-ultimate.svg', + 'link' => 'https://evnt.is/1aj5', + 'discount' => __( 'Save over 20%', 'tribe-common' ), /* code review: fix this */ + 'description' => __( 'All of our premium events management plugins at a deep discount.', 'tribe-common' ), + 'includes' => [ + 'events-calendar-pro', + 'event-tickets-plus', + //'events-virtual', // not yet added to the bundle + 'events-community', + 'events-community-tickets', + 'tribe-filterbar', + 'event-aggregator', + 'tribe-eventbrite', + //'promoter', // not yet added to the bundle + ], + ], + + ]; + + return $bundles; + } + + /** + * Gets product extensions + * + * @return array|WP_Error + */ + private function get_extensions() { + $extensions = [ + (object) [ + 'title' => __( 'Website URL CTA', 'tribe-common' ), + 'link' => 'https://evnt.is/1aj6', + 'image' => 'images/shop/extension-web-url-cta.jpg', + 'description' => __( 'Create a strong call-to-action for attendees to "Join Webinar" instead of only sharing a website address.', 'tribe-common' ), + ], + (object) [ + 'title' => __( 'Link Directly to Webinar', 'tribe-common' ), + 'link' => 'https://evnt.is/1aj7', + 'image' => 'images/shop/extension-link-to-webinar.jpg', + 'description' => __( 'When users click on the event title, they’ll be taken right to the source of your event, offering a direct route to join.', 'tribe-common' ), + ], + (object) [ + 'title' => __( 'Events Happening Now', 'tribe-common' ), + 'link' => 'https://evnt.is/1aj8', + 'image' => 'images/shop/extension-events-happening-now.jpg', + 'description' => __( 'Use this shortcode to display events that are currently in progress, like webinars and livestreams.', 'tribe-common' ), + ], + (object) [ + 'title' => __( 'Custom Venue Links', 'tribe-common' ), + 'link' => 'https://evnt.is/1aj9', + 'image' => 'images/shop/extension-custom-venue-links.jpg', + 'description' => __( 'Turn the venue name for your event into a clickable URL — a great way to link directly to a venue’s website or a virtual meeting.', 'tribe-common' ), + ], + (object) [ + 'title' => __( 'Adjust Label', 'tribe-common' ), + 'link' => 'https://evnt.is/1aja', + 'image' => 'images/shop/extension-change-label.jpg', + 'description' => __( 'Change "Events" to "Webinars," or "Venues" to "Livestream," or "Organizers" to "Hosts." Tailor your calendar for virtual events and meetings.', 'tribe-common' ), + ], + (object) [ + 'title' => __( 'Reach Attendees', 'tribe-common' ), + 'link' => 'https://evnt.is/1ajc', + 'image' => 'images/shop/extension-advanced-options.jpg', + 'description' => __( 'From registration to attendance history, view every step of the event lifecycle with this HubSpot integration.', 'tribe-common' ), + ], + ]; + + return $extensions; + } + + /** + * Gets Stellar brands + * + * @return array|WP_Error + */ + private function get_stellar_brands() { + $stellar_brands = [ + (object) [ + 'image' => 'images/shop/stellar-learndash-cta.jpg', + 'logo' => 'images/shop/stellar-learndash-logo.png', + 'title' => __( 'The online course platform created by e-learning experts.', 'tribe-common' ), + 'link' => 'https://evnt.is/learndash', + 'linktext' => __( 'Add Courses', 'tribe-common' ), + 'description' => __( 'Trusted to power learning programs for major universities, startups, entrepreneurs, and bloggers worldwide.', 'tribe-common' ), + ], + (object) [ + 'image' => 'images/shop/stellar-ithemes-cta.jpg', + 'logo' => 'images/shop/stellar-ithemes-logo.png', + 'title' => __( 'Foundational favorites: iThemes Security and Developer Toolkit.', 'tribe-common' ), + 'link' => 'https://evnt.is/ithemes', + 'linktext' => __( 'Add Security', 'tribe-common' ), + 'description' => __( 'iThemes Security, the WordPress security plugin that’s easy to use. Built with performance in mind.', 'tribe-common' ), + ], + (object) [ + 'image' => 'images/shop/stellar-rcp-cta.jpg', + 'logo' => 'images/shop/stellar-rcp-logo.png', + 'title' => __( 'Built with developers in mind.', 'tribe-common' ), + 'link' => 'https://evnt.is/rcp', + 'linktext' => __( 'Add Content Restriction', 'tribe-common' ), + 'description' => __( 'Restrict Content Pro is flexible, easy to extend, and chock full of action hooks and filters, making it easy to modify and tweak to your specific needs.', 'tribe-common' ), + ], + (object) [ + 'image' => 'images/shop/stellar-kadence-cta.jpg', + 'logo' => 'images/shop/stellar-kadence-logo.png', + 'title' => __( 'Build better WordPress websites with Kadence.', 'tribe-common' ), + 'link' => 'https://evnt.is/kadencewp', + 'linktext' => __( 'Add Starter Templates', 'tribe-common' ), + 'description' => __( 'Kadence lets you unlock your creativity in the WordPress Block Editor with expertly designed blocks, a robust theme, and a massive library of starter templates.', 'tribe-common' ), + ], + (object) [ + 'image' => 'images/shop/stellar-iconic-cta.jpg', + 'logo' => 'images/shop/stellar-iconic-logo.png', + 'title' => __( 'Sales-boosting WooCommerce plugins.', 'tribe-common' ), + 'link' => 'https://evnt.is/iconic', + 'linktext' => __( 'Add Commerce Tools', 'tribe-common' ), + 'description' => __( 'Easy-to-use WooCommerce plugins work perfectly together, with any theme. Create a fast and profitable eCommerce store without any technical knowledge. + ', 'tribe-common' ), + ], + (object) [ + 'image' => 'images/shop/stellar-give-cta.jpg', + 'logo' => 'images/shop/stellar-give-logo.png', + 'title' => __( 'The best WordPress donation plugin.', 'tribe-common' ), + 'link' => 'https://evnt.is/givewp', + 'linktext' => __( 'Add Donations', 'tribe-common' ), + 'description' => __( 'GiveWP makes it easy to raise money online with donation forms, donor databases, and fundraising reporting.', 'tribe-common' ), + ], + ]; + + return $stellar_brands; + } + + /** + * Static Singleton Factory Method + * + * @return Tribe__App_Shop + */ + public static function instance() { + if ( ! isset( self::$instance ) ) { + $className = __CLASS__; + self::$instance = new $className; + } + + return self::$instance; + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Asset/Data.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Asset/Data.php new file mode 100644 index 000000000..2dd995734 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Asset/Data.php @@ -0,0 +1,67 @@ +objects[ $object_name ] = $data; + } + + /** + * Outputs the + * @internal + */ + public function render_json() { + if ( empty( $this->objects ) ) { + return; + } + + echo ''; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Asset/Factory.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Asset/Factory.php new file mode 100644 index 000000000..fee20c577 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Asset/Factory.php @@ -0,0 +1,56 @@ +get_asset_class_name( $name ); + + // `Jquery_Resize` to `Tribe__Asset__Jquery_Resize` + $full_class_name = $this->get_asset_full_class_name( $class_name ); + + return class_exists( $full_class_name ) ? new $full_class_name() : false; + } + + protected function get_asset_class_name( $name ) { + // `jquery-resize` to `Jquery_Resize` + $class_name = str_replace( ' ', '_', ucwords( str_replace( '-', ' ', $name ) ) ); + + return $class_name; + } + + /** + * @param string $class_name + * + * @return string + */ + private function get_asset_full_class_name( $class_name ) { + // `Jquery_Resize` to `Tribe__Asset__Jquery_Resize` + $full_class_name = $this->get_asset_class_name_prefix() . $class_name; + + return $full_class_name; + } + + /** + * @return string + */ + protected function get_asset_class_name_prefix() { + return 'Tribe__Asset__'; + } + + /** + * @return Tribe__Asset__Factory + */ + public static function instance() { + static $instance; + + if ( ! $instance ) { + $instance = new self; + } + + return $instance; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Assets.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Assets.php new file mode 100644 index 000000000..a9cb962b8 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Assets.php @@ -0,0 +1,949 @@ +get( $handle ) ) { + return (string) $tag; + } + + // Bail when not dealing with JS assets. + if ( 'js' !== $asset->type ) { + return (string) $tag; + } + + // Only go forward if there is any print before or after. + if ( empty( $asset->print_before ) && empty( $asset->print_after ) ) { + return (string) $tag; + } + + $before = ''; + if ( ! empty( $asset->print_before ) ) { + $before = (string) ( is_callable( $asset->print_before ) ? call_user_func( $asset->print_before, $asset ) : $asset->print_before ); + } + + $after = ''; + if ( ! empty( $asset->print_after ) ) { + $after = (string) ( is_callable( $asset->print_after ) ? call_user_func( $asset->print_after, $asset ) : $asset->print_after ); + } + + $tag = $before . (string) $tag . $after; + + return $tag; + } + + /** + * Handles adding localization data, when attached to `script_loader_tag` which allows dependencies to load in their + * localization data as well. + * + * @since 4.13.0 + * + * @param string $tag Tag we are filtering. + * @param string $handle Which is the ID/Handle of the tag we are about to print. + * + * @return string Script tag with the localization variable HTML attached to it. + */ + public function filter_add_localization_data( $tag, $handle ) { + // Only filter for own filters. + if ( ! $asset = $this->get( $handle ) ) { + return $tag; + } + + // Bail when not dealing with JS assets. + if ( 'js' !== $asset->type ) { + return $tag; + } + + // Only localize on JS and if we have data. + if ( empty( $asset->localize ) ) { + return $tag; + } + + global $wp_scripts; + + // Makes sure we have an Array of Localize data. + if ( is_object( $asset->localize ) ) { + $localization = [ $asset->localize ]; + } else { + $localization = (array) $asset->localize; + } + + /** + * Check to ensure we haven't already localized it before. + * + * @since 4.5.8 + */ + foreach ( $localization as $localize ) { + if ( in_array( $localize->name, $this->localized ) ) { + continue; + } + + // If we have a Callable as the Localize data we execute it. + if ( is_callable( $localize->data ) ) { + $localize->data = call_user_func( $localize->data, $asset ); + } + + wp_localize_script( $asset->slug, $localize->name, $localize->data ); + + $this->localized[] = $localize->name; + } + + // Fetch the HTML for all the localized data. + ob_start(); + $wp_scripts->print_extra_script( $asset->slug, true ); + $localization_html = ob_get_clean(); + + // After printing it remove data;| + $wp_scripts->add_data( $asset->slug, 'data', '' ); + + return $localization_html . $tag; + } + + /** + * Filters the Script tags to attach Async and/or Defer based on the rules we set in our Asset class. + * + * @since 4.13.0 + * + * @param string $tag Tag we are filtering. + * @param string $handle Which is the ID/Handle of the tag we are about to print. + * + * @return string Script tag with the defer and/or async attached. + */ + public function filter_tag_async_defer( $tag, $handle ) { + // Only filter for our own filters. + if ( ! $asset = $this->get( $handle ) ) { + return $tag; + } + + // Bail when not dealing with JS assets. + if ( 'js' !== $asset->type ) { + return $tag; + } + + // When async and defer are false we bail with the tag. + if ( ! $asset->defer && ! $asset->async ) { + return $tag; + } + + $tag_has_async = false !== strpos( $tag, ' async ' ); + $tag_has_defer = false !== strpos( $tag, ' defer ' ); + $replacement = '\n" + . $tag + . "\n"; + } + + return $tag; + } + + /** + * After select2 is loaded to the FE we add one scripts after to prevent select2 from breaking. + * + * @since 4.13.2 + * @since 4.14.18 Ensure we don't run this in the admin. + * + * @param string $tag The \n"; + + return $tag; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Autoloader.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Autoloader.php new file mode 100644 index 000000000..90a01e027 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Autoloader.php @@ -0,0 +1,297 @@ +register_prefix( 'Tribe__Admin__', $this_dir . '/src/Tribe/admin' ); + * $autoloader->register_prefix( 'Tribe__Admin__', $this_dir . '/src/Tribe/another-dir' ); + * $autoloader->register_prefix( 'Tribe__Utils__', $this_dir . '/src/Tribe/another-dir' ); + * + * // register a direct class to path + * $autoloader->register_class( 'Tribe__Some_Class', $this_dir . '/some/path/to/Some_Class.php' ); + * + * // register a fallback dir to be searched for the class before giving up + * $autoloader->add_fallback_dir( $this_dir . '/all-the-classes' ); + * + * // calls `spl_autoload_register` + * $autoloader->register_autoloader(); + * + * // class will be searched in the path + * // `/var/www/site/wp-content/plugins/the-events-calendar/src/Tribe/admin/Some_Class.php' + * // and + * // `/var/www/site/wp-content/plugins/the-events-calendar/src/Tribe/another-dir/Some_Class.php' + * $i = new Tribe__Admin__Some_Class(); + * + * // class will be searched in the path + * // `/var/www/site/wp-content/plugins/the-events-calendar/utils/some-dir/Some_Util.php' + * $i = new Tribe__Utils__Some_Util(); + * + * // class will be searched in the path + * // `/var/www/site/wp-content/plugins/the-events-calendar/deprecated/Tribe_DeprecatedClass.php' + * $i = new Tribe_DeprecatedClass(); + */ + class Tribe__Autoloader { + + /** + * @var Tribe__Autoloader + */ + protected static $instance; + + /** + * An arrays of arrays each containing absolute paths. + * + * Paths are stored trimming any trailing `/`. + * E.g. `/var/www/tribe-pro/wp-content/plugins/the-events-calendar/src/Tribe` + * + * @var string[][] + */ + protected $prefixes; + + /** + * An array of registered prefixes with unique slugs. + * + * @var string[] + */ + protected $prefix_slugs; + + /** + * The string acting as a directory separator in a class name. + * + * E.g.: given `__` as `$dir_separator` then `Admin__Metabox__Some_Metabox` + * will map to `/Admin/Metabox/SomeMetabox.php`. + * + * @var string + */ + protected $dir_separator = '__'; + + /** @var string[] */ + protected $fallback_dirs = []; + + /** + * @var array + */ + protected $class_paths = []; + + /** + * Returns the singleton instance of the class. + * + * @return Tribe__Autoloader + */ + public static function instance() { + if ( ! self::$instance instanceof Tribe__Autoloader ) { + self::$instance = new self(); + } + + return self::$instance; + } + + /** + * Registers prefixes and root dirs using an array. + * + * Same as calling `register_prefix` on each one. + * + * @param array $prefixes_to_root_dirs + */ + public function register_prefixes( array $prefixes_to_root_dirs ) { + foreach ( $prefixes_to_root_dirs as $prefix => $root_dir ) { + $this->register_prefix( $prefix, $root_dir ); + } + } + + /** + * Associates a class prefix to an absolute path. + * + * @param string $prefix A class prefix, e.g. `Tribe__Admin__` + * @param string $root_dir The absolute path to the dir containing + * the prefixed classes. + * @param string $slug An optional unique slug to associate to the prefix. + */ + public function register_prefix( $prefix, $root_dir, $slug = '' ) { + $root_dir = $this->normalize_root_dir( $root_dir ); + + // Determine if we need to normalize the $prefix. + $is_namespaced = false !== strpos( $prefix, '\\' ); + + if ( $is_namespaced ) { + // If the prefix is a namespace, then normalize it. + $prefix = trim( $prefix, '\\' ) . '\\'; + } + + if ( ! isset( $this->prefixes[ $prefix ] ) ) { + $this->prefixes[ $prefix ] = []; + } + + $this->prefixes[ $prefix ][] = $root_dir; + + // Let's make sure we're not adding duplicates. + $this->prefixes[ $prefix ] = array_unique( $this->prefixes[ $prefix ] ); + + if ( $slug ) { + $this->prefix_slugs[ $slug ] = $prefix; + } + } + + /** + * Triggers the registration of the autoload method in the SPL + * autoload register. + */ + public function register_autoloader() { + spl_autoload_register( [ $this, 'autoload' ] ); + } + + /** + * Includes the file defining a class. + * + * This is the function that's registered as an autoloader. + * + * @param string $class + */ + public function autoload( $class ) { + $include_path = $this->get_class_path( $class ); + if ( ! empty( $include_path ) ) { + include_once( $include_path ); + } + } + + private function normalize_root_dir( $root_dir ) { + return rtrim( $root_dir, '/' ); + } + + protected function get_prefixed_path( $class ) { + foreach ( $this->prefixes as $prefix => $dirs ) { + $is_namespaced = false !== strpos( $prefix, '\\' ); + + if ( strpos( $class, $prefix ) !== 0 ) { + continue; + } + + $class_name = str_replace( $prefix, '', $class ); + + if ( ! $is_namespaced ) { + $class_path_frag = implode( '/', explode( $this->dir_separator, $class_name ) ) . '.php'; + } else { + $class_path_frag = implode( '/', explode( '\\', $class_name ) ) . '.php'; + } + + foreach ( $dirs as $dir ) { + $path = $dir . '/' . $class_path_frag; + if ( ! file_exists( $path ) ) { + // check if the file exists in lowercase + $class_path_frag = strtolower( $class_path_frag ); + $path = $dir . '/' . $class_path_frag; + } + if ( ! file_exists( $path ) ) { + continue; + } + + return $path; + } + } + return false; + } + + protected function get_fallback_path( $class ) { + foreach ( $this->fallback_dirs as $fallback_dir ) { + $include_path = $fallback_dir . '/' . $class . '.php'; + if ( ! file_exists( $include_path ) ) { + // check if the file exists in lowercase + $class = strtolower( $class ); + $include_path = $fallback_dir . '/' . $class . '.php'; + } + if ( ! file_exists( $include_path ) ) { + continue; + } + + return $include_path; + } + } + + /** + * Gets the absolute path to a class file. + * + * @param string $class The class name + * + * @return string Either the absolute path to the class file or an + * empty string if the file was not found. + */ + public function get_class_path( $class ) { + $prefixed_path = $this->get_prefixed_path( $class ); + if ( $prefixed_path ) { + return $prefixed_path; + } + + $class_path = ! empty( $this->class_paths[ $class ] ) ? $this->class_paths[ $class ] :false; + if ( $class_path ) { + return $class_path; + } + + $fallback_path = $this->get_fallback_path( $class ); + + return $fallback_path ? $fallback_path : ''; + } + + /** + * Get the registered prefix by slug + * + * @param string $slug Unique slug for registered prefix. + * + * @return false|string Either the prefix registered to the + * unique slug or false if not found. + */ + public function get_prefix_by_slug( $slug ) { + $prefix = false; + + if ( isset( $this->prefix_slugs[ $slug ] ) ) { + $prefix = $this->prefix_slugs[ $slug ]; + } + + return $prefix; + } + + /** + * Adds a folder to search for classes that were not found among + * the prefixed ones. + * + * This is the method to use to register a directory of deprecated + * classes. + * + * @param string $dir An absolute path dto a dir. + */ + public function add_fallback_dir( $dir ) { + if ( in_array( $dir, $this->fallback_dirs ) ) { + return; + } + $this->fallback_dirs[] = $this->normalize_root_dir( $dir ); + } + + /** + * @return string + */ + public function get_dir_separator() { + return $this->dir_separator; + } + + /** + * @param string $dir_separator + */ + public function set_dir_separator( $dir_separator ) { + $this->dir_separator = $dir_separator; + } + + public function register_class( $class, $path ) { + $this->class_paths[ $class ] = $path; + } + } + } diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Cache.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Cache.php new file mode 100644 index 000000000..3dbf9e83f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Cache.php @@ -0,0 +1,646 @@ +get_id( $id, $expiration_trigger ); + + /** + * Filters the expiration for cache objects to provide the ability + * to make non-persistent objects be treated as persistent. + * + * @since 4.8 + * + * @param int $expiration Cache expiration time. + * @param string $id Cache ID. + * @param mixed $value Cache value. + * @param string|array $expiration_trigger Action that triggers automatic expiration. + * @param string $key Unique cache key based on Cache ID and expiration trigger last run time. + */ + $expiration = apply_filters( 'tribe_cache_expiration', $expiration, $id, $value, $expiration_trigger, $key ); + + if ( self::NON_PERSISTENT === $expiration ) { + $group = 'tribe-events-non-persistent'; + $expiration = 1; + + // Add so we know what group to use in the future. + $this->non_persistent_keys[ $id ] = $id; + } else { + $group = 'tribe-events'; + } + + return wp_cache_set( $key, $value, $group, $expiration ); + } + + /** + * @param $id + * @param $value + * @param int $expiration + * @param string|array $expiration_trigger + * + * @return bool + */ + public function set_transient( $id, $value, $expiration = 0, $expiration_trigger = '' ) { + if ( $this->data_size_over_packet_size( $value ) ) { + return false; + } + + return set_transient( $this->get_id( $id, $expiration_trigger ), $value, $expiration ); + } + + /** + * Get cached data. Optionally set data if not previously set. + * + * Note: When a default value or callback is specified, this value gets set in the cache. + * + * @param string $id The key for the cached value. + * @param string|array $expiration_trigger Optional. Hook to trigger cache invalidation. + * @param mixed $default Optional. A default value or callback that returns a default value. + * @param int $expiration Optional. When the default value expires, if it gets set. + * @param mixed $args Optional. Args passed to callback. + * + * @return mixed + */ + public function get( $id, $expiration_trigger = '', $default = false, $expiration = 0, $args = [] ) { + $group = isset( $this->non_persistent_keys[ $id ] ) ? 'tribe-events-non-persistent' : 'tribe-events'; + $value = wp_cache_get( $this->get_id( $id, $expiration_trigger ), $group ); + + // Value found. + if ( false !== $value ) { + return $value; + } + + if ( is_callable( $default ) ) { + // A callback has been specified. + $value = $default( ...$args ); + } else { + // Default is a value. + $value = $default; + } + + // No need to set a cache value to false since non-existent values return false. + if ( false !== $value ) { + $this->set( $id, $value, $expiration, $expiration_trigger ); + } + + return $value; + } + + /** + * @param string $id + * @param string|array $expiration_trigger + * + * @return mixed + */ + public function get_transient( $id, $expiration_trigger = '' ) { + return get_transient( $this->get_id( $id, $expiration_trigger ) ); + } + + /** + * @param string $id + * @param string|array $expiration_trigger + * + * @return bool + */ + public function delete( $id, $expiration_trigger = '' ) { + $group = isset( $this->non_persistent_keys[ $id ] ) ? 'tribe-events-non-persistent' : 'tribe-events'; + + // Delete from non-persistent keys list. + if ( 'tribe-events-non-persistent' === $group ) { + unset( $this->non_persistent_keys[ $id ] ); + } + + return wp_cache_delete( $this->get_id( $id, $expiration_trigger ), $group ); + } + + /** + * @param string $id + * @param string|array $expiration_trigger + * + * @return bool + */ + public function delete_transient( $id, $expiration_trigger = '' ) { + return delete_transient( $this->get_id( $id, $expiration_trigger ) ); + } + + /** + * Purge all expired tribe_ transients. + * + * This uses a modification of the the query from https://core.trac.wordpress.org/ticket/20316 + * + * @since 4.11.0 + * + * @return void Just execute the database SQL no return required. + */ + public function delete_expired_transients() { + if ( tribe_get_var( 'has_deleted_expired_transients', false ) ) { + return; + } + + global $wpdb; + + $time = time(); + + $sql = " + DELETE + a, + b + FROM + {$wpdb->options} a + INNER JOIN {$wpdb->options} b + ON b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) ) + AND b.option_value < {$time} + WHERE + a.option_name LIKE '\_transient\_tribe\_%' + AND a.option_name NOT LIKE '\_transient\_timeout\_tribe\_%' + "; + + /** + * Allow third party filtering of the SQL used for deleting expired transients. + * + * @since 4.11.5 + * + * @param string $sql The SQL we execute to delete all the expired transients. + * @param int $time Time we are using to determine what is expired. + */ + $sql = apply_filters( 'tribe_cache_delete_expired_transients_sql', $sql, $time ); + + if ( empty( $sql ) ) { + return; + } + + $wpdb->query( $sql ); + + // Set the variable to prevent this call from running twice. + tribe_set_var( 'has_deleted_expired_transients', true ); + } + + /** + * Flag if we should delete + * + * @since 4.11.5 + * + * @param boolean $value If we should delete transients or not on shutdown. + * + * @return void No return for setting the flag. + */ + public function flag_required_delete_transients( $value = true ) { + tribe_set_var( 'should_delete_expired_transients', $value ); + } + + /** + * Runs on hook `shutdown` and will delete transients on the end of the request. + * + * @since 4.11.5 + * + * @return void No return for action hook method. + */ + public function maybe_delete_expired_transients() { + if ( ! tribe_get_var( 'should_delete_expired_transients', false ) ) { + return; + } + + $this->delete_expired_transients(); + } + + /** + * @param string $key + * @param string|array $expiration_trigger + * + * @return string + */ + public function get_id( $key, $expiration_trigger = '' ) { + if ( is_array( $expiration_trigger ) ) { + $triggers = $expiration_trigger; + } elseif ( 'tribe-events-non-persistent' !== $expiration_trigger && 'tribe-events' !== $expiration_trigger ) { + $triggers = array_filter( explode( '|', $expiration_trigger ) ); + } + + $last = 0; + foreach ( $triggers as $trigger ) { + // Bail on empty trigger otherwise it creates a `tribe_last_` opt on the DB. + if ( empty( $trigger ) ) { + continue; + } + + $occurrence = $this->get_last_occurrence( $trigger ); + + if ( $occurrence > $last ) { + $last = $occurrence; + } + } + + $last = empty( $last ) ? '' : $last; + $id = $key . $last; + if ( strlen( $id ) > 80 ) { + $id = 'tribe_' . md5( $id ); + } + + return $id; + } + + /** + * Returns the time of an action last occurrence. + * + * @since 4.9.14 Changed the return value type from `int` to `float`. + * @since 5.0.17 No longer memoizes the first triggered timestamp. + * + * @param string $action The action to return the time for. + * + * @return float The time (microtime) an action last occurred, or the current microtime if it never occurred. + */ + public function get_last_occurrence( $action ) { + $last_action = (float) get_option( 'tribe_last_' . $action, null ); + + if ( ! $last_action ) { + $last_action = microtime( true ); + $this->set_last_occurrence( $action, $last_action ); + } + + return $last_action; + } + + /** + * Sets the time (microtime) for an action last occurrence. + * + * @since 4.9.14 Changed the type of the time stored from an `int` to a `float`. + * + * @param string $action The action to record the last occurrence of. + * @param int|float $timestamp The timestamp to assign to the action last occurrence or the current time (microtime). + * + * @return boolean IF we were able to set the last occurrence or not. + */ + public function set_last_occurrence( $action, $timestamp = 0 ) { + if ( empty( $timestamp ) ) { + $timestamp = microtime( true ); + } + $updated = update_option( 'tribe_last_' . $action, (float) $timestamp ); + + // For performance reasons we will only expire cache once per request, when needed. + if ( $updated ) { + $this->flag_required_delete_transients( true ); + } + + return $updated; + } + + /** + * Builds a key from an array of components and an optional prefix. + * + * @param mixed $components Either a single component of the key or an array of key components. + * @param string $prefix + * @param bool $sort Whether component arrays should be sorted or not to generate the key; defaults to + * `true`. + * + * @return string The resulting key. + */ + public function make_key( $components, $prefix = '', $sort = true ) { + $key = ''; + $components = is_array( $components ) ? $components : [ $components ]; + foreach ( $components as $component ) { + if ( $sort && is_array( $component ) ) { + $is_associative = count( array_filter( array_keys( $component ), 'is_numeric' ) ) < count( array_keys( $component ) ); + if ( $is_associative ) { + ksort( $component ); + } else { + sort( $component ); + } + } + $key .= maybe_serialize( $component ); + } + + return $this->get_id( $prefix . md5( $key ) ); + } + + /** + * Whether a offset exists. + * + * @since 4.11.0 + * @since 5.0.13 Will check against cache expiration. Previously would give false positive + * if expiration had passed but was cached recently. Will now consider null not set. + * + * @param mixed $offset An offset to check for. + * + * @return boolean Whether the offset exists in the cache. + *@link http://php.net/manual/en/arrayaccess.offsetexists.php + * + */ + #[\ReturnTypeWillChange] + public function offsetExists( $offset ): bool { + $value = $this->get( $offset ); + + return $value !== false && $value !== null; + } + + /** + * Offset to retrieve. + * + * @link http://php.net/manual/en/arrayaccess.offsetget.php + * + * @since 4.11.0 + * + * @param mixed $offset The offset to retrieve. + * + * @return mixed Can return all value types. + */ + #[\ReturnTypeWillChange] + public function offsetGet( $offset ) { + return $this->get( $offset ); + } + + /** + * Offset to set. + * + * @since 4.11.0 + * + * @link http://php.net/manual/en/arrayaccess.offsetset.php + * + * @param mixed $offset The offset to assign the value to. + * @param mixed $value The value to set. + * + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetSet( $offset, $value ): void { + $this->set( $offset, $value, self::NON_PERSISTENT ); + } + + /** + * Offset to unset. + * + * @since 4.11.0 + * + * @link http://php.net/manual/en/arrayaccess.offsetunset.php + * + * @param mixed $offset The offset to unset. + * + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetUnset( $offset ): void { + $this->delete( $offset ); + } + + /** + * Removes a group of the cache, for now only `non_persistent` is supported. + * + * @since 4.14.13 + * + * @return bool + */ + public function reset( $group = 'non_persistent' ) { + if ( 'non_persistent' !== $group ) { + return false; + } + $this->non_persistent_keys = []; + return true; + } + + /** + * Warms up the caches for a collection of posts. + * + * @since 4.10.2 + * + * @param array|int $post_ids A post ID, or a collection of post IDs. + * @param bool $update_post_meta_cache Whether to warm-up the post meta cache for the posts or not. + */ + public function warmup_post_caches( $post_ids, $update_post_meta_cache = false ) { + if ( empty( $post_ids ) ) { + return; + } + + $post_ids = (array) $post_ids; + + global $wpdb; + + $already_cached_ids = []; + foreach ( $post_ids as $post_id ) { + if ( wp_cache_get( $post_id, 'posts' ) instanceof \WP_Post ) { + $already_cached_ids[] = $post_id; + } + } + + $required = array_diff( $post_ids, $already_cached_ids ); + + if ( empty( $required ) ) { + return; + } + + /** @var Tribe__Feature_Detection $feature_detection */ + $feature_detection = tribe( 'feature-detection' ); + $limit = $feature_detection->mysql_limit_for_example( 'post_result' ); + + /** + * Filters the LIMIT that should be used to warm-up post caches and postmeta caches (if the + * `$update_post_meta_cache` parameter is `true`). + * + * Lower this value on less powerful hosts. Return `0` to disable the warm-up completely, and `-1` to remove the + * limit (not recommended). + * + * @since 4.10.2 + * + * @param int $limit The number of posts whose caches will be warmed up, per query. + */ + $limit = (int) apply_filters( 'tribe_cache_warmup_post_cache_limit', min( $limit, count( $post_ids ) ) ); + + if ( 0 === $limit ) { + // Warmup disabled. + return; + } + + $buffer = $post_ids; + $page = 0; + + do { + $limit_clause = $limit < 0 ? sprintf( 'LIMIT %d,%d', $limit * $page, $limit ) : ''; + $page++; + $these_ids = array_splice( $buffer, 0, $limit ); + $interval = implode( ',', array_map( 'absint', $these_ids ) ); + $posts_query = "SELECT * FROM {$wpdb->posts} WHERE ID IN ({$interval}) {$limit_clause}"; + $post_objects = $wpdb->get_results( $posts_query ); + if ( is_array( $post_objects ) && ! empty( $post_objects ) ) { + foreach ( $post_objects as $post_object ) { + $post = new \WP_Post( $post_object ); + wp_cache_set( $post_object->ID, $post, 'posts' ); + } + + if ( $update_post_meta_cache ) { + update_meta_cache( 'post', $these_ids ); + } + } + } while ( ! empty( $post_objects ) && is_array( $post_objects ) && count( $post_objects ) < count( $post_ids ) ); + } + + /** + * If NOT using an external object caching system, then check if the size, in bytes, of the data + * to write to the database would fit into the `max_allowed_packet` setting or not. + * + * @since 4.12.14 + * + * @param string|array|object $value The value to check. + * + * @return bool Whether the data, in its serialized form, would fit into the current database `max_allowed_packet` + * setting or not. + */ + public function data_size_over_packet_size( $value ) { + if ( wp_using_ext_object_cache() ) { + // We cannot know and that is a concern of the external caching system. + return false; + } + + try { + $serialized_value = maybe_serialize( $value ); + $size = strlen( $serialized_value ); + } catch ( Exception $e ) { + // The underlying function would run into the same issue, bail and do not set the transient. + return true; + } + + /** @var Tribe__Feature_Detection $feature_detection */ + $feature_detection = tribe( 'feature-detection' ); + + // 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. + return $size > ( $feature_detection->get_mysql_max_packet_size() * .9 ); + } + + /** + * Returns a transient that might have been stored, due ot its size, in chunks. + * + * @since 4.13.3 + * + * @param string $id The name of the transients to return. + * @param string|array $expiration_trigger The transient expiration trigger(s). + * + * @return false|mixed Either the transient value, joined back into one, or `false` to indicate + * the transient was not found or was malformed. + */ + public function get_chunkable_transient( $id, $expiration_trigger = '' ) { + $transient = $this->get_id( $id, $expiration_trigger ); + + if ( wp_using_ext_object_cache() ) { + return get_transient( $transient ); + } + + $chunks = []; + $i = 0; + do { + $chunk_transient = $transient . '_' . $i++; + $chunk = get_transient( $chunk_transient ); + $chunks[ $chunk_transient ] = (string) $chunk; + } while ( ! empty( $chunk ) ); + + // Remove any piece of data that was added but is not relevant. + $chunks = array_filter( $chunks ); + + if ( empty( $chunks ) ) { + return false; + } + + try { + $data = implode( '', $chunks ); + $is_serialized = preg_match( '/^[aO]:\\d+:/', $data ); + $unserialized = maybe_unserialize( implode( '', $chunks ) ); + + if ( is_string( $unserialized ) && $unserialized === $data && $is_serialized ) { + // Something was messed up. + return false; + } + + return $unserialized; + } catch ( Exception $e ) { + return false; + } + } + + /** + * Sets a transient in the database with the knowledge that, if too large to be stored in one + * DB row, it will be chunked. + * + * The method will redirect to the `set_transient` function if the site is using object caching. + * + * + * @since 4.13.3 + * + * @param string $id The transient ID. + * @param mixed $value The value to store, that could be chunked. + * @param int $expiration The transient expiration, in seconds. + * @param string|array $expiration_trigger The transient expiration trigger(s). + * + * @return bool Whether the transient, or the transient chunks, have been stored correctly or not. + */ + public function set_chunkable_transient( $id, $value, $expiration = 0, $expiration_trigger = '' ) { + $transient = $this->get_id( $id, $expiration_trigger ); + + if ( wp_using_ext_object_cache() ) { + return $this->set_transient( $transient, $value, $expiration ); + } + + $inserted = []; + $serialized_value = maybe_serialize( $value ); + $chunk_size = tribe( 'feature-detection' )->get_mysql_max_packet_size() * 0.9; + $chunks = str_split( $serialized_value, $chunk_size ); + foreach ( $chunks as $i => $chunk ) { + $chunk_transient = $transient . '_' . $i; + + $set = set_transient( $chunk_transient, $chunk, $expiration ); + + if ( ! $set ) { + foreach ( $inserted as $transient_to_delete ) { + delete_transient( $transient_to_delete ); + } + + return false; + } + + $inserted[] = $chunk_transient; + } + + return true; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Cache_Listener.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Cache_Listener.php new file mode 100644 index 000000000..bc428398a --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Cache_Listener.php @@ -0,0 +1,215 @@ +cache = new Tribe__Cache(); + } + + /** + * Run the init functionality (like add_hooks). + * + * @return void + */ + public function init() { + $this->add_hooks(); + } + + /** + * Add the hooks necessary. + * + * @return void + */ + private function add_hooks() { + add_action( 'save_post', [ $this, 'save_post' ], 0, 2 ); + add_action( 'updated_option', [ $this, 'update_last_updated_option' ], 10, 3 ); + add_action( 'updated_option', [ $this, 'update_last_save_post' ], 10, 3 ); + add_action( 'generate_rewrite_rules', [ $this, 'generate_rewrite_rules' ] ); + add_action( 'clean_post_cache', [ $this, 'save_post' ], 0, 2 ); + } + + /** + * Run the caching functionality that is executed on save post. + * + * @param int $post_id The post_id. + * @param WP_Post $post The current post object being saved.w + */ + public function save_post( $post_id, $post ) { + if ( in_array( $post->post_type, Tribe__Main::get_post_types() ) ) { + $this->cache->set_last_occurrence( self::TRIGGER_SAVE_POST ); + } + } + + /** + * Run the caching functionality that is executed on saving tribe calendar options. + * + * @see 'updated_option' + * + * @param string $option_name Name of the updated option. + * @param mixed $old_value The old option value. + * @param mixed $value The new option value. + */ + public function update_last_save_post( $option_name, $old_value, $value ) { + $triggers = [ + 'tribe_events_calendar_options' => true, + 'permalink_structure' => true, + 'rewrite_rules' => true, + 'start_of_week' => true, + ]; + + $triggers = $this->filter_action_last_occurrence_triggers( $triggers, static::TRIGGER_SAVE_POST, func_get_args() ); + + if ( ! empty( $triggers[ $option_name ] ) ) { + $this->cache->set_last_occurrence( self::TRIGGER_SAVE_POST ); + } + } + + /** + * Run the caching functionality that is executed on saving tribe calendar options. + * + * @see 'updated_option' + * + * @since 4.11.0 + * + * @param string $option_name Name of the updated option. + * @param mixed $old_value The old option value. + * @param mixed $value The new option value. + */ + public function update_last_updated_option( $option_name, $old_value, $value ) { + $triggers = [ + 'active_plugins' => true, + 'tribe_events_calendar_options' => true, + 'permalink_structure' => true, + 'rewrite_rules' => true, + 'start_of_week' => true, + 'sidebars_widgets' => true, + 'stylesheet' => true, + 'template' => true, + 'WPLANG' => true, + ]; + + $triggers = $this->filter_action_last_occurrence_triggers( $triggers, static::TRIGGER_UPDATED_OPTION, func_get_args() ); + + if ( ! empty( $triggers[ $option_name ] ) ) { + $this->cache->set_last_occurrence( self::TRIGGER_UPDATED_OPTION ); + } + } + + /** + * Filtering for last occurrence triggers. + * + * @since 4.13.2 + * + * @param array $triggers Which options will trigger this given action last occurrence. + * @param string $action Which action this trigger will set. + * @param array $args Which arguments from the updated option method. + * + * @return array + */ + public function filter_action_last_occurrence_triggers( array $triggers = [], $action = '', array $args = [] ) { + + /** + * Filters the contents of which options will trigger expiring a given actions cache. + * + * @since 4.13.2 + * + * @param array $triggers Which options will trigger this given action last occurrence. + * @param string $action Which action this trigger will set. + * @param array $args Which arguments from the updated option method. + */ + $triggers = apply_filters( 'tribe_cache_last_occurrence_option_triggers', $triggers, $action, $args ); + + /** + * Filters the contents of which options will trigger expiring a given actions cache. + * Allows filtering a specific action. + * + * @since 4.13.2 + * + * @param array $triggers Which options will trigger this given action last occurrence. + * @param string $action Which action this trigger will set. + * @param array $args Which arguments from the updated option method. + */ + return (array) apply_filters( "tribe_cache_last_occurrence_option_triggers:{$action}", $triggers, $action, $args ); + } + + /** + * For any hook that doesn't need any additional filtering + * + * @param $method + * @param $args + */ + public function __call( $method, $args ) { + $this->cache->set_last_occurrence( $method ); + } + + /** + * Instance method of the cache listener. + * + * @return Tribe__Cache_Listener + */ + public static function instance() { + if ( empty( self::$instance ) ) { + self::$instance = self::create_listener(); + } + + return self::$instance; + } + + /** + * Create a cache listener. + * + * @return Tribe__Cache_Listener + */ + private static function create_listener() { + $listener = new self(); + $listener->init(); + + return $listener; + } + + /** + * Run the caching functionality that is executed when rewrite rules are generated. + * + * @since 4.9.11 + */ + public function generate_rewrite_rules() { + $this->cache->set_last_occurrence( self::TRIGGER_GENERATE_REWRITE_RULES ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Changelog_Reader.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Changelog_Reader.php new file mode 100644 index 000000000..43041367e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Changelog_Reader.php @@ -0,0 +1,53 @@ +version_count = (int) $version_count; + $this->readme_file = empty( $readme_file ) ? $this->default_readme_file() : $readme_file; + } + + protected function default_readme_file() { + return dirname( Tribe__Main::instance()->plugin_path ) . '/readme.txt'; + } + + public function get_changelog() { + $contents = $this->extract_changelog_section(); + $lines = explode( "\n", $contents ); + + $sections = []; + $current_section = ''; + foreach ( $lines as $line ) { + $line = trim( $line ); + if ( substr( $line, 0, 1 ) == '=' ) { + if ( count( $sections ) >= $this->version_count ) { + break; + } + $header = trim( $line, '= ' ); + $current_section = esc_html( $header ); + $sections[ $current_section ] = []; + } elseif ( strlen( $line ) > 0 ) { + $message = trim( $line, '* ' ); + $sections[ $current_section ][] = esc_html( $message ); + } + } + return $sections; + } + + protected function extract_changelog_section() { + $contents = $this->get_readme_file_contents(); + $start = strpos( $contents, '== Changelog ==' ); + if ( $start === false ) { + return ''; + } + $start += 16; // account for the length of the header + $end = strpos( $contents, '==', $start ); + return trim( substr( $contents, $start, $end - $start ) ); + } + + protected function get_readme_file_contents() { + return file_get_contents( $this->readme_file ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Container.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Container.php new file mode 100644 index 000000000..56ba83353 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Container.php @@ -0,0 +1,358 @@ +doSomething(); + * + * Need the class built immediately? Build it and register it: + * + * tribe_singleton( 'tec.admin.class', new Tribe__Admin__Class() ); + * + * // some code later... + * + * tribe( 'tec.admin.class' )->doSomething(); + * + * Need a very custom way to build the class? Register a callback: + * + * tribe_singleton( 'tec.admin.class', array( Tribe__Admin__Class__Factory, 'make' ) ); + * + * // some code later... + * + * tribe( 'tec.admin.class' )->doSomething(); + * + * Or register the methods that should be called on the object after its construction: + * + * tribe_singleton( 'tec.admin.class', 'Tribe__Admin__Class', array( 'hook', 'register' ) ); + * + * // some code later... + * + * // the `hook` and `register` methods will be called on the built instance. + * tribe( 'tec.admin.class' )->doSomething(); + * + * The class will be built only once (if passing the class name or a callback function), stored + * and the same instance will be returned from that moment on. + * + * @param string $slug The human-readable and catchy name of the class. + * @param string|object|callable $class The full class name or an instance of the class + * or a callback that will return the instance of the class. + * @param array $after_build_methods An array of methods that should be called on + * the built object after the `__construct` method; the methods + * will be called only once after the singleton instance + * construction. + */ + function tribe_singleton( $slug, $class, array $after_build_methods = null ) { + Tribe__Container::init()->singleton( $slug, $class, $after_build_methods ); + } +} + +if ( ! function_exists( 'tribe_register' ) ) { + /** + * Registers a class. + * + * Each call to obtain an instance of this class made using the `tribe( $slug )` function + * will return a new instance; the instances are built just in time (if not passing an + * object instance, in that case it will work as a singleton) and on the first request. + * The container will call the class `__construct` method on the class (if not passing an object + * or a callback function) and will try to automagically resolve dependencies. + * + * Example use: + * + * tribe_register( 'tec.some', 'Tribe__Some' ); + * + * // some code later... + * + * // class is built here + * $some_one = tribe( 'tec.some' )->doSomething(); + * + * // $some_two !== $some_one + * $some_two = tribe( 'tec.some' )->doSomething(); + * + * Need the class built immediately? Build it and register it: + * + * tribe_register( 'tec.admin.class', new Tribe__Admin__Class() ); + * + * // some code later... + * + * // $some_two === $some_one + * // acts like a singleton + * $some_one = tribe( 'tec.some' )->doSomething(); + * $some_two = tribe( 'tec.some' )->doSomething(); + * + * Need a very custom way to build the class? Register a callback: + * + * tribe_register( 'tec.some', array( Tribe__Some__Factory, 'make' ) ); + * + * // some code later... + * + * // $some_two !== $some_one + * $some_one = tribe( 'tec.some' )->doSomething(); + * $some_two = tribe( 'tec.some' )->doSomething(); + * + * Or register the methods that should be called on the object after its construction: + * + * tribe_singleton( 'tec.admin.class', 'Tribe__Admin__Class', array( 'hook', 'register' ) ); + * + * // some code later... + * + * // the `hook` and `register` methods will be called on the built instance. + * tribe( 'tec.admin.class' )->doSomething(); + * + * @param string $slug The human-readable and catchy name of the class. + * @param string|object|callable $class The full class name or an instance of the class + * or a callback that will return the instance of the class. + * @param array $after_build_methods An array of methods that should be called on + * the built object after the `__construct` method; the methods + * will be called each time after the instance construction. + */ + function tribe_register( $slug, $class, array $after_build_methods = null ) { + Tribe__Container::init()->bind( $slug, $class, $after_build_methods ); + } +} + +if ( ! function_exists( 'tribe' ) ) { + /** + * Returns a ready to use instance of the requested class. + * + * Example use: + * + * tribe_singleton( 'common.main', 'Tribe__Main'); + * + * // some code later... + * + * tribe( 'common.main' )->do_something(); + * + * @param string|null $slug_or_class Either the slug of a binding previously registered using `tribe_singleton` or + * `tribe_register` or the full class name that should be automagically created or + * `null` to get the container instance itself. + * + * @return mixed|object|Tribe__Container The instance of the requested class. Please note that the cardinality of + * the class is controlled registering it as a singleton using `tribe_singleton` + * or `tribe_register`; if the `$slug_or_class` parameter is null then the + * container itself will be returned. + */ + function tribe( $slug_or_class = null ) { + $container = Tribe__Container::init(); + + return null === $slug_or_class ? $container : $container->make( $slug_or_class ); + } +} + +if ( ! function_exists( 'tribe_set_var' ) ) { + /** + * Registers a value under a slug in the container. + * + * Example use: + * + * tribe_set_var( 'tec.url', 'http://example.com' ); + * + * @param string $slug The human-readable and catchy name of the var. + * @param mixed $value The variable value. + */ + function tribe_set_var( $slug, $value ) { + $container = Tribe__Container::init(); + $container->setVar( $slug, $value ); + } +} + +if ( ! function_exists( 'tribe_get_var' ) ) { + /** + * Returns the value of a registered variable. + * + * Example use: + * + * tribe_set_var( 'tec.url', 'http://example.com' ); + * + * $url = tribe_get_var( 'tec.url' ); + * + * @param string $slug The slug of the variable registered using `tribe_set_var`. + * @param null $default The value that should be returned if the variable slug + * is not a registered one. + * + * @return mixed Either the registered value or the default value if the variable + * is not registered. + */ + function tribe_get_var( $slug, $default = null ) { + $container = Tribe__Container::init(); + + try { + $var = $container->getVar( $slug ); + } catch ( InvalidArgumentException $e ) { + return $default; + } + + return $var; + } +} + +if ( ! function_exists( 'tribe_unset_var' ) ) { + /** + * Returns the value of a registered variable. + * + * Example use: + * + * tribe_set_var( 'tec.url', 'http://example.com' ); + * + * tribe_unset_var( 'tec.url' ); + * + * @since 4.11.0 + * + * @param string $slug The slug of the variable registered using `tribe_unset_var`. + * + * @return void + */ + function tribe_unset_var( $slug ) { + $container = Tribe__Container::init(); + try { + $container->offsetUnset( $slug ); + } catch ( Exception $e ) {} + } +} + +if ( ! function_exists( 'tribe_isset_var' ) ) { + /** + * Returns the value of a registered variable. + * + * Example use: + * + * tribe_set_var( 'tec.url', 'http://example.com' ); + * + * tribe_isset_var( 'tec.url' ); + * + * @since 4.11.0 + * + * @param string $slug The slug of the variable checked using `tribe_isset_var`. + * + * @return boolean Either a the given slug exists. + */ + function tribe_isset_var( $slug ) { + $container = Tribe__Container::init(); + return $container->offsetExists( $slug ); + } +} + +if ( ! function_exists( 'tribe_register_provider' ) ) { + /** + * Registers a service provider in the container. + * + * Service providers must implement the `use ServiceProviderInterface` interface or extend + * the `ServiceProvider` class. + * + * @see ServiceProvider + * @see ServiceProviderInterface + * + * @param string $provider_class + */ + function tribe_register_provider( $provider_class ) { + $container = Tribe__Container::init(); + + if ( $provider_class === 'Tribe\Tickets\Admin\Home\Service_Provider' ) { + /** + * Prevent binding a poorly located service provider registration in ET pre 5.6.0 + * and places it after ET Main::bind_implementations(). + * + * @todo: Remove this after TEC 7.5 after enough time has passed. + */ + add_action( + 'tribe_tickets_plugin_loaded', + static function() use ( $container ) { + $container->register( Tribe\Tickets\Admin\Home\Service_Provider::class ); + } + ); + } else { + $container->register( $provider_class ); + } + } + + if ( ! function_exists( 'tribe_callback' ) ) { + /** + * Returns a lambda function suitable to use as a callback; when called the function will build the implementation + * bound to `$classOrInterface` and return the value of a call to `$method` method with the call arguments. + * + * @since 4.7 + * @since 4.6.2 Included the $argsN params + * + * @param string $slug A class or interface fully qualified name or a string slug. + * @param string $method The method that should be called on the resolved implementation with the + * specified array arguments. + * @param mixed [$argsN] (optional) Any number of arguments that will be passed down to the Callback + * + * @return callable A PHP Callable based on the Slug and Methods passed + */ + function tribe_callback( $slug, $method ) { + $container = Tribe__Container::init(); + $arguments = func_get_args(); + $is_empty = 2 === count( $arguments ); + + if ( $is_empty ) { + $callable = $container->callback( $slug, $method ); + } else { + $callback = $container->callback( 'callback', 'get' ); + $callable = call_user_func_array( $callback, $arguments ); + } + + return $callable; + } + } + + if ( ! function_exists( 'tribe_callback_return' ) ) { + /** + * Returns a tribe_callback for a very simple Return value method + * + * Example of Usage: + * + * add_filter( 'admin_title', tribe_callback_return( __( 'Ready to work.' ) ) ); + * + * @since 4.6.2 + * + * @param mixed $value The value to be returned + * + * @return callable A PHP Callable based on the Slug and Methods passed + */ + function tribe_callback_return( $value ) { + return tribe_callback( 'callback', 'return_value', $value ); + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Context.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Context.php new file mode 100644 index 000000000..04f753a20 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Context.php @@ -0,0 +1,1655 @@ + => [ 'read' => , 'write' => ] ]. + * The key is used to identify the property that will be accessible with the `get` and + * 'dangerously_set_global_context' method, e.g. `$context->get( 'event_display', 'list' );`. + * The locations is a list of locations the context will search, top to bottom, left to right, to find a value that's + * not empty or the default one, here's a list of supported lookup locations: + * + * request_var - look into $_GET, $_POST, $_PUT, $_DELETE, $_REQUEST. + * query_var - get the value from the main WP_Query object query vars. + * query_prop - get the value from a property of the main WP_Query object. + * tribe_option - get the value from a Tribe option. + * option - get the value from a database option. + * transient - get the value from a transient. + * constant - get the value from a constant, can also be a class constant with ::. + * global_var - get the value from a global variable + * static_prop - get the value from a class static property, format: `array( $class, $prop )`. + * prop - get the value from a tribe() container binding, format `array( $binding, $prop )`. + * static_method - get the value from a class static method. + * method - get the value calling a method on a tribe() container binding. + * func - get the value from a function or a closure. + * filter - get the value by applying a filter. + * location_func - get the value by applying a callback to the value of a location. + * + * For each location additional arguments can be specified: + * orm_arg - if `false` then the location will never produce an ORM argument, if provided the ORM arg produced bye the + * location will have this name. + * orm_transform - if provided the value of the location will be obtained by passing it as an argument to a callable. + * + * As the Context locations increase in number it would be impractical to define them inline here. + * The locations will be loaded by the `Tribe__Context::populate_locations` method from the `Context/locations.php` + * file. + * + * @var array + */ + protected static $locations = []; + + /** + * A utility static property keeping track of write locations that + * will be defined as associative arrays. + * + * @var array + */ + protected static $associative_locations = [ + self::TRANSIENT, + self::METHOD, + self::STATIC_METHOD, + self::PROP, + self::STATIC_PROP, + ]; + + /** + * Whether the static dynamic locations were set or not. + * + * @var bool + */ + protected static $did_populate_locations = false; + + /** + * A list of override locations to read and write from. + * + * This list has the same format and options as the static `$locations` property + * but allows a context instance to override, or add, read and write locations. + * + * @var array + */ + protected $override_locations = []; + + /** + * Whether the context of the current HTTP request is an AJAX one or not. + * + * @var bool + */ + protected $doing_ajax; + + /** + * Whether the context of the current HTTP request is a Cron one or not. + * + * @var bool + */ + protected $doing_cron; + + /** + * A request-based array cache to store the values fetched by the context. + * + * @var array + */ + protected $request_cache = []; + + /** + * Whether this context should use the default locations or not. + * This flag property is set to `false` when a context is obtained using + * the `set_locations` method; it will otherwise be set to `true`. + * + * @var bool + */ + protected $use_default_locations = true; + + /** + * An instance of the post state handler. + * + * @since 5.0.13 + * + * @var Post_Request_Type + */ + protected Post_Request_Type $post_state; + + /** + * Tribe__Context constructor. + * + * since 5.0.13 + * + * @param Post_Request_Type|null $post_state An instance of the post state handler. + */ + public function __construct( Post_Request_Type $post_state = null ) { + $this->post_state = $post_state ?: tribe( Post_Request_Type::class ); + } + + /** + * Whether we are currently creating a new post, a post of post type(s) or not. + * + * @since 4.7.7 + * @since 5.0.13 Extracted the logic to the `TEC\Common\Context\Post_Request_Type` class. + * + * @param null $post_type The optional post type to check. + * + * @return bool Whether we are currently creating a new post, a post of post type(s) or not. + */ + public function is_new_post( $post_type = null ) { + return $this->post_state->is_new_post( $post_type ); + } + + /** + * Whether we are currently editing a post(s), post type(s) or not. + * + * @since 4.7.7 + * @since 5.0.13 Extracted the logic to the `TEC\Common\Context\Post_Request_Type` class. + * + * @param null|array|string|int $post_or_type A post ID, post type, an array of post types or post IDs, `null` + * to just make sure we are currently editing a post. + * + * @return bool + */ + public function is_editing_post( $post_or_type = null ): bool { + return $this->post_state->is_editing_post( $post_or_type ); + } + + /** + * Helper function to indicate whether the current execution context is AJAX. + * + * This method exists to allow us test code that behaves differently depending on the execution + * context. + * + * @since 4.7.12 + * @since 4.9.5 Removed the $doing_ajax parameter. + * + * @return boolean + */ + public function doing_ajax() { + return function_exists( 'wp_doing_ajax' ) + ? wp_doing_ajax() + : defined( 'DOING_AJAX' ) && DOING_AJAX; + } + + /** + * Checks whether the context of the current HTTP request is a Cron one or not. + * + * @since 4.7.23 + * @since 4.9.5 Removed the $doing_cron parameter. + * + * @return bool Whether the context of the current HTTP request is a Cron one or not. + */ + public function doing_cron() { + return function_exists( 'wp_doing_cron' ) + ? wp_doing_cron() + : defined( 'DOING_CRON' ) && DOING_CRON; + } + + /** + * Gets a value reading it from the location(s) defined in the `Tribe__Context::$props + * + * @since 4.9.5 + * + * @param string $key The key of the variable to fetch. + * @param mixed|null $default The default value to return if not found. + * @param bool $force Whether to force the re-fetch of the value from the context or + * not; defaults to `false`. + * + * @return mixed The value from the first location that can provide it or the default + * value if not found. + */ + public function get( $key, $default = null, $force = false ) { + /** + * Filters the value of a context variable skipping all of its logic. + * + * @since 4.9.5 + * + * @param mixed $value The value for the key before it's fetched from the context. + * @param string $key The key of the value to fetch from the context. + * @param mixed $default The default value that should be returned if the value is + * not set in the context. + * @param bool $force Whether to force the re-fetch of the value from the context or + * not; defaults to `false`. + */ + $value = apply_filters( "tribe_context_pre_{$key}", null, $key, $default, $force ); + if ( null !== $value ) { + return $value; + } + + $value = $default; + $locations = $this->get_locations(); + $found = false; + + if ( ! $force && isset( $this->request_cache[ $key ] ) ) { + $value = $this->request_cache[ $key ]; + } elseif ( ! empty( $locations[ $key ]['read'] ) ) { + foreach ( $locations[ $key ]['read'] as $location => $keys ) { + $the_value = $this->$location( (array) $keys, $default ); + + if ( $default !== $the_value && static::NOT_FOUND !== $the_value ) { + $found = true; + $value = $the_value; + break; + } + } + } + + /** + * Filters the value fetched from the context for a key. + * + * Useful for testing and local override. + * + * @since 4.9.5 + * + * @param mixed $value The value as fetched from the context. + */ + $value = apply_filters( "tribe_context_{$key}", $value ); + + // Only cache if the value was found. + if ( $found ) { + $this->request_cache[ $key ] = $value; + } + + return $value; + } + + /** + * Alters the context. + * + * Due to its immutable nature setting values on the context will NOT modify the + * context but return a modified clone. + * If you need to modify the global context update the location(s) it should read from + * and call the `refresh` method. + * Example: `$widget_context = tribe_context()->alter( $widget_args );`. + * + * @since 4.9.5 + * + * @param array $values An associative array of key-value pairs to modify the context. + * + * @return \Tribe__Context A clone, with modified, values, of the context the method was called on. + */ + public function alter( array $values ) { + $clone = clone $this; + + $clone->request_cache = array_merge( $clone->request_cache, $values ); + + return $clone; + } + + /** + * Clears the context cache forcing a re-fetch of the variables from the context. + * + * @since 4.9.5 + * + * @param string $key An optional specific key to refresh, if passed only this key + * will be refreshed. + */ + public function refresh( $key = null ) { + if ( null !== $key ) { + unset( $this->request_cache[ $key ] ); + } else { + $this->request_cache = []; + } + } + + /** + * Returns the read and write locations set on the context. + * + * @since 4.9.5 + * + * @return array An array of read and write location in the shape of the `Tribe__Context::$locations` one, + * `[ => [ 'read' => , 'write' => ] ]`. + */ + public function get_locations() { + $this->populate_locations(); + + $locations = $this->use_default_locations + ? array_merge( self::$locations, $this->override_locations ) + : $this->override_locations; + + if ( $this->use_default_locations ) { + /** + * Filters the locations registered in the Context. + * + * @since 4.10.2 + * + * @param $locations array An array of read and write location in the shape of the `Tribe__Context::$locations` one, + * `[ => [ 'read' => , 'write' => ] ]`. + * @param $context Tribe__Context Current instance of the context. + */ + $locations = apply_filters( 'tribe_context_locations', $locations, $this ); + } + + return $locations; + } + + /** + * Reads the value from one or more $_REQUEST vars. + * + * @since 4.9.5 + * + * @param array $request_vars The list of request vars to lookup, in order. + * @param mixed $default The default value to return. + * + * @return mixed The first valid value found or the default value. + */ + protected function request_var( array $request_vars, $default ) { + $value = $default; + + foreach ( $request_vars as $request_var ) { + $the_value = tribe_get_request_var( $request_var, self::NOT_FOUND ); + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + + return $value; + } + + /** + * Reads the value from one or more global WP_Query object query variables. + * + * @since 4.9.5 + * + * @param array $query_vars The list of query vars to look up, in order. + * @param mixed $default The default value to return. + * + * @return mixed The first valid value found or the default value. + */ + protected function query_var( array $query_vars, $default ) { + $value = $default; + + global $wp_query; + + if ( ! $wp_query instanceof \WP_Query ) { + return $value; + } + + foreach ( $query_vars as $query_var ) { + $the_value = $wp_query->get( $query_var, self::NOT_FOUND ); + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + + return $value; + } + + /** + * Reads the value from one or more global WP_Query object properties. + * + * @since 4.9.5 + * + * @param array $query_props The list of properties to look up, in order. + * @param mixed $default The default value to return. + * + * @return mixed The first valid value found or the default value. + */ + protected function query_prop( array $query_props, $default ) { + $value = $default; + + global $wp_query; + foreach ( $query_props as $query_prop ) { + $the_value = isset( $wp_query->{$query_prop} ) ? $wp_query->{$query_prop} : self::NOT_FOUND; + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + + return $value; + } + + /** + * Reads the value from one more more `tribe_option`s. + * + * @since 4.9.5 + * + * @param array $tribe_options The list of `tribe_option`s to lookup, in order. + * @param mixed $default The default value to return. + * + * @return mixed The first valid value found or the default value. + */ + protected function tribe_option( array $tribe_options, $default ) { + $value = $default; + + foreach ( $tribe_options as $option_name ) { + $the_value = tribe_get_option( $option_name, self::NOT_FOUND ); + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + + return $value; + } + + /** + * Reads the value from one or more options. + * + * @since 4.9.5 + * + * @param array $options The list of options to lookup, in order. + * @param mixed $default The default value to return. + * + * @return mixed The first valid value found or the default value. + */ + protected function option( array $options, $default ) { + $value = $default; + + foreach ( $options as $option_name ) { + $the_value = get_option( $option_name, self::NOT_FOUND ); + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + + return $value; + } + + /** + * Reads the value from one or more transients. + * + * @since 4.9.5 + * + * @param array $transients The list of transients to lookup, in order. + * @param mixed $default The default value to return. + * + * @return mixed The first valid value found or the default value. + */ + protected function transient( array $transients, $default ) { + $value = $default; + + foreach ( $transients as $transient ) { + $the_value = get_transient( $transient ); + if ( false !== $the_value ) { + $value = $the_value; + /* + * This will fail when the value is actually `false`. + */ + break; + } + } + + return $value; + } + + /** + * Reads the value from one or more constants. + * + * @since 4.9.5 + * + * @param array $constants The list of constants to lookup, in order. + * @param mixed $default The default value to return. + * + * @return mixed The first valid value found or the default value. + */ + protected function constant( array $constants, $default ) { + $value = $default; + + foreach ( $constants as $constant ) { + $the_value = defined( $constant ) ? constant( $constant ) : self::NOT_FOUND; + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + + return $value; + } + + /** + * Reads the value from one or more global variable. + * + * @since 4.9.5 + * + * @param array $global_vars The list of global variables to look up, in order. + * @param mixed $default The default value to return. + * + * @return mixed The first valid value found or the default value. + */ + protected function global_var( array $global_vars, $default ) { + $value = $default; + + foreach ( $global_vars as $var ) { + $the_value = isset( $GLOBALS[ $var ] ) ? $GLOBALS[ $var ] : self::NOT_FOUND; + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + + return $value; + } + + /** + * Reads the value from one or more class static properties. + * + * @since 4.9.5 + * + * @param array $classes_and_props An associative array in the shape [ => ]. + * @param mixed $default The default value to return. + * + * @return mixed The first valid value found or the default value. + */ + protected function static_prop( array $classes_and_props, $default ) { + $value = $default; + + foreach ( $classes_and_props as $class => $prop ) { + if ( class_exists( $class ) ) { + // PHP 5.2 compat, on PHP 5.3+ $class::$$prop + $vars = get_class_vars( $class ); + $the_value = isset( $vars[ $prop ] ) ? $vars[ $prop ] : self::NOT_FOUND; + + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + } + + return $value; + } + + /** + * Reads the value from one or more properties of implementations bound in the `tribe()` container. + * + * @since 4.9.5 + * + * @param array $bindings_and_props An associative array in the shape [ => ]. + * @param mixed $default The default value to return. + * + * @return mixed The first valid value found or the default value. + */ + protected function prop( array $bindings_and_props, $default ) { + $value = $default; + + foreach ( $bindings_and_props as $binding => $prop ) { + $the_value = tribe()->offsetExists( $binding ) && property_exists( tribe( $binding ), $prop ) + ? tribe( $binding )->{$prop} + : self::NOT_FOUND; + + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + + return $value; + } + + /** + * Reads the values from one or more static class methods. + * + * @since 4.9.5 + * + * @param array $classes_and_methods An associative array in the shape [ => ]. + * @param mixed $default The default value to return. + * + * @return mixed The first value that's not equal to the default one, the default value + * otherwise. + */ + protected function static_method( array $classes_and_methods, $default ) { + $value = $default; + + foreach ( $classes_and_methods as $class => $method ) { + $the_value = class_exists( $class ) && method_exists( $class, $method ) + ? call_user_func( [ $class, $method ] ) + : self::NOT_FOUND; + + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + + return $value; + } + + /** + * Reads the value from one or more methods called on implementations bound in the `tribe()` container. + * + * @since 4.9.5 + * + * @param array $bindings_and_methods An associative array in the shape [ => ]. + * @param mixed $default The default value to return. + * + * @return mixed The first value that's not equal to the default one, the default value + * otherwise. + */ + protected function method( array $bindings_and_methods, $default ) { + $value = $default; + $the_value = self::NOT_FOUND; + + foreach ( $bindings_and_methods as $binding => $method ) { + if ( tribe()->offsetExists( $binding ) ) { + $implementation = tribe( $binding ); + if ( method_exists( $implementation, $method ) ) { + $the_value = $implementation->$method(); + } + } + + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + + return $value; + } + + /** + * Reads the value from one or more functions until one returns a value that's not the default one. + * + * @since 4.9.5 + * + * @param array $functions An array of functions to call, in order. + * @param mixed $default The default value to return. + * + * @return mixed The first value that's not equal to the default one, the default value + * otherwise. + */ + protected function func( array $functions, $default ) { + $value = $default; + $the_value = self::NOT_FOUND; + + foreach ( $functions as $function ) { + if ( is_callable( $function ) || function_exists( $function ) ) { + $the_value = $function(); + } + + if ( $the_value !== self::NOT_FOUND ) { + $value = $the_value; + break; + } + } + + return $value; + } + + /** + * Modifies the global context using the defined write locations to persist the altered values. + * + * Please keep in mind this will set the the global context for the whole request and, when the + * write location is an option, to the database. + * With great power comes great responsibility: think a lot before using this. + * + * @param array|null $fields An optional whitelist or blacklist of fields to write + * depending on the value of the `$whitelist` parameter; + * defaults to writing all available fields. + * @param bool $whitelist Whether the list of fields provided in the `$fields` + * parameter should be treated as a whitelist (`true`) or + * blacklist (`false`). + * + * @since 4.9.5 + */ + public function dangerously_set_global_context( array $fields = null, $whitelist = true ) { + $locations = $this->get_locations(); + + if ( null !== $fields ) { + $locations = $whitelist + ? array_intersect_key( $locations, array_combine( $fields, $fields ) ) + : array_diff_key( $locations, array_combine( $fields, $fields ) ); + } + + /** + * Here we intersect with the request cache to only write values we've actually read + * or modified. If none of the two happened then there's no need to write anything. + */ + foreach ( array_intersect_key( $this->request_cache, $locations ) as $key => $value ) { + if ( ! isset( $locations[ $key ]['write'] ) ) { + continue; + } + + foreach ( (array) $locations[ $key ]['write'] as $location => $targets ) { + $targets = (array) $targets; + $write_func = 'write_' . $location; + + foreach ( $targets as $arg_1 => $arg_2 ) { + if ( self::FUNC === $location && is_array( $arg_2 ) && is_callable( $arg_2 ) ) { + // Handles write functions specified as an array. + $location_args = [ $arg_2 ]; + } else { + $location_args = in_array( $location, self::$associative_locations, true ) + ? [ $arg_1, $arg_2 ] + : (array) $arg_2; + } + + $args = array_merge( $location_args, [ $value ] ); + + call_user_func_array( [ $this, $write_func ], $args ); + } + } + } + } + + /** + * Writes an altered context value to a request var. + * + * @since 4.9.5 + * + * @param string $request_var The request var to write. + * @param mixed $value The value to set on the request var. + */ + protected function write_request_var( $request_var, $value ) { + if ( isset( $_REQUEST ) ) { + $_REQUEST[ $request_var ] = $value; + } + if ( isset( $_GET ) ) { + $_GET[ $request_var ] = $value; + } + if ( isset( $_POST ) ) { + $_POST[ $request_var ] = $value; + } + } + + /** + * Writes an altered context value to a global WP_Query object properties. + * + * @since 4.9.5 + * + * @param string $query_prop The global WP_Query object property to write. + * @param mixed $value The value to set on the query property. + */ + protected function write_query_prop( $query_prop, $value ) { + global $wp_query; + + if ( ! $wp_query instanceof WP_Query ) { + return; + } + + $wp_query->{$query_prop} = $value; + } + + /** + * Writes an altered context value to a global WP_Query object query var. + * + * @since 4.9.5 + * + * @param string $query_var The global WP_Query query var to write. + * @param mixed $value The value to set on the query var. + */ + protected function write_query_var( $query_var, $value ) { + global $wp_query; + + if ( ! $wp_query instanceof WP_Query ) { + return; + } + + $wp_query->set( $query_var, $value ); + } + + /** + * Writes an altered context value to a `tribe_option`. + * + * @since 4.9.5 + * + * @param string $tribe_option The `tribe_option` to write. + * @param mixed $value The value to set on the `tribe_option`. + */ + protected function write_tribe_option( $tribe_option, $value ) { + tribe_update_option( $tribe_option, $value ); + } + + /** + * Writes an altered context value to an option. + * + * @since 4.9.5 + * + * @param string $option_name The option to write. + * @param mixed $value The value to set on the option. + */ + protected function write_option( $option_name, $value ) { + update_option( $option_name, $value ); + } + + /** + * Writes an altered context value to a transient. + * + * @since 4.9.5 + * + * @param string $transient The transient to write. + * @param int $expiration The transient expiration time, in seconds. + * @param mixed $value The value to set on the transient. + */ + protected function write_transient( $transient, $expiration, $value ) { + set_transient( $transient, $value, $expiration ); + } + + /** + * Writes an altered context value to a constant. + * + * @since 4.9.5 + * + * @param string $constant The constant to define. + * @param mixed $value The value to set on the constant. + */ + protected function write_constant( $constant, $value ) { + if ( defined( $constant ) ) { + return; + } + define( $constant, $value ); + } + + /** + * Writes an altered context value to a global var. + * + * @since 4.9.5 + * + * @param string $global_var The global var to set. + * @param mixed $value The value to set on the global_var. + */ + protected function write_global_var( $global_var, $value ) { + $GLOBALS[ $global_var ] = $value; + } + + /** + * Writes an altered context value setting a public static property on a class. + * + * @since 4.9.5 + * + * @param string $class The class to set the static public property on. + * @param string $prop The static public property to set. + * @param mixed $value The value to set on the property. + */ + protected function write_static_prop( $class, $prop, $value ) { + if ( ! ( class_exists( $class ) && property_exists( $class, $prop ) ) ) { + return; + } + + $class::$$prop = $value; + } + + /** + * Writes an altered context value setting a public property on a `tribe()` binding. + * + * @since 4.9.5 + * + * @param string $binding The container binding to set the public property on. + * @param string $prop The public property to set. + * @param mixed $value The value to set on the property. + */ + protected function write_prop( $binding, $prop, $value ) { + if ( ! tribe()->offsetExists( $binding ) ) { + return; + } + + $implementation = tribe( $binding ); + + if ( ! property_exists( $implementation, $prop ) ) { + return; + } + + $implementation->{$prop} = $value; + } + + /** + * Writes an altered context value calling a public static method on a class. + * + * @since 4.9.5 + * + * @param string $class The class to call the public static method on. + * @param string $method The static method to call. + * @param mixed $value The value to pass to the public static method. + */ + protected function write_static_method( $class, $method, $value ) { + if ( ! class_exists( $class ) ) { + return; + } + call_user_func( [ $class, $method ], $value ); + } + + /** + * Writes an altered context value calling a public method on a `tribe()` binding. + * + * @since 4.9.5 + * + * @param string $binding The `tribe()` container binding to call the public method on. + * @param string $method The method to call. + * @param mixed $value The value to pass to the public method. + */ + protected function write_method( $binding, $method, $value ) { + if ( ! tribe()->offsetExists( $binding ) ) { + return; + } + call_user_func( [ tribe( $binding ), $method ], $value ); + } + + /** + * Writes an altered context value calling a function or closure. + * + * @since 4.9.5 + * + * @param callable $func function, closure or callable to call. + * @param mixed $value The value to pass to the callable. + */ + protected function write_func( $func, $value ) { + if ( ! is_callable( $func ) ) { + return; + } + call_user_func( $func, $value ); + } + + /** + * Adds/replaces read and write locations to a context. + * + * Locations are merged with an `array_merge` call. To refine the locations get them first with the + * `get_locations` method. + * + * @since 4.9.5 + * + * @param array $locations An array of read and write locations to add to the context. + * The array should have the same shape as the static `$locations` + * one: `[ => [ 'read' => , 'write' => ] ]`. + * + * + * @return \Tribe__Context A clone of the current context with the additional read and + * write locations added. + */ + public function add_locations( array $locations ) { + $clone = clone $this; + $clone->override_locations = array_merge( $clone->override_locations, $locations ); + + return $clone; + } + + /** + * Sets, replacing them, the locations used by this context. + * + * + * @since 4.9.5 + * + * @param array $locations An array of locations to replace the current ones. + * @param bool $use_default_locations Whether the context should use the default + * locations defined in the static `$locations` + * property or not. + * + * @return \Tribe__Context A clone of the current context with modified locations. + */ + public function set_locations( array $locations, $use_default_locations = true ) { + $clone = clone $this; + $clone->override_locations = $locations; + $clone->use_default_locations = (bool) $use_default_locations; + + return $clone; + } + + /** + * Returns an array representation of the context. + * + * @since 4.9.5 + * + * @return array An associative array of the context keys and values. + */ + public function to_array( ) { + $locations = array_keys( array_merge( $this->get_locations(), $this->request_cache ) ); + $dump = []; + + foreach ( $locations as $location ) { + $the_value = $this->get( $location, self::NOT_FOUND ); + + if ( self::NOT_FOUND === $the_value ) { + continue; + } + + $dump[ $location ] = $the_value; + } + + return $dump; + } + + /** + * Returns the current context state in a format suitable to hydrate a Redux-like + * store on the front-end. + * + * This method is a filtered wrapper around the the `Tribe__Context::to_array` method to allow the + * customization of the format when producing a store-compatible state. + * + * @param array|null $fields An optional whitelist or blacklist of fields to include + * depending on the value of the `$whitelist` parameter; + * defaults to returning all available fields. + * @param bool $whitelist Whether the list of fields provided in the `$fields` + * parameter should be treated as a whitelist (`true`) or + * blacklist (`false`). + * + * @since 4.9.5 + * + * @return array + */ + public function get_state( array $fields = null, $whitelist = true ) { + $state = $this->to_array(); + $is_global_context = tribe_context() === $this; + + if ( null !== $fields ) { + $state = $whitelist + ? array_intersect_key( $state, array_combine( $fields, $fields ) ) + : array_diff_key( $state, array_combine( $fields, $fields ) ); + } + + /** + * Filters the Redux store compatible state produced from the current context. + * + * @since 4.9.5 + * + * @param array $state The Redux store compatible state produced from the current context. + * @param bool $is_global_context Whether the context producing the state is the global one + * or a modified clone of it. + * @param Tribe__Context The context object producing the state. + */ + $state = apply_filters( 'tribe_context_state', $state, $is_global_context, $this ); + + if ( $is_global_context ) { + /** + * Filters the Redux store compatible state produced from the global context. + * + * While the `tribe_context_state` filter will apply to all contexts producing a + * state this filter will only apply to the global context. + * + * @since 4.9.5 + * + * @param array $state The Redux store compatible state produced from the global context. + * @param Tribe__Context The global context object producing the state. + */ + $state = apply_filters( 'tribe_global_context_state', $state, $this ); + } + + return $state; + } + + /** + * Returns an array of ORM arguments generated from the current context values. + * + * @since 4.9.5 + * + * @param array|null $fields An optional whitelist or blacklist of fields to include + * depending on the value of the `$whitelist` parameter; + * defaults to returning all available fields. + * @param bool $whitelist Whether the list of fields provided in the `$fields` + * parameter should be treated as a whitelist (`true`) or + * blacklist (`false`). + * + * @return array A map of ORM fields produced from the context current values. + */ + public function get_orm_args( array $fields = null, $whitelist = true ) { + $locations = $this->get_locations(); + $dump = $this->to_array(); + $orm_args = []; + $is_global_context = tribe_context() === $this; + + foreach ( $dump as $key => $value ) { + $alias = isset( $locations[ $key ]['orm_arg'] ) + ? $locations[ $key ]['orm_arg'] + : $key; + + if ( false === $alias ) { + // Do not provide the variable as an ORM arg. + continue; + } + + if ( isset( $locations[ $key ]['orm_transform'] ) ) { + $value = call_user_func( $locations[ $key ]['orm_transform'], $value ); + } + + $orm_args[ $alias ] = $value; + } + + if ( null !== $fields ) { + /* + * Only keep wanted fields, the filtering is done on the resolved aliases, + * from the perspective of the client code that might ignore the source keys. + */ + $orm_args = $whitelist + ? array_intersect_key( $orm_args, array_combine( $fields, $fields ) ) + : array_diff_key( $orm_args, array_combine( $fields, $fields ) ); + } + + /** + * Filters the ORM arguments produced from the current context. + * + * @since 4.9.5 + * + * @param array $orm_args The ORM args produced from the current context. + * @param bool $is_global_context Whether the context producing the ORM args is the global one + * or a modified clone of it. + * @param Tribe__Context The context object producing the ORM args. + */ + $orm_args = apply_filters( 'tribe_context_orm_args', $orm_args, $is_global_context, $this ); + + if ( $is_global_context ) { + /** + * Filters the ORM arguments produced from the global context. + * + * While the `tribe_context_orm_args` filter will apply to all contexts producing ORM + * args this filter will only apply to the global context. + * + * @since 4.9.5 + * + * @param array $orm_args The ORM args produced from the global context. + * @param Tribe__Context The global context object producing the ORM args. + */ + $orm_args = apply_filters( 'tribe_global_context_orm_args', $orm_args, $this ); + } + + return $orm_args; + } + + /** + * Sets some locations that can only be set at runtime. + * + * Using a flag locations are added only once per request. + * + * @since 4.9.8 + */ + protected function populate_locations() { + if ( static::$did_populate_locations ) { + return; + } + + // To improve the class readability, and as a small optimization, locations are loaded from a file. + static::$locations = include __DIR__ . '/Context/locations.php'; + + /** + * Filters the locations registered in the Context. + * + * @since 4.9.8 + * + * @param array $locations An array of locations registered on the Context object. + */ + static::$locations = apply_filters( 'tribe_context_locations', static::$locations, $this ); + + static::$did_populate_locations = true; + } + + /** + * Just dont... + * Unless you very specifically know what you are doing **DO NOT USE THIS METHOD**! + * + * Please keep in mind this will set force the context to repopulate all locations for the whole request, expensive + * and very dangerous overall since it could affect all this things we hold dear in the request. + * + * With great power comes great responsibility: think a lot before using this. + * + * @since 4.13.0 + */ + public function dangerously_repopulate_locations() { + static::$did_populate_locations = false; + $this->populate_locations(); + } + + /** + * Reads (gets) the value applying one or more filters. + * + * @since 4.9.8 + * + * @param array $filters The list of filters to apply, in order. + * @param mixed $default The default value to return. + * + * @return mixed The first valid value found or the default value. + */ + public function filter( array $filters, $default ) { + foreach ( $filters as $filter ) { + $the_value = apply_filters( $filter, $default ); + if ( $the_value !== $default ) { + return $the_value; + } + } + + return $default; + } + + /** + * Reads (gets) the value reading it from a query var parsed from the global `$wp` object. + * + * @since 4.9.8 + * + * @param array $vars The list of variables to read, in order. + * @param mixed $default The default value to return if no variable was parsed. + * + * @return mixed The first valid value found or the default value. + */ + public function wp_parsed( array $vars, $default ) { + /** @var WP $wp */ + global $wp; + + if ( ! $wp instanceof WP || empty($wp->query_vars) ) { + return $default; + } + + return Arr::get_first_set( (array) $wp->query_vars, $vars, $default ); + } + + /** + * Reads (gets) the value reading it from a query var parsed from the query matched by the global `$wp` object. + * + * @since 4.9.8 + * + * @param array $vars The list of variables to read, in order. + * @param mixed $default The default value to return if no variable was parsed. + * + * @return mixed The first valid value found or the default value. + */ + public function wp_matched_query( array $vars, $default ) { + /** @var WP $wp */ + global $wp; + + if ( ! $wp instanceof WP || empty( $wp->matched_query ) ) { + return $default; + } + + parse_str( $wp->matched_query, $query_vars ); + + return Arr::get_first_set( (array) $query_vars, $vars, $default ); + } + + /** + * Maps an input array to the corresponding read locations. + * + * The resulting array can be used as input for the `alter_values` method. + * The main use of this method is to leverage the Context knowledge of the read locations, and their types, to + * "translate" an array of values to an array of valid read sources. As an example this is useful to "translate" + * the locations to an array of query vars: + * $input = [ 'event_display' => 'some-view', 'event_date' => '2018-01-03' ]; + * $query_args = tribe_context()->map_to_read( $input, Tribe__Context::REQUEST_VAR ); + * $url = add_query_arg( $query_args, home_url() ); + * + * @since 4.9.11 + * + * @param array $input An associative array of values in the shape `[ => ]`; + * where `location` is the name of the location registered in the Context + * locations. + * @param string|array|null $types A white-list of read location types to include in the mapped output; + * `null` + * means all types are allowed. + * @param bool $passthru Whether to pass unknown locations in the output or not; if `false` then + * any input key that's not a context location will not appear in the output; + * defaults to `false` to remove unknown locations from the output. + * + * @return array An associative array in the shape `[ => ]`. Since some read + * locations could have multiple sources the number of elements in this array will likely NOT be the + * same as the number of elements in the input array. When a read location as more than 1 source then + * the value will be duplicated, in the output array, to both sources. + */ + public function map_to_read( array $input, $types = null, $passthru = false ) { + $mapped = []; + $processed = []; + $types = null !== $types ? (array) $types : null; + + $locations = $this->get_locations(); + + // Take the current read locations + foreach ( $locations as $key => $location ) { + if ( ! isset( $location['read'], $input[ $key ] ) ) { + continue; + } + + $processed[] = $key; + + foreach ( $location['read'] as $type => $name ) { + if ( null !== $types && ! in_array( $type, $types, true ) ) { + continue; + } + + foreach ( (array) $name as $destination ) { + $mapped[ $destination ] = $input[ $key ]; + } + } + } + + if ( $passthru ) { + $mapped = array_merge( + $mapped, + array_diff_key( $input, array_keys( $locations ), array_combine( $processed, $processed ) ) + ); + } + + ksort( $mapped ); + + return $mapped; + } + + /** + * Translates sub-locations to their respective location key. + * + * This method leverages the inherent knowledge of aliases stored in the Context locations to "translate" a + * sub-location to its location key. + * E.g. assume the `car` location is `read` from the [ 'carriage', 'vehicle', 'transport_mean' ] query var; calling + * `$context->populate_aliases( [ 'vehicle' => 'hyunday' ], 'read', Context::QUERY_VAR )` would yield + * `[ 'car' => 'hyunday' ]`. + * + * @since 4.9.12 + * + * @param array $values An associative array of value to use as "masters" to populate the aliases. + * @param string $type The type of Context location to use, e.g. `Tribe__Context::QUERY_VAR`. + * @param string $direction The direction to use for the location, one of `read` or `write`. + * + * @return array The original array, merged with the populated values. + */ + public function translate_sub_locations( array $values, $type, $direction = 'read' ) { + if ( ! in_array( $direction, [ 'read', 'write' ], true ) ) { + throw new \InvalidArgumentException( + "Direction must be one of `read` or `write`; `{$direction}` is not valid." + ); + } + + $filled = []; + $locations = $this->get_locations(); + $matching_locations = array_filter( $locations, static function ( $location ) use ( $type, $direction ) { + return isset( $location[ $direction ][ $type ] ); + } ); + + foreach ( $matching_locations as $key => $location ) { + $entry = (array)$location[ $direction ][ $type ]; + $found = array_intersect( array_keys( $values ), array_merge( $entry, [ $key ] ) ); + if ( $found ) { + $filled[ $key ] = $values[ reset( $found ) ]; + } + } + + return $filled; + } + + /** + * Convenience method to get and check if a location has a truthy value or not. + * + * @since 4.9.18 + * + * @param string $flag_key The location to check. + * @param bool $default The default value to return if the location is not set. + * + * @return bool Whether the location has a truthy value or not. + */ + public function is( $flag_key, $default = false ) { + $val = $this->get( $flag_key, $default ); + + return ! empty( $val ) || tribe_is_truthy( $val ); + } + + /** + * Reads the value from one callback, passing it the value of another Context location. + * + * @since 4.9.18 + * + * @param array $location_and_callback An array of two elements: the location key and the callback to call on the + * location value. The callback will receive the location value as argument. + * + * @return mixed The return value of the callback, called on the location value. + */ + public function location_func( array $location_and_callback ) { + list( $location, $callback ) = $location_and_callback; + + return $callback( $this->get( $location ) ); + } + + /** + * Checks whether the current request is a REST API one or not. + * + * @since 4.9.20 + * + * @return bool Whether the current request is a REST API one or not. + */ + public function doing_rest() { + return defined( 'REST_REQUEST' ) && REST_REQUEST; + } + + /** + * Reads the value from one or more global WP_Query object methods. + * + * @since 4.9.20 + * + * @param array $query_vars The list of query methods to call, in order. + * @param mixed $default The default value to return if no method was defined on the global `WP_Query` object. + * + * @return mixed The first valid value found or the default value. + */ + public function query_method( $methods, $default ) { + global $wp_query; + $found = $default; + + foreach ( $methods as $method ) { + $this_value = $wp_query instanceof WP_Query && method_exists( $wp_query, $method ) + ? call_user_func( [ $wp_query, $method ] ) + : static::NOT_FOUND; + + if ( static::NOT_FOUND !== $this_value ) { + return $this_value; + } + } + + return $found; + } + + /** + * Whether the current request is for a PHP-rendered initial state or not. + * + * This method is a shortcut to make sure we're not doing an AJAX, REST or Cron request. + * + * @since 4.9.20 + * + * @return bool Whether the current request is for a PHP-rendered initial state or not. + */ + public function doing_php_initial_state() { + return ! $this->doing_rest() && ! $this->doing_ajax() && ! $this->doing_cron(); + } + + /** + * Returns the first key, if there are many, that will be used to read a location. + * + * The type ar + * + * @since 4.9.20 + * + * @param string $location The location to get the read key for. + * @param string|null $type The type of read location to return the key for; default to `static::REQUEST_VAR`. + * + * @return string Either the first key for the type of read location, or the input location if not found. + */ + public function get_read_key_for( $location, $type = null ) { + $type = $type ?: static::REQUEST_VAR; + $locations = $this->get_locations(); + if ( isset( $locations[ $location ]['read'][ $type ] ) ) { + $keys = (array) $locations[ $location ]['read'][ $type ]; + return reset( $keys ); + } + + return $location; + } + + /** + * Safely set the value of a group of locations. + * + * This method can only augment the context, without altering it; it can only add new values. + * + * @since 4.10.2 + * + * @param array|string $values The values to set, if not already set or the key of the value to set, requires + * the `$value` to be passed. + * @param mixed|null $value The value to set for the key, this parameter will be ignored if the `$values_or_key` + * parameter is not a string. + */ + public function safe_set( $values_or_key, $value = null ) { + $values = func_num_args() === 2 + ? [ $values_or_key => $value ] + : $values_or_key; + + foreach ( $values as $key => $val ) { + if ( static::NOT_FOUND !== $this->get( $key, static::NOT_FOUND ) ) { + continue; + } + $this->request_cache[ $key ] = $val; + } + } + + /** + * Whether the current request is one to edit a list of the specified post types or not. + * + * The admin edit screen for a post type is the one that lists all the posts of that typ, + * it has the URL `/wp-admin/edit.php?post_type=`. + * + * @since 5.0.13 + * @since 5.0.13 Extracted the logic to the `TEC\Common\Context\Post_Request_Type` class. + * + * @param string|array $post_type The post type or post types to check. + * + * @return bool Whether the current request is one to edit a list of the specified post types or not. + */ + public function is_editing_posts_list( $post_type ): bool { + return $this->post_state->is_editing_post_list( $post_type ); + } + + /** + * Whether the current request is one to quick edit a single post of the specified post type or not. + * + * @since 5.0.13 + * + * @param string|array $post_type The post type or post types to check. + * + * @return bool Whether the current request is one to quick edit a single post of the specified post type or not. + */ + public function is_inline_editing_post( $post_type ): bool { + return $this->post_state->is_inline_editing_post( $post_type ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Context/locations.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Context/locations.php new file mode 100644 index 000000000..6a433dd97 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Context/locations.php @@ -0,0 +1,163 @@ + [ + 'read' => [ + Tribe__Context::FUNC => static function () { + return get_the_ID(); + } + ], + ], + 'permalink_structure' => [ + 'read' => [ + Tribe__Context::OPTION => [ 'permalink_structure' ], + ], + ], + 'plain_permalink' => [ + 'read' => [ + Tribe__Context::LOCATION_FUNC => [ + 'permalink_structure', + static function( $struct ){ + return empty( $struct ); + }, + ], + ], + ], + 'posts_per_page' => [ + 'read' => [ + Tribe__Context::REQUEST_VAR => 'posts_per_page', + Tribe__Context::OPTION => 'posts_per_page', + Tribe__Context::TRIBE_OPTION => [ 'posts_per_page', 'postsPerPage' ], + ], + 'write' => [ + Tribe__Context::REQUEST_VAR => 'posts_per_page', + ], + ], + 'is_main_query' => [ + 'read' => [ + Tribe__Context::FUNC => static function () { + global $wp_query; + + if ( empty( $wp_query ) ) { + return false; + } + + if ( ! $wp_query instanceof WP_Query ) { + return false; + } + + return $wp_query->is_main_query(); + }, + ], + 'write' => [ + Tribe__Context::FUNC => static function () { + global $wp_query, $wp_the_query; + $wp_the_query = $wp_query; + }, + ], + ], + 'paged' => [ + 'read' => [ + Tribe__Context::REQUEST_VAR => [ 'paged', 'page' ], + Tribe__Context::QUERY_VAR => [ 'paged', 'page' ], + ], + 'write' => [ + Tribe__Context::REQUEST_VAR => 'paged', + Tribe__Context::QUERY_VAR => 'paged', + ], + ], + 'page' => [ + 'read' => [ + Tribe__Context::REQUEST_VAR => [ 'page', 'paged' ], + Tribe__Context::QUERY_VAR => [ 'page', 'paged' ], + ], + 'write' => [ + Tribe__Context::REQUEST_VAR => 'page', + Tribe__Context::QUERY_VAR => 'page', + ], + ], + 'name' => [ + 'read' => [ + Tribe__Context::REQUEST_VAR => [ 'name', 'post_name' ], + Tribe__Context::WP_PARSED => [ 'name', 'post_name' ], + Tribe__Context::QUERY_VAR => [ 'name', 'post_name' ], + ], + 'write' => [ + Tribe__Context::REQUEST_VAR => [ 'name', 'post_name' ], + Tribe__Context::QUERY_VAR => [ 'name', 'post_name' ], + ], + ], + 'post_type' => [ + 'read' => [ + Tribe__Context::FUNC => static function() { + $post_type_objs = get_post_types( + [ + 'public' => true, + '_builtin' => false, + ], + 'objects' + ); + + foreach ( $post_type_objs as $post_type ) { + if ( empty( $post_type->query_var ) ) { + continue; + } + + $url_value = tribe_get_request_var( $post_type->query_var, false ); + if ( empty( $url_value ) ) { + continue; + } + + return $post_type->name; + } + + return Tribe__Context::NOT_FOUND; + }, + Tribe__Context::QUERY_PROP => 'post_type', + Tribe__Context::QUERY_VAR => 'post_type', + Tribe__Context::REQUEST_VAR => 'post_type', + ], + ], + 'single' => [ + 'read' => [ Tribe__Context::QUERY_METHOD => 'is_single' ] + ], + 'taxonomy' => [ + 'read' => [ + Tribe__Context::QUERY_PROP => [ 'taxonomy' ], + Tribe__Context::QUERY_VAR => [ 'taxonomy' ], + Tribe__Context::REQUEST_VAR => [ 'taxonomy' ], + ], + ], + 'post_tag' => [ + 'read' => [ + Tribe__Context::QUERY_PROP => [ 'post_tag', 'tag' ], + Tribe__Context::QUERY_VAR => [ 'post_tag', 'tag' ], + Tribe__Context::REQUEST_VAR => [ 'post_tag', 'tag' ], + ], + ], + 'bulk_edit' => [ + 'read' => [ + Tribe__Context::REQUEST_VAR => [ 'bulk_edit' ], + ], + ], + 'inline_save' => [ + 'read' => [ + Tribe__Context::FUNC => [ + static function () { + return tribe_get_request_var( 'action', false ) === 'inline-save' + ? true + : Tribe__Context::NOT_FOUND; + } + ], + ], + ], +]; diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Cost_Utils.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Cost_Utils.php new file mode 100644 index 000000000..42a112a19 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Cost_Utils.php @@ -0,0 +1,542 @@ +get_cost_regex(), trim( $cost ) ); + } + + /** + * Returns the regular expression that shold be used to identify a valid + * cost string. + * + * @return string + */ + public function get_cost_regex() { + $separators = '[\\' . implode( '\\', $this->get_separators() ) . ']?'; + $cost_regex = '(' . $separators . '([\d]+)' . $separators . '([\d]*))'; + + /** + * Filters the regular expression that will be used to identify a valid cost + * string. + * + * @param string $cost_regex + * + * @deprecated 4.3 Use `tribe_cost_regex` instead + */ + $cost_regex = apply_filters( + 'tribe_events_cost_regex', $cost_regex + ); + + /** + * Filters the regular expression that will be used to identify a valid cost + * string. + * + * @param string $cost_regex + */ + $cost_regex = apply_filters( 'tribe_cost_regex', $cost_regex ); + + return $cost_regex; + } + + /** + * Fetch the possible separators + * + * @return array + */ + public function get_separators() { + $separators = [ ',', '.' ]; + + /** + * Filters the cost string possible separators, those must be only 1 char. + * + * @param array $separators Defaults to comma (",") and period (".") + */ + return apply_filters( 'tribe_events_cost_separators', $separators ); + } + + /** + * If the cost is "0", call it "Free" + * + * @param int|float|string $cost Cost to analyze + * + * @return int|float|string + */ + public function maybe_replace_cost_with_free( $cost ) { + + $cost_with_period = $this->convert_decimal_separator( $cost ); + + if ( + is_numeric( $cost_with_period ) + && '0.00' === number_format( $cost_with_period, 2, '.', ',' ) + ) { + return esc_html__( 'Free', 'tribe-common' ); + } + + return $cost; + } + + /** + * Formats a cost with a currency symbol + * + * @param int|float|string $cost Cost to format + * + * return string + * @param int|WP_Post $event An event post ID or post object. + * @param string $currency_symbol + * @param string $currency_position Either "prefix" or "posfix" + * + * @return float|int|string + */ + public function maybe_format_with_currency( $cost, $event = null, $currency_symbol = null, $currency_position = null ) { + // check if the currency symbol is desired, and it's just a number in the field + // be sure to account for european formats in decimals, and thousands separators + if ( is_numeric( str_replace( $this->get_separators(), '', $cost ) ) ) { + $reverse_position = null; + // currency_position often gets passed as null or an empty string. + if ( ! empty( $currency_position ) ) { + $reverse_position = 'prefix' === $currency_position ? false : true; + } + + $cost = tribe_format_currency( $cost, $event, $currency_symbol, $reverse_position ); + } + + return $cost; + } + + /** + * @param string $original_string_cost A string cost with or without currency symbol, + * e.g. `10 - 20`, `Free` or `2$ - 4$`. + * @param array|string $merging_cost A single string cost representation to merge or an array of + * string cost representations to merge, e.g. ['Free', 10, 20, + * 'Donation'] or `Donation`. + * @param bool $with_currency_symbol Whether the output should prepend the currency symbol to the + * numeric costs or not. + * @param array $sorted_mins An array of non numeric price minimums sorted smaller to larger, + * e.g. `['Really free', 'Somewhat free', 'Free with 3 friends']`. + * @param array $sorted_maxs An array of non numeric price maximums sorted smaller to larger, + * e.g. `['Donation min $10', 'Donation min $20', 'Donation min + * $100']`. + * + * @return string|array The merged cost range. + */ + public function merge_cost_ranges( $original_string_cost, $merging_cost, $with_currency_symbol, $sorted_mins = [], $sorted_maxs = [] ) { + if ( empty( $merging_cost ) || $original_string_cost === $merging_cost ) { + return $original_string_cost; + } + + $_merging_cost = array_map( + [ $this, 'convert_decimal_separator' ], (array) $merging_cost + ); + $_merging_cost = array_map( [ $this, 'numerize_numbers' ], $_merging_cost ); + $numeric_merging_cost_costs = array_filter( $_merging_cost, 'is_numeric' ); + + $matches = []; + preg_match_all( + '!\d+(?:([' . preg_quote( $this->_supported_decimal_separators ) . '])\d+)?!', $original_string_cost, + $matches + ); + $this->_current_original_cost_separator = empty( $matches[1][0] ) ? '.' : $matches[1][0]; + $matches[0] = empty( $matches[0] ) + ? $matches[0] + : array_map( + [ + $this, + 'convert_decimal_separator', + ], + $matches[0] + ); + + $numeric_orignal_costs = empty( $matches[0] ) ? $matches[0] : array_map( + 'floatval', $matches[0] + ); + + $all_numeric_costs = array_filter( array_merge( $numeric_merging_cost_costs, $numeric_orignal_costs ) ); + $cost_min = $cost_max = false; + + $merging_mins = array_intersect( $sorted_mins, (array) $merging_cost ); + $merging_has_min = array_search( reset( $merging_mins ), $sorted_mins ); + $original_has_min = array_search( $original_string_cost, $sorted_mins ); + $merging_has_min = false === $merging_has_min ? 999 : $merging_has_min; + $original_has_min = false === $original_has_min ? 999 : $original_has_min; + $string_min_key = min( $merging_has_min, $original_has_min ); + if ( array_key_exists( $string_min_key, $sorted_mins ) ) { + $cost_min = $sorted_mins[ $string_min_key ]; + } else { + $cost_min = empty( $all_numeric_costs ) ? '' : min( $all_numeric_costs ); + } + + $merging_maxs = array_intersect( $sorted_maxs, (array) $merging_cost ); + $merging_has_max = array_search( end( $merging_maxs ), $sorted_maxs ); + $original_has_max = array_search( $original_string_cost, $sorted_maxs ); + $merging_has_max = false === $merging_has_max ? - 1 : $merging_has_max; + $original_has_max = false === $original_has_max ? - 1 : $original_has_max; + $string_max_key = max( $merging_has_max, $original_has_max ); + if ( array_key_exists( $string_max_key, $sorted_maxs ) ) { + $cost_max = $sorted_maxs[ $string_max_key ]; + } else { + $cost_max = empty( $all_numeric_costs ) ? '' : max( $all_numeric_costs ); + } + + $cost = array_filter( [ $cost_min, $cost_max ] ); + + if ( $with_currency_symbol ) { + $formatted_cost = []; + foreach ( $cost as $c ) { + $formatted_cost[] = is_numeric( $c ) ? tribe_format_currency( $c ) : $c; + } + $cost = $formatted_cost; + } + + return empty( $cost ) ? $original_string_cost : array_map( + [ $this, 'restore_original_decimal_separator' ], + $cost + ); + } + + /** + * Returns a maximum cost in a list of costs. If an array of costs is not passed in, the array of costs is fetched + * via query. + * + * @param $costs mixed Cost(s) to review for max value + * + * @return float + */ + public function get_maximum_cost( $costs = null ) { + return $this->get_cost_by_func( $costs, 'max' ); + } + + /** + * Returns a particular cost within an array of costs + * + * @param $costs mixed Cost(s) to review for max value + * @param $function string Function to use to determine which cost to return from range. Valid values: max, min + * + * @return float + */ + protected function get_cost_by_func( $costs = null, $function = 'max' ) { + if ( null === $costs ) { + $costs = $this->get_all_costs(); + } else { + $costs = (array) $costs; + } + + $costs = $this->parse_cost_range( $costs ); + + // if there's only one item, we're looking at a single event. If the cost is non-numeric, let's + // return the non-numeric cost so that value is preserved + if ( 1 === count( $costs ) && ! is_numeric( current( $costs ) ) ) { + return current( $costs ); + } + + // make sure we are only trying to get numeric min/max values + $costs = array_filter( $costs, 'is_numeric' ); + + if ( empty( $costs ) ) { + return 0; + } + + switch ( $function ) { + case 'min': + $cost = $costs[ min( array_keys( $costs ) ) ]; + break; + case 'max': + default: + $cost = $costs[ max( array_keys( $costs ) ) ]; + break; + } + + // If there isn't anything on the cost just return 0 + if ( empty( $cost ) ) { + return 0; + } + + return $cost; + } + + /** + * Parses a cost into an array of ranges. + * + * If a range isn't provided, the resulting array will hold a single + * value. + * + * @param string|array $costs A cost string or an array of cost strings. + * @param null $max_decimals The maximum number of decimal values that should be returned in the range. + * @param bool $sort Whether the returned values should be sorted. + * + * @return array An associative array of parsed costs in [ => ] format. + */ + public function parse_cost_range( $costs, $max_decimals = null, $sort = true ) { + if ( ! is_array( $costs ) && ! is_string( $costs ) ) { + return []; + } + + // make sure costs is an array + $costs = (array) $costs; + + // If there aren't any costs, return a blank array + if ( 0 === count( $costs ) ) { + return []; + } + + // Build the regular expression + $price_regex = $this->get_cost_regex(); + $max = 0; + + foreach ( $costs as &$cost ) { + // Get the required parts + if ( preg_match_all( '/' . $price_regex . '/', $cost, $matches ) ) { + $cost = reset( $matches ); + } else { + $cost = [ $cost ]; + continue; + } + + // Get the max number of decimals for the range + if ( count( $matches ) === 4 ) { + $decimals = max( array_map( 'strlen', end( $matches ) ) ); + $max = max( $max, $decimals ); + } + } + + // If we passed max decimals + if ( ! is_null( $max_decimals ) ) { + $max = max( $max_decimals, $max ); + } + + $output_costs = []; + $costs = call_user_func_array( 'array_merge', array_values( $costs ) ); + + foreach ( $costs as $cost ) { + $numeric_cost = str_replace( $this->get_separators(), '.', $cost ); + + if ( is_numeric( $numeric_cost ) ) { + // Creates a Well Balanced Index that will perform good on a Key Sorting method + $index = str_replace( [ '.', ',' ], '', number_format( $numeric_cost, $max ) ); + } else { + // Makes sure that we have "index-safe" string + $index = sanitize_title( $numeric_cost ); + } + + // Keep the Costs in a organizable array by keys with the "numeric" value + $output_costs[ $index ] = $cost; + } + + // Filter keeping the Keys + if ( $sort ) { + ksort( $output_costs ); + } + + return (array) $output_costs; + } + + /** + * Returns a minimum cost in a list of costs. If an array of costs is not passed in, the array of costs is fetched + * via query. + * + * @param $costs mixed Cost(s) to review for min value + * + * @return float + */ + public function get_minimum_cost( $costs = null ) { + return $this->get_cost_by_func( $costs, 'min' ); + } + + /** + * Converts the original decimal separator to ".". + * + * @param string|int $value + * + * @return string + */ + protected function convert_decimal_separator( $value ) { + return preg_replace( '/[' . preg_quote( $this->_supported_decimal_separators ) . ']/', '.', $value ); + } + + /** + * Restores the decimal separator to its original symbol. + * + * @param string $value + * + * @return string + */ + protected function restore_original_decimal_separator( $value ) { + return str_replace( '.', $this->_current_original_cost_separator, $value ); + } + + /** + * Extracts int and floats from a numeric "dirty" string like strings that might contain other symbols. + * + * E.g. "$10" will yield "10"; "23.55$" will yield "23.55". + * + * @param string|int $value + * + * @return int|float + */ + protected function numerize_numbers( $value ) { + $matches = []; + + $pattern = '/(\\d{1,}([' . $this->_supported_decimal_separators . ']\\d{1,}))/'; + + return preg_match( $pattern, $value, $matches ) ? $matches[1] : $value; + } + + /** + * Parses the currency symbol part of a cost string. + * + * @param string|array $cost A string cost, a comma separated array of string costs or an array of costs. + * + * @return false|string Either the inferred currency symbol or `false` if the currency symbol is missing or not consistent. + */ + public function parse_currency_symbol( $cost ) { + if ( empty( $cost ) ) { + return false; + } + + $original_costs = is_array( $cost ) ? $cost : preg_split( '/\\s*,\\s*/', $cost ); + $costs = $this->parse_cost_range( $original_costs, null, false ); + + if ( empty( $costs ) ) { + return false; + } + + $currency_symbols = []; + $i = 0; + foreach ( $costs as $string => $value ) { + if ( is_numeric( $string ) ) { + $currency_symbols[] = trim( str_replace( $value, '', $original_costs[ $i ] ) ); + if ( end( $currency_symbols ) !== reset( $currency_symbols ) ) { + return false; + } + } + + $i ++; + } + + return ! empty( $currency_symbols ) ? reset( $currency_symbols ) : false; + } + + /** + * Parses the currency symbol position part of a cost string. + * + * @param string|array $cost A string cost, a comma separated array of string costs or an array of costs. + * + * @return false|string Either the inferred currency symbol position or `false` if not present or not consistent. + */ + public function parse_currency_position( $cost ) { + if ( empty( $cost ) ) { + return false; + } + + $original_costs = is_array( $cost ) ? $cost : preg_split( '/\\s*,\\s*/', $cost ); + $currency_symbol = $this->parse_currency_symbol( $original_costs ); + + if ( empty( $currency_symbol ) ) { + return false; + } + + $currency_positions = []; + foreach ( $original_costs as $original_cost ) { + $currency_symbol_position = strpos( trim( $original_cost ), $currency_symbol ); + if ( false === $currency_symbol_position ) { + continue; + } + + $currency_positions[] = 0 === $currency_symbol_position ? 'prefix' : 'postfix'; + if ( end( $currency_positions ) !== reset( $currency_positions ) ) { + return false; + } + } + + return ! empty( $currency_positions ) ? reset( $currency_positions ) : false; + } + + /** + * Parses the cost value and current locale to infer decimal and thousands separators. + * + * The cost values stored in the meta table might not use the same decimal and thousands separator as the current + * locale. + * To work around this we parse the value assuming the decimal separator will be the last non-numeric symbol, + * if any. + * + * @since 4.9.12 + * + * @param string|int|float $value The cost value to parse. + * + * @return array An array containing the parsed decimal and thousands separator symbols. + */ + public function parse_separators( $value ) { + global $wp_locale; + $locale_decimal_point = $wp_locale->number_format['decimal_point']; + $locale_thousands_sep = $wp_locale->number_format['thousands_sep']; + $decimal_sep = $locale_decimal_point; + $thousands_sep = $locale_thousands_sep; + + preg_match_all( '/[\\.,]+/', $value, $matches ); + + if ( ! empty( $matches[0] ) ) { + $matched_separators = $matches[0]; + if ( count( array_unique( $matched_separators ) ) > 1 ) { + // We have both, the decimal separator will be the last non-numeric symbol. + $decimal_sep = end( $matched_separators ); + $thousands_sep = reset( $matched_separators ); + } else { + /* + * We only have one, we can assume it's the decimal separator if it comes before a number of numeric + * symbols that is not exactly 3. If there are exactly 3 number after the symbols we fall back on the + * locale; we did our best and cannot guess any further. + */ + $frags = explode( end( $matched_separators ), $value ); + if ( strlen( end( $frags ) ) !== 3 ) { + $decimal_sep = end( $matched_separators ); + $thousands_sep = $decimal_sep === $locale_decimal_point ? + $locale_thousands_sep + : $locale_decimal_point; + } + } + } + + return [ $decimal_sep, $thousands_sep ]; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Credits.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Credits.php new file mode 100644 index 000000000..c87bc1f51 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Credits.php @@ -0,0 +1,116 @@ +hook(); + } + + /** + * Hook the functionality of this class into the world + */ + public function hook() { + add_filter( 'tribe_events_after_html', [ $this, 'html_comment_credit' ] ); + add_filter( 'admin_footer_text', [ $this, 'rating_nudge' ], 1, 2 ); + } + + /** + * Add credit in HTML page source + * + * @return void + **/ + public function html_comment_credit( $after_html ) { + + if ( ! class_exists( 'Tribe__Events__Main' ) ) { + return $after_html; + } + + $html_credit = "\n\n"; + $after_html .= apply_filters( 'tribe_html_credit', $html_credit ); + return $after_html; + } + + /** + * Add ratings nudge in admin footer + * + * @param $footer_text + * + * @return string + */ + public function rating_nudge( $footer_text ) { + $admin_helpers = Tribe__Admin__Helpers::instance(); + + add_filter( 'tribe_tickets_post_types', [ $this, 'tmp_return_tribe_events' ], 99 ); + + $review_text_tec = esc_html__( 'Rate %1$sThe Events Calendar%2$s %3$s', 'tribe-common' ); + $review_url_tec = 'https://wordpress.org/support/plugin/the-events-calendar/reviews/?filter=5'; + + $review_text_et = esc_html__( 'If you like %1$sEvent Tickets%2$s please leave us a %3$s. It takes a minute and it helps a lot.', 'tribe-common' ); + $review_url_et = 'https://wordpress.org/support/plugin/event-tickets/reviews/?filter=5'; + + // Only display custom text on Tribe Admin Pages. + if ( $admin_helpers->is_screen() || $admin_helpers->is_post_type_screen() ) { + + if ( class_exists( 'Tribe__Events__Main' ) ) { + // If we have TEC and ET, split the impressions 50/50. + if ( class_exists( 'Tribe__Tickets__Main' ) && wp_rand( 0,1 ) ) { + $review_text = $review_text_et; + $review_url = $review_url_et; + } else { + $review_text = $review_text_tec; + $review_url = $review_url_tec; + } + } else { + $review_text = $review_text_et; + $review_url = $review_url_et; + } + + $footer_text = sprintf( + $review_text, + '', + '', + '★★★★★' + ); + } + + remove_filter( 'tribe_tickets_post_types', [ $this, 'tmp_return_tribe_events' ], 99 ); + + /** + * Filters the admin footer text. + * + * @since 4.15.0 + * + * @param $footer_text The admin footer text. + */ + return apply_filters( 'tec_admin_footer_text', $footer_text ); + } + + /** + * temporary function to filter event types down to only tribe-specific types + * + * This will limit the request for ratings to only those post type pages + */ + public function tmp_return_tribe_events( $unused_post_types ) { + return [ 'tribe_events' ]; + } + + /** + * @var $instance + */ + private static $instance = null; + + /** + * @return self + */ + public static function instance() { + if ( empty( self::$instance ) ) { + self::$instance = new self(); + } + + return self::$instance; + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer.php new file mode 100644 index 000000000..a153ded51 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer.php @@ -0,0 +1,1073 @@ +is_active() ) { + return; + } + + /** + * Filters the Panel ID, which is also the `wp_option` name for the Customizer settings + * + * @since 4.4 + * + * @param string $ID + * @param self $customizer + */ + $this->ID = apply_filters( 'tribe_customizer_panel_id', 'tribe_customizer', $this ); + + // Hook the Registering methods + add_action( 'customize_register', [ $this, 'register' ], 15 ); + + add_action( 'wp_print_footer_scripts', [ $this, 'print_css_template' ], 15 ); + add_action( 'customize_controls_print_footer_scripts', [ $this, 'customize_controls_print_footer_scripts' ], 15 ); + + // front end styles from customizer + add_action( 'tribe_events_pro_widget_render', [ $this, 'inline_style' ], 101 ); + add_action( 'wp_print_footer_scripts', [ $this, 'shortcode_inline_style' ], 10 ); + add_action( 'wp_print_footer_scripts', [ $this, 'widget_inline_style' ], 10 ); + + /** + * Allows filtering the action that will be used to trigger the printing of inline scripts. + * + * By default inline scripts will be printed on the `wp_enqueue_scripts` action, but other + * plugins or later iterations might require inline styles to be printed on other actions. + * + * @since 4.12.15 + * + * @param string $inline_script_action_handle The handle of the action that will be used to try + * and attempt to print inline scripts. + */ + $print_styles_action = apply_filters( 'tribe_customizer_print_styles_action', 'wp_enqueue_scripts' ); + + add_action( $print_styles_action, [ $this, 'inline_style' ], 15 ); + + add_filter( "default_option_{$this->ID}", [ $this, 'maybe_fallback_get_option' ] ); + } + + /** + * Backwards compatibility for the old Customizer Option Save + * + * @since 4.4 + * + * @param mixed $sections + * + * @return mixed + */ + public function maybe_fallback_get_option( $sections ) { + // Return if there is something there + if ( ! empty( $sections ) ) { + return $sections; + } + + return get_option( 'tribe_events_pro_customizer', [] ); + } + + /** + * Loads a Section to the Customizer on The Events Calendar's Panel + * + * @since 4.4 + * + * @param object $section An Object that extends the Abstract `Tribe__Customizer__Section` + * + * @return bool + */ + public function load_section( $section ) { + // You can only add a section if it extends the abstract Section + if ( ! is_object( $section ) || ! in_array( 'Tribe__Customizer__Section', class_parents( $section ) ) ) { + return false; + } + + // Add the Section + // Enforces the usage of `$instance->ID` + $this->sections_class[ $section->ID ] = $section; + + return true; + } + + /** + * Fetches all Section Classes + * + * @since 4.4 + * + * @return array + */ + public function get_loaded_sections() { + /** + * Allow developers to filter Classes from Customizer Sections + * + * @deprecated + * @since 4.0 + * + * @param array $sections_class + * @param self $customizer + */ + $this->sections_class = apply_filters( 'tribe_events_pro_customizer_sections_class', $this->sections_class, $this ); + + /** + * Allow developers to filter Classes from Customizer Sections + * + * @since 4.4 + * + * @param array $sections_class + * @param self $customizer + */ + $this->sections_class = apply_filters( 'tribe_customizer_sections_class', $this->sections_class, $this ); + + return $this->sections_class; + } + + /** + * Returns the section requested by ID. + * + * @since 4.13.3 + * + * @param string $id The ID of the desired section. + * + * @return boolean|Tribe__Customizer__Section The requested section or boolean false if not found. + */ + public function get_section( $id ) { + $sections = $this->get_loaded_sections(); + + if ( empty( $sections[ $id ] ) ) { + return false; + } + + return $sections[ $id ]; + } + + /** + * A easy way to check if customize is active + * + * @since 4.2.2 + * + * @return boolean + */ + public function is_active() { + /** + * Allows Developers to completely deactivate Events Calendar Customizer + * + * @deprecated + * + * @param boolean $is_active + */ + $is_active = apply_filters( 'tribe_events_pro_customizer_is_active', true ); + + /** + * Allows Developers to completely deactivate Events Calendar Customizer + * + * @param boolean $is_active + */ + return apply_filters( 'tribe_customizer_is_active', true ); + } + + /** + * A method to easily search on an array + * + * @since 4.0 + * + * @param array $variable Variable to be searched + * @param array $indexes The index that the method will try to retrieve + * @param mixed $default If the variable doesn't exist, what is the default + * + * @return mixed Return the variable based on the index + */ + public static function search_var( $variable = null, $indexes = [], $default = null ) { + if ( is_object( $variable ) ) { + $variable = (array) $variable; + } + + if ( ! is_array( $variable ) ) { + return $variable; + } + + foreach ( (array) $indexes as $index ) { + if ( ! is_array( $variable ) || ! isset( $variable[ $index ] ) ) { + $variable = $default; + break; + } + + $variable = $variable[ $index ]; + } + + return $variable; + } + + /** + * Get an option from the database, using index search you can retrieve the full panel, a section or even a setting. + * + * @since 4.4 + * + * @param array $search Index search, array( 'section_name', 'setting_name' ). + * @param mixed $default The default, if the requested variable doesn't exits. + * + * @return mixed The requested option or the default. + */ + public function get_option( $search = null, $default = null ) { + $sections = get_option( $this->ID, $default ); + + foreach ( $this->get_loaded_sections() as $section ) { + /** + * Allow filtering the defaults for each settings to be filtered before the Ghost options to be set + * + * @deprecated + * @since 4.0 + * + * @param array $defaults + */ + $defaults[ $section->ID ] = apply_filters( "tribe_events_pro_customizer_section_{$section->ID}_defaults", [] ); + + /** + * Allow filtering the defaults for each settings to be filtered before the Ghost options to be set + * + * @since 4.4 + * + * @param array $defaults + */ + $settings = isset( $sections[ $section->ID ] ) ? $sections[ $section->ID ] : []; + $defaults[ $section->ID ] = apply_filters( "tribe_customizer_section_{$section->ID}_defaults", $settings ); + $sections[ $section->ID ] = wp_parse_args( $settings, $defaults[ $section->ID ] ); + } + + /** + * Allows Ghost Options to be inserted + * + * @deprecated + * @since 4.0 + * + * @param array $sections + * @param array $search + */ + $sections = apply_filters( 'tribe_events_pro_customizer_pre_get_option', $sections, $search ); + + /** + * Allows Ghost Options to be inserted + * + * @since 4.4 + * + * @param array $sections + * @param array $search + */ + $sections = apply_filters( 'tribe_customizer_pre_get_option', $sections, $search ); + + // Search on the Array + if ( ! is_null( $search ) ) { + $option = self::search_var( $sections, $search, $default ); + } else { + $option = $sections; + } + + /** + * Apply Filters After finding the variable + * + * @since 4.4 + * + * @param mixed $option + * @param array $search + * @param array $sections + */ + $option = apply_filters( 'tribe_customizer_get_option', $option, $search, $sections ); + + return $option; + } + + /** + * Check if the option exists, this method is used allow only sections that were saved to be applied. + * + * @param strings Using the following structure: self::has_option( 'section_name', 'setting_name' ); + * + * @return boolean Whether the option exists in the database + */ + public function has_option() { + $search = func_get_args(); + $option = self::get_option(); + $real_option = get_option( $this->ID, [] ); + + // Get section and Settings based on keys + $section = reset( $search ); + $setting = end( $search ); + + if ( empty( $real_option ) || empty( $real_option[ $section ] ) ) { + return false; + } + + // Search on the Array + if ( ! is_null( $search ) ) { + $option = self::search_var( $option, $search, null ); + } + + return ! empty( $option ); + } + + /** + * Add an action for some backwards compatibility. + * + * @since 4.14.2 + * + * @return void + */ + public function customize_controls_print_footer_scripts() { + /** + * Allows plugins to hook in and add any scripts they need at the right time. + * + * @param Tribe__Customizer $customizer The current instance of Tribe__Customizer. + */ + do_action( 'tribe_enqueue_customizer_scripts', $this ); + } + + /** + * Print the CSS for the customizer on `wp_print_footer_scripts` + * + * @since 4.12.6 Moved the template building code to the `get_styles_scripts` method. + * + * @return void + */ + public function print_css_template() { + + //Only load in Customizer + if ( ! is_customize_preview() ) { + return false; + } + + echo $this->get_styles_scripts(); + } + + /** + * Print the CSS for the customizer for shortcodes. + * + * @since 4.12.6 + */ + public function shortcode_inline_style() { + /** + * Whether customizer styles should print for shortcodes or not. + * + * @since 4.12.6 + * + * @param boolean $should_print Whether the inline styles should be printed on screen. + */ + $should_print = apply_filters( 'tribe_customizer_should_print_shortcode_customizer_styles', false ); + + if ( empty( $should_print ) ) { + return; + } + + $this->inline_style(); + } + + /** + * Print the CSS for the customizer for widgets. + * + * @since 4.12.14 + */ + public function widget_inline_style() { + /** + * Whether customizer styles should print for widgets or not. + * + * @since 4.12.14 + * + * @param boolean $should_print Whether the inline styles should be printed on screen. + */ + $should_print = apply_filters( 'tribe_customizer_should_print_widget_customizer_styles', false ); + + if ( empty( $should_print ) ) { + return; + } + + $this->inline_style(); + } + + /** + * Print the CSS for the customizer using wp_add_inline_style + * + * @since 4.12.15 Added the `$force` parameter to force the print of the style inline. + * + * @param bool $force Whether to ignore the context to try and print the style inline, or not. + */ + public function inline_style( $force = false ) { + // Only load once on front-end. + if ( ! $force && ( is_customize_preview() || is_admin() || $this->inline_style ) ) { + return false; + } + + /** + * Use this filter to add more CSS, using Underscore Template style + * + * @since 4.4 + * + * @link http://underscorejs.org/#template + * + * @param string $template + */ + $css_template = trim( apply_filters( 'tribe_customizer_css_template', '' ) ); + + // If we don't have anything on the customizer don't print empty styles + if ( empty( $css_template ) ) { + return false; + } + + $sheets = [ + 'tribe-common-full-style', + ]; + + /** + * Allow plugins to add themselves to this list. + * + * @since 4.12.1 + * + * @param array $sheets An array of sheets to search for. + * @param string $css_template String containing the inline css to add. + */ + $sheets = apply_filters( 'tribe_customizer_inline_stylesheets', $sheets, $css_template ); + + if ( empty( $sheets ) ) { + return false; + } + + // Add customizer styles inline with the latest stylesheet that is enqueued. + foreach ( array_reverse( $sheets ) as $sheet ) { + if ( wp_style_is( $sheet ) ) { + $inline_style = wp_strip_all_tags( $this->parse_css_template( $css_template ) ); + + /** + * Fires before a style is, possibly, printed inline depending on the stylesheet. + * + * @since 4.12.15 + * + * @param string $sheet The handle of the stylesheet the style will be printed inline for. + * @param string $inline_style The inline style contents, as they will be printed on the page. + */ + do_action( 'tribe_customizer_before_inline_style', $sheet, $inline_style ); + + // Just print styles if doing 'wp_print_footer_scripts' action. + $just_print = (bool) doing_action( 'wp_print_footer_scripts' ); + + if ( $just_print ) { + printf( + "\n", + esc_attr( $sheet ), + $inline_style + ); + } else { + wp_add_inline_style( $sheet, $inline_style ); + } + + $this->inline_style = true; + + break; + } + } + } + + /** + * Replaces the Settings using the Underscore templating strings + * + * @param string $template The template variable, that we will look to replace the variables + * @return string A Valid css after replacing the variables + */ + private function parse_css_template( $template ) { + $css = $template; + $sections = $this->get_option(); + + $search = []; + $replace = []; + + foreach ( $sections as $section => $settings ) { + if ( ! is_array( $settings ) ) { + continue; + } + foreach ( $settings as $setting => $value ) { + $index = [ $section, $setting ]; + + // Add search based on Underscore template + $search[] = '<%= ' . implode( '.', $index ) . ' %>'; + + // Get the Replace value + $replace[] = $value; + } + } + + // Finally Str replace + return str_replace( $search, $replace, $css ); + } + + /** + * Method to start setting up the Customizer Section and Fields + * + * @since 4.0 + * + * @param WP_Customize_Manager $customizer WordPress Customizer variable + * @return void + */ + public function register( WP_Customize_Manager $customizer ) { + // Set the Customizer on a class variable + $this->manager = $customizer; + + /** + * Allow users to filter the Panel + * + * @since 4.4 + * + * @param WP_Customize_Panel $panel + * @param Tribe__Customizer $customizer + */ + $this->panel = apply_filters( 'tribe_customizer_panel', $this->register_panel(), $this ); + + /** + * Filter the Sections within our Panel before they are added to the Customize Manager + * + * @since 4.4 + * + * @param array $sections + * @param Tribe__Customizer $customizer + */ + $this->sections = apply_filters( 'tribe_customizer_pre_sections', $this->sections, $this ); + + foreach ( $this->sections as $id => $section ) { + $this->sections[ $id ] = $this->register_section( $id, $section ); + + /** + * Allows people to Register and de-register the method to register more Fields + * + * @since 4.4 + * @since 4.12.15 Add Customizer instance as a parameter. + * + * @param array $section + * @param WP_Customize_Manager $manager + * @param Tribe__Customizer $customizer The current customizer instance. + */ + do_action( "tribe_customizer_register_{$id}_settings", $this->sections[ $id ], $this->manager, $this ); + } + + /** + * Filter the Sections within our Panel, now using the actual WP_Customize_Section + * + * @since 4.4 + * + * @param array $sections + * @param Tribe__Customizer $customizer + */ + $this->sections = apply_filters( 'tribe_customizer_sections', $this->sections, $this ); + + // After everything is done, try to add Selective refresh + $this->maybe_selective_refresh(); + } + + /** + * Register the base Panel for Events Calendar Sections to be attached to + * + * @since 4.0 + * + * @return WP_Customize_Panel + */ + private function register_panel() { + $panel = $this->manager->get_panel( $this->ID ); + + // If the Panel already exists we leave returning it's instance + if ( ! empty( $panel ) ) { + return $panel; + } + + $panel_args = [ + 'title' => esc_html__( 'The Events Calendar', 'tribe-common' ), + 'description' => esc_html__( 'Use the following panel of your customizer to change the styling of your Calendar and Event pages.', 'tribe-common' ), + + // After `static_front_page` + 'priority' => 125, + ]; + + /** + * Filter the Panel Arguments for WP Customize + * + * @since 4.4 + * + * @param array $args + * @param string $ID + * @param Tribe__Customizer $customizer + */ + $panel_args = apply_filters( 'tribe_customizer_panel_args', $panel_args, $this->ID, $this ); + + // Actually Register the Panel + $this->manager->add_panel( $this->ID, $panel_args ); + + // Return the Panel instance + return $this->manager->get_panel( $this->ID ); + } + + /** + * Returns a URL to the TEC Customizer panel. + * + * @since 4.14.0 + * + * @return string The URL to the TEC Customizer panel. + */ + public function get_panel_url() { + $query['autofocus[panel]'] = 'tribe_customizer'; + return add_query_arg( $query, admin_url( 'customize.php' ) ); + } + + /** + * Returns an HTML link directly to the (opened) TEC Customizer panel + * + * @since 4.14.0 + * + * @param string $link_text The (pre)translated text for the link. + * + * @return string The HTML anchor element, linking to the TEC Customizer panel. + * An empty string is returned if missing a parameter. + */ + public function get_panel_link( $link_text ) { + if ( empty( $link_text ) || ! is_string( $link_text ) ) { + return ''; + } + + $panel_url = $this->get_panel_url(); + + return sprintf( + '%2$s', + esc_url( $panel_url ), + esc_html( $link_text ) + ); + } + + /** + * Use a "alias" method to register sections to allow users to filter args and the ID + * + * @since 4.0 + * + * @param string $id The Unique section ID + * @param array $args Arguments to register the section + * + * @link https://codex.wordpress.org/Class_Reference/WP_Customize_Manager/add_section + * + * @return WP_Customize_Section + */ + public function register_section( $id, $args ) { + /** + * Filter the Section ID + * + * @since 4.4 + * + * @param string $section_id + * @param Tribe__Customizer $customizer + */ + $section_id = apply_filters( 'tribe_customizer_section_id', $id, $this ); + + // Tries to fetch the section + $section = $this->manager->get_section( $section_id ); + + // If the Panel already exists we leave returning it's instance + if ( ! empty( $section ) ) { + return $section; + } + + /** + * Filter the Section arguments, so that developers can filter arguments based on $section_id + * + * @since 4.4 + * + * @param array $args + * @param string $section_id + * @param Tribe__Customizer $customizer + */ + $section_args = apply_filters( 'tribe_customizer_section_args', $args, $section_id, $this ); + + // Don't allow sections outside of our panel + $section_args['panel'] = $this->panel->id; + + // Actually Register the Section + $this->manager->add_section( $section_id, $section_args ); + + // Return the Section instance + return $this->manager->get_section( $section_id ); + } + + /** + * Returns a URL to the a specific TEC Customizer section. + * + * @since 4.14.0 + * + * @param string $section The slug for the desired section. + * + * @return string The URL to the TEC Customizer section. + */ + public function get_section_url( $section ) { + if ( empty( $section ) ) { + return ''; + } + + $query['autofocus[section]'] = $section; + return add_query_arg( $query, admin_url( 'customize.php' ) ); + } + + /** + * Gets the HTML link to a section in the TEC Customizer. + * + * @since 4.14.0 + * + * @param string $section The section "slug" to link to. + * @param string $link_text The text for the link. + * + * @return string The HTML anchor element, linking to the TEC Customizer section. + * An empty string is returned if missing a parameter. + */ + public function get_section_link( $section, $link_text = '' ) { + if ( empty( $section ) || empty( $link_text ) || ! is_string($link_text ) ) { + return ''; + } + + + $panel_url = $this->get_section_url( $section ); + if ( empty( $panel_url ) ) { + return ''; + } + + return sprintf( + '%2$s', + esc_url( $panel_url ), + esc_html( $link_text ) + ); + } + + /** + * Build the Setting name using the HTML format for Arrays + * + * @since 4.0 + * + * @param string $slug The actual Setting name + * @param string|WP_Customize_Section $section The section the setting lives in. + * + * @return string HTML name Attribute name of the setting. + */ + public function get_setting_name( $slug, $section = null ) { + $name = ! empty( $this->panel->id ) ? $this->panel->id : ''; + + // If there is a section set append it + if ( $section instanceof WP_Customize_Section ) { + $name .= '[' . $section->id . ']'; + } elseif ( is_string( $section ) ) { + $name .= '[' . $section . ']'; + } + + // Set the actual setting slug + $name .= '[' . esc_attr( $slug ) . ']'; + + return $name; + } + + /** + * Adds a setting field name to the Array of Possible Selective refresh fields + * + * @since 4.2 + * + * @param string $name The actual Setting name + * + * @return array The list of existing Settings, the new one included + */ + public function add_setting_name( $name ) { + $this->settings[] = $name; + return $this->settings; + } + + /** + * Gets the URL to a specific control/setting in the TEC Customizer. + * + * @since 4.14.0 + * + * @param string $section The section "slug" to link into. + * @param string $setting The setting "slug" to link to. + * + * @return string The URL to the setting. + * An empty string is returned if a parameter is missing or the setting control cannot be found. + */ + public function get_setting_url( $section, $setting ) { + // Bail if something is missing. + if ( empty( $setting ) || empty( $section ) ) { + return ''; + } + + $control = $this->get_setting_name( $setting, $section ); + + if ( empty( $control ) ) { + return ''; + } + + $query['autofocus[control]'] = $control; + + return add_query_arg( $query, admin_url( 'customize.php' ) ); + } + + /** + * Gets the link to the a specific control/setting in the TEC Customizer. + * + * @since 4.14.0 + * + * @param string $section The section "slug" to link into. + * @param string $setting The setting "slug" to link to. + * @param string $link_text The translated text for the link. + * + * @return string The HTML anchor element, linking to the TEC Customizer setting. + * An empty string is returned if missing a parameter or the setting control cannot be found. + */ + public function get_setting_link( $section, $setting, $link_text ) { + // Bail if something is missing. + if ( empty( $setting ) || empty( $section ) || empty( $link_text ) ) { + return ''; + } + + $control_url = $this->get_setting_url( $section, $setting ); + + if ( empty( $control_url ) ) { + return ''; + } + + return sprintf( + '%2$s', + esc_url( $control_url ), + esc_html( $link_text ) + ); + } + + /** + * Using the Previously created CSS element, we not just re-create it every setting change + * + * @since 4.2 + * + * @return void + */ + public function maybe_selective_refresh() { + // Only try to apply selective refresh if it's active + if ( ! isset( $this->manager->selective_refresh ) ) { + return; + } + + foreach ( $this->settings as $name ) { + $setting = $this->manager->get_setting( $name ); + + // Skip if we don't have that setting then skip it + if ( is_null( $setting ) ) { + continue; + } + + // Skip if we already have that + if ( ! is_null( $this->manager->selective_refresh->get_partial( $name ) ) ) { + continue; + } + + // Remove the Setting + // We need this because settings are protected on the WP_Customize_Manager + $this->manager->remove_setting( $name ); + + // Change the Transport + $setting->transport = 'postMessage'; + + // Re-add the setting + // We need this because settings are protected on the WP_Customize_Manager + $this->manager->add_setting( $setting ); + + // Add the Partial + $this->manager->selective_refresh->add_partial( + $name, + [ + 'selector' => '#' . esc_attr( $this->ID . '_css' ), + 'render_callback' => [ $this, 'print_css_template' ], + ] + ); + } + } + + /** + * Builds and returns the Customizer CSS template contents. + * + * The method DOES NOT check if the current context is the one where the Customizer template should + * be printed or not; that care is left to the code calling this method. + * + * @since 4.12.6 Extracted this method from the `print_css_template` one. + * + * @return string The CSS template contents. + */ + public function get_styles_scripts() { + /** + * Use this filter to add more CSS, using Underscore Template style. + * + * @since 4.4 + * + * @param string $template The Customizer template. + * + * @link http://underscorejs.org/#template + */ + $css_template = trim( apply_filters( 'tribe_customizer_css_template', '' ) ); + + // If we don't have anything on the Customizer, then don't print empty styles. + if ( empty( $css_template ) ) { + return ''; + } + + // Prepare the customizer scripts. + $result = ''; + + // Prepare the customizer styles. + $result .= ''; + + return $result; + } + + /** + * Inserts link to TEC Customizer section for FSE themes in admin (left) menu. + * + * @since 4.14.8 + */ + public function add_fse_customizer_link() { + _deprecated_function( __METHOD__, '4.14.18', 'No replacement. Customizer menu item is preserved as long as we activate it.'); + // Exit early if the current theme is not a FSE theme. + if ( ! tec_is_full_site_editor() ) { + return; + } + + // Add a link to the TEC panel in the Customizer. + add_submenu_page( + 'themes.php', + _x( 'Customize The Events Calendar', 'Page title for the TEC Customizer section.', 'tribe-common' ), + _x( 'Customize The Events Calendar', 'Menu item text for the TEC Customizer section link.', 'tribe-common' ), + 'edit_theme_options', + esc_url( add_query_arg( 'autofocus[panel]', 'tribe_customizer' , admin_url( 'customize.php' ) ) ) + ); + } + + /** + * Inserts link to TEC Customizer section for FSE themes in Events > Settings > Display. + * + * @since 4.14.8 + * + * @param array $settings The existing settings array. + * + * @return array $settings The modified settings array. + */ + public function add_fse_customizer_link_to_display_tab( $settings ) { + _deprecated_function( __METHOD__, '4.14.18', 'No replacement. Customizer link is preserved as long as we activate it.'); + // Exit early if the current theme is not a FSE theme. + if ( ! tec_is_full_site_editor() ) { + return $settings; + } + + $new_settings = [ + 'tribe-customizer-section-title' => [ + 'type' => 'html', + 'html' => '

    ' . __( 'Customizer', 'tribe-common' ) . '

    ', + ], + 'tribe-customizer-link-description' => [ + 'type' => 'html', + 'html' => '

    ' . __( 'Adjust colors, fonts, and more with the WordPress Customizer.', 'tribe-common' ) . '

    ', + ], + 'tribe-customizer-link' => [ + 'type' => 'html', + 'html' => sprintf( + /* translators: %1$s: opening anchor tag; %2$s: closing anchor tag */ + esc_html_x( '%1$sCustomize The Events Calendar%2$s', 'Link text added to the TEC->Settings->Display tab.', 'tribe-common' ), + '

    ', + '

    ' + ), + ], + ]; + + $settings = Tribe__Main::array_insert_after_key( 'tribe-form-content-start', $settings, $new_settings ); + + return $settings; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer/Control.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer/Control.php new file mode 100644 index 000000000..2a4dacf8e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Customizer/Control.php @@ -0,0 +1,20 @@ + + */ + public $settings = []; + + /** + * Render the control's content + * + * @since 4.12.14 + */ + public function render_content() { ?> + +

    + label ); ?> +

    + + description ) ) : ?> + +

    + description ); ?> +

    + + + * so that it matches our other controls stylistically (spacing, etc). + * + * @since 4.12.13 + * + * @package Tribe\Customizer\Controls + */ + +namespace Tribe\Customizer\Controls; + +use Tribe\Customizer\Control; + +/** + * Class Number + * + * @since 4.12.13 + * + * @package Tribe\Customizer\Controls + */ +class Number extends Control { + + /** + * Control's Type. + * + * @since 4.12.13 + * + * @var string + */ + public $type = 'number'; + + /** + * Anyone able to set theme options will be able to see the input. + * + * @since 4.12.13 + * + * @var string + */ + public $capability = 'edit_theme_options'; + + /** + * Render the control's content + * + * @since 4.12.13 + */ + public function render_content() { + $input_id = '_customize-input-' . $this->id; + $description_id = '_customize-description-' . $this->id; + $describedby_attr = ( ! empty( $this->description ) ) ? ' aria-describedby="' . esc_attr( $description_id ) . '" ' : ''; + $name = '_customize-number-' . $this->id; + + if ( ! empty( $this->label ) ) : ?> + + + description ) ) : ?> + + description ); ?> + + +
    + + input_attrs(); ?> + input_attrs['value'] ) ) : ?> + value="value() ); ?>" + + link(); ?> + /> +
    + choices ) ) { + return; + } + + $input_id = '_customize-input-' . $this->id; + $description_id = '_customize-description-' . $this->id; + $describedby_attr = ( ! empty( $this->description ) ) ? ' aria-describedby="' . esc_attr( $description_id ) . '" ' : ''; + $name = '_customize-radio-' . $this->id; + ?> + label ) ) : ?> + label ); ?> + + description ) ) : ?> + + description ); ?> + + + + choices as $value => $label ) : ?> + + + value="" + name="" + link(); ?> + value(), $value ); ?> + /> + + + + id; + $description_id = '_customize-description-' . $this->id; + $describedby_attr = ( ! empty( $this->description ) ) ? ' aria-describedby="' . esc_attr( $description_id ) . '" ' : ''; + ?> + label ) ) : ?> + label ); ?> + + description ) ) : ?> + + description ); ?> + + + + + + + name="id ); ?>" + input_attrs(); ?> + link(); ?> + choices ) ) : ?> + list="" + + /> + choices ) ) : ?> +
    + choices as $label => $value ) : ?> +
    +
    + +
    + +
    + + */ + public $settings = []; + + /** + * Render the control's content + * + * @since 4.13.3 + */ + public function render_content() { + ?> +

    +


    +

    + id; + $description_id = '_customize-description-' . $this->id; + $describedby_attr = ( ! empty( $this->description ) ) ? ' aria-describedby="' . esc_attr( $description_id ) . '" ' : ''; + $name = '_customize-toggle-' . $this->id; + + ?> + label ) ) : ?> + label ); ?> + + description ) ) : ?> + + description ); ?> + + + + + + + 10, + 'capability' => 'edit_theme_options', + 'title' => null, + 'description' => null, + ]; + + /** + * Allows sections to be loaded in order for overrides. + * + * @var integer + */ + public $queue_priority = 15; + + /** + * Private variable holding the class Instance. + * + * @since 4.0 + * + * @access private + * @var Tribe__Events__Pro__Customizer__Section + */ + private static $instances; + + /** + * Contains the arguments for the section headings. + * + * @since 4.14.2 + * + * @var array + */ + protected $content_headings = []; + + /** + * Contains the arguments for the section settings. + * + * @since 4.14.2 + * + * @var array + */ + protected $content_settings = []; + + /** + * Contains the arguments for the section controls. + * + * @since 4.14.2 + * + * @var array + */ + protected $content_controls = []; + + /** + * Setup and Load hooks for this Section. + * + * @since 4.0 + * + * @return Tribe__Customizer__Section + */ + final public function __construct() { + // If for weird reason we don't have the Section name + if ( ! is_string( $this->ID ) ){ + $this->ID = self::get_section_slug( get_class( $this ) ); + } + + // Allow child classes to setup the section. + $this->setup(); + + // Hook the Register methods + add_action( "tribe_customizer_register_{$this->ID}_settings", [ $this, 'register_settings' ], 10, 2 ); + add_filter( 'tribe_customizer_pre_sections', [ $this, 'register' ], 10, 2 ); + + // Append this section CSS template + add_filter( 'tribe_customizer_css_template', [ $this, 'setup_css_template' ], $this->queue_priority ); + add_filter( "tribe_customizer_section_{$this->ID}_defaults", [ $this, 'get_defaults' ], 10 ); + + // Create the Ghost Options + add_filter( 'tribe_customizer_pre_get_option', [ $this, 'filter_settings' ], 10, 2 ); + + // By Default Invoking a new Section will load, unless `load` is set to false + if ( true === (bool) $this->load ) { + tribe( 'customizer' )->load_section( $this ); + } + } + + /** + * This method will be executed when the Class is Initialized. + * Overwrite this method to be able to setup the arguments of your section. + * + * @return void + */ + public function setup() { + $this->arguments = $this->get_arguments(); + $this->setup_content_arguments(); + } + + /** + * Register this Section. + * + * @param array $sections Array of Sections. + * @param Tribe__Customizer $customizer Our internal Cutomizer Class Instance. + * + * @return array Return the modified version of the Section array. + */ + public function register( $sections, Tribe__Customizer $customizer ) { + $sections[ $this->ID ] = $this->arguments; + + return $sections; + } + + /** + * Overwrite this method to create the Fields/Settings for this section. + * + * @param WP_Customize_Section $section The WordPress section instance. + * @param WP_Customize_Manager $manager The WordPress Customizer Manager. + * + * @return void + */ + public function register_settings( WP_Customize_Section $section, WP_Customize_Manager $manager ) { + $customizer = tribe( 'customizer' ); + + $settings = $this->get_content_settings(); + + if ( ! empty( $settings ) ) { + foreach ( $settings as $name => $args ) { + $this->add_setting( + $manager, + $customizer->get_setting_name( $name, $section ), + $name, + $args + ); + } + } + + $headings = $this->get_content_headings(); + + if ( ! empty( $headings ) ) { + foreach ( $headings as $name => $args ) { + $this->add_heading( + $section, + $manager, + $customizer->get_setting_name( $name, $section ), + $args + ); + } + } + + $controls = $this->get_content_controls(); + + if ( ! empty( $controls ) ) { + foreach ( $controls as $name => $args ) { + $this->add_control( + $section, + $manager, + $customizer->get_setting_name( $name, $section ), + $args + ); + } + } + } + + /** + * Function that encapsulates the logic for if a setting should be added to the Customizer style template. + * Note: this depends on a default value being set - + * if the setting value is empty OR set to the default value, it's not displayed. + * + * @since 4.13.3 + * + * @param string $setting The setting slug, like 'grid_lines_color'. + * @param int $section_id The ID for the section - defaults to the current one if not set. + * + * @return boolean If the setting should be added to the style template. + */ + public function should_include_setting_css( $setting, $section_id = null ) { + if ( empty( $setting ) || ! is_string( $setting ) ) { + return false; + } + + if ( empty( $section_id ) ) { + $section_id = $this->ID; + } + + $setting_value = tribe( 'customizer' )->get_option( [ $section_id, $setting ] ); + $section = tribe( 'customizer' )->get_section( $section_id ); + + // Something has gone wrong and we can't get the section. + if ( false === $section ) { + return; + } + + return ! empty( $setting_value ) && $section->get_default( $setting ) !== $setting_value; + } + + /** + * Function to simplify getting an option value. + * + * @since 4.13.3 + * + * @param string $setting The setting slug, like 'grid_lines_color'. + * + * @return string The setting value; + */ + public function get_option( $setting ) { + if ( empty( $setting ) ) { + return ''; + } + + return tribe( 'customizer' )->get_option( [ $this->ID, $setting ] ); + } + + /** + * Overwrite this method to be able to create dynamic settings. + * + * @param array $settings The actual options on the database. + * + * @return array $settings The modified settings. + */ + public function create_ghost_settings( $settings = [] ) { + return $settings; + } + + /** + * Get the section slug based on the Class name. + * + * @param string $class_name The name of this Class. + * @return string $slug The slug for this Class. + */ + final public static function get_section_slug( $class_name ) { + $abstract_name = __CLASS__; + $reflection = new ReflectionClass( $class_name ); + + // Get the Slug without the Base name. + $slug = str_replace( $abstract_name . '_', '', $reflection->getShortName() ); + + if ( false !== strpos( $slug, '__Customizer__' ) ) { + $slug = explode( '__Customizer__', $slug ); + $slug = end( $slug ); + } + + return strtolower( $slug ); + } + + /** + * Hooks to the `tribe_customizer_pre_get_option`. This applies the `$this->create_ghost_settings()` method + * to the settings on the correct section. + * + * @param array $settings Values from the Database from Customizer actions. + * @param array $search Indexed search @see Tribe__Customizer::search_var(). + * + * @return array + */ + public function filter_settings( $settings, $search ) { + // Exit early. + if ( null === $search ) { + return $settings; + } + + // Only Apply if getting the full options or Section. + if ( is_array( $search ) && count( $search ) > 1 ) { + return $settings; + } + + if ( is_array( $search ) && count( $search ) === 1 ) { + $settings = $this->create_ghost_settings( $settings ); + } else { + $settings[ $this->ID ] = $this->create_ghost_settings( $settings[ $this->ID ] ); + } + + return $settings; + } + + /* Arguments */ + + /** + * Set up section arguments. + * + * @since 4.13.3 + * + * @return void + */ + public function setup_arguments() {} + + /** + * Filter section arguments. + * + * @since 4.14.0 + * + * @return void + */ + public function filter_arguments( $arguments ) { + /** + * Applies a filter to the argument map for settings. + * + * @since 4.13.3 + * + * @param array $arguments Current set of callbacks for arguments. + * @param static $instance The section instance we are dealing with. + */ + $arguments = apply_filters( 'tribe_customizer_section_arguments', $arguments, $this ); + + $section_slug = static::get_section_slug( get_class( $this ) ); + + /** + * Applies a filter to the argument map for settings for a specific section. Based on the section slug. + * + * @since 4.13.3 + * + * @param array $arguments Current set of callbacks for arguments. + * @param static $instance The section instance we are dealing with. + */ + return apply_filters( "tribe_customizer_section_{$section_slug}_arguments", $arguments, $this ); + } + + /** + * Retrieve section arguments. + * + * @since 4.14.0 + * + * @return void + */ + public function get_arguments() { + return $this->filter_arguments( $this->setup_arguments() ); + } + + /** + * Sets up the Customizer section content. + * + * @since 4.13.3 + */ + public function setup_content_arguments(){ + $this->defaults = $this->setup_defaults(); + $this->content_settings = $this->setup_content_settings(); + $this->content_headings = $this->setup_content_headings(); + $this->content_controls = $this->setup_content_controls(); + } + + /* Default Values */ + + /** + * Set up default values. + * + * @since 4.13.3 + */ + public function setup_defaults() {} + + /** + * Get the (filtered) default settings. + * + * @return array The filtered defaults. + */ + public function get_defaults( $settings = [] ) { + // Create Ghost Options + $settings = $this->create_ghost_settings( wp_parse_args( $settings, $this->setup_defaults() ) ); + + return $this->filter_defaults( $settings ); + } + + public function filter_defaults( $settings ) { + + /** + * Allows filtering the default values for all sections. + * + * @since 4.13.3 + * + * @param array $settings The default settings + * @param Tribe__Customizer__Section $section The section object. + */ + $settings = apply_filters( 'tribe_customizer_section_default_settings', $settings, $this ); + + $section_slug = static::get_section_slug( get_class( $this ) ); + + /** + * Allows filtering the default values for a specific section. + * + * @since 4.13.3 + * + * @param array $settings The default settings + * @param Tribe__Customizer__Section $section The section object. + */ + $settings = apply_filters( "tribe_customizer_section_{$section_slug}_default_settings", $settings, $this ); + + return $settings; + } + + /** + * Get a single Default Value by key. + * + * @param string $key The key for the requested value. + * + * @return mixed The requested value. + */ + public function get_default( $key ) { + $defaults = $this->get_defaults(); + + if ( ! isset( $defaults[ $key ] ) ) { + return null; + } + + return $defaults[ $key ]; + } + + /* Utility Functions */ + + /** + * Sugar function that returns the results of Tribe__Customizer->get_section_url() for the current section. + * + * @since 4.14.0 + * + * @return string The URL to the TEC Customizer section. + */ + public function get_section_url() { + return tribe( 'customizer' )->get_section_url( $this->ID ); + } + + /** + * Sugar function that returns the results of Tribe__Customizer->get_section_link() for the current section. + * Gets the HTML link to the current section in the TEC Customizer. + * + * @since 4.14.0 + * + * @param string $link_text The text for the link. + * + * @return string The HTML anchor element, linking to the TEC Customizer section. + * An empty string is returned if missing a parameter. + */ + public function get_section_link( $link_text ) { + return tribe( 'customizer' )->get_section_link( $this->ID, $link_text ); + } + + /** + * Sugar function that returns the results of Tribe__Customizer->get_settings_url() + * for the specified setting in the _current section_. + * + * @since 4.14.0 + * + * @param string $setting The setting "slug" to link to. + * + * @return string The URL to the setting. + */ + public function get_setting_url( $setting ) { + return tribe( 'customizer' )->get_setting_url( $this->ID, $setting ); + } + + /** + * Sugar function that returns the results of Tribe__Customizer->get_settings_url() + * for the specified setting in the _current section_. + * + * @since 4.14.0 + * + * @param string $setting The setting "slug" to link to. + * @param string $link_text The translated text for the link. + * + * @return string The HTML anchor element, linking to the TEC Customizer setting. + */ + public function get_setting_link( $setting, $link_text ) { + return tribe( 'customizer' )->get_setting_link( $this->ID, $setting, $link_text ); + } + + /* Settings */ + + /** + * Sets up the Customizer settings arguments. + * + * @since 4.13.3 + */ + public function setup_content_settings() {} + + /** + * Get the (filtered) content setting arguments. + * @see filter_content_settings() + * + * @since 4.13.3 + * + * @return array The filtered arguments. + */ + public function get_content_settings() { + return $this->filter_content_settings( $this->setup_content_settings() ); + } + + /** + * Filter the content settings arguments + * + * @since 4.13.3 + * + * @param array $arguments The list of arguments for settings. + * + * @return array $arguments The filtered array of arguments. + */ + public function filter_content_settings( $arguments ) { + /** + * Applies a filter to the validation map for settings. + * + * @since 4.13.3 + * + * @param array $arguments Current set of callbacks for arguments. + * @param static $instance The section instance we are dealing with. + */ + $arguments = apply_filters( 'tribe_customizer_section_content_settings', $arguments, $this ); + + $section_slug = static::get_section_slug( get_class( $this ) ); + + /** + * Applies a filter to the validation map for settings for a specific section. Based on the section slug. + * Ex: tribe_customizer_section_tec_events_bar_default_settings + * + * @since 4.13.3 + * + * @param array $arguments Current set of callbacks for arguments. + * @param static $instance The section instance we are dealing with. + */ + $arguments = apply_filters( "tribe_customizer_section_{$section_slug}_content_settings", $arguments, $this ); + + return $arguments; + } + + /** + * Sugar syntax to add a setting to the customizer content. + * + * @since 4.13.3 + * + * @param WP_Customize_Manager $manager The instance of the Customizer Manager. + * @param string $setting_name HTML name Attribute name of the setting. + * @param string $key The key for the default value. + * @param array $arguments The control arguments. + */ + protected function add_setting( $manager, $setting_name, $key, $args ) { + // Get the default values. + $defaults = [ + 'default' => $this->get_default( $key ), + 'type' => 'option', + ]; + + // Add a setting. + $manager->add_setting( + $setting_name, + array_merge( $defaults, $args ) + ); + } + + /* Headings */ + + /** + * Sets up the Customizer section Header and Separator arguments. + * + * @since 4.13.3 + */ + public function setup_content_headings() {} + + /** + * Get the (filtered) content headings and separator arguments. + * @see filter_content_headings() + * + * @since 4.13.3 + * + * @return array The filtered arguments. + */ + public function get_content_headings() { + return $this->filter_content_headings( $this->setup_content_headings() ); + } + + /** + * Filter the content headings arguments + * + * @since 4.13.3 + * + * @param array $arguments The list of arguments for headings and separators. + * + * @return array $arguments The filtered array of arguments. + */ + public function filter_content_headings( $arguments ) { + /** + * Applies a filter to the validation map for headings. + * + * @since 4.13.3 + * + * @param array $arguments Current set of callbacks for arguments. + * @param static $instance The section instance we are dealing with. + */ + $arguments = apply_filters( 'tribe_customizer_section_content_headings', $arguments, $this ); + + $section_slug = static::get_section_slug( get_class( $this ) ); + + /** + * Applies a filter to the validation map for headings for a specific section. Based on the section slug. + * + * @since 4.13.3 + * + * @param array $arguments Current set of callbacks for arguments. + * @param static $instance The section instance we are dealing with. + */ + return apply_filters( "tribe_customizer_section_{$section_slug}_content_headings", $arguments, $this ); + } + + /** + * Sugar syntax to add heading and separator sections to the customizer content. + * These are controls only in name: they do not actually control or save any setting. + * + * @since 4.13.3 + * + * @param WP_Customize_Manager $manager The instance of the Customizer Manager. + * @param string $name HTML name Attribute name of the setting. + * @param array $arguments The control arguments. + * + */ + protected function add_heading( $section, $manager, $name, $args ) { + $this->add_control( $section, $manager, $name, $args ); + } + + /* Controls */ + + /** + * Sets up the Customizer controls arguments. + * + * @since 4.13.3 + */ + public function setup_content_controls() {} + + /** + * Get a list (array) of accepted control types. + * In the format slug => control class name. + * + * @since 4.13.3 + * + * @return array The array of control types and their associated classes. + */ + public function get_accepted_control_types() { + $accepted_control_types = [ + 'checkbox' => WP_Customize_Control::class, + 'color' => WP_Customize_Color_Control::class, + 'default' => WP_Customize_Control::class, + 'dropdown-pages' => WP_Customize_Control::class, + 'heading' => Heading::class, + 'image' => WP_Customize_Image_Control::class, + 'radio' => Radio::class, + 'select' => WP_Customize_Control::class, + 'separator' => Separator::class, + 'text' => WP_Customize_Control::class, + 'textarea' => WP_Customize_Control::class, + 'number' => Number::class, + 'range-slider' => Range_Slider::class, + 'toggle' => Toggle::class, + ]; + + /** + * Allows filtering the accepted control types. + * + * @since 4.13.3 + * + * @param array $control_types The map of keys to WP Control classes. + */ + return apply_filters( 'tribe_customizer_accepted_control_types', $accepted_control_types, $this ); + } + + /** + * Determine if a control type is in our list of accepted ones. + * + * @since 4.13.3 + * + * @param string $type The "slug" of the control type. + * + * @return boolean If a control type is in our list of accepted ones. + */ + public function is_control_type_accepted( $type ) { + $types = $this->get_accepted_control_types(); + + if ( empty( $type ) ) { + return false; + } + + if ( empty( $types[ $type ] ) ) { + return false; + } + + if ( ! class_exists( $types[ $type ] ) ) { + return false; + } + + return true; + } + + /** + * Gets the class object associated with a control type. + * + * @since 4.13.3 + * + * @param string $type The "slug" of the control type. + * + * @return object|false The control type class or false if type not found. + */ + public function get_control_type( $type ) { + $types = $this->get_accepted_control_types(); + + if ( empty( $type ) ) { + return $types[ 'default' ]; + } + + if ( empty( $types[ $type ] ) ) { + return false; + } + + return $types[ $type ]; + } + + /** + * Get the (filtered) content control arguments. + * @see filter_content_controls() + * + * @since 4.13.3 + * + * @return array The filtered arguments. + */ + public function get_content_controls() { + return $this->filter_content_controls( $this->setup_content_controls() ); + } + + /** + * Filter the content control arguments + * + * @since 4.13.3 + * + * @param array $arguments The list of arguments for controls. + * + * @return array $arguments The filtered array of arguments. + */ + public function filter_content_controls( $arguments ) { + /** + * Applies a filter to the validation map for controls. + * + * @since 4.13.3 + * + * @param array $arguments Current set of callbacks for arguments. + * @param static $instance The section instance we are dealing with. + */ + $arguments = apply_filters( 'tribe_customizer_section_content_controls', $arguments, $this ); + + $section_slug = static::get_section_slug( get_class( $this ) ); + + /** + * Applies a filter to the validation map for controls for a specific section. Based on the section slug. + * + * @since 4.13.3 + * + * @param array $arguments Current set of callbacks for arguments. + * @param static $instance The section instance we are dealing with. + */ + return apply_filters( "tribe_customizer_section_{$section_slug}_content_controls", $arguments, $this ); + } + + /** + * Sugar syntax to add a control to the customizer content. + * + * @since 4.13.3 + * + * @param WP_Customize_Manager $manager The instance of the Customizer Manager. + * @param string $setting_name HTML name Attribute name of the setting. + * @param array $arguments The control arguments. + */ + protected function add_control( $section, $manager, $setting_name, $args ) { + // Validate our control choice. + if ( ! isset( $args['type'] ) ) { + return; + } + + $type = (string) $args['type']; + + if ( ! $this->is_control_type_accepted( $type ) ) { + return; + } + + $type = $this->get_control_type( $type ); + + if ( $section instanceof WP_Customize_Section ) { + $section = (string) $section->id; + } + + if ( ! is_string( $section ) ) { + return; + } + + // Get the default values. + $defaults = [ + 'section' => $section, + ]; + + $args = array_merge( $defaults, $args ); + + $manager->add_control( + new $type( + $manager, + $setting_name, + $args + ) + ); + } + + /* CSS Output Functions */ + + public function setup_css_template( $template ) { + $template = $this->filter_css_template( $this->get_css_template( $template ) ); + + return $template; + } + + /** + * Overwrite this method to be able to implement the CSS template related to this section. + * + * @return string The CSS template. + */ + public function get_css_template( $template ) { + return $template; + } + + /** + * Filter the content headings arguments + * + * @since 4.13.3 + * + * @param array $arguments The list of arguments for headings and separators. + * + * @return array $arguments The filtered array of arguments. + */ + public function filter_css_template( $template ) { + /** + * Applies a filter to the css output. + * Note this is appended to the output - so it's not inside any selectors! + * + * @since 4.13.3 + * + * @param array $template Current set of callbacks for css output. + * @param static $instance The section instance we are dealing with. + */ + $template = apply_filters( 'tribe_customizer_section_css_template', $template, $this ); + + $section_slug = static::get_section_slug( get_class( $this ) ); + + /** + * Applies a filter to the css output for a specific section. Based on the section slug. + * Note this is appended to the output - so it's not inside any selectors! + * + * @since 4.13.3 + * + * @param array $template Current set of callbacks for css output. + * @param static $instance The section instance we are dealing with. + */ + $template = apply_filters( "tribe_customizer_section_{$section_slug}_css_template", $template, $this ); + + return $template; + } + + /** + * Utility function for when we need a color in RGB format, + * since the Customizer always works with hex. Keepin' it DRY. + * + * @since 4.14.2 + * + * @param string $option The option slug, like "grid-lines-color" + * @param string $section The optional section slug, like 'global_elements' + * + * @return string $color_rgb The hex color expressed as an rgb string, like "255,255,255" + */ + public function get_rgb_color( $option, $section = null ) { + $color = is_null( $section ) + ? tribe( 'customizer' )->get_option( [ $this->ID, $option ] ) + : tribe( 'customizer' )->get_option( [ $section, $option ] ); + + $color_obj = new Tribe__Utils__Color( $color ); + $color_arr = $color_obj->getRgb(); + $color_rgb = $color_arr['R'] . ',' . $color_arr['G'] . ',' . $color_arr['B']; + return $color_rgb; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/DB_Lock.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/DB_Lock.php new file mode 100644 index 000000000..cb9e1955b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/DB_Lock.php @@ -0,0 +1,352 @@ + + */ + protected static $held_db_locks = []; + + /** + * Prunes the stale locks stored in the options table. + * + * @since 4.12.6 + * + * @return int|false The number of pruned locks, or `false` to indicate the query to prune the locks generated + * an error (logged). + */ + public static function prune_stale_db_locks() { + global $wpdb; + $prefix = static::$db_lock_option_prefix; + $affected_rows = $wpdb->query( + "DELETE FROM {$wpdb->options} + WHERE option_name LIKE '{$prefix}%' + AND option_value < ( UNIX_TIMESTAMP() - 86400 )" + ); + + if ( false === $affected_rows ) { + $log_data = [ + 'message' => 'Error while trying to prune stale db locks.', + 'error' => $wpdb->last_error + ]; + do_action( 'tribe_log', 'error', __CLASS__, $log_data ); + + return false; + } + + return (int) $affected_rows; + } + + /** + * Acquires a db lock. + * + * To ensure back-compatibility with MySQL 5.6, the lock will hash the lock key using SHA1. + * + * @since 4.12.6 + * + * @param string $lock_key The name of the db lock key to acquire. + * + * @return bool Whether the lock acquisition was successful or not. + */ + public function acquire_db_lock( $lock_key ) { + /** + * Filters the timeout, in seconds, of the database lock acquisition attempts. + * + * The timeout will not be used when locks are managed using queries in place of + * MySQL functions. + * + * @since 4.12.6 + * + * @param int $timeout The timeout, in seconds, of the lock acquisition attempt. + * @param string $lock_key The lock key the target of the acquisition attempt. + * @param static $this The object that's trying to acquire the lock by means of the trait. + */ + $timeout = apply_filters( 'tribe_db_lock_timeout', 3, $lock_key, $this ); + + if ( $this->manage_db_lock_w_mysql_functions() ) { + return $this->acquire_db_lock_w_mysql_functions( $lock_key, $timeout ); + } + + return $this->acquire_db_lock_w_queries( $lock_key ); + } + + /** + * Returns whether the traits should try to acquire and release locks using MySQL `GET_LOCK` and `RELEASE_LOCK` + * functions or not. + * + * If not, then the trait will manage the locks by means of direct SQL queries on the options table. + * + * @since 4.12.6 + * + * @return bool Whether the trait should use MySQL functions to manage the locks, or not. + */ + protected function manage_db_lock_w_mysql_functions() { + /** + * Filters whether the database lock should be acquired using the `GET_LOCK` and `RELEASE_LOCK` + * MySQL functions or not. + * + * If the filter returns a falsy value, then the trait will attempt to manage locks using `SELECT` + * and `UPDATE` queries on the options table. + * + * @since 4.12.6 + */ + return tribe_is_truthy( apply_filters( 'tribe_db_lock_use_msyql_functions', true ) ); + } + + /** + * Tries to acquire the database lock using MySQL functions (`GET_LOCK` and `IS_FREE_LOCK`). + * + * @since 4.12.6 + * + * @param string $lock_key The lock key to try and acquire the lock for. + * @param int $timeout The timeout, in seconds, to try and acquire the lock. + * + * @return bool Whether the lock was acquired or not. + */ + protected function acquire_db_lock_w_mysql_functions( $lock_key, $timeout ) { + /* + * On MySQL 5.6 if a session (a db connection) fires two requests of `GET_LOCK`, the lock is + * implicitly released and re-acquired. + * While this will not cause issues in the context of different db sessions (e.g. two diff. PHP + * processes competing for a lock), it would cause issues when the lock acquisition is attempted + * in the context of the same PHP process. + * To avoid a read-what-you-write issue in the context of the same request, we check if the lock is + * free, using `IS_FREE_LOCK` first. + */ + + global $wpdb; + + $free = $wpdb->get_var( + $wpdb->prepare( 'SELECT IS_FREE_LOCK( SHA1( %s ) )', $lock_key ) + ); + + if ( ! $free ) { + return false; + } + + $acquired = $wpdb->get_var( + $wpdb->prepare( 'SELECT GET_LOCK( SHA1( %s ),%d )', $lock_key, $timeout ) + + ); + + if ( false === $acquired ) { + // Only log errors, a failure to acquire lock is not an error. + $log_data = [ + 'message' => 'Error while trying to acquire lock.', + 'key' => $lock_key, + 'error' => $wpdb->last_error + ]; + do_action( 'tribe_log', 'error', __CLASS__, $log_data ); + + return false; + } + + return true; + } + + /** + * Tries to acquire the lock using SQL queries. + * + * This kind of lock does not support timeout to avoid sieging the MySQL server during processes + * that are most likely already stressing it. Either the lock is available the moment it's required or not. + * The method leverages `INSERT IGNORE` that it's available on MySQL 5.6 and is atomic provided one of the values + * we're trying to insert is UNIQUE or PRIMARY: `option_name` is UNIQUE in the `options` table. + * + * @since 4.12.6 + * + * @param string $lock_key The lock key to try and acquire the lock for. + * + * @return bool Whether the lock was acquired or not. + */ + protected function acquire_db_lock_w_queries( $lock_key ) { + global $wpdb; + $option_name = $this->get_db_lock_option_name( $lock_key ); + $lock_time = microtime( true ); + + //phpcs:disable + $rows_affected = $wpdb->query( + $wpdb->prepare( "INSERT IGNORE INTO {$wpdb->options} + (option_name, option_value, autoload) + VALUES + (%s, %s, 'no')", + $option_name, + $lock_time + ) + ); + //phpcs:enable + + if ( false === $rows_affected ) { + $log_data = [ + 'message' => 'Error while trying to acquire lock with database.', + 'key' => $lock_key, + 'option_name' => $option_name, + 'error' => $wpdb->last_error, + ]; + do_action( 'tribe_log', 'error', __CLASS__, $log_data ); + + return false; + } + + /* + * The `wpdb::query()` method will return the number of affected rows when using `INSERT`. + * 1 row affected means we could INSERT and have the lock, 0 rows affected means we could not INSERT + * and have not the lock. + */ + + if ( $rows_affected ) { + self::$held_db_locks[ $lock_key ] = $lock_time; + } + + return (bool) $rows_affected; + } + + /** + * Returns the option name used to manage the lock for a key in the options table. + * + * @since 4.12.6 + * + * @param string $lock_key The lock key to build the option name for. + * + * @return string The name of the option that will be used to manage the lock for the specified key in the + * options table. + */ + public function get_db_lock_option_name( $lock_key ) { + return self::$db_lock_option_prefix . $lock_key; + } + + /** + * Releases the database lock of the record. + * + * Release a not held db lock will return `null`, not `false`. + * + * @since 4.12.6 + * + * @param string $lock_key The name of the lock to release. + * + * @return bool Whether the lock was correctly released or not. + */ + public function release_db_lock( $lock_key ) { + if ( $this->manage_db_lock_w_mysql_functions() ) { + return $this->release_db_lock_w_mysql_functions( $lock_key ); + } + + return $this->release_db_lock_w_queries( $lock_key ); + } + + /** + * Releases a DB lock held by the current database session (`$wpdb` instance) by + * using the MySQL `RELEASE_LOCK` function. + * + * @since 4.12.6 + * + * @param string $lock_key The lock key to release the lock for. + * + * @return bool Whether the lock was correctly released or not. + */ + protected function release_db_lock_w_mysql_functions( $lock_key ) { + global $wpdb; + + $released = $wpdb->query( + $wpdb->prepare( "SELECT RELEASE_LOCK( SHA1( %s ) )", $lock_key ) + ); + + if ( false === $released ) { + $log_data = [ + 'message' => 'Error while trying to release lock.', + 'key' => $lock_key, + 'error' => $wpdb->last_error + ]; + do_action( 'tribe_log', 'error', __CLASS__, $log_data ); + + return false; + } + + return true; + } + + /** + * Releases a lock using SQL queries. + * + * Note: differently from the `release_db_lock_w_mysql_functions`, this method will release the lock + * even if the current session is not the one holding the lock. + * To protect from this the trait uses a map of registered locks and when the locks where registered. + * + * @since 4.12.6 + * + * @param string $lock_key The lock key to release the lock for. + * + * @return bool Whether the lock was released or not, errors will be logged, a `false` value is returned if + * the lock was not held to begin with. + */ + protected function release_db_lock_w_queries( $lock_key ) { + if ( ! isset( self::$held_db_locks[ $lock_key ] ) ) { + // Avoid sessions that do nothold the lock to release it. + return false; + } + + global $wpdb; + $option_name = $this->get_db_lock_option_name( $lock_key ); + //phpcs:disable + $rows_affected = $wpdb->delete( + $wpdb->options, + [ 'option_name' => $option_name ], + [ '%s' ] + ); + //phpcs:enable + + if ( false === $rows_affected ) { + $log_data = [ + 'message' => 'Error while trying to release lock with database.', + 'key' => $lock_key, + 'option_name' => $option_name, + 'error' => $wpdb->last_error, + ]; + do_action( 'tribe_log', 'error', __CLASS__, $log_data ); + + return false; + } + + if ( $rows_affected ) { + // Lock successfully released. + unset( self::$held_db_locks[ $lock_key ] ); + } + + return (bool) $rows_affected; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Data.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Data.php new file mode 100644 index 000000000..7679fa943 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Data.php @@ -0,0 +1,235 @@ + 'dolor' ); + * + * // by default return 'nope' when a value is not set in the data + * $data = new Tribe__Data( $my_data, 'nope' ); + * + * // set some values in the data + * $data['foo'] = 'bar'; + * $data['bar'] = 23; + * + * // fetch some values + * $var_1 = $data['foo']; // "bar" + * $var_2 = $data['bar']; // 23 + * $var_3 = $data['lorem']; // "dolor" + * $var_4 = $data['woo']; // "nope" + * + * $data->set_default( 'not found' ); + * + * $var_4 = $data['woo']; // "not found" + * + */ +class Tribe__Data implements ArrayAccess, Iterator { + /** + * @var int + */ + protected $index = 0; + + /** + * @var array The data managed by this object. + */ + protected $data; + + /** + * @var mixed The default value that will be returned when trying to get the value + * of a non set key. + */ + protected $default; + + /** + * Tribe__Data constructor. + * + * @param array|object $data An array or object of data. + * @param mixed $default The default value that should be returned if a key is not set + */ + public function __construct( $data = [], $default = false ) { + $this->data = (array) $data; + $this->default = $default; + } + + /** + * Whether a offset exists + * + * @link http://php.net/manual/en/arrayaccess.offsetexists.php + * @param mixed $offset

    + * An offset to check for. + *

    + * @return boolean true on success or false on failure. + *

    + *

    + * The return value will be casted to boolean if non-boolean was returned. + * @since 4.11.0 + */ + public function offsetExists( $offset ) { + return isset( $this->data[ $offset ] ); + } + + /** + * Offset to retrieve + * + * @link http://php.net/manual/en/arrayaccess.offsetget.php + * @param mixed $offset

    + * The offset to retrieve. + *

    + * @return mixed Can return all value types. + * @since 4.11.0 + */ + public function offsetGet( $offset ) { + return isset( $this->data[ $offset ] ) + ? $this->data[ $offset ] + : $this->default; + } + + /** + * Offset to set + * + * @link http://php.net/manual/en/arrayaccess.offsetset.php + * @param mixed $offset

    + * The offset to assign the value to. + *

    + * @param mixed $value

    + * The value to set. + *

    + * @return void + * @since 4.11.0 + */ + public function offsetSet( $offset, $value ) { + $this->data[ $offset ] = $value; + } + + /** + * Offset to unset + * + * @link http://php.net/manual/en/arrayaccess.offsetunset.php + * @param mixed $offset

    + * The offset to unset. + *

    + * @return void + * @since 4.11.0 + */ + public function offsetUnset( $offset ) { + unset( $this->data[ $offset ] ); + } + + /** + * Gets the data this object manages. + * + * @return array + */ + public function get_data() { + return $this->data; + } + + /** + * Sets the data this object will manage. + * + * @param array $data + */ + public function set_data( array $data ) { + $this->data = $data; + } + + /** + * Gets the default value that will be returned when a key is not set. + * + * @return mixed + */ + public function get_default() { + return $this->default; + } + + /** + * Sets the default value that should be returned when a key is not set. + * + * @param mixed $default + */ + public function set_default( $default ) { + $this->default = $default; + } + + /** + * Return the current element + * + * @link http://php.net/manual/en/iterator.current.php + * @return mixed Can return any type. + * @since 4.11.0 + */ + public function current() { + $keys = array_keys( $this->data ); + + return $this->data[ $keys[ $this->index ] ]; + } + + /** + * Move forward to next element + * + * @link http://php.net/manual/en/iterator.next.php + * @return void Any returned value is ignored. + * @since 4.11.0 + */ + public function next() { + $keys = array_keys( $this->data ); + + if ( isset( $keys[ ++ $this->index ] ) ) { + return $this->data[ $keys[ $this->index ] ]; + } + + return false; + } + + /** + * Return the key of the current element + * + * @link http://php.net/manual/en/iterator.key.php + * @return mixed scalar on success, or null on failure. + * @since 4.11.0 + */ + public function key() { + $keys = array_keys( $this->data ); + + return $keys[ $this->index ]; + } + + /** + * Checks if current position is valid + * + * @link http://php.net/manual/en/iterator.valid.php + * @return boolean The return value will be casted to boolean and then evaluated. + * Returns true on success or false on failure. + * @since 4.11.0 + */ + public function valid() { + $keys = array_keys( $this->data ); + + return isset( $keys[ $this->index ] ); + } + + /** + * Rewind the Iterator to the first element + * + * @link http://php.net/manual/en/iterator.rewind.php + * @return void Any returned value is ignored. + * @since 4.11.0 + */ + public function rewind() { + $this->index = 0; + } + + /** + * Converts the data object in an array. + * + * @return array + * + * @since 4.6 + */ + public function to_array() { + return $this->get_data(); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Date_Utils.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Date_Utils.php new file mode 100644 index 000000000..d521915b1 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Date_Utils.php @@ -0,0 +1,1678 @@ + 'Y-m-d', + 1 => 'n/j/Y', + 2 => 'm/d/Y', + 3 => 'j/n/Y', + 4 => 'd/m/Y', + 5 => 'n-j-Y', + 6 => 'm-d-Y', + 7 => 'j-n-Y', + 8 => 'd-m-Y', + 9 => 'Y.m.d', + 10 => 'm.d.Y', + 11 => 'd.m.Y', + 'm0' => 'Y-m', + 'm1' => 'n/Y', + 'm2' => 'm/Y', + 'm3' => 'n/Y', + 'm4' => 'm/Y', + 'm5' => 'n-Y', + 'm6' => 'm-Y', + 'm7' => 'n-Y', + 'm8' => 'm-Y', + 'm9' => 'Y.m', + 'm10' => 'm.Y', + 'm11' => 'm.Y', + ]; + + if ( is_null( $translate ) ) { + return $formats; + } + + return isset( $formats[ $translate ] ) ? $formats[ $translate ] : $formats[ static::get_datepicker_format_index() ]; + } + + /** + * As PHP 5.2 doesn't have a good version of `date_parse_from_format`, this is how we deal with + * possible weird datepicker formats not working + * + * @param string $format The weird format you are using + * @param string $date The date string to parse + * + * @return string A DB formated Date, includes time if possible + */ + public static function datetime_from_format( $format, $date ) { + // Reverse engineer the relevant date formats + $keys = [ + // Year with 4 Digits + 'Y' => [ 'year', '\d{4}' ], + + // Year with 2 Digits + 'y' => [ 'year', '\d{2}' ], + + // Month with leading 0 + 'm' => [ 'month', '\d{2}' ], + + // Month without the leading 0 + 'n' => [ 'month', '\d{1,2}' ], + + // Month ABBR 3 letters + 'M' => [ 'month', '[A-Z][a-z]{2}' ], + + // Month Name + 'F' => [ 'month', '[A-Z][a-z]{2,8}' ], + + // Day with leading 0 + 'd' => [ 'day', '\d{2}' ], + + // Day without leading 0 + 'j' => [ 'day', '\d{1,2}' ], + + // Day ABBR 3 Letters + 'D' => [ 'day', '[A-Z][a-z]{2}' ], + + // Day Name + 'l' => [ 'day', '[A-Z][a-z]{5,8}' ], + + // Hour 12h formatted, with leading 0 + 'h' => [ 'hour', '\d{2}' ], + + // Hour 24h formatted, with leading 0 + 'H' => [ 'hour', '\d{2}' ], + + // Hour 12h formatted, without leading 0 + 'g' => [ 'hour', '\d{1,2}' ], + + // Hour 24h formatted, without leading 0 + 'G' => [ 'hour', '\d{1,2}' ], + + // Minutes with leading 0 + 'i' => [ 'minute', '\d{2}' ], + + // Seconds with leading 0 + 's' => [ 'second', '\d{2}' ], + ]; + + $date_regex = "/{$keys['Y'][1]}-{$keys['m'][1]}-{$keys['d'][1]}( {$keys['H'][1]}:{$keys['i'][1]}:{$keys['s'][1]})?$/"; + + // if the date is already in Y-m-d or Y-m-d H:i:s, just return it + if ( preg_match( $date_regex, $date ) ) { + return $date; + } + + + // Convert format string to regex + $regex = ''; + $chars = str_split( $format ); + foreach ( $chars as $n => $char ) { + $last_char = isset( $chars[ $n - 1 ] ) ? $chars[ $n - 1 ] : ''; + $skip_current = '\\' == $last_char; + if ( ! $skip_current && isset( $keys[ $char ] ) ) { + $regex .= '(?P<' . $keys[ $char ][0] . '>' . $keys[ $char ][1] . ')'; + } elseif ( '\\' == $char ) { + $regex .= $char; + } else { + $regex .= preg_quote( $char ); + } + } + + $dt = []; + + // Now try to match it + if ( preg_match( '#^' . $regex . '$#', $date, $dt ) ) { + // Remove unwanted Indexes + foreach ( $dt as $k => $v ) { + if ( is_int( $k ) ) { + unset( $dt[ $k ] ); + } + } + + // We need at least Month + Day + Year to work with + if ( ! checkdate( $dt['month'], $dt['day'], $dt['year'] ) ) { + return false; + } + } else { + return false; + } + + $dt['month'] = str_pad( $dt['month'], 2, '0', STR_PAD_LEFT ); + $dt['day'] = str_pad( $dt['day'], 2, '0', STR_PAD_LEFT ); + + $formatted = '{year}-{month}-{day}' . ( isset( $dt['hour'], $dt['minute'], $dt['second'] ) ? ' {hour}:{minute}:{second}' : '' ); + foreach ( $dt as $key => $value ) { + $formatted = str_replace( '{' . $key . '}', $value, $formatted ); + } + + return $formatted; + } + + /** + * Returns the date only. + * + * @param int|string $date The date (timestamp or string). + * @param bool $isTimestamp Is $date in timestamp format? + * @param string|null $format The format used + * + * @return string The date only in DB format. + */ + public static function date_only( $date, $isTimestamp = false, $format = null ) { + $date = $isTimestamp ? $date : strtotime( $date ); + + if ( is_null( $format ) ) { + $format = self::DBDATEFORMAT; + } + + return date( $format, $date ); + } + + /** + * Returns as string the nearest half a hour for a given valid string datetime. + * + * @since 4.10.2 + * + * @param string $date Valid DateTime string. + * + * @return string Rounded datetime string + */ + public static function round_nearest_half_hour( $date ) { + $date_object = static::build_date_object( $date ); + $rounded_minutes = floor( $date_object->format( 'i' ) / 30 ) * 30; + + return $date_object->format( 'Y-m-d H:' ) . $rounded_minutes . ':00'; + } + + /** + * Returns the time only. + * + * @param string $date The date. + * + * @return string The time only in DB format. + */ + public static function time_only( $date ) { + $date = is_numeric( $date ) ? $date : strtotime( $date ); + return date( self::DBTIMEFORMAT, $date ); + } + + /** + * Returns the hour only. + * + * @param string $date The date. + * + * @return string The hour only. + */ + public static function hour_only( $date ) { + $date = is_numeric( $date ) ? $date : strtotime( $date ); + return date( self::HOURFORMAT, $date ); + } + + /** + * Returns the minute only. + * + * @param string $date The date. + * + * @return string The minute only. + */ + public static function minutes_only( $date ) { + $date = is_numeric( $date ) ? $date : strtotime( $date ); + return date( self::MINUTEFORMAT, $date ); + } + + /** + * Returns the meridian (am or pm) only. + * + * @param string $date The date. + * + * @return string The meridian only in DB format. + */ + public static function meridian_only( $date ) { + $date = is_numeric( $date ) ? $date : strtotime( $date ); + return date( self::MERIDIANFORMAT, $date ); + } + + /** + * Returns the number of seconds (absolute value) between two dates/times. + * + * @param string $date1 The first date. + * @param string $date2 The second date. + * + * @return int The number of seconds between the dates. + */ + public static function time_between( $date1, $date2 ) { + return abs( strtotime( $date1 ) - strtotime( $date2 ) ); + } + + /** + * The number of days between two arbitrary dates. + * + * @param string $date1 The first date. + * @param string $date2 The second date. + * + * @return int The number of days between two dates. + */ + public static function date_diff( $date1, $date2 ) { + // Get number of days between by finding seconds between and dividing by # of seconds in a day + $days = self::time_between( $date1, $date2 ) / ( 60 * 60 * 24 ); + + return $days; + } + + /** + * Returns the last day of the month given a php date. + * + * @param int $timestamp THe timestamp. + * + * @return string The last day of the month. + */ + public static function get_last_day_of_month( $timestamp ) { + $curmonth = date( 'n', $timestamp ); + $curYear = date( 'Y', $timestamp ); + $nextmonth = mktime( 0, 0, 0, $curmonth + 1, 1, $curYear ); + $lastDay = strtotime( date( self::DBDATETIMEFORMAT, $nextmonth ) . ' - 1 day' ); + + return date( 'j', $lastDay ); + } + + /** + * Returns true if the timestamp is a weekday. + * + * @param int $curDate A timestamp. + * + * @return bool If the timestamp is a weekday. + */ + public static function is_weekday( $curdate ) { + return in_array( date( 'N', $curdate ), [ 1, 2, 3, 4, 5 ] ); + } + + /** + * Returns true if the timestamp is a weekend. + * + * @param int $curDate A timestamp. + * + * @return bool If the timestamp is a weekend. + */ + public static function is_weekend( $curdate ) { + return in_array( date( 'N', $curdate ), [ 6, 7 ] ); + } + + /** + * Gets the last day of the week in a month (ie the last Tuesday). Passing in -1 gives you the last day in the month. + * + * @param int $curdate A timestamp. + * @param int $day_of_week The index of the day of the week. + * + * @return int The timestamp of the date that fits the qualifications. + */ + public static function get_last_day_of_week_in_month( $curdate, $day_of_week ) { + $nextdate = mktime( date( 'H', $curdate ), date( 'i', $curdate ), date( 's', $curdate ), date( 'n', $curdate ), self::get_last_day_of_month( $curdate ), date( 'Y', $curdate ) );; + + while ( date( 'N', $nextdate ) != $day_of_week && $day_of_week != - 1 ) { + $nextdate = strtotime( date( self::DBDATETIMEFORMAT, $nextdate ) . ' - 1 day' ); + } + + return $nextdate; + } + + /** + * Gets the first day of the week in a month (ie the first Tuesday). + * + * @param int $curdate A timestamp. + * @param int $day_of_week The index of the day of the week. + * + * @return int The timestamp of the date that fits the qualifications. + */ + public static function get_first_day_of_week_in_month( $curdate, $day_of_week ) { + $nextdate = mktime( 0, 0, 0, date( 'n', $curdate ), 1, date( 'Y', $curdate ) ); + + while ( ! ( $day_of_week > 0 && date( 'N', $nextdate ) == $day_of_week ) && + ! ( $day_of_week == - 1 && self::is_weekday( $nextdate ) ) && + ! ( $day_of_week == - 2 && self::is_weekend( $nextdate ) ) ) { + $nextdate = strtotime( date( self::DBDATETIMEFORMAT, $nextdate ) . ' + 1 day' ); + } + + return $nextdate; + } + + /** + * From http://php.net/manual/en/function.date.php + * + * @param int $number A number. + * + * @return string The ordinal for that number. + */ + public static function number_to_ordinal( $number ) { + $output = $number . ( ( ( strlen( $number ) > 1 ) && ( substr( $number, - 2, 1 ) == '1' ) ) ? + 'th' : date( 'S', mktime( 0, 0, 0, 0, substr( $number, - 1 ), 0 ) ) ); + + return apply_filters( 'tribe_events_number_to_ordinal', $output, $number ); + } + + /** + * check if a given string is a timestamp + * + * @param $timestamp + * + * @return bool + */ + public static function is_timestamp( $timestamp ) { + if ( is_numeric( $timestamp ) && (int) $timestamp == $timestamp && date( 'U', $timestamp ) == $timestamp ) { + return true; + } + + return false; + } + + /** + * Accepts a string representing a date/time and attempts to convert it to + * the specified format, returning an empty string if this is not possible. + * + * @param $dt_string + * @param $new_format + * + * @return string + */ + public static function reformat( $dt_string, $new_format ) { + $timestamp = self::is_timestamp( $dt_string ) ? $dt_string : strtotime( $dt_string ); + $revised = date( $new_format, $timestamp ); + + return $revised ? $revised : ''; + } + + /** + * Accepts a numeric offset (such as "4" or "-6" as stored in the gmt_offset + * option) and converts it to a strtotime() style modifier that can be used + * to adjust a DateTime object, etc. + * + * @param $offset + * + * @return string + */ + public static function get_modifier_from_offset( $offset ) { + $modifier = ''; + $offset = (float) $offset; + + // Separate out hours, minutes, polarity + $hours = (int) $offset; + $minutes = (int) ( ( $offset - $hours ) * 60 ); + $polarity = ( $offset >= 0 ) ? '+' : '-'; + + // Correct hours and minutes to positive values + if ( $hours < 0 ) $hours *= -1; + if ( $minutes < 0 ) $minutes *= -1; + + // Form the modifier string + if ( $hours >= 0 ) $modifier = "$polarity $hours hours "; + if ( $minutes > 0 ) $modifier .= "$minutes minutes"; + + return $modifier; + } + + /** + * Returns the weekday of the 1st day of the month in + * "w" format (ie, Sunday is 0 and Saturday is 6) or + * false if this cannot be established. + * + * @param mixed $month + * @return int|bool + */ + public static function first_day_in_month( $month ) { + try { + $date = new DateTime( $month ); + $day_1 = new DateTime( $date->format( 'Y-m-01 ' ) ); + return $day_1->format( 'w' ); + } + catch ( Exception $e ) { + return false; + } + } + + /** + * Returns the weekday of the last day of the month in + * "w" format (ie, Sunday is 0 and Saturday is 6) or + * false if this cannot be established. + * + * @param mixed $month + * @return int|bool + */ + public static function last_day_in_month( $month ) { + try { + $date = new DateTime( $month ); + $day_1 = new DateTime( $date->format( 'Y-m-t' ) ); + return $day_1->format( 'w' ); + } + catch ( Exception $e ) { + return false; + } + } + + /** + * Returns the day of the week the week ends on, expressed as a "w" value + * (ie, Sunday is 0 and Saturday is 6). + * + * @param int $week_starts_on + * + * @return int + */ + public static function week_ends_on( $week_starts_on ) { + if ( --$week_starts_on < 0 ) $week_starts_on = 6; + return $week_starts_on; + } + + /** + * Helper method to convert EventAllDay values to a boolean + * + * @param mixed $all_day_value Value to check for "all day" status. All day values: (true, 'true', 'TRUE', 'yes') + * + * @return boolean Is value considered "All Day"? + */ + public static function is_all_day( $all_day_value ) { + $all_day_value = trim( $all_day_value ); + + return ( + 'true' === strtolower( $all_day_value ) + || 'yes' === strtolower( $all_day_value ) + || true === $all_day_value + || 1 == $all_day_value + ); + } + + /** + * Determine if "now" is between two dates. + * + * @since 5.0.2 + * + * @param string|DateTime|int $start_date A `strtotime` parsable string, a DateTime object or a timestamp. + * @param string|DateTime|int $end_date A `strtotime` parsable string, a DateTime object or a timestamp. + * @param string|DateTime|int $now A `strtotime` parsable string, a DateTime object or a timestamp. Defaults to 'now'. + * + * @return boolean Whether the current datetime (or passed "now") is between the passed start and end dates. + */ + public static function is_now( $start_date, $end_date, $now = 'now' ) : bool { + $now = self::build_date_object( $now ); + $start_date = self::build_date_object( $start_date ); + $end_date = self::build_date_object( $end_date ); + + // If the dates are identical, bail early. + if ( $start_date === $end_date ) { + return false; + } + + // Handle dates passed out of chronological order. + [ $start_date, $end_date ] = self::sort( [ $start_date, $end_date ] ); + + // If span starts after now, return false. + if ( $start_date > $now ) { + return false; + } + + // If span ends on or before now, return false. + if ( $end_date <= $now ) { + return false; + } + + return true; + } + + /** + * Sort an array of dates. + * + * @since 5.0.2 + * + * @param mixed $dates A single array of dates, or dates passed as individual params. + * Individual dates can be a `strtotime` parsable string, a DateTime object or a timestamp. + * @param string $direction 'ASC' or 'DESC' for ascending/descending sorting. Defaults to 'ASC'. + * + * @return array A sorted array of DateTime objects. + */ + public static function sort( array $dates, string $direction = 'ASC' ) :array { + // If we get passed a single array, break it out of the containing array. + if ( is_array( $dates[0] ) ) { + $dates = $dates[0]; + } + + // Ensure we're always dealing with date objects here. + $dates = array_map( + function( $date ) { + return self::build_date_object( $date ); + }, + $dates + ); + + // If anything other than 'DESC' gets passed (or nothing) we sort ascending. + if ( 'DESC' === $direction ) { + rsort( $dates ); + } else { + sort( $dates ); + } + + return $dates; + } + + /** + * Given 2 datetime ranges, return whether the 2nd one occurs during the 1st one + * Note: all params should be unix timestamps + * + * @param integer $range_1_start timestamp for start of the first range + * @param integer $range_1_end timestamp for end of the first range + * @param integer $range_2_start timestamp for start of the second range + * @param integer $range_2_end timestamp for end of the second range + * + * @return bool + */ + public static function range_coincides( $range_1_start, $range_1_end, $range_2_start, $range_2_end ) { + + // Initialize the return value + $range_coincides = false; + + /** + * conditions: + * range 2 starts during range 1 (range 2 start time is between start and end of range 1 ) + * range 2 ends during range 1 (range 2 end time is between start and end of range 1 ) + * range 2 encloses range 1 (range 2 starts before range 1 and ends after range 1) + */ + + $range_2_starts_during_range_1 = $range_2_start >= $range_1_start && $range_2_start < $range_1_end; + $range_2_ends_during_range_1 = $range_2_end > $range_1_start && $range_2_end <= $range_1_end; + $range_2_encloses_range_1 = $range_2_start < $range_1_start && $range_2_end > $range_1_end; + + if ( $range_2_starts_during_range_1 || $range_2_ends_during_range_1 || $range_2_encloses_range_1 ) { + $range_coincides = true; + } + + return $range_coincides; + + } + + /** + * Converts a locally-formatted date to a unix timestamp. This is a drop-in + * replacement for `strtotime()`, except that where strtotime assumes GMT, this + * assumes local time (as described below). If a timezone is specified, this + * function defers to strtotime(). + * + * If there is a timezone_string available, the date is assumed to be in that + * timezone, otherwise it simply subtracts the value of the 'gmt_offset' + * option. + * + * @see strtotime() + * @uses get_option() to retrieve the value of 'gmt_offset' + * + * @param string $string A date/time string. See `strtotime` for valid formats + * + * @return int UNIX timestamp. + */ + public static function wp_strtotime( $string ) { + // If there's a timezone specified, we shouldn't convert it + try { + $test_date = new DateTime( $string ); + if ( 'UTC' != $test_date->getTimezone()->getName() ) { + return strtotime( $string ); + } + } catch ( Exception $e ) { + return strtotime( $string ); + } + + $cache = tribe( 'cache' ); + if ( ! isset( $cache['option_timezone_string'] ) ) { + $cache['option_timezone_string'] = get_option( 'timezone_string' ); + } + if ( ! isset( $cache['option_gmt_offset'] ) ) { + $cache['option_gmt_offset'] = get_option( 'gmt_offset' ); + } + + $tz = $cache['option_timezone_string']; + if ( ! empty( $tz ) ) { + $date = date_create( $string, new DateTimeZone( $tz ) ); + if ( ! $date ) { + return strtotime( $string ); + } + $date->setTimezone( new DateTimeZone( 'UTC' ) ); + return $date->format( 'U' ); + } else { + $offset = (float) $cache['option_gmt_offset']; + $seconds = intval( $offset * HOUR_IN_SECONDS ); + $timestamp = strtotime( $string ) - $seconds; + return $timestamp; + } + } + + /** + * Returns an array of localized full month names. + * + * @return array + */ + public static function get_localized_months_full() { + global $wp_locale; + + if ( empty( self::$localized_months ) ) { + self::build_localized_months(); + } + + if ( empty( self::$localized_months_full ) ) { + self::$localized_months_full = [ + 'January' => self::$localized_months['full']['01'], + 'February' => self::$localized_months['full']['02'], + 'March' => self::$localized_months['full']['03'], + 'April' => self::$localized_months['full']['04'], + 'May' => self::$localized_months['full']['05'], + 'June' => self::$localized_months['full']['06'], + 'July' => self::$localized_months['full']['07'], + 'August' => self::$localized_months['full']['08'], + 'September' => self::$localized_months['full']['09'], + 'October' => self::$localized_months['full']['10'], + 'November' => self::$localized_months['full']['11'], + 'December' => self::$localized_months['full']['12'], + ]; + } + + return self::$localized_months_full; + } + + /** + * Returns an array of localized short month names. + * + * @return array + */ + public static function get_localized_months_short() { + global $wp_locale; + + if ( empty( self::$localized_months ) ) { + self::build_localized_months(); + } + + if ( empty( self::$localized_months_short ) ) { + self::$localized_months_short = [ + 'Jan' => self::$localized_months['short']['01'], + 'Feb' => self::$localized_months['short']['02'], + 'Mar' => self::$localized_months['short']['03'], + 'Apr' => self::$localized_months['short']['04'], + 'May' => self::$localized_months['short']['05'], + 'Jun' => self::$localized_months['short']['06'], + 'Jul' => self::$localized_months['short']['07'], + 'Aug' => self::$localized_months['short']['08'], + 'Sep' => self::$localized_months['short']['09'], + 'Oct' => self::$localized_months['short']['10'], + 'Nov' => self::$localized_months['short']['11'], + 'Dec' => self::$localized_months['short']['12'], + ]; + } + + return self::$localized_months_short; + } + + /** + * Returns an array of localized full week day names. + * + * @return array + */ + public static function get_localized_weekdays_full() { + if ( empty( self::$localized_weekdays ) ) { + self::build_localized_weekdays(); + } + + return self::$localized_weekdays['full']; + } + + /** + * Returns an array of localized short week day names. + * + * @return array + */ + public static function get_localized_weekdays_short() { + if ( empty( self::$localized_weekdays ) ) { + self::build_localized_weekdays(); + } + + return self::$localized_weekdays['short']; + } + + /** + * Returns an array of localized week day initials. + * + * @return array + */ + public static function get_localized_weekdays_initial() { + if ( empty( self::$localized_weekdays ) ) { + self::build_localized_weekdays(); + } + + return self::$localized_weekdays['initial']; + } + + /** + * Builds arrays of localized full, short and initialized weekdays. + */ + private static function build_localized_weekdays() { + global $wp_locale; + + for ( $i = 0; $i <= 6; $i++ ) { + $day = $wp_locale->get_weekday( $i ); + self::$localized_weekdays['full'][ $i ] = $day; + self::$localized_weekdays['short'][ $i ] = $wp_locale->get_weekday_abbrev( $day ); + self::$localized_weekdays['initial'][ $i ] = $wp_locale->get_weekday_initial( $day ); + } + } + + /** + * Builds arrays of localized full and short months. + * + * @since 4.4.3 + */ + private static function build_localized_months() { + global $wp_locale; + + for ( $i = 1; $i <= 12; $i++ ) { + $month_number = str_pad( $i, 2, '0', STR_PAD_LEFT ); + $month = $wp_locale->get_month( $month_number ); + self::$localized_months['full'][ $month_number ] = $month; + self::$localized_months['short'][ $month_number ] = $wp_locale->get_month_abbrev( $month ); + } + } + + /** + * Return a WP Locale weekday in the specified format + * + * @since 4.4.3 + * + * @param int|string $weekday Day of week + * @param string $format Weekday format: full, weekday, initial, abbreviation, abbrev, abbr, short + * + * @return string + */ + public static function wp_locale_weekday( $weekday, $format = 'weekday' ) { + $weekday = trim( $weekday ); + + $valid_formats = [ + 'full', + 'weekday', + 'initial', + 'abbreviation', + 'abbrev', + 'abbr', + 'short', + ]; + + // if there isn't a valid format, bail without providing a localized string + if ( ! in_array( $format, $valid_formats ) ) { + return $weekday; + } + + if ( empty( self::$localized_weekdays ) ) { + self::build_localized_weekdays(); + } + + // if the weekday isn't numeric, we need to convert to numeric in order to + // leverage self::localized_weekdays + if ( ! is_numeric( $weekday ) ) { + $days_of_week = [ + 'Sun', + 'Mon', + 'Tue', + 'Wed', + 'Thu', + 'Fri', + 'Sat', + ]; + + $day_index = array_search( ucwords( substr( $weekday, 0, 3 ) ), $days_of_week ); + + if ( false === $day_index ) { + return $weekday; + } + + $weekday = $day_index; + } + + switch ( $format ) { + case 'initial': + $type = 'initial'; + break; + case 'abbreviation': + case 'abbrev': + case 'abbr': + case 'short': + $type = 'short'; + break; + case 'weekday': + case 'full': + default: + $type = 'full'; + break; + } + + return self::$localized_weekdays[ $type ][ $weekday ]; + } + + /** + * Return a WP Locale month in the specified format + * + * @since 4.4.3 + * + * @param int|string $month Month of year + * @param string $format Month format: full, month, abbreviation, abbrev, abbr, short + * + * @return string + */ + public static function wp_locale_month( $month, $format = 'month' ) { + $month = trim( $month ); + + $valid_formats = [ + 'full', + 'month', + 'abbreviation', + 'abbrev', + 'abbr', + 'short', + ]; + + // if there isn't a valid format, bail without providing a localized string + if ( ! in_array( $format, $valid_formats ) ) { + return $month; + } + + if ( empty( self::$localized_months ) ) { + self::build_localized_months(); + } + + // make sure numeric months are valid + if ( is_numeric( $month ) ) { + $month_num = (int) $month; + + // if the month num falls out of range, bail without localizing + if ( 0 > $month_num || 12 < $month_num ) { + return $month; + } + } else { + $months = [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ]; + + // convert the provided month to a 3-character month and find it in the months array so we + // can build an appropriate month number + $month_num = array_search( ucwords( substr( $month, 0, 3 ) ), $months ); + + // if we can't find the provided month in our month list, bail without localizing + if ( false === $month_num ) { + return $month; + } + + // let's increment the num because months start at 01 rather than 00 + $month_num++; + } + + $month_num = str_pad( $month_num, 2, '0', STR_PAD_LEFT ); + + $type = ( 'full' === $format || 'month' === $format ) ? 'full' : 'short'; + + return self::$localized_months[ $type ][ $month_num ]; + } + + // DEPRECATED METHODS + // @codingStandardsIgnoreStart + /** + * Deprecated camelCase version of self::date_only + * + * @param int|string $date The date (timestamp or string). + * @param bool $isTimestamp Is $date in timestamp format? + * + * @return string The date only in DB format. + */ + public static function dateOnly( $date, $isTimestamp = false ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::date_only' ); + return self::date_only( $date, $isTimestamp ); + } + + /** + * Deprecated camelCase version of self::time_only + * + * @param string $date The date. + * + * @return string The time only in DB format. + */ + public static function timeOnly( $date ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::time_only' ); + return self::time_only( $date ); + } + + /** + * Deprecated camelCase version of self::hour_only + * + * @param string $date The date. + * + * @return string The hour only. + */ + public static function hourOnly( $date ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::hour_only' ); + return self::hour_only( $date ); + } + + /** + * Deprecated camelCase version of self::minutes_only + * + * @param string $date The date. + * + * @return string The minute only. + */ + public static function minutesOnly( $date ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::minutes_only' ); + return self::minutes_only( $date ); + } + + /** + * Deprecated camelCase version of self::meridian_only + * + * @param string $date The date. + * + * @return string The meridian only in DB format. + */ + public static function meridianOnly( $date ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::meridian_only' ); + return self::meridian_only( $date ); + } + + /** + * Returns the end of a given day. + * + * @deprecated since 3.10 - use tribe_event_end_of_day() + * @todo remove in 4.1 + * + * @param int|string $date The date (timestamp or string). + * @param bool $isTimestamp Is $date in timestamp format? + * + * @return string The date and time of the end of a given day + */ + public static function endOfDay( $date, $isTimestamp = false ) { + _deprecated_function( __METHOD__, '3.10', 'tribe_event_end_of_day' ); + + if ( $isTimestamp ) { + $date = date( self::DBDATEFORMAT, $date ); + } + + return tribe_event_end_of_day( $date, self::DBDATETIMEFORMAT ); + } + + /** + * Returns the beginning of a given day. + * + * @deprecated since 3.10 + * @todo remove in 4.1 + * + * @param int|string $date The date (timestamp or string). + * @param bool $isTimestamp Is $date in timestamp format? + * + * @return string The date and time of the beginning of a given day. + */ + public static function beginningOfDay( $date, $isTimestamp = false ) { + _deprecated_function( __METHOD__, '3.10', 'tribe_event_beginning_of_day' ); + + if ( $isTimestamp ) { + $date = date( self::DBDATEFORMAT, $date ); + } + + return tribe_event_beginning_of_day( $date, self::DBDATETIMEFORMAT ); + } + + /** + * Deprecated camelCase version of self::time_between + * + * @param string $date1 The first date. + * @param string $date2 The second date. + * + * @return int The number of seconds between the dates. + */ + public static function timeBetween( $date1, $date2 ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::time_between' ); + return self::time_between( $date1, $date2 ); + } + + /** + * Deprecated camelCase version of self::date_diff + * + * @param string $date1 The first date. + * @param string $date2 The second date. + * + * @return int The number of days between two dates. + */ + public static function dateDiff( $date1, $date2 ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::date_diff' ); + return self::date_diff( $date1, $date2 ); + } + + /** + * Deprecated camelCase version of self::get_last_day_of_month + * + * @param int $timestamp THe timestamp. + * + * @return string The last day of the month. + */ + public static function getLastDayOfMonth( $timestamp ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::get_last_day_of_month' ); + return self::get_last_day_of_month( $timestamp ); + } + + /** + * Deprecated camelCase version of self::is_weekday + * + * @param int $curDate A timestamp. + * + * @return bool If the timestamp is a weekday. + */ + public static function isWeekday( $curdate ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::is_weekday' ); + return self::is_weekday( $curdate ); + } + + /** + * Deprecated camelCase version of self::is_weekend + * + * @param int $curDate A timestamp. + * + * @return bool If the timestamp is a weekend. + */ + public static function isWeekend( $curdate ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::is_weekend' ); + return self::is_weekend( $curdate ); + } + + /** + * Deprecated camelCase version of self::get_last_day_of_week_in_month + * + * @param int $curdate A timestamp. + * @param int $day_of_week The index of the day of the week. + * + * @return int The timestamp of the date that fits the qualifications. + */ + public static function getLastDayOfWeekInMonth( $curdate, $day_of_week ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::get_last_day_of_week_in_month' ); + return self::get_last_day_of_week_in_month( $curdate, $day_of_week ); + } + + /** + * Deprecated camelCase version of self::get_first_day_of_week_in_month + * + * @param int $curdate A timestamp. + * @param int $day_of_week The index of the day of the week. + * + * @return int The timestamp of the date that fits the qualifications. + */ + public static function getFirstDayOfWeekInMonth( $curdate, $day_of_week ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::get_fist_day_of_week_in_month' ); + return self::get_first_day_of_week_in_month( $curdate, $day_of_week ); + } + + /** + * Deprecated camelCase version of self::number_to_ordinal + * + * @param int $number A number. + * + * @return string The ordinal for that number. + */ + public static function numberToOrdinal( $number ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::number_to_ordinal' ); + return self::number_to_ordinal( $number ); + } + + /** + * Deprecated camelCase version of self::is_timestamp + * + * @param $timestamp + * + * @return bool + */ + public static function isTimestamp( $timestamp ) { + _deprecated_function( __METHOD__, '3.11', __CLASS__ . '::is_timestamp' ); + return self::is_timestamp( $timestamp ); + } + + /** + * Gets the timestamp of a day in week, month and year context. + * + * Kudos to [icedwater StackOverflow user](http://stackoverflow.com/users/1091386/icedwater) in + * [his answer](http://stackoverflow.com/questions/924246/get-the-first-or-last-friday-in-a-month). + * + * Usage examples: + * "The second Wednesday of March 2015" - `get_day_timestamp( 3, 2, 3, 2015, 1)` + * "The last Friday of December 2015" - `get_day_timestamp( 5, 1, 12, 2015, -1)` + * "The first Monday of April 2016 - `get_day_timestamp( 1, 1, 4, 2016, 1)` + * "The penultimate Thursday of January 2012" - `get_day_timestamp( 4, 2, 1, 2012, -1)` + * + * @param int $day_of_week The day representing the number in the week, Monday is `1`, Tuesday is `2`, Sunday is `7` + * @param int $week_in_month The week number in the month; first week is `1`, second week is `2`; when direction is reverse + * then `1` is last week of the month, `2` is penultimate week of the month and so on. + * @param int $month The month number in the year, January is `1` + * @param int $year The year number, e.g. "2015" + * @param int $week_direction Either `1` or `-1`; the direction for the search referring to the week, defaults to `1` + * to specify weeks in natural order so: + * $week_direction `1` and $week_in_month `1` means "first week of the month" + * $week_direction `1` and $week_in_month `3` means "third week of the month" + * $week_direction `-1` and $week_in_month `1` means "last week of the month" + * $week_direction `-1` and $week_in_month `2` means "penultimmate week of the month" + * + * @return int The day timestamp + */ + public static function get_weekday_timestamp( $day_of_week, $week_in_month, $month, $year, $week_direction = 1 ) { + if ( + ! ( + is_numeric( $day_of_week ) + && is_numeric( $week_in_month ) + && is_numeric( $month ) + && is_numeric( $year ) + && is_numeric( $week_direction ) + && in_array( $week_direction, [ -1, 1 ] ) + ) + ) { + return false; + } + + if ( $week_direction > 0 ) { + $startday = 1; + } else { + $startday = date( 't', mktime( 0, 0, 0, $month, 1, $year ) ); + } + + $start = mktime( 0, 0, 0, $month, $startday, $year ); + $weekday = date( 'N', $start ); + + if ( $week_direction * $day_of_week >= $week_direction * $weekday ) { + $offset = - $week_direction * 7; + } else { + $offset = 0; + } + + $offset += $week_direction * ( $week_in_month * 7 ) + ( $day_of_week - $weekday ); + + return mktime( 0, 0, 0, $month, $startday + $offset, $year ); + } + + /** + * Unescapes date format strings to be used in functions like `date`. + * + * Double escaping happens when storing a date format in the database. + * + * @param mixed $date_format A date format string. + * + * @return mixed Either the original input or an unescaped date format string. + */ + public static function unescape_date_format( $date_format ) { + if ( ! is_string( $date_format ) ) { + return $date_format; + } + + // Why so simple? Let's handle other cases as those come up. We have tests in place! + return str_replace( '\\\\', '\\', $date_format ); + } + + /** + * Builds a date object from a given datetime and timezone. + * + * @since 4.9.5 + * + * @param string|DateTime|int $datetime A `strtotime` parsable string, a DateTime object or + * a timestamp; defaults to `now`. + * @param string|DateTimeZone|null $timezone A timezone string, UTC offset or DateTimeZone object; + * defaults to the site timezone; this parameter is ignored + * if the `$datetime` parameter is a DatTime object. + * @param bool $with_fallback Whether to return a DateTime object even when the date data is + * invalid or not; defaults to `true`. + * + * @return DateTime|false A DateTime object built using the specified date, time and timezone; if `$with_fallback` + * is set to `false` then `false` will be returned if a DateTime object could not be built. + */ + public static function build_date_object( $datetime = 'now', $timezone = null, $with_fallback = true ) { + if ( $datetime instanceof DateTime ) { + return clone $datetime; + } + + if ( class_exists( 'DateTimeImmutable' ) && $datetime instanceof DateTimeImmutable ) { + // Return the mutable version of the date. + return Date_I18n::createFromImmutable( $datetime ); + } + + $timezone_object = null; + $datetime = empty( $datetime ) ? 'now' : $datetime; + + try { + // PHP 5.2 will not throw an exception but will generate an error. + $utc = new DateTimeZone( 'UTC' ); + $timezone_object = Tribe__Timezones::build_timezone_object( $timezone ); + + if ( self::is_timestamp( $datetime ) ) { + $timestamp_timezone = $timezone ? $timezone_object : $utc; + + return new Date_I18n( '@' . $datetime, $timestamp_timezone ); + } + + set_error_handler( 'tribe_catch_and_throw' ); + $date = new Date_I18n( $datetime, $timezone_object ); + restore_error_handler(); + } catch ( Exception $e ) { + // If we encounter an error, we need to restore after catching. + restore_error_handler(); + + if ( $timezone_object === null ) { + $timezone_object = Tribe__Timezones::build_timezone_object( $timezone ); + } + + return $with_fallback + ? new Date_I18n( 'now', $timezone_object ) + : false; + } + + return $date; + } + + /** + * Validates a date string to make sure it can be used to build DateTime objects. + * + * @since 4.9.5 + * + * @param string $date The date string that should validated. + * + * @return bool Whether the date string can be used to build DateTime objects, and is thus parsable by functions + * like `strtotime`, or not. + */ + public static function is_valid_date( $date ) { + static $cache_var_name = __FUNCTION__; + + $cache_date_check = tribe_get_var( $cache_var_name, [] ); + + if ( isset( $cache_date_check[ $date ] ) ) { + return $cache_date_check[ $date ]; + } + + $cache_date_check[ $date ] = self::build_date_object( $date, null, false ) instanceof DateTimeInterface; + + tribe_set_var( $cache_var_name, $cache_date_check ); + + return $cache_date_check[ $date ]; + } + + /** + * Returns the DateTime object representing the start of the week for a date. + * + * @since 4.9.21 + * + * @throws Exception + * + * @param string|int|\DateTime $date The date string, timestamp or object. + * @param int|null $start_of_week The number representing the start of week day as handled by + * WordPress: `0` (for Sunday) through `6` (for Saturday). + * + * @return array An array of objects representing the week start and end days, or `false` if the + * supplied date is invalid. The timezone of the returned object is set to the site one. + * The week start has its time set to `00:00:00`, the week end will have its time set + * `23:59:59`. + */ + public static function get_week_start_end( $date, $start_of_week = null ) { + static $cache_var_name = __FUNCTION__; + + $cache_week_start_end = tribe_get_var( $cache_var_name, [] ); + + $date_obj = static::build_date_object( $date ); + $date_obj->setTime( 0, 0, 0 ); + + $date_string = $date_obj->format( static::DBDATEFORMAT ); + + // `0` (for Sunday) through `6` (for Saturday), the way WP handles the `start_of_week` option. + $week_start_day = null !== $start_of_week + ? (int) $start_of_week + : (int) get_option( 'start_of_week', 0 ); + + $memory_cache_key = "{$date_string}:{$week_start_day}"; + + if ( isset( $cache_week_start_end[ $memory_cache_key ] ) ) { + return $cache_week_start_end[ $memory_cache_key ]; + } + + $cache_key = md5( + __METHOD__ . serialize( [ $date_obj->format( static::DBDATEFORMAT ), $week_start_day ] ) + ); + $cache = tribe( 'cache' ); + + if ( false !== $cached = $cache[ $cache_key ] ) { + return $cached; + } + + // `0` (for Sunday) through `6` (for Saturday), the way WP handles the `start_of_week` option. + $date_day = (int) $date_obj->format( 'w' ); + + $week_offset = 0; + if ( 0 === $date_day && 0 !== $week_start_day ) { + $week_offset = 0; + } elseif ( $date_day < $week_start_day ) { + // If the current date of the week is before the start of the week, move back a week. + $week_offset = -1; + } elseif ( 0 === $date_day ) { + // When start of the week is on a sunday we add a week. + $week_offset = 1; + } + + $week_start = clone $date_obj; + + /* + * From the PHP docs, the `W` format stands for: + * - ISO-8601 week number of year, weeks starting on Monday + */ + $week_start->setISODate( + (int) $week_start->format( 'o' ), + (int) $week_start->format( 'W' ) + $week_offset, + $week_start_day + ); + + $week_end = clone $week_start; + // Add 6 days, then move at the end of the day. + $week_end->add( new DateInterval( 'P6D' ) ); + $week_end->setTime( 23, 59, 59 ); + + $week_start = static::immutable( $week_start ); + $week_end = static::immutable( $week_end ); + + $cache[ $cache_key ] = [ $week_start, $week_end ]; + $cache_week_start_end[ $memory_cache_key ] = [ $week_start, $week_end ]; + + tribe_set_var( $cache_var_name, $cache_week_start_end ); + + return [ $week_start, $week_end ]; + } + + /** + * Given a specific DateTime we determine the end of that day based on our Internal End of Day Cut-off. + * + * @since 4.11.2 + * + * @param string|DateTimeInterface $date Date that we are getting the end of day from. + * @param null|string $cutoff Which cutoff to use. + * + * @return DateTimeInterface|false Returns a DateTimeInterface when a valid date is given or false. + */ + public static function get_shifted_end_of_day( $date, $cutoff = null ) { + $date_obj = static::build_date_object( $date ); + + if ( ! $date_obj ) { + return false; + } + + $start_of_day = clone $date_obj; + $end_of_day = clone $date_obj; + + if ( empty( $cutoff ) || ! is_string( $cutoff ) || false === strpos( $cutoff, ':' ) ) { + $cutoff = tribe_get_option( 'multiDayCutoff', '00:00' ); + } + + list( $hours_to_add, $minutes_to_add ) = array_map( 'absint', explode( ':', $cutoff ) ); + + $seconds_to_add = ( $hours_to_add * HOUR_IN_SECONDS ) + ( $minutes_to_add * MINUTE_IN_SECONDS ); + if ( 0 !== $seconds_to_add ) { + $interval = static::interval( "PT{$seconds_to_add}S" ); + } + + $start_of_day->setTime( '0', '0', '0' ); + $end_of_day->setTime( '23', '59', '59' ); + + if ( 0 !== $seconds_to_add ) { + $start_of_day->add( $interval ); + $end_of_day->add( $interval ); + } + + if ( $end_of_day >= $date_obj && $date_obj >= $start_of_day ) { + return $end_of_day; + } + + $start_of_day->sub( static::interval( 'P1D' ) ); + + if ( $start_of_day < $date_obj ) { + $end_of_day->sub( static::interval( 'P1D' ) ); + } + + return $end_of_day; + } + + /** + * Given a specific DateTime we determine the start of that day based on our Internal End of Day Cut-off. + * + * @since 4.11.2 + * + * @param string|DateTimeInterface $date Date that we are getting the start of day from. + * @param null|string $cutoff Which cutoff to use. + * + * @return DateTimeInterface|false Returns a DateTimeInterface when a valid date is given or false. + */ + public static function get_shifted_start_of_day( $date, $cutoff = null ) { + $date_obj = static::build_date_object( $date ); + + if ( ! $date_obj ) { + return false; + } + + $start_of_day = clone $date_obj; + $end_of_day = clone $date_obj; + + if ( empty( $cutoff ) || ! is_string( $cutoff ) || false === strpos( $cutoff, ':' ) ) { + $cutoff = tribe_get_option( 'multiDayCutoff', '00:00' ); + } + + list( $hours_to_add, $minutes_to_add ) = array_map( 'absint', explode( ':', $cutoff ) ); + + $seconds_to_add = ( $hours_to_add * HOUR_IN_SECONDS ) + ( $minutes_to_add * MINUTE_IN_SECONDS ); + if ( 0 !== $seconds_to_add ) { + $interval = static::interval( "PT{$seconds_to_add}S" ); + } + + $start_of_day->setTime( '0', '0', '0' ); + $end_of_day->setTime( '23', '59', '59' ); + + if ( 0 !== $seconds_to_add ) { + $start_of_day->add( $interval ); + $end_of_day->add( $interval ); + } + + if ( $end_of_day <= $date_obj && $date_obj >= $start_of_day ) { + return $start_of_day; + } + + $end_of_day->sub( static::interval( 'P1D' ) ); + + if ( $end_of_day > $date_obj ) { + $start_of_day->sub( static::interval( 'P1D' ) ); + } + + return $start_of_day; + } + + /** + * Builds and returns a `DateInterval` object from the interval specification. + * + * For performance purposes the use of `DateInterval` specifications is preferred, so `P1D` is better than + * `1 day`. + * + * @since 4.10.2 + * + * @return DateInterval The built date interval object. + */ + public static function interval( $interval_spec ) { + try { + $interval = new \DateInterval( $interval_spec ); + } catch ( \Exception $e ) { + $interval = DateInterval::createFromDateString( $interval_spec ); + } + + return $interval; + } + + /** + * Builds the immutable version of a date from a string, integer (timestamp) or \DateTime object. + * + * It's the immutable version of the `Tribe__Date_Utils::build_date_object` method. + * + * @since 4.10.2 + * + * @param string|DateTime|int $datetime A `strtotime` parsable string, a DateTime object or + * a timestamp; defaults to `now`. + * @param string|DateTimeZone|null $timezone A timezone string, UTC offset or DateTimeZone object; + * defaults to the site timezone; this parameter is ignored + * if the `$datetime` parameter is a DatTime object. + * @param bool $with_fallback Whether to return a DateTime object even when the date data is + * invalid or not; defaults to `true`. + * + * @return DateTimeImmutable|false A DateTime object built using the specified date, time and timezone; if + * `$with_fallback` is set to `false` then `false` will be returned if a + * DateTime object could not be built. + */ + static function immutable( $datetime = 'now', $timezone = null, $with_fallback = true ) { + if ( $datetime instanceof DateTimeImmutable ) { + return $datetime; + } + + if ( $datetime instanceof DateTime ) { + return Date_I18n_Immutable::createFromMutable( $datetime ); + } + + $mutable = static::build_date_object( $datetime, $timezone, $with_fallback ); + + if ( false === $mutable ) { + return false; + } + + $cache_key = md5( ( __METHOD__ . $mutable->getTimezone()->getName() . $mutable->getTimestamp() ) ); + $cache = tribe( 'cache' ); + + if ( false !== $cached = $cache[ $cache_key ] ) { + return $cached; + } + + $immutable = Date_I18n_Immutable::createFromMutable( $mutable ); + + $cache[ $cache_key ] = $immutable; + + return $immutable; + } + + /** + * Builds a date object from a given datetime and timezone. + * + * An alias of the `Tribe__Date_Utils::build_date_object` function. + * + * @since 4.10.2 + * + * @param string|DateTime|int $datetime A `strtotime` parsable string, a DateTime object or + * a timestamp; defaults to `now`. + * @param string|DateTimeZone|null $timezone A timezone string, UTC offset or DateTimeZone object; + * defaults to the site timezone; this parameter is ignored + * if the `$datetime` parameter is a DatTime object. + * @param bool $with_fallback Whether to return a DateTime object even when the date data is + * invalid or not; defaults to `true`. + * + * @return DateTime|false A DateTime object built using the specified date, time and timezone; if `$with_fallback` + * is set to `false` then `false` will be returned if a DateTime object could not be built. + */ + public static function mutable( $datetime = 'now', $timezone = null, $with_fallback = true ) { + return static::build_date_object( $datetime, $timezone, $with_fallback ); + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Db.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Db.php new file mode 100644 index 000000000..de92149ff --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Db.php @@ -0,0 +1,38 @@ +get_results( "SHOW VARIABLES LIKE 'max_allowed_packet';", ARRAY_A ); + // default the size to 1MB + $max_size = ! empty( $max_size[0]['Value'] ) ? $max_size[0]['Value'] : 1048576; + + /** + * Filters the size of the `max_allowed_packet` setting in bytes. + * + * @since 4.7.12 + * + * @param int $max_size By default the `max_allowed_packet` from the database. + */ + $max_size = apply_filters( 'tribe_db_max_allowed_packet', $max_size ); + + return $max_size; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Debug.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Debug.php new file mode 100644 index 000000000..65d557947 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Debug.php @@ -0,0 +1,59 @@ +get_option( 'debugEvents' ) ) { + $plugin = basename( dirname( Tribe__Main::instance()->plugin_path ) ); + error_log( "$plugin/common - $format: $title" ); + if ( $data && $data != '' ) { + error_log( "$plugin/common - $format: " . print_r( $data, true ) ); + } + } + } + + /** + * Static Singleton Factory Method + * + * @return Tribe__Debug + */ + public static function instance() { + static $instance; + + if ( ! $instance ) { + $class_name = __CLASS__; + $instance = new $class_name; + } + + return $instance; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Debug_Bar/Panels/Context.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Debug_Bar/Panels/Context.php new file mode 100644 index 000000000..162aa1740 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Debug_Bar/Panels/Context.php @@ -0,0 +1,99 @@ + + #mt-debug-bar .mt-debug-bar-title { + margin-bottom: 1em; + } + #mt-debug-bar .mt-debug-bar-context-table { + width: 100%; + font-size: 120%; + } + #mt-debug-bar .mt-debug-bar-context-table td { + padding: .5em .5em .5em 1em; + border: black solid 1px; + } + #mt-debug-bar .mt-debug-bar-context-table th { + padding: 1em; + border: black solid 1px; + } + '; + $html .= '
    '; + + $html .= '

    ' . esc_html__( 'The Events Calendar Context', 'tribe-common' ) . '

    '; + + $html .= '
    '; + $html .= '

    ' . esc_html__( 'PHP Render Context', 'tribe-common' ) . '

    '; + $html .= ''; + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + $locations = tribe_context()->get_locations(); + $context = tribe_context()->to_array(); + $orm_args = tribe_context()->get_orm_args(); + + foreach ( $locations as $key => $rw_data ) { + $orm_arg_key = Arr::get( $locations, [ $key, 'orm_arg' ], $key ); + $orm_arg_value = Arr::get( $orm_args, $orm_arg_key, null ); + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + } + + $html .= '
    ' . __( 'Key', 'tribe-common' ) . '' . __( 'Value', 'tribe-common' ) . '' . __( 'ORM arg', 'tribe-common' ) . '' . __( 'Reads', 'tribe-common' ) . '' . __( 'Writes', 'tribe-common' ) . '
    ' . $key . '' . ( isset( $context[ $key ] ) ? print_r( $context[ $key ], true ) : 'undefined' ) . '' . ( false !== $orm_arg_key ? '' . print_r( $orm_arg_key, true ) . ' => ' . print_r( $orm_arg_value, true ) . '' : '' ) . '' . ( isset( $locations[ $key ]['read'] ) ? 'yes' : 'no' ) . '' . ( isset( $locations[ $key ]['write'] ) ? 'yes' : 'no' ) . '
    '; + $html .= '
    '; + $html .= '
    '; + + $state = tribe_context()->get_state(); + $html .= '

    ' . esc_attr__( 'State', + 'tribe-common' ) . '

    '; + $html .= '' . json_encode( $state, JSON_PRETTY_PRINT ) . '
    '; + + $html .= '
    '; + + echo $html; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Debug_Bar/Panels/Json_Ld.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Debug_Bar/Panels/Json_Ld.php new file mode 100644 index 000000000..5886ec1c6 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Debug_Bar/Panels/Json_Ld.php @@ -0,0 +1,84 @@ + + #mt-debug-bar .mt-debug-bar-title { + margin-bottom: 1em; + } + #mt-debug-bar .mt-debug-bar-section { + padding: .5em .5em .5em 1em; + } + '; + $html .= '
    '; + + $html .= '

    ' . esc_html__( 'The Events Calendar JSON-LD Data', + 'tribe-common' ) . '

    '; + + + $json_ld_data = array_filter( (array) tribe_cache()['json-ld-data'] ); + + if ( ! empty( $json_ld_data ) ) { + $html .= '
    '; + $html .= sprintf( + '
    The request produced %d JSON-LD data %s.

    ', + count( $json_ld_data ), + count( $json_ld_data ) > 1 ? 'scripts' : 'script' + ); + + $html .= '

    Copy the code below and paste it into ' . + '' . + 'Google\'s Structured Data Testing Tool' . + '' . + ' to test it using the Code Snippet option.


    '; + + foreach ( $json_ld_data as $full_entry ) { + preg_match( + '/(?^\\s*]*?>\\s*)(?.*)(?\\s<\\/script>)$/uism', + $full_entry, + $frags + ); + + if ( isset( $frags['open'], $frags['json'], $frags['close'] ) ) { + // Let's try and format it if we've got all the pieces. + $full_entry = $frags['open'] + . json_encode( json_decode( $frags['json'], true ), JSON_PRETTY_PRINT ) + . $frags['close']; + } + + $html .= sprintf( '
    %s
    ', esc_html( $full_entry ) ); + } + + $html .= '
    '; + } + + $html .= '
    '; + + echo $html; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Dependency.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Dependency.php new file mode 100644 index 000000000..cd5342a9c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Dependency.php @@ -0,0 +1,616 @@ + 'main class name', + * 'version' => 'version num', (optional) + * 'path' => 'Path to the main plugin/bootstrap file' (optional) + * ] + */ + protected $active_plugins = []; + + /** + * A multidimensional array of active tribe plugins in the following format + * + * [ + * 'class' => 'main class name', + * 'path' => 'Path to the main plugin/bootstrap file' + * 'version' => 'version num', (optional) + * 'dependencies' => 'A multidimensional of dependencies' (optional) + * ] + */ + protected $registered_plugins = []; + + /** + * An array of class Tribe__Admin__Notice__Plugin_Download per plugin + * + * @since 4.9 + * + */ + protected $admin_messages = []; + + private $extensions = [ + 'Tribe__AdminDashboard', + ]; + + /** + * Adds a plugin to the active list + * + * @since 4.9 + * + * @param string $main_class Main/base class for this plugin + * @param null|string $version Version number of plugin + * @param null|string $path Path to the main plugin/bootstrap file + * @param array $dependencies An array of dependencies for a plugin + */ + public function add_registered_plugin( $main_class, $version = null, $path = null, $dependencies = [] ) { + $plugin = [ + 'class' => $main_class, + 'version' => $version, + 'path' => $path, + 'dependencies' => $dependencies, + ]; + + $this->registered_plugins[ $main_class ] = $plugin; + + if ( $path ) { + $this->admin_messages[ $main_class ] = new Tribe__Admin__Notice__Plugin_Download( $path ); + } + } + + /** + * Retrieves registered plugin array + * + * @since 4.9 + * + * @return array + */ + public function get_registered_plugins() { + return $this->registered_plugins; + } + + /** + * Adds a plugin to the active list + * + * @param string $main_class Main/base class for this plugin + * @param string $version Version number of plugin + * @param string $path Path to the main plugin/bootstrap file + */ + public function add_active_plugin( $main_class, $version = null, $path = null ) { + $plugin = [ + 'class' => $main_class, + 'version' => $version, + 'path' => $path, + ]; + + $this->active_plugins[ $main_class ] = $plugin; + } + + /** + * Retrieves active plugin array + * + * @return array + */ + public function get_active_plugins() { + return $this->active_plugins; + } + + /** + * Searches the plugin list for key/value pair and return the full details for that plugin + * + * @param string $search_key The array key this value will appear in + * @param string $search_val The value itself + * + * @return array|null + */ + public function get_plugin_by_key( $search_key, $search_val ) { + foreach ( $this->get_active_plugins() as $plugin ) { + if ( isset( $plugin[ $search_key ] ) && $plugin[ $search_key ] === $search_val ) { + return $plugin; + } + } + + return null; + } + + /** + * Retrieves the plugins details by class name + * + * @param string $main_class Main/base class for this plugin + * + * @return array|null + */ + public function get_plugin_by_class( $main_class ) { + return $this->get_plugin_by_key( 'class', $main_class ); + } + + /** + * Retrieves the version of the plugin + * + * @param string $main_class Main/base class for this plugin + * + * @return string|null Version + */ + public function get_plugin_version( $main_class ) { + $plugin = $this->get_plugin_by_class( $main_class ); + + return ( isset( $plugin['version'] ) ? $plugin['version'] : null ); + } + + /** + * Checks if the plugin is active + * + * @param string $main_class Main/base class for this plugin + * + * @return bool + */ + public function is_plugin_active( $main_class ) { + return ( $this->get_plugin_by_class( $main_class ) !== null ); + } + + /** + * Searches the registered plugin list for key/value pair and return the full details for that plugin + * + * @since 4.9 + * + * @param string $search_key The array key this value will appear in + * @param string $search_val The value itself + * + * @return array|null + */ + public function get_registered_plugin_by_key( $search_key, $search_val ) { + foreach ( $this->get_registered_plugins() as $plugin ) { + if ( isset( $plugin[ $search_key ] ) && $plugin[ $search_key ] === $search_val ) { + return $plugin; + } + } + + return null; + } + + /** + * Retrieves the registered plugins details by class name + * + * @since 4.9 + * + * @param string $main_class Main/base class for this plugin + * + * @return array|null + */ + public function get_registered_plugin_by_class( $main_class ) { + return $this->get_registered_plugin_by_key( 'class', $main_class ); + } + + /** + * Retrieves the version of the registered plugin + * + * @since 4.9 + * + * @param string $main_class Main/base class for this plugin + * + * @return string|null Version + */ + public function get_registered_plugin_version( $main_class ) { + $plugin = $this->get_registered_plugin_by_class( $main_class ); + + return ( isset( $plugin['version'] ) ? $plugin['version'] : null ); + } + + /** + * Checks if the plugin is active + * + * @since 4.9 + * + * @param string $main_class Main/base class for this plugin + * + * @return bool + */ + public function is_plugin_registered( $main_class ) { + return ( $this->get_registered_plugin_by_class( $main_class ) !== null ); + } + + + /** + * Checks if a plugin is active and has the specified version + * + * @since 4.9 + * + * @param string $main_class Main/base class for this plugin + * @param string $version Version to do a compare against + * @param string $compare Version compare string, defaults to >= + * + * @return bool + */ + public function is_plugin_version( $main_class, $version, $compare = '>=' ) { + //active plugin check to see if the correct version is active + if ( ! $this->is_plugin_active( $main_class ) ) { + return false; + } elseif ( version_compare( $this->get_plugin_version( $main_class ), $version, $compare ) ) { + return true; + } + + return false; + } + + /** + * Is the plugin registered with at least the minimum version + * + * @since 4.9 + * + * @param string $main_class Main/base class for this plugin + * @param string $version Version to do a compare against + * @param string $compare Version compare string, defaults to >= + * + * @return bool + */ + public function is_plugin_version_registered( $main_class, $version, $compare = '>=' ) { + //registered plugin check if addon as it tests if it might load + if ( ! $this->is_plugin_registered( $main_class ) ) { + return false; + } elseif ( version_compare( $this->get_registered_plugin_version( $main_class ), $version, $compare ) ) { + return true; + } + + return false; + } + + /** + * Checks if each plugin is active and exceeds the specified version number + * + * @param array $plugins_required Each item is a 'class_name' => 'min version' pair. Min ver can be null. + * + * @return bool + */ + public function has_requisite_plugins( $plugins_required = [] ) { + foreach ( $plugins_required as $class => $version ) { + // Return false if the plugin is not set or is a lesser version + if ( ! $this->is_plugin_active( $class ) ) { + return false; + } + + if ( null !== $version && ! $this->is_plugin_version( $class, $version ) ) { + return false; + } + } + + return true; + } + + /** + * Retrieves Registered Plugin by Class Name from Array + * + * @since 4.9 + * + * @return array|boolean + */ + public function get_registered_plugin( $class ) { + $plugins = $this->registered_plugins; + + return isset( $plugins[ $class ] ) ? $plugins[ $class ] : false; + } + + /** + * Gets all dependencies or single class requirements if parent, co, add does not exist use array as is if they + * do exist check each one in turn. + * + * @since 4.9 + * + * @param array $plugin An array of data for given registered plugin., + * @param array $dependencies An array of dependencies for a plugin. + * @param bool $addon Indicates if the plugin is an add-on for The Events Calendar or Event Tickets. + * + * @return true|int The number of failed dependency checks; `true` or `0` to indicate no checks failed. + */ + public function has_valid_dependencies( $plugin, $dependencies = [], $addon = false ) { + if ( empty( $dependencies ) ) { + return true; + } + + $failed_dependency = 0; + + $tribe_plugins = new Tribe__Plugins(); + + foreach ( $dependencies as $class => $version ) { + + // if no class for add-on + $checked_plugin = $this->get_registered_plugin( $class ); + if ( $addon && empty( $checked_plugin ) ) { + continue; + } + + $is_registered = $this->is_plugin_version_registered( $class, $version ); + if ( ! empty( $is_registered ) ) { + continue; + } + + $dependent_plugin = $tribe_plugins->get_plugin_by_class( $class ); + + $pue = $this->get_pue_from_class( $dependent_plugin['class'] ); + $has_pue_notice = $pue ? tribe( 'pue.notices' )->has_notice( $pue->pue_install_key ) : false; + + $this->admin_messages[ $plugin['class'] ]->add_required_plugin( + $dependent_plugin['short_name'], + $dependent_plugin['thickbox_url'], + $is_registered, + $version, + $addon, + $has_pue_notice + ); + $failed_dependency++; + } + + return $failed_dependency; + } + + /** + * Gets the Tribe__PUE__Checker instance of a given plugin based on the class. + * + * @since 4.9.12 + * + * @param string $class Which plugin main class we are looking for. + * + * @return Tribe__PUE__Checker + */ + public function get_pue_from_class( $class ) { + if ( ! is_string( $class ) ) { + return false; + } + + // If class doesn't exist the plugin doesn't exist. + if ( ! class_exists( $class ) ) { + return false; + } + + /** + * These callbacks are only required to prevent fatals. + * Only happen for plugin that use PUE. + */ + $callback_map = [ + 'Tribe__Events__Pro__Main' => function() { + $pue_reflection = new ReflectionClass( Tribe__Events__Pro__PUE::class ); + $values = $pue_reflection->getStaticProperties(); + $values['plugin_file'] = EVENTS_CALENDAR_PRO_FILE; + return $values; + }, + 'Tribe__Events__Filterbar__View' => function() { + $pue_reflection = new ReflectionClass( Tribe__Events__Filterbar__PUE::class ); + $values = $pue_reflection->getStaticProperties(); + $values['plugin_file'] = TRIBE_EVENTS_FILTERBAR_FILE; + return $values; + }, + 'Tribe__Events__Tickets__Eventbrite__Main' => function() { + $pue_reflection = new ReflectionClass( Tribe__Events__Tickets__Eventbrite__PUE::class ); + $values = $pue_reflection->getStaticProperties(); + $values['plugin_file'] = EVENTBRITE_PLUGIN_FILE; + return $values; + }, + ]; + + // Bail when class is not mapped. + if ( ! isset( $callback_map[ $class ] ) ) { + return false; + } + + // Use the callback to get the returns without fatals + $values = $callback_map[ $class ](); + $pue_instance = new Tribe__PUE__Checker( $values['update_url'], $values['pue_slug'], [], plugin_basename( $values['plugin_file'] ) ); + + return $pue_instance; + } + + /** + * Register a Plugin + * + * @since 4.9 + * + * @param string $file_path Full file path to the base plugin file. + * @param string $main_class The Main/base class for this plugin. + * @param string $version The plugin version. + * @param array $classes_req Any Main class files/tribe plugins required for this to run. + * @param array $dependencies an array of dependencies to check. + */ + public function register_plugin( $file_path, $main_class, $version, $classes_req = [], $dependencies = [] ) { + /** + * Filters the version string for a plugin. + * + * @since 4.9 + * + * @param string $version The plugin version number, e.g. "4.0.4". + * @param array $dependencies An array of dependencies for the plugins. These can include parent, add-on and other dependencies. + * @param string $file_path The absolute path to the plugin main file. + * @param array $classes_req Any Main class files/tribe plugins required for this to run. + */ + $version = apply_filters( "tribe_register_{$main_class}_plugin_version", $version, $dependencies, $file_path, $classes_req ); + /** + * Filters the dependencies array for a plugin. + * + * @since 4.9 + * + * @param array $dependencies An array of dependencies for the plugins. These can include parent, add-on and other dependencies. + * @param string $version The plugin version number, e.g. "4.0.4". + * @param string $file_path The absolute path to the plugin main file. + * @param array $classes_req Any Main class files/tribe plugins required for this to run. + */ + $dependencies = apply_filters( "tribe_register_{$main_class}_plugin_dependencies", $dependencies, $version, $file_path, $classes_req ); + + //add all plugins to registered_plugins + $this->add_registered_plugin( $main_class, $version, $file_path, $dependencies ); + + // Checks to see if the plugins are active for extensions + if ( ! empty( $classes_req ) && ! $this->has_requisite_plugins( $classes_req ) ) { + $tribe_plugins = new Tribe__Plugins(); + foreach ( $classes_req as $class => $plugin_version ) { + $plugin = $tribe_plugins->get_plugin_by_class( $class ); + + $is_active = $this->is_plugin_version( $class, $plugin_version ); + $pue = $this->get_pue_from_class( $plugin['class'] ); + $has_pue_notice = $pue ? tribe( 'pue.notices' )->has_notice( $pue->pue_install_key ) : false; + + $this->admin_messages[ $main_class ]->add_required_plugin( + $plugin['short_name'], + $plugin['thickbox_url'], + $is_active, + $plugin_version, + false, + $has_pue_notice + ); + } + } + + // only set The Events Calendar and Event Tickets to Active when registering + if ( 'Tribe__Events__Main' === $main_class || 'Tribe__Tickets__Main' === $main_class ) { + $this->add_active_plugin( $main_class, $version, $file_path ); + } + + } + + /** + * Checks if this plugin has permission to run, if not it notifies the admin + * + * @since 4.9 + * + * @param string $main_class The Main/base class for this plugin + * + * @return bool Indicates if plugin should continue initialization + */ + public function check_plugin( $main_class ) { + + $parent_dependencies = $co_dependencies = $addon_dependencies = 0; + + // Check if plugin is registered, if not return false. + $plugin = $this->get_registered_plugin( $main_class ); + if ( empty( $plugin ) ) { + return false; + } + + // Check parent dependencies in add-on. + if ( ! empty( $plugin['dependencies']['parent-dependencies'] ) ) { + $parent_dependencies = $this->has_valid_dependencies( $plugin, $plugin['dependencies']['parent-dependencies'] ); + } + // Check co-dependencies in add-on. + if ( ! empty( $plugin['dependencies']['co-dependencies'] ) ) { + $co_dependencies = $this->has_valid_dependencies( $plugin, $plugin['dependencies']['co-dependencies'] ); + } + + // Check add-on dependencies from parent. + $addon_dependencies = $this->check_addon_dependencies( $main_class ); + + // If good then we set as active plugin and continue to load. + if ( ! $parent_dependencies && ! $co_dependencies && ! $addon_dependencies ) { + $this->add_active_plugin( $main_class, $plugin['version'], $plugin['path'] ); + + return true; + } + + return false; + } + + /** + * Check an add-on dependencies for its parent + * + * @since 4.9 + * + * @param string $main_class A string of the main class for the plugin being checked. + * + * @return bool Returns false if any dependency is invalid. + */ + protected function check_addon_dependencies( $main_class ) { + foreach ( $this->registered_plugins as $registered ) { + if ( empty( $registered['dependencies']['addon-dependencies'][ $main_class ] ) ) { + continue; + } + + $dependencies = [ $main_class => $registered['dependencies']['addon-dependencies'][ $main_class ] ]; + $check = $this->has_valid_dependencies( $registered, $dependencies, true ); + + // A value of `true` or `0` indicates there are no failing checks. So here we check for ints gt 0. + if ( is_int( $check ) && $check > 0 ) { + return true; + } + } + + return false; + } + + /** + * Static Singleton Factory Method + * + * @deprecated 4.9.12 We shouldn't be handling singletons internally. + * + * @return self + */ + public static function instance() { + return tribe( self::class ); + } + + /** + * Test if plugin is an extension. + * This is cludgy as none of our extensions flag themselves as such. + * THus, we have to do some text searching. + * + * @since 5.1.3 + * + * @param string $class - the classname to use to look up the plugin. + * + * @return boolean + */ + public function is_extension( $class ): bool { + $plugin = $this->get_registered_plugin_by_class( $class ); + $bad_words = [ + 'extension', + 'labs', + 'hubspot', + 'mt_support', + 'support_team', + 'idea_garden', + ]; + + foreach ( $bad_words as $bad_word ) { + if ( stripos( $plugin['class'], $bad_word ) !== false ) { + return true; + } + } + + // For extensions that break the rules. + if ( in_array( $plugin['class'], $this->extensions, true) ) { + return true; + } + + return false; + } + + /** + * Return if we have a premium plugin active. + * Results may be unreliable if called before the tribe_plugins_loaded hook. + * + * @since 5.1.3 + * + * @return bool + */ + public function has_active_premium_plugin(): bool { + $active_plugins = $this->get_active_plugins(); + foreach ( $active_plugins as $plugin ) { + if ( + 'Tribe__Events__Main' !== $plugin['class'] + && 'Tribe__Tickets__Main' !== $plugin['class'] + && ! $this->is_extension( $plugin['class'] ) // ensure extensions don't trigger the "premium" flag. + ) { + return true; + } + } + + return false; + } + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Deprecation.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Deprecation.php new file mode 100644 index 000000000..04ad0a255 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Deprecation.php @@ -0,0 +1,194 @@ + => array(, )`. + * e.g. `'tribe_current' => array ('4.3', 'tribe_deprecated')` + * + * For performance reasons this array is manually set and **not** + * dynamically populated. + * + * @var array + */ + protected $deprecated_filters = [ + 'tribe_cost_regex' => [ '4.3', 'tribe_events_cost_regex' ], + 'tribe_rewrite_prepared_slug' => [ '4.3', 'tribe_events_rewrite_prepared_slug' ], + ]; + + /** + * An array specifying the tag, version and optional replacements + * for deprecated actions. + * + * Use the format ` => array(, )`. + * e.g. `'tribe_current' => array ('4.3', 'tribe_deprecated')` + * + * For performance reasons this array is manually set and **not** + * dynamically populated. + * + * @var array + */ + protected $deprecated_actions = [ + 'tribe_pre_rewrite' => [ '4.3', 'tribe_events_pre_rewrite' ], + ]; + + /** + * @return Tribe__Deprecation + */ + public static function instance() { + if ( empty( self::$instance ) ) { + $instance = new self(); + + $instance->deprecate_actions(); + $instance->deprecate_filters(); + + self::$instance = $instance; + } + + return self::$instance; + } + + /** + * Hooks the deprecation notices for actions. + * + * @internal + */ + public function deprecate_actions() { + foreach ( array_keys( $this->deprecated_actions ) as $new_action_tag ) { + add_action( $new_action_tag, [ $this, 'deprecated_action_message' ] ); + add_filter( + $this->deprecated_actions[ $new_action_tag ][1], [ $this, 'deprecated_action_message' ] + ); + } + } + + /** + * Hooks the deprecation notices for filters. + * + * @internal + */ + public function deprecate_filters() { + foreach ( array_keys( $this->deprecated_filters ) as $new_filter_tag ) { + add_filter( $new_filter_tag, [ $this, 'deprecated_filter_message' ] ); + add_filter( + $this->deprecated_filters[ $new_filter_tag ][1], [ $this, 'deprecated_filter_message' ] + ); + } + } + + /** + * Triggers a deprecation notice if there is any callback hooked on a deprecated action. + */ + public function deprecated_action_message() { + $action = current_action(); + if ( isset( $this->deprecated_actions[ $action ] ) ) { + $deprecated_tag = $this->deprecated_actions[ $action ][1]; + } else { + $deprecated_tag = $action; + $action = $this->get_action_for_deprecated_tag( $action ); + } + + remove_action( $deprecated_tag, [ $this, 'deprecated_action_message' ] ); + + if ( doing_action( $deprecated_tag ) || has_filter( $deprecated_tag ) ) { + _deprecated_function( + 'The ' . $deprecated_tag . ' action', $this->deprecated_actions[ $action ][0], $action + ); + } + + add_action( $deprecated_tag, [ $this, 'deprecated_action_message' ] ); + } + + /** + * Triggers a deprecation notice if there is any callback hooked on a deprecated filter. + * + * @since 4.5.13 the filtered value is passed through unchanged + * + * @param mixed $value + * + * @return mixed + */ + public function deprecated_filter_message( $value = null ) { + $filter = current_filter(); + if ( isset( $this->deprecated_filters[ $filter ] ) ) { + $deprecated_tag = $this->deprecated_filters[ $filter ][1]; + } else { + $deprecated_tag = $filter; + $filter = $this->get_filter_for_deprecated_tag( $filter ); + } + + remove_filter( $deprecated_tag, [ $this, 'deprecated_filter_message' ] ); + + if ( has_filter( $deprecated_tag ) || doing_filter( $deprecated_tag ) ) { + $version = Tribe__Utils__Array::get( $this->deprecated_filters, [ $filter, 0 ], null ); + + _deprecated_function( + 'The ' . $deprecated_tag . ' filter', $version, $filter + ); + } + + add_filter( $deprecated_tag, [ $this, 'deprecated_filter_message' ] ); + + return $value; + } + + /** + * @param array $deprecated_filters + * + * @internal + */ + public function set_deprecated_filters( $deprecated_filters ) { + $this->deprecated_filters = $deprecated_filters; + } + + /** + * @param array $deprecated_actions + * + * @internal + */ + public function set_deprecated_actions( $deprecated_actions ) { + $this->deprecated_actions = $deprecated_actions; + } + + /** + * @param string $deprecated_tag + * + * @return int|string + */ + protected function get_action_for_deprecated_tag( $deprecated_tag ) { + foreach ( $this->deprecated_actions as $new_tag => $args ) { + if ( $args[1] === $deprecated_tag ) { + return $new_tag; + } + } + } + + /** + * @param string $deprecated_tag + * + * @return int|string + */ + protected function get_filter_for_deprecated_tag( $deprecated_tag ) { + foreach ( $this->deprecated_filters as $new_tag => $args ) { + if ( $args[1] === $deprecated_tag ) { + return $new_tag; + } + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Dialog/View.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Dialog/View.php new file mode 100644 index 000000000..3e560ccc4 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Dialog/View.php @@ -0,0 +1,617 @@ +set_template_origin( \Tribe__Main::instance() ); + $this->set_template_folder( 'src/views/dialog' ); + + // Configures this templating class to extract variables. + $this->set_template_context_extract( true ); + + // Uses the public folders. + $this->set_template_folder_lookup( true ); + } + + /** + * Public wrapper for build method. + * Contains all the logic/validation checks. + * + * @since 4.10.0 + * + * @param string $content Content as an HTML string. + * @param array $args { + * List of arguments to override dialog template. + * + * @type string $button_id The ID for the trigger button (optional). + * @type array $button_classes Any desired classes for the trigger button (optional). + * @type array $button_attributes Any desired attributes for the trigger button (optional). + * @type boolean $button_disabled Should the button be disabled (optional). + * @type string $button_text The text for the dialog trigger button ("Open the dialog window"). + * @type string $button_type The type for the trigger button (optional). + * @type string $button_value The value for the trigger button (optional). + * @type boolean $button_display If the dialog button should be displayed or not (optional). + * @type string $close_event The dialog close event hook name (`tribe_dialog_close_dialog`). + * @type string $content_classes The dialog content classes ("tribe-dialog__content"). + * @type array $context Any additional context data you need to expose to this file (optional). + * @type string $id The unique ID for this dialog (`uniqid()`). + * @type string $show_event The dialog event show hook name (`tribe_dialog_show_dialog`). + * @type string $template The dialog template name (dialog). + * @type string $title The dialog title (optional). + * @type string $trigger_classes Classes for the dialog trigger ("tribe_dialog_trigger"). + * + * Dialog script option overrides. + * + * @type string $append_target The dialog will be inserted after the button, you could supply a selector string here to override (optional). + * @type boolean $body_lock Whether to lock the body while dialog open (false). + * @type string $close_button_aria_label Aria label for the close button ("Close this dialog window"). + * @type string $close_button_classes Classes for the close button ("tribe-dialog__close-button"). + * @type string $content_wrapper_classes Dialog content wrapper classes. This wrapper includes the close button ("tribe-dialog__wrapper"). + * @type string $effect CSS effect on open. none or fade (optional). + * @type string $effect_easing A css easing string to apply ("ease-in-out"). + * @type int $effect_speed CSS effect speed in milliseconds (optional). + * @type string $overlay_classes The dialog overlay classes ("tribe-dialog__overlay"). + * @type boolean $overlay_click_closes If clicking the overlay closes the dialog (false). + * @type string $wrapper_classes The wrapper class for the dialog ("tribe-dialog"). + * } + * @param string $id The unique ID for this dialog. Gets prepended to the data attributes. Generated if not passed (`uniqid()`). + * @param boolean $echo Whether to echo the script or to return it (default: true). + * + * @return string An HTML string of the dialog. + */ + public function render_dialog( $content, $args = [], $id = null, $echo = true ) { + // Check for content to be passed. + if ( empty( $content ) ) { + return ''; + } + + // Generate an ID if we weren't passed one. + if ( is_null( $id ) ) { + $id = \uniqid(); + } + + /** @var \Tribe__Assets $assets */ + $assets = tribe( 'assets' ); + $assets->enqueue_group( 'tribe-dialog' ); + + $html = $this->build_dialog( $content, $id, $args ); + + if ( ! $echo ) { + return $html; + } + + echo $html; + } + + /** + * Syntactic sugar for `render_dialog()` to make creating modals easier. + * Adds sensible defaults for modals. + * + * @since 4.10.0 + * + * @param string $content Content as an HTML string. + * @param array $args { + * List of arguments to override dialog template. + * + * @type string $button_id The ID for the trigger button (optional). + * @type array $button_classes Any desired classes for the trigger button (optional). + * @type array $button_attributes Any desired attributes for the trigger button (optional). + * @type boolean $button_disabled Should the button be disabled (optional). + * @type string $button_text The text for the dialog trigger button ("Open the modal window"). + * @type string $button_type The type for the trigger button (optional). + * @type string $button_value The value for the trigger button (optional). + * @type boolean $button_display If the dialog button should be displayed or not (optional). + * @type string $close_event The dialog close event hook name (`tribe_dialog_close_modal`). + * @type string $content_classes The dialog content classes ("tribe-dialog__content tribe-modal__content"). + * @type string $title_classes The dialog title classes ("tribe-dialog__title tribe-modal__title"). + * @type array $context Any additional context data you need to expose to this file (optional). + * @type string $id The unique ID for this dialog (`uniqid()`). + * @type string $show_event The dialog event hook name (`tribe_dialog_show_modal`). + * @type string $template The dialog template name (modal). + * @type string $title The dialog title (optional). + * @type string $trigger_classes Classes for the dialog trigger ("tribe_dialog_trigger"). + * + * Dialog script option overrides. + * + * @type string $append_target The dialog will be inserted after the button, you could supply a selector string here to override ("body"). + * @type boolean $body_lock Whether to lock the body while dialog open (true). + * @type string $close_button_aria_label Aria label for the close button ("Close this modal window"). + * @type string $close_button_classes Classes for the close button ("tribe-dialog__close-button tribe-modal__close-button"). + * @type string $content_wrapper_classes Dialog content wrapper classes. This wrapper includes the close button ("tribe-dialog__wrapper tribe-modal__wrapper"). + * @type string $effect CSS effect on open. none or fade ("fade"). + * @type string $effect_easing A css easing string to apply ("ease-in-out"). + * @type int $effect_speed CSS effect speed in milliseconds (300). + * @type string $overlay_classes The dialog overlay classes ("tribe-dialog__overlay tribe-modal__overlay"). + * @type boolean $overlay_click_closes If clicking the overlay closes the dialog (true). + * @type string $wrapper_classes The wrapper class for the dialog ("tribe-dialog"). + * } + * @param string $id The unique ID for this dialog. Gets prepended to the data attributes. Generated if not passed (`uniqid()`). + * @param boolean $echo Whether to echo the script or to return it (default: true). + * + * @return string An HTML string of the dialog. + */ + public function render_modal( $content, $args = [], $id = null, $echo = true ) { + $default_args = [ + 'append_target' => '', + 'body_lock' => true, + 'button_text' => __( 'Open the modal window', 'tribe-common' ), + 'close_button_aria_label' => __( 'Close this modal window', 'tribe-common' ), + 'close_button_classes' => 'tribe-dialog__close-button tribe-modal__close-button', + 'close_event' => 'tribe_dialog_close_modal', + 'content_classes' => 'tribe-dialog__content tribe-modal__content', + 'content_wrapper_classes' => 'tribe-dialog__wrapper tribe-modal__wrapper', + 'effect' => 'fade', + 'effect_speed' => 300, + 'overlay_classes' => 'tribe-dialog__overlay tribe-modal__overlay', + 'overlay_click_closes' => true, + 'show_event' => 'tribe_dialog_show_modal', + 'template' => 'modal', + 'title_classes' => [ 'tribe-dialog__title', 'tribe-modal__title' ], + ]; + + $args = wp_parse_args( $args, $default_args ); + + return $this->render_dialog( $content, $args, $id, $echo ); + } + + /** + * Syntactic sugar for `render_dialog()` to make creating custom confirmation dialogs easier. + * Adds sensible defaults for confirmation dialogs. + * + * @since 4.10.0 + * + * @param string $content Content as an HTML string. + * @param array $args { + * List of arguments to override dialog template. + * + * @type string $button_id The ID for the trigger button (optional). + * @type array $button_classes Any desired classes for the trigger button (optional). + * @type array $button_attributes Any desired attributes for the trigger button (optional). + * @type boolean $button_disabled Should the button be disabled (optional). + * @type string $button_text The text for the dialog trigger button ("Open the dialog window"). + * @type string $button_type The type for the trigger button (optional). + * @type string $button_value The value for the trigger button (optional). + * @type boolean $button_display If the dialog button should be displayed or not (optional). + * @type string $cancel_button_text Text for the "Cancel" button ("Cancel"). + * @type string $content_classes The dialog content classes ("tribe-dialog__content tribe-confirm__content"). + * @type string $continue_button_text Text for the "Continue" button ("Confirm"). + * @type array $context Any additional context data you need to expose to this file (optional). + * @type string $id The unique ID for this dialog (`uniqid()`). + * @type string $template The dialog template name (confirm). + * @type string $title The dialog title (optional). + * @type string $trigger_classes Classes for the dialog trigger ("tribe_dialog_trigger"). + * + * Dialog script option overrides. + * + * @type string $append_target The dialog will be inserted after the button, you could supply a selector string here to override (optional). + * @type boolean $body_lock Whether to lock the body while dialog open (true). + * @type string $close_button_aria_label Aria label for the close button (optional). + * @type string $close_button_classes Classes for the close button ("tribe-dialog__close-button--hidden"). + * @type string $close_event The dialog close event hook name (`tribe_dialog_close_confirm`). + * @type string $content_wrapper_classes Dialog content wrapper classes. This wrapper includes the close button ("tribe-dialog__wrapper tribe-confirm__wrapper"). + * @type string $effect CSS effect on open. none or fade (optional). + * @type string $effect_easing A css easing string to apply ("ease-in-out"). + * @type int $effect_speed CSS effect speed in milliseconds (optional). + * @type string $overlay_classes The dialog overlay classes ("tribe-dialog__overlay tribe-confirm__overlay"). + * @type boolean $overlay_click_closes If clicking the overlay closes the dialog (false). + * @type string $show_event The dialog event hook name (`tribe_dialog_show_confirm`). + * @type string $wrapper_classes The wrapper class for the dialog ("tribe-dialog"). + * } + * @param string $id The unique ID for this dialog. Gets prepended to the data attributes. Generated if not passed (`uniqid()`). + * @param boolean $echo Whether to echo the script or to return it (default: true). + * + * @return string An HTML string of the dialog. + */ + public function render_confirm( $content, $args = [], $id = null, $echo = true ) { + $default_args = [ + 'body_lock' => true, + 'cancel_button_text' => __( 'Cancel', 'tribe-common' ), + 'continue_button_text' => __( 'Confirm', 'tribe-common' ), + 'close_button_aria_label' => '', + 'close_button_classes' => 'tribe-dialog__close-button--hidden', + 'close_event' => 'tribe_dialog_close_confirm', + 'content_classes' => 'tribe-dialog__content tribe-confirm__content', + 'content_wrapper_classes' => 'tribe-dialog__wrapper tribe-confirm__wrapper', + 'overlay_classes' => 'tribe-dialog__overlay tribe-confirm__overlay', + 'show_event' => 'tribe_dialog_show_confirm', + 'template' => 'confirm', + 'title_classes' => [ 'tribe-dialog__title', 'tribe-confirm__title' ], + ]; + + $args = wp_parse_args( $args, $default_args ); + + return $this->render_dialog( $content, $args, $id, $echo ); + } + + /** + * Syntactic sugar for `render_dialog()` to make creating custom confirmation dialogs easier. + * Adds sensible defaults for warning dialogs. + * + * @since 4.12.13 + * + * @param string $content Content as an HTML string. + * @param array $args { + * List of arguments to override dialog template. + * + * @type string $button_id The ID for the trigger button (optional). + * @type array $button_classes Any desired classes for the trigger button (optional). + * @type array $button_attributes Any desired attributes for the trigger button (optional). + * @type boolean $button_disabled Should the button be disabled (optional). + * @type string $button_text The text for the dialog trigger button ("Open the dialog window"). + * @type string $button_type The type for the trigger button (optional). + * @type string $button_value The value for the trigger button (optional). + * @type boolean $button_display If the dialog button should be displayed or not (optional). + * @type string $cancel_button_text Text for the "Cancel" button ("Cancel"). + * @type string $cancel_button_classes Any desired classes for the cancel button (optional). + * @type string $content_classes The dialog content classes ("tribe-dialog__content tribe-confirm__content"). + * @type string $continue_button_text Text for the "Continue" button ("Confirm"). + * @type string $continue_button_classes Any desired classes for the continue button (optional). + * @type array $context Any additional context data you need to expose to this file (optional). + * @type string $id The unique ID for this dialog (`uniqid()`). + * @type string $template The dialog template name (confirm). + * @type string $title The dialog title (optional). + * @type string $trigger_classes Classes for the dialog trigger ("tribe_dialog_trigger"). + * + * Dialog script option overrides. + * + * @type string $append_target The dialog will be inserted after the button, you could supply a selector string here to override (optional). + * @type boolean $body_lock Whether to lock the body while dialog open (true). + * @type string $close_button_aria_label Aria label for the close button (optional). + * @type string $close_button_classes Classes for the close button ("tribe-dialog__close-button--hidden"). + * @type string $close_event The dialog close event hook name (`tribe_dialog_close_confirm`). + * @type string $content_wrapper_classes Dialog content wrapper classes. This wrapper includes the close button ("tribe-dialog__wrapper tribe-confirm__wrapper"). + * @type string $effect CSS effect on open. none or fade (optional). + * @type string $effect_easing A css easing string to apply ("ease-in-out"). + * @type int $effect_speed CSS effect speed in milliseconds (optional). + * @type string $overlay_classes The dialog overlay classes ("tribe-dialog__overlay tribe-confirm__overlay"). + * @type boolean $overlay_click_closes If clicking the overlay closes the dialog (false). + * @type string $show_event The dialog event hook name (`tribe_dialog_show_confirm`). + * @type string $wrapper_classes The wrapper class for the dialog ("tribe-dialog"). + * } + * @param string $id The unique ID for this dialog. Gets prepended to the data attributes. Generated if not passed (`uniqid()`). + * @param boolean $echo Whether to echo the script or to return it (default: true). + * + * @return string An HTML string of the dialog. + */ + public function render_warning( $content, $args = [], $id = null, $echo = true ) { + $default_args = [ + 'body_lock' => true, + 'button_display' => false, + 'cancel_button_text' => __( 'Cancel', 'tribe-common' ), + 'cancel_button_classes' => 'tribe-dialog__button tribe-dialog__button-cancel tribe-common-c-btn tribe-common-c-btn-border', + 'continue_button_text' => __( 'OK', 'tribe-common' ), + 'continue_button_classes' => 'tribe-dialog__button tribe-dialog__button-continue tribe-common-c-btn-border tribe-common-c-btn-border--alt', + 'close_button_aria_label' => '', + 'close_button_classes' => 'tribe-dialog__close-button--hidden', + 'close_event' => 'tribe_dialog_close_confirm', + 'content_classes' => 'tribe-dialog__content tribe-confirm__content', + 'content_wrapper_classes' => 'tribe-dialog__wrapper tribe-confirm__wrapper', + 'overlay_classes' => 'tribe-dialog__overlay tribe-modal__overlay tribe-warning__overlay', + 'overlay_click_closes' => false, + 'show_event' => 'tribe_dialog_show_confirm', + 'template' => 'warning', + 'title_classes' => [ 'tribe-dialog__title', 'tribe-confirm__title' ], + ]; + + $args = wp_parse_args( $args, $default_args ); + + return $this->render_dialog( $content, $args, $id, $echo ); + } + + /** + * Syntactic sugar for `render_dialog()` to make creating custom alerts easier. + * Adds sensible defaults for alerts. + * + * @since 4.10.0 + * + * @param string $content Content as an HTML string. + * @param array $args { + * List of arguments to override dialog template. + * + * @type string $alert_button_text Text for the "OK" button ("OK"). + * @type string $button_id The ID for the trigger button (optional). + * @type array $button_classes Any desired classes for the trigger button (optional). + * @type array $button_attributes Any desired attributes for the trigger button (optional). + * @type boolean $button_disabled Should the button be disabled (optional). + * @type string $button_text The text for the dialog trigger button ("Open the dialog window"). + * @type string $button_type The type for the trigger button (optional). + * @type string $button_value The value for the trigger button (optional). + * @type boolean $button_display If the dialog button should be displayed or not (optional). + * @type string $content_classes The dialog content classes ("tribe-dialog__content tribe-alert__content"). + * @type string $title_classes The dialog title classes ("tribe-dialog__title tribe-alert__title"). + * @type array $context Any additional context data you need to expose to this file (optional). + * @type string $id The unique ID for this dialog (`uniqid()`). + * @type string $template The dialog template name (alert). + * @type string $title The dialog title (optional). + * @type string $trigger_classes Classes for the dialog trigger ("tribe_dialog_trigger"). + * + * Dialog script option overrides. + * + * @type string $append_target The dialog will be inserted after the button, you could supply a selector string here to override (optional). + * @type boolean $body_lock Whether to lock the body while dialog open (true). + * @type string $close_button_aria_label Aria label for the close button (optional). + * @type string $close_button_classes Classes for the close button ("tribe-dialog__close-button--hidden"). + * @type string $close_event The dialog close event hook name (`tribe_dialog_close_alert`). + * @type string $content_wrapper_classes Dialog content wrapper classes. This wrapper includes the close button ("tribe-dialog__wrapper tribe-alert__wrapper"). + * @type string $effect CSS effect on open. none or fade (optional). + * @type string $effect_easing A css easing string to apply ("ease-in-out"). + * @type int $effect_speed CSS effect speed in milliseconds (optional). + * @type string $overlay_classes The dialog overlay classes ("tribe-dialog__overlay tribe-alert__overlay"). + * @type boolean $overlay_click_closes If clicking the overlay closes the dialog (false). + * @type string $show_event The dialog event hook name (`tribe_dialog_show_alert`). + * @type string $wrapper_classes The wrapper class for the dialog ("tribe-dialog"). + * } + * @param string $id The unique ID for this dialog. Gets prepended to the data attributes. Generated if not passed (`uniqid()`). + * @param boolean $echo Whether to echo the script or to return it (default: true). + * + * @return string An HTML string of the dialog. + */ + public function render_alert( $content, $args = [], $id = null, $echo = true ) { + $default_args = [ + 'alert_button_text' => __( 'OK', 'tribe-common' ), + 'body_lock' => true, + 'close_button_aria_label' => '', + 'close_button_classes' => 'tribe-dialog__close-button--hidden', + 'close_event' => 'tribe_dialog_close_alert', + 'content_classes' => 'tribe-dialog__content tribe-alert__content', + 'content_wrapper_classes' => 'tribe-dialog__wrapper tribe-alert__wrapper', + 'overlay_classes' => 'tribe-dialog__overlay tribe-alert__overlay', + 'show_event' => 'tribe_dialog_show_alert', + 'template' => 'alert', + 'title_classes' => [ 'tribe-dialog__title', 'tribe-alert__title' ], + ]; + + $args = wp_parse_args( $args, $default_args ); + + return $this->render_dialog( $content, $args, $id, $echo ); + } + + /** + * Factory method for dialog HTML + * + * @since 4.10.0 + * + * @param string $content HTML dialog content. + * @param string $id The unique ID for this dialog (`uniqid()`) Gets prepended to the data attributes. + * @param array $args { + * List of arguments to override dialog template. + * + * @type string $button_id The ID for the trigger button (optional). + * @type array $button_classes Any desired classes for the trigger button (optional). + * @type array $button_attributes Any desired attributes for the trigger button (optional). + * @type boolean $button_disabled Should the button be disabled (optional). + * @type string $button_text The text for the dialog trigger button ("Open the dialog window"). + * @type string $button_type The type for the trigger button (optional). + * @type string $button_value The value for the trigger button (optional). + * @type boolean $button_display If the dialog button should be displayed or not (optional). + * @type string $cancel_button_classes Any desired classes for the cancel button (optional). + * @type string $close_event The dialog event hook name (`tribe_dialog_close_dialog`). + * @type string $content_classes The dialog content classes ("tribe-dialog__content"). + * @type string $continue_button_classes Any desired classes for the continue button (optional). + * @type string $title_classes The dialog title classes ("tribe-dialog__title"). + * @type array $context Any additional context data you need to expose to this file (optional). + * @type string $id The unique ID for this dialog (`uniqid()`). + * @type string $show_event The dialog event hook name (`tribe_dialog_show_dialog`). + * @type string $template The dialog template name (dialog). + * @type string $title The dialog title (optional). + * @type string $trigger_classes Classes for the dialog trigger ("tribe_dialog_trigger"). + * + * Dialog script option overrides. + * + * @type string $append_target The dialog will be inserted after the button, you could supply a selector string here to override (optional). + * @type boolean $body_lock Whether to lock the body while dialog open (false). + * @type string $close_button_aria_label Aria label for the close button ("Close this dialog window"). + * @type string $close_button_classes Classes for the close button ("tribe-dialog__close-button"). + * @type string $content_wrapper_classes Dialog content wrapper classes. This wrapper includes the close button ("tribe-dialog__wrapper"). + * @type string $effect CSS effect on open. none or fade (optional). + * @type string $effect_easing A css easing string to apply ("ease-in-out"). + * @type int $effect_speed CSS effect speed in milliseconds (optional). + * @type string $overlay_classes The dialog overlay classes ("tribe-dialog__overlay"). + * @type boolean $overlay_click_closes If clicking the overlay closes the dialog (false). + * @type string $wrapper_classes The wrapper class for the dialog ("tribe-dialog"). + * } + * + * @return string An HTML string of the dialog. + */ + private function build_dialog( $content, $id, $args ) { + $default_args = [ + 'button_classes' => '', + 'button_attributes' => [], + 'button_disabled' => false, + 'button_id' => '', + 'button_name' => '', + 'button_text' => __( 'Open the dialog window', 'tribe-common' ), + 'button_type' => '', + 'button_value' => '', + 'button_display' => true, + 'cancel_button_classes' => 'tribe-dialog__button tribe-dialog__button-cancel tribe-common-c-btn-border tribe-common-c-btn-border--alt', + 'continue_button_classes' => 'tribe-dialog__button tribe-dialog__button-continue tribe-common-c-btn tribe-common-c-btn-border', + 'close_event' => 'tribe_dialog_close_dialog', + 'content_classes' => 'tribe-dialog__content', + 'context' => '', + 'show_event' => 'tribe_dialog_show_dialog', + 'template' => 'dialog', + 'title_classes' => 'tribe-dialog__title', + 'title' => '', + 'trigger_classes' => 'tribe_dialog_trigger', + // Dialog script options. + 'append_target' => '', // The dialog will be inserted after the button, you could supply a selector string here to override. + 'body_lock' => false, // Lock the body while dialog open? + 'close_button_aria_label' => __( 'Close this dialog window', 'tribe-common' ), // Aria label for close button. + 'close_button_classes' => 'tribe-dialog__close-button', // Classes for close button. + 'content_wrapper_classes' => 'tribe-dialog__wrapper', // Dialog content classes. + 'effect' => 'none', // None or fade (for now). + 'effect_speed' => 0, // Effect speed in milliseconds. + 'effect_easing' => 'ease-in-out', // A css easing string. + 'overlay_classes' => 'tribe-dialog__overlay', // Overlay classes. + 'overlay_click_closes' => false, // Clicking overlay closes dialog. + 'wrapper_classes' => 'tribe-dialog', // The wrapper class for the dialog. + ]; + + $args = wp_parse_args( $args, $default_args ); + + $args[ 'content' ] = $content; + $args[ 'id' ] = $id; + + /** + * Allow us to filter the dialog arguments. + * + * @since 4.10.0 + * + * @param array $args The dialog arguments. + * @param string $content HTML content string. + */ + $args = apply_filters( 'tribe_dialog_args', $args, $content ); + + $template = $args[ 'template' ]; + /** + * Allow us to filter the dialog template name. + * + * @since 4.10.0 + * + * @param string $template The dialog template name. + * @param array $args The dialog arguments. + */ + $template_name = apply_filters( 'tribe_dialog_template', $template, $args ); + + ob_start(); + + $this->template( $template_name, $args, true ); + + $this->get_dialog_script( $args ); + + $html = ob_get_clean(); + + /** + * Allow us to filter the dialog output (HTML string). + * + * @since 4.10.0 + * + * @param string $html The dialog HTML string. + * @param array $args The dialog arguments. + */ + return apply_filters( 'tribe_dialog_html', $html, $args ); + } + + /** + * Get dialog + build_dialog(). + */ + $html = apply_filters( 'tribe_dialog_script_html', $html ); + + if ( $echo ) { + echo $html; + return; + } + + return $html; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Builder_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Builder_Interface.php new file mode 100644 index 000000000..1b757f220 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Builder_Interface.php @@ -0,0 +1,29 @@ + 'object', + 'properties' => [ + 'currency_symbol' => [ + 'type' => 'string', + 'description' => __( 'The cost currency symbol', 'tribe-common' ), + ], + 'currency_position ' => [ + 'type' => 'string', + 'description' => __( 'The position of the currency symbol in the cost string', 'tribe-common' ), + 'enum' => [ 'prefix', 'postfix' ], + ], + 'values' => [ + 'type' => 'array', + 'items' => [ 'type' => 'integer' ], + 'description' => __( 'A sorted array of all the numeric values for the cost', 'tribe-common' ), + ], + ], + ]; + + /** + * Filters the Swagger documentation generated for a cost details in the TEC REST API. + * + * @param array $documentation An associative PHP array in the format supported by Swagger. + * + * @link http://swagger.io/ + */ + $documentation = apply_filters( 'tribe_rest_swagger_cost_details_documentation', $documentation ); + + return $documentation; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php new file mode 100644 index 000000000..c76f15db7 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php @@ -0,0 +1,60 @@ + 'object', + 'properties' => [ + 'year' => [ + 'type' => 'integer', + 'description' => __( 'The date year', 'tribe-common' ), + ], + 'month' => [ + 'type' => 'integer', + 'description' => __( 'The date month', 'tribe-common' ), + ], + 'day' => [ + 'type' => 'integer', + 'description' => __( 'The date day', 'tribe-common' ), + ], + 'hour' => [ + 'type' => 'integer', + 'description' => __( 'The date hour', 'tribe-common' ), + ], + 'minutes' => [ + 'type' => 'integer', + 'description' => __( 'The date minutes', 'tribe-common' ), + ], + 'seconds' => [ + 'type' => 'integer', + 'description' => __( 'The date seconds', 'tribe-common' ), + ], + ], + ]; + + /** + * Filters the Swagger documentation generated for an date details in the TEC REST API. + * + * @param array $documentation An associative PHP array in the format supported by Swagger. + * + * @link http://swagger.io/ + */ + $documentation = apply_filters( 'tribe_rest_swagger_date_details_documentation', $documentation ); + + return $documentation; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php new file mode 100644 index 000000000..3633af9d8 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php @@ -0,0 +1,64 @@ + 'object', + 'properties' => [ + 'url' => [ + 'type' => 'string', + 'format' => 'uri', + 'description' => __( 'The URL to the full size version of the image', 'tribe-common' ), + ], + 'id' => [ + 'type' => 'integer', + 'description' => __( 'The image WordPress post ID', 'tribe-common' ), + ], + 'extension' => [ + 'type' => 'string', + 'description' => __( 'The image file extension', 'tribe-common' ), + ], + 'width' => [ + 'type' => 'integer', + 'description' => __( 'The image natural width in pixels', 'tribe-common' ), + ], + 'height' => [ + 'type' => 'integer', + 'description' => __( 'The image natural height in pixels', 'tribe-common' ), + ], + 'sizes' => [ + 'type' => 'array', + 'description' => __( 'The details about each size available for the image', 'tribe-common' ), + 'items' => [ + '$ref' => '#/components/schemas/ImageSize', + ], + ], + ], + ]; + + /** + * Filters the Swagger documentation generated for an image deatails in the TEC REST API. + * + * @param array $documentation An associative PHP array in the format supported by Swagger. + * + * @link http://swagger.io/ + */ + $documentation = apply_filters( 'tribe_rest_swagger_image_details_documentation', $documentation ); + + return $documentation; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php new file mode 100644 index 000000000..91921b57b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php @@ -0,0 +1,53 @@ + 'object', + 'properties' => [ + 'width' => [ + 'type' => 'integer', + 'description' => __( 'The image width in pixels in the specified size', 'tribe-common' ), + ], + 'height' => [ + 'type' => 'integer', + 'description' => __( 'The image height in pixels in the specified size', 'tribe-common' ), + ], + 'mime-type' => [ + 'type' => 'string', + 'description' => __( 'The image mime-type', 'tribe-common' ), + ], + 'url' => [ + 'type' => 'string', + 'format' => 'uri', + 'description' => __( 'The link to the image in the specified size on the site', 'tribe-common' ), + ], + ], + ]; + + /** + * Filters the Swagger documentation generated for an image size in the TEC REST API. + * + * @param array $documentation An associative PHP array in the format supported by Swagger. + * + * @link http://swagger.io/ + */ + $documentation = apply_filters( 'tribe_rest_swagger_image_size_documentation', $documentation ); + + return $documentation; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Provider_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Provider_Interface.php new file mode 100644 index 000000000..c57448f87 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Documentation/Swagger/Provider_Interface.php @@ -0,0 +1,17 @@ + 'object', + 'properties' => [ + 'id' => [ + 'type' => 'integer', + 'description' => __( 'The WordPress term ID', 'tribe-common' ), + ], + 'name' => [ + 'type' => 'string', + 'description' => __( 'The term name', 'tribe-common' ), + ], + 'slug' => [ + 'type' => 'string', + 'description' => __( 'The term slug', 'tribe-common' ), + ], + 'taxonomy' => [ + 'type' => 'string', + 'description' => __( 'The taxonomy the term belongs to', 'tribe-common' ), + ], + 'description' => [ + 'type' => 'string', + 'description' => __( 'The term description', 'tribe-common' ), + ], + 'parent' => [ + 'type' => 'integer', + 'description' => __( 'The term parent term if any', 'tribe-common' ), + ], + 'count' => [ + 'type' => 'integer', + 'description' => __( 'The number of posts associated with the term', 'tribe-common' ), + ], + 'url' => [ + 'type' => 'string', + 'description' => __( 'The URL to the term archive page', 'tribe-common' ), + ], + 'urls' => [ + 'type' => 'array', + 'items' => [ 'type' => 'string' ], + 'description' => __( 'A list of links to the term own, archive and parent REST URL', 'tribe-common' ), + ], + ], + ]; + + /** + * Filters the Swagger documentation generated for an term in the TEC REST API. + * + * @param array $documentation An associative PHP array in the format supported by Swagger. + * + * @link http://swagger.io/ + */ + $documentation = apply_filters( 'tribe_rest_swagger_term_documentation', $documentation ); + + return $documentation; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Post.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Post.php new file mode 100644 index 000000000..ab1a489c0 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Post.php @@ -0,0 +1,443 @@ +factory = null !== $factory ? $factory : tribe( 'post-duplicate.strategy-factory' ); + } + + /** + * Sets the post fields that should be used to find a duplicate in the database. + * + * Each entry should be in the [ => [ 'match' => ]] format. + * If not the strategy will be set to the default one. + * + * @param array $post_fields + * + * @since 4.6 + */ + public function use_post_fields( array $post_fields ) { + if ( empty( $post_fields ) ) { + $this->post_fields = []; + + return; + } + + $cast = $this->cast_to_strategy( $post_fields ); + $this->post_fields = array_intersect_key( $cast, array_combine( self::$post_table_columns, self::$post_table_columns ) ); + } + + /** + * Converts an array of fields to the format required by the class. + * + * @param array $fields + * + * @return array + * + * @since 4.6 + */ + protected function cast_to_strategy( array $fields ) { + $cast = []; + + foreach ( $fields as $key => $value ) { + if ( is_numeric( $key ) ) { + $cast[ $value ] = [ 'match' => 'same' ]; + } elseif ( is_array( $value ) ) { + if ( ! empty( $value['match'] ) ) { + $cast[ $key ] = $value; + } else { + $cast[ $key ] = array_merge( $value, [ 'match' => 'same' ] ); + } + } + } + + return $cast; + } + + /** + * Finds a duplicate with the data provided. + * + * The more post and custom fields are used to find a match the less likely it is to find one and the more + * likely it is for a duplicate to be a good match. + * + * @param array $postarr An array of post data, post fields and custom fields, that should be used to find the + * duplicate. + * + * @return bool|int `false` if a duplicate was not found, the post ID of the duplicate if found. + * + * @since 4.6 + */ + public function find_for( array $postarr ) { + if ( empty( $this->post_fields ) && empty( $this->custom_fields ) ) { + return false; + } + + $prepared = $this->prepare_queries( $postarr ); + + if ( false === $prepared ) { + return false; + } + + $id = false; + + /** @var wpdb $wpdb */ + global $wpdb; + foreach ( $prepared as $query ) { + $this_id = $wpdb->get_var( $query ); + + if ( self::AND_OPERATOR === $this->where_operator ) { + if ( empty( $this_id ) ) { + return false; + } + + $id = empty( $id ) + ? $this_id + : $this_id == $id; + + if ( empty( $id ) ) { + return false; + } + } else { + if ( ! empty( $this_id ) ) { + return $this_id; + } + } + } + + return $id; + } + + /** + * Finds all the duplicates with the data provided. + * + * The more post and custom fields are used to find a match the less likely it is to find one and the more + * likely it is for a duplicate to be a good match. + * + * @param array $postarr An array of post data, post fields and custom fields, that should be used to find the + * duplicate. + * + * @return bool|array `false` if a duplicate was not found, an array of the duplicate post IDs if any were found. + * + * @since 4.6 + */ + public function find_all_for( array $postarr ) { + if ( empty( $this->post_fields ) && empty( $this->custom_fields ) ) { + return false; + } + + $prepared = $this->prepare_queries( $postarr ); + + if ( false === $prepared ) { + return false; + } + + $ids = false; + + /** @var wpdb $wpdb */ + global $wpdb; + foreach ( $prepared as $query ) { + $this_ids = $wpdb->get_results( $query ); + $this_ids = ! empty( $this_ids ) + ? array_map( 'intval', wp_list_pluck( $this_ids, 'ID' ) ) + : false; + + if ( self::AND_OPERATOR === $this->where_operator ) { + if ( empty( $this_ids ) ) { + return false; + } + + $ids = empty( $ids ) + ? $this_ids + : array_intersect( (array) $ids, (array) $this_ids ); + + if ( empty( $ids ) ) { + return false; + } + } else { + $ids = empty( $ids ) + ? $this_ids + : array_unique( array_merge( (array) $ids, array_filter( (array) $this_ids ) ) ); + } + } + + return $ids; + } + + /** + * Sets the custom fields that should be used to find a duplicate in the database. + * + * Each entry should be in the [ => [ 'match' => ]] format. + * If not the strategy will be set to the default one. + * + * @param array $custom_fields + * + * @since 4.6 + */ + public function use_custom_fields( array $custom_fields ) { + $cast = $this->cast_to_strategy( $custom_fields ); + $this->custom_fields = $cast; + } + + /** + * Gets the SQL logic operator that will be used to join the WHERE queries frags. + * + * @return string + * + * @since 4.6 + */ + public function get_where_operator() { + return $this->where_operator; + } + + /** + * Sets the SQL logic operator that should be used to join the WHERE queries frags. + * + * @param string $where_operator + * + * @since 4.6 + */ + public function set_where_operator( $where_operator ) { + $this->where_operator = self::AND_OPERATOR === strtoupper( $where_operator ) + ? self::AND_OPERATOR + : self::OR_OPERATOR; + } + + /** + * Prepares the query that should be used to query for duplicates according + * to the current post and custom fields. + * + * @param array $postarr + * + * @return bool|array An array of prepared queries or `false` on failure. + * + * @since 4.6 + */ + protected function prepare_queries( array $postarr ) { + /** @var wpdb $wpdb */ + global $wpdb; + + $where_frags = []; + $custom_fields_where_frags = []; + $join = []; + + if ( ! empty( $this->post_fields ) ) { + $queryable_post_fields = array_intersect_key( $postarr, $this->post_fields ); + if ( empty( $queryable_post_fields ) ) { + return false; + } + foreach ( $queryable_post_fields as $key => $value ) { + $match_strategy = $this->factory->make( $this->post_fields[ $key ]['match'] ); + $where_frags[] = $match_strategy->where( $key, $postarr[ $key ] ); + } + } + + if ( ! empty( $this->custom_fields ) ) { + // we had post fields and found a match + $queryable_custom_fields = array_intersect_key( $postarr, $this->custom_fields ); + $i = 0; + foreach ( $queryable_custom_fields as $key => $value ) { + $match_strategy = $this->factory->make( $this->custom_fields[ $key ]['match'] ); + $meta_value = is_array( $value ) ? reset( $value ) : $value; + $custom_fields_where_frags[] = $match_strategy->where_custom_field( $key, $meta_value, "pm{$i}" ); + $i ++; + } + $count = count( $custom_fields_where_frags ); + for ( $i = 0; $i < $count; $i ++ ) { + $join[] = " \nLEFT JOIN {$wpdb->postmeta} pm{$i} ON pm{$i}.post_id = {$wpdb->posts}.ID "; + } + } + + /** + * Filters the JOIN limit. + * + * @param int $join_limit How many joins will be made per query at most. + * @param array $where_frags The WHERE components for this duplicate search query + * @param string $post_type The post type that's being used for this duplicate search query. + * + * @since 4.6 + */ + $join_limit = apply_filters( 'tribe_duplicate_post_join_limit', $this->join_limit, $where_frags, $this->post_type ); + + $excluded_status = [ + 'trash', + 'autodraft', + ]; + + /** + * Filters the excluded status. + * + * @param array $excluded_status The list of post_status to exclude from the query. + * @param string $post_type The post type that's being used for this duplicate search query. + * + * @since 4.6 + */ + $excluded_status = apply_filters( 'tribe_duplicate_post_excluded_status', $excluded_status, $where_frags, $this->post_type ); + + $post_type_conditional = $wpdb->prepare( "{$wpdb->posts}.post_type = %s", $this->post_type ); + + $post_status_conditional = ''; + + if ( $excluded_status ) { + $in_string = array_fill( 0, count( $excluded_status ), '%s' ); + $in_string = implode( ', ', $in_string ); + + // @codingStandardsIgnoreLine + $post_status_conditional = $wpdb->prepare( "{$wpdb->posts}.post_status NOT IN ( {$in_string} )", $excluded_status ); + } + + $queries = []; + + if ( ! empty( $join_limit ) && ! empty( $join ) ) { + while ( count( $join ) ) { + $current_wheres = array_splice( $custom_fields_where_frags, 0, $join_limit ); + $current_joins = array_splice( $join, 0, $join_limit ); + + $this_join = implode( "\n", $current_joins ); + + $this_where = "\n" . implode( " \n{$this->where_operator} ", array_merge( $where_frags, $current_wheres ) ); + $this_where = sprintf( '%s AND (%s)', $post_type_conditional, $this_where ); + + if ( '' !== $post_status_conditional ) { + $this_where = sprintf( '%s AND %s', $post_status_conditional, $this_where ); + } + + $queries[] = "SELECT DISTINCT {$wpdb->posts}.ID from {$wpdb->posts} {$this_join} \nWHERE {$this_where}"; + } + } else { + $where = implode( " \n{$this->where_operator} ", $where_frags ); + $where = sprintf( '%s AND (%s)', $post_type_conditional, $where ); + + if ( '' !== $post_status_conditional ) { + $where = sprintf( '%s AND %s', $post_status_conditional, $where ); + } + + $queries[] = "SELECT DISTINCT {$wpdb->posts}.ID from {$wpdb->posts} \nWHERE {$where}"; + } + + + return $queries; + } + + /** + * Gets the post type that will be used to find duplicates. + * + * @return string + * + * @since 4.6 + */ + public function get_post_type() { + return $this->post_type; + } + + /** + * Sets the post type that should be used to find duplicates. + * + * @param string $post_type + * + * @since 4.6 + */ + public function set_post_type( $post_type ) { + $this->post_type = $post_type; + } + + /** + * Sets the limit that should be applied to the number of JOIN in a single query. + * + * Setting the limit to an empty value will remove the limit (very bad idea). + * + * @param int $join_limit + * + * @since 4.6 + */ + public function set_join_limit( $join_limit ) { + $this->join_limit = empty( $join_limit ) + ? 999 + : intval( $join_limit ); + } + + /** + * Returns the limit that will be applied to the number of JOIN in a single query. + * + * @return int + * + * @since 4.6 + */ + public function get_join_limit() { + return $this->join_limit; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy/Base.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy/Base.php new file mode 100644 index 000000000..ebe5e955b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy/Base.php @@ -0,0 +1,24 @@ +is_a_numeric_post_field( $key ) ) { + return $wpdb->prepare( "{$key} = %d", $value ); + } + + $frags = $this->get_where_frags( $value ); + + $where_frags = []; + foreach ( $frags as $frag ) { + $formatted_frag = '%' . $wpdb->esc_like( strtolower( trim( $frag ) ) ) . '%'; + $where_frags[] = $wpdb->prepare( "{$key} LIKE %s", $formatted_frag ); + } + + return sprintf( '(%s)', implode( ' AND ', $where_frags ) ); + } + + /** + * Removes anything that's not letters, numbers, hypens and underscores from the string and returns its frags. + * + * @param string $value + * + * @return array + * + * @since 4.6 + */ + protected function get_where_frags( $value ) { + $snaked = preg_replace( '/[^a-z\d-]+/i', '_', $value ); + $frags = array_filter( explode( '_', $snaked ) ); + + return $frags; + } + + /** + * Returns a string suitable to be used as a WHERE clause in a SQL query for a custom field JOIN. + * + * @param string $key + * @param mixed $value + * @param string $table_alias + * + * @return string + * + * @since 4.6 + */ + public function where_custom_field( $key, $value, $table_alias ) { + /** @var wpdb $wpdb */ + global $wpdb; + + $frags = $this->get_where_frags( $value ); + + $where_frags = [ $wpdb->prepare( "{$table_alias}.meta_key = %s", $key ) ]; + foreach ( $frags as $frag ) { + $formatted_frag = '%' . $wpdb->esc_like( strtolower( trim( $frag ) ) ) . '%'; + $query = "{$table_alias}.meta_value LIKE %s"; + $where_frags[] = $wpdb->prepare( $query, $formatted_frag ); + } + + return sprintf( '(%s)', implode( " \n\tAND ", $where_frags ) ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy/Same.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy/Same.php new file mode 100644 index 000000000..b91e52c5c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy/Same.php @@ -0,0 +1,51 @@ +is_a_numeric_post_field( $key ) ) { + return $wpdb->prepare( "{$key} = %d", $value ); + } + + return $wpdb->prepare( "{$key} = %s", $value ); + } + + /** + * Returns a string suitable to be used as a WHERE clause in a SQL query for a custom field JOIN. + * + * @param string $key + * @param mixed $value + * @param string $table_alias + * + * @return string + * + * @since 4.6 + */ + public function where_custom_field( $key, $value, $table_alias ) { + /** @var wpdb $wpdb */ + global $wpdb; + + return $wpdb->prepare( "{$table_alias}.meta_key = %s AND {$table_alias}.meta_value = %s", $key, $value ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy_Factory.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy_Factory.php new file mode 100644 index 000000000..ebfde0219 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Duplicate/Strategy_Factory.php @@ -0,0 +1,108 @@ + 'Tribe__Duplicate__Strategy__Same', + 'same' => 'Tribe__Duplicate__Strategy__Same', + 'like' => 'Tribe__Duplicate__Strategy__Like', + ]; + + /** + * Filters the strategies managed by the strategy factory. + * + * If a 'default' slug is not provided the first strategy class in the map will be used as default. + * + * @param array $strategy_map An array that maps strategy slugs to strategy classes. + * @param Tribe__Duplicate__Strategy_Factory $this This factory object. + * + * @since 4.6 + */ + $this->strategy_map = apply_filters( 'tribe_duplicate_post_strategies', $strategy_map, $this ); + } + + /** + * Builds a strategy provided a strategy slug. + * + * @param string $strategy The slug for the strategy that should be built. + * + * @return Tribe__Duplicate__Strategy__Interface|bool A built strategy or `false` if the strategy could not be built. + * + * @since 4.6 + */ + public function make( $strategy ) { + /** + * Filters the strategy built by the factory. + * + * Returning a non `null` value here will override the factory operations. + * + * @param Tribe__Duplicate__Strategy__Interface $built_strategy The strategy that should be built + * for the slug. + * @param string $strategy The requested strategy slug. + * @param Tribe__Duplicate__Strategy_Factory $this This factory object. + * + * @since 4.6 + */ + $built_strategy = apply_filters( 'tribe_duplicate_post_strategy', null, $strategy, $this ); + + /** + * Filters the strategy built by the factory for a specific strategy. + * + * Returning a non `null` value here will override the factory operations. + * + * @param Tribe__Duplicate__Strategy__Interface $built_strategy The strategy that should be built + * for the slug. + * @param Tribe__Duplicate__Strategy_Factory $this This factory object. + * + * @since 4.6 + */ + $built_strategy = apply_filters( "tribe_duplicate_post_{$strategy}_strategy", $built_strategy, $this ); + + if ( null !== $built_strategy ) { + return $built_strategy; + } + + if ( isset( $this->strategy_map[ $strategy ] ) ) { + $strategy_class = $this->strategy_map[ $strategy ]; + } else { + $strategy_class = ! empty( $this->strategy_map['default'] ) + ? $this->strategy_map['default'] + : reset( $this->strategy_map ); + } + + return class_exists( $strategy_class ) + ? new $strategy_class + : false; + } + + /** + * Gets the unfiltered slug to strategy class map used by the factory. + * + * @return array + * + * @since 4.6 + */ + public function get_strategy_map() { + return $this->strategy_map; + } + + /** + * Sets the unfiltered slug to strategy class map used by the factory. + * + * @param array $strategy_map + * + * @since 4.6 + */ + public function set_strategy_map( array $strategy_map ) { + $this->strategy_map = $strategy_map; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Editor.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Editor.php new file mode 100644 index 000000000..7d4277e83 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Editor.php @@ -0,0 +1,297 @@ +are_blocks_enabled(); + + /** + * Filters whether the Blocks Editor should be activated or not for events. + * + * @since 4.12.0 + * + * @param bool $should_load_blocks Whether the blocks editor should be activated or not for events. + */ + $should_load_blocks= (bool) apply_filters( 'tribe_editor_should_load_blocks', $should_load_blocks ); + + return $should_load_blocks; + } + + /** + * Utility function to check if blocks are enabled based on two assumptions + * + * a) Is gutenberg active? + * 1) Via plugin or WP version + * b) Is the blocks editor active? + * 1) Based on the enqueue_block_assets action. + * + * @since 4.14.13 + * + * @return bool + */ + public function are_blocks_enabled() { + $gutenberg = $this->is_gutenberg_active() || $this->is_wp_version(); + $blocks_enabled = $gutenberg && $this->is_blocks_editor_active(); + + /** + * Filters whether the Blocks Editor is enabled or not. + * + * @since 4.14.13 + * + * @param bool $should_load_blocks Whether the Blocks Editor is enabled or not. + */ + return (bool) apply_filters( 'tribe_editor_are_blocks_enabled', $blocks_enabled ); + } + + /** + * Checks if we are on version 5.0-alpha or higher where we no longer have + * Gutenberg Project, but the Blocks Editor + * + * @since 4.8 + * + * @return boolean + */ + public function is_wp_version() { + global $wp_version; + + return version_compare( $wp_version, '5.0-alpha', '>=' ); + } + + /** + * Checks if we have the Gutenberg Project plugin active. + * + * @since 4.8 + * + * @return boolean + */ + private function is_gutenberg_active() { + return function_exists( 'gutenberg_register_scripts_and_styles' ); + } + + /** + * Checks if we have Editor Block active. + * + * @since 4.8 + * @since 4.14.13 Switch to using the `enqueue_block_assets` check that the Classic Editor plugin uses + * + * @return boolean + */ + public function is_blocks_editor_active() { + return has_action( 'enqueue_block_assets' ); + } + + /** + * Adds the required fields into the Post Type so that we can the Rest API to update it + * + * @since 4.8 + * + * @param array $args Arguments used to setup the Post Type + * + * @return array + */ + public function add_rest_support( $args = [] ) { + // Blocks Editor requires REST support + $args['show_in_rest'] = true; + + // Make sure we have the Support argument and it's an array + if ( ! isset( $args['supports'] ) || ! is_array( $args['supports'] ) ) { + $args['supports'] = []; + } + + if ( ! in_array( 'revisions', $args['supports'] ) ) { + $args['supports'][] = 'revisions'; + } + + // Add Custom Fields (meta) Support + if ( ! in_array( 'custom-fields', $args['supports'] ) ) { + $args['supports'][] = 'custom-fields'; + } + + // Add Post Title Support + if ( ! in_array( 'title', $args['supports'] ) ) { + $args['supports'][] = 'title'; + } + + // Add Post Excerpt Support + if ( ! in_array( 'excerpt', $args['supports'] ) ) { + $args['supports'][] = 'excerpt'; + } + + // Add Post Content Support + if ( ! in_array( 'editor', $args['supports'] ) ) { + $args['supports'][] = 'editor'; + } + + // Add Post Author Support + if ( ! in_array( 'author', $args['supports'] ) ) { + $args['supports'][] = 'author'; + } + + // Add Thumbnail Support + if ( ! in_array( 'thumbnail', $args['supports'] ) ) { + $args['supports'][] = 'thumbnail'; + } + + return $args; + } + + /** + * Detect if the Classic Editor is force-activated via plugin or if it comes from a request. + * + * @since 4.8 + * @todo Deprecate before 6.0. + * + * @return bool + */ + public function is_classic_editor() { + return ! $this->should_load_blocks(); + + _deprecated_function( __FUNCTION__, '4.14.13', 'should_load_blocks' ); + /** + * Allow other addons to disable Classic Editor based on options. + * + * @since 4.8.5 + * @deprecated 4.14.13 + * + * @param bool $classic_is_active Whether the Classic Editor should be used. + */ + return apply_filters_deprecated( + 'tribe_editor_classic_is_active', + [false], + '4.14.13', + 'tribe_editor_should_load_blocks', + 'This has been deprecated in favor of the filter in should_load_blocks(). Note however that the logic is inverted!' + ); + } + + /* DEPRECATED FUNCTIONS */ + + /** + * Adds the required fields into the Events Post Type so that we can use Block Editor + * + * @since 4.8 + * @deprecated 4.14.13 This is not used anywhere. + * + * @param array $args Arguments used to setup the Post Type + * + * @return array + */ + public function add_support( $args = [] ) { + _deprecated_function( __FUNCTION__, '4.14.13' ); + // Make sure we have the Support argument and it's an array + if ( ! isset( $args['supports'] ) || ! is_array( $args['supports'] ) ) { + $args['supports'] = []; + } + + // Add Editor Support + if ( ! in_array( 'editor', $args['supports'] ) ) { + $args['supports'][] = 'editor'; + } + + return $args; + } + + /** + * classic_editor_replace is function that is created by the plugin: + * used in ECP recurrence and TEC Meta + * + * @see https://wordpress.org/plugins/classic-editor/ + * + * prior 1.3 version the Classic Editor plugin was bundled inside of a unique function: + * `classic_editor_replace` now all is bundled inside of a class `Classic_Editor` + * + * @since 4.8 + * @deprecated 4.14.13 + * + * @return bool + */ + public function is_classic_plugin_active() { + _deprecated_function( __FUNCTION__, '4.14.13', 'Tribe\Editor\Compatibility\Classic_Editor::is_classic_plugin_active' ); + + return Tribe\Editor\Compatibility\Classic_Editor::is_classic_plugin_active(); + } + + /** + * Check if the setting `classic-editor-replace` is set to `replace` that option means to + * replace the gutenberg editor with the Classic Editor. + * + * Prior to 1.3 on Classic Editor plugin the value to identify if is on classic the value + * was `replace`, now the value is `classic` + * + * @since 4.8 + * @deprecated 4.14.13 + * + * @return bool + */ + public function is_classic_option_active() { + // _deprecated_function( __FUNCTION__, '4.14.13', 'Tribe\Editor\Compatibility\Classic_Editor::is_classic_option_active' ); + + return Tribe\Editor\Compatibility\Classic_Editor::is_classic_option_active(); + } + + /** + * Whether the TEC setting dictates Blocks or the Classic Editor. + * used in ET, ET+ and TEC + * + * @since 4.12.0 + * @todo Deprecate before 6.0. + * + * @return bool True if using Blocks. False if using the Classic Editor. + */ + public function is_events_using_blocks() { + return $this->should_load_blocks(); + + _deprecated_function( __FUNCTION__, '4.14.13', 'should_load_blocks'); + /** + * Whether the event is being served through blocks + * or the Classic Editor. + * + * @since 4.12.0 + * + * @param bool $is_using_blocks True if using blocks. False if using the Classic Editor. + */ + $is_using_blocks = apply_filters_deprecated( 'tribe_is_using_blocks', null, '4.14.13', 'tribe_editor_should_load_blocks', 'Function is slated for deprecation. Please use should_load_blocks, above.' ); + + // Early bail: The filter was overridden to return either true or false. + if ( null !== $is_using_blocks ) { + return (bool) $is_using_blocks; + } + + // Early bail: The site itself is not using blocks. + if ( ! $this->should_load_blocks() ) { + return false; + } + + return tribe_is_truthy( tribe_get_option( 'toggle_blocks_editor', false ) ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Assets.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Assets.php new file mode 100644 index 000000000..8a6c45926 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Assets.php @@ -0,0 +1,141 @@ + false, + 'localize' => [], + 'priority' => 10, + ] + ); + tribe_asset( + $plugin, + 'tribe-common-gutenberg-modules', + 'app/modules.js', + [ $this, 'filter_event_blocks_editor_deps' ], + 'enqueue_block_editor_assets', + [ + 'in_footer' => false, + 'localize' => [], + 'priority' => 11, + ] + ); + tribe_asset( + $plugin, + 'tribe-common-gutenberg-main', + 'app/main.js', + [ $this, 'filter_event_blocks_editor_deps' ], + 'enqueue_block_editor_assets', + [ + 'in_footer' => false, + 'localize' => [ + [ + 'name' => 'tribe_editor_config', + /** + * Array used to setup the FE with custom variables from the BE + * + * @since 4.8 + * + * @param array An array with the variables to be localized + */ + 'data' => tribe_callback( 'common.editor.configuration', 'localize' ), + ], + ], + 'priority' => 12, + ] + ); + + /** + * Block editor CSS. + */ + tribe_asset( + $plugin, + 'tribe-common-gutenberg-vendor-styles', + 'app/vendor.css', + [], + 'enqueue_block_editor_assets', + [ + 'in_footer' => false, + ] + ); + tribe_asset( + $plugin, + 'tribe-common-gutenberg-main-styles', + 'app/main.css', + [], + 'enqueue_block_editor_assets', + [ + 'in_footer' => false, + ] + ); + } + + /** + * Filter the dependencies for event blocks + * + * @since 4.14.2 + * + * @param array|object|null $assets Array of asset objects, single asset object, or null. + * + * @return array An array of dependency slugs. + */ + public function filter_event_blocks_editor_deps( $asset ) { + global $pagenow; + + $deps = [ + 'react', + 'react-dom', + 'wp-components', + 'wp-api', + 'wp-api-request', + 'wp-blocks', + 'wp-i18n', + 'wp-element', + 'wp-editor', + ]; + + if ( 'post.php' !== $pagenow && 'post-new.php' !== $pagenow ) { + if ( ( $key = array_search( 'wp-editor', $deps ) ) !== false ) { + unset( $deps[ $key ] ); + } + } + + return $deps; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Blocks/Abstract.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Blocks/Abstract.php new file mode 100644 index 000000000..919223ac6 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Editor/Blocks/Abstract.php @@ -0,0 +1,249 @@ +slug(), $this->namespace . '/' ) ) { + return $this->namespace . '/' . $this->slug(); + } else { + return $this->slug(); + } + } + + /** + * Return the namespace to child or external sources + * + * @since 4.8 + * + * @return string + */ + public function get_namespace() { + return $this->namespace; + } + + /** + * Return the block attributes + * + * @since 4.8 + * + * @param array $attributes + * + * @return array + */ + public function attributes( $params = [] ) { + + // get the default attributes + $default_attributes = $this->default_attributes(); + + // parse the attributes with the default ones + $attributes = wp_parse_args( + $params, + $default_attributes + ); + + /** + * Filters the default attributes for the block + * + * @param array $attributes The attributes + * @param object $this The current object + */ + $attributes = apply_filters( 'tribe_block_attributes_defaults_' . $this->slug(), $attributes, $this ); + + return $attributes; + } + + /** + * Return the block default attributes + * + * @since 4.8 + * + * @param array $attributes + * + * @return array + */ + public function default_attributes() { + + $attributes = []; + + /** + * Filters the default attributes + * + * @param array $params The attributes + * @param object $this The current object + */ + $attributes = apply_filters( 'tribe_block_attributes_defaults', $attributes, $this ); + + return $attributes; + } + + /** + * Since we are dealing with a Dynamic type of Block we need a PHP method to render it + * + * @since 4.8 + * + * @param array $attributes + * + * @return string + */ + public function render( $attributes = [] ) { + $json_string = json_encode( $attributes, JSON_PRETTY_PRINT ); + + return + '
    ' .
    +			'Block Name: ' . $this->name() . "\n" .
    +			'Block Attributes: ' . "\n" . $json_string .
    +		'
    '; + } + + /** + * Sends a valid JSON response to the AJAX request for the block contents + * + * @since 4.8 + * + * @return void + */ + public function ajax() { + wp_send_json_error( esc_attr__( 'Problem loading the block, please remove this block to restart.', 'tribe-common' ) ); + } + + /** + * Does the registration for PHP rendering for the Block, + * important due to being a dynamic Block + * + * @since 4.8 + * + * @return void + */ + public function register() { + $block_args = [ + 'render_callback' => [ $this, 'render' ], + ]; + + // Prevents a block from being registered twice. + if ( ! class_exists( 'WP_Block_Type_Registry' ) || WP_Block_Type_Registry::get_instance()->is_registered( $this->name() ) ) { + return; + } + + register_block_type( $this->name(), $block_args ); + } + + /** + * Registering the block and loading the assets and hooks should be handled separately. + * + * @since 4.14.13 + */ + public function load() { + add_action( 'wp_ajax_' . $this->get_ajax_action(), [ $this, 'ajax' ] ); + + $this->assets(); + $this->hook(); + } + + /** + * Determine whether a post or content string has this block. + * + * This test optimizes for performance rather than strict accuracy, detecting + * the pattern of a block but not validating its structure. For strict accuracy + * you should use the block parser on post content. + * + * @since 4.8 + * + * @see gutenberg_parse_blocks() + * + * @param int|string|WP_Post|null $post Optional. Post content, post ID, or post object. Defaults to global $post. + * + * @return bool Whether the post has this block. + */ + public function has_block( $post = null ) { + if ( ! is_numeric( $post ) ) { + $wp_post = get_post( $post ); + if ( $wp_post instanceof WP_Post ) { + $post = $wp_post->post_content; + } + } + + return false !== strpos( (string) $post, '\s*$/im'; + return $this->update_post_content( $post_id, $patttern, $replacement ); + } + + /** + * Function used to remove the inner blocks and the parent block as well inside of a post_content + * + * @since 4.8.2 + * + * @param $post_id + * @param $block_name The name of the block + * @param string $replacement The string used to replace the value of the searched block + * + * @return bool + */ + public function remove_inner_blocks( $post_id, $block_name, $replacement = '' ) { + $pattern = '/^\s*\s.*/ims'; + return $this->update_post_content( $post_id, $pattern, $replacement ); + } + + /** + * Update the content of a post using a pattern to search a specifc string, with a custom + * replacement + * + * @since 4.8.2 + * + * @param $post_id + * @param $pattern + * @param string $replacement The string used to replace the value of the searched block + * + * @return bool + */ + public function update_post_content( $post_id, $pattern, $replacement = '' ) { + $content = get_post_field( 'post_content', $post_id ); + + if ( empty( $content ) ) { + return false; + } + + $next_content = preg_replace( $pattern, $replacement, $content ); + + /** + * Don't update post content if preg_replace fails or content is the update_content + * is same as current content on the post to avoid a DB operation. + */ + if ( $next_content === null || $next_content === $content ) { + return false; + } + + return wp_update_post( [ + 'ID' => $post_id, + 'post_content' => $next_content, + ] ); + } + + /** + * Strip the dynamic blocks of the content + * + * @since 4.8.5 + * + * @param string $content The event content + * + * @return string + */ + public function strip_dynamic_blocks( $content = '' ) { + + if ( ! function_exists( 'strip_dynamic_blocks' ) ) { + return $content; + } + + return strip_dynamic_blocks( $content ); + + } + + /** + * Return the content without the tribe blocks + * + * @since 4.8.5 + * + * @param string $content The event content + * + * @return string + */ + public function exclude_tribe_blocks( $content = '' ) { + + $match_blocks_exp = '/\<\!\-\- \/?wp\:tribe.*\/?-->/i'; + + if ( ! preg_match( $match_blocks_exp, $content ) ) { + return $content; + } + + return preg_replace( $match_blocks_exp, '', $content ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Error.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Error.php new file mode 100644 index 000000000..c91d0c0d5 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Error.php @@ -0,0 +1,200 @@ +register( 'unknown', esc_html__( 'An Unknown error occurred' ) ); + } + + /** + * Make a quickly usable method to transform code/indexes to WP_Errors + * + * @see tribe_error() + * + * @param string|array $indexes Which Error we are looking for + * @param array $context Gives the Error context + * @param array $sprintf Allows variables on the message + * + * @return WP_Error + */ + public function send( $indexes, $context = [], $sprintf = [] ) { + if ( ! $this->exists( $indexes ) ) { + $indexes = [ 'unknown' ]; + } + + // Fetches the Errors + $messages = (array) $this->get( $indexes ); + $error = new WP_Error; + + foreach ( $messages as $key => $message ) { + // Allows variables when sending the message + if ( ! empty( $sprintf ) ) { + $message = vsprintf( $message, $sprintf ); + } + // Add this Message to the WP_Error + $error->add( $key, $message, $context ); + } + + return $error; + } + + /** + * Register a new error based on a Namespace + * + * @param string|array $indexes A list of the namespaces and last item should be the error name + * @param string $message What is going to be the message associate with this indexes + * + * @return boolean + */ + public function register( $indexes, $message ) { + if ( is_string( $indexes ) ) { + // Each namespace should come with `:` + $indexes = (array) explode( ':', $indexes ); + } + + // Couldn't register the error + if ( empty( $indexes ) ) { + return false; + } + + $variable = &$this->items; + $count = count( $indexes ); + + // Will create the Indexes based on the $slug + foreach ( $indexes as $i => $index ) { + if ( $count === $i + 1 ) { + $variable[ $index ] = $message; + } else { + $variable = &$variable[ $index ]; + } + } + + // Allows Chain Reactions + return true; + } + + /** + * Removes an error from the items + * + * @param string|array $indexes A list of the namespaces and last item should be the error name + * + * @return boolean + */ + public function remove( $indexes ) { + if ( ! $this->exists( $indexes ) ) { + return false; + } + + if ( is_string( $indexes ) ) { + // Each namespace should come with `:` + $indexes = (array) explode( ':', $indexes ); + } + + // Ensures that we don't modify the original + $variable = &$this->items; + $count = count( $indexes ); + + foreach ( $indexes as $i => $index ) { + if ( $count === $i + 1 ) { + unset( $variable[ $index ] ); + } else { + $variable = &$variable[ $index ]; + } + } + + return true; + } + + /** + * Fetches the error or namespace + * + * @param string|array $indexes (optional) A list of the namespaces and last item should be the error name + * + * @return null|array|string + */ + public function get( $indexes = null ) { + if ( is_null( $indexes ) ) { + return $this->items; + } + + if ( is_string( $indexes ) ) { + // Each namespace should come with `:` + $indexes = (array) explode( ':', $indexes ); + } + + // Ensures that we don't modify the original + $variable = $this->items; + $count = count( $indexes ); + + foreach ( $indexes as $i => $index ) { + if ( ! isset( $variable[ $index ] ) ) { + // If we are on the last item and we don't have it set make it Null + if ( $count === $i + 1 ) { + return null; + } + continue; + } + + $variable = $variable[ $index ]; + } + + $return = []; + $was_namespace = is_array( $variable ); + + /** + * @todo Allow fetching bigger groups + * Right now you can only fetch the first group of messages + * Trying to fetch Namespaces that contain other namespaces will bug + */ + foreach ( (array) $variable as $key => $value ) { + $key = implode( ':', $indexes ) . ( $was_namespace ? ':' . $key : '' ); + $return[ $key ] = $value; + } + + return $return; + } + + /** + * Checks if a given error or namespace exists + * + * @param string|array $indexes A list of the namespaces and last item should be the error name + * + * @return boolean + */ + public function exists( $indexes ) { + $variable = $this->get( $indexes ); + return ! empty( $variable ) || is_array( $variable ) ? true : false; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Exception.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Exception.php new file mode 100644 index 000000000..48e6c86c7 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Exception.php @@ -0,0 +1,90 @@ +original_exception = $original_exception; + } + + /** + * Handles the exception throwing the original when debugging (`WP_DEBUG` defined and `true`) + * or quietly logging when `WP_DEBUG` is `false` or not set. + * + * @return bool `true` if the message was logged, `false` otherwise. + * + * @throws Exception + */ + public function handle() { + $debug = defined( 'WP_DEBUG' ) && WP_DEBUG; + + if ( $debug ) { + $this->throw_original_exception(); + } + + return $this->log_original_exception_message(); + } + + /** + * @return string + */ + private function get_log_type_for_exception_code( $code ) { + $map = array( + // @todo [BTRIA-583]: Let's add a decent exception code to log type map here. + ); + + return isset( $map[ $code ] ) ? $map[ $code ] : Tribe__Log::ERROR; + } + + /** + * Throws the original exception. + * + * Provided as a manual override over the default `WP_DEBUG` dependent behaviour. + * + * @see Tribe__Exception::handle() + * + * @throws Exception + */ + public function throw_original_exception() { + throw $this->original_exception; + } + + /** + * Logs the original exception message. + * + * Provided as a manual override over the default `WP_DEBUG` dependent behaviour. + * + * @see Tribe__Exception::handle() + * + * @return bool `true` if the message was logged, `false` otherwise. + */ + private function log_original_exception_message() { + if ( ! class_exists( 'Tribe__Log' ) ) { + return false; + } + + $logger = new Tribe__Log(); + $message = $this->original_exception->getMessage(); + $log_type = $this->get_log_type_for_exception_code( $this->original_exception->getCode() ); + $src = $this->original_exception->getFile() . ':' . $this->original_exception->getLine(); + + $logger->log( $message, $log_type, $src ); + + return true; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Extension.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Extension.php new file mode 100644 index 000000000..021008beb --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Extension.php @@ -0,0 +1,454 @@ +args = $args; + $this->construct(); + + // The init() action/hook. + $init_hook = $this->get_init_hook(); + + // Continue plugin run after $init_hook has fired. + if ( did_action( $init_hook ) > 0 ) { + $this->register(); + } else { + add_action( $init_hook, [ $this, 'register' ] ); + } + } + + /** + * Empty function typically overridden by child class + */ + protected function construct() {} + + /** + * This is where the magic begins + * + * Declare this inside the child and put any custom code inside of it. + */ + abstract public function init(); + + /** + * Adds a Tribe Plugin to the list of plugins this extension depends upon. + * + * If this plugin is not present or does not exceed the specified version + * init() will not run. + * + * @param string $main_class The Main class for this Tribe plugin. + * @param string|null $minimum_version Minimum acceptable version of plugin. + */ + final protected function add_required_plugin( $main_class, $minimum_version = null ) { + $this->set( [ 'requires', $main_class ], $minimum_version ); + } + + /** + * Set the extension's tec.com URL + * + * @param string $url URL to the extension's page. + */ + final protected function set_url( $url ) { + $this->set( 'url', $url ); + + // Adds this as a tutorial link to Wp Admin > Plugins page. + Tribe__Plugin_Meta_Links::instance()->add_link( + $this->get_plugin_file(), + __( 'Tutorial', 'tribe-common' ), + $url, + [ 'class' => 'tribe-meta-link-extension' ] + ); + } + + /** + * Set the extension's version number + * + * @param string $version Extensions semantic version number. + */ + final protected function set_version( $version ) { + $this->set( 'version', $version ); + } + + /** + * Checks if the extension has permission to run, if so runs init() in child class + */ + final public function register() { + $extension_file = $this->get_plugin_file(); + $extension_class_name = $this->get( 'class' ); + $extension_version = $this->get_version(); + $plugins_required = $this->get( 'requires', [] ); + + tribe_register_plugin( + $extension_file, + $extension_class_name, + $extension_version, + $plugins_required + ); + + $dependency = Tribe__Dependency::instance(); + + // check requisite plugins are active for this extension + $is_plugin_authorized = $dependency->has_requisite_plugins( $plugins_required ); + + /** + * Explicitly disallow an extension, such as a core plugin having absorbed/replaced its functionality. + * + * @since 4.12.2 + * + * @param bool $is_disallowed    False by default. + * @param string $extension_class_name This extension's class name string + * (without initial forward slash for namespaced classes). + * @param Tribe__Extension $this_instance This extension class' instance. + */ + $is_disallowed = (bool) apply_filters( 'tribe_extension_is_disallowed', false, $extension_class_name, $this ); + + if ( $is_disallowed ) { + if ( + is_admin() + && current_user_can( 'activate_plugins' ) + ) { + tribe_notice( 'tribe_extension_is_disallowed', [ $this, 'notice_disallowed' ], [ 'type' => 'error' ] ); + } + + deactivate_plugins( $extension_file, true ); + + return; + } + + if ( $is_plugin_authorized ) { + $this->init(); + + // Add extension as active to dependency checker. + $dependency->add_active_plugin( $extension_class_name, $extension_version, $extension_file ); + } + } + + /** + * Gets the full path to the extension's plugin file + * + * Sets default if the arg is blank. + * + * @return string File path + */ + final public function get_plugin_file() { + $file = $this->get( 'file' ); + + // If this is not set assume the extension's plugin class is the plugin file. + if ( empty( $file ) ) { + $reflection = new ReflectionClass( $this->get( 'class' ) ); + $file = $reflection->getFileName(); + $this->set( 'file', $file ); + } + + return $file; + } + + /** + * Get the extension's version number + * + * @return string Semantic version number + */ + final public function get_version() { + return $this->get_arg_or_plugin_data( 'version', 'Version' ); + } + + /** + * Get the extension's plugin name + * + * @return string Plugin name + */ + final public function get_name() { + return $this->get_arg_or_plugin_data( 'name', 'Name' ); + } + + /** + * Get the extension's description + * + * @return string Plugin description + */ + final public function get_description() { + return $this->get_arg_or_plugin_data( 'description', 'Description' ); + } + + /** + * Gets the action/hook for the extensions' init(). + * + * @return string Action/hook + */ + final public function get_init_hook() { + return $this->get( 'hook', 'tribe_plugins_loaded' ); + } + + /** + * Gets the plugin data from the plugin file header + * + * This is somewhat resource intensive, so data is stored in $args + * in case of subsequent calls. + * + * @see get_plugin_data() for WP Admin only function this is similar to. + * + * @return array Plugin data; keys match capitalized file header declarations. + */ + final public function get_plugin_data() { + $plugin_data = $this->get( 'plugin_data' ); + + // Set the plugin data arg/cache to match. + if ( empty( $plugin_data ) ) { + $plugin_data = $this->set( 'plugin_data', Tribe__Utils__Plugins::get_plugin_data( $this->get_plugin_file() ) ); + } + + return $plugin_data; + } + + /** + * Retrieves any args whose default value is stored in the plugin file header + * + * @param string $arg The key for arg. + * @param string $plugin_data_key The key for the arg in the file header. + * + * @return string|null String if set, otherwise null. + */ + final public function get_arg_or_plugin_data( $arg, $plugin_data_key ) { + $arg_value = $this->get( $arg, null ); + + // See if the arg is already set, if not get default from plugin data and set it. + if ( null === $arg_value ) { + $pdata = $this->get_plugin_data(); + $arg_value = isset( $pdata[ $plugin_data_key ] ) ? $pdata[ $plugin_data_key ] : null; + } + + return $arg_value; + } + + /** + * Sets an arg, including one nested a few levels deep + * + * @param string|array $key To set an arg nested multiple levels deep pass an array + * specifying each key in order as a value. + * Example: array( 'lvl1', 'lvl2', 'lvl3' ); + * @param mixed $value The value. + */ + final protected function set( $key, $value ) { + $this->args = Tribe__Utils__Array::set( $this->args, $key, $value ); + } + + /** + * Retrieves arg, including one nested a few levels deep + * + * @param string|array $key To select an arg nested multiple levels deep pass an + * array specifying each key in order as a value. + * Example: array( 'lvl1', 'lvl2', 'lvl3' ); + * @param null $default Value to return if nothing is set. + * + * @return mixed Returns the args value or the default if arg is not found. + */ + final public function get( $key, $default = null ) { + return Tribe__Utils__Array::get( $this->args, $key, $default ); + } + + /** + * Gets the name of the class the method is called in; typically will be a child class + * + * This uses some hackery if the server is on PHP 5.2, and it can fail in rare + * circumstances causing a null value to be returned. + * + * @return string|null Class name + */ + final protected static function get_called_class() { + $class_name = null; + + if ( function_exists( 'get_called_class' ) ) { + // For PHP 5.3+ we can use the late static binding class name. + $class_name = get_called_class(); + } else { + // For PHP 5.2 and under we hack around the lack of late static bindings. + try { + $backtraces = debug_backtrace(); + + // Grab each class from the backtrace. + foreach ( $backtraces as $i ) { + $class = null; + + if ( array_key_exists( 'class', $i ) ) { + // Direct call to a class. + $class = $i['class']; + } elseif ( + array_key_exists( 'function', $i ) && + strpos( $i['function'], 'call_user_func' ) === 0 && + array_key_exists( 'args', $i ) && + is_array( $i['args'] ) && + is_array( $i['args'][0] ) && + isset( $i['args'][0][0] ) + ) { + // Found a call from call_user_func... and $i['args'][0][0] is present + // indicating a static call to a method. + $class = $i['args'][0][0]; + } else { + // Slight performance boost from skipping ahead. + continue; + } + + // Check to see if the parent is the current class. + // The first backtrace with a matching parent is our class. + if ( get_parent_class( $class ) === __CLASS__ ) { + $class_name = $class; + break; + } + } + } catch ( Exception $e ) { + // Host has disabled or misconfigured debug_backtrace(). + $exception = new Tribe__Exception( $e ); + $exception->handle(); + } + } + + // Class name was not set by debug_backtrace() hackery. + if ( null === $class_name ) { + tribe_notice( 'tribe_debug_backtrace_disabled', [ __CLASS__, 'notice_debug_backtrace' ] ); + } + + return $class_name; + } + + /** + * Echoes error message indicating user is on PHP 5.2 and debug_backtrace is disabled + */ + final public static function notice_debug_backtrace() { + printf( + '

    %s

    ', + esc_html__( 'Unable to run Tribe Extensions. Your website host is running PHP 5.2 or older, and has likely disabled or misconfigured debug_backtrace(). You, or your website host, will need to upgrade PHP or properly configure debug_backtrace() for Tribe Extensions to work.', 'tribe-common' ) + ); + } + + /** + * Gets the error message about being explicitly disallowed. + * + * @since 4.12.2 + * + * @return string Notice text. + */ + public function notice_disallowed() { + return sprintf( + '

    %1$s: %2$s

    ', + $this->get_name(), + esc_html_x( + "This extension has been programmatically disallowed. The most common reason is due to another The Events Calendar plugin having absorbed or replaced this extension's functionality. This extension plugin has been deactivated, and you should likely delete it.", + 'extension disallowed', + 'tribe-common' + ) + ); + } + + /** + * Prevent cloning the singleton with 'clone' operator + * + * @return void + */ + final public function __clone() { + _doing_it_wrong( + __FUNCTION__, + 'Can not use this method on singletons.', + '4.3' + ); + } + + /** + * Prevent unserializing the singleton instance + * + * @return void + */ + final public function __wakeup() { + _doing_it_wrong( + __FUNCTION__, + 'Can not use this method on singletons.', + '4.3' + ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Extension_Loader.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Extension_Loader.php new file mode 100644 index 000000000..da1271b87 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Extension_Loader.php @@ -0,0 +1,168 @@ +instantiate_extension( $plugin_file ); + } + } + + /** + * Gets tribe extension plugin foldername prefixes + * + * @return array Prefixes + */ + public static function get_extension_file_prefixes() { + $prefixes = [ 'tribe-ext-' ]; + + /** + * Filter which plugin folder prefixes are considered tribe extensions. + * + * @param array $prefixes Extension plugin folder name prefixes. + */ + return apply_filters( 'tribe_extension_prefixes', $prefixes ); + } + + /** + * Instantiates an extension based on info in its plugin file header. + * + * @param string $plugin_file Full path to extension's plugin file header. + * + * @return bool Indicates if extension was instantiated successfully. + */ + public function instantiate_extension( $plugin_file ) { + $p_data = $this->get_cached_plugin_data( $plugin_file ); + $p_folder = trailingslashit( dirname( $plugin_file ) ); + $success = false; + + // Nothing to instantiate if class is not set. + if ( empty( $p_data['ExtensionClass'] ) ) { + return $success; + } + + // Default to plugin file when empty. + $class_file = ! empty( $p_data['ExtensionFile'] ) ? $p_folder . $p_data['ExtensionFile'] : $plugin_file; + + // Include file. + if ( file_exists( $class_file ) ) { + // Prevent loading class twice in edge cases where require_once wouldn't work. + if ( ! class_exists( $p_data['ExtensionClass'] ) ) { + require( $class_file ); + } + } else { + _doing_it_wrong( + esc_html( $class_file ), + 'Extension file does not exist, please specify valid extension file.', + '4.3' + ); + } + + // Class instantiation. + if ( class_exists( $p_data['ExtensionClass'] ) ) { + $extension_args = [ + 'file' => $plugin_file, + 'plugin_data' => $p_data, + ]; + + // Instantiates extension instance. + $extension = call_user_func( + [ $p_data['ExtensionClass'], 'instance' ], + $p_data['ExtensionClass'], + $extension_args + ); + + if ( null !== $extension ) { + $success = true; + } + } else { + _doing_it_wrong( + esc_html( $p_data['ExtensionClass'] ), + 'Specified extension class does not exist. Please double check that this class is declared in the extension file.', + '4.3' + ); + } + + return $success; + } + + /** + * Retrieves plugin data from cache if it exists. + * + * @param string $plugin_path Path to plugin header file. + * + * @return array|null Plugin data or null. + */ + public function get_cached_plugin_data( $plugin_path ) { + $plugin_basename = plugin_basename( $plugin_path ); + + if ( ! array_key_exists( $plugin_basename, $this->plugin_data ) ) { + $this->plugin_data[ $plugin_basename ] = Tribe__Utils__Plugins::get_plugin_data( $plugin_path ); + } + + return $this->plugin_data[ $plugin_basename ]; + } + + /** + * Prevent cloning the singleton with 'clone' operator + * + * @return void + */ + public function __clone() { + _doing_it_wrong( + __FUNCTION__, + 'Can not use this method on singletons.', + '4.3' + ); + } + + /** + * Prevent unserializing the singleton instance + * + * @return void + */ + public function __wakeup() { + _doing_it_wrong( + __FUNCTION__, + 'Can not use this method on singletons.', + '4.3' + ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Feature_Detection.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Feature_Detection.php new file mode 100644 index 000000000..c10b59791 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Feature_Detection.php @@ -0,0 +1,250 @@ + 6000, + ]; + + /** + * The name of the option that will be used to indicate a feature detection is running. + * + * @var string + */ + protected $lock_option_name; + + /** + * Checks whether async, AJAX-based, background processing is supported or not. + * + * To avoid making this costly check on each load the result of this check is cached + * in the `tribe_feature_detection` transient, under the `supports_async_process` key. + * + * @since 4.7.23 + * + * @param bool $force Whether to use the cache value, if available, or force the check + * to be made again. + * + * @return bool Whether async, AJAX-based, background processing is supported or not. + */ + public function supports_async_process( $force = false ) { + /** + * Filters whether async, AJAX-based, processing is supported or not. + * + * Returning a non `null` value here will make this method bail and + * return the filtered value immediately. + * + * @since 4.7.23 + * + * @param bool $supports_async_process Whether async, AJAX-based, processing is supported or not. + * @param bool $force Whether the check is forcing the cached value to be refreshed + * or not. + */ + $supports_async_process = apply_filters( 'tribe_supports_async_process', null, $force ); + if ( null !== $supports_async_process ) { + return (bool) $supports_async_process; + } + + $this->lock_option_name = 'tribe_feature_support_check_lock'; + $transient_name = Tribe__Process__Tester::TRANSIENT_NAME; + $timed_option_exists = tec_timed_option()->exists( $transient_name ); + $supports_async_process = tec_timed_option()->get( $transient_name, null, $force ); + + if ( + $force + || null === $supports_async_process + || ! $timed_option_exists + ) { + if ( $this->is_locked() ) { + // We're already running this check, bail and return the safe option for the time being. + return false; + } + + // Let's avoid race conditions by running two or more checks at the same time. + $this->lock(); + + // Log that we're checking for AJAX-based async process support using the tester. + tribe( 'logger' )->log( 'Checking for AJAX-based async processing support triggering a test request.', Tribe__Log::DEBUG ); + + /* + * Build and dispatch the tester: if it works a transient should be set. + */ + $tester = new Tribe__Process__Tester(); + tribe( 'logger' )->log( 'Dispatching AJAX-based async processing support test request.', Tribe__Log::DEBUG ); + $tester->dispatch(); + + $wait_up_to = 10; + $start = time(); + $supports_async_process = false; + + while ( time() <= $start + $wait_up_to ) { + // We want to force a refetch from the database on each check. + $supports_async_process = (bool) tec_timed_option()->get( $transient_name ); + + if ( $supports_async_process ) { + break; + } + sleep( $wait_up_to / 5 ); + } + + $this->unlock(); + if ( $supports_async_process ) { + tribe( 'logger' )->log( 'AJAX-based async processing is supported.', Tribe__Log::DEBUG ); + } else { + tribe( 'logger' )->log( 'AJAX-based async processing is not supported; background processing will rely on WP Cron.', Tribe__Log::DEBUG ); + } + } + + return (bool) $supports_async_process; + } + + /** + * Sets the lock option to `1` to indicate a feature detection is running. + * + * @since 4.8.1 + */ + protected function lock() { + update_option( $this->lock_option_name, '1' ); + } + + /** + * Deletes the lock option to indicate the current feature detection process is done. + * + * @since 4.8.1 + */ + protected function unlock() { + delete_option( $this->lock_option_name ); + } + + /** + * Checks whether a feature detection lock is currently in place or not. + * + * @since 4.8.1 + * + * @return bool Whether a feature detection lock is currently in place or not. + */ + protected function is_locked() { + $lock_option = get_option( $this->lock_option_name ); + + return ! empty( $lock_option ); + } + + /** + * Returns the value of the `max_allowed_packet` MYSQL variable, if set, or a default value. + * + * @since 4.10.2 + * + * @return int The byte size of the `max_allowed_packet` MYSQL variable. + */ + public function get_mysql_max_packet_size() { + /** + * Filters the value of the `max_allowed_packet` variable before it's read from the database. + * + * If the value returned from this filter is not `null`, then it will be assumed to be the value. + * + * @since 4.10.2 + * + * @param int $mysql_max_packet_size The value of the `max_allowed_packet` variable, initially `null`. + */ + $mysql_max_packet_size = apply_filters( 'tribe_max_allowed_packet_size', null ); + + if ( null !== $mysql_max_packet_size ) { + return absint( $mysql_max_packet_size ); + } + + /** @var Tribe__Cache $cache */ + $cache = tribe( 'cache' ); + + $cached = $cache->get( 'max_allowed_packet' ); + + if ( false !== $cached ) { + return $cached; + } + + global $wpdb; + $mysql_max_packet_size = $wpdb->get_var( "SHOW VARIABLES LIKE 'max_allowed_packet'", 1 ); + // At min set it to 2 MBs. + $mysql_max_packet_size = absint( max( absint( $mysql_max_packet_size ), 2097152 ) ); + + $cache->set( 'max_allowed_packet', $mysql_max_packet_size, WEEK_IN_SECONDS ); + + return $mysql_max_packet_size; + } + + /** + * Returns the suggested SQL LIMIT value, based on the `max_allowed_packet` size and example string length. + * + * This is useful to size "reasonable" LIMITs when dealing with either very long queries or potentially long + * result sets. + * + * @since 4.10.2 + * + * @param string $example_string The example string. + * + * @return int The suggested LIMIT value. + */ + public function mysql_limit_for_string( $example_string ) { + $byte_size = function_exists( 'mb_strlen' ) + ? mb_strlen( $example_string ) + : strlen( $example_string ); + + return $this->mysql_limit_for_size( $byte_size ); + } + + /** + * Returns the SQL LIMIT for a byte size, in relation to the `max_allowed_packet` value. + * + * @since 4.10.2 + * + * @param int $byte_size The byte size to check. + * + * @return int The SQL LIMIT value. + */ + public function mysql_limit_for_size( $byte_size ) { + return absint( floor( $this->get_mysql_max_packet_size() / $byte_size ) * 0.8 ); + } + + /** + * Provides the SQL LIMIT value, in relation to the `max_allowed_packet` value, for a pre-existing example. + * + * Defaults to the complete post result example string if the example is not found. + * + * @since 4.10.2 + * + * @param string $example The name of the example to return. See the `Tribe__Feature_Detection::$example_sizes` + * prop for the available examples. Defaults to the `post_result` one. + * + * @return int The SQL LIMIT value for the example. + */ + public function mysql_limit_for_example( $example ) { + $example_size = Arr::get( static::$example_size, $example, static::$example_size['post_result'] ); + + return $this->mysql_limit_for_size( $example_size ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Field.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Field.php new file mode 100644 index 000000000..7c5dd3f4f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Field.php @@ -0,0 +1,952 @@ +defaults = [ + 'type' => 'html', + 'name' => $id, + 'fieldset_attributes' => [], + 'attributes' => [], + 'class' => null, + 'label' => null, + 'label_attributes' => null, + 'placeholder' => null, + 'tooltip' => null, + 'size' => 'medium', + 'html' => null, + 'error' => false, + 'value' => $value, + 'options' => null, + 'conditional' => true, + 'display_callback' => null, + 'if_empty' => null, + 'can_be_empty' => false, + 'clear_after' => true, + 'tooltip_first' => false, + 'allow_clear' => false, + 'settings' => [], + ]; + + // a list of valid field types, to prevent screwy behavior + $this->valid_field_types = [ + 'heading', + 'html', + 'text', + 'textarea', + 'wysiwyg', + 'radio', + 'checkbox_bool', + 'checkbox_list', + 'dropdown', + 'dropdown', + 'dropdown_select2', // Deprecated use `dropdown` + 'dropdown_chosen', // Deprecated use `dropdown` + 'license_key', + 'number', + 'wrapped_html', + 'email', + 'color', + 'image', + 'toggle', + ]; + + $this->valid_field_types = apply_filters( 'tribe_valid_field_types', $this->valid_field_types ); + + // parse args with defaults and extract them + $args = wp_parse_args( $field, $this->defaults ); + + // sanitize the values just to be safe + $id = esc_attr( $id ); + $type = esc_attr( $args['type'] ); + $name = esc_attr( $args['name'] ); + $placeholder = esc_attr( $args['placeholder'] ); + $class = empty( $args['class'] ) ? '' : $this->sanitize_class_attribute( $args['class'] ); + $label = wp_kses( + $args['label'], [ + 'a' => [ 'href' => [], 'title' => [] ], + 'br' => [], + 'em' => [], + 'strong' => [], + 'b' => [], + 'i' => [], + 'u' => [], + 'img' => [ + 'title' => [], + 'src' => [], + 'alt' => [], + ], + 'span' => [ 'class' => [] ], + ] + ); + $label_attributes = $args['label_attributes']; + $tooltip = wp_kses( + $args['tooltip'], [ + 'a' => [ 'class' => [], 'href' => [], 'title' => [], 'target' => [], 'rel' => [] ], + 'br' => [], + 'em' => [ 'class' => [] ], + 'strong' => [ 'class' => [] ], + 'b' => [ 'class' => [] ], + 'i' => [ 'class' => [] ], + 'u' => [ 'class' => [] ], + 'img' => [ + 'class' => [], + 'title' => [], + 'src' => [], + 'alt' => [], + ], + 'code' => [ 'span' => [] ], + 'span' => [ 'class' => [] ], + ] + ); + $fieldset_attributes = []; + if ( is_array( $args['fieldset_attributes'] ) ) { + foreach ( $args['fieldset_attributes'] as $key => $val ) { + $fieldset_attributes[ $key ] = esc_attr( $val ); + } + } + $attributes = []; + if ( is_array( $args['attributes'] ) ) { + foreach ( $args['attributes'] as $key => $val ) { + $attributes[ $key ] = esc_attr( $val ); + } + } + if ( is_array( $args['options'] ) ) { + $options = []; + foreach ( $args['options'] as $key => $val ) { + $options[ $key ] = $val; + } + } else { + $options = $args['options']; + } + $size = esc_attr( $args['size'] ); + $html = $args['html']; + $error = (bool) $args['error']; + $value = is_array( $value ) ? array_map( 'esc_attr', $value ) : esc_attr( $value ); + $conditional = $args['conditional']; + $display_callback = $args['display_callback']; + $if_empty = is_string( $args['if_empty'] ) ? trim( $args['if_empty'] ) : $args['if_empty']; + $can_be_empty = (bool) $args['can_be_empty']; + $clear_after = (bool) $args['clear_after']; + $tooltip_first = (bool) $args['tooltip_first']; + $allow_clear = (bool) $args['allow_clear']; + $settings = $args['settings']; + + // set the ID + $this->id = apply_filters( 'tribe_field_id', $id ); + + // set each instance variable and filter + foreach ( array_keys( $this->defaults ) as $key ) { + $this->{$key} = apply_filters( 'tribe_field_' . $key, $$key, $this->id ); + } + + // epicness + $this->do_field(); + } + + /** + * Determines how to handle this field's creation + * either calls a callback function or runs this class' course of action + * logs an error if it fails + * + * @return void + */ + public function do_field() { + + if ( $this->conditional ) { + + if ( $this->display_callback && is_callable( $this->display_callback ) ) { + + // if there's a callback, run it + call_user_func( $this->display_callback ); + + } elseif ( in_array( $this->type, $this->valid_field_types ) ) { + + // the specified type exists, run the appropriate method + $field = call_user_func( [ $this, $this->type ] ); + + // filter the output + $field = apply_filters( 'tribe_field_output_' . $this->type, $field, $this->id, $this ); + echo apply_filters( 'tribe_field_output_' . $this->type . '_' . $this->id, $field, $this->id, $this ); + + } else { + + // fail, log the error + Tribe__Debug::debug( esc_html__( 'Invalid field type specified', 'tribe-common' ), $this->type, 'notice' ); + + } + } + } + + /** + * returns the field's start + * + * @return string the field start + */ + public function do_field_start() { + $return = '
    type; + $return .= ( $this->error ) ? ' tribe-error' : ''; + $return .= ( $this->size ) ? ' tribe-size-' . $this->size : ''; + $return .= ( $this->class ) ? ' ' . $this->class . '"' : '"'; + $return .= ( $this->fieldset_attributes ) ? ' ' . $this->do_fieldset_attributes() : ''; + $return .= '>'; + + return apply_filters( 'tribe_field_start', $return, $this->id, $this->type, $this->error, $this->class, $this ); + } + + /** + * returns the field's end + * + * @return string the field end + */ + public function do_field_end() { + $return = '
    '; + $return .= ( $this->clear_after ) ? '
    ' : ''; + + return apply_filters( 'tribe_field_end', $return, $this->id, $this ); + } + + /** + * returns the field's label + * + * @return string the field label + */ + public function do_field_label() { + $return = ''; + if ( $this->label ) { + if ( isset( $this->label_attributes ) ) { + $this->label_attributes['class'] = isset( $this->label_attributes['class'] ) ? + implode( ' ', array_merge( [ 'tribe-field-label' ], $this->label_attributes['class'] ) ) : + [ 'tribe-field-label' ]; + $this->label_attributes = $this->concat_attributes( $this->label_attributes ); + } + $return = sprintf( '%s', $this->label_attributes, $this->label ); + } + + return apply_filters( 'tribe_field_label', $return, $this->label, $this ); + } + + /** + * returns the field's div start + * + * @return string the field div start + */ + public function do_field_div_start() { + $return = '
    '; + + if ( true === $this->tooltip_first ) { + $return .= $this->do_tool_tip(); + // and empty it to avoid it from being printed again + $this->tooltip = ''; + } + + return apply_filters( 'tribe_field_div_start', $return, $this ); + } + + /** + * returns the field's div end + * + * @return string the field div end + */ + public function do_field_div_end() { + $return = $this->do_tool_tip(); + $return .= '
    '; + + return apply_filters( 'tribe_field_div_end', $return, $this ); + } + + /** + * returns the field's tooltip/description + * + * @return string the field tooltip + */ + public function do_tool_tip() { + $return = ''; + if ( $this->tooltip ) { + $return = '

    ' . $this->tooltip . '

    '; + } + + return apply_filters( 'tribe_field_tooltip', $return, $this->tooltip, $this ); + } + + /** + * returns the screen reader label + * + * @return string the screen reader label + */ + public function do_screen_reader_label() { + $return = ''; + if ( $this->tooltip ) { + $return = ''; + } + + return apply_filters( 'tribe_field_screen_reader_label', $return, $this->tooltip, $this ); + } + + /** + * returns the field's value + * + * @return string the field value + */ + public function do_field_value() { + $return = ''; + if ( $this->value ) { + $return = ' value="' . $this->value . '"'; + } + + return apply_filters( 'tribe_field_value', $return, $this->value, $this ); + } + + /** + * returns the field's name + * + * @param bool $multi + * + * @return string the field name + */ + public function do_field_name( $multi = false ) { + $return = ''; + if ( $this->name ) { + if ( $multi ) { + $return = ' name="' . $this->name . '[]"'; + } else { + $return = ' name="' . $this->name . '"'; + } + } + + return apply_filters( 'tribe_field_name', $return, $this->name, $this ); + } + + /** + * returns the field's placeholder + * + * @return string the field value + */ + public function do_field_placeholder() { + $return = ''; + if ( $this->placeholder ) { + $return = ' placeholder="' . $this->placeholder . '"'; + } + + return apply_filters( 'tribe_field_placeholder', $return, $this->placeholder, $this ); + } + + /** + * Return a string of attributes for the field + * + * @return string + **/ + public function do_field_attributes() { + $return = ''; + if ( ! empty( $this->attributes ) ) { + foreach ( $this->attributes as $key => $value ) { + $return .= ' ' . $key . '="' . $value . '"'; + } + } + + return apply_filters( 'tribe_field_attributes', $return, $this->name, $this ); + } + + /** + * Return a string of attributes for the fieldset + * + * @return string + **/ + public function do_fieldset_attributes() { + $return = ''; + if ( ! empty( $this->fieldset_attributes ) ) { + foreach ( $this->fieldset_attributes as $key => $value ) { + $return .= ' ' . $key . '="' . $value . '"'; + } + } + + return apply_filters( 'tribe_fieldset_attributes', $return, $this->name, $this ); + } + + /** + * generate a heading field + * + * @return string the field + */ + public function heading() { + $field = '

    ' . $this->label . '

    '; + + return $field; + } + + /** + * generate an html field + * + * @return string the field + */ + public function html() { + $field = $this->do_field_label(); + $field .= $this->html; + + return $field; + } + + /** + * generate a simple text field + * + * @return string the field + */ + public function text() { + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + $field .= 'do_field_name(); + $field .= $this->do_field_value(); + $field .= $this->do_field_placeholder(); + $field .= $this->do_field_attributes(); + $field .= '/>'; + $field .= $this->do_screen_reader_label(); + $field .= $this->do_field_div_end(); + $field .= $this->do_field_end(); + + return $field; + } + + /** + * generate a textarea field + * + * @return string the field + */ + public function textarea() { + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + $field .= 'do_field_name(); + $field .= $this->do_field_attributes(); + $field .= '>'; + $field .= esc_html( stripslashes( $this->value ) ); + $field .= ''; + $field .= $this->do_screen_reader_label(); + $field .= $this->do_field_div_end(); + $field .= $this->do_field_end(); + + return $field; + } + + /** + * generate a wp_editor field + * + * @return string the field + */ + public function wysiwyg() { + $mce = new Wysiwyg( $this->name, $this->value, $this->settings ); + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + $field .= $mce->get_html(); + $field .= $this->do_screen_reader_label(); + $field .= $this->do_field_div_end(); + $field .= $this->do_field_end(); + + return $field; + } + + /** + * generate a radio button field + * + * @return string the field + */ + public function radio() { + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + if ( is_array( $this->options ) ) { + foreach ( $this->options as $option_id => $title ) { + $field_id = sprintf( + '%1$s-%2$s', + sanitize_html_class( trim( $this->id ) ), + sanitize_html_class( trim( $option_id ) ) + ); + + $field .= ''; + } + } else { + $field .= '' . esc_html__( 'No radio options specified', 'tribe-common' ) . ''; + } + $field .= $this->do_field_div_end(); + $field .= $this->do_field_end(); + + return $field; + } + + /** + * generate a checkbox_list field + * + * @return string the field + */ + public function checkbox_list() { + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + + if ( ! is_array( $this->value ) ) { + if ( ! empty( $this->value ) ) { + $this->value = [ $this->value ]; + } else { + $this->value = []; + } + } + + if ( is_array( $this->options ) ) { + foreach ( $this->options as $option_id => $title ) { + $field .= ''; + } + } else { + $field .= '' . esc_html__( 'No checkbox options specified', 'tribe-common' ) . ''; + } + $field .= $this->do_field_div_end(); + $field .= $this->do_field_end(); + + return $field; + } + + /** + * generate a boolean checkbox field + * + * @return string the field + */ + public function checkbox_bool() { + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + $field .= 'do_field_name(); + $field .= ' value="1" ' . checked( $this->value, true, false ); + $field .= $this->do_field_attributes(); + $field .= '/>'; + $field .= $this->do_screen_reader_label(); + $field .= $this->do_field_div_end(); + $field .= $this->do_field_end(); + + return $field; + } + + /** + * generate a dropdown field + * + * @return string the field + */ + public function dropdown() { + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + if ( is_array( $this->options ) && ! empty( $this->options ) ) { + $field .= 'do_field_name(); + $field .= " id='{$this->id}-select'"; + $field .= " class='tribe-dropdown'"; + if ( empty( $this->allow_clear ) ) { + $field .= " data-prevent-clear='true'"; + } + $field .= $this->do_field_attributes(); + $field .= '>'; + foreach ( $this->options as $option_id => $title ) { + $field .= ''; + } + $field .= ''; + $field .= $this->do_screen_reader_label(); + } elseif ( $this->if_empty ) { + $field .= '' . (string) $this->if_empty . ''; + } else { + $field .= '' . esc_html__( 'No select options specified', 'tribe-common' ) . ''; + } + $field .= $this->do_field_div_end(); + $field .= $this->do_field_end(); + + return $field; + } + + /** + * generate a chosen dropdown field - the same as the + * regular dropdown but wrapped so it can have the + * right css class applied to it + * + * @deprecated + * + * @return string the field + */ + public function dropdown_chosen() { + $field = $this->dropdown(); + + return $field; + } + + /** + * generate a select2 dropdown field - the same as the + * regular dropdown but wrapped so it can have the + * right css class applied to it + * + * @deprecated + * + * @return string the field + */ + public function dropdown_select2() { + $field = $this->dropdown(); + + return $field; + } + + /** + * generate a license key field + * + * @return string the field + */ + public function license_key() { + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + $field .= 'do_field_name(); + $field .= $this->do_field_value(); + $field .= $this->do_field_attributes(); + $field .= '/>'; + $field .= '

    '; + $field .= ''; + $field .= $this->do_screen_reader_label(); + $field .= $this->do_field_div_end(); + $field .= $this->do_field_end(); + + return $field; + } + + /** + * Generate a color field. + * + * @since 5.0.0 + * + * @return string The field. + */ + public function color() { + + tribe( Settings::class )->maybe_load_color_field_assets(); + + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + $field .= 'do_field_name(); + $field .= $this->do_field_value(); + $field .= $this->do_field_attributes(); + $field .= '/>'; + $field .= $this->do_screen_reader_label(); + $field .= $this->do_field_div_end(); + $field .= $this->do_field_end(); + + return $field; + } + + /** + * Generate an image field. + * + * @since 5.0.0 + * + * @return string The field. + */ + public function image() { + + tribe( Settings::class )->maybe_load_image_field_assets(); + + $image_exists = ! empty( $this->value ); + $upload_image_text = esc_html__( 'Select Image', 'tribe-common' ); + $remove_image_text = esc_html__( 'Remove Image', 'tribe-common' ); + + // Add default fieldset attributes if none exist. + $image_fieldset_attributes = [ + 'data-select-image-text' => esc_html__( 'Select an image', 'tribe-common' ), + 'data-use-image-text' => esc_html__( 'Use this image', 'tribe-common' ), + ]; + $this->fieldset_attributes = array_merge( $image_fieldset_attributes, $this->fieldset_attributes ); + + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + $field .= 'do_field_name(); + $field .= $this->do_field_value(); + $field .= $this->do_field_attributes(); + $field .= '/>'; + $field .= ''; + $field .= '

    '; + $field .= ''; + $field .= $this->do_screen_reader_label(); + $field .= $this->do_field_div_end(); + $field .= $this->do_field_end(); + + return $field; + } + + /** + * Generate a toggle switch. + * + * @since 5.0.12 + * + * @return string the field + */ + public function toggle() { + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + $field .= 'do_field_name(); + $field .= ' value="1" ' . checked( $this->value, true, false ); + $field .= $this->do_field_attributes(); + $field .= '/>'; + $field .= ''; + $field .= $this->do_screen_reader_label(); + $field .= $this->do_field_div_end(); + $field .= $this->do_field_end(); + + return $field; + } + + /* deprecated camelCase methods */ + public function doField() { + _deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_field' ); + return $this->do_field(); + } + + public function doFieldStart() { + _deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_field_start' ); + return $this->do_field_start(); + } + + public function doFieldEnd() { + _deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_field_end' ); + return $this->do_field_end(); + } + + public function doFieldLabel() { + _deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_field_label' ); + return $this->do_field_label(); + } + + public function doFieldDivStart() { + _deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_field_div_start' ); + return $this->do_field_div_start(); + } + + public function doFieldDivEnd() { + _deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_field_div_end' ); + return $this->do_field_div_end(); + } + + public function doToolTip() { + _deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_tool_tip' ); + return $this->do_tool_tip(); + } + + public function doFieldValue() { + _deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_field_value' ); + return $this->do_field_value(); + } + + public function doFieldName( $multi = false ) { + _deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_field_name' ); + return $this->do_field_name( $multi ); + } + + public function doFieldAttributes() { + _deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_field_attributes' ); + return $this->do_field_attributes(); + } + + public function doScreenReaderLabel() { + _deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_screen_reader_label' ); + return $this->do_screen_reader_label(); + } + + /** + * Generate a wrapped html field. + * + * This is useful to print some HTML that should be inline with the other fieldsets. + * + * @return string The field markup. + */ + public function wrapped_html() { + $field = $this->do_field_start(); + $field .= $this->do_field_label(); + $field .= $this->do_field_div_start(); + $field .= $this->html; + $field .= $this->do_field_div_start(); + $field .= $this->do_field_end(); + + return $field; + } + + /** + * Concatenates an array of attributes to use in HTML tags. + * + * Example usage: + * + * $attrs = [ 'class' => ['one', 'two'], 'style' => 'color:red;' ]; + * printf ( '

    %s

    ', tribe_concat_attributes( $attrs ), 'bar' ); + * + * //

    class="one two" style="color:red;">bar

    + * + * @param array $attributes An array of attributes in the format + * [ => , => ] + * where `value` can be a string or an array. + * + * @return string The concatenated attributes. + */ + protected function concat_attributes( array $attributes = [] ) { + if ( empty( $attributes ) ) { + return ''; + } + + $concat = []; + foreach ( $attributes as $attribute => $value ) { + if ( is_array( $value ) ) { + $value = implode( ' ', $value ); + } + $quote = false !== strpos( $value, '"' ) ? "'" : '"'; + $concat[] = esc_attr( $attribute ) . '=' . $quote . esc_attr( $value ) . $quote; + } + + return implode( ' ', $concat ); + } + + /** + * Generate an email address field + * + * @since 4.7.4 + * + * @return string The field + */ + public function email() { + $this->value = trim( $this->value ); + return $this->text(); + } + + /** + * Sanitizes a space-separated or array of classes. + * + * @since 4.7.7 + * + * @param string|array $class A single class, a space-separated list of classes + * or an array of classes. + * + * @return string A space-separated list of classes. + */ + protected function sanitize_class_attribute( $class ) { + $classes = is_array( $class ) ? $class : explode( ' ', $class ); + $sanitized = array_map( 'sanitize_html_class', $classes ); + + return implode( ' ', $sanitized ); + } + } // end class +} // endif class_exists diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Field_Conditional.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Field_Conditional.php new file mode 100644 index 000000000..ca1af0537 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Field_Conditional.php @@ -0,0 +1,79 @@ + array( + * 'type' => 'checkbox_bool', + * // ... + * ), + * 'bar' => array( + * 'type' => 'text' + * 'validate_if' => new Tribe__Field_Conditional( 'foo', 'tribe_is_truthy' ) + * 'conditional' => tribe_is_truthy( tribe_get_option( 'foo' ) ), + * // ... + * ), + * ); + * + * The above will modify the validation logic to make it so that the field will not be validated if + * the parent (`foo` in the example) is not "truthy". + * If you need to hide/show the field conditionally use the `conditional` attribute of the field. + * + * @since 4.7.7 + */ +class Tribe__Field_Conditional { + + /** + * @var string The slug of the field the condition + */ + protected $depends_on; + /** + * @var bool + */ + protected $condition; + + /** + * Tribe__Field_Conditional constructor. + * + * @since 4.7.7 + * + * @param string $depends_on_field The slug or identifier of the parent field. + * @param mixed|callable $condition Either a valid callable function or method or a + * value that will be used for a shallow comparison. + */ + public function __construct( $depends_on_field, $condition = true ) { + $this->depends_on = $depends_on_field; + $this->condition = $condition; + } + + /** + * @param mixed $value The value to check, typically the parent field value. + * @param array $fields An array of all the current fields; this will be passed to + * the condition callback function for context if the condition + * is a callable function or method. + * + * @return bool Whether the check was successful (the parent field does have the required + * value) or not. + */ + public function check( $value, array $fields ) { + return is_callable( $this->condition ) + ? call_user_func( $this->condition, $value, $fields ) + : $value == $this->condition; + } + + /** + * Return the id/slug of the field this condition depends on. + * + * @since 4.7.7 + * + * @return string + */ + public function depends_on() { + return $this->depends_on; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Image/Uploader.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Image/Uploader.php new file mode 100644 index 000000000..6b321a053 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Image/Uploader.php @@ -0,0 +1,319 @@ +featured_image = $featured_image; + } + + /** + * Resets the static "cache" of the class. + */ + public static function reset_cache() { + self::$attachment_guids_cache = false; + self::$original_urls_cache = false; + } + + /** + * Uploads a file and creates the media attachment or simply returns the attachment ID if existing. + * + * @return int|bool The attachment post ID if the uploading and attachment is successful or the ID refers to an + * attachment; + * `false` otherwise. + */ + public function upload_and_get_attachment_id() { + if ( empty( $this->featured_image ) ) { + return false; + } + + $existing = false; + + if ( is_string( $this->featured_image ) && ! is_numeric( $this->featured_image ) ) { + // Assume image exists in the local file system. + $id = $this->get_attachment_ID_from_url( $this->featured_image ); + if ( ! $id ) { + $id = $this->upload_file( $this->featured_image ); + $id = $this->maybe_retry_upload( $id ); + } + $existing = (bool) $id; + } elseif ( $post = get_post( $this->featured_image ) ) { + $id = $post && 'attachment' === $post->post_type ? $this->featured_image : false; + } else { + $id = false; + } + + do_action( + 'tribe_log', + 'debug', + __CLASS__, + [ + 'featured_image' => $this->featured_image, + 'exists' => $existing, + 'id' => $id, + ] + ); + + return $id; + } + + /** + * Retry to upload an image after it failed as was provided, try to decode the URL as in some cases the + * original URL might be encoded HTML components such as: "&" and some CDNs does not handle well different URLs + * as they were provided so we try to recreate the original URL where it might be required. + * + * @since 4.11.5 + * + * @param int|bool $id The id of the attachment if was uploaded correctly, false otherwise. + * + * @return int The ID of the attachment after the upload retry. + */ + protected function maybe_retry_upload( $id ) { + if ( $id ) { + do_action( 'tribe_log', 'debug', __CLASS__, [ 'message' => "ID: {$id} is already a valid one." ] ); + + return $id; + } + + $decoded = esc_url_raw( html_entity_decode( $this->featured_image ) ); + + do_action( 'tribe_log', 'debug', __CLASS__, [ + 'message' => 'Retry upload decoding the URL of the image', + 'url' => $this->featured_image, + 'decoded' => $decoded, + ] ); + + // Maybe the URL was encoded and we need to convert it to a valid URL. + return $this->upload_file( $decoded ); + } + + /** + * @param string $file_url + * + * @return int + */ + protected function upload_file( $file_url ) { + /** + * Allow plugins to enable local URL uploads, mainly used for testing. + * + * @since 4.9.5 + * + * @param bool $allow_local_urls Whether to allow local URLs. + * @param string $file_url File URL. + */ + $allow_local_urls = apply_filters( 'tribe_image_uploader_local_urls', false, $file_url ); + + if ( ! $allow_local_urls && ! filter_var( $file_url, FILTER_VALIDATE_URL ) ) { + return false; + } + + // These files need to be included as dependencies + require_once( ABSPATH . 'wp-admin/includes/image.php' ); + require_once( ABSPATH . 'wp-admin/includes/file.php' ); + require_once( ABSPATH . 'wp-admin/includes/media.php' ); + + $is_local = false; + // This is a local file no need to fetch it from the wire. + if ( $allow_local_urls && file_exists( $file_url ) ) { + $file = $file_url; + $is_local = true; + } else { + /** + * Some CDN services will append query arguments to the image URL; removing + * them now has the potential of blocking the image fetching completely so we + * let them be here. + */ + $file = download_url( $file_url ); + if ( is_wp_error( $file ) ) { + do_action( 'tribe_log', 'error', __CLASS__, [ + 'message' => $file->get_error_message(), + 'url' => $file_url, + 'error' => $file, + ] ); + + return false; + } + } + + // Upload file into WP and leave WP handle the resize and such. + $attachment_id = media_handle_sideload( + [ + 'name' => $this->create_file_name( $file ), + 'tmp_name' => $file, + 'post_mime_type' => 'image', + ], + 0 + ); + + // Remove the temporary file as is no longer required at this point. + if ( ! $is_local && file_exists( $file ) ) { + @unlink( $file ); + } + + if ( is_wp_error( $attachment_id ) ) { + do_action( 'tribe_log', 'error', __CLASS__, [ + 'message' => $attachment_id->get_error_message(), + 'url' => $file_url, + 'error' => $attachment_id, + ] ); + + return false; + } + + update_post_meta( $attachment_id, '_tribe_importer_original_url', $file_url ); + + $this->maybe_init_attachment_guids_cache(); + $this->maybe_init_attachment_original_urls_cache(); + + $attachment_post = get_post( $attachment_id ); + // Only update the cache if is a valid attachment. + if ( $attachment_post instanceof WP_Post ) { + self::$attachment_guids_cache[ $attachment_post->guid ] = $attachment_id; + self::$original_urls_cache[ $file_url ] = $attachment_id; + } + + return $attachment_id; + } + + /** + * WordPress requires to have an extension in all all files as uses `wp_check_filetype` which uses the extension + * of the file to define if a file is valid or not, in this case the extension might not be present in some URLs of + * attachments or media files, in those cases we try to guess the right extension using the mime of the file as + * an alternative, if the $filename is a path we can verify the mime type using native WP functions. + * + * @since 4.11.5 + * + * @param string $filename The name of the file or URL. + * + * @return string Returned a file name with an extension if is not already part of the file name. + */ + protected function create_file_name( $filename ) { + /** + * We use the path basename only here to provided WordPress with a good filename + * that will allow it to correctly detect and validate the extension. + */ + $path = wp_parse_url( $filename, PHP_URL_PATH ); + + $name = basename( $path ); + $properties = wp_check_filetype( $name ); + + // Type can be defined from the name use that one instead. + if ( ! empty( $properties['type'] ) ) { + return $name; + } + + // This is not a file that exists on the system, use the name instead. + if ( ! file_exists( $filename ) ) { + return $name; + } + + $mime = wp_get_image_mime( $filename ); + + // There's no mime defined for the file use the plain name instead. + if ( $mime === '' ) { + return $name; + } + + // create an array with the mimes as the keys and extensions as values. + $mime_to_extensions = array_flip( wp_get_mime_types() ); + + // No mime was found for the file on the array of allowed mime types, fallback to the name. + if ( ! isset( $mime_to_extensions[ $mime ] ) ) { + return $name; + } + + // If there are more than one extension just ose one. + $parts = explode( '|', $mime_to_extensions[ $mime ] ); + + // Create a new name with extension. + return implode( '.', [ $name, reset( $parts ) ] ); + } + + protected function get_attachment_ID_from_url( $featured_image ) { + $this->maybe_init_attachment_guids_cache(); + $this->maybe_init_attachment_original_urls_cache(); + + $guids_cache = self::$attachment_guids_cache; + $original_urls_cache = self::$original_urls_cache; + if ( isset( $guids_cache[ $featured_image ] ) ) { + return $guids_cache[ $featured_image ]; + } + + if ( isset( $original_urls_cache[ $featured_image ] ) ) { + return $original_urls_cache[ $featured_image ]; + } + + return false; + } + + protected function maybe_init_attachment_guids_cache() { + if ( false === self::$attachment_guids_cache ) { + /** @var \wpdb $wpdb */ + global $wpdb; + $guids = $wpdb->get_results( "SELECT ID, guid FROM $wpdb->posts where post_type = 'attachment'" ); + + if ( $guids ) { + $keys = wp_list_pluck( $guids, 'guid' ); + $values = wp_list_pluck( $guids, 'ID' ); + self::$attachment_guids_cache = array_combine( $keys, $values ); + } else { + self::$attachment_guids_cache = []; + } + } + } + + protected function maybe_init_attachment_original_urls_cache() { + if ( false === self::$original_urls_cache ) { + /** @var \wpdb $wpdb */ + global $wpdb; + $original_urls = $wpdb->get_results( " + SELECT p.ID, pm.meta_value FROM $wpdb->posts p + JOIN $wpdb->postmeta pm + ON p.ID = pm.post_id + WHERE p.post_type = 'attachment' + AND pm.meta_key = '_tribe_importer_original_url' + " ); + + if ( $original_urls ) { + $keys = wp_list_pluck( $original_urls, 'meta_value' ); + $values = wp_list_pluck( $original_urls, 'ID' ); + self::$original_urls_cache = array_combine( $keys, $values ); + } else { + self::$original_urls_cache = []; + } + } + } + + /** + * Handles errors generated during the use of `file_get_contents` to + * make them run-time exceptions. + * + * @since 4.7.22 + * + * @param string $unused_error_code The error numeric code. + * @param string $message The error message. + * + * @throws RuntimeException To pass the error as an exception to + * the handler. + */ + public function handle_error( $unused_error_code, $message ) { + throw new RuntimeException( $message ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/JSON_LD/Abstract.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/JSON_LD/Abstract.php new file mode 100644 index 000000000..fc86b9054 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/JSON_LD/Abstract.php @@ -0,0 +1,349 @@ +exists( $post_id ) && $this->type_exists( $post_id, $this->type ) ) { + return []; + } + + $post = get_post( $post_id ); + + if ( empty( $post->ID ) ) { + return []; + } + + $data = (object) []; + + // We may need to prevent the context to be triggered + if ( ! isset( $args['context'] ) || false !== $args['context'] ) { + $data->{'@context'} = 'http://schema.org'; + } + + $data->{'@type'} = $this->type; + + $data->name = esc_js( get_the_title( $post ) ); + $data->description = esc_js( tribe_post_excerpt( $post ) ); + + if ( has_post_thumbnail( $post ) ) { + $data->image = wp_get_attachment_url( get_post_thumbnail_id( $post ) ); + } + + $data->url = esc_url_raw( $this->get_link( $post ) ); + + $type = strtolower( esc_attr( $this->type ) ); + $data = $this->apply_object_data_filter( $data, $args, $post ); + + // Index by ID: this will allow filter code to identify the actual event being referred to + // without injecting an additional property + return [ $post->ID => $data ]; + } + + /** + * Filters the JSON LD object data. + * + * The expectation is that any sub-classes overriding the get_data() method will ensure they + * call this method for consistency. + * + * @param string $type + * @param object $data + * @param array $args + * @param WP_Post $post + * + * @return mixed + */ + protected function apply_object_data_filter( $data, $args, $post ) { + $type = strtolower( esc_attr( $this->type ) ); + + /** + * Allows the event data to be modifed by themes and other plugins. + * + * @example tribe_json_ld_thing_object + * @example tribe_json_ld_event_object + * + * @param object $data The JSON-LD object + * @param array $args The arguments used to get data + * @param WP_Post $post The post object + */ + return apply_filters( "tribe_json_ld_{$type}_object", $data, $args, $post ); + } + + /** + * puts together the actual html/json javascript block for output + * + * @return string + */ + public function get_markup( $post = null, $args = [] ) { + $data = $this->get_data( $post, $args ); + $type = strtolower( esc_attr( $this->type ) ); + $this->set_type( $post, $type ); + + foreach ( $data as $post_id => $_data ) { + // Register this post as done already + $this->register( $post_id ); + } + + /** + * Allows the event data to be modifed by themes and other plugins. + * + * @example tribe_json_ld_thing_data + * @example tribe_json_ld_event_data + * + * @param array $data objects representing the Google Markup for each event. + * @param array $args the arguments used to get data + */ + $data = apply_filters( "tribe_json_ld_{$type}_data", $data, $args ); + + // Strip the post ID indexing before returning + $data = array_values( $data ); + + if ( ! empty( $data ) ) { + $html[] = ''; + } + + return ! empty( $html ) ? implode( "\r\n", $html ) : ''; + } + + public function markup( $post = null, $args = [] ) { + $html = $this->get_markup( $post, $args ); + + /** + * Allows users to filter the end markup of JSON-LD + * + * @param string The HTML for the JSON LD markup + */ + $html = apply_filters( 'tribe_json_ld_markup', $html ); + echo $html; + } + + /** + * Get a link to the post + * + * Children of this class are likely to override it with their + * own functions that only work with their designated post type. + * + * @since 4.5.10 + * + * @param int|WP_Post $post The Post Object or ID + * + * @return false|string Link to the post or false + */ + protected function get_link( $post ) { + return get_permalink( $post ); + } + + /** + * Gets from the Posts index a specific post or fetch all of them + * + * @param int|WP_Post $post The Post Object or ID + * + * @return null|array|WP_Post Returns an Indexed Array of Posts, a found Post or Null if not found + */ + public function get( $post = null ) { + if ( is_null( $post ) ) { + return self::$posts; + } + $id = Tribe__Main::post_id_helper( $post ); + + if ( $this->exists( $id ) ) { + return self::$posts[ $id ]; + } + + return null; + } + + /** + * Checks if a Post has been registered to the JSON-LD index + * + * @param int|WP_Post $post The Post Object or ID + * + * @return bool + */ + public function exists( $post ) { + return isset( self::$posts[ Tribe__Main::post_id_helper( $post ) ] ); + } + + /** + * Register the new Post on the Index of created ones + * + * @param int|WP_Post $post The Post Object or ID + * + * @return WP_Post The Post Object that was registered + */ + public function register( $post ) { + $id = Tribe__Main::post_id_helper( $post ); + if ( $this->exists( $id ) ) { + return self::$posts[ $id ]; + } + self::$posts[ $id ] = get_post( $id ); + return self::$posts[ $id ]; + } + + + /** + * Public method to have access to the types + * + * @since 4.7.12 + * + * @return array + */ + public function get_types() { + return self::$types; + } + + /** + * Register the current $type to prevent duplicates entries with different $types and IDs + * + * @since 4.7.12 + * + * @param $post + * @param $type + * + * @return mixed + */ + public function set_type( $post, $type ) { + $id = Tribe__Main::post_id_helper( $post ); + + if ( $this->type_exists( $id, $type ) ) { + return self::$types[ $id ]; + } + + if ( empty( self::$types[ $id ] ) ) { + self::$types[ $id ] = [ $this->type ]; + } else { + self::$types[ $id ][] = $this->type; + } + + return self::$types[ $id ]; + } + + /** + * Remove an Post from the Indexed list + * + * @param int|WP_Post $post The Post Object or ID + * + * @return bool + */ + public function remove( $post ) { + $id = Tribe__Main::post_id_helper( $post ); + + if ( ! $this->exists( $id ) ) { + return false; + } + + unset( self::$posts[ $id ] ); + + return true; + } + + /** + * Return `true` if the $type has been already registered for the specified $id. + * + * @since 4.7.12 + * + * @param $id + * @param $type + * + * @return bool + */ + public function type_exists( $id, $type ) { + return isset( self::$types[ $id ] ) && false !== array_search( $type, self::$types[ $id ] ); + } + + /** + * Empties the registered posts cache variable. + * + * Added for testing purposes. + */ + public static function unregister_all() { + self::$posts = []; + self::$types = []; + } + + /** + * Returns an array of the registered post IDs. + * + * @return array + */ + public static function get_registered_post_ids() { + return array_keys( self::$posts ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Locations.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Locations.php new file mode 100644 index 000000000..36449a907 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Locations.php @@ -0,0 +1,413 @@ +get( $cache_key , '', null ); + + if ( null === $countries ) { + $countries = $this->build_country_array(); + + if ( $escape ) { + $countries = array_map( static function( $country ) { + return html_entity_decode( $country, ENT_QUOTES ); + }, $countries ); + } + + // Actually set the cache in case it's not in place. + $cache->set( $cache_key, $countries ); + } + + return $countries; + } + + /** + * Returns an array of countries and their codes. + * + * Adds array to object cache to speed up subsequent retrievals. + * + * @return array { + * List of countries + * + * @type string $country_code Country name. + * } + */ + public function get_us_states() { + return tribe( 'cache' )->get( 'tribe_us_states_list', '', [ $this, 'build_us_states_array' ] ); + } + + /** + * Get a translated array of countries. + * + * @return array { + * List of countries + * + * @type string $country_code Country name. + * } + */ + public function build_country_array() { + $countries = [ + 'US' => esc_html__( 'United States', 'tribe-common' ), + 'AF' => esc_html__( 'Afghanistan', 'tribe-common' ), + 'AX' => esc_html__( 'Åland Islands', 'tribe-common' ), + 'AL' => esc_html__( 'Albania', 'tribe-common' ), + 'DZ' => esc_html__( 'Algeria', 'tribe-common' ), + 'AS' => esc_html__( 'American Samoa', 'tribe-common' ), + 'AD' => esc_html__( 'Andorra', 'tribe-common' ), + 'AO' => esc_html__( 'Angola', 'tribe-common' ), + 'AI' => esc_html__( 'Anguilla', 'tribe-common' ), + 'AQ' => esc_html__( 'Antarctica', 'tribe-common' ), + 'AG' => esc_html__( 'Antigua and Barbuda', 'tribe-common' ), + 'AR' => esc_html__( 'Argentina', 'tribe-common' ), + 'AM' => esc_html__( 'Armenia', 'tribe-common' ), + 'AW' => esc_html__( 'Aruba', 'tribe-common' ), + 'AU' => esc_html__( 'Australia', 'tribe-common' ), + 'AT' => esc_html__( 'Austria', 'tribe-common' ), + 'AZ' => esc_html__( 'Azerbaijan', 'tribe-common' ), + 'BS' => esc_html__( 'Bahamas', 'tribe-common' ), + 'BH' => esc_html__( 'Bahrain', 'tribe-common' ), + 'BD' => esc_html__( 'Bangladesh', 'tribe-common' ), + 'BB' => esc_html__( 'Barbados', 'tribe-common' ), + 'BY' => esc_html__( 'Belarus', 'tribe-common' ), + 'BE' => esc_html__( 'Belgium', 'tribe-common' ), + 'BZ' => esc_html__( 'Belize', 'tribe-common' ), + 'BJ' => esc_html__( 'Benin', 'tribe-common' ), + 'BM' => esc_html__( 'Bermuda', 'tribe-common' ), + 'BT' => esc_html__( 'Bhutan', 'tribe-common' ), + 'BO' => esc_html__( 'Bolivia', 'tribe-common' ), + 'BA' => esc_html__( 'Bosnia and Herzegovina', 'tribe-common' ), + 'BW' => esc_html__( 'Botswana', 'tribe-common' ), + 'BV' => esc_html__( 'Bouvet Island', 'tribe-common' ), + 'BR' => esc_html__( 'Brazil', 'tribe-common' ), + 'IO' => esc_html__( 'British Indian Ocean Territory', 'tribe-common' ), + 'BN' => esc_html__( 'Brunei Darussalam', 'tribe-common' ), + 'BG' => esc_html__( 'Bulgaria', 'tribe-common' ), + 'BF' => esc_html__( 'Burkina Faso', 'tribe-common' ), + 'BI' => esc_html__( 'Burundi', 'tribe-common' ), + 'KH' => esc_html__( 'Cambodia', 'tribe-common' ), + 'CM' => esc_html__( 'Cameroon', 'tribe-common' ), + 'CA' => esc_html__( 'Canada', 'tribe-common' ), + 'CV' => esc_html__( 'Cape Verde', 'tribe-common' ), + 'KY' => esc_html__( 'Cayman Islands', 'tribe-common' ), + 'CF' => esc_html__( 'Central African Republic', 'tribe-common' ), + 'TD' => esc_html__( 'Chad', 'tribe-common' ), + 'CL' => esc_html__( 'Chile', 'tribe-common' ), + 'CN' => esc_html__( 'China', 'tribe-common' ), + 'CX' => esc_html__( 'Christmas Island', 'tribe-common' ), + 'CC' => esc_html__( 'Cocos (Keeling) Islands', 'tribe-common' ), + 'MF' => esc_html__( 'Collectivity of Saint Martin', 'tribe-common' ), + 'CO' => esc_html__( 'Colombia', 'tribe-common' ), + 'KM' => esc_html__( 'Comoros', 'tribe-common' ), + 'CG' => esc_html__( 'Congo', 'tribe-common' ), + 'CD' => esc_html__( 'Congo, Democratic Republic of the', 'tribe-common' ), + 'CK' => esc_html__( 'Cook Islands', 'tribe-common' ), + 'CR' => esc_html__( 'Costa Rica', 'tribe-common' ), + 'CI' => esc_html__( "Côte d'Ivoire", 'tribe-common' ), + 'HR' => esc_html__( 'Croatia (Local Name: Hrvatska)', 'tribe-common' ), + 'CU' => esc_html__( 'Cuba', 'tribe-common' ), + 'CW' => esc_html__( 'Curaçao', 'tribe-common' ), + 'CY' => esc_html__( 'Cyprus', 'tribe-common' ), + 'CZ' => esc_html__( 'Czech Republic', 'tribe-common' ), + 'DK' => esc_html__( 'Denmark', 'tribe-common' ), + 'DJ' => esc_html__( 'Djibouti', 'tribe-common' ), + 'DM' => esc_html__( 'Dominica', 'tribe-common' ), + 'DO' => esc_html__( 'Dominican Republic', 'tribe-common' ), + 'TP' => esc_html__( 'East Timor', 'tribe-common' ), + 'EC' => esc_html__( 'Ecuador', 'tribe-common' ), + 'EG' => esc_html__( 'Egypt', 'tribe-common' ), + 'SV' => esc_html__( 'El Salvador', 'tribe-common' ), + 'GQ' => esc_html__( 'Equatorial Guinea', 'tribe-common' ), + 'ER' => esc_html__( 'Eritrea', 'tribe-common' ), + 'EE' => esc_html__( 'Estonia', 'tribe-common' ), + 'ET' => esc_html__( 'Ethiopia', 'tribe-common' ), + 'FK' => esc_html__( 'Falkland Islands (Malvinas)', 'tribe-common' ), + 'FO' => esc_html__( 'Faroe Islands', 'tribe-common' ), + 'FJ' => esc_html__( 'Fiji', 'tribe-common' ), + 'FI' => esc_html__( 'Finland', 'tribe-common' ), + 'FR' => esc_html__( 'France', 'tribe-common' ), + 'GF' => esc_html__( 'French Guiana', 'tribe-common' ), + 'PF' => esc_html__( 'French Polynesia', 'tribe-common' ), + 'TF' => esc_html__( 'French Southern Territories', 'tribe-common' ), + 'GA' => esc_html__( 'Gabon', 'tribe-common' ), + 'GM' => esc_html__( 'Gambia', 'tribe-common' ), + 'GE' => esc_html_x( 'Georgia', 'The country', 'tribe-common' ), + 'DE' => esc_html__( 'Germany', 'tribe-common' ), + 'GH' => esc_html__( 'Ghana', 'tribe-common' ), + 'GI' => esc_html__( 'Gibraltar', 'tribe-common' ), + 'GR' => esc_html__( 'Greece', 'tribe-common' ), + 'GL' => esc_html__( 'Greenland', 'tribe-common' ), + 'GD' => esc_html__( 'Grenada', 'tribe-common' ), + 'GP' => esc_html__( 'Guadeloupe', 'tribe-common' ), + 'GU' => esc_html__( 'Guam', 'tribe-common' ), + 'GT' => esc_html__( 'Guatemala', 'tribe-common' ), + 'GN' => esc_html__( 'Guinea', 'tribe-common' ), + 'GW' => esc_html__( 'Guinea-Bissau', 'tribe-common' ), + 'GY' => esc_html__( 'Guyana', 'tribe-common' ), + 'HT' => esc_html__( 'Haiti', 'tribe-common' ), + 'HM' => esc_html__( 'Heard and McDonald Islands', 'tribe-common' ), + 'VA' => esc_html__( 'Holy See (Vatican City State)', 'tribe-common' ), + 'HN' => esc_html__( 'Honduras', 'tribe-common' ), + 'HK' => esc_html__( 'Hong Kong', 'tribe-common' ), + 'HU' => esc_html__( 'Hungary', 'tribe-common' ), + 'IS' => esc_html__( 'Iceland', 'tribe-common' ), + 'IN' => esc_html__( 'India', 'tribe-common' ), + 'ID' => esc_html__( 'Indonesia', 'tribe-common' ), + 'IR' => esc_html__( 'Iran, Islamic Republic of', 'tribe-common' ), + 'IQ' => esc_html__( 'Iraq', 'tribe-common' ), + 'IE' => esc_html__( 'Ireland', 'tribe-common' ), + 'IL' => esc_html__( 'Israel', 'tribe-common' ), + 'IT' => esc_html__( 'Italy', 'tribe-common' ), + 'JM' => esc_html__( 'Jamaica', 'tribe-common' ), + 'JP' => esc_html__( 'Japan', 'tribe-common' ), + 'JO' => esc_html__( 'Jordan', 'tribe-common' ), + 'KZ' => esc_html__( 'Kazakhstan', 'tribe-common' ), + 'KE' => esc_html__( 'Kenya', 'tribe-common' ), + 'KI' => esc_html__( 'Kiribati', 'tribe-common' ), + 'KP' => esc_html__( "Korea, Democratic People's Republic of", 'tribe-common' ), + 'KR' => esc_html__( 'Korea, Republic of', 'tribe-common' ), + 'KW' => esc_html__( 'Kuwait', 'tribe-common' ), + 'KG' => esc_html__( 'Kyrgyzstan', 'tribe-common' ), + 'LA' => esc_html__( "Lao People's Democratic Republic", 'tribe-common' ), + 'LV' => esc_html__( 'Latvia', 'tribe-common' ), + 'LB' => esc_html__( 'Lebanon', 'tribe-common' ), + 'LS' => esc_html__( 'Lesotho', 'tribe-common' ), + 'LR' => esc_html__( 'Liberia', 'tribe-common' ), + 'LY' => esc_html__( 'Libya', 'tribe-common' ), + 'LI' => esc_html__( 'Liechtenstein', 'tribe-common' ), + 'LT' => esc_html__( 'Lithuania', 'tribe-common' ), + 'LU' => esc_html__( 'Luxembourg', 'tribe-common' ), + 'MO' => esc_html__( 'Macau', 'tribe-common' ), + 'MG' => esc_html__( 'Madagascar', 'tribe-common' ), + 'MW' => esc_html__( 'Malawi', 'tribe-common' ), + 'MY' => esc_html__( 'Malaysia', 'tribe-common' ), + 'MV' => esc_html__( 'Maldives', 'tribe-common' ), + 'ML' => esc_html__( 'Mali', 'tribe-common' ), + 'MT' => esc_html__( 'Malta', 'tribe-common' ), + 'MH' => esc_html__( 'Marshall Islands', 'tribe-common' ), + 'MQ' => esc_html__( 'Martinique', 'tribe-common' ), + 'MR' => esc_html__( 'Mauritania', 'tribe-common' ), + 'MU' => esc_html__( 'Mauritius', 'tribe-common' ), + 'YT' => esc_html__( 'Mayotte', 'tribe-common' ), + 'MX' => esc_html__( 'Mexico', 'tribe-common' ), + 'FM' => esc_html__( 'Micronesia, Federated States of', 'tribe-common' ), + 'MD' => esc_html__( 'Moldova, Republic of', 'tribe-common' ), + 'MC' => esc_html__( 'Monaco', 'tribe-common' ), + 'MN' => esc_html__( 'Mongolia', 'tribe-common' ), + 'ME' => esc_html__( 'Montenegro', 'tribe-common' ), + 'MS' => esc_html__( 'Montserrat', 'tribe-common' ), + 'MA' => esc_html__( 'Morocco', 'tribe-common' ), + 'MZ' => esc_html__( 'Mozambique', 'tribe-common' ), + 'MM' => esc_html__( 'Myanmar', 'tribe-common' ), + 'NA' => esc_html__( 'Namibia', 'tribe-common' ), + 'NR' => esc_html__( 'Nauru', 'tribe-common' ), + 'NP' => esc_html__( 'Nepal', 'tribe-common' ), + 'NL' => esc_html__( 'Netherlands', 'tribe-common' ), + 'NC' => esc_html__( 'New Caledonia', 'tribe-common' ), + 'NZ' => esc_html__( 'New Zealand', 'tribe-common' ), + 'NI' => esc_html__( 'Nicaragua', 'tribe-common' ), + 'NE' => esc_html__( 'Niger', 'tribe-common' ), + 'NG' => esc_html__( 'Nigeria', 'tribe-common' ), + 'NU' => esc_html__( 'Niue', 'tribe-common' ), + 'NF' => esc_html__( 'Norfolk Island', 'tribe-common' ), + 'MK' => esc_html__( 'North Macedonia', 'tribe-common' ), + 'MP' => esc_html__( 'Northern Mariana Islands', 'tribe-common' ), + 'NO' => esc_html__( 'Norway', 'tribe-common' ), + 'OM' => esc_html__( 'Oman', 'tribe-common' ), + 'PK' => esc_html__( 'Pakistan', 'tribe-common' ), + 'PW' => esc_html__( 'Palau', 'tribe-common' ), + 'PA' => esc_html__( 'Panama', 'tribe-common' ), + 'PG' => esc_html__( 'Papua New Guinea', 'tribe-common' ), + 'PY' => esc_html__( 'Paraguay', 'tribe-common' ), + 'PE' => esc_html__( 'Peru', 'tribe-common' ), + 'PH' => esc_html__( 'Philippines', 'tribe-common' ), + 'PN' => esc_html__( 'Pitcairn', 'tribe-common' ), + 'PL' => esc_html__( 'Poland', 'tribe-common' ), + 'PT' => esc_html__( 'Portugal', 'tribe-common' ), + 'PR' => esc_html__( 'Puerto Rico', 'tribe-common' ), + 'QA' => esc_html__( 'Qatar', 'tribe-common' ), + 'RE' => esc_html__( 'Reunion', 'tribe-common' ), + 'RO' => esc_html__( 'Romania', 'tribe-common' ), + 'RU' => esc_html__( 'Russian Federation', 'tribe-common' ), + 'RW' => esc_html__( 'Rwanda', 'tribe-common' ), + 'BL' => esc_html__( 'Saint Barthélemy', 'tribe-common' ), + 'SH' => esc_html__( 'Saint Helena', 'tribe-common' ), + 'KN' => esc_html__( 'Saint Kitts and Nevis', 'tribe-common' ), + 'LC' => esc_html__( 'Saint Lucia', 'tribe-common' ), + 'PM' => esc_html__( 'Saint Pierre and Miquelon', 'tribe-common' ), + 'VC' => esc_html__( 'Saint Vincent and The Grenadines', 'tribe-common' ), + 'WS' => esc_html__( 'Samoa', 'tribe-common' ), + 'SM' => esc_html__( 'San Marino', 'tribe-common' ), + 'ST' => esc_html__( 'São Tomé and Príncipe', 'tribe-common' ), + 'SA' => esc_html__( 'Saudi Arabia', 'tribe-common' ), + 'SN' => esc_html__( 'Senegal', 'tribe-common' ), + 'RS' => esc_html__( 'Serbia', 'tribe-common' ), + 'SC' => esc_html__( 'Seychelles', 'tribe-common' ), + 'SL' => esc_html__( 'Sierra Leone', 'tribe-common' ), + 'SG' => esc_html__( 'Singapore', 'tribe-common' ), + 'SX' => esc_html__( 'Sint Maarten', 'tribe-common' ), + 'SK' => esc_html__( 'Slovakia (Slovak Republic)', 'tribe-common' ), + 'SI' => esc_html__( 'Slovenia', 'tribe-common' ), + 'SB' => esc_html__( 'Solomon Islands', 'tribe-common' ), + 'SO' => esc_html__( 'Somalia', 'tribe-common' ), + 'ZA' => esc_html__( 'South Africa', 'tribe-common' ), + 'GS' => esc_html__( 'South Georgia, South Sandwich Islands', 'tribe-common' ), + 'ES' => esc_html__( 'Spain', 'tribe-common' ), + 'LK' => esc_html__( 'Sri Lanka', 'tribe-common' ), + 'SD' => esc_html__( 'Sudan', 'tribe-common' ), + 'SR' => esc_html__( 'Suriname', 'tribe-common' ), + 'SJ' => esc_html__( 'Svalbard and Jan Mayen Islands', 'tribe-common' ), + 'SZ' => esc_html__( 'Swaziland', 'tribe-common' ), + 'SE' => esc_html__( 'Sweden', 'tribe-common' ), + 'CH' => esc_html__( 'Switzerland', 'tribe-common' ), + 'SY' => esc_html__( 'Syrian Arab Republic', 'tribe-common' ), + 'TW' => esc_html__( 'Taiwan', 'tribe-common' ), + 'TJ' => esc_html__( 'Tajikistan', 'tribe-common' ), + 'TZ' => esc_html__( 'Tanzania, United Republic of', 'tribe-common' ), + 'TH' => esc_html__( 'Thailand', 'tribe-common' ), + 'TG' => esc_html__( 'Togo', 'tribe-common' ), + 'TK' => esc_html__( 'Tokelau', 'tribe-common' ), + 'TO' => esc_html__( 'Tonga', 'tribe-common' ), + 'TT' => esc_html__( 'Trinidad and Tobago', 'tribe-common' ), + 'TN' => esc_html__( 'Tunisia', 'tribe-common' ), + 'TR' => esc_html__( 'Turkey', 'tribe-common' ), + 'TM' => esc_html__( 'Turkmenistan', 'tribe-common' ), + 'TC' => esc_html__( 'Turks and Caicos Islands', 'tribe-common' ), + 'TV' => esc_html__( 'Tuvalu', 'tribe-common' ), + 'UG' => esc_html__( 'Uganda', 'tribe-common' ), + 'UA' => esc_html__( 'Ukraine', 'tribe-common' ), + 'AE' => esc_html__( 'United Arab Emirates', 'tribe-common' ), + 'GB' => esc_html__( 'United Kingdom', 'tribe-common' ), + 'UM' => esc_html__( 'United States Minor Outlying Islands', 'tribe-common' ), + 'UY' => esc_html__( 'Uruguay', 'tribe-common' ), + 'UZ' => esc_html__( 'Uzbekistan', 'tribe-common' ), + 'VU' => esc_html__( 'Vanuatu', 'tribe-common' ), + 'VE' => esc_html__( 'Venezuela', 'tribe-common' ), + 'VN' => esc_html__( 'Viet Nam', 'tribe-common' ), + 'VG' => esc_html__( 'Virgin Islands (British)', 'tribe-common' ), + 'VI' => esc_html__( 'Virgin Islands (U.S.)', 'tribe-common' ), + 'WF' => esc_html__( 'Wallis and Futuna Islands', 'tribe-common' ), + 'EH' => esc_html__( 'Western Sahara', 'tribe-common' ), + 'YE' => esc_html__( 'Yemen', 'tribe-common' ), + 'ZM' => esc_html__( 'Zambia', 'tribe-common' ), + 'ZW' => esc_html__( 'Zimbabwe', 'tribe-common' ), + ]; + + // Perform a natural sort, ensures the countries are in the expected order even once translated. + natsort( $countries ); + + /** + * Filter that allows to change the list and the output of the countries names. + * + * @since 4.7.12 + * + * @param array associative array with: Country Code => Country Name + */ + return (array) apply_filters( 'tribe_countries', $countries ); + } + + /** + * Get a translated array of US States. + * + * @return array { + * List of States + * + * @type string $state_abbreviation State. + * } + */ + public function build_us_states_array() { + $states = [ + 'AL' => esc_html__( 'Alabama', 'tribe-common' ), + 'AK' => esc_html__( 'Alaska', 'tribe-common' ), + 'AZ' => esc_html__( 'Arizona', 'tribe-common' ), + 'AR' => esc_html__( 'Arkansas', 'tribe-common' ), + 'CA' => esc_html__( 'California', 'tribe-common' ), + 'CO' => esc_html__( 'Colorado', 'tribe-common' ), + 'CT' => esc_html__( 'Connecticut', 'tribe-common' ), + 'DE' => esc_html__( 'Delaware', 'tribe-common' ), + 'DC' => esc_html__( 'District of Columbia', 'tribe-common' ), + 'FL' => esc_html__( 'Florida', 'tribe-common' ), + 'GA' => esc_html_x( 'Georgia', 'The US state Georgia', 'tribe-common' ), + 'HI' => esc_html__( 'Hawaii', 'tribe-common' ), + 'ID' => esc_html__( 'Idaho', 'tribe-common' ), + 'IL' => esc_html__( 'Illinois', 'tribe-common' ), + 'IN' => esc_html__( 'Indiana', 'tribe-common' ), + 'IA' => esc_html__( 'Iowa', 'tribe-common' ), + 'KS' => esc_html__( 'Kansas', 'tribe-common' ), + 'KY' => esc_html__( 'Kentucky', 'tribe-common' ), + 'LA' => esc_html__( 'Louisiana', 'tribe-common' ), + 'ME' => esc_html__( 'Maine', 'tribe-common' ), + 'MD' => esc_html__( 'Maryland', 'tribe-common' ), + 'MA' => esc_html__( 'Massachusetts', 'tribe-common' ), + 'MI' => esc_html__( 'Michigan', 'tribe-common' ), + 'MN' => esc_html__( 'Minnesota', 'tribe-common' ), + 'MS' => esc_html__( 'Mississippi', 'tribe-common' ), + 'MO' => esc_html__( 'Missouri', 'tribe-common' ), + 'MT' => esc_html__( 'Montana', 'tribe-common' ), + 'NE' => esc_html__( 'Nebraska', 'tribe-common' ), + 'NV' => esc_html__( 'Nevada', 'tribe-common' ), + 'NH' => esc_html__( 'New Hampshire', 'tribe-common' ), + 'NJ' => esc_html__( 'New Jersey', 'tribe-common' ), + 'NM' => esc_html__( 'New Mexico', 'tribe-common' ), + 'NY' => esc_html__( 'New York', 'tribe-common' ), + 'NC' => esc_html__( 'North Carolina', 'tribe-common' ), + 'ND' => esc_html__( 'North Dakota', 'tribe-common' ), + 'OH' => esc_html__( 'Ohio', 'tribe-common' ), + 'OK' => esc_html__( 'Oklahoma', 'tribe-common' ), + 'OR' => esc_html__( 'Oregon', 'tribe-common' ), + 'PA' => esc_html__( 'Pennsylvania', 'tribe-common' ), + 'RI' => esc_html__( 'Rhode Island', 'tribe-common' ), + 'SC' => esc_html__( 'South Carolina', 'tribe-common' ), + 'SD' => esc_html__( 'South Dakota', 'tribe-common' ), + 'TN' => esc_html__( 'Tennessee', 'tribe-common' ), + 'TX' => esc_html__( 'Texas', 'tribe-common' ), + 'UT' => esc_html__( 'Utah', 'tribe-common' ), + 'VT' => esc_html__( 'Vermont', 'tribe-common' ), + 'VA' => esc_html__( 'Virginia', 'tribe-common' ), + 'WA' => esc_html__( 'Washington', 'tribe-common' ), + 'WV' => esc_html__( 'West Virginia', 'tribe-common' ), + 'WI' => esc_html__( 'Wisconsin', 'tribe-common' ), + 'WY' => esc_html__( 'Wyoming', 'tribe-common' ), + ]; + + // Perform a natural sort, ensures the states are in the expected order even once translated. + natsort( $states ); + + /** + * Filter that allows to change the names of US states before output. + * + * @since 4.7.12 + * + * @param array Associative array with the format: State Code => State Name + */ + return (array) apply_filters( 'tribe_us_states', $states ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Map_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Map_Interface.php new file mode 100644 index 000000000..725a4f81d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Map_Interface.php @@ -0,0 +1,32 @@ + => ] + * e.g. [ 'pt-BR' => 'Portuguese (Brazil)' ] + */ + public function get_supported_languages(); + + /** + * Checks whether a language code is supported by the language map or not. + * + * @param string $language_code + * + * @return bool Whether a language code is supported by the language map or not. + */ + public function is_supported( $language_code ); + + /** + * Converts a language code from the format used by WP to the one used by the language map. + * + * @param string $language_code A language code in the format used by WP; e.g. `en_US`. + * + * @return string|false The converted language code or `false` if the language code is not supported. + */ + public function convert_language_code( $language_code ); +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Recaptcha_Map.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Recaptcha_Map.php new file mode 100644 index 000000000..e818a312e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Languages/Recaptcha_Map.php @@ -0,0 +1,125 @@ + => ] + * e.g. [ 'pt-BR' => 'Portuguese (Brazil)' ] + */ + public function get_supported_languages() { + return [ + 'ar' => 'Arabic', + 'af' => 'Afrikaans', + 'am' => 'Amharic', + 'hy' => 'Armenian', + 'az' => 'Azerbaijani', + 'eu' => 'Basque', + 'bn' => 'Bengali', + 'bg' => 'Bulgarian', + 'ca' => 'Catalan', + 'zh-HK' => 'Chinese (Hong Kong)', + 'zh-CN' => 'Chinese (Simplified)', + 'zh-TW' => 'Chinese (Traditional)', + 'hr' => 'Croatian', + 'cs' => 'Czech', + 'da' => 'Danish', + 'nl' => 'Dutch', + 'en-GB' => 'English (UK)', + 'en' => 'English (US)', + 'et' => 'Estonian', + 'fil' => 'Filipino', + 'fi' => 'Finnish', + 'fr' => 'French', + 'fr-CA' => 'French (Canadian)', + 'gl' => 'Galician', + 'ka' => 'Georgian', + 'de' => 'German', + 'de-AT' => 'German (Austria)', + 'de-CH' => 'German (Switzerland)', + 'el' => 'Greek', + 'gu' => 'Gujarati', + 'iw' => 'Hebrew', + 'hi' => 'Hindi', + 'hu' => 'Hungarain', + 'is' => 'Icelandic', + 'id' => 'Indonesian', + 'it' => 'Italian', + 'ja' => 'Japanese', + 'kn' => 'Kannada', + 'ko' => 'Korean', + 'lo' => 'Laothian', + 'lv' => 'Latvian', + 'lt' => 'Lithuanian', + 'ms' => 'Malay', + 'ml' => 'Malayalam', + 'mr' => 'Marathi', + 'mn' => 'Mongolian', + 'no' => 'Norwegian', + 'fa' => 'Persian', + 'pl' => 'Polish', + 'pt' => 'Portuguese', + 'pt-BR' => 'Portuguese (Brazil)', + 'pt-PT' => 'Portuguese (Portugal)', + 'ro' => 'Romanian', + 'ru' => 'Russian', + 'sr' => 'Serbian', + 'si' => 'Sinhalese', + 'sk' => 'Slovak', + 'sl' => 'Slovenian', + 'es' => 'Spanish', + 'es-419' => 'Spanish (Latin America)', + 'sw' => 'Swahili', + 'sv' => 'Swedish', + 'ta' => 'Tamil', + 'te' => 'Telugu', + 'th' => 'Thai', + 'tr' => 'Turkish', + 'uk' => 'Ukrainian', + 'ur' => 'Urdu', + 'vi' => 'Vietnamese', + 'zu' => 'Zulu', + ]; + } + + /** + * Checks whether a language code is supported by the language map or not. + * + * @param string $language_code + * + * @return bool Whether a language code is supported by the language map or not. + */ + public function is_supported( $language_code ) { + return (bool) $this->convert_language_code( $language_code ); + } + + /** + * Converts a language code from the format used by WP to the one used by the language map. + * + * @param string $language_code A language code in the format used by WP; e.g. `en_US`. + * + * @return string|false The converted language code or `false` if the language code is not supported. + */ + public function convert_language_code( $language_code ) { + $converted_code = $language_code; + if ( strlen( $language_code ) > 2 ) { + // go from `en_US` to `en-US` + $converted_code = str_replace( '_', '-', $language_code ); + $exists = array_key_exists( $converted_code, $this->get_supported_languages() ); + // try with just the two first chars + $converted_code = $exists ? $converted_code : $this->convert_language_code( substr( $language_code, 0, 2 ) ); + } else { + $converted_code = array_key_exists( $language_code, $this->get_supported_languages() ) ? $converted_code : false; + } + + return $converted_code ? $converted_code : false; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Log.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log.php new file mode 100644 index 000000000..b25ac9581 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log.php @@ -0,0 +1,437 @@ + description ]. + * + * @var array + */ + protected $levels = []; + + /** + * Alternative representation of the $levels property allowing quick look + * up of levels by priority. + * + * @var array + */ + protected $prioritized_levels = []; + + /** + * Instantiated loggers, stored for re-use. + * + * @var array + */ + protected $loggers = []; + + public function __construct() { + if ( is_admin() ) { + $this->admin = new Tribe__Log__Admin(); + } + + $this->current_level = $this->get_level(); + $this->log_cleanup(); + } + + /** + * @return Tribe__Log__Admin + */ + public function admin() { + return $this->admin; + } + + /** + * Facilitates daily cleanup and log rotation. + */ + protected function log_cleanup() { + $this->register_cleanup_task(); + do_action( self::CLEANUP, [ $this, 'do_cleanup' ] ); + } + + /** + * Schedules a daily cleanup task if one is not already in place. + */ + protected function register_cleanup_task() { + if ( ! wp_next_scheduled( self::CLEANUP ) ) { + wp_schedule_event( strtotime( '+1 day' ), 'daily', self::CLEANUP ); + } + } + + /** + * Call the cleanup() method for each available logging engine. + * + * We don't just call it on the current engine since, if there was a recent change, + * we'll generally still want the now unused engine's output to be cleaned up. + */ + public function do_cleanup() { + foreach ( $this->get_logging_engines() as $engine ) { + /** + * @var Tribe__Log__Logger $engine + */ + $engine->cleanup(); + } + } + + /** + * Logs a debug-level entry. + * + * @param string $entry + * @param string $src + */ + public function log_debug( $entry, $src ) { + $this->log( $entry, self::DEBUG, $src ); + } + + /** + * Logs a warning. + * + * @param string $entry + * @param string $src + */ + public function log_warning( $entry, $src ) { + $this->log( $entry, self::WARNING, $src ); + } + + /** + * Logs an error. + * + * @param string $entry + * @param string $src + */ + public function log_error( $entry, $src ) { + $this->log( $entry, self::ERROR, $src ); + } + + /** + * Logs a successful operation. + * + * @param string $entry + * @param string $src + */ + public function log_success( $entry, $src ) { + $this->log( $entry, self::SUCCESS, $src ); + } + + /** + * Logs an entry colorizing it. + * + * This will only apply to WP-CLI based logging. + * + * @param string $entry + * @param string $src + */ + public function log_colorized( $entry, $src ) { + $this->log( $entry, self::COLORIZE, $src ); + } + + /** + * Adds an entry to the log (if it is at the appropriate level, etc) and outputs information using WP-CLI if available. + * + * This is simply a shorthand for calling log() on the current logger. + */ + public function log( $entry, $type = self::DEBUG, $src = '' ) { + $original_type = $type; + + // some levels are really just debug information + $debug_types = [ self::SUCCESS, self::COLORIZE ]; + + if ( in_array( $type, $debug_types ) ) { + $type = self::DEBUG; + } + + if ( $this->should_log( $type ) ) { + $this->get_current_logger()->log( $entry, $type, $src ); + } + + /** + * Whether to log the message to wp-cli, if available, or not. + * + * @since 4.9.6 + * + * @param bool $log_to_wpcli Whether to log to wp-cli, if available, or not. + * @param string $entry The message entry. + * @param string $type The message type. + * @param string $src The message source. + */ + $log_to_wpcli = apply_filters( 'tribe_common_log_to_wpcli', true, $entry, $type, $src ); + + // Only go further if we have WP_CLI or if we want to log to WP-CLI. + if ( ! class_exists( 'WP_CLI' ) || false === $log_to_wpcli ) { + return false; + } + + // We are always logging to WP-CLI if available + switch ( $original_type ) { + case self::ERROR: + WP_CLI::error( $entry ); + break; + case self::WARNING: + WP_CLI::warning( $entry ); + break; + case self::SUCCESS: + WP_CLI::success( $entry ); + break; + case self::DEBUG: + WP_CLI::debug( $entry, $src ); + break; + + case self::COLORIZE: + default: + WP_CLI::log( WP_CLI::colorize( $entry ) ); + break; + } + } + + /** + * Returns a list of available logging engines as an array where each + * key is the classname and the value is the logger itself. + * + * @return array + */ + public function get_logging_engines() { + $available_engines = []; + $bundled_engines = [ + 'Tribe__Log__File_Logger', + ]; + + foreach ( $bundled_engines as $engine_class ) { + $engine = $this->get_engine( $engine_class ); + + // Check that we have a valid engine that is available for use in the current environment + if ( $engine && $engine->is_available() ) { + $available_engines[ $engine_class ] = $engine; + } + } + + /** + * Offers a chance to modify the array of currently available logging engines. + * + * The array is organized with each key as the class name of the logging + * implementation and the matching value is the actual logger object. + * + * @var array $available_engines + */ + return apply_filters( 'tribe_common_logging_engines', $available_engines ); + } + + /** + * Returns the currently active logger. + * + * If no loggers are available, this will be the null logger which is a no-op + * implementation (making it safe to call Tribe__Log__Logger methods on the + * return value of this method at all times). + * + * @since 4.6.2 altered the return signature to only return instances of Tribe__Log__Logger + * + * @return Tribe__Log__Logger + */ + public function get_current_logger() { + if ( ! $this->current_logger ) { + $engine = tribe_get_option( 'logging_class', null ); + $available = $this->get_logging_engines(); + + if ( empty( $engine ) || ! isset( $available[ $engine ] ) ) { + return $this->current_logger = new Tribe__Log__Null_Logger(); + } else { + $this->current_logger = $this->get_engine( $engine ); + } + } + + return $this->current_logger; + } + + /** + * Sets the current logging engine to the provided class (if it is a valid + * and currently available logging class, else will set this to null - ie + * no logging). + * + * @param string $engine + * + * @throws Exception if the specified logging engine is invalid + */ + public function set_current_logger( $engine ) { + $available_engines = $this->get_logging_engines(); + + // Make sure to de-duplicate the slashes on class names. + $engine = str_replace( '\\\\', '\\', $engine ); + + if ( ! isset( $available_engines[ $engine ] ) ) { + throw new Exception( sprintf( __( 'Cannot set %s as the current logging engine', 'tribe-common' ), $engine ) ); + } + + tribe_update_option( 'logging_class', $engine ); + $this->current_logger = $available_engines[ $engine ]; + } + + /** + * Attempts to return the requested logging object or null if that + * is not possible. + * + * @param $class_name + * + * @return Tribe__Log__Logger|null + */ + public function get_engine( $class_name ) { + if ( ! isset( $this->loggers[ $class_name ] ) ) { + $object = new $class_name; + + if ( $object instanceof Tribe__Log__Logger ) { + $this->loggers[ $class_name ] = new $class_name(); + } + } + + if ( isset( $this->loggers[ $class_name ] ) ) { + return $this->loggers[ $class_name ]; + } + + return null; + } + + /** + * Sets the current logging level to the provided level (if it is a valid + * level, else will set the level to 'default'). + * + * @param string $level + */ + public function set_level( $level ) { + $available_levels = wp_list_pluck( $this->get_logging_levels(), 0 ); + + if ( ! in_array( $level, $available_levels ) ) { + $level = self::DISABLE; + } + + tribe_update_option( 'logging_level', $level ); + $this->current_level = $level; + } + + /** + * Returns the current logging level as a string. + * + * @return string + */ + public function get_level() { + $current_level = tribe_get_option( 'logging_level', null ); + $available_levels = wp_list_pluck( $this->get_logging_levels(), 0 ); + + if ( ! in_array( $current_level, $available_levels ) ) { + $current_level = self::DISABLE; + } + + return $current_level; + } + + /** + * Returns a list of logging levels. + * + * The format is an array of arrays, each inner array being comprised of the + * level code (index 0) and a human readable description (index 1). + * + * The ordering of the inner arrays is critical as it dictates what will be logged + * when a given logging level is in effect. Example: if the current logging level + * is "error" mode (only record error-level problems) then debug-level notices will + * *not* be recorded and nor will warnings. + * + * On the other hand, if the current logging level is "debug" then debug level + * notices *and* all higher levels (including warnings and errors) will be recorded. + * + * @return array + */ + public function get_logging_levels() { + if ( empty( $this->levels ) ) { + /** + * Provides an opportunity to add or remove logging levels. This is expected + * to be organized as an array of arrays: the ordering of each inner array + * is critical, see Tribe__Log::get_logging_levels() docs. + * + * General form: + * + * [ + * [ 'disable' => 'description' ], // * Do not log anything + * [ 'error' => 'description' ], // ^ Log only the most critical problems + * [ 'warning' => 'description' ], // | ... + * [ 'debug' => 'description' ] // v Log as much data as possible, including less important trivia + * ] + * + * @param array $logging_levels + */ + $this->levels = (array) apply_filters( 'tribe_common_logging_levels', [ + [ self::DISABLE, __( 'Disabled', 'tribe-common' ) ], + [ self::ERROR, __( 'Only errors', 'tribe-common' ) ], + [ self::WARNING, __( 'Warnings and errors', 'tribe-common' ) ], + [ self::DEBUG, __( 'Full debug (all events)', 'tribe-common' ) ], + ] ); + } + + return $this->levels; + } + + /** + * Indicates if errors relating to the specified logging level should indeed + * be logged. + * + * Examples if the current logging level is "warning" (log all warnings and errors): + * + * * Returns true for "error" + * * Returns true for "warning" + * * Returns false for "debug" + * + * The above assumes we are using the default logging levels. + * + * @param string $level_code + * + * @return bool + */ + protected function should_log( $level_code ) { + if ( empty( $this->prioritized_levels ) ) { + $this->build_prioritized_levels(); + } + + // Protect against the possibility non-existent level codes might be passed in + if ( ! isset( $this->prioritized_levels[ $level_code ] ) ) { + return false; + } + + return $this->prioritized_levels[ $level_code ] <= $this->prioritized_levels[ $this->current_level ]; + } + + /** + * Creates a second list of logging levels allowing easy lookup of + * their relative priorities (ie, a means of quickly checking if + * an "error" level entry should be recorded when we're in debug + * mode). + */ + protected function build_prioritized_levels() { + foreach ( $this->get_logging_levels() as $index => $level_data ) { + $this->prioritized_levels[ $level_data[ 0 ] ] = $index; + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Action_Logger.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Action_Logger.php new file mode 100644 index 000000000..9d4545294 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Action_Logger.php @@ -0,0 +1,125 @@ +translate_log_level( $type ), $message ); + } + + /** + * Translates the log types used by `Tribe__Log` to those used by Monolog. + * + * @since 4.9.16 + * + * @param string $type The `Tribe__Log` log type. + * + * @return int The Monolog equivalent of the current level. + */ + protected function translate_log_level( $type ) { + switch ( $type ) { + case Tribe__Log::DEBUG: + return Logger::DEBUG; + case Tribe__Log::ERROR: + return Logger::ERROR; + case Tribe__Log::WARNING: + return Logger::WARNING; + case Tribe__Log::SUCCESS: + default: + return Logger::INFO; + } + } + + /** + * {@inheritDoc} + * + * @since 4.9.16 + */ + public function retrieve( $limit = 0, array $args = [] ) { + return [ + [ + 'message' => __( + 'The Action Logger will dispatch any logging message using the "tribe_log" action writing, by ' . + 'default, to the PHP error log.', + 'tribe-common' ) + ], + ]; + } + + /** + * {@inheritDoc} + * + * @since 4.9.16 + */ + public function list_available_logs() { + return []; + } + + /** + * Changes the Monolog logger channel to the specified one. + * + * @since 4.9.16 + * + * @param string $log_identifier The channel to switch to. + * @param bool $create Unused by this class. + * + * @return bool The exit status of the channel change. + * + * @uses \Tribe\Log\Monolog_Logger::set_channel(). + */ + public function use_log( $log_identifier, $create = false ) { + return tribe( 'monolog' )->set_global_channel( $log_identifier ); + } + + /** + * {@inheritDoc} + * + * @since 4.9.16 + */ + public function cleanup() { + return true; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Admin.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Admin.php new file mode 100644 index 000000000..c5aa2472d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Admin.php @@ -0,0 +1,283 @@ + Settings > Help screen. + * + * @return string + */ + public function display_log() { + $log_choices = $this->get_available_logs(); + $log_engines = $this->get_log_engines(); + $log_levels = $this->get_logging_levels(); + $log_entries = $this->get_log_entries(); + $download_url = $this->get_log_url(); + + ob_start(); + include trailingslashit( Tribe__Main::instance()->plugin_path ) . 'src/admin-views/event-log.php'; + return ob_get_clean(); + } + + /** + * Listens for changes to the event log settings updating and returning + * an appropriate response. + */ + public function listen() { + $fields = wp_parse_args( $_POST, [ + 'check' => '', + 'log-level' => '', + 'log-engine' => '', + ] ); + + foreach ( $fields as &$single_field ) { + $single_field = sanitize_text_field( $single_field ); + } + + if ( ! wp_verify_nonce( $fields['check'], 'logging-controls' ) ) { + return; + } + + /** + * Fires before log settings are committed. + * + * This will not happen unless a nonce check has already passed. + */ + do_action( 'tribe_common_update_log_settings' ); + + $this->update_logging_level( $fields['log-level'] ); + $this->update_logging_engine( $fields['log-engine'] ); + + /** + * Fires immediately after log settings have been committed. + */ + do_action( 'tribe_common_updated_log_settings' ); + + $data = [ + 'logs' => $this->get_available_logs(), + ]; + + if ( ! empty( $fields['log-view'] ) ) { + $data['entries'] = $this->get_log_entries( $fields['log-view'] ); + } + + wp_send_json_success( $data ); + } + + /** + * Sets the current logging level to the provided level (if it is a valid + * level, else will set the level to 'default'). + * + * @param string $level + */ + protected function update_logging_level( $level ) { + $this->log_manager()->set_level( $level ); + } + + /** + * Sets the current logging engine to the provided class (if it is a valid + * and currently available logging class, else will set this to null - ie + * no logging). + * + * @param string $engine + */ + protected function update_logging_engine( $engine ) { + try { + $this->log_manager()->set_current_logger( $engine ); + } + catch ( Exception $e ) { + // The class name did not relate to a valid logging engine + } + } + + /** + * Register our script early. + */ + public function register_script() { + tribe_asset( + Tribe__Main::instance(), + 'tribe-common-logging-controls', + 'admin-log-controls.js', + [ 'jquery' ], + 'admin_enqueue_scripts', + [ + 'conditionals' => [ $this, 'should_enqueue_assets' ], + 'localize' => (object) [ + 'name' => 'tribe_logger_data', + 'data' => [ + 'check' => wp_create_nonce( 'logging-controls' ), + ], + ], + ] + ); + } + + /** + * Checks wether the assets should be enqueued. + * + * @since 4.15.0 + * + * @return boolean True if the assets should be enqueued. + */ + public function should_enqueue_assets() { + return Tribe__Admin__Help_Page::instance()->is_current_page() || tribe( Troubleshooting::class )->is_current_page(); + } + + /** + * Returns a list of logs that are available for perusal. + * + * @return array + */ + protected function get_available_logs() { + $current_logger = $this->current_logger(); + + if ( $current_logger ) { + $available_logs = $this->current_logger()->list_available_logs(); + } + + if ( empty( $available_logs ) ) { + return [ '' => _x( 'None currently available', 'log selector', 'tribe-common' ) ]; + } + + return $available_logs; + } + + /** + * Returns a list of logging engines that are available for use. + * + * @return array + */ + protected function get_log_engines() { + $available_engines = $this->log_manager()->get_logging_engines(); + + if ( empty( $available_engines ) ) { + return [ '' => _x( 'None currently available', 'log engines', 'tribe-common' ) ]; + } + + $engine_list = []; + + foreach ( $available_engines as $class_name => $engine ) { + /** + * @var Tribe__Log__Logger $engine + */ + $engine_list[ $class_name ] = $engine->get_name(); + } + + return $engine_list; + } + + /** + * Returns all log entries for the current or specified log. + * + * @return array + */ + public function get_log_entries( $log = null ) { + if ( $logger = $this->current_logger() ) { + $logger->use_log( $log ); + return (array) $logger->retrieve(); + } + + return []; + } + + /** + * Returns an array of logging levels arranged as key:value pairs, with + * each key being the level code and the value being the human-friendly + * description. + * + * @return array + */ + protected function get_logging_levels() { + $levels = []; + $available_levels = $this->log_manager()->get_logging_levels(); + + foreach ( $available_levels as $logging_level ) { + $levels[ $logging_level[0] ] = $logging_level[1]; + } + + return $levels; + } + + /** + * Provides a URL that can be used to download the current or specified + * log. + * + * @param $log + * + * @return string + */ + protected function get_log_url( $log = null ) { + $query = [ + 'tribe-common-log' => 'download', + 'check' => wp_create_nonce( 'download_log' ), + ]; + + $log_download_url = add_query_arg( $query, get_admin_url( null, 'edit.php' ) ); + + return esc_url( $log_download_url ); + } + + /** + * Facilitate downloading of logs. + */ + public function serve_log_downloads() { + if ( empty( $_GET['tribe-common-log'] ) || 'download' !== $_GET['tribe-common-log'] ) { + return; + } + + if ( ! wp_verify_nonce( @$_GET['check'], 'download_log' ) ) { + return; + } + + if ( empty( $_GET['log'] ) || ! in_array( $_GET['log'], $this->get_available_logs() ) ) { + return; + } + + $log_name = sanitize_file_name( $_GET['log'] ); + $this->current_logger()->use_log( $log_name ); + + /** + * Provides an opportunity to modify the recommended filename for a downloaded + * log file. + * + * @param string $log_name + */ + $log_name = apply_filters( 'tribe_common_log_download_filename', $log_name ); + + header( 'Content-Disposition: attachment; filename="tribe-log-' . $log_name . '"' ); + $output = fopen( 'php://output', 'w' ); + + foreach ( $this->current_logger()->retrieve() as $log_entry ) { + fputcsv( $output, $log_entry ); + } + + fclose( $output ); + exit(); + } + + /** + * Returns a reference to the main log management object. + * + * @return Tribe__Log + */ + protected function log_manager() { + return tribe( 'logger' ); + } + + /** + * Returns the currently enabled logging object or null if it is not + * available. + * + * @return Tribe__Log__Logger|null + */ + protected function current_logger() { + return tribe( 'logger' )->get_current_logger(); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Canonical_Formatter.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Canonical_Formatter.php new file mode 100644 index 000000000..94c8e3da8 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Canonical_Formatter.php @@ -0,0 +1,174 @@ +format_record_message( $record ); + $formatter = $this->get_context_formatter(); + } else { + // Fall-back on a standard format if the message does not have a context. + $formatter = $this->get_standard_formatter(); + } + + return $formatter->format( $record ); + } + + /** + * Gets a LineFormatter whose format is context aware. + * + * @since 4.12.13 + * + * @return LineFormatter + */ + public function get_context_formatter() { + if ( empty( $this->context_formatter ) ) { + $this->context_formatter = new LineFormatter( $this->context_format ); + } + + return $this->context_formatter; + } + + /** + * Gets a LineFormatter whose format is our standard logging format. + * + * @since 4.12.13 + * + * @return LineFormatter + */ + public function get_standard_formatter() { + if ( empty( $this->standard_formatter ) ) { + $this->standard_formatter = new LineFormatter( $this->standard_format ); + } + + return $this->standard_formatter; + } + + /** + * Formats a set of log records. + * + * This simply hands off the work of formatting Batches to the LineFormatter. + * + * @since 4.12.13 + * + * @param array $records A set of records to format + * @return mixed The formatted set of records + */ + public function formatBatch( array $records ) { + $line_formatter = new LineFormatter(); + + return $line_formatter->formatBatch( $records ); + } + + /** + * Formats the record to the canonical format. + * + * @since 4.9.16 + * + * @param array $record The record to process. + * + * @return string The formatted message, as built from the record context and message, in the format `=`. + */ + protected function format_record_message( array $record ) { + $message = []; + $extra = []; + + $extra['level'] = isset( $record['level_name'] ) ? strtolower( $record['level_name'] ) : 'debug'; + + if ( ! empty( $record['message'] ) ) { + // Use the message as the source. + $extra['source'] = $this->escape_quotes( $record['message'] ); + } + + $context = $record['context']; + $context = array_merge( $extra, $context ); + + foreach ( $context as $key => $value ) { + $escape = false; + + if ( is_bool( $value ) ) { + $value = $value ? 'true' : 'false'; + } elseif ( ! is_scalar( $value ) ) { + $value = json_encode( $value ); + if ( false === $value ) { + $value = 'malformed'; + } else { + $escape = true; + } + } + + if ( $escape || ( is_string( $value ) && preg_match( '~[\\\\/\\s]+~', $value ) ) ) { + $value = '"' . $this->escape_quotes( $value ) . '"'; + } + + $message[] = "{$key}={$value}"; + } + + return implode( ' ', $message ); + } + + /** + * Escapes the double quotes in a string. + * + * @since 4.9.16 + * + * @param string $string The string to escape the quotes in. + * + * @return string The string, with the quotes escaped. + */ + protected function escape_quotes( $string ) { + return str_replace( '"', '\\"', $string ) ; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/File_Logger.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/File_Logger.php new file mode 100644 index 000000000..ef69a7f38 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/File_Logger.php @@ -0,0 +1,314 @@ +set_log_dir(); + $this->set_log_file(); + } + + public function __destruct() { + $this->close_handle(); + } + + protected function set_log_dir() { + /** + * Controls the directory used for logging. + * + * @var string $log_dir + */ + $this->log_dir = apply_filters( 'tribe_file_logger_directory', get_temp_dir() ); + } + + /** + * Sets the path for the log file we're currently interested in using. + * + * @param string $date = null + */ + protected function set_log_file( $date = null ) { + $this->log_file = $this->get_log_file_name( $date ); + $this->obtain_handle(); + } + + /** + * Used to switch between contexts for reading ('r') and writing + * ('a' := append) modes. + * + * @see fopen() documentation + * + * @param string $context + */ + protected function set_context( $context ) { + $this->context = $context; + $this->close_handle(); + $this->obtain_handle(); + } + + /** + * Attempts to obtain a file handle for the current log file. + */ + protected function obtain_handle() { + $this->close_handle(); + + if ( ! file_exists( $this->log_file ) && $this->is_available() ) { + touch( $this->log_file ); + } + + // Bail if we're attempting to write but don't have permission. + if ( 'r' !== $this->context && ! is_writable( $this->log_file ) ) { + return; + } + + if ( is_readable( $this->log_file ) ) { + $this->handle = fopen( $this->log_file, $this->context ); + } + } + + /** + * Closes the current file handle, if one is open. + */ + protected function close_handle() { + // is_resource() only returns true for open resources + if ( is_resource( $this->handle ) ) { + fclose( $this->handle ); + } + } + + /** + * Returns the log name to be used for reading/writing events for a specified date + * (defaulting to today, if no date is specified). + * + * @param string $date = null + * + * @return string + */ + protected function get_log_file_name( $date = null ) { + if ( null === $date ) { + $date = date_i18n( 'Y-m-d' ); + } + + $filename = $this->log_dir . DIRECTORY_SEPARATOR . $this->get_log_file_basename() . $date . '.log'; + + /** + * Dictates the filename of the log used to record events for the specified date. + * + * @var string $filename + * @var string $date + */ + return apply_filters( 'tribe_file_logger_filename', $filename, $date ); + } + + protected function get_log_file_basename() { + /** + * Log files share a common prefix, which aids identifying archived/rotated logs. + * This filter allows a degree of control to be exercised over the prefix to avoid + * conflicts, etc. + * + * @var string $log_file_base_name + */ + return apply_filters( 'tribe_file_logger_file_prefix', $this->module_id . '_' ); + } + + /** + * Returns a 'human friendly' name for the logging implementation. + * + * @return string + */ + public function get_name() { + return __( 'Default (uses temporary files)', 'tribe-common' ); + } + + /** + * Indicates if the logger will work in the current environment. + * + * @return bool + */ + public function is_available() { + return is_writable( $this->log_dir ) && is_readable( $this->log_dir ); + } + + /** + * Responsible for commiting the entry to the log. + * + * @param string $entry + * @param string $type + * @param string $src + */ + public function log( $entry, $type = Tribe__Log::DEBUG, $src = '' ) { + // Ensure we're in 'append' mode before we try to write + if ( 'a' !== $this->context ) { + $this->set_context( 'a' ); + } + + // Couldn't obtain the file handle? We'll bail out without causing further disruption + if ( ! $this->handle ) { + return; + } + + fputcsv( $this->handle, [ date_i18n( 'Y-m-d H:i:s' ), $entry, $type, $src ] ); + } + + /** + * Retrieve up to $limit most recent log entries in reverse chronological + * order. If $limit is a negative or zero value, there is no limit. + * + * Supports passing a 'log' argument to recover + * + * @see Tribe__Log__Logger::list_available_logs() + * + * @param int $limit + * @param array $args + * + * @return array + */ + public function retrieve( $limit = 0, array $args = [] ) { + // Ensure we're in 'read' mode before we try to retrieve + if ( 'r' !== $this->context ) { + $this->set_context( 'r' ); + } + + // Couldn't obtain the file handle? We'll bail out without causing further disruption + if ( ! $this->handle ) { + return []; + } + + $rows = []; + + while ( $current_row = fgetcsv( $this->handle ) ) { + if ( $limit && $limit === count( $rows ) ) { + array_shift( $rows ); + } + + $rows[] = $current_row; + } + + return array_reverse( $rows ); + } + + /** + * Returns a list of currently accessible logs (current first, oldest last). + * Each is refered to by date. + * + * Example: + * + * [ '2016-12-31', + * '2016-12-30', + * '2016-12-30', + * '2016-12-30', + * '2016-12-30', ... ] + * + * @since 4.6.2 added extra safety checks before attempting to access log directory + * + * @return array + */ + public function list_available_logs() { + $logs = []; + + // This could be called when the log dir is not accessible. + if ( ! $this->is_available() ) { + return $logs; + } + + $basename = $this->get_log_file_basename(); + + /** + * Though the is_available() method tests to see if the log directory is + * readable and writeable there are situations where that isn't a + * sufficient check by itself, hence the try/catch block. + * + * @see https://central.tri.be/issues/90436 + */ + try { + $log_files_dir = new DirectoryIterator( $this->log_dir ); + + // Look through the log storage directory + foreach ( $log_files_dir as $node ) { + if ( ! $node->isReadable() ) { + continue; + } + + $name = $node->getFilename(); + $ext = $node->getExtension(); + + // Skip unless it is a .log file with the expected prefix + if ( 'log' !== $ext || 0 !== strpos( $name, $basename ) ) { + continue; + } + + if ( preg_match( '/([0-9]{4}\-[0-9]{2}\-[0-9]{2})/', $name, $matches ) ) { + $logs[] = $matches[1]; + } + } + + rsort( $logs ); + } catch ( Exception $e ) { + return $logs; + } + + return $logs; + } + + /** + * Switches to the specified log. The $log_identifier should take the + * form of a "yyyy-mm-dd" format date string. + * + * If optional param $create is true then it will try to create a log + * using the provided identifier. If the log does not exist, cannot be + * created or an invalid identifier has been passed in then boolean false + * will be returned, otherwise it will attempt to switch to the new log. + * + * @param mixed $log_identifier + * @param bool $create + * + * @return bool + */ + public function use_log( $log_identifier, $create = false ) { + $log_file = $this->get_log_file_name( $log_identifier ); + $exists = file_exists( $log_file ); + + if ( ! $exists && ! $create ) { + return false; + } + + if ( ! $exists && $create && preg_match( '/^([0-9]{4}\-[0-9]{2}\-[0-9]{2})$/', $log_file ) ) { + if ( false === file_put_contents( $log_file, '' ) ) { + return false; + } + } + + $this->set_log_file( $log_identifier ); + return true; + } + + /** + * Performs routine maintenance and cleanup work (such as log rotation) + * whenever it is called. + */ + public function cleanup() { + // Default to retaining 7 days worth of logs + $cutoff = date_i18n( 'Y-m-d', current_time( 'timestamp' ) - WEEK_IN_SECONDS ); + + /** + * Logs falling on or earlier than this date will be removed. + * + * @param string $cutoff 'Y-m-d' format date string + */ + $cutoff = apply_filters( 'tribe_file_logger_cutoff', $cutoff ); + + foreach ( $this->list_available_logs() as $available_log ) { + if ( $available_log <= $cutoff ) { + unlink( $this->get_log_file_name( $available_log ) ); + } + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Logger.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Logger.php new file mode 100644 index 000000000..0ffeb0937 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Logger.php @@ -0,0 +1,88 @@ +set_global_channel( static::DEFAULT_CHANNEL ); + } + + /** + * Clones this logger and replaces it in the `tribe` container. + * + * @since 4.9.16 + * + * @param string $channel The new logger name, also referred to as "channel" (hence the method name). + * + * @return bool Whether the channel change was successful or not. + */ + public function set_global_channel( $channel ) { + $new = $this->withName( $channel ); + tribe_register( Logger::class, $new ); + tribe_register( 'monolog', $new ); + + return $channel === tribe( 'monolog' )->getName(); + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Null_Logger.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Null_Logger.php new file mode 100644 index 000000000..953215731 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Log/Null_Logger.php @@ -0,0 +1,106 @@ + Pro tip: if you, as a developer, find yourself using `var_dump` and `error_log` a lot, then you should log instead. Someone, someday, will have your same issue. + +Worried about "spamming" the logs? [Read here](#logging-levels--or-stuff-does-not-appear-in-the-log). + +## This will deprecate the old logger, but not yet + +At first we're not replacing the "old" logger with this new one, we're just asking you **to stop using the old logger** in your code from now on and use the new, Monolog-based, one. +The old logger still offers file-based logging and connections to the UI the new logger is not yet offering; the current implementation will allow us, in the future, to log **everything** with the Monolog-based logger, but, currently, intercepting log messages from the "old" logger requires manual activation, see the following section. + +To be clear: this is what we mean by "old" or "legacy" logger: + +```php +log_debug( 'Some debug information', 'The source' ); +tribe( 'logger' )->log( 'Some information', Tribe__Log::DEBUG, 'The source' ); +``` + +### Intercepting legacy logger logs with the new Monolog logger + +The Monolog-based logger will handle logging coming from the legacy logger only if explicitly told so. + + You can activate this function with this code: + + ```php + 'updated', 'post_id' => $id, 'origin' => $origin ] +); +``` + +The logger listening on the action will consume three parameters: + +1. `level` - `debug` in the example; is the level of the log; available levels, in increasing value of urgency are: `debug`, `info`, `notice`, `warning`, `error`, `critical`, `alert`, `emergency`. Use each level wisely. +2. `source` - `ea_client` in this example; is the source of the log; this is a human-readable value; consistency is king here. +3. `context` - the array in this example; this is an associative array that will be logged to define the context of the log. Think of this as something that will provide the details required to unpack what **was** happening when the log entry was created. Provide enough context to make it clear, but avoid bloating it. + +## Where are my logs? + +The initial implementation of the new logger will write, by default, to the **PHP error** log. + +We're using Monolog to allow us, and third parties, to "attach" and "deatach" loggers as required. +By default we're formatting logs using canonical lines( read more [here](https://brandur.org/logfmt) and [here](https://blog.codeship.com/logfmt-a-log-format-thats-easy-to-read-and-write/)) to make our log entries both human-readable and machine parsable (e.g. by a tool like [this](https://www.npmjs.com/package/logfmt)). + +The output format of the example above would be this: + +``` +[22-Aug-2019 15:50:42 UTC] tribe-canonical-line channel=default level=debug source=ea_client action=updated post_id=23 origin=ical +``` + +What about legacy logs? +Their format would not be formatted to the canonical line style: + +``` +[22-Aug-2019 16:03:33 UTC] tribe.default.DEBUG: The source: debug information +``` + +### Logging levels ( or "stuff does not appear in the log") + +By default we're only logging Warnings and above. +This means all your `debug` level logs are being ignored. + +In production we do not want to fill people logs with pointless information, but you can control the level of logging: any log equal or above the specified level will be logged. + +You can control the logging level with the `tribe_log_level` filter: + +```php +set_global_channel( 'my_channel' ); +do_action( 'tribe_log', 'debug', 'my_source', [ 'foo' => 'bar' ] ); +tribe( 'logger' )->log_debug( 'Some debug information', 'My source' ); +``` + +You can do the same using the legacy logger, [if enabled][0527-0003]: + +```php +use_log( 'my_channel' ); +``` + +Any log produced after the call will log to the `my_channel` channel; this will apply to the legacy logger too ([if redirected][0527-0003]): + +``` +[22-Aug-2019 15:50:42 UTC] tribe-canonical-line channel=default level=debug source=ea_client action=updated post_id=23 origin=ical +[22-Aug-2019 15:51:13 UTC] tribe-canonical-line channel=my_channel level=debug source=my_source foo=bar +[22-Aug-2019 16:03:33 UTC] tribe.my_channel.DEBUG: My source: Some debug information +``` + +## I want to use this right now to debug my code + +Copy and paste this in a plugin, or must-use plugin. +If you're using a plugin remember to activate it. + +```php +container->singleton( 'log', $this ); + $this->container->singleton( static::class, $this ); + $this->container->singleton( Logger::class, [ $this, 'build_logger' ] ); + $this->container->singleton( 'monolog', + function () { + return $this->container->make( Logger::class ); + } + ); + + add_action( 'tribe_log', [ $this, 'dispatch_log' ], 10, 3 ); + + /** + * Filters whether to make the Action Logger available as logger or not. + * + * @since 4.9.16 + * + * @param bool $use_action_logger Whether to allow logging messages from the \Tribe\Log\Logger class using the + * `tribe_log` action or not. + */ + $use_action_logger = apply_filters( 'tribe_log_use_action_logger', false ); + + if ( $use_action_logger ) { + add_filter( 'tribe_common_logging_engines', [ $this, 'add_logging_engine' ] ); + } + } + + /** + * Builds and returns the Monolog Logger instance that will listen to the `tribe_log` action. + * + * To avoid the over-head introduced by filtering the filters are applied here, only once, when the instance is + * first built. Any later call will use the singleton instance stored in the container. + * + * @since 4.9.16 + * + * @return Logger + */ + public function build_logger() { + /* + * Disable logging by either setting the `TEC_DISABLE_LOGGING` constant or by setting the + * `TRIBE_DISABLE_LOGGING` environment variable to a truthy value. Use the environment variable + * in the context of integration tests. + */ + $logger_disabled = ( defined( 'TEC_DISABLE_LOGGING' ) && TEC_DISABLE_LOGGING ) + || ! empty( $_ENV['TEC_DISABLE_LOGGING'] ) + || getenv( 'TEC_DISABLE_LOGGING' ); + + /** + * Allow filtering the logger enabled status. + * + * @since 5.0.10 + * + * @param bool $logger_disabled Whether the logger should be disabled or not. + */ + $logger_disabled = apply_filters( 'tec_disable_logging', $logger_disabled ); + + if ( $logger_disabled ) { + // Logging is disabled, still build a logger to allow fine usage of it and make sure it exists. + $logger = new Monolog_Logger( Monolog_Logger::DEFAULT_CHANNEL ); + + // Set the handlers to one NullHandler: setting them to an empty array would make it use the STDERR one. + return $logger->setHandlers( [ new NullHandler() ] ); + } + + // Provide more information in debug mode. + $level_threshold = defined( 'WP_DEBUG' ) && WP_DEBUG ? Logger::DEBUG : Logger::WARNING; + + /** + * Filters the level of the messages that will be logged. + * + * The threshold is inclusive of the level; it default to log any warning and above. + * + * @since 4.9.16 + * + * @param int The threshold level; if the level of a message is this level or above, then it will be logged. + * + * @see \Monolog\Logger for possible levels. + */ + $level_threshold = apply_filters( 'tribe_log_level', $level_threshold ); + + $error_log_handler = new ErrorLogHandler( ErrorLogHandler::OPERATING_SYSTEM, $level_threshold ); + + /** + * Filters whether to use canonical format for the logs or not. + * + * @since 4.9.16 + * + * @param bool $use_canonical_format Whether to use canonical format for the logs or not; defaults to `true`. + */ + $use_canonical_format = apply_filters( 'tribe_log_canonical', true ); + + if ( $use_canonical_format ) { + $error_log_handler->setFormatter( new Canonical_Formatter() ); + } + + $handlers = [ + 'default' => $error_log_handler + ]; + + /** + * Filters the list of handlers that will handle dispatched log messages. + * + * All handlers should implement the `\Monolog\Handler\HandlerInterface`. + * + * @since 4.9.16 + * + * @param array $handlers An array of default log handlers. + */ + $handlers = apply_filters( 'tribe_log_handlers', $handlers ); + + // Monolog will log to stderr when no handlers are set. + $logger = new Monolog_Logger( Monolog_Logger::DEFAULT_CHANNEL ); + + $logger->setHandlers( $handlers ); + + return $logger; + } + + /** + * Dispatch a message of a specific level. + * + * Available levels are: `debug`, `info`, `notice`, `warning`, `error`, `critical`, `alert`, `emergency`. + * + * @since 4.9.16 + * + * @param string|int $level Either the log level or the log pretty name, see long description. + * @param string $message The message to log. + * @param array $context An array of values to define the context. + * + * @see \Monolog\Logger for the log level constants and names. + */ + public function dispatch_log( $level = 'debug', $message = '', array $context = [] ) { + // Goes from something like `debug` to `100`. + $level = is_numeric( $level ) ? $level : Logger::toMonologLevel( $level ); + + /** @var Logger $logger */ + $logger = $this->container->make( Logger::class ); + + $logger->log( $level, $message, $context ); + } + + /** + * Makes the action-based logging engine available in the backend. + * + * @since 4.9.16 + * + * @param array $logging_engines An array of available logging engines. + * + * @return array The updated array of logging engines. + */ + public function add_logging_engine( array $logging_engines = [] ) { + $logging_engines[ Action_Logger::class ] = new Action_Logger(); + + return $logging_engines; + } + + /** + * Enables logging in the service provider, if not already enabled. + * + * @since 4.12.15 + */ + public function enable() { + if ( has_action( 'tribe_log', [ $this, 'dispatch_log' ] ) ) { + return; + } + + add_action( 'tribe_log', [ $this, 'dispatch_log' ] ); + } + + /** + * Disables the logging functions. + * + * @since 4.12.15 + */ + public function disable() { + if ( ! has_action( 'tribe_log', [ $this, 'dispatch_log' ] ) ) { + return; + } + + remove_action( 'tribe_log', [ $this, 'dispatch_log' ] ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Main.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Main.php new file mode 100644 index 000000000..3b9d0ba1b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Main.php @@ -0,0 +1,858 @@ +plugin_context = $context; + $this->plugin_context_class = get_class( $context ); + } + + $this->plugin_path = trailingslashit( dirname( dirname( dirname( __FILE__ ) ) ) ); + $this->plugin_dir = trailingslashit( basename( $this->plugin_path ) ); + $this->parent_plugin_dir = trailingslashit( plugin_basename( $this->plugin_path ) ); + $this->plugin_url = plugins_url( $this->parent_plugin_dir === $this->plugin_dir ? $this->plugin_dir : $this->parent_plugin_dir ); + + $this->promoter_connector(); + + add_action( 'plugins_loaded', [ $this, 'plugins_loaded' ], 1 ); + add_action( 'tribe_common_loaded', [ $this, 'tribe_common_app_store' ], 10 ); + add_action( 'customize_controls_print_styles', [ $this, 'load_tec_variables' ], 10 ); + + if ( did_action( 'plugins_loaded' ) && ! doing_action( 'plugins_loaded' ) ) { + /* + * This might happen in the context of a plugin activation. + * Complete the loading now and set the singleton instance to avoid infinite loops. + */ + self::$instance = $this; + $this->plugins_loaded(); + } + } + + /** + * + */ + public function plugins_loaded() { + + $this->init_autoloading(); + + $this->init_early_libraries(); + $this->bind_implementations(); + $this->init_libraries(); + $this->add_hooks(); + + /** + * Runs once all common libs are loaded and initial hooks are in place. + * + * @since 4.3 + */ + do_action( 'tribe_common_loaded' ); + + /** + * Runs to register loaded plugins + * + * @since 4.9 + */ + do_action( 'tribe_plugins_loaded ' ); + } + + /** + * Setup the autoloader for common files + */ + protected function init_autoloading() { + if ( ! class_exists( 'Tribe__Autoloader' ) ) { + require_once dirname( __FILE__ ) . '/Autoloader.php'; + } + + // Aliases for backwards compatibility with our Extensions and Pods. + require_once realpath( dirname( dirname( __FILE__ ) ) . '/functions/aliases.php' ); + + $autoloader = Tribe__Autoloader::instance(); + + $prefixes = [ + 'TEC\\Common\\' => dirname( __DIR__ ) . '/Common', + 'Tribe__' => __DIR__, + ]; + $autoloader->register_prefixes( $prefixes ); + + foreach ( glob( $this->plugin_path . 'src/deprecated/*.php' ) as $file ) { + $class_name = str_replace( '.php', '', basename( $file ) ); + $autoloader->register_class( $class_name, $file ); + } + + $autoloader->register_autoloader(); + } + + public function tribe_common_app_store() { + Tribe__Extension_Loader::instance(); + } + + /** + * Gets the instantiated context of this class. I.e. the object that instantiated this one. + */ + public function context() { + return $this->plugin_context; + } + + /** + * Gets the class name of the instantiated plugin context of this class. I.e. the class name of the object that instantiated this one. + */ + public function context_class() { + return $this->plugin_context_class; + } + + /** + * Initializes all libraries used/required by our singletons. + * + * @since 4.14.18 + */ + public function init_early_libraries() { + require_once $this->plugin_path . 'src/functions/editor.php'; + } + + /** + * initializes all required libraries + */ + public function init_libraries() { + require_once $this->plugin_path . 'src/functions/utils.php'; + require_once $this->plugin_path . 'src/functions/conditionals.php'; + require_once $this->plugin_path . 'src/functions/transient.php'; + require_once $this->plugin_path . 'src/functions/url.php'; + require_once $this->plugin_path . 'src/functions/query.php'; + require_once $this->plugin_path . 'src/functions/multibyte.php'; + require_once $this->plugin_path . 'src/functions/files.php'; + require_once $this->plugin_path . 'src/functions/template-tags/general.php'; + require_once $this->plugin_path . 'src/functions/template-tags/date.php'; + require_once $this->plugin_path . 'src/functions/template-tags/html.php'; + require_once $this->plugin_path . 'src/functions/template-tags/post.php'; + + Tribe__Debug::instance(); + tec_timed_option(); + + tribe( 'assets' ); + tribe( 'assets.pipeline' ); + tribe( 'settings.manager' ); + tribe( 'tracker' ); + tribe( 'plugins.api' ); + tribe( 'ajax.dropdown' ); + tribe( 'logger' ); + } + + /** + * Registers resources that can/should be enqueued + */ + public function load_assets() { + // These ones are only registered + tribe_assets( + $this, + [ + [ 'tribe-accessibility-css', 'accessibility.css' ], + [ 'tribe-query-string', 'utils/query-string.js' ], + [ 'tribe-clipboard', 'node_modules/clipboard/dist/clipboard.min.js' ], + [ 'datatables', 'vendor/datatables/datatables.js', [ 'jquery' ] ], + [ 'tribe-select2', 'vendor/tribe-selectWoo/dist/js/selectWoo.full.js', [ 'jquery' ] ], + [ 'tribe-select2-css', 'vendor/tribe-selectWoo/dist/css/selectWoo.css' ], + [ 'tribe-utils-camelcase', 'utils-camelcase.js', [ 'underscore' ] ], + [ 'tribe-moment', 'vendor/momentjs/moment.js' ], + [ 'tribe-moment-locales', 'vendor/momentjs/locale.min.js' ], + [ 'tribe-tooltipster', 'vendor/tooltipster/tooltipster.bundle.js', [ 'jquery' ] ], + [ 'tribe-tooltipster-css', 'vendor/tooltipster/tooltipster.bundle.css' ], + [ 'datatables-css', 'datatables.css' ], + [ 'tribe-datatables', 'tribe-datatables.js', [ 'datatables' ] ], + [ 'tribe-bumpdown', 'bumpdown.js', [ 'jquery', 'underscore', 'hoverIntent' ] ], + [ 'tribe-bumpdown-css', 'bumpdown.css' ], + [ 'tribe-buttonset-style', 'buttonset.css' ], + [ 'tribe-dropdowns', 'dropdowns.js', [ 'jquery', 'underscore', 'tribe-select2', 'tribe-common' ] ], + [ 'tribe-jquery-timepicker', 'vendor/jquery-tribe-timepicker/jquery.timepicker.js', [ 'jquery' ] ], + [ 'tribe-jquery-timepicker-css', 'vendor/jquery-tribe-timepicker/jquery.timepicker.css' ], + [ 'tribe-timepicker', 'timepicker.js', [ 'jquery', 'tribe-jquery-timepicker' ] ], + [ 'tribe-attrchange', 'vendor/attrchange/js/attrchange.js' ], + [ 'tec-ky-module', 'vendor/ky/ky.js', [], null, [ 'module' => true ] ], + [ 'tec-ky', 'vendor/ky/tec-ky.js', [ 'tec-ky-module' ], null, [ 'module' => true ] ], + ] + ); + + tribe_assets( + $this, + [ + [ 'tec-variables-skeleton', 'variables-skeleton.css', ], + [ 'tribe-common-skeleton-style', 'common-skeleton.css', [ 'tec-variables-skeleton' ] ], + [ 'tec-variables-full', 'variables-full.css', [ 'tec-variables-skeleton' ] ], + [ 'tribe-common-full-style', 'common-full.css', [ 'tec-variables-full', 'tribe-common-skeleton-style' ] ], + ], + null + ); + + // These ones will be enqueued on `admin_enqueue_scripts` if the conditional method on filter is met + tribe_assets( + $this, + [ + [ 'tribe-ui', 'tribe-ui.css', [ 'tec-variables-full' ] ], + [ 'tribe-buttonset', 'buttonset.js', [ 'jquery', 'underscore' ] ], + [ 'tribe-common-admin', 'tribe-common-admin.css', [ 'tec-variables-skeleton', 'tec-variables-full', 'tribe-dependency-style', 'tribe-bumpdown-css', 'tribe-buttonset-style', 'tribe-select2-css' ] ], + [ 'tribe-validation', 'validation.js', [ 'jquery', 'underscore', 'tribe-common', 'tribe-utils-camelcase', 'tribe-tooltipster' ] ], + [ 'tribe-validation-style', 'validation.css', [ 'tec-variables-full', 'tribe-tooltipster-css' ] ], + [ 'tribe-dependency', 'dependency.js', [ 'jquery', 'underscore', 'tribe-common' ] ], + [ 'tribe-dependency-style', 'dependency.css', [ 'tribe-select2-css' ] ], + [ 'tribe-pue-notices', 'pue-notices.js', [ 'jquery' ] ], + [ 'tribe-datepicker', 'datepicker.css' ], + ], + 'admin_enqueue_scripts', + [ + 'conditionals' => [ $this, 'should_load_common_admin_css' ], + 'priority' => 5, + ] + ); + + tribe_asset( + $this, + 'tribe-common', + 'tribe-common.js', + [], + 'admin_enqueue_scripts', + [ + 'priority' => 0, + ] + ); + + tribe_asset( + $this, + 'tribe-admin-url-fragment-scroll', + 'admin/url-fragment-scroll.js', + [ 'tribe-common' ], + 'admin_enqueue_scripts', + [ + 'conditionals' => [ $this, 'should_load_common_admin_css' ], + 'priority' => 5, + ] + ); + + tribe_asset( + $this, + 'tec-admin-settings-image-field', + 'admin-image-field.js', + [ 'jquery' ], + 'in_admin_footer', + [ + 'conditionals' => [ tribe( Settings::class ), 'should_load_image_field_assets' ] + ] + ); + + // Register the asset for Customizer controls. + tribe_asset( + $this, + 'tribe-customizer-controls', + 'customizer-controls.css', + [ 'tec-variables-full' ], + 'customize_controls_print_styles' + ); + + // Register the asset for color fields. + tribe_asset( + $this, + 'tec-settings-color-field', + 'admin-color-field.js', + [ 'jquery', 'wp-color-picker' ], + 'admin_footer', + [ + 'conditionals' => [ tribe( Settings::class ), 'should_load_color_field_assets' ] + ] + ); + + tribe( Tribe__Admin__Help_Page::class )->register_assets(); + } + + /** + * Ensure that the customizer styles get the variables they need. + * + * @since 4.14.13 + */ + public function load_tec_variables() { + tribe_asset_enqueue( 'tec-variables-skeleton' ); + tribe_asset_enqueue( 'tec-variables-full' ); + } + + /** + * Load Common's text domain, then fire the hook for other plugins to do the same. + * + * Make sure this fires on 'init', per WordPress best practices. + * + * @since 4.12.0 + * + * @return bool + */ + public function hook_load_text_domain() { + $loaded = $this->load_text_domain( + 'tribe-common', + basename( dirname( __FILE__, 4 ) ) . '/common/lang/' + ); + + /** + * After attempting (hopefully successfully) to load Common's text domain. + * + * Load other plugin text domains on this hook, but make sure they're setup on this hook prior to 'init'. + * + * @since 4.12.0 + * + * @param bool $loaded Whether or not Common's text domain was loaded. + * + * @return bool + */ + do_action( 'tribe_load_text_domains', $loaded ); + + return $loaded; + } + + /** + * Load All localization data create by `asset.data` + * + * @since 4.7 + * + * @return void + */ + public function load_localize_data() { + $datepicker_months = array_values( Tribe__Date_Utils::get_localized_months_full() ); + + tribe( 'asset.data' )->add( 'tribe_l10n_datatables', [ + 'aria' => [ + 'sort_ascending' => __( ': activate to sort column ascending', 'tribe-common' ), + 'sort_descending' => __( ': activate to sort column descending', 'tribe-common' ), + ], + 'length_menu' => __( 'Show _MENU_ entries', 'tribe-common' ), + 'empty_table' => __( 'No data available in table', 'tribe-common' ), + 'info' => __( 'Showing _START_ to _END_ of _TOTAL_ entries', 'tribe-common' ), + 'info_empty' => __( 'Showing 0 to 0 of 0 entries', 'tribe-common' ), + 'info_filtered' => __( '(filtered from _MAX_ total entries)', 'tribe-common' ), + 'zero_records' => __( 'No matching records found', 'tribe-common' ), + 'search' => __( 'Search:', 'tribe-common' ), + 'all_selected_text' => __( 'All items on this page were selected. ', 'tribe-common' ), + 'select_all_link' => __( 'Select all pages', 'tribe-common' ), + 'clear_selection' => __( 'Clear Selection.', 'tribe-common' ), + 'pagination' => [ + 'all' => __( 'All', 'tribe-common' ), + 'next' => __( 'Next', 'tribe-common' ), + 'previous' => __( 'Previous', 'tribe-common' ), + ], + 'select' => [ + 'rows' => [ + 0 => '', + '_' => __( ': Selected %d rows', 'tribe-common' ), + 1 => __( ': Selected 1 row', 'tribe-common' ), + ], + ], + 'datepicker' => [ + 'dayNames' => Tribe__Date_Utils::get_localized_weekdays_full(), + 'dayNamesShort' => Tribe__Date_Utils::get_localized_weekdays_short(), + 'dayNamesMin' => Tribe__Date_Utils::get_localized_weekdays_initial(), + 'monthNames' => $datepicker_months, + 'monthNamesShort' => $datepicker_months, // We deliberately use full month names here, + 'monthNamesMin' => array_values( Tribe__Date_Utils::get_localized_months_short() ), + 'nextText' => esc_html__( 'Next', 'tribe-common' ), + 'prevText' => esc_html__( 'Prev', 'tribe-common' ), + 'currentText' => esc_html__( 'Today', 'tribe-common' ), + 'closeText' => esc_html__( 'Done', 'tribe-common' ), + 'today' => esc_html__( 'Today', 'tribe-common' ), + 'clear' => esc_html__( 'Clear', 'tribe-common' ), + ], + ] ); + } + + /** + * Adds core hooks + */ + public function add_hooks() { + add_action( 'plugins_loaded', [ 'Tribe__App_Shop', 'instance' ] ); + add_action( 'plugins_loaded', [ $this, 'tribe_plugins_loaded' ], PHP_INT_MAX ); + + // Register for the assets to be available everywhere + add_action( 'tribe_common_loaded', [ $this, 'load_assets' ], 1 ); + add_action( 'init', [ $this, 'hook_load_text_domain' ] ); + add_action( 'switch_locale', [ $this, 'hook_load_text_domain' ] ); + add_action( 'restore_previous_locale', [ $this, 'hook_load_text_domain' ] ); + add_action( 'init', [ $this, 'load_localize_data' ] ); + add_action( 'plugins_loaded', [ 'Tribe__Admin__Notices', 'instance' ], 1 ); + add_action( 'admin_enqueue_scripts', [ $this, 'store_admin_notices' ] ); + + add_filter( 'body_class', [ $this, 'add_js_class' ] ); + add_action( 'wp_footer', [ $this, 'toggle_js_class' ] ); + } + + /** + * Adds `tribe-no-js` class to all pages when common is active. + * + * @since 4.3.4 + * + * @param array|string $classes Previous classes on body. + * + * @return array All classes that will be printed on ``. + */ + public function add_js_class( $classes = [] ) { + if ( ! is_array( $classes ) ) { + $classes = explode( ' ', $classes ); + } + + $classes[] = 'tribe-no-js'; + + return array_filter( array_unique( $classes ) ); + } + + /** + * Removes `tribe-no-js` and replaces with `tribe-js` when the Javascript of the page is enabled. + * + * @since 4.3.4 + * + * @return void This method only prints HTML to the screen no return. + */ + public function toggle_js_class() { + ?> + + is_post_type_screen(); + + // Are we on the Plugins page? + $is_plugins = $helper->is_screen( 'plugins' ); + + // Are we on the Widgets page? + $is_widgets = $helper->is_screen( 'widgets' ); + + // Are we viewing a generic Tribe screen? + // Includes: Events > Settings, Events > Help, App Shop page, and more. + $is_tribe_screen = $helper->is_screen(); + + return $is_post_type || $is_plugins || $is_widgets || $is_tribe_screen; + } + + /** + * A Helper method to load text domain + * First it tries to load the wp-content/languages translation then if falls to the try to load $dir language files. + * + * @since 4.0.1 Introduced. + * @since 4.2 Included $domain and $dir params. + * + * @param string $domain The text domain that will be loaded. + * @param string|false $dir What directory should be used to try to load if the default doesn't work. + * + * @return bool If it was able to load the text domain. + */ + public function load_text_domain( $domain, $dir = false ) { + // Added safety just in case this runs twice... + if ( is_textdomain_loaded( $domain ) && ! $GLOBALS['l10n'][ $domain ] instanceof NOOP_Translations ) { + return true; + } + + $locale = get_locale(); + $plugin_rel_path = WP_LANG_DIR . '/plugins/'; + + /** + * Allows users to filter the file location for a given text domain.. + * Be careful when using this filter, it will apply across the whole plugin suite. + * + * @param string $plugin_rel_path The relative path for the language files. + * @param string $domain Which plugin domain we are trying to load. + * @param string $locale Which Language we will load. + * @param string|bool $dir If there was a custom directory passed on the method call. + */ + $plugin_rel_path = apply_filters( 'tribe_load_text_domain', $plugin_rel_path, $domain, $locale, $dir ); + + $loaded = load_plugin_textdomain( $domain, false, $plugin_rel_path ); + + if ( $dir !== false && ! $loaded ) { + return load_plugin_textdomain( $domain, false, $dir ); + } + + return $loaded; + } + + /** + * Returns the post types registered by Tribe plugins. + * + * @since 4.0.1 Introduced the method. + * + * @return array Slugs for all Post Types registered. + */ + public static function get_post_types() { + /** + * We default the post type array to empty in tribe-common. Plugins like TEC add to it. + * + * @since 4.0.1 + * + * @param array Slugs for all Post Types registered. + */ + return apply_filters( 'tribe_post_types', [] ); + } + + /** + * Insert an array after a specified key within another array. + * + * @param $key + * @param $source_array + * @param $insert_array + * + * @return array + */ + public static function array_insert_after_key( $key, $source_array, $insert_array ) { + if ( array_key_exists( $key, $source_array ) ) { + $position = array_search( $key, array_keys( $source_array ) ) + 1; + $source_array = array_slice( $source_array, 0, $position, true ) + $insert_array + array_slice( $source_array, $position, null, true ); + } else { + // If no key is found, then add it to the end of the array. + $source_array += $insert_array; + } + + return $source_array; + } + + /** + * Insert an array immediately before a specified key within another array. + * + * @param $key + * @param $source_array + * @param $insert_array + * + * @return array + */ + public static function array_insert_before_key( $key, $source_array, $insert_array ) { + if ( array_key_exists( $key, $source_array ) ) { + $position = array_search( $key, array_keys( $source_array ) ); + $source_array = array_slice( $source_array, 0, $position, true ) + $insert_array + array_slice( $source_array, $position, null, true ); + } else { + // If no key is found, then add it to the end of the array. + $source_array += $insert_array; + } + + return $source_array; + } + + /** + * Get the Post ID from a passed integer, a passed WP_Post object, or the current post. + * + * Helper function for getting Post ID. Accepts `null` or a Post ID. If attempting + * to detect $post object and it is not found, returns `false` to avoid a PHP Notice. + * + * @param null|int|WP_Post $candidate Post ID or object, `null` to get the ID of the global post object. + * + * @return int|false The ID of the passed or global post, `false` if the passes object is not a post or the global + * post is not set. + */ + public static function post_id_helper( $candidate = null ) { + $candidate_post = get_post( $candidate ); + + $post_id = $candidate_post instanceof WP_Post ? $candidate_post->ID : false; + + /** + * Allows modifying the post ID in order to allow redirection of values before any other additional + * WordPress action is called from on result. + * + * @since 4.12.13 + * + * @param int|bool $post_id The ID of the post if the $candidate value is a valid WP_Post Object, `false` otherwise. + * @param null|int|WP_Post $candidate Post ID or object, `null` to get the ID of the global post object. + * + * @return int|bool The ID of the post. + */ + return apply_filters( 'tribe_post_id', $post_id, $candidate ); + } + + /** + * Adds a hook + * + */ + public function store_admin_notices( $page ) { + if ( 'plugins.php' !== $page ) { + return; + } + $notices = apply_filters( 'tribe_plugin_notices', [] ); + wp_localize_script( 'tribe-pue-notices', 'tribe_plugin_notices', $notices ); + } + + /** + * Runs tribe_plugins_loaded action, should be hooked to the end of plugins_loaded + */ + public function tribe_plugins_loaded() { + tribe( 'cache' ); + tribe_singleton( 'feature-detection', 'Tribe__Feature_Detection' ); + tribe_register_provider( 'Tribe__Service_Providers__Processes' ); + + tribe( \Tribe\Admin\Notice\WP_Version::class ); + tribe( \Tribe\Admin\Troubleshooting::class ); + + /** + * Runs after all plugins including Tribe ones have loaded + * + * @since 4.3 + */ + do_action( 'tribe_plugins_loaded' ); + } + + /** + * Registers the slug bound to the implementations in the container. + * + * @since 4.4 + * + * @return void Implementation of components loader doesn't return anything. + */ + public function bind_implementations() { + tribe_singleton( \TEC\Common\Storage\Timed_Option::class, \TEC\Common\Storage\Timed_Option::class ); + tribe_singleton( 'settings.manager', 'Tribe__Settings_Manager' ); + tribe_singleton( 'settings', 'Tribe__Settings', [ 'hook' ] ); + tribe_singleton( 'ajax.dropdown', 'Tribe__Ajax__Dropdown', [ 'hook' ] ); + tribe_singleton( 'assets', 'Tribe__Assets' ); + tribe_singleton( 'assets.pipeline', 'Tribe__Assets_Pipeline', [ 'hook' ] ); + tribe_singleton( 'asset.data', 'Tribe__Asset__Data', [ 'hook' ] ); + tribe_singleton( 'admin.helpers', 'Tribe__Admin__Helpers' ); + tribe_singleton( 'tracker', 'Tribe__Tracker', [ 'hook' ] ); + tribe_singleton( 'chunker', 'Tribe__Meta__Chunker', [ 'set_post_types', 'hook' ] ); + tribe_singleton( 'cache', 'Tribe__Cache', [ 'hook' ] ); + tribe_singleton( 'languages.locations', 'Tribe__Languages__Locations' ); + tribe_singleton( 'plugins.api', new Tribe__Plugins_API ); + tribe_singleton( 'logger', 'Tribe__Log' ); + tribe_singleton( 'cost-utils', [ 'Tribe__Cost_Utils', 'instance' ] ); + tribe_singleton( 'post-duplicate.strategy-factory', 'Tribe__Duplicate__Strategy_Factory' ); + tribe_singleton( 'post-duplicate', 'Tribe__Duplicate__Post' ); + tribe_singleton( 'context', 'Tribe__Context' ); + tribe_singleton( 'post-transient', 'Tribe__Post_Transient' ); + tribe_singleton( 'db', 'Tribe__Db' ); + tribe_singleton( 'db-lock', DB_Lock::class ); + tribe_singleton( 'customizer', 'Tribe__Customizer' ); + tribe_singleton( Tribe__Dependency::class, Tribe__Dependency::class ); + tribe_singleton( \Tribe\Admin\Troubleshooting::class, \Tribe\Admin\Troubleshooting::class, [ 'hook' ] ); + + tribe_singleton( 'callback', 'Tribe__Utils__Callback' ); + tribe_singleton( Tribe__Admin__Help_Page::class, Tribe__Admin__Help_Page::class, [ 'hook' ] ); + tribe_singleton( 'admin.pages', '\Tribe\Admin\Pages' ); + tribe_singleton( 'admin.activation.page', 'Tribe__Admin__Activation_Page' ); + tribe_singleton( Translations_Loader::class, Translations_Loader::class ); + + tribe_register_provider( Tribe__Editor__Provider::class ); + tribe_register_provider( Tribe__Service_Providers__Debug_Bar::class ); + tribe_register_provider( Tribe__Service_Providers__Promoter::class ); + tribe_register_provider( Tribe\Service_Providers\Tooltip::class ); + tribe_register_provider( Tribe\Service_Providers\Dialog::class ); + tribe_register_provider( Tribe\Service_Providers\PUE::class ); + tribe_register_provider( Tribe\Service_Providers\Shortcodes::class ); + tribe_register_provider( Tribe\Service_Providers\Body_Classes::class ); + tribe_register_provider( Tribe\Log\Service_Provider::class ); + tribe_register_provider( Tribe\Service_Providers\Crons::class ); + tribe_register_provider( Tribe\Service_Providers\Widgets::class ); + tribe_register_provider( Tribe\Service_Providers\Onboarding::class ); + tribe_register_provider( Tribe\Admin\Notice\Service_Provider::class ); + tribe_register_provider( Tribe\Admin\Conditional_Content\Service_Provider::class ); + tribe_register_provider( Libraries\Provider::class ); + + // Load the new third-party integration system. + tribe_register_provider( TEC\Common\Integrations\Provider::class ); + tribe_register_provider( TEC\Common\Site_Health\Provider::class ); + tribe_register_provider( TEC\Common\Telemetry\Provider::class ); + } + + /** + * Create the Promoter connector singleton early to allow hook into the filters early. + * + * Add a filter to determine_current_user during the setup of common library. + * + * @since 4.9.20 + * + * @return void Internal method without any return. + */ + public function promoter_connector() { + tribe_singleton( 'promoter.connector', 'Tribe__Promoter__Connector' ); + + add_filter( + 'determine_current_user', + tribe_callback( 'promoter.connector', 'authenticate_user_with_connector' ) + ); + } + + /** + * Get the common library's parent plugin file path. + * + * @since 5.1.0 + * + * @return string The path to the parent plugin file. + */ + public function get_parent_plugin_file_path(): string { + /** + * Allows plugins to hook in and declare themselves the parent of common. + * Used by Telemetry to determine which plugin to associate with. + * + * @since 5.1.0 + * + * @var string $parent_plugin_file The current path to the parent plugin file. + * + */ + $paths = apply_filters( 'tec_common_parent_plugin_file', [] ); + + foreach( $paths as $path ) { + $path = wp_normalize_path( $path ); + $test_path = str_ireplace( '/common', '', $this->parent_plugin_dir ); + + if ( stripos( $path, $test_path ) ) { + return $path; + } + } + + return ''; + } + + + /************************ + * * + * Deprecated Methods * + * * + ************************/ + // @codingStandardsIgnoreStart + + /** + * Helper function to indicate whether the current execution context is AJAX + * + * This method exists to allow us test code that behaves differently depending on the execution + * context. + * + * @since 4.0 + * + * @todo Add warning with '_deprecated_function' + * + * @param bool $doing_ajax An injectable status to override the `DOING_AJAX` check. + * + * @deprecated 4.7.12 + * + * @return boolean + */ + public function doing_ajax( $doing_ajax = null ) { + return tribe( 'context' )->doing_ajax( $doing_ajax ); + } + + /** + * Manages PUE license key notifications. + * + * It's important for the sanity of our users that only one instance of this object + * be created. However, multiple Tribe__Main objects can and will be instantiated, hence + * why for the time being we need to make this field static. + * + * @see https://central.tri.be/issues/65755 + * + * @deprecated 4.7.10 + * + * @return Tribe__PUE__Notices + */ + public function pue_notices() { + return tribe( 'pue.notices' ); + } + + /** + * + * @deprecated 4.7.10 + * + * @return Tribe__Log + */ + public function log() { + return tribe( 'logger' ); + } + // @codingStandardsIgnoreEnd +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Meta/Chunker.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Meta/Chunker.php new file mode 100644 index 000000000..f24018d64 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Meta/Chunker.php @@ -0,0 +1,965 @@ +register_for_chunking( $post_id, 'my_meta_key' ); + * + * // ... some code later... + * + * // data will be transparently chunked if needed... + * update_meta( $post_id, 'my_meta_key', $some_looooooooooong_string ); + * + * // ...and glued back together when reading + * get_post_meta( $post_id, 'my_meta_key', true ); + * + * By default the Chunker supports the `post` post type only, filter the `tribe_meta_chunker_post_types` to add yours: + * + * add_filter( 'tribe_meta_chunker_post_types`, 'my_chunkable_post_types' ); + * function my_chunkable_post_types( $post_types ) { + * $post_types[] = 'book'; + * + * return $post_types; + * } + * + * or filter the `tribe_meta_chunker_post_types` filter. + */ +class Tribe__Meta__Chunker { + /** + * @var string The key used to cache the class results in the WordPress object cache. + */ + protected $cache_group = 'post_meta'; + + /** + * @var string + */ + protected $chunked_keys_option_name = '_tribe_chunker_chunked_keys'; + + /** + * @var array The cache that will store chunks to avoid middleware operations from fetching the database. + */ + protected $chunks_cache = null; + + /** + * @var array The cache that will store the IDs of the posts that have at least one meta key registered + * for chunking. + */ + protected $post_ids_cache = null; + + /** + * @var string The separator that's used to mark the start of each chunk. + */ + protected $chunk_separator = '{{{TCSEP}}}'; + + /** + * @var array The post types supported by the Chunker. + */ + protected $post_types = []; + + /** + * @var int The filter priority at which Chunker will operate on meta CRUD operations. + */ + protected $filter_priority = - 1; + + /** + * @var string The meta key prefix applied ot any Chunker related post meta. + */ + protected $meta_key_prefix = '_tribe_chunker_'; + + /** + * @var int The largest size allowed by the Chunker. + */ + protected $max_chunk_size; + + /** + * Hooks the chunker on metadata operations for each supported post types. + * + * When changing post types unhook and rehook it like: + * + * $chunker = tribe( 'chunker' ); + * $chunker->set_post_types( array_merge( $my_post_types, $chunker->get_post_types() ); + * $chunker->unhook(); + * $chunker->hook(); + */ + public function hook() { + if ( empty( $this->post_types ) ) { + return; + } + + add_filter( 'update_post_metadata', [ $this, 'filter_update_metadata' ], $this->filter_priority, 4 ); + add_filter( 'delete_post_metadata', [ $this, 'filter_delete_metadata' ], $this->filter_priority, 3 ); + add_filter( 'add_post_metadata', [ $this, 'filter_add_metadata' ], $this->filter_priority, 4 ); + add_filter( 'get_post_metadata', [ $this, 'filter_get_metadata' ], $this->filter_priority, 4 ); + add_action( 'deleted_post', [ $this, 'remove_post_entry' ] ); + } + + /** + * Primes the chunked cache. + * + * This will just fetch the keys for the supported post types, not the values. + * + * @param bool $force Whether the cache should be reprimed even if already primed. + */ + public function prime_chunks_cache( $force = false ) { + if ( false === $force && null !== $this->chunks_cache ) { + return; + } + + $this->chunks_cache = []; + $this->post_ids_cache = []; + + $chunked_keys = get_option( $this->chunked_keys_option_name ); + + if ( empty( $chunked_keys ) ) { + return; + } + + foreach ( $chunked_keys as $post_id => $keys ) { + if ( ! is_array( $keys ) || empty( $keys ) ) { + continue; + } + $this->post_ids_cache[] = $post_id; + foreach ( $keys as $key ) { + $this->chunks_cache[ $this->get_key( $post_id, $key ) ] = null; + } + } + } + + /** + * Gets the key used to identify a post ID and meta key in the chunks cache. + * + * @param int $post_id + * @param string $meta_key + * @return string + */ + public function get_key( $post_id, $meta_key ) { + return "{$post_id}::{$meta_key}"; + } + + /** + * Register a post ID and meta key to be chunked if needed. + * + * @param int $post_id + * @param string $meta_key + * + * @return bool `false` if the post type is not supported, `true` otherwise + */ + public function register_chunking_for( $post_id, $meta_key ) { + if ( ! $this->is_supported_post_type( $post_id ) ) { + return false; + } + + $this->tag_as_chunkable( $post_id, $meta_key ); + + return true; + } + + /** + * Whether a post type is supported or not. + * + * @param int $object_id + * + * @return bool + */ + protected function is_supported_post_type( $object_id ) { + $post = get_post( $object_id ); + if ( empty( $post ) || ! in_array( $post->post_type, $this->post_types ) ) { + return false; + } + + return true; + } + + /** + * Tags a post ID and meta key couple as "chunkable" if needed. + * + * @param $post_id + * @param $meta_key + */ + protected function tag_as_chunkable( $post_id, $meta_key ) { + $key = $this->get_key( $post_id, $meta_key ); + + $this->prime_chunks_cache(); + + if ( ! array_key_exists( $key, $this->chunks_cache ) ) { + $this->chunks_cache[ $key ] = null; + } + + $this->post_ids_cache[] = $post_id; + + $option = (array) get_option( $this->chunked_keys_option_name ); + + if ( ! isset( $option[ $post_id ] ) ) { + $option[ $post_id ] = [ $meta_key ]; + } else { + $option[ $post_id ][] = $meta_key; + } + + update_option( $this->chunked_keys_option_name, array_filter( $option ), true ); + } + + /** + * Returns the meta key used to indicate if a meta key for a post is marked as chunkable. + * + * @param string $meta_key + * + * @return string + */ + public function get_chunkable_meta_key( $meta_key ) { + return $this->meta_key_prefix . $meta_key; + } + + /** + * Filters the add operations. + * + * Due to how the system works no more than one chunked entry can be stored. + * + * @param mixed $check + * @param int $object_id + * @param string $meta_key + * @param string $meta_value + * + * @see add_metadata() + * + * @return bool + */ + public function filter_add_metadata( $check, $object_id, $meta_key, $meta_value ) { + return $this->filter_update_metadata( $check, $object_id, $meta_key, $meta_value ); + } + + /** + * Filters the updated operations. + * + * @param mixed $check + * @param int $object_id + * @param string $meta_key + * @param string $meta_value + * + * @see update_metadata() + * + * @return bool + */ + public function filter_update_metadata( $check, $object_id, $meta_key, $meta_value ) { + if ( ! $this->applies( $object_id, $meta_key ) ) { + return $check; + } + + /** + * Filters the chunked meta update operation. + * + * Returning a non null value here will make the function return that value immediately. + * + * @param mixed $updated + * @param int $object_id The post ID + * @param string $meta_key + * @param mixed $meta_value + * + * @since 4.5.6 + */ + $updated = apply_filters( 'tribe_meta_chunker_update_meta', null, $object_id, $meta_key, $meta_value ); + if ( null !== $updated ) { + return $updated; + } + + $this->delete_chunks( $object_id, $meta_key ); + $this->remove_checksum_for( $object_id, $meta_key ); + wp_cache_delete( $object_id, $this->cache_group ); + + if ( $this->should_be_chunked( $object_id, $meta_key, $meta_value ) ) { + $this->insert_chunks( $object_id, $meta_key ); + + return true; + } else { + $this->cache_delete( $object_id, $meta_key ); + $this->insert_meta( $object_id, $meta_key, $meta_value ); + + return true; + } + + return $check; + } + + /** + * Whether the chunker should operate on this post ID and meta key couple or not. + * + * @param int $object_id + * @param string $meta_key + * + * @return bool + */ + protected function applies( $object_id, $meta_key ) { + $applies = ! $this->is_chunker_logic_meta_key( $meta_key ) + && $this->is_supported_post_type( $object_id ) + && $this->is_chunkable( $object_id, $meta_key ); + + /** + * Filters whether the meta chunker will apply to a post ID and meta key or not. + * + * The `$meta_key` parameter might be empty. + * + * @param bool $applies + * @param int $object_id + * @param string $meta_key + * + * @since 4.5.6 + */ + return apply_filters( 'tribe_meta_chunker_applies', $applies, $object_id, $meta_key ); + } + + /** + * Whether the meta key is one used by the chunker to keep track of its operations or not. + * + * @param string $meta_key + * + * @return bool + */ + protected function is_chunker_logic_meta_key( $meta_key ) { + if ( ! is_string( $meta_key ) ) { + return false; + } + + return 0 === strpos( $meta_key, $this->meta_key_prefix ); + } + + /** + * Whether a post ID and meta key couple is registered as chunkable or not. + * + * If no meta key is passed then the function will check if there is at least + * one meta key registered for chunking for the specified post ID. + * + * @param int $post_id + * @param string $meta_key + * + * @return bool + */ + public function is_chunkable( $post_id, $meta_key = null ) { + $this->prime_chunks_cache(); + + return ! empty( $meta_key ) + ? array_key_exists( $this->get_key( $post_id, $meta_key ), $this->chunks_cache ) + : in_array( $post_id, $this->post_ids_cache ); + } + + /** + * Deletes all the chunks for a post ID and meta key couple. + * + * @param int $object_id + * @param string $meta_key + */ + protected function delete_chunks( $object_id, $meta_key ) { + /** @var wpdb $wpdb */ + global $wpdb; + $chunk_meta_key = $this->get_chunk_meta_key( $meta_key ); + $delete = "DELETE FROM {$wpdb->postmeta} WHERE (meta_key = %s OR meta_key = %s) AND post_id = %d"; + $wpdb->query( $wpdb->prepare( $delete, $chunk_meta_key, $meta_key, $object_id ) ); + } + + /** + * Returns the meta key used to indicate a chunk for a meta key. + * + * @param string $meta_key + * + * @return string + */ + public function get_chunk_meta_key( $meta_key ) { + return $this->get_chunkable_meta_key( $meta_key ) . '_chunk'; + } + + /** + * Removes the checksum used to verify the integrity of the chunked values. + * + * @param int $object_id + * @param string $meta_key + */ + protected function remove_checksum_for( $object_id, $meta_key ) { + /** @var wpdb $wpdb */ + global $wpdb; + $data = [ + 'post_id' => $object_id, + 'meta_key' => $this->get_checksum_key( $meta_key ), + ]; + $wpdb->delete( $wpdb->postmeta, $data ); + } + + /** + * Returns the meta_key used to store the chunked meta checksum for a specified meta key. + * + * @param string $meta_key + * + * @return string + */ + public function get_checksum_key( $meta_key ) { + return $this->meta_key_prefix . $meta_key . '_checksum'; + } + + /** + * Whether a value should be chunked or not. + * + * @param int $post_id + * @param string $meta_key + * @param mixed $meta_value + * + * @return bool + */ + public function should_be_chunked( $post_id, $meta_key, $meta_value ) { + $should_be_chunked = false; + + $max_allowed_packet = $this->get_max_chunk_size(); + $serialized = maybe_serialize( $meta_value ); + $byte_size = $this->get_byte_size( $serialized ); + + $this->prime_chunks_cache(); + + // we use .8 and not 1 to allow for MySQL instructions to use 20% of the string size + if ( $byte_size > .8 * $max_allowed_packet ) { + $chunk_size = ceil( $max_allowed_packet * 0.75 ); + $key = $this->get_key( $post_id, $meta_key ); + $this->chunks_cache[ $key ] = $this->prefix_chunks( $this->chunk( $serialized, $chunk_size ) ); + $should_be_chunked = true; + } + + return $should_be_chunked; + } + + /** + * Returns the max chunk size in bytes. + * + * @return array|int|null|object + */ + public function get_max_chunk_size() { + if ( ! empty( $this->max_chunk_size ) ) { + return $this->max_chunk_size; + } + + $max_size = tribe( 'db' )->get_max_allowed_packet_size(); + + /** + * Filters the max size of the of the chunks in bytes. + * + * @param int $max_size By default the `max_allowed_packet` from the database. + */ + $this->max_chunk_size = apply_filters( 'tribe_meta_chunker_max_size', $max_size ); + + return $max_size; + } + + /** + * Sets the max chunk size. + * + * @param int $max_chunk_size The max chunk size in bytes. + */ + public function set_max_chunk_size( $max_chunk_size ) { + $this->max_chunk_size = $max_chunk_size; + } + + /** + * Gets the size in bytes of something. + * + * @param mixed $data + * + * @return int + */ + public function get_byte_size( $data ) { + return strlen( utf8_decode( maybe_serialize( $data ) ) ); + } + + /** + * Prefixes each chunk with a sequence number. + * + * @param array $chunks + * + * @return array An array of chunks each prefixed with sequence number. + */ + protected function prefix_chunks( array $chunks ) { + $count = count( $chunks ); + $prefixed = []; + for ( $i = 0; $i < $count; $i ++ ) { + $prefixed[] = "{$i}{$this->chunk_separator}{$chunks[$i]}"; + } + + return $prefixed; + } + + /** + * Chunks a string. + * + * The chunks are not prefixed! + * + * @param string $serialized + * @param int $chunk_size + * + * @return array An array of unprefixed chunks. + */ + protected function chunk( $serialized, $chunk_size ) { + $sep = $this->chunk_separator; + $chunks = array_filter( explode( $sep, chunk_split( $serialized, $chunk_size, $sep ) ) ); + + return $chunks; + } + + /** + * Inserts the chunks for a post ID and meta key couple in the database. + * + * The chunks are read from the array cache. + * + * @param int $object_id + * @param string $meta_key + */ + protected function insert_chunks( $object_id, $meta_key ) { + /** @var wpdb $wpdb */ + global $wpdb; + + $this->prime_chunks_cache(); + + $key = $this->get_key( $object_id, $meta_key ); + $chunks = $this->chunks_cache[ $key ]; + $chunk_meta_key = $this->get_chunk_meta_key( $meta_key ); + $this->insert_meta( $object_id, $meta_key, $chunks[0] ); + foreach ( $chunks as $chunk ) { + $wpdb->insert( $wpdb->postmeta, [ + 'post_id' => $object_id, + 'meta_key' => $chunk_meta_key, + 'meta_value' => $chunk, + ] ); + } + + $glued = $this->glue_chunks( $this->get_chunks_for( $object_id, $meta_key ) ); + $checksum_key = $this->get_checksum_key( $meta_key ); + $wpdb->delete( $wpdb->postmeta, [ 'post_id' => $object_id, 'meta_key' => $checksum_key ] ); + $wpdb->insert( $wpdb->postmeta, [ + 'post_id' => $object_id, + 'meta_key' => $checksum_key, + 'meta_value' => md5( $glued ), + ] ); + } + + /** + * Inserts a meta value in the database. + * + * Convenience method to avoid infinite loop in hooks. + * + * @param int $object_id + * @param string $meta_key + * @param mixed $meta_value + */ + protected function insert_meta( $object_id, $meta_key, $meta_value ) { + /** @var wpdb $wpdb */ + global $wpdb; + $data = [ + 'post_id' => $object_id, + 'meta_key' => $meta_key, + 'meta_value' => maybe_serialize( $meta_value ), + ]; + $wpdb->insert( $wpdb->postmeta, $data ); + } + + /** + * Glues the provided chunks. + * + * This method is sequence aware and should be used with what the `get_chunks_for` method returns. + * + * @param array $chunks + * + * @return string + * + * @see Tribe__Meta__Chunker::get_chunks_for() + */ + public function glue_chunks( array $chunks ) { + $ordered_chunks = []; + foreach ( $chunks as $chunk ) { + preg_match( '/(\\d+)' . preg_quote( $this->chunk_separator ) . '(.*)/', $chunk, $matches ); + $ordered_chunks[ $matches[1] ] = $matches[2]; + } + ksort( $ordered_chunks ); + + return implode( '', array_values( $ordered_chunks ) ); + } + + /** + * Returns the chunks stored in the database for a post ID and meta key couple. + * + * The chunks are returned as they are with prefix. + * + * @param int $object_id + * @param string $meta_key + * + * @return array|mixed + */ + public function get_chunks_for( $object_id, $meta_key ) { + $key = $this->get_key( $object_id, $meta_key ); + + $this->prime_chunks_cache(); + + if ( ! empty( $this->chunks_cache[ $key ] ) ) { + return $this->chunks_cache[ $key ]; + } + + /** @var wpdb $wpdb */ + global $wpdb; + + $chunk_meta_key = $this->get_chunk_meta_key( $meta_key ); + + $meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM {$wpdb->postmeta} + WHERE post_id = %d + AND meta_key = %s", + $object_id, $chunk_meta_key + ) ); + + $meta_values = []; + foreach ( $meta_ids as $meta_id ) { + $query = $wpdb->prepare( "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_id = %d", $meta_id ); + $meta_values[] = $wpdb->get_var( $query ); + } + + if ( ! empty( $meta_values ) ) { + $this->chunks_cache[ $this->get_key( $object_id, $meta_key ) ] = $meta_values; + } else { + $this->chunks_cache[ $this->get_key( $object_id, $meta_key ) ] = null; + } + + return $meta_values; + } + + /** + * Resets a post ID and meta key couple cache. + * + * @param int $object_id + * @param string $meta_key + */ + protected function cache_delete( $object_id, $meta_key ) { + $key = $this->get_key( $object_id, $meta_key ); + + $this->prime_chunks_cache(); + + if ( isset( $this->chunks_cache[ $key ] ) ) { + $this->chunks_cache[ $key ] = null; + } + } + + /** + * Filters the delete operations. + * + * @param mixed $check + * @param int $object_id + * @param string $meta_key + * + * @return bool + * + * @see delete_metadata() + */ + public function filter_delete_metadata( $check, $object_id, $meta_key ) { + if ( ! $this->applies( $object_id, $meta_key ) ) { + return $check; + } + + /** + * Filters the value returned when deleting a specific meta for a post. + * + * Returning a non null value here will make the function return that value immediately. + * + * @param mixed $deleted + * @param int $object_id The post ID + * @param string $meta_key The requested meta key + * + * @since 4.5.6 + */ + $deleted = apply_filters( 'tribe_meta_chunker_delete_meta', null, $object_id, $meta_key ); + if ( null !== $deleted ) { + return $deleted; + } + + $has_chunked_meta = $this->is_chunked( $object_id, $meta_key ); + if ( ! $has_chunked_meta ) { + return $check; + } + $this->cache_delete( $object_id, $meta_key ); + $this->delete_chunks( $object_id, $meta_key ); + wp_cache_delete( $object_id, $this->cache_group ); + + return true; + } + + /** + * Whether a post ID and meta key couple has chunked meta or not. + * + * @param int $object_id + * @param string $meta_key + * @param bool $check_db Do verify the chunking state on the database. + * + * @return mixed + */ + public function is_chunked( $object_id, $meta_key, $check_db = false ) { + $key = $this->get_key( $object_id, $meta_key ); + + $this->prime_chunks_cache(); + + $chunked_in_cache = array_key_exists( $key, $this->chunks_cache ) && is_array( $this->chunks_cache[ $key ] ); + + return $chunked_in_cache; + } + + /** + * Returns the checksum for the stored meta key to spot meta value corruption malforming. + * + * @param int $object_id + * @param string $meta_key + * + * @return string + */ + public function get_checksum_for( $object_id, $meta_key ) { + /** @var wpdb $wpdb */ + global $wpdb; + + $query = "SELECT meta_value FROM {$wpdb->postmeta} WHERE post_id = %d AND meta_key = %s"; + $checksum = $wpdb->get_var( $wpdb->prepare( $query, $object_id, $this->get_checksum_key( $meta_key ) ) ); + + return ! empty( $checksum ) ? $checksum : ''; + } + + /** + * Handles the object destruction cycle to leave no traces behind. + */ + public function __destruct() { + $this->unhook(); + } + + /** + * Unhooks the Chunker from the metadata operations. + */ + public function unhook() { + remove_filter( 'update_post_metadata', [ $this, 'filter_update_metadata' ], $this->filter_priority ); + remove_filter( 'delete_post_metadata', [ $this, 'filter_delete_metadata' ], $this->filter_priority ); + remove_filter( 'add_post_metadata', [ $this, 'filter_add_metadata' ], $this->filter_priority ); + remove_filter( 'get_post_metadata', [ $this, 'filter_get_metadata' ], $this->filter_priority ); + remove_action( 'deleted_post', [ $this, 'remove_post_entry' ] ); + } + + /** + * Filters the get operations. + * + * @param mixed $check + * @param int $object_id + * @param string $meta_key + * @param bool $single + * + * @return array|mixed + * + * @see get_metadata() + */ + public function filter_get_metadata( $check, $object_id, $meta_key, $single ) { + if ( ! $this->applies( $object_id, $meta_key ) ) { + return $check; + } + + $all_meta = wp_cache_get( $object_id, $this->cache_group ); + + if ( ! $all_meta ) { + $all_meta = $this->get_all_meta_for( $object_id ); + wp_cache_set( $object_id, $all_meta, $this->cache_group ); + } + + // getting all the meta + if ( empty( $meta_key ) ) { + return $all_meta; + } + + // why not take $single into account? See condition check on the filter to understand. + $meta_value = isset( $all_meta[ $meta_key ] ) + ? array_map( 'maybe_unserialize', $all_meta[ $meta_key ] ) + : ''; + + /** + * Filters the value returned when getting a specific meta for a post. + * + * Returning a non null value here will make the function return that value immediately. + * + * @param mixed $meta_value + * @param int $object_id The post ID + * @param string $meta_key The requested meta key + * + * @since 4.5.6 + */ + $meta_value = apply_filters( 'tribe_meta_chunker_get_meta', $meta_value, $object_id, $meta_key ); + + if ( $single ) { + return (array) $meta_value; + } else { + return ! empty( $meta_value ) ? $meta_value : ''; + } + } + + /** + * Returns all the meta for a post ID. + * + * The meta includes the chunked one but not the chunker logic meta keys. + * The return format is the same used by the `get_post_meta( $post_id )` function. + * + * @param int $object_id + * + * @return array An array containing all meta including the chunked one. + * + * @see get_post_meta() with empty `$meta_key` argument. + */ + public function get_all_meta_for( $object_id ) { + $all_meta = $this->get_all_meta( $object_id ); + + if ( empty( $all_meta ) ) { + return []; + } + + $grouped = []; + foreach ( $all_meta as $entry ) { + if ( ! isset( $grouped[ $entry['meta_key'] ] ) ) { + $grouped[ $entry['meta_key'] ] = [ $entry['meta_value'] ]; + } else { + $grouped[ $entry['meta_key'] ][] = $entry['meta_value']; + } + } + + $chunker_meta_keys = array_filter( array_keys( $grouped ), [ $this, 'is_chunker_logic_meta_key' ] ); + + if ( empty( $chunker_meta_keys ) ) { + return $grouped; + } + + $checksum_keys = array_filter( $chunker_meta_keys, [ $this, 'is_chunker_checksum_key' ] ); + + if ( empty( $checksum_keys ) ) { + return $grouped; + } + + $chunker_meta = array_intersect_key( $grouped, array_combine( $chunker_meta_keys, $chunker_meta_keys ) ); + $normal_meta = array_diff_key( $grouped, array_combine( $chunker_meta_keys, $chunker_meta_keys ) ); + foreach ( $checksum_keys as $checksum_key ) { + $normal_meta_key = str_replace( [ $this->meta_key_prefix, '_checksum' ], '', $checksum_key ); + $chunk_meta_key = $this->get_chunk_meta_key( $normal_meta_key ); + + if ( empty( $chunker_meta[ $chunk_meta_key ] ) ) { + continue; + } + + $normal_meta[ $normal_meta_key ] = [ $this->glue_chunks( $chunker_meta[ $chunk_meta_key ] ) ]; + } + + return $normal_meta; + } + + /** + * Fetches all the meta for a post. + * + * @param int $object_id + * + * @return array|null|object + */ + protected function get_all_meta( $object_id ) { + /** + * Filters the value returned when getting all the meta for a post. + * + * Returning a non null value here will make the function return that value immediately. + * + * @param mixed $all_meta + * @param int $object_id The post ID + * + * @since 4.5.6 + */ + $all_meta = apply_filters( 'tribe_meta_chunker_get_all_meta', null, $object_id ); + if ( null !== $all_meta ) { + return $all_meta; + } + + /** @var wpdb $wpdb */ + global $wpdb; + $query = $wpdb->prepare( "SELECT meta_key, meta_value FROM {$wpdb->postmeta} WHERE post_id = %d", $object_id ); + $results = $wpdb->get_results( $query, ARRAY_A ); + + return ! empty( $results ) && is_array( $results ) ? $results : []; + } + + /** + * Returns the post types supported by the chunker. + * + * @return array + */ + public function get_post_types() { + return $this->post_types; + } + + /** + * Sets the post types the Chunker should support. + * + * @param array $post_types + */ + public function set_post_types( array $post_types = null ) { + if ( null === $post_types ) { + /** + * Filters the chunk-able post types. + * + * @param array $post_types + */ + $this->post_types = apply_filters( 'tribe_meta_chunker_post_types', $this->post_types ); + + return; + } + + $this->post_types = $post_types; + } + + /** + * Returns the name of the option that stores the keys registered for chunking for each post. + * + * @return string + */ + public function get_key_option_name() { + return $this->chunked_keys_option_name; + } + + /** + * Returns the cache group used by the meta chunker. + * + * @return string + */ + public function get_cache_group() { + return $this->cache_group; + } + + /** + * Asserts that a meta key is not a chunk meta key. + * + * @param string $meta_key + * + * @return bool + */ + protected function is_chunker_checksum_key( $meta_key ) { + return preg_match( "/^{$this->meta_key_prefix}.*_checksum$/", $meta_key ); + } + + /** + * Removes the entries associated with a deleted post from the cache and the database option. + * + * @param int $post_id A post ID + */ + public function remove_post_entry( $post_id ) { + $this->prime_chunks_cache(); + + foreach ( $this->chunks_cache as $key => $value ) { + if ( 0 === strpos( $key, (string) $post_id ) ) { + unset( $this->chunks_cache[ $key ] ); + } + } + + if ( ! empty( $this->chunks_cache ) ) { + update_option( $this->chunked_keys_option_name, $this->chunks_cache ); + } else { + delete_option( $this->chunked_keys_option_name ); + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Models/Post_Types/Base.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Models/Post_Types/Base.php new file mode 100644 index 000000000..439e1faf9 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Models/Post_Types/Base.php @@ -0,0 +1,369 @@ +post = $post; + + return $instance; + } + + /** + * Returns the slug that will be prefixed to the cache key for the model. + * + * @since 4.9.18 + * + * @return string The slug that will be prefixed to the cache key for the model. + */ + abstract protected function get_cache_slug(); + + /** + * Returns the cached model properties for the specified filter, if any. + * + * @since 4.9.18 + * + * @param string $filter Type of filter to apply, used here as the stored post values might change. + * + * @return array|false An array of model properties, or `false` if not found. + */ + protected function get_cached_properties( $filter ) { + $cache_slug = $this->get_cache_slug(); + + if ( empty( $cache_slug ) ) { + return false; + } + + // Cache by post ID and filter. + $cache_key = $this->get_properties_cache_key( $filter ); + + return ( new Cache() )->get( $cache_key, Cache_Listener::TRIGGER_SAVE_POST ); + } + + /** + * Builds and returns the properties for the model. + * + * In this method child classes should also implement any caching trigger mechanism, if any. + * + * @since 4.9.18 + * + * @param string $filter The type of filter to build the properties for. + * + * @return array An array of built properties. + */ + abstract protected function build_properties( $filter ); + + /** + * Returns an array of the model properties. + * + * @since 4.9.18 + * + * @param string $filter The type of filter to get the properties for. + * @param bool $force Whether to force a rebuild of the properties or not. + * + * @return array The model properties. This value might be cached. + */ + protected function get_properties( $filter, bool $force = false ) { + $cached = ! $force ? $this->get_cached_properties( $filter ) : false; + + if ( false !== $cached ) { + // Un-serialize the pre-serialized properties now, when classes will be most likely defined. + $pre_serialized_properties = $cached[ self::PRE_SERIALIZED_PROPERTY ] ?? []; + + foreach ( $pre_serialized_properties as $key => $value ) { + try { + $cached[ $key ] = unserialize( $value, [ 'allowed_classes' => true ] ); + } catch ( \Throwable $t ) { + /* + * Deal with the case where plugin A, B, C were active when the cache was built, + * but B and C are now inactive. In this case the un-serialization will fail for + * any pre-serialized value using classes from B and C: here we gracefully ignore + * each one of those. + */ + } + } + + try { + // Allow models to apply further unserialization operations. + $cached = $this->scalar_unserialize_properties( $cached ); + + /** + * Allows filtering the properties of the post type model after they have been unserialized from the + * cache.. + * + * @since 5.0.3 + * + * @param array $cached The key-value map of the properties of the post type model. + * @param \WP_Post $post The post object of the post type model. + */ + $cached = apply_filters( "tec_model_{$this->get_cache_slug()}_read_cache_properties", $cached, $this->post ); + + // Remove the pre-serialized properties from the cached properties. + unset( $cached[ self::PRE_SERIALIZED_PROPERTY ] ); + + return $cached; + } catch ( \Throwable $t ) { + // Rebuid the properties from cache failed, move on. + } + } + + $props = $this->build_properties( $filter ); + + $cache_slug = $this->get_cache_slug(); + + /** + * Filters the array of properties that will be used to decorate the post object handled by the class. + * + * @since 4.9.18 + * + * @param array $props An associative array of all the properties that will be set on the "decorated" post + * object. + * @param \WP_Post $post The post object handled by the class. + */ + $props = apply_filters( "tribe_post_type_{$cache_slug}_properties", $props, $this->post ); + + return $props; + } + + /** + * Returns the WP_Post version of this model. + * + * @since 4.9.18 + * @since 5.0.3 Added the `$force` parameter. + * + * @param string $output The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to a WP_Post + * object,an associative array, or a numeric array, respectively. + * @param string $filter Type of filter to apply. Accepts 'raw', 'edit', 'db', or 'display' and other formats + * supported by the specific type implementation. + * @param bool $force Whether to force the post to be reloaded from the database or not. + * + * @return \WP_Post|array|null The post object version of this post type model or `null` if the post is not valid. + */ + public function to_post( $output = OBJECT, $filter = 'raw', bool $force = false ) { + $properties = $this->get_properties( $filter, $force ); + + switch ( $output ) { + case ARRAY_A: + return array_merge( (array) $this->post, $properties ); + case ARRAY_N: + return array_values( array_merge( (array) $this->post, $properties ) ); + case OBJECT: + default: + // Clone the post to avoid side effects. + $clone = clone $this->post; + // And decorate the clone with the properties. + foreach ( $properties as $key => $value ) { + $clone->{$key} = $value; + } + + return $clone; + } + } + + /** + * Returns the closure that should be used to cache the post type model when, and if, caching it is required. + * + * @since 4.9.18 + * + * @param string $filter The kind of filter applied to the model. + * @return callable The closure, or callable, that should be used to cache this model when, and if, required. + */ + protected function get_caching_callback( $filter ) { + $cache_slug = $this->get_cache_slug(); + + if ( empty( $cache_slug ) ) { + return '__return_true'; + } + + $callback = null; + + if ( wp_using_ext_object_cache() ) { + $callback = $this->get_object_cache_callback( $filter ); + } + + return $callback; + } + + /** + * Further scalarizes the properties of the post type model. + * + * Extending classes should implement this method to handle + * specific scalarization of the model properties. + * + * @since 5.0.3 + * + * @param array $properties A key-value map of the + * properties of the post type model. + * + * @return array The scalarized properties key-value map. + */ + protected function scalar_serialize_properties( array $properties ): array { + return $properties; + } + + /** + * Further un-scalarizes the properties of the post type model. + * + * Extending classes should implement this method to handle + * specific un-scalarization of the model properties. + * + * @since 5.0.3 + * + * @param array $properties A key-value map of the + * properties of the post type model. + * + * @return array The un-scalarized properties key-value map. + */ + protected function scalar_unserialize_properties( array $properties ): array { + return $properties; + } + + /** + * Returns the callback function that should be used to cache the model using object caching. + * + * If any real caching is in place , then define a function to cache this event when, and if, one of the + * lazy properties is loaded. + * Cache by post ID and filter. + * Cache could be pre-fetched: in that case only built-in PHP classes will be supported: for this reason + * object properties will be "scalarized". + * + * @since 5.0.3 + * + * @param string $cache_slug The cache slug of the post type model. + * @param string $filter The filter to cache the model for. + * + * @return \Closure The callback function that should be used to cache the model using object caching. + */ + protected function get_object_cache_callback( string $filter ): \Closure { + $cache_key = $this->get_properties_cache_key( $filter ); + $cache = new Cache(); + + return function () use ( $cache, $cache_key, $filter ) { + $properties = $this->get_properties( $filter ); + $pre_serialized_properties = []; + + try { + // Pre-serialize each object property and store it in a separate cache entry. + foreach ( $properties as $key => &$value ) { + try { + if ( is_object( $value ) && ! $value instanceof \stdClass ) { + // We might end up pre-serializing other built-in objects here, but let's play it safe. + $pre_serialized_properties[ $key ] = serialize( $value ); + } + } catch ( \Throwable $t ) { + // Null the property: an object that cannot be serialized correctly is not cacheable. + $value = null; + } + } + unset( $value ); + + // Remove the pre-serialized properties from the main cache entry. + $properties = array_diff_key( $properties, $pre_serialized_properties ); + + // Allow models to customize the pre-serialization further. + $properties = $this->scalar_serialize_properties( $properties ); + + // Add the pre-serialized properties to the main cache entry. + if ( count( $pre_serialized_properties ) ) { + $properties[ self::PRE_SERIALIZED_PROPERTY ] = $pre_serialized_properties; + } + + /** + * Allows filtering the properties of the post type model before they are cached. + * + * @since 5.0.3 + * + * @param array $properties The key-value map of the properties of the post type model. + * @param \WP_Post $post The post object of the post type model. + */ + $properties = apply_filters( "tec_model_{$this->get_cache_slug()}_put_cache_properties", $properties, $this->post ); + } catch ( \Throwable $t ) { + // If we can't serialize the properties, bail. + return; + } + + /* + * Cache without expiration, but only until a post of the types managed by The Events Calendar is + * updated or created. + */ + $cache->set( $cache_key, $properties, 0, Cache_Listener::TRIGGER_SAVE_POST ); + }; + } + + /** + * Returns the cache key to be used to cache the model properties. + * + * @since 5.0.3 + * + * @param string $filter The filter to cache the model for. + * + * @return string The cache key to be used to cache the model properties. + */ + public function get_properties_cache_key( string $filter ): string { + return $this->get_cache_slug() . '_' . $this->post->ID . '_' . $filter; + } + + /** + * Commits the model properties to cache immediately. + * + * @since 5.0.3 + * + * @param string $filter The filter to cache the model properties for. + * + * @return void The model properties are cached immediately. + */ + public function commit_to_cache( string $filter = 'raw' ): void { + $caching_callback = $this->get_object_cache_callback( $filter ); + $caching_callback(); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Models/Post_Types/Nothing.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Models/Post_Types/Nothing.php new file mode 100644 index 000000000..b238e2210 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Models/Post_Types/Nothing.php @@ -0,0 +1,44 @@ +notices[ $key ] = $notice; + + return true; + } + + /** + * Check to see if an admin notice exists + * + * @param string $key + * + * @return bool + */ + public static function is_notice( $key ) { + return ! empty( self::instance()->notices[ $key ] ) ? true : false; + } + + /** + * Remove an admin notice + * + * @param string $key + * + * @return bool + */ + public static function remove_notice( $key ) { + if ( self::is_notice( $key ) ) { + unset( self::instance()->notices[ $key ] ); + + return true; + } else { + return false; + } + } + + /** + * Get the admin notices + * + * @return array + */ + public static function get() { + return self::instance()->notices; + } + + /** + * Static Singleton Factory Method + * + * @return Tribe__Notices + */ + public static function instance() { + static $instance; + + if ( ! $instance ) { + $class_name = __CLASS__; + $instance = new $class_name; + } + + return $instance; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Hints_Abstract.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Hints_Abstract.php new file mode 100644 index 000000000..e654a2783 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Hints_Abstract.php @@ -0,0 +1,98 @@ +is_on_page() ) { + return false; + } + + // Bail if the `Times to display` is set and it was reached. + if ( + is_numeric( $this->times_to_display ) + && ( tribe( 'onboarding' )->get_views( $this->hints_id ) > $this->times_to_display ) + ) { + return false; + } + + return true; + } + + /** + * Return the hints data. + * + * @since 4.14.9 + * + * @return array The hints. + */ + abstract function hints(); + + /** + * Return the CSS classes. + * + * @since 4.14.9 + * + * @return array The CSS classes. + */ + public function css_classes() { + return []; + } + + /** + * The hints data, publicly accessible. + * + * @since 4.14.9. + * + * @param array $data An array with the hints data. + * @return array + */ + public function hints_data( array $data = [] ) { + $data['hints'] = $this->hints(); + $data['classes'] = $this->css_classes(); + + return $data; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Main.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Main.php new file mode 100644 index 000000000..3b9e77e56 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Main.php @@ -0,0 +1,223 @@ +get_registered_tours(); + + // Try to populate, if it should display. + foreach ( $registered_tours as $tour => $class_name ) { + $tour_class = new $class_name(); + + if ( $tour_class->should_display() ) { + // Increment the views when the tour is displayed. + $this->increment_views( $tour_class->tour_id ); + $data = $tour_class->tour_data( $data ); + + /** + * We're displaying the tour. + * + * @since 4.14.9. + * + * @param string $tour_id The tour id. + */ + do_action( 'tribe_onboarding_tour_display', $tour_class->tour_id ); + + break; + } + } + + /** + * Filter the data we're using to localize the tour steps. + * + * Since 4.14.9 + * + * @param array $data An array with the tour data. + * + * @return array $data An array with the tour data. + */ + $data = apply_filters( 'tribe_onboarding_tour_data', $data ); + + return $data; + } + + /** + * Get the hints. + * + * @since 4.14.9 + * + * @return array $steps The hints data. + */ + protected function hints_data() { + $data = []; + $registered_hints = $this->get_registered_hints(); + + // Try to populate, and check if it should display. + foreach ( $registered_hints as $hints => $class_name ) { + $hints_class = new $class_name(); + + if ( $hints_class->should_display() ) { + // Increment the views when the tour is displayed. + $this->increment_views( $hints_class->tour_id ); + $data = $hints_class->hints_data( $data ); + + /** + * We're displaying the hints. + * + * @since 4.14.9. + * + * @param string $hints_id The hints id. + */ + do_action( 'tribe_onboarding_hints_display', $hints_class->hints_id ); + + break; + } + } + + /** + * Filter the data we're using to localize the hints. + * + * Since 4.14.9 + * + * @param array $data An array with the hints data. + * + * @return array $data An array with the hints data. + */ + $data = apply_filters( 'tribe_onboarding_hints_data', $data ); + + return $data; + } + + /** + * Localize tour data. + * + * @since 4.14.9 + * + * @param string $hook The current admin page. + */ + public function localize_tour( $hook ) { + $data = $this->tour_data(); + + wp_localize_script( 'tec-onboarding-js', 'TribeOnboardingTour', $data ); + } + + /** + * Localize hints data. + * + * @since 4.14.9 + * + * @param string $hook The current admin page. + */ + public function localize_hints( $hook ) { + $data = $this->hints_data(); + + wp_localize_script( 'tec-onboarding-js', 'TribeOnboardingHints', $data ); + } + + /** + * Get the views for an onboarding element. + * + * @since 4.14.9 + * + * @param string $id The onboarding ID (tour or hint). + * + * @return mixed The views for the given ID. + */ + public function get_views( $id = '' ) { + + if ( empty( $id ) ) { + return; + } + + $option = tribe_get_option( 'tribe_onboarding_views', [] ); + + if ( ! isset( $option[ $id ] ) ) { + return; + } + + return intval( $option[ $id ] ); + } + + /** + * Increment views for an onboarding element. + * + * @since 4.14.9 + * + * @param string $id The onboarding ID (tour or hint). + * @return int The views count for the particular `$id`. + */ + public function increment_views( $id ) { + $option = tribe_get_option( 'tribe_onboarding_views', [] ); + $views = 0; + + if ( isset( $option[ $id ] ) ) { + $views = intval( $option[ $id ] ); + } + + // Increment views and save. + $views++; + $option[ $id ] = $views; + + tribe_update_option( 'tribe_onboarding_views', $option ); + + return $views; + } + + /** + * Get the list of tours available for handling. + * + * @since 4.14.9 + * + * @return array An associative array of shortcodes in the shape `[ => ]` + */ + public function get_registered_tours() { + $tours = []; + + /** + * Allow the registering of tours into our plugins. + * + * @since 4.14.9 + * + * @var array An associative array of tours in the shape `[ => ]`. + */ + $tours = apply_filters( 'tribe_onboarding_tours', $tours ); + + return $tours; + } + + /** + * Get the list of hints available for handling. + * + * @since 4.14.9 + * + * @return array An associative array of hints in the shape `[ => ]` + */ + public function get_registered_hints() { + $hints = []; + + /** + * Allow the registering of tours into our plugins. + * + * @since 4.14.9 + * + * @var array An associative array of hints in the shape `[ => ]`. + */ + $tours = apply_filters( 'tribe_onboarding_hints', $hints ); + + return $hints; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/README.md b/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/README.md new file mode 100644 index 000000000..d13a01a0b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/README.md @@ -0,0 +1,242 @@ +# Onboarding + +Onboarding consists of two components. Tours & Hints. The idea of this components is to enhance the onboarding experience and add some contextual help for elements. + +These components work as a wrapper of [IntroJS](https://introjs.com/). + +If for any reason you want to disable the Onboarding library, you can use the following filter: + +`add_filter( 'tribe_onboarding_disable, '__return_true' );` + +## Tours + +**Tours** provides an easy way to onboard users on a step by step basis. The information is provided to the user on a modal. + +Users can navigate through the different steps and close the modal at any time by clicking outside of it. + +Setting up tours is fairly simple. It all comes down to hooking onto `tribe_onboarding_tour_data`. + +The information to be sent there is an array in the following format: + +``` +$tour_data = [ + 'steps' = [], // An array of the steps you'd like for the tour. + 'classes' = [], // An array of CSS classes to apply to the modal. (Optional) +]; +``` + +The format of each step can contain the following: + +``` +$step = [ + 'title' => __( 'Welcome to this screen' ), // The step title. + 'intro' => __( 'This is the description of the "Welcome to this screen" message.' ); + 'element' => '#my-html-id', // If you want to highlight a certain part of the HTML for this step. If not defined, it'll show just the modal with the information. (Optional) +]; +``` + +So for example, if you want to add a simple welcome tour for a settings panel you could add the following. + +``` +add_filter( 'tribe_onboarding_tour_data', 'my_fancy_tour' ); + +function my_fancy_tour( $data ) { + + // Here you can do some checks to see if you're in the page you want to show to tour. + + $steps = [ + [ + 'title' => __( '🤘 Welcome to the settings panel' ), + 'intro' => __( 'It is actually great that you are using our plugins! From this settings panel you should be able to access all the settings to configure your site.' ), + ], + [ + 'title' => __( '⚙️ Different sections' ), + 'element' => '#tribe-settings-tabs', + 'intro' => __( 'On this section you can access all of the different settings of our plugins, if you have questions about which settings we have you can go to
    our knowledgebase article' ), + ], + [ + 'title' => __( '🛠️ Change the settings' ), + 'element' => '#tribe-field-postsPerPage', + 'intro' => __( 'If you need to change any configuration, you can do it! If you have questions about which settings we have you can go to our knowledgebase article' ), + ], + [ + 'title' => __( '💡 Save the Settings' ), + 'element' => '#tribeSaveSettings', + 'intro' => __( 'Please remember to save the settings, if you have questions about which settings we have you can go to our knowledgebase article' ), + ], + ]; + + $data['steps'] = $steps; + $data['classes'] = [ 'my__fancy-css-class', 'my__fancy-css-class--modifier' ]; + + return $data; +} +``` + +### Setting up Tours from TEC plugins + +Setting up new tours from our plugins should be easy with the abstract classes we have in place. + +We should be registering the tours we want, hooking them into the `tribe_onboarding_tours` filter. + +The function to hook onto `tribe_onboarding_tours` should have the following format: + +``` +/** + * Register tours. + * + * @see \Tribe\Onboarding\Main::get_registered_tours() + * + * @since 1.0 + * + * @param array $tours An associative array of tours in the shape `[ => ]`. + * + * @return array +*/ +public function filter_register_tours( array $tours ) { + $tours['my_awesome_tour_id'] = MyAwesomeTourClass::class; + + return $tours; +} +``` + +And then `MyAwesomeTourClass` should have the following format: + +``` +use Tribe\Onboarding\Tour_Abstract; +/** + * Class MyAwesomeTourClass + */ +class MyAwesomeTourClass extends Tour_Abstract { + + /** + * The tour ID. + * + * @var string + */ + public $tour_id = 'my_awesome_tour_id'; + + /** + * Times to display the tour. + * If you set '5', then it'll be displayed FIVE times. + * + * @var int + */ + public $times_to_display = 5; + + /** + * Returns if it's on the page we want to display the tour for. + * + * @return bool True if it's on page. + */ + public function is_on_page() { + + // Perform any check you want, to see if the tour should display or not. + return $admin_helpers->is_screen( 'tribe_events_page_tribe-common' ); + } + + /** + * Tour steps. + * + * @since 1.0 + * + * @return array $steps The tour steps + */ + public function steps() { + + $steps = [ + [ + 'title' => __( '🤘 Welcome to the settings panel' ), + 'intro' => __( 'It is actually great that you are using our plugins! From this settings panel you should be able to access all the settings to configure your site.' ), + ], + [ + 'title' => __( '⚙️ Different sections' ), + 'element' => '#tribe-settings-tabs', + 'intro' => __( 'On this section you can access all of the different settings of our plugins, if you have questions about which settings we have you can go to our knowledgebase article' ), + ], + [ + 'title' => __( '🛠️ Change the settings' ), + 'element' => '#tribe-field-postsPerPage', + 'intro' => __( 'If you need to change any configuration, you can do it! If you have questions about which settings we have you can go to our knowledgebase article' ), + ], + [ + 'title' => __( '💡 Save the Settings' ), + 'element' => '#tribeSaveSettings', + 'intro' => __( 'Please remember to save the settings, if you have questions about which settings we have you can go to our knowledgebase article' ), + ], + ]; + + return $steps; + } + + /** + * Tour CSS Classes. + * + * Here you can set additional CSS classes for the particular tour. + * + * @return array $css_classes The tour extra CSS classes. + */ + public function css_classes() { + + return [ 'my-awesome-css-class' ]; + } +} + +``` + +## Hints + +**Hints** are great for providing non-intrusive contextual help. Each hing will be associated to a particular HTML element (which you can define by a CSS class or an ID) and it'll add kind of a "infinite bouncing dot" besides that element. When clicked you'll have some more context on what's the purpose of that. + +Technically speaking **Hints** work pretty similarly to how **Tours** do. The mechanics of adding a set of hints is almost the same. + +It comes down to hooking onto `tribe_onboarding_hints_data`. + +The information to be sent there is an array in the following format: + +``` +$hints_data = [ + 'hints' = [], // An array of the hints you'd like to have. + 'classes' = [], // An array of CSS classes to apply to the modal/tooltip. (Optional) +]; +``` + +So for example, if you want to add a hint for a newly added button: + +``` +add_filter( 'tribe_onboarding_hints_data', 'my_fancy_hints' ); + +function my_fancy_hints( $data ) { + $hints = [ + [ + 'hint' => __( 'You can now add attendees for this event!' ), + 'element' => '.add_attendee', + ], + ]; + + $data['hints'] = $hints; + $data['classes'] = [ 'my__fancy-css-class', 'my__fancy-css-class--modifier' ]; + + return $data; +} +``` + +## CSS classes that you may want to use: + +- `.tribe-onboarding__tooltip--large` - Use if if you want your tooltip to be bigger/wider. +- `.tribe-onboarding__tooltip--dark` - Use if if you want your tooltip to have a dark skin (to use an image for the background, or just a plain dark color). +- `.tribe-onboarding__tooltip--squared` - Use it if you want a squared tooltip. +- `.tribe-onboarding__tooltip--no-bullets` - Use it if you want to hide the navigation bullets. +- `.tribe-onboarding__tooltip--title-large` - Use it if you want to have a bigger title. +- `.tribe-onboarding__tooltip--content-centered` - Use it if you want to center the content. +- `.tribe-onboarding__tooltip--button-centered` - Use it if you want to center the buttons. +- `.tribe-onboarding__tooltip--button-large` - Use it if you want to have a bigger button. +- `.tribe-onboarding__tooltip--button-rounded` - Use it if you want to have a rounded button. +- `.tribe-onboarding__tooltip--button-dark-skin` - Use it if you want to have a button for dark skin (white background / dark text button). + + +### 💡 To-Do's / Ideas: + +- [ ] Add some more styles variations. +- [ ] Maybe add the possibility of having animated GIFs/images on each step. +- [ ] Add some abstraction to extend this anywhere, and make it easier to check if it's in the page, and load the tours and/or hints we would like to add. diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Tour_Abstract.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Tour_Abstract.php new file mode 100644 index 000000000..adfbb0068 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Onboarding/Tour_Abstract.php @@ -0,0 +1,98 @@ +is_on_page() ) { + return false; + } + + // Bail if the `Times to display` is set and it was reached. + if ( + is_numeric( $this->times_to_display ) + && ( tribe( 'onboarding' )->get_views( $this->tour_id ) > $this->times_to_display ) + ) { + return false; + } + + return true; + } + + /** + * Return the tour steps. + * + * @since 4.14.9 + * + * @return array The tour steps. + */ + abstract function steps(); + + /** + * Return the CSS classes. + * + * @since 4.14.9 + * + * @return array The CSS classes. + */ + public function css_classes() { + return []; + } + + /** + * The tour data, publicly accessible. + * + * @since 4.14.9. + * + * @param array $data An array with the tour data. + * @return array + */ + public function tour_data( array $data = [] ) { + $data['steps'] = $this->steps(); + $data['classes'] = $this->css_classes(); + + return $data; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Checker.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Checker.php new file mode 100644 index 000000000..6c29d5ec3 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Checker.php @@ -0,0 +1,1917 @@ +set_slug( $slug ); + $this->set_plugin_file( $plugin_file ); + $this->set_options( $options ); + $this->hooks(); + $this->set_key_status_name(); + } + + /** + * Gets whether the license key is valid or not. + * + * @since 4.14.9 + */ + public function is_key_valid() { + // @todo remove transient in a major feature release where we release all plugins. + $status = get_transient( $this->pue_key_status_transient_name ); + + if ( empty( $status ) ) { + $status = get_option( $this->pue_key_status_option_name, 'invalid' ); + } + + return 'valid' === $status; + } + + /** + * Gets whether or not the PUE key validation check is expired. + * + * @since 4.14.9 + */ + public function is_key_validation_expired() { + // If we have a transient, then we're good. Not expired. + // @todo remove transient in a major feature release where we release all plugins. + if ( get_transient( $this->pue_key_status_transient_name ) ) { + return false; + } + + $option_expiration = get_option( "{$this->pue_key_status_option_name}_timeout", null ); + return is_null( $option_expiration ) || ( time() > $option_expiration ); + } + + /** + * Set the PUE key status property names. + * + * @since 4.14.9 + */ + public function set_key_status_name() { + $this->pue_key_status_option_name = 'pue_key_status_' . $this->get_slug() . '_' . $this->get_site_domain(); + + // @todo remove transient in a major feature release where we release all plugins. + $this->pue_key_status_transient_name = md5( $this->get_slug() . $this->get_site_domain() ); + } + + /** + * Creates a hash for the transient name that holds the current key status. + * + * @todo remove transient in a major feature release where we release all plugins. + * + * @since 4.14.14 + */ + public function set_key_status_transient_name() { + _deprecated_function( __METHOD__, '4.14.9', __CLASS__ . '::set_key_status_name()' ); + } + + /** + * Sets the key status based on the key validation check results. + * + * @since 4.14.9 + * + * @param int $valid 0 for invalid, 1 or 2 for valid. + */ + public function set_key_status( $valid ) { + $status = tribe_is_truthy( $valid ) ? 'valid' : 'invalid'; + update_option( $this->pue_key_status_option_name, $status ); + update_option( "{$this->pue_key_status_option_name}_timeout", $this->check_period * HOUR_IN_SECONDS ); + + // We set a transient in addition to an option for compatibility reasons. + // @todo remove transient in a major feature release where we release all plugins. + set_transient( $this->pue_key_status_transient_name, $status, $this->check_period * HOUR_IN_SECONDS ); + } + + /** + * Sets the key status transient based on the key validation check results. + * + * @since 4.14.9 + * + * @param int $valid 0 for invalid, 1 or 2 for valid. + */ + public function set_key_status_transient( $valid ) { + _deprecated_function( __METHOD__, '4.14.9', __CLASS__ . '::set_key_status()' ); + $this->set_key_status( $valid ); + } + + /** + * Install the hooks required to run periodic update checks and inject update info + * into WP data structures. + * Also other hooks related to the automatic updates (such as checking agains API and what not (@from Darren) + */ + public function hooks() { + // Override requests for plugin information + add_filter( 'plugins_api', [ $this, 'inject_info' ], 10, 3 ); + + // Check for updates when the WP updates are checked and inject our update if needed. + // Only add filter if the TRIBE_DISABLE_PUE constant is not set as true and where + // the context is not 'service' + if ( ( ! defined( 'TRIBE_DISABLE_PUE' ) || true !== TRIBE_DISABLE_PUE ) && 'service' !== $this->context ) { + add_filter( 'pre_set_site_transient_update_plugins', [ $this, 'check_for_updates' ] ); + } + + add_filter( 'tribe_licensable_addons', [ $this, 'build_addon_list' ] ); + add_action( 'tribe_license_fields', [ $this, 'do_license_key_fields' ] ); + add_action( 'tribe_settings_after_content_tab_licenses', [ $this, 'do_license_key_javascript' ] ); + add_action( 'tribe_settings_success_message', [ $this, 'do_license_key_success_message' ], 10, 2 ); + add_action( 'load-plugins.php', [ $this, 'remove_default_inline_update_msg' ], 50 ); + + // Key validation + add_filter( 'tribe_settings_save_field_value', [ $this, 'check_for_api_key_error' ], 10, 3 ); + add_action( 'wp_ajax_pue-validate-key_' . $this->get_slug(), [ $this, 'ajax_validate_key' ] ); + add_filter( 'tribe-pue-install-keys', [ $this, 'return_install_key' ] ); + add_action( 'admin_enqueue_scripts', [ $this, 'maybe_display_json_error_on_plugins_page' ], 1 ); + add_action( 'admin_init', [ $this, 'general_notifications' ] ); + + // Package name + add_filter( 'upgrader_pre_download', [ Tribe__PUE__Package_Handler::instance(), 'filter_upgrader_pre_download' ], 5, 3 ); + } + + /********************** Getter / Setter Functions **********************/ + + /** + * Get the slug + * + * @return string + */ + public function get_slug() { + return apply_filters( 'pue_get_slug', $this->slug ); + } + + /** + * Set the slug + * + * @param string $slug + */ + private function set_slug( $slug = '' ) { + $this->slug = $slug; + $clean_slug = str_replace( '-', '_', $this->slug ); + $this->dismiss_upgrade = 'pu_dismissed_upgrade_' . $clean_slug; + $this->pue_install_key = 'pue_install_key_' . $clean_slug; + } + + /** + * Get the PUE update API endpoint url + * + * @return string + */ + public function get_pue_update_url() { + $pue_update_url = 'https://pue.theeventscalendar.com'; + + if ( defined( 'PUE_UPDATE_URL' ) ) { + $pue_update_url = PUE_UPDATE_URL; + } + + $pue_update_url = apply_filters( 'pue_get_update_url', $pue_update_url, $this->get_slug() ); + + $pue_update_url = untrailingslashit( $pue_update_url ); + + return $pue_update_url; + } + + /** + * Get the plugin file path + * + * @return string + */ + public function get_plugin_file() { + return apply_filters( 'pue_get_plugin_file', $this->plugin_file, $this->get_slug() ); + } + + /** + * Set the plugin file path + * + * @param string $plugin_file + */ + private function set_plugin_file( $plugin_file = '' ) { + + if ( ! empty( $plugin_file ) ) { + $this->plugin_file = $plugin_file; + + return; + } + + $slug = $this->get_slug(); + if ( ! empty( $slug ) ) { + $this->plugin_file = $slug . '/' . $slug . '.php'; + } + } + + /** + * Set the plugin name + * + * @param string $plugin_name + */ + private function set_plugin_name( $plugin_name = '' ) { + if ( ! empty( $plugin_name ) ) { + $this->plugin_name = $plugin_name; + } else { + //get name from plugin file itself + if ( ! function_exists( 'get_plugins' ) ) { + require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); + } + + // Prevents get_plugins from throwing a weird notice + if ( ! file_exists( WP_PLUGIN_DIR . '/' . $this->get_plugin_file() ) ) { + return; + } + + $plugin_details = explode( '/', $this->get_plugin_file() ); + $plugin_folder = get_plugins( '/' . $plugin_details[0] ); + $this->plugin_name = isset( $plugin_details[1] ) && isset( $plugin_folder[ $plugin_details[1] ] ) ? $plugin_folder[ $plugin_details[1] ]['Name'] : null; + } + } + + /** + * Get the plugin name + * + * @return string + */ + public function get_plugin_name() { + if ( empty( $this->plugin_name ) ) { + $this->set_plugin_name(); + } + + return apply_filters( 'pue_get_plugin_name', $this->plugin_name, $this->get_slug() ); + } + + /** + * Set all the PUE instantiation options + * + * @param array $options + */ + private function set_options( $options = [] ) { + + $options = wp_parse_args( + $options, [ + 'pue_option_name' => 'external_updates-' . $this->get_slug(), + 'apikey' => '', + 'check_period' => 12, + 'context' => 'component', + 'plugin_name' => '', + ] + ); + + $this->pue_option_name = $options['pue_option_name']; + $this->check_period = (int) $options['check_period']; + $this->context = $options['context']; + $this->plugin_name = $options['plugin_name']; + + } + + /** + * Set all the download query array + * + * @param array $download_query + */ + private function set_download_query( $download_query = [] ) { + + if ( ! empty( $download_query ) ) { + $this->download_query = $download_query; + + return; + } + + // plugin slug + $this->download_query['plugin'] = sanitize_text_field( $this->get_slug() ); + + // include current version + $this->download_query['installed_version'] = sanitize_text_field( $this->get_installed_version() ); + + $this->download_query['domain'] = sanitize_text_field( $this->get_domain() ); + + // get general stats + $stats = $this->get_stats(); + + $this->download_query['multisite'] = $stats['network']['multisite']; + $this->download_query['network_activated'] = $stats['network']['network_activated']; + $this->download_query['active_sites'] = $stats['network']['active_sites']; + $this->download_query['wp_version'] = $stats['versions']['wp']; + + // the following is for install key inclusion (will apply later with PUE addons.) + $this->download_query['key'] = sanitize_text_field( $this->get_key() ); + $this->download_query['dk'] = sanitize_text_field( $this->get_key( 'default' ) ); + $this->download_query['o'] = sanitize_text_field( $this->get_key( 'any', 'origin' ) ); + + } + + /** + * Get the download_query args + * + * @return array + */ + public function get_download_query() { + if ( empty( $this->download_query ) ) { + $this->set_download_query(); + } + + return apply_filters( 'pue_get_download_query', $this->download_query, $this->get_slug() ); + } + + /** + * Set all the validate query array + * + * @param array $validate_query + */ + private function set_validate_query( $validate_query = [] ) { + + if ( ! empty( $validate_query ) ) { + $this->validate_query = $validate_query; + + return; + } + + // the following is for install key inclusion (will apply later with PUE addons.) + $this->validate_query['key'] = sanitize_text_field( $this->get_key() ); + + // include default key + $this->validate_query['default_key'] = sanitize_text_field( $this->get_key( 'default' ) ); + + // include license origin + $this->validate_query['license_origin'] = sanitize_text_field( $this->get_key( 'any', 'origin' ) ); + + // plugin slug + $this->validate_query['plugin'] = sanitize_text_field( $this->get_slug() ); + + // include current version + $this->validate_query['version'] = sanitize_text_field( $this->get_installed_version() ); + + // include current domain + $this->validate_query['domain'] = sanitize_text_field( $this->get_domain() ); + + // include plugin stats + $this->validate_query['stats'] = $this->get_stats(); + + } + + /** + * Get the validate_query args + * + * @return array + */ + public function get_validate_query() { + if ( empty( $this->validate_query ) ) { + $this->set_validate_query(); + } + + return apply_filters( 'pue_get_validate_query', $this->validate_query, $this->get_slug() ); + } + + /** + * Get current domain + * + * @return string + */ + public function get_domain() { + + $domain = self::$domain; + + if ( empty( $domain ) ) { + $url = wp_parse_url( get_option( 'siteurl' ) ); + if ( ! empty( $url ) && isset( $url['host'] ) ) { + $domain = $url['host']; + } elseif ( isset( $_SERVER['SERVER_NAME'] ) ) { + $domain = $_SERVER['SERVER_NAME']; + } + + if ( is_multisite() ) { + // For multisite, return the network-level siteurl + $domain = $this->get_network_domain(); + } + + self::$domain = $domain; + } + + return $domain; + + } + + + /********************** General Functions **********************/ + + /** + * Compile a list of addons + * + * @param array $addons list of addons + * + * @return array list of addons + */ + public function build_addon_list( $addons = [] ) { + $addons[] = $this->get_plugin_name(); + + return $addons; + } + + /** + * Inserts license key fields on license key page + * + * @param array $fields List of fields + * + * @return array Modified list of fields. + */ + public function do_license_key_fields( $fields ) { + // common fields whether licenses should be hidden or not + $to_insert = [ + $this->pue_install_key . '-heading' => [ + 'type' => 'heading', + 'label' => $this->get_plugin_name(), + ], + ]; + + $no_license_tooltip = esc_html__( 'A valid license key is required for support and updates', 'tribe-common' ); + if ( 'event-aggregator' === $this->get_slug() ) { + $no_license_tooltip = sprintf( + esc_html__( '%1$sBuy a license%2$s for the Event Aggregator service to access additional import features.', 'tribe-common' ), + '', + '' + ); + } + + // we want to inject the following license settings at the end of the licenses tab + if ( $this->should_show_network_editable_license() ) { + $to_insert[ $this->pue_install_key ] = [ + 'type' => 'license_key', + 'size' => 'large', + 'validation_type' => 'license_key', + 'label' => sprintf( esc_attr__( 'License Key', 'tribe-common' ) ), + 'default' => $this->get_key( 'default' ), + 'tooltip' => $no_license_tooltip, + 'parent_option' => false, + 'network_option' => true, + ]; + } elseif ( $this->should_show_subsite_editable_license() ) { + $to_insert[ $this->pue_install_key ] = [ + 'type' => 'license_key', + 'size' => 'large', + 'validation_type' => 'license_key', + 'label' => sprintf( esc_attr__( 'License Key', 'tribe-common' ) ), + 'default' => $this->get_key( 'default' ), + 'tooltip' => $no_license_tooltip, + 'parent_option' => false, + 'network_option' => false, + ]; + } elseif ( $this->should_show_overrideable_license() ) { + $to_insert[ $this->pue_install_key . '-state' ] = [ + 'type' => 'html', + 'label' => sprintf( esc_attr__( 'License Key Status:', 'tribe-common' ) ), + 'label_attributes' => [ 'style' => 'width:auto;' ], + 'html' => sprintf( '

    %s

    ', $this->get_network_license_state_string() ), + ]; + + $override_id = $this->pue_install_key . '-override'; + + $to_insert[ $override_id ] = [ + 'type' => 'checkbox_bool', + 'label' => esc_html__( 'Override network license key', 'tribe-common' ), + 'tooltip' => esc_html__( 'Check this box if you wish to override the network license key with your own', 'tribe-common' ), + 'default' => false, + 'validation_type' => 'boolean', + 'parent_option' => false, + 'attributes' => [ 'id' => $override_id . '-field' ], + ]; + + $to_insert[ $this->pue_install_key ] = [ + 'type' => 'license_key', + 'size' => 'large', + 'validation_type' => 'license_key', + 'label' => sprintf( esc_attr__( 'Site License Key', 'tribe-common' ) ), + 'tooltip' => $no_license_tooltip, + 'parent_option' => false, + 'network_option' => false, + 'class' => 'tribe-dependent', + 'fieldset_attributes' => [ + 'data-depends' => '#' . $override_id . '-field', + 'data-condition-checked' => true, + ], + ]; + } else { + $to_insert[ $this->pue_install_key . '-state' ] = [ + 'type' => 'html', + 'label' => sprintf( esc_attr__( 'License Key Status:', 'tribe-common' ) ), + 'label_attributes' => [ 'style' => 'width:auto;' ], + 'html' => sprintf( '

    %s

    ', $this->get_network_license_state_string() ), + ]; + } + + $fields = self::array_insert_after_key( 'tribe-form-content-start', $fields, $to_insert ); + + return $fields; + } + + /** + * Inserts the javascript that makes the ajax checking + * work on the license key page + * + */ + public function do_license_key_javascript() { + ?> + +

    ' . esc_html__( 'License key(s) updated.', 'tribe-common' ) . '

    '; + + } + + /** + * Build stats for endpoints + * + * @return array + */ + public function build_stats() { + + global $wpdb; + + $stats = [ + 'versions' => [ + 'wp' => sanitize_text_field( $GLOBALS['wp_version'] ), + ], + 'network' => [ + 'multisite' => 0, + 'network_activated' => 0, + 'active_sites' => 1, + ], + ]; + + if ( is_multisite() ) { + $sql_count = " + SELECT COUNT( `blog_id` ) + FROM `{$wpdb->blogs}` + WHERE + `public` = '1' + AND `archived` = '0' + AND `spam` = '0' + AND `deleted` = '0' + "; + + $stats['network']['multisite'] = 1; + $stats['network']['network_activated'] = (int) $this->is_plugin_active_for_network(); + $stats['network']['active_sites'] = (int) $wpdb->get_var( $sql_count ); + } + + self::$stats = $stats; + + return $stats; + + } + + /** + * Build full stats for endpoints + * + * @param array $stats Initial stats + * + * @return array + */ + public function build_full_stats( $stats ) { + + global $wpdb; + + $theme = wp_get_theme(); + + $current_offset = (int) get_option( 'gmt_offset', 0 ); + $tzstring = get_option( 'timezone_string' ); + + // Remove old Etc mappings. Fallback to gmt_offset. + if ( false !== strpos( $tzstring, 'Etc/GMT' ) ) { + $timezone = ''; + } + + // Create a UTC+- zone if no timezone string exists + if ( empty( $tzstring ) ) { + if ( 0 === $current_offset ) { + $timezone = 'UTC+0'; + } elseif ( $current_offset < 0 ) { + $timezone = 'UTC' . $current_offset; + } else { + $timezone = 'UTC+' . $current_offset; + } + } + + $stats['versions'] = [ + 'wp' => sanitize_text_field( $GLOBALS['wp_version'] ), + 'php' => sanitize_text_field( phpversion() ), + 'mysql' => sanitize_text_field( $wpdb->db_version() ), + ]; + + $stats['theme'] = [ + 'name' => sanitize_text_field( $theme->get( 'Name' ) ), + 'version' => sanitize_text_field( $theme->get( 'Version' ) ), + 'stylesheet' => sanitize_text_field( $theme->get_stylesheet() ), + 'template' => sanitize_text_field( $theme->get_template() ), + ]; + + $stats['site_language'] = sanitize_text_field( get_locale() ); + $stats['user_language'] = sanitize_text_field( get_user_locale() ); + $stats['is_public'] = (int) get_option( 'blog_public', 0 ); + $stats['wp_debug'] = (int) ( defined( 'WP_DEBUG' ) && WP_DEBUG ); + $stats['site_timezone'] = sanitize_text_field( $timezone ); + + $stats['totals'] = [ + 'all_post_types' => (int) $wpdb->get_var( "SELECT COUNT(*) FROM `{$wpdb->posts}`" ), + 'events' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_events' ) ), + 'venues' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_venue' ) ), + 'organizers' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_organizer' ) ), + 'event_categories' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->term_taxonomy}` WHERE taxonomy = %s", 'tribe_events_cat' ) ), + ]; + + self::$stats_full = $stats; + + return $stats; + + } + + /** + * Build and get the stats + * + * @return array + */ + public function get_stats() { + + $stats = self::$stats; + + if ( empty( $stats ) ) { + $stats = $this->build_stats(); + } + + /** + * Allow full stats data to be built and sent. + * + * @param boolean $use_full_stats Whether to send full stats + * + * @since 4.5.1 + */ + $use_full_stats = apply_filters( 'pue_use_full_stats', false ); + + if ( $use_full_stats ) { + $stats_full = self::$stats_full; + + if ( empty( $stats_full ) ) { + $stats = $this->build_full_stats( $stats ); + } + } + + /** + * Filter stats and allow plugins to add their own stats + * for tracking specific points of data. + * + * @param array $stats Stats gathered by PUE Checker class + * @param boolean $use_full_stats Whether to send full stats + * @param \Tribe__PUE__Checker $checker PUE Checker class object + * + * @since 4.5.1 + */ + $stats = apply_filters( 'pue_stats', $stats, $use_full_stats, $this ); + + return $stats; + } + + /** + * Get current license key, optionally of a specific type. + * + * @param string $type The type of key to get (any, network, local, default) + * @param string $return_type The type of data to return (key, origin) + * + * @return string + */ + public function get_key( $type = 'any', $return_type = 'key' ) { + + $license_key = ''; + $license_origin = 'm'; + + /* + * Even if we have a network key if the plugin is not active on the network then it should + * not be used. + */ + if ( + ( 'network' === $type || 'any' === $type ) + && is_multisite() + && $this->is_plugin_active_for_network() + ) { + $license_key = get_network_option( null, $this->pue_install_key, '' ); + } + + if ( ( 'local' === $type || 'any' === $type ) && empty( $license_key ) ) { + $license_key = get_option( $this->pue_install_key, '' ); + } + + if ( empty( $license_key ) && ( 'default' === $type || 'any' === $type ) ) { + $autoloader = Tribe__Autoloader::instance(); + + $class_name = $autoloader->get_prefix_by_slug( $this->get_slug() ); + + if ( $class_name ) { + $is_namespaced = false !== strpos( $class_name, '\\' ); + + if ( $is_namespaced ) { + // Handle class prefixes like Tribe\Plugin\. + $class_name .= 'PUE\Helper'; + } else { + // Handle class prefixes like Tribe__Plugin__. + $class_name .= 'PUE__Helper'; + } + + if ( constant( $class_name . '::DATA' ) ) { + $license_key = constant( $class_name . '::DATA' ); + + $license_origin = 'e'; + } + } + } + + if ( 'origin' === $return_type ) { + if ( 'm' === $license_origin ) { + $default_key = $this->get_key( 'default' ); + + if ( $license_key !== $default_key ) { + $license_origin = 'o'; + } + } + + return $license_origin; + } + + return $license_key; + + } + + /** + * Update license key for specific type of license. + * + * @param string $license_key The new license key value + * @param string $type The type of key to update (network or local) + */ + public function update_key( $license_key, $type = 'local' ) { + + if ( 'network' === $type && is_multisite() ) { + update_network_option( null, $this->pue_install_key, sanitize_text_field( $license_key ) ); + } elseif ( 'local' === $type ) { + update_option( $this->pue_install_key, sanitize_text_field( $license_key ) ); + } + + } + + /** + * Checks for the license key status with MT servers. + * + * @param string $key + * @param bool $network Whether the key to check for is a network one or not. + * + * @return array An associative array containing the license status response. + */ + public function validate_key( $key, $network = false ) { + $response = []; + $response['status'] = 0; + + if ( ! $key ) { + $response['message'] = sprintf( esc_html__( 'Hmmm... something\'s wrong with this validator. Please contact %ssupport%s.', 'tribe-common' ), '', '' ); + return $response; + } + + $query_args = $this->get_validate_query(); + + $query_args['key'] = sanitize_text_field( $key ); + + // This method is primarily used during when validating keys by ajax, before they are + // formally committed or saved by the user: for that reason we call request_info() + // rather than license_key_status() as at this stage invalid or missing keys should + // not result in admin notices being generated + $plugin_info = $this->request_info( $query_args ); + $expiration = isset( $plugin_info->expiration ) ? $plugin_info->expiration : __( 'unknown date', 'tribe-common' ); + + $pue_notices = Tribe__Main::instance()->pue_notices(); + $plugin_name = $this->get_plugin_name(); + + if ( empty( $plugin_info ) ) { + $response['message'] = __( 'Sorry, key validation server is not available.', 'tribe-common' ); + } elseif ( isset( $plugin_info->api_expired ) && 1 === (int) $plugin_info->api_expired ) { + $response['message'] = $this->get_license_expired_message(); + $response['api_expired'] = true; + } elseif ( isset( $plugin_info->api_upgrade ) && 1 === (int) $plugin_info->api_upgrade ) { + $response['message'] = $this->get_api_message( $plugin_info ); + $response['api_upgrade'] = true; + } elseif ( isset( $plugin_info->api_invalid ) && 1 === (int) $plugin_info->api_invalid ) { + $response['message'] = $this->get_api_message( $plugin_info ); + $response['api_invalid'] = true; + } else { + $key_type = 'local'; + + if ( $network ) { + $key_type = 'network'; + } + + $current_install_key = $this->get_key( $key_type ); + $replacement_key = $query_args['key']; + + if ( ! empty( $plugin_info->replacement_key ) ) { + // The PUE service might send over a new key upon validation. + $replacement_key = $plugin_info->replacement_key; + } + + if ( $current_install_key && $current_install_key === $replacement_key ) { + $default_success_msg = esc_html( sprintf( __( 'Valid Key! Expires on %s', 'tribe-common' ), $expiration ) ); + } else { + // Set the key. + $this->update_key( $replacement_key, $key_type ); + + $default_success_msg = esc_html( sprintf( __( 'Thanks for setting up a valid key. It will expire on %s', 'tribe-common' ), $expiration ) ); + + // Set system info key on TEC.com after successful validation of license. + $optin_key = get_option( 'tribe_systeminfo_optin' ); + if ( $optin_key ) { + Tribe__Support::send_sysinfo_key( $optin_key, $query_args['domain'], false, true ); + } + } + + $pue_notices->clear_notices( $plugin_name ); + + $response['status'] = isset( $plugin_info->api_message ) ? 2 : 1; + $response['message'] = isset( $plugin_info->api_message ) ? $plugin_info->api_message : $default_success_msg; + $response['expiration'] = esc_html( $expiration ); + + if ( isset( $plugin_info->daily_limit ) ) { + $response['daily_limit'] = intval( $plugin_info->daily_limit ); + } + } + + $response['message'] = wp_kses( $response['message'], 'data' ); + + $this->set_key_status( $response['status'] ); + + return $response; + } + + public function get_license_expired_message() { + return '' . + __( 'Renew Your License Now', 'tribe-common' ) . + '' . + __( ' (opens in a new window)', 'tribe-common' ) . + ''; + } + + /** + * Echo JSON results for key validation + */ + public function ajax_validate_key() { + $key = isset( $_POST['key'] ) ? wp_unslash( $_POST['key'] ) : null; + $nonce = isset( $_POST['_wpnonce'] ) ? wp_unslash( $_POST['_wpnonce'] ) : null; + + if ( + empty( $nonce ) + || false === wp_verify_nonce( $nonce, 'pue-validate-key_' . $this->get_slug() ) + ) { + $response = [ + 'status' => 0, + 'message' => __( 'Please refresh the page and try your request again.', 'tribe-common' ), + ]; + } else { + $response = $this->validate_key( $key ); + } + + echo json_encode( $response ); + exit; + } + + /** + * Processes variable substitutions for server-side API message. + * + * @param Tribe__PUE__Plugin_Info $info + * + * @return string + */ + private function get_api_message( $info ) { + // this default message should never show, but is here as a fallback just in case. + $message = sprintf( + esc_html__( 'There is an update for %s. You\'ll need to %scheck your license%s to have access to updates, downloads, and support.', 'tribe-common' ), + $this->get_plugin_name(), + '', + '' + ); + + if ( ! empty( $info->api_inline_invalid_message ) ) { + $message = wp_kses( $info->api_inline_invalid_message, 'post' ); + } + + $message = str_replace( '%plugin_name%', $this->get_plugin_name(), $message ); + $message = str_replace( '%plugin_slug%', $this->get_slug(), $message ); + $message = str_replace( '%update_url%', $this->get_pue_update_url() . '/', $message ); + $message = str_replace( '%version%', $info->version, $message ); + $message = str_replace( '%changelog%', 'what\'s new', $message ); + + return $message; + } + + /** + * Whether the plugin is network activated and licensed or not. + * + * @return bool + */ + public function is_network_licensed() { + $is_network_licensed = false; + + if ( ! is_network_admin() && $this->is_plugin_active_for_network() ) { + $network_key = $this->get_key( 'network' ); + $local_key = $this->get_key( 'local' ); + + // Check whether the network is licensed and NOT overridden by local license + if ( $network_key && ( empty( $local_key ) || $local_key === $network_key ) ) { + $is_network_licensed = true; + } + } + + return $is_network_licensed; + } + + /** + * Returns tet name of the option that stores the license key. + * + * @return string + */ + public function get_license_option_key() { + return $this->pue_install_key; + } + + private function get_api_update_message() { + $plugin_info = $this->plugin_info; + + if ( ! isset( $plugin_info->api_invalid_message ) ) { + return false; + } + + $message = sprintf( + esc_html__( 'There is an update for %s. %sRenew your license%s to get access to bug fixes, security updates, and new features.', 'tribe-common' ), + $this->get_plugin_name(), + '', + '' + ); + + return $message; + } + + /** + * Displays a PUE message on the page if it is relevant + * + * @param string $page + */ + public function maybe_display_json_error_on_plugins_page( $page ) { + if ( 'plugins.php' !== $page ) { + return; + } + + $state = $this->get_state(); + $messages = []; + $plugin_updates = get_plugin_updates(); + $update_available = isset( $plugin_updates[ $this->plugin_file ] ); + + // Check to see if there is an licensing error or update message we should show + if ( ! empty( $state->update->license_error ) ) { + $messages[] = $state->update->license_error; + } elseif ( $update_available && current_user_can( 'update_plugins' ) ) { + // A plugin update is available + $update_now = sprintf( + esc_html__( 'Update now to version %s.', 'tribe-common' ), + $state->update->version + ); + + $update_now_link = sprintf( + ' %2$s', + wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $this->plugin_file, 'upgrade-plugin_' . $this->plugin_file ), + $update_now + ); + + $update_message = sprintf( + esc_html__( 'There is a new version of %1$s available. %2$s', 'tribe-common' ), + $this->plugin_name, + $update_now_link + ); + + $messages[] = sprintf( + '

    %s

    ', + $update_message + ); + } + + if ( empty( $messages ) ) { + return; + } + + $message_row_html = ''; + + foreach ( $messages as $message ) { + $message_row_html .= sprintf( + '
    %s
    ', + $message + ); + } + + $message_row_html = sprintf( + '%s', + $message_row_html + ); + + $this->plugin_notice = [ + 'slug' => $this->plugin_file, + 'message_row_html' => $message_row_html, + ]; + + add_filter( 'tribe_plugin_notices', [ $this, 'add_notice_to_plugin_notices' ] ); + + } + + public function add_notice_to_plugin_notices( $notices ) { + if ( ! $this->plugin_notice || $this->is_network_licensed() ) { + return $notices; + } + + $notices[ $this->plugin_notice['slug'] ] = $this->plugin_notice; + + return $notices; + } + + /** + * Returns plugin/license key data based on the provided query arguments. + * + * Calling this method will also take care of setting up admin notices for any + * keys that are invalid or have expired, etc. + * + * @see Tribe__PUE__Checker::request_info() + * + * @param $query_args + * + * @return Tribe__PUE__Plugin_Info|null + */ + public function license_key_status( $query_args ) { + $pue_notices = Tribe__Main::instance()->pue_notices(); + $plugin_info = $this->request_info( $query_args ); + $plugin_name = empty( $this->plugin_name ) ? $this->get_plugin_name() : $this->plugin_name; + + if ( empty( $plugin_name ) ) { + return $plugin_info; + } + + $install_key = $this->get_key(); + + // Check for expired keys + if ( ! empty( $plugin_info->api_expired ) ) { + $pue_notices->add_notice( Tribe__PUE__Notices::EXPIRED_KEY, $plugin_name ); + } elseif ( ! empty( $plugin_info->api_upgrade ) ) { + // Check for keys that are out of installs (*must* happen before the api_invalid test) + $pue_notices->add_notice( Tribe__PUE__Notices::UPGRADE_KEY, $plugin_name ); + } elseif ( + // Check for invalid keys last of all (upgrades/empty keys will be flagged as invalid) + ! empty( $plugin_info->api_invalid ) + && ( + 'component' === $this->context + || ( + 'service' === $this->context + && $install_key + ) + ) + ) { + $pue_notices->add_notice( Tribe__PUE__Notices::INVALID_KEY, $plugin_name ); + } else { + // If none of the above were satisfied we can assume the key is valid + $pue_notices->clear_notices( $plugin_name ); + } + + return $plugin_info; + } + + /** + * Sets up and manages those license key notifications which don't depend on communicating with a remote + * PUE server, etc. + */ + public function general_notifications() { + $plugin_name = empty( $this->plugin_name ) ? $this->get_plugin_name() : $this->plugin_name; + + // Register our plugin name for use in messages (thus if we're deactivated, any previously + // added persistent messaging can be cleared) + Tribe__Main::instance()->pue_notices()->register_name( $plugin_name ); + + // Detect and setup notices for missing keys + $install_key = $this->get_key(); + + if ( empty( $install_key ) && 'service' !== $this->context ) { + Tribe__Main::instance()->pue_notices()->add_notice( Tribe__PUE__Notices::INVALID_KEY, $plugin_name ); + } + } + + /** + * Retrieve plugin info from the configured API endpoint. + * + * In general, this method should not be called directly and it is preferable to call + * the license_key_status() method instead. That method returns the same result, but + * also analyses each response to set up appropriate license key notifications in the + * admin environment. + * + * @uses wp_remote_get() + * @see Tribe__PUE__Checker::license_key_status() + * + * @param array $query_args Additional query arguments to append to the request. Optional. + * + * @return string $plugin_info + */ + public function request_info( $query_args = [] ) { + $query_args = apply_filters( 'tribe_puc_request_info_query_args-' . $this->get_slug(), $query_args ); + + // Cache the API call so it only needs to be made once per plugin per page load. + static $plugin_info_cache; + + // Sort parameter keys + $hash_data = $query_args; + + ksort( $hash_data ); + + // Flatten hashed data + $hash_data = json_encode( $hash_data ); + + // Generate unique hash + $key = hash( 'sha256', $hash_data ); + + if ( isset( $plugin_info_cache[ $key ] ) ) { + return $plugin_info_cache[ $key ]; + } + + //Various options for the wp_remote_get() call. Plugins can filter these, too. + $options = [ + 'body' => $query_args, + 'timeout' => 15, //seconds + 'headers' => [ + 'Accept' => 'application/json', + ], + ]; + $options = apply_filters( 'tribe_puc_request_info_options-' . $this->get_slug(), $options ); + + $url = sprintf( '%s/api/plugins/v2/license/validate', $this->get_pue_update_url() ); + + $result = wp_remote_post( + $url, + $options + ); + + // Try to parse the response + $plugin_info = null; + if ( ! is_wp_error( $result ) && isset( $result['response']['code'] ) && ( 200 === (int) $result['response']['code'] ) && ! empty( $result['body'] ) ) { + $plugin_info = Tribe__PUE__Plugin_Info::from_json( $result['body'] ); + } + $plugin_info = apply_filters( 'tribe_puc_request_info_result-' . $this->get_slug(), $plugin_info, $result ); + + $plugin_info_cache[ $key ] = $plugin_info; + + return $plugin_info; + } + + /** + * Returns the domain contained in the network's siteurl option (not the full URL). + * + * @return string + */ + public function get_network_domain() { + $site_url = wp_parse_url( get_site_option( 'siteurl' ) ); + if ( ! $site_url || ! isset( $site_url['host'] ) ) { + return ''; + } else { + return strtolower( $site_url['host'] ); + } + } + + /** + * Retrieve the latest update (if any) from the configured API endpoint. + * + * @uses Tribe__PUE__Checker::request_info() + * + * @return Tribe__PUE__Utility An instance of Tribe__PUE__Utility, or NULL when no updates are available. + */ + public function request_update() { + // For the sake of simplicity, this function just calls request_info() + // and transforms the result accordingly. + $query_args = $this->get_validate_query(); + + if ( ! empty( $_POST['key'] ) ) { + $query_args['key'] = sanitize_text_field( $_POST['key'] ); + } elseif ( ! empty( $_POST[ $this->pue_install_key ] ) ) { + $query_args['key'] = sanitize_text_field( $_POST[ $this->pue_install_key ] ); + } + + $this->plugin_info = $plugin_info = $this->license_key_status( $query_args ); + + if ( null === $plugin_info ) { + return null; + } + + // admin display for if the update check reveals that there is a new version but the API key isn't valid. + if ( isset( $plugin_info->api_invalid ) ) { + $plugin_info = Tribe__PUE__Utility::from_plugin_info( $plugin_info ); + $plugin_info->license_error = $this->get_api_message( $plugin_info ); + + return $plugin_info; + } + + if ( ! empty( $plugin_info->new_install_key ) ) { + $this->update_key( $plugin_info->new_install_key ); + } + + // Need to correct the download url so it contains the custom user data (e.g. api and any other parameters). + $download_query = $this->get_download_query(); + + if ( ! empty( $download_query ) ) { + $plugin_info->download_url = esc_url_raw( add_query_arg( $download_query, $plugin_info->download_url ) ); + } + + // Add plugin dirname/file (this will be expected by WordPress when it builds the plugin list table) + $plugin_info->plugin = $this->get_plugin_file(); + + return Tribe__PUE__Utility::from_plugin_info( $plugin_info ); + } + + /** + * Display a changelog when the api key is missing. + */ + public function display_changelog() { + //contents of changelog display page when api-key is invalid or missing. It will ONLY show the changelog (hook into existing thickbox?) + } + + /** + * Get the currently installed version of the plugin. + * + * @return string Version number. + */ + public function get_installed_version() { + if ( function_exists( 'get_plugins' ) ) { + $all_plugins = get_plugins(); + if ( array_key_exists( $this->get_plugin_file(), $all_plugins ) && array_key_exists( 'Version', $all_plugins[ $this->get_plugin_file() ] ) ) { + return $all_plugins[ $this->get_plugin_file() ]['Version']; + } + } + } + + /** + * Get plugin update state + * + * @param boolean $force_recheck + * + * @return object + */ + public function get_state( $force_recheck = false ) { + + $state = null; + + if ( ! $force_recheck ) { + $state = get_site_option( $this->pue_option_name, false, false ); + } + + if ( empty( $state ) ) { + $state = new stdClass; + $state->lastCheck = 0; + $state->checkedVersion = ''; + $state->update = null; + } + + return $state; + + } + + /** + * Update plugin update state + * + * @param object $value + */ + public function update_state( $value ) { + + update_site_option( $this->pue_option_name, $value ); + + } + + /** + * Check for plugin updates. + * + * The results are stored in the DB option specified in $pue_option_name. + * + * @param array $updates + * @param boolean $force_recheck + * + * @return array + */ + public function check_for_updates( $updates = [], $force_recheck = false ) { + $state = $this->get_state( $force_recheck ); + + $state->lastCheck = time(); + $state->checkedVersion = $this->get_installed_version(); + + // Save before checking in case something goes wrong + $this->update_state( $state ); + + $state->update = $this->request_update(); + + // If a null update was returned, skip to the end of the function. + if ( null !== $state->update ) { + // Is there an update to insert? + if ( version_compare( $state->update->version, $this->get_installed_version(), '>' ) ) { + if ( empty( $updates ) ) { + $updates = (object) [ 'response' => [] ]; + } + + $updates->response[ $this->get_plugin_file() ] = $state->update->to_wp_format(); + + // If the key has expired we should register an appropriate admin notice + if ( $this->plugin_info->api_expired ) { + Tribe__Main::instance()->pue_notices()->add_notice( Tribe__PUE__Notices::EXPIRED_KEY, $this->plugin_name ); + } + } + } + + $this->update_state( $state ); + + return $updates; + } + + /** + * Clears out the site external site option and re-checks the license key + * + * @param string $value + * @param string $field_id + * @param string $validated_field + * + * @return string + */ + public function check_for_api_key_error( $value, $field_id, $validated_field ) { + + // Only hook into our option + if ( $this->pue_install_key !== $field_id ) { + return $value; + } + + if ( 'service' !== $this->context ) { + $this->check_for_updates( [], true ); + } + + $network_option = false; + + if ( ! empty( $validated_field->field['network_option'] ) ) { + $network_option = (boolean) $validated_field->field['network_option']; + } + + $key_type = 'local'; + + if ( $network_option ) { + $key_type = 'network'; + } + + $current_key = $this->get_key( $key_type ); + + // if we are saving this PUE key, we need to make sure we update the license key notices + // appropriately. Otherwise, we could have an invalid license key in place but the notices + // aren't being thrown globally + + $query_args = $this->get_validate_query(); + + $query_args['key'] = sanitize_text_field( $value ); + + $this->license_key_status( $query_args ); + + return $value; + + } + + /** + * Intercept plugins_api() calls that request information about our plugin and + * use the configured API endpoint to satisfy them. + * + * @see plugins_api() + * + * @param mixed $result + * @param string $action + * @param array|object $args + * + * @return mixed + */ + public function inject_info( $result, $action = null, $args = null ) { + $relevant = ( 'plugin_information' === $action ) && isset( $args->slug ) && ( $args->slug === $this->slug ); + if ( ! $relevant ) { + return $result; + } + + $query_args = $this->get_validate_query(); + + $plugin_info = $this->license_key_status( $query_args ); + + if ( $plugin_info ) { + return $plugin_info->to_wp_format(); + } + + return $result; + } + + /** + * Register a callback for filtering query arguments. + * + * The callback function should take one argument - an associative array of query arguments. + * It should return a modified array of query arguments. + * + * @uses add_filter() This method is a convenience wrapper for add_filter(). + * + * @param callback $callback + * + */ + public function add_query_arg_filter( $callback ) { + add_filter( 'tribe_puc_request_info_query_args-' . $this->get_slug(), $callback ); + } + + /** + * Register a callback for filtering arguments passed to wp_remote_get(). + * + * The callback function should take one argument - an associative array of arguments - + * and return a modified array or arguments. See the WP documentation on wp_remote_get() + * for details on what arguments are available and how they work. + * + * @uses add_filter() This method is a convenience wrapper for add_filter(). + * + * @param callback $callback + * + */ + public function add_http_request_arg_filter( $callback ) { + add_filter( 'tribe_puc_request_info_options-' . $this->get_slug(), $callback ); + } + + /** + * Register a callback for filtering the plugin info retrieved from the external API. + * + * The callback function should take two arguments. If the plugin info was retrieved + * successfully, the first argument passed will be an instance of Tribe__PUE__Plugin_Info. Otherwise, + * it will be NULL. The second argument will be the corresponding return value of + * wp_remote_get (see WP docs for details). + * + * The callback function should return a new or modified instance of Tribe__PUE__Plugin_Info or NULL. + * + * @uses add_filter() This method is a convenience wrapper for add_filter(). + * + * @param callback $callback + * + */ + public function add_result_filter( $callback ) { + add_filter( 'tribe_puc_request_info_result-' . $this->get_slug(), $callback, 10, 2 ); + } + + /** + * Insert an array after a specified key within another array. + * + * @param $key + * @param $source_array + * @param $insert_array + * + * @return array + * + */ + public static function array_insert_after_key( $key, $source_array, $insert_array ) { + if ( array_key_exists( $key, $source_array ) ) { + $position = array_search( $key, array_keys( $source_array ), true ) + 1; + $source_array = array_slice( $source_array, 0, $position, true ) + $insert_array + array_slice( $source_array, $position, null, true ); + } else { + // If no key is found, then add it to the end of the array. + $source_array += $insert_array; + } + + return $source_array; + } + + /** + * Add this plugin key to the list of keys + * + * @param array $keys + * + * @return array $keys + * + */ + public function return_install_key( $keys = [] ) { + $key = $this->get_key(); + + if ( ! empty( $key ) ) { + $keys[ $this->get_slug() ] = $key; + } + + return $keys; + } + + /** + * Prevent the default inline update-available messages from appearing, as we + * have implemented our own. + * + * @see resources/js/pue-notices.js + */ + public function remove_default_inline_update_msg() { + remove_action( "after_plugin_row_{$this->plugin_file}", 'wp_plugin_update_row' ); + } + + /** + * Returns the domain of the single site installation + * + * Will try to read it from the $_SERVER['SERVER_NAME'] variable + * and fall back on the one contained in the siteurl option. + * + * @return string + */ + protected function get_site_domain() { + if ( isset( $_SERVER['SERVER_NAME'] ) ) { + return $_SERVER['SERVER_NAME']; + } + $site_url = wp_parse_url( get_option( 'siteurl' ) ); + if ( ! $site_url || ! isset( $site_url['host'] ) ) { + return ''; + } else { + return strtolower( $site_url['host'] ); + } + } + + /** + * Check whether the current plugin is active for the network or not. + * + * @return boolean Whether the plugin is network activated + */ + protected function is_plugin_active_for_network() { + + if ( ! is_multisite() ) { + return false; + } + + $map = [ + 'event-aggregator/event-aggregator.php' => 'the-events-calendar/the-events-calendar.php', + ]; + + $plugin_file = $this->get_plugin_file(); + + if ( isset( $map[ $this->plugin_file ] ) ) { + $plugin_file = $map[ $this->plugin_file ]; + } + + if ( function_exists( 'is_plugin_active_for_network' ) ) { + // If is_plugin_active_for_network() is available, let's use it! + return is_plugin_active_for_network( $plugin_file ); + } else { + // When this method is called sufficiently early in the request, + // is_plugin_active_for_network() may not be available (#115826) + $plugins = get_site_option( 'active_sitewide_plugins' ); + return isset( $plugins[ $plugin_file ] ); + } + } + + /** + * Returns the localized string for a plugin or component license state. + * + * @return string The localized state string. + */ + protected function get_network_license_state_string() { + $states = [ + 'licensed' => esc_html__( 'A valid license has been entered by your network administrator.', 'tribe-common' ), + 'not-licensed' => esc_html__( 'No license entered. Consult your network administrator.', 'tribe-common' ), + 'expired' => esc_html__( 'Expired license. Consult your network administrator.', 'tribe-common' ), + ]; + + $response = $this->validate_key( $this->get_key( 'network' ), true ); + + if ( isset( $response['status'] ) && 1 === (int) $response['status'] ) { + $state = 'licensed'; + } elseif ( isset( $response['api_expired'] ) && true === (boolean) $response['api_expired'] ) { + $state = 'expired'; + } else { + $state = 'not-licensed'; + } + + return $states[ $state ]; + } + + /** + * Whether the user should be shown the fully editable subsite license field or not. + * + * This check will happen in the context of the plugin administration area; checks on the user + * capability to edit the plugin settings have been made before. + * + * @return bool + */ + public function should_show_subsite_editable_license() { + if ( ! is_multisite() ) { + return true; + } + + if ( is_network_admin() ) { + return false; + } + + if ( $this->is_plugin_active_for_network() && ! is_super_admin() ) { + return false; + } + + return true; + } + + /** + * Whether the user should be shown the override control to override the network license key or not. + * + * This check will happen in the context of the plugin administration area; checks on the user + * capability to edit the plugin settings have been made before. + * + * @return bool + */ + public function should_show_overrideable_license() { + if ( is_network_admin() ) { + return false; + } + + if ( is_super_admin() ) { + return false; + } + + if ( ! $this->is_plugin_active_for_network() ) { + return false; + } + + return true; + } + + /** + * Whether the user should be shown the fully editable network license field or not. + * + * This check will happen in the context of the network plugin administration area; checks on the user + * capability to edit the network plugin settings have been made before. + * + * @return bool + */ + public function should_show_network_editable_license() { + return is_network_admin() && is_super_admin(); + } + + /** + * Determines if the value on the DB is the correct format. + * + * @since 4.15.0 + * + * @return bool + */ + public function is_valid_key_format() { + $license_opt = (string) get_option( $this->get_license_option_key() ); + if ( empty( $license_opt ) ) { + return false; + } + + if ( ! preg_match( "/([0-9a-z]+)/i", $license_opt, $matches ) ) { + return false; + } + + // Pull the matching string into a variable + $license = $matches[1]; + + if ( 40 !== strlen( $license ) ) { + return false; + } + + return true; + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Notices.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Notices.php new file mode 100644 index 000000000..4f9c8702d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Notices.php @@ -0,0 +1,533 @@ + 'Event Tickets Plus', + 'pue_install_key_events_community' => 'The Events Calendar: Community Events', + 'pue_install_key_events_community_tickets' => 'The Events Calendar: Community Events Tickets', + 'pue_install_key_image_widget_plus' => 'Image Widget Plus', + 'pue_install_key_tribe_eventbrite' => 'The Events Calendar: Eventbrite Tickets', + 'pue_install_key_tribe_filterbar' => 'The Events Calendar: Filter Bar', + 'pue_install_key_event_aggregator' => 'Event Aggregator', + 'pue_install_key_events_calendar_pro' => 'The Events Calendar PRO', + ]; + + /** + * Sets up license key related admin notices. + */ + public function __construct() { + $this->populate(); + add_action( 'current_screen', [ $this, 'setup_notices' ] ); + add_action( 'tribe_pue_notices_save_notices', [ $this, 'maybe_undismiss_notices' ] ); + } + + /** + * Registers a plugin name that should be used in license key notifications. + * + * If, on a given request, the name is not registered then the plugin name will not + * feature in any notifications. The benefit is that if a plugin is suddenly removed, + * it's name can be automatically dropped from any pre-registered persistent + * notifications. + * + * @param string $plugin_name + */ + public function register_name( $plugin_name ) { + $this->registered[] = $plugin_name; + } + + /** + * Restores plugins added on previous requests to the relevant notification + * groups. + */ + protected function populate() { + $this->saved_notices = (array) get_option( self::STORE_KEY, [] ); + + if ( empty( $this->saved_notices ) ) { + return; + } + + $this->notices = array_merge_recursive( $this->notices, $this->saved_notices ); + + // Cleanup + foreach ( $this->notices as $key => &$plugin_lists ) { + // Purge any elements that are not arrays + if ( ! is_array( $plugin_lists ) ) { + unset( $this->notices[ $key ] ); + continue; + } + } + } + + /** + * Saves any license key notices already added. + */ + public function save_notices() { + update_option( self::STORE_KEY, $this->notices ); + + /** + * Fires after PUE license key notices have been saved. + * + * @param array $current_notices + * @param array $previously_saved_notices + */ + do_action( 'tribe_pue_notices_save_notices', $this->notices, $this->saved_notices ); + } + + /** + * Undismisses license key notifications where appropriate. + * + * The idea is that if an invalid key is detected for one or more plugins, we show a notification + * until a user dismisses it. That user will not then see the notification again unless or until + * an additional plugin name is added to the invalid key list. + * + * Example: + * + * - Notification listing "Eventbrite" and "Pro" keys as invalid shows + * - User X dismisses the notification + * - The "Pro" license is fixed/corrected - notification remains in a "dismissed" status for User X + * - "Filter Bar" is added to the list of invalid keys + * - The invalid key notification is undismissed, to make all users (including User X) aware of + * the problem re Filter Bar + */ + public function maybe_undismiss_notices() { + foreach ( $this->notices as $notice_type => $plugin_list ) { + if ( is_array( $this->saved_notices ) && ! empty( $this->saved_notices[ $notice_type ] ) ) { + $new_plugins = array_diff_key( $this->notices[ $notice_type ], $this->saved_notices[ $notice_type ] ); + } else { + $new_plugins = $this->notices[ $notice_type ]; + } + + if ( ! empty( $new_plugins ) ) { + Tribe__Admin__Notices::instance()->undismiss_for_all( 'pue_key-' . $notice_type ); + } + } + } + + /** + * Used to include a plugin in a notification. + * + * For example, this could be used to add "My Plugin" to the expired license key + * notification by passing Tribe__PUE__Notices::EXPIRED_KEY as the second param. + * + * Plugins can only be added to one notification group at a time, so if a plugin + * was already added to the MISSING_KEY group and is subsequently added to the + * INVALID_KEY group, the previous entry (under MISSING_KEY) will be cleared. + * + * @param string $notice_type + * @param string $plugin_name + */ + public function add_notice( $notice_type, $plugin_name ) { + $this->clear_notices( $plugin_name, true ); + $this->notices[ $notice_type ][ $plugin_name ] = true; + $this->save_notices(); + } + + /** + * Returns whether or not a given plugin name has a specific notice + * + * @param string $plugin_name + * @param string|null $notice_type + * + * @return boolean + */ + public function has_notice( $plugin_name, $notice_type = null ) { + // If we match a pue key we use that value + if ( isset( $this->plugin_names[ $plugin_name ] ) ) { + $plugin_name = $this->plugin_names[ $plugin_name ]; + } + + if ( $notice_type ) { + return ! empty( $this->notices[ $notice_type ][ $plugin_name ] ); + } + + foreach ( $this->notices as $notice_type => $plugins ) { + if ( ! empty( $plugins[ $plugin_name ] ) ) { + return true; + } + } + + return false; + } + + /** + * Removes any notifications for the specified plugin. + * + * Useful when a valid license key is detected for a plugin, where previously + * it might have been included under a warning notification. + * + * If the optional second param is set to true then this change will not + * immediately be committed to storage (useful if we know this will happen in + * any case later on in the same request). + * + * @param string $plugin_name + * @param bool $defer_saving_change = false + */ + public function clear_notices( $plugin_name, $defer_saving_change = false ) { + foreach ( $this->notices as $notice_type => &$list_of_plugins ) { + unset( $list_of_plugins[ $plugin_name ] ); + } + + if ( ! $defer_saving_change ) { + $this->save_notices(); + } + } + + /** + * Tests to see if there are any extant notifications and renders them if so. + * + * This must run prior to Tribe__Admin__Notices::hook() (which currently runs during + * "current_screen" priority 20). + */ + public function setup_notices() { + // Don't allow this to run multiple times + remove_action( 'current_screen', [ $this, 'setup_notices' ] ); + + // No need to display license key notices to users without appropriate capabilities + if ( ! current_user_can( 'install_plugins' ) ) { + return; + } + + foreach ( $this->notices as $notice_type => $plugin_names ) { + if ( empty( $plugin_names ) ) { + continue; + } + + $callback = [ $this, 'render_' . $notice_type ]; + + if ( is_callable( $callback ) ) { + tribe_notice( 'pue_key-' . $notice_type, $callback, 'dismiss=1&type=warning' ); + } + } + } + + /** + * Select all products with empty license keys + * and format their names + * + * This information will be used to remove products + * with no license keys from $this->notices['invalid_key'] + * + * @since 4.8 + * + * @return array + */ + public function select_empty_keys() { + /** @var $wpdb */ + global $wpdb; + + $sql = " + SELECT option_name + FROM {$wpdb->options} + WHERE option_name LIKE 'pue_install_key_%' + AND option_value='' + "; + + $empty_keys = $wpdb->get_results( $sql, ARRAY_N ); + + $formatted_empty_keys = []; + foreach ( $empty_keys as $empty_key ) { + $empty_key = Tribe__Utils__Array::get( $empty_key, [ 0 ] ); + $formatted_empty_keys[] = Tribe__Utils__Array::get( $this->plugin_names, $empty_key ); + } + + return $formatted_empty_keys; + } + + /** + * Generate a notice listing any plugins for which license keys have been entered but + * are invalid (in the sense of not matching PUE server records or having been revoked + * rather than having expired which is handled separately). + * + * In the context of the plugin admin screen, will not render if the key-has-expired + * notice is also scheduled to display. + */ + public function render_invalid_key() { + global $pagenow; + + $empty_keys = $this->select_empty_keys(); + + if ( empty( $empty_keys ) ) { + return; + } + + // Remove the invalid_key notice for products with an empty license key + foreach ( $empty_keys as $empty_key ) { + if ( array_key_exists( $empty_key, $this->notices['invalid_key'] ) ) { + unset( $this->notices['invalid_key'][ $empty_key ] ); + } + } + + if ( 'plugins.php' === $pagenow && ! empty( $this->notices[ self::EXPIRED_KEY ] ) ) { + return; + } + + $plugin_names = $this->get_formatted_plugin_names( self::INVALID_KEY ); + + /** + * Filters the list of plugins that should trigger an invalid key notice in PUE. + * + * @since 5.0.0 + * + * @param array $plugin_names Array of plugin names that should trigger the invalid key notice. + */ + $plugin_names = apply_filters( 'tec_pue_invalid_key_notice_plugins', $plugin_names ); + + if ( empty( $plugin_names ) ) { + return; + } + + $prompt = sprintf( + _n( + "It looks like you're using %1\$s, but the license key is invalid. Please download the latest version %2\$sfrom your account%3\$s.", + "It looks like you're using %1\$s, but the license keys are invalid. Please download the latest versions %2\$sfrom your account%3\$s.", + count( $this->notices[ self::INVALID_KEY ] ), + 'tribe-common' + ), + $plugin_names, + '', + '' + ); + + /** + * Filters the actions that can be taken if an invalid key is present + * + * @param string $actions Actions + * @param array $plugin_names Plugin names the message applies to + */ + $action_steps = apply_filters( 'tribe_notice_invalid_key_actions', $this->find_your_key_text(), $plugin_names ); + + if ( $action_steps ) { + $action_steps = "

    {$action_steps}

    "; + } + + $this->render_notice( 'pue_key-' . self::INVALID_KEY, "

    {$prompt}

    {$action_steps}" ); + } + + /** + * Generate a notice listing any plugins for which license keys have expired. + * + * This notice should only appear at the top of the plugin admin screen and "trumps" + * the missing/invalid key notice on that screen only. + */ + public function render_expired_key() { + global $pagenow; + + if ( 'plugins.php' !== $pagenow ) { + return; + } + + $plugin_names = $this->get_formatted_plugin_names( self::EXPIRED_KEY ); + + /** + * Filters the list of plugins that should trigger an expired key notice in PUE. + * + * @since 5.0.0 + * + * @param array $plugin_names Array of plugin names that should trigger the expired key notice. + */ + $plugin_names = apply_filters( 'tec_pue_expired_key_notice_plugins', $plugin_names ); + + if ( empty( $plugin_names ) ) { + return; + } + + $prompt = sprintf( _n( + 'There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s', + 'Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s', + count( $this->notices[ self::EXPIRED_KEY ] ), + 'tribe-common' + ), + $plugin_names, + '', + '' + ); + + $renew_action = + '' . + __( 'Renew Your License Now', 'tribe-common' ) . + '' . + __( ' (opens in a new window)', 'tribe-common' ) . + ''; + + $this->render_notice( 'pue_key-' . self::EXPIRED_KEY, "

    $prompt

    $renew_action

    " ); + } + + /** + * Generate a notice listing any plugins which have valid license keys, but those keys + * have met or exceeded the permitted number of installations they can be applied to. + */ + public function render_upgrade_key() { + $plugin_names = $this->get_formatted_plugin_names( self::UPGRADE_KEY ); + + /** + * Filters the list of plugins that should trigger an upgrade key notice in PUE. + * + * @since 5.0.0 + * + * @param array $plugin_names Array of plugin names that should trigger the upgrade key notice. + */ + $plugin_names = apply_filters( 'tec_pue_upgrade_key_notice_plugins', $plugin_names ); + + if ( empty( $plugin_names ) ) { + return; + } + + $prompt = sprintf( _n( + 'You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one.', + 'You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones.', count( $this->notices[ self::UPGRADE_KEY ] ), + 'tribe-common' + ), + $plugin_names, + '', + '' + ); + + $this->render_notice( 'pue_key-' . self::UPGRADE_KEY, "

    $prompt

    " ); + } + + /** + * Renders the notice itself (the provided HTML will be wrapped in a suitable container div). + * + * @param string $slug + * @param string $inner_html + */ + protected function render_notice( $slug, $inner_html ) { + + // Enqueue the notice CSS. + tribe( 'assets' )->enqueue( [ 'tribe-common-admin' ] ); + + $mascot = esc_url( Tribe__Main::instance()->plugin_url . 'src/resources/images/mascot.png' ); + + $html = + '
    +
    + +
    +
    ' . $inner_html . '
    +
    '; + + Tribe__Admin__Notices::instance()->render( $slug, $html, false ); + } + + /** + * @return string + */ + protected function find_your_key_text() { + return sprintf( + __( 'You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s.', 'tribe-common' ), + '', + '' + ); + } + + /** + * Transforms a list of plugins into human readable string. + * + * Examples of output: + * + * # One name + * "Ticket Pro" + * + * # Two names + * "Ticket Pro and Calendar Legend" + * + * # Three names + * "Ticket Pro, Calendar Legend and Date Stars" + * + * + * @since 4.9.12 + * + * @param array|string $plugins Array of plugin classes. + * + * @return string|false + */ + public function get_formatted_plugin_names_from_classes( $plugins ) { + $plugin_list = []; + + foreach ( (array) $plugins as $class_name ) { + $pue = tribe( Tribe__Dependency::class )->get_pue_from_class( $class_name ); + + if ( ! $pue ) { + continue; + } + + if ( ! isset( $this->plugin_names[ $pue->pue_install_key ] ) ) { + continue; + } + + $plugin_list[] = $this->plugin_names[ $pue->pue_install_key ]; + } + + $num_plugins = count( $plugin_list ); + + if ( 0 === $num_plugins ) { + return false; + } + + if ( 1 === $num_plugins ) { + $html = current( $plugin_list ); + } elseif ( 1 < $num_plugins ) { + $all_but_last = join( ', ', array_slice( $plugin_list, 0, count( $plugin_list ) - 1 ) ); + $last = current( array_slice( $plugin_list, count( $plugin_list ) - 1, 1 ) ); + $html = sprintf( _x( '%1$s and %2$s', 'formatted plugin list', 'tribe-common' ), $all_but_last, $last ); + } + + return '' . $html . ''; + } + + /** + * Transforms the array referenced by group into a human readable, + * comma delimited list. + * + * Examples of output: + * + * # One name + * "Ticket Pro" + * + * # Two names + * "Ticket Pro and Calendar Legend" + * + * # Three names + * "Ticket Pro, Calendar Legend and Date Stars" + * + * # Fallback + * "Unknown Plugin(s)" + * + * @param string $group + * + * @return string + */ + protected function get_formatted_plugin_names( $group ) { + if ( ! count( $this->notices[ $group ] ) ) { + return ''; + } + + $plugin_list = array_intersect( $this->registered, array_keys( $this->notices[ $group ] ) ); + $num_plugins = count( $plugin_list ); + + if ( 0 === $num_plugins ) { + return ''; + } elseif ( 1 === $num_plugins ) { + $html = current( $plugin_list ); + } elseif ( 1 < $num_plugins ) { + $all_but_last = join( ', ', array_slice( $plugin_list, 0, count( $plugin_list ) - 1 ) ); + $last = current( array_slice( $plugin_list, count( $plugin_list ) - 1, 1 ) ); + $html = sprintf( _x( '%1$s and %2$s', 'formatted plugin list', 'tribe-common' ), $all_but_last, $last ); + } + + return '' . $html . ''; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Package_Handler.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Package_Handler.php new file mode 100644 index 000000000..960d471f5 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Package_Handler.php @@ -0,0 +1,157 @@ +filesystem = $wp_filesystem; + } + + /** + * @return Tribe__PUE__Package_Handler + */ + public static function instance() { + if ( empty( self::$instance ) ) { + self::$instance = new self(); + } + + return self::$instance; + } + + /** + * Filters the package download step to store the downloaded file with a shorter file name. + * + * @param bool $reply Whether to bail without returning the package. + * Default false. + * @param string $package The package file name or URL. + * @param WP_Upgrader $upgrader The WP_Upgrader instance. + */ + public function filter_upgrader_pre_download( $reply, $package, WP_Upgrader $upgrader ) { + if ( $this->is_mt_package( $package ) ) { + $this->upgrader = $upgrader; + + return $this->download( $package ); + } + + return $reply; + } + + /** + * Whether the current package is an MT plugin package or not. + * + * @param string $package The package file name or URL. + * + * @return bool + */ + protected function is_mt_package( $package ) { + if ( + empty( $package ) + || ! preg_match( '!^(http|https|ftp)://!i', $package ) + ) { + return false; + } + + $query_vars = parse_url( $package, PHP_URL_QUERY ); + + if ( empty( $query_vars ) ) { + return false; + } + + wp_parse_str( $query_vars, $parsed ); + + return isset( $parsed['pu_get_download'] ) && $parsed['pu_get_download'] == 1; + } + + /** + * A mimic of the `WP_Upgrader::download_package` method that adds a step to store the temp file with a shorter + * file name. + * + * @see WP_Upgrader::download_package() + * + * @param string $package The URI of the package. If this is the full path to an + * existing local file, it will be returned untouched. + * + * @return string|WP_Error The full path to the downloaded package file, or a WP_Error object. + */ + protected function download( $package ) { + if ( empty( $this->filesystem ) ) { + // try to connect + $this->upgrader->fs_connect( [ WP_CONTENT_DIR, WP_PLUGIN_DIR ] ); + + global $wp_filesystem; + + // still empty? + if ( empty( $wp_filesystem ) ) { + // bail + return false; + } + + $this->filesystem = $wp_filesystem; + } + + $this->upgrader->skin->feedback( 'downloading_package', $package ); + + $download_file = download_url( $package ); + + if ( is_wp_error( $download_file ) ) { + return new WP_Error( 'download_failed', $this->upgrader->strings['download_failed'], + $download_file->get_error_message() ); + } + + $file = $this->get_short_filename( $download_file ); + + $moved = $this->filesystem->move( $download_file, $file ); + + if ( empty( $moved ) ) { + // we tried, we failed, we bail and let WP do its job + return false; + } + + return $file; + } + + /** + * Returns the absolute path to a shorter filename version of the original download temp file. + * + * The path will point to the same temp dir (WP handled) but shortening the filename to a + * 6 chars hash to cope with OSes limiting the max number of chars in a file path. + * The original filename would be a sanitized version of the URL including query args. + * + * @param string $download_file The absolute path to the original download file. + * + * @return string The absolute path to a shorter name version of the downloaded file. + */ + protected function get_short_filename( $download_file ) { + $extension = pathinfo( $download_file, PATHINFO_EXTENSION ); + $filename = substr( md5( $download_file ), 0, 5 ); + $file = dirname( $download_file ) . '/' . $filename . '.' . $extension; + + return $file; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Plugin_Info.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Plugin_Info.php new file mode 100644 index 000000000..a3dc71592 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Plugin_Info.php @@ -0,0 +1,141 @@ +results ) ) { + $apiResponse = current( $apiResponse->results ); + } + + if ( empty( $apiResponse ) || ! is_object( $apiResponse ) ) { + return null; + } + + //Very, very basic validation. + $valid = ( isset( $apiResponse->name ) && ! empty( $apiResponse->name ) && isset( $apiResponse->version ) && ! empty( $apiResponse->version ) ) || ( isset( $apiResponse->api_invalid ) || isset( $apiResponse->no_api ) ); + if ( ! $valid ) { + return null; + } + + $info = new Tribe__PUE__Plugin_Info(); + + foreach ( get_object_vars( $apiResponse ) as $key => $value ) { + $key = str_replace( 'plugin_', '', $key ); // let's strip out the "plugin_" prefix we've added in plugin-updater-classes. + $info->$key = $value; + } + + return $info; + } + + /** + * Transform plugin info into the format used by the native WordPress.org API + * + * @return object + */ + public function to_wp_format() { + $info = new StdClass; + + // The custom update API is built so that many fields have the same name and format + // as those returned by the native WordPress.org API. These can be assigned directly. + $sameFormat = [ + 'name', + 'slug', + 'version', + 'requires', + 'tested', + 'rating', + 'upgrade_notice', + 'num_ratings', + 'downloaded', + 'homepage', + 'last_updated', + 'api_expired', + 'api_upgrade', + 'api_invalid', + ]; + + foreach ( $sameFormat as $field ) { + if ( isset( $this->$field ) ) { + $info->$field = $this->$field; + } else { + $info->$field = null; + } + } + + //Other fields need to be renamed and/or transformed. + $info->download_link = $this->download_url; + + if ( ! empty( $this->author_homepage ) ) { + $info->author = sprintf( '%s', esc_url( $this->author_homepage ), $this->author ); + } else { + $info->author = $this->author; + } + + if ( is_object( $this->sections ) ) { + $info->sections = get_object_vars( $this->sections ); + } elseif ( is_array( $this->sections ) ) { + $info->sections = $this->sections; + } else { + $info->sections = [ 'description' => '' ]; + } + + return $info; + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Update_Prevention.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Update_Prevention.php new file mode 100644 index 000000000..c5164b44f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Update_Prevention.php @@ -0,0 +1,199 @@ + version ] or empty if it didn't find it. + */ + public function get_dependencies( $content ) { + $regex = "/'(?[^']*)'(?:[^']*)'(?[^']*)',/"; + + if ( ! preg_match_all( $regex, $content, $matches ) ) { + return []; + } + + $dependencies = array_combine( $matches['plugin'], $matches['version'] ); + + return $dependencies; + } + + /** + * Checks for the list of constants associate with plugin to make sure we are dealing + * with a plugin owned by The Events Calendar. + * + * @since 4.9.12 + * + * @param string $plugin Plugin file partial path, folder and main php file. + * + * @return bool + */ + public function is_tribe_plugin( $plugin ) { + $path_constants_list = [ + // The Events Calendar + 'TRIBE_EVENTS_FILE', + + // Events Pro + 'EVENTS_CALENDAR_PRO_FILE', + + // Filter bar + 'TRIBE_EVENTS_FILTERBAR_FILE', + + // Eventbrite Tickets + 'EVENTBRITE_PLUGIN_FILE', + ]; + + foreach ( $path_constants_list as $constant_name ) { + if ( ! defined( $constant_name ) ) { + continue; + } + + if ( false === strpos( constant( $constant_name ), $plugin ) ) { + continue; + } + + return true; + } + + return false; + } + + /** + * Filters the source file location for the upgrade package for the PUE Update_Prevention engine. + * + * @since 4.9.12 + * + * @param string $source File source location. + * @param string $remote_source Remote file source location. + * @param WP_Upgrader $upgrader WP_Upgrader instance. + * @param array $extra Extra arguments passed to hooked filters. + */ + public function filter_upgrader_source_selection( $source, $remote_source, $upgrader, $extras ) { + if ( ! isset( $extras['plugin'] ) ) { + return $source; + } + + $plugin = $extras['plugin']; + + // Bail if we are not dealing with a plugin we own. + if ( ! $this->is_tribe_plugin( $plugin ) ) { + return $source; + } + + $register_path = $source . '/src/Tribe/Plugin_Register.php'; + + // Bail when the Plugin Register file doesn't exist. + if ( ! file_exists( $register_path ) ) { + return $source; + } + + $register_contents = file_get_contents( $register_path ); + + $dependencies = $this->get_dependencies( $register_contents ); + $incompatible_plugins = []; + + foreach ( $dependencies as $class_name => $required_version ) { + // Skip inactive plugin checks. + if ( ! class_exists( $class_name ) ) { + continue; + } + + $constant_name = $class_name . '::VERSION'; + + // Skip if we can't find the version constant. + if ( ! defined( $constant_name ) ) { + continue; + } + + $current_version = constant( $constant_name ); + + // Skip when the version is equal or higher than the required. + if ( version_compare( $current_version, $required_version, '>=' ) ) { + continue; + } + + $pue = tribe( Dependency::class )->get_pue_from_class( $class_name ); + $has_pue_notice = $pue ? tribe( 'pue.notices' )->has_notice( $pue->pue_install_key ) : false; + + // Only throw warning for customers with notices of invalid/expired licenses. + if ( ! $has_pue_notice ) { + continue; + } + + // Flag that we should prevent the Update + $incompatible_plugins[ $class_name ] = $required_version; + } + + // Bail when there are no incompatible plugins. + if ( empty( $incompatible_plugins ) ) { + return $source; + } + + /** + * Filter the if we should prevent the update. + * + * @since 4.9.12 + * + * @param bool $should_revent Flag false to skip the prevention. + * @param array $incompatible_plugins Which plugins were incompatible with new version of the plugin. + * @param string $source File source location. + * @param string $remote_source Remote file source location. + * @param WP_Upgrader $upgrader WP_Upgrader instance. + * @param array $extra Extra arguments passed to hooked filters. + */ + $should_prevent_update = apply_filters( + 'tribe_pue_should_prevent_update_without_license', + true, + $incompatible_plugins, + $source, + $remote_source, + $upgrader, + $extras + ); + + // Bail if the filter above returns anything but true. + if ( true !== $should_prevent_update ) { + return $source; + } + + $full_plugin_path = $remote_source . '/' . $plugin; + $plugin_data = get_plugin_data( $full_plugin_path ); + + $plugins_classes = array_keys( $incompatible_plugins ); + $plugins_list_html = tribe( 'pue.notices' )->get_formatted_plugin_names_from_classes( $plugins_classes ); + + $link_read_more = '' . esc_html__( 'Read more', 'tribe-common' ) . '.'; + + $message = sprintf( + esc_html__( 'Your update failed due to an incompatibility between the version (%1$s) of the %2$s you tried to update to and the version of %3$s that you are using. %4$s', 'tribe-common' ), + esc_html( $plugin_data['Version'] ), + esc_html( $plugin_data['Name'] ), + $plugins_list_html, + $link_read_more + ); + + $error = new WP_Error( + 'tribe-updater-failed-prevention', + $message, + [] + ); + + return $error; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Utility.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Utility.php new file mode 100644 index 000000000..07b6bbf5d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/PUE/Utility.php @@ -0,0 +1,126 @@ +$field ) ) { + continue; + } + + $update->$field = $info->$field; + } + + return $update; + } + + /** + * Transform the update into the format used by WordPress native plugin API. + * + * @return object + */ + public function to_wp_format() { + $update = new StdClass; + + $update->id = $this->id; + $update->plugin = $this->plugin; + $update->slug = $this->slug; + $update->new_version = $this->version; + $update->url = $this->homepage; + $update->package = $this->download_url; + if ( ! empty( $this->upgrade_notice ) ) { + $update->upgrade_notice = $this->upgrade_notice; + } + + // Support custom $update properties coming straight from PUE + if ( ! empty( $this->custom_update ) ) { + $custom_update = get_object_vars( $this->custom_update ); + + foreach ( $custom_update as $field => $custom_value ) { + if ( is_object( $custom_value ) ) { + $custom_value = get_object_vars( $custom_value ); + } + + $update->$field = $custom_value; + } + } + + return $update; + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Plugin_Meta_Links.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Plugin_Meta_Links.php new file mode 100644 index 000000000..fd674cbfb --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Plugin_Meta_Links.php @@ -0,0 +1,147 @@ + Plugins list + */ +class Tribe__Plugin_Meta_Links { + /** + * Class instance + * + * @var Tribe__Plugin_Meta_Links The singleton instance. + */ + private static $instance; + + /** + * The various meta links that will be added + * + * @var array { + * Each plugin that will be filtered. + * + * @type array $plugin_basename { + * Meta links added to this plugin. + * + * @type array { + * Each individual link. + * + * @type string $html The full HTML for this link. + * @type bool $remove Whether we are adding or removing this link. + * } + * } + * } + */ + private $meta_links = []; + + /** + * Returns the singleton instance of this class. + * + * @return Tribe__Plugin_Meta_Links instance. + */ + public static function instance() { + return null === self::$instance ? new self() : self::$instance; + } + + private function __construct() { + add_action( 'plugin_row_meta', [ $this, 'filter_meta_links' ], 10, 2 ); + } + + /** + * Adds an link to the meta list + * + * @param string $plugin Path to plugin file. + * @param string $text Inner text for HTML element. + * @param string $href URL for the link. + * @param array $attributes Key => value attributes for element. + */ + public function add_link( $plugin, $title, $href, $attributes = [] ) { + $attributes['href'] = $href; + + // Build the element. + $html = ' $val ) { + $html .= ' ' . $att . '="' . esc_attr( $val ) . '"'; + } + + $html .= '>' . esc_html( $title ) . ''; + + $this->set( $plugin, $html, false ); + } + + /** + * Adds or removes the specified HTML link + * + * @param string $plugin Path to plugin file. + * @param string $html Full HTML for this link. + * @param bool $remove Whether to add this HTML/link or match and remove it. + */ + public function set( $plugin, $html, $remove = false ) { + $basename = plugin_basename( $plugin ); + + // Get any current links for this plugin. + $cur_links = Tribe__Utils__Array::get( $this->meta_links, $basename, [] ); + + $cur_links[] = [ + 'html' => $html, + 'remove' => $remove, + ]; + + $this->meta_links = Tribe__Utils__Array::set( $this->meta_links, $basename, $cur_links ); + } + + /** + * Filters meta links on the plugins list page + * + * @param array $links The current plugin's links. + * @param string $basename The plugin currently being filtered. + * + * @return array Filtered action links array. + */ + public function filter_meta_links( $links, $basename ) { + // Gets any links that are set for this plugin, defaults to an empty array. + $set_links = Tribe__Utils__Array::get( $this->meta_links, $basename, [] ); + + foreach ( $set_links as $link ) { + + if ( true === $link['remove'] ) { + // Remove a link. + $pos = array_search( $link['html'], $links ); + + if ( false !== $pos ) { + unset( $links[ $pos ] ); + } + } else { + // Add a link. + $links[] = $link['html']; + } + } + + return $links; + } + + /** + * Prevent cloning the singleton with 'clone' operator + * + * @return void + */ + final public function __clone() { + _doing_it_wrong( + __FUNCTION__, + 'Can not use this method on singletons.', + '4.3' + ); + } + + /** + * Prevent unserializing the singleton instance + * + * @return void + */ + final public function __wakeup() { + _doing_it_wrong( + __FUNCTION__, + 'Can not use this method on singletons.', + '4.3' + ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Plugins.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Plugins.php new file mode 100644 index 000000000..5d1482fc1 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Plugins.php @@ -0,0 +1,184 @@ + Common name for the plugin, used in places such as WP Admin messages + * 'class' => Main plugin class + * 'thickbox_url' => Download or purchase URL for plugin from within /wp-admin/ thickbox + * ] + */ + private $tribe_plugins = [ + [ + 'short_name' => 'Event Tickets', + 'class' => 'Tribe__Tickets__Main', + 'thickbox_url' => 'plugin-install.php?tab=plugin-information&plugin=event-tickets&TB_iframe=true', + ], + [ + 'short_name' => 'Event Tickets Plus', + 'class' => 'Tribe__Tickets_Plus__Main', + 'thickbox_url' => 'https://theeventscalendar.com/product/wordpress-event-tickets-plus/?TB_iframe=true', + ], + [ + 'short_name' => 'The Events Calendar', + 'class' => 'Tribe__Events__Main', + 'thickbox_url' => 'plugin-install.php?tab=plugin-information&plugin=the-events-calendar&TB_iframe=true', + ], + [ + 'short_name' => 'Events Calendar Pro', + 'class' => 'Tribe__Events__Pro__Main', + 'thickbox_url' => 'https://theeventscalendar.com/product/wordpress-events-calendar-pro/?TB_iframe=true', + ], + [ + 'short_name' => 'Community Events', + 'class' => 'Tribe__Events__Community__Main', + 'thickbox_url' => 'https://theeventscalendar.com/product/wordpress-community-events/?TB_iframe=true', + ], + [ + 'short_name' => 'Community Tickets', + 'class' => 'Tribe__Events__Community__Tickets__Main', + 'thickbox_url' => 'https://theeventscalendar.com/product/community-tickets/?TB_iframe=true', + ], + [ + 'short_name' => 'Filter Bar', + 'class' => 'Tribe__Events__Filterbar__View', + 'thickbox_url' => 'https://theeventscalendar.com/product/wordpress-events-filterbar/?TB_iframe=true', + ], + [ + 'short_name' => 'Facebook Events', + 'class' => 'Tribe__Events__Facebook__Importer', + 'thickbox_url' => 'https://theeventscalendar.com/product/facebook-events/?TB_iframe=true', + ], + [ + 'short_name' => 'iCal Importer', + 'class' => 'Tribe__Events__Ical_Importer__Main', + 'thickbox_url' => 'https://theeventscalendar.com/product/ical-importer/?TB_iframe=true', + ], + [ + 'short_name' => 'Eventbrite Tickets', + 'class' => 'Tribe__Events__Tickets__Eventbrite__Main', + 'thickbox_url' => 'https://theeventscalendar.com/product/wordpress-eventbrite-tickets/?TB_iframe=true', + ], + [ + 'short_name' => 'Advanced Post Manager', + 'class' => 'Tribe_APM', + 'thickbox_url' => 'plugin-install.php?tab=plugin-information&plugin=advanced-post-manager&TB_iframe=true', + ], + ]; + + /** + * Searches the plugin list for key/value pair and return the full details for that plugin + * + * @param string $search_key The array key this value will appear in + * @param string $search_val The value itself + * + * @return array|null + */ + public function get_plugin_by_key( $search_key, $search_val ) { + foreach ( $this->get_list() as $plugin ) { + if ( isset( $plugin[ $search_key ] ) && $plugin[ $search_key ] === $search_val ) { + return $plugin; + } + } + + return null; + } + + /** + * Retrieves plugins details by plugin name + * + * @param string $name Common name for the plugin, not necessarily the lengthy name in the WP Admin Plugins list + * + * @return array|null + */ + public function get_plugin_by_name( $name ) { + return $this->get_plugin_by_key( 'short_name', $name ); + } + + /** + * Retrieves plugins details by class name + * + * @param string $main_class Main/base class for this plugin + * + * @return array|null + */ + public function get_plugin_by_class( $main_class ) { + return $this->get_plugin_by_key( 'class', $main_class ); + } + + /** + * Retrieves the entire list + * + * @return array + */ + public function get_list() { + /** + * Gives an opportunity to filter the list of tribe plugins + * + * @since 4.7.18 + * + * @param array Contains a list of all tribe plugins + */ + return apply_filters( 'tribe_plugins_get_list', $this->tribe_plugins ); + } + + /** + * Checks if given plugin is active. Usually a The Events Calendar plugin. + * + * @param string $plugin_name The name of the plugin. Each plugin defines their name upon hooking on the filter. + * + * @since 4.12.1 + * + * @return bool True if plugin is active. False if plugin is not active. + */ + public static function is_active( $plugin_name ) { + if ( ! did_action( "plugins_loaded" ) ) { + _doing_it_wrong( + __METHOD__, + __( 'Using this function before "plugins_loaded" action has fired can return unreliable results.', 'tribe-common' ), + '4.12.6' + ); + } + + /** + * Filters the array that each Tribe plugin overrides to + * set itself as active when this function is called. + * + * @example [ 'the-events-calendar' => true, 'event-tickets' => true ] + * + * @since 4.12.1 + * + * @return array Plugin slugs as keys and bool as value for whether it's active or not. + */ + $plugins = apply_filters( 'tribe_active_plugins', [] ); + + return isset( $plugins[ $plugin_name ] ) && tribe_is_truthy( $plugins[ $plugin_name ] ); + } + + /** + * Retrieves a list of active plugins. + * + * @since 5.1.3 + * + * @return array List of active plugins. + */ + public function get_active_plugins() { + $plugins = $this->get_list(); + + $plugins = array_filter( $plugins, function ( $plugin ) { + return self::is_active( $plugin['short_name'] ); + } ); + + return $plugins; + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Plugins_API.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Plugins_API.php new file mode 100644 index 000000000..471986ec9 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Plugins_API.php @@ -0,0 +1,289 @@ + [ + 'title' => __( 'The Events Calendar', 'tribe-common' ), + 'slug' => 'the-events-calendar', + 'link' => 'https://evnt.is/1ai-', + 'plugin-dir' => 'the-events-calendar', + 'main-file' => 'the-events-calendar.php', + 'description' => __( 'Our flagship free calendar', 'tribe-common' ), + 'description-help' => __( 'The #1 calendar for WordPress', 'tribe-common' ), + 'features' => [ + __( 'Customizable', 'tribe-common' ), + __( 'Import & export events', 'tribe-common' ), + __( 'Timezone support', 'tribe-common' ), + __( 'Multiple views', 'tribe-common' ), + ], + 'image' => 'images/shop/calendar.jpg', + 'logo' => 'images/logo/the-events-calendar.svg', + 'is_installed' => class_exists( 'Tribe__Events__Main' ), + 'free' => true, + 'active_installs' => 800000, + ], + 'event-aggregator' => [ + 'title' => __( 'Event Aggregator', 'tribe-common' ), + 'slug' => 'event-aggregator', + 'link' => 'https://evnt.is/1aj0', + 'plugin-dir' => '', + 'main-file' => '', + 'description' => __( 'Automated imports for your calendar', 'tribe-common' ), + 'description-help' => __( 'Import events from Meetup, Eventbrite, iCal, Google Calendar, and more.', 'tribe-common' ), + 'features' => [ + __( 'Schedule automated imports', 'tribe-common' ), + __( 'Customizable', 'tribe-common' ), + __( 'Works with Google Calendar, Meetup, and more', 'tribe-common' ), + __( 'Refine by date, location, or keyword', 'tribe-common' ), + ], + 'image' => 'images/shop/aggregator.jpg', + 'logo' => 'images/logo/event-aggregator.svg', + 'is_installed' => class_exists( 'Tribe__Events__Aggregator' ) && Tribe__Events__Aggregator::is_service_active(), + 'free' => false, + 'active_installs' => 20000, + ], + 'event-automator' => [ + 'title' => __( 'Event Automator', 'tribe-common' ), + 'slug' => 'event-automator', + 'link' => 'https://evnt.is/1bc7', + 'plugin-dir' => '', + 'main-file' => '', + 'description' => __( 'Automate your event workflow with Zapier—no code required!', 'tribe-common' ), + 'description-help' => __( 'Connect The Events Calendar and Event Tickets with thousands of the most popular apps.', 'tribe-common' ), + 'features' => [ + __( 'Lead Management', 'tribe-common' ), + __( 'Communication Outreach', 'tribe-common' ), + __( 'Internal Processes', 'tribe-common' ), + __( 'Data Management', 'tribe-common' ), + ], + 'image' => 'images/shop/automator.svg', + 'logo' => 'images/logo/event-automator.svg', + 'is_installed' => class_exists( 'TEC\Event_Automator\Plugin' ), + 'free' => false, + 'active_installs' => 0, + ], + 'events-calendar-pro' => [ + 'title' => __( 'Events Calendar Pro', 'tribe-common' ), + 'slug' => 'events-calendar-pro', + 'link' => 'https://evnt.is/1ai-', + 'plugin-dir' => 'events-calendar-pro', + 'main-file' => 'events-calendar-pro.php', + 'description' => __( 'Power up your calendar with Pro', 'tribe-common' ), + 'description-help' => __( 'The #1 calendar for WordPress', 'tribe-common' ), + 'features' => [ + __( 'Premium support', 'tribe-common' ), + __( 'Recurring events & series', 'tribe-common' ), + __( 'Additional views', 'tribe-common' ), + __( 'Shortcodes', 'tribe-common' ), + __( 'Duplicate events', 'tribe-common' ), + ], + 'image' => 'images/shop/pro.jpg', + 'logo' => 'images/logo/events-calendar-pro.svg', + 'is_installed' => class_exists( 'Tribe__Events__Pro__Main' ), + 'free' => false, + 'active_installs' => 100000, + ], + 'event-tickets' => [ + 'title' => __( 'Event Tickets', 'tribe-common' ), + 'slug' => 'event-tickets', + 'link' => 'https://evnt.is/1aj1', + 'plugin-dir' => 'event-tickets', + 'main-file' => 'event-tickets.php', + 'description' => __( 'Manage ticketing and RSVPs', 'tribe-common' ), + 'description-help' => __( 'Collect RSVPs and sell tickets', 'tribe-common' ), + 'features' => [ + __( 'Add tickets and RSVP to any post', 'tribe-common' ), + __( 'Paypal integration', 'tribe-common' ), + __( 'Attendee reports', 'tribe-common' ), + __( 'Customizable ticket template', 'tribe-common' ), + ], + 'image' => 'images/shop/tickets.jpg', + 'logo' => 'images/logo/event-tickets.svg', + 'is_installed' => class_exists( 'Tribe__Tickets__Main' ), + 'free' => true, + 'active_installs' => 20000, + ], + 'event-tickets-plus' => [ + 'title' => __( 'Event Tickets Plus', 'tribe-common' ), + 'slug' => 'event-tickets-plus', + 'link' => 'http://evnt.is/1aj1', + 'plugin-dir' => 'event-tickets-plus', + 'main-file' => 'event-tickets-plus.php', + 'description' => __( 'Monetize your events', 'tribe-common' ), + 'description-help' => __( 'Collect RSVPs and sell tickets', 'tribe-common' ), + 'features' => [ + __( 'Custom registration fields', 'tribe-common' ), + __( 'WooCommerce compatibility', 'tribe-common' ), + __( 'Ticket scanning with mobile app', 'tribe-common' ), + __( 'Custom attendee registration fields', 'tribe-common' ), + ], + 'image' => 'images/shop/tickets-plus.jpg', + 'logo' => 'images/logo/event-tickets-plus.svg', + 'is_installed' => class_exists( 'Tribe__Tickets_Plus__Main' ), + 'free' => false, + 'active_installs' => 10000, + ], + 'promoter' => [ + 'title' => __( 'Promoter', 'tribe-common' ), + 'slug' => 'promoter', + 'link' => 'https://evnt.is/1acy', + 'plugin-dir' => '', + 'main-file' => '', + 'description' => __( 'An email marketing solution for events and the people running them', 'tribe-common' ), + 'description-help' => __( 'Email marketing to promote your events', 'tribe-common' ), + 'features' => [ + __( 'Automate email touchpoints', 'tribe-common' ), + __( 'Customize email templates', 'tribe-common' ), + __( 'Streamline your email process', 'tribe-common' ), + __( 'Segment your attendee lists', 'tribe-common' ), + ], + 'image' => 'images/shop/promoter.jpg', + 'logo' => 'images/logo/promoter.svg', + 'is_installed' => tribe( 'promoter.pue' )->has_license_key(), + 'free' => false, + 'active_installs' => 1000, + ], + 'tribe-filterbar' => [ + 'title' => __( 'Filter Bar', 'tribe-common' ), + 'slug' => 'tribe-filterbar', + 'link' => 'https://evnt.is/19o6', + 'plugin-dir' => 'the-events-calendar-filterbar', + 'main-file' => 'the-events-calendar-filter-view.php', + 'description' => __( 'Help users find exactly the right event', 'tribe-common' ), + 'description-help' => __( 'Allow users to search for events by category, tag, venue, organizer, day of the week, time of day, and price.', 'tribe-common' ), + 'features' => [ + __( 'Configurable set of filters', 'tribe-common' ), + __( 'Horizontal or vertical', 'tribe-common' ), + __( 'Filter category, price, and more', 'tribe-common' ), + __( 'Filter distance (for Events Calendar Pro)', 'tribe-common' ), + ], + 'image' => 'images/shop/filter-bar.jpg', + 'logo' => 'images/logo/filterbar.svg', + 'is_installed' => class_exists( 'Tribe__Events__Filterbar__View' ), + 'free' => false, + 'active_installs' => 20000, + ], + 'events-community' => [ + 'title' => __( 'Community Events', 'tribe-common' ), + 'slug' => 'events-community', + 'link' => 'https://evnt.is/19o7', + 'plugin-dir' => 'the-events-calendar-community-events', + 'main-file' => 'tribe-community-events.php', + 'description' => __( 'Users submit events to your calendar', 'tribe-common' ), + 'description-help' => __( 'Enable 3rd party event submissions.', 'tribe-common' ), + 'features' => [ + __( 'Publishing Control', 'tribe-common' ), + __( 'Event Submission Form', 'tribe-common' ), + __( 'Registered User Settings', 'tribe-common' ), + __( 'Email notifications', 'tribe-common' ), + ], + 'image' => 'images/shop/community.jpg', + 'logo' => 'images/logo/community-events.svg', + 'is_installed' => class_exists( 'Tribe__Events__Community__Main' ), + 'free' => false, + 'active_installs' => 20000, + ], + 'events-community-tickets' => [ + 'title' => __( 'Community Tickets', 'tribe-common' ), + 'slug' => 'events-community-tickets', + 'link' => 'https://evnt.is/19o8', + 'plugin-dir' => 'the-events-calendar-community-events-tickets', + 'main-file' => 'events-community-tickets.php', + 'description' => __( 'Run your own events marketplace', 'tribe-common' ), + 'description-help' => __( 'Let users create and sell tickets for events they submit to your calendar.', 'tribe-common' ), + 'features' => [ + __( 'Users submit events and sell tickets', 'tribe-common' ), + __( 'Split commission with users', 'tribe-common' ), + __( 'No admin access required', 'tribe-common' ), /* code review: fail this */ + __( 'Sales reporting', 'tribe-common' ), + ], + 'requires' => _x( 'Event Tickets Plus and Community Events', 'Names of required plugins for Community Tickets', 'tribe-common' ), + 'image' => 'images/shop/community-tickets.jpg', + 'logo' => 'images/logo/community-tickets.svg', + 'is_installed' => class_exists( 'Tribe__Events__Community__Tickets__Main' ), + 'free' => false, + 'active_installs' => 10000, + ], + 'tribe-eventbrite' => [ + 'title' => __( 'Eventbrite Tickets', 'tribe-common' ), + 'slug' => 'tribe-eventbrite', + 'link' => 'https://evnt.is/19o9', + 'plugin-dir' => 'the-events-calendar-eventbrite-tickets', + 'main-file' => 'tribe-eventbrite.php', + 'description' => __( 'Unite the power of TEC with the ticketing of Eventbrite', 'tribe-common' ), + 'description-help' => __( 'Create Eventbrite tickets and events right from your WordPress dashboard.', 'tribe-common' ), + 'features' => [ + __( 'Manage tickets from WordPress', 'tribe-common' ), + __( 'Ticket availability automatically updates', 'tribe-common' ), + __( 'Integrated with your events on Eventbrite', 'tribe-common' ), + __( 'Automatically import your events', 'tribe-common' ), + ], + 'image' => 'images/shop/eventbrite.jpg', + 'logo' => 'images/logo/eventbrite-tickets.svg', + 'is_installed' => class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ), + 'free' => false, + 'active_installs' => 20000, + ], + 'image-widget-plus' => [ + 'title' => __( 'Image Widget Plus', 'tribe-common' ), + 'slug' => 'image-widget-plus', + 'link' => 'https://evnt.is/19nv', + 'plugin-dir' => 'image-widget-plus', + 'main-file' => 'image-widget-plus.php', + 'description' => __( 'Beautiful display options for your favorite photos.', 'tribe-common' ), + 'features' => [ + __( 'Multi-Image Support', 'tribe-common' ), + __( 'Lightbox', 'tribe-common' ), + __( 'Slideshow', 'tribe-common' ), + __( 'Random Images', 'tribe-common' ), + ], + 'image' => 'images/shop/image-widget-plus.jpg', + 'logo' => 'images/logo/image-widget-plus.svg', + 'is_installed' => class_exists( 'Tribe__Image__Plus__Main' ), + 'free' => false, + 'active_installs' => 2500, + ], + 'events-virtual' => [ + 'title' => __( 'Virtual Events', 'tribe-common' ), + 'slug' => 'events-virtual', + 'link' => 'http://evnt.is/virtual-events', + 'plugin-dir' => 'events-virtual', + 'main-file' => 'events-virtual.php', + 'description' => __( 'Features to optimize your calendar for virtual events.', 'tribe-common' ), + 'description-help' => __( 'Highlight virtual events on you calendar and integrate with your favorite online meeting tools.', 'tribe-common' ), + 'features' => [ + __( 'Zoom integration', 'tribe-common' ), + __( 'Virtual event labels', 'tribe-common' ), + __( 'Status control for canceled or postponed events', 'tribe-common' ), + __( 'Embed livestreams and videos', 'tribe-common' ), + ], + 'image' => 'images/shop/virtual-events.jpg', + 'logo' => 'images/logo/virtual-events.svg', + 'is_installed' => defined( 'EVENTS_VIRTUAL_FILE' ), + 'free' => false, + 'active_installs' => 2500, + ], + ]; + + return $products; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Post_History.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Post_History.php new file mode 100644 index 000000000..fc21e25b8 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Post_History.php @@ -0,0 +1,134 @@ +post_id = $post_id; + } + + /** + * Records a new history entry for the current post. + * + * @param string $message + * @param array $data + */ + public function add_entry( $message, array $data = [] ) { + $datetime = current_time( 'mysql' ); + $checksum = uniqid( substr( hash( 'md5', $datetime . $message . serialize( $data ) ), 0, 8 ) . '_' ); + + $log_entry = wp_slash( json_encode( [ + 'datetime' => $datetime, + 'message' => $message, + 'data' => $data, + 'checksum' => $checksum, + ] ) ); + + add_post_meta( $this->post_id, self::HISTORY_KEY, $log_entry ); + } + + /** + * Indicates if any history exists for the current post. + * + * @return bool + */ + public function has_entries() { + $first_available_entry = get_post_meta( $this->post_id, self::HISTORY_KEY, true ); + return ! empty( $first_available_entry ); + } + + /** + * Returns all historical records for the current post as an array + * of objects, each object taking the form: + * + * { + * "datetime": "yyyy-mm-dd hh:ii:ss", + * "message": "...", + * "data": [] + * } + * + * @return array + */ + public function get_entries() { + $entries = []; + + foreach ( get_post_meta( $this->post_id, self::HISTORY_KEY ) as $log_entry ) { + $log_entry = json_decode( $log_entry ); + + if ( ! $log_entry ) { + continue; + } + + $entries[] = $log_entry; + } + + return $entries; + } + + /** + * Deletes all entries for the current post that match the provided datetime + * string and (optionally) also match the provided checksum. + * + * Returns the total number of deleted entries, which may be zero if none were matched; + * can also be more than one if multiple entries were logged at the same time and no + * checksum is provided. + * + * @param string $datetime + * @param string $checksum optional value to more precisely specify the entry to be deleted + * + * @return int + */ + public function delete_entry( $datetime, $checksum = null ) { + $deleted = 0; + + foreach ( $this->get_entries() as $entry ) { + if ( $entry->datetime !== $datetime ) { + continue; + } + + if ( null !== $checksum && $entry->checksum !== $checksum ) { + continue; + } + + if ( delete_post_meta( $this->post_id, self::HISTORY_KEY, json_encode( $entry ) ) ) { + $deleted++; + } + } + + return $deleted; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Post_Transient.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Post_Transient.php new file mode 100644 index 000000000..65655ffa7 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Post_Transient.php @@ -0,0 +1,214 @@ +ID; + } + + if ( has_filter( 'tribe_pre_post_meta_transient_' . $transient ) ) { + /** + * Attach an action before getting the new Transient + * + * @since 4.1 + * + * @param int $post_id Post ID + * @param string $transient The Post Meta Key + */ + $pre = apply_filters( 'tribe_pre_post_meta_transient_' . $transient, $post_id, $transient ); + if ( false !== $pre ) { + return $pre; + } + } + + if ( $_wp_using_ext_object_cache ) { + $value = wp_cache_get( "tribe_{$transient}-{$post_id}", "tribe_post_meta_transient-{$post_id}" ); + } else { + $meta_timeout = '_transient_timeout_' . $transient; + $meta = '_transient_' . $transient; + $value = get_post_meta( $post_id, $meta, false ); + + // if there aren't any values, communicate that it did not fetch data from post transient + if ( ! is_array( $value ) || 0 === count( $value ) ) { + return false; + } + + // grab the first value, because that's all we care about + $value = current( $value ); + + if ( $value && ! defined( 'WP_INSTALLING' ) ) { + if ( get_post_meta( $post_id, $meta_timeout, true ) < time() ) { + $this->delete( $post_id, $transient ); + + return false; + } + } + } + + /** + * Attach an action after getting the new Transient + * + * @since 4.1 + * + * @param int $post_id Post ID + * @param string $transient The Post Meta Key + */ + return has_filter( 'tribe_post_meta_transient_' . $transient ) + ? apply_filters( 'tribe_post_meta_transient_' . $transient, $value, $post_id ) + : $value; + } + + /** + * Delete a post meta transient. + * + * @since 4.1 + * + * @param int $post_id The Post ID, can also be a WP_Post. + * @param string $transient Post Meta to Delete. + * @param string $value Only delete if the value Matches. + * + * @return boolean If we were able to delete the transient. + */ + public function delete( $post_id, $transient, $value = null ) { + global $_wp_using_ext_object_cache; + + if ( is_numeric( $post_id ) ) { + $post_id = (int) $post_id; + } else { + $post = get_post( $post_id ); + $post_id = $post->ID; + } + + /** + * Use this to pre attach an action to deleting a Post Transient + * + * @since 4.1 + * + * @param int $post_id Post ID + * @param string $transient The Post Meta Key + */ + do_action( 'tribe_delete_post_meta_transient_' . $transient, $post_id, $transient ); + + if ( $_wp_using_ext_object_cache ) { + $result = wp_cache_delete( "tribe_{$transient}-{$post_id}", "tribe_post_meta_transient-{$post_id}" ); + } else { + $meta_timeout = '_transient_timeout_' . $transient; + $meta = '_transient_' . $transient; + $result = delete_post_meta( $post_id, $meta, $value ); + if ( $result ) { + delete_post_meta( $post_id, $meta_timeout, $value ); + } + } + + if ( $result ) { + /** + * Use this to attach an Action to when the Transient is deleted + * + * @since 4.1 + * + * @param int $post_id Post ID + * @param string $transient The Post Meta Key + */ + do_action( 'tribe_deleted_post_meta_transient', $transient, $post_id, $transient ); + } + + return $result; + } + + /** + * Sets a new value for the Transient. + * + * @since 4.1 + * + * @param int $post_id The Post ID, can also be a WP_Post. + * @param string $transient Post Meta to set. + * @param string $value Only delete if the value Matches. + * @param int $expiration How long this transient will be valid, in seconds. + * + * @return int|false Meta ID on success, false on failure. + */ + public function set( $post_id, $transient, $value, $expiration = 0 ) { + global $_wp_using_ext_object_cache; + + if ( is_numeric( $post_id ) ) { + $post_id = (int) $post_id; + } else { + $post = get_post( $post_id ); + $post_id = $post->ID; + } + + $this->delete( $post_id, $transient ); + + /** + * Attach an action before setting the new Transient + * + * @since 4.1 + * + * @param int $post_id Post ID + * @param string $transient The Post Meta Key + */ + if ( has_filter( 'tribe_pre_set_post_meta_transient_' . $transient ) ) { + $value = apply_filters( 'tribe_pre_set_post_meta_transient_' . $transient, $value, $post_id, $transient ); + } + + if ( $_wp_using_ext_object_cache ) { + $result = wp_cache_set( "tribe_{$transient}-{$post_id}", $value, "tribe_post_meta_transient-{$post_id}", $expiration ); + } else { + $meta_timeout = '_transient_timeout_' . $transient; + $meta = '_transient_' . $transient; + if ( $expiration ) { + add_post_meta( $post_id, $meta_timeout, time() + $expiration, true ); + } + $result = add_post_meta( $post_id, $meta, $value, true ); + } + + if ( $result ) { + /** + * Attach an action after setting the new Transient + * + * @since 4.1 + * + * @param int $post_id Post ID + * @param string $transient The Post Meta Key + */ + do_action( 'tribe_set_post_meta_transient_' . $transient, $post_id, $transient ); + } + + return $result; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Handler.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Handler.php new file mode 100644 index 000000000..ccad1f680 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Handler.php @@ -0,0 +1,361 @@ +action = call_user_func( [ $class, 'action' ] ); + $this->identifier = $this->prefix . '_' . $this->action; + + add_action( 'wp_ajax_' . $this->identifier, [ $this, 'maybe_handle' ] ); + + /** + * Filters whether background processing should be triggered and handled on + * non-private AJAX requests as the ones triggered by a non logged in user. + * Defaults to `true` to exploit any possible chance to process. + * + * @since 4.9.5 + * + * @param bool $allow_nopriv Whether background processing should be triggered and handled on + * non-private AJAX requests or not. + * @param static $this This handler instance. + */ + $allow_nopriv = apply_filters( 'tribe_process_allow_nopriv_handling', true, $this ); + + if ( $allow_nopriv ) { + add_action( 'wp_ajax_nopriv_' . $this->identifier, [ $this, 'maybe_handle' ] ); + } + + $this->healthcheck_cron_hook_id = $this->identifier; + $this->feature_detection = tribe( 'feature-detection' ); + + /* + * This object might have been built while processing crons so + * we hook on the the object cron identifier to handle the task + * if the cron-triggered action ever fires. + */ + add_action( $this->healthcheck_cron_hook_id, [ $this, 'maybe_handle' ] ); + } + + /** + * Returns the async process action name. + * + * Extending classes must override this method to return their unique action slug. + * + * @since 4.7.12 + * + * @return string + * + * @throws RuntimeException If the extending class does not override this method. + */ + public static function action() { + $class = static::class; + throw new RuntimeException( "Class {$class} should override the `action` method to define its own unique identifier." ); + } + + /** + * Handles the process request if valid and if authorized. + * + * @since 4.7.23 + * @since 4.9.5 Pulled the `maybe_handle` implementation of the `WP_Async_Request` class. + * + * @param array|null $data_source A source of data if not provided in the request; used for + * cron-based fallback. + */ + public function maybe_handle( $data_source = null ) { + $data_source = (array) $data_source; + + if ( $this->feature_detection->supports_async_process() ) { + // Don't lock up other requests while processing. + session_write_close(); + + check_ajax_referer( $this->identifier, 'nonce' ); + + // Let's make sure to hydrate date from the request if not set. + if ( count( array_filter( $data_source ) ) < 1 ) { + $data_source = $_POST; + } + + do_action( + 'tribe_log', + 'debug', + $this->identifier, + [ + 'action' => 'async_handling', + 'data_source' => $data_source, + 'payload' => $_POST, + ] + ); + + $this->handle( $data_source ); + + wp_die(); + } + + /* + * If the environment does not support AJAX-based async processing then + * fallback to use the cron-based approach and just call the handle method + * removing it first from the action to avoid multiple calls. + */ + wp_clear_scheduled_hook( $this->healthcheck_cron_hook_id, [ $data_source ] ); + + do_action( + 'tribe_log', + 'debug', + $this->identifier, + array_merge( [ 'action' => 'cron_handling' ], $data_source ) ); + + $this->handle( $data_source ); + } + + /** + * Overrides the base `dispatch` method to allow for constants and/or environment vars to run + * async requests in sync mode. + * + * @since 4.7.12 + * @since 4.9.5 Pulled `dispatch` method logic from the `WP_Async_Request` class. + * + * @return mixed + */ + public function dispatch() { + if ( + ( defined( 'TRIBE_NO_ASYNC' ) && true === TRIBE_NO_ASYNC ) + || true === (bool) getenv( 'TRIBE_NO_ASYNC' ) + ) { + do_action( 'tribe_log', 'debug', $this->identifier, [ 'action' => 'sync_handle', 'data' => $this->data ] ); + + return $this->sync_handle( $this->data ); + } + + if ( $this->feature_detection->supports_async_process() ) { + $url = add_query_arg( $this->get_query_args(), $this->get_query_url() ); + $args = $this->get_post_args(); + + do_action( 'tribe_log', 'debug', $this->identifier, [ 'action' => 'async_dispatch', 'data' => $this->data ] ); + + return wp_remote_post( esc_url_raw( $url ), $args ); + } + + /* + * If async AJAX-based processing is not available then we "dispatch" + * by scheduling a single cron event immediately (as soon as possible) + * for this handler cron identifier. + */ + if ( ! wp_next_scheduled( $this->healthcheck_cron_hook_id, [ $this->data ] ) ) { + // Schedule the event to happen as soon as possible. + $scheduled = wp_schedule_single_event( time() - 1, $this->healthcheck_cron_hook_id, [ $this->data ] ); + + if ( false === $scheduled ) { + /** @var Tribe__Log__Logger $logger */ + $logger = tribe( 'logger' ); + $class = get_class( $this ); + $src = call_user_func( [ $class, 'action' ] ); + $logger->log( 'Could not schedule event for cron-based handling', Tribe__Log::ERROR, $src ); + + do_action( + 'tribe_log', + 'error', + $this->identifier, + [ 'action' => 'schedule_cron', 'data' => $this->data ] + ); + } + + do_action( + 'tribe_log', + 'debug', + $this->identifier, + [ 'action' => 'schedule_cron', 'data' => $this->data ] + ); + } + + return true; + } + + /** + * Handles the process immediately, not in an async manner. + * + * @since 4.7.12 + * + * @param array|null $data_source If not provided the method will read the handler data from the + * request array. + * + * @return mixed|null The result of the synchronous handling. + */ + abstract public function sync_handle( array $data_source = null ); + + /** + * Returns an array of arguments that will be used to send the POST request. + * + * @since 4.9.5 Pulled from the `WP_Async_Request` class. + * + * @return array An array of arguments for the POST request. + */ + protected function get_query_args() { + if ( null !== $this->query_args ) { + return $this->query_args; + } + + return [ + 'action' => $this->identifier, + 'nonce' => wp_create_nonce( $this->identifier ), + ]; + } + + /** + * Returns the URL that wil be used to post the request. + * + * @since 4.9.5 Pulled from the `WP_Async_Request` class. + * + * @return string The URL that will be used to POST the dispatch request; defaults + * to the `admin-ajax.php` one. + */ + protected function get_query_url() { + if ( null !== $this->query_url ) { + return $this->query_url; + } + + return admin_url( 'admin-ajax.php' ); + } + + /** + * Returns the arguments that will be used to send the POST request. + * + * @since 4.9.5 Pulled from the `WP_Async_Request` class. + * + * @return array An array of arguments that will be used to send the POST request. + */ + protected function get_post_args() { + if ( null !== $this->post_args ) { + return $this->post_args; + } + + return [ + 'timeout' => 0.01, + 'blocking' => false, + 'body' => $this->data, + 'cookies' => $_COOKIE, + 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), + ]; + } + + /** + * Returns this handler cron hook identifier. + * + * The handler cron hook identifier is the one that the handler + * will use to schedule a single cron event when the `dispatch` + * method is called and the environment does not support async + * processing. + * + * @since 4.7.23 + * + * @return string The complete cron hook name (identifier) for + * this handler. + */ + public function get_healthcheck_cron_hook_id() { + return $this->healthcheck_cron_hook_id; + } + + /** + * Sets the that will be used during the request. + * + * @since 4.9.5 Pulled from the `WP_Async_Request` class. + * + * @param array $data Data. + * + * @return $this This handler instance. + */ + public function data( $data ) { + $this->data = $data; + + return $this; + } + + /** + * Handles the request and performs an action. + * + * @since 4.9.5 Pulled from the `WP_Async_Request` class. + * + * @param array|null $data_source A source of data if not provided in the request; used for + * cron-based fallback. + * + * @return null|array Depending on the context of the call, cron or async, either the result + * of the handling (cron) or nothing (async). + */ + abstract protected function handle( array $data_source = null ); +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Post_Thumbnail_Setter.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Post_Thumbnail_Setter.php new file mode 100644 index 000000000..f019d1dfa --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Post_Thumbnail_Setter.php @@ -0,0 +1,176 @@ +set_post_id( $post_id ); + * $post_thumbnail_setter->set_post_thumbnail( 'http://foo.com/random-image.jpg' ); + * $post_thumbnail_setter->dispatch(); + * + * @since 4.7.12 + */ +class Tribe__Process__Post_Thumbnail_Setter extends Tribe__Process__Handler { + /** + * @var int The ID of the post the post thumbnail should be assigned to. + */ + protected $post_id; + + /** + * @var int|string Either the ID of an attachment that should be set as the post thumbnail + * or the full URL, or file path, to it. + */ + protected $post_thumbnail; + + /** + * {@inheritdoc} + */ + public static function action() { + return 'post_thumbnail_setter'; + } + + /** + * {@inheritdoc} + */ + public function dispatch() { + if ( ! isset( $this->post_id, $this->post_thumbnail ) ) { + // since this is a developer error we are not localizing this error string + throw new InvalidArgumentException( 'Post ID and featured image should be set before trying to dispatch.' ); + } + + $data = [ + 'post_id' => $this->post_id, + 'post_thumbnail' => trim( $this->post_thumbnail ), + ]; + + $this->data( $data ); + + do_action( 'tribe_log', 'debug', $this->identifier, $data ); + + return parent::dispatch(); + } + + /** + * Sets the ID of the post the post thumbnail (aka "featured image") should be attached + * and set for. + * + * @since 4.7.12 + * + * @param int $post_id The target post ID. + */ + public function set_post_id( $post_id ) { + $this->post_id = $post_id; + } + + /** + * Sets the post thumbnail ID or source the process should set. + * + * @since 4.7.12 + * + * @param int|string $post_thumbnail Either an attachment ID or the full URL, or path, to + * the post thumbnail image. + */ + public function set_post_thumbnail( $post_thumbnail ) { + $this->post_thumbnail = $post_thumbnail; + } + + /** + * Handles the post thumbnail setting async process. + * + * The post thumbnail will be uploaded, if not uploaded already, using the `tribe_upload_image` function. + * This method is an alias of the publicly accessible `sync_handle` one. + * + * @since 4.7.12 + * + * @param array|null $data_source An optional source of data. + * + * @see Tribe__Process__Post_Thumbnail_Setter::sync_handle() + * + * @see tribe_upload_image() + */ + protected function handle( array $data_source = null ) { + $this->sync_handle( $data_source ); + } + + /** + * {@inheritdoc} + */ + public function sync_handle( array $data_source = null ) { + do_action( 'tribe_log', 'debug', $this->identifier, [ 'status' => 'handling request' ] ); + + $data_source = isset( $data_source ) ? $data_source : $_POST; + + if ( ! isset( $data_source['post_id'], $data_source['post_thumbnail'] ) ) { + do_action( 'tribe_log', 'error', $this->identifier, [ 'data' => $data_source, ] ); + + return 0; + } + + $id = filter_var( $data_source['post_id'], FILTER_SANITIZE_NUMBER_INT ); + $post_thumbnail = tec_sanitize_string( $data_source['post_thumbnail'] ); + + do_action( 'tribe_log', 'debug', $this->identifier, [ + 'status' => 'fetching thumbnail', + 'post_thumbnail' => $post_thumbnail, + 'post_id' => $id, + ] ); + + $thumbnail_id = tribe_upload_image( $post_thumbnail ); + + if ( false === $thumbnail_id ) { + do_action( + 'tribe_log', + 'error', + $this->identifier, + [ + 'action' => 'fetch', + 'post_thumbnail' => $post_thumbnail, + 'post_id' => $id, + 'status' => 'could not fetch', + ] + ); + + return 0; + } + + $set = true; + if ( (int) get_post_thumbnail_id( $id ) !== (int) $thumbnail_id ) { + $set = set_post_thumbnail( $id, $thumbnail_id ); + } + + if ( false === $set ) { + do_action( + 'tribe_log', + 'error', + $this->identifier, + [ + 'action' => 'set', + 'post_thumbnail' => $post_thumbnail, + 'attachment_id' => $thumbnail_id, + 'post_id' => $id, + 'status' => 'unable to set thumbnail', + ] + ); + + return $thumbnail_id; + } + + do_action( + 'tribe_log', + 'debug', + $this->identifier, + [ + 'action' => 'set', + 'post_thumbnail' => $post_thumbnail, + 'attachment_id' => $thumbnail_id, + 'post_id' => $id, + 'status' => 'completed - attachment created and linked to the post', + ] + ); + + return $thumbnail_id; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Queue.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Queue.php new file mode 100644 index 000000000..b1dc37fcc --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Queue.php @@ -0,0 +1,1129 @@ +action = call_user_func( [ $class, 'action' ] ); + $this->feature_detection = tribe( 'feature-detection' ); + + parent::__construct(); + + $this->healthcheck_cron_hook_id = $this->identifier . '_cron'; + $this->healthcheck_cron_interval_id = $this->identifier . '_cron_interval'; + + add_action( $this->healthcheck_cron_hook_id, [ $this, 'handle_cron_healthcheck' ] ); + add_filter( 'cron_schedules', [ $this, 'schedule_cron_healthcheck' ] ); + + /* + * This object might have been built while processing crons so + * we hook on the the object cron identifier to handle the task + * if the cron-triggered action ever fires. + */ + add_action( $this->identifier, [ $this, 'maybe_handle' ] ); + } + + /** + * Stops a queue that might be running. + * + * The queue process results are not rolled back (e.g. 200 posts to create, stopped + * after 50, those 50 posts will persist). + * + * @since 4.7.12 + * + * @param string $queue_id The unique identifier of the queue that should be stopped. + * + * @see Tribe__Process__Queue::save() to get the queue unique id. + * + * @return bool Whether the queue was correctly stopped, and its information + * deleted, or not. + */ + public static function stop_queue( $queue_id ) { + $meta = (array) get_transient( $queue_id . '_meta' ); + delete_transient( $queue_id . '_meta' ); + + if ( ! empty( $meta['identifier'] ) ) { + delete_transient( $meta['identifier'] . '_process_lock' ); + } + + return delete_option( $queue_id ); + } + + /** + * Whether a queue process is stuck or not. + * + * A queue process that has not been doing anything for an amount + * of time is considered "stuck". + * + * @since 4.7.18 + * + * @param string $queue_id The queue process unique identifier. + * + * @return bool + */ + public static function is_stuck( $queue_id ) { + $queue_status = self::get_status_of( $queue_id ); + $is_stuck = false; + + /** + * Filters the maximum allowed time a queue process can go without updates + * before being considered stuck. + * + * @since 4.7.18 + * + * @param int $time_limit A value in seconds, defaults to 5'. + */ + $limit = (float) apply_filters( 'tribe_process_queue_time_limit', 300 ); + + if ( ! empty( $queue_status['last_update'] ) && is_numeric( $queue_status['last_update'] ) ) { + $is_stuck = time() - (int) $queue_status['last_update'] > $limit; + } else { + $queue_status['last_update'] = time(); + set_transient( $queue_id . '_meta', $queue_status->to_array(), DAY_IN_SECONDS ); + } + + /** + * Filters whether a queue is considered "stuck" or not. + * + * @since 4.7.18 + * + * @param bool $is_stuck + * @param string $queue_id + * @param Tribe__Data $queue_status + */ + return apply_filters( 'tribe_process_queue_is_stuck', $is_stuck, $queue_id, $queue_status ); + } + + /** + * Returns a queue status and information. + * + * @since 4.7.12 + * + * @param string $queue_id + * + * @return Tribe__Data An object containing information about the queue. + * + * @see Tribe__Process__Queue::save() to get the queue unique id. + */ + public static function get_status_of( $queue_id ) { + $meta = (array) get_transient( $queue_id . '_meta' ); + $data = [ + 'identifier' => $queue_id, + 'done' => (int) Tribe__Utils__Array::get( $meta, 'done', 0 ), + 'total' => (int) Tribe__Utils__Array::get( $meta, 'total', 0 ), + 'fragments' => (int) Tribe__Utils__Array::get( $meta, 'fragments', 0 ), + 'last_update' => (int) Tribe__Utils__Array::get( $meta, 'last_update', false ), + ]; + + return new Tribe__Data( $data, 0 ); + } + + /** + * Deletes all queues for a specific action. + * + * @since 4.7.19 + * + * @param string $action The action (prefix) of the queues to delete. + * + * @return int The number of delete queues. + */ + public static function delete_all_queues( $action ) { + global $wpdb; + + $action = $wpdb->esc_like( 'tribe_queue_' . $action ) . '%'; + + $queues = $wpdb->get_col( $wpdb->prepare( " + SELECT DISTINCT(option_name) + FROM {$wpdb->options} + WHERE option_name LIKE %s + ", $action ) ); + + if ( empty( $queues ) ) { + return 0; + } + + $deleted = 0; + + foreach ( $queues as $queue ) { + $deleted ++; + self::delete_queue( $queue ); + } + + return $deleted; + } + + /** + * {@inheritdoc} + */ + public function delete( $key ) { + self::delete_queue( $key ); + + return $this; + } + + /** + * Deletes a queue batch(es) and meta information. + * + * @since 4.7.18 + * + * @param string $key + */ + public static function delete_queue( $key ) { + global $wpdb; + + $meta_key = $key . '_meta'; + + $key = $wpdb->esc_like( $key ) . '%'; + + $wpdb->query( $wpdb->prepare( " + DELETE + FROM {$wpdb->options} + WHERE option_name LIKE %s + ", $key ) ); + + delete_transient( $meta_key ); + } + + /** + * Upates the queue and meta data for the process. + * + * @since 4.7.12 + * @since 4.9.5 Pulled method from the `WP_Background_Process` class. + * + * @param string $key The key of the data to save. + * @param array $data The data to save. + * + * @return $this This process instance. + */ + public function update( $key, $data ) { + $meta_key = $this->get_meta_key( $key ); + $meta = (array) get_transient( $meta_key ); + $done = $this->original_batch_count - count( $data ); + + $update_data = array_merge( $meta, [ + 'done' => $meta['done'] + $done, + 'last_update' => time(), + ] ); + + /** + * Filters the information that will be updated in the database for this queue type. + * + * @since 4.7.12 + * + * @param array $update_data + * @param self $this + */ + $update_data = apply_filters( "tribe_process_queue_{$this->identifier}_update_data", $update_data, $this ); + + set_transient( $meta_key, $update_data, DAY_IN_SECONDS ); + + if ( ! empty( $data ) ) { + update_option( $key, $data ); + } + + return $this; + } + + /** + * Returns the name of the transient that will store the queue meta information + * for the specific key. + * + * @since 4.7.12 + * + * @param string $key + * + * @return string + */ + public function get_meta_key( $key ) { + $key = preg_replace( '/^(.*)_\\d+$/', '$1', $key ); + + return $key . '_meta'; + } + + /** + * {@inheritdoc} + */ + public function save() { + $key = $this->generate_key(); + + $fragments_count = $this->save_split_data( $key, $this->data ); + + $save_data = [ + 'identifier' => $this->identifier, + 'done' => 0, + 'total' => count( $this->data ), + 'fragments' => $fragments_count, + 'last_update' => time(), + ]; + + /** + * Filters the information that will be saved to the database for this queue type. + * + * @since 4.7.12 + * + * @param array $save_data + * @param self $this + */ + $save_data = apply_filters( "tribe_process_queue_{$this->identifier}_save_data", $save_data, $this ); + + set_transient( $this->get_meta_key( $key ), $save_data ); + + $this->did_save = true; + $this->id = $key; + + return $this; + } + + /** + * Generates the unique key for the queue optionally using the client provided + * id. + * + * @since 4.7.12 + * + * @param int $length The lengthy of the key to generate, longer keys will + * add more entropy; default to 64. + * + * @return string The generated batch key. + */ + protected function generate_key( $length = 64 ) { + if ( empty( $this->id_base ) ) { + $this->id_base = md5( microtime() . mt_rand() ); + } + + $prepend = $this->identifier . '_batch_'; + + $this->batch_key = substr( $prepend . $this->id_base, 0, $length ); + + return $this->batch_key; + } + + /** + * Saves the queue data to the database taking max_packet_size into account. + * + * In some instances the serialized size of the data might be bigger than the + * database `max_packet_size`; trying to write all the data in one query would + * make the db "go away...". + * Here we try to read the database `max_packet_size` setting and use that information + * to avoid overloading the query. + * + * @param string $key + * @param array $data + * + * @return int The number of fragments the data was split and stored into. + */ + protected function save_split_data( $key, array $data ) { + if ( empty( $data ) ) { + return 0; + } + + $max_frag_size = $this->get_max_frag_size(); + // we add a 15% to the size to take the serialization and query overhead into account when fragmenting + $serialized_size = strlen( utf8_decode( maybe_serialize( $data ) ) ) * 1.15; + $frags_count = (int) ceil( $serialized_size / $max_frag_size ); + $per_frag = max( (int) floor( count( $data ) / $frags_count ), 1 ); + + $split_data = array_chunk( $data, $per_frag ); + + if ( empty( $split_data ) ) { + return 0; + } + + foreach ( $split_data as $i => $iValue ) { + $postfix = 0 === $i ? '' : "_{$i}"; + update_option( $key . $postfix, $split_data[ $i ], false ); + } + + return count( $split_data ); + } + + /** + * Returns the max frag size in bytes. + * + * The bottleneck here is the database `max_packet_size` so we try to read + * it from the database. + * + * @return int The max size, in bytes, of a data fragment. + */ + protected function get_max_frag_size() { + if ( ! empty( $this->max_frag_size ) ) { + return $this->max_frag_size; + } + + return tribe( 'db' )->get_max_allowed_packet_size(); + } + + /** + * Sets the maximum size, in bytes, of the queue fragments. + * + * This will prevent the class from trying to read the value from the database. + * + * @since 4.7.12 + * + * @param int $max_frag_size + */ + public function set_max_frag_size( $max_frag_size ) { + $this->max_frag_size = $max_frag_size; + } + + /** + * Returns the queue unique identifier. + * + * Mind that an id will only be available after saving a queue. + * + * @since 4.7.12 + * + * @return string + * @throws RuntimeException if trying to get the queue id before saving it. + */ + public function get_id() { + if ( null === $this->id ) { + // not localized as this is a developer-land error + throw new RuntimeException( 'Can only get the id of queue after saving it.' ); + } + + return $this->id; + } + + /** + * Sets the queue unique id. + * + * When using this method the client code takes charge of the queue id uniqueness; + * the class will not check it. + * + * @since 4.7.12 + * + * @param string $queue_id + * + * @throws RuntimeException If trying to set the queue id after saving it. + */ + public function set_id( $queue_id ) { + if ( $this->did_save ) { + throw new RuntimeException( 'The queue id can be set only before saving it.' ); + } + + $queue_id = preg_replace( '/^' . preg_quote( $this->identifier, '/' ) . '_batch_/', '', $queue_id ); + + $this->id_base = $queue_id; + } + + /** + * Overrides the base `dispatch` method to allow for constants and/or environment vars to run + * async requests in sync mode. + * + * @since 4.7.12 + * @since 4.9.5 Pulled method code from the `WP_Background_Process` class. + * + * @return mixed + */ + public function dispatch() { + if ( + ( defined( 'TRIBE_NO_ASYNC' ) && true === TRIBE_NO_ASYNC ) + || true === (bool) getenv( 'TRIBE_NO_ASYNC' ) + || (bool) tribe_get_request_var( 'tribe_queue_sync', false ) + || tribe_is_truthy( tribe_get_option( 'tribe_queue_sync', false ) ) + ) { + $result = $this->sync_process(); + $this->complete(); + + return $result; + } + + if ( $this->feature_detection->supports_async_process() ) { + // Schedule the cron health-check. + $this->schedule_event(); + + // Perform remote post. + return parent::dispatch(); + } + + /* + * If async AJAX-based processing is not available then we "dispatch" + * by scheduling a single cron event immediately (as soon as possible) + * for this handler cron identifier. + */ + if ( ! wp_next_scheduled( $this->identifier ) ) { + // Schedule the event to happen as soon as possible. + $scheduled = wp_schedule_single_event( time() - 1, $this->identifier ); + + if ( false === $scheduled ) { + /** @var Tribe__Log__Logger $logger */ + $logger = tribe( 'logger' ); + $class = get_class( $this ); + $src = call_user_func( [ $class, 'action' ] ); + $logger->log( 'Could not schedule event for cron-based processing', Tribe__Log::ERROR, $src ); + } + } + + return true; + } + + /** + * Handles the process immediately, not in an async manner. + * + * @since 4.7.12 + * + * @return array An array containing the result of each item handling. + */ + public function sync_process() { + $result = []; + $this->doing_sync = true; + + foreach ( $this->data as $item ) { + $result[] = $this->task( $item ); + } + + return $result; + } + + /** + * Returns the name of the option used by the queue to store its batch(es). + * + * Mind that this value will be set only when first saving the queue and it will not be set + * in following queue processing. + * + * @since 4.7.12 + * + * @param int $n The number of a specific batch option name to get; defaults to `0` to get the + * option name of the first one. + * + * @return string + * + * @throws RuntimeException If trying to get the value before saving the queue or during following + * processing. + */ + public function get_batch_key( $n = 0 ) { + if ( null === $this->batch_key || ! $this->did_save ) { + throw new RuntimeException( 'The batch key will only be set after the queue is first saved' ); + } + + return empty( $n ) ? $this->batch_key : $this->batch_key . '_' . (int) $n; + } + + /** + * Returns the queue action identifier. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + * + * @return string The queue action identifier. + */ + public function get_identifier() { + return $this->identifier; + } + + /** + * Returns a batch of items to process from the queue. + * + * @since 4.7.12 + * @since 4.9.5 Pulled method code from the `WP_Background_Process` class. + * + * @return stdClass The first batch of items from the queue. + */ + protected function get_batch() { + global $wpdb; + + $key = $wpdb->esc_like( $this->identifier . '_batch_' ) . '%'; + + $query = $wpdb->get_row( $wpdb->prepare( " + SELECT * + FROM {$wpdb->options} + WHERE option_name LIKE %s + ORDER BY option_id ASC + LIMIT 1 + ", $key ) ); + + $batch = new stdClass(); + $batch->key = $query->option_name; + $batch->data = maybe_unserialize( $query->option_value ); + + $this->original_batch_count = ! empty( $batch->data ) ? count( $batch->data ) : 0; + + return $batch; + } + + /** + * {@inheritdoc} + */ + protected function get_post_args() { + $post_args = parent::get_post_args(); + + /** + * While sending the data into the body makes sense for the async process it does + * not make sense when processing a queue since the data will be stored and read + * from the database; furthermore this could raise issues with the max POST size. + */ + $post_args['body'] = []; + + return $post_args; + } + + /** + * Maybe handle the process request in async or sync mode depending on the + * supported mode. + * + * @param array|null $data_source An optional data source. + * + * @since 4.9.5 + */ + public function maybe_handle( $data_source = null ) { + // Don't lock up other requests while processing + session_write_close(); + + if ( $this->feature_detection->supports_async_process() ) { + return $this->maybe_handle_async(); + } + + return $this->maybe_handle_sync(); + } + + /** + * Push an item to the process queue. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + * + * @param mixed $data An item to process. + * + * @return $this This process instance. + */ + public function push_to_queue( $data ) { + $this->data[] = $data; + + return $this; + } + + /** + * Maybe handle this process request in async mode. + * + * @since 4.9.5 + */ + protected function maybe_handle_async() { + if ( $this->is_process_running() ) { + // Background process already running. + wp_die(); + } + + if ( $this->is_queue_empty() ) { + // No data to process: we're done. + $this->complete(); + wp_die(); + } + + check_ajax_referer( $this->identifier, 'nonce' ); + + $this->handle(); + + wp_die(); + } + + /** + * Handle the process request in sync mode. + * + * @since 4.9.5 + */ + protected function maybe_handle_sync() { + if ( $this->is_process_running() ) { + // Background process already running. + return; + } + + if ( $this->is_queue_empty() ) { + // No data to process: we're done. + $this->complete(); + + return; + } + + $this->handle(); + } + + /** + * Checks whether the queue is empty or not. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + * + * @return bool Whether the queue is empty or not. + */ + protected function is_queue_empty() { + global $wpdb; + + $key = $wpdb->esc_like( $this->identifier . '_batch_' ) . '%'; + + $count = $wpdb->get_var( $wpdb->prepare( " + SELECT COUNT(*) + FROM {$wpdb->options} + WHERE option_name LIKE %s + ", $key ) ); + + return $count <= 0; + } + + /** + * Checks whether the process is currently running or not. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + */ + protected function is_process_running() { + if ( get_transient( $this->identifier . '_process_lock' ) ) { + return true; + } + + return false; + } + + /** + * Locks the process so that other instances cannot spawn and run. + * + * Lock the process so that multiple instances can't run simultaneously. + * Override if applicable, but the duration should be greater than that + * defined in the `time_exceeded()` method. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + */ + protected function lock_process() { + // Set start time of current process. + $this->start_time = time(); + + $lock_duration = $this->queue_lock_time; + + /** + * Filters the duration of the lock acquired by a process instance. + * + * The lock duration should be larger than the maximum time a process is allowed to run. + * + * @since 4.9.5 + * + * @param int $lock_duration The lock duration in seconds; defaults to one minute. + * @param static $this This process instance. + */ + $lock_duration = apply_filters( $this->identifier . '_queue_lock_time', $lock_duration, $this ); + + set_transient( $this->identifier . '_process_lock', microtime(), $lock_duration ); + } + + /** + * Releases the process lock so that other instances can spawn and run. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + * + * @return $this This process instance. + */ + protected function unlock_process() { + delete_transient( $this->identifier . '_process_lock' ); + + return $this; + } + + /** + * Handles the process request. + * + * Pass each queue item to the task handler, while remaining + * within server memory and time limit constraints. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + * + * @param array|null $data_source Unused and kept for compatibility with parent; the queue + * data is stored and read from the database. + */ + protected function handle( array $data_source = null ) { + $this->lock_process(); + + do { + $batch = $this->get_batch(); + + foreach ( $batch->data as $key => $value ) { + $task = $this->task( $value ); + + if ( false !== $task ) { + $batch->data[ $key ] = $task; + } else { + unset( $batch->data[ $key ] ); + } + + if ( $this->time_exceeded() || $this->memory_exceeded() ) { + // Batch limits reached. + break; + } + } + + // Update or delete current batch. + if ( ! empty( $batch->data ) ) { + $this->update( $batch->key, $batch->data ); + } else { + $this->delete( $batch->key ); + } + } while ( ! $this->time_exceeded() && ! $this->memory_exceeded() && ! $this->is_queue_empty() ); + + $this->unlock_process(); + + // Start next batch or complete process. + if ( ! $this->is_queue_empty() ) { + $this->dispatch(); + } else { + $this->complete(); + } + + if ( doing_action( $this->identifier ) ) { + /* + * We're probably acting in the context of a cron request or + * in the context of an explicitly triggered action: let's not + * die. + */ + return; + } + + wp_die(); + } + + /** + * Checks whether the memory limit was exceeded. + * + * Ensures the batch process never exceeds 90% + * of the maximum WordPress memory. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + * + * @return bool + */ + protected function memory_exceeded() { + $memory_limit = $this->get_memory_limit() * 0.9; // 90% of max memory + $current_memory = memory_get_usage( true ); + $return = false; + + if ( $current_memory >= $memory_limit ) { + $return = true; + } + + /** + * Filters whether the process did exceed the allowed memory limit or not. + * + * @since 4.9.5 + * + * @param bool $return Whether the process did exceed the allowed memory limit or not. + * @param static $this This process instance. + */ + return apply_filters( $this->identifier . '_memory_exceeded', $return, $this ); + } + + /** + * Returns the memory limit for this process. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + * + * @return int The memory limit in bytes. + */ + protected function get_memory_limit() { + if ( function_exists( 'ini_get' ) ) { + $memory_limit = ini_get( 'memory_limit' ); + } else { + // Sensible default. + $memory_limit = '128M'; + } + + if ( ! $memory_limit || -1 === (int) $memory_limit ) { + // Unlimited, set to 32GB. + $memory_limit = '32000M'; + } + + return (int) $memory_limit * 1024 * 1024; + } + + /** + * Checks whether the execution time was exceeded or not. + * + * Ensures the batch never exceeds a sensible time limit. + * A timeout limit of 30s is common on shared hosting. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + * + * @return bool Whether the execution time was exceeded or not. + */ + protected function time_exceeded() { + /** + * Filters the maximum time the process can operate before continuing in another + * request. + * We pick a safe default of 20 seconds but this value can be adjusted to suit the system + * timeout settings. + * + * @since 4.9.5 + * + * @param int $default_time_limit The time limit for the process. + * @param static $this This process instance. + */ + $time_limit = apply_filters( $this->identifier . '_default_time_limit', 20, $this ); + + $finish = $this->start_time + $time_limit; + $return = false; + + if ( time() >= $finish ) { + $return = true; + } + + /** + * Filters whether a process instance should be marked as having exceeded the time limit or not. + * + * @since 4.9.5 + * + * @param bool $return Whether the process did exceed the time limit or not. + * @param static $this This process instance. + */ + return apply_filters( $this->identifier . '_time_exceeded', $return ); + } + + /** + * Completes the processing, cleaning up after it. + * + * Override if applicable, but ensure that the below actions are + * performed, or, call parent::complete(). + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + */ + protected function complete() { + // Unschedule the cron health-check. + $this->clear_scheduled_event(); + } + + /** + * Schedules a cron-based health-check to restart the queue if stuck. + * + * Filters the `cron_schedules` filter to add a check every 5 minutes. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + * + * @param mixed $schedules The cron schedules to check. + * + * @return mixed The updated cron schedules. + */ + public function schedule_cron_healthcheck( $schedules ) { + /** + * Filters the number of minutes to schedule the cron health-check. + * + * @since 4.9.5 + * + * @param int $interval The number of minutes to schedule the cron health-check; defaults to 5. + * @param static $this This process instance. + */ + $interval = apply_filters( $this->identifier . '_cron_interval', $this->healthcheck_cron_interval, $this ); + + // Adds every 5 minutes to the existing schedules. + $schedules[ $this->identifier . '_cron_interval' ] = [ + 'interval' => MINUTE_IN_SECONDS * $interval, + 'display' => sprintf( __( 'Every %d Minutes', 'tribe-common' ), $interval ), + ]; + + return $schedules; + } + + /** + * Handles the cron health-check. + * + * Restart the background process if not already running + * and data exists in the queue. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + */ + public function handle_cron_healthcheck() { + if ( $this->is_process_running() ) { + // Background process already running. + exit; + } + + if ( $this->is_queue_empty() ) { + // No data to process. + $this->clear_scheduled_event(); + exit; + } + + $this->handle(); + + exit; + } + + /** + * Schedules the cron health-check event. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + */ + protected function schedule_event() { + if ( ! wp_next_scheduled( $this->healthcheck_cron_hook_id ) ) { + wp_schedule_event( time(), $this->healthcheck_cron_interval_id, $this->healthcheck_cron_hook_id ); + } + } + + /** + * Clears the scheduled health-check cron event. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + */ + protected function clear_scheduled_event() { + $timestamp = wp_next_scheduled( $this->healthcheck_cron_hook_id ); + + if ( $timestamp ) { + wp_unschedule_event( $timestamp, $this->healthcheck_cron_hook_id ); + } + } + + /** + * Cancels the current process. + * + * Stops processing queue items and clean up. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + */ + public function cancel_process() { + if ( ! $this->is_queue_empty() ) { + $batch = $this->get_batch(); + + $this->delete( $batch->key ); + + wp_clear_scheduled_hook( $this->healthcheck_cron_hook_id ); + } + + } + + /** + * Executes the process task on a single item. + * + * Override this method to perform any actions required on each + * queue item. Return the modified item for further processing + * in the next pass through. Or, return false to remove the + * item from the queue. + * + * @since 4.9.5 Pulled from the `WP_Background_Process` class. + * + * @param mixed $item Queue item to iterate over. + * + * @return mixed + */ + abstract protected function task( $item ); + + /** + * Concrete implementation of the base handler method. + * + * Just a proxy to the `sync_process` method. + * + * @since 4.9.5 + * + * @param array|null $data_source If not provided the method will read the handler data from the + * request array. + * + * @return array|mixed|null The synchronous process result. + */ + public function sync_handle( array $data_source = null ) { + // In the base implementation the data source is unused and read from the database. + return $this->sync_process(); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Tester.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Tester.php new file mode 100644 index 000000000..017f7e937 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Process/Tester.php @@ -0,0 +1,98 @@ +get_query_args(), $this->get_query_url() ); + $args = $this->get_post_args(); + + return wp_remote_post( esc_url_raw( $url ), $args ); + } + + /** + * An override of the method implemented by the base Tribe Handler + * class to make sure the processing is done in async mode. + * + * This is the same code as the base WP_Background_Process class. + * + * @since 4.7.23 + * + * @param null|array $data_source An optional data source. + */ + public function maybe_handle( $data_source = null ) { + // Don't lock up other requests while processing + session_write_close(); + + check_ajax_referer( $this->identifier, 'nonce' ); + + $this->handle(); + + wp_die(); + } + + /** + * The task this class will perform is just setting a transient. + * + * The transient existence will be used as a canary to detect if + * background processing is supported. + * + * @since 4.7.23 + * + * @param array|null $data_source Unused. + */ + protected function handle( array $data_source = null ) { + tec_timed_option()->set( static::TRANSIENT_NAME, 1, WEEK_IN_SECONDS ); + } + + /** + * Returns this handler action identifier. + * + * @since 4.7.23 + * + * @return string This handler action identifier. + */ + public static function action() { + return 'async_process_support_test'; + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Promise.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Promise.php new file mode 100644 index 000000000..d3c1dc4b0 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Promise.php @@ -0,0 +1,309 @@ +save()->dispatch(); + * $promise_id = $promise->get_id(); + * + * The promise is really a background process in disguise and will work, for all + * intents and purposes, like one. + * + * @since 4.9.5 + */ + +class Tribe__Promise extends Tribe__Process__Queue { + + /** + * The action that will be done when the promise is done. + * + * @var string + */ + protected $resolved; + + /** + * An array of arguments that will be used to call a callback on completion. + * + * @var array + */ + protected $resolved_args; + + /** + * The action that will be done when the promise fails due to an error. + * + * @var string + */ + protected $rejected; + + /** + * An array of arguments that will be used to call a callback on failure. + * + * @var array + */ + protected $rejected_args; + + /** + * Whether this promise did resolve correctly or not. + * + * @var bool + */ + protected $resolved_correctly = true; + + /** + * Tribe__Promise constructor. + * + * @param string|array|Tribe__Utils__Callback $callback The callback that should run to perform the promise task. + * @param array $items The items to process, each item will be passed as first + * argument to the callback at run-time. + * @param array $extra_args An array of extra arguments that will be passed to the + * callback function. + */ + public function __construct( $callback = null, array $items = null, array $extra_args = [] ) { + parent::__construct(); + + if ( ! empty( $callback ) && ! empty( $items ) ) { + foreach ( $items as $target ) { + $item['callback'] = $callback; + $item['args'] = array_merge( [ $target ], $extra_args ); + $this->push_to_queue( $item ); + } + } + } + + /** + * {@inheritdoc} + */ + public static function action() { + return 'promise'; + } + + /** + * Sets a callback, and optional arguments, that will be called when the promise + * is resolved. + * + * The callback and arguments must be serializable and make sense in the context of, + * potentially, a different call from the one where this method is called. + * + * @since 4.9.5 + * + * @param callable|Tribe__Utils__Callback $resolved The callback to call on success. + * @param callable|Tribe__Utils__Callback $rejected The callback to call on failure. + * @param array $resolved_args The arguments that will be passed to the resolved + * callback. + * @param array $rejected_args The arguments that will be passed to the rejected + * callback. + * + * @return Tribe__Promise This promise. + * + * @throws LogicException If this method is called after saving the promise. + */ + public function then( $resolved, $rejected = null, array $resolved_args = null, array $rejected_args = null ) { + if ( $this->did_save ) { + throw new LogicException( 'The promise "then" method should be called before the "save" one' ); + } + + $this->resolved = $resolved; + $this->resolved_args = $resolved_args; + $this->rejected = $rejected; + $this->rejected_args = $rejected_args; + + foreach ( $this->data as &$item ) { + $item['resolved'] = $this->resolved; + $item['resolved_args'] = $this->resolved_args; + $item['rejected'] = $this->rejected; + $item['rejected_args'] = $this->rejected_args; + } + + return $this; + } + + /** + * Overrides the base method to save before dispatching. + * + * @since 4.9.5 + * + * @return mixed The dispatch return value. + */ + public function dispatch() { + if ( empty( $this->data ) ) { + $this->complete(); + + return null; + } + + if ( ! $this->did_save ) { + $this->save(); + } + + return parent::dispatch(); + } + + /** + * A custom error handler to log any error tha might happen while invoking a promise + * callback. + * + * @since 4.9.5 + * + * @param int $code The error code. + * @param string $error_message The error message. + * + * @see set_error_handler() + */ + public function error_handler( $code, $error_message ) { + $message = 'There was an error (' . $code . ') while invoking a promise callback:'; + $message .= "\n\t" . $error_message; + tribe( 'logger' )->log( $message, Tribe__Log::ERROR, __CLASS__ ); + } + + /** + * Performs the task associated with the promise. + * + * The promise is really just a flexible background process that + * + * @since 4.9.5 + * + * @param array $item The promise payload, keys: + * { + * @param callable|Tribe__Utils__Callback $callback The callback this promise will + * call to perform the task. + * @param array $args An array of arguments that will be passed to the callback. + * @param callable|Tribe__Utils__Callback $then The callback this promise will + * call when complete. + * @param array $then_args An array of arguments that will be passed to the then callback. + * } + * + * + * @return bool `true` if the task needs to run again, `false` if the task is complete. + */ + protected function task( $item ) { + if ( isset( $item['resolved'] ) ) { + $this->resolved = $item['resolved']; + if ( isset( $item['resolved_args'] ) ) { + $this->resolved_args = $item['resolved_args']; + } + } + + if ( isset( $item['rejected'] ) ) { + $this->rejected = $item['rejected']; + if ( isset( $item['rejected_args'] ) ) { + $this->rejected_args = $item['rejected_args']; + } + } + + $callback_args = isset( $item['args'] ) ? $item['args'] : null; + $done = $this->do_callback( $item['callback'], $callback_args ); + + // If we are done then return `false` to indicate "no need to run again". + return $done ? false : true; + } + + /** + * Overrides the base method to allow building promises on empty objects + * without actually writing to the database. + * + * A fake queue id is set for compatibility reasons. + * + * @since 4.9.5 + * + * @return Tribe__Process__Queue This object. + */ + public function save() { + if ( empty( $this->data ) ) { + $this->id = uniqid( 'promise_', true ); + + return $this; + } + + return parent::save(); + } + + /** + * Invokes a callback function with optional arguments. + * + * If the callback invocation results in an exception or error then the callback will return `true` + * and log. + * + * @since 4.9.5 + * + * @param callable|Tribe__Utils__Callback $callback The callback to call. + * @param array|null $callback_args An optional array of arguments to call the + * callback with. + * + * @return mixed The callback invocation return value. + */ + protected function do_callback( $callback, array $callback_args = null ) { + try { + set_error_handler( [ $this, 'error_handler' ] ); + + $callback = $this->unpack_callback( $callback ); + + if ( count( $callback_args ) ) { + $done = call_user_func_array( $callback, $callback_args ); + } else { + $done = call_user_func( $callback ); + } + + restore_error_handler(); + + return $done; + } catch ( Exception $e ) { + $message = 'Exception (' . get_class( $e ) . ') thrown while invoking a promise callback:'; + $message .= "\n\t" . $e->getMessage(); + tribe( 'logger' )->log( $message, Tribe__Log::ERROR, __CLASS__ ); + + $this->resolved_correctly = false; + $this->complete(); + + return true; + } + } + + /** + * Unpacks a callback returning a callable array for callbacks wrapped using the + * Tribe__Utils__Callback class. + * + * @since 4.9.5 + * + * @param string|array|Tribe__Utils__Callback $callback The callback to unpack. + * + * @return array|string A callable array of string. + */ + protected function unpack_callback( $callback ) { + if ( $callback instanceof Tribe__Utils__Callback ) { + $callback = [ tribe( $callback->get_slug() ), $callback->get_method() ]; + } + + return $callback; + } + + /** + * Overrides the base method to call the success callback on completion. + * + * @since 4.9.5 + */ + protected function complete() { + parent::complete(); + + if ( $this->resolved_correctly && null !== $this->resolved ) { + $callback_args = isset( $this->resolved_args ) ? $this->resolved_args : null; + $this->do_callback( $this->resolved, $callback_args ); + } elseif ( ! $this->resolved_correctly && null !== $this->rejected ) { + $callback_args = isset( $this->rejected_args ) ? $this->rejected_args : null; + $this->do_callback( $this->rejected, $callback_args ); + } + } + + /** + * An alias of the dispatch method to stick with the expected naming + * standard. + * + * @since 4.9.5 + * + * @return mixed The dispatch operation return value. + */ + public function resolve() { + return $this->dispatch(); + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/Auth.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/Auth.php new file mode 100644 index 000000000..a7939e25a --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/Auth.php @@ -0,0 +1,112 @@ +connector = $connector; + } + + /** + * Register the promoter auth key as part of the settings in order to make it available into the REST API. + * + * @since 4.12.6 + * + * @return void + */ + public function register_setting() { + register_setting( + 'options', + 'tribe_promoter_auth_key', + [ + 'type' => 'string', + 'show_in_rest' => true, + 'description' => __( 'Promoter Key', 'tribe-common' ), + 'sanitize_callback' => 'sanitize_text_field', + ] + ); + } + + /** + * Add an update the KEY used for promoter during the connection. + * + * @since 4.9.12 + * + * @param $secret_key + * + * @return string + */ + public function filter_promoter_secret_key( $secret_key ) { + + _deprecated_function( __METHOD__, '4.12.6' ); + + return empty( $secret_key ) ? $this->generate_secret_key() : $secret_key; + } + + /** + * Authorize the request with the Promoter Connector. + * + * @since 4.9 + * + * @return bool Whether the request was authorized successfully. + */ + public function authorize_with_connector() { + $secret_key = $this->generate_secret_key(); + $promoter_key = tribe_get_request_var( 'promoter_key' ); + $license_key = tribe_get_request_var( 'license_key' ); + + // send request to auth connector + $result = $this->connector->authorize_with_connector( get_current_user_id(), $secret_key, $promoter_key, $license_key ); + + // If the secret was not stored correctly on Connector Application, remove it! + if ( ! $result ) { + delete_option( 'tribe_promoter_auth_key' ); + } + + return $result; + } + + /** + * Grab the WP constant and store it as the auth key, if none exists or is it empty + * it creates a dynamic one. + * + * @since 4.9.12 + * + * @since 4.9 + * + * @return string The secret key. + */ + public function generate_secret_key() { + + $salt = wp_generate_password( 6 ); + + if ( defined( 'AUTH_KEY' ) ) { + $key = AUTH_KEY; + } else { + $key = wp_generate_password( 25 ); + } + + $key = sha1( $salt . get_current_blog_id() . $key . get_bloginfo( 'url' ) ); + + update_option( 'tribe_promoter_auth_key', $key ); + + return $key; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/Connector.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/Connector.php new file mode 100644 index 000000000..e62d9fa7b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/Connector.php @@ -0,0 +1,277 @@ +base_url() . 'connect'; + + $payload = [ + 'clientSecret' => $secret_key, + 'licenseKey' => $license_key, + 'userId' => $user_id, + ]; + + $token = TEC_JWT::encode( $payload, $promoter_key, 'HS256' ); + + $response = $this->make_call( $url, [ + 'body' => [ 'token' => $token ], + 'sslverify' => false, + ] ); + + return (bool) $response; + } + + /** + * Authenticate the current request user with the Auth Connector + * + * @param string $user_id User ID. + * + * @return bool|string User ID or if promoter is authorized then it return true like a valid user. + * + * @since 4.9 + */ + public function authenticate_user_with_connector( $user_id ) { + $this->authorized = false; + + // If user is already authenticated no need to move forward (wp-admin) and others. + if ( ! empty( $user_id ) ) { + $this->authorized = true; + return $user_id; + } + + $token = $this->get_token(); + + if ( empty( $token ) ) { + return $user_id; + } + + $url = $this->base_url() . 'connect/auth'; + + $response = $this->make_call( $url, [ + 'body' => [ 'token' => $token ], + 'sslverify' => false, + ] ); + + if ( ! $response ) { + return $user_id; + } + + $this->authorized = true; + + return $response; + } + + /** + * Get the token either from a request or a header + * + * @since 4.9.20 + * + * @return mixed + */ + protected function get_token() { + $request_token = $this->get_token_from_request(); + + return ( $request_token ) + ? sanitize_text_field( $request_token ) + : $this->get_token_from_headers(); + } + + /** + * Get the token from a Request variable if present, otherwise fallback to `null` + * + * @since 4.9.20 + * + * @return mixed + */ + protected function get_token_from_request() { + // Used in favor of tribe_get_request_var as at this point tribe_get_request_var is not defined. + return \Tribe__Utils__Array::get_in_any( + [ $_GET, $_POST, $_REQUEST ], + 'tribe_promoter_auth_token' + ); + } + + /** + * Get the token directly from a Bearer Authentication Header, for hosts that + * does not support large Query strings + * + * @since 4.9.20 + * + * @return mixed + */ + protected function get_token_from_headers() { + $headers = [ + 'HTTP_AUTHORIZATION', + 'REDIRECT_HTTP_AUTHORIZATION', + ]; + + foreach ( $headers as $header ) { + if ( empty( $_SERVER[ $header ] ) ) { + continue; + } + + list( $token ) = sscanf( $_SERVER[ $header ], 'Bearer %s' ); + + if ( $token ) { + return sanitize_text_field( $token ); + } + } + } + + /** + * Notify the Promoter app of changes within this system. + * + * @param int $post_id Post ID. + * + * @since 4.9 + */ + public function notify_promoter_of_changes( $post_id ) { + $post_type = get_post_type( $post_id ); + + if ( ! in_array( $post_type, [ 'tribe_events', 'tribe_tickets' ], true ) ) { + return; + } + + $secret_key = $this->get_secret_key(); + + if ( empty( $secret_key ) ) { + return; + } + + /** @var Tribe__Promoter__PUE $promoter_pue */ + $promoter_pue = tribe( 'promoter.pue' ); + $license_info = $promoter_pue->get_license_info(); + + if ( ! $license_info ) { + return; + } + + $license_key = $license_info['key']; + + $payload = [ + 'licenseKey' => $license_key, + 'sourceId' => $post_id instanceof WP_Post ? $post_id->ID : $post_id, + ]; + + $token = TEC_JWT::encode( $payload, $secret_key, 'HS256' ); + + $url = $this->base_url() . 'connect/notify'; + + $args = [ + 'body' => [ 'token' => $token ], + 'sslverify' => false, + ]; + + $this->make_call( $url, $args ); + } + + /** + * Get the value for the option `tribe_promoter_auth_key` + * + * @since 4.9.12 + * + * @return mixed + */ + public function get_secret_key() { + $secret_key = get_option( 'tribe_promoter_auth_key' ); + + /** + * @since 4.9.12 + * + * @param string $secret_key + */ + return apply_filters( 'tribe_promoter_secret_key', $secret_key ); + } + + /** + * Make the call to the remote endpoint. + * + * @since 4.9 + * + * @param array $args Data to send. + * + * @param string $url URL to send data to. + * + * @return string|false The response body or false if not successful. + * + */ + public function make_call( $url, $args ) { + $response = wp_remote_post( $url, wp_parse_args( $args, [ 'timeout' => 30 ] ) ); + $code = wp_remote_retrieve_response_code( $response ); + $body = wp_remote_retrieve_body( $response ); + + if ( $code > 299 || is_wp_error( $response ) ) { + do_action( + 'tribe_log', + 'debug', + __METHOD__, + [ + 'url' => $url, + 'args' => $args, + 'response' => $response, + 'response_code' => $code, + ] + ); + + return false; + } + + return $body; + } + + /** + * Check whether the user request is currently authorized by Promoter. + * + * @since 4.9.4 + * + * @return bool Whether the user request is currently authorized by Promoter. + */ + public function is_user_authorized() { + return $this->authorized; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/PUE.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/PUE.php new file mode 100644 index 000000000..0900c1d4e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/PUE.php @@ -0,0 +1,96 @@ +pue_checker = new Tribe__PUE__Checker( 'http://tri.be/', $this->slug, [ + 'context' => 'service', + 'plugin_name' => __( 'Promoter', 'tribe-common' ), + ] ); + } + + /** + * Get whether service has a license and if the license is activated on network. + * + * @return array|false License information or false if not set. + * + * @since 4.9 + */ + public function get_license_info() { + $option_name = 'pue_install_key_' . $this->slug; + + $key = get_option( $option_name ); + + $is_network_key = false; + + if ( is_multisite() ) { + $network_key = get_network_option( null, $option_name ); + + if ( empty( $key ) ) { + $key = $network_key; + + $is_network_key = true; + } + } + + if ( empty( $key ) ) { + return false; + } + + return [ + 'key' => $key, + 'is_network_key' => $is_network_key, + ]; + } + + /** + * Check whether service has a license key set or not. + * + * @return bool Whether service has a license key set. + * + * @since 4.9 + */ + public function has_license_key() { + return ! empty( $this->get_license_info() ); + } + + /** + * Check whether service has a valid license key or not. + * + * @return bool Whether service has a valid license key. + * + * @since 4.9 + */ + public function has_valid_license() { + $license_info = $this->get_license_info(); + + if ( ! $license_info ) { + return false; + } + + $response = $this->pue_checker->validate_key( $license_info['key'], $license_info['is_network_key'] ); + + return isset( $response['status'] ) && 1 === (int) $response['status']; + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/View.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/View.php new file mode 100644 index 000000000..f2fe93a82 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Promoter/View.php @@ -0,0 +1,96 @@ +set_template_origin( Tribe__Main::instance() ); + $this->set_template_folder( 'src/views/promoter' ); + $this->set_template_context_extract( true ); + $this->set_template_folder_lookup( true ); + } + + /** + * Add the rewrite rules and tags. + * + * @since 4.9 + */ + public function add_rewrites() { + add_rewrite_rule( 'tribe-promoter-auth/?$', 'index.php?tribe-promoter-auth-check=1', 'top' ); + add_rewrite_tag( '%tribe-promoter-auth-check%', '([^&]+)' ); + } + + /** + * Get the redirect URL for finishing onboarding + * + * @since 4.9.6 + * + * @return string Redirect URL for completing onboarding. + */ + public function authorized_redirect_url() { + $url = 'https://promoter.theeventscalendar.com/welcome/review'; + + if ( defined( 'TRIBE_PROMOTER_AUTHORIZED_REDIRECT_URL' ) ) { + $url = TRIBE_PROMOTER_AUTHORIZED_REDIRECT_URL; + } + + /** + * The url for redirecting in order to complete onboarding + * + * @since 4.9.6 + * + * @param string $url Redirect URL. + */ + return apply_filters( 'tribe_promoter_authorized_redirect_url', $url ); + } + + /** + * Display the auth check page when the correct permalink is loaded. + * + * @since 4.9 + */ + public function display_auth_check_view() { + global $wp_query; + + $promoter_key = tribe_get_request_var( 'promoter_key' ); + $license_key = tribe_get_request_var( 'license_key' ); + + if ( empty( $promoter_key ) || empty( $wp_query->query_vars['tribe-promoter-auth-check'] ) ) { + return; + } + + $is_admin = is_user_logged_in() && current_user_can( 'manage_options' ) && current_user_can( 'read_private_posts' ); + $authorized = false; + $auth_error = false; + + if ( $is_admin && ! empty( $_POST['promoter_authenticate'] ) ) { + /** @var Tribe__Promoter__Auth $promoter_auth */ + $promoter_auth = tribe( 'promoter.auth' ); + $authorized = $promoter_auth->authorize_with_connector(); + $auth_error = ! $authorized; + } + + if ( $authorized ) { + wp_redirect( esc_url_raw( $this->authorized_redirect_url() ) ); + } else { + $this->template( 'auth', [ + 'authorized' => $authorized, + 'auth_error' => $auth_error, + 'logged_in' => is_user_logged_in(), + 'admin' => $is_admin, + 'promoter_key' => $promoter_key, + 'license_key' => $license_key, + ], true ); + } + + tribe_exit(); + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Endpoints/CREATE_Endpoint_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Endpoints/CREATE_Endpoint_Interface.php new file mode 100644 index 000000000..0b4b5eee2 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Endpoints/CREATE_Endpoint_Interface.php @@ -0,0 +1,29 @@ +message = $message; + $this->code = $code; + $this->status = $status; + } + + /** + * Return the error status. + * @return int + */ + public function getStatus() { + return $this->status; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Base_Header.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Base_Header.php new file mode 100644 index 000000000..a420ca07b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Base_Header.php @@ -0,0 +1,19 @@ +base = $base; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Base_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Base_Interface.php new file mode 100644 index 000000000..4cf32f0ad --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Base_Interface.php @@ -0,0 +1,49 @@ +base->get_api_version_header() . ': disabled' ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Headers_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Headers_Interface.php new file mode 100644 index 000000000..554520867 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Headers_Interface.php @@ -0,0 +1,18 @@ +main = $main; + } + + /** + * Prints TEC REST API related meta on the site. + */ + public function add_header() { + $api_root = $this->base->get_rest_url(); + + if ( empty( $api_root ) ) { + return; + } + + printf( '', esc_attr( $this->base->get_api_version_meta_name() ), esc_attr( $this->main->get_version() ) ); + printf( '', esc_attr( $this->base->get_api_origin_meta_name() ), esc_url( $this->base->get_rest_origin_url() ) ); + printf( '', esc_attr( $this->main->get_reference_url() ), esc_url( $api_root ) ); + } + + /** + * Sends TEC REST API related headers. + */ + public function send_header() { + if ( headers_sent() ) { + return; + } + + $api_root = $this->base->get_rest_url(); + + if ( empty( $api_root ) ) { + return; + } + + header( $this->base->get_api_version_header() . ': ' . $this->main->get_version() ); + header( $this->base->get_api_root_header() . ': ' . esc_url_raw( $api_root ) ); + header( $this->base->get_api_origin_header() . ': ' . esc_url_raw( $this->base->get_rest_origin_url() ) ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Unsupported.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Unsupported.php new file mode 100644 index 000000000..af8e3b5a5 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Headers/Unsupported.php @@ -0,0 +1,39 @@ +main = $main; + } + + /** + * Prints TEC REST API related meta on the site. + */ + public function add_header() { + // no-op + } + + /** + * Sends TEC REST API related headers. + */ + public function send_header() { + if ( headers_sent() ) { + return; + } + + header( $this->base->get_api_version_header() . ': unsupported' ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Main.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Main.php new file mode 100644 index 000000000..5fcc28dcc --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Main.php @@ -0,0 +1,149 @@ +namespace; + } + + /** + * Returns the REST API URL prefix. + * + * @return string The REST API URL prefix. + */ + public function get_url_prefix() { + $use_builtin = $this->use_builtin(); + + if ( $use_builtin ) { + $prefix = rest_get_url_prefix(); + } else { + $prefix = apply_filters( 'rest_url_prefix', 'wp-json' ); + } + + $default_tec_prefix = $this->namespace . '/' . trim( $this->url_prefix(), '/' ); + $prefix = rtrim( $prefix, '/' ) . '/' . trim( $default_tec_prefix, '/' ); + + /** + * Filters the TEC REST API URL prefix + * + * @param string $prefix The complete URL prefix. + * @param string $default_tec_prefix The default URL prefix appended to the REST URL by The Events Calendar. + */ + return apply_filters( 'tribe_events_rest_url_prefix', $prefix, $default_tec_prefix ); + } + + /** + * Retrieves the URL to a TEC REST endpoint on a site. + * + * Note: The returned URL is NOT escaped. + * + * @global WP_Rewrite $wp_rewrite + * + * @param string $path Optional. TEC REST route. Default '/'. + * @param string $scheme Optional. Sanitization scheme. Default 'rest'. + * @param int $blog_id Optional. Blog ID. Default of null returns URL for current blog. + * + * @return string Full URL to the endpoint. + */ + public function get_url( $path = '/', $scheme = 'rest', $blog_id = null ) { + if ( empty( $path ) ) { + $path = '/'; + } + + $tec_path = '/' . trim( $this->namespace, '/' ) . $this->url_prefix() . '/' . ltrim( $path, '/' ); + + if ( $this->use_builtin() ) { + $url = get_rest_url( $blog_id, $tec_path, $scheme ); + } else { + if ( ( is_multisite() && get_blog_option( $blog_id, 'permalink_structure' ) ) || get_option( 'permalink_structure' ) ) { + global $wp_rewrite; + + if ( $wp_rewrite->using_index_permalinks() ) { + $url = get_home_url( $blog_id, $wp_rewrite->index . '/' . $this->get_url_prefix(), $scheme ); + } else { + $url = get_home_url( $blog_id, $this->get_url_prefix(), $scheme ); + } + + $url .= '/' . ltrim( $path, '/' ); + } else { + $url = get_home_url( $blog_id, 'index.php', $scheme ); + + $url = add_query_arg( 'rest_route', $tec_path, $url ); + } + + if ( is_ssl() ) { + // If the current host is the same as the REST URL host, force the REST URL scheme to HTTPS. + if ( $_SERVER['SERVER_NAME'] === parse_url( get_home_url( $blog_id ), PHP_URL_HOST ) ) { + $url = set_url_scheme( $url, 'https' ); + } + } + } + + /** + * Filters The Events Calendar REST URL. + * + * @param string $url TEC REST URL. + * @param string $path REST route. + * @param int $blog_id Blog ID. + * @param string $scheme Sanitization scheme. + */ + return apply_filters( 'tribe_rest_url', $url, $path, $blog_id, $scheme ); + } + + /** + * Whether built-in WP REST API functions and functionalities should/can be used or not. + * + * @return bool + */ + protected function use_builtin() { + /** + * Filters whether builtin WordPress REST API functions should be used or not if available. + */ + $use_builtin = apply_filters( 'tribe_events_rest_use_builtin', true ); + + return $use_builtin && function_exists( 'get_rest_url' ); + } + + /** + * Returns the REST API URL prefix that will be appended to the namespace. + * + * The prefix should be in the `/some/path` format. + * + * @return string + */ + abstract protected function url_prefix(); + + /** + * Returns the string indicating the REST API version. + * + * @return string + */ + abstract public function get_version(); + + /** + * Returns the URL where the API users will find the API documentation. + * + * @return string + */ + abstract public function get_reference_url(); +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Messages_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Messages_Interface.php new file mode 100644 index 000000000..13edb0360 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Messages_Interface.php @@ -0,0 +1,30 @@ + => ]` format. + */ + public function get_messages(); + + /** + * Prefixes a message slug with a common root. + * + * @param string $message_slug + * + * @return string The prefixed message slug. + */ + public function prefix_message_slug( $message_slug ); +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Post_Repository.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Post_Repository.php new file mode 100644 index 000000000..274e18327 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Post_Repository.php @@ -0,0 +1,107 @@ + $full_url, + 'id' => $image_id, + 'extension' => pathinfo( $file, PATHINFO_EXTENSION ), + ]; + + $metadata = wp_get_attachment_metadata( $image_id ); + + if ( + false !== $metadata + && isset( $metadata['image_meta'], $metadata['file'], $metadata['sizes'] ) + ) { + unset( $metadata['image_meta'], $metadata['file'] ); + + foreach ( $metadata['sizes'] as $size => &$meta ) { + $size_image_src = wp_get_attachment_image_src( $image_id, $size ); + $meta['url'] = ! empty( $size_image_src[0] ) ? $size_image_src[0] : ''; + unset( $meta['file'] ); + } + unset( $meta ); + + $data = array_filter( array_merge( $data, $metadata ) ); + } + + return $data; + } + + /** + * @param string $date A date string in a format `strtotime` can parse. + * + * @return array An array of date details for the end date; each entry will be + * empty if the date is empty. + */ + protected function get_date_details( $date ) { + if ( empty( $date ) ) { + return [ + 'year' => '', + 'month' => '', + 'day' => '', + 'hour' => '', + 'minutes' => '', + 'seconds' => '', + ]; + } + + $time = strtotime( $date ); + + return [ + 'year' => date( 'Y', $time ), + 'month' => date( 'm', $time ), + 'day' => date( 'd', $time ), + 'hour' => date( 'H', $time ), + 'minutes' => date( 'i', $time ), + 'seconds' => date( 's', $time ), + ]; + } + + /** + * Returns a localized and formatted list of cost values in ASC order. + * + * @since 4.7.19 + * + * @param array $cost_couples An array of cost couples in the [ => ] format. + * + * @return array + */ + protected function format_and_sort_cost_couples( array $cost_couples = [] ) { + global $wp_locale; + + $cost_values = []; + foreach ( $cost_couples as $key => $value ) { + $value = str_replace( + [ + $wp_locale->number_format['decimal_point'], + $wp_locale->number_format['thousands_sep'], + ], + [ '.', '' ], + '' . $value + ); + if ( is_numeric( $value ) ) { + $cost_values[] = $value; + } else { + $cost_values[] = $key; + } + } + + sort( $cost_values, SORT_NUMERIC ); + + return $cost_values; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Post_Repository_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Post_Repository_Interface.php new file mode 100644 index 000000000..096c8908f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/REST/Post_Repository_Interface.php @@ -0,0 +1,14 @@ + 'post', + 'suppress_filters' => false, + 'posts_per_page' => -1, + ]; + + /** + * @var array A list of query modifiers that will trigger a overriding merge, thus + * replacing previous values, when set multiple times. + */ + protected static $replacing_modifiers = [ + 'p', + 'author', + 'author_name', + 'author__in', + 'author__not_in', + 'has_password', + 'post_password', + 'cat', + 'category__and', + 'category__in', + 'category__not_in', + 'category_name', + 'comment_count', + 'comment_status', + 'menu_order', + 'title', + 'title_like', + 'name', + 'post_name__in', + 'ping_status', + 'post__in', + 'post__not_in', + 'post_parent', + 'post_parent__in', + 'post_parent__not_in', + 'post_mime_type', + 's', + 'search', + 'tag', + 'tag__and', + 'tag__in', + 'tag__not_in', + 'tag_id', + 'tag_slug__and', + 'tag_slug__in', + 'ID', + 'id', + 'date', + 'after_date', + 'before_date', + 'date_gmt', + 'after_date_gmt', + 'before_date_gmt', + 'post_title', + 'post_content', + 'post_excerpt', + 'post_status', + 'to_ping', + 'post_modified', + 'post_modified_gmt', + 'post_content_filtered', + 'guid', + 'perm', + 'order', + ]; + + /** + * @var int + */ + protected static $meta_alias = 0; + + /** + * @var array A list of keys that denote the value to check should be cast to array. + */ + protected static $multi_value_keys = [ 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ]; + + /** + * @var array A map of SQL comparison operators to their human-readable counterpart. + */ + protected static $comparison_operators = [ + '=' => 'equals', + '!=' => 'not-equals', + '>' => 'gt', + '>=' => 'gte', + '<' => 'lt', + '<=' => 'lte', + 'LIKE' => 'like', + 'NOT LIKE' => 'not-like', + 'IN' => 'in', + 'NOT IN' => 'not-in', + 'BETWEEN' => 'between', + 'NOT BETWEEN' => 'not-between', + 'EXISTS' => 'exists', + 'NOT EXISTS' => 'not-exists', + 'REGEXP' => 'regexp', + 'NOT REGEXP' => 'not-regexp', + ]; + + /** + * A counter to keep track, on the class level, of the aliases generated for the terms table + * while building multi queries. + * + * @var int + */ + protected static $alias_counter = 1; + + /** + * @var string + */ + protected $filter_name = 'default'; + /** + * @var array The post IDs that will be updated. + */ + protected $ids = []; + /** + * @var bool Whether the post IDs to update have already been fetched or not. + */ + protected $has_ids = false; + /** + * @var array The updates that will be saved to the database. + */ + protected $updates = []; + + /** + * @var array A list of taxonomies this repository will recognize. + */ + protected $taxonomies = []; + + /** + * @var array A map detailing which fields should be converted from a + * GMT time and date to a local one. + */ + protected $to_local_time_map = [ + 'post_date_gmt' => 'post_date', + ]; + + /** + * @var array A map detailing which fields should be converted from a + * localized time and date to a GMT one. + */ + protected $to_gmt_map = [ + 'post_date' => 'post_date_gmt', + ]; + + /** + * @var array + */ + protected $default_args = [ 'post_type' => 'post' ]; + + /** + * @var array An array of query modifying callbacks populated while applying + * the filters. + */ + protected $query_modifiers = []; + + /** + * @var bool Whether the current query is void or not. + */ + protected $void_query = false; + + /** + * @var array An array of query arguments that will be populated while applying + * filters. + */ + protected $query_args = [ + 'meta_query' => [ 'relation' => 'AND' ], + 'tax_query' => [ 'relation' => 'AND' ], + 'date_query' => [ 'relation' => 'AND' ], + ]; + + /** + * @var array An array of query arguments that support 'relation'. + */ + protected $relation_query_args = [ + 'meta_query', + 'tax_query', + 'date_query', + ]; + + /** + * @var WP_Query The current query object built and modified by the instance. + */ + protected $current_query; + + /** + * @var array An associative array of the filters that will be applied and the used values. + */ + protected $current_filters = []; + + /** + * @var string|null The current filter being applied. + */ + protected $current_filter; + + /** + * @var Tribe__Repository__Query_Filters + */ + public $filter_query; + + /** + * @var string The filter that should be used to get a post by its primary key. + */ + protected $primary_key = 'p'; + + /** + * @var array A map of callbacks in the shape [ => ] + */ + protected $schema = []; + + /** + * @var array A map of schema slugs and their meta keys to be queried. + */ + protected $simple_meta_schema = []; + + /** + * @var array A map of schema slugs and their taxonomies to be queried. + */ + protected $simple_tax_schema = []; + + /** + * @var Tribe__Repository__Interface + */ + protected $main_repository; + + /** + * @var Tribe__Repository__Formatter_Interface + */ + protected $formatter; + + /** + * @var bool + */ + protected $skip_found_rows = true; + + /** + * @var Tribe__Repository__Interface + */ + protected $query_builder; + + /** + * A map relating aliases to their real update field name. + * + * E.g. the `title` alias might be an alias of `post_title` in update/save operations. + * This is done to allow using set-like methods with human-readable names. + * Extending classes should pre-fill this with default aliases. + * + * @var array + */ + protected $update_fields_aliases = [ + 'title' => 'post_title', + 'content' => 'post_content', + 'description' => 'post_content', + 'slug' => 'post_name', + 'excerpt' => 'post_excerpt', + 'status' => 'post_status', + 'parent' => 'post_parent', + 'author' => 'post_author', + 'date' => 'post_date', + 'date_gmt' => 'post_date_gmt', + 'date_utc' => 'post_date_gmt', + 'tag' => 'post_tag', + 'image' => '_thumbnail_id', + ]; + + /** + * The default create args that will be used by the repository + * to create posts of the managed type. + * + * @var + */ + protected $create_args; + + /** + * Indicates the current display context if any. + * Extending classes can support and use this property to know the + * display context. + * + * @var string + */ + protected $display_context = 'default'; + + /** + * Indicates the current render context if any. + * Extending classes can support and use this property to know the + * render context. + * + * @var string + */ + protected $render_context = 'default'; + + /** + * The query last built from the repository instance. + * + * @var WP_Query|null + */ + protected $last_built_query; + + /** + * The hash of the last built query. + * + * @var string + */ + protected $last_built_hash = ''; + + /** + * Tribe__Repository constructor. + * + * @since 4.7.19 + */ + public function __construct() { + $this->filter_query = new Tribe__Repository__Query_Filters(); + $this->default_args = array_merge( [ 'posts_per_page' => -1 ], $this->default_args ); + $post_types = (array) Tribe__Utils__Array::get( $this->default_args, 'post_type', [] ); + $this->taxonomies = get_taxonomies( [ 'object_type' => $post_types ], 'names' ); + + /** + * Allow plugins to init their classes and setup hooks at the initial setup of a repository. + * + * @param Tribe__Repository $this This repository instance + * + * @since 4.9.5 + */ + do_action( "tribe_repository_{$this->filter_name}_init", $this ); + } + + /** + * {@inheritdoc} + */ + public function get_default_args() { + return $this->default_args; + } + + /** + * {@inheritdoc} + */ + public function set_default_args( array $default_args ) { + $this->default_args = $default_args; + } + + /** + * Returns the value of a protected property. + * + * @since 4.7.19 + * + * @param string $name + * + * @return mixed|null + * @throws Tribe__Repository__Usage_Error If trying to access a non defined property. + */ + public function __get( $name ) { + if ( ! property_exists( $this, $name ) ) { + throw Tribe__Repository__Usage_Error::because_property_is_not_defined( $name, $this ); + } + + return $this->{$name}; + } + + /** + * Magic method to set protected properties. + * + * @since 4.7.19 + * + * @param string $name + * @param mixed $value + * + * @throws Tribe__Repository__Usage_Error As properties have to be set extending + * the class, using setter methods or via constructor injection + */ + public function __set( $name, $value ) { + throw Tribe__Repository__Usage_Error::because_properties_should_be_set_correctly( $name, $this ); + } + + /** + * Whether the class has a property with the specific name or not. + * + * @since 4.7.19 + * + * @param string $name + * + * @return bool + */ + public function __isset( $name ) { + return property_exists( $this, $name ) && isset( $this->{$name} ); + } + + /** + * {@inheritdoc} + */ + public function where( $key, $value = null ) { + $call_args = func_get_args(); + + return call_user_func_array( [ $this, 'by' ], $call_args ); + } + + /** + * {@inheritdoc} + */ + public function page( $page ) { + $this->query_args['paged'] = absint( $page ); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function per_page( $per_page ) { + // we allow for `-1` here + $this->query_args['posts_per_page'] = $per_page; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function count() { + if ( $this->void_query ) { + return 0; + } + + $query = $this->build_query(); + + // The request property will be set during the `get_posts` method and empty before it. + if ( ! empty( $query->request ) ) { + return (int) $query->post_count; + } + + $original_fields_value = $query->get( 'fields', '' ); + + $query->set( 'fields', 'ids' ); + + /** + * Filters the query object by reference before counting found posts in the current page. + * + * @since 4.7.19 + * + * @param WP_Query $query + */ + do_action( "tribe_repository_{$this->filter_name}_pre_count_posts", $query ); + + $ids = $query->get_posts(); + + $query->set( 'fields', $original_fields_value ); + + return is_array( $ids ) ? count( $ids ) : 0; + } + + /** + * {@inheritdoc} + */ + public function build_query( $use_query_builder = true ) { + $query = null; + + if ( array_key_exists( 'void_query', $this->query_args ) && false !== $this->query_args['void_query'] ) { + $this->void_query = true; + } + + // We'll let the query builder decide if the query has to be rebuilt or not. + if ( $use_query_builder && null !== $this->query_builder ) { + $query = $this->build_query_with_builder(); + } + + if ( null !== $this->last_built_query && $this->last_built_hash === $this->hash()) { + return $this->last_built_query; + } + + if ( null === $query ) { + $query = $this->build_query_internally(); + } + + /** + * Fires after the query has been built and before it's returned. + * + * @since 4.9.5 + * + * @param WP_Query $query The built query. + * @param array $query_args An array of query arguments used to build the query. + * @param Tribe__Repository $this This repository instance. + * @param bool $use_query_builder Whether a query builder was used to build this query or not. + * @param Tribe__Repository__Interface $query_builder The query builder in use, if any. + */ + do_action( "tribe_repository_{$this->filter_name}_query", + $query, + $this, + $use_query_builder, + $this->query_builder + ); + + $this->last_built_query = $query; + $this->last_built_hash = $this->hash(); + + return $query; + } + + /** + * {@inheritdoc} + */ + public function found() { + if ( $this->void_query ) { + return 0; + } + + $query = $this->build_query(); + + $original_no_found_rows_value = $query->get( 'no_found_rows' ); + + // The request property will be set during the `get_posts` method and empty before it. + if ( ! empty( $query->request ) && ( false === (boolean) $original_no_found_rows_value || ! $this->skip_found_rows ) ) { + return (int) $query->found_posts; + } + + $original_fields_value = $query->get( 'fields' ); + + $query->set( 'fields', 'ids' ); + $query->set( 'no_found_rows', false ); + + /** + * Filters the query object by reference before counting found posts. + * + * @since 4.7.19 + * + * @param WP_Query $query + */ + do_action( "tribe_repository_{$this->filter_name}_pre_found_posts", $query ); + + $query->get_posts(); + + $query->set( 'fields', $original_fields_value ); + $query->set( 'no_found_rows', $original_no_found_rows_value ); + + return (int) $query->found_posts; + } + + /** + * {@inheritdoc} + */ + public function all() { + if ( $this->void_query ) { + return []; + } + + $query = $this->build_query(); + + // The request property will be set during the `get_posts` method and empty before it. + if ( ! empty( $query->request ) ) { + return array_map( [ $this, 'format_item' ], $query->posts ); + } + + $original_fields_value = $query->get( 'fields', '' ); + + $return_ids = 'ids' === $original_fields_value; + + /** + * Do not skip counting the rows if we have some filtering to do on + * `found_posts`. + */ + $query->set( 'no_found_rows', $this->skip_found_rows ); + + // We'll let the class build the items later. + $query->set( 'fields', 'ids' ); + + /** + * Filters the query object by reference before getting the posts. + * + * @since 4.7.19 + * + * @param WP_Query $query + */ + do_action( "tribe_repository_{$this->filter_name}_pre_get_posts", $query ); + + $results = $query->get_posts(); + + /** + * Allow extending classes to customize the return value. + * Since we are filtering the array returning empty values while formatting + * the item will exclude it from the return values. + */ + $formatted = $return_ids + ? $results + : array_filter( array_map( [ $this, 'format_item' ], $results ) ); + + // Reset the fields if required. + $query->set( 'fields', $original_fields_value ); + + return $formatted; + } + + /** + * {@inheritdoc} + */ + public function offset( $offset, $increment = false ) { + /** + * The `offset` argument will only be used when `posts_per_page` is not -1 + * and will ignore pagination. + * So we filter to apply a real SQL OFFSET; we also leave in place the `offset` + * query var to have a fallback should the LIMIT cause proving difficult to filter. + */ + $this->query_args['offset'] = $increment + ? absint( $offset ) + (int) Tribe__Utils__Array::get( $this->query_args, 'offset', 0 ) + : absint( $offset ); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function order( $order = 'ASC' ) { + $order = strtoupper( $order ); + + if ( ! in_array( $order, [ 'ASC', 'DESC' ], true ) ) { + return $this; + } + + $this->query_args['order'] = $order; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function order_by( $order_by, $order = 'DESC' ) { + $this->query_args['orderby'] = $order_by; + + // Based on `WP_Query->parse_orderby` we should ignore the global order passed, and use the value on for each item in array. + if ( ! is_array( $order_by ) ) { + $this->query_args['order'] = $order; + } + + return $this; + } + + /** + * {@inheritdoc} + */ + public function fields( $fields ) { + $this->query_args['fields'] = $fields; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function permission( $permission ) { + if ( ! in_array( $permission, [ self::PERMISSION_READABLE, self::PERMISSION_EDITABLE ], true ) ) { + return $this; + } + + $this->query_args['perm'] = $permission; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function in( $post_ids ) { + $this->add_args( 'post__in', $post_ids ); + + return $this; + } + + /** + * Merges arguments into a query arg. + * + * @since 4.7.19 + * + * @param string $key + * @param array|int $value + */ + protected function add_args( $key, $value ) { + $this->query_args[ $key ] = (array) $value; + } + + /** + * {@inheritdoc} + */ + public function not_in( $post_ids ) { + $this->add_args( 'post__not_in', $post_ids ); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function parent( $post_id ) { + $this->add_args( 'post_parent__in', $post_id ); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function parent_in( $post_ids ) { + $this->add_args( 'post_parent__in', $post_ids ); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function parent_not_in( $post_ids ) { + $this->add_args( 'post_parent__not_in', $post_ids ); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function search( $search ) { + $this->query_args['s'] = $search; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function first() { + $query = $this->build_query(); + + $original_fields_value = $query->get( 'fields', '' ); + + $return_id = 'ids' === $original_fields_value; + + // The request property will be set during the `get_posts` method and empty before it. + if ( ! empty( $query->request ) ) { + $ids = $this->get_ids(); + + if ( empty( $ids ) ) { + return null; + } + + return $return_id ? reset( $ids ) : $this->format_item( reset( $ids ) ); + } + + $query->set( 'fields', 'ids' ); + + /** + * Filters the query object by reference before getting the first post from the query. + * + * @since 4.14.8 + * + * @param WP_Query $query The WP_Query object before get_posts() is called. + */ + do_action( "tribe_repository_{$this->filter_name}_pre_first_post", $query ); + + $ids = $query->get_posts(); + + $query->set( 'fields', $original_fields_value ); + + if ( empty( $ids ) ) { + return null; + } + + return $return_id ? reset( $ids ) : $this->format_item( reset( $ids ) ); + } + + /** + * Formats a post handled by the repository to the expected + * format. + * + * Extending classes should use this method to format return values to the expected format. + * + * @since 4.7.19 + * + * @param int|WP_Post $id + * + * @return WP_Post + */ + protected function format_item( $id ) { + $formatted = null === $this->formatter + ? get_post( $id ) + : $this->formatter->format_item( $id ); + + /** + * Filters a single formatted result. + * + * @since 4.9.11 + * + * @param mixed|WP_Post $formatted The formatted post result, usually a post object. + * @param int $id The formatted post ID. + * @param Tribe__Repository__Interface $this The current repository object. + */ + $formatted = apply_filters( "tribe_repository_{$this->filter_name}_format_item", $formatted, $id, $this ); + + return $formatted; + } + + /** + * {@inheritdoc} + */ + public function last() { + $query = $this->build_query(); + + $original_fields_value = $query->get('fields', ''); + + $return_id = 'ids' === $original_fields_value; + + // The request property will be set during the `get_posts` method and empty before it. + if ( ! empty( $query->request ) ) { + $ids = $this->get_ids(); + + if ( empty( $ids ) ) { + return null; + } + + return $return_id ? end( $ids ) : $this->format_item( end( $ids ) ); + } + + $query->set( 'fields', 'ids' ); + + /** + * Filters the query object by reference before getting the last post from the query. + * + * @since 4.14.8 + * + * @param WP_Query $query The WP_Query object before get_posts() is called. + */ + do_action( "tribe_repository_{$this->filter_name}_pre_last_post", $query ); + + $ids = $query->get_posts(); + + $query->set( 'fields', $original_fields_value ); + + if ( empty( $ids ) ) { + return null; + } + + return $return_id ? end( $ids ) : $this->format_item( end( $ids ) ); + } + + /** + * {@inheritdoc} + */ + public function nth( $n ) { + $per_page = (int) Tribe__Utils__Array::get_in_any( [ + $this->query_args, + $this->default_args, + ], 'posts_per_page', get_option( 'posts_per_page' ) ); + + if ( - 1 !== $per_page && $n > $per_page ) { + return null; + } + + $query = $this->build_query(); + + $return_ids = 'ids' === $query->get( 'fields', '' ); + + $i = absint( $n ) - 1; + + $ids = $this->get_ids(); + + if ( empty( $ids[ $i ] ) ) { + return null; + } + + return $return_ids ? $ids[ $i ] : $this->format_item( $ids[ $i ] ); + } + + /** + * Applies and returns a schema entry. + * + * @since 4.7.19 + * + * @param string $key + * @param mixed $value + * @param mixed ...$args Additional arguments for the application. + * + * @return mixed A scalar value or a callable. + */ + public function apply_modifier( $key, $value = null ) { + $call_args = func_get_args(); + + $application = Tribe__Utils__Array::get( $this->schema, $key, null ); + + /** + * Return primitives, including `null`, as they are. + */ + if ( ! is_callable( $application ) ) { + return $application; + } + + /** + * Allow for callbacks to fire immediately and return more complex values. + * This also means that callbacks meant to run on the next step, the one + * where args are applied, will need to be "wrapped" in callbacks themselves. + * The `$key` is removed from the args to get the value first and avoid + * unused args. + */ + $args_without_key = array_splice( $call_args, 1 ); + + $schema_entry = call_user_func_array( $application, $args_without_key ); + + /** + * Filters the applied modifier schema entry response. + * + * @param mixed $schema_entry A scalar value or a callable. + * @param Tribe__Repository $this This repository instance + * + * @since 4.9.5 + */ + return apply_filters( "tribe_repository_{$this->filter_name}_apply_modifier_schema_entry", $schema_entry, $this ); + } + + /** + * {@inheritdoc} + */ + public function take( $n ) { + $query = $this->build_query(); + + $return_ids = 'ids' === $query->get( 'fields', '' ); + + $matching_ids = $this->get_ids(); + + if ( empty( $matching_ids ) ) { + return []; + } + + $spliced = array_splice( $matching_ids, 0, $n ); + + return $return_ids ? $spliced : array_map( [ $this, 'format_item' ], $spliced ); + } + + /** + * Fetches a single instance of the post type handled by the repository. + * + * Similarly to the `get_post` function permissions are not taken into account when returning + * an instance by its primary key; extending classes can refine this behaviour to suit. + * + * @param mixed $primary_key + * + * @return WP_Post|null|mixed + */ + public function by_primary_key( $primary_key ) { + return $this->by( $this->primary_key, $primary_key )->first(); + } + + /** + * Filters posts by simple meta schema value. + * + * @since 4.9.5 + * + * @param mixed $value Meta value. + */ + public function filter_by_simple_meta_schema( $value ) { + $filter = $this->get_current_filter(); + + if ( ! array_key_exists( $filter, $this->simple_meta_schema ) ) { + return; + } + + $simple_meta = $this->simple_meta_schema[ $filter ]; + + $by = Tribe__Utils__Array::get( $simple_meta, 'by', 'meta_regexp_or_like' ); + + $this->by( $by, $simple_meta['meta_key'], $value ); + } + + /** + * Filters posts by simple tax schema value. + * + * @since 4.9.5 + * + * @param int|string|array $value Term value(s). + */ + public function filter_by_simple_tax_schema( $value ) { + $filter = $this->get_current_filter(); + + if ( ! array_key_exists( $filter, $this->simple_tax_schema ) ) { + return; + } + + $simple_tax = $this->simple_tax_schema[ $filter ]; + + $by = Tribe__Utils__Array::get( $simple_tax, 'by', 'term_in' ); + + $this->by( $by, $simple_tax['taxonomy'], $value ); + } + + /** + * {@inheritdoc} + */ + public function by( $key, $value = null ) { + if ( $this->void_query || ( 'void_query' === $key && false !== $value ) ) { + $this->void_query = true; + + // No point in doing more computations if the query is void. + return $this; + } + + $call_args = func_get_args(); + + $this->current_filters[ $key ] = array_slice( $call_args, 1 ); + + try { + // Set current filter as which one we are running. + $this->current_filter = $key; + + $query_modifier = $this->modify_query( $key, $call_args ); + + // Set current filter as no longer active, we aren't running it anymore. + $this->current_filter = null; + + /** + * Here we allow the repository to call one of its own methods and return `null`. + * A repository might have a `where` or `by` that is just building + * a more complex query using a base `where` or `by`. + */ + if ( null === $query_modifier ) { + return $this; + } + + /** + * Primitives are just merged in. + * Since we are using `array_merge_recursive` we expect them to be arrays. + */ + if ( ! ( is_object( $query_modifier ) || is_callable( $query_modifier ) ) ) { + + if ( ! is_array( $query_modifier ) ) { + throw new InvalidArgumentException( 'Query modifier should be an array!' ); + } + + $replace_modifiers = in_array( $key, $this->replacing_modifiers(), true ); + if ( $replace_modifiers ) { + /** + * We do a merge to make sure new values will override and replace the old + * ones. + */ + $this->query_args = array_merge( $this->query_args, $query_modifier ); + } else { + /** + * We do a recursive merge to allow "stacking" of same kind of queries; + * e.g. two or more `tax_query` or `meta_query` entries should merge into one. + */ + $this->query_args = Arr::merge_recursive_query_vars( $this->query_args, $query_modifier ); + } + } else { + /** + * If we get back something that is not an array then we add it to + * the stack of query modifying callbacks we'll call on the query + * after building it. + */ + $this->query_modifiers[] = $query_modifier; + } + } catch ( Exception $e ) { + /** + * We allow for the `apply` method to orderly fail to micro-optimize. + * If applying one parameter would yield no results then let's immediately bail. + * Schema should throw t + * his Exception if a light-weight on the filters would already + * deem a query as yielding nothing. + */ + $this->void_query = true; + + return $this; + } + + /** + * Catching other type of exceptions is something the client code should handle! + */ + + return $this; + } + + /** + * Returns the query modifier for a key. + * + * @since 4.7.19 + * + * @param string $key + * @param array $call_args + * + * @return mixed + * + * @throws Tribe__Repository__Usage_Error If the required filter is not defined by the class. + * @throws Tribe__Repository__Void_Query_Exception To signal the query would yield no results. + */ + protected function modify_query( $key, $call_args ) { + if ( ! $this->schema_has_modifier_for( $key ) ) { + if ( $this->has_default_modifier( $key ) ) { + // let's use the default filters normalizing the key first + $call_args[0] = $this->normalize_key( $key ); + $query_modifier = call_user_func_array( [ $this, 'apply_default_modifier' ], $call_args ); + } elseif ( 2 === count( $call_args ) ) { + // Pass query argument $key with the single value argument. + $query_modifier = [ + $key => $call_args[1], + ]; + } else { + // More than two $call_args were sent (key, value), assume it was meant for a filter that was not defined yet. + throw Tribe__Repository__Usage_Error::because_the_read_filter_is_not_defined( $key, $this ); + } + } else { + $query_modifier = call_user_func_array( [ $this, 'apply_modifier' ], $call_args ); + } + + return $query_modifier; + } + + /** + * Whether the current schema defines an application for the key or not. + * + * @since 4.7.19 + * + * @param $key + * + * @return bool + */ + protected function schema_has_modifier_for( $key ) { + return isset( $this->schema[ $key ] ); + } + + /** + * Whether a filter defined and handled by the repository exists or not. + * + * @since 4.7.19 + * + * @param string $key + * + * @return bool + */ + protected function has_default_modifier( $key ) { + $normalized_key = $this->normalize_key( $key ); + + return in_array( $normalized_key, self::$default_modifiers, true ); + } + + /** + * Normalizes the filter key to allow broad matching of the `by` filters. + * + * @since 4.7.19 + * + * E.g. `by( 'id', 23 )` is the same as `by( 'ID', 23 ). + * E.g. `by( 'parent', 23 )` is the same as `by( `post_parent`, 23 )` + * + * @param string $key + * + * @return string The normalized filter key + */ + protected function normalize_key( $key ) { + // `ID` to `id` + $normalized = strtolower( $key ); + + $post_prefixed = [ + 'password', + 'name__in', + '_in', + '_not_in', + 'parent', + 'parent__in', + 'parent__not_in', + 'mime_type', + 'content', + 'excerpt', + 'status', + 'modified', + 'modified_gmt', + 'content_filtered', + ]; + + if ( in_array( $key, $post_prefixed, true ) ) { + $normalized = 'post_' . $key; + } + + return $normalized; + } + + /** + * Returns a list of modifiers that, when applied multiple times, + * will replace the previous value. + * + * This behaviour is in opposition to "stackable" modifiers that will, + * instead, be composed and stacked. + * + * @since 4.7.19 + * + * @return array + */ + protected function replacing_modifiers() { + return self::$replacing_modifiers; + } + + /** + * Batch filter application method. + * + * This is the same as calling `where` multiple times with different arguments. + * + * @since 4.7.19 + * + * @param array $args An associative array of arguments to filter + * the posts by in the shape [ , ]. + * + * @return Tribe__Repository__Read_Interface|Tribe__Repository__Update_Interface + */ + public function where_args( array $args ) { + return $this->by_args( $args ); + } + + /** + * {@inheritdoc} + */ + public function by_args( array $args ) { + foreach ( $args as $key => $value ) { + $this->by( $key, $value ); + } + + return $this; + } + + /** + * {@inheritdoc} + */ + public function save( $return_promise = false ) { + $to_update = $this->get_ids(); + + if ( empty( $to_update ) ) { + return $return_promise ? new Tribe__Promise() : []; + } + + $exit = []; + $postarrs = []; + + foreach ( $to_update as $id ) { + $postarrs[ $id ] = $this->filter_postarr_for_update( $this->build_postarr( $id ), $id ); + } + + // If any `filter_postarr_for_update` call returned a falsy value then drop it. + $postarrs = array_filter( $postarrs ); + + if ( + $this->is_background_update_active( $to_update ) + && count( $to_update ) > $this->get_background_update_threshold( $to_update ) + ) { + return $this->async_update( $postarrs, true ); + } + + $update_callback = $this->get_update_callback( $to_update, false ); + + foreach ( $postarrs as $id => $postarr ) { + $this_exit = $update_callback( $postarr ); + $exit[ $id ] = $id === $this_exit ? true : $this_exit; + } + + return $return_promise ? new Tribe__Promise : $exit; + } + + /** + * {@inheritdoc} + */ + public function get_ids() { + if ( $this->void_query ) { + return []; + } + + + try { + /** @var WP_Query $query */ + $query = $this->get_query(); + + // The request property will be set during the `get_posts` method and empty before it. + if ( empty( $query->request ) ) { + $query->set( 'fields', 'ids' ); + + /** + * Filters the query object by reference before getting the post IDs from the query. + * + * @since 4.14.8 + * + * @param WP_Query $query The WP_Query object before get_posts() is called. + */ + do_action( "tribe_repository_{$this->filter_name}_pre_get_ids_for_posts", $query ); + + return $query->get_posts(); + } + + return array_map( + static function ( $post ) { + if ( is_int( $post ) ) { + return $post; + } + $post_arr = (array) $post; + + return Arr::get( $post_arr, 'ID', Arr::get( $post_arr, 'id', 0 ) ); + }, + $query->posts + ); + + } catch ( Tribe__Repository__Void_Query_Exception $e ) { + /* + * Extending classes might use this method to run sub-queries + * and signal a void query; let's return an empty array. + */ + return []; + } + } + + /** + * {@inheritdoc} + */ + public function get_query() { + return $this->build_query(); + } + + /** + * Whether the current key can be updated by this repository or not. + * + * @since 4.7.19 + * + * @param string $key + * + * @return bool + */ + protected function can_be_updated( $key ) { + return ! in_array( $key, self::$blocked_keys, true ); + } + + /** + * Whether the current key is a date one requiring a converted key pair too or not. + * + * @param string $key + * + * @return bool + */ + protected function requires_converted_date( $key ) { + return array_key_exists( $key, $this->to_local_time_map ) || array_key_exists( $key, $this->to_gmt_map ); + } + + /** + * Updates the update post payload to add dates that should be provided in GMT + * and localized version. + * + * @since 4.7.19 + * + * @param string $key + * @param string|int $value + * @param array $postarr + */ + protected function update_postarr_dates( $key, $value, array &$postarr ) { + if ( array_key_exists( $key, $this->to_gmt_map ) ) { + $postarr[ $this->to_gmt_map[ $key ] ] = Tribe__Timezones::to_tz( $value, 'UTC' ); + } elseif ( array_key_exists( $key, $this->to_local_time_map ) ) { + $postarr[ $this->to_local_time_map[ $key ] ] = Tribe__Timezones::to_tz( $value, Tribe__Timezones::wp_timezone_string() ); + } + $postarr[ $key ] = $value; + } + + /** + * {@inheritdoc} + */ + public function set_args( array $update_map ) { + foreach ( $update_map as $key => $value ) { + $this->set( $key, $value ); + } + + return $this; + } + + /** + * Sets the args to be updated during save process. + * + * @param string $key Argument key. + * @param mixed $value Argument value. + * + * @throws Tribe__Repository__Usage_Error + * + * @return $this + */ + public function set( $key, $value ) { + if ( ! is_string( $key ) ) { + throw Tribe__Repository__Usage_Error::because_update_key_should_be_a_string( $this ); + } + + $this->updates[ $key ] = $value; + + return $this; + } + + /** + * Sets the create args the repository will use to create posts. + * + * @since 4.9.5 + * + * @param string|int $image The path to an image file, an image URL, or an attachment post ID. + * + * @return $this + */ + public function set_featured_image( $image ) { + if ( '' === $image || false === $image ) { + $thumbnail_id = false; + } elseif ( 0 === $image || null === $image ) { + $thumbnail_id = ''; + } else { + $thumbnail_id = tribe_upload_image( $image ); + } + + if ( false === $thumbnail_id ) { + return $this; + } + + return $this->set( '_thumbnail_id', $thumbnail_id ); + } + + /** + * {@inheritdoc} + */ + public function filter_name( $filter_name ) { + $this->filter_name = trim( $filter_name ); + + return $this; + + } + + /** + * {@inheritdoc} + */ + public function set_formatter( Tribe__Repository__Formatter_Interface $formatter ) { + $this->formatter = $formatter; + } + + /** + * Filters the query to only return posts that are related, via a meta key, to posts + * that satisfy a condition. + * + * @param string|array $meta_keys One or more `meta_keys` relating the queried post type(s) + * to another post type. + * @param string $compare The SQL comparison operator. + * @param string $field One (a column in the `posts` table) that should match + * the comparison criteria; required if the comparison operator is not `EXISTS` or + * `NOT EXISTS`. + * @param string|array $values One or more values the post field(s) should be compared to; + * required if the comparison operator is not `EXISTS` or `NOT EXISTS`. + * + * @return $this + * @throws Tribe__Repository__Usage_Error If the comparison operator requires + */ + public function where_meta_related_by( $meta_keys, $compare, $field = null, $values = null ) { + $meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys ); + + if ( ! in_array( $compare, [ 'EXISTS', 'NOT EXISTS' ], true ) ) { + if ( empty( $field ) || empty( $values ) ) { + throw Tribe__Repository__Usage_Error::because_this_comparison_operator_requires_fields_and_values( $meta_keys, $compare, $this ); + } + } + + $field = esc_sql( $field ); + + /** @var wpdb $wpdb */ + global $wpdb; + $p = $this->sql_slug( 'meta_related_post', $compare, $meta_keys ); + $pm = $this->sql_slug( 'meta_related_post_meta', $compare, $meta_keys ); + + $this->filter_query->join( "LEFT JOIN {$wpdb->postmeta} {$pm} ON {$wpdb->posts}.ID = {$pm}.post_id" ); + $this->filter_query->join( "LEFT JOIN {$wpdb->posts} {$p} ON {$pm}.meta_value = {$p}.ID" ); + + $keys_in = $this->prepare_interval( $meta_keys ); + + if ( 'EXISTS' === $compare ) { + $this->filter_query->where( "{$pm}.meta_key IN {$keys_in} AND {$pm}.meta_id IS NOT NULL" ); + } elseif ( 'NOT EXISTS' === $compare ) { + $this->filter_query->where( "{$pm}.meta_id IS NULL" ); + } else { + if ( in_array( $compare, self::$multi_value_keys, true ) ) { + $values = $this->prepare_interval( $values ); + } else { + $values = $this->prepare_value( $values ); + } + $this->filter_query->where( "{$pm}.meta_key IN {$keys_in} AND {$p}.{$field} {$compare} {$values}" ); + } + + return $this; + } + + /** + * Filters the query to only return posts that are related, via a meta key, to posts + * that satisfy a condition. + * + * @since 4.10.3 + * + * @throws Tribe__Repository__Usage_Error If the comparison operator requires and no value provided. + * + * @param string|array $meta_keys One or more `meta_keys` relating the queried post type(s) + * to another post type. + * @param string $compare The SQL comparison operator. + * @param string $meta_field One (a column in the `postmeta` table) that should match + * the comparison criteria; required if the comparison operator is not `EXISTS` or + * `NOT EXISTS`. + * @param string|array $meta_values One or more values the post field(s) should be compared to; + * required if the comparison operator is not `EXISTS` or `NOT EXISTS`. + * @param boolean $or_not_exists Whether or not to also include a clause to check if value IS NULL. + * Example with this as true: `value = X OR value IS NULL`. + * + * @return $this + */ + public function where_meta_related_by_meta( $meta_keys, $compare, $meta_field = null, $meta_values = null, $or_not_exists = false ) { + $meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys ); + + if ( ! in_array( $compare, [ 'EXISTS', 'NOT EXISTS' ], true ) ) { + if ( empty( $meta_field ) || empty( $meta_values ) ) { + throw Tribe__Repository__Usage_Error::because_this_comparison_operator_requires_fields_and_values( $meta_keys, $compare, $this ); + } + } + + $meta_field = esc_sql( $meta_field ); + + /** @var wpdb $wpdb */ + global $wpdb; + + $pm = $this->sql_slug( 'post_meta_related_post_meta', $compare, $meta_keys ); + $pmm = $this->sql_slug( 'meta_post_meta_related_post_meta', $compare, $meta_keys ); + + $this->filter_query->join( "LEFT JOIN {$wpdb->postmeta} {$pm} ON {$pm}.post_id = {$wpdb->posts}.ID" ); + $this->filter_query->join( " + LEFT JOIN {$wpdb->postmeta} {$pmm} + ON {$pmm}.post_id = {$pm}.meta_value + AND {$pmm}.meta_key = '{$meta_field}' + " ); + + $keys_in = $this->prepare_interval( $meta_keys ); + + if ( 'EXISTS' === $compare ) { + $this->filter_query->where( " + {$pm}.meta_key IN {$keys_in} + AND {$pmm}.meta_id IS NOT NULL + " ); + } elseif ( 'NOT EXISTS' === $compare ) { + $this->filter_query->where( " + {$pm}.meta_key IN {$keys_in} + AND {$pmm}.meta_id IS NULL + " ); + } else { + if ( in_array( $compare, static::$multi_value_keys, true ) ) { + $meta_values = $this->prepare_interval( $meta_values ); + } else { + $meta_values = $this->prepare_value( $meta_values ); + } + + $clause = "{$pmm}.meta_value {$compare} {$meta_values}"; + + if ( $or_not_exists ) { + $clause = " + ( + {$clause} + OR {$pmm}.meta_id IS NULL + ) + "; + } + + $this->filter_query->where( " + {$pm}.meta_key IN {$keys_in} + AND {$clause} + " ); + } + + return $this; + } + + /** + * Builds a fenced group of WHERE clauses that will be used with OR logic. + * + * Mind that this is a lower level implementation of WHERE logic that requires + * each callback method to add, at least, one WHERE clause using the repository + * own `where_clause` method. + * + * @param array $callbacks One or more WHERE callbacks that will be called + * this repository. The callbacks have the shape + * [ , <...args>] + * + * @return $this + * @throws Tribe__Repository__Usage_Error If one of the callback methods does + * not add any WHERE clause. + * + * @see Tribe__Repository::where_clause() + * @see Tribe__Repository__Query_Filters::where() + */ + public function where_or( $callbacks ) { + $all_callbacks = func_get_args(); + $buffered = $this->filter_query->get_buffered_where_clauses( true ); + + $this->filter_query->buffer_where_clauses( true ); + + $buffered_count = count( $buffered ); + + foreach ( $all_callbacks as $c ) { + call_user_func_array( [ $this, $c[0] ], array_slice( $c, 1 ) ); + + if ( $buffered_count === count( $this->filter_query->get_buffered_where_clauses() ) ) { + throw Tribe__Repository__Usage_Error::because_where_or_should_only_be_used_with_methods_that_add_where_clauses( $c, $this ); + } + + $buffered_count ++; + } + + $buffered = $this->filter_query->get_buffered_where_clauses( true ); + + $fenced = sprintf( '( %s )', implode( ' OR ', $buffered ) ); + + $this->where_clause( $fenced ); + + return $this; + } + + /** + * Adds an entry to the repository filter schema. + * + * @since 4.9.5 + * + * @param string $key The filter key, the one that will be used in `by` and `where` + * calls. + * @param callable $callback The function that should be called to apply this filter. + */ + public function add_schema_entry( $key, $callback ) { + $this->schema[ $key ] = $callback; + } + + /** + * Adds a simple meta entry to the repository filter schema. + * + * @since 4.9.5 + * + * @param string $key The filter key, the one that will be used in `by` and `where` calls. + * @param string|array $meta_key The meta key(s) to use for the meta lookup. + * @param string|null $by The ->by() lookup to use (defaults to meta_regexp_or_like). + */ + public function add_simple_meta_schema_entry( $key, $meta_key, $by = null ) { + $this->schema[ $key ] = [ $this, 'filter_by_simple_meta_schema' ]; + + $this->simple_meta_schema[ $key ] = [ + 'meta_key' => $meta_key, + 'by' => $by, + ]; + } + + /** + * Adds a simple taxonomy entry to the repository filter schema. + * + * @since 4.9.5 + * + * @param string $key The filter key, the one that will be used in `by` and `where` calls. + * @param string|array $taxonomy The taxonomy/taxonomies to use for the tax lookup. + * @param string|null $by The ->by() lookup to use (defaults to term_in). + */ + public function add_simple_tax_schema_entry( $key, $taxonomy, $by = null ) { + $this->schema[ $key ] = [ $this, 'filter_by_simple_tax_schema' ]; + + $this->simple_tax_schema[ $key ] = [ + 'taxonomy' => $taxonomy, + 'by' => $by, + ]; + } + + /** + * {@inheritdoc} + */ + public function add_update_field_alias( $alias, $field_name ) { + $this->update_fields_aliases[ $alias ] = $field_name; + } + + /** + * Returns modified query arguments after applying a default filter. + * + * @since 4.7.19 + * + * @param string $key + * @param mixed $value + * + * @return array + * @throws Tribe__Repository__Usage_Error If a filter is called with wrong arguments. + */ + protected function apply_default_modifier( $key, $value ) { + $args = []; + + $call_args = func_get_args(); + $arg_1 = isset( $call_args[2] ) ? $call_args[2] : null; + $arg_2 = isset( $call_args[3] ) ? $call_args[3] : null; + + /** @var wpdb $wpdb */ + global $wpdb; + + switch ( $key ) { + default: + // leverage built-in WP_Query filters + $args = [ $key => $value ]; + break; + case 'ID': + case 'id': + $args = [ 'p' => $value ]; + break; + case 'search': + if ( '' !== $value ) { + $args = [ 's' => $value ]; + } + break; + case 'post_status': + $this->query_args['post_status'] = (array) $value; + break; + case 'date': + case 'after_date': + $args = $this->get_posts_after( $value, 'post_date' ); + break; + case 'before_date': + $args = $this->get_posts_before( $value, 'post_date' ); + break; + case 'date_gmt': + case 'after_date_gmt': + $args = $this->get_posts_after( $value, 'post_date_gmt' ); + break; + case 'before_date_gmt': + $args = $this->get_posts_before( $value, 'post_date_gmt' ); + break; + case 'title_like': + $this->filter_query->to_get_posts_with_title_like( $value ); + break; + case 'post_content': + $this->filter_query->to_get_posts_with_content_like( $value ); + break; + case 'post_excerpt': + $this->filter_query->to_get_posts_with_excerpt_like( $value ); + break; + case 'to_ping': + $this->filter_query->to_get_posts_to_ping( $value ); + $args = [ 'to_ping' => $value ]; + break; + case 'post_modified': + $args = $this->get_posts_after( $value, 'post_modified' ); + break; + case 'post_modified_gmt': + $args = $this->get_posts_after( $value, 'post_modified_gmt' ); + break; + case 'post_content_filtered': + $this->filter_query->to_get_posts_with_filtered_content_like( $value ); + break; + case 'guid': + $this->filter_query->to_get_posts_with_guid_like( $value ); + break; + case 'menu_order': + $args = [ 'menu_order' => $value ]; + break; + case 'meta': + case 'meta_equals': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, '=', $format = $arg_2 ); + break; + case 'meta_not_equals': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, '!=', $format = $arg_2 ); + break; + case 'meta_gt': + case 'meta_greater_than': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, '>', $format = $arg_2 ); + break; + case 'meta_gte': + case 'meta_greater_than_or_equal': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, '>=', $format = $arg_2 ); + break; + case 'meta_like': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, 'LIKE' ); + break; + case 'meta_not_like': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, 'NOT LIKE' ); + break; + case 'meta_lt': + case 'meta_less_than': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, '<', $format = $arg_2 ); + break; + case 'meta_lte': + case 'meta_less_than_or_equal': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, '<=', $format = $arg_2 ); + break; + case 'meta_in': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, 'IN', $format = $arg_2 ); + break; + case 'meta_not_in': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, 'NOT IN', $format = $arg_2 ); + break; + case 'meta_between': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, 'BETWEEN', $format = $arg_2 ); + break; + case 'meta_not_between': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, 'NOT BETWEEN', $format = $arg_2 ); + break; + case 'meta_exists': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, 'EXISTS' ); + break; + case 'meta_not_exists': + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, 'NOT EXISTS' ); + break; + case 'meta_regexp': + case 'meta_equals_regexp': + // Check if Regexp is fenced. + if ( tribe_is_regex( $arg_1 ) ) { + // Unfence the Regexp. + $arg_1 = tribe_unfenced_regex( $arg_1 ); + } + + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, 'REGEXP' ); + break; + case 'meta_not_regexp': + case 'meta_not_equals_regexp': + // Check if Regexp is fenced. + if ( tribe_is_regex( $arg_1 ) ) { + // Unfence the Regexp. + $arg_1 = tribe_unfenced_regex( $arg_1 ); + } + + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, 'NOT REGEXP' ); + break; + case 'meta_regexp_or_like': + case 'meta_equals_regexp_or_like': + $compare = 'LIKE'; + + // Check if Regexp is fenced (the only way for Regexp to be supported in this context). + if ( tribe_is_regex( $arg_1 ) ) { + $compare = 'REGEXP'; + + // Unfence the Regexp. + $arg_1 = tribe_unfenced_regex( $arg_1 ); + } + + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, $compare ); + break; + case 'meta_not_regexp_or_like': + case 'meta_not_equals_regexp_or_like': + $compare = 'NOT LIKE'; + + // Check if Regexp is fenced (the only way for Regexp to be supported in this context). + if ( tribe_is_regex( $arg_1 ) ) { + $compare = 'NOT REGEXP'; + + // Unfence the Regexp. + $arg_1 = tribe_unfenced_regex( $arg_1 ); + } + + $args = $this->build_meta_query( $meta_key = $value, $meta_value = $arg_1, $compare ); + break; + case 'taxonomy_exists': + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'term_id', 'EXISTS' ); + break; + case 'taxonomy_not_exists': + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'term_id', 'NOT EXISTS' ); + break; + case 'term_id_in': + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'term_id', 'IN' ); + break; + case 'term_id_not_in': + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'term_id', 'NOT IN' ); + break; + case 'term_id_and': + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'term_id', 'AND' ); + break; + case 'term_name_in': + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'name', 'IN' ); + break; + case 'term_name_not_in': + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'name', 'NOT IN' ); + break; + case 'term_name_and': + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'name', 'AND' ); + break; + case 'term_slug_in': + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'slug', 'IN' ); + break; + case 'term_slug_not_in': + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'slug', 'NOT IN' ); + break; + case 'term_slug_and': + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'slug', 'AND' ); + break; + case 'term_in': + $arg_1 = Tribe__Terms::translate_terms_to_ids( $arg_1, $value, false ); + + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'term_id', 'IN' ); + break; + case 'term_not_in': + $arg_1 = Tribe__Terms::translate_terms_to_ids( $arg_1, $value, false ); + + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'term_id', 'NOT IN' ); + break; + case 'term_and': + $arg_1 = Tribe__Terms::translate_terms_to_ids( $arg_1, $value, false ); + + $args = $this->build_tax_query( $taxonomy = $value, $terms = $arg_1, 'term_id', 'AND' ); + break; + } + + + return $args; + } + + /** + * Builds a date query entry to get posts after a date. + * + * @since 4.7.19 + * + * @param string $value + * @param string $column + * + * @return array + */ + protected function get_posts_after( $value, $column = 'post_date' ) { + $timezone = in_array( $column, [ 'post_date_gmt', 'post_modified_gmt' ], true ) + ? 'UTC' + : Tribe__Timezones::generate_timezone_string_from_utc_offset( Tribe__Timezones::wp_timezone_string() ); + + if ( is_numeric( $value ) ) { + $value = "@{$value}"; + } + + $date = new DateTime( $value, new DateTimeZone( $timezone ) ); + + $array_key = sprintf( '%s-after', $column ); + + return [ + 'date_query' => [ + 'relation' => 'AND', + $array_key => [ + 'inclusive' => true, + 'column' => $column, + 'after' => $date->format( 'Y-m-d H:i:s' ), + ], + ], + ]; + } + + /** + * Builds a date query entry to get posts before a date. + * + * @since 4.7.19 + * + * @param string $value + * @param string $column + * + * @return array + */ + protected function get_posts_before( $value, $column = 'post_date' ) { + $timezone = in_array( $column, [ 'post_date_gmt', 'post_modified_gmt' ], true ) + ? 'UTC' + : Tribe__Timezones::generate_timezone_string_from_utc_offset( Tribe__Timezones::wp_timezone_string() ); + + if ( is_numeric( $value ) ) { + $value = "@{$value}"; + } + + $date = new DateTime( $value, new DateTimeZone( $timezone ) ); + + $array_key = sprintf( '%s-before', $column ); + + return [ + 'date_query' => [ + 'relation' => 'AND', + $array_key => [ + 'inclusive' => true, + 'column' => $column, + 'before' => $date->format( 'Y-m-d H:i:s' ), + ], + ], + ]; + } + + /** + * Builds a meta query entry. + * + * @since 4.7.19 + * + * @param string $meta_key + * @param string|array $meta_value + * @param string $compare + * @param string $type_or_format The type of value to compare + * + * @return array|null + * @throws Tribe__Repository__Usage_Error If trying to compare multiple values with a single + * comparison operator. + */ + protected function build_meta_query( $meta_key, $meta_value = 'value', $compare = '=', $type_or_format = null ) { + $meta_keys = Tribe__Utils__Array::list_to_array( $meta_key ); + + $postfix = Tribe__Utils__Array::get( self::$comparison_operators, $compare, '' ); + + if ( count( $meta_keys ) === 1 ) { + $array_key = $this->sql_slug( $meta_keys[0], $postfix ); + + $args = [ + 'meta_query' => [ + $array_key => [ + 'key' => $meta_keys[0], + 'compare' => strtoupper( $compare ), + ], + ], + ]; + + if ( ! in_array( $compare, [ 'EXISTS', 'NOT EXISTS' ], true ) ) { + $args['meta_query'][ $array_key ]['value'] = $meta_value; + } + + if ( is_string( $type_or_format ) && 0 === strpos( $type_or_format, '%' ) ) { + throw Tribe__Repository__Usage_Error::because_the_type_is_a_wpdb_prepare_format( $meta_key, $type_or_format, $this ); + } + + if ( null !== $type_or_format ) { + $args['meta_query'][ $array_key ]['type'] = $type_or_format; + } + + return $args; + } + + + if ( null === $type_or_format ) { + $type_or_format = '%s'; + } elseif ( 0 !== strpos( $type_or_format, '%' ) ) { + throw Tribe__Repository__Usage_Error::because_the_format_is_not_a_wpdb_prepare_one( $meta_key, $type_or_format, $this ); + } + + /** @var wpdb $wpdb */ + global $wpdb; + + // Build custom WHERE and JOINS to reduce the JOIN clauses + $pm_alias = $this->sql_slug( 'meta', $postfix, ++ self::$meta_alias ); + $meta_keys_in = sprintf( "('%s')", implode( "','", array_map( 'esc_sql', $meta_keys ) ) ); + + $this->validate_operator_and_values( $compare, $meta_keys, $meta_value ); + + if ( in_array( $compare, self::$multi_value_keys, true ) ) { + $meta_values = $this->prepare_interval( Tribe__Utils__Array::list_to_array( $meta_value ), $type_or_format ); + } else { + $meta_values = $this->prepare_value( $meta_value, $type_or_format ); + } + + $this->filter_query->join( "JOIN {$wpdb->postmeta} {$pm_alias} ON {$wpdb->posts}.ID = {$pm_alias}.post_id" ); + + if ( 'EXISTS' === $compare ) { + $this->filter_query->where( "{$pm_alias}.meta_key IN {$meta_keys_in} AND {$pm_alias}.meta_id IS NOT NULL" ); + } elseif ( 'NOT EXISTS' === $compare ) { + $this->filter_query->where( "{$pm_alias}.meta_key NOT IN {$meta_keys_in} AND {$pm_alias}.meta_id IS NOT NULL" ); + } else { + $this->filter_query->where( "{$pm_alias}.meta_key IN {$meta_keys_in} AND {$pm_alias}.meta_value {$compare} {$meta_values}" ); + } + } + + /** + * Generates a SQL friendly slug from the provided, variadic, fragments. + * + * @since 4.7.19 + * + * @param ...string $frag + * + * @return string + */ + protected function sql_slug( $frag ) { + $frags = func_get_args(); + + foreach ( $frags as &$frag ) { + if ( is_string( $frag ) ) { + Tribe__Utils__Array::get( self::$comparison_operators, $frag, $frag ); + } elseif ( is_array( $frag ) ) { + $frag = implode( '_', $frag ); + } + } + + + $frags = array_filter( $frags ); + + return strtolower( str_replace( '-', '_', sanitize_title( implode( '_', $frags ) ) ) ); + } + + /** + * Builds a taxonomy query entry. + * + * @since 4.7.19 + * + * @param string $taxonomy + * @param int|string|array $terms + * @param string $field + * @param string $operator + * + * @return array + */ + protected function build_tax_query( $taxonomy, $terms, $field, $operator ) { + if ( in_array( $operator, [ 'EXISTS', 'NOT EXISTS' ], true ) ) { + $array_key = $this->sql_slug( $taxonomy, $operator ); + } else { + $array_key = $this->sql_slug( $taxonomy, $field, $operator ); + } + + return [ + 'tax_query' => [ + $array_key => [ + 'taxonomy' => $taxonomy, + 'field' => $field, + 'terms' => $terms, + 'operator' => strtoupper( $operator ), + ], + ], + ]; + } + + /** + * {@inheritdoc} + */ + public function join_clause( $join ) { + $this->filter_query->join( $join ); + } + + /** + * {@inheritdoc} + */ + public function where_clause( $where ) { + $this->filter_query->where( $where ); + } + + /** + * {@inheritdoc} + */ + public function set_query_builder( $query_builder ) { + $this->query_builder = $query_builder; + } + + /** + * Builds and escapes an interval of strings. + * + * The return string includes opening and closing braces. + * + * @since 4.7.19 + * + * @param string|array $values One or more values to use to build + * the interval + * . + * @param string $format The format that should be used to escape + * the values; default to '%s'. + * @param string $operator The operator the interval is being prepared for; + * defaults to `IN`. + * + * @return string + */ + public function prepare_interval( $values, $format = '%s', $operator = 'IN' ) { + $values = Tribe__Utils__Array::list_to_array( $values ); + + $prepared = []; + foreach ( $values as $value ) { + $prepared[] = $this->prepare_value( $value, $format ); + } + + return in_array( $operator, [ 'BETWEEN', 'NOT BETWEEN' ] ) + ? sprintf( '%s AND %s', $prepared[0], $prepared[1] ) + : sprintf( '(%s)', implode( ',', $prepared ) ); + } + + /** + * Prepares a single value to be used in a SQL query. + * + * @since 4.7.19 + * + * @param mixed $value + * @param string $format + * + * @return string + */ + public function prepare_value( $value, $format = '%s' ) { + /** @var wpdb $wpdb */ + global $wpdb; + + return $wpdb->prepare( $format, $value ); + } + + /** + * Validates that a comparison operator is used with the correct type of values. + * + * This is just a wrap to signal this kind of code error not in bad SQL error but + * with a visible exception. + * + * @since 4.7.19 + * + * @param string $compare A SQL comparison operator + * @param string|array $meta_key + * @param mixed $meta_value + * + * @throws Tribe__Repository__Usage_Error + */ + protected function validate_operator_and_values( $compare, $meta_key, $meta_value ) { + if ( is_array( $meta_value ) && ! in_array( $compare, self::$multi_value_keys, true ) ) { + throw Tribe__Repository__Usage_Error::because_single_value_comparisons_should_be_used_with_one_value( + $meta_key, + $meta_value, + $compare, + $this + ); + } + } + + /** + * {@inheritdoc} + */ + public function by_related_to_min( $by_meta_keys, $min, $keys = null, $values = null ) { + $min = $this->prepare_value( $min, '%d' ); + + /** @var wpdb $wpdb */ + global $wpdb; + + $by_meta_keys = $this->prepare_interval( $by_meta_keys ); + + $join = ''; + $and_where = ''; + if ( ! empty( $keys ) || ! empty( $values ) ) { + $join = "\nJOIN {$wpdb->postmeta} pm2 ON pm1.post_id = pm2.post_id\n"; + } + if ( ! empty( $keys ) ) { + $keys = $this->prepare_interval( $keys ); + $and_where .= "\nAND pm2.meta_key IN {$keys}\n"; + } + if ( ! empty( $values ) ) { + $values = $this->prepare_interval( $values ); + $and_where .= "\nAND pm2.meta_value IN {$values}\n"; + } + + $this->where_clause( "{$wpdb->posts}.ID IN ( + SELECT pm1.meta_value + FROM {$wpdb->postmeta} pm1 {$join} + WHERE pm1.meta_key IN {$by_meta_keys} {$and_where} + GROUP BY( pm1.meta_value ) + HAVING COUNT(DISTINCT pm1.post_id) >= {$min} + )" ); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function by_related_to_max( $by_meta_keys, $max, $keys = null, $values = null ) { + $max = $this->prepare_value( $max, '%d' ); + + /** @var wpdb $wpdb */ + global $wpdb; + + $join = ''; + $and_where = ''; + if ( ! empty( $keys ) || ! empty( $values ) ) { + $join = "\nJOIN {$wpdb->postmeta} pm2 ON pm1.post_id = pm2.post_id\n"; + } + if ( ! empty( $keys ) ) { + $keys = $this->prepare_interval( $keys ); + $and_where .= "\nAND pm2.meta_key IN {$keys}\n"; + } + if ( ! empty( $values ) ) { + $values = $this->prepare_interval( $values ); + $and_where .= "\nAND pm2.meta_value IN {$values}\n"; + } + + $by_meta_keys = $this->prepare_interval( $by_meta_keys ); + + $this->where_clause( "{$wpdb->posts}.ID IN ( + SELECT pm1.meta_value + FROM {$wpdb->postmeta} pm1 {$join} + WHERE pm1.meta_key IN {$by_meta_keys} {$and_where} + GROUP BY( pm1.meta_value ) + HAVING COUNT(DISTINCT pm1.post_id) <= {$max} + )" ); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function by_related_to_between( $by_meta_keys, $min, $max, $keys = null, $values = null ) { + $min = $this->prepare_value( $min, '%d' ); + $max = $this->prepare_value( $max, '%d' ); + + /** @var wpdb $wpdb */ + global $wpdb; + + $by_meta_keys = $this->prepare_interval( $by_meta_keys ); + + $join = ''; + $and_where = ''; + if ( ! empty( $keys ) || ! empty( $values ) ) { + $join = "\nJOIN {$wpdb->postmeta} pm2 ON pm1.post_id = pm2.post_id\n"; + } + if ( ! empty( $keys ) ) { + $keys = $this->prepare_interval( $keys ); + $and_where .= "\nAND pm2.meta_key IN {$keys}\n"; + } + if ( ! empty( $values ) ) { + $values = $this->prepare_interval( $values ); + $and_where .= "\nAND pm2.meta_value IN {$values}\n"; + } + + $this->where_clause( "{$wpdb->posts}.ID IN ( + SELECT pm1.meta_value + FROM {$wpdb->postmeta} pm1 {$join} + WHERE pm1.meta_key IN {$by_meta_keys} {$and_where} + GROUP BY( pm1.meta_value ) + HAVING COUNT(DISTINCT pm1.post_id) BETWEEN {$min} AND {$max} + )" ); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function by_not_related_to( $by_meta_keys, $keys = null, $values = null ) { + + /** @var wpdb $wpdb */ + global $wpdb; + + $by_meta_keys = $this->prepare_interval( $by_meta_keys ); + + $join = ''; + $and_where = ''; + if ( ! empty( $keys ) || ! empty( $values ) ) { + $join = "\nJOIN {$wpdb->postmeta} pm2 ON pm1.post_id = pm2.post_id\n"; + } + if ( ! empty( $keys ) ) { + $keys = $this->prepare_interval( $keys ); + $and_where .= "\nAND pm2.meta_key IN {$keys}\n"; + } + if ( ! empty( $values ) ) { + $values = $this->prepare_interval( $values ); + $and_where .= "\nAND pm2.meta_value IN {$values}\n"; + } + + $this->where_clause( "{$wpdb->posts}.ID NOT IN ( + SELECT pm1.meta_value + FROM {$wpdb->postmeta} pm1 {$join} + WHERE pm1.meta_key IN {$by_meta_keys} {$and_where} + GROUP BY( pm1.meta_value ) + )" ); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function has_filter( $key, $value = null ) { + $args = func_get_args(); + $values = array_slice( $args, 1 ); + + if ( null === $value ) { + // We just want to check if a filter is applied. + return array_key_exists( $key, $this->current_filters ); + } + + // We check if the filter exists and the arguments match; inline to prevent "Undefined index" errors. + return array_key_exists( $key, $this->current_filters ) && array_slice( + $this->current_filters[ $key ], + 0, + min( count( $this->current_filters[ $key ] ), count( $values ) ) + ) === $values; + } + + /** + * {@inheritdoc} + */ + public function get_current_filter() { + return $this->current_filter; + } + + /** + * Returns a map relating comparison operators to their "pretty" name. + * + * @since 4.9.5 + * + * @return array + */ + public static function get_comparison_operators() { + return self::$comparison_operators; + } + + /** + * {@inheritdoc} + */ + public function delete( $return_promise = false ) { + $to_delete = $this->get_ids(); + + if ( empty( $to_delete ) ) { + return $return_promise ? new Tribe__Promise() : []; + } + + + /** + * Filters the post delete operation allowing third party code to bail out of + * the process completely. + * + * @since 4.9.5 + * + * @param array|null $deleted An array containing the the IDs of the deleted posts. + * @param self $this This repository instance. + */ + $deleted = apply_filters( "tribe_repository_{$this->filter_name}_delete", null, $to_delete ); + if ( null !== $deleted ) { + return $deleted; + } + + if ( + $this->is_background_delete_active( $to_delete ) + && count( $to_delete ) > $this->get_background_delete_threshold( $to_delete ) + ) { + return $this->async_delete( $to_delete, $return_promise ); + } + + $delete_callback = $this->get_delete_callback( $to_delete ); + + foreach ( $to_delete as $id ) { + $done = $delete_callback( $id ); + + if ( empty( $done ) ) { + tribe( 'logger' )->log( + __( 'Could not delete post with ID ' . $id, 'tribe-common' ), + Tribe__Log::WARNING, + $this->filter_name + ); + continue; + } + $deleted[] = $id; + } + + return $return_promise ? new Tribe__Promise() : $deleted; + } + + /** + * Whether background delete is activated for the repository or not. + * + * @since 4.9.5 + * + * @param array $to_delete An array of post IDs to delete. + * + * @return bool Whether background delete is activated for the repository or not. + */ + protected function is_background_delete_active( $to_delete ) { + /** + * Whether background, asynchronous, deletion of posts is active or not for all repositories. + * + * If active then if the number of posts to delete is over the threshold, defined + * by the `tribe_repository_delete_background_threshold` filter, then the deletion will happen + * in background in other requests. + * + * @since 4.9.5 + * + * @param bool $background_active Whether background deletion is active or not. + * @param array $to_delete The array of post IDs to delete. + */ + $background_active = (bool) apply_filters( 'tribe_repository_delete_background_activated', true, $to_delete ); + + /** + * Whether background, asynchronous, deletion of posts is active or not for this specific repository. + * + * If active then if the number of posts to delete is over the threshold, defined + * by the `tribe_repository_delete_background_threshold` filter, then the deletion will happen + * in background in other requests. + * + * @since 4.9.5 + * + * @param bool $background_active Whether background deletion is active or not. + * @param array $to_delete The array of post IDs to delete. + */ + $background_active = (bool) apply_filters( + "tribe_repository_{$this->filter_name}_delete_background_activated", + $background_active, + $to_delete + ); + + return $background_active; + } + + /** + * Returns the threshold above which posts will be deleted in background. + * + * @since 4.9.5 + * + * @param array $to_delete An array of post IDs to delete. + * + * @return int The threshold above which posts will be deleted in background. + */ + protected function get_background_delete_threshold( $to_delete ) { + /** + * The number of posts above which the deletion will happen in background. + * + * This filter will be ignored if background delete is deactivated with the `tribe_repository_delete_background_activated` + * or `tribe_repository_{$this->filter_name}_delete_background_activated` filter. + * + * @since 4.9.5 + * + * @param int The threshold over which posts will be deleted in background. + * @param array $to_delete The post IDs to delete. + */ + $background_threshold = (int) apply_filters( 'tribe_repository_delete_background_threshold', 20, $to_delete ); + + /** + * The number of posts above which the deletion will happen in background. + * + * This filter will be ignored if background delete is deactivated with the `tribe_repository_delete_background_activated` + * or `tribe_repository_{$this->filter_name}_delete_background_activated` filter. + * + * @since 4.9.5 + * + * @param int The threshold over which posts will be deleted in background. + * @param array $to_delete The post IDs to delete. + */ + $background_threshold = (int) apply_filters( + "tribe_repository_{$this->filter_name}_delete_background_threshold", + $background_threshold, + $to_delete + ); + + return $background_threshold; + } + + /** + * Whether background update is activated for the repository or not. + * + * @since 4.9.5 + * + * @param array $to_update An array of post IDs to update. + * + * @return bool Whether background update is activated for the repository or not. + */ + protected function is_background_update_active( $to_update ) { + /** + * Whether background, asynchronous, update of posts is active or not for all repositories. + * + * If active then if the number of posts to update is over the threshold, defined + * by the `tribe_repository_update_background_threshold` filter, then the update will happen + * in background in other requests. + * + * @since 4.9.5 + * + * @param bool $background_active Whether background update is active or not. + * @param array $to_update The array of post IDs to update. + */ + $background_active = (bool) apply_filters( 'tribe_repository_update_background_activated', true, $to_update ); + + /** + * Whether background, asynchronous, update of posts is active or not for this specific repository. + * + * If active then if the number of posts to update is over the threshold, defined + * by the `tribe_repository_update_background_threshold` filter, then the update will happen + * in background in other requests. + * + * @since 4.9.5 + * + * @param bool $background_active Whether background update is active or not. + * @param array $to_update The array of post IDs to update. + */ + $background_active = (bool) apply_filters( + "tribe_repository_{$this->filter_name}_update_background_activated", + $background_active, + $to_update + ); + + return $background_active; + } + + /** + * Returns the threshold above which posts will be updated in background. + * + * @since 4.9.5 + * + * @param array $to_update An array of post IDs to update. + * + * @return int The threshold above which posts will be updated in background. + */ + protected function get_background_update_threshold( $to_update ) { + /** + * The number of posts above which the update will happen in background. + * + * This filter will be ignored if background update is deactivated with the `tribe_repository_update_background_activated` + * or `tribe_repository_{$this->filter_name}_update_background_activated` filter. + * + * @since 4.9.5 + * + * @param int The threshold over which posts will be updated in background. + * @param array $to_update The post IDs to update. + */ + $background_threshold = (int) apply_filters( 'tribe_repository_update_background_threshold', 20, $to_update ); + + /** + * The number of posts above which the update will happen in background. + * + * This filter will be ignored if background update is deactivated with the `tribe_repository_update_background_activated` + * or `tribe_repository_{$this->filter_name}_update_background_activated` filter. + * + * @since 4.9.5 + * + * @param int The threshold over which posts will be updated in background. + * @param array $to_update The post IDs to update. + */ + $background_threshold = (int) apply_filters( + "tribe_repository_{$this->filter_name}_update_background_threshold", + $background_threshold, + $to_update + ); + + return $background_threshold; + } + + + /** + * {@inheritdoc} + */ + public function async_delete( array $to_delete, $return_promise = true ) { + $promise = new Tribe__Promise( $this->get_delete_callback( $to_delete, true ), $to_delete ); + if ( ! $return_promise ) { + // Dispatch it immediately and return the IDs that will be deleted. + $promise->save()->dispatch(); + + return $to_delete; + } + + // Return the promise and let the client do the dispatching. + return $promise; + } + + /** + * Returns the delete callback function or method to use to delete posts. + * + * @since 4.9.5 + * + * @param int|array $to_delete The post ID to delete or an array of post IDs to delete. + * @param bool $background Whether the callback will be used in background delete operations or not. + * + * @return callable The callback to use. + */ + protected function get_delete_callback( $to_delete, $background = false ) { + /** + * Filters the callback that all repositories should use to delete posts. + * + * @since 4.9.5 + * + * @param callable $callback The callback that should be used to delete each post; defaults + * to `wp_delete_post`; falsy return values will be interpreted as + * failures to delete. + * @param array|int $to_delete An array of post IDs to delete. + * @param bool $background Whether the delete operation will happen in background or not. + */ + $callback = apply_filters( 'tribe_repository_delete_callback', 'wp_delete_post', (array) $to_delete, (bool) $background ); + + /** + * Filters the callback that all repositories should use to delete posts. + * + * @since 4.9.5 + * + * @param callable $callback The callback that should be used to delete each post; defaults + * to `wp_delete_post`; falsy return values will be interpreted as + * failures to delete. + * @param array|int $to_delete An array of post IDs to delete. + * @param bool $background Whether the delete operation will happen in background or not. + */ + $callback = apply_filters( + "tribe_repository_{$this->filter_name}_delete_callback", + $callback, + (array) $to_delete, + (bool) $background + ); + + return $callback; + } + + /** + * {@inheritdoc} + */ + public function get_filter_name() { + return $this->filter_name; + } + + /** + * Returns the update callback function or method to use to update posts. + * + * @since 4.9.5 + * + * @param int|array $to_update The post ID to update or an array of post IDs to update. + * @param bool $background Whether the callback will be used in background update operations or not. + * + * @return callable The callback to use. + */ + protected function get_update_callback( $to_update, $background = false ) { + /** + * Filters the callback that all repositories should use to update posts. + * + * @since 4.9.5 + * + * @param callable $callback The callback that should be used to update each post; defaults + * to `wp_update_post`; falsy return values will be interpreted as + * failures to update. + * @param array|int $to_update An array of post IDs to update. + * @param bool $background Whether the update operation will happen in background or not. + */ + $callback = apply_filters( 'tribe_repository_update_callback', 'wp_update_post', (array) $to_update, (bool) $background ); + + /** + * Filters the callback that all repositories should use to update posts. + * + * @since 4.9.5 + * + * @param callable $callback The callback that should be used to update each post; defaults + * to `wp_update_post`; falsy return values will be interpreted as + * failures to update. + * @param array|int $to_update An array of post IDs to update. + * @param bool $background Whether the update operation will happen in background or not. + */ + $callback = apply_filters( + "tribe_repository_{$this->filter_name}_update_callback", + $callback, + (array) $to_update, + (bool) $background + ); + + return $callback; + } + + /** + * {@inheritdoc} + */ + public function async_update( array $to_update, $return_promise = true ) { + $promise = new Tribe__Promise( $this->get_update_callback( $to_update, true ), $to_update ); + if ( ! $return_promise ) { + // Dispatch it immediately and return the IDs that will be deleted. + $promise->save()->dispatch(); + + return $to_update; + } + + // Return the promise and let the client do the dispatching. + return $promise; + } + + /** + * {@inheritdoc} + */ + public function get_update_fields_aliases() { + return $this->update_fields_aliases; + } + + /** + * {@inheritdoc} + */ + public function set_update_fields_aliases( array $update_fields_aliases ) { + $this->update_fields_aliases = $update_fields_aliases; + } + + /** + * {@inheritdoc} + */ + public function filter_postarr_for_update( array $postarr, $post_id ) { + /** + * Filters the post array that will be used for an update. + * + * @since 4.9.5 + * + * @param array $postarr The post array that will be sent to the update callback. + * @param int The post ID if set. + */ + return apply_filters( "tribe_repository_{$this->filter_name}_update_postarr", $postarr, $post_id ); + } + + /** + * A utility method to cast any PHP error into an exception proper. + * + * Usage: `set_error_handler( array( $repository, 'cast_error_to_exception' ) ); + * + * @since 4.9.5 + * + * @param int $code The error code. + * @param string $message The error message. + */ + public function cast_error_to_exception( $code, $message ) { + throw new RuntimeException( $message, $code ); + } + + /** + * {@inheritdoc} + */ + public function create() { + $postarr = $this->filter_postarr_for_create( array_merge( $this->build_postarr(), $this->create_args ) ); + + // During the filtering allow extending classes or filters to prevent the create completely. + if ( false === ( bool ) $postarr ) { + return false; + } + + $created = call_user_func( $this->get_create_callback( $postarr ), $postarr ); + + $post = $this->format_item( $created ); + + return $post instanceof WP_Post && $post->ID === $created ? $post : false; + } + + /** + * {@inheritdoc} + */ + public function filter_postarr_for_create( array $postarr ) { + /** + * Filters the post array that will be used for the creation of a post + * of the type managed by the repository. + * + * @since 4.9.5 + * + * @param array $postarr The post array that will be sent to the create callback. + */ + return apply_filters( "tribe_repository_{$this->filter_name}_update_postarr", $postarr ); + } + + /** + * {@inheritdoc} + */ + public function build_postarr( $id = null ) { + $postarr = [ + 'tax_input' => [], + 'meta_input' => [], + ]; + + /* + * The check is lax here by design: we leave space for the client code + * to use this method to build post arrays; when this is used by the + * repository the integrity of `$id` is granted. + */ + $is_update = null !== $id && is_numeric( $id ); + + // But still let's provide values that make sense. + if ( $is_update ) { + $postarr['ID'] = (int) $id; + } + + foreach ( $this->updates as $key => $value ) { + if ( + $value instanceof Closure || + ( is_array( $value ) && is_callable( $value ) ) + ) { + $value = $value( $id, $key, $this ); + } + + // Allow fields to be aliased + $key = Tribe__Utils__Array::get( $this->update_fields_aliases, $key, $key ); + + if ( ! $this->can_be_updated( $key ) ) { + throw Tribe__Repository__Usage_Error::because_this_field_cannot_be_updated( $key, $this ); + } + + if ( $this->is_a_post_field( $key ) ) { + if ( $this->requires_converted_date( $key ) ) { + $this->update_postarr_dates( $key, $value, $postarr ); + } else { + $postarr[ $key ] = $value; + } + } elseif ( $this->is_a_taxonomy( $key ) ) { + $taxonomy = get_taxonomy( $key ); + if ( $taxonomy instanceof WP_Taxonomy ) { + $postarr['tax_input'][ $key ] = Tribe__Utils__Array::list_to_array( $value ); + } + } else { + // it's a custom field + $postarr['meta_input'][ $key ] = $value; + } + } + + return $postarr; + } + + /** + * Returns the create callback function or method to use to create posts. + * + * @since 4.9.5 + * + * @param array $postarr The post array that will be used for the creation. + * + * @return callable The callback to use. + */ + protected function get_create_callback( array $postarr ) { + /** + * Filters the callback that all repositories should use to create posts. + * + * @since 4.9.5 + * + * @param callable $callback The callback that should be used to create posts; defaults + * to `wp_insert_post`; non numeric and existing post ID return + * values will be interpreted as failures to create the post. + * @param array $postarr The post array that will be used for the creation. + */ + $callback = apply_filters( 'tribe_repository_create_callback', 'wp_insert_post', $postarr ); + + /** + * Filters the callback that all repositories should use to create posts. + * + * @since 4.9.5 + * + * @param callable $callback The callback that should be used to create posts; defaults + * to `wp_insert_post`; non numeric and existing post ID return + * values will be interpreted as failures to create the post. + * @param array $postarr The post array that will be used for the creation. + */ + $callback = apply_filters( + "tribe_repository_{$this->filter_name}_create_callback", + $callback, + $postarr + ); + + return $callback; + } + + /** + * Returns the create args the repository will use to create posts. + * + * @since 4.9.5 + * + * @return array The create args the repository will use to create posts. + */ + public function get_create_args() { + return $this->create_args; + } + + /** + * Sets the create args the repository will use to create posts. + * + * @since 4.9.5 + * + * @param array $create_args The create args the repository will use to create posts. + */ + public function set_create_args( array $create_args ) { + $this->create_args = $create_args; + } + + /** + * Returns a value trying to fetch it from an array first and then + * reading it from the meta. + * + * @since 4.9.5 + * + * @param array $postarr The array to look into. + * @param string $key The key to retrieve. + * @param int|null $post_id The post ID to fetch the value for. + * @param mixed $default The default value to return if nothing was found. + * + * @return mixed The found value if any. + */ + protected function get_from_postarr_or_meta( array $postarr, $key, $post_id = null, $default = null ) { + $default_value = get_post_meta( $post_id, $key, true ); + if ( '' === $default_value || null === $post_id ) { + $default_value = $default; + } + + return Tribe__Utils__Array::get( $postarr['meta_input'], $key, $default_value ); + } + + /** + * {@inheritdoc} + */ + public function set_display_context( $context = 'default' ) { + $this->display_context = $context; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function set_render_context( $context = 'default' ) { + $this->render_context = $context; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function get_query_for_posts( array $posts ) { + $posts = array_filter( array_map( 'get_post', $posts ) ); + $query = new \WP_Query(); + // Let's make it look like the posts are the result of a query using `post__in`. + $query->set( 'post__in', wp_list_pluck( $posts, 'ID' ) ); + $query->found_posts = count( $posts ); + $query->posts = $posts; + $query->post_count = count( $posts ); + $query->current_post = - 1; + + return $query; + } + + /** + * {@inheritdoc} + */ + public function pluck( $field ) { + $list = new WP_List_Util( $this->all() ); + + return $list->pluck( $field ); + } + + /** + * {@inheritdoc} + */ + public function filter( $args = [], $operator = 'AND' ) { + $list = new WP_List_Util( $this->all() ); + + return $list->filter( $args, $operator ); + } + + /** + * {@inheritdoc} + */ + public function sort( $orderby = [], $order = 'ASC', $preserve_keys = false ) { + $list = new WP_List_Util( $this->all() ); + + return $list->sort( $orderby, $order, $preserve_keys ); + } + + /** + * {@inheritdoc} + */ + public function collect() { + return new Tribe__Utils__Post_Collection( $this->all() ); + } + + /** + * Builds the ORM query with the query builder. + * + * Allow classes extending or decorating the repository to act before + * the query is built or replace its building completely. + * + * @since 4.9.5 + * + * @return WP_Query|null A built query object or `null` if the builder failed or bailed. + */ + protected function build_query_with_builder() { + $built = $this->query_builder->build_query(); + + $built->builder = $this->query_builder; + + if ( null !== $built ) { + $query = $built; + } + + return $query; + } + + /** + * Builds the ORM query internally, without a query builder. + * + * @since 4.9.5 + * + * @return WP_Query The built query object. + */ + protected function build_query_internally() { + $query = new WP_Query(); + + $query->builder = $this; + + $this->filter_query->set_query( $query ); + + /** + * Here we merge, not recursively, to allow user-set query arguments + * to override the default ones. + */ + $query_args = array_merge( $this->default_args, $this->query_args ); + + $default_post_status = [ 'publish' ]; + if ( current_user_can( 'read_private_posts' ) ) { + $default_post_status[] = 'private'; + } + + $query_args['post_status'] = Tribe__Utils__Array::get( $query_args, 'post_status', $default_post_status ); + + /** + * Filters the query arguments that will be used to fetch the posts. + * + * @param array $query_args An array of the query arguments the query will be + * initialized with. + * @param WP_Query $query The query object, the query arguments have not been parsed yet. + * @param $this $this This repository instance + */ + $query_args = apply_filters( "tribe_repository_{$this->filter_name}_query_args", $query_args, $query, $this ); + + /** + * Provides a last-ditch effort to override the filtered offset. + * + * This should only be used if doing creating pagination for performance purposes. + * + * @since 4.11.0 + * + * @param null|int $filtered_offset Offset parameter setting. + * @param array $query_args List of query arguments. + */ + $filtered_offset = apply_filters( 'tribe_repository_query_arg_offset_override', null, $query_args ); + + if ( $filtered_offset || isset( $query_args['offset'] ) ) { + $per_page = (int) Tribe__Utils__Array::get( $query_args, 'posts_per_page', get_option( 'posts_per_page' ) ); + + if ( $filtered_offset ) { + $query_args['offset'] = $filtered_offset; + } elseif ( isset( $query_args['offset'] ) ) { + $offset = absint( $query_args['offset'] ); + $page = (int) Tribe__Utils__Array::get( $query_args, 'paged', 1 ); + + $real_offset = $per_page === -1 ? $offset : ( $per_page * ( $page - 1 ) ) + $offset; + $query_args['offset'] = $real_offset; + + /** + * Unset the `offset` query argument to avoid applying it multiple times when this method + * is used, on the same repository, more than once. + */ + unset( $this->query_args['offset'] ); + } + + $query_args['posts_per_page'] = $per_page === -1 ? self::MAX_NUMBER_OF_POSTS_PER_PAGE : $per_page; + } + + foreach ( $query_args as $key => $value ) { + $query->set( $key, $value ); + } + + /** + * Here process the previously set query modifiers passing them the + * query object before it executes. + * The query modifiers should modify the query by reference. + */ + foreach ( $this->query_modifiers as $arg ) { + if ( is_object( $arg ) && method_exists( $arg, '__invoke' ) ) { + // __invoke, assume changes are made by reference + $arg( $query ); + } elseif ( is_callable( $arg ) ) { + // assume changes are made by reference + $arg( $query ); + } + } + + return $query; + } + + /** + * {@inheritDoc} + */ + public function hash( array $settings = [], WP_Query $query = null ) { + return md5( json_encode( $this->get_hash_data( $settings, $query ) ) ); + } + + /** + * {@inheritDoc} + */ + public function get_hash_data( array $settings, WP_Query $query = null ) { + $filters = $this->current_filters; + $query_vars = null !== $query + ? $query->query + : array_merge( $this->default_args, $this->query_args ); + + if ( isset( $settings['exclude'] ) ) { + $filters = array_diff_key( + $filters, + array_combine( $settings['exclude'], $settings['exclude'] ) + ); + $query_vars = array_diff_key( + $query_vars, + array_combine( $settings['exclude'], $settings['exclude'] ) + ); + } + + if ( isset( $settings['include'] ) ) { + $filters = array_intersect_key( + $filters, + array_combine( $settings['include'], $settings['include'] ) + ); + $query_vars = array_intersect_key( + $query_vars, + array_combine( $settings['include'], $settings['include'] ) + ); + } + + Tribe__Utils__Array::recursive_ksort( $filters ); + Tribe__Utils__Array::recursive_ksort( $query_vars ); + + return [ 'filters' => $filters, 'query_vars' => $query_vars ]; + } + + /** + * {@inheritDoc} + */ + public function get_last_built_query() { + return $this->last_built_query; + } + + /** + * Checks a SQL relation is valid. + * + * Allowed values are 'OR' and 'AND'. + * + * @since 4.9.6 + * + * @param string $relation The relation to check. + * + * @throws \Tribe__Repository__Usage_Error If the relation is not a valid one. + */ + protected function validate_relation( $relation ) { + if ( ! in_array( $relation, [ 'OR', 'AND' ], true ) ) { + throw Tribe__Repository__Usage_Error::because_this_relation_is_not_valid( $relation ); + } + } + + /** + * Sanitizes and prepares string to be used in a LIKE comparison. + * + * If no leading and trailing `%` was found it will be added at the start and end of the string. + * + * @since 4.9.6 + * + * @param string|array $value The string to prepare or an array of strings to prepare. + * + * @return string|array The sanitized string, or strings. + */ + protected function prepare_like_string( $value ) { + $original_value = $value; + $values = (array) $value; + $prepared = []; + $pattern = '/^(?
    %{0,1})(?.*?)(?%{0,1})$/u';
    +
    +		global $wpdb;
    +
    +		foreach ( $values as $v ) {
    +			preg_match( $pattern, $v, $matches );
    +			$pre = $matches['pre'] ?: '';
    +			$post = $matches['post'] ?: '';
    +			$string = $wpdb->esc_like( $matches['string'] );
    +
    +			if ( '' === $pre && '' === $post ) {
    +				// If the string does not contain any starting and ending placeholder we'll add all combinations.
    +				$prepared[] = '%' . $string;
    +				$prepared[] = $string . '%';
    +				$prepared[] = $string;
    +				$pre = $post = '%';
    +			}
    +
    +			$prepared[] = $pre . $string . $post;
    +		}
    +
    +		return is_array( $original_value ) ? $prepared : reset( $prepared );
    +	}
    +
    +	/**
    +	 * Builds the WHERE clause for a set of fields.
    +	 *
    +	 * This method is table-agnostic. While flexible it will also require some care to be used.
    +	 *
    +	 * @since 4.9.6
    +	 *
    +	 * @param string|array $fields  One or more fields to build the clause for.
    +	 * @param string       $compare The comparison operator to use to build the
    +	 * @param string|array $values One or more values to build the WHERE clause for.
    +	 * @param string       $value_format The format, a `$wpdb::prepare()` compatible one, to use to format the values.
    +	 * @param string       $where_relation The relation to apply between each WHERE fragment.
    +	 * @param string       $value_relation The relation to apply between each value fragment.
    +	 *
    +	 * @return string The built WHERE clause.
    +	 *
    +	 * @throws \Tribe__Repository__Usage_Error If the relations are not valid or another WHERE building issue happens.
    +	 */
    +	protected function build_fields_where_clause(
    +		$fields,
    +		$compare,
    +		$values,
    +		$value_format = '%s',
    +		$where_relation = 'OR',
    +		$value_relation = 'OR'
    +	) {
    +		$this->validate_relation( $where_relation );
    +		$this->validate_relation( $value_relation );
    +		global $wpdb;
    +		$fields_where_clauses = [];
    +		$fields = (array) $fields;
    +		$values = (array) $values;
    +		foreach ( $fields as $field ) {
    +			$value_clauses = [];
    +			foreach ( $values as $compare_value ) {
    +				if ( ! is_array( $compare_value ) || count( $compare_value ) === 1 ) {
    +					$value_clauses[] = $wpdb->prepare(
    +						"({$field} {$compare} {$value_format})",
    +						$compare_value
    +					);
    +				} else {
    +					$value_format = implode(
    +						',',
    +						array_fill( 0, count( $compare_value ), $value_format )
    +					);
    +					$value_clauses[] = $wpdb->prepare(
    +						"({$field} {$compare} ({$value_format}))",
    +						$compare_value
    +					);
    +				}
    +			}
    +			$fields_where_clauses[] = '(' . implode( " {$value_relation} ", $value_clauses ) . ')';
    +		}
    +
    +		$fields_where = $wpdb->remove_placeholder_escape(
    +			implode( " {$where_relation} ", $fields_where_clauses )
    +		);
    +
    +		return $fields_where;
    +	}
    +
    +	/**
    +	 * Returns the term IDs of terms matching a criteria, the match is made on the terms slug and name.
    +	 *
    +	 * This should be used to break-down a query and fetch term IDs, to then use in a "lighter" join, later.
    +	 *
    +	 * @since 4.9.6
    +	 *
    +	 * @param string|array $taxonomy The taxonomy, or taxonomies, to fetch the terms for.
    +	 * @param string $compare The comparison operator to use, e.g. 'LIKE' or '=>'.
    +	 * @param string|array $value An array of values to compare the terms slug or names with.
    +	 * @param string $relation The relation, either 'OR' or 'AND', to apply to the matching.
    +	 * @param string $format The format, a `$wpdb::prepare()` supported one, to use to format the values for the query.
    +	 *
    +	 * @return array An array of term IDs matching the query, if any.
    +	 */
    +	protected function fetch_taxonomy_terms_matches( $taxonomy, $compare, $value, $relation = 'OR', $format = '%s' ) {
    +		global $wpdb;
    +		$taxonomies = (array) $taxonomy;
    +		$values = (array) $value;
    +
    +		$compare_target = count( $values ) > 1
    +			? '(' . $this->filter_query->create_interval_of_strings( $values ) . ')'
    +			: $wpdb->prepare( $format, reset( $values ) );
    +
    +		$taxonomies_interval = $this->filter_query->create_interval_of_strings( $taxonomies );
    +
    +		$query = "SELECT  tt.term_taxonomy_id FROM {$wpdb->terms} AS t
    +			INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
    +			WHERE tt.taxonomy IN ({$taxonomies_interval}) AND
    +			( t.slug {$compare} {$compare_target} {$relation} t.name {$compare} {$compare_target} )";
    +
    +		return $wpdb->get_col( $wpdb->remove_placeholder_escape( $query ) );
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function where_multi( array $fields, $compare, $value, $where_relation = 'OR', $value_relation = 'OR' ) {
    +		$compare = strtoupper( trim( $compare ) );
    +
    +		// Check each value is compatible with the comparison operator.
    +		$values = (array) $value;
    +		foreach ( $values as $v ) {
    +			$this->validate_operator_and_values( $compare, 'where_multi', $v );
    +		}
    +
    +		global $wpdb;
    +
    +		if ( in_array( $compare, [ 'LIKE', 'NOT LIKE' ], true ) ) {
    +			$values = $this->prepare_like_string( $values );
    +		}
    +
    +		$where_relation = strtoupper( trim( $where_relation ) );
    +		$this->validate_relation( $where_relation );
    +		$value_relation = strtoupper( trim( $value_relation ) );
    +		$this->validate_relation( $value_relation );
    +
    +		$post_fields = [];
    +		$taxonomies = [];
    +
    +		foreach ( $fields as $field ) {
    +			if ( $this->is_a_post_field( $field ) ) {
    +				$post_fields[] = $field;
    +			} elseif ( array_key_exists( $field, $this->simple_tax_schema ) ) {
    +				// Handle simple tax schema aliases.
    +				$schema = $this->simple_tax_schema[ $field ]['taxonomy'];
    +
    +				if ( ! is_array( $schema ) ) {
    +					$taxonomies[] = $schema;
    +
    +					continue;
    +				}
    +
    +				// If doing an AND where relation, pass all taxonomies in to be grouped with OR.
    +				if ( 'AND' === $where_relation ) {
    +					$this->where_multi( $schema, $compare, $value, 'OR', $value_relation );
    +
    +					continue;
    +				}
    +
    +				foreach ( $schema as $taxonomy ) {
    +					$taxonomies[] = $taxonomy;
    +				}
    +			} elseif ( array_key_exists( $field, $this->simple_meta_schema ) ) {
    +				// Handle simple meta schema aliases.
    +				$schema = $this->simple_meta_schema[ $field ]['meta_key'];
    +
    +				if ( ! is_array( $schema ) ) {
    +					$custom_fields[] = $schema;
    +
    +					continue;
    +				}
    +
    +				// If doing an AND where relation, pass all meta keys in to be grouped with OR.
    +				if ( 'AND' === $where_relation ) {
    +					$this->where_multi( $schema, $compare, $value, 'OR', $value_relation );
    +
    +					continue;
    +				}
    +
    +				foreach ( $schema as $meta_key ) {
    +					$custom_fields[] = $meta_key;
    +				}
    +			} elseif ( $this->is_a_taxonomy( $field ) ) {
    +				$taxonomies[] = $field;
    +			} else {
    +				$custom_fields[] = $field;
    +			}
    +		}
    +
    +		$value_formats = [];
    +
    +		foreach ( $values as $v ) {
    +			$value_format = '%d';
    +			if ( is_string( $v ) ) {
    +				$value_format = '%s';
    +			} elseif ( (int) $v !== (float) $v ) {
    +				$value_format = '%f';
    +			}
    +			$value_formats[] = $value_format;
    +		}
    +
    +		// If the value formats differ then treat all of them as strings.
    +		if ( count( array_unique( $value_formats ) ) > 1 ) {
    +			$value_format = '%s';
    +		} else {
    +			$value_format = reset( $value_formats );
    +		}
    +
    +		$where = [];
    +
    +		if ( ! empty( $post_fields ) ) {
    +			$post_fields = array_map( static function ( $post_field ) use ( $wpdb ) {
    +				return "{$wpdb->posts}.$post_field";
    +			}, $post_fields );
    +
    +			$post_fields_where = $this->build_fields_where_clause(
    +				$post_fields,
    +				$compare,
    +				$values,
    +				$value_format,
    +				$where_relation,
    +				$value_relation
    +			);
    +
    +			$wheres[] = $post_fields_where;
    +		}
    +
    +		if ( ! empty( $taxonomies ) ) {
    +			$all_matching_term_ids = [];
    +			$taxonomy_values = $values;
    +
    +			if ( in_array( $compare, [ 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ], true ) ) {
    +				// We can use multiple values in the same query.
    +				$taxonomy_values = [ $values ];
    +			}
    +
    +			foreach ( $taxonomy_values as $taxonomy_value ){
    +				$matching_term_ids = $this->fetch_taxonomy_terms_matches(
    +					$taxonomies,
    +					$compare,
    +					$taxonomy_value,
    +					$where_relation,
    +					$value_format
    +				);
    +
    +				if ( empty( $matching_term_ids ) ) {
    +					if ( 'AND' === $value_relation ) {
    +						// No reason to waste any more time.
    +						$this->void_query = true;
    +
    +						return $this;
    +					}
    +
    +					continue;
    +				}
    +
    +				$all_matching_term_ids[] = $matching_term_ids;
    +			}
    +
    +			$intersection = count( $all_matching_term_ids ) > 1
    +				? array_intersect( ...$all_matching_term_ids )
    +				: reset( $all_matching_term_ids );
    +
    +			if ( 'AND' === $where_relation && 0 === count( $intersection ) ) {
    +				// Let's not waste any more time.
    +				$this->void_query = true;
    +
    +				return $this;
    +			}
    +
    +			$merge = count( $all_matching_term_ids ) > 1
    +				? array_unique( array_merge( ...$all_matching_term_ids ) )
    +				: (array) reset( $all_matching_term_ids );
    +			$matching_term_ids = $where_relation === 'OR' ? array_filter( $merge ) : array_filter( $intersection );
    +
    +			if ( 'AND' === $where_relation || ! empty( $matching_term_ids ) ) {
    +				// Let's not add WHERE and JOIN clauses if there is nothing to add.
    +				$tt_alias = 'tribe_tt_' . self::$alias_counter ++;
    +				$this->filter_query->join(
    +					"JOIN {$wpdb->term_relationships} {$tt_alias} ON {$wpdb->posts}.ID = {$tt_alias}.object_id"
    +				);
    +				$matching_term_ids_interval = implode( ',', $matching_term_ids );
    +				$wheres[] = "{$tt_alias}.term_taxonomy_id IN ({$matching_term_ids_interval})";
    +			}
    +		}
    +
    +		if ( ! empty( $custom_fields ) ) {
    +			$meta_alias = 'tribe_meta_' . self::$alias_counter ++;
    +
    +			$custom_fields = array_map( static function ( $custom_field ) use ( $wpdb, $meta_alias ) {
    +				return $wpdb->prepare(
    +					"{$meta_alias}.meta_key = %s AND {$meta_alias}.meta_value",
    +					$custom_field
    +				);
    +			}, $custom_fields );
    +
    +			$meta_where = $this->build_fields_where_clause(
    +				$custom_fields,
    +				$compare,
    +				$values,
    +				$value_format,
    +				$where_relation,
    +				$value_relation
    +			);
    +
    +			$this->filter_query->join(
    +				"JOIN {$wpdb->postmeta} {$meta_alias} ON {$wpdb->posts}.ID = {$meta_alias}.post_id"
    +			);
    +
    +			$wheres[] = $meta_where;
    +		}
    +
    +		$this->filter_query->where( implode( " {$where_relation} ", $wheres ) );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function set_query( WP_Query $query ) {
    +		if (
    +			$this->last_built_query instanceof WP_Query
    +			&& !empty($this->last_built_query->request)
    +		){
    +			throw Tribe__Repository__Usage_Error::because_query_cannot_be_set_after_it_ran();
    +		}
    +		$this->last_built_query = $query;
    +		$this->last_built_hash  = $this->hash();
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function set_found_rows( $found_rows ) {
    +		$this->skip_found_rows = ! $found_rows;
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * Flush current filters and query information.
    +	 *
    +	 * @since 4.9.10
    +	 *
    +	 * @return self
    +	 */
    +	public function flush() {
    +		$this->current_query    = null;
    +		$this->current_filters  = [];
    +		$this->current_filter   = null;
    +		$this->last_built_query = null;
    +		$this->last_built_hash  = '';
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function next() {
    +		$next         = clone $this;
    +		$current_page = isset( $this->query_args['paged'] )
    +			? (int) $this->query_args['paged']
    +			: 1;
    +		$next->page( $current_page + 1 );
    +
    +		// Let's try to avoid running a query if we already know if a next page will yield any result or not.
    +		$query_ran = ! empty( $this->last_built_query ) && ! empty( $this->last_built_query->request );
    +		if ( $query_ran && ( false === (bool) $this->last_built_query->get( 'no_found_rows' ) ) ) {
    +			$found             = $this->last_built_query->found_posts;
    +			$posts_per_page    = $this->last_built_query->get( 'posts_per_page' );
    +			$this_is_last_page = ( $current_page * $posts_per_page ) >= $found;
    +			if ( $this_is_last_page ) {
    +				$next->void_query = true;
    +			}
    +		}
    +
    +		$next->last_built_query = null;
    +
    +		return $next;
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function prev() {
    +		$prev         = clone $this;
    +		$current_page = isset( $this->query_args['paged'] )
    +			? (int) $this->query_args['paged']
    +			: 1;
    +
    +		if ( $current_page === 1 ) {
    +			$prev->void_query = true;
    +
    +			return $prev;
    +		}
    +
    +		// If we're on page 1 we know there will be previous posts.
    +		$prev->page( $current_page - 1 );
    +		$prev->last_built_query = null;
    +
    +		return $prev;
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function void_query( $void_query = true ) {
    +		$this->void_query = (bool) $void_query;
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function get_last_sql(): ?string {
    +		return $this->last_built_query instanceof WP_Query ?
    +			$this->last_built_query->request
    +			: null;
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Core_Read_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Core_Read_Interface.php
    new file mode 100644
    index 000000000..ca777fb70
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Core_Read_Interface.php
    @@ -0,0 +1,402 @@
    +,  ]. * * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function by_args( array $args );
    +
    +	/**
    +	 * Applies a filter to the query.
    +	 *
    +	 * While the signature only shows 2 arguments additional arguments will be passed
    +	 * to the schema filters.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $key
    +	 * @param mixed  $value
    +	 * @param mixed  ...$args Additional, optional, call arguments that will be passed to
    +	 *                        the schema.
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function by( $key, $value = null );
    +
    +	/**
    +	 * Just an alias of the `by` method to allow for easier reading.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $key
    +	 * @param mixed  $value
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function where( $key, $value = null );
    +
    +	/**
    +	 * Sets the page of posts to fetch.
    +	 *
    +	 * Mind that this implementation does not support a `by( 'page', 2 )`
    +	 * filter to force more readable code.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param int $page
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function page( $page );
    +
    +	/**
    +	 * Sets the number of posts to retrieve per page.
    +	 *
    +	 * Mind that this implementation does not support a `by( 'per_page', 5 )`
    +	 * filter to force more readable code; by default posts per page is set to
    +	 * the pagination defaults for the post type.
    +	 *
    +	 * @param int $per_page
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function per_page( $per_page );
    +
    +	/**
    +	 * Returns the number of posts found matching the query.
    +	 *
    +	 * Mind that this value ignores the offset returning the
    +	 * number of results if limits where not applied.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @return int
    +	 */
    +	public function found();
    +
    +	/**
    +	 * Returns all posts matching the query.
    +	 *
    +	 * Mind that "all" means "all the posts matching all the filters" so pagination applies.
    +	 *
    +	 * @return array
    +	 */
    +	public function all();
    +
    +	/**
    +	 * Sets the offset on the query.
    +	 *
    +	 * Mind that this implementation does not support a `by( 'offset', 2 )`
    +	 * filter to force more readable code.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param int  $offset
    +	 * @param bool $increment Whether to increment the offset by the value
    +	 *                        or replace it.
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function offset( $offset, $increment = false );
    +
    +	/**
    +	 * Sets the order on the query.
    +	 *
    +	 * Mind that this implementation does not support a `by( 'order', 2 )`
    +	 * filter to force more readable code.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $order
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function order( $order = 'ASC' );
    +
    +	/**
    +	 * Sets the order criteria results should be fetched by.
    +	 *
    +	 * Mind that this implementation does not support a `by( 'order_by', 'title' )`
    +	 * filter to force more readable code.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string|array $order_by The post field, custom field or alias key to order posts by.
    +	 * @param string                      $order    The order direction; optional; shortcut for the `order` method; defaults
    +	 *                                              to `DESC`.
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function order_by( $order_by, $order = 'DESC' );
    +
    +	/**
    +	 * Sets the fields that should be returned by the query.
    +	 *
    +	 * Mind that this implementation does not support a `by( 'fields', 'ids' )`
    +	 * filter to force more readable code.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $fields
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function fields( $fields );
    +
    +	/**
    +	 * Sugar method to set the `post__in` argument.
    +	 *
    +	 * Successive calls will stack, not replace each one.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param array|int $post_ids
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function in( $post_ids );
    +
    +	/**
    +	 * Sugar method to set the `post__not_in` argument.
    +	 *
    +	 * Successive calls will stack, not replace each one.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param array|int $post_ids
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function not_in( $post_ids );
    +
    +	/**
    +	 * Sugar method to set the `post_parent__in` argument.
    +	 *
    +	 * Successive calls will stack, not replace each one.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param array|int $post_id
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function parent( $post_id );
    +
    +	/**
    +	 * Sugar method to set the `post_parent__in` argument.
    +	 *
    +	 * Successive calls will stack, not replace each one.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param array $post_ids
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function parent_in( $post_ids );
    +
    +	/**
    +	 * Sugar method to set the `post_parent__not_in` argument.
    +	 *
    +	 * Successive calls will stack, not replace each one.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param array $post_ids
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function parent_not_in( $post_ids );
    +
    +	/**
    +	 * Sugar method to set the `s` argument.
    +	 *
    +	 * Successive calls will replace the search string.
    +	 * This is the default WordPress search, to search by title,
    +	 * content or excerpt only use the `title`, `content`, `excerpt` filters.
    +	 *
    +	 * @param $search
    +	 *
    +	 * @return Tribe__Repository__Read_Interface
    +	 */
    +	public function search( $search );
    +
    +	/**
    +	 * Returns the number of posts found matching the query in the current page.
    +	 *
    +	 * While the `found` method will return the number of posts found
    +	 * across all pages this method will only return the number of
    +	 * posts found in the current page.
    +	 * Differently from the `found` method this method will apply the
    +	 * offset if set.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @return int
    +	 */
    +	public function count();
    +
    +	/**
    +	 * Returns the first post of the page matching the current query.
    +	 *
    +	 * If, by default or because set with the `per_page` method, all
    +	 * posts matching the query should be returned then this will be
    +	 * the first post of all those matching the query.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @return WP_Post|mixed|null
    +	 *
    +	 * @see   Tribe__Repository__Read_Interface::per_page()
    +	 */
    +	public function first();
    +
    +	/**
    +	 * Returns the last post of the page matching the current query.
    +	 *
    +	 * If, by default or because set with the `per_page` method, all
    +	 * posts matching the query should be returned then this will be
    +	 * the last post of all those matching the query.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @return WP_Post|mixed|null
    +	 *
    +	 * @see   Tribe__Repository__Read_Interface::per_page()
    +	 */
    +	public function last();
    +
    +	/**
    +	 * Returns the nth post (1-based) of the page matching the current query.
    +	 *
    +	 * Being 1-based the second post can be fetched using `nth( 2 )`.
    +	 * If, by default or because set with the `per_page` method, all
    +	 * posts matching the query should be returned then this will be
    +	 * the nth post of all those matching the query.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param int $n
    +	 *
    +	 * @return WP_Post|mixed|null
    +	 *
    +	 * @see   Tribe__Repository__Read_Interface::per_page()
    +	 */
    +	public function nth( $n );
    +
    +	/**
    +	 * Returns the first n posts of the page matching the current query.
    +	 *
    +	 * If, by default or because set with the `per_page` method, all
    +	 * posts matching the query should be returned then this method will
    +	 * return the first n posts of all those matching the query.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @return array An array of posts matching the query.
    +	 *
    +	 * @see   Tribe__Repository__Read_Interface::per_page()
    +	 */
    +	public function take( $n );
    +
    +	/**
    +	 * Plucks a field from all results and returns it.
    +	 *
    +	 * This method will implicitly build and use a `WP_List_Util` instance on the return
    +	 * value of a call to the `all` method.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @param string $field The field to pluck from each result.
    +	 *
    +	 * @return array An array of the plucked results.
    +	 *
    +	 * @see   \wp_list_pluck()
    +	 */
    +	public function pluck( $field );
    +
    +	/**
    +	 * Filters the results according to the specified criteria.
    +	 *
    +	 * This method will implicitly build and use a `WP_List_Util` instance on the return
    +	 * value of a call to the `all` method.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @param array  $args     Optional. An array of key => value arguments to match
    +	 *                         against each object. Default empty array.
    +	 * @param string $operator Optional. The logical operation to perform. 'AND' means
    +	 *                         all elements from the array must match. 'OR' means only
    +	 *                         one element needs to match. 'NOT' means no elements may
    +	 *                         match. Default 'AND'.
    +	 *
    +	 * @return array An array of the filtered results.
    +	 *
    +	 * @see   \wp_list_filter()
    +	 */
    +	public function filter( $args = [], $operator = 'AND' );
    +
    +	/**
    +	 * Sorts the results according to the specified criteria.
    +	 *
    +	 * This method will implicitly build and use a `WP_List_Util` instance on the return
    +	 * value of a call to the `all` method.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @param string|array $orderby       Optional. Either the field name to order by or an array
    +	 *                                    of multiple orderby fields as $orderby => $order.
    +	 * @param string       $order         Optional. Either 'ASC' or 'DESC'. Only used if $orderby
    +	 *                                    is a string.
    +	 * @param bool         $preserve_keys Optional. Whether to preserve keys. Default false.
    +	 *
    +	 * @return array An array of the sorted results.
    +	 *
    +	 * @see   \wp_list_sort()
    +	 */
    +	public function sort( $orderby = [], $order = 'ASC', $preserve_keys = false );
    +
    +	/**
    +	 * Builds a collection on the result of the `all()` method call.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @return \Tribe__Utils__Post_Collection
    +	 */
    +	public function collect();
    +
    +	/**
    +	 * Gets the ids of the posts matching the query.
    +	 *
    +	 * @return array An array containing the post IDs to update.
    +	 */
    +	public function get_ids();
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Decorator.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Decorator.php
    new file mode 100644
    index 000000000..6947f609d
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Decorator.php
    @@ -0,0 +1,704 @@
    +decorated->get_default_args();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function set_default_args( array $default_args ) {
    +		return $this->decorated->set_default_args( $default_args );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function filter_name( $filter_name ) {
    +		$this->decorated->filter_name( $filter_name );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function by_args( array $args ) {
    +		$this->decorated->by_args( $args );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function by( $key, $value = null ) {
    +		$call_args = func_get_args();
    +		call_user_func_array( [ $this->decorated, 'by' ], $call_args );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function where( $key, $value = null ) {
    +		$call_args = func_get_args();
    +		call_user_func_array( [ $this->decorated, 'where' ], $call_args );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function page( $page ) {
    +		$this->decorated->page( $page );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function per_page( $per_page ) {
    +		$this->decorated->per_page( $per_page );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function found() {
    +		return $this->decorated->found();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function all() {
    +		return $this->decorated->all();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function offset( $offset, $increment = false ) {
    +		$this->decorated->offset( $offset );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function order( $order = 'ASC' ) {
    +		$this->decorated->order( $order );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function order_by( $order_by, $order = 'DESC' ) {
    +		$this->decorated->order_by( $order_by, $order );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function fields( $fields ) {
    +		$this->decorated->fields( $fields );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function permission( $permission ) {
    +		$this->decorated->permission( $permission );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function in( $post_ids ) {
    +		$this->decorated->in( $post_ids );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function not_in( $post_ids ) {
    +		$this->decorated->not_in( $post_ids );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function parent( $post_id ) {
    +		$this->decorated->parent( $post_id );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function parent_in( $post_ids ) {
    +		$this->decorated->parent_in( $post_ids );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function parent_not_in( $post_ids ) {
    +		$this->decorated->parent_not_in( $post_ids );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function search( $search ) {
    +		$this->decorated->search( $search );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function count() {
    +		return $this->decorated->count();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function first() {
    +		return $this->decorated->first();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function last() {
    +		return $this->decorated->last();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function nth( $n ) {
    +		return $this->decorated->nth( $n );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function take( $n ) {
    +		return $this->decorated->take( $n );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function by_primary_key( $primary_key ) {
    +		return $this->decorated->by_primary_key( $primary_key );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function set( $key, $value ) {
    +		$this->decorated->set( $key, $value );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function get_query() {
    +		return $this->decorated->get_query();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function set_args( array $update_map ) {
    +		$this->decorated->set_args( $update_map );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function save( $return_promise = true ) {
    +		$this->decorated->save( $return_promise );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function set_formatter( Tribe__Repository__Formatter_Interface $formatter ) {
    +		$this->decorated->set_formatter( $formatter );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function join_clause( $join ) {
    +		$this->decorated->join_clause( $join );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function where_clause( $where ) {
    +		$this->decorated->where_clause( $where );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function set_query_builder( $query_builder ) {
    +		$this->decorated->set_query_builder( $query_builder );
    +	}
    +
    +	/**
    +	 * Sets the repository to be decorated.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param Tribe__Repository__Interface $decorated
    +	 */
    +	protected function set_decorated_repository( Tribe__Repository__Interface $decorated ) {
    +		$this->decorated = $decorated;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function build_query( $use_query_builder = true ) {
    +		return $this->decorated->build_query( $use_query_builder );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function where_or( $callbacks ) {
    +		$call_args = func_get_args();
    +		call_user_func_array( [ $this->decorated, 'where_or' ], $call_args );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function by_related_to_min( $by_meta_keys, $min, $keys = null, $values = null ) {
    +		$this->decorated->by_related_to_min( $by_meta_keys, $min, $keys, $values );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function by_related_to_max( $by_meta_keys, $max, $keys = null, $values = null ) {
    +		$this->decorated->by_related_to_max( $by_meta_keys, $max, $keys, $values );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function by_related_to_between( $by_meta_keys, $min, $max, $keys = null, $values = null ) {
    +		$this->decorated->by_related_to_between( $by_meta_keys, $min, $max, $keys, $values );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function by_not_related_to( $by_meta_keys, $keys = null, $values = null ) {
    +		$this->decorated->by_not_related_to( $by_meta_keys, $keys, $values );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function has_filter( $key, $value = null ) {
    +		return $this->decorated->has_filter( $key, $value );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function get_current_filter() {
    +		return $this->decorated->get_current_filter();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function get_ids() {
    +		return $this->decorated->get_ids();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function add_schema_entry( $key, $callback ) {
    +		$this->decorated->add_schema_entry( $key, $callback );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function prepare_interval( $values, $format = '%s' ) {
    +		return $this->decorated->prepare_interval( $values, $format );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function delete( $return_promise = false ) {
    +		return $this->decorated->delete( $return_promise );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function async_delete( array $to_delete, $return_promise = true ) {
    +		return $this->decorated->async_delete( $to_delete, $return_promise );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function add_update_field_alias( $alias, $field_name ) {
    +		$this->decorated->add_update_field_alias( $alias, $field_name );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function async_update( array $to_update, $return_promise = true ) {
    +		return $this->decorated->async_update( $to_update, $return_promise );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function get_update_fields_aliases() {
    +		return $this->decorated->get_update_fields_aliases();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function set_update_fields_aliases( array $update_fields_aliases ) {
    +		$this->decorated->set_update_fields_aliases( $update_fields_aliases );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function get_filter_name() {
    +		return $this->decorated->get_filter_name();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function filter_postarr_for_update( array $postarr, $post_id ) {
    +		return $this->decorated->filter_postarr_for_update( $postarr, $post_id );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function build_postarr( $id = null ) {
    +		return $this->decorated->build_postarr();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function create() {
    +		return $this->decorated->create();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function filter_postarr_for_create( array $postarr ) {
    +		return $this->decorated->filter_postarr_for_create( $postarr, $post_id );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function set_create_args( array $create_args ) {
    +		$this->decorated->set_create_args( $create_args );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function get_create_args() {
    +		return $this->decorated->get_create_args();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function set_display_context( $context = 'default' ) {
    +		$this->decorated->set_display_context( $context );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function set_render_context( $context = 'default' ) {
    +		$this->decorated->set_render_context( $context );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function get_query_for_posts( array $posts ) {
    +		return $this->decorated->get_query_for_posts( $posts );
    +	}
    +
    +	/**
    +	 * Whether the decorator is decorating an instance of a specific repository class or not.
    +	 *
    +	 * The check is made recursively for decorators to get to the first repository implementation.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @param string $class The class to check for.
    +	 *
    +	 * @return bool Whether the decorator is decorating an instance of a specific repository class or not.
    +	 */
    +	public function decorates_an_instance_of( $class ) {
    +		return $this->decorated instanceof Tribe__Repository__Decorator
    +			? $this->decorated->decorates_an_instance_of( $class )
    +			: $this->decorated instanceof $class;
    +	}
    +
    +	/**
    +	 * Returns the concrete repository implementation that's "hidden" under the decorator(s).
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @return \Tribe__Repository__Interface The concrete repository instance.
    +	 */
    +	public function get_decorated_repository() {
    +		return $this->decorated instanceof Tribe__Repository__Decorator
    +			? $this->decorated->get_decorated_repository()
    +			: $this->decorated;
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function pluck( $field ) {
    +		return $this->decorated->pluck( $field );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function filter( $orderby = [], $order = 'ASC', $preserve_keys = false ) {
    +		return $this->decorated->filter( $orderby, $order, $preserve_keys );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function sort( $orderby = [], $order = 'ASC', $preserve_keys = false ) {
    +		return $this->decorated->sort( $orderby, $order, $preserve_keys );
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function collect() {
    +		return $this->decorated->collect();
    +	}
    +
    +	/**
    +	 * {@inheritdoc}
    +	 */
    +	public function hash( array $settings = [], WP_Query $query = null ) {
    +		return $this->decorated->hash( $settings );
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function get_hash_data( array $settings, WP_Query $query = null ) {
    +		return $this->decorated->get_hash_data( $settings, $query );
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function get_last_built_query() {
    +		return $this->decorated->last_built_query;
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function where_multi( array $fields, $compare, $value, $where_relation = 'OR', $value_relation = 'OR' ) {
    +		$this->decorated->where_multi( $fields, $compare, $value, $where_relation, $value_relation );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * Handle getting additional property from decorated object.
    +	 *
    +	 * @since 4.9.6.1
    +	 *
    +	 * @param string $name Property name.
    +	 *
    +	 * @return mixed
    +	 */
    +	public function __get( $name ) {
    +		return $this->decorated->{$name};
    +	}
    +
    +	/**
    +	 * Handle setting additional property on decorated object.
    +	 *
    +	 * @since 4.9.6.1
    +	 *
    +	 * @param string $name  Property name.
    +	 * @param mixed  $value Property value.
    +	 */
    +	public function __set( $name, $value ) {
    +		$this->decorated->{$name} = $value;
    +	}
    +
    +	/**
    +	 * Check if additional property on decorated object exists.
    +	 *
    +	 * @since 4.9.6.1
    +	 *
    +	 * @param string $name Property name.
    +	 *
    +	 * @return bool
    +	 */
    +	public function __isset( $name ) {
    +		return isset( $this->decorated->{$name} );
    +	}
    +
    +	/**
    +	 * Call methods on decorated object.
    +	 *
    +	 * @since 4.9.6.1
    +	 *
    +	 * @param string $name      Method name.
    +	 * @param array  $arguments Method arguments.
    +	 *
    +	 * @return mixed
    +	 */
    +	public function __call( $name, $arguments ) {
    +		return call_user_func_array( [ $this->decorated, $name ], $arguments );
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function set_query( WP_Query $query ) {
    +		$this->decorated->set_query( $query );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function next() {
    +		return $this->decorated->next();
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function prev() {
    +		return $this->decorated->prev();
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function set_found_rows( $found_rows ) {
    +		$this->decorated->set_found_rows( $found_rows );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function void_query( $void_query = true ) {
    +		$this->decorated->void_query( $void_query );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * {@inheritDoc}
    +	 */
    +	public function get_last_sql(): ?string {
    +		return $this->decorated->get_last_sql();
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Filter_Validation.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Filter_Validation.php
    new file mode 100644
    index 000000000..11573f1e5
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Filter_Validation.php
    @@ -0,0 +1,61 @@
    + => [  =>  ]
    +	 *  ]
    +	 * ```
    +	 *
    +	 * @since 4.10.2
    +	 *
    +	 * @param       string $filter The name of the filter currently validating.
    +	 * @param array        $call_args The current filter call args, usually `func_get_args()`.
    +	 *
    +	 * @throws Usage_Error If there is a definition for the filter and the argument count or nature is not correct.
    +	 */
    +	protected function ensure_args_for_filter( $filter, array $call_args ) {
    +		$map = isset( static::$filter_args_map ) ? static::$filter_args_map : false;
    +
    +		if ( empty( $map ) ) {
    +			return;
    +		}
    +
    +		$required_args = Arr::get( $filter, $map, false );
    +
    +		if ( false === $required_args ) {
    +			return;
    +		}
    +
    +		if ( count( $required_args ) !== count( $call_args ) ) {
    +			throw Usage_Error::because_filter_requires_args( $filter, array_keys( $required_args ) );
    +		}
    +
    +		$iterator = new \MultipleIterator();
    +		$iterator->attachIterator( new \ArrayIterator( array_keys( $required_args ) ) );
    +		$iterator->attachIterator( new \ArrayIterator( array_values( $required_args ) ) );
    +		$iterator->attachIterator( new \ArrayIterator( $call_args ) );
    +
    +		foreach ( $required_args as list( $arg_name, $validator, $input ) ) {
    +			if ( empty( $validator( $input ) ) ) {
    +				throw Usage_Error::because_filter_arg_is_not_valid( $filter, $arg_name );
    +			}
    +		}
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Formatter_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Formatter_Interface.php
    new file mode 100644
    index 000000000..4e484a769
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Formatter_Interface.php
    @@ -0,0 +1,24 @@
    +, <...args>]
    +	 *
    +	 * @return $this
    +	 * @throws Tribe__Repository__Usage_Error If one of the callback methods does
    +	 *                                        not add any WHERE clause.
    +	 *
    +	 * @see Tribe__Repository::where_clause()
    +	 * @see Tribe__Repository__Query_Filters::where()
    +	 */
    +	public function where_or( $callbacks );
    +
    +	/**
    +	 * Filters the query to return posts that have got a number or posts
    +	 * related to them by meta at least equal to a value.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string|array $by_meta_keys One or more `meta_keys` relating
    +	 *                                   another post TO this post type.
    +	 * @param int          $min          The minimum number of posts of another type that should
    +	 *                                   be related to the queries post type(s).
    +	 * @param string|array $keys         One or more meta_keys to check on the post type in relation
    +	 *                                   with the query post type(s); if the `$values` parameter is
    +	 *                                   not provided then this will trigger an EXISTS check.
    +	 * @param string|array $values       One or more value the meta_key specified with `$keys` should
    +	 *                                   match.
    +	 *
    +	 * @return $this
    +	 */
    +	public function by_related_to_min( $by_meta_keys, $min, $keys = null, $values = null );
    +
    +	/**
    +	 * Filters the query to return posts that have got a number or posts
    +	 * related to them by meta at most equal to a value.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string|array $by_meta_keys One or more `meta_keys` relating
    +	 *                                   another post TO this post type.
    +	 *                                   be related to the queries post type(s).
    +	 * @param int          $max          The maximum number of posts of another type that should
    +	 *                                   be related to the queries post type(s).
    +	 * @param string|array $keys         One or more meta_keys to check on the post type in relation
    +	 *                                   with the query post type(s); if the `$values` parameter is
    +	 *                                   not provided then this will trigger an EXISTS check.
    +	 * @param string|array $values       One or more value the meta_key specified with `$keys` should
    +	 *                                   match.
    +	 *
    +	 * @return $this
    +	 */
    +	public function by_related_to_max( $by_meta_keys, $max, $keys = null, $values = null );
    +
    +	/**
    +	 * Filters the query to return posts that have got a number or posts
    +	 * related to them by meta between two values.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string|array $by_meta_keys One or more `meta_keys` relating
    +	 *                                   another post TO this post type.
    +	 * @param int          $min          The minimum number of posts of another type that should
    +	 *                                   be related to the queries post type(s).
    +	 * @param int          $max          The maximum number of posts of another type that should
    +	 *                                   be related to the queries post type(s).
    +	 *
    +	 * @param string|array $keys         One or more meta_keys to check on the post type in relation
    +	 *                                   with the query post type(s); if the `$values` parameter is
    +	 *                                   not provided then this will trigger an EXISTS check.
    +	 * @param string|array $values       One or more value the meta_key specified with `$keys` should
    +	 *                                   match.
    +	 *
    +	 * @return $this
    +	 */
    +	public function by_related_to_between( $by_meta_keys, $min, $max, $keys = null, $values = null );
    +
    +	/**
    +	 * Filters the query to return posts that are not related to posts that have a specific meta value.
    +	 *
    +	 * @since 5.0.2.1
    +	 *
    +	 * @param string|array $by_meta_keys One or more `meta_keys` relating
    +	 *                                   another post TO this post type.
    +	 *
    +	 * @param string|array $keys         One or more meta_keys to check on the post type in relation
    +	 *                                   with the query post type(s); if the `$values` parameter is
    +	 *                                   not provided then this will trigger an EXISTS check.
    +	 * @param string|array $values       One or more value the meta_key specified with `$keys` should
    +	 *                                   match.
    +	 *
    +	 * @return $this
    +	 */
    +	public function by_not_related_to( $by_meta_keys, $keys = null, $values = null );
    +
    +	/**
    +	 * Adds an entry to the repository filter schema.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @param string   $key      The filter key, the one that will be used in `by` and `where`
    +	 *                           calls.
    +	 * @param callable $callback The function that should be called to apply this filter.
    +	 */
    +	public function add_schema_entry( $key, $callback );
    +
    +	/**
    +	 * Returns an hash string for this repository instance filters and, optionally, a generated query.
    +	 *
    +	 * By default all applied filters, and query vars, will be included but specific filters can
    +	 * be excluded, or included, from the hash generation.
    +	 * The possibility to include the query in the hash generation is required as the query vars could
    +	 * be further modified after the repository filters are applied and the query is built.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @param array          $settings An array of settings to define how the hash should be produced in the shape
    +	 *                                 `[ 'exclude' => [ 'ex_1', ... ], 'include' => [ 'inc_1', ... ] ]`. This array
    +	 *                                 will apply both to the Repository filters and the query vars.
    +	 * @param WP_Query|null $query An optional query object to include in the hashing.
    +	 *
    +	 * @return string The generated hash string.
    +	 *
    +	 */
    +	public function hash( array $settings = [], WP_Query $query = null );
    +
    +	/**
    +	 * Returns the data the repository would use to build the hash.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @param array          $settings An array of settings to define how the hash should be produced in the shape
    +	 *                                 `[ 'exclude' => [ 'ex_1', ... ], 'include' => [ 'inc_1', ... ] ]`. This array
    +	 *                                 will apply both to the Repository filters and the query vars.
    +	 * @param WP_Query|null $query An optional query object to include in the hashing.
    +	 *
    +	 * @return array An array of hash data components.
    +	 */
    +	public function get_hash_data( array $settings, WP_Query $query = null );
    +
    +	/**
    +	 * Returns the last built query from the repository instance.
    +	 *
    +	 * @since 4.9.6
    +	 *
    +	 * @return WP_Query|null The last built query instance if any.
    +	 */
    +	public function get_last_built_query();
    +
    +	/**
    +	 * Builds, and adds to the query, a WHERE clause to the query on multiple fields.
    +	 *
    +	 * @since 4.9.6
    +	 *
    +	 * @param array  $fields         The fields to add WHERE clauses for. The fields can be post fields, custom fields or
    +	 *                               taxonomy terms.
    +	 * @param string $compare        The comparison operator to use, e.g. 'LIKE' or '>'.
    +	 * @param mixed  $value          The value, or values, to compare with; the format will be set depending on the type of
    +	 *                               each value.
    +	 * @param string $where_relation The relation to join the WHERE clauses with, either 'OR' or 'AND'; default to 'OR'.
    +	 * @param string $value_relation The relation to join the value clauses in case the value is an array, either 'OR'
    +	 *                               or 'AND'; defaults to 'OR'.
    +	 *
    +	 * @return $this This repository instance to allow chain calls.
    +	 *
    +	 * @throws \Tribe__Repository__Usage_Error If the comparison operator or the relation are not valid.
    +	 */
    +	public function where_multi( array $fields, $compare, $value, $where_relation = 'OR', $value_relation = 'OR' );
    +
    +	/**
    +	 * Sets the query instance the repository will use.
    +	 *
    +	 * Setting a query explicitly
    +	 *
    +	 * @since 4.9.9
    +	 *
    +	 * @param  \WP_Query  $query An query instance.
    +	 *
    +	 * @return \Tribe__Repository__Interface The repository instance, for chaining.
    +	 * @throws \Tribe__Repository__Usage_Error If trying to set the query after a fetching operation is done.
    +	 */
    +	public function set_query( WP_Query $query );
    +
    +	/**
    +	 * Returns a cloned instance of the repository that will yield the next page results.
    +	 *
    +	 * Mind that this method will always return a Repository instance, no matter if a next page exists or not.
    +	 * If a next page does not exist then the instance returned by this method will yield no posts and a count of `0`.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @return \Tribe__Repository__Interface The repository instance that will yield the next page results.
    +	 */
    +	public function next();
    +
    +	/**
    +	 * Returns a cloned instance of the repository that will yield the previous page results.
    +	 *
    +	 * Mind that this method will always return a Repository instance, no matter if a previous page exists or not.
    +	 * If a previous page does not exist then the instance returned by this method will yield no posts and a count
    +	 * of `0`.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @return \Tribe__Repository__Interface The repository instance that will yield the previous page results.
    +	 */
    +	public function prev();
    +
    +	/**
    +	 * Sets the found rows calculation to be enabled for queries.
    +	 *
    +	 * @since 4.9.10
    +	 *
    +	 * @param bool $found_rows Whether found rows calculation should be enabled.
    +	 *
    +	 * @return \Tribe__Repository__Interface The repository instance, for chaining.
    +	 */
    +	public function set_found_rows( $found_rows );
    +
    +	/**
    +	 * Voids the repositories queries preventing the repository from running any query.
    +	 *
    +	 * @since 4.9.14
    +	 *
    +	 * @param bool $void Whether to void the repository queries or not.
    +	 *
    +	 * @return Tribe__Repository__Interface $this The repository instance.
    +	 */
    +	public function void_query( $void_query = true );
    +
    +	/**
    +	 * Returns the SQL code for the last query built and ran by the repository, if any.
    +	 *
    +	 * @since 5.0.1
    +	 *
    +	 * @return string|null The SQL code for the last query built and ran by the repository, if any.
    +	 */
    +	public function get_last_sql(): ?string;
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Query_Filters.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Query_Filters.php
    new file mode 100644
    index 000000000..8f5ff8ad7
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Query_Filters.php
    @@ -0,0 +1,1129 @@
    + [
    +			'post_title'   => [],
    +			'post_content' => [],
    +			'post_excerpt' => [],
    +		],
    +		'status' => [],
    +		'join'   => [],
    +		'where'  => [],
    +	];
    +
    +	/**
    +	 * An array of the filters that can be set and unset by id.
    +	 *
    +	 * @since 4.9.14
    +	 *
    +	 * @var array
    +	 */
    +	protected static $identifiable_filters = [ 'fields', 'join', 'where', 'orderby' ];
    +
    +	/**
    +	 * @var array
    +	 */
    +	protected $query_vars;
    +
    +	/**
    +	 * @var WP_Query
    +	 */
    +	protected $current_query;
    +
    +	/**
    +	 * @var int A reasonably large number for the LIMIT clause.
    +	 */
    +	protected $really_large_number = 99999999;
    +
    +	/**
    +	 * @var array A list of the filters this class has added.
    +	 */
    +	protected $active_filters = [];
    +
    +	/**
    +	 * @var bool
    +	 */
    +	protected $buffer_where_clauses = false;
    +
    +	/**
    +	 * @var array
    +	 */
    +	protected $buffered_where_clauses = [];
    +
    +	/**
    +	 * Stores the last request run by the current query.
    +	 *
    +	 * @var string
    +	 */
    +	protected $last_request;
    +
    +	/**
    +	 * Tribe__Repository__Query_Filters constructor.
    +	 *
    +	 * @since 4.7.19
    +	 */
    +	public function __construct() {
    +		$this->query_vars = self::$initial_query_vars;
    +	}
    +
    +	/**
    +	 * Builds an "not exists or is not in" media query.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param array|string     $meta_keys On what meta_keys the check should be made.
    +	 * @param int|string|array $values    A single value, an array of values or a CSV list of values.
    +	 * @param string           $query_slug
    +	 *
    +	 * @return array
    +	 */
    +	public static function meta_not_in( $meta_keys, $values, $query_slug ) {
    +		$meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys );
    +		$values    = Tribe__Utils__Array::list_to_array( $values );
    +
    +		if ( empty( $meta_keys ) || count( $values ) === 0 ) {
    +			return [];
    +		}
    +
    +		$args = [
    +			'meta_query' => [
    +				$query_slug => [
    +					'relation' => 'AND',
    +				],
    +			],
    +		];
    +
    +		foreach ( $meta_keys as $key ) {
    +			$args['meta_query'][ $query_slug ][ $key ] = [
    +				'not-exists' => [
    +					'key'     => $key,
    +					'compare' => 'NOT EXISTS',
    +				],
    +				'relation'   => 'OR',
    +			];
    +
    +			if ( count( $values ) > 1 ) {
    +				$args['meta_query'][ $query_slug ][ $key ]['not-in'] = [
    +					'key'     => $key,
    +					'compare' => 'NOT IN',
    +					'value'   => $values,
    +				];
    +			} else {
    +				$args['meta_query'][ $query_slug ][ $key ]['not-equals'] = [
    +					'key'     => $key,
    +					'value'   => $values[0],
    +					'compare' => '!=',
    +				];
    +			}
    +		}
    +
    +		return $args;
    +	}
    +
    +	/**
    +	 * Builds an "exists and is in" media query.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param array|string     $meta_keys On what meta_keys the check should be made.
    +	 * @param int|string|array $values    A single value, an array of values or a CSV list of values.
    +	 * @param string           $query_slug
    +	 *
    +	 * @return array
    +	 */
    +	public static function meta_in( $meta_keys, $values, $query_slug ) {
    +		$meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys );
    +		$values    = Tribe__Utils__Array::list_to_array( $values );
    +
    +		if ( empty( $meta_keys ) || count( $values ) === 0 ) {
    +			return [];
    +		}
    +
    +		$args = [
    +			'meta_query' => [
    +				$query_slug => [
    +					'relation' => 'OR',
    +				],
    +			],
    +		];
    +
    +		foreach ( $meta_keys as $meta_key ) {
    +			if ( count( $values ) > 1 ) {
    +				$args['meta_query'][ $query_slug ][ $meta_key ] = [
    +					'key'     => $meta_key,
    +					'compare' => 'IN',
    +					'value'   => $values,
    +				];
    +			} else {
    +				$args['meta_query'][ $query_slug ][ $meta_key ] = [
    +					'key'     => $meta_key,
    +					'compare' => '=',
    +					'value'   => $values[0],
    +				];
    +			}
    +		}
    +
    +		return $args;
    +	}
    +
    +	/**
    +	 * Builds a meta query to check that at least of the meta key exists.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param array|string $meta_keys
    +	 * @param string       $query_slug
    +	 *
    +	 * @return array
    +	 */
    +	public static function meta_exists( $meta_keys, $query_slug ) {
    +		$meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys );
    +
    +		if ( empty( $meta_keys ) ) {
    +			return [];
    +		}
    +
    +		$args = [
    +			'meta_query' => [
    +				$query_slug => [
    +					'relation' => 'OR',
    +				],
    +			],
    +		];
    +
    +		foreach ( $meta_keys as $meta_key ) {
    +			$args['meta_query'][ $query_slug ][ $meta_key ] = [
    +				'key'     => $meta_key,
    +				'compare' => 'EXISTS',
    +			];
    +		}
    +
    +		return $args;
    +	}
    +
    +	/**
    +	 * Builds a meta query to check that a meta is either equal to a value or
    +	 * not exists.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param array|string $meta_keys
    +	 * @param array|string $values
    +	 * @param string       $query_slug
    +	 *
    +	 * @return array
    +	 */
    +	public static function meta_in_or_not_exists( $meta_keys, $values, $query_slug ) {
    +		$meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys );
    +		$values    = Tribe__Utils__Array::list_to_array( $values );
    +
    +		if ( empty( $meta_keys ) || count( $values ) === 0 ) {
    +			return [];
    +		}
    +
    +		$args = [
    +			'meta_query' => [
    +				$query_slug => [
    +					'relation' => 'AND',
    +				],
    +			],
    +		];
    +
    +		foreach ( $meta_keys as $meta_key ) {
    +			$args['meta_query'][ $query_slug ][ $meta_key ]['does-not-exist'] = [
    +				'key'     => $meta_key,
    +				'compare' => 'NOT EXISTS',
    +			];
    +			$args['meta_query'][ $query_slug ][ $meta_key ]['relation']       = 'OR';
    +			if ( count( $values ) > 1 ) {
    +				$args['meta_query'][ $query_slug ][ $meta_key ]['in'] = [
    +					'key'     => $meta_key,
    +					'compare' => 'IN',
    +					'value'   => $values,
    +				];
    +			} else {
    +				$args['meta_query'][ $query_slug ][ $meta_key ]['equals'] = [
    +					'key'     => $meta_key,
    +					'compare' => '=',
    +					'value'   => $values[0],
    +				];
    +			}
    +		}
    +
    +		return $args;
    +	}
    +
    +	/**
    +	 * Builds a meta query to check that a meta is either not equal to a value or
    +	 * not exists.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param array|string $meta_keys
    +	 * @param array|string $values
    +	 * @param string       $query_slug
    +	 *
    +	 * @return array
    +	 */
    +	public static function meta_not_in_or_not_exists( $meta_keys, $values, $query_slug ) {
    +		$meta_keys = Tribe__Utils__Array::list_to_array( $meta_keys );
    +		$values    = Tribe__Utils__Array::list_to_array( $values );
    +
    +		if ( empty( $meta_keys ) || count( $values ) === 0 ) {
    +			return [];
    +		}
    +
    +		$args = [
    +			'meta_query' => [
    +				$query_slug => [
    +					'relation' => 'AND',
    +				],
    +			],
    +		];
    +
    +		foreach ( $meta_keys as $meta_key ) {
    +			$args['meta_query'][ $query_slug ][ $meta_key ]['does-not-exist'] = [
    +				'key'     => $meta_key,
    +				'compare' => 'NOT EXISTS',
    +			];
    +			$args['meta_query'][ $query_slug ][ $meta_key ]['relation']       = 'OR';
    +
    +			if ( count( $values ) > 1 ) {
    +				$args['meta_query'][ $query_slug ][ $meta_key ]['not-in'] = [
    +					'key'     => $meta_key,
    +					'compare' => 'NOT IN',
    +					'value'   => $values,
    +				];
    +			} else {
    +				$args['meta_query'][ $query_slug ][ $meta_key ]['not-equals'] = [
    +					'key'     => $meta_key,
    +					'compare' => '!=',
    +					'value'   => $values[0],
    +				];
    +			}
    +		}
    +
    +		return $args;
    +	}
    +
    +	/**
    +	 * Filters the WHERE clause of the query to match posts with a field like.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string   $where
    +	 * @param WP_Query $query
    +	 *
    +	 * @return string
    +	 */
    +	public function filter_by_like( $where, WP_Query $query ) {
    +		if ( $query !== $this->current_query ) {
    +			return $where;
    +		}
    +
    +		if ( empty( $this->query_vars['like'] ) ) {
    +			return $where;
    +		}
    +
    +		foreach ( $this->query_vars['like'] as $field => $entries ) {
    +			foreach ( $entries as $entry ) {
    +				$where .= $this->and_field_like( $field, $entry );
    +			}
    +		}
    +
    +		return $where;
    +	}
    +
    +	/**
    +	 * Builds the escaped WHERE entry to match a field like the entry.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $field
    +	 * @param string $entry
    +	 *
    +	 * @return string
    +	 */
    +	protected function and_field_like( $field, $entry ) {
    +		/** @var wpdb $wpdb */
    +		global $wpdb;
    +
    +		$like       = $wpdb->esc_like( $entry );
    +		$variations = [
    +			$wpdb->prepare( "{$wpdb->posts}.{$field} LIKE %s ", "{$like}%" ),
    +			$wpdb->prepare( "{$wpdb->posts}.{$field} LIKE %s ", "%{$like}%" ),
    +			$wpdb->prepare( "{$wpdb->posts}.{$field} LIKE %s ", "%{$like}" ),
    +		];
    +
    +		return ' AND (' . implode( ' OR ', $variations ) . ')';
    +	}
    +
    +	/**
    +	 * Filters the found posts value to apply filtering and selections on the PHP
    +	 * side of things.
    +	 *
    +	 * Here we perform, after the query did run, further filtering operations that would
    +	 * result in more JOIN and/or sub-SELECT clauses being added to the query.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param int      $found_posts The number of found posts.
    +	 * @param WP_Query $query       The current query object.
    +	 *
    +	 * @return string
    +	 */
    +	public function filter_found_posts( $found_posts, WP_Query $query ) {
    +		if ( $query !== $this->current_query ) {
    +			return $found_posts;
    +		}
    +
    +		if ( empty( $this->query_vars['found_posts_filters'] ) ) {
    +			return $found_posts;
    +		}
    +
    +		$filtered_found_posts = $found_posts;
    +		$ids_only             = $query->get( 'fields' ) === 'ids';
    +
    +		/** @var wpdb $wpdb */
    +		global $wpdb;
    +
    +		/**
    +		 * Handles meta-based relations between posts.
    +		 */
    +		foreach ( $this->query_vars['found_posts_filters']['meta_related'] as $info ) {
    +			list( $meta_keys, $field, $field_values, $compare ) = $info;
    +			$post_ids          = $ids_only ? $query->posts : wp_list_pluck( $query->posts, 'ID' );
    +			$post_ids_interval = '(' . implode( ',', $post_ids ) . ')';
    +			$meta_keys         = "('" . implode( "','", array_map( 'esc_sql', $meta_keys ) ) . "')";
    +			$field             = esc_sql( $field );
    +			$field_values      = is_array( $field_values )
    +				? "('" . implode( "','", array_map( 'esc_sql', $field_values ) ) . "')"
    +				: $wpdb->prepare( '%s', $field_values );
    +
    +			$relation_query = "
    +				SELECT DISTINCT( pm.post_id )
    +				FROM {$wpdb->posts} p
    +				JOIN {$wpdb->postmeta} pm
    +				ON pm.meta_value = p.ID
    +				WHERE pm.post_id IN {$post_ids_interval}
    +				AND pm.meta_key IN {$meta_keys}
    +				AND p.{$field} {$compare} {$field_values}
    +				";
    +
    +			$matching_ids = $wpdb->get_col( $relation_query );
    +
    +			if ( empty( $matching_ids ) ) {
    +				$query->posts         = [];
    +				$filtered_found_posts = 0;
    +				break;
    +			}
    +
    +			if ( $ids_only ) {
    +				$query->posts = array_intersect( $query->posts, $matching_ids );
    +			} else {
    +				$updated_query_posts = [];
    +				foreach ( $query->posts as $this_post ) {
    +					if ( in_array( $this_post->ID, $matching_ids ) ) {
    +						$updated_query_posts[] = $this_post;
    +					}
    +				}
    +				$query->posts = $updated_query_posts;
    +			}
    +			$filtered_found_posts = count( $query->posts );
    +		}
    +
    +		$query->post_count = $filtered_found_posts;
    +
    +		return $filtered_found_posts;
    +	}
    +
    +	/**
    +	 * Sets the current query object.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param WP_Query $query
    +	 */
    +	public function set_query( WP_Query $query ) {
    +		$this->current_query = $query;
    +	}
    +
    +	/**
    +	 * Sets up `posts_where` filtering to get posts with a title like the value.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $value
    +	 */
    +	public function to_get_posts_with_title_like( $value ) {
    +		$this->query_vars['like']['post_title'][] = $value;
    +
    +		if ( ! has_filter( 'posts_where', [ $this, 'filter_by_like' ] ) ) {
    +			$this->add_filter( 'posts_where', [ $this, 'filter_by_like' ], 10, 2 );
    +		}
    +	}
    +
    +	/**
    +	 * Proxy method to add a  filter calling the WordPress `add_filter` function
    +	 * and keep track of it.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string   $tag
    +	 * @param callable $function_to_add
    +	 * @param int      $priority
    +	 * @param int      $accepted_args
    +	 */
    +	protected function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
    +		$this->active_filters[] = [ $tag, $function_to_add, $priority ];
    +		add_filter( $tag, $function_to_add, $priority, $accepted_args );
    +	}
    +
    +	/**
    +	 * Sets up `posts_where` filtering to get posts with a content like the value.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $value
    +	 */
    +	public function to_get_posts_with_content_like( $value ) {
    +		$this->query_vars['like']['post_content'][] = $value;
    +
    +		if ( ! has_filter( 'posts_where', [ $this, 'filter_by_like' ] ) ) {
    +			$this->add_filter( 'posts_where', [ $this, 'filter_by_like' ], 10, 2 );
    +		}
    +	}
    +
    +	/**
    +	 * Sets up `posts_where` filtering to get posts with an excerpt like the value.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $value
    +	 */
    +	public function to_get_posts_with_excerpt_like( $value ) {
    +		$this->query_vars['like']['post_excerpt'] = $value;
    +
    +		if ( ! has_filter( 'posts_where', [ $this, 'filter_by_like' ] ) ) {
    +			add_filter( 'posts_where', [ $this, 'filter_by_like' ], 10, 2 );
    +		}
    +	}
    +
    +	/**
    +	 * Sets up `posts_where` filtering to get posts with a filtered content like the value.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $value
    +	 */
    +	public function to_get_posts_with_filtered_content_like( $value ) {
    +		$this->query_vars['like']['post_content_filtered'][] = $value;
    +
    +		if ( ! has_filter( 'posts_where', [ $this, 'filter_by_like' ] ) ) {
    +			add_filter( 'posts_where', [ $this, 'filter_by_like' ], 10, 2 );
    +		}
    +	}
    +
    +	/**
    +	 * Sets up `posts_where` filtering to get posts with a guid that equals the value.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $value
    +	 */
    +	public function to_get_posts_with_guid_like( $value ) {
    +		$this->query_vars['like']['guid'][] = $value;
    +
    +		if ( ! has_filter( 'posts_where', [ $this, 'filter_by_like' ] ) ) {
    +			add_filter( 'posts_where', [ $this, 'filter_by_like' ], 10, 2 );
    +		}
    +	}
    +
    +	/**
    +	 * Sets up `posts_where` filtering to get posts with a `to_ping` field equal to the value.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $value
    +	 */
    +	public function to_get_posts_to_ping( $value ) {
    +		$this->query_vars['to_ping'] = $value;
    +
    +		if ( ! has_filter( 'posts_where', [ $this, 'filter_by_to_ping' ] ) ) {
    +			add_filter( 'posts_where', [ $this, 'filter_by_to_ping' ], 10, 2 );
    +		}
    +	}
    +
    +	/**
    +	 * Filters the WHERE clause of the query to match posts with a specific `to_ping`
    +	 * entry.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string   $where
    +	 * @param WP_Query $query
    +	 *
    +	 * @return string
    +	 */
    +	public function filter_by_to_ping( $where, WP_Query $query ) {
    +		return $this->where_field_is( $where, $query, 'ping_status' );
    +	}
    +
    +	/**
    +	 * Builds the escaped WHERE entry to match a field that equals the entry.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string   $where
    +	 * @param WP_Query $query
    +	 * @param string   $field
    +	 * @param string   $prepare
    +	 *
    +	 * @return string
    +	 */
    +	protected function where_field_is( $where, WP_Query $query, $field, $prepare = '%s' ) {
    +		if ( $query !== $this->current_query ) {
    +			return $where;
    +		}
    +
    +
    +		if ( empty( $this->query_vars[ $field ] ) ) {
    +			return $where;
    +		}
    +
    +		/** @var wpdb $wpdb */
    +		global $wpdb;
    +
    +		$where .= $wpdb->prepare( " AND {$wpdb->posts}.{$field} = {$prepare} ", $this->query_vars[ $field ] );
    +
    +		return $where;
    +	}
    +
    +	/**
    +	 * Removes all the filters this class applied.
    +	 *
    +	 * @since 4.7.19
    +	 */
    +	public function remove_filters() {
    +		foreach ( $this->active_filters as $filters ) {
    +			list( $tag, $function_to_add, $priority ) = $filters;
    +			remove_filter( $tag, $function_to_add, $priority );
    +		}
    +	}
    +
    +	/**
    +	 * Add a custom WHERE clause to the query.
    +	 *
    +	 * @since 4.7.19
    +	 * @since 4.9.14 Added the `$id` and `$override` parameters.
    +	 *
    +	 * @param string $where_clause
    +	 * @param null|string $id          Optional WHERE ID to prevent duplicating clauses.
    +	 * @param boolean     $override    Whether to override the clause if a WHERE by the same ID exists or not.
    +	 */
    +	public function where( $where_clause, $id = null, $override =false  ) {
    +		if ( $this->buffer_where_clauses ) {
    +			if ( $id ) {
    +				if ( $override || ! isset( $this->buffered_where_clauses[ $id ] ) ) {
    +					$this->buffered_where_clauses[ $id ] = $where_clause;
    +				}
    +			} else {
    +				$this->buffered_where_clauses[] = '(' . $where_clause . ')';
    +			}
    +		} else {
    +			if ( $id ) {
    +				if ( $override || ! isset( $this->query_vars['where'][ $id ] ) ) {
    +					$this->query_vars['where'][ $id ] = '(' . $where_clause . ')';
    +				}
    +			} else {
    +				$this->query_vars['where'][] = '(' . $where_clause . ')';
    +			}
    +
    +			if ( ! has_filter( 'posts_where', [ $this, 'filter_posts_where' ] ) ) {
    +				add_filter( 'posts_where', [ $this, 'filter_posts_where' ], 10, 2 );
    +			}
    +		}
    +	}
    +
    +	/**
    +	 * Add a custom JOIN clause to the query.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string      $join_clause JOIN clause.
    +	 * @param null|string $id          Optional JOIN ID to prevent duplicating joins.
    +	 * @param boolean     $override    Whether to override the clause if a JOIN by the same ID exists.
    +	 */
    +	public function join( $join_clause, $id = null, $override = false ) {
    +		if ( $id ) {
    +			if ( $override || ! isset( $this->query_vars['join'][ $id ] ) ) {
    +				$this->query_vars['join'][ $id ] = $join_clause;
    +			}
    +		} else {
    +			$this->query_vars['join'][] = $join_clause;
    +		}
    +
    +		if ( ! has_filter( 'posts_join', [ $this, 'filter_posts_join' ] ) ) {
    +			add_filter( 'posts_join', [ $this, 'filter_posts_join' ], 10, 2 );
    +		}
    +	}
    +
    +	/**
    +	 * Add a custom ORDER BY to the query.
    +	 *
    +	 * @since 4.9.5
    +	 * @since 4.9.14 Added the `$id` and `$override` parameters.
    +	 * @since 4.9.21 Added the `$order` and `$after` parameters.
    +	 *
    +	 * @param string|array $orderby       The order by criteria; this argument can be specified in array form to specify
    +	 *                                    multiple order by clauses and orders associated to each,
    +	 *                                    e.g. `[ '_meta_1' => 'ASC', '_meta_2' => 'DESC' ]`. If a simple array is
    +	 *                                    passed, then the order will be set to the default one for each entry.
    +	 *                                    This arguments supports the same formats of the `WP_Query` `orderby` argument.
    +	 * @param null|string  $id            Optional ORDER ID to prevent duplicating order-by clauses.
    +	 * @param boolean      $override      Whether to override the clause if another by the same ID exists.
    +	 * @param bool         $after         Whether to append the order by clause to the ones managed by WordPress or not.
    +	 *                                    Defaults to `false`,to prepend them to the ones managed by WordPress.
    +	 */
    +	public function orderby( $orderby, $id = null, $override = false, $after = false ) {
    +		$orderby_key = $after ? static::AFTER . 'orderby' : 'orderby';
    +		$entries = [];
    +
    +		foreach ( (array) $orderby as $key => $value ) {
    +			/*
    +			 * As WordPress does, we support "simple" entries, like `[ 'menu_order', 'post_date' ]` and entries in the
    +			 * shape `[ 'menu_order' => 'ASC', 'post_date' => 'DESC' ]`.
    +			 */
    +			$the_orderby = is_numeric( $key ) ? $value : $key;
    +			$the_order   = is_numeric( $key ) ? 'DESC' : $value;
    +
    +			$entries[] = [ $the_orderby, $the_order ];
    +		}
    +
    +		$id = $id ?: 'default';
    +
    +		// Use the `$id` parameter to allow later method calls to replace values set in previous calls.
    +		if ( $id ) {
    +			if ( $override || ! isset( $this->query_vars[ $orderby_key ][ $id ] ) ) {
    +				$this->query_vars[ $orderby_key ][ $id ] = $entries;
    +			}
    +		} else {
    +			$this->query_vars[ $orderby_key ][ $id ] = array_merge( $this->query_vars[ $orderby_key ][ $id ], $entries );
    +		}
    +
    +		if ( ! has_filter( 'posts_orderby', [ $this, 'filter_posts_orderby' ] ) ) {
    +			add_filter( 'posts_orderby', [ $this, 'filter_posts_orderby' ], 10, 2 );
    +		}
    +	}
    +
    +	/**
    +	 * Add custom select fields to the query.
    +	 *
    +	 * @since 4.9.5
    +	 * @since 4.9.14 Added the `$id` and `$override` parameters.
    +	 *
    +	 * @param string $field The field to add to the result.
    +	 * @param null|string $id       Optional ORDER ID to prevent duplicating order-by clauses..
    +	 * @param boolean     $override Whether to override the clause if another by the same ID exists.
    +	 */
    +	public function fields( $field, $id = null, $override = false ) {
    +		if ( $id ) {
    +			if ( $override || ! isset( $this->query_vars['fields'][ $id ] ) ) {
    +				$this->query_vars['fields'][ $id ] = $field;
    +			}
    +		} else {
    +			$this->query_vars['fields'][] = $field;
    +		}
    +
    +		if ( ! has_filter( 'posts_fields', [ $this, 'filter_posts_fields' ] ) ) {
    +			add_filter( 'posts_fields', [ $this, 'filter_posts_fields' ], 10, 2 );
    +		}
    +	}
    +
    +	/**
    +	 * Whether WHERE clauses should be buffered or not.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param bool $buffer_clauses
    +	 */
    +	public function buffer_where_clauses( $buffer_clauses ) {
    +		$this->buffer_where_clauses = (bool) $buffer_clauses;
    +	}
    +
    +	/**
    +	 * Returns the buffered WHERE clause and, optionally, cleans
    +	 * and deactivates buffering.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param bool $get_clean Whether  to clean the buffered WHERE
    +	 *                        clauses and deactivate buffering before
    +	 *                        returning them or not.
    +	 *
    +	 * @return array
    +	 */
    +	public function get_buffered_where_clauses( $get_clean = false ) {
    +		$clauses = $this->buffered_where_clauses;
    +
    +		if ( $get_clean ) {
    +			$this->buffer_where_clauses   = false;
    +			$this->buffered_where_clauses = [];
    +		}
    +
    +		return $clauses;
    +	}
    +
    +	/**
    +	 * Builds the escaped WHERE entry to match a field not in the entry.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string   $where
    +	 * @param WP_Query $query
    +	 * @param string   $field
    +	 *
    +	 * @return string
    +	 */
    +	protected function where_field_not_in( $where, WP_Query $query, $field ) {
    +		if ( $query !== $this->current_query ) {
    +			return $where;
    +		}
    +
    +		if ( empty( $this->query_vars[ $field ] ) ) {
    +			return $where;
    +		}
    +
    +		$input = $this->query_vars[ $field ];
    +
    +		$stati_interval = $this->create_interval_of_strings( $input );
    +
    +		$where .= $this->and_field_not_in_interval( $field, $stati_interval );
    +
    +		return $where;
    +	}
    +
    +	/**
    +	 * Creates a SQL interval of strings.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string|array $input
    +	 *
    +	 * @return string
    +	 */
    +	public function create_interval_of_strings( $input ) {
    +		$buffer = [];
    +
    +		/** @var wpdb $wpdb */
    +		global $wpdb;
    +
    +		foreach ( $input as $string ) {
    +			$buffer[] = is_array( $string ) ? $string : [ $string ];
    +		}
    +
    +		$buffer = array_unique( call_user_func_array( 'array_merge', $buffer ) );
    +
    +		$safe_strings = [];
    +		foreach ( $buffer as $raw_status ) {
    +			$safe_strings[] = $wpdb->prepare( '%s', $raw_status );
    +		}
    +
    +		return implode( ',', $safe_strings );
    +	}
    +
    +	/**
    +	 * Builds a WHERE clause where field is not in interval.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $field
    +	 * @param string $interval
    +	 *
    +	 * @return string
    +	 */
    +	protected function and_field_not_in_interval( $field, $interval ) {
    +		/** @var wpdb $wpdb */
    +		global $wpdb;
    +
    +		return " AND {$wpdb->posts}.{$field} NOT IN ('{$interval}') ";
    +	}
    +
    +	/**
    +	 * Builds the escaped WHERE entry to match a field in the entry.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string   $where
    +	 * @param WP_Query $query
    +	 * @param string   $field
    +	 *
    +	 * @return string
    +	 */
    +	protected function where_field_in( $where, WP_Query $query, $field ) {
    +		if ( $query !== $this->current_query ) {
    +			return $where;
    +		}
    +
    +		if ( empty( $this->query_vars[ $field ] ) ) {
    +			return $where;
    +		}
    +
    +		$interval = $this->create_interval_of_strings( $this->query_vars[ $field ] );
    +
    +		$where .= $this->and_field_in_interval( $field, $interval );
    +
    +		return $where;
    +	}
    +
    +	/**
    +	 * Builds a AND WHERE clause.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string $field
    +	 * @param string $interval
    +	 *
    +	 * @return string
    +	 */
    +	protected function and_field_in_interval( $field, $interval ) {
    +		/** @var wpdb $wpdb */
    +		global $wpdb;
    +
    +		return " AND {$wpdb->posts}.{$field} IN ('{$interval}') ";
    +	}
    +
    +	/**
    +	 * Filter the `posts_where` filter to add custom WHERE clauses.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string   $where
    +	 * @param WP_Query $query
    +	 *
    +	 * @return string
    +	 */
    +	public function filter_posts_where( $where, WP_Query $query ) {
    +		if ( $query !== $this->current_query ) {
    +			return $where;
    +		}
    +
    +		if ( empty( $this->query_vars['where'] ) ) {
    +			return $where;
    +		}
    +
    +		$where .= ' AND ' . implode( "\nAND ", $this->query_vars['where'] ) . ' ';
    +
    +		return $where;
    +	}
    +
    +	/**
    +	 * Filter the `posts_join` filter to add custom JOIN clauses.
    +	 *
    +	 * @since 4.7.19
    +	 *
    +	 * @param string   $join
    +	 * @param WP_Query $query
    +	 *
    +	 * @return string
    +	 */
    +	public function filter_posts_join( $join, WP_Query $query ) {
    +		if ( $query !== $this->current_query ) {
    +			return $join;
    +		}
    +
    +		if ( empty( $this->query_vars['join'] ) ) {
    +			return $join;
    +		}
    +
    +		$join .= "\n" . implode( "\n ", $this->query_vars['join'] ) . ' ';
    +
    +		return $join;
    +	}
    +
    +	/**
    +	 * Filter the `posts_orderby` filter to add custom JOIN clauses.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @param string   $orderby The `ORDER BY` clause of the query being filtered.
    +	 * @param WP_Query $query   The query object currently being filtered.
    +	 *
    +	 * @return string The filtered `ORDER BY` clause.
    +	 */
    +	public function filter_posts_orderby( $orderby, WP_Query $query ) {
    +		if ( $query !== $this->current_query ) {
    +			return $orderby;
    +		}
    +
    +		if ( empty( $this->query_vars['orderby'] ) && empty( $this->query_vars[ static::AFTER . 'orderby' ] ) ) {
    +			return $orderby;
    +		}
    +
    +		$frags = [ $orderby ];
    +
    +		/*
    +		 * Entries will be set, from the `orderby` method, to the `[ [ ,  ], [ ,  ] ]`
    +		 * format.
    +		 */
    +		$build_entry = static function ( $entries ) {
    +			$buffer  = [];
    +
    +			foreach ( $entries as list( $orderby, $order ) ) {
    +				$buffer[] = sprintf( '%s %s', $orderby, $order );
    +			}
    +
    +			return implode( ', ', $buffer );
    +		};
    +
    +		if ( ! empty( $this->query_vars['orderby'] ) ) {
    +			$before = implode( ', ', array_map( $build_entry, $this->query_vars['orderby'] ) );
    +			$frags  = [ $before, $orderby ];
    +		}
    +
    +		if ( ! empty( $this->query_vars[ static::AFTER . 'orderby' ] ) ) {
    +			$frags[] = implode( ', ', array_map( $build_entry, $this->query_vars[ static::AFTER . 'orderby' ] ) );
    +		}
    +
    +		return implode( ', ', array_filter( $frags ) );
    +	}
    +
    +	/**
    +	 * Filter the `posts_fields` filter to amend fields to be selected.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @param array    $fields
    +	 * @param WP_Query $query
    +	 *
    +	 * @return string
    +	 */
    +	public function filter_posts_fields( $fields, WP_Query $query ) {
    +		if ( $query !== $this->current_query ) {
    +			return $fields;
    +		}
    +
    +		if ( empty( $this->query_vars['fields'] ) ) {
    +			return $fields;
    +		}
    +
    +		$fields .= ', ' . implode( ', ', $this->query_vars['fields'] );
    +
    +		return $fields;
    +	}
    +
    +	/**
    +	 * Captures the request SQL as built from the query class.
    +	 *
    +	 * This happens on the `posts_pre_query` filter and
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @param null|array $posts A pre-filled array of post results.
    +	 * @param \WP_Query  $query The current query object; this is used by the
    +	 *                          method to intercept only the request generated by
    +	 *                          its attached query.
    +	 *
    +	 * @return array|null An empty array to short-circuit the `get_posts` request; the input
    +	 *                    value, if the query is not the one attached to this filter or the method
    +	 *                    is called not in the context of the `posts_pre_query` filter;
    +	 */
    +	public function capture_request( $posts = null, WP_Query $query = null ) {
    +		if ( ! doing_filter( 'posts_pre_query' ) ) {
    +			// Let's make sure nothing bad happens if this runs outside of its natural context.
    +			return null;
    +		}
    +
    +		if ( $query !== $this->current_query ) {
    +			return $posts;
    +		}
    +
    +		$this->last_request = $query->request;
    +
    +		remove_filter( 'posts_pre_query', [ $this, 'capture_request' ] );
    +
    +		// This will short-circuit the query not running it.
    +		return [];
    +	}
    +
    +	/**
    +	 * Returns the controlled query request SQL.
    +	 *
    +	 * It's not possible to build the SQL for a query outside of a request to `get_posts`
    +	 * so what this class does is fire such a request intercepting it before it actually
    +	 * runs and returning an empty post array.
    +	 * To really run the query it's sufficien to run `get_posts` again on it.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @return string The request SQL, as built from the `WP_Query` class including all the
    +	 *                possible filtering applied by this class and other classes.
    +	 */
    +	public function get_request() {
    +		add_filter( 'posts_pre_query', [ $this, 'capture_request' ], 10, 2 );
    +
    +		$this->current_query->get_posts();
    +
    +		return $this->last_request;
    +	}
    +
    +	/**
    +	 * Returns the fields, join, where and orderby clauses for an id.
    +	 *
    +	 * @since 4.9.14
    +	 *
    +	 * @param string $id The identifier of the group to remove.
    +	 *
    +	 * @return array An associative array of identifiable filters and their values, if any.
    +	 *
    +	 * @see Tribe__Repository__Query_Filters::$identifiable_filters
    +	 */
    +	public function get_filters_by_id( $id ) {
    +		$entries = [];
    +
    +		foreach ( static::$identifiable_filters as $key ) {
    +			if ( empty( $this->query_vars[ $key ][ $id ] ) ) {
    +				continue;
    +			}
    +			$entries[ $key ] = $this->query_vars[ $key ][ $id ];
    +		}
    +
    +		return $entries;
    +	}
    +
    +	/**
    +	 * Removes fields, join, where and orderby clauses for an id.
    +	 *
    +	 * @since 4.9.14
    +	 *
    +	 * @param string $id The identifier of the group to remove.
    +	 */
    +	public function remove_filters_by_id( $id ) {
    +		array_walk(
    +			$this->query_vars,
    +			static function ( array &$filters, $key ) use ( $id ) {
    +				if ( ! in_array( $key, static::$identifiable_filters, true ) ) {
    +					return;
    +				}
    +				unset( $filters[ $id ] );
    +			}
    +		);
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Read_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Read_Interface.php
    new file mode 100644
    index 000000000..57dc581cd
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Read_Interface.php
    @@ -0,0 +1,173 @@
    +where( 'post__in' , $ids )->get_query()` is
    +	 * to avoid all the overhead of a query that, probably did run already.
    +	 *
    +	 * @since 4.9.5
    +	 *
    +	 * @param array $posts An array of post objects or post IDs the query should return as if fetched.
    +	 *
    +	 * @return WP_Query A query object ready to return, and operate, on the posts.
    +	 */
    +	public function get_query_for_posts( array $posts );
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Setter_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Setter_Interface.php
    new file mode 100644
    index 000000000..c57ca92d0
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Repository/Setter_Interface.php
    @@ -0,0 +1,46 @@
    +`.
    +	 *
    +	 * @since 4.11.5
    +	 *
    +	 * @var string
    +	 */
    +	public static $localized_matcher_delimiter = '~';
    +
    +	/**
    +	 * WP_Rewrite Instance
    +	 *
    +	 * @var WP_Rewrite
    +	 */
    +	public $rewrite;
    +
    +	/**
    +	 * Rewrite rules Holder
    +	 *
    +	 * @var array
    +	 */
    +	public $rules = [];
    +
    +	/**
    +	 * Base slugs for rewrite urls
    +	 *
    +	 * @var array
    +	 */
    +	public $bases = [];
    +
    +	/**
    +	 * After creating the Hooks on WordPress we lock the usage of the function.
    +	 *
    +	 * @var boolean
    +	 */
    +	protected $hook_lock = false;
    +
    +	/**
    +	 * An array cache of resolved canonical URLs in the shape `[  =>  ]`.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @var array
    +	 */
    +	protected $canonical_url_cache = null;
    +
    +	/**
    +	 * An array cache of parsed URLs in the shape `[  =>  ]`.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @var array
    +	 */
    +	protected $parse_request_cache = null;
    +
    +	/**
    +	 * And array cache of cleaned URLs.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @var array
    +	 */
    +	protected $clean_url_cache = null;
    +	/**
    +	 * A reference to the Locale Switcher instance.
    +	 *
    +	 * @since 5.0.8
    +	 *
    +	 * @var Translations_Loader
    +	 */
    +	protected $translations_loader;
    +
    +	/**
    +	 * Static Singleton Factory Method
    +	 *
    +	 * @return self
    +	 */
    +	public static function instance() {
    +		if ( ! static::$instance ) {
    +			static::$instance = new static;
    +		}
    +
    +		return static::$instance;
    +	}
    +
    +	/**
    +	 * Tribe__Rewrite constructor.
    +	 *
    +	 * @param WP_Rewrite|null $wp_rewrite An instance of the `WP_Rewrite` class.
    +	 * @param Translations_Loader|null $translations_loader An instance of the translations loader.
    +	 */
    +	public function __construct( WP_Rewrite $wp_rewrite = null, Translations_Loader $translations_loader = null ) {
    +		$this->rewrite             = $wp_rewrite;
    +		$this->translations_loader = $translations_loader ?? tribe( Translations_Loader::class );
    +	}
    +
    +	/**
    +	 * When you are going to use any of the functions to create new rewrite rules you need to setup first
    +	 *
    +	 * @param  WP_Rewrite|null $wp_rewrite Pass the WP_Rewrite if you have it
    +	 *
    +	 * @return Tribe__Rewrite       The modified version of the class with the required variables in place
    +	 */
    +	public function setup( $wp_rewrite = null ) {
    +		if ( ! $wp_rewrite instanceof WP_Rewrite ) {
    +			global $wp_rewrite;
    +		}
    +
    +		$this->rewrite = $wp_rewrite;
    +		$this->bases   = $this->get_bases( 'regex' );
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * Generate the Rewrite Rules
    +	 *
    +	 * @param  WP_Rewrite $wp_rewrite WordPress Rewrite that will be modified, pass it by reference (&$wp_rewrite)
    +	 */
    +	public function filter_generate( WP_Rewrite $wp_rewrite ) {
    +		// Gets the rewrite bases and completes any other required setup work
    +		$this->setup( $wp_rewrite );
    +
    +		/**
    +		 * Use this to change the Tribe__Rewrite instance before new rules
    +		 * are committed.
    +		 *
    +		 * Should be used when you want to add more rewrite rules without having to
    +		 * deal with the array merge, noting that rules for The Events Calendar are
    +		 * themselves added via this hook (default priority).
    +		 *
    +		 * @var Tribe__Rewrite $rewrite
    +		 */
    +		do_action( 'tribe_pre_rewrite', $this );
    +	}
    +
    +
    +	/**
    +	 * Do not allow people to Hook methods twice by mistake
    +	 */
    +	public function hooks( $remove = false ) {
    +		if ( false === $this->hook_lock ) {
    +			// Don't allow people do Double the hooks
    +			$this->hook_lock = true;
    +
    +			$this->add_hooks();
    +		} elseif ( true === $remove ) {
    +			$this->remove_hooks();
    +		}
    +	}
    +
    +	/**
    +	 * Converts any percentage placeholders in the array keys back to % symbols.
    +	 *
    +	 * @param  array $rules
    +	 *
    +	 * @return array
    +	 */
    +	public function remove_percent_placeholders( array $rules ) {
    +		foreach ( $rules as $key => $value ) {
    +			$this->replace_array_key( $rules, $key, str_replace( self::PERCENT_PLACEHOLDER, '%', $key ) );
    +		}
    +
    +		return $rules;
    +	}
    +
    +	/**
    +	 * Filter for the `rewrite_rules_array` hook.
    +	 *
    +	 * @since 5.0.10
    +	 *
    +	 * @param array|mixed $rules The rules to be filtered.
    +	 *
    +	 * @return array|mixed Rules after filtering.
    +	 */
    +	public function filter_rewrite_rules_array( $rules ) {
    +		if ( ! is_array( $rules ) ) {
    +			return $rules;
    +		}
    +
    +		return $this->remove_percent_placeholders( $rules );
    +	}
    +
    +	protected function add_hooks() {
    +		add_filter( 'generate_rewrite_rules', [ $this, 'filter_generate' ] );
    +
    +		// Remove percent Placeholders on all items
    +		add_filter( 'rewrite_rules_array', [ $this, 'filter_rewrite_rules_array' ], 25 );
    +
    +		add_action( 'shutdown', [ $this, 'dump_cache' ] );
    +	}
    +
    +	protected function remove_hooks() {
    +		remove_filter( 'generate_rewrite_rules', [ $this, 'filter_generate' ] );
    +		remove_filter( 'rewrite_rules_array', [ $this, 'filter_rewrite_rules_array' ], 25 );
    +
    +		remove_action( 'shutdown', [ $this, 'dump_cache' ] );
    +	}
    +
    +	/**
    +	 * Determines if we have plain permalink.
    +	 *
    +	 * @since 4.11.2
    +	 *
    +	 * @return bool If we use plain permalink or not.
    +	 */
    +	public static function is_plain_permalink() {
    +		return tribe_context()->is( 'plain_permalink' );
    +	}
    +
    +	/**
    +	 * Get the base slugs for the rewrite rules.
    +	 *
    +	 * WARNING: Don't mess with the filters below if you don't know what you are doing
    +	 *
    +	 * @param  string $method Use "regex" to return a Regular Expression with the possible Base Slugs using l10n
    +	 *
    +	 * @return object         Return Base Slugs with l10n variations
    +	 */
    +	public function get_bases( $method = 'regex' ) {
    +		return new stdClass();
    +	}
    +
    +	/**
    +	 * The base method for creating a new Rewrite rule
    +	 *
    +	 * @param array|string $regex The regular expression to catch the URL
    +	 * @param array        $args  The arguments in which the regular expression "alias" to
    +	 *
    +	 * @return Tribe__Events__Rewrite
    +	 */
    +	public function add( $regex, $args = [] ) {
    +		$regex = (array) $regex;
    +
    +		$default = [];
    +		$args    = array_filter( wp_parse_args( $args, $default ) );
    +
    +		$url = add_query_arg( $args, 'index.php' );
    +
    +		// Optional Trailing Slash
    +		$regex[] = '?$';
    +
    +		// Glue the pieces with slashes
    +		$regex = implode( '/', array_filter( $regex ) );
    +
    +		// Add the Bases to the regex
    +		foreach ( $this->bases as $key => $value ) {
    +			$regex = str_replace( [ '{{ ' . $key . ' }}', '{{' . $key . '}}' ], $value, $regex );
    +		}
    +
    +		// Apply the Preg Indexes to the URL
    +		preg_match_all( '/%([0-9])/', $url, $matches );
    +		foreach ( end( $matches ) as $index ) {
    +			$url = str_replace( '%' . $index, $this->rewrite->preg_index( $index ), $url );
    +		}
    +
    +		// Add the rule
    +		$this->rules[ $regex ] = $url;
    +
    +		return $this;
    +	}
    +
    +	/**
    +	 * Returns a sanitized version of $slug that can be used in rewrite rules.
    +	 *
    +	 * This is ideal for those times where we wish to support internationalized
    +	 * URLs (ie, where "venue" in "venue/some-slug" may be rendered in non-ascii
    +	 * characters).
    +	 *
    +	 * In the case of registering new post types, $permastruct_name should
    +	 * generally match the CPT name itself.
    +	 *
    +	 * @param  string $slug
    +	 * @param  string $permastruct_name
    +	 * @param  string $is_regular_exp
    +	 *
    +	 * @return string
    +	 */
    +	public function prepare_slug( $slug, $permastruct_name, $is_regular_exp = true ) {
    +		$needs_handling = false;
    +		$sanitized_slug = sanitize_title( $slug );
    +
    +		// Was UTF8 encoding required for the slug? %a0 type entities are a tell-tale of this
    +		if ( preg_match( '/(%[0-9a-f]{2})+/', $sanitized_slug ) ) {
    +			/**
    +			 * Controls whether special UTF8 URL handling is setup for the set of
    +			 * rules described by $permastruct_name.
    +			 *
    +			 * This only fires if Tribe__Events__Rewrite::prepare_slug() believes
    +			 * handling is required.
    +			 *
    +			 * @var string $permastruct_name
    +			 * @var string $slug
    +			 */
    +			$needs_handling = apply_filters(
    +				'tribe_events_rewrite_utf8_handling', true, $permastruct_name, $slug
    +			);
    +		}
    +
    +		if ( $needs_handling ) {
    +			// User agents encode things the same way but in uppercase
    +			$sanitized_slug = strtoupper( $sanitized_slug );
    +
    +			// UTF8 encoding results in lots of "%" chars in our string which play havoc
    +			// with WP_Rewrite::generate_rewrite_rules(), so we swap them out temporarily
    +			$sanitized_slug = str_replace( '%', Tribe__Rewrite::PERCENT_PLACEHOLDER, $sanitized_slug );
    +		}
    +
    +		$prepared_slug = $is_regular_exp ? preg_quote( $sanitized_slug ) : $sanitized_slug;
    +
    +		/**
    +		 * Provides an opportunity to modify the sanitized slug which will be used
    +		 * in rewrite rules relating to $permastruct_name.
    +		 *
    +		 * @var string $prepared_slug
    +		 * @var string $permastruct_name
    +		 * @var string $original_slug
    +		 */
    +		return apply_filters( 'tribe_rewrite_prepared_slug', $prepared_slug, $permastruct_name, $slug );
    +	}
    +
    +	/**
    +	 * A way to replace an Array key without destroying the array ordering
    +	 *
    +	 * @since  4.0.6
    +	 *
    +	 * @param  array  &$array  The Rules Array should be used here
    +	 * @param  string $search  Search for this Key
    +	 * @param  string $replace Replace with this key]
    +	 *
    +	 * @return bool            Did we replace anything?
    +	 */
    +	protected function replace_array_key( &$array, $search, $replace ) {
    +		$keys  = array_keys( $array );
    +		$index = array_search( $search, $keys );
    +
    +		if ( false !== $index ) {
    +			$keys[ $index ] = $replace;
    +			$array          = array_combine( $keys, $array );
    +
    +			return true;
    +		}
    +
    +		return false;
    +	}
    +
    +	/**
    +	 * Returns the canonical URLs associated with a ugly link.
    +	 *
    +	 * This method will handle "our" URLs to go from their ugly form, filled with query vars, to the "pretty" one, if
    +	 * possible.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @param string $url The URL to try and translate into its canonical form.
    +	 * @param bool   $force Whether to try and use the cache or force a new canonical URL conversion.
    +	 *
    +	 * @return string The canonical URL, or the input URL if it could not be resolved to a canonical one.
    +	 */
    +	public function get_canonical_url( $url, $force = false ) {
    +		if ( get_class( $this ) === Tribe__Rewrite::class ) {
    +			throw new BadMethodCallException(
    +				'Method get_canonical_url should only be called on extending classes.'
    +			);
    +		}
    +
    +		if ( null === $this->rewrite ) {
    +			// We re-do this check here as the object might have been initialized before the global rewrite was set.
    +			$this->setup();
    +		}
    +
    +		/**
    +		 * Filters the canonical URL for an input URL before any kind of logic runs.
    +		 *
    +		 * @since 4.9.11
    +		 *
    +		 * @param string|null    $canonical_url The canonical URL, defaults to `null`; returning a non `null` value will
    +		 *                                      make the logic bail and return the value.
    +		 * @param string         $url           The input URL to resolve to a canonical one.
    +		 * @param Tribe__Rewrite $this          This rewrite object.
    +		 */
    +		$canonical_url = apply_filters( 'tribe_rewrite_pre_canonical_url', null, $url );
    +		if ( null !== $canonical_url ) {
    +			return $canonical_url;
    +		}
    +
    +		$home_url = home_url();
    +
    +		// It's not a path we, or WP, could possibly handle.
    +		$has_http_scheme = (bool) parse_url( $url, PHP_URL_SCHEME );
    +		if (
    +			$home_url === $url
    +			|| ( $has_http_scheme && false === strpos( $url, $home_url ) )
    +		) {
    +			return $url;
    +		}
    +
    +		$canonical_url = $url;
    +		// To avoid issues with missing `path` component let's always add a trailing '/'.
    +		if ( false !== strpos( $url, '?' ) ) {
    +			$canonical_url = preg_replace( '~(\\/)*\\?~', '/?', $canonical_url );
    +		} elseif ( false !== strpos( $url, '#' ) ) {
    +			$canonical_url = preg_replace( '~(\\/)*#~', '/#', $canonical_url );
    +		}
    +
    +		// Canonical URLs are supposed to contain the home URL.
    +		if ( false === strpos( $canonical_url, $home_url ) ) {
    +			$canonical_url = home_url( $canonical_url );
    +		}
    +
    +		if ( empty( $canonical_url ) ) {
    +			return $home_url;
    +		}
    +
    +		// Passthru vars are additional salts for the cache that would render it useless: parse them here.
    +		$query = (string) parse_url( $url, PHP_URL_QUERY );
    +		wp_parse_str( $query, $query_vars );
    +		// Non-scalar value query vars should not be handled, but they should survive the resolution and not be cached.
    +		$scalar_query_vars = array_filter( $query_vars, 'is_scalar' );
    +		$passthru_vars     = array_diff_key( $query_vars, $scalar_query_vars );
    +		// Remove the passthru query vars from the URL to match the correct cache.
    +		$url = remove_query_arg( array_keys( $passthru_vars ), $url );
    +		// Normalize the URL to make sure there's a trailing slash at the end of the path, before the query or fragment.
    +		$url = preg_replace( '~(?warmup_cache(
    +				'canonical_url',
    +				WEEK_IN_SECONDS,
    +				Listener::TRIGGER_GENERATE_REWRITE_RULES
    +			);
    +			if ( isset( $this->canonical_url_cache[ $url ] ) ) {
    +				// Re-apply passthru vars now, if any.
    +				return add_query_arg( $passthru_vars, $this->canonical_url_cache[ $url ] );
    +			}
    +		}
    +
    +		$query_vars = array_intersect_key( $query_vars, $scalar_query_vars );
    +
    +		if ( isset( $query_vars['paged'] ) && 1 === (int) $query_vars['paged'] ) {
    +			// Remove the `paged` query var if it's 1.
    +			unset( $query_vars['paged'] );
    +		}
    +
    +		ksort( $query_vars );
    +
    +		$our_rules          = $this->get_handled_rewrite_rules();
    +		$handled_query_vars = $this->get_rules_query_vars( $our_rules );
    +		$handled_post_types = $this->get_post_types();
    +
    +		if (
    +			// The rules we handle should not be empty.
    +			empty( $our_rules )
    +			|| ! (
    +				// Supported post types should be either keys or values, of the `post_type` argument, in the query vars.
    +				count( array_intersect_key( array_flip( $handled_post_types ), $query_vars ) )
    +				|| in_array( Arr::get( $query_vars, 'post_type', 'post' ), $handled_post_types, true )
    +			)
    +		) {
    +			$wp_canonical = redirect_canonical( $canonical_url, false );
    +			if ( empty( $wp_canonical ) ) {
    +				$wp_canonical = $canonical_url;
    +			}
    +
    +			$this->canonical_url_cache[ $url ] = $wp_canonical;
    +
    +			return $wp_canonical;
    +		}
    +
    +		$bases = (array) $this->get_bases();
    +		ksort( $bases );
    +
    +		$localized_matchers = $this->get_localized_matchers();
    +		$dynamic_matchers   = $this->get_dynamic_matchers( $query_vars );
    +
    +		// Try to match only on the query vars we're actually handling.
    +		$matched_vars   = array_intersect_key( $query_vars, array_combine( $handled_query_vars, $handled_query_vars ) );
    +		$unmatched_vars = array_diff_key( $query_vars, array_combine( $handled_query_vars, $handled_query_vars ) );
    +
    +		if ( empty( $matched_vars ) ) {
    +			// The URL does contain query vars, but none we handle.
    +			$wp_canonical = trailingslashit( redirect_canonical( $url, false ) );
    +			$this->canonical_url_cache[ $url ] = $wp_canonical;
    +
    +			return $wp_canonical;
    +		}
    +
    +		$found = false;
    +
    +		foreach ( $our_rules as $link_template => $index_path ) {
    +			wp_parse_str( (string) parse_url( $index_path, PHP_URL_QUERY ), $link_vars );
    +			ksort( $link_vars );
    +
    +			if ( array_keys( $link_vars ) !== array_keys( $matched_vars ) ) {
    +				continue;
    +			}
    +
    +			if ( ! (
    +				Arr::get( $matched_vars, 'post_type', '' ) === Arr::get( $link_vars, 'post_type', '' )
    +				&& Arr::get( $matched_vars, 'eventDisplay', '' ) === Arr::get( $link_vars, 'eventDisplay', '' )
    +			) ) {
    +				continue;
    +			}
    +
    +			$replace = array_map( function ( $localized_matcher ) use ( $matched_vars ) {
    +				if ( ! is_array( $localized_matcher ) ) {
    +					// For the dates.
    +					return isset( $matched_vars[ $localized_matcher ] )
    +						? $matched_vars[ $localized_matcher ]
    +						: '';
    +				}
    +
    +				$query_var  = $localized_matcher['query_var'];
    +				$query_vars = [ $query_var ];
    +
    +				if ( $query_var === 'name' ) {
    +					$query_vars = array_merge( $query_vars, $this->get_post_types() );
    +				}
    +
    +				if ( ! array_intersect( array_keys( $matched_vars ), $query_vars ) ) {
    +					return '';
    +				}
    +
    +				if ( isset( $localized_matcher['localized_slug'] ) ) {
    +					// If available, then return the localized slug instead of inferring it as we do below.
    +					return $localized_matcher['localized_slug'];
    +				}
    +
    +				/*
    +				 * We use `end` as, by default, the localized version of the slug in the current language will be at the
    +				 * end of the array.
    +				 */
    +				return end( $localized_matcher['localized_slugs'] );
    +			}, $localized_matchers );
    +
    +			// Include dynamic matchers now.
    +			$replace = array_merge( $dynamic_matchers, $replace );
    +
    +			/*
    +			 * Prune from the replacements the empty values. This will resolve conflicts (e.g. single and archive w/
    +			 * same slug) as no two can be true at the same time.
    +			 * Remove the `` prefix added to localized matchers, if any.
    +			 */
    +			$replace = array_filter( $replace );
    +			$replace = array_combine(
    +				array_map( static function ( $key ) {
    +					return preg_replace(
    +						'/' . preg_quote( Tribe__Rewrite::$localized_matcher_delimiter, '/' ) . '\\w*$/',
    +						'',
    +						$key
    +					);
    +				}, array_keys( $replace ) ),
    +				$replace
    +			);
    +
    +			// Use case-insensitive replace to make sure to work with some decoding using uppercase escaped chars.
    +			$replaced = str_ireplace( array_keys( $replace ), $replace, $link_template );
    +
    +			// Remove trailing chars.
    +			$path     = rtrim( $replaced, '?$' );
    +			$resolved = trailingslashit( home_url( $path ) );
    +			$found = true;
    +
    +			break;
    +		}
    +
    +		if ( empty( $resolved ) ) {
    +			$wp_canonical = redirect_canonical( $canonical_url, false );
    +			$resolved     = empty( $wp_canonical ) ? $canonical_url : $wp_canonical;
    +		}
    +
    +		if ( $canonical_url !== $resolved ) {
    +			// Be sure to add a trailing slash to the URL; before `?` or `#`.
    +			$resolved = preg_replace( '/(?canonical_url_cache[ $url ] = $resolved;
    +		}
    +
    +		// Re-apply passthru vars now, if any. After the caching to allow salting the cache key too much.
    +		$resolved = add_query_arg( $passthru_vars, $resolved );
    +
    +		return $resolved;
    +	}
    +
    +	/**
    +	 * Returns an array of rewrite rules handled by the implementation.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @return array An array of rewrite rules handled by the implementation in the shape `[  =>  ]`.
    +	 */
    +	protected function get_handled_rewrite_rules() {
    +		// Try and pull it from memoized values.
    +		$cache     = tribe_cache();
    +		$our_rules = $cache['handled_rewrite_rules'] ?? null;
    +
    +		// We need to make sure we are have WP_Rewrite setup
    +		if ( ! $this->rewrite || empty( $this->rewrite->rules ) ) {
    +			$this->setup();
    +		}
    +
    +		$all_rules = isset( $this->rewrite->rules ) ? (array) $this->rewrite->rules : [];
    +
    +		if ( ! is_array( $our_rules ) ) {
    +			// While this is specific to The Events Calendar we're handling a small enough post type base to keep it here.
    +			$pattern = '/post_type=tribe_(events|venue|organizer)/';
    +			// Reverse the rules to try and match the most complex first.
    +			$our_rules = array_filter( $all_rules,
    +				static function ( $rule_query_string ) use ( $pattern ) {
    +					return is_string( $rule_query_string ) && preg_match( $pattern, $rule_query_string );
    +				}
    +			);
    +
    +			$cache['handled_rewrite_rules'] = $our_rules;
    +		}
    +
    +		/**
    +		 * Filters the list of rewrite rules handled by our code to add or remove some as required.
    +		 *
    +		 * @since  4.9.18
    +		 *
    +		 * @param array                $our_rules An array of rewrite rules handled by our code, in the shape
    +		 *                                        `[  =>  ]`.
    +		 *                                        E.g. `[ '(?:events)/(?:list)/?$' => 'index.php?post_type=tribe_events&eventDisplay=list' ]`.
    +		 * @param array $all_rules All the current rewrite rules, before any filtering is applied; these
    +		 *                                        have the same ` rewrite >` format as the previous argument,
    +		 *                                        which is the format used by WordPress rewrite rules.
    +		 */
    +		$our_rules = apply_filters( 'tribe_rewrite_handled_rewrite_rules', $our_rules, $all_rules );
    +
    +		return $our_rules;
    +	}
    +
    +	/**
    +	 * Returns a map relating localized regex matchers to query vars.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @return array A map of localized regex matchers in the shape `[  =>  ]`.
    +	 */
    +	protected function get_localized_matchers() {
    +		$cache_key = __METHOD__;
    +		$cache = tribe_cache();
    +
    +		$localized_matchers = $cache[ $cache_key ];
    +
    +		if ( ! empty( $localized_matchers ) ) {
    +			return $localized_matchers;
    +		}
    +
    +		$bases         = (array) $this->get_bases();
    +		$query_var_map = $this->get_matcher_to_query_var_map();
    +		$localized_matchers = [];
    +
    +		foreach ( $bases as $base => $localized_matcher ) {
    +			// Use the base too to allow possible conflicts if the slugs are the same for single and archive.
    +			$localized_matcher_key = $localized_matcher . static::$localized_matcher_delimiter . $base;
    +
    +			if ( isset( $localized_matchers[ $localized_matcher_key ] ) ) {
    +				continue;
    +			}
    +
    +			if ( isset( $query_var_map[ $base ] ) ) {
    +				$localized_matchers[ $localized_matcher_key ] = [
    +					'base'            => $base,
    +					'query_var'       => $query_var_map[ $base ],
    +					'en_slug'         => $base,
    +					'localized_slugs' => [ $base ],
    +				];
    +				// If we have the localized slug version then let's parse it.
    +				preg_match( '/^\\(\\?:(?[^\\)]+)\\)$/u', $localized_matcher, $buffer );
    +				if ( ! empty( $buffer['slugs'] ) ) {
    +					$slugs = explode( '|', $buffer['slugs'] );
    +
    +					$localized_matchers[ $localized_matcher_key ]['localized_slugs'] = array_map(
    +						static function ( $localized_slug ) {
    +							return str_replace( '\-', '-', $localized_slug );
    +						},
    +						$slugs
    +					);
    +
    +					// The English version is the first.
    +					$localized_matchers[ $localized_matcher_key ]['en_slug'] = reset( $slugs );
    +
    +					$localized_slug = $this->filter_matcher( null, $base );
    +
    +					if ( $localized_slug ) {
    +						$localized_matchers[ $localized_matcher_key ]['localized_slug'] = $localized_slug;
    +					}
    +				}
    +			}
    +		}
    +
    +		$cache[ $cache_key ] = $localized_matchers;
    +
    +		return $localized_matchers;
    +	}
    +
    +	/**
    +	 * Returns a map relating localized matcher slugs to the corresponding query var.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @return array A map relating localized matcher slugs to the corresponding query var.
    +	 */
    +	protected function get_matcher_to_query_var_map() {
    +		throw new BadMethodCallException(
    +			'This method should not be called on the base class (' . __CLASS__ . '); only on extending classes.'
    +		);
    +	}
    +
    +	/**
    +	 * Return a list of the query vars handled in the input rewrite rules.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @param array $rules A set of rewrite rules in the shape `[  =>  ]`.
    +	 *
    +	 * @return array A list of all the query vars handled in the rules.
    +	 */
    +	protected function get_rules_query_vars( array $rules ) {
    +		static $cache_var_name = __METHOD__;
    +
    +		$cached_rules = tribe_get_var( $cache_var_name, [] );
    +		$cache_key = md5( json_encode( $rules ) );
    +
    +		if ( ! isset( $cached_rules[ $cache_key ] ) ) {
    +			$cached_rules[ $cache_key ] = array_unique(
    +				array_filter(
    +					array_merge(
    +						[],
    +						...array_values(
    +							array_map(
    +								static function ( $rule_string ) {
    +									wp_parse_str( parse_url( $rule_string, PHP_URL_QUERY ), $vars );
    +
    +									return array_keys( $vars );
    +								},
    +								array_filter( $rules, 'is_string' )
    +							)
    +						)
    +					)
    +				)
    +			);
    +
    +			tribe_set_var( $cache_var_name, $cached_rules );
    +		}
    +
    +		return $cached_rules[ $cache_key ];
    +	}
    +
    +	/**
    +	 * Sets up the dynamic matchers based on the link query vars.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @param array $query_vars An map of query vars and their values.
    +	 *
    +	 * @return array A map of dynamic matchers in the shape `[  =>  ]`.
    +	 */
    +	protected function get_dynamic_matchers( array $query_vars ) {
    +		$bases            = (array) $this->get_bases();
    +		$dynamic_matchers = [];
    +
    +		/*
    +		 * In some instance we use the `page` (w/o `d`) to paginate a dynamic archive.
    +		 * Let's support that too.
    +		 * It's important to add `page` after `paged` to try and match the longest (`paged`) first.
    +		 */
    +		foreach ( [ 'paged', 'page' ] as $page_var ) {
    +			if ( isset( $query_vars[ $page_var ] ) ) {
    +				$page_regex = $bases['page'];
    +				preg_match( '/^\(\?:(?[^\\)]+)\)/', $page_regex, $matches );
    +				if ( isset( $matches['slugs'] ) ) {
    +					$slugs = explode( '|', $matches['slugs'] );
    +					// The localized version is the last, by default.
    +					$en_slug        = end( $slugs );
    +					$localized_slug = $this->filter_matcher( null, 'page' );
    +
    +					// We use two different regular expressions to read pages, let's add both.
    +					if ( $localized_slug ) {
    +						$dynamic_matchers["{$page_regex}/(\d+)"]       = "{$localized_slug}/{$query_vars[$page_var]}";
    +						$dynamic_matchers["{$page_regex}/([0-9]{1,})"] = "{$localized_slug}/{$query_vars[$page_var]}";
    +					} else {
    +						$dynamic_matchers["{$page_regex}/(\d+)"]       = "{$en_slug}/{$query_vars[$page_var]}";
    +						$dynamic_matchers["{$page_regex}/([0-9]{1,})"] = "{$en_slug}/{$query_vars[$page_var]}";
    +					}
    +				}
    +			}
    +		}
    +
    +		if ( isset( $query_vars['tag'] ) ) {
    +			$tag      = $query_vars['tag'];
    +			$tag_term = get_term_by( 'slug', $tag, 'post_tag' );
    +
    +			if ( $tag_term instanceof WP_Term ) {
    +				// Let's actually add the matcher only if the tag exists.
    +				$tag_regex = $bases['tag'];
    +				preg_match( '/^\(\?:(?[^\\)]+)\)/', $tag_regex, $matches );
    +				if ( isset( $matches['slugs'] ) ) {
    +					$slugs = explode( '|', $matches['slugs'] );
    +					// The localized version is the last, by default.
    +					$en_slug        = end( $slugs );
    +					$localized_slug = $this->filter_matcher( null, 'tag' );
    +
    +					if ( $localized_slug ) {
    +						$dynamic_matchers["{$tag_regex}/([^/]+)"] = "{$localized_slug}/{$tag}";
    +					} else {
    +						$dynamic_matchers["{$tag_regex}/([^/]+)"] = "{$en_slug}/{$tag}";
    +					}
    +				}
    +			}
    +		}
    +
    +		if ( isset( $query_vars['feed'] ) ) {
    +			$feed_regex                      = 'feed/(feed|rdf|rss|rss2|atom)';
    +			$dynamic_matchers[ $feed_regex ] = "feed/{$query_vars['feed']}";
    +		}
    +
    +		return $dynamic_matchers;
    +	}
    +
    +	/**
    +	 * Returns a list of post types supported by the implementation.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @return array An array of post types supported and handled by the rewrite implementation.
    +	 */
    +	protected function get_post_types() {
    +		throw new BadMethodCallException( 'Method get_post_types should be implemented by extending classes.' );
    +	}
    +
    +	/**
    +	 * Parses a URL to produce an array of query variables.
    +	 *
    +	 * Most of this functionality was copied from `WP::parse_request()` method
    +	 * with some changes to avoid conflicts and removing non-required behaviors.
    +	 *
    +	 * @since  4.9.11
    +	 *
    +	 * @param string $url              The URLto parse.
    +	 * @param array  $extra_query_vars An associative array of extra query vars to use for the parsing. These vars will
    +	 *                                 be read before the WordPress defined ones overriding them.
    +	 * @param bool   $force Whether to try and use the cache or force a new canonical URL conversion.
    +	 *
    +	 * @return array An array of query vars, as parsed from the input URL.
    +	 */
    +	public function parse_request( $url, array $extra_query_vars = [], $force = false ) {
    +		if ( null === $this->rewrite ) {
    +			// We re-do this check here as the object might have been initialized before the global rewrite was set.
    +			$this->setup();
    +		}
    +
    +		/**
    +		 * Allows short-circuiting the URL parsing.
    +		 *
    +		 * This filter will run before any logic runs, its result will not be cached and this filter will be called on
    +		 * each call to this method.
    +		 * Returning a non `null` value here will short-circuit this logic.
    +		 *
    +		 * @since 4.9.11
    +		 *
    +		 * @param array  $query_vars       The parsed query vars array.
    +		 * @param array  $extra_query_vars An associative array of extra query vars that will be processed before the
    +		 *                                 WordPress defined ones.
    +		 * @param string $url              The URL to parse.
    +		 */
    +		$parsed = apply_filters( 'tribe_rewrite_pre_parse_query_vars', null, $extra_query_vars, $url );
    +		if ( null !== $parsed ) {
    +			return $parsed;
    +		}
    +
    +		if ( ! $force ) {
    +			$this->warmup_cache(
    +				'parse_request',
    +				WEEK_IN_SECONDS,
    +				Listener::TRIGGER_GENERATE_REWRITE_RULES
    +			);
    +			if ( isset( $this->parse_request_cache[ $url ] ) ) {
    +				return $this->parse_request_cache[ $url ];
    +			}
    +		}
    +
    +		$query_vars           = [];
    +		$post_type_query_vars = [];
    +		$perma_query_vars     = [];
    +		$url_components = parse_url($url);
    +		$url_path = Arr::get( $url_components, 'path', '/' );
    +		$site_path = parse_url( home_url(), PHP_URL_PATH );
    +		if ( ! empty( $site_path ) && '/' !== $site_path ) {
    +			// The current site is in a sub-directory: the site path should be dropped from the request path.
    +			$url_path = str_replace( $site_path, '', $url_path );
    +		}
    +		$url_query = Arr::get( $url_components, 'query', '' );
    +		parse_str( $url_query, $url_query_vars );
    +		// Look for matches, removing leading `/` char.
    +		$request_match         = ltrim( $url_path, '/' );
    +		$decoded_request_match = urldecode( $request_match );
    +
    +		// Fetch the rewrite rules.
    +		$rewrite_rules = $this->rewrite->wp_rewrite_rules();
    +		$matched_rule = false;
    +
    +		if ( ! empty( $rewrite_rules ) ) {
    +			foreach ( (array) $rewrite_rules as $match => $query ) {
    +				$matches_regex = preg_match( "#^$match#", $request_match, $matches )
    +				                 || preg_match( "#^$match#", $decoded_request_match, $matches );
    +
    +				if ( ! $matches_regex ) {
    +					continue;
    +				}
    +
    +				if (
    +					$this->rewrite->use_verbose_page_rules
    +					&& preg_match( '/pagename=\$matches\[([0-9]+)\]/', $query, $varmatch )
    +				) {
    +					// This is a verbose page match, let's check to be sure about it.
    +					$page = get_page_by_path( $matches[ $varmatch[1] ] );
    +					if ( ! $page ) {
    +						continue;
    +					}
    +					$post_status_obj = get_post_status_object( $page->post_status );
    +					if (
    +						! $post_status_obj->public
    +						&& ! $post_status_obj->protected
    +						&& ! $post_status_obj->private
    +						&& $post_status_obj->exclude_from_search
    +					) {
    +						continue;
    +					}
    +				}
    +
    +				// Got a match.
    +				$matched_rule = $match;
    +				break;
    +			}
    +
    +			if ( false !== $matched_rule ) {
    +				// Trim the query of everything up to the '?'.
    +				$query = preg_replace( '!^.+\?!', '', $query );
    +				// Substitute the substring matches into the query.
    +				$query = addslashes( WP_MatchesMapRegex::apply( $query, $matches ) );
    +				// Parse the query.
    +				parse_str( $query, $perma_query_vars );
    +			}
    +		}
    +
    +		foreach ( get_post_types( [], 'objects' ) as $post_type => $t ) {
    +			if (
    +				is_post_type_viewable( $t )
    +				&& $t->query_var
    +			) {
    +				$post_type_query_vars[ $t->query_var ] = $post_type;
    +			}
    +		}
    +
    +		global $wp;
    +
    +		/*
    +		 * WordPress would apply this filter in the `parse_request` method to allow the registration of additional query
    +		 * vars. They might not have been registered at this point so we do this again making sure to avoid duplicates.
    +		 */
    +		$public_query_vars = array_unique( apply_filters( 'query_vars', $wp->public_query_vars ) );
    +
    +		foreach ( $public_query_vars as $wpvar ) {
    +			if ( isset( $extra_query_vars[ $wpvar ] ) ) {
    +				$query_vars[ $wpvar ] = $extra_query_vars[ $wpvar ];
    +			} elseif ( isset( $perma_query_vars[ $wpvar ] ) ) {
    +				$query_vars[ $wpvar ] = $perma_query_vars[ $wpvar ];
    +			}
    +			if ( ! empty( $query_vars[ $wpvar ] ) ) {
    +				if ( ! is_array( $query_vars[ $wpvar ] ) ) {
    +					$query_vars[ $wpvar ] = (string) $query_vars[ $wpvar ];
    +				} else {
    +					foreach ( $query_vars[ $wpvar ] as $vkey => $v ) {
    +						if ( is_scalar( $v ) ) {
    +							$query_vars[ $wpvar ][ $vkey ] = (string) $v;
    +						}
    +					}
    +				}
    +				if ( isset( $post_type_query_vars[ $wpvar ] ) ) {
    +					$query_vars['post_type'] = $post_type_query_vars[ $wpvar ];
    +					$query_vars['name']      = $query_vars[ $wpvar ];
    +				}
    +			}
    +		}
    +
    +		// Convert urldecoded spaces back into `+`.
    +		foreach ( get_taxonomies( [], 'objects' ) as $taxonomy => $t ) {
    +			if ( $t->query_var && isset( $query_vars[ $t->query_var ] ) ) {
    +				$query_vars[ $t->query_var ] = str_replace( ' ', '+', $query_vars[ $t->query_var ] );
    +			}
    +		}
    +
    +		// Don't allow non-publicly queryable taxonomies to be queried from the front end.
    +		if ( ! is_admin() ) {
    +			foreach ( get_taxonomies( [ 'publicly_queryable' => false ], 'objects' ) as $taxonomy => $t ) {
    +				/*
    +				 * Disallow when set to the 'taxonomy' query var.
    +				 * Non-publicly queryable taxonomies cannot register custom query vars. See register_taxonomy().
    +				 */
    +				if ( isset( $query_vars['taxonomy'] ) && $taxonomy === $query_vars['taxonomy'] ) {
    +					unset( $query_vars['taxonomy'], $query_vars['term'] );
    +				}
    +			}
    +		}
    +
    +		// Limit publicly queried post_types to those that are publicly_queryable
    +		if ( isset( $query_vars['post_type'] ) ) {
    +			$queryable_post_types = get_post_types( [ 'publicly_queryable' => true ] );
    +			if ( ! is_array( $query_vars['post_type'] ) ) {
    +				if ( ! in_array( $query_vars['post_type'], $queryable_post_types ) ) {
    +					unset( $query_vars['post_type'] );
    +				}
    +			} else {
    +				$query_vars['post_type'] = array_intersect( $query_vars['post_type'], $queryable_post_types );
    +			}
    +		}
    +
    +		// Resolve conflicts between posts with numeric slugs and date archive queries.
    +		$query_vars = wp_resolve_numeric_slug_conflicts( $query_vars );
    +
    +		foreach ( (array) $wp->private_query_vars as $var ) {
    +			if ( isset( $extra_query_vars[ $var ] ) ) {
    +				$query_vars[ $var ] = $extra_query_vars[ $var ];
    +			}
    +		}
    +
    +		/*
    +		 * If we have both the `name` query var and the post type one, then let's remove the `name` one.
    +		 */
    +		if ( array_intersect( array_keys( $query_vars ), $this->get_post_types() ) ) {
    +			unset( $query_vars['name'] );
    +		}
    +
    +		if ( ! empty( $url_query_vars ) ) {
    +			// If the URL did have query vars keep them if not overridden by our resolution.
    +			$query_vars = array_merge( $url_query_vars, $query_vars );
    +		}
    +
    +		// Prune the query vars to drop the empty `page` or `paged` ones.
    +		$query_vars = array_filter( $query_vars, static function ( $value, $key ) {
    +			return ! in_array( $key, [ 'paged', 'page' ] ) || (int) $value !== 0;
    +		}, ARRAY_FILTER_USE_BOTH );
    +
    +		/**
    +		 * Filters the array of parsed query variables after the class logic has been applied to it.
    +		 *
    +		 * Due to the costly nature of this operation the results will be cached. The logic, and this filter, will
    +		 * not run a second time for the same URL in the context of the same request.
    +		 *
    +		 * @since 4.9.11
    +		 *
    +		 * @param array  $query_vars       The parsed query vars array.
    +		 * @param array  $extra_query_vars An associative array of extra query vars that will be processed before the
    +		 *                                 WordPress defined ones.
    +		 * @param string $url              The URL to parse.
    +		 */
    +		$query_vars = apply_filters( 'tribe_rewrite_parse_query_vars', $query_vars, $extra_query_vars, $url );
    +
    +		if ( $matched_rule ) {
    +			// Since we're caching let's not cache unmatchec URLs to allow for their later, valid matching.
    +			$this->parse_request_cache[ $url ] = $query_vars;
    +		}
    +
    +		return $query_vars;
    +	}
    +
    +	/**
    +	 * Returns the "clean" version of a URL.
    +	 *
    +	 * The URL is first parsed then resolved to a canonical URL.
    +	 * As an example the URL `/events/list/?post_type=tribe_events` is "dirty" in that the `post_type` query variable
    +	 * is redundant. The clean version of the URL is `/events/list/`, where the query variable is removed.
    +	 *
    +	 * @since 4.9.11
    +	 *
    +	 * @param string $url The URL to clean.
    +	 * @param bool   $force Whether to try and use the cache or force a new URL cleaning run.
    +	 *
    +	 * @return string The cleaned URL, or the input URL if it could not be resolved to a clean one.
    +	 */
    +	public function get_clean_url( $url, $force = false ) {
    +		if ( ! $force ) {
    +			$this->warmup_cache(
    +				'clean_url',
    +				WEEK_IN_SECONDS,
    +				Listener::TRIGGER_GENERATE_REWRITE_RULES
    +			);
    +			if ( isset( $this->clean_url_cache[ $url ] ) ) {
    +				return $this->clean_url_cache[ $url ];
    +			}
    +		}
    +
    +		$parsed_vars = $this->parse_request( $url );
    +
    +		if ( empty( $parsed_vars ) ) {
    +			return home_url();
    +		}
    +
    +		$clean = $this->get_canonical_url( add_query_arg( $parsed_vars, home_url( '/' ) ), $force );
    +
    +		$this->clean_url_cache[ $url ] = $clean;
    +
    +		return $clean;
    +	}
    +
    +	/**
    +	 * Filters the localized matcher to allow integrations to provider contextual translations of the matcher.
    +	 *
    +	 * @since 5.0.17
    +	 *
    +	 * @param string|null $localized_matcher The localized matcher.
    +	 * @param string      $base              The base the localized matcher is for.
    +	 *
    +	 * @return string The localized matcher.
    +	 */
    +	protected function filter_matcher( ?string $localized_matcher, string $base ): string {
    +		return (string) apply_filters( 'tec_common_rewrite_localize_matcher', $localized_matcher, $base );
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Body_Classes.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Body_Classes.php
    new file mode 100644
    index 000000000..52c3b496f
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Body_Classes.php
    @@ -0,0 +1,88 @@
    +hooks();
    +	}
    +
    +	/**
    +	 * Set up hooks for classes.
    +	 *
    +	 * @since 4.12.6
    +	 */
    +	private function hooks() {
    +		add_filter( 'body_class', [ $this, 'add_body_classes' ] );
    +		add_filter( 'admin_body_class', [ $this, 'add_admin_body_classes' ] );
    +
    +		/**
    +		 * Allows plugins to hook into the hooks action to register their own hooks.
    +		 *
    +		 * @since 4.12.6
    +		 *
    +		 * @param Tribe\Service_Providers\Dialog $dialog
    +		 */
    +		do_action( 'tribe_body_classes_hooks', $this );
    +	}
    +
    +	/**
    +	 * Hook in and add FE body classes.
    +	 *
    +	 * @since 4.12.6
    +	 *
    +	 * @param array $classes An array of body class names.
    +	 * @return array The modified array of body class names.
    +	 */
    +	public function add_body_classes( $classes = [] ) {
    +		/** @var Body_Class_Object $body_classes */
    +		$body_classes = tribe( Body_Class_Object::class );
    +
    +		return $body_classes->add_body_classes( $classes );
    +	}
    +
    +	/**
    +	 * Hook in and add admin body classes.
    +	 *
    +	 * @since 4.12.6
    +	 *
    +	 * @param array $classes An array of body class names.
    +	 * @return array The modified array of body class names.
    +	 */
    +	public function add_admin_body_classes( $classes = [] ) {
    +		/** @var Body_Class_Object $body_classes */
    +		$body_classes = tribe( Body_Class_Object::class );
    +
    +		return $body_classes->add_admin_body_classes( $classes );
    +	}
    +
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Crons.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Crons.php
    new file mode 100644
    index 000000000..1055ca954
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Crons.php
    @@ -0,0 +1,39 @@
    + 0 ) {
    +			$panels = array_merge( $panels, $tribe_panels );
    +		}
    +
    +		return $panels;
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Dialog.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Dialog.php
    new file mode 100644
    index 000000000..df6391c8f
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Dialog.php
    @@ -0,0 +1,113 @@
    +hooks();
    +	}
    +
    +	/**
    +	 * Set up hooks for classes.
    +	 *
    +	 * @since 4.10.0
    +	 */
    +	private function hooks() {
    +		add_action( 'tribe_common_loaded', [ $this, 'register_dialog_assets' ] );
    +		add_filter( 'tribe_template_public_namespace', [ $this, 'template_public_namespace' ], 10, 2 );
    +
    +		/**
    +		 * Allows plugins to hook into the hooks action to register their own hooks
    +		 *
    +		 * @since 4.10.0
    +		 *
    +		 * @param Tribe\Service_Providers\Dialog $dialog
    +		 */
    +		do_action( 'tribe_dialog_hooks', $this );
    +	}
    +
    +	/**
    +	  * {@inheritdoc}
    +	 *
    +	 * @since  4.10.0
    +	 */
    +	public function template_public_namespace( $namespace, $obj ) {
    +		if ( ! empty( $obj->template_namespace ) && 'dialog' === $obj->template_namespace ) {
    +			array_push( $namespace, 'dialog' );
    +		}
    +
    +		return $namespace;
    +	}
    +
    +	/**
    +	 * Register assets associated with dialog
    +	 *
    +	 * @since 4.10.0
    +	 */
    +	public function register_dialog_assets() {
    +		$main = \Tribe__Main::instance();
    +
    +		tribe_asset(
    +			$main,
    +			'tribe-dialog',
    +			'dialog.css',
    +			[ 'tec-variables-full' ],
    +			[],
    +			[ 'groups' => 'tribe-dialog' ]
    +		);
    +
    +		tribe_asset(
    +			$main,
    +			'tec-a11y-dialog',
    +			'tec-a11y-dialog.js',
    +			[ 'underscore', 'tribe-common' ],
    +			[],
    +			[ 'groups' => 'tribe-dialog' ]
    +		);
    +
    +		tribe_asset(
    +			$main,
    +			'tribe-dialog-js',
    +			'dialog.js',
    +			[ 'tec-a11y-dialog' ],
    +			[],
    +			[ 'groups' => 'tribe-dialog' ]
    +		);
    +
    +		/**
    +		 * Allows plugins to hook into the assets action to register their own assets
    +		 *
    +		 * @since 4.10.0
    +		 *
    +		 * @param Tribe\Service_Providers\Dialog $dialog
    +		 */
    +		do_action( 'tribe_dialog_assets_registered', $this );
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Onboarding.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Onboarding.php
    new file mode 100644
    index 000000000..b26b29fa7
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Onboarding.php
    @@ -0,0 +1,149 @@
    +is_enabled() ) {
    +			return;
    +		}
    +
    +		$this->container->singleton( Onboarding_Main::class, Onboarding_Main::class );
    +		$this->container->singleton( static::class, static::class );
    +
    +		$this->hooks();
    +	}
    +
    +	/**
    +	 * Set up hooks for classes.
    +	 *
    +	 * @since 4.14.9
    +	 */
    +	protected function hooks() {
    +		add_action( 'tribe_common_loaded', [ $this, 'register_assets' ] );
    +
    +		add_action( 'admin_enqueue_scripts', tribe_callback( Onboarding_Main::class, 'localize_tour' ) );
    +		add_action( 'admin_enqueue_scripts', tribe_callback( Onboarding_Main::class, 'localize_hints' ) );
    +	}
    +
    +	/**
    +	 * Register assets associated with onboarding.
    +	 *
    +	 * @since 4.14.9
    +	 */
    +	public function register_assets() {
    +		$main = \Tribe__Main::instance();
    +
    +		tribe_asset(
    +			$main,
    +			'tec-intro-js',
    +			'node_modules/intro.js/intro.js',
    +			[],
    +			[ 'admin_enqueue_scripts' ],
    +			[
    +				'groups'       => self::$group_key,
    +				'conditionals' => [ $this, 'should_enqueue_assets' ],
    +			]
    +		);
    +
    +		tribe_asset(
    +			$main,
    +			'tec-intro-styles',
    +			'node_modules/intro.js/introjs.css',
    +			[],
    +			[ 'admin_enqueue_scripts' ],
    +			[
    +				'groups'       => self::$group_key,
    +				'conditionals' => [ $this, 'should_enqueue_assets' ],
    +			]
    +		);
    +
    +		tribe_asset(
    +			$main,
    +			'tec-onboarding-styles',
    +			'onboarding.css',
    +			[ 'tec-intro-styles', 'tec-variables-skeleton', 'tec-variables-full' ],
    +			[ 'admin_enqueue_scripts' ],
    +			[
    +				'groups'       => self::$group_key,
    +				'conditionals' => [ $this, 'should_enqueue_assets' ],
    +			]
    +		);
    +
    +		tribe_asset(
    +			$main,
    +			'tec-onboarding-js',
    +			'onboarding.js',
    +			[
    +				'tribe-common',
    +				'tec-intro-js',
    +			],
    +			[ 'admin_enqueue_scripts' ],
    +			[
    +				'groups'       => self::$group_key,
    +				'in_footer'    => false,
    +				'localize'     => [
    +					'name' => 'TribeOnboarding',
    +					'data' => [
    +						'hintButtonLabel' => __( 'Got it', 'tribe-common' ),
    +					],
    +				],
    +				'conditionals' => [ $this, 'should_enqueue_assets' ],
    +			]
    +		);
    +	}
    +
    +	/**
    +	 * Define if the assets for `Onboarding` should be enqueued or not.
    +	 *
    +	 * @since 4.14.9
    +	 *
    +	 * @return bool If the Onboarding assets should be enqueued or not.
    +	 */
    +	public function should_enqueue_assets() {
    +		return $this->is_enabled();
    +	}
    +
    +	/**
    +	 * Check if the onboarding is enabled or not.
    +	 *
    +	 * @since 4.14.9
    +	 *
    +	 * @return bool
    +	 */
    +	public function is_enabled() {
    +		/**
    +		 * Filter to disable tribe onboarding
    +		 *
    +		 * @since 4.14.9
    +		 *
    +		 * @param bool $disabled If we want to disable the on boarding.
    +		 */
    +		$is_enabled = (bool) apply_filters( 'tec_onboarding_enabled', false );
    +
    +		return $is_enabled && is_admin();
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/PUE.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/PUE.php
    new file mode 100644
    index 000000000..25eb50b14
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/PUE.php
    @@ -0,0 +1,52 @@
    +container->singleton( Update_Prevention::class, Update_Prevention::class );
    +
    +		// Setup all of WP hooks associated with PUE.
    +		$this->register_hooks();
    +	}
    +
    +	/**
    +	 * Registers the provider handling all the 1st level filters and actions for PUE.
    +	 *
    +	 * @since 4.9.2
    +	 */
    +	protected function register_hooks() {
    +		add_filter( 'upgrader_source_selection', [ $this, 'filter_upgrader_source_selection' ], 15, 4 );
    +	}
    +
    +	/**
    +	 * Filters the source file location for the upgrade package for the PUE Update_Prevention engine.
    +	 *
    +	 * @since  4.9.12
    +	 *
    +	 * @param string      $source        File source location.
    +	 * @param string      $remote_source Remote file source location.
    +	 * @param WP_Upgrader $upgrader      WP_Upgrader instance.
    +	 * @param array       $extra         Extra arguments passed to hooked filters.
    +	 */
    +	public function filter_upgrader_source_selection( $source, $remote_source, $upgrader, $extras ) {
    +		return $this->container->make( Update_Prevention::class )->filter_upgrader_source_selection( $source, $remote_source, $upgrader, $extras );
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Processes.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Processes.php
    new file mode 100644
    index 000000000..f7d929a48
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Processes.php
    @@ -0,0 +1,281 @@
    +context = tribe( 'context' );
    +
    +		// If the context of this request is neither AJAX or Cron bail.
    +		if ( ! ( $this->context->doing_ajax() || $this->context->doing_cron() ) ) {
    +			return;
    +		}
    +
    +		/** @var Tribe__Feature_Detection $feature_detection */
    +		$feature_detection         = tribe( 'feature-detection' );
    +		$action                    = tribe_get_request_var( 'action', false );
    +		$testing_for_async_support = $action === $this->get_handler_action( 'Tribe__Process__Tester' );
    +
    +		 // Dispatch in async mode if testing for it (w/o re-checking) or if async processes are supported.
    +		if ( $testing_for_async_support || $feature_detection->supports_async_process() ) {
    +			$this->dispatch_async();
    +
    +			return;
    +		}
    +
    +		$this->dispatch_cron();
    +	}
    +
    +	/**
    +	 * Hooks the correct handler for the action.
    +	 *
    +	 * @since 4.7.12
    +	 *
    +	 * @param string $action
    +	 */
    +	protected function hook_handler_for( $action ) {
    +		if ( null === $this->handler_actions ) {
    +			$handlers = [
    +				'Tribe__Process__Tester',
    +				'Tribe__Process__Post_Thumbnail_Setter',
    +			];
    +
    +			/**
    +			 * Filters the process handler classes the Service Provider should handle.
    +			 *
    +			 * All handlers should extend the `Tribe__Process__Handler` base class.
    +			 *
    +			 * @since 4.7.12
    +			 *
    +			 * @param array $handlers
    +			 */
    +			$handlers = array_unique( apply_filters( 'tribe_process_handlers', $handlers ) );
    +
    +			$this->handler_actions = array_combine(
    +				$handlers,
    +				array_map( [ $this, 'get_handler_action' ], $handlers )
    +			);
    +		}
    +
    +		$array_search = array_search( $action, $this->handler_actions, true );
    +
    +		if ( false === $handler_class = $array_search ) {
    +			return;
    +		}
    +
    +		// the handler will handle the hooking
    +		$this->container->make( $handler_class );
    +	}
    +
    +	/**
    +	 * Hooks the correct queue for the action.
    +	 *
    +	 * @since 4.7.12
    +	 *
    +	 * @param string $action
    +	 */
    +	protected function hook_queue_for( $action ) {
    +		if ( null === $this->queue_actions ) {
    +			$queues = [
    +				'Tribe__Promise',
    +			];
    +
    +			/**
    +			 * Filters the queue processing classes the Service Provider should handle.
    +			 *
    +			 * All queues should extend the `Tribe__Process__Queue` base class.
    +			 *
    +			 * @since 4.7.12
    +			 *
    +			 * @param array $queues An array of class names, each extending the `Tribe__Process__Queue` base class.
    +			 */
    +			$queues = array_unique( apply_filters( 'tribe_process_queues', $queues ) );
    +
    +			$all_queues_actions = array_combine(
    +				$queues,
    +				array_map( [ $this, 'get_queue_action' ], $queues )
    +			);
    +		}
    +
    +		$array_search = array_search( $action, $all_queues_actions, true );
    +
    +		if ( false === $queue_class = $array_search ) {
    +			return;
    +		}
    +
    +		// the queue will handle the hooking
    +		$this->container->make( $queue_class );
    +	}
    +
    +	/**
    +	 * Returns the action for the handler.
    +	 *
    +	 * @since 4.7.12
    +	 *
    +	 * @param string $handler_class
    +	 *
    +	 * @return string
    +	 */
    +	protected function get_handler_action( $handler_class ) {
    +		/** @var Tribe__Process__Handler handler_class */
    +		return 'tribe_process_' . call_user_func( [ $handler_class, 'action' ] );
    +	}
    +
    +	/**
    +	 * Returns the action for the queue.
    +	 *
    +	 * @since 4.7.12
    +	 *
    +	 * @param string $queue_class
    +	 *
    +	 * @return string
    +	 */
    +	protected function get_queue_action( $queue_class ) {
    +		/** @var Tribe__Process__Queue queue_class */
    +		return 'tribe_queue_' . call_user_func( [ $queue_class, 'action' ] );
    +	}
    +
    +	/**
    +	 * Dispatches the request, if in AJAX context of a valid queue processing request,
    +	 *  to the correct handler.
    +	 *
    +	 * @since 4.7.23
    +	 */
    +	protected function dispatch_async() {
    +		if ( ! (
    +			$this->context->doing_ajax()
    +			&& false !== $action = tribe_get_request_var( 'action', false )
    +		) ) {
    +			return;
    +		}
    +
    +		$this->hook_handler_for_action( $action );
    +	}
    +
    +	/**
    +	 * Start the process handlers if in the context of a cron process and
    +	 * if any is registered.
    +	 *
    +	 * @since 4.7.23
    +	 */
    +	protected function dispatch_cron() {
    +		if ( ! $this->context->doing_cron() ) {
    +			return;
    +		}
    +
    +		/*
    +		 * Here we parse the scheduled cron events to get those scheduled by a queue
    +		 * or process handler.
    +		 */
    +		$hooks = $this->get_scheduled_like( [ 'tribe_process_', 'tribe_queue_' ] );
    +
    +		if ( empty( $hooks ) ) {
    +			return;
    +		}
    +
    +		foreach ( $hooks as $action ) {
    +			/*
    +			 * Building the queue or process handler for an action will make it
    +			 * so the handler, in its `__construct` method, will hook on the action
    +			 * triggered by its cron event.
    +			 */
    +			$this->hook_handler_for_action( $action );
    +		}
    +	}
    +
    +	/**
    +	 * Hooks the correct queue or process handler for an action if any.
    +	 *
    +	 * @since 4.7.23
    +	 *
    +	 * @param string $action The action to hook the handler, or queue, for.
    +	 */
    +	protected function hook_handler_for_action( $action ) {
    +		if (
    +			0 !== strpos( $action, 'tribe_process_' )
    +			&& 0 !== strpos( $action, 'tribe_queue_' )
    +		) {
    +			return;
    +		}
    +
    +		if ( 0 === strpos( $action, 'tribe_process_' ) ) {
    +			$this->hook_handler_for( $action );
    +		} else {
    +			$this->hook_queue_for( $action );
    +		}
    +	}
    +
    +	/**
    +	 * Parses the `cron` array to return the hook names starting with a pattern.
    +	 *
    +	 * @since 4.7.23
    +	 *
    +	 * @param string|array $needles A pattern to look for or an array of patterns; if
    +	 *                              this is an array then a match will be an hook that
    +	 *                              matches at least one pattern.
    +	 *
    +	 * @return array An array of hook names matching the pattern.
    +	 */
    +	protected function get_scheduled_like( $needles ) {
    +		$cron = get_option( 'cron', false );
    +
    +		if ( empty( $cron ) ) {
    +			return [];
    +		}
    +
    +		$needles  = (array) $needles;
    +		$matching = [];
    +
    +		foreach ( $cron as $time ) {
    +			if ( ! is_array( $time ) ) {
    +				continue;
    +			}
    +			foreach ( $time as $hook => $entry ) {
    +				foreach ( $needles as $needle ) {
    +					if ( false !== strpos( $hook, $needle ) ) {
    +						$matching[] = $hook;
    +					}
    +				}
    +			}
    +		}
    +
    +		return $matching;
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Promoter.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Promoter.php
    new file mode 100644
    index 000000000..f170958df
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Promoter.php
    @@ -0,0 +1,119 @@
    +hook();
    +	}
    +
    +	/**
    +	 * Setup hooks for classes.
    +	 */
    +	private function hook() {
    +		add_action( 'template_redirect', tribe_callback( 'promoter.view', 'display_auth_check_view' ), 10, 0 );
    +		add_action( 'init', tribe_callback( 'promoter.view', 'add_rewrites' ) );
    +
    +		/** @var Tribe__Promoter__PUE $pue */
    +		$pue = tribe( 'promoter.pue' );
    +
    +		// Only add the setting if a promoter key is present.
    +		if ( $pue->has_license_key() ) {
    +			add_action(
    +				'init',
    +				tribe_callback( 'promoter.auth', 'register_setting' )
    +			);
    +		}
    +
    +		// The usage of a high priority so we can push the icon to the end
    +		add_action( 'admin_bar_menu', [ $this, 'add_promoter_logo_on_admin_bar' ], 1000 );
    +		add_action( 'tribe_common_loaded', [ $this, 'add_promoter_assets' ] );
    +	}
    +
    +	/**
    +	 * Add Admin Bar link to the promoter website
    +	 *
    +	 * @since 4.9.2
    +	 * @param $wp_admin_bar
    +	 */
    +	public function add_promoter_logo_on_admin_bar( $wp_admin_bar ) {
    +		/** @var Tribe__Promoter__PUE $pue */
    +		$pue = tribe( 'promoter.pue' );
    +		if ( ! $pue->has_license_key() ) {
    +			return;
    +		}
    +
    +		/**
    +		 * It uses and inline SVG as will provider more flexibility for styling so we can change
    +		 * the fill of the path property of the SVG so we can match the WP installations.
    +		 */
    +		$args = [
    +			'id'    => 'promoter-admin-bar',
    +			'title' => sprintf(
    +				"%s%s",
    +				'',
    +				'Promoter'
    +			),
    +			'href'  => 'https://promoter.theeventscalendar.com/',
    +			'meta'  => [
    +				'target' => '_blank',
    +				'class'  => 'promoter-admin-bar-link',
    +			],
    +		];
    +		$wp_admin_bar->add_node( $args );
    +	}
    +
    +	/**
    +	 * Register assets associated with promoter
    +	 *
    +	 * @since 4.9.2
    +	 */
    +	public function add_promoter_assets() {
    +		tribe_asset(
    +			Tribe__Main::instance(),
    +			'promoter',
    +			'promoter.css',
    +			[],
    +			[ 'wp_enqueue_scripts', 'admin_enqueue_scripts' ],
    +			[
    +				'conditionals' => [ $this, 'should_load_promoter_styles' ],
    +			]
    +		);
    +	}
    +
    +	/**
    +	 * Only load the styles related to promoter if user is logged in and there's a valid license
    +	 * for promoter
    +	 *
    +	 * @since 4.9.2
    +	 *
    +	 * @return bool
    +	 */
    +	public function should_load_promoter_styles() {
    +		return is_user_logged_in() && tribe( 'promoter.pue' )->has_license_key();
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Shortcodes.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Shortcodes.php
    new file mode 100644
    index 000000000..b952ddaa0
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Shortcodes.php
    @@ -0,0 +1,123 @@
    +container->singleton( Manager::class, Manager::class );
    +		$this->container->singleton(
    +			'shortcode.manager',
    +			function() {
    +				return $this->container->make( Manager::class );
    +			}
    +		);
    +
    +		$this->register_hooks();
    +		$this->register_assets();
    +
    +		$this->container->singleton( static::class, $this );
    +
    +	}
    +
    +	/**
    +	 * Static method wrapper around a filter to allow full deactivation of this provider
    +	 *
    +	 * @since 4.12.0
    +	 *
    +	 * @return boolean If this service provider is active.
    +	 */
    +	public static function is_active() {
    +		/**
    +		 * Allows filtering to deactivate all shortcodes loading.
    +		 *
    +		 * @since 4.12.0
    +		 *
    +		 * @param boolean $is_active If shortcodes should be loaded or not.
    +		 */
    +		return apply_filters( 'tribe_shortcodes_is_active', true );
    +	}
    +
    +	/**
    +	 * Register all the assets associated with this service provider.
    +	 *
    +	 * @since 4.12.0
    +	 */
    +	protected function register_assets() {
    +
    +	}
    +
    +	/**
    +	 * Registers the provider handling all the 1st level filters and actions for this service provider.
    +	 *
    +	 * @since 4.12.0
    +	 */
    +	protected function register_hooks() {
    +		add_action( 'init', [ $this, 'action_add_shortcodes' ], 20 );
    +		add_filter( 'pre_do_shortcode_tag', [ $this, 'filter_pre_do_shortcode_tag' ], 10, 4 );
    +		add_filter( 'do_shortcode_tag', [ $this, 'filter_do_shortcode_tag' ], 10, 4 );
    +	}
    +
    +	/**
    +	 * Adds the new shortcodes, this normally will trigger on `init@P20` due to how we the
    +	 * v1 is added on `init@P10` and we remove them on `init@P15`.
    +	 *
    +	 * It's important to leave gaps on priority for better injection.
    +	 *
    +	 * @since 4.12.0
    +	 */
    +	public function action_add_shortcodes() {
    +		$this->container->make( Manager::class )->add_shortcodes();
    +	}
    +
    +	/**
    +	 * Filters `pre_do_shortcode_tag` to mark that a tribe shortcode is currently being done.
    +	 *
    +	 * @since 4.12.9
    +	 *
    +	 * @param bool|string $return      Short-circuit return value. Either false or the value to replace the shortcode with.
    +	 * @param string      $tag         Shortcode name.
    +	 * @param array       $attr        Shortcode attributes array,
    +	 * @param array       $m           Regular expression match array.
    +	 *
    +	 * @return bool|string Short-circuit return value.
    +	 */
    +	public function filter_pre_do_shortcode_tag( $false, $tag, $attr, $m ) {
    +		return $this->container->make( Manager::class )->filter_pre_do_shortcode_tag( $false, $tag, $attr, $m );
    +	}
    +
    +	/**
    +	 * * Filters `do_shortcode_tag` to mark that a tribe shortcode is complete, and remove it from the current list.
    +	 *
    +	 * @since 4.12.9
    +	 *
    +	 * @param string       $output Shortcode output.
    +	 * @param string       $tag    Shortcode name.
    +	 * @param array|string $attr   Shortcode attributes array or empty string.
    +	 * @param array        $m      Regular expression match array.
    +	 *
    +	 * @return string Shortcode output.
    +	 */
    +	public function filter_do_shortcode_tag( $output, $tag, $attr, $m ) {
    +		return $this->container->make( Manager::class )->filter_do_shortcode_tag( $output, $tag, $attr, $m );
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Tooltip.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Tooltip.php
    new file mode 100644
    index 000000000..dd5ef6d19
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Tooltip.php
    @@ -0,0 +1,67 @@
    +hook();
    +	}
    +
    +	/**
    +	 * Setup hooks for classes.
    +	 *
    +	 * @since 4.9.8
    +	 */
    +	private function hook() {
    +		add_action( 'tribe_common_loaded', [ $this, 'add_tooltip_assets' ] );
    +	}
    +
    +	/**
    +	 * Register assets associated with tooltip
    +	 *
    +	 * @since 4.9.8
    +	 */
    +	public function add_tooltip_assets() {
    +		$main = \Tribe__Main::instance();
    +
    +		tribe_asset(
    +			$main,
    +			'tribe-tooltip',
    +			'tooltip.css',
    +			[ 'tribe-common-skeleton-style' ],
    +			null,
    +			[
    +				'groups' => 'tribe-tooltip',
    +			]
    +		);
    +
    +		tribe_asset(
    +			$main,
    +			'tribe-tooltip-js',
    +			'tooltip.js',
    +			[ 'jquery', 'tribe-common' ],
    +			null,
    +			[
    +				'groups' => 'tribe-tooltip'
    +			]
    +		);
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Widgets.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Widgets.php
    new file mode 100644
    index 000000000..2a36d8f63
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Service_Providers/Widgets.php
    @@ -0,0 +1,79 @@
    +container->singleton( Manager::class, Manager::class );
    +		$this->container->singleton(
    +			'widget.manager',
    +			function() {
    +				return $this->container->make( Manager::class );
    +			}
    +		);
    +
    +		$this->register_hooks();
    +
    +		$this->container->singleton( static::class, $this );
    +		$this->container->singleton( 'widgets', $this );
    +	}
    +
    +	/**
    +	 * Static method wrapper around a filter to allow full deactivation of this provider.
    +	 *
    +	 * @since 4.12.12
    +	 *
    +	 * @return boolean If this service provider is active.
    +	 */
    +	public static function is_active() {
    +		/**
    +		 * Allows filtering to prevent all Tribe widgets from loading.
    +		 *
    +		 * @since 4.12.12
    +		 *
    +		 * @param boolean $is_active If widgets should be loaded or not.
    +		 */
    +		return apply_filters( 'tribe_widgets_is_active', true );
    +	}
    +
    +	/**
    +	 * Registers the provider handling all the 1st level filters and actions for this service provider.
    +	 *
    +	 * @since 4.12.12
    +	 */
    +	protected function register_hooks() {
    +		add_action( 'widgets_init', [ $this, 'register_widgets_with_wp' ], 20 );
    +	}
    +
    +	/**
    +	 * Adds the new widgets.
    +	 *
    +	 * This triggers on `init@P20` due to how v1 is added on `init@P10` and removed on `init@P15`,
    +	 * as it's important to leave gaps on priority for future flexibility.
    +	 *
    +	 * @since 4.12.12
    +	 */
    +	public function register_widgets_with_wp() {
    +		$this->container->make( Manager::class )->register_widgets_with_wp();
    +	}
    +}
    diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Settings.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Settings.php
    new file mode 100644
    index 000000000..d5880cfd1
    --- /dev/null
    +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Settings.php
    @@ -0,0 +1,819 @@
    + => array(...) ]
    +		 *
    +		 * @var array
    +		 */
    +		protected $fields_for_save = [];
    +
    +		/**
    +		 * An array that contains the fields that are currently being validated.
    +		 *
    +		 * @var array
    +		 */
    +		protected $current_fields = [];
    +
    +		/**
    +		 * Static Singleton Factory Method.
    +		 *
    +		 * @return Tribe__Settings
    +		 */
    +		public static function instance() {
    +			return tribe( 'settings' );
    +		}
    +
    +		/**
    +		 * Class constructor.
    +		 *
    +		 * @return void
    +		 */
    +		public function __construct() {
    +
    +			// Set instance variables.
    +			$this->menuName    = apply_filters( 'tribe_settings_menu_name', esc_html__( 'Events', 'tribe-common' ) );
    +			$this->requiredCap = apply_filters( 'tribe_settings_req_cap', 'manage_options' );
    +			$this->adminSlug   = apply_filters( 'tribe_settings_admin_slug', 'tribe-common' );
    +			$this->help_slug   = apply_filters( 'tribe_settings_help_slug', 'tribe-common-help' );
    +			$this->errors      = get_option( 'tribe_settings_errors', [] );
    +			$this->major_error = get_option( 'tribe_settings_major_error', false );
    +			$this->sent_data   = get_option( 'tribe_settings_sent_data', [] );
    +			$this->validated   = [];
    +			$this->defaultTab  = null;
    +			$this->currentTab  = null;
    +
    +			$this->hook();
    +		}
    +
    +		/**
    +		 * Hooks the actions and filters required for the class to work.
    +		 */
    +		public function hook() {
    +			// Run actions & filters.
    +			add_action( 'admin_init', [ $this, 'initTabs' ] );
    +			add_action( 'tribe_settings_below_tabs', [ $this, 'displayErrors' ] );
    +			add_action( 'tribe_settings_below_tabs', [ $this, 'displaySuccess' ] );
    +		}
    +
    +		/**
    +		 * Determines whether or not the full admin pages should be initialized.
    +		 *
    +		 * @return boolean
    +		 */
    +		public function should_setup_pages() {
    +			// @todo: Deprecate this and update where needed.
    +			return true;
    +		}
    +
    +		/**
    +		 * create the main option page
    +		 *
    +		 * @return void
    +		 */
    +		public function addPage() {
    +			_deprecated_function( __METHOD__, '4.15.0' );
    +		}
    +
    +		/**
    +		 * create the network options page
    +		 *
    +		 * @return void
    +		 */
    +		public function addNetworkPage() {
    +			_deprecated_function( __METHOD__, '4.15.0' );
    +		}
    +
    +		/**
    +		 * Init all the tabs.
    +		 *
    +		 * @return void
    +		 */
    +		public function initTabs() {
    +			$admin_pages = tribe( 'admin.pages' );
    +			$admin_page  = $admin_pages->get_current_page();
    +
    +			if ( empty( $admin_pages->has_tabs( $admin_page ) ) ) {
    +				return;
    +			}
    +
    +			// Load settings tab-specific helpers and enhancements.
    +			Tribe__Admin__Live_Date_Preview::instance();
    +
    +			do_action( 'tribe_settings_do_tabs', $admin_page ); // This is the hook to use to add new tabs.
    +
    +			$this->tabs       = (array) apply_filters( 'tribe_settings_tabs', [], $admin_page );
    +			$this->allTabs    = (array) apply_filters( 'tribe_settings_all_tabs', [], $admin_page );
    +			$this->noSaveTabs = (array) apply_filters( 'tribe_settings_no_save_tabs', [], $admin_page );
    +
    +			if ( is_network_admin() ) {
    +				$this->defaultTab = apply_filters( 'tribe_settings_default_tab_network', 'network', $admin_page );
    +				$current_tab      = ( isset( $_GET['tab'] ) && $_GET['tab'] ) ? esc_attr( $_GET['tab'] ) : $this->defaultTab;
    +				$this->currentTab = apply_filters( 'tribe_settings_current_tab', $current_tab, $admin_page );
    +				$this->url        = $this->get_tab_url( $this->currentTab );
    +			} else {
    +				$tabs_keys        = array_keys( $this->tabs );
    +				$default_tab      = apply_filters( 'tribe_settings_default_tab', 'general', $admin_page );
    +				$this->defaultTab = in_array( $default_tab, $tabs_keys ) ? $default_tab : $tabs_keys[0];
    +				$this->currentTab = apply_filters( 'tribe_settings_current_tab', ( isset( $_GET['tab'] ) && $_GET['tab'] ) ? esc_attr( $_GET['tab'] ) : $this->defaultTab );
    +				$this->url        = $this->get_tab_url( $this->currentTab );
    +			}
    +
    +			$this->fields_for_save = (array) apply_filters( 'tribe_settings_fields', [], $admin_page );
    +			do_action( 'tribe_settings_after_do_tabs', $admin_page );
    +			$this->fields = (array) apply_filters( 'tribe_settings_fields', [], $admin_page );
    +			$this->validate();
    +		}
    +
    +		/**
    +		 * Get the current settings page URL
    +		 *
    +		 * @since 4.15.0
    +		 *
    +		 * @return string The current settings page URL.
    +		 */
    +		public function get_settings_page_url( array $args = [] ) {
    +			$admin_pages = tribe( 'admin.pages' );
    +			$page        = $admin_pages->get_current_page();
    +			$tab         = tribe_get_request_var( 'tab', $this->defaultTab );
    +			$defaults    = [
    +				'page' => $page,
    +				'tab'  => $tab,
    +			];
    +
    +			// Allow the link to be "changed" on the fly.
    +			$args = wp_parse_args( $args, $defaults );
    +
    +			$url = add_query_arg(
    +				$args,
    +				is_network_admin() ? network_admin_url( 'settings.php' ) : admin_url( 'admin.php' )
    +			);
    +
    +			return apply_filters( 'tribe_settings_page_url', $url, $page, $tab );
    +		}
    +
    +		/**
    +		 * Get the settings page title.
    +		 *
    +		 * @since 4.15.0
    +		 *
    +		 * @param string $admin_page The admin page ID.
    +		 * @return string The settings page title.
    +		 */
    +		public function get_page_title( $admin_page ) {
    +			$page_title = sprintf(
    +				// Translators: %s is the name of the menu item.
    +				__( '%s Settings', 'tribe-common' ),
    +				$this->menuName
    +			);
    +
    +			/**
    +			 * Filter the tribe settings page title.
    +			 *
    +			 * @since 4.15.0
    +			 *
    +			 * @param string $page_title The settings page title.
    +			 * @param string $admin_page The admin page ID.
    +			 */
    +			return apply_filters( 'tribe_settings_page_title', $page_title, $admin_page );
    +		}
    +
    +		/**
    +		 * Generate the main option page.
    +		 * includes the view file.
    +		 *
    +		 * @since 4.15.0 Add the current page as parameter for the actions.
    +		 *
    +		 * @return void
    +		 */
    +		public function generatePage() {
    +			$admin_pages = tribe( 'admin.pages' );
    +			$admin_page  = $admin_pages->get_current_page();
    +
    +			do_action( 'tribe_settings_top', $admin_page );
    +			echo '
    '; + echo '

    '; + echo esc_html( $this->get_page_title( $admin_page ) ); + echo '

    '; + do_action( 'tribe_settings_above_tabs' ); + $this->generateTabs( $this->currentTab, $admin_page ); + do_action( 'tribe_settings_below_tabs' ); + do_action( 'tribe_settings_below_tabs_tab_' . $this->currentTab, $admin_page ); + echo '
    '; + do_action( 'tribe_settings_above_form_element' ); + do_action( 'tribe_settings_above_form_element_tab_' . $this->currentTab, $admin_page ); + echo apply_filters( 'tribe_settings_form_element_tab_' . $this->currentTab, '
    ' ); + do_action( 'tribe_settings_before_content' ); + do_action( 'tribe_settings_before_content_tab_' . $this->currentTab ); + do_action( 'tribe_settings_content_tab_' . $this->currentTab ); + if ( ! has_action( 'tribe_settings_content_tab_' . $this->currentTab ) ) { + echo '

    ' . esc_html__( "You've requested a non-existent tab.", 'tribe-common' ) . '

    '; + } + do_action( 'tribe_settings_after_content_tab_' . $this->currentTab ); + do_action( 'tribe_settings_after_content', $this->currentTab ); + if ( has_action( 'tribe_settings_content_tab_' . $this->currentTab ) && ! in_array( $this->currentTab, $this->noSaveTabs ) ) { + wp_nonce_field( 'saving', 'tribe-save-settings' ); + echo '
    '; + echo ''; + echo ''; + } + echo apply_filters( 'tribe_settings_closing_form_element', '
    ' ); + do_action( 'tribe_settings_after_form_element' ); + do_action( 'tribe_settings_after_form_element_tab_' . $this->currentTab, $admin_page ); + echo '
    '; + do_action( 'tribe_settings_after_form_div' ); + echo '
    '; + do_action( 'tribe_settings_bottom' ); + } + + /** + * Generate the tabs in the settings screen. + * + * @return void + */ + public function generateTabs() { + if ( is_array( $this->tabs ) && ! empty( $this->tabs ) ) { + echo ''; + } + } + + /** + * Generate the URL for a tab. + * + * @since 4.15.0 + * + * @param string $tab The tab slug. + * + * @return string $url The URL. + */ + public function get_tab_url( $tab ) { + $admin_pages = tribe( 'admin.pages' ); + $admin_page = $admin_pages->get_current_page(); + $wp_page = is_network_admin() ? network_admin_url( 'settings.php' ) : admin_url( 'admin.php' ); + $url = add_query_arg( + [ + 'page' => $admin_page, + 'tab' => $tab, + ], + $wp_page + ); + + $url = apply_filters( 'tec_settings_tab_url', $url, $admin_page, $tab ); + + return $url; + } + + /** + * validate the settings + * + * @return void + */ + public function validate() { + $admin_pages = tribe( 'admin.pages' ); + $admin_page = $admin_pages->get_current_page(); + + do_action( 'tribe_settings_validate_before_checks', $admin_page ); + + // Check that the right POST && variables are set. + if ( isset( $_POST['tribeSaveSettings'] ) && isset( $_POST['current-settings-tab'] ) ) { + // check permissions + if ( ! current_user_can( AdminPages::get_capability() ) ) { + $this->errors[] = esc_html__( "You don't have permission to do that.", 'tribe-common' ); + $this->major_error = true; + } + + // Check the nonce. + if ( ! wp_verify_nonce( $_POST['tribe-save-settings'], 'saving' ) ) { + $this->errors[] = esc_html__( 'The request was sent insecurely.', 'tribe-common' ); + $this->major_error = true; + } + + // check that the request originated from the current tab. + if ( $_POST['current-settings-tab'] != $this->currentTab ) { + $this->errors[] = esc_html__( "The request wasn't sent from this tab.", 'tribe-common' ); + $this->major_error = true; + } + + // Bail if we have errors. + if ( count( $this->errors ) ) { + remove_action( 'shutdown', [ $this, 'deleteOptions' ] ); + add_option( 'tribe_settings_errors', $this->errors ); + add_option( 'tribe_settings_major_error', $this->major_error ); + wp_redirect( $this->get_settings_page_url() ); + exit; + } + + // Some hooks. + do_action( 'tribe_settings_validate', $admin_page ); + do_action( 'tribe_settings_validate_tab_' . $this->currentTab, $admin_page ); + + // Set the current tab and current fields. + $tab = $this->currentTab; + $fields = $this->current_fields = $this->fields_for_save[ $tab ]; + + if ( is_array( $fields ) ) { + // Loop through the fields and validate them. + foreach ( $fields as $field_id => $field ) { + // Get the value. + $value = ( isset( $_POST[ $field_id ] ) ) ? $_POST[ $field_id ] : null; + $value = apply_filters( 'tribe_settings_validate_field_value', $value, $field_id, $field ); + + // Make sure it has validation set up for it, else do nothing. + if ( + ( ! isset( $field['conditional'] ) || $field['conditional'] ) + && ( ! empty( $field['validation_type'] ) || ! empty( $field['validation_callback'] ) ) + ) { + // Some hooks. + do_action( 'tribe_settings_validate_field', $field_id, $value, $field ); + do_action( 'tribe_settings_validate_field_' . $field_id, $value, $field ); + + // Validate this field. + $validate = new Tribe__Validate( $field_id, $field, $value ); + + if ( isset( $validate->result->error ) ) { + // Uh oh; validation failed. + $this->errors[ $field_id ] = $validate->result->error; + } elseif ( $validate->result->valid ) { + // Validation passed. + $this->validated[ $field_id ] = new stdClass; + $this->validated[ $field_id ]->field = $validate->field; + $this->validated[ $field_id ]->value = $validate->value; + } + } + } + + // Do not generate errors for dependent fields that should not show. + if ( ! empty( $this->errors ) ) { + $keep = array_filter( array_keys( $this->errors ), [ $this, 'dependency_checks' ] ); + $compare = empty( $keep ) ? [] : array_combine( $keep, $keep ); + $this->errors = array_intersect_key( $this->errors, $compare ); + } + + // Run the saving method. + $this->save(); + } + } + } + + /** + * Save the settings. + * + * @since 4.15.0 Add the current page as parameter for the actions. + * + * @return void + */ + public function save() { + $admin_pages = tribe( 'admin.pages' ); + $admin_page = $admin_pages->get_current_page(); + + // Some hooks. + do_action( 'tribe_settings_save', $admin_page ); + do_action( 'tribe_settings_save_tab_' . $this->currentTab, $admin_page ); + + // We'll need this later. + $parent_options = []; + + /** + * loop through each validated option and either + * save it as is or figure out its parent option ID + * (in that case, it's a serialized option array and + * will be saved in the next loop) + */ + if ( ! empty( $this->validated ) ) { + foreach ( $this->validated as $field_id => $validated_field ) { + // Get the value and filter it. + $value = $validated_field->value; + $value = apply_filters( 'tribe_settings_save_field_value', $value, $field_id, $validated_field ); + + // Figure out the parent option [could be set to false] and filter it. + if ( is_network_admin() ) { + $parent_option = ( isset( $validated_field->field['parent_option'] ) ) ? $validated_field->field['parent_option'] : Tribe__Main::OPTIONNAMENETWORK; + } + if ( ! is_network_admin() ) { + $parent_option = ( isset( $validated_field->field['parent_option'] ) ) ? $validated_field->field['parent_option'] : Tribe__Main::OPTIONNAME; + } + + $parent_option = apply_filters( 'tribe_settings_save_field_parent_option', $parent_option, $field_id ); + $network_option = isset( $validated_field->field['network_option'] ) ? (bool) $validated_field->field['network_option'] : false; + + // Some hooks. + do_action( 'tribe_settings_save_field', $field_id, $value, $validated_field ); + do_action( 'tribe_settings_save_field_' . $field_id, $value, $validated_field ); + + if ( ! $parent_option ) { + if ( $network_option || is_network_admin() ) { + update_site_option( $field_id, $value ); + } else { + update_option( $field_id, $value ); + } + } else { + // Set the parent option. + $parent_options[ $parent_option ][ $field_id ] = $value; + } + } + } + + /** + * loop through parent option arrays + * and save them + * NOTE: in the case of the main option Tribe Options, + * this will save using the Tribe__Settings_Manager::set_options method. + */ + foreach ( $parent_options as $option_id => $new_options ) { + // Get the old options. + if ( is_network_admin() ) { + $old_options = (array) get_site_option( $option_id ); + } else { + $old_options = (array) get_option( $option_id ); + } + + // Set the options by parsing old + new and filter that. + $options = apply_filters( 'tribe_settings_save_option_array', wp_parse_args( $new_options, $old_options ), $option_id ); + + if ( $option_id == Tribe__Main::OPTIONNAME ) { + // Save using the Tribe__Settings_Manager method. + Tribe__Settings_Manager::set_options( $options ); + } elseif ( $option_id == Tribe__Main::OPTIONNAMENETWORK ) { + Tribe__Settings_Manager::set_network_options( $options ); + } else { + // Save using regular WP method. + if ( is_network_admin() ) { + update_site_option( $option_id, $options ); + } else { + update_option( $option_id, $options ); + } + } + } + + do_action( 'tribe_settings_after_save', $admin_page ); + do_action( 'tribe_settings_after_save_' . $this->currentTab, $admin_page ); + remove_action( 'shutdown', [ $this, 'deleteOptions' ] ); + add_option( 'tribe_settings_sent_data', $_POST ); + add_option( 'tribe_settings_errors', $this->errors ); + add_option( 'tribe_settings_major_error', $this->major_error ); + wp_redirect( esc_url_raw( add_query_arg( [ 'saved' => true ], $this->get_settings_page_url() ) ) ); + exit; + } + + /** + * Display errors, if any, after saving. + * + * @return void + */ + public function displayErrors() { + // Fetch the errors and filter them. + $errors = (array) apply_filters( 'tribe_settings_display_errors', $this->errors ); + $count = apply_filters( 'tribe_settings_count_errors', count( $errors ) ); + + // Bail if we don't have errors. + if ( ! apply_filters( 'tribe_settings_display_errors_or_not', ( $count > 0 ) ) ) { + return; + } + + $output = '

    '; + $output .= esc_html__( 'Your form had the following errors:', 'tribe-common' ); + $output .= '

      '; + + // Loop through each error. + foreach ( $errors as $error ) { + $output .= '
    • ' . (string) $error . '
    • '; + } + + if ( count( $errors ) ) { + $message = ( isset( $this->major_error ) && $this->major_error ) + ? esc_html__( 'None of your settings were saved. Please try again.' ) + : esc_html( _n( 'The above setting was not saved. Other settings were successfully saved.', 'The above settings were not saved. Other settings were successfully saved.', $count, 'tribe-common' ) ); + } + + $output .= '

    ' . $message . '

    '; + + // Final output, filtered of course. + echo apply_filters( 'tribe_settings_error_message', $output ); + } + + /** + * Display success message after saving. + * + * @return void + */ + public function displaySuccess() { + $errors = (array) apply_filters( 'tribe_settings_display_errors', $this->errors ); + $count = apply_filters( 'tribe_settings_count_errors', count( $errors ) ); + + // Are we coming from the saving place? + if ( isset( $_GET['saved'] ) && ! apply_filters( 'tribe_settings_display_errors_or_not', ( $count > 0 ) ) ) { + // output the filtered message + $message = esc_html__( 'Settings saved.', 'tribe-common' ); + $output = '

    ' . $message . '

    '; + echo apply_filters( 'tribe_settings_success_message', $output, $this->currentTab ); + } + + // Delete Temporary Options After Display Errors and Success. + $this->deleteOptions(); + } + + /** + * Delete temporary options. + * + * @return void + */ + public function deleteOptions() { + delete_option( 'tribe_settings_errors' ); + delete_option( 'tribe_settings_major_error' ); + delete_option( 'tribe_settings_sent_data' ); + } + + /** + * Returns the main admin settings URL. + * + * @return string + */ + public function get_url( array $args = [] ) { + $defaults = [ + 'page' => $this->adminSlug, + 'parent' => self::$parent_page, + ]; + + // Allow the link to be "changed" on the fly + $args = wp_parse_args( $args, $defaults ); + + $url = admin_url( $args['parent'] ); + + // keep the resulting URL args clean + unset( $args['parent'] ); + + return apply_filters( 'tribe_settings_url', add_query_arg( $args, $url ), $args, $url ); + } + + /** + * The "slug" used for adding submenu pages + * + * @return string + */ + public function get_parent_slug() { + $slug = self::$parent_page; + + // If we don't have an event post type, then we can just use the tribe-common slug. + if ( 'edit.php' === $slug || 'admin.php?page=tribe-common' === $slug ) { + $slug = self::$parent_slug; + } + + return $slug; + } + + /** + * @return string + */ + public function get_help_slug() { + return $this->help_slug; + } + + /** + * Determines whether or not the network admin pages should be initialized. + * + * When running in parallel with TEC 3.12.4, TEC should be relied on to handle the admin screens + * that version of TEC (and lower) is tribe-common ignorant. Therefore, tribe-common has to be + * the smarter, more lenient codebase. + * Beyond this at least one of the two "root" plugins (The Events Calendar and Event Tickets) + * should be network activated to add the page. + * + * @return boolean + */ + public function should_setup_network_pages() { + $root_plugin_is_mu_activated = array_sum( array_map( 'is_plugin_active_for_network', $this->root_plugins ) ) >= 1; + + if ( ! $root_plugin_is_mu_activated ) { + return false; + } + + if ( ! class_exists( 'Tribe__Events__Main' ) ) { + return true; + } + + if ( version_compare( Tribe__Events__Main::VERSION, '4.0beta', '>=' ) ) { + return true; + } + + return false; + + } + + /** + * Sets what `common` should consider root plugins. + * + * @param array $root_plugins An array of plugins in the `/` format. + */ + public function set_root_plugins( array $root_plugins ) { + $this->root_plugins = $root_plugins; + } + + /** + * Whether the specified field dependency condition is valid or not depending on + * its parent field value. + * + * @since 4.7.7 + * + * @param string $field_id The id of the field that might be removed. + * + * @return bool `true` if the field dependency condition is valid, `false` if the field + * dependency condition is not valid. + */ + protected function dependency_checks( $field_id ) { + $does_not_exist = ! array_key_exists( $field_id, $this->current_fields ); + + if ( $does_not_exist ) { + return false; + } + + $has_no_dependency = ! isset( $this->current_fields[ $field_id ]['validate_if'] ); + + if ( $has_no_dependency ) { + return true; + } + + $condition = $this->current_fields[ $field_id ]['validate_if']; + + if ( $condition instanceof Tribe__Field_Conditional ) { + $parent_field = Tribe__Utils__Array::get( $this->validated, $condition->depends_on(), null ); + + return $condition->check( $parent_field->value, $this->current_fields ); + } + + return is_callable( $condition ) + ? call_user_func( $condition, $this->current_fields ) + : true == $condition; + } + } // end class +} // endif class_exists diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Settings_Manager.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Settings_Manager.php new file mode 100644 index 000000000..74f166cf3 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Settings_Manager.php @@ -0,0 +1,355 @@ +add_hooks(); + + // Load multisite defaults. + if ( is_multisite() ) { + $tribe_events_mu_defaults = []; + if ( file_exists( WP_CONTENT_DIR . '/tribe-events-mu-defaults.php' ) ) { + require_once WP_CONTENT_DIR . '/tribe-events-mu-defaults.php'; + } + self::$tribe_events_mu_defaults = apply_filters( 'tribe_events_mu_defaults', $tribe_events_mu_defaults ); + } + } + + public function add_hooks() { + // option pages + add_action( '_network_admin_menu', [ $this, 'init_options' ] ); + add_action( '_admin_menu', [ $this, 'init_options' ] ); + + add_action( 'tribe_settings_do_tabs', [ $this, 'do_setting_tabs' ] ); + add_action( 'tribe_settings_validate_tab_network', [ $this, 'save_all_tabs_hidden' ] ); + add_action( 'updated_option', [ $this, 'update_options_cache' ], 10, 3 ); + } + + /** + * For performance reasons our options are saved in memory, but we need to make sure we update it when WordPress + * updates the variable directly. + * + * @since 4.11.0 + * + * @param string $option Name of the updated option. + * @param mixed $old_value The old option value. + * @param mixed $value The new option value. + * + * @return void + */ + public function update_options_cache( $option, $old_value, $value ) { + // Bail when not our option. + if ( Tribe__Main::OPTIONNAME !== $option ) { + return; + } + + tribe_set_var( self::OPTION_CACHE_VAR_NAME, $value ); + } + + /** + * Init the settings API and add a hook to add your own setting tabs + * + * @return void + */ + public function init_options() { + Tribe__Settings::instance(); + } + + /** + * Create setting tabs + * + * @return void + */ + public function do_setting_tabs() { + // Make sure Thickbox is available regardless of which admin page we're on + add_thickbox(); + + $this->do_licenses_tab(); + } + + /** + * Get all options for the Events Calendar + * + * @return array of options + */ + public static function get_options() { + $options = tribe_get_var( self::OPTION_CACHE_VAR_NAME, [] ); + + if ( empty( $options ) ) { + $options = (array) get_option( Tribe__Main::OPTIONNAME, [] ); + + tribe_set_var( self::OPTION_CACHE_VAR_NAME, $options ); + } + + return $options; + } + + /** + * Get value for a specific option + * + * @param string $option_name name of option + * @param string $default default value + * + * @return mixed results of option query + */ + public static function get_option( $option_name, $default = '' ) { + if ( ! $option_name ) { + return null; + } + $options = static::get_options(); + + $option = $default; + if ( array_key_exists( $option_name, $options ) ) { + $option = $options[ $option_name ]; + } elseif ( is_multisite() && isset( self::$tribe_events_mu_defaults ) && is_array( self::$tribe_events_mu_defaults ) && in_array( $option_name, array_keys( self::$tribe_events_mu_defaults ) ) ) { + $option = self::$tribe_events_mu_defaults[ $option_name ]; + } + + return apply_filters( 'tribe_get_single_option', $option, $default, $option_name ); + } + + /** + * Saves the options for the plugin + * + * @param array $options formatted the same as from get_options() + * @param bool $apply_filters + * + * @return bool + */ + public static function set_options( $options, $apply_filters = true ) { + if ( ! is_array( $options ) ) { + return false; + } + if ( true === $apply_filters ) { + $options = apply_filters( 'tribe-events-save-options', $options ); + } + $updated = update_option( Tribe__Main::OPTIONNAME, $options ); + + if ( $updated ) { + tribe_set_var( self::OPTION_CACHE_VAR_NAME, $options ); + } + + return $updated; + } + + /** + * Set an option + * + * @param string $name The option key or 'name'. + * @param mixed $value The value we want to set. + * + * @return bool + */ + public static function set_option( $name, $value ) { + $options = self::get_options(); + $options[ $name ] = $value; + + return static::set_options( $options ); + } + + /** + * Remove an option. Actually remove (unset), as opposed to setting to null/empty string/etc. + * + * @since 4.14.13 + * + * @param string $name The option key or 'name'. + * + * @return bool + */ + public static function remove_option( $name ) { + $options = self::get_options(); + unset( $options[ $name ] ); + + return static::set_options( $options ); + } + + /** + * Get all network options for the Events Calendar + * + * @return array of options + * @TODO add force option, implement in setNetworkOptions + */ + public static function get_network_options() { + if ( ! isset( self::$network_options ) ) { + $options = get_site_option( Tribe__Main::OPTIONNAMENETWORK, [] ); + self::$network_options = apply_filters( 'tribe_get_network_options', $options ); + } + + return self::$network_options; + } + + /** + * Get value for a specific network option + * + * @param string $option_name name of option + * @param string $default default value + * + * @return mixed results of option query + */ + public static function get_network_option( $option_name, $default = '' ) { + if ( ! $option_name ) { + return null; + } + + if ( ! isset( self::$network_options ) ) { + self::get_network_options(); + } + + if ( isset( self::$network_options[ $option_name ] ) ) { + $option = self::$network_options[ $option_name ]; + } else { + $option = $default; + } + + return apply_filters( 'tribe_get_single_network_option', $option, $default ); + } + + /** + * Saves the network options for the plugin + * + * @param array $options formatted the same as from get_options() + * @param bool $apply_filters + * + * @return void + */ + public static function set_network_options( $options, $apply_filters = true ) { + if ( ! is_array( $options ) ) { + return; + } + + if ( + isset( $_POST['tribeSaveSettings'] ) + && isset( $_POST['current-settings-tab'] ) + ) { + $options['hideSettingsTabs'] = tribe_get_request_var( 'hideSettingsTabs', [] ); + } + + $admin_pages = tribe( 'admin.pages' ); + $admin_page = $admin_pages->get_current_page(); + + if ( true === $apply_filters ) { + $options = apply_filters( 'tribe-events-save-network-options', $options, $admin_page ); + } + + if ( update_site_option( Tribe__Main::OPTIONNAMENETWORK, $options ) ) { + self::$network_options = apply_filters( 'tribe_get_network_options', $options ); + } else { + self::$network_options = self::get_network_options(); + } + } + + /** + * Add the network admin options page + * + * @return void + */ + public static function add_network_options_page() { + _deprecated_function( __METHOD__, '4.15.0' ); + } + + /** + * Render network admin options view + * + * @return void + */ + public static function do_network_settings_tab() { + _deprecated_function( __METHOD__, '4.15.0' ); + } + + /** + * Registers the license key management tab in the Events > Settings screen, + * only if premium addons are detected. + */ + protected function do_licenses_tab() { + $show_tab = ( current_user_can( 'activate_plugins' ) && $this->have_addons() ); + + /** + * Provides an oppotunity to override the decision to show or hide the licenses tab + * + * Normally it will only show if the current user has the "activate_plugins" capability + * and there are some currently-activated premium plugins. + * + * @var bool + */ + if ( ! apply_filters( 'tribe_events_show_licenses_tab', $show_tab ) ) { + return; + } + + /** + * @var $licenses_tab + */ + include Tribe__Main::instance()->plugin_path . 'src/admin-views/tribe-options-licenses.php'; + + /** + * Allows the fields displayed in the licenses tab to be modified. + * + * @var array + */ + $license_fields = apply_filters( 'tribe_license_fields', $licenses_tab ); + + new Tribe__Settings_Tab( 'licenses', esc_html__( 'Licenses', 'tribe-common' ), [ + 'priority' => '40', + 'fields' => $license_fields, + 'network_admin' => is_network_admin() ? true : false, + ] ); + } + + /** + * Create the help tab + */ + public function do_help_tab() { + /** + * Include Help tab Assets here + */ + + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/help.php'; + } + + /** + * Add help menu item to the admin (unless blocked via network admin settings). + * + * @deprecated 5.0.2 + */ + public function add_help_admin_menu_item() { + _deprecated_function( __METHOD__, '5.0.2', 'Now handled by Tribe\Events\Admin\Settings::add_admin_pages()' ); + } + + /** + * Tries to discover if licensable addons are activated on the same site. + * + * @return bool + */ + protected function have_addons() { + $addons = apply_filters( 'tribe_licensable_addons', [] ); + + return ! empty( $addons ); + } + + /** + * Save hidden tabs + * + * @return void + */ + public function save_all_tabs_hidden() { + $all_tabs_keys = array_keys( apply_filters( 'tribe_settings_all_tabs', [] ) ); + + $network_options = (array) get_site_option( Tribe__Main::OPTIONNAMENETWORK ); + + $this->set_network_options( $network_options ); + } + + /** + * Static Singleton Factory Method + * + * @return Tribe__Settings_Manager + */ + public static function instance() { + return tribe( 'settings.manager' ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Settings_Tab.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Settings_Tab.php new file mode 100644 index 000000000..efbd0bc4d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Settings_Tab.php @@ -0,0 +1,230 @@ +defaults = [ + 'fields' => [], + 'priority' => 50, + 'show_save' => true, + 'display_callback' => false, + 'network_admin' => false, + ]; + + // parse args with defaults + $this->args = wp_parse_args( $args, $this->defaults ); + + // set each instance variable and filter + $this->id = apply_filters( 'tribe_settings_tab_id', $id ); + $this->name = apply_filters( 'tribe_settings_tab_name', $name ); + foreach ( $this->defaults as $key => $value ) { + $this->{$key} = apply_filters( 'tribe_settings_tab_' . $key, $this->args[ $key ], $id ); + } + + // run actions & filters + if ( ! $this->network_admin ) { + add_filter( 'tribe_settings_all_tabs', [ $this, 'addAllTabs' ] ); + } + add_filter( 'tribe_settings_tabs', [ $this, 'addTab' ], $this->priority ); + } + + /** + * filters the tabs array from Tribe__Settings + * and adds the current tab to it + * does not add a tab if it's empty + * + * @param array $tabs the $tabs from Tribe__Settings + * + * @return array $tabs the filtered tabs + */ + public function addTab( $tabs ) { + $hideSettingsTabs = Tribe__Settings_Manager::get_network_option( 'hideSettingsTabs', [] ); + if ( ( isset( $this->fields ) || has_action( 'tribe_settings_content_tab_' . $this->id ) ) && ( empty( $hideSettingsTabs ) || ! in_array( $this->id, $hideSettingsTabs ) ) ) { + if ( ( is_network_admin() && $this->args['network_admin'] ) || ( ! is_network_admin() && ! $this->args['network_admin'] ) ) { + $tabs[ $this->id ] = $this->name; + add_filter( 'tribe_settings_fields', [ $this, 'addFields' ] ); + add_filter( 'tribe_settings_no_save_tabs', [ $this, 'showSaveTab' ] ); + add_filter( 'tribe_settings_content_tab_' . $this->id, [ $this, 'doContent' ] ); + } + } + + return $tabs; + } + + /** + * Adds this tab to the list of total tabs, even if it is not displayed. + * + * @param array $allTabs All the tabs from Tribe__Settings. + * + * @return array $allTabs All the tabs. + */ + public function addAllTabs( $allTabs ) { + $allTabs[ $this->id ] = $this->name; + + return $allTabs; + } + + + /** + * filters the fields array from Tribe__Settings + * and adds the current tab's fields to it + * + * @param array $field the $fields from Tribe__Settings + * + * @return array $fields the filtered fields + */ + public function addFields( $fields ) { + if ( ! empty ( $this->fields ) ) { + $fields[ $this->id ] = $this->fields; + } elseif ( has_action( 'tribe_settings_content_tab_' . $this->id ) ) { + $fields[ $this->id ] = $this->fields = [ 0 => null ]; // just to trick it + } + + return $fields; + } + + /** + * sets whether the current tab should show the save + * button or not + * + * @param array $noSaveTabs the $noSaveTabs from Tribe__Settings + * + * @return array $noSaveTabs the filtered non saving tabs + */ + public function showSaveTab( $noSaveTabs ) { + if ( ! $this->show_save || empty( $this->fields ) ) { + $noSaveTabs[ $this->id ] = $this->id; + } + + return $noSaveTabs; + } + + /** + * Displays the content for the tab. + * + * @return void + */ + public function doContent() { + if ( $this->display_callback && is_callable( $this->display_callback ) ) { + call_user_func( $this->display_callback ); + + return; + } + + $sent_data = get_option( 'tribe_settings_sent_data', [] ); + + if ( is_array( $this->fields ) && ! empty( $this->fields ) ) { + foreach ( $this->fields as $key => $field ) { + if ( isset( $sent_data[ $key ] ) ) { + // If we just saved [or attempted to], get the value that was input. + $value = $sent_data[ $key ]; + } else { + // Some options should always be stored at network level + $network_option = isset( $field['network_option'] ) ? (bool) $field['network_option'] : false; + + if ( is_network_admin() ) { + $parent_option = ( isset( $field['parent_option'] ) ) ? $field['parent_option'] : Tribe__Main::OPTIONNAMENETWORK; + } + if ( ! is_network_admin() ) { + $parent_option = ( isset( $field['parent_option'] ) ) ? $field['parent_option'] : Tribe__Main::OPTIONNAME; + } + // get the field's parent_option in order to later get the field's value + $parent_option = apply_filters( 'tribe_settings_do_content_parent_option', $parent_option, $key ); + $default = ( isset( $field['default'] ) ) ? $field['default'] : null; + $default = apply_filters( 'tribe_settings_field_default', $default, $field ); + + if ( ! $parent_option ) { + // no parent option, get the straight up value + if ( $network_option || is_network_admin() ) { + $value = get_site_option( $key, $default ); + } else { + $value = get_option( $key, $default ); + } + } else { + // there's a parent option + if ( $parent_option == Tribe__Main::OPTIONNAME ) { + // get the options from Tribe__Settings_Manager if we're getting the main array + $value = Tribe__Settings_Manager::get_option( $key, $default ); + } elseif ( $parent_option == Tribe__Main::OPTIONNAMENETWORK ) { + $value = Tribe__Settings_Manager::get_network_option( $key, $default ); + } else { + // else, get the parent option normally + if ( is_network_admin() ) { + $options = (array) get_site_option( $parent_option ); + } else { + $options = (array) get_option( $parent_option ); + } + $value = ( isset( $options[ $key ] ) ) ? $options[ $key ] : $default; + } + } + } + + // escape the value for display + if ( ! empty( $field['esc_display'] ) && function_exists( $field['esc_display'] ) ) { + $value = $field['esc_display']( $value ); + } elseif ( is_string( $value ) ) { + $value = esc_attr( stripslashes( $value ) ); + } + + // filter the value + $value = apply_filters( 'tribe_settings_get_option_value_pre_display', $value, $key, $field ); + + // create the field + new Tribe__Field( $key, $field, $value ); + } + } else { + // no fields setup for this tab yet + echo '

    ' . esc_html__( 'There are no fields set up for this tab yet.', 'tribe-common' ) . '

    '; + } + } + + } // end class +} // endif class_exists diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Manager.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Manager.php new file mode 100644 index 000000000..0dabc730b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Manager.php @@ -0,0 +1,182 @@ + => ]` + */ + public function get_registered_shortcodes() { + $shortcodes = []; + + /** + * Allow the registering of shortcodes into the our Tribe plugins. + * + * @since 4.12.0 + * + * @var array An associative array of shortcodes in the shape `[ => ]`. + */ + $shortcodes = apply_filters( 'tribe_shortcodes', $shortcodes ); + + return $shortcodes; + } + + /** + * Verifies if a given shortcode slug is registered for handling. + * + * @since 4.12.0 + * + * @param string $slug Which slug we are checking if is registered. + * + * @return bool Whether a shortcode is registered or not. + */ + public function is_shortcode_registered( $slug ) { + $registered_shortcodes = $this->get_registered_shortcodes(); + return isset( $registered_shortcodes[ $slug ] ); + } + + /** + * Verifies if a given shortcode class name is registered for handling. + * + * @since 4.12.0 + * + * @param string $class_name Which class name we are checking if is registered. + * + * @return bool Whether a shortcode is registered, by class. + */ + public function is_shortcode_registered_by_class( $class_name ) { + $registered_shortcodes = $this->get_registered_shortcodes(); + return in_array( $class_name, $registered_shortcodes ); + } + + /** + * Add new shortcodes handler to catch the correct strings. + * + * @since 4.12.0 + */ + public function add_shortcodes() { + $registered_shortcodes = $this->get_registered_shortcodes(); + + // Add to WordPress all of the registered Shortcodes + foreach ( $registered_shortcodes as $shortcode => $class_name ) { + add_shortcode( $shortcode, [ $this, 'render_shortcode' ] ); + } + } + + /** + * Makes sure we are correctly handling the Shortcodes we manage. + * + * @since 4.12.0 + * + * @param array $arguments Set of arguments passed to the Shortcode at hand. + * @param string $content Contents passed to the shortcode, inside of the open and close brackets. + * @param string $shortcode Which shortcode tag are we handling here. + * + * @return string The rendered shortcode HTML. + */ + public function render_shortcode( $arguments, $content, $shortcode ) { + $registered_shortcodes = $this->get_registered_shortcodes(); + + // Bail when we try to handle an unregistered shortcode (shouldn't happen) + if ( ! $this->is_shortcode_registered( $shortcode ) ) { + return false; + } + + /** @var Shortcode_Interface $instance */ + $instance = new $registered_shortcodes[ $shortcode ]; + $instance->setup( $arguments, $content ); + + return $instance->get_html(); + } + + /** + * Filter `pre_do_shortcode_tag` to add the current shortcode. + * + * @since 4.12.9 + * + * @param bool|string $return Short-circuit return value. Either false or the value to replace the shortcode with. + * @param string $tag Shortcode name. + * @param array $attr Shortcode attributes array, + * @param array $m Regular expression match array. + * + * @return bool|string Short-circuit return value. + */ + public function filter_pre_do_shortcode_tag( $return, $tag, $attr, $m ) { + if ( ! $this->is_shortcode_registered( $tag ) ) { + return $return; + } + + // Add to the doing shortcode. + $this->current_shortcode[] = $tag; + + return $return; + } + + /** + * Filter `do_shortcode_tag` to remove the shortcode from the `$tribe_current_shortcode` list. + * + * @since 4.12.9 + * + * @param string $output Shortcode output. + * @param string $tag Shortcode name. + * @param array|string $attr Shortcode attributes array or empty string. + * @param array $m Regular expression match array. + * + * @return string Shortcode output. + */ + public function filter_do_shortcode_tag( $output, $tag, $attr, $m ) { + if ( ! $this->is_shortcode_registered( $tag ) ) { + return $output; + } + + if ( isset( $this->current_shortcode[ $tag ] ) ) { + unset( $this->current_shortcode[ $tag ] ); + } + + return $output; + } + + /** + * Check if a shortcode is being done. + * + * @since 4.12.9 + * + * @param null|string $tag The shortcode tag name, or null to check if doing any shortcode. + * + * @return bool If the shortcode is being done or not. + */ + public function is_doing_shortcode( $tag = null ) { + if ( null === $tag ) { + return ! empty( $this->current_shortcode ); + } + + return in_array( $tag, $this->current_shortcode, true ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Shortcode_Abstract.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Shortcode_Abstract.php new file mode 100644 index 000000000..d855760fb --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Shortcode_Abstract.php @@ -0,0 +1,254 @@ + 'canonical', 'from' => 'to', 'that' => 'becomes_this' ] + * Example shortcode usage: [some_tag alias=17 to='Fred'] will be parsed as [some_tag canonical=17 to='Fred'] + * + * @since 4.12.2 + * + * @var array + */ + protected $aliased_arguments = []; + + /** + * Array of callbacks for arguments validation. + * + * @since 4.12.0 + * + * @var array + */ + protected $validate_arguments_map = []; + + /** + * Arguments of the current shortcode. + * + * @since 4.12.0 + * + * @var array + */ + protected $arguments; + + /** + * Content of the current shortcode. + * + * @since 4.12.0 + * + * @var string + */ + protected $content; + + /** + * {@inheritDoc} + */ + public function setup( $arguments, $content ) { + $this->arguments = $this->parse_arguments( (array) $arguments ); + $this->content = $content; + } + + /** + * {@inheritDoc} + */ + public function set_aliased_arguments( array $alias_map ) { + $this->aliased_arguments = Arr::filter_to_flat_scalar_associative_array( (array) $alias_map ); + } + + /** + * {@inheritDoc} + */ + public function get_aliased_arguments() { + return $this->aliased_arguments; + } + + /** + * {@inheritDoc} + */ + public function parse_arguments( array $arguments ) { + $arguments = Arr::parse_associative_array_alias( (array) $arguments, (array) $this->get_aliased_arguments() ); + $arguments = shortcode_atts( $this->get_default_arguments(), $arguments, $this->slug ); + + return $this->validate_arguments( $arguments ); + } + + /** + * {@inheritDoc} + */ + public function validate_arguments( array $arguments ) { + $validate_arguments_map = $this->filter_validated_arguments_map( $this->get_validated_arguments_map() ); + foreach ( $validate_arguments_map as $key => $callback ) { + $arguments[ $key ] = $callback( isset( $arguments[ $key ] ) ? $arguments[ $key ] : null ); + } + + return $arguments; + } + + /** + * {@inheritDoc} + */ + public function get_registration_slug() { + return $this->slug; + } + + /** + * {@inheritDoc} + */ + public function get_validated_arguments_map() { + return $this->validate_arguments_map; + } + + /** + * {@inheritDoc} + */ + public function filter_validated_arguments_map( $validate_arguments_map ) { + /** + * Applies a filter to instance arguments validation callbacks. + * + * @since 4.12.0 + * + * @param array $validate_arguments_map Current set of callbacks for arguments. + * @param static $instance Which instance of shortcode we are dealing with. + */ + $validate_arguments_map = apply_filters( 'tribe_shortcode_validate_arguments_map', $validate_arguments_map, $this ); + + $registration_slug = $this->get_registration_slug(); + + /** + * Applies a filter to instance arguments validation callbacks based on the registration slug of the shortcode. + * + * @since 4.12.0 + * + * @param array $validate_arguments_map Current set of callbacks for arguments. + * @param static $instance Which instance of shortcode we are dealing with. + */ + $validate_arguments_map = apply_filters( "tribe__shortcode_{$registration_slug}_validate_arguments_map", $validate_arguments_map, $this ); + + return $validate_arguments_map; + } + + /** + * {@inheritDoc} + */ + public function get_arguments() { + /** + * Applies a filter to instance arguments. + * + * @since 4.12.0 + * + * @param array $arguments Current set of arguments. + * @param static $instance Which instance of shortcode we are dealing with. + */ + $arguments = apply_filters( 'tribe_shortcode_arguments', $this->arguments, $this ); + + $registration_slug = $this->get_registration_slug(); + + /** + * Applies a filter to instance arguments based on the registration slug of the shortcode. + * + * @since 4.12.0 + * + * @param array $arguments Current set of arguments. + * @param static $instance Which instance of shortcode we are dealing with. + */ + $arguments = apply_filters( "tribe_shortcode_{$registration_slug}_arguments", $arguments, $this ); + + return $arguments; + } + + /** + * {@inheritDoc} + */ + public function get_argument( $index, $default = null ) { + $arguments = $this->get_arguments(); + $argument = Arr::get( $arguments, $index, $default ); + + /** + * Applies a filter to a specific shortcode argument, catch all for all shortcodes. + * + * @since 4.12.0 + * + * @param mixed $argument The argument. + * @param array $index Which index we indent to fetch from the arguments. + * @param array $default Default value if it doesn't exist. + * @param static $instance Which instance of shortcode we are dealing with. + */ + $argument = apply_filters( 'tribe_shortcode_argument', $argument, $index, $default, $this ); + + $registration_slug = $this->get_registration_slug(); + + /** + * Applies a filter to a specific shortcode argument, to a particular registration slug. + * + * @since 4.12.0 + * + * @param mixed $argument The argument value. + * @param array $index Which index we indent to fetch from the arguments. + * @param array $default Default value if it doesn't exist. + * @param static $instance Which instance of shortcode we are dealing with. + */ + $argument = apply_filters( "tribe_shortcode_{$registration_slug}_argument", $argument, $index, $default, $this ); + + return $argument; + } + + /** + * {@inheritDoc} + */ + public function get_default_arguments() { + /** + * Applies a filter to instance default arguments. + * + * @since 4.12.0 + * + * @param array $default_arguments Current set of default arguments. + * @param static $instance Which instance of shortcode we are dealing with. + */ + $default_arguments = apply_filters( 'tribe_shortcode_default_arguments', $this->default_arguments, $this ); + + $registration_slug = $this->get_registration_slug(); + + /** + * Applies a filter to instance default arguments based on the registration slug of the shortcode. + * + * @since 4.12.0 + * + * @param array $default_arguments Current set of default arguments. + * @param static $instance Which instance of shortcode we are dealing with. + */ + $default_arguments = apply_filters( "tribe_shortcode_{$registration_slug}_default_arguments", $default_arguments, $this ); + + return $default_arguments; + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Shortcode_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Shortcode_Interface.php new file mode 100644 index 000000000..ca3e77a7f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Shortcode_Interface.php @@ -0,0 +1,125 @@ + 'canonical', 'from' => 'to', 'that' => 'becomes_this' ] + */ + public function set_aliased_arguments( array $alias_map ); + + /** + * Gets the aliased arguments array. + * + * @since 4.12.2 + * + * @return array The associative array map of aliases and their canonical arguments. + */ + public function get_aliased_arguments(); + + /** + * Returns the arguments for the shortcode parsed correctly with defaults applied. + * + * @since 4.12.0 + * + * @param array $arguments Set of arguments passed to the Shortcode at hand. + * + * @return array The parsed shortcode arguments map. + */ + public function parse_arguments( array $arguments ); + + /** + * Returns the array of arguments for this shortcode after applying the validation callbacks. + * + * @since 4.12.0 + * + * @param array $arguments Set of arguments passed to the Shortcode at hand. + * + * @return array The validated shortcode arguments map. + */ + public function validate_arguments( array $arguments ); + + /** + * Returns the array of callbacks for this shortcode's arguments. + * + * @since 4.12.0 + * + * @return array A map of the shortcode arguments that have survived validation. + */ + public function get_validated_arguments_map(); + + /** + * Returns a shortcode default arguments. + * + * @since 4.12.0 + * + * @return array The shortcode default arguments map. + */ + public function get_default_arguments(); + + /** + * Returns a shortcode arguments after been parsed. + * + * @since 4.12.0 + * + * @return array The shortcode arguments, as set by the user in the shortcode string. + */ + public function get_arguments(); + + /** + * Returns a shortcode argument after it has been parsed. + * + * @since 4.12.0 + * + * @param array|string $index Which index we indent to fetch from the arguments. + * @param array $default Default value if it doesn't exist. + * + * @uses Tribe__Utils__Array::get For index fetching and Default. + * + * @return mixed Value for the Index passed as the first argument. + */ + public function get_argument( $index, $default = null ); + + /** + * Returns a shortcode's HTML. + * + * @since 4.12.0 + * + * @return string The shortcode rendered HTML code. + */ + public function get_html(); +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Utils.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Utils.php new file mode 100644 index 000000000..9584f53df --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Shortcode/Utils.php @@ -0,0 +1,45 @@ + $settings Widget settings. + * @param array $allowed Allowed settings for shortcode. + * + * @return string Shortcode attributes string. + */ + public static function get_attributes_string( $settings, $allowed = [] ) { + $settings_string = ''; + + $allowed = array_flip( $allowed ); + + foreach ( $settings as $key => $value ) { + if ( ! empty( $allowed ) && ! isset( $allowed[ $key ] ) ) { + continue; + } + + $key = esc_attr( $key ); + + if ( is_array( $value ) ) { + $value = implode( ', ', $value ); + } + + $value = esc_attr( $value ); + + $settings_string .= " {$key}=\"{$value}\""; + } + + return $settings_string; + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Simple_Table.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Simple_Table.php new file mode 100644 index 000000000..4c3e2ec08 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Simple_Table.php @@ -0,0 +1,166 @@ + 'tribe_table', 'border' => '0' ); + */ + public $table_attributes; + public $tr_attributes; + public $th_attributes; + public $td_attributes; + + /** + * Will HTML escape all table cells + * + * @var bool + */ + public $html_escape_td_values = true; + + /** + * Tribe__Simple_Table constructor. + * + * @param array $tbody Multidimension array containing table rows/columns + * @param array $thead Single dimension array containing table headings + */ + public function __construct( $tbody, $thead = [] ) { + $this->thead = $thead; + $this->tbody = $tbody; + } + + /** + * @param bool $vertical Whether heading appears vertically (above) data or horizontally (to the side) + * + * @return string HTML table + */ + public function output_table( $vertical = true ) { + + if ( $vertical ) { + return $this->output_table_vertical(); + } else { + return $this->output_table_horizontal(); + } + } + + /** + * Outputs table with heading above data + * + * @return string HTML table + */ + private function output_table_vertical() { + + $table_contents = ''; + + // Create thead + if ( ! empty( $this->thead ) ) { + foreach ( $this->thead as $th ) { + $table_contents .= $this->output_element( 'th', $th, $this->th_attributes ); + } + $table_contents = $this->output_element( 'tr', $table_contents, $this->tr_attributes ); + } + + // Create tbody + foreach ( $this->tbody as $tr ) { + $tr_str = ''; + + foreach ( $tr as $td ) { + $tr_str .= $this->output_element( 'td', $td, $this->td_attributes ); + } + + $table_contents .= $this->output_element( 'tr', $tr_str, $this->tr_attributes ); + } + + // Wrap it all up in a table + $output = $this->output_element( 'table', $table_contents, $this->table_attributes ); + + return $output; + } + + /** + * Outputs table with heading to the left of the data + * + * @return string HTML table + */ + private function output_table_horizontal() { + + $table_contents = ''; + + // Finds the table row with the most columns + $max_col = isset( $this->thead ) ? count( $this->thead ) : 1; + foreach ( $this->tbody as $table_item ) { + if ( $max_col < count( $table_item ) ) { + $max_col = count( $table_item ); + } + } + + // Create table rows + for ( $i = 0; $i < $max_col; $i++ ) { + $tr_contents = ''; + + // row heading + if ( isset( $this->thead[ $i ] ) ) { + $tr_contents .= $this->output_element( 'th', $this->thead[ $i ], $this->th_attributes ); + } + + // columns + foreach ( $this->tbody as $table_item ) { + if ( ! isset( $table_item[ $i ] ) ) { + continue; + } + $tr_contents .= $this->output_element( 'td', $table_item[ $i ], $this->td_attributes ); + } + + $table_contents .= $this->output_element( 'tr', $tr_contents, $this->tr_attributes ); + } + + // Wrap it all up in a table + $output = $this->output_element( 'table', $table_contents, $this->table_attributes ); + + return $output; + } + + /** + * Outputs an HTML element, mostly useful for elements that have attributes + * + * @param string $html_tag HTML element name. Example: 'table' + * @param string $data Text/HTML contained inside of the element + * @param array $attributes HTML attributes for element + * + * @return string HTML element + */ + private function output_element( $html_tag, $data = null, $attributes = [] ) { + $output = '<' . tag_escape( $html_tag ); + + if ( ! empty( $attributes ) ) { + foreach ( $attributes as $att => $val ) { + $output .= ' ' . $att . '="' . esc_attr( $val ) . '"'; + } + } + + if ( is_string( $data ) ) { + $output .= '>'; + $output .= ( 'td' === $html_tag && $this->html_escape_td_values ) ? esc_html( $data ) : $data; + $output .= ''; + } else { + $output .= ' />'; + } + + return $output; + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Support.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Support.php new file mode 100644 index 000000000..1c7be122f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Support.php @@ -0,0 +1,478 @@ +must_escape = (array) apply_filters( 'tribe_help_must_escape_fields', $this->must_escape ); + + add_action( 'tribe_help_pre_get_sections', [ $this, 'append_system_info' ], 10 ); + add_action( 'delete_option_rewrite_rules', [ $this, 'log_rewrite_rule_purge' ] ); + + add_action( 'rest_api_init', [ __CLASS__, 'create_sysinfo_endpoint' ] ); + add_action( 'wp_ajax_tribe_toggle_sysinfo_optin', [ __CLASS__, 'ajax_sysinfo_optin' ] ); + } + + /** + * Display help tab info in events settings + * + * @param Tribe__Admin__Help_Page $help The Help Page Instance + */ + public function append_system_info( Tribe__Admin__Help_Page $help ) { + $help->add_section_content( 'system-info', $this->formattedSupportStats(), 10 ); + } + + /** + * Collect system information for support + * + * @return array of system data for support + */ + public function getSupportStats() { + global $wpdb; + $user = wp_get_current_user(); + + $plugins = []; + if ( function_exists( 'get_plugin_data' ) ) { + $plugins_raw = wp_get_active_and_valid_plugins(); + foreach ( $plugins_raw as $k => $v ) { + $plugin_details = get_plugin_data( $v ); + $plugin = $plugin_details['Name']; + if ( ! empty( $plugin_details['Version'] ) ) { + $plugin .= sprintf( ' version %s', $plugin_details['Version'] ); + } + if ( ! empty( $plugin_details['Author'] ) ) { + $plugin .= sprintf( ' by %s', $plugin_details['Author'] ); + } + if ( ! empty( $plugin_details['AuthorURI'] ) ) { + $plugin .= sprintf( ' (%s)', $plugin_details['AuthorURI'] ); + } + $plugins[] = $plugin; + } + } + + $network_plugins = []; + if ( is_multisite() && function_exists( 'get_plugin_data' ) ) { + $plugins_raw = wp_get_active_network_plugins(); + foreach ( $plugins_raw as $k => $v ) { + $plugin_details = get_plugin_data( $v ); + $plugin = $plugin_details['Name']; + if ( ! empty( $plugin_details['Version'] ) ) { + $plugin .= sprintf( ' version %s', $plugin_details['Version'] ); + } + if ( ! empty( $plugin_details['Author'] ) ) { + $plugin .= sprintf( ' by %s', $plugin_details['Author'] ); + } + if ( ! empty( $plugin_details['AuthorURI'] ) ) { + $plugin .= sprintf( ' (%s)', $plugin_details['AuthorURI'] ); + } + $network_plugins[] = $plugin; + } + } + + $mu_plugins = []; + if ( function_exists( 'get_mu_plugins' ) ) { + $mu_plugins_raw = get_mu_plugins(); + foreach ( $mu_plugins_raw as $k => $v ) { + $plugin = $v['Name']; + if ( ! empty( $v['Version'] ) ) { + $plugin .= sprintf( ' version %s', $v['Version'] ); + } + if ( ! empty( $v['Author'] ) ) { + $plugin .= sprintf( ' by %s', $v['Author'] ); + } + if ( ! empty( $v['AuthorURI'] ) ) { + $plugin .= sprintf( ' (%s)', $v['AuthorURI'] ); + } + $mu_plugins[] = $plugin; + } + } + + $keys = apply_filters( 'tribe-pue-install-keys', [] ); + //Obfuscate the License Keys for Security + if ( is_array( $keys ) && ! empty( $keys ) ) { + $secure_keys = []; + foreach ( $keys as $plugin => $license ) { + $secure_keys[ $plugin ] = preg_replace( '/^(.{4}).*(.{4})$/', '$1' . str_repeat( '#', 32 ) . '$2', $license ); + } + $keys = $secure_keys; + } + + //Server + $server = explode( ' ', $_SERVER['SERVER_SOFTWARE'] ); + $server = explode( '/', reset( $server ) ); + + //PHP Information + $php_info = []; + $php_vars = [ + 'max_execution_time', + 'memory_limit', + 'upload_max_filesize', + 'post_max_size', + 'display_errors', + 'log_errors', + ]; + + foreach ( $php_vars as $php_var ) { + if ( isset( $wpdb->qm_php_vars ) && isset( $wpdb->qm_php_vars[ $php_var ] ) ) { + $val = $wpdb->qm_php_vars[ $php_var ]; + } else { + $val = ini_get( $php_var ); + } + $php_info[ $php_var ] = $val; + } + + $homepage = get_option( 'show_on_front' ); + $homepage_page_id = get_option( 'page_on_front' ); + + if ( 'page' === $homepage ) { + if ( -10 === (int) $homepage_page_id ) { + $homepage_page_id .= ' (Main Events Page)'; + } else { + $homepage_page_id .= ' (' . esc_html( get_the_title( $homepage_page_id ) ) . ')'; + } + } + + $site_url = get_site_url(); + $systeminfo = [ + 'Home URL' => get_home_url(), + 'Site URL' => $site_url, + 'Site Language' => get_option( 'WPLANG' ) ? get_option( 'WPLANG' ) : esc_html__( 'English', 'tribe-common' ), + 'Character Set' => get_option( 'blog_charset' ), + 'Name' => $user->display_name, + 'Email' => $user->user_email, + 'Install keys' => $keys, + 'WordPress version' => get_bloginfo( 'version' ), + 'Permalink Structure' => $site_url . get_option( 'permalink_structure' ), + 'Your homepage displays' => $homepage, + 'Homepage page ID' => $homepage_page_id, + 'PHP version' => phpversion(), + 'PHP' => $php_info, + 'Server' => $server[0], + 'SAPI' => php_sapi_name(), + 'Plugins' => $plugins, + 'Network Plugins' => $network_plugins, + 'MU Plugins' => $mu_plugins, + 'Theme' => wp_get_theme()->get( 'Name' ), + 'Multisite' => is_multisite(), + 'Settings' => Tribe__Settings_Manager::get_options(), + 'WP Timezone' => get_option( 'timezone_string' ) ? get_option( 'timezone_string' ) : esc_html__( 'Unknown or not set', 'tribe-common' ), + 'WP GMT Offset' => get_option( 'gmt_offset' ) ? ' ' . get_option( 'gmt_offset' ) : esc_html__( 'Unknown or not set', 'tribe-common' ), + 'Default PHP Timezone' => date_default_timezone_get(), + 'WP Date Format' => get_option( 'date_format' ), + 'WP Time Format' => get_option( 'time_format' ), + 'Week Starts On' => get_option( 'start_of_week' ), + 'Common Library Dir' => $GLOBALS['tribe-common-info']['dir'], + 'Common Library Version' => $GLOBALS['tribe-common-info']['version'], + ]; + + if ( $this->rewrite_rules_purged ) { + $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' ); + } + + /** + * Allow for customization of the array of information that's turned into the "System Information" screen in the "Help" admin page. + * + * @param array $systeminfo The array of information turned into the "System Information" screen. + * + * @deprecated 4.14.13 Using a newer format of filter. + */ + $systeminfo = apply_filters( 'tribe-events-pro-support', $systeminfo ); + + /** + * Allow for customization of the array of information that's turned into the "System Information" screen in the "Help" admin page. + * + * @since 4.14.13 + * + * @param array $systeminfo The array of information turned into the "System Information" screen. + * + */ + $systeminfo = apply_filters( 'tec_system_information', $systeminfo ); + + return $systeminfo; + } + + /** + * Render system information into a pretty output + * + * @return string pretty HTML + */ + public function formattedSupportStats() { + $systeminfo = $this->getSupportStats(); + $output = ''; + $output .= '
    '; + + foreach ( $systeminfo as $k => $v ) { + + switch ( $k ) { + case 'name' : + case 'email' : + continue 2; + break; + case 'url' : + $v = sprintf( '%s', $v, $v ); + break; + } + + if ( is_array( $v ) ) { + $keys = array_keys( $v ); + $key = array_shift( $keys ); + $is_numeric_array = is_numeric( $key ); + unset( $keys ); + unset( $key ); + } + + $output .= sprintf( '
    %s
    ', $k ); + if ( empty( $v ) ) { + $output .= '
    -
    '; + } elseif ( is_bool( $v ) ) { + $output .= sprintf( '
    %s
    ', esc_html( $v ) ); + } elseif ( is_string( $v ) ) { + $output .= sprintf( '
    %s
    ', esc_html( $v ) ); + } elseif ( is_array( $v ) && $is_numeric_array ) { + $output .= sprintf( '
    • %s
    ', join( '
  • ', $v ) ); + } else { + $formatted_v = []; + foreach ( $v as $obj_key => $obj_val ) { + $obj_val = $this->obfuscator->obfuscate( $obj_key, $obj_val ); + + if ( is_array( $obj_val ) ) { + $formatted_v[] = sprintf( '
  • %s =
    %s
  • ', $obj_key, esc_html( print_r( $obj_val, true ) ) ); + } else { + $obj_val = esc_html( $obj_val ); + $formatted_v[] = sprintf( '
  • %s = %s
  • ', $obj_key, $obj_val ); + } + } + $v = join( "\n", $formatted_v ); + $output .= sprintf( '
      %s
    ', wp_kses_post( print_r( $v, true ) ) ); + } + } + + $output .= '
    '; + + return $output; + } + + /** + * Logs the occurrence of rewrite rule purging + */ + public function log_rewrite_rule_purge() { + $this->rewrite_rules_purged = true; + }//end log_rewrite_rule_purge + + /** + * Sets the obfuscator to be used. + * + * @param Tribe__Support__Obfuscator $obfuscator + */ + public function set_obfuscator( Tribe__Support__Obfuscator $obfuscator ) { + $this->obfuscator = $obfuscator; + } + + /** + * Creates Fields in Help Tab to Opt In to System Info + * + * @return string + */ + public static function opt_in() { + + + $optin_key = ! empty( get_option( self::$option_key ) ); + + $opt_in = '

    '; + $opt_in .= '

    ' . esc_html__( 'Your system information will only be used by The Events Calendar\'s support team. All information is stored securely. We do not share this information with any third parties.', 'tribe-common' ) . '

    '; + $opt_in .= '

    '; + + return $opt_in; + } + + /** + * Method to send back sysinfo + * + * @param $query + * + * @return string|void + * + */ + public static function sysinfo_query( $query ) { + + $optin_key = get_option( self::$option_key ); + + if ( ! $optin_key ) { + wp_send_json_error( __( 'Invalid Key', 'tribe-common' ) ); + } + + $key = $query['key']; + if ( $key != $optin_key ) { + wp_send_json_error( __( 'Invalid Key', 'tribe-common' ) ); + } + + $support = Tribe__Support::getInstance(); + $systeminfo = $support->formattedSupportStats(); + + return $systeminfo; + } + + /* + * Create Unique Endpoint Per Site + */ + public static function create_sysinfo_endpoint() { + $optin_key = get_option( self::$option_key ); + if ( $optin_key ) { + register_rest_route( + 'tribe_events/v2', + '/(?P[a-z0-9\-]+)/sysinfo/', + [ + 'methods' => 'GET', + 'callback' => [ 'Tribe__Support', 'sysinfo_query' ], + 'permission_callback' => '__return_true', + ] + ); + } + } + + /** + * Ajax Method to Create Unique Key and send to tec.com + */ + public static function ajax_sysinfo_optin() { + + if ( ! isset( $_POST['confirm'] ) || ! wp_verify_nonce( $_POST['confirm'], 'sysinfo_optin_nonce' ) ) { + wp_send_json_error( __( 'Permission Error', 'tribe-common' ) ); + } + + if ( 'generate' == $_POST['generate_key'] ) { + $random = base_convert( rand( 0, getrandmax() ), 10, 36 ); + $optin_key = hash( 'sha1', $random ); + + update_option( self::$option_key, $optin_key ); + + //Only Connect If a License Exists + $keys = apply_filters( 'tribe-pue-install-keys', [] ); + if ( is_array( $keys ) && ! empty( $keys ) ) { + self::send_sysinfo_key( $optin_key ); + } else { + wp_send_json_success( __( 'Unique System Info Key Generated', 'tribe-common' ) ); + } + + } elseif ( 'remove' == $_POST['generate_key'] ) { + $optin_key = get_option( self::$option_key ); + + delete_option( self::$option_key ); + + self::send_sysinfo_key( $optin_key, null, 'remove' ); + + } + + wp_send_json_error( __( 'Permission Error', 'tribe-common' ) ); + } + + /** + * Contact Tribe Website to Add SysInfo Key + * + * @param null $optin_key provide key for system info + * @param null $url domain of current site + * @param null $remove string used if removing $optin_key from tec.com + * @param null $pueadd boolean to disable messaging when coming from pue script + */ + public static function send_sysinfo_key( $optin_key = null, $url = null, $remove = null, $pueadd = false ) { + $url = $url ? $url : urlencode( str_replace( [ 'http://', 'https://' ], '', get_site_url() ) ); + $teccom_url = defined( 'TEC_URL' ) ? TEC_URL : 'https://theeventscalendar.com'; + $query = trailingslashit( $teccom_url ) . 'wp-json/tribe_system/v2/customer-info/' . $optin_key . '/' . $url; + + if ( $remove ) { + $query .= '?status=remove'; + } + + $response = wp_remote_get( esc_url( $query ) ); + + $response = json_decode( wp_remote_retrieve_body( $response ) ); + + if ( ! $pueadd ) { + // make sure the response came back okay + if ( ! isset( $response->success ) ) { + //on error delete the key + delete_option( self::$option_key ); + + //send error response + wp_send_json_error( $response ); + } + + wp_send_json_success( $response->data ); + } + } + + + /****************** SINGLETON GUTS ******************/ + + /** + * Enforce Singleton Pattern + */ + private static $instance; + + + public static function getInstance() { + if ( null == self::$instance ) { + $instance = new self; + $instance->set_obfuscator( new Tribe__Support__Obfuscator( $instance->must_obfuscate_prefixes ) ); + self::$instance = $instance; + } + + return self::$instance; + } + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Obfuscator.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Obfuscator.php new file mode 100644 index 000000000..af60e6a59 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Obfuscator.php @@ -0,0 +1,68 @@ +prefixes = $prefixes; + } + + /** + * Whether a value should be obfuscated or not. + * + * @param string $key + * + * @return bool + */ + public function should_obfuscate( $key ) { + foreach ( $this->prefixes as $prefix ) { + if ( strpos( $key, $prefix ) === 0 ) { + return true; + } + } + + return false; + } + + /** + * Conditionally obfuscates a string value. + * + * @param string $key + * @param mixed $string_value + * + * @return mixed Either the obfuscated string or the original value if not a string. + */ + public function obfuscate( $key, $string_value ) { + if ( ! is_string( $string_value ) ) { + return $string_value; + } + if ( ! $this->should_obfuscate( $key ) ) { + return $string_value; + } + + $length = strlen( $string_value ); + if ( $length <= 3 ) { + return preg_replace( "/./", "#", $string_value ); + } elseif ( $length > 3 && $length <= 5 ) { + return preg_replace( '/^(.{1}).*$/', '$1' . str_repeat( '#', $length - 1 ) . '$2', $string_value ); + } elseif ( $length > 5 && $length <= 9 ) { + return preg_replace( '/^(.{1}).*(.{1})$/', '$1' . str_repeat( '#', $length - 2 ) . '$2', $string_value ); + } elseif ( $length > 9 && $length <= 19 ) { + return preg_replace( '/^(.{2}).*(.{2})$/', '$1' . str_repeat( '#', $length - 4 ) . '$2', $string_value ); + } elseif ( $length > 19 && $length <= 31 ) { + return preg_replace( '/^(.{3}).*(.{3})$/', '$1' . str_repeat( '#', $length - 6 ) . '$2', $string_value ); + } + + return preg_replace( '/^(.{4}).*(.{4})$/', '$1' . str_repeat( '#', $length - 8 ) . '$2', $string_value ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Template_Checker.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Template_Checker.php new file mode 100644 index 000000000..4bbad8789 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Template_Checker.php @@ -0,0 +1,275 @@ +plugin_version = $this->base_version_number( $plugin_version ); + $this->plugin_views_dir = $plugin_views_dir; + $this->theme_views_dir = $theme_views_dir; + + $this->scan_view_directory(); + $this->scan_for_overrides(); + } + + /** + * Given a version number with an alpha/beta type suffix, strips that suffix and + * returns the "base" version number. + * + * For example, given "9.8.2beta1" this method will return "9.8.2". + * + * The utility of this is that if the author of a template change sets the + * version tag in the template header to 9.8.2 (to continue the same example) we + * don't need to worry about updating that for each alpha, beta or RC we put out. + * + * @param string $version_number + * + * @return string + */ + protected function base_version_number( $version_number ) { + return preg_replace( '/[a-z]+[a-z0-9]*$/i', '', $version_number ); + } + + /** + * Recursively scans the plugin's view directory and examines the template headers + * of each file it finds within. + */ + protected function scan_view_directory() { + // If the provided directory is invalid flag the problem and go no further + if ( $this->bad_directory( $this->plugin_views_dir ) ) { + return; + } + + $view_directory = new RecursiveDirectoryIterator( $this->plugin_views_dir ); + $directory_list = new RecursiveIteratorIterator( $view_directory ); + + foreach ( $directory_list as $file ) { + $this->scan_view( $file ); + } + } + + /** + * Scans an individual view file, adding it's version number (if found) to the + * $this->views array. + * + * @param SplFileInfo $file + */ + protected function scan_view( SplFileInfo $file ) { + if ( ! $file->isFile() || ! $file->isReadable() ) { + return; + } + + $version = $this->get_template_version( $file->getPathname() ); + $this->originals[ $this->short_name( $file->getPathname() ) ] = $version; + } + + protected function scan_for_overrides() { + // If the provided directory is invalid flag the problem and go no further + if ( $this->bad_directory( $this->theme_views_dir ) ) { + return; + } + + foreach ( $this->originals as $view_file => $current_version ) { + $override_path = trailingslashit( $this->theme_views_dir ) . $view_file; + + if ( ! is_file( $override_path ) || ! is_readable( $override_path ) ) { + continue; + } + + $this->overrides[ $view_file ] = $this->get_template_version( $override_path ); + } + } + + /** + * Tests to ensure the provided view directory path is invalid or unreadable. + * + * @param string $directory + * @return bool + */ + protected function bad_directory( $directory ) { + if ( is_dir( $directory ) && is_readable( $directory ) ) { + return false; + } + + return true; + } + + /** + * Inspects the template header block within the specified file and extracts the + * version number, if one can be found. + * + * @param string $template_filepath + * @return string + */ + protected function get_template_version( $template_filepath ) { + if ( ! is_file( $template_filepath ) || ! is_readable( $template_filepath ) ) { + return ''; + } + + $view_content = file_get_contents( $template_filepath ); + + if ( ! preg_match( '/^\s*\*\s*@version\s*([0-9\.]+)/mi', $view_content, $matches ) ) { + return ''; + } + + return $matches[1]; + } + + /** + * Given a full filepath (ie, to a view file), chops off the base path found + * in $this->plugin_views_dir. + * + * For example, given: + * + * $this->plugin_views_dir = '/srv/project/wp-content/plugins/my-plugin/views' + * $full_filepath = '/srv/project/wp-content/plugins/my-plugin/views/modules/icon.php' + * + * Returns: + * + * 'modules/icon.php' + * + * @param string $full_filepath + * @return string + */ + protected function short_name( $full_filepath ) { + if ( 0 === strpos( $full_filepath, $this->plugin_views_dir ) ) { + return trim( substr( $full_filepath, strlen( $this->plugin_views_dir ) ), DIRECTORY_SEPARATOR ); + } + + return $full_filepath; + } + + /** + * Returns an array of the plugin's shipped view files, where each key is the + * view filename and the value is the version it was last updated. + * + * @return array + */ + public function get_views() { + return $this->originals; + } + + /** + * Returns an array of any or all of the plugin's shipped view files that contain + * a version field in their header blocks. + * + * @see $this->get_views() for format of returned array + * + * @return array + */ + public function get_versioned_views() { + $versioned_views = []; + + foreach ( $this->originals as $key => $version ) { + if ( ! empty( $version ) ) { + $versioned_views[ $key ] = $version; + } + } + + return $versioned_views; + } + + /** + * Returns an array of any shipped plugin views that were updated or introduced + * with the current release (as specified by $this->plugin_version). + * + * @see $this->get_views() for format of returned array + * + * @return array + */ + public function get_views_tagged_this_release() { + $currently_tagged_views = []; + + foreach ( $this->get_versioned_views() as $key => $version ) { + if ( $version === $this->plugin_version ) { + $currently_tagged_views[ $key ] = $version; + } + } + + return $currently_tagged_views; + } + + /** + * Returns an array of theme overrides, where each key is the view filename and the + * value is the version it was last updated (may be empty). + * + * @return array + */ + public function get_overrides() { + return $this->overrides; + } + + /** + * Returns an array of any or all theme overrides that contain a version field in their + * header blocks. + * + * @see $this->get_overrides() for format of returned array + * + * @return array + */ + public function get_versioned_overrides() { + $versioned_views = []; + + foreach ( $this->overrides as $key => $version ) { + if ( ! empty( $version ) ) { + $versioned_views[ $key ] = $version; + } + } + + return $versioned_views; + } + + /** + * Returns an array of any or all theme overrides that seem to be based on an earlier + * version than that which currently ships with the plugin. + * + * If optional param $include_unknown is set to true, the list will include theme + * overrides where the version could not be determined (for instance, this might result + * in theme overrides where the template header - or version tag - was removed being + * included). + * + * @see $this->get_overrides() for format of returned array + * + * @param bool $include_unknown = false + * @return array + */ + public function get_outdated_overrides( $include_unknown = false ) { + $outdated = []; + $originals = $this->get_versioned_views(); + + $overrides = $include_unknown + ? $this->get_overrides() + : $this->get_versioned_overrides(); + + foreach ( $overrides as $view => $override_version ) { + if ( empty( $originals[ $view ] ) ) { + continue; + } + + $shipped_version = $originals[ $view ]; + + if ( version_compare( $shipped_version, $override_version, '>' ) ) { + $outdated[ $view ] = $override_version; + } + } + + return $outdated; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Template_Checker_Report.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Template_Checker_Report.php new file mode 100644 index 000000000..87545f41b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Support/Template_Checker_Report.php @@ -0,0 +1,119 @@ + $plugin_template_system ) { + self::generate_for( $plugin_name, $plugin_template_system ); + } + + self::wrap_report(); + return self::$complete_report; + } + + protected static function registered_plugins() { + /** + * Provides a mechanism for plugins to register information about their template/view + * setups. + * + * This should be done by adding an entry to $registere_template_systems where the key + * should be the plugin name and the element an array structured as follows: + * + * [ + * plugin_version, + * path_to_included_views, + * path_to_theme_overrides + * ] + * + * @var array $registered_template_systems + */ + return apply_filters( 'tribe_support_registered_template_systems', [] ); + } + + /** + * Creates a report for the specified plugin. + * + * @param string $plugin_name + * @param array $template_system + */ + protected static function generate_for( $plugin_name, array $template_system ) { + $report = '
    ' . esc_html( $plugin_name ) . '
    '; + + $scanner = new Tribe__Support__Template_Checker( + $template_system[ self::VERSION_INDEX ], + $template_system[ self::INCLUDED_VIEWS_INDEX ], + $template_system[ self::THEME_OVERRIDES_INDEX ] + ); + + $newly_introduced_or_updated = $scanner->get_views_tagged_this_release(); + $outdated_or_unknown = $scanner->get_outdated_overrides( true ); + + if ( empty( $newly_introduced_or_updated ) && empty( $outdated_or_unknown ) ) { + $report .= '
    ' . __( 'No notable changes detected', 'tribe-common' ) . '
    '; + } + + if ( ! empty( $newly_introduced_or_updated ) ) { + $report .= '

    ' . sprintf( __( 'Templates introduced or updated with this release (%s):', 'tribe-common' ), $template_system[ self::VERSION_INDEX ] ) . '

      '; + + foreach ( $newly_introduced_or_updated as $view_name => $version ) { + $report .= '
    • ' . esc_html( $view_name ) . '
    • '; + } + + $report .= '
    '; + } + + if ( ! empty( $outdated_or_unknown ) ) { + $report .= '

    ' . __( 'Existing theme overrides that may need revision:', 'tribe-common' ) . '

      '; + + foreach ( $outdated_or_unknown as $view_name => $version ) { + $version_note = empty( $version ) + ? __( 'version data missing from override', 'tribe-common' ) + : sprintf( __( 'based on %s version', 'tribe-common' ), $version ); + + $report .= '
    • ' . esc_html( $view_name ) . ' (' . $version_note . ')
    • '; + } + + $report .= '
    '; + } + + self::$plugin_reports[ $plugin_name ] = $report; + } + + /** + * Wraps the individual plugin template reports ready for display. + */ + protected static function wrap_report() { + if ( empty( self::$plugin_reports ) ) { + self::$complete_report = '

    ' . __( 'No notable template changes detected.', 'tribe-common' ) . '

    '; + } else { + self::$complete_report = '

    ' . __( 'Information about recent template changes and potentially impacted template overrides is provided below.', 'tribe-common' ) . '

    ' + . '
    ' . join( ' ', self::$plugin_reports ) . '
    '; + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Tabbed_View.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Tabbed_View.php new file mode 100644 index 000000000..38e7aa7fe --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Tabbed_View.php @@ -0,0 +1,381 @@ + => ] format. + */ + protected $items = []; + + /** + * The slug of the default tab + * + * @var string + */ + protected $default_tab; + + /** + * @var string The absolute path to this tabbed view template file. + */ + protected $template; + + /** + * An array or value object of data that should be used to render the tabbed view. + * + * @var array|object + */ + protected $data = []; + + /** + * @var string + */ + protected $label; + + /** + * @var string + */ + protected $url; + + /** + * @var string + */ + protected $active; + + /** + * Returns the tabbed view URL. + * + * @param array|string $args Query String or Array with the arguments + * @param boolean $relative Return a relative URL or absolute + * + * @return string + */ + public function get_url( $args, $relative ) { + $relative_path = add_query_arg( $args, $this->url ); + + return $relative ? $relative_path : admin_url( $relative_path ); + } + + /** + * The currently set template for this tabbed view. + * + * @return string + */ + public function get_template() { + return ! empty( $this->template ) ? $this->template : $this->get_default_template_path(); + } + + /** + * @param string $template + */ + public function set_template( $template ) { + $this->template = $template; + } + + /** + * @return string + */ + public function get_label() { + return $this->label; + } + + /** + * @param string $label + */ + public function set_label( $label ) { + $this->label = $label; + } + + /** + * Returns only the visible tabs for this tabbed view. + * + * @return Tribe__Tabbed_View__Tab[] An array of all the active and visible tabs. + */ + public function get_visibles() { + return array_filter( $this->get(), [ $this, 'is_tab_visible' ] ); + } + + /** + * @param string $url + */ + public function set_url( $url ) { + $this->url = $url; + } + + /** + * Sets the slug of the currently active tab. + * + * This value, if the tab exists, will override the value specified in the GET request. + * + * @param string $active + */ + public function set_active( $active ) { + $this->active = $active; + } + + /** + * A method to sort tabs by priority in ascending order. + * + * @param object $a First tab to compare + * @param object $b Second tab to compare + * + * @return int + */ + protected function sort_by_priority( $a, $b ) { + $a_priority = $a->get_priority(); + $b_priority = $b->get_priority(); + + if ( $a_priority == $b_priority ) { + return 0; + } + + return ( $a_priority < $b_priority ) ? - 1 : 1; + } + + /** + * Removes a tab from the tabbed view items. + * + * @param string $slug The slug of the tab to remove + * + * @return boolean `true` if the slug was registered and removed, `false` otherwise + */ + public function remove( $slug ) { + if ( ! $this->exists( $slug ) ) { + return false; + } + + unset( $this->items[ $slug ] ); + + return true; + } + + /** + * Checks if a given tab exist + * + * @param string $slug The slug of the tab + * + * @return boolean + */ + public function exists( $slug ) { + return is_object( $this->get( $slug ) ) ? true : false; + } + + /** + * Fetches the Instance of the Tab or all the tabs + * + * @param string $slug (optional) The Slug of the Tab + * + * @return null|array|object If we couldn't find the tab it will be null, if the slug is null will return all tabs + */ + public function get( $slug = null ) { + uasort( $this->items, [ $this, 'sort_by_priority' ] ); + + if ( is_null( $slug ) ) { + return $this->items; + } + + // Prevent weird stuff here + $slug = sanitize_title_with_dashes( $slug ); + + if ( ! empty( $this->items[ $slug ] ) ) { + return $this->items[ $slug ]; + } + + return null; + } + + /** + * Checks if a given Tab (slug) is active + * + * @param string $slug The Slug of the Tab + * + * @return boolean Is this tab active? + */ + public function is_active( $slug = null ) { + $slug = $this->get_requested_slug( $slug ); + $tab = $this->get_active(); + + return $slug === $tab->get_slug(); + } + + /** + * Returns the slug of tab requested in the `_GET` array or the default one. + * + * @param string|null $slug + * @param mixed $default A default value to return if the tab was not requested. + * + * @return string|bool Either the slug of the requested tab or `false` if no slug was requested + * and no default tab is set. + */ + protected function get_requested_slug( $slug = null, $default = null ) { + if ( is_null( $slug ) ) { + $default = null === $default ? $this->get_default_tab() : $default; + // Set the slug + $slug = ! empty( $_GET['tab'] ) && $this->exists( $_GET['tab'] ) ? $_GET['tab'] : $default; + } + + return $slug; + } + + /** + * Fetches the current active tab instance. + * + * @return Tribe__Tabbed_View__Tab|bool The active tab, the default tab if no tab is active, + * `false` if no tabs are registered in the Tabbed View. + */ + public function get_active() { + if ( ! empty( $this->active ) && $this->exists( $this->active ) ) { + return $this->get( $this->active ); + } + + $tab = ! empty( $_GET['tab'] ) && $this->exists( $_GET['tab'] ) ? $_GET['tab'] : $this->get_default_tab(); + + // Return the active tab or the default one + return ! empty( $tab ) ? $this->get( $tab ) : false; + } + + /** + * Returns the slug of the default tab for this tabbed view. + * + * @return string The slug of the default tab, the slug of the first tab if + * a default tab is not set, `false` otherwise. + */ + public function get_default_tab() { + if ( ! empty( $this->default_tab ) && $this->exists( $this->default_tab ) ) { + return $this->default_tab; + } + + $tabs = $this->get_tabs(); + + if ( empty( $tabs ) ) { + return false; + } + + return reset( $tabs )->get_slug(); + } + + /** + * @param Tribe__Tabbed_View__Tab|string $tab + * + * @return Tribe__Tabbed_View__Tab + */ + public function register( $tab ) { + $is_object = $tab instanceof Tribe__Tabbed_View__Tab; + if ( ! ( $is_object || ( is_string( $tab ) && class_exists( $tab ) ) ) ) { + return false; + } + + if ( ! $is_object ) { + $tab = $this->get_new_tab_instance( $tab ); + } + + // Set the Tab Item on the array of Tabs + $tab_slug = $tab->get_slug(); + + if ( empty( $tab_slug ) ) { + return false; + } + + $this->items[ $tab_slug ] = $tab; + + // Return the tab + return $tab; + } + + /** + * Returns all the registered tabs. + * + * @return Tribe__Tabbed_View__Tab[] + */ + public function get_tabs() { + uasort( $this->items, [ $this, 'sort_by_priority' ] ); + + return array_values( $this->items ); + } + + /** + * Builds an instance of the specified tab class. + * + * @param string $tab_class + * + * @return Tribe__Tabbed_View__Tab + */ + protected function get_new_tab_instance( $tab_class ) { + return new $tab_class( $this ); + } + + /** + * Renders the tabbed view and returns the resulting HTML. + * + * @return string + */ + public function render() { + $visibles = $this->get_visibles(); + if ( empty( $visibles ) ) { + return ''; + } + + if ( empty( $this->template ) ) { + $this->template = $this->get_default_template_path(); + } + + $template = $this->template; + + if ( empty( $template ) ) { + return ''; + } + + $default_data = [ + 'view' => $this, + ]; + + $data = array_merge( $default_data, (array) $this->data ); + + extract( $data ); + + ob_start(); + + include $template; + + $html = ob_get_clean(); + + return $html; + } + + /** + * Sets the default tab for the tabbed view. + * + * Please note that no check is made on the tabbed view items to ensure the value + * corresponds to a registered tab. + * + * @param string $default_tab The slug of the default tab. + */ + public function set_default_tab( $default_tab ) { + $this->default_tab = $default_tab; + } + + /** + * @param Tribe__Tabbed_View__Tab $tab + * + * @return bool + */ + protected function is_tab_visible( Tribe__Tabbed_View__Tab $tab ) { + return $tab->is_visible(); + } + + /** + * Returns the absolute path to the default template for the tabbed view. + * + * @return string + */ + public function get_default_template_path() { + return Tribe__Main::instance()->plugin_path . '/src/admin-views/tabbed-view/tabbed-view.php'; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Tabbed_View/Tab.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Tabbed_View/Tab.php new file mode 100644 index 000000000..8032ed62b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Tabbed_View/Tab.php @@ -0,0 +1,238 @@ +tabbed_view = $tabbed_view; + $this->slug = ! empty( $slug ) ? $slug : $this->slug; + } + + /** + * @return int + */ + public function get_priority() { + return $this->priority; + } + + /** + * @param $priority + */ + public function set_priority( $priority ) { + $this->priority = $priority; + } + + /** + * @return array|object + */ + public function get_data() { + return $this->data; + } + + /** + * @param array $data + */ + public function set_data( $data ) { + $this->data = $data; + } + + /** + * @return string + */ + public function get_template() { + return ! empty( $this->template ) ? $this->template : $this->get_default_template_path(); + } + + /** + * @param string $template + */ + public function set_template( $template ) { + $this->template = $template; + } + + /** + * Returns the absolute path to the default template for the tab. + * + * @return string + */ + public function get_default_template_path() { + return Tribe__Main::instance()->plugin_path . '/src/admin-views/tabbed-view/tab.php'; + } + + /** + * Whether the tab should display or not. + * + * @return boolean + */ + public function is_visible() { + return $this->visible; + } + + /** + * @param boolean $visible + */ + public function set_visible( $visible ) { + $this->visible = $visible; + } + + /** + * @return string + */ + public function get_label() { + return $this->label; + } + + /** + * @param string $label + */ + public function set_label( $label ) { + $this->label = $label; + } + + /** + * Creates a way to include the this tab HTML easily + * + * @return string HTML content of the tab + */ + public function render() { + if ( empty( $this->template ) ) { + $this->template = Tribe__Main::instance()->plugin_path . '/src/admin-views/tabbed-view/tab.php'; + } + + $template = $this->template; + + if ( empty( $template ) ) { + return ''; + } + + $default_data = [ + 'tab' => $this, + ]; + + $data = array_merge( $default_data, (array) $this->data ); + + extract( $data ); + + ob_start(); + + include $template; + + $html = ob_get_clean(); + + return $html; + } + + /** + * Returns the link to this tab + * + * @param array|string $args Query String or Array with the arguments + * @param boolean $relative Return a relative URL or absolute + * + * @return string + */ + public function get_url( $args = [], $relative = false ) { + if ( ! empty( $this->url ) ) { + return $this->url; + } + + $defaults = [ + 'tab' => $this->get_slug(), + ]; + + // Allow the link to be "changed" on the fly + $args = wp_parse_args( $args, $defaults ); + + // Escape after the filter + return $this->tabbed_view->get_url( $args, $relative ); + } + + /** + * Sets this tab URL. + * + * This URL will override the tab natural URL. + * + * @param string $url + */ + public function set_url( $url ) { + $this->url = $url; + } + + /** + * Returns the tab slug + * + * @return string + */ + public function get_slug() { + return $this->slug; + } + + /** + * Determines if this Tab is currently displayed + * + * @return boolean + */ + public function is_active() { + $active = $this->tabbed_view->get_active(); + + return ! empty( $active ) ? $this->get_slug() === $active->get_slug() : false; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Template.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Template.php new file mode 100644 index 000000000..c752eacd1 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Template.php @@ -0,0 +1,1483 @@ + alias`. + * + * @since 4.12.10 + * + * @var array + */ + protected $aliases = []; + + /** + * Configures the class origin plugin path + * + * @since 4.6.2 + * + * @param object|string $origin The base origin for the templates + * + * @return self + */ + public function set_template_origin( $origin = null ) { + if ( empty( $origin ) ) { + $origin = $this->origin; + } + + if ( is_string( $origin ) ) { + // Origin needs to be a class with a `instance` method + if ( class_exists( $origin ) && method_exists( $origin, 'instance' ) ) { + $origin = call_user_func( [ $origin, 'instance' ] ); + } + } + + if ( + empty( $origin->plugin_path ) + && empty( $origin->pluginPath ) + && ! is_dir( $origin ) + ) { + throw new InvalidArgumentException( 'Invalid Origin Class for Template Instance' ); + } + + if ( is_string( $origin ) ) { + $this->template_base_path = array_filter( + (array) explode( + '/', + untrailingslashit( $origin ) + ) + ); + } else { + $this->origin = $origin; + + $this->template_base_path = untrailingslashit( + ! empty( $this->origin->plugin_path ) + ? $this->origin->plugin_path + : $this->origin->pluginPath + ); + } + + return $this; + } + + /** + * Configures the class with the base folder in relation to the Origin + * + * @since 4.6.2 + * + * @param array|string $folder Which folder we are going to look for templates + * + * @return self + */ + public function set_template_folder( $folder = null ) { + // Allows configuring a already set class + if ( ! isset( $folder ) ) { + $folder = $this->folder; + } + + // If Folder is String make it an Array + if ( is_string( $folder ) ) { + $folder = (array) explode( '/', $folder ); + } + + // Cast as Array and save + $this->folder = (array) $folder; + + return $this; + } + + /** + * Returns the array for which folder this template instance is looking into. + * + * @since 4.11.0 + * + * @return array Current folder we are looking for templates. + */ + public function get_template_folder() { + return $this->folder; + } + + /** + * Configures the class with the base folder in relation to the Origin + * + * @since 4.7.20 + * + * @param mixed $value Should we look for template files in the list of folders. + * + * @return self + */ + public function set_template_folder_lookup( $value = true ) { + $this->template_folder_lookup = tribe_is_truthy( $value ); + + return $this; + } + + /** + * Gets in this instance of the template engine whether we are looking public folders like themes. + * + * @since 4.12.1 + * + * @return bool Whether we are looking into theme folders. + */ + public function get_template_folder_lookup() { + return $this->template_folder_lookup; + } + + /** + * Configures the class global context + * + * @since 4.6.2 + * + * @param array $context Default global Context + * + * @return self + */ + public function add_template_globals( $context = [] ) { + // Cast as Array merge and save + $this->global = wp_parse_args( (array) $context, $this->global ); + + return $this; + } + + /** + * Configures if the class will extract context for template + * + * @since 4.6.2 + * + * @param bool $value Should we extract context for templates + * + * @return self + */ + public function set_template_context_extract( $value = false ) { + // Cast as bool and save + $this->template_context_extract = tribe_is_truthy( $value ); + + return $this; + } + + /** + * Set the current hook name for the template include. + * + * @since 4.12.1 + * + * @param string $value Which value will be saved as the current hook name. + * + * @return self Allow daisy-chaining. + */ + public function set_template_current_hook_name( $value ) { + $this->template_current_hook_name = (string) $value; + + return $this; + } + + /** + * Gets the hook name for the current template setup. + * + * @since 4.12.1 + * + * @return string Hook name currently set on the class. + */ + public function get_template_current_hook_name() { + return $this->template_current_hook_name; + } + + /** + * Sets an Index inside of the global or local context. + * Final to prevent extending the class when the `get` already exists on the child class. + * + * @see Tribe__Utils__Array::set() + * + * @since 4.6.2 + * + * @param array|string $index Specify each nested index in order. + * Example: [ 'lvl1', 'lvl2' ]; + * @param mixed $default Default value if the search finds nothing. + * @param boolean $is_local Use the Local or Global context. + * + * @return mixed The value of the specified index or the default if not found. + */ + final public function get( $index, $default = null, $is_local = true ) { + $context = $this->get_global_values(); + + if ( true === $is_local ) { + $context = $this->get_local_values(); + } + + /** + * Allows filtering the the getting of Context variables, also short circuiting + * Following the same structure as WP Core + * + * @since 4.6.2 + * + * @param mixed $value The value that will be filtered. + * @param array|string $index Specify each nested index in order. + * Example: [ 'lvl1', 'lvl2' ]; + * @param mixed $default Default value if the search finds nothing. + * @param boolean $is_local Use the Local or Global context. + * @param self $template Current instance of the Tribe__Template. + */ + $value = apply_filters( 'tribe_template_context_get', null, $index, $default, $is_local, $this ); + + if ( null !== $value ) { + return $value; + } + + return Tribe__Utils__Array::get( $context, $index, $default ); + } + + /** + * Sets a Index inside of the global or local context + * Final to prevent extending the class when the `set` already exists on the child class + * + * @since 4.6.2 + * + * @see Tribe__Utils__Array::set + * + * @param string|array $index To set a key nested multiple levels deep pass an array + * specifying each key in order as a value. + * Example: array( 'lvl1', 'lvl2', 'lvl3' ); + * @param mixed $value The value. + * @param boolean $is_local Use the Local or Global context + * + * @return array Full array with the key set to the specified value. + */ + final public function set( $index, $value = null, $is_local = true ) { + if ( true === $is_local ) { + $this->context = Tribe__Utils__Array::set( $this->context, $index, $value ); + + return $this->context; + } + + $this->global = Tribe__Utils__Array::set( $this->global, $index, $value ); + + return $this->global; + } + + /** + * Merges local and global context, and saves it locally. + * + * @since 4.6.2 + * + * @param array $context Local Context array of data. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * + * @return array + */ + public function merge_context( $context = [], $file = null, $name = null ) { + // Allow for simple null usage as well as array() for nothing + if ( is_null( $context ) ) { + $context = []; + } + + // Applies new local context on top of Global + Previous local. + $context = wp_parse_args( (array) $context, $this->get_values() ); + + /** + * Allows filtering the Local context. + * + * @since 4.6.2 + * + * @param array $context Local Context array of data. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + $this->context = apply_filters( 'tribe_template_context', $context, $file, $name, $this ); + + $hook_name = $this->get_template_current_hook_name(); + + /** + * Allows filtering the Local context specifically to the template with the hook name passed to the method. + * + * @since 4.12.13 + * + * @param array $context Local Context array of data. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + $this->context = apply_filters( "tribe_template_context:{$hook_name}", $this->context, $file, $name, $this ); + + return $this->context; + } + + /** + * Fetches the path for locating files in the Plugin Folder + * + * @since 4.7.20 + * + * @return string + */ + protected function get_template_plugin_path() { + // Craft the plugin Path + $path = array_merge( (array) $this->template_base_path, $this->folder ); + + // Implode to avoid Window Problems + $path = implode( DIRECTORY_SEPARATOR, $path ); + + /** + * Allows filtering of the base path for templates + * + * @since 4.7.20 + * + * @param string $path Complete path to include the base plugin folder + * @param self $template Current instance of the Tribe__Template + */ + return apply_filters( 'tribe_template_plugin_path', $path, $this ); + } + + /** + * Fetches the Namespace for the public paths, normally folders to look for + * in the theme's directory. + * + * @since 4.7.20 + * @since 4.11.0 Added param $plugin_namespace. + * + * @param string $plugin_namespace Overwrite the origin namespace with a given one. + * + * @return array Namespace where we to look for templates. + */ + protected function get_template_public_namespace( $plugin_namespace ) { + $namespace = [ + 'tribe', + ]; + + if ( ! empty( $plugin_namespace ) ) { + $namespace[] = $plugin_namespace; + } elseif ( ! empty( $this->origin->template_namespace ) ) { + $namespace[] = $this->origin->template_namespace; + } + + /** + * Allows filtering of the base path for templates + * + * @since 4.7.20 + * + * @param array $namespace Which is the namespace we will look for files in the theme + * @param self $template Current instance of the Tribe__Template + */ + return apply_filters( 'tribe_template_public_namespace', $namespace, $this ); + } + + /** + * Fetches which base folder we look for templates in the origin plugin. + * + * @since 4.10.2 + * + * @return array The base folders we look for templates in the origin plugin. + */ + public function get_template_origin_base_folder() { + /** + * Allows filtering of the base path for templates. + * + * @since 4.10.2 + * + * @param array $namespace Which is the base folder we will look for files in the plugin. + * @param self $template Current instance of the Tribe__Template. + */ + return apply_filters( 'tribe_template_origin_base_folder', $this->template_origin_base_folder, $this ); + } + + /** + * Fetches the path for locating files given a base folder normally theme related. + * + * @since 4.7.20 + * @since 4.11.0 Added the param $namespace. + * + * @param mixed $base Base path to look into. + * @param string $namespace Adds the plugin namespace to the path returned. + * + * @return string The public path for a given base.˙˙ + */ + protected function get_template_public_path( $base, $namespace ) { + + // Craft the plugin Path + $path = array_merge( (array) $base, (array) $this->get_template_public_namespace( $namespace ) ); + + // Pick up if the folder needs to be added to the public template path. + $folder = array_diff( $this->folder, $this->get_template_origin_base_folder() ); + + if ( ! empty( $folder ) ) { + $path = array_merge( $path, $folder ); + } + + // Implode to avoid Window Problems + $path = implode( DIRECTORY_SEPARATOR, $path ); + + /** + * Allows filtering of the base path for templates + * + * @since 4.7.20 + * + * @param string $path Complete path to include the base public folder + * @param self $template Current instance of the Tribe__Template + */ + return apply_filters( 'tribe_template_public_path', $path, $this ); + } + + /** + * Fetches the folders in which we will look for a given file + * + * @since 4.7.20 + * @since 4.12.10 Add support for common lookup. + * + * @return array A list of possible locations for the template file. + */ + protected function get_template_path_list() { + $folders = []; + + $folders['plugin'] = [ + 'id' => 'plugin', + 'priority' => 20, + 'path' => $this->get_template_plugin_path(), + ]; + + if ( $this->common_lookup ) { + // After the plugin (due to priority) look into Common too. + $folders['common'] = [ + 'id' => 'common', + 'priority' => 100, + 'path' => $this->get_template_common_path(), + ]; + } + + $folders = array_merge( $folders, $this->apply_aliases( $folders ) ); + + /** + * Allows filtering of the list of folders in which we will look for the + * template given. + * + * @since 4.7.20 + * + * @param array $folders Complete path to include the base public folder + * @param self $template Current instance of the Tribe__Template + */ + $folders = (array) apply_filters( 'tribe_template_path_list', $folders, $this ); + + uasort( $folders, 'tribe_sort_by_priority' ); + + return $folders; + } + + /** + * Get the list of theme related folders we will look up for the template. + * + * @since 4.11.0 + * + * @param string $namespace Which plugin namespace we are looking for. + * + * @return array + */ + protected function get_template_theme_path_list( $namespace ) { + $folders = []; + + $folders['child-theme'] = [ + 'id' => 'child-theme', + 'priority' => 10, + 'path' => $this->get_template_public_path( STYLESHEETPATH, $namespace ), + ]; + $folders['parent-theme'] = [ + 'id' => 'parent-theme', + 'priority' => 15, + 'path' => $this->get_template_public_path( TEMPLATEPATH, $namespace ), + ]; + + /** + * Allows filtering of the list of theme folders in which we will look for the template. + * + * @since 4.11.0 + * + * @param array $folders Complete path to include the base public folder. + * @param string $namespace Loads the files from a specified folder from the themes. + * @param self $template Current instance of the Tribe__Template. + */ + $folders = (array) apply_filters( 'tribe_template_theme_path_list', $folders, $namespace, $this ); + + uasort( $folders, 'tribe_sort_by_priority' ); + + return $folders; + } + + /** + * Tries to locate the correct file we want to load based on the Template class + * configuration and it's list of folders + * + * @since 4.7.20 + * + * @param mixed $name File name we are looking for. + * + * @return string + */ + public function get_template_file( $name ) { + // If name is String make it an Array + if ( is_string( $name ) ) { + $name = (array) explode( '/', $name ); + } + + $folders = $this->get_template_path_list(); + $found_file = false; + $namespace = false; + + foreach ( $folders as $folder ) { + if ( empty( $folder['path'] ) ) { + continue; + } + + // Build the File Path + $file = Paths::merge( $folder['path'], $name ); + + // Append the Extension to the file path + $file .= '.php'; + + // Skip non-existent files + if ( file_exists( $file ) ) { + $found_file = $file; + $namespace = ! empty( $folder['namespace'] ) ? $folder['namespace'] : false; + break; + } + } + + if ( $this->get_template_folder_lookup() ) { + $theme_folders = $this->get_template_theme_path_list( $namespace ); + + foreach ( $theme_folders as $folder ) { + if ( empty( $folder['path'] ) ) { + continue; + } + + // Build the File Path + $file = implode( DIRECTORY_SEPARATOR, array_merge( (array) $folder['path'], $name ) ); + + // Append the Extension to the file path + $file .= '.php'; + + // Skip non-existent files + if ( file_exists( $file ) ) { + $found_file = $file; + break; + } + } + } + + if ( $found_file ) { + /** + * A more Specific Filter that will include the template name + * + * @since 4.6.2 + * @since 4.7.20 The $name param no longer contains the extension + * + * @param string $file Complete path to include the PHP File + * @param array $name Template name + * @param self $template Current instance of the Tribe__Template + */ + return apply_filters( 'tribe_template_file', $found_file, $name, $this ); + } + + // Couldn't find a template on the Stack + return false; + } + + /** + * Runs the entry point hooks and filters. + * + * @param string $entry_point_name The name of the entry point. + * @param boolean $echo If we should also print the entry point content. + * + * @return null|string `null` if an entry point is disabled or the entry point HTML. + */ + public function do_entry_point( $entry_point_name, $echo = true ) { + $hook_name = $this->get_template_current_hook_name(); + + /** + * Filter if the entry points are enabled. + * + * @since 4.12.1 + * + * @param boolean $is_enabled Is entry_point enabled. + * @param string $hook_name For which template include this entry point belongs. + * @param string $entry_point_name Which entry point specifically we are triggering. + * @param self $template Current instance of the template class doing this entry point. + */ + $is_entry_point_enabled = apply_filters( 'tribe_template_entry_point_is_enabled', true, $hook_name, $entry_point_name, $this ); + + if ( ! $is_entry_point_enabled ) { + return null; + } + + ob_start(); + + if ( has_action( "tribe_template_entry_point:{$hook_name}" ) ) { + /** + * Generic entry point action for the current template. + * + * @since 4.12.1 + * + * @param string $hook_name For which template include this entry point belongs. + * @param string $entry_point_name Which entry point specifically we are triggering. + * @param self $template Current instance of the template class doing this entry point. + */ + do_action( "tribe_template_entry_point:{$hook_name}", $hook_name, $entry_point_name, $this ); + } + + if ( has_action( "tribe_template_entry_point:{$hook_name}:{$entry_point_name}" ) ) { + /** + * Specific named entry point action called. + * + * @since 4.12.1 + * + * @param string $hook_name For which template include this entry point belongs. + * @param string $entry_point_name Which entry point specifically we are triggering. + * @param self $template Current instance of the template class doing this entry point. + */ + do_action( "tribe_template_entry_point:{$hook_name}:{$entry_point_name}", $hook_name, $entry_point_name, $this ); + } + + $html = ob_get_clean(); + + if ( has_filter( "tribe_template_entry_point_html:{$hook_name}" ) ) { + /** + * Generic entry point action for the current template. + * + * @since 4.12.1 + * + * @param string $html HTML returned and/or echoed for this for this entry point. + * @param string $hook_name For which template include this entry point belongs. + * @param string $entry_point_name Which entry point specifically we are triggering. + * @param self $template Current instance of the template class doing this entry point. + */ + $html = apply_filters( "tribe_template_entry_point_html:{$hook_name}", $html, $hook_name, $entry_point_name, $this ); + } + + if ( has_filter( "tribe_template_entry_point_html:{$hook_name}:{$entry_point_name}" ) ) { + /** + * Specific named entry point action called. + * + * @since 4.12.1 + * + * @param string $html HTML returned and/or echoed for this for this entry point. + * @param string $hook_name For which template include this entry point belongs. + * @param string $entry_point_name Which entry point specifically we are triggering. + * @param self $template Current instance of the template class doing this entry point. + */ + $html = apply_filters( "tribe_template_entry_point_html:{$hook_name}:{$entry_point_name}", $html, $hook_name, $entry_point_name, $this ); + } + + if ( $echo ) { + echo $html; + } + + return $html; + } + + /** + * A very simple method to include a Template, allowing filtering and additions using hooks. + * + * @since 4.6.2 + * + * @param string|array $name Which file we are talking about including. + * If an array, each item will add a directory separator to get to the single template. + * @param array $context Any context data you need to expose to this file + * @param boolean $echo If we should also print the Template + * + * @return string|false Either the final content HTML or `false` if no template could be found. + */ + public function template( $name, $context = [], $echo = true ) { + static $file_exists = []; + static $files = []; + static $template_names = []; + + /** + * Allow users to disable templates before rendering it by returning empty string. + * + * @since 4.12.0 + * + * @param string null Whether to continue displaying the template or not. + * @param array $name Template name. + * @param array $context Any context data you need to expose to this file. + * @param boolean $echo If we should also print the Template. + */ + $done = apply_filters( 'tribe_template_done', null, $name, $context, $echo ); + + if ( null !== $done ) { + return false; + } + + // Key we'll use for in-memory caching of expensive operations. + $cache_name_key = is_array( $name ) ? implode( '/', $name ) : $name; + + // Cache template name massaging so we don't have to repeat these actions. + if ( ! isset( $template_names[ $cache_name_key ] ) ) { + // If name is String make it an Array + if ( is_string( $name ) ) { + $name = (array) explode( '/', $name ); + } + + // Clean this Variable + $name = array_map( 'sanitize_title_with_dashes', $name ); + + $template_names[ $cache_name_key ] = $name; + } + + // Cache file location and existence. + if ( + ! isset( $file_exists[ $cache_name_key ] ) + || ! isset( $files[ $cache_name_key ] ) + ) { + // Check if the file exists + $files[ $cache_name_key ] = $file = $this->get_template_file( $name ); + + // Check if it's a valid variable + if ( ! $file ) { + return $file_exists[ $cache_name_key ] = false; + } + + // Before we load the file we check if it exists + if ( ! file_exists( $file ) ) { + return $file_exists[ $cache_name_key ] = false; + } + + $file_exists[ $cache_name_key ] = true; + } + + // If the file doesn't exist, bail. + if ( ! $file_exists[ $cache_name_key ] ) { + return false; + } + + // Use filename stored in cache. + $file = $files[ $cache_name_key ]; + $name = $template_names[ $cache_name_key ]; + $origin_folder_appendix = array_diff( $this->folder, $this->template_origin_base_folder ); + + if ( $origin_namespace = $this->template_get_origin_namespace( $file ) ) { + $legacy_namespace = array_merge( (array) $origin_namespace, $name ); + $namespace = array_merge( (array) $origin_namespace, $origin_folder_appendix, $name ); + } else { + $legacy_namespace = $name; + $namespace = array_merge( $origin_folder_appendix, $legacy_namespace ); + } + + // Setup the Hook name. + $legacy_hook_name = implode( '/', $legacy_namespace ); + $hook_name = implode( '/', $namespace ); + $prev_hook_name = $this->get_template_current_hook_name(); + + // Store the current hook name for the purposes of entry-points. + $this->set_template_current_hook_name( $hook_name ); + + /** + * Allow users to filter the HTML before rendering + * + * @since 4.11.0 + * + * @param string $html The initial HTML + * @param string $file Complete path to include the PHP File + * @param array $name Template name + * @param self $template Current instance of the Tribe__Template + */ + $pre_html = apply_filters( 'tribe_template_pre_html', null, $file, $name, $this ); + + /** + * Allow users to filter the HTML by the name before rendering + * + * E.g.: + * `tribe_template_pre_html:events/blocks/parts/details` + * `tribe_template_pre_html:events/embed` + * `tribe_template_pre_html:tickets/login-to-purchase` + * + * @since 4.11.0 + * + * @param string $html The initial HTML + * @param string $file Complete path to include the PHP File + * @param array $name Template name + * @param self $template Current instance of the Tribe__Template + */ + $pre_html = apply_filters( "tribe_template_pre_html:{$hook_name}", $pre_html, $file, $name, $this ); + + if ( null !== $pre_html ) { + return $pre_html; + } + + // Merges the local data passed to template to the global scope + $this->merge_context( $context, $file, $name ); + + $before_include_html = $this->actions_before_template( $file, $name, $hook_name ); + $before_include_html = $this->filter_template_before_include_html( $before_include_html, $file, $name, $hook_name ); + + $include_html = $this->template_safe_include( $file ); + $include_html = $this->filter_template_include_html( $include_html, $file, $name, $hook_name ); + + $after_include_html = $this->actions_after_template( $file, $name, $hook_name ); + $after_include_html = $this->filter_template_after_include_html( $after_include_html, $file, $name, $hook_name ); + + // Only fetch the contents after the action + $html = $before_include_html . $include_html . $after_include_html; + + $html = $this->filter_template_html( $html, $file, $name, $hook_name ); + + // Tries to hook container entry points in the HTML. + $html = $this->template_hook_container_entry_points( $html ); + + if ( $echo ) { + echo $html; + } + + // Revert the current hook name. + $this->set_template_current_hook_name( $prev_hook_name ); + + return $html; + } + + /** + * Run the hooks for the container entry points. + * + * @since 4.12.1 + * + * @param string $html The html of the current template. + * + * @return string|false Either the final entry point content HTML or `false` if no entry point could be found or set to false. + */ + private function template_hook_container_entry_points( $html ) { + + $matches = $this->get_entry_point_matches( $html ); + $html_matches = $matches[0]; + + if ( 0 === count( $html_matches ) ) { + return $html; + } + + $html_tags = $matches['tag']; + $html_tags_ends = $matches['is_end']; + + // Get first and last tags. + $first_tag = reset( $html_tags ); + $last_tag = end( $html_tags ); + + // Determine if first last tags are tag ends. + $first_tag_is_end = '/' === reset( $html_tags_ends ); + $last_tag_is_end = '/' === end( $html_tags_ends ); + + // When first and last tag are not the same, bail. + if ( $first_tag !== $last_tag ) { + return $html; + } + + // If the first tag is a html tag end, bail. + if ( $first_tag_is_end ) { + return $html; + } + + // If the last tag is not and html tag end, bail. + if ( ! $last_tag_is_end ) { + return $html; + } + + $first_tag_html = reset( $html_matches ); + $last_tag_html = end( $html_matches ); + + $open_container_entry_point_html = $this->do_entry_point( 'after_container_open', false ); + $close_container_entry_point_html = $this->do_entry_point( 'before_container_close', false ); + + $html = Strings::replace_first( $first_tag_html, $first_tag_html . $open_container_entry_point_html, $html ); + $html = Strings::replace_last( $last_tag_html, $close_container_entry_point_html . $last_tag_html, $html ); + + return $html; + } + + /** + * Based on a path it determines what is the namespace that should be used. + * + * @since 4.11.0 + * + * @param string $path Which file we are going to load. + * + * @return string|false The found namespace for that path or false. + */ + public function template_get_origin_namespace( $path ) { + $matching_namespace = false; + /** + * Allows more namespaces to be added based on the path of the file we are loading. + * + * @since 4.11.0 + * + * @param array $namespace_map Indexed array containing the namespace as the key and path to `strpos`. + * @param string $path Path we will do the `strpos` to validate a given namespace. + * @param self $template Current instance of the template class. + */ + $namespace_map = (array) apply_filters( 'tribe_template_origin_namespace_map', [], $path, $this ); + + foreach ( $namespace_map as $namespace => $contains_string ) { + // Normalize the trailing slash to the current OS directory separator. + $contains_string = rtrim( $contains_string, '\\/' ) . DIRECTORY_SEPARATOR; + + // Skip when we don't have the namespace path. + if ( false === strpos( $path, $contains_string ) ) { + continue; + } + + $matching_namespace = $namespace; + + // Once the first namespace is found it breaks out. + break; + } + + if ( empty( $matching_namespace ) && ! empty( $this->origin->template_namespace ) ) { + $matching_namespace = $this->origin->template_namespace; + } + + return $matching_namespace; + } + + /** + * Includes a give PHP inside of a safe context. + * + * This method is required to prevent template files messing with local variables used inside of the + * `self::template` method. Also shelters the template loading from any possible variables that could + * be overwritten by the context. + * + * @since 4.11.0 + * + * @param string $file Which file will be included with safe context. + * + * @return string Contents of the included file. + */ + public function template_safe_include( $file ) { + ob_start(); + // We use this instance variable to prevent collisions. + $this->template_current_file_path = $file; + unset( $file ); + + // Only do this if really needed (by default it won't). + if ( true === $this->template_context_extract && ! empty( $this->context ) ) { + // Make any provided variables available in the template variable scope. + extract( $this->context ); // @phpcs:ignore + } + + include $this->template_current_file_path; + + // After the include we reset the variable. + unset( $this->template_current_file_path ); + return ob_get_clean(); + } + + /** + * Sets a number of values at the same time. + * + * @since 4.9.11 + * + * @param array $values An associative key/value array of the values to set. + * @param bool $is_local Whether to set the values as global or local; defaults to local as the `set` method does. + * + * @see Tribe__Template::set() + */ + public function set_values( array $values = [], $is_local = true ) { + foreach ( $values as $key => $value ) { + $this->set( $key, $value, $is_local ); + } + } + + /** + * Returns the Template global context. + * + * @since 4.9.11 + * + * @return array An associative key/value array of the Template global context. + */ + public function get_global_values() { + return $this->global; + } + + /** + * Returns the Template local context. + * + * @since 4.9.11 + * + * @return array An associative key/value array of the Template local context. + */ + public function get_local_values() { + return $this->context; + } + + /** + * Returns the Template global and local context values. + * + * Local values will override the template global context values. + * + * @since 4.9.11 + * + * @return array An associative key/value array of the Template global and local context. + */ + public function get_values() { + return array_merge( $this->get_global_values(), $this->get_local_values() ); + } + + /** + * Get the Entry Point Matches. + * + * @since 4.12.1 + * + * @param string $html The html of the current template. + * + * @return array An array of matches from the regular expression. + */ + private function get_entry_point_matches( $html ) { + $regexp = '/<(?\/)*(?[A-Z0-9]*)(?:\b)*[^>]*>/mi'; + + preg_match_all( $regexp, $html, $matches ); + + return $matches; + } + + /** + * Fetches the path for locating files in the Common folder part of the plugin that is currently providing it. + * + * Note: the Common path will be dependent on the version that is loaded from the plugin that is bundling it. + * E.g. if both TEC and ET are active (both will bundle Common) and the ET version of Common has been loaded as + * most recent and the ET version of Common does not have a template file, then the template file will not be found. + * This will allow versioning the existence and nature of the template files part of common. + * + * @since 4.12.10 + * + * @return string The absolute path, with no guarantee of its existence, to the Common version of the template file. + */ + protected function get_template_common_path() { + // As base path use the current location of Common, remove the trailing slash. + $common_abs_path = untrailingslashit( Tribe__Main::instance()->plugin_path ); + $path = array_merge( (array) $common_abs_path, $this->folder ); + + // Implode to avoid problems on Windows hosts. + $path = implode( DIRECTORY_SEPARATOR, $path ); + + /** + * Allows filtering the path to a template provided by Common. + * + * @since 4.12.10 + * + * @param string $path Complete path to include the base folder of common part of the plugin. + * @param self $template Current instance of the Tribe__Template. + */ + return apply_filters( 'tribe_template_common_path', $path, $this ); + } + + /** + * Sets the aliases the template should use. + * + * @since 4.12.10 + * + * @param array $aliases A map of aliases that should be used to add lookup locations, in the format + * `[ original => alias ]`; + * + * @return static This instance, for method chaining. + */ + public function set_aliases( array $aliases = [] ) { + $this->aliases = $aliases; + + return $this; + } + + /** + * Applies the template path aliases, if any, to a list of folders. + * + * @since 4.12.10 + * + * @param array $folders The list of folder to apply the aliases to, if any. + * + * @return array The list of new folder entries to add to the folders, in the same input format of the + * folders. + */ + protected function apply_aliases( array $folders ) { + $new_folders = []; + if ( ! empty( $this->aliases ) ) { + foreach ( $folders as $folder_name => $folder ) { + $original_path = $folder['path']; + foreach ( $this->aliases as $original => $alias ) { + // Since an alias could be a path, we take care to handle it with the current directory separator. + list( $normalized_original, $normalized_alias ) = str_replace(['\\','/'] , DIRECTORY_SEPARATOR, [ $original, $alias ] ); + if ( false === strpos( $original_path, $normalized_original ) ) { + continue; + } + + $alias_path = str_replace( $normalized_original, $normalized_alias, $original_path ); + + $new = $folder; + $new['path'] = $alias_path; + $new['priority'] = (int) $new['priority'] + 1; + $new_folders[ $folder_name . '_' . $alias ] = $new; + } + } + } + return $new_folders; + } + + + /** + * Filters the full HTML for the template. + * + * @since 4.13.0 + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param string $hook_name The hook used to create the filter by name. + * + * @return string HTML after filtering. + */ + protected function filter_template_html( $html, $file, $name, $hook_name ) { + /** + * Allow users to filter the final HTML. + * + * @since 4.6.2 + * @since 4.7.20 The $name param no longer contains the extension + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + $html = apply_filters( 'tribe_template_html', $html, $file, $name, $this ); + + /** + * Allow users to filter the final HTML by the name. + * + * E.g.: + * `tribe_template_html:events/blocks/parts/details` + * `tribe_template_html:events/embed` + * `tribe_template_html:tickets/login-to-purchase` + * + * @since 4.7.20 + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + $html = apply_filters( "tribe_template_html:{$hook_name}", $html, $file, $name, $this ); + + return $html; + } + + /** + * Filters the HTML for the Before include actions. + * + * @since 4.13.0 + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param string $hook_name The hook used to create the filter by name. + * + * @return string HTML after filtering. + */ + protected function filter_template_before_include_html( $html, $file, $name, $hook_name ) { + /** + * Allow users to filter the Before include actions. + * + * @since 4.13.0 + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + $html = apply_filters( 'tribe_template_before_include_html', $html, $file, $name, $this ); + + /** + * Allow users to filter the Before include actions by name. + * + * E.g.: + * `tribe_template_before_include_html:events/blocks/parts/details` + * `tribe_template_before_include_html:events/embed` + * `tribe_template_before_include_html:tickets/login-to-purchase` + * + * @since 4.13.0 + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + $html = apply_filters( "tribe_template_before_include_html:{$hook_name}", $html, $file, $name, $this ); + + return $html; + } + + /** + * Filters the HTML for the PHP safe include. + * + * @since 4.13.0 + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param string $hook_name The hook used to create the filter by name. + * + * @return string HTML after filtering. + */ + protected function filter_template_include_html( $html, $file, $name, $hook_name ) { + /** + * Allow users to filter the PHP template include actions. + * + * @since 4.13.0 + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + $html = apply_filters( 'tribe_template_include_html', $html, $file, $name, $this ); + + /** + * Allow users to filter the PHP template include actions by name. + * + * E.g.: + * `tribe_template_include_html:events/blocks/parts/details` + * `tribe_template_include_html:events/embed` + * `tribe_template_include_html:tickets/login-to-purchase` + * + * @since 4.13.0 + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + $html = apply_filters( "tribe_template_include_html:{$hook_name}", $html, $file, $name, $this ); + + return $html; + } + + /** + * Filters the HTML for the after include actions. + * + * @since 4.13.0 + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param string $hook_name The hook used to create the filter by name. + * + * @return string HTML after filtering. + */ + protected function filter_template_after_include_html( $html, $file, $name, $hook_name ) { + /** + * Allow users to filter the after include actions. + * + * @since 4.13.0 + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + $html = apply_filters( 'tribe_template_after_include_html', $html, $file, $name, $this ); + + /** + * Allow users to filter the after include actions by name. + * + * E.g.: + * `tribe_template_after_include_html:events/blocks/parts/details` + * `tribe_template_after_include_html:events/embed` + * `tribe_template_after_include_html:tickets/login-to-purchase` + * + * @since 4.13.0 + * + * @param string $html The final HTML. + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + $html = apply_filters( "tribe_template_after_include_html:{$hook_name}", $html, $file, $name, $this ); + + return $html; + } + + /** + * Fires of actions before including the template. + * + * @since 4.13.0 + * + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param string $hook_name The hook used to create the filter by name. + * + * @return string HTML printed by the before actions. + */ + protected function actions_before_template( $file, $name, $hook_name ) { + ob_start(); + + /** + * Fires an Action before including the template file + * + * @since 4.13.0 + * + * @param string $file Complete path to include the PHP File + * @param array $name Template name + * @param self $template Current instance of the Tribe__Template + */ + do_action( 'tribe_template_before_include', $file, $name, $this ); + + /** + * Fires an Action for a given template name before including the template file, + * + * E.g.: + * `tribe_template_before_include:events/blocks/parts/details` + * `tribe_template_before_include:events/embed` + * `tribe_template_before_include:tickets/login-to-purchase` + * + * @since 4.13.0 + * + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + do_action( "tribe_template_before_include:{$hook_name}", $file, $name, $this ); + + return ob_get_clean(); + } + + /** + * Fires of actions after including the template. + * + * @since 4.13.0 + * + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param string $hook_name The hook used to create the filter by name. + * + * @return string HTML printed by the after actions. + */ + protected function actions_after_template( $file, $name, $hook_name ) { + ob_start(); + /** + * Fires an Action after including the template file. + * + * @since 4.13.0 + * + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + do_action( 'tribe_template_after_include', $file, $name, $this ); + + /** + * Fires an Action for a given template name after including the template file. + * + * E.g.: + * `tribe_template_after_include:events/blocks/parts/details` + * `tribe_template_after_include:events/embed` + * `tribe_template_after_include:tickets/login-to-purchase` + * + * @since 4.13.0 + * + * @param string $file Complete path to include the PHP File. + * @param array $name Template name. + * @param self $template Current instance of the Tribe__Template. + */ + do_action( "tribe_template_after_include:{$hook_name}", $file, $name, $this ); + + return ob_get_clean(); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Template_Part_Cache.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Template_Part_Cache.php new file mode 100644 index 000000000..3a3e99ac6 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Template_Part_Cache.php @@ -0,0 +1,123 @@ +template = $template; + $this->key = $template . '_' . $id; + $this->expiration = $expiration; + $this->expiration_trigger = $expiration_trigger; + $this->cache = new Tribe__Cache(); + + $this->add_hooks(); + } + + /** + * Hook in to show cached content and bypass queries where needed + */ + public function add_hooks() { + + // set the cached html in transients after the template part is included + add_filter( 'tribe_get_template_part_content', [ $this, 'set' ], 10, 2 ); + + // get the cached html right before the setup_view runs so it's available for bypassing any view logic + add_action( 'tribe_events_before_view', [ $this, 'get' ], 9, 1 ); + + // when the specified template part is included, show the cached html instead + add_filter( 'tribe_get_template_part_path_' . $this->template, [ $this, 'display' ] ); + } + + /** + * Checks if there is a cached html fragment in the transients, if it's there, + * don't include the requested file path. If not, just return the file path like normal + * + * @param $path file path to the month view template part + * + * @return bool + * @uses tribe_get_template_part_path_[template] hook + */ + public function display( $path ) { + + if ( $this->html !== false ) { + echo $this->html; + + return false; + } + + return $path; + + } + + /** + * Set cached html in transients + * + * @param $html + * @param $template + * + * @return string + * @uses tribe_get_template_part_content hook + */ + public function set( $html, $template ) { + if ( $template == $this->template ) { + $this->cache->set_transient( $this->key, $html, $this->expiration, $this->expiration_trigger ); + } + + return $html; + } + + /** + * Retrieve the cached html from transients, set class property + * + * @uses tribe_events_before_view hook + */ + public function get() { + + if ( isset( $this->html ) ) { + + return $this->html; + } + + $this->html = $this->cache->get_transient( $this->key, $this->expiration_trigger ); + + return $this->html; + + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Templates.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Templates.php new file mode 100644 index 000000000..9e0857cbb --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Templates.php @@ -0,0 +1,79 @@ +is_main_query(); + } + + /** + * Look for the stylesheets. Fall back to $fallback path if the stylesheets can't be located or the array is empty. + * + * @param array|string $stylesheets Path to the stylesheet + * @param bool|string $fallback Path to fallback stylesheet + * + * @return bool|string Path to stylesheet + */ + public static function locate_stylesheet( $stylesheets, $fallback = false ) { + if ( ! is_array( $stylesheets ) ) { + $stylesheets = [ $stylesheets ]; + } + if ( empty( $stylesheets ) ) { + return $fallback; + } + foreach ( $stylesheets as $filename ) { + if ( file_exists( get_stylesheet_directory() . '/' . $filename ) ) { + $located = trailingslashit( get_stylesheet_directory_uri() ) . $filename; + break; + } else { + if ( file_exists( get_template_directory() . '/' . $filename ) ) { + $located = trailingslashit( get_template_directory_uri() ) . $filename; + break; + } + } + } + if ( empty( $located ) ) { + return $fallback; + } + + return $located; + } + + /** + * Add our own method is_embed to check by WordPress Version and function is_embed + * to prevent fatal errors in WordPress 4.3 and earlier + * + * @version 4.2.1 + */ + public static function is_embed() { + global $wp_version; + if ( version_compare( $wp_version, '4.4', '<' ) || ! function_exists( 'is_embed' ) ) { + return false; + } + + return is_embed(); + + } + +}//end class diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Terms.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Terms.php new file mode 100644 index 000000000..7810dd9fb --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Terms.php @@ -0,0 +1,56 @@ +to_array(); + } elseif ( is_numeric( $term ) ) { + $term = absint( $term ); + $term_info = get_term( $term, $taxonomy, ARRAY_A ); + } else { + $term_info = term_exists( $term, $taxonomy ); + } + + if ( ! $term_info ) { + // Skip if a non-existent term ID is passed. + if ( is_numeric( $term ) ) { + continue; + } + + if ( true == $create_missing ) { + $term_info = wp_insert_term( $term, $taxonomy ); + } else { + continue; + } + } + + if ( is_wp_error( $term_info ) ) { + continue; + } + + $term_ids[] = $term_info['term_id']; + } + + return array_unique( $term_ids ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Timezones.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Timezones.php new file mode 100644 index 000000000..2edd8f3d6 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Timezones.php @@ -0,0 +1,633 @@ +format( 'T' ); + + // If PHP date "T" format is a -03 or +03, it's a bugged abbreviation, we can find it manually. + if ( 0 === strpos( $abbr, '-' ) || 0 === strpos( $abbr, '+' ) ) { + $abbreviations = timezone_abbreviations_list(); + + foreach ( $abbreviations as $abbreviation => $timezones ) { + foreach ( $timezones as $timezone ) { + if ( $timezone['timezone_id'] === $timezone_string ) { + return strtoupper( $abbreviation ); + } + } + } + } + } catch ( Exception $e ) { + $abbr = ''; + } + + return $abbr; + } + + /** + * Helper function to retrieve the timezone string for a given UTC offset + * + * This is a close copy of WooCommerce's wc_timezone_string() method + * + * @param string $offset UTC offset + * + * @return string + */ + public static function generate_timezone_string_from_utc_offset( $offset ) { + if ( ! self::is_utc_offset( $offset ) ) { + return $offset; + } + + // ensure we have the minutes on the offset + if ( ! strpos( $offset, ':' ) ) { + $offset .= ':00'; + } + + $offset = str_replace( 'UTC', '', $offset ); + + list( $hours, $minutes ) = explode( ':', $offset ); + $seconds = $hours * 60 * 60 + $minutes * 60; + + // attempt to guess the timezone string from the UTC offset + $timezone = timezone_name_from_abbr( '', $seconds, 0 ); + + if ( false === $timezone ) { + $is_dst = (bool) date( 'I' ); + + foreach ( timezone_abbreviations_list() as $abbr ) { + foreach ( $abbr as $city ) { + if ( + (bool) $city['dst'] === $is_dst + && intval( $city['offset'] ) === intval( $seconds ) + && $city['timezone_id'] + ) { + return $city['timezone_id']; + } + } + } + + // fallback to UTC + return 'UTC'; + } + + return $timezone; + } + + /** + * Tests to see if the timezone string is a UTC offset, ie "UTC+2". + * + * @param string $timezone + * + * @return bool + */ + public static function is_utc_offset( $timezone ) { + $timezone = trim( $timezone ); + return ( 0 === strpos( $timezone, 'UTC' ) && strlen( $timezone ) > 3 ); + } + + /** + * Returns a DateTimeZone object matching the representation in $tzstring where + * possible, or else representing UTC (or, in the worst case, false). + * + * If optional parameter $with_fallback is true, which is the default, then in + * the event it cannot find/create the desired timezone it will try to return the + * UTC DateTimeZone before bailing. + * + * @param string $tzstring + * @param bool $with_fallback = true + * + * @return DateTimeZone|false + */ + public static function get_timezone( $tzstring, $with_fallback = true ) { + if ( isset( self::$timezones[ $tzstring ] ) ) { + return self::$timezones[ $tzstring ]; + } + + try { + self::$timezones[ $tzstring ] = new DateTimeZone( $tzstring ); + return self::$timezones[ $tzstring ]; + } + catch ( Exception $e ) { + if ( $with_fallback ) { + return self::get_timezone( 'UTC', true ); + } + } + + return false; + } + + /** + * Confirms if the current timezone mode matches the $possible_mode. + * + * @param string $possible_mode + * + * @return bool + */ + public static function is_mode( $possible_mode ) { + return $possible_mode === self::mode(); + } + + /** + * Returns a string representing the timezone/offset currently desired for + * the display of dates and times. + * + * @return string + */ + public static function mode() { + $mode = self::EVENT_TIMEZONE; + + if ( 'site' === tribe_get_option( 'tribe_events_timezone_mode' ) ) { + $mode = self::SITE_TIMEZONE; + } + + return apply_filters( 'tribe_events_current_display_timezone', $mode ); + } + + /** + * Tries to convert the provided $datetime to UTC from the timezone represented by $tzstring. + * + * Though the usual range of formats are allowed, $datetime ordinarily ought to be something + * like the "Y-m-d H:i:s" format (ie, no timezone information). If it itself contains timezone + * data, the results may be unexpected. + * + * In those cases where the conversion fails to take place, the $datetime string will be + * returned untouched. + * + * @param string $datetime + * @param string $tzstring + * @param string $format The optional format of the resulting date, defaults to + * `Tribe__Date_Utils::DBDATETIMEFORMAT`. + * + * @return string + */ + public static function to_utc( $datetime, $tzstring, $format = null ) { + if ( self::is_utc_offset( $tzstring ) ) { + return self::apply_offset( $datetime, $tzstring, true ); + } + + $local = self::get_timezone( $tzstring ); + $utc = self::get_timezone( 'UTC' ); + + $new_datetime = date_create( $datetime, $local ); + + if ( $new_datetime ) { + $new_datetime->setTimezone( $utc ); + $format = ! empty( $format ) ? $format : Tribe__Date_Utils::DBDATETIMEFORMAT; + + return $new_datetime->format( $format ); + } + + // Fallback to the unmodified datetime if there was a failure during conversion + return $datetime; + } + + /** + * Tries to convert the provided $datetime to the timezone represented by $tzstring. + * + * This is the sister function of self::to_utc() - please review the docs for that method + * for more information. + * + * @param string $datetime + * @param string $tzstring + * + * @return string + */ + public static function to_tz( $datetime, $tzstring ) { + + if ( self::is_utc_offset( $tzstring ) ) { + + return self::apply_offset( $datetime, $tzstring ); + } + + $local = self::get_timezone( $tzstring ); + $utc = self::get_timezone( 'UTC' ); + + $new_datetime = date_create( $datetime, $utc ); + + if ( $new_datetime && $new_datetime->setTimezone( $local ) ) { + return $new_datetime->format( Tribe__Date_Utils::DBDATETIMEFORMAT ); + } + + // Fallback to the unmodified datetime if there was a failure during conversion + return $datetime; + } + + /** + * Localizes a date or timestamp using WordPress timezone and returns it in the specified format. + * + * @param string $format The format the date shouuld be formatted to. + * @param string|int $date The date UNIX timestamp or `strtotime` parseable string. + * @param string $timezone An optional timezone string identifying the timezone the date shoudl be localized + * to; defaults to the WordPress installation timezone (if available) or to the system + * timezone. + * + * @return string|bool The parsed date in the specified format and localized to the system or specified + * timezone, or `false` if the specified date is not a valid date string or timestamp + * or the specified timezone is not a valid timezone string. + */ + public static function localize_date( $format = null, $date = null, $timezone = null ) { + if ( empty( $timezone ) ) { + $timezone = self::wp_timezone_string(); + } + + $timezone = self::generate_timezone_string_from_utc_offset( $timezone ); + + try { + $timezone_object = new DateTimeZone( $timezone ); + + if ( Tribe__Date_Utils::is_timestamp( $date ) ) { + $date = new DateTime( "@{$date}" ); + } else { + $date = new DateTime( $date ); + } + } catch ( Exception $e ) { + return false; + } + + $date->setTimezone( $timezone_object ); + + return $date->format( $format ); + } + + /** + * Converts a date string or timestamp to a destination timezone. + * + * @param string|int $date Either a string parseable by the `strtotime` function or a UNIX timestamp. + * @param string $from_timezone The timezone of the source date. + * @param string $to_timezone The timezone the destination date should use. + * @param string $format The format that should be used for the destination date. + * + * @return string The formatted and converted date. + */ + public static function convert_date_from_timezone( $date, $from_timezone, $to_timezone, $format ) { + if ( ! Tribe__Date_Utils::is_timestamp( $date ) ) { + $from_date = new DateTime( $date, new DateTimeZone( $from_timezone ) ); + $timestamp = $from_date->format( 'U' ); + } else { + $timestamp = $date; + } + + $to_date = new DateTime( "@{$timestamp}", new DateTimeZone( $to_timezone ) ); + + return $to_date->format( $format ); + } + + /** + * Whether the candidate timezone is a valid PHP timezone or a supported UTC offset. + * + * @param string $candidate + * + * @return bool + */ + public static function is_valid_timezone( $candidate ) { + if ( self::is_utc_offset( $candidate ) ) { + return true; + } + try { + new DateTimeZone( $candidate ); + } catch ( Exception $e ) { + return false; + } + + return true; + } + + /** + * Given a string in the form "UTC+2.5" returns the corresponding DateTimeZone object. + * + * If this is not possible or if $utc_offset_string does not match the expected pattern, + * boolean false is returned. + * + * @todo revise to eliminate all of these: maybe_get_tz_name, apply_offset, timezone_from_utc_offset, and adjust_timestamp + * + * @since 4.6.3 + * + * @param string $utc_offset_string + * + * @return DateTimeZone | bool + */ + public static function timezone_from_utc_offset( $utc_offset_string ) { + // Test for strings looking like "UTC-2" or "UTC+5.25" etc + if ( ! preg_match( '/^UTC[+-][0-9.]{1,4}$/', $utc_offset_string ) ) { + return false; + } + + // Breakdown into polarity, hours and minutes + $parts = explode( '.', substr( $utc_offset_string, 4 ) ); + $hours = (int) $parts[ 0 ]; + $fraction = isset( $parts[ 1 ] ) ? '0.' . (int) $parts[ 1 ] : 0; + $minutes = $fraction * 60; + $polarity = substr( $utc_offset_string, 3, 1 ); + + // Reassemble in the form +/-hhmm (ie "-0200" or "+0930") + $utc_offset = sprintf( $polarity . "%'.02d%'.02d", $hours, $minutes ); + + if ( '+0000' === $utc_offset || '-0000' === $utc_offset ) { + $utc_offset = 'UTC'; + } + + // Use this to build a new DateTimeZone + try { + return new DateTimeZone( $utc_offset ); + } catch ( Exception $e ) { + return false; + } + } + + /** + * Applies an time offset to the specified date time. + * + * @todo revise to eliminate all of these: maybe_get_tz_name, apply_offset, timezone_from_utc_offset, and adjust_timestamp + * + * @param string $datetime The date and time string in a valid date format. + * @param int|string $offset (string or numeric offset) + * @param bool $invert = false Whether the offset should be added (`true`) or + * subtracted (`false`); signum operations carry over so + * `-(-23) = +23`. + * + * @return string + */ + public static function apply_offset( $datetime, $offset, $invert = false ) { + // Normalize + $offset = strtolower( trim( $offset ) ); + + // Strip any leading "utc" text if set + if ( 0 === strpos( $offset, 'utc' ) ) { + $offset = substr( $offset, 3 ); + } + + // It's possible no adjustment will be needed + if ( 0 === (int) $offset ) { + return $datetime; + } + + // if the offset contains fractions like :15, :30 or :45 convert them + $supported_offsets = [ + '/:15$/' => '.25', + '/:30$/' => '.5', + '/:45$/' => '.75', + ]; + $offset = preg_replace( array_keys( $supported_offsets ), array_values( $supported_offsets ), $offset ); + + // Convert the offset to minutes for easier handling of fractional offsets + $offset = (int) ( $offset * 60 ); + + // Invert the offset? Useful for stripping an offset that has already been applied + if ( $invert ) { + $offset *= - 1; + } + + if ( $offset > 0 ) { + $offset = '+' . $offset; + } + + $offset = $offset . ' minutes'; + + $offset_datetime = date_create( $datetime ); + + if ( $offset_datetime && $offset_datetime->modify( $offset ) ) { + return $offset_datetime->format( Tribe__Date_Utils::DBDATETIMEFORMAT ); + } + + return $datetime; + } + + /** + * Try to figure out the Timezone name base on offset + * + * @since 4.0.7 + * + * @todo revise to eliminate all of these: maybe_get_tz_name, apply_offset, timezone_from_utc_offset, and adjust_timestamp + * + * @param string|int|float $timezone The timezone + * + * @return string The Guessed Timezone String + */ + public static function maybe_get_tz_name( $timezone ) { + if ( ! self::is_utc_offset( $timezone ) && ! is_numeric( $timezone ) ) { + return $timezone; + } + + if ( ! is_numeric( $timezone ) ) { + $offset = str_replace( 'utc', '', trim( strtolower( $timezone ) ) ); + } else { + $offset = $timezone; + } + + + // try to get timezone from gmt_offset, respecting daylight savings + $timezone = timezone_name_from_abbr( null, $offset * 3600, true ); + + // if that didn't work, maybe they don't have daylight savings + if ( false === $timezone ) { + $timezone = timezone_name_from_abbr( null, $offset * 3600, false ); + } + + // and if THAT didn't work, round the gmt_offset down and then try to get the timezone respecting daylight savings + if ( false === $timezone ) { + $timezone = timezone_name_from_abbr( null, (int) $offset * 3600, true ); + } + + // lastly if that didn't work, round the gmt_offset down and maybe that TZ doesn't do daylight savings + if ( false === $timezone ) { + $timezone = timezone_name_from_abbr( null, (int) $offset * 3600, false ); + } + + return $timezone; + } + + /** + * Accepts a unix timestamp and adjusts it so that when it is used to constitute + * a new datetime string, that string reflects the designated timezone. + * + * @todo revise to eliminate all of these: maybe_get_tz_name, apply_offset, timezone_from_utc_offset, and adjust_timestamp + * + * @deprecated 4.7.12 + * + * @param string $unix_timestamp + * @param string $tzstring + * + * @return string + */ + public static function adjust_timestamp( $unix_timestamp, $tzstring ) { + try { + $local = self::get_timezone( $tzstring ); + + $datetime = date_create_from_format( 'U', $unix_timestamp )->format( Tribe__Date_Utils::DBDATETIMEFORMAT ); + + // We prefer format('U') to getTimestamp() here due to our requirement for compatibility with PHP 5.2 + return date_create_from_format( 'Y-m-d H:i:s', $datetime, $local )->format( 'U' ); + } + catch( Exception $e ) { + return $unix_timestamp; + } + } + + /** + * Returns a valid timezone object built from the passed timezone or from the + * site one if a timezone in not passed. + * + * @since 4.9.5 + * + * @param string|null|DateTimeZone $timezone A DateTimeZone object, a timezone string + * or `null` to build an object using the site one. + * + * @return DateTimeZone The built DateTimeZone object. + */ + public static function build_timezone_object( $timezone = null ) { + if ( $timezone instanceof DateTimeZone ) { + return $timezone; + } + + /** @var Tribe__Cache $cache */ + $cache = tribe('cache'); + + if ( is_string( $timezone ) && $cached = $cache[ __METHOD__ . $timezone ] ) { + return clone $cached; + } + + $timezone = null === $timezone ? self::wp_timezone_string() : $timezone; + + try { + $object = new DateTimeZone( self::get_valid_timezone( $timezone ) ); + } catch ( Exception $e ) { + return new DateTimeZone( 'UTC' ); + } + + if ( is_string( $timezone ) ) { + $cache[ __METHOD__ . $timezone ] = $object; + } + + return $object; + } + + /** + * Parses the timezone string to validate or convert it into a valid one. + * + * @since 4.9.5 + * + * @param string|\DateTimeZone $timezone_candidate The timezone string candidate. + * + * @return string The validated timezone string or a valid timezone string alternative. + */ + public static function get_valid_timezone( $timezone_candidate ) { + if ( $timezone_candidate instanceof DateTimeZone ) { + return $timezone_candidate->getName(); + } + + $timezone_string = preg_replace( '/[+-]0$/', '', $timezone_candidate ); + $timezone_string = self::is_utc_offset( $timezone_string ) + ? self::generate_timezone_string_from_utc_offset( $timezone_string ) + : $timezone_string; + + return $timezone_string; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Tooltip/View.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Tooltip/View.php new file mode 100644 index 000000000..f1cab9b35 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Tooltip/View.php @@ -0,0 +1,138 @@ +set_template_origin( \Tribe__Main::instance() ); + $this->set_template_folder( 'src/views/tooltip' ); + + // Configures this templating class to extract variables + $this->set_template_context_extract( true ); + + // Uses the public folders + $this->set_template_folder_lookup( true ); + } + + /** + * Public wrapper for build method + * + * @since 4.9.8 + * + * @param array|string $message Array of messages or single message as string. + * @param array $args { + * List of arguments to override tooltip template. + * + * @var array $context Any additional context data you need to expose to this file (optional). + * @var string $classes Additional classes for the icon span (optional). + * @var string $direction Direction the tooltip should be from the trigger (down). + * @var string $icon dashicon classname to use, without the `dashicon-` (info). + * @var string $wrap_classes Classes for the tooltip wrapper (optional). + * } + * @return string A string of html for the tooltip. + */ + public function render_tooltip( $message, $args = [] ) { + if ( empty( $message ) ) { + return; + } + + /** @var \Tribe__Assets $assets */ + $assets = tribe( 'assets' ); + $assets->enqueue_group( 'tribe-tooltip' ); + + $html = $this->build_tooltip( $message, $args ); + + return $html; + } + + /** + * Factory method for tooltip HTML + * + * @since 4.9.8 + * + * @param array|string $message array of messages or single message as string. + * @param array $args { + * List of arguments to override tooltip template. + * + * @var array $context Any additional context data you need to expose to this file (optional). + * @var string $classes Additional classes for the icon span (optional). + * @var string $direction Direction the tooltip should be from the trigger (down). + * @var string $icon dashicon classname to use, without the `dashicon-` (info). + * @var string $wrap_classes Classes for the tooltip wrapper (optional). + * } + * @return string A string of html for the tooltip. + */ + private function build_tooltip( $message, $original_args ) { + $default_args = [ + 'classes' => '', + 'context' => '', + 'direction' => 'down', + 'icon' => 'info', + 'wrap_classes' => '', + ]; + + $args = wp_parse_args( $original_args, $default_args ); + + // Check for message to be passed. + if ( empty( $message ) ) { + return ''; + } + + // Setup message as an array of messages + $messages = (array) $message; + + $args['messages'] = $messages; + + ob_start(); + + /** + * Allow us to filter the tooltip template + * + * @since 4.9.8 + * + * @param string $template The tooltip template name. + * @param array $args Extra arguments, defaults include icon, classes, direction, and context. + */ + $template_name = apply_filters( 'tribe_tooltip_template', 'tooltip', $args ); + + $template = $this->template( $template_name, $args, false ); + + if ( ! empty( $template ) ) { + echo $template; + } + + $html = ob_get_clean(); + + /** + * Allow us to filter the tooltip output + * + * @since 4.9.8 + * + * @param string $html The tooltip HTML. + * @param array $messages An array of message strings. + * @param array $args Extra arguments, defaults include icon, classes, direction, and context. + */ + return apply_filters( 'tribe_tooltip_html', $html, $messages, $args ); + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Tracker.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Tracker.php new file mode 100644 index 000000000..20e541391 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Tracker.php @@ -0,0 +1,471 @@ +$field ) ) { + return false; + } + + if ( isset( $new->$field ) && ! isset( $old->$field ) ) { + return true; + } + + if ( $new->$field !== $old->$field ) { + return true; + } + + return false; + } + + /** + * Get the date(timestamp) of last modification for a tracked field. + * + * @since 4.12.3 + * + * @param string $meta_key The key for the meta field we're interested in. + * @param int $post_id The ID of the post to check. + * + * @return boolean|string The change timestamp or false if the field is not found/empty. + */ + public function get_modified_date( $meta_key, $post_id ) { + $modified = get_post_meta( $post_id, self::$field_key, true ); + + // If the key is missing or empty/null return false - no recorded change. + return Tribe__Utils__Array::get( $modified, $meta_key, false ); + } + + /** + * Easy way to see currently which post types are being tracked by our code. + * + * @return array + */ + public function get_post_types() { + // By default we are not tracking anything + $tracked_post_types = []; + + /** + * Adds a way for Developers to add and remove which post types will be tracked + * + * Note: Removing any of the default methods will affect how we deal with fields + * affected by the authority settings defined on this installation + * + * @var array + */ + $tracked_post_types = (array) apply_filters( 'tribe_tracker_post_types', $this->tracked_post_types ); + + return $tracked_post_types; + } + + /** + * Easy way to see currenlty which meta values are been tracked by our code + * + * @return array + */ + public function get_excluded_meta_keys() { + // By default we are not tracking anything + $excluded_keys = [ + '_edit_lock', + self::$field_key, + ]; + + /** + * Adds a way for Developers remove Meta Keys that shouldn't be tracked + * + * Note: Removing any of the default methods will affect how we deal with fields + * affected by the authority settings defined on this installation + * + * @var array + */ + $excluded_keys = (array) apply_filters( 'tribe_tracker_excluded_meta_keys', $excluded_keys ); + + return $excluded_keys; + } + + /** + * Make sure we are tracking all meta fields related on the correct Post Types + * + * @since 4.5 + * + * @param int $meta_id Meta ID + * @param int $post_id Post ID. + * @param string $meta_key Meta key. + */ + public function register_added_deleted_meta( $meta_id, $post_id, $meta_key ) { + /** + * Allows toggling the Modified fields tracking + * @var bool + */ + $is_tracking_modified_fields = (bool) apply_filters( 'tribe_tracker_enabled', true ); + + // Bail if we shouldn't be tracking modifications + if ( false === $is_tracking_modified_fields ) { + return; + } + + // Try to fetch the post object + $post = get_post( $post_id ); + + // We only go forward if we have the Post Object + if ( ! $post instanceof WP_Post ) { + return; + } + + // Fetch from a unified method which meta keys are been excluded + $excluded_keys = $this->get_excluded_meta_keys(); + + // Bail when this meta is set to be excluded + if ( in_array( $meta_key, $excluded_keys ) ) { + return; + } + + // Fetch from a unified method which post types are been tracked + $tracked_post_types = $this->get_post_types(); + + // Only track if the meta is from a post that is been tracked + if ( ! in_array( $post->post_type, $tracked_post_types ) ) { + return; + } + + // Gets the Current Timestamp + $now = current_time( 'timestamp' ); + + // Fetch the current data from the modified fields + $modified = get_post_meta( $post->ID, self::$field_key, true ); + if ( ! is_array( $modified ) ) { + $modified = []; + } + + // If we got here we will update the Modified Meta + $modified[ $meta_key ] = $now; + + // Actually do the Update + update_post_meta( $post->ID, self::$field_key, $modified ); + } + + /** + * Make sure we are tracking all meta fields related to the correct Post Types + * + * @since 4.5 + * + * @param null|bool $check Whether to allow updating metadata for the given type. + * @param int $post_id Post ID. + * @param string $meta_key Meta key. + * @param mixed $meta_value Meta value. Must be serializable if non-scalar. + * @param mixed $prev_value Previous Value of the Meta, allowing to check the data + * + * @return null|bool This should be ignored, only used to not break the WordPress filters + */ + public function filter_watch_updated_meta( $check, $post_id, $meta_key, $meta_value, $prev_value = null ) { + /** + * Allows toggling the Modified fields tracking + * @var bool + */ + $is_tracking_modified_fields = (bool) apply_filters( 'tribe_tracker_enabled', true ); + + // Bail if we shouldn't be tracking modifications + if ( false === $is_tracking_modified_fields ) { + return $check; + } + + // Matching the WordPress filter, we actually don't care about Check at all! + if ( null !== $check ) { + return (bool) $check; + } + + // Try to fetch the post object + $post = get_post( $post_id ); + + // We only go forward if we have the Post Object + if ( ! $post instanceof WP_Post ) { + return $check; + } + + // Fetch from a unified method which meta keys are been excluded + $excluded_keys = $this->get_excluded_meta_keys(); + + // Bail when this meta is set to be excluded + if ( in_array( $meta_key, $excluded_keys ) ) { + return $check; + } + + // Fetch from a unified method which post types are been tracked + $tracked_post_types = $this->get_post_types(); + + // Only track if the meta is from a post that is been tracked + if ( ! in_array( $post->post_type, $tracked_post_types ) ) { + return $check; + } + + if ( empty( $prev_value ) ) { + $prev_value = get_post_meta( $post->ID, $meta_key, true ); + } + + // We don't care if the value didn't actually change + if ( $prev_value == $meta_value ) { + return $check; + } + + // Gets the Current Timestamp + $now = current_time( 'timestamp' ); + + // Fetch the current data from the modified fields + $modified = get_post_meta( $post->ID, self::$field_key, true ); + if ( ! is_array( $modified ) ) { + $modified = []; + } + + // If we got here we will update the Modified Meta + $modified[ $meta_key ] = $now; + + // Avoid loops! + remove_filter( 'update_post_metadata', [ $this, 'filter_watch_updated_meta' ], PHP_INT_MAX - 1 ); + // Actually do the Update + update_post_meta( $post->ID, self::$field_key, $modified ); + // Safe to filter again. + add_filter( 'update_post_metadata', [ $this, 'filter_watch_updated_meta' ], PHP_INT_MAX - 1, 5 ); + + // We need to return this, because we are still on a filter + return $check; + } + + /** + * Tracks fields that are changed when an event is updated + * + * @param int $post_id Post ID + * @param WP_Post $post_after New post object + * @param WP_Post $post_before Old post object + */ + public function filter_watch_post_fields( $post_id, $post_after, $post_before ) { + /** + * Allows toggling the Modified fields tracking + * @var bool + */ + $is_tracking_modified_fields = (bool) apply_filters( 'tribe_tracker_enabled', true ); + + // Bail if we shouldn't be tracking modifications + if ( false === $is_tracking_modified_fields ) { + return; + } + + // Fetch from a unified method which post types are been tracked + $tracked_post_types = $this->get_post_types(); + + // Only track if the meta is from a post that is been tracked + if ( ! in_array( $post_before->post_type, $tracked_post_types ) ) { + return; + } + + // Fetch the current Time + $now = current_time( 'timestamp' ); + + if ( ! $modified = get_post_meta( $post_id, self::$field_key, true ) ) { + $modified = []; + } + + $fields_to_check_for_changes = [ + 'post_title', + 'post_content', + 'post_excerpt', + 'post_status', + 'post_type', + 'post_parent', + ]; + + foreach ( $fields_to_check_for_changes as $field ) { + if ( ! $this->has_field_changed( $field, $post_after, $post_before ) ) { + continue; + } + + $modified[ $field ] = $now; + } + + if ( $modified ) { + update_post_meta( $post_id, self::$field_key, $modified ); + } + } + + /** + * Track term changes for the tracked post types and terms. + * + * Meant to run on the `set_object_terms` action. + * + * @see wp_set_object_terms() + * + * @param $object_id + * @param $terms + * @param $tt_ids + * @param $taxonomy + * @param $append + * @param $old_tt_ids + * + * @return bool `true` if the post type and taxonomy are tracked, `false` otherwise. + */ + public function track_taxonomy_term_changes( $object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids ) { + /** + * Allows toggling the post taxonomy terms tracking + * + * @var bool $track_terms Whether the class is currently tracking terms or not. + */ + $is_tracking_taxonomy_terms = (bool) apply_filters( 'tribe_tracker_enabled_for_terms', $this->track_terms ); + + if ( false === $is_tracking_taxonomy_terms ) { + return false; + } + + $tracked_post_types = $this->get_post_types(); + + $post_id = tribe_post_exists( $object_id ); + + if ( + empty( $post_id ) + || ! ( $post = get_post( $post_id ) ) + || ! in_array( $post->post_type, $tracked_post_types ) + ) { + return false; + } + + $tracked_taxonomies = $this->get_taxonomies(); + + if ( ! in_array( $taxonomy, $tracked_taxonomies ) ) { + return false; + } + + if ( ! $modified = get_post_meta( $post->ID, self::$field_key, true ) ) { + $modified = []; + } + + if ( $tt_ids == $old_tt_ids ) { + // nothing to update, still we did the job + return true; + } + + $modified[ $taxonomy ] = time(); + update_post_meta( $post->ID, self::$field_key, $modified ); + + return true; + } + + /** + * Easy way to see currently which taxonomies are been tracked by our code. + * + * @return array + */ + public function get_taxonomies() { + /** + * Adds a way for Developers to add and remove which taxonomies will be tracked + * + * Note: Removing any of the default methods will affect how we deal with fields + * affected by the authority settings defined on this installation + * + * @var array $tracked_taxonomies An array of the tracker taxonomies names. + */ + $tracked_taxonomies = (array) apply_filters( 'tribe_tracker_taxonomies', $this->tracked_taxonomies ); + + return $tracked_taxonomies; + } + + /** + * Whether taxonomy term changes should be tracked or not by the class. + * + * @param bool $track_terms + */ + public function should_track_terms( $track_terms ) { + $this->track_terms = $track_terms; + } + + /** + * Sets the taxonomies the tracker should track. + * + * @param array $tracked_taxonomies + */ + public function set_tracked_taxonomies( array $tracked_taxonomies ) { + $this->tracked_taxonomies = $tracked_taxonomies; + } + + /** + * Sets the post types the tracker should track. + * + * @param array $tracked_post_types + */ + public function set_tracked_post_types( array $tracked_post_types ) { + $this->tracked_post_types = $tracked_post_types; + } + + /** + * Make sure to remove the changed field if the event is deleted to ensure there are no left meta fields when + * the event is deleted. + * + * @since 4.7.6 + * + * @param int Post ID + * @return bool + */ + public function cleanup_meta_fields( $post_id ) { + return delete_post_meta( (int) $post_id, self::$field_key ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/Cache_User.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/Cache_User.php new file mode 100644 index 000000000..9d73bbc01 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/Cache_User.php @@ -0,0 +1,145 @@ +warmup_cache( 'computation', WEEK_IN_SECONDS, 'save_post' ); + * if( isset( $this->computation_cache[$key] ) ){ + * return $this->computation_cache[$key]; + * } + * + * $computated = 23; + * + * $this->computation_cache[$key] = $computated; + * + * return $computated; + * } + * } + * ``` + * + * @package Tribe + */ + +namespace Tribe\Traits; + +/** + * Class Cache_User + * + * @since 4.9.11 + * + * @package Tribe + */ +trait Cache_User { + + + /** + * An array of caches and data for each key. + * + * @var array + */ + protected $caches = []; + + /** + * Dumps the temporary cache to the persistent one. + */ + public function dump_cache() { + foreach ( $this->caches as $key => $cache ) { + + list( $cache, $prefix, $expiration, $expiration_trigger ) = array_values( $this->caches[ $key ] ); + + if ( isset( $this->{$key . '_cache'} ) ) { + /** @var \Tribe__Cache $cache */ + $cache->set( $prefix . $key, + $this->{$key . '_cache'}, + $expiration, + $expiration_trigger + ); + } + } + } + + /** + * Warms up one of the caches used by the class, if not warmed up already. + * + * @since 4.9.11 + * + * @param string $key The key of the cache to warm up. + * @param int $expiration The expiration, in seconds, to set on the cache. + * @param string $expiration_trigger The expiration trigger to set on the cache; this should be one of those + * supported by the `Tribe__Cache_Listener` class. + * + * @see \Tribe__Cache_Listener::add_hooks() + */ + protected function warmup_cache( $key, $expiration = 0, $expiration_trigger = '' ) { + if ( ! isset( $this->caches[ $key ] ) ) { + $this_class = get_class( $this ); + + if ( ! property_exists( $this, $key . '_cache' ) ) { + throw new \BadMethodCallException( + sprintf( + 'The %s class should explicitly define a "%s" property to use the %s trait.', + $this_class, + $key . '_cache', + __TRAIT__ + ) + ); + } + + $this->caches[ $key ] = [ + 'cache_object' => tribe( 'cache' ), + 'prefix' => $this_class, + 'expiration' => $expiration, + 'expiration_trigger' => $expiration_trigger, + ]; + } + + list( $cache, $prefix, $expiration, $expiration_trigger ) = array_values( $this->caches[ $key ] ); + + if ( null === $this->{$key . '_cache'} ) { + /** @var \Tribe__Cache $cache */ + $this->{$key . '_cache'} = $cache->get( + $prefix . $key, + $expiration_trigger, + [], + $expiration + ); + if ( false === $this->{$key . '_cache'} ) { + $this->{$key . '_cache'} = []; + } + } + } + + /** + * Resets the instance caches for the this instance. + * + * @since 4.11.0 + * + * @return string[] A list of the emptied cache properties. + */ + public function reset_caches() { + $emptied = []; + foreach ( array_keys( $this->caches ) as $key ) { + $emptied[] = $key; + $this->{"{$key}_cache"} = []; + } + + return $emptied; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/With_DB_Lock.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/With_DB_Lock.php new file mode 100644 index 000000000..5eb8f28cc --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/With_DB_Lock.php @@ -0,0 +1,50 @@ +acquire_db_lock( $lock_key ); + } + + /** + * Releases the database lock of the record. + * + * Release a not held db lock will return `null`, not `false`. + * + * @since 4.12.6 + * + * @param string $lock_key The name of the lock to release. + * + * @return bool Whether the lock was correctly released or not. + */ + private function release_db_lock( $lock_key ) { + return tribe( 'db-lock' )->release_db_lock( $lock_key ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/With_Meta_Updates_Handling.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/With_Meta_Updates_Handling.php new file mode 100644 index 000000000..f11e4a657 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Traits/With_Meta_Updates_Handling.php @@ -0,0 +1,66 @@ +taxonomies ) ) { + // If we're here, then the developer made an error: throw an exception to bring this up as early as possible. + throw new \RuntimeException( + 'The ' . __TRAIT__ . ' trait requires the user class to define a $taxonomies array parameter.' + ); + } + + return in_array( $key, $this->taxonomies, true ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Updater.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Updater.php new file mode 100644 index 000000000..d5b6119f2 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Updater.php @@ -0,0 +1,180 @@ +current_version = $current_version; + } + + /** + * We've had problems with the notoptions and + * alloptions caches getting out of sync with the DB, + * forcing an eternal update cycle + * + * @since 4.9.4 + * + */ + protected function clear_option_caches() { + wp_cache_delete( 'notoptions', 'options' ); + wp_cache_delete( 'alloptions', 'options' ); + } + + /** + * Run Updates for a Plugin + * + * @since 4.9.4 + * + */ + public function do_updates() { + $this->clear_option_caches(); + $updates = $this->get_update_callbacks(); + uksort( $updates, 'version_compare' ); + + try { + foreach ( $updates as $version => $callback ) { + + if ( ! $this->is_new_install() && version_compare( $version, $this->current_version, '<=' ) && $this->is_version_in_db_less_than( $version ) ) { + call_user_func( $callback ); + } + } + + foreach ( $this->get_constant_update_callbacks() as $callback ) { + call_user_func( $callback ); + } + + $this->update_version_option( $this->current_version ); + } catch ( Exception $e ) { + // fail silently, but it should try again next time + } + } + + /** + * Update Version Number for a Plugin + * + * @since 4.9.4 + * + * @param int $new_version the current version number of a plugin + */ + public function update_version_option( $new_version ) { + Tribe__Settings_Manager::set_option( $this->version_option, $new_version ); + } + + /** + * Returns an array of callbacks with version strings as keys. + * Any key higher than the version recorded in the DB + * and lower than $this->current_version will have its + * callback called. + * + * @since 4.9.4 + * + * @return array + */ + public function get_update_callbacks() { + return []; + } + + /** + * Returns an array of callbacks that should be called + * every time the version is updated + * + * @since 4.9.4 + * + * @return array + */ + public function get_constant_update_callbacks() { + return [ + [ $this, 'flush_rewrites' ], + ]; + } + + /** + * Get version from Tribe Settings for the Plugin + * + * @since 4.9.4 + * + * @return mixed the version number of the plugin saved in the options + */ + public function get_version_from_db() { + return Tribe__Settings_Manager::get_option( $this->version_option ); + } + + /** + * Returns true if the version in the DB is less than the provided version + * + * @since 4.9.4 + * + * @return boolean + */ + public function is_version_in_db_less_than( $version ) { + $version_in_db = $this->get_version_from_db(); + + return ( version_compare( $version, $version_in_db ) > 0 ); + } + + /** + * Returns true if this is a new install + * + * @since 4.9.4 + * + * @return boolean + */ + public function is_new_install() { + $version_in_db = $this->get_version_from_db(); + + return empty( $version_in_db ); + } + + /** + * Returns true if an update is required + * + * @since 4.9.4 + * + * @return boolean + */ + public function update_required() { + return $this->is_version_in_db_less_than( $this->current_version ); + } + + /** + * Flush Rewrite rules + * + * @since 4.9.4 + * + */ + public function flush_rewrites() { + // run after 'init' to ensure that all CPTs are registered + add_action( 'wp_loaded', 'flush_rewrite_rules' ); + } + + /** + * Reset update flags. All updates past $this->reset_version will + * run again on the next page load + * + * @since 4.9.4 + * + */ + public function reset() { + $this->update_version_option( $this->reset_version ); + } + +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Array.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Array.php new file mode 100644 index 000000000..0f7961886 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Array.php @@ -0,0 +1,732 @@ + $value ) { + if ( ! is_array( $value ) && ! is_object( $value ) ) { + $data[ $key ] = esc_attr( trim( $value ) ); + } + if ( is_array( $value ) ) { + $data[ $key ] = self::escape_multidimensional_array( $value ); + } + } + + return $data; + } + + /** + * Returns an array of values obtained by using the keys on the map; keys + * that do not have a match in map are discarded. + * + * To discriminate from not found results and legitimately `false` + * values from the map the `$found` parameter will be set by reference. + * + * @since 4.7.19 + * + * @param string|array $keys One or more keys that should be used to get + * the new values + * @param array $map An associative array relating the keys to the new + * values. + * @param bool $found When using a single key this argument will be + * set to indicate whether the mapping was successful + * or not. + * + * @return array|mixed|false An array of mapped values, a single mapped value when passing + * one key only or `false` if one key was passed but the key could + * not be mapped. + */ + public static function map_or_discard( $keys, array $map, &$found = true ) { + $hash = md5( time() ); + $mapped = []; + + foreach ( (array) $keys as $key ) { + $meta_key = Tribe__Utils__Array::get( $map, $key, $hash ); + if ( $hash === $meta_key ) { + continue; + } + $mapped[] = $meta_key; + } + + $found = (bool) count( $mapped ); + + if ( is_array( $keys ) ) { + return $mapped; + } + + return $found ? $mapped[0] : false; + } + + /** + * Duplicates any key prefixed with '_' creating an un-prefixed duplicate one. + * + * The un-prefixing and duplication is recursive. + * + * @since 4.9.5 + * + * @param mixed $array The array whose keys should be duplicated. + * @param bool $recursive Whether the un-prefixing and duplication should be + * recursive or shallow. + * + * @return array The array with the duplicate, unprefixed, keys or the + * original input if not an array. + */ + public static function add_unprefixed_keys_to( $array, $recursive = false ) { + if ( ! is_array( $array ) ) { + return $array; + } + + $unprefixed = []; + foreach ( $array as $key => $value ) { + if ( $recursive && is_array( $value ) ) { + $value = self::add_unprefixed_keys_to( $value, true ); + // And also add it to the original array. + $array[ $key ] = array_merge( $array[ $key ], $value ); + } + + if ( 0 !== strpos( $key, '_' ) ) { + continue; + } + $unprefixed[ substr( $key, 1 ) ] = $value; + } + + return array_merge( $array, $unprefixed ); + } + + /** + * Filters an associative array non-recursively, keeping only the values attached + * to keys starting with the specified prefix. + * + * @since 4.9.5 + * + * @param array $array The array to filter. + * @param string $prefix The prefix, or prefixes, of the keys to keep. + * + * @return array The filtered array. + */ + public static function filter_prefixed( array $array, $prefix ) { + $prefixes = implode( '|', array_map( 'preg_quote', (array) $prefix ) ); + $pattern = '/^(' . $prefixes . ')/'; + $filtered = []; + foreach ( $array as $key => $value ) { + if ( ! preg_match( $pattern, $key ) ) { + continue; + } + $filtered[ $key ] = $value; + } + + return $filtered; + } + + /** + * Flattens an array transforming each value that is an array and only contains one + * element into that one element. + * + * Typical use case is to flatten arrays like those returned by `get_post_meta( $id )`. + * Empty arrays are replaced with an empty string. + * + * @since 4.9.5 + * + * @param array $array The array to flatten. + * + * @return array The flattened array. + */ + public static function flatten( array $array ) { + foreach ( $array as $key => &$value ) { + if ( ! is_array( $value ) ) { + continue; + } + + $count = count( $value ); + + switch ( $count ) { + case 0: + $value = ''; + break; + case 1: + $value = reset( $value ); + break; + default: + break; + } + } + + return $array; + } + + /** + * Duplicates any key not prefixed with '_' creating a prefixed duplicate one. + * + * The prefixing and duplication is recursive. + * + * @since 4.9.5 + * + * @param mixed $array The array whose keys should be duplicated. + * @param bool $recursive Whether the prefixing and duplication should be + * recursive or shallow. + * + * @return array The array with the duplicate, prefixed, keys or the + * original input if not an array. + */ + public static function add_prefixed_keys_to( $array, $recursive = false ) { + if ( ! is_array( $array ) ) { + return $array; + } + + $prefixed = []; + foreach ( $array as $key => $value ) { + if ( $recursive && is_array( $value ) ) { + $value = self::add_prefixed_keys_to( $value, true ); + // And also add it to the original array. + $array[ $key ] = array_merge( $array[ $key ], $value ); + } + + if ( 0 === strpos( $key, '_' ) ) { + continue; + } + + $prefixed[ '_' . $key ] = $value; + } + + return array_merge( $array, $prefixed ); + } + + /** + * Recursively key-sort an array. + * + * @since 4.9.5 + * + * @param array $array The array to sort, modified by reference. + * + * @return bool The sorting result. + */ + public static function recursive_ksort( array &$array ) { + foreach ( $array as &$value ) { + if ( is_array( $value ) ) { + static::recursive_ksort( $value ); + } + } + + return ksort( $array ); + } + + /** + * Returns the value associated with the first index, among the indexes, that is set in the array.. + * + * @since 4.9.11 + * + * @param array $array The array to search. + * @param array $indexes The indexes to search; in order the function will look from the first to the last. + * @param null $default The value that will be returned if the array does not have any of the indexes set. + * + * @return mixed|null The set value or the default value. + */ + public static function get_first_set( array $array, array $indexes, $default = null ) { + foreach ( $indexes as $index ) { + if ( ! isset( $array[ $index ] ) ) { + continue; + } + + return $array[ $index ]; + } + + return $default; + } + + /** + * Discards everything other than array values having string keys and scalar values, ensuring a + * one-dimensional, associative array result. + * + * @link https://www.php.net/manual/language.types.array.php Keys cast to non-strings will be discarded. + * + * @since 4.12.2 + * + * @param array $array + * + * @return array Associative or empty array. + */ + public static function filter_to_flat_scalar_associative_array( array $array ) { + $result = []; + + if ( ! is_array( $array ) ) { + return $result; + } + + foreach ( $array as $k => $v ) { + if ( ! is_string( $k ) ) { + continue; + } + + if ( ! is_scalar( $v ) ) { + continue; + } + + $result[ $k ] = $v; + } + + return $result; + } + + /** + * Build an array from migrating aliased key values to their canonical key values, removing all alias keys. + * + * If the original array has values for both the alias and its canonical, keep the canonical's value and + * discard the alias' value. + * + * @since 4.12.2 + * + * @param array $original An associative array of values, such as passed shortcode arguments. + * @param array $alias_map An associative array of aliases: key as alias, value as mapped canonical. + * Example: [ 'alias' => 'canonical', 'from' => 'to', 'that' => 'becomes_this' ] + * + * @return array + */ + public static function parse_associative_array_alias( array $original, array $alias_map ) { + // Ensure array values. + $original = (array) $original; + $alias_map = static::filter_to_flat_scalar_associative_array( (array) $alias_map ); + + // Fail gracefully if alias array wasn't setup as [ 'from' => 'to' ]. + if ( empty( $alias_map ) ) { + return $original; + } + + $result = $original; + + // Parse aliases. + foreach ( $alias_map as $from => $to ) { + // If this alias isn't in use, go onto the next. + if ( ! isset( $result[ $from ] ) ) { + continue; + } + + // Only allow setting alias value if canonical value is not already present. + if ( ! isset( $result[ $to ] ) ) { + $result[ $to ] = $result[ $from ]; + } + + // Always remove the alias key. + unset( $result[ $from ] ); + } + + return $result; + } + + /** + * Stringifies the numeric keys of an array. + * + * @since 4.12.14 + * + * @param array $input The input array whose keys should be stringified. + * @param string|null $prefix The prefix that should be use to stringify the keys, if not provided + * then it will be generated. + * + * @return array The input array with each numeric key stringified. + */ + public static function stringify_keys( array $input, $prefix = null ) { + $prefix = null === $prefix ? uniqid( 'sk_', true ) : $prefix; + $visitor = static function ( $key, $value ) use ( $prefix ) { + $string_key = is_numeric( $key ) ? $prefix . $key : $key; + + return [ $string_key, $value ]; + }; + + return static::array_visit_recursive( $input, $visitor ); + } + + /** + * The inverse of the `stringify_keys` method, it will restore numeric keys for previously + * stringified keys. + * + * @since 4.12.14 + * + * @param array $input The input array whose stringified keys should be + * destringified. + * @param string $prefix The prefix that should be used to target only specific string keys. + * + * @return array The input array, its stringified keys destringified. + */ + public static function destringify_keys( array $input, $prefix = 'sk_' ) { + $visitor = static function ( $key, $value ) use ( $prefix ) { + $destringified_key = 0 === self::strpos( $key, $prefix ) ? null : $key; + + return [ $destringified_key, $value ]; + }; + + return static::array_visit_recursive( $input, $visitor ); + } + + /** + * Recursively visits all elements of an array applying the specified callback to each element + * key and value. + * + * @since 4.12.14 + * + * @param array $input The input array whose nodes should be visited. + * @param callable $visitor A callback function that will be called on each array item; the callback will + * receive the item key and value as input and should return an array that contains + * the update key and value in the shape `[ , ]`. Returning a `null` + * key will cause the element to be removed from the array. + */ + public static function array_visit_recursive( $input, callable $visitor ) { + if ( ! is_array( $input ) ) { + return $input; + } + + $return = []; + + foreach ( $input as $key => &$value ) { + if ( is_array( $value ) ) { + $value = static::array_visit_recursive( $value, $visitor ); + } + // Ensure visitors can quickly return `null` to remove an element. + list( $updated_key, $update_value ) = array_replace( [ $key, $value ], (array) $visitor( $key, $value ) ); + if ( false === $updated_key ) { + // Visitor will be able to remove an element by returning a `false` key for it. + continue; + } + if ( null === $updated_key ) { + // Automatically assign the first available numeric index to the element. + $return[] = $update_value; + } else { + $return[ $updated_key ] = $update_value; + } + } + + return $return; + } + + /** + * Recursively remove associative, non numeric, keys from an array. + * + * @since 4.12.14 + * + * @param array $input The input array. + * + * @return array An array that only contains integer keys at any of its levels. + */ + public static function remove_numeric_keys_recursive( array $input ) { + return self::array_visit_recursive( + $input, + static function ( $key ) { + return is_numeric( $key ) ? false : $key; + } + ); + } + + /** + * Recursively remove numeric keys from an array. + * + * @since 4.12.14 + * + * @param array $input The input array. + * + * @return array An array that only contains non numeric keys at any of its levels. + */ + public static function remove_string_keys_recursive( array $input ) { + return self::array_visit_recursive( + $input, + static function ( $key ) { + return !is_numeric( $key ) ? false : $key; + } + ); + } + + /** + * Merges two or more arrays in the nested format used by WP_Query arguments preserving and merging them correctly. + * + * The method will recursively replace named keys and merge numeric keys. The method takes its name from its intended + * primary use, but it's not limited to query arguments only. + * + * @since 4.12.14 + * + * @param array ...$arrays A set of arrays to merge. + * + * @return array The recursively merged array. + */ + public static function merge_recursive_query_vars( array ...$arrays ) { + if ( ! count( $arrays ) ) { + return []; + } + + // Temporarily transform numeric keys to string keys generated with time-related randomness. + $stringified = array_map( [ static::class, 'stringify_keys' ], $arrays ); + // Replace recursive will recursively replace any entry that has the same string key, stringified keys will never match due to randomness. + $merged = array_replace_recursive( ...$stringified ); + + // Finally destringify the keys to return something that will resemble, in shape, the original arrays. + return static::destringify_keys( $merged ); + } + + /** + * Shapes, filtering it, an array to the specified expected set of required keys. + * + * @since 5.0.0 + * + * @param array $array The input array to shape. + * @param array $shape The shape to update the array with. It should only define keys + * or arrays of keys. Keys that have no values will be set to `null`. + * To add the key only if set, prefix the key with `?`, e.g. `?foo`. + * + * @return array The input array shaped and ordered per the shape. + */ + public static function shape_filter( array $array, array $shape ): array { + $shaped = []; + foreach ( $shape as $shape_index => $shape_key ) { + $optional = is_array( $shape_key ) ? + strpos( $shape_index, '?' ) === 0 + : strpos( $shape_key, '?' ) === 0; + + if ( is_array( $shape_key ) ) { + $shape_index = $optional ? substr( $shape_index, 1 ) : $shape_index; + if ( $optional && ! isset( $array[ $shape_index ] ) ) { + continue; + } + $shaped[ $shape_index ] = self::shape_filter( $array[$shape_index] ?? [], $shape_key ); + } else { + $shape_key = $optional ? substr( $shape_key, 1 ) : $shape_key; + if ( ! isset( $array[ $shape_key ] ) && $optional ) { + continue; + } + $shaped[ $shape_key ] = $array[ $shape_key ] ?? null; + } + } + + return $shaped; + } + + /** + * Searches an array using a callback and returns the index of the first match. + * + * This method fills the gap left by the non-existence of an `array_usearch` function. + * + * @since 5.0.0 + * + * @param mixed $needle The element to search in the array. + * @param array $haystack The array to search. + * @param callable $callback A callback function with signature `fn($needle, $value, $key) :bool` + * that will be used to find the first match of needle in haystack. + * + * @return string|int|false Either the index of the first match or `false` if no match was found. + */ + public static function usearch( $needle, array $haystack, callable $callback ) { + foreach ( $haystack as $key => $value ) { + if ( $callback( $needle, $value, $key ) ) { + return $key; + } + } + + return false; + } + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Body_Classes.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Body_Classes.php new file mode 100644 index 000000000..7f8da5d37 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Body_Classes.php @@ -0,0 +1,350 @@ + true, 'class => false ] + * + * @var array + */ + protected $classes = []; + + /** + * Stores all the admin classes. + * In the format: ['class' => true, 'class => false ] + * + * @var array + */ + protected $admin_classes = []; + + /** + * Queue-aware method to get the classes array. + * Returns the array of classes to add. + * + * @since 4.12.6 + * + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + * @return array A map of the classes for the queue. + */ + public function get_classes( $queue = 'display' ) { + switch( $queue ) { + case 'admin': + return $this->admin_classes; + break; + case 'all': + return array_merge( $this->classes, $this->admin_classes ); + break; + default: + return $this->classes; + break; + } + } + + /** + * Returns the array of classnames to add + * + * @since 4.12.6 + * + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + * @return array The list of class names. + */ + public function get_class_names( $queue = 'display' ) { + $classes = $this->get_classes( $queue ); + + return array_keys( + array_filter( + $classes, + static function( $v ) { + return $v; + }, + ARRAY_FILTER_USE_KEY + ) + ); + } + + /** + * Checks if a class is in the queue, + * wether it's going to be added or not. + * + * @since 4.12.6 + * + * @param string $class The class we are checking for. + * @param string $queue The queue we want to check 'admin', 'display', 'all' + * @return boolean Whether a class exists or not in the queue. + */ + public function class_exists( $class, $queue = 'display' ) { + $classes = $this->get_classes( $queue ); + + return array_key_exists( $class, $classes ); + } + + /** + * Checks if a class is in the queue and going to be added. + * + * @since 4.12.6 + * + * @param string $class The class we are checking for. + * @param string $queue The queue we want to check 'admin', 'display', 'all' + * @return boolean Whether a class is currently queued or not. + */ + public function class_is_enqueued( $class, $queue = 'display' ) { + $classes = $this->get_classes( $queue ); + if ( ! $this->class_exists( $class, $queue ) ) { + return false; + } + + return $classes[ $class ]; + } + + /** + * Dequeues a class. + * + * @since 4.12.6 + * + * @param string $class + * @param string $queue The queue we want to alter 'admin', 'display', 'all' + * @return boolean + */ + public function dequeue_class( $class, $queue = 'display' ) { + if ( ! $this->class_exists( $class, $queue ) ) { + return false; + } + + if ( 'admin' !== $queue ) { + $this->classes[ $class ] = false; + } + + if ( 'display' !== $queue ) { + $this->admin_classes[ $class ] = false; + } + + return true; + + } + + /** + * Enqueues a class. + * + * @since 4.12.6 + * + * @param string $class + * @param string $queue The queue we want to alter 'admin', 'display', 'all' + * @return false + */ + public function enqueue_class( $class, $queue = 'display' ) { + if ( ! $this->class_exists( $class, $queue ) ) { + return false; + } + + if ( 'admin' !== $queue ) { + $this->classes[ $class ] = true; + } + + if ( 'display' !== $queue ) { + $this->admin_classes[ $class ] = true; + } + + return true; + } + + /** + * Add a single class to the queue. + * + * @since 4.12.6 + * + * @param string $class The class to add. + * @param string $queue The queue we want to alter 'admin', 'display', 'all' + * @return void + */ + public function add_class( $class, $queue = 'display' ) { + if ( empty( $class ) ) { + return; + } + + if ( is_array( $class ) ) { + $this->add_classes( $class, $queue ); + } elseif ( $this->should_add_body_class_to_queue( $class, $queue ) ) { + + $class = sanitize_html_class( $class ); + + if ( 'admin' !== $queue ) { + $this->classes[ $class ] = true ; + } + + if ( 'display' !== $queue ) { + $this->admin_classes[ $class ] = true ; + } + + } + } + + /** + * Add an array of classes to the queue. + * + * @since 4.12.6 + * + * @param array $class The classes to add. + * @return void + */ + public function add_classes( array $classes, $queue = 'display' ) { + foreach ( $classes as $key => $value ) { + // If the classes are passed as class => bool, only add ones set to true. + if ( is_bool( $value ) && false !== $value ) { + $this->add_class( $key, $queue ); + } else { + $this->add_class( $value, $queue ); + } + } + } + + /** + * Remove a single class from the queue. + * + * @since 4.12.6 + * + * @param string $class The class to remove. + * @return void + */ + public function remove_class( $class, $queue = 'display' ) { + if ( 'admin' !== $queue ) { + $this->classes = array_filter( + $this->classes, + static function( $k ) use ( $class ) { + return $k !== $class; + }, + ARRAY_FILTER_USE_KEY + ); + } + + if ( 'display' !== $queue ) { + $this->admin_classes = array_filter( + $this->admin_classes, + static function( $k ) use ( $class ) { + return $k !== $class; + }, + ARRAY_FILTER_USE_KEY + ); + } + } + + /** + * Remove an array of classes from the queue. + * + * @since 4.12.6 + * + * @param array $classes The classes to remove. + * @return void + */ + public function remove_classes( array $classes, $queue = 'display' ) { + if ( empty( $classes ) || ! is_array( $classes) ) { + return; + } + + foreach ( $classes as $class ) { + $this->remove_class( $class, $queue ); + } + } + + /** + * Adds the enqueued classes to the body class array. + * + * @since 4.12.6 + * + * @param array $classes An array of body class names. + * @return array Array of body classes. + */ + public function add_body_classes( $classes = [] ) { + // Make sure they should be added. + if( ! $this->should_add_body_classes( $this->get_class_names(), (array) $classes, 'display' ) ) { + return $classes; + } + + $element_classes = new Element_Classes( $this->get_class_names() ); + + return array_merge( $classes, $element_classes->get_classes() ); + } + + /** + * Adds the enqueued classes to the body class array. + * + * @since 4.12.6 + * + * @param string $classes The existing body class names. + * + * @return string String of admin body classes. + */ + public function add_admin_body_classes( $classes ) { + $existing_classes = explode( ' ', $classes ); + // Make sure they should be added. + if ( ! $this->should_add_body_classes( $this->get_class_names( 'admin' ), (array) $existing_classes, 'admin' ) ) { + // Ensure we return the current string on false! + return $classes; + } + + $element_classes = new Element_Classes( $this->get_class_names( 'admin' ) ); + + return implode( ' ', array_merge( $existing_classes, $element_classes->get_classes() ) ); + + } + + /** + * Should a individual class be added to the queue. + * + * @since 4.12.6 + * + * @param string $class The body class we wish to add. + * + * @return boolean Whether to add tribe body classes to the queue. + */ + private function should_add_body_class_to_queue( $class, $queue = 'display' ) { + /** + * Filter whether to add the body class to the queue or not. + * + * @since 4.12.6 + * + * @param boolean $add Whether to add the class to the queue or not. + * @param array $class The array of body class names to add. + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + */ + return (bool) apply_filters( 'tribe_body_class_should_add_to_queue', false, $class, $queue ); + } + + /** + * Logic for whether the body classes, as a whole, should be added. + * + * @since 4.12.6 + * + * @param array $add_classes An array of body class names to add. + * @param array $existing_classes An array of existing body class names from WP. + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + * + * @return boolean Whether to add tribe body classes. + */ + private function should_add_body_classes( array $add_classes, array $existing_classes, $queue ) { + /** + * Filter whether to add tribe body classes or not. + * + * @since 4.12.6 + * + * @param boolean $add Whether to add classes or not. + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + * @param array $add_classes The array of body class names to add. + * @param array $existing_classes An array of existing body class names from WP. + * + */ + return (bool)apply_filters( 'tribe_body_classes_should_add', false, $queue, $add_classes, $existing_classes ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Callback.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Callback.php new file mode 100644 index 000000000..e1efa1303 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Callback.php @@ -0,0 +1,177 @@ + $slug, + 'method' => $method, + 'arguments' => $arguments, + 'is_empty' => $is_empty, + ]; + + $key = md5( json_encode( $item ) ); + + // Prevent this from been reset + if ( isset( $this->items[ $key ] ) ) { + return $this->items[ $key ]; + } + + $item->callback = $container->callback( $item->slug, $item->method ); + + $this->items[ $key ] = $item; + + return [ $this, $this->prefix . $key ]; + } + + /** + * Returns the Value passed as a simple Routing method for tribe_callback_return + * + * @since 4.6.2 + * + * @param mixed $value Value to be Routed + * + * @return mixed + */ + public function return_value( $value ) { + return $value; + } + + /** + * Calls the Lambda function provided by Di52 to allow passing of Params without having to create more + * methods into classes for simple callbacks that will only have a pre-determined value. + * + * @since 4.6.2 + * + * @param string $slug A class or interface fully qualified name or a string slug. + * @param string $method The method that should be called on the resolved implementation with the + * specified array arguments. + * + * @return mixed The Return value used + */ + public function __call( $method, $args ) { + $key = str_replace( $this->prefix, '', $method ); + + if ( ! isset( $this->items[ $key ] ) ) { + return false; + } + + $item = $this->items[ $key ]; + + // Allow for previous compatibility with tribe_callback + if ( ! $item->is_empty ) { + $args = $item->arguments; + } + + return call_user_func_array( $item->callback, $args ); + } + + /** + * Tribe__Utils__Callback constructor. + * + * This is used to wrap a Tribe callable couple, a bound slug and method, to be used as a serializable callback. + * + * @since 4.9.5 + * + * @param string $slug The slug or class to call. + * @param string $method The method to call on the slug or class. + */ + public function __construct( $slug = null, $method = null ) { + $this->slug = $slug; + $this->method = $method; + } + + /** + * Returns the list of properties that should be serialized for the object. + + * + * @since 4.9.5 + * + * @return array An array of properties that should be serialized. + */ + public function __sleep() { + return [ 'slug', 'method' ]; + } + + /** + * Returns this callback slug or class. + * + * This only makes sense if this class is being used to wrap a Tribe callback couple (slug and method). + * + * @since 4.9.5 + * + * @return string|null This Tribe callback wrapper slug or class. + */ + public function get_slug() { + return $this->slug; + } + + /** + * Returns this callback method. + * + * This only makes sense if this class is being used to wrap a Tribe callback couple (slug and method). + * + * @since 4.9.5 + * + * @return string|null This Tribe callback method. + */ + public function get_method() { + + return $this->method; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Collection.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Collection.php new file mode 100644 index 000000000..aec8cb446 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Collection.php @@ -0,0 +1,56 @@ +items = $items; + foreach ( $items as $item ) { + $this->push( $item ); + } + } + + /** + * Runs a callback function on all the collection items and returns the results. + * + * This is just a wrapper around the `array_map` method. + * + * @since 4.9.5 + * + * @param callable $callback The callback to run on each collection item. + * + * @return array An array of results returned by running the callback on all + * collection items. + */ + public function map( $callback ) { + return array_map( $callback, $this->items ); + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Collection_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Collection_Interface.php new file mode 100644 index 000000000..3dbcd6aec --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Collection_Interface.php @@ -0,0 +1,57 @@ +all(); + + return reset( $items ); + } + + /** + * Returns the last item in the collection. + * + * @since 4.9.14 + * + * @return mixed The last item in the collection. + */ + public function last() { + $items = $this->all(); + + return end( $items ); + } + + /** + * Returns the nth item in the collection. + * + * @since 4.9.14 + * + * @param int $n The 1-based index of the item to return. It's not 0-based, `1` will return the first item. + * + * @return mixed|null The nth item in the collection or `null` if not set. + */ + public function nth( $n ) { + $items = array_values( $this->all() ); + + return isset( $items[ $n - 1 ] ) ? $items[ $n - 1 ] : null; + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function offsetExists( $offset ) { + $items = $this->all(); + + return isset( $items[ $offset ] ); + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function offsetGet( $offset ) { + $items = $this->all(); + + return isset( $items[ $offset ] ) + ? $items[ $offset ] + : null; + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function offsetSet( $offset, $value ) { + $this->items = $this->all(); + + $this->items[ $offset ] = $value; + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function offsetUnset( $offset ) { + $this->items = $this->all(); + + unset( $this->items[ $offset ] ); + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function next() { + $this->items_index ++; + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function valid() { + $items = $this->all(); + + return ( isset( $items[ $this->items_index ] ) ); + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function key() { + return $this->items_index; + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function current() { + $items = array_values( $this->all() ); + + return isset( $items[ $this->items_index ] ) ? $items[ $this->items_index ] : null; + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function rewind() { + $this->items_index = 0; + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function count() { + return count( $this->all() ); + } + + /** + * {@inheritDoc} + */ + public function serialize() { + $to_serialize = $this->all(); + + if ( method_exists( $this, 'before_serialize' ) ) { + $to_serialize = $this->before_serialize( $this->all() ); + } + + return serialize( $to_serialize ); + } + + /** + * {@inheritDoc} + */ + public function unserialize( $serialized ) { + $to_unserialize = $serialized; + + if ( method_exists( $this, 'custom_unserialize' ) ) { + $this->items = $this->custom_unserialize( $to_unserialize ); + + return; + } + + $this->items = unserialize( $to_unserialize ); + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function seek( $position ) { + $this->items_index = $position; + } + + /** + * Applies a filter callback to each element of this collection changing the collection elements to only those + * passing the filter. + * + * @since 4.10.2 + * + * @param callable $filter_callback The filter callback that will be applied to each element of the collection; the + * callback will receive the element as parameter. + * + * @return Collection_Trait A new collection instance, that contains only the elements that passed the filter. + */ + public function filter( $filter_callback ) { + if ( $this->count() === 0 ) { + // If there is nothing to filter to begin with, just return this. + return $this; + } + + $filtered = new static(); + $filtered->items = array_filter( $this->all(), $filter_callback ); + + return $filtered; + } + + /** + * PHP 8.0+ compatible implementation of the serialization logic. + * + * @since 5.0.6 + * + * @return array The data to serialize. + */ + public function __serialize(): array { + $to_serialize = $this->all(); + + if ( method_exists( $this, 'before_serialize' ) ) { + $to_serialize = $this->before_serialize( $this->all() ); + } + + return $to_serialize; + } + + /** + * PHP 8.0+ compatible implementation of the unserialization logic. + * + * @since 5.0.6 + * + * @param array $data The data to unserialize. + */ + public function __unserialize( array $data ): void { + if ( method_exists( $this, 'custom_unserialize' ) ) { + $this->items = $this->custom_unserialize( serialize( $data ) ); + + return; + } + + $this->items = $data; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Color.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Color.php new file mode 100644 index 000000000..2e8e34aaf --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Color.php @@ -0,0 +1,574 @@ + + * Info: http://mexitek.github.io/phpColors/ + */ + +/** + * PHP 5.2 Compatibility + * Author: Gustavo Bordoni + */ + +class Tribe__Utils__Color { + + private $_hex; + private $_hsl; + private $_rgb; + + /** + * Auto darkens/lightens by 10% for sexily-subtle gradients. + * Set this to FALSE to adjust automatic shade to be between given color + * and black (for darken) or white (for lighten) + */ + const DEFAULT_ADJUST = 10; + + /** + * Instantiates the class with a HEX value + * @param string $hex + * @throws Exception "Bad color format" + */ + public function __construct( $hex ) { + // Strip # sign is present + $color = str_replace( '#', '', $hex ); + + // Make sure it's 6 digits + if ( strlen( $color ) === 3 ) { + $color = preg_replace( '/(.)(.)(.)/', '$1$1$2$2$3$3', $color ); + } elseif ( strlen( $color ) != 6 ) { + throw new Exception( 'HEX color needs to be 6 or 3 digits long' ); + } + + $this->_hsl = self::hexToHsl( $color ); + $this->_hex = $color; + $this->_rgb = self::hexToRgb( $color ); + } + + // ==================== + // = Public Interface = + // ==================== + + /** + * Given a HEX string returns a HSL array equivalent. + * @param string $color + * @return array HSL associative array + */ + public static function hexToHsl( $color ) { + + // Sanity check + $color = self::_checkHex( $color ); + + // Convert HEX to DEC + $R = hexdec( $color[0] . $color[1] ); + $G = hexdec( $color[2] . $color[3] ); + $B = hexdec( $color[4] . $color[5] ); + + $HSL = []; + + $var_R = ( $R / 255 ); + $var_G = ( $G / 255 ); + $var_B = ( $B / 255 ); + + $var_Min = min( $var_R, $var_G, $var_B ); + $var_Max = max( $var_R, $var_G, $var_B ); + $del_Max = $var_Max - $var_Min; + + $L = ( $var_Max + $var_Min ) / 2; + + if ( 0 == $del_Max ) { + $H = 0; + $S = 0; + } else { + if ( $L < 0.5 ) { + $S = $del_Max / ( $var_Max + $var_Min ); + } else { + $S = $del_Max / ( 2 - $var_Max - $var_Min ); + } + + $del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max; + $del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max; + $del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max; + + if ( $var_R == $var_Max ) { + $H = $del_B - $del_G; + } elseif ( $var_G == $var_Max ) { + $H = ( 1 / 3 ) + $del_R - $del_B; + } elseif ( $var_B == $var_Max ) { + $H = ( 2 / 3 ) + $del_G - $del_R; + } + + if ( $H < 0 ) { + $H++; + } + if ( $H > 1 ) { + $H--; + } + } + + $HSL['H'] = ( $H * 360 ); + $HSL['S'] = $S; + $HSL['L'] = $L; + + return $HSL; + } + + /** + * Given a HSL associative array returns the equivalent HEX string + * @param array $hsl + * @return string HEX string + * @throws Exception "Bad HSL Array" + */ + public static function hslToHex( $hsl = [] ) { + // Make sure it's HSL + if ( empty( $hsl ) || ! isset( $hsl['H'] ) || ! isset( $hsl['S'] ) || ! isset( $hsl['L'] ) ) { + throw new Exception( 'Param was not an HSL array' ); + } + + list( $H, $S, $L ) = [ $hsl['H'] / 360, $hsl['S'], $hsl['L'] ]; + + if ( 0 == $S ) { + $r = $L * 255; + $g = $L * 255; + $b = $L * 255; + } else { + if ( $L < 0.5 ) { + $var_2 = $L * ( 1 + $S ); + } else { + $var_2 = ( $L + $S ) - ( $S * $L ); + } + + $var_1 = 2 * $L - $var_2; + + $r = round( 255 * self::_huetorgb( $var_1, $var_2, $H + ( 1 / 3 ) ) ); + $g = round( 255 * self::_huetorgb( $var_1, $var_2, $H ) ); + $b = round( 255 * self::_huetorgb( $var_1, $var_2, $H - ( 1 / 3 ) ) ); + + } + + // Convert to hex + $r = dechex( $r ); + $g = dechex( $g ); + $b = dechex( $b ); + + // Make sure we get 2 digits for decimals + $r = ( strlen( '' . $r ) === 1 ) ? '0' . $r : $r; + $g = ( strlen( '' . $g ) === 1 ) ? '0' . $g : $g; + $b = ( strlen( '' . $b ) === 1 ) ? '0' . $b : $b; + + return $r.$g.$b; + } + + /** + * Given a HEX string returns a RGB array equivalent. + * @param string $color + * @return array RGB associative array + */ + public static function hexToRgb( $color ) { + + // Sanity check + $color = self::_checkHex( $color ); + + // Convert HEX to DEC + $R = hexdec( $color[0] . $color[1] ); + $G = hexdec( $color[2] . $color[3] ); + $B = hexdec( $color[4] . $color[5] ); + + $RGB['R'] = $R; + $RGB['G'] = $G; + $RGB['B'] = $B; + + return $RGB; + } + + /** + * Given an RGB associative array returns the equivalent HEX string + * @param array $rgb + * @return string RGB string + * @throws Exception "Bad RGB Array" + */ + public static function rgbToHex( $rgb = [] ) { + // Make sure it's RGB + if ( empty( $rgb ) || ! isset( $rgb['R'] ) || ! isset( $rgb['G'] ) || ! isset( $rgb['B'] ) ) { + throw new Exception( 'Param was not an RGB array' ); + } + + // Convert RGB to HEX + $hex[0] = dechex( $rgb['R'] ); + $hex[1] = dechex( $rgb['G'] ); + $hex[2] = dechex( $rgb['B'] ); + + return implode( '', $hex ); + } + + /** + * Given a HEX value, returns a darker color. If no desired amount provided, then the color halfway between + * given HEX and black will be returned. + * @param int $amount + * @return string Darker HEX value + */ + public function darken( $amount = self::DEFAULT_ADJUST ) { + // Darken + $darkerHSL = $this->_darken( $this->_hsl, $amount ); + // Return as HEX + return self::hslToHex( $darkerHSL ); + } + + /** + * Given a HEX value, returns a lighter color. If no desired amount provided, then the color halfway between + * given HEX and white will be returned. + * @param int $amount + * @return string Lighter HEX value + */ + public function lighten( $amount = self::DEFAULT_ADJUST ) { + // Lighten + $lighterHSL = $this->_lighten( $this->_hsl, $amount ); + // Return as HEX + return self::hslToHex( $lighterHSL ); + } + + /** + * Given a HEX value, returns a mixed color. If no desired amount provided, then the color mixed by this ratio + * @param string $hex2 Secondary HEX value to mix with + * @param int $amount = -100..0..+100 + * @return string mixed HEX value + */ + public function mix( $hex2, $amount = 0 ) { + $rgb2 = self::hexToRgb( $hex2 ); + $mixed = $this->_mix( $this->_rgb, $rgb2, $amount ); + + // Return as HEX + return self::rgbToHex( $mixed ); + } + + /** + * Creates an array with two shades that can be used to make a gradient + * @param int $amount Optional percentage amount you want your contrast color + * @return array An array with a 'light' and 'dark' index + */ + public function makeGradient( $amount = self::DEFAULT_ADJUST ) { + // Decide which color needs to be made + if ( $this->isLight() ) { + $lightColor = $this->_hex; + $darkColor = $this->darken( $amount ); + } else { + $lightColor = $this->lighten( $amount ); + $darkColor = $this->_hex; + } + + // Return our gradient array + return [ 'light' => $lightColor, 'dark' => $darkColor ]; + } + + /** + * Returns whether or not given color is considered "light" + * @param string|Boolean $color + * @return boolean + */ + public function isLight( $color = false ) { + // Get our color + $color = ( $color ) ? $color : $this->_hex; + + // Calculate straight from rbg + $r = hexdec( $color[0] . $color[1] ); + $g = hexdec( $color[2] . $color[3] ); + $b = hexdec( $color[4] . $color[5] ); + + return ( ( $r * 299 + $g * 587 + $b * 114 ) / 1000 > 130 ); + } + + /** + * Returns whether or not a given color is considered "dark" + * @param string|Boolean $color + * @return boolean + */ + public function isDark( $color = false ) { + // Get our color + $color = ( $color ) ? $color:$this->_hex; + + // Calculate straight from rbg + $r = hexdec( $color[0] . $color[1] ); + $g = hexdec( $color[2] . $color[3] ); + $b = hexdec( $color[4] . $color[5] ); + + return ( ( $r * 299 + $g * 587 + $b * 114 ) / 1000 <= 130 ); + } + + /** + * Returns the complimentary color + * @return string Complementary hex color + * + */ + public function complementary() { + // Get our HSL + $hsl = $this->_hsl; + + // Adjust Hue 180 degrees + $hsl['H'] += ( $hsl['H'] > 180 ) ? -180 : 180; + + // Return the new value in HEX + return self::hslToHex( $hsl ); + } + + /** + * Returns your color's HSL array + */ + public function getHsl() { + return $this->_hsl; + } + + /** + * Returns your original color minus any hash mark. + */ + public function getHex() { + return $this->_hex; + } + + /** + * Returns your original color with the hash mark. + * + * @since 4.14.2 + * + * @return string Hex color code with hash prefix. + */ + public function get_hex_with_hash() { + return '#' . $this->_hex; + } + + /** + * Returns your color's RGB array + */ + public function getRgb() { + return $this->_rgb; + } + + /** + * Returns the cross browser CSS3 gradient + * @param int $amount Optional: percentage amount to light/darken the gradient + * @param boolean $vintageBrowsers Optional: include vendor prefixes for browsers that almost died out already + * @param string $prefix Optional: prefix for every lines + * @param string $suffix Optional: suffix for every lines + * @link http://caniuse.com/css-gradients Resource for the browser support + * @return string CSS3 gradient for chrome, safari, firefox, opera and IE10 + */ + public function getCssGradient( $amount = self::DEFAULT_ADJUST, $vintageBrowsers = false, $suffix = '', $prefix = '' ) { + + // Get the recommended gradient + $g = $this->makeGradient( $amount ); + + $css = ''; + /* fallback/image non-cover color */ + $css .= "{$prefix}background-color: #".$this->_hex.";{$suffix}"; + + /* IE Browsers */ + $css .= "{$prefix}filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#".$g['light']."', endColorstr='#".$g['dark']."');{$suffix}"; + + /* Safari 4+, Chrome 1-9 */ + if ( $vintageBrowsers ) { + $css .= "{$prefix}background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#{$g['light']}), to(#{$g['dark']}));{$suffix}"; + } + + /* Safari 5.1+, Mobile Safari, Chrome 10+ */ + $css .= "{$prefix}background-image: -webkit-linear-gradient(top, #{$g['light']}, #{$g['dark']});{$suffix}"; + + /* Firefox 3.6+ */ + if ( $vintageBrowsers ) { + $css .= "{$prefix}background-image: -moz-linear-gradient(top, #{$g['light']}, #{$g['dark']});{$suffix}"; + } + + /* Opera 11.10+ */ + if ( $vintageBrowsers ) { + $css .= "{$prefix}background-image: -o-linear-gradient(top, #{$g['light']}, #{$g['dark']});{$suffix}"; + } + + /* Unprefixed version (standards): FF 16+, IE10+, Chrome 26+, Safari 7+, Opera 12.1+ */ + $css .= "{$prefix}background-image: linear-gradient(to bottom, #{$g['light']}, #{$g['dark']});{$suffix}"; + + // Return our CSS + return $css; + } + + // =========================== + // = Private Functions Below = + // =========================== + + + /** + * Darkens a given HSL array + * @param array $hsl + * @param int $amount + * @return array $hsl + */ + private function _darken( $hsl, $amount = self::DEFAULT_ADJUST ) { + // Check if we were provided a number + if ( $amount ) { + $hsl['L'] = ( $hsl['L'] * 100 ) - $amount; + $hsl['L'] = ( $hsl['L'] < 0 ) ? 0 : $hsl['L'] / 100; + } else { + // We need to find out how much to darken + $hsl['L'] = $hsl['L'] / 2 ; + } + + return $hsl; + } + + /** + * Lightens a given HSL array + * @param array $hsl + * @param int $amount + * @return array $hsl + */ + private function _lighten( $hsl, $amount = self::DEFAULT_ADJUST ) { + // Check if we were provided a number + if ( $amount ) { + $hsl['L'] = ( $hsl['L'] * 100 ) + $amount; + $hsl['L'] = ( $hsl['L'] > 100 ) ? 1 : $hsl['L'] / 100; + } else { + // We need to find out how much to lighten + $hsl['L'] += ( 1 - $hsl['L'] ) / 2; + } + + return $hsl; + } + + /** + * Mix 2 rgb colors and return an rgb color + * @param array $rgb1 + * @param array $rgb2 + * @param int $amount ranged -100..0..+100 + * @return array $rgb + * + * ported from http://phpxref.pagelines.com/nav.html?includes/class.colors.php.source.html + */ + private function _mix( $rgb1, $rgb2, $amount = 0 ) { + + $r1 = ( $amount + 100 ) / 100; + $r2 = 2 - $r1; + + $rmix = ( ( $rgb1['R'] * $r1 ) + ( $rgb2['R'] * $r2 ) ) / 2; + $gmix = ( ( $rgb1['G'] * $r1 ) + ( $rgb2['G'] * $r2 ) ) / 2; + $bmix = ( ( $rgb1['B'] * $r1 ) + ( $rgb2['B'] * $r2 ) ) / 2; + + return [ 'R' => $rmix, 'G' => $gmix, 'B' => $bmix ]; + } + + /** + * Given a Hue, returns corresponding RGB value + * @param int $v1 + * @param int $v2 + * @param int $vH + * @return int + */ + private static function _huetorgb( $v1, $v2, $vH ) { + if ( $vH < 0 ) { + $vH += 1; + } + + if ( $vH > 1 ) { + $vH -= 1; + } + + if ( ( 6 * $vH ) < 1 ) { + return ( $v1 + ( $v2 - $v1 ) * 6 * $vH ); + } + + if ( ( 2 * $vH ) < 1 ) { + return $v2; + } + + if ( ( 3 * $vH ) < 2 ) { + return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 ); + } + + return $v1; + + } + + /** + * You need to check if you were given a good hex string + * @param string $hex + * @return string Color + * @throws Exception "Bad color format" + */ + private static function _checkHex( $hex ) { + // Strip # sign is present + $color = str_replace( '#', '', $hex ); + + // Make sure it's 6 digits + if ( strlen( $color ) == 3 ) { + $color = $color[0] . $color[0] . $color[1] . $color[1] . $color[2] . $color[2]; + } elseif ( strlen( $color ) != 6 ) { + throw new Exception( 'HEX color needs to be 6 or 3 digits long' ); + } + + return $color; + } + + /** + * Get color that contrasts the most. + * + * @since 5.0.10 + * + * @param string $hex_color Hex value of color to compare. + * @param string $light_color Hex value of light contrast color. + * @param string $dark_color Hex value of dark contrast color. + * + * @return string + */ + public static function get_contrast_color( $hex_color, $light_color = '#ffffff', $dark_color = '#000000' ) { + // Get contrast ratios for both light and dark. + $dark_ratio = self::get_contrast_ratio( $hex_color, $dark_color ); + $light_ratio = self::get_contrast_ratio( $hex_color, $light_color ); + + // Return the highest ratio. + if ( $dark_ratio > $light_ratio ) { + return $dark_color; + } + return $light_color +; + } + + /** + * Get contrast ratio of two colors. + * + * @since 5.0.10 + * + * @param string $hex_color Hex value of color. + * @param string $compare_color Hax value of comparing color. + * + * @return int + */ + public static function get_contrast_ratio( $hex_color, $compare_color ) { + // Separate into hexColor RGB. + $R1 = hexdec( substr( $hex_color, 1, 2 ) ); + $G1 = hexdec( substr( $hex_color, 3, 2 ) ); + $B1 = hexdec( substr( $hex_color, 5, 2 ) ); + + $R2comp = hexdec( substr( $compare_color, 1, 2 ) ); + $G2comp = hexdec( substr( $compare_color, 3, 2 ) ); + $B2comp = hexdec( substr( $compare_color, 5, 2 ) ); + + // Calculate contrast ratio. + $L1 = 0.2126 * pow( $R1 / 255, 2.2 ) + + 0.7152 * pow( $G1 / 255, 2.2 ) + + 0.0722 * pow( $B1 / 255, 2.2 ); + $L2 = 0.2126 * pow( $R2comp / 255, 2.2 ) + + 0.7152 * pow( $G2comp / 255, 2.2 ) + + 0.0722 * pow( $B2comp / 255, 2.2 ); + + if ( $L1 > $L2 ) { + return (int)( ( $L1 + 0.05 ) / ( $L2 + 0.05 ) ); + } + return (int)( ( $L2 + 0.05 ) / ( $L1 + 0.05 ) ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Compatibility_Classes.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Compatibility_Classes.php new file mode 100644 index 000000000..972c0112c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Compatibility_Classes.php @@ -0,0 +1,352 @@ + true, 'class => false ] + * + * @var array + */ + protected $classes = []; + + /** + * Stores all the admin classes. + * In the format: ['class' => true, 'class => false ] + * + * @var array + */ + protected $admin_classes = []; + + /** + * Queue-aware method to get the classes array. + * Returns the array of classes to add. + * + * @since 4.14.0 + * + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + * @return array A map of the classes for the queue. + */ + public function get_classes( $queue = 'display' ) { + switch( $queue ) { + case 'admin': + return $this->admin_classes; + break; + case 'all': + return array_merge( $this->classes, $this->admin_classes ); + break; + default: + return $this->classes; + break; + } + } + + /** + * Returns the array of classnames to add + * + * @since 4.14.0 + * + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + * @return array The list of class names. + */ + public function get_class_names( $queue = 'display' ) { + $classes = $this->get_classes( $queue ); + + return array_keys( + array_filter( + $classes, + static function( $v ) { + return $v; + }, + ARRAY_FILTER_USE_KEY + ) + ); + } + + /** + * Checks if a class is in the queue, + * wether it's going to be added or not. + * + * @since 4.14.0 + * + * @param string $class The class we are checking for. + * @param string $queue The queue we want to check 'admin', 'display', 'all' + * @return boolean Whether a class exists or not in the queue. + */ + public function class_in_queue( $class, $queue = 'display' ) { + $classes = $this->get_classes( $queue ); + + return array_key_exists( $class, $classes ); + } + + /** + * Checks if a class is in the queue and going to be added. + * + * @since 4.14.0 + * + * @param string $class The class we are checking for. + * @param string $queue The queue we want to check 'admin', 'display', 'all' + * @return boolean Whether a class is currently queued or not. + */ + public function class_is_enqueued( $class, $queue = 'display' ) { + $classes = $this->get_classes( $queue ); + if ( ! $this->class_in_queue( $class, $queue ) ) { + return false; + } + + return $classes[ $class ]; + } + + /** + * Dequeues a class. + * + * @since 4.14.0 + * + * @param string $class + * @param string $queue The queue we want to alter 'admin', 'display', 'all' + * @return boolean + */ + public function dequeue_class( $class, $queue = 'display' ) { + if ( ! $this->class_in_queue( $class, $queue ) ) { + return false; + } + + if ( 'admin' !== $queue ) { + $this->classes[ $class ] = false; + } + + if ( 'display' !== $queue ) { + $this->admin_classes[ $class ] = false; + } + + return true; + + } + + /** + * Enqueues a class. + * + * @since 4.14.0 + * + * @param string $class + * @param string $queue The queue we want to alter 'admin', 'display', 'all' + * @return false + */ + public function enqueue_class( $class, $queue = 'display' ) { + if ( ! $this->class_in_queue( $class, $queue ) ) { + return false; + } + + if ( 'admin' !== $queue ) { + $this->classes[ $class ] = true; + return true; + } + + if ( 'display' !== $queue ) { + $this->admin_classes[ $class ] = true; + return true; + } + + // Something went wrong. + return false; + } + + /** + * Add a single class to the queue. + * + * @since 4.14.0 + * + * @param string $class The class to add. + * @param string $queue The queue we want to alter 'admin', 'display', 'all' + * @return void + */ + public function add_class( $class, $queue = 'display' ) { + if ( empty( $class ) ) { + return; + } + + if ( is_array( $class ) ) { + $this->add_classes( $class, $queue ); + } elseif ( $this->should_add_compatibility_class_to_queue( $class, $queue ) ) { + + $class = sanitize_html_class( $class ); + + if ( 'admin' !== $queue ) { + $this->classes[ $class ] = true ; + } + + if ( 'display' !== $queue ) { + $this->admin_classes[ $class ] = true ; + } + } + } + + /** + * Add an array of classes to the queue. + * + * @since 4.14.0 + * + * @param array $class The classes to add. + * @return void + */ + public function add_classes( array $classes, $queue = 'display' ) { + foreach ( $classes as $key => $value ) { + // If the classes are passed as class => bool, only add ones set to true. + if ( is_bool( $value ) && false !== $value ) { + $this->add_class( $key, $queue ); + } else { + $this->add_class( $value, $queue ); + } + } + } + + /** + * Remove a single class from the queue. + * + * @since 4.14.0 + * + * @param string $class The class to remove. + * @return void + */ + public function remove_class( $class, $queue = 'display' ) { + if ( 'admin' !== $queue ) { + $this->classes = array_filter( + $this->classes, + static function( $k ) use ( $class ) { + return $k !== $class; + }, + ARRAY_FILTER_USE_KEY + ); + } + + if ( 'display' !== $queue ) { + $this->admin_classes = array_filter( + $this->admin_classes, + static function( $k ) use ( $class ) { + return $k !== $class; + }, + ARRAY_FILTER_USE_KEY + ); + } + } + + /** + * Remove an array of classes from the queue. + * + * @since 4.14.0 + * + * @param array $classes The classes to remove. + * @return void + */ + public function remove_classes( array $classes, $queue = 'display' ) { + if ( empty( $classes ) || ! is_array( $classes) ) { + return; + } + + foreach ( $classes as $class ) { + $this->remove_class( $class, $queue ); + } + } + + /** + * Adds the enqueued classes to the compatibility class array. + * + * @since 4.14.0 + * + * @param array $classes An array of compatibility class names. + * @return array Array of compatibility classes. + */ + public function add_compatibility_classes( $classes = [] ) { + // Make sure they should be added. + if( ! $this->should_add_compatibility_classes( $this->get_class_names(), (array) $classes, 'display' ) ) { + return $classes; + } + + $element_classes = new Element_Classes( $this->get_class_names() ); + + return array_merge( $classes, $element_classes->get_classes() ); + } + + /** + * Adds the enqueued classes to the compatibility class array. + * + * @since 4.14.0 + * + * @param string $classes The existing compatibility class names. + * + * @return string String of admin compatibility classes. + */ + public function add_admin_compatibility_classes( $classes ) { + $existing_classes = explode( ' ', $classes ); + // Make sure they should be added. + if ( ! $this->should_add_compatibility_classes( $this->get_class_names( 'admin' ), (array) $existing_classes, 'admin' ) ) { + // Ensure we return the current string on false! + return $classes; + } + + $element_classes = new Element_Classes( array_merge( $existing_classes, $this->get_class_names( 'admin' ) ) ); + + return $element_classes->get_classes_as_string(); + + } + + /** + * Should a individual class be added to the queue. + * + * @since 4.14.0 + * + * @param string $class The compatibility class we wish to add. + * + * @return boolean Whether to add tribe compatibility classes to the queue. + */ + private function should_add_compatibility_class_to_queue( $class, $queue = 'display' ) { + /** + * Filter whether to add the compatibility class to the queue or not. + * + * @since 4.14.0 + * + * @param boolean $add Whether to add the class to the queue or not. + * @param array $class The array of compatibility class names to add. + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + */ + return (bool) apply_filters( 'tribe_compatibility_class_should_add_to_queue', false, $class, $queue ); + } + + /** + * Logic for whether the compatibility classes, as a whole, should be added. + * + * @since 4.14.0 + * + * @param array $add_classes An array of compatibility class names to add. + * @param array $existing_classes An array of existing compatibility class names from WP. + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + * + * @return boolean Whether to add tribe compatibility classes. + */ + private function should_add_compatibility_classes( array $add_classes, array $existing_classes, $queue ) { + /** + * Filter whether to add tribe compatibility classes or not. + * + * @since 4.14.0 + * + * @param boolean $add Whether to add classes or not. + * @param array $add_classes The array of compatibility class names to add. + * @param array $existing_classes An array of existing compatibility class names from WP. + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + * + */ + return (bool)apply_filters( 'tribe_compatibility_classes_should_add', false, $queue, $add_classes, $existing_classes ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Coordinates_Provider.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Coordinates_Provider.php new file mode 100644 index 000000000..2928a2731 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Coordinates_Provider.php @@ -0,0 +1,134 @@ +http = ! empty( $https ) ? $https : _wp_http_get_object(); + } + + /** + * @param string|array $address + */ + public function provide_coordinates_for_address( $address ) { + + if ( is_array( $address ) ) { + $address = implode( ', ', array_filter( array_map( 'trim', $address ) ) ); + } + + $address = trim( $address ); + + if ( $location = $this->get_resolved( $address ) ) { + return $location; + } + + $base_request_url = trailingslashit( $this->get_google_api_base() ) . $this->get_google_api_json_format(); + $url = esc_url( add_query_arg( [ 'address' => $address ], $base_request_url ) ); + $response = $this->http->get( $url ); + + if ( is_wp_error( $response ) ) { + return false; + } + + $decoded = json_decode( $response['body'], true ); + + if ( empty( $decoded['status'] ) || 'OK' !== $decoded['status'] ) { + return false; + } + + if ( empty( $decoded['results'][0]['place_id'] ) || empty( $decoded['results'][0]['geometry']['location']['lat'] ) || empty( $decoded['results'][0]['geometry']['location']['lng'] ) ) { + return false; + } + + $location = $decoded['results'][0]['geometry']['location']; + + $updated_transient = array_merge( $this->get_transient(), [ $address => $location ] ); + set_transient( self::$transient_name, $updated_transient ); + $this->transient = $updated_transient; + + return $location; + } + + /** + * @return null|WP_Http + */ + public function get_http() { + return $this->http; + } + + protected function get_google_api_base() { + return self::$google_api_base; + } + + protected function get_google_api_json_format() { + return self::$google_api_json_format; + } + + protected function get_transient() { + if ( ! is_array( $this->transient ) ) { + $transient = get_transient( self::$transient_name ); + $this->transient = is_array( $transient ) ? $transient : []; + } + + return $this->transient; + } + + protected function get_resolved( $address ) { + $transient = $this->get_transient(); + + return isset( $transient[ $address ] ) ? $transient[ $address ] : false; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Date_I18n.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Date_I18n.php new file mode 100644 index 000000000..bd159c011 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Date_I18n.php @@ -0,0 +1,49 @@ +setTimestamp( $datetime->getTimestamp() ); + $date_object->setTimezone( $datetime->getTimezone() ); + return $date_object; + } + + /** + * Returns a translated string using the params from this DateTime instance. + * + * @since 4.11.0 + * + * @param string $date_format Format to be used in the translation. + * + * @return string Translated date. + */ + public function format_i18n( $date_format ) { + $unix_with_tz = $this->getTimestamp() + $this->getOffset(); + $translated = date_i18n( $date_format, $unix_with_tz ); + + return $translated; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Date_I18n_Immutable.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Date_I18n_Immutable.php new file mode 100644 index 000000000..5175ecc4b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Date_I18n_Immutable.php @@ -0,0 +1,49 @@ +setTimestamp( $datetime->getTimestamp() ); + $date_object = $date_object->setTimezone( $datetime->getTimezone() ); + + return $date_object; + } + + /** + * Returns a translated string using the params from this Immutable DateTime instance. + * + * @since 4.11.0 + * + * @param string $date_format Format to be used in the translation. + * + * @return string Translated date. + */ + public function format_i18n( $date_format ) { + $unix_with_tz = $this->getTimestamp() + $this->getOffset(); + $translated = date_i18n( $date_format, $unix_with_tz ); + + return $translated; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Element_Attributes.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Element_Attributes.php new file mode 100644 index 000000000..4906f3e62 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Element_Attributes.php @@ -0,0 +1,241 @@ + + */ + protected $results = []; + + /** + * Stores the arguments passed. + * + * @since 4.12.3 + * + * @var array + */ + protected $arguments = []; + + /** + * Setups an instance of Element Attributes. + * + * @since 4.12.3 + * + * @return void + */ + public function __construct() { + $this->arguments = func_get_args(); + } + + /** + * When invoked this class will return the full HTML attributes. + * + * @since 4.12.3 + * + * @return string In the format ` attribute1="value1" attribute2="value2" ` + */ + public function __invoke() { + $this->arguments = func_get_args(); + return $this->get_attributes(); + } + + + /** + * When cast to string an instance will return the full HTML attributes. + * + * @since 4.12.3 + * + * @return string In the format ` attribute1="value1" attribute2="value2" ` + */ + public function __toString() { + return $this->get_attributes(); + } + + /** + * Gets the full HTML attributes for this instance of Element Attributes. + * It will contain a space on each end of the attribute. + * + * @since 4.12.3 + * + * @return string In the format ` attribute1="value1" attribute2="value2" ` + */ + public function get_attributes() { + $attributes = $this->get_attributes_as_string(); + + // Bail with empty string when no attributes are present + if ( ! $attributes ) { + return ''; + } + + return " {$attributes} "; + } + + /** + * Gets a space separated string of all attributes to be printed. + * + * @since 4.12.3 + * + * @return string + */ + public function get_attributes_as_string() { + return implode( ' ', $this->get_attributes_array() ); + } + + /** + * Get the array of attributes to be printed. + * + * @since 4.12.3 + * + * @return array + */ + public function get_attributes_array() { + $this->results = []; + $attributes = []; + + $this->parse_array( $this->arguments ); + + foreach ( $this->results as $key => $val ) { + if ( ! $val && '0' !== $val ) { + continue; + } + + if ( is_bool( $val ) ) { + $attributes[] = esc_attr( $key ); + } else { + // Remove double quotes that might be surrounding the value. + trim( $val, '"' ); + $attributes[] = esc_attr( $key ) . '="' . esc_attr( $val ) . '"'; + } + } + + return $attributes; + } + + /** + * Parse arguments or argument for this instance, and store values on results. + * + * @since 4.12.3 + * + * @param mixed $arguments Any possible set of arguments that this class supports. + * + * @return void + */ + protected function parse( $arguments ) { + if ( ! $arguments ) { + return; + } + + if ( is_numeric( $arguments ) ) { // phpcs:ignore + // Bail on any numeric values. + } elseif ( is_array( $arguments ) ) { + // ['foo', 'bar', ...] || ['foo' => TRUE, 'bar' => FALSE, 'baz' => 'foo', ...] + $this->parse_array( $arguments ); + } elseif ( is_string( $arguments ) ) { + // 'foo bar' + $this->parse_string( $arguments ); + } elseif ( $arguments instanceof \Closure || is_callable( $arguments ) ) { + // function() {} + $this->parse_callable( $arguments ); + } elseif ( is_object( $arguments ) ) { + // stdClass + $this->parse_object( $arguments ); + } + } + + /** + * Parse an array into an array of acceptable values for the instance. + * + * @since 4.12.3 + * + * @param array $values Array of values to be parsed. + * + * @return void + */ + protected function parse_array( array $values ) { + foreach ( $values as $key => $value ) { + if ( is_int( $key ) ) { + $this->parse( $value ); + } elseif ( is_string( $key ) ) { + if ( ! is_bool( $value ) && ! is_string( $value ) ) { + throw new \UnexpectedValueException( 'Value for key ' . $key . ' must be of type boolean or string' ); + } + + $this->results[ $key ] = $value; + } + } + } + + /** + * Parse a string into an array of acceptable values for the instance. + * + * @since 4.12.3 + * + * @param string $arguments Space separated string of attributes to be parsed. + * + * @return void + */ + protected function parse_string( $arguments ) { + $values = preg_split( '/\s+/', $arguments, -1, PREG_SPLIT_NO_EMPTY ); + + // When it doesn't match, bail early. + if ( ! $values ) { + return; + } + + $attrs = []; + + foreach ( $values as $key => $value ) { + if ( preg_match( '/^(?[^=]+)="*(?.*?)"*$/', $value, $m ) ) { + // Something like `f="boo"` or `foo=bar`. + $attrs[ $m['key'] ] = $m['value']; + + continue; + } + + $attrs[ $value ] = true; + } + + $this->parse_array( $attrs ); + } + + /** + * Parses an object into the array of considered attributes. + * + * @since 4.12.3 + * + * @param mixed $object Object to be converted into array and parsed. + * + * @return void + */ + protected function parse_object( $object ) { + $this->parse_array( (array) $object ); + } + + /** + * Parses a callable method or function into the array of considered attributes. + * + * The result of the callable will REPLACE the current attributes, callables will work like filters. + * + * @since 4.12.3 + * + * @param callable $method_or_function Method or Function to be called. + * + * @return void + */ + protected function parse_callable( callable $method_or_function ) { + $filtered = $method_or_function( $this->results ); + $this->results = []; + $this->parse( $filtered ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Element_Classes.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Element_Classes.php new file mode 100644 index 000000000..18496b0a9 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Element_Classes.php @@ -0,0 +1,246 @@ +arguments = func_get_args(); + } + + /** + * When invoked this class will return the full HTML class attribute. + * + * @since 4.9.13 + * + * @return string In the format ` class="class1 class2" ` + */ + public function __invoke() { + $this->arguments = func_get_args(); + return $this->get_attribute(); + } + + + /** + * When cast to string an instance will return the full HTML class attribute. + * + * @since 4.9.13 + * + * @return string In the format ` class="class1 class2" ` + */ + public function __toString() { + return $this->get_attribute(); + } + + /** + * Gets the full HTML class attribute for this instance of Element Classes. + * It will contain a space on each end of the attribute. + * + * @since 4.9.13 + * + * @return string In the format ` class="class1 class2" ` + */ + public function get_attribute() { + $classes = $this->get_classes_as_string(); + + // Bail with empty string when no classes are present + if ( ! $classes ) { + return ''; + } + + return " class=\"{$classes}\" "; + } + + /** + * Gets a space separated string of all classes to be printed. + * + * @since 4.9.13 + * + * @return string + */ + public function get_classes_as_string() { + return implode( ' ', $this->get_classes() ); + } + + /** + * Get the array of classes to be printed. + * + * @since 4.9.13 + * + * @return array + */ + public function get_classes() { + $this->results = []; + $classes = []; + + $this->parse_array( $this->arguments ); + + foreach ( $this->results as $key => $val ) { + if ( ! $val ) { + continue; + } + + $classes[] = $key; + } + + $classes = array_map( 'sanitize_html_class', $classes ); + $classes = array_filter( array_unique( $classes ) ); + + return $classes; + } + + + /** + * Get the array of the classes, using [ class_name => bool ] as the format. + * + * @since 4.9.13 + * + * @return array [ class_name => bool ] + */ + public function get_conditions() { + $this->results = []; + $this->parse_array( $this->arguments ); + + return $this->results; + } + + /** + * Parse arguments or argument for this instance, and store values on results. + * + * @since 4.9.13 + * + * @param mixed $arguments Any possible set of arguments that this class supports. + * @param boolean $default_value What is the default value for a given class. + * + * @return void + */ + protected function parse( $arguments, $default_value = true ) { + if ( ! $arguments ) { + return; + } + + if ( is_numeric( $arguments ) ) { // phpcs:ignore + // Bail on any numeric values + } elseif ( is_string( $arguments ) ) { + // 'foo bar' + $this->parse_string( $arguments ); + } elseif ( $arguments instanceof \Closure || is_callable( $arguments ) ) { + // function() {} + $this->parse_callable( $arguments ); + } elseif ( is_array( $arguments ) ) { + // ['foo', 'bar', ...] || ['foo' => TRUE, 'bar' => FALSE, ...] + $this->parse_array( $arguments ); + } elseif ( is_object( $arguments ) ) { + // stdClass + $this->parse_object( $arguments ); + } + } + + /** + * Parse a string into an array of acceptable values for the instance. + * + * @since 4.9.13 + * + * @param string $arguments Space separated string of classes to be parsed. + * @param boolean $default_value What is the default value for a given class. + * + * @return void + */ + protected function parse_string( $arguments, $default_value = true ) { + $values = preg_split( '/\s+/', $arguments, -1, PREG_SPLIT_NO_EMPTY ); + + // When it doesn't match, bail early. + if ( ! $values ) { + return; + } + + foreach ( $values as $class_name ) { + $this->results[ $class_name ] = $default_value; + } + } + + /** + * Parse an array into an array of acceptable values for the instance. + * + * @since 4.9.13 + * + * @param array $values Array of values to be parsed. + * + * @return void + */ + protected function parse_array( array $values ) { + foreach ( $values as $key => $value ) { + if ( is_int( $key ) ) { + if ( is_bool( $value ) ) { + $this->parse( $key, $value ); + } else { + $this->parse( $value ); + } + } elseif ( is_string( $key ) ) { + if ( $value instanceof \Closure || is_callable( $value ) ) { + $value = $value( $this->results ); + } + + $this->parse_string( $key, tribe_is_truthy( $value ) ); + } + } + } + + /** + * Parses an object, only if it contains __toString it will be considered. + * + * @since 4.9.13 + * + * @param mixed $object Object to be checked for the __toString method + * + * @return void + */ + protected function parse_object( $object ) { + if ( method_exists( $object, '__toString' ) ) { + $this->parse( (string) $object ); + } + } + + /** + * Parses a callable method or function into the array of considered classes.s + * + * @since 4.9.13 + * + * @param callable $method_or_function Method or Function to be called. + * + * @return void + */ + protected function parse_callable( callable $method_or_function ) { + $this->parse( $method_or_function( $this->results ) ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Global_ID.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Global_ID.php new file mode 100644 index 000000000..8ff4e91d4 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Global_ID.php @@ -0,0 +1,165 @@ + 'meetup.com', + 'facebook' => 'facebook.com', + 'eventbrite' => 'eventbrite.com', + ]; + + /** + * Tribe__Utils__Global_ID constructor. + */ + public function __construct() { + + /** + * Filters the registered origin types for Global IDs. + * + * @since 4.7.21 + * + * @param array $type_origins List of origin types. + */ + $this->valid_types = apply_filters( 'tribe_global_id_valid_types', $this->valid_types ); + + /** + * Filters the registered origin URLs for Global IDs. + * + * @since 4.7.21 + * + * @param array $type_origins List of origin URLs. + */ + $this->type_origins = apply_filters( 'tribe_global_id_type_origins', $this->type_origins ); + + } + + /** + * A setter and getter for the Type of ID + * + * @param string|null $name When null is passed it will return the current Type + * @return mixed Will return False on invalid type or the Type in String + */ + public function type( $name = null ) { + if ( is_null( $name ) ) { + return $this->type; + } + + $name = strtolower( $name ); + + if ( ! in_array( $name, $this->valid_types ) ) { + return false; + } + + $this->type = $name; + + return $this->type; + } + + /** + * A setter and getter for the origin on this ID + * + * @param string|null $name When null is passed it will return the current Origin + * @return mixed Will return False on invalid origin or the Origin in String + */ + public function origin( $url = null ) { + if ( ! empty( $this->type_origins[ $this->type ] ) ) { + $this->origin = $this->type_origins[ $this->type ]; + } + + if ( is_null( $url ) ) { + return $this->origin; + } + + $parts = wp_parse_url( $url ); + + if ( ! $parts ) { + return false; + } + + $this->origin = $parts['host']; + + if ( ! empty( $parts['path'] ) ) { + $this->origin .= $parts['path']; + } + + if ( ! empty( $parts['query'] ) ) { + $this->origin .= '?' . $parts['query']; + } + + return $this->origin; + } + + /** + * A very simple Generation of IDs + * + * @param array $args Which query arguments will be added to the Origin + * + * @return string + */ + public function generate( array $args = [] ) { + // We can't do this without type or origin + if ( ! $this->type() || ! $this->origin() ) { + return false; + } + + return add_query_arg( $args, $this->origin() ); + } + + /** + * Parse the Global ID string. + * + * @param string $global_id The previously generated global ID string. + * + * @return array The parsed $args information built by self::generate() + * + * @since 4.7.15 + */ + public function parse( $global_id ) { + $parsed_global_id = null; + + if ( $global_id ) { + $global_id = html_entity_decode( $global_id ); // & characters replaced as expected + + $parsed = wp_parse_url( 'http://' . $global_id ); + + if ( ! empty( $parsed['query'] ) ) { + $parsed_query = []; + + wp_parse_str( $parsed['query'], $parsed_query ); + + if ( ! empty( $parsed_query ) ) { + $parsed_global_id = $parsed_query; + } + } + } + + return $parsed_global_id; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/JSON.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/JSON.php new file mode 100644 index 000000000..6268aa77a --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/JSON.php @@ -0,0 +1,38 @@ + $subvalue ) { + $escaped[ $key ] = self::escape_string( $subvalue ); + } + + return $escaped; + } + + $escapers = [ "\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c" ]; + $replacements = [ "\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b" ]; + + return str_replace( $escapers, $replacements, $value ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_Collection.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_Collection.php new file mode 100644 index 000000000..a3c6651c0 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_Collection.php @@ -0,0 +1,118 @@ +all; + * } + * ```` + * + * @since 4.9.14 + * @package Tribe\Utils + */ + +namespace Tribe\Utils; + +/** + * Class Lazy_Collection + * + * @since 4.9.14 + * @package Tribe\Utils + */ +class Lazy_Collection implements Collection_Interface { + use Collection_Trait; + use Lazy_Events; + + /** + * The callback in charge of providing the elements. + * + * @var callable + */ + protected $callback; + + /** + * The elements of the array. + * + * @var array + */ + protected $items; + + /** + * Array_Promise constructor. + * + * @since 4.9.14 + * + * @param callable $callback The callback that will be used to populate the elements. + */ + public function __construct( callable $callback ) { + $this->callback = $callback; + } + + /** + * Fetches the array items and returns them. + * + * @since 4.9.14 + * + * @return array The array items. + */ + public function all() { + $this->resolve(); + + return $this->items; + } + + /** + * Fills the array elements from the callback if required. + * + * @since 4.9.14 + */ + protected function resolve() { + if ( null !== $this->items ) { + return; + } + + $items = call_user_func( $this->callback ); + $this->items = (array) $items; + $this->resolved(); + } + + /** + * Allows accessing the collection methods using properties. + * + * E.g. `$collection->first` is equivalent to `$collection->first()`. + * + * @since 4.9.14 + * + * @param string $property The name of the property to access. + * + * @return mixed|null The return value of the collection corresponding method or `null` if the collection does not + * have that method. + */ + public function __get( $property ) { + if ( method_exists( $this, $property ) ) { + return call_user_func( [ $this, $property ] ); + } + + return null; + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() { + return $this->all(); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_Events.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_Events.php new file mode 100644 index 000000000..279288ecb --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_Events.php @@ -0,0 +1,172 @@ +list ){ + * $this->list = really_expensive_calculation(); + * } + * + * $this->resolved(); + * } + * + * return $this->list; + * } + * } + * + * class Lazy_Value { + * use Tribe\Utils\Lazy_Events; + * + * protected $value; + * + * public function calculate_value(){ + * $cached = wp_cache_get( 'expensive_value' ); + * + * if( false !== $cached ){ + * return $cached; + * + * if( null === $this->value ){ + * $this->value = really_expensive_calculation(); + * } + * + * $this->resolved(); + * } + * + * return $this->value; + * } + * } + * + * class List_And_Value { + * protected $list; + * protected $value; + * + * public function __construct( Lazy_List_Of_Stuff $list, Lazy_Value $value ){ + * $this->list = $list; + * $this->value = $value; + * $this->list->on_resolve( [ $this, 'cache' ] ); + * $this->value->on_resolve( [ $this, 'cache' ] ); + * } + * + * public function cache(){ + * wp_cache_set( 'list_and_value', [ + * 'list' => $this->list->fetch_list(), + * 'value' => $this->value->calculate_value(), + * ]); + * } + * + * public function get_list(){ + * $cached = wp_cache_get( 'list_and_value' ); + * + * return $cached ? $cached['list'] : $this->list->fetch_list(); + * } + * + * public function get_value(){ + * $cached = wp_cache_get( 'list_and_value' ); + * + * return $cached ? $cached['value'] : $this->value->fetch_value(); + * } + * } + * + * + * $list = new Lazy_List_Of_Stuff(); + * $value = new Lazy_Value(); + * $list_and_value = new List_And_Value( $list, $value ); + * + * // Accessing `value` will make it so that `list` too will be cached. + * $list_and_value->get_value(); + * ```` + * + * @package Tribe\Utils + */ + +namespace Tribe\Utils; + +/** + * Trait Lazy_Events + * + * @since 4.9.16 + * + * @package Tribe\Utils + * + * @property string $lazy_resolve_action The action to which the trait will hook to run the callback if the object + * resolved. Using classes should define the property if the default `shutdown` + * one is not correct. + * @property int $lazy_resolve_priority The priority at which the resolution callback will be hooked on the + * `$lazy_resolve_action`; defaults to `10`. + */ +trait Lazy_Events { + + /** + * The callback that will be called when, and if, the lazy object resolved at least once. + * + * @since 4.9.16 + * + * @var + */ + protected $lazy_resolve_callback; + + /** + * Sets the callback that will be hooked to the resolve action when, and if, the `resolved` method is called. + * + * @since 4.9.16 + * + * @param callable $callback The callback that will be hooked on the `$lazy_resolve_action` (defaults to `shutdown`) + * if the `resolved` method is called. + * + * @return static The object instance. + * + * @see Lazy_Events::resolved() + */ + public function on_resolve( callable $callback = null ) { + if ( null === $callback ) { + return $this; + } + + $this->lazy_resolve_callback = $callback; + + return $this; + } + + /** + * Hooks the `$lazy_resolve_callback` to the `$lazy_resolve_action` with the `$lazy_resolve_priority` if set. + * + * @since 4.9.16 + */ + protected function resolved() { + if ( empty( $this->lazy_resolve_callback ) ) { + return; + } + + $action = property_exists( $this, 'lazy_resolve_action' ) ? + $this->lazy_resolve_action + : 'shutdown'; + $priority = property_exists( $this, 'lazy_resolve_priority' ) ? + $this->lazy_resolve_priority + : 10; + + $hooked = has_action( $action, $this->lazy_resolve_callback ); + + // Let's play it safe and move the resolution as late as possible. + $new_priority = false !== $hooked ? max( $hooked, $priority ) : $priority; + + if ( is_numeric( $hooked ) && $hooked !== $new_priority ) { + remove_action( $action, $this->lazy_resolve_callback, $hooked ); + } + + add_action( $action, $this->lazy_resolve_callback, $new_priority ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_String.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_String.php new file mode 100644 index 000000000..aa762b1d2 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Lazy_String.php @@ -0,0 +1,172 @@ +value_callback = $callback; + $this->escape_callback = $escape_callback; + } + + /** + * Inits, and returns, the string value of the string. + * + * @since 4.9.16 + * + * @return string The unescaped string value. + */ + public function __toString() { + if ( null === $this->string ) { + $value = call_user_func( $this->value_callback ); + if ( ! $value instanceof \Generator ) { + $value = (string) $value; + } + + $this->string = $value; + $this->resolved(); + } + + return $this->string; + } + + /** + * Returns the HTML ready, escaped version of the string. + * + * @since 4.9.16 + * + * @return string The escaped version of the string. + */ + public function escaped() { + if ( null !== $this->escaped ) { + return $this->escaped; + } + + $this->escaped = empty( $this->escape_callback ) + ? $this->__toString() + : call_user_func( $this->escape_callback, $this->__toString() ); + + return $this->escaped; + } + + /** + * Returns the string value, just a proxy of the `__toString` method. + * + * @since 4.9.16 + * + * @return string The string value. + */ + public function value() { + return $this->__toString(); + } + + /** + * {@inheritDoc} + * + * @since 4.9.16 + */ + public function serialize() { + $serialized = serialize( [ $this->__toString(), $this->escaped() ] ); + + unset( $this->value_callback, $this->escape_callback ); + + return $serialized; + } + + /** + * {@inheritDoc} + * + * @since 4.9.16 + */ + public function unserialize( $serialized ) { + $data = unserialize( $serialized ); + $this->__unserialize( $data ); + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() { + return $this->value(); + } + + /** + * PHP 8.0+ compatible implementation of the serialization logic. + * + * @since 5.0.6 + * + * @return array The data to serialize. + */ + public function __serialize(): array { + return [ + 'string' => $this->__toString(), + 'escaped' => $this->escaped(), + ]; + } + + /** + * PHP 8.0+ compatible implementation of the unserialization logic. + * + * @since 5.0.6 + * + * @param array $data The data to unserialize. + */ + public function __unserialize( array $data ): void { + $this->string = $data['string'] ?? null; + $this->escaped = $data['escaped'] ?? null; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Paths.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Paths.php new file mode 100644 index 000000000..1f8bb8029 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Paths.php @@ -0,0 +1,75 @@ +> ...$paths A set of paths to merge, each one either a string or an array + * of path fragments. + * + * @return string The merged path, the path intersecting fragments removed. + */ + public static function merge( ...$paths ) { + $merged_paths = ''; + + if ( count( $paths ) > 2 ) { + $slice = array_splice( $paths, 0, 1 ); + $paths = array_merge( $slice, [ static::merge( ...$paths ) ] ); + } + + $path_1 = isset( $paths[0] ) ? $paths[0] : ''; + $lead_slash = is_string( $path_1 ) && $path_1 !== ltrim( $path_1, '\\/' ) ? DIRECTORY_SEPARATOR : ''; + $path_2 = isset( $paths[1] ) ? $paths[1] : ''; + $trail_slash = is_string( $path_2 ) && $path_2 !== rtrim( $path_2, '\\/' ) ? DIRECTORY_SEPARATOR : ''; + // Handle *nix spacing escape sequence (`\ `) correctly. The Windows one (`^ `) is already handled. + $break_pattern = '/[\\\\\\/](?!\\s)/'; + $drop_empty_strings = static function ( $frag ) { + return $frag !== ''; + }; + $path_1_frags = is_array( $path_1 ) + ? $path_1 + : array_filter( (array) preg_split( $break_pattern, $path_1 ), $drop_empty_strings ); + $path_2_frags = is_array( $path_2 ) + ? $path_2 + : array_filter( (array) preg_split( $break_pattern, $path_2 ), $drop_empty_strings ); + $non_consecutive_common = array_intersect( $path_1_frags, $path_2_frags ); + + $trimmed_path_2 = trim( + preg_replace( + '#^' . preg_quote( implode( DIRECTORY_SEPARATOR, $non_consecutive_common ), '#' ) . '#', '', + implode( DIRECTORY_SEPARATOR, $path_2_frags ) + ), + '\\/' + ); + + $merged_paths .= $lead_slash . implode( DIRECTORY_SEPARATOR, $path_1_frags ); + + if ( $trimmed_path_2 ) { + $merged_paths .= DIRECTORY_SEPARATOR . $trimmed_path_2 . $trail_slash; + } + + return $merged_paths; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Plugins.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Plugins.php new file mode 100644 index 000000000..ee96a0d8c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Plugins.php @@ -0,0 +1,80 @@ + 'Plugin Name', + 'PluginURI' => 'Plugin URI', + 'Version' => 'Version', + 'ExtensionClass' => 'Extension Class', + 'ExtensionFile' => 'Extension File', + 'Description' => 'Description', + 'Author' => 'Author', + 'AuthorURI' => 'Author URI', + 'TextDomain' => 'Text Domain', + 'DomainPath' => 'Domain Path', + 'Network' => 'Network', + ]; + + /** + * Filter which header keys passed to get_file_data(). + * + * @see get_file_data() + * + * @param array $headers The headers. + * @param string $plugin_file The plugin file path. + */ + $headers = apply_filters( 'tribe_get_plugin_data_headers', $headers, $plugin_file ); + $file_data = get_file_data( $plugin_file, $headers, 'plugin' ); + + /** + * Filter the parsed plugin header data. + * + * @param array $file_data Output from get_file_data(). + * @param string $plugin_file The plugin file path. + * @param array $headers The headers. + */ + return apply_filters( 'tribe_get_plugin_data', $file_data, $plugin_file, $headers ); + } + + /** + * Get list of active plugins with a given prefix in the plugin folder path. + * + * @param string|array $prefix Prefixes you want to retrieve. + * + * @return array List of plugins with prefix in path. + */ + public static function get_plugins_with_prefix( $prefix ) { + $full_list = wp_get_active_and_valid_plugins(); + + if ( is_multisite() ) { + $full_list = array_merge( $full_list, wp_get_active_network_plugins() ); + } + + $filtered_list = []; + + foreach ( $full_list as $plugin ) { + $base = plugin_basename( $plugin ); + + if ( 0 === Tribe__Utils__Array::strpos( $base, $prefix ) ) { + $filtered_list[] = $plugin; + } + } + + return $filtered_list; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Collection.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Collection.php new file mode 100644 index 000000000..7240fcfd7 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Collection.php @@ -0,0 +1,292 @@ + + */ + protected $taxonomies; + + /** + * Tribe__Utils__Post_Collection constructor. + * + * Overrides the base constructor to ensure all elements in the collection are, in fact, posts. + * Elements that do not resolve to a post are discarded. + * + * @param array $items + */ + public function __construct( array $items ) { + parent::__construct( array_filter( array_map( 'get_post', $items ) ) ); + } + + /** + * Plucks fields from the posts in the collection creating a map using a field value as key and one + * or more fields as values. + * + * Note: the method does not make any check on the uniqueness of the fields used as keys, e.g. this will + * probably not return what intended: `$collection->pluck_combine( 'post_status', 'post_title' );`. + * If there's a chance of the key fields not being unique, then use `#` as key field to simply return an + * array of plucked values. + * + * @since 4.12.6 + * + * @param string $key_field The field to key the return map by, or `#` to use + * progressive integers to key the return value. Use fields + * as keys only when their uniqueness is sure. + * @param string|array|array $value_fields Either a single field name to populate the values with; + * a list of fields, each plucked with default settings; + * a map of fields to fetch, each defining a `single` and + * `args` key to define the pluck `$single` and `$args` + * parameters where applicable. + * Additionally an `as` parameter can be specified to alias + * the field in the results. + * If the only requirement is to alias fields, just use a + * flat map like `[ => , ... ]`. + * + * @return array A list of plucked fields or a map of plucked fields keyed by the + * specified field. + */ + public function pluck_combine( $key_field = '#', $value_fields = 'post_title' ) { + $value_req_is_array = is_array( $value_fields ); + $value_fields = (array) $value_fields; + $rows = []; + $field_names = []; + $field_index = 0; + foreach ( $value_fields as $k => $field ) { + if ( is_string( $k ) && is_string( $field ) ) { + $single = true; + $args = []; + $field_name = $field; + $pluck = $k; + } else { + list( $as, $single, $args ) = $this->parse_field_args( $field ); + $field = is_array( $field ) ? $k : $field; + $field_name = null === $as ? $field : $as; + $pluck = $field; + } + $field_names[ $field_index ] = $field_name; + $rows[ $field_name ] = $this->pluck( $pluck, $single, $args ); + $field_index ++; + } + $values = []; + + // Build a list with only numeric keys and string values. + $fields_list = array_replace( + array_filter( + array_filter( $value_fields, 'is_string' ), + 'is_numeric', + ARRAY_FILTER_USE_KEY + ), + $field_names + ); + + for ( $i = 0, $count = count( $this->items ); $i < $count; $i ++ ) { + $values[ $i ] = array_combine( $fields_list, array_column( $rows, $i ) ); + } + + if ( ! $value_req_is_array ) { + $values = array_column( $values, reset( $fields_list ) ); + } + + // If the key field is `#` then use a progressive number as key, else use the specified field. + $keys = '#' === $key_field + ? range( 0, count( $this->items ) - 1 ) + : $this->pluck( $key_field, true ); + + return array_combine( $keys, $values ); + } + + /** + * Parses a single field request to extract the `$single` and `$args` parameters from it. + * + * @since 4.12.6 + * + * @param string|array $field The field name or the field arguments map. + * + * @return array The `$as`, `$single` and `$args` parameters extracted from the field. + */ + protected function parse_field_args( $field ) { + $field = (array) $field; + + $as = isset( $field['as'] ) + ? (string) $field['as'] + : null; + $single = isset( $field['single'] ) + ? (bool) $field['single'] + : true; + $args = isset( $field['args'] ) + ? (array) $field['args'] + : null; + + return [ $as, $single, $args ]; + } + + /** + * Plucks a post field, a taxonomy or a custom field from the collection. + * + * @since 4.12.6 + * + * @param string $key The name of the field to pluck; the method will try to detect the type of field + * from its name. If any issues might arise due to fields of different types with the + * same name, then use the `pluck_` methods directly. + * @param bool $single Whether to pluck a single taxonomy term or custom fields or an array of all the taxonomy + * terms or custom fields for each post. + * @param array $args A list of n optional arguments that will be passed down to the `pluck_` methods. + * Currently only the the `pluck_taxonomy` will support one more argument to define the + * query arguments for the term query. + * + * @return array|array Either an array of plucked fields when plucking post fields or single + * custom fields or taxonomy terms, or an array of arrays, each one a list + * of all the taxonomy terms or custom fields entries for each post. + */ + public function pluck( $key, $single = true, array $args = null ) { + $type = $this->detect_field_type( $key ); + + switch ( $type ) { + case 'post_field': + return $this->pluck_field( $key ); + break; + case 'taxonomy': + return $this->pluck_taxonomy( $key, $single, $args ); + break; + default: + return $this->pluck_meta( $key, $single ); + break; + } + } + + /** + * Detects the type of a post field from its name. + * + * @since 4.12.6 + * + * @param string $key The name of the field to check. + * + * @return string The type of field detected for the key, either `post_field`, `taxonomy` or `custom_field`. + */ + protected function detect_field_type( $key ) { + if ( $this->is_a_post_field( $key ) ) { + return 'post_field'; + } + + // Init taxonomies as late as possible and only once. + $this->init_taxonomies(); + + if ( $this->is_a_taxonomy( $key ) ) { + return 'taxonomy'; + } + + return 'custom_field'; + } + + /** + * Initialize the post collection taxonomies by filling up the `$taxonomies` property. + * + * Note the collection will use the first post in the collection to fill the taxonomies array, + * this assumes the collection is homogeneous in its post types. + * + * @since 4.12.6 + */ + protected function init_taxonomies() { + if ( ! empty( $this->taxonomies ) ) { + // Already set up, return. + return; + } + + if ( empty( $this->items ) ) { + // We cannot detect taxonomies from an empty list of items. + $this->taxonomies = []; + + return; + } + + // Use the first post to detect the taxonomies. + $this->taxonomies = get_object_taxonomies( reset( $this->items ), 'names' ); + } + + /** + * Plucks a post field from all posts in the collection. + * + * Note: there is no check on the name of the plucked post field: if a non-existing post field is requested, then + * the method will return an empty array. + * + * @since 4.12.6 + * + * @param string $field The name of the post field to pluck. + * + * @return array A list of the plucked post fields from each item in the collection. + */ + public function pluck_field( $field ) { + return wp_list_pluck( $this->items, $field ); + } + + /** + * Plucks taxonomy terms assigned to the posts in the collection. + * + * Note: there is no check on the taxonomy being an existing one or not; that responsibility + * is on the user code. + * + * @since 4.12.6 + * + * @param string $taxonomy The name of the post taxonomy to pluck terms for. + * @param bool $single Whether to return only the first results or all of them. + * @param array $args A set of arguments as supported by the `WP_Term_Query::__construct` + * method. + * + * @return array|array Either an array of the requested results if `$single` is `true` + * or an array of arrays if `$single` is `false`. + */ + public function pluck_taxonomy( $taxonomy, $single = true, array $args = null ) { + $plucked = []; + $args = null === $args ? [ 'fields' => 'names' ] : $args; + + foreach ( $this as $item ) { + $terms = wp_get_object_terms( $item->ID, $taxonomy, $args ); + $plucked[] = $single ? reset( $terms ) : $terms; + } + + return $plucked; + } + + /** + * Plucks a meta key for all elements in the collection. + * + * Elements that are not posts or do not have the meta set will have an + * empty string value. + * + * @since 4.9.5 + * + * @param string $meta_key The meta key to pluck. + * @param bool $single Whether to fetch the meta key as single or not. + * + * @return array An array of meta values for each item in the collection; items that + * do not have the meta set or that are not posts, will have an empty + * string value. + */ + public function pluck_meta( $meta_key, $single = true ) { + $plucked = []; + + foreach ( $this as $item ) { + $plucked[] = get_post_meta( $item->ID, $meta_key, $single ); + } + + return $plucked; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Root_Pool.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Root_Pool.php new file mode 100644 index 000000000..de1b920ab --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Root_Pool.php @@ -0,0 +1,203 @@ +post_name; + + // A lot fo these get urlencoded, so let's try to fix that first + $post_name = tribe_maybe_urldecode( $post_name ); + + $this->current_post = $post; + $flipped_pool = array_flip( $this->fetch_pool() ); + + if ( isset( $flipped_pool[ $this->current_post->ID ] ) ) { + return $flipped_pool[ $this->current_post->ID ] . $this->root_separator; + } + + $root = $this->build_root_from( $post_name ); + + return $root . $this->root_separator; + } + + /** + * @param string $post_name + * + * @param string $postfix + * + * @return string + */ + protected function build_root_from( $post_name, $postfix = '' ) { + $candidate = $this->build_root_candidate( $post_name, $postfix ); + + $initial_candidate = $candidate; + + while ( $this->is_in_pool( $candidate ) ) { + $postfix = $this->postfix; + $candidate = $initial_candidate . '-' . $postfix; + $this->postfix ++; + } + + $this->postfix = 1; + + $this->insert_root_in_pool( $candidate ); + + return $candidate; + } + + /** + * @return string + */ + public function get_pool_transient_name() { + return $this->pool_transient_name; + } + + /** + * @param $string + * + * @return string + * @deprecated 4.7.18 + */ + protected function uc_first_letter( $string ) { + _deprecated_function( __METHOD__, '4.7.18', 'tribe_uc_first_letter' ); + + return is_numeric( $string ) ? $string : tribe_uc_first_letter( $string ); + } + + /** + * @param $string + * + * @return string + * @deprecated 4.7.18 + */ + protected function safe_strtoupper( $string ) { + _deprecated_function( __METHOD__, '4.7.18', 'tribe_strtoupper' ); + + return is_numeric( $string ) ? $string : tribe_strtoupper( $string ); + } + + /** + * @param string $candidate + */ + protected function is_in_pool( $candidate ) { + $pool = $this->fetch_pool(); + + return isset( $pool[ $candidate ] ); + } + + /** + * @return array + */ + protected function fetch_pool() { + if ( false === self::$prefix_pool ) { + $this->maybe_init_pool(); + } + + return self::$prefix_pool; + } + + protected function maybe_init_pool() { + self::$prefix_pool = get_transient( $this->pool_transient_name ); + if ( self::$prefix_pool === false ) { + self::$prefix_pool = []; + set_transient( $this->pool_transient_name, [] ); + } + } + + /** + * @param string $unique_root + */ + protected function insert_root_in_pool( $unique_root ) { + $prefix_pool = $this->fetch_pool(); + $prefix_pool[ $unique_root ] = $this->current_post->ID; + self::$prefix_pool = $prefix_pool; + set_transient( $this->pool_transient_name, $prefix_pool ); + } + + public static function reset_pool() { + self::$prefix_pool = false; + } + + /** + * @param $post_name + * @param $postfix + * + * @return string + */ + protected function build_root_candidate( $post_name, $postfix ) { + $frags = explode( '-', $post_name ); + + $candidate = implode( '', array_map( 'strtoupper', $frags ) ); + + if ( strlen( $candidate ) > 9 ) { + $frags = array_filter( $frags ); + $candidate = implode( '', array_map( 'tribe_uc_first_letter', $frags ) ); + } + + $candidate = $candidate . $postfix; + + return $candidate; + } + + /** + * Primes the post pool. + * + * @param array $pool + * @param bool $override_transient If `true` the transient too will be overwritten. + */ + public function set_pool( array $pool, $override_transient = false ) { + self::$prefix_pool = $pool; + if ( $override_transient ) { + set_transient( $this->pool_transient_name, $pool ); + } + } + + /** + * Whether the pool transient has been primed or not. + * + * @return bool + */ + public function is_primed() { + return get_transient( $this->pool_transient_name ) !== false; + } + + /** + * @return array + */ + public function get_pool() { + return $this->fetch_pool(); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Thumbnail.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Thumbnail.php new file mode 100644 index 000000000..28228a861 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Post_Thumbnail.php @@ -0,0 +1,356 @@ +large->url; + * ``` + * + * @since 4.9.14 + * @package Tribe\Utils + */ + + +namespace Tribe\Utils; + +use Tribe__Utils__Array as Arr; + +/** + * Class Post_Thumbnail + * + * @since 4.9.14 + * @package Tribe\Utils + */ +class Post_Thumbnail implements \ArrayAccess, \Serializable { + use Lazy_Events; + + /** + * An array of the site image sizes, including the `full` one. + * + * @since 4.9.14 + * + * @var array + */ + protected $image_sizes; + + /** + * The post ID this images collection is for. + * + * @since 4.9.14 + * + * @var int + */ + protected $post_id; + + /** + * The post thumbnail data. + * + * @since 4.9.14 + * + * @var array + */ + protected $data; + + /** + * A flag property indicating whether the post thumbnail for the post exists or not. + * + * @since 4.9.16 + * + * @var bool + */ + protected $exists; + + /** + * The post ID, if any, of the post thumbnail. + * + * @since 4.9.16 + * + * @var int + */ + protected $thumbnail_id; + + /** + * Post_Images constructor. + * + * @param int $post_id The post ID. + */ + public function __construct( $post_id ) { + $this->post_id = $post_id; + } + + /** + * {@inheritDoc} + */ + public function __get( $property ) { + if ( 'exists' === $property ) { + return $this->exists(); + } + + return $this->offsetGet( $property ); + } + + /** + * {@inheritDoc} + */ + public function __set( $property, $value ) { + if ( 'exists' === $property ) { + throw new \InvalidArgumentException( 'The `Post_Thumbnail::exists` property cannot be set.' ); + } + + $this->offsetSet( $property, $value ); + } + + /** + * {@inheritDoc} + */ + public function __isset( $property ) { + return $this->offsetExists( $property ); + } + + /** + * Fetches and returns the image sizes registered on the site, if any. + * + * @since 4.9.14 + * + * @return array An array of the registered image sizes. + */ + public function get_image_sizes() { + if ( null !== $this->image_sizes ) { + return $this->image_sizes; + } + + $image_sizes = array_merge( [ 'full' ], get_intermediate_image_sizes() ); + + /** + * Filters the image sizes the `Tribe\Utils\Post_Thumbnail` class will manage and fetch data for. + * + * @since 4.9.14 + * + * @param array $image_sizes All the available image sizes; this includes the default and the intermediate ones. + */ + $this->image_sizes = apply_filters( 'tribe_post_thumbnail_image_sizes', $image_sizes ); + + return $this->image_sizes; + } + + /** + * Returns the data about the post thumbnail, if any. + * + * @since 4.9.14 + * + * @return array An array of objects containing the post thumbnail data. + */ + public function fetch_data() { + static $cache_thumbnail = []; + + if ( ! $this->exists() ) { + return []; + } + + if ( null !== $this->data ) { + return $this->data; + } + + $image_sizes = $this->get_image_sizes(); + $thumbnail_id = $this->thumbnail_id; + + $cache_key = empty( $thumbnail_id ) ? -1 : $thumbnail_id; + + if ( empty( $cache_thumbnail[ $cache_key ] ) ) { + $thumbnail_data = array_combine( + $image_sizes, + array_map( + static function( $size ) use ( $thumbnail_id ) { + static $cache_size_data = []; + + $size_data_cache_key = empty( $thumbnail_id ) ? -1 : $thumbnail_id; + $size_data_cache_key = "{$size_data_cache_key}:{$size}"; + + if ( ! isset( $cache_size_data[ $size_data_cache_key ] ) ) { + $cache_size_data[ $size_data_cache_key ] = wp_get_attachment_image_src( $thumbnail_id, $size ); + } + + $size_data = $cache_size_data[ $size_data_cache_key ]; + + if ( false === $size_data ) { + return (object) [ + 'url' => '', + 'width' => '', + 'height' => '', + 'is_intermediate' => false, + ]; + } + + return (object) [ + 'url' => Arr::get( $size_data, 0, '' ), + 'width' => Arr::get( $size_data, 1, '' ), + 'height' => Arr::get( $size_data, 2, '' ), + 'is_intermediate' => (bool) Arr::get( $size_data, 3, false ), + ]; + }, + $image_sizes + ) + ); + + $srcset = wp_get_attachment_image_srcset( $thumbnail_id ); + $thumbnail_data['srcset'] = ! empty( $srcset ) ? $srcset : false; + + $title = get_the_title( $thumbnail_id ); + $thumbnail_data['title'] = ! empty( $title ) ? $title : false; + + $alt = trim( strip_tags( get_post_meta( $thumbnail_id, '_wp_attachment_image_alt', true ) ) ); + $thumbnail_data['alt'] = ! empty( $alt ) ? $alt : false; + + $cache_thumbnail[ $cache_key ] = $thumbnail_data; + } + + /** + * Filters the post thumbnail data and information that will be returned for a specific post. + * + * Note that the thumbnail data will be cast to an object after this filtering. + * + * @since 4.9.14 + * + * @param array $thumbnail_data The thumbnail data for the post. + * @param int $post_id The ID of the post the data is for. + */ + $thumbnail_data = apply_filters( 'tribe_post_thumbnail_data', $cache_thumbnail[ $cache_key ], $this->post_id ); + + $this->resolved(); + + return $thumbnail_data; + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function offsetExists( $offset ) { + $this->data = $this->fetch_data(); + + return isset( $this->data[ $offset ] ); + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function offsetGet( $offset ) { + $this->data = $this->fetch_data(); + + return isset( $this->data[ $offset ] ) + ? $this->data[ $offset ] + : null; + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function offsetSet( $offset, $value ) { + $this->data = $this->fetch_data(); + + $this->data[ $offset ] = $value; + } + + /** + * {@inheritDoc} + */ + #[\ReturnTypeWillChange] + public function offsetUnset( $offset ) { + $this->data = $this->fetch_data(); + + unset( $this->data[ $offset ] ); + } + + /** + * Returns an array representation of the post thumbnail data. + * + * @since 4.9.14 + * + * + * @return array An array representation of the post thumbnail data. + */ + public function to_array() { + $this->data = $this->fetch_data(); + + return json_decode( json_encode( $this->data ), true ); + } + + /** + * {@inheritDoc} + */ + public function serialize() { + return wp_json_encode( $this->__serialize() ); + } + + /** + * {@inheritDoc} + */ + public function unserialize( $serialized ) { + $data = json_decode( $serialized, true ); + $this->__unserialize( $data ); + } + + /** + * Returns whether a post thumbnail is set for the post or not. + * + * @since 4.9.16 + * + * @return bool Whether a post thumbnail is set for the post or not. + */ + public function exists() { + if ( null !== $this->exists ) { + return $this->exists; + } + + $thumbnail_id = get_post_thumbnail_id( $this->post_id ); + + if ( empty( $thumbnail_id ) ) { + $this->exists = false; + } else { + $this->thumbnail_id = $thumbnail_id; + $this->exists = true; + } + + return $this->exists; + } + + /** + * PHP 8.0+ compatible implementation of the serialization logic. + * + * @since 5.0.6 + * + * @return array The data to serialize. + */ + public function __serialize(): array { + $data = $this->fetch_data(); + $data['post_id'] = $this->post_id; + + return $data; + } + + /** + * PHP 8.0+ compatible implementation of the unserialization logic. + * + * @since 5.0.6 + * + * @param array $data The data to unserialize. + */ + public function __unserialize( array $data ): void { + array_walk( $data, static function ( &$data_entry ) { + if ( is_array( $data_entry ) ) { + $data_entry = (object) $data_entry; + } + } ); + $this->post_id = $data['post_id']; + unset( $data['post_id'] ); + $this->data = ! empty( $data ) ? $data : null; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Query.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Query.php new file mode 100644 index 000000000..dc8b64bf5 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Query.php @@ -0,0 +1,72 @@ +posts = $posts; + $query->found_posts = count( $posts ); + $query->post = reset( $posts ); + $query->query = [ 'p' => 0 ]; + $query->tribe_mock_query = true; + global $wpdb; + // Use a query that will never yield results. + $query->request = "SELECT ID FROM {$wpdb->posts} WHERE 1=0"; + + // Return the same set of posts on each method requiring posts. + $filter_posts_pre_query = static function ( $the_posts, $the_query ) use ( $posts, $query ) { + if ( $the_query !== $query ) { + return $the_posts; + } + + $fields = $query->get( 'fields', false ); + // We assume some uniformity here. + $posts_are_objects = ! is_numeric( reset( $posts ) ); + + switch ( $fields ) { + case 'ids': + return $posts_are_objects ? wp_list_pluck( $posts, 'ID' ) : $posts; + case 'id=>parent': + default: + return $posts_are_objects ? $posts : array_map( 'get_post', $posts ); + } + }; + + add_filter( 'posts_pre_query', $filter_posts_pre_query, 10, 2 ); + + return $query; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Strings.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Strings.php new file mode 100644 index 000000000..33b3f11dd --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Strings.php @@ -0,0 +1,65 @@ +by( $operation, $taxonomy, $terms ); + + // This will only build the query not execute it. + $built_query = $repo->build_query(); + + if ( ! empty( $built_query->query_vars['tax_query'] ) ) { + $tax_query = $built_query->query_vars['tax_query']; + } + + return $tax_query; + } + + /** + * Transform all Term IDs and Slugs into IDs of existing terms in a given taxonomy. + * + * @since 4.13.0 + * + * @param string|int|array $terms Terms to be cleaned up. + * @param string $taxonomy Which taxonomy we are querying for. + * + * @return array List of IDs of terms. + */ + public static function normalize_to_term_ids( $terms, $taxonomy ) { + if ( empty( $terms ) ) { + return $terms; + } + + /** + * Allow filtering of the needle for splitting terms, by default it will be a comma. + * + * @since 4.13.0 + * + * @param string $needle Defaults to a comma. Which character that we will split terms by. + * @param string|array $terms Terms string that we will split by the needle filtered. + * @param string $taxonomy Which taxonomy this will be for. + */ + $needle = apply_filters( 'tribe_normalize_to_term_ids_needle', ',', $terms, $taxonomy ); + if ( is_string( $terms ) && false !== strpos( $terms, $needle ) ) { + $terms = array_map( 'trim', explode( $needle, $terms ) ); + } + + $terms = array_map( static function ( $param ) use ( $taxonomy ) { + $param = preg_replace( '/^#/', '', $param ); + $term_by = is_numeric( $param ) ? 'ID' : 'slug'; + $term = get_term_by( $term_by, $param, $taxonomy ); + + if ( ! $term instanceof \WP_Term ) { + return false; + } + + return $term->term_id; + }, (array) $terms ); + + $terms = array_filter( $terms ); + $terms = array_unique( $terms ); + + return $terms; + } + + + /** + * When dealing with templates that make use of `get_post_class` the taxonomy + terms queries are very inefficient + * so this method primes the caching by doing a single query that will build the cache for all Posts involved on + * the template we are about to render, reducing about 2 queries for each Post that we prime the cache for. + * + * Important to note that + * + * @since 5.0.0 + * + * @param array $posts + * @param array $taxonomies + * @param bool $prime_term_meta + * + * @return array + */ + public static function prime_term_cache( array $posts = [], array $taxonomies = [ 'post_tag', \Tribe__Events__Main::TAXONOMY ], bool $prime_term_meta = false ): array { + $first = reset( $posts ); + $is_numeric = ( ! $first instanceof \WP_Post ); + if ( $is_numeric ) { + $ids = $posts; + } else { + $ids = wp_list_pluck( $posts, 'ID' ); + } + $cache = []; + + // Build the base cache. + foreach ( $ids as $id ) { + foreach ( $taxonomies as $taxonomy ) { + $cache[ $id ][ $taxonomy ] = []; + } + } + + $args = [ + 'fields' => 'all_with_object_id', + 'object_ids' => $ids, + 'taxonomy' => $taxonomies, + ]; + $terms = get_terms( $args ); + + // Drop invalid results. + $valid_terms = array_filter( (array) $terms, static function ( $term ) { + return $term instanceof \WP_Term; + } ); + + $term_ids = wp_list_pluck( $valid_terms, 'term_id' ); + + foreach ( $valid_terms as $term ) { + $cache[ $term->object_id ][ $term->taxonomy ][] = $term->term_id; + } + + foreach ( $cache as $id => $object_taxonomies ) { + // Skip when invalid object id is passed. + if ( empty( $id ) ) { + continue; + } + + foreach ( $object_taxonomies as $taxonomy => $term_ids ) { + // Skip when invalid taxonomy is passed. + if ( empty( $taxonomy ) ) { + continue; + } + + // Do not skip when `term_ids` are empty. + wp_cache_add( $id, $term_ids, $taxonomy . '_relationships' ); + } + } + + _prime_term_caches( $term_ids, $prime_term_meta ); + + return $cache; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Theme_Compatibility.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Theme_Compatibility.php new file mode 100644 index 000000000..6e61a3650 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Utils/Theme_Compatibility.php @@ -0,0 +1,276 @@ +get_template() ) ) { + return false; + } + + $theme = $current_theme->get_template(); + } + + $required = in_array( $theme, static::get_registered_themes() ); + + /** + * Allows hooking in to enforce compatibility by other plugins. + * + * @since 4.14.0 + * + * @param boolean $required If compatibility is required. + * @param null|string $theme The optional theme name string. + */ + $required = apply_filters( 'tribe_compatibility_required', $required, $theme ); + + return tribe_is_truthy( $required ); + } + + /** + * Contains the logic for if this object's classes should be added to the queue. + * + * @since 4.14.0 + * + * @param boolean $add Whether to add the class to the queue or not. + * @param array $class The array of compatibility class names to add. + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + * + * @return boolean Whether compatibility classes should be added or not. + */ + public static function should_add_compatibility_class_to_queue( $add, $class, $queue ) { + if ( + 'admin' === $queue + || ! static::is_compatibility_required() + ) { + return $add; + } + + if ( in_array( $class, static::get_compatibility_classes() ) ) { + $add = true; + } + + /** + * Filters whether we should add a specific class to the queue. + * + * @since 4.14.0 + * + * @param boolean $add Whether to add the class to the queue or not. + * @param array $class The array of compatibility class names to add. + * @param string $queue The queue we want to get 'admin', 'display', 'all'. + */ + return apply_filters( 'tribe_compatibility_add_class', $add, $class, $queue ); + } + + /** + * Add compatibility classes. + * + * @since 4.14.0 + * + * @return void + */ + public static function add_compatibility_classes() { + tribe( Compatibility_Classes::class )->add_classes( static::get_compatibility_classes() ); + } + + /** + * Fetches the correct class strings for theme and child theme if available + the container class. + * + * @since 4.14.0 + * + * @return array $classes + */ + public static function get_container_classes() { + $classes = [ 'tribe-compatibility-container' ]; + + if ( static::is_compatibility_required() ) { + $classes = array_merge( $classes, static::get_compatibility_classes() ); + } + + /** + * Filters the HTML classes applied to a compatibility container. + * + * @since 4.14.0 + * + * @param array $html_classes Array of classes used for this container. + */ + return apply_filters( 'tribe_compatibility_container_classes', $classes ); + } + + /** + * Fetches the correct class strings for theme and child theme if available. + * + * @since 4.14.0 + * + * @return array $classes + */ + public static function get_compatibility_classes() { + $classes = []; + $current_theme = static::get_current_theme( true ); + + if ( empty( $current_theme ) || empty( $current_theme->get_template() ) ) { + return $classes; + } + + // Detect if we're using a child theme. + if ( $parent = $current_theme->parent ) { + $classes[] = sanitize_html_class( 'tribe-theme-' . $parent->get_template() ); + $classes[] = sanitize_html_class( 'tribe-theme-child-' . $current_theme->get_template() ); + } else { + $classes[] = sanitize_html_class( 'tribe-theme-' . $current_theme->get_template() ); + } + + /** + * Filters the list of classes we're adding. + * + * @since 4.14.0 + * + * @param array $classes An array of classes in the shape `[ => boolean ]`. + */ + return apply_filters( 'tribe_compatibility_classes', $classes ); + } + + /** + * Returns a list of themes registered for compatibility with our Views. + * + * @since 4.14.0 + * + * @return array An array of the themes registered. + */ + public static function get_registered_themes() { + /** + * Filters the list of themes that are registered for compatibility. + * + * @since 4.14.0 + * + * @param array $registered An array of views in the shape `[ ]`. + */ + return (array) apply_filters( 'tribe_theme_compatibility_registered', self::$themes ); + } + + /** + * Returns an array of active themes (parent and child). + * + * @since 4.14.0 + * + * @return array $themes An array in the format [ 'parent' => 'theme name', 'child' => 'theme name' ]. + * Empty array if none found. + */ + public static function get_active_themes() { + $themes = []; + $current_theme = static::get_current_theme( true ); + + if ( empty( $current_theme ) ) { + return $themes; + } + + $parent_theme = $current_theme->parent(); + + // No parent theme. + if ( empty( $parent_theme ) ) { + $themes['parent'] = strtolower( $current_theme->get_template() ); + return $themes; + } + + $themes['parent'] = strtolower( $parent_theme->get_template() ); + $child_theme = $current_theme->get( 'stylesheet' ); + + // if the 2 options are the same, then there is no child theme. + if ( $child_theme !== $parent_theme ) { + $themes['child'] = strtolower( $child_theme ); + } + + return $themes; + } + + /** + * Get the current theme. + * + * @since 4.14.0 + * + * @param boolean $object Pass true if you want the theme object returned instead of the name. + * + * @return string|object|boolean Will return the theme name by default. + * Will return the theme object if passed boolean true as the parameter. + * Will return boolean false if the theme is not found. + */ + public static function get_current_theme( $object = false ) { + $current_theme = wp_get_theme(); + + // If we can't get it for some reason... + if ( ! $current_theme instanceof WP_Theme || ! $current_theme->exists() ) { + return false; + } + + if ( $object ) { + return $current_theme; + } + + return $current_theme->get_template(); + } + + /** + * Checks if the provided theme is active. + * + * @since 4.14.0 + * + * @param string $theme The theme name like 'avada' or 'twentytwenty', + * + * @return boolean True if the requested theme is active, + * false if the current theme could not be found or is not the requested theme. + */ + public static function is_active_theme( $check ) { + $current_theme = wp_get_theme(); + + // Current theme is not + if ( ! $current_theme instanceof \WP_Theme ) { + $theme = false; + } elseif ( ! $current_theme->exists() ) { + $theme = false; + } else { + $theme = $current_theme->get_template(); + } + + return ! empty( $theme ) && strtolower( $check ) === strtolower( $theme ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Validate.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Validate.php new file mode 100644 index 000000000..8f187daaf --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Validate.php @@ -0,0 +1,557 @@ +result = new stdClass; + $this->field = $field; + $this->field['id'] = $field_id; + $this->value = $value; + $this->additional_args = $additional_args; + + // if the field is invalid or incomplete, fail validation + if ( ! is_array( $this->field ) || ! ( isset( $this->field['validation_type'] ) || isset( $this->field['validation_callback'] ) ) ) { + $this->result->valid = false; + $this->result->error = esc_html__( 'Invalid or incomplete field passed', 'tribe-common' ); + $this->result->error .= ( isset( $this->field['id'] ) ) ? ' (' . esc_html__( 'Field ID:', 'tribe-common' ) . ' ' . $this->field['id'] . ' )' : ''; + } + + // call validation callback if a validation callback function is set + if ( isset( $this->field['validation_callback'] ) ) { + if ( is_callable( $this->field['validation_callback'] ) || function_exists( $this->field['validation_callback'] ) ) { + if ( ( ! isset( $_POST[ $field_id ] ) || ! $_POST[ $field_id ] || $_POST[ $field_id ] == '' ) && isset( $this->field['can_be_empty'] ) && $this->field['can_be_empty'] ) { + $this->result->valid = true; + } else { + $this->result->valid = call_user_func( $this->field['validation_callback'], $value ); + if ( ! $this->result->valid ) { + $this->result->error = esc_html__( 'Invalid or incomplete field passed', 'tribe-common' ); + $this->result->error .= ( isset( $this->field['id'] ) ) ? ' (' . esc_html__( 'Field ID:', 'tribe-common' ) . ' ' . $this->field['id'] . ' )' : ''; + } + } + } + } + + if ( isset( $this->field['validation_type'] ) ) { + if ( method_exists( $this, $this->field['validation_type'] ) ) { + // make sure there's a field validation type set for this validation and that such method exists + $this->type = $this->field['validation_type']; + $this->label = isset( $this->field['label'] ) ? $this->field['label'] : $this->field['id']; + if ( ( ! isset( $_POST[ $field_id ] ) || ! $_POST[ $field_id ] || $_POST[ $field_id ] == '' ) && isset( $this->field['can_be_empty'] ) && $this->field['can_be_empty'] ) { + $this->result->valid = true; + } else { + call_user_func( [ $this, $this->type ] ); // run the validation + } + } else { + // invalid validation type set, validation fails + $this->result->valid = false; + $this->result->error = esc_html__( 'Non-existant field validation function passed', 'tribe-common' ); + $this->result->error .= ( isset( $this->field['id'] ) ) ? ' (' . esc_html__( 'Field ID:', 'tribe-common' ) . ' ' . $this->field['id'] . ' ' . _x( 'with function name:', 'non-existant function name passed for field validation', 'tribe-common' ) . ' ' . $this->field['validation_type'] . ' )' : ''; + } + } + } + + /** + * validates a field as a string containing only letters and numbers + */ + public function alpha_numeric() { + if ( preg_match( '/^[a-zA-Z0-9]+$/', $this->value ) ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must contain numbers and letters only', 'tribe-common' ), $this->label ); + } + } + + /** + * validates a field as a string containing only letters, + * numbers and carriage returns + */ + public function alpha_numeric_multi_line() { + if ( preg_match( '/^[a-zA-Z0-9\s]+$/', $this->value ) ) { + $this->result->valid = true; + $this->value = tribe_multi_line_remove_empty_lines( $this->value ); + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must contain numbers and letters only', 'tribe-common' ), $this->label ); + } + } + + /** + * Validates a field as a string containing only letters, + * numbers, dots and carriage returns + */ + public function alpha_numeric_multi_line_with_dots_and_dashes() { + if ( preg_match( '/^[a-zA-Z0-9\s.-]+$/', $this->value ) ) { + $this->result->valid = true; + $this->value = tribe_multi_line_remove_empty_lines( $this->value ); + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must contain numbers, letters and dots only', 'tribe-common' ), $this->label ); + } + } + + /** + * Validates a field as a string containing only letters, + * numbers, dashes and underscores + */ + public function alpha_numeric_with_dashes_and_underscores() { + $this->value = trim( $this->value ); + if ( preg_match( '/^[a-zA-Z0-9_-]+$/', $this->value ) ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must contain numbers, letters, dashes and undescores only', 'tribe-common' ), $this->label ); + } + } + + /** + * Validates a field as just "not empty". + * + * @since 4.7.6 + */ + public function not_empty() { + $this->value = trim( $this->value ); + + if ( empty( $this->value ) ) { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must not be empty', 'tribe-common' ), $this->label ); + } else { + $this->result->valid = true; + } + } + + /** + * validates a field as being positive decimal + */ + public function positive_decimal() { + if ( preg_match( '/^[0-9]+(\.[0-9]+)?$/', $this->value ) && $this->value > 0 ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must be a positive number.', 'tribe-common' ), $this->label ); + } + } + + /** + * validates a field as being positive decimal or percent + */ + public function positive_decimal_or_percent() { + if ( preg_match( '/^[0-9]+(\.[0-9]+)?%?$/', $this->value ) && $this->value > 0 ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must be a positive number or percent.', 'tribe-common' ), $this->label ); + } + } + + /** + * validates a field as being positive integers + */ + public function positive_int() { + if ( preg_match( '/^[0-9]+$/', $this->value ) && $this->value > 0 ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must be a positive number.', 'tribe-common' ), $this->label ); + } + } + + /** + * validates a field as being an integer + * + * The expected value is a whole number (positive or negative). This method is named "int" to + * match the mathematical definition of the word AND to closely match the pre-exiting method + * with a similar name: positive_int(). This method WILL validate whole numbers that go beyond + * values that PHP's int type supports, however, if someone enters something like that, that's + * on them. Smart people do smart things. + */ + public function int() { + if ( preg_match( '/^-?[0-9]+$/', $this->value ) ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must be a whole number.', 'tribe-common' ), $this->label ); + } + } + + /** + * validates & sanitizes fields as URL slugs + */ + public function slug() { + $maybe_valid_value = esc_url_raw( $this->value ); + + // esc_url_raw does the work of validating chars, but returns the checked string with a + // prepended URL protocol; so let's use strpos to match the values. + if ( + ! empty( $maybe_valid_value ) + && false !== strpos( $maybe_valid_value, $this->value ) + ) { + $this->result->valid = true; + $this->value = sanitize_title( $this->value ); + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must be a valid slug (numbers, letters, dashes, and underscores).', 'tribe-common' ), $this->label ); + } + } + + /** + * validates & sanitizes fields as URLs + */ + public function url() { + + if ( esc_url_raw( $this->value ) == $this->value ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must be a valid URL.', 'tribe-common' ), $this->label ); + } + } + + /** + * validates fields that have options (radios, dropdowns, etc.) + * by making sure the value is part of the options array + */ + public function options() { + if ( array_key_exists( $this->value, $this->field['options'] ) ) { + $this->value = ( $this->value === 0 ) ? false : $this->value; + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( "%s must have a value that's part of its options.", 'tribe-common' ), $this->label ); + } + } + + /** + * Validates fields that have multiple options (checkbox list, etc.) + * by making sure the value is part of the options array. + */ + public function options_multi() { + // if we are here it cannot be empty + if ( empty( $this->value ) ) { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( "%s must have a value that's part of its options.", 'tribe-common' ), $this->label ); + + return; + } + + $this->value = is_array( $this->value ) ? $this->value : [ $this->value ]; + + foreach ( $this->value as $val ) { + if ( array_key_exists( $val, $this->field['options'] ) ) { + $this->value = ( $this->value === 0 ) ? false : $this->value; + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( "%s must have a value that's part of its options.", 'tribe-common' ), $this->label ); + } + } + } + + /** + * validates fields that have options (radios, dropdowns, etc.) + * by making sure the value is part of the options array + * then combines the value into an array containing the value + * and name from the option + */ + public function options_with_label() { + if ( array_key_exists( $this->value, $this->field['options'] ) ) { + $this->value = ( $this->value === 0 ) ? false : [ + $this->value, + $this->field['options'][ $this->value ], + ]; + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( "%s must have a value that's part of its options.", 'tribe-common' ), $this->label ); + } + } + + /** + * validates a field as not being able to be the same + * as the specified value as specified in + * $this->additional_args['compare_name'] + */ + public function cannot_be_the_same_as() { + if ( ! isset( $this->additional_args['compare'] ) ) { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( 'Comparison validation failed because no comparison value was provided, for field %s', 'tribe-common' ), $this->field['id'] ); + } else { + if ( $this->value != $this->additional_args['compare'] ) { + $this->result = true; + } else { + $this->result->valid = false; + if ( isset( $this->additional_args['compare_name'] ) ) { + $this->result->error = sprintf( esc_html__( '%s cannot be the same as %s.', 'tribe-common' ), $this->label, $this->additional_args['compare_name'] ); + } else { + $this->result->error = sprintf( esc_html__( '%s cannot be a duplicate', 'tribe-common' ), $this->label ); + } + } + } + } + + /** + * validates a field as being a number or a percentage + */ + public function number_or_percent() { + if ( preg_match( '/^[0-9]+%{0,1}$/', $this->value ) ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must be a number or percentage.', 'tribe-common' ), $this->label ); + } + } + + /** + * sanitizes an html field + */ + public function html() { + $this->value = balanceTags( $this->value ); + $this->result->valid = true; + } + + /** + * sanitizes a license key + */ + public function license_key() { + $this->value = trim( $this->value ); + $this->result->valid = true; + } + + /** + * sanitizes a textarea field + */ + public function textarea() { + $this->value = wp_kses( $this->value, [] ); + $this->result->valid = true; + } + + /** + * sanitizes a field as being a boolean + */ + public function boolean() { + $this->value = (bool) $this->value; + $this->result->valid = true; + } + + /** + * validates a Google Maps Zoom field + */ + public function google_maps_zoom() { + if ( preg_match( '/^([0-9]|[0-1][0-9]|2[0-1])$/', $this->value ) ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must be a number between 0 and 21.', 'tribe-common' ), $this->label ); + } + } + + /** + * validates a field as being part of an address + * allows for letters, numbers, dashes and spaces only + */ + public function address() { + $this->value = stripslashes( $this->value ); + if ( preg_match( "/^[0-9\S '-]+$/", $this->value ) ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must consist of letters, numbers, dashes, apostrophes, and spaces only.', 'tribe-common' ), $this->label ); + } + } + + /** + * validates a field as being a city or province + * allows for letters, dashes and spaces only + */ + public function city_or_province() { + $this->value = stripslashes( $this->value ); + if ( preg_match( "/^[\D '\-]+$/", $this->value ) ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must consist of letters, spaces, apostrophes, and dashes.', 'tribe-common' ), $this->label ); + } + } + + /** + * validates a field as being a zip code + */ + public function zip() { + if ( preg_match( '/^[0-9]{5}$/', $this->value ) ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must consist of 5 numbers.', 'tribe-common' ), $this->label ); + } + } + + /** + * validates a field as being a phone number + */ + public function phone() { + if ( preg_match( '/^[0-9\(\)\+ -]+$/', $this->value ) ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must be a phone number.', 'tribe-common' ), $this->label ); + } + } + + /** + * validates & sanitizes a field as being a country list + */ + public function country_list() { + $country_rows = explode( "\n", $this->value ); + if ( is_array( $country_rows ) ) { + foreach ( $country_rows as $crow ) { + $country = explode( ',', $crow ); + if ( ! isset( $country[0] ) || ! isset( $country[1] ) ) { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( 'Country List must be formatted as one country per line in the following format:
    US, United States
    UK, United Kingdom.', 'tribe-common' ), $this->label ); + $this->value = wp_kses( $this->value, [] ); + + return; + } + } + } + $this->result->valid = true; + } + + /** + * automatically validate a field regardless of the value + * Don't use this unless you know what you are doing + */ + public function none() { + $this->result->valid = true; + } + + /** + * Validates and sanitizes an email address. + * + * @since 4.7.4 + */ + public function email( ) { + $candidate = trim( $this->value ); + + $this->result->valid = filter_var( $candidate, FILTER_VALIDATE_EMAIL ); + + if ( ! $this->result->valid ) { + $this->result->error = sprintf( esc_html__( '%s must be an email address.', 'tribe-common' ), $this->label ); + } else { + $this->value = filter_var( trim( $candidate ), FILTER_SANITIZE_EMAIL ); + } + } + + /** + * Validates and sanitizes a list of email addresses. + * + * @since 5.0.14 + */ + public function email_list() { + $value = trim( $this->value ); + $this->result->valid = true; + $sanitized_emails = []; + + // Break emails into an array. + $emails = preg_split( '/[,;]+/', $value ); + + foreach ( $emails as $email ) { + // In case there's a blank email or extra comma/semicolon, skip with no error. + if ( empty( $email ) ) { + continue; + } + + // Sanitized email returns blank if invalid. + $email = sanitize_email( trim( $email ) ); + if ( empty( $email ) ) { + $this->result->valid = false; + break; + } + $sanitized_emails[] = $email; + } + + // If any of the emails are invalid, throw an error. + if ( ! $this->result->valid ) { + $this->result->error = sprintf( + // Translators: %s - Label of the form input field. + esc_html__( '%s must be a list of valid email addresses separated by commas or semicolons.', 'tribe-common' ), + $this->label + ); + } else { + $this->value = implode( ', ', $sanitized_emails ); + } + } + + /** + * Validates and sanitizes a HTML color codes, including hex, rgb, rgba, hsl and hsla. + * + * @since 5.0.0 + */ + public function color() { + if ( preg_match( '/^(#(?:[0-9a-f]{2}){2,4}|#[0-9a-f]{3}|(?:rgba?|hsla?)\((?:\d+%?(?:deg|rad|grad|turn)?(?:,|\s)+){2,3}[\s\/]*[\d\.]+%?\))$/i', $this->value ) ) { + $this->result->valid = true; + } else { + $this->result->valid = false; + $this->result->error = sprintf( esc_html__( '%s must be a valid HTML color code.', 'tribe-common' ), $this->label ); + } + } + + } // end class +} // endif class_exists diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Validator/Base.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Validator/Base.php new file mode 100644 index 000000000..a6ed9f812 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Validator/Base.php @@ -0,0 +1,266 @@ +is_string( $value ); + } + + /** + * Whether the value is a timestamp or a string parseable by the strtotime function or not. + * + * @param mixed $value + * + * @return bool + */ + public function is_time( $value ) { + return is_numeric( $value ) || ( is_string( $value ) && strtotime( $value ) ); + } + + /** + * Whether the value corresponds to an existing user ID or not. + * + * @param mixed $value + * + * @return bool + */ + public function is_user_id( $value ) { + return is_numeric( $value ) && (bool) get_user_by( 'ID', $value ); + } + + /** + * Whether the value is a positive integer or not. + * + * @param mixed $value + * + * @return bool + */ + public function is_positive_int( $value ) { + return is_numeric( $value ) && (int) $value == $value && (int) $value > 0; + } + + /** + * Whether the value is a list of positive integers only or not. + * + * @since 4.7.19 + * + * @param array|string|int $list + * @param string $sep + * + * @return bool + */ + public function is_positive_int_list( $list, $sep = ',' ) { + $sep = is_string( $sep ) ? $sep : ','; + $list = Tribe__Utils__Array::list_to_array( $list, $sep ); + + $valid = array_filter( $list, [ $this, 'is_positive_int' ] ); + + return ! empty( $valid ) && count( $valid ) === count( $list ); + } + + /** + * Trims a string. + * + * Differently from the trim method it will not use the second argument. + * + * @param string $value + * + * @return string + */ + public function trim( $value ) { + return is_string( $value ) ? trim( $value ) : $value; + } + + /** + * Whether the value(s) all map to existing post tags. + * + * @param mixed $tag + * + * @return bool + */ + public function is_post_tag( $tag ) { + return $this->is_term_of_taxonomy( $tag, 'post_tag' ); + } + + /** + * Whether the term exists and is a term of the specified taxonomy. + * + * @param mixed $term Either a single term `term_id` or `slug` or an array of + * `term_id`s and `slug`s + * @param string $taxonomy + * + * @return bool + */ + public function is_term_of_taxonomy( $term, $taxonomy ) { + $terms = Tribe__Utils__Array::list_to_array( $term, ',' ); + + if ( empty( $terms ) ) { + return false; + } + + foreach ( $terms as $t ) { + if ( ! term_exists( $t, $taxonomy ) ) { + return false; + } + } + + return true; + } + + /** + * Whether the provided value points to an existing attachment ID or an existing image URL. + * + * @param int|string $image + * + * @return mixed + */ + public function is_image( $image ) { + if ( $this->is_numeric( $image ) ) { + return wp_attachment_is_image( $image ); + } + + if ( is_string( $image ) && current_user_can( 'upload_files' ) ) { + $response = wp_remote_head( $image ); + + if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) { + return false; + } + + $content_type = wp_remote_retrieve_header( $response, 'content-type' ); + + if ( empty( $content_type ) || 0 !== strpos( $content_type, 'image' ) ) { + return false; + } + + $allowed_mime_types = get_allowed_mime_types(); + + return ( in_array( $content_type, $allowed_mime_types ) ); + } + + return false; + } + + /** + * Whether the provided value points to an existing attachment ID, an existing image URL, or is empty. + * + * @param int|string $image + * + * @return mixed + */ + public function is_image_or_empty( $image ) { + if ( empty( $image ) ) { + return true; + } + + return $this->is_image( $image ); + } + + /** + * @param mixed $value + * + * @return bool + */ + public function is_numeric( $value ) { + return is_numeric( $value ); + } + + /** + * Whether a string represents a valid array or not. + * + * Valid means that the string looks like a URL, not that the URL is online and reachable. + * + * @param string $input + * + * @return bool + */ + public function is_url( $input ) { + return (bool) filter_var( $input, FILTER_VALIDATE_URL ); + } + + /** + * Whether a string represents a valid array or not. + * + * Valid means that the string looks like a URL, not that the URL is online and reachable. + * + * @param string $input + * + * @return bool + */ + public function is_url_or_empty( $input ) { + if ( empty( $input ) ) { + return true; + } + + return $this->is_url( $input ); + } + + /** + * Whether a string represents a valid and registered post status or not. + * + * @param string $post_status + * + * @return bool + */ + public function is_post_status( $post_status ) { + $post_stati = get_post_stati(); + if ( empty( $post_stati ) ) { + return false; + } + + return in_array( $post_status, $post_stati ); + } + + /** + * Converts a string, a CSV list to an array. + * + * @since 4.7.19 + * + * @param string|array $list + * + * @return array + */ + public function list_to_array( $list ) { + return Tribe__Utils__Array::list_to_array( $list ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Validator/Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Validator/Interface.php new file mode 100644 index 000000000..820677db1 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Validator/Interface.php @@ -0,0 +1,102 @@ +set_up_currency_details(); + + parent::__construct( $amount ); + } + + /** + * @inheritDoc + */ + public function get_currency() { + + /** + * Filter the value returned for get_currency() when implemented in a specific class type + * + * @since 4.14.9 + * + * @param string $currency the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + $currency = apply_filters( "tec_common_value_{$this->get_value_type()}_get_currency", $this->currency, $this ); + + /** + * Filter the value returned for get_currency() when implemented in any class + * + * @since 4.14.9 + * + * @param string $currency the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + return apply_filters( 'tec_common_value_get_currency', $currency, $this ); + } + + /** + * @inheritDoc + */ + public function get_decimal() { + + /** + * Filter the value returned for get_decimal() when implemented in a specific class type + * + * @since 4.14.9 + * + * @param float $decimal the float representation of the value, rounded to precision + * @param Abstract_Currency the object instance + * + * @return float + */ + $decimal = apply_filters( "tec_common_value_{$this->get_value_type()}_get_decimal", $this->decimal, $this ); + + /** + * Filter the value returned for get_decimal() when implemented in any class + * + * @since 4.14.9 + * + * @param float $decimal the string representation of the value + * @param Abstract_Currency the object instance + * + * @return float + */ + return apply_filters( 'tec_common_value_get_decimal', $decimal, $this ); + } + + /** + * @inheritDoc + */ + public function get_string() { + + /** + * Filter the value returned for get_string() when implemented in a specific class type + * + * @since 4.14.9 + * + * @param string $string the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + $string = apply_filters( "tec_common_value_{$this->get_value_type()}_get_string", $this->string, $this ); + + /** + * Filter the value returned for get_string() when implemented in any class + * + * @since 4.14.9 + * + * @param string $string the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + return apply_filters( 'tec_common_value_get_string', $string, $this ); + } + + /** + * @inheritDoc + */ + public function get_currency_code() { + + /** + * Filter the value returned for get_currency_code() when implemented in a specific class type + * + * @since 4.14.9 + * + * @param string $currency_code the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + $currency_code = apply_filters( "tec_common_value_{$this->get_value_type()}_get_currency_code", $this->currency_code, $this ); + + /** + * Filter the value returned for get_currency_code() when implemented in any class + * + * @since 4.14.9 + * + * @param string $currency_code the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + return apply_filters( 'tec_common_value_get_currency_code', $currency_code, $this ); + } + + /** + * @inheritDoc + */ + public function get_currency_symbol() { + + /** + * Filter the value returned for get_currency_symbol() when implemented in a specific class type + * + * @since 4.14.9 + * + * @param string $currency_symbol the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + $currency_symbol = apply_filters( "tec_common_value_{$this->get_value_type()}_get_currency_symbol", $this->currency_symbol, $this ); + + /** + * Filter the value returned for get_currency_symbol() when implemented in any class + * + * @since 4.14.9 + * + * @param string $currency_symbol the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + return apply_filters( 'tec_common_value_get_currency_symbol', $currency_symbol, $this ); + } + + /** + * @inheritDoc + */ + public function get_currency_symbol_position() { + + /** + * Filter the value returned for get_currency_symbol_position() when implemented in a specific class type + * + * @since 4.14.9 + * + * @param string $currency_symbol_position the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + $currency_symbol_position = apply_filters( "tec_common_value_{$this->get_value_type()}_get_currency_symbol_position", $this->currency_symbol_position, $this ); + + /** + * Filter the value returned for get_currency_symbol_position() when implemented in any class + * + * @since 4.14.9 + * + * @param string $currency_symbol_position the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + return apply_filters( 'tec_common_value_get_currency_symbol_position', $currency_symbol_position, $this ); + } + + /** + * @inheritDoc + */ + public function get_currency_separator_decimal() { + + /** + * Filter the value returned for get_currency_separator_decimal() when implemented in a specific class type + * + * @since 4.14.9 + * + * @param string $currency_separator_decimal the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + $currency_separator_decimal = apply_filters( "tec_common_value_{$this->get_value_type()}_get_currency_separator_decimal", $this->currency_separator_decimal, $this ); + + /** + * Filter the value returned for get_currency_separator_decimal() when implemented in any class + * + * @since 4.14.9 + * + * @param string $currency_separator_decimal the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + return apply_filters( 'tec_common_value_get_currency_separator_decimal', $currency_separator_decimal, $this ); + } + + /** + * @inheritDoc + */ + public function get_currency_separator_thousands() { + + /** + * Filter the value returned for get_currency_separator_thousands() when implemented in a specific class type + * + * @since 4.14.9 + * + * @param string $currency_separator_thousands the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + $currency_separator_thousands = apply_filters( "tec_common_value_{$this->get_value_type()}_get_currency_separator_thousands", $this->currency_separator_thousands, $this ); + + /** + * Filter the value returned for get_currency_separator_thousands() when implemented in any class + * + * @since 4.14.9 + * + * @param string $currency_separator_thousands the string representation of the value + * @param Abstract_Currency the object instance + * + * @return string + */ + return apply_filters( 'tec_common_value_get_currency_separator_thousands', $currency_separator_thousands, $this ); + } + + /** + * Protected setter for the string representation of the object amount. This is a formatted string, including the + * currency symbol. + * + * @since 4.14.9 + * + * To set a new value use the public setter `$obj->set_value( $amount )` + */ + protected function set_currency_value() { + $this->currency = $this->to_currency( $this->get_normalized_value() ); + } + + /** + * Protected setter for the decimal representation of the object amount. This is a float, rounded to the precision. + * + * @since 4.14.9 + * + * To set a new value use the public setter `$obj->set_value( $amount )` + */ + protected function set_decimal_value() { + $this->decimal = $this->to_decimal( $this->get_normalized_value() ); + } + + /** + * Protected setter for the string representation of the object amount. This is a formatted string, without the + * currency symbol. + * + * @since 4.14.9 + * + * To set a new value use the public setter `$obj->set_value( $amount )` + */ + protected function set_string_value() { + $this->string = $this->to_string( $this->get_normalized_value() ); + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Abstract_Value.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Abstract_Value.php new file mode 100644 index 000000000..34ecb0ca1 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Abstract_Value.php @@ -0,0 +1,455 @@ +set_initial_representation( $amount ); + $this->set_normalized_amount( $amount ); + $this->update(); + } + + /** + * @inheritDoc + */ + public static function create( $value = 0 ) { + $class = get_called_class(); + return new $class( $value ); + } + + /** + * @inheritDoc + */ + public function set_value( $amount ) { + $this->set_normalized_amount( $amount ); + $this->update(); + } + + /** + * @inheritDoc + */ + public function set_precision( $amount ) { + $this->precision = $amount; + } + + + /** + * @inheritDoc + */ + public function get_integer() { + /** + * Filter the value returned for get_integer() when implemented in a specific class name + * + * @since 4.14.9 + * + * @param int $integer the integer representation of the value + * @param Abstract_Value the object instance + * + * @return int + */ + $integer = apply_filters( "tec_common_value_{$this->get_value_type()}_get_integer", $this->integer, $this ); + + /** + * Filter the value returned for get_integer() when implemented in any class + * + * @since 4.14.9 + * + * @param int $integer the integer representation of the value + * @param Abstract_Value the object instance + * + * @return int + */ + return apply_filters( 'tec_common_value_get_integer', $integer, $this ); + + } + + /** + * @inheritDoc + */ + public function get_float() { + /** + * Filter the value returned for get_float() when implemented in a specific class name + * + * @since 4.14.9 + * + * @param float $float the float representation of the value + * @param Abstract_Value the object instance + * + * @return float + */ + $float = apply_filters( "tec_common_value_{$this->get_value_type()}_get_float", $this->float, $this ); + + /** + * Filter the value returned for get_float() when implemented in any class + * + * @since 4.14.9 + * + * @param float $float the float representation of the value + * @param Abstract_Value the object instance + * + * @return float + */ + return apply_filters( 'tec_common_value_get_float', $float, $this ); + } + + /** + * @inheritDoc + */ + public function get_precision() { + /** + * Filter the value returned for get_precision() when implemented in a specific class name + * + * @since 4.14.9 + * + * @param int $precision the precision to which values will be calculated + * @param Abstract_Value the object instance + * + * @return int + */ + $precision = apply_filters( "tec_common_value_{$this->get_value_type()}_get_precision", $this->precision, $this ); + + /** + * Filter the value returned for get_precision() when implemented in any class + * + * @since 4.14.9 + * + * @param int $precision the precision to which values will be calculated + * @param Abstract_Value the object instance + * + * @return int + */ + return (int) apply_filters( 'tec_common_value_get_precision', $precision, $this ); + } + + /** + * @inheritDoc + */ + public function get_normalized_value() { + return $this->normalized_amount; + } + + /** + * @inheritDoc + */ + public function get_initial_representation() { + return $this->initial_value; + } + + /** + * @inheritDoc + */ + public function get_value_type() { + return $this->value_type; + } + + /** + * @inheritDoc + */ + public function normalize( $value ) { + + if ( is_numeric( $value ) ) { + return (float) $value; + } + + if ( $this->is_character_block( $value ) ) { + return (float) 0; + } + + $value = $this->remove_character_blocks( $value ); + $value = $this->remove_html( $value ); + + // Get all non-digits from the amount + preg_match_all( '/[^\d]/', $value, $non_digits ); + + // if the string is all digits, it is numeric + if ( empty( $non_digits[0] ) ) { + return (float) $value; + } + + $pieces = $this->remove_non_digits( $value, $non_digits ); + + return (float) $this->assemble_normalized_value( $pieces ); + } + + /** + * Removes any blocks composed of all non-digit characters from the numeric string. These will usually represent + * the currency code and any other pieces of text that may have been sent with the value. + * + * This is specially important in case the currency unit contains the same characters as the decimal/thousands + * separators such as in Moroccan Dirham (1,234.56 .د.م.) or Danish Krone (kr. 1.234,56) + * + * @since 4.14.9 + * + * @param string $value the numeric string being normalized + * + * @return string + */ + private function remove_character_blocks( $value ) { + foreach ( explode( ' ', $value ) as $block ) { + if ( ! $this->is_character_block( $block ) ) { + continue; + } + + $value = str_replace( $block, '', $value ); + } + + return $value; + } + + /** + * Removes all html tags and html entities from the value string + * + * @since 4.14.9 + * + * @param string $value the value being normalized + * + * @return string + */ + private function remove_html( $value ) { + return wp_strip_all_tags( preg_replace( '/&[^;]+;/', '', trim( $value ) ) ); + } + + /** + * Takes the value string and a list of non-digit characters and removes any of those characters. If the character + * is found to be a decimal separator, normalize it to a dot, so the number translates to a float. + * + * @since 4.14.9 + * + * @param string $value the value being normalized + * @param string[] $non_digits a list of non-digit characters present in $value + * @param string $separator a default separator to use when splitting the string + * + * @return string[] + */ + private function remove_non_digits( $value, $non_digits, $separator = '>>>' ) { + + $tokens = array_unique( $non_digits[0] ); + + foreach ( $tokens as $token ) { + if ( $this->is_decimal_separator( $token, $value ) ) { + $separator = $token; + continue; + } + + $value = str_replace( $token, '', $value ); + } + + return explode( $separator, $value ); + } + + /** + * Re-assemble the normalized value to store. + * + * @since 4.14.9 + * + * @param int[] $pieces the normalized value split in an array. + * + * @return float + */ + private function assemble_normalized_value( $pieces ) { + + // If the initial amount did not have decimals specified, $pieces will be an array of a single + // numeric value, so we just return it as a float. + if ( 1 === count( $pieces ) && is_numeric( reset( $pieces ) ) ) { + return (float) reset( $pieces ); + } + + $decimal = array_pop( $pieces ); + + return (float) implode( '', array_merge( $pieces, [ '.', $decimal ] ) ); + } + + /** + * Private setter for the initial value the object was created with. This value cannot be changed during the object + * lifecycle. + * + * @since 4.14.9 + * + * To set a new value discard the original object and create a new one. + */ + private function set_initial_representation( $amount ) { + if ( empty( $this->initial_value ) ) { + $this->initial_value = $amount; + } + } + + /** + * Private setter for the normalized amount extracted from the initial value. + * + * @since 4.14.9 + * + * To set a new value use the public setter `$obj->set_value( $amount )` + */ + private function set_normalized_amount( $amount ) { + + $normalized_value = $this->normalize( $amount ); + + /** + * Filter the value to be set as $normalized_amount for a specific implementation. + * + * @since 4.14.9 + * + * @param float $normalized_value the normalized value + * @param Abstract_Value the object instance + * + * @return float + */ + $normalized_value = (float) apply_filters( "tec_common_{$this->get_value_type()}_value_normalized", $normalized_value, $this ); + + /** + * Filter the value to be set as $normalized_amount for all implementations. + * + * @since 4.14.9 + * + * @param float $normalized_value the normalized value + * @param Abstract_Value the object instance + * + * @return float + */ + $normalized_value = (float) apply_filters( "tec_common_value_normalized", $normalized_value, $this ); + + /** + * Fire action right before setting the normalized value + * + * @since 4.14.9 + * + * @param float $normalized_value the normalized value + * @param Abstract_Value the object instance + */ + do_action( 'tec_common_value_normalized', $normalized_value, $this ); + + $this->normalized_amount = $normalized_value; + } + + /** + * Private setter for the integer representation of the object amount. + * + * @since 4.14.9 + * + * To set a new value use the public setter `$obj->set_value( $amount )` + */ + protected function set_integer_value() { + $this->integer = $this->to_integer( $this->normalized_amount ); + } + + /** + * Private setter for the floating point representation of the object amount. + * + * @since 4.14.9 + * + * To set a new value use the public setter `$obj->set_value( $amount )` + */ + protected function set_float_value() { + $this->float = $this->normalized_amount; + } + + /** + * Tries to determine if a token is serving as a decimal separator or something else + * in a string; + * + * The rule to determine a decimal is straightforward. It needs to exist only once + * in the string and the piece of the string after the separator cannot be longer + * than 2 digits. Anything else is serving another purpose. + * + * @since 4.14.9 + * + * @param $separator string a separator token, like . or , + * @param $value string a number formatted as a string + * + * @return bool + */ + private function is_decimal_separator( $separator, $value ) { + $pieces = array_filter( explode( $separator, $value ) ); + + foreach ( $pieces as $i => $block ) { + if ( $this->is_character_block( $block ) ) { + unset( $pieces[ $i ] ); + } + } + + if ( 2 === count( $pieces ) ) { + return strlen( array_pop( $pieces ) ) < 3; + } + + return false; + } + + /** + * Tests if a string is composed entirely of non-digit characters + * + * @since 4.14.9 + * + * @param string $block the string to check + * + * @return bool + */ + private function is_character_block( $block ) { + return empty( preg_replace( '/\D/', '', $block ) ); + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Currency_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Currency_Interface.php new file mode 100644 index 000000000..aadf96364 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Currency_Interface.php @@ -0,0 +1,86 @@ +set_value( $this->multiply( $multiplier ) ); + + return $this; + } + + /** + * Sets the current object value to be the sum of its current value plus the values of all objects received in + * $values. + * + * @since 4.14.9 + * + * @param Abstract_Value[] $values a list of Value objects + * + * @return $this + */ + public function total( $values ) { + $num = array_map( function ( $obj ) { + return $obj->get_float(); + }, $values ); + + $this->set_value( $this->sum( $num ) ); + + return $this; + } + + /** + * @inheritDoc + */ + public function sum( $values ) { + $values[] = $this->get_float(); + + return array_sum( $values ); + } + + /** + * @inheritDoc + */ + public function multiply( $multiplier ) { + return $this->get_float() * $multiplier; + } + + /** + * Rounds the current value to its precision and multiplies it by 10^precision to get an integer representation + * including decimals. + * + * @since 4.14.9 + * + * @param int|float $value the value to transform + * + * @return int + */ + public function to_integer( $value ) { + return (int) ( round( $value, $this->get_precision() ) * pow( 10, $this->get_precision() ) ); + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Value_Formatting.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Value_Formatting.php new file mode 100644 index 000000000..33cbdd119 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Value_Formatting.php @@ -0,0 +1,58 @@ +to_decimal( $value ), + $this->get_precision(), + $this->get_currency_separator_decimal(), + $this->get_currency_separator_thousands() + ); + } + + /** + * Transforms a normalized value into a decimal representation by rounding the significant digits to the precision. + * + * @since 4.14.9 + * + * @param float $value the normalized value to transform + * + * @param float|\WP_Error the value rounded to the specified precision + */ + private function to_decimal( $value ) { + return round( $value, $this->get_precision() ); + } + + /** + * Transforms a normalized value into a currency representation using the defined currency symbol, position, + * separators and precision. + * + * @since 4.14.9 + * + * @param float $value the normalized value to transform + * + * @return string|\WP_Error the currency-formatted string + */ + private function to_currency( $value ) { + $value = $this->to_string( $value ); + + if ( 'prefix' === $this->get_currency_symbol_position() ) { + return $this->get_currency_symbol() . $value; + } + + return $value . $this->get_currency_symbol(); + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Value_Interface.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Value_Interface.php new file mode 100644 index 000000000..aaba5247b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/Values/Value_Interface.php @@ -0,0 +1,145 @@ +get_value_type()}_value_get_setters", $setters, $this ); + + /** + * Filter the value returned for get_setters() for all class names. + * + * @since 4.14.9 + * + * @param string[] $setters the list of setter methods returned + * @param Abstract_Value the object instance + * + * @return string[] + */ + return apply_filters( 'tec_tickets_commerce_value_get_setters', $setters, $this ); + } + + /** + * @inheritDoc + */ + public function update() { + foreach ( $this->get_setters() as $setter ) { + call_user_func( [ $this, $setter ] ); + } + } +} \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/Tribe/View_Helpers.php b/wp-content/plugins/the-events-calendar/common/src/Tribe/View_Helpers.php new file mode 100644 index 000000000..0ee74d06e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/Tribe/View_Helpers.php @@ -0,0 +1,348 @@ +get_countries(); + } + + // Perform a natural sort: this maintains the key -> index associations but ensures the countries + // are in the expected order, even once translated + natsort( $countries ); + + // Placeholder option ('Select a Country') first by default + $select_country = [ '' => esc_html__( 'Select a Country:', 'tribe-common' ) ]; + $countries = $select_country + $countries; + + if ( ( $postId || $useDefault ) ) { + $countryValue = get_post_meta( $postId, '_EventCountry', true ); + if ( $countryValue ) { + $defaultCountry = [ array_search( $countryValue, $countries ), $countryValue ]; + } else { + $defaultCountry = tribe_get_default_value( 'country' ); + } + if ( $defaultCountry && $defaultCountry[0] != '' ) { + $selectCountry = array_shift( $countries ); + asort( $countries ); + $countries = [ $defaultCountry[0] => $defaultCountry[1] ] + $countries; + $countries = [ '' => $selectCountry ] + $countries; + array_unique( $countries ); + } + } + + tribe_set_var( $cache_var_name, $countries ); + + return $countries; + } + + /** + * Get the i18ned states available to the plugin. + * + * @return array The states array. + */ + public static function loadStates() { + $states = tribe( 'languages.locations' )->get_us_states(); + + /** + * Enables filtering the list of states in the USA available to venues. + * + * @since 4.5.12 + * + * @param array $states The list of states. + */ + return apply_filters( 'tribe_get_state_options', $states ); + } + + /** + * Builds a set of options for displaying an hour chooser + * + * @param string $date the current date (optional) + * @param bool $isStart + * + * @return string a set of HTML options with hours (current hour selected) + */ + public static function getHourOptions( $date = '', $isStart = false ) { + $hours = self::hours(); + + if ( count( $hours ) == 12 ) { + $h = 'h'; + } else { + $h = 'H'; + } + $options = ''; + + if ( empty( $date ) ) { + $hour = ( $isStart ) ? '08' : ( count( $hours ) == 12 ? '05' : '17' ); + } else { + $timestamp = strtotime( $date ); + $hour = date( $h, $timestamp ); + // fix hours if time_format has changed from what is saved + if ( preg_match( '(pm|PM)', $timestamp ) && $h == 'H' ) { + $hour = $hour + 12; + } + if ( $hour > 12 && $h == 'h' ) { + $hour = $hour - 12; + } + } + + $hour = apply_filters( 'tribe_get_hour_options', $hour, $date, $isStart ); + + foreach ( $hours as $hourText ) { + if ( $hour == $hourText ) { + $selected = 'selected="selected"'; + } else { + $selected = ''; + } + $options .= "\n"; + } + + return $options; + } + + /** + * Builds a set of options for displaying a minute chooser + * + * @param string $date the current date (optional) + * @param bool $isStart + * + * @return string a set of HTML options with minutes (current minute selected) + */ + public static function getMinuteOptions( $date = '', $isStart = false ) { + $options = ''; + + if ( empty( $date ) ) { + $minute = '00'; + } else { + $minute = date( 'i', strtotime( $date ) ); + } + + $minute = apply_filters( 'tribe_get_minute_options', $minute, $date, $isStart ); + $minutes = self::minutes( $minute ); + + foreach ( $minutes as $minuteText ) { + if ( $minute == $minuteText ) { + $selected = 'selected="selected"'; + } else { + $selected = ''; + } + $options .= "\n"; + } + + return $options; + } + + /** + * Helper method to return an array of 1-12 for hours + * + * @return array The hours array. + */ + private static function hours() { + $hours = []; + $rangeMax = self::is_24hr_format() ? 23 : 12; + $rangeStart = $rangeMax > 12 ? 0 : 1; + foreach ( range( $rangeStart, $rangeMax ) as $hour ) { + if ( $hour < 10 ) { + $hour = '0' . $hour; + } + $hours[ $hour ] = $hour; + } + + // In a 12hr context lets put 12 at the start (so the sequence will run 12, 1, 2, 3 ... 11) + if ( 12 === $rangeMax ) { + array_unshift( $hours, array_pop( $hours ) ); + } + + return $hours; + } + + /** + * Determines if the provided date/time format (or else the default WordPress time_format) + * is 24hr or not. + * + * In inconclusive cases, such as if there are now hour-format characters, 12hr format is + * assumed. + * + * @param null $format + * @return bool + */ + public static function is_24hr_format( $format = null ) { + // Use the provided format or else use the value of the current time_format setting + $format = ( null === $format ) ? get_option( 'time_format', Tribe__Date_Utils::TIMEFORMAT ) : $format; + + // Count instances of the H and G symbols + $h_symbols = substr_count( $format, 'H' ); + $g_symbols = substr_count( $format, 'G' ); + + // If none have been found then consider the format to be 12hr + if ( ! $h_symbols && ! $g_symbols ) return false; + + // It's possible H or G have been included as escaped characters + $h_escaped = substr_count( $format, '\H' ); + $g_escaped = substr_count( $format, '\G' ); + + // Final check, accounting for possibility of escaped values + return ( $h_symbols > $h_escaped || $g_symbols > $g_escaped ); + } + + /** + * Helper method to return an array of 00-59 for minutes + * + * @param int $exact_minute optionally specify an exact minute to be included (outwith the default intervals) + * + * @return array The minutes array. + */ + private static function minutes( $exact_minute = 0 ) { + $minutes = []; + + // The exact minute should be an absint between 0 and 59 + $exact_minute = absint( $exact_minute ); + + if ( $exact_minute < 0 || $exact_minute > 59 ) { + $exact_minute = 0; + } + + /** + * Filters the amount of minutes to increment the minutes drop-down by + * + * @param int Increment amount (defaults to 5) + */ + $default_increment = apply_filters( 'tribe_minutes_increment', 5 ); + + // Unless an exact minute has been specified we can minimize the amount of looping we do + $increment = ( 0 === $exact_minute ) ? $default_increment : 1; + + for ( $minute = 0; $minute < 60; $minute += $increment ) { + // Skip if this $minute doesn't meet the increment pattern and isn't an additional exact minute + if ( 0 !== $minute % $default_increment && $exact_minute !== $minute ) { + continue; + } + + if ( $minute < 10 ) { + $minute = '0' . $minute; + } + $minutes[ $minute ] = $minute; + } + + return $minutes; + } + + /** + * Builds a set of options for diplaying a meridian chooser + * + * @param string $date YYYY-MM-DD HH:MM:SS to select (optional) + * @param bool $isStart + * + * @return string a set of HTML options with all meridians + */ + public static function getMeridianOptions( $date = '', $isStart = false ) { + if ( strstr( get_option( 'time_format', Tribe__Date_Utils::TIMEFORMAT ), 'A' ) ) { + $a = 'A'; + $meridians = [ 'AM', 'PM' ]; + } else { + $a = 'a'; + $meridians = [ 'am', 'pm' ]; + } + if ( empty( $date ) ) { + $meridian = ( $isStart ) ? $meridians[0] : $meridians[1]; + } else { + $meridian = date( $a, strtotime( $date ) ); + } + + $meridian = apply_filters( 'tribe_get_meridian_options', $meridian, $date, $isStart ); + + $return = ''; + foreach ( $meridians as $m ) { + $return .= "
    + + admin_notice( 'app-shop' ); + ?> + +
    +
    +
    + <?php esc_attr_e( 'The Events Calendar brand logo', 'tribe-common' ); ?> +
    + +
      +
    • +
    • +
    • +
    • +
    +
    +
    + +
    + <?php esc_attr_e( 'Shapes and lines for visual interest', 'tribe-common' ); ?> +
    +
    + $some_products ) : ?> + +

    +

    + +

    + + + +
    +
    + <?php esc_attr_e( 'TEC Logo', 'tribe-common' ); ?> +

    free ) ? 'class="has-pill"' : ''; ?>>title ); ?>

    + + + + free ) : ?> + + + +
    +
    + +
    + +
    +

    description ); ?>

    +
    + +
      + features as $feature ) : ?> +
    • + + + + + +
    • + +
    + + + + + + + +
    + + +
    +
    +
    + +
    + <?php esc_attr_e( 'Shapes and lines for visual interest', 'tribe-common' ); ?> +
    +
    +

    +

    + +
    +
    +
    + <?php esc_attr_e( 'TEC Logo', 'tribe-common' ); ?> +

    title ); ?>

    +
    + +

    description ); ?>

    + +
    + + discount ); ?> +
    +
    + +
    +

    +
      + includes as $i => $product_key ) : ?> + + +
    • + <?php esc_attr_e( 'TEC Logo', 'tribe-common' ); ?> + title ); ?> +
    • + + +
      + + +
    +
    + +
    + + discount ); ?> +
    + +
    + +
    +
    +
    + +
    + <?php esc_attr_e( 'Shapes and lines for visual interest', 'tribe-common' ); ?> +
    +
    +

    +

    + +
    +
    +

    title ); ?>

    + +
    + +
    + +
    + +

    description ); ?>

    + + +
    + + + + +
    + +
    +
    + +
    + +
    + + + diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/components/icons/dot.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/components/icons/dot.php new file mode 100644 index 000000000..5221a0917 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/components/icons/dot.php @@ -0,0 +1,23 @@ + $classes Additional classes to add to the svg icon. + * + * @version 4.14.9 + * + */ +$svg_classes = [ 'tribe-common-c-svgicon', 'tribe-common-c-svgicon--dot' ]; + +if ( ! empty( $classes ) ) { + $svg_classes = array_merge( $svg_classes, $classes ); +} +?> + viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg"> diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/components/loader.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/components/loader.php new file mode 100644 index 000000000..81b79d08a --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/components/loader.php @@ -0,0 +1,44 @@ +get( 'text' ) ?: __( 'Loading...', 'tribe-common' ); +} + +if ( empty( $loader_classes ) ) { + $loader_classes = $this->get( 'classes' ) ?: []; +} + +$spinner_classes = [ + 'tribe-events-loader__dots', + 'tribe-common-c-loader', + 'tribe-common-a11y-hidden', +]; + +if ( ! empty( $loader_classes ) ) { + $spinner_classes = array_merge( $spinner_classes, (array) $loader_classes ); +} + +?> +
    +
    +
    > + template( '/components/icons/dot', [ 'classes' => [ 'tribe-common-c-loader__dot', 'tribe-common-c-loader__dot--first' ] ] ); ?> + template( '/components/icons/dot', [ 'classes' => [ 'tribe-common-c-loader__dot', 'tribe-common-c-loader__dot--second' ] ] ); ?> + template( '/components/icons/dot', [ 'classes' => [ 'tribe-common-c-loader__dot', 'tribe-common-c-loader__dot--third' ] ] ); ?> +
    +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/components/switch.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/components/switch.php new file mode 100644 index 000000000..b0117e5fd --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/components/switch.php @@ -0,0 +1,57 @@ + $classes_wrap An array of classes for the switch wrap. + * @var array $classes_input An array of classes for the switch input. + * @var array $classes_label An array of classes for the switch label. + * @var string $name Name attribute for the switch input. + * @var string|int $value The value of the switch. + * @var string|int $checked Whether the switch is enabled or not. + * @var array $attrs Associative array of attributes of the switch. + */ +$switch_wrap_classes = [ 'tribe-common-control', 'tribe-common-control--switch' ]; +if ( ! empty( $classes_wrap ) ) { + $switch_wrap_classes = array_merge( $switch_wrap_classes, $classes_wrap ); +} + +$switch_input_classes = [ 'tribe-common-switch__input' ]; +if ( ! empty( $classes_input ) ) { + $switch_input_classes = array_merge( $switch_input_classes, $classes_input ); +} + +$switch_label_classes = [ 'tribe-common-switch__label' ]; +if ( ! empty( $classes_label ) ) { + $switch_label_classes = array_merge( $switch_label_classes, $classes_label ); +} +?> +
    +> + + id="" + name="" + type="checkbox" + value="" + + + /> + + +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/conditional_content/black-friday.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/conditional_content/black-friday.php new file mode 100644 index 000000000..534935416 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/conditional_content/black-friday.php @@ -0,0 +1,35 @@ + + +
    +
    + <?php echo esc_attr__( 'The Events Calendar brand logo', 'tribe-common' ); ?> +
    +
    +
    +

    + sale of the
    year ends
    soon

    ', 'tribe-common' ); ?> + + + +

    +
    +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/conditional_content/end-of-year-sale.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/conditional_content/end-of-year-sale.php new file mode 100644 index 000000000..d947bb3c1 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/conditional_content/end-of-year-sale.php @@ -0,0 +1,35 @@ + + +
    +
    + <?php echo esc_attr__( 'The Events Calendar brand logo', 'tribe-common' ); ?> +
    +
    +
    +

    + Save 30% on
    all our plugins.
    Offer expires soon!', 'tribe-common' ); ?> +

    + + + +
    +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/event-log.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/event-log.php new file mode 100644 index 000000000..82e454406 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/event-log.php @@ -0,0 +1,117 @@ + +
    + + + +
    + + +
    + + + +
    + + +
    + + + +
    + + +
    + + + + + + + +
    + +
    + +

    + + + + + + + + + + +
    + + + +
    + +

    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/help-calendar.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/help-calendar.php new file mode 100644 index 000000000..6fb2fc6ee --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/help-calendar.php @@ -0,0 +1,248 @@ +get_calendar_faqs(); +$extensions = tribe( Tribe__Admin__Help_Page::class )->get_calendar_extensions(); +$calendar_products = tribe( Tribe__Admin__Help_Page::class )->get_calendar_products(); + +?> +
    + +

    + +

    + + +
    + +
    + <?php esc_attr_e( 'logo icon', 'tribe-common' ); ?> +
    +

    + +

    +
    + +
    +
    + + + + + + + + + + + + + + + +
    + +
    + +
    +

    + +

    + + + + +
    + +
    +
    + <?php esc_attr_e( 'book with The Events Calendar logo', 'tribe-common' ); ?> +

    + +

    + +
    + +
    + <?php esc_attr_e( 'book with The Events Calendar logo', 'tribe-common' ); ?> +

    + +

    + +
    + +
    + <?php esc_attr_e( 'book with The Events Calendar logo', 'tribe-common' ); ?> +

    + +

    + +
    +
    + + +
    +

    + +

    + + + + +
    + +
    + +
    +
    + <?php esc_attr_e( 'lightbulb icon', 'tribe-common' ); ?> +
    +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + +
    +

    + +

    + + + + +
    + +

    + +

    + +
    + +
    +

    + + + +

    +
    + +
    +
    + +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/help-community.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/help-community.php new file mode 100644 index 000000000..d8b1639ea --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/help-community.php @@ -0,0 +1,241 @@ +get_calendar_faqs(); +$extensions = tribe( Tribe__Admin__Help_Page::class )->get_community_extensions(); +$community_products = tribe( Tribe__Admin__Help_Page::class )->get_community_products(); + +?> +
    + +

    + +

    + + +
    + +
    + <?php esc_attr_e( 'logo icon', 'tribe-common' ); ?> +
    +

    + +

    +
    + +
    +
    + + + + + + + + + + + +
    + +
    + +
    +

    + +

    + + + + +
    + +
    +
    + <?php esc_attr_e( 'book with The Events community logo', 'tribe-common' ); ?> +

    + +

    + +
    + +
    + <?php esc_attr_e( 'book with Event Tickets logo', 'tribe-common' ); ?> +

    + +

    + +
    + +
    + <?php esc_attr_e( 'book with The Events community logo', 'tribe-common' ); ?> +

    + +

    + +
    +
    + + +
    +

    + +

    + + + + +
    + +
    + +
    +
    + <?php esc_attr_e( 'lightbulb icon', 'tribe-common' ); ?> +
    +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + +
    +

    + +

    + + + + +
    + +

    + +

    + +
    + +
    +

    + + + +

    +
    + +
    +
    + +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/help-ticketing.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/help-ticketing.php new file mode 100644 index 000000000..3402f1812 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/help-ticketing.php @@ -0,0 +1,244 @@ +get_ticketing_faqs(); +$extensions = tribe( Tribe__Admin__Help_Page::class )->get_ticketing_extensions(); +$ticketing_products = tribe( Tribe__Admin__Help_Page::class )->get_ticketing_products(); + +?> +
    + +

    + +

    + + +
    + +
    + <?php esc_attr_e( 'logo icon', 'tribe-common' ); ?> +
    +

    + +

    +
    + +
    +
    + + + + + + + + + + + + + + + +
    + +
    + +
    +

    + +

    + + + + +
    + +
    +
    + <?php esc_attr_e( 'book with The Events ticketing logo', 'tribe-common' ); ?> +

    + +

    + +
    + +
    + <?php esc_attr_e( 'book with Event Tickets logo', 'tribe-common' ); ?> +

    + +

    + +
    + +
    + <?php esc_attr_e( 'book with The Events ticketing logo', 'tribe-common' ); ?> +

    + +

    + +
    +
    + + +
    +

    + +

    + + + + +
    + +
    + +
    +
    + <?php esc_attr_e( 'lightbulb icon', 'tribe-common' ); ?> +
    +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + +
    +

    + +

    + + + + +
    + +

    + +

    + +
    + +
    +

    + + + +

    +
    + +
    +
    + +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/help.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/help.php new file mode 100644 index 000000000..206ecb7ef --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/help.php @@ -0,0 +1,107 @@ +get_products(); + +use \Tribe\Admin\Troubleshooting; + +?> + +
    + admin_notice( 'help' ); + ?> +
    + + <?php esc_attr_e( 'The Events Calendar brand logo', 'tribe-common' ); ?> + +

    +

    + +
      +
    • +
    • +
    • +
    +
    +
    + +
    +   +
    + +
    + + plugin_path . 'src/admin-views/help-calendar.php'; + + // Ticketing & RSVP Tab + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/help-ticketing.php'; + + // Community Tab + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/help-community.php'; + + $troubleshooting_link = class_exists( 'Tribe__Events__Main' ) + ? admin_url( 'edit.php?post_type=tribe_events&page=tec-troubleshooting' ) + : admin_url( 'admin.php?page=tec-tickets-troubleshooting' ); + ?> + + +
    + <?php esc_attr_e( 'Graphic with an electrical plug and gears', 'tribe-common' ); ?> + +
    +

    + +

    + +
    + + + +
    +
    +
    + + +
    + + + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/end-of-year-sale.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/end-of-year-sale.php new file mode 100644 index 000000000..e853cf948 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/end-of-year-sale.php @@ -0,0 +1,30 @@ + +
    +
    + +
    +
    +

    +

    + + + + + + +

    +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-bf-general.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-bf-general.php new file mode 100644 index 000000000..ec7750ce4 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-bf-general.php @@ -0,0 +1,31 @@ + +
    +
    + +
    +
    +

    +

    + + + + + + +

    +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-stellar-sale-premium.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-stellar-sale-premium.php new file mode 100644 index 000000000..7f6fc8624 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-stellar-sale-premium.php @@ -0,0 +1,60 @@ + +
    +
    +
    +

    + +

    +

    + +

    +

    + + + + + +

    +
    + +
    +

    + 100% off WP Business Reviews and take 40% off all other brands.', 'tribe-common' ); ?> +

    +
    +

    + + + + + +

    + +

    + + + + + +

    +
    +
    + +
    + +
    +
    +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-stellar-sale.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-stellar-sale.php new file mode 100644 index 000000000..c8eaf21e1 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/tribe-stellar-sale.php @@ -0,0 +1,60 @@ + +
    +
    +
    +

    + +

    +

    + +

    +

    + + + + + +

    +
    + +
    +

    + 100% off WP Business Reviews and take 40% off all other brands.', 'tribe-common' ); ?> +

    +
    +

    + + + + + +

    + +

    + + + + + +

    +
    +
    + +
    + +
    +
    +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/upsell/icon.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/upsell/icon.php new file mode 100644 index 000000000..d7c7e0161 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/upsell/icon.php @@ -0,0 +1,21 @@ + +
    + <?php esc_attr_e( 'The Events Calendar important notice icon', 'tribe-common' ); ?> +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/upsell/main.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/upsell/main.php new file mode 100644 index 000000000..6252e8674 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/notices/upsell/main.php @@ -0,0 +1,50 @@ + $classes Additional classes to add to the upsell div. + * @var array $link Array of link properties, including 'text', 'url', 'rel', 'target' and 'classes'. + * + */ + +$upsell_classes = [ 'tec-admin__upsell' ]; +if ( ! empty( $classes ) ) { + $upsell_classes = array_merge( $upsell_classes, $classes ); +} + +$link_classes = [ 'tec-admin__upsell-link ']; +if ( ! empty( $link ) && ! empty( $link['classes'] ) ) { + $link_classes = array_merge( $link_classes, $link['classes'] ); +} + +?> +
    +
    > +
    + template( 'icon' ); ?> + +
    +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/tabbed-view/tab.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/tabbed-view/tab.php new file mode 100644 index 000000000..0d04aed2f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/tabbed-view/tab.php @@ -0,0 +1,4 @@ +get_visibles(); +?> + + 1 ) : ?> +
    + get_label() ) : ?> +

    + get_label() ); ?> + +

    + + + +
    + +

    get_label() ); ?>

    + diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/tribe-options-help.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/tribe-options-help.php new file mode 100644 index 000000000..32588d30d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/tribe-options-help.php @@ -0,0 +1,120 @@ +get_plugins( null, false ); + +// Creates the Feature Box section +$help->add_section( 'feature-box', null, 0, 'box' ); +$help->add_section_content( 'feature-box', 'The Events Calendar' ); +$help->add_section_content( 'feature-box', sprintf( esc_html__( 'Thank you for using %s! All of us at The Events Calendar sincerely appreciate your support and we’re excited to see you using our plugins.', 'tribe-common' ), $help->get_plugins_text() ) ); + +// Creates the Support section +$help->add_section( 'support', __( 'Getting Support', 'tribe-common' ), 10 ); +$help->add_section_content( 'support', sprintf( __( 'Our website’s %s is a great place to find tips and tricks for using and customizing our plugins.', 'tribe-common' ), '' . __( 'Knowledgebase', 'tribe-common' ) . '' ), 0 ); +$help->add_section_content( 'support', sprintf( + '%1$s %2$s', + esc_html__( 'Want to dive deeper?', 'tribe-common' ), + sprintf( + __( 'Check out our %s for developers.', 'tribe-common' ), + '' . esc_html__( 'list of available functions', 'tribe-common' ) . '' + ) +), 50 ); + +// Creates the Extra Help section +$help->add_section( 'extra-help', __( 'Getting More Help', 'tribe-common' ), 20 ); +$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 ); +$help->add_section_content( + 'extra-help', + [ + 'type' => 'ol', + 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' + ), + '' . __( + 'Check our Knowledgebase', + 'tribe-common' + ) . '' + ), + 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' + ), + '' . __( + 'Test for a theme or plugin conflict', + 'tribe-common' + ) . '' + ), + 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' + ), + '' . __( + 'Search our support help desk', + 'tribe-common' + ) . '' + ), + ], + 10 +); + +// By default these three will be gathered +$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 ); +$help->add_section_content( 'extra-help', '', 40 ); + +// Creates the System Info section +$help->add_section( 'system-info', __( 'System Information', 'tribe-common' ), 30 ); +$help->add_section_content( 'system-info', __( 'The details of your calendar plugin and settings is often needed for you or our staff to help troubleshoot an issue. Please opt-in below to automatically share your system information with our support team. This will allow us to assist you faster if you post in our help desk.', 'tribe-common' ), 0 ); + +$help->add_section_content( + 'system-info', + Tribe__Support::opt_in(), + 10 +); + +$help->add_section_content( 'system-info', '
    ', 10 ); + +$help->add_section( 'template-changes', __( 'Recent Template Changes', 'tribe-common' ), 40 ); +$help->add_section_content( 'template-changes', Tribe__Support__Template_Checker_Report::generate() ); + +$help->add_section( 'event-log', __( 'Event Log', 'tribe-common' ), 50 ); +$help->add_section_content( 'event-log', tribe( 'logger' )->admin()->display_log() ); +?> + +
    + get_sections(); ?> +
    + +
    + Help tab + */ + do_action( 'tribe_help_sidebar_before' ); + + foreach ( $plugins as $key => $plugin ) { + $help->print_plugin_box( $key ); + } + ?> +

    + + + Help tab + */ + do_action( 'tribe_help_sidebar_after' ); ?> + +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/tribe-options-licenses.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/tribe-options-licenses.php new file mode 100644 index 000000000..a1bb76ada --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/tribe-options-licenses.php @@ -0,0 +1,67 @@ +' . + esc_html__( 'If you\'ve purchased a premium add-on, you\'ll need to enter your license key here in order to have access to automatic updates when new versions are available.', 'tribe-common' ) . + '

    '; + +$html .= '

    ' . + sprintf( + esc_html__( 'In order to register a plugin license, you\'ll first need to %1$sdownload and install%2$s the plugin you purchased. You can download the latest version of your plugin(s) from %3$syour account\'s downloads page%4$s. Once the plugin is installed and activated on this site, the license key field will appear below.', 'tribe-common' ), + '', + '', + '', + '' + ) . + '

    '; + +$html .= '

    ' . + esc_html__( 'Each paid add-on has its own unique license key. Paste the key into its appropriate field below, and give it a moment to validate. You know you\'re set when a green expiration date appears alongside a "valid" message. Then click Save Changes.', 'tribe-common' ) . + '

    '; + +$html .= '

    ' . + esc_html__( 'Helpful Links:', 'tribe-common' ) . + '

    '; + +$html .= ''; + + +$licenses_tab = [ + 'info-start' => [ + 'type' => 'html', + 'html' => '
    ', + ], + 'info-box-title' => [ + 'type' => 'html', + 'html' => '

    ' . esc_html__( 'Licenses', 'tribe-common' ) . '

    ', + ], + 'info-box-description' => [ + 'type' => 'html', + 'html' => $html, + ], + 'info-end' => [ + 'type' => 'html', + 'html' => '
    ', + ], +]; diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting.php new file mode 100644 index 000000000..4af8aaa53 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting.php @@ -0,0 +1,55 @@ +plugin_path . 'src/admin-views/troubleshooting/notice.php'; + // intro + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/introduction.php'; + // detected issues + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/detected-issues.php'; + // first steps + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/first-steps.php'; + // common issues + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/common-issues.php'; + // system information + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/system-information.php'; + // recent template changes + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/recent-template-changes.php'; + // recent logs + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/event-log.php'; + // ea status + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/ea-status.php'; + // support cta + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/support-cta.php'; + // footer + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/footer-logo.php'; +?> + + + diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/common-issues.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/common-issues.php new file mode 100644 index 000000000..0ee8acd3e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/common-issues.php @@ -0,0 +1,40 @@ +get_common_issues(); +?> +
    +

    + +

    +
    + +
    + +
    +
    + <?php esc_attr_e( 'lightbulb icon', 'tribe-common' ); ?> +
    +
    +
    + +
    +
    + ' . esc_html( $common_issue['link_label'] ) . ''; + echo sprintf( $common_issue['solution'], $label ); + ?> +
    +
    +
    + +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/detected-issues.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/detected-issues.php new file mode 100644 index 000000000..7dfe39015 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/detected-issues.php @@ -0,0 +1,54 @@ +get_issues_found(); + +if ( tribe( Troubleshooting::class )->is_any_issue_active() ) : //checks is there are any active issues before printing ?> +
    +

    + +

    +
    + + + + +
    +
    + <?php esc_attr_e( 'warning-icon', 'tribe-common' ); ?> +

    + + + + +

    +
    +
    +

    + +

    + +
    +
    + + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status.php new file mode 100644 index 000000000..8aa4a9946 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status.php @@ -0,0 +1,52 @@ + 'images/help/success-icon.svg', + 'warning' => 'images/help/warning-icon.svg', + 'error' => 'images/help/error-icon.svg', +]; + +$show_third_party_accounts = ! is_network_admin(); +?> +

    + +

    + +
    + + plugin_path . 'src/admin-views/troubleshooting/ea-status/license-key.php'; + // if EA is not active, bail out of the rest of this + if ( $ea_active ) { + // current usage + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/ea-status/current-usage.php'; + // current status + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/ea-status/current-status.php'; + // server connection + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/ea-status/server-connection.php'; + // scheduler status + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/ea-status/scheduler-status.php'; + + if ( $show_third_party_accounts ) : + // eventbrite + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/ea-status/eventbrite.php'; + // meetup + include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/troubleshooting/ea-status/meetup.php'; + endif; + } + ?> +
    +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/current-status.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/current-status.php new file mode 100644 index 000000000..31bc99a1e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/current-status.php @@ -0,0 +1,41 @@ + $status_icons An array of icons for the EA Status table. + * @param \Tribe__Main $main An instance of the main class of Tribe Common. + * + */ + +$icon = 'success'; +$notes = ' '; +$message = esc_html_x( 'Imports Enabled in Settings', '', 'tribe-common' ); +$disabled = tribe_get_option( 'tribe_aggregator_disable', false ); + +if ( $disabled ) { + $icon = 'error'; + $message = _x( 'Imports disabled in Settings', '', 'tribe-common' ); + $settings_url = Tribe__Settings::instance()->get_url( array( 'tab' => 'imports' ) ); + $notes = sprintf( + '%2$s', + esc_url( $settings_url ), + _x( 'Edit Import Settings', '','tribe-common' ) + ); +} +?> + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/current-usage.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/current-usage.php new file mode 100644 index 000000000..d87bf7de9 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/current-usage.php @@ -0,0 +1,42 @@ +get_limit( 'import' ); +$import_available = $service->get_limit_remaining(); +$import_count = $service->get_limit_usage(); +$icon = 'success'; +$notes = ' '; + +if ( 0 === $import_limit || $import_count >= $import_limit ) { + $icon = 'error'; + $notes = esc_html__( 'You have reached your daily import limit. Scheduled imports will be paused until tomorrow.', 'tribe-common' ); +} elseif ( $import_count / $import_limit >= 0.8 ) { + $icon = 'warning'; + $notes = esc_html__( 'You are approaching your daily import limit. You may want to adjust your Scheduled Import frequencies.', 'tribe-common' ); +} + +$message = sprintf( // import count and limit + _n( '%1$d import used out of %2$d available today', '%1$d imports used out of %2$d available today', $import_count, 'tribe-common' ), + intval( $import_count ), + intval( $import_limit ) +); +?> + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/eventbrite.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/eventbrite.php new file mode 100644 index 000000000..98b683b9c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/eventbrite.php @@ -0,0 +1,48 @@ + + + + + + + +api( 'origins' )->is_oauth_enabled( 'eventbrite' ) ) { + if ( ! tribe( 'events-aggregator.settings' )->has_eb_security_key() ) { + $icon = 'warning'; + $message = __( 'You have not connected Event Aggregator to Eventbrite', 'tribe-common' ); + $eventbrite_auth_url = Tribe__Events__Aggregator__Record__Eventbrite::get_auth_url( + [ 'back' => 'settings' ] + ); + $notes = '' . esc_html_x( 'Connect to Eventbrite', 'link for connecting eventbrite', 'tribe-common' ) . ''; + } + } else { + $icon = 'warning'; + $message = __( 'Limited connectivity with Eventbrite', 'tribe-common' ); + $notes = esc_html__( 'The service has disabled oAuth. Some types of events may not import.', 'tribe-common' ); + } +?> + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/license-key.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/license-key.php new file mode 100644 index 000000000..0f2930152 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/license-key.php @@ -0,0 +1,54 @@ +offsetExists( 'events-aggregator.main' ) ) { + return; +}; + +if ( tribe( 'events-aggregator.main' )->is_service_active() ) { + $icon = 'success'; + $message = __( 'Your license is valid', 'tribe-common' ); + $ea_active = true; +} else { + $service_status = tribe( 'events-aggregator.service' )->api()->get_error_code(); + + $icon = 'error'; + if ( 'core:aggregator:invalid-service-key' == $service_status ) { + $message = __( 'You do not have a license', 'tribe-common' ); + $notes = ''; + $notes .= esc_html__( 'Buy Event Aggregator to access more event sources and automatic imports!', 'tribe-common' ); + $notes .= ''; + } else { + $message = __( 'Your license is invalid', 'tribe-common' ); + $notes = '' . esc_html__( 'Check your license key', 'tribe-common' ) . ''; + } +} +?> + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/meetup.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/meetup.php new file mode 100644 index 000000000..4eaad6822 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/meetup.php @@ -0,0 +1,39 @@ +api( 'origins' )->is_oauth_enabled( 'meetup' ) ) { + if ( ! tribe( 'events-aggregator.settings' )->has_meetup_security_key() ) { + $icon = 'warning'; + $message = __( 'You have not connected Event Aggregator to Meetup', 'tribe-common' ); + $meetup_auth_url = Tribe__Events__Aggregator__Record__Meetup::get_auth_url( [ 'back' => 'settings' ] ); + $notes = '' . esc_html_x( 'Connect to Meetup', 'link for connecting meetup', 'tribe-common' ) . ''; + } +} else { + $icon = 'warning'; + $message = __( 'Limited connectivity with Meetup', 'tribe-common' ); + $notes = esc_html__( 'The service has disabled oAuth. Some types of events may not import.', 'tribe-common' ); +} +?> + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/scheduler-status.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/scheduler-status.php new file mode 100644 index 000000000..95adb99ed --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/scheduler-status.php @@ -0,0 +1,33 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/server-connection.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/server-connection.php new file mode 100644 index 000000000..8c5fc41db --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/ea-status/server-connection.php @@ -0,0 +1,55 @@ + + + + + + + +api()->domain; + $up = tribe( 'events-aggregator.service' )->get( 'status/up' ); + + if ( ! $up || is_wp_error( $up ) ) { + $icon = 'error'; + /* translators: %s: Event Aggregator Server URL */ + $message = sprintf( __( 'Not connected to %s', 'tribe-common' ), $ea_server ); + $notes = esc_html__( 'The server is not currently responding', 'tribe-common' ); + } elseif ( is_object( $up ) && is_object( $up->data ) && isset( $up->data->status ) && 400 <= $up->data->status ) { + // this is a rare condition that should never happen + // An example case: the route is not defined on the EA server + $icon = 'warning'; + + /* translators: %s: Event Aggregator Server URL */ + $message = sprintf( __( 'Not connected to %s', 'tribe-common' ), $ea_server ); + $notes = __( 'The server is responding with an error:', 'tribe-common' ); + $notes .= '
    ';
    +		$notes  .= esc_html( $up->message );
    +		$notes  .= '
    '; + } else { + /* translators: %s: Event Aggregator Server URL */ + $message = sprintf( __( 'Connected to %s', 'tribe-common' ), $ea_server ); + } +?> + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/event-log.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/event-log.php new file mode 100644 index 000000000..a41f57a00 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/event-log.php @@ -0,0 +1,18 @@ +display_log(); +?> +
    +

    + +

    +
    + +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/first-steps.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/first-steps.php new file mode 100644 index 000000000..90f8cb536 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/first-steps.php @@ -0,0 +1,55 @@ + +
    +

    + +

    +
    + +
    +
    +
    + <?php esc_attr_e( 'lightbulb icon', 'tribe-common' ); ?> +
    +
    +
    + +
    +
    + ' . esc_html__( 'View article', 'tribe-common' ) . ''; + echo sprintf( __( 'Most issues are caused by conflicts with the theme or other plugins. Follow these steps as a first point of action. %s', 'tribe-common' ), $link ); + ?> +
    +
    +
    + +
    +
    + <?php esc_attr_e( 'lightbulb icon', 'tribe-common' ); ?> +
    +
    +
    + +
    +
    + ' . esc_html__( 'View article', 'tribe-common' ) . ''; + echo sprintf( __( 'Providing the details of your calendar plugin and settings (located below) helps our support team troubleshoot an issue faster. %s', 'tribe-common' ), $link ); + ?> +
    +
    +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/footer-logo.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/footer-logo.php new file mode 100644 index 000000000..138c6491f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/footer-logo.php @@ -0,0 +1,14 @@ + + + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/introduction.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/introduction.php new file mode 100644 index 000000000..02c7744e7 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/introduction.php @@ -0,0 +1,31 @@ + +
    + admin_notice( 'troubleshooting' ); + ?> +
    + <?php esc_attr_e( 'The Events Calendar brand logo', 'tribe-common' ); ?> +

    +

    +
    +
    + + +
    + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/notice.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/notice.php new file mode 100644 index 000000000..63d98076d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/notice.php @@ -0,0 +1,20 @@ +' . esc_html__( 'Help page?', 'tribe-common' ) . ''; +?> +
    +
    + +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/recent-template-changes.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/recent-template-changes.php new file mode 100644 index 000000000..c46054380 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/recent-template-changes.php @@ -0,0 +1,16 @@ + +

    + +

    +
    + +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/support-cta.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/support-cta.php new file mode 100644 index 000000000..b7bd7a646 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/support-cta.php @@ -0,0 +1,31 @@ + +
    + <?php esc_attr_e( 'Graphic with an electrical plug and gears', 'tribe-common' ); ?> + +
    +
    + +
    + +
    + +
    + +
    + + + +
    +
    +
    \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/system-information.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/system-information.php new file mode 100644 index 000000000..de1459bef --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/troubleshooting/system-information.php @@ -0,0 +1,42 @@ +formattedSupportStats(); +$optin_key = ! empty( get_option( $support::$option_key ) ); +?> +
    +
    +

    + +

    +

    + +

    +
    + /> + +
    + + + +

    +
    + +
    + +
    + +
    + +
    +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields.php new file mode 100644 index 000000000..6cc1cbe73 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields.php @@ -0,0 +1,43 @@ + $fields_container_classes (optional) HTML classes used for the form element + * @var Widget_Abstract $widget_obj An instance of the widget abstract. + * @var array $fields An array of admin fields to display in the widget form. + * + * @version 4.12.18 + */ + +use Tribe\Widget\Widget_Abstract; + +$default_classes = [ + 'tribe-widget-fields' +]; + +$classes = array_merge( $default_classes, $this->get( 'fields_container_classes', [] ) ); +?> + +
    +> + template( "widgets/components/fields/{$field['type']}", $field ); + + // Sets the current field for possible usage inside of the entry point. + $this->set_values( [ 'field' => $field ] ); + + // Allow fields that were not registered as components to have something loaded. + $this->do_entry_point( "field-{$field['type']}" ); + } + ?> +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/checkbox.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/checkbox.php new file mode 100644 index 000000000..741e38837 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/checkbox.php @@ -0,0 +1,42 @@ + +
    +> + + /> + +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/dropdown.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/dropdown.php new file mode 100644 index 000000000..9b0335c0c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/dropdown.php @@ -0,0 +1,53 @@ +> $options An array of options in the format + * [ + * 'value => string|int, + * 'text' => string + * ] + */ + +?> +
    +> + + +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/fieldset.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/fieldset.php new file mode 100644 index 000000000..3b80e5133 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/fieldset.php @@ -0,0 +1,39 @@ + $children Child elements for the fieldset. + */ + +use Tribe__Utils__Array as Arr; + +$fieldset_classes = array_merge( [ 'tribe-widget-form-control', 'tribe-widget-form-control--fieldset' ], Arr::list_to_array( $classes, ' ' ) ); + +?> +
    + +> + + + + + template( "widgets/components/fields", [ 'fields' => $children ] ); ?> +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/number.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/number.php new file mode 100644 index 000000000..222c35692 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/number.php @@ -0,0 +1,47 @@ + +
    +> + + +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/radio.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/radio.php new file mode 100644 index 000000000..2c0e36127 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/radio.php @@ -0,0 +1,43 @@ + +
    +> + + /> + +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/section.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/section.php new file mode 100644 index 000000000..2b18501ae --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/section.php @@ -0,0 +1,40 @@ + $children Child elements for the section. + */ + +use Tribe__Utils__Array as Arr; + +$section_classes = array_merge( [ 'tribe-widget-form-control', 'tribe-widget-form-control--section' ], Arr::list_to_array( $classes, ' ' ) ); + +?> +
    + +> + + . ?> +

    + + + template( "widgets/components/fields", [ 'fields' => $children ] ); ?> +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/text.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/text.php new file mode 100644 index 000000000..5abb90f54 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/fields/text.php @@ -0,0 +1,41 @@ + +
    +> + + +
    diff --git a/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/form.php b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/form.php new file mode 100644 index 000000000..a2a751962 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/admin-views/widgets/components/form.php @@ -0,0 +1,31 @@ + $form_classes (optional) HTML classes used for the form element + * @var array $admin_fields Fields to be rendered. + * + * @version 4.12.18 + */ + +$default_classes = [ + 'tribe-widget-form' +]; + +$classes = array_merge( $default_classes, $this->get( 'form_classes', [] ) ); +?> + +
    +> + template( 'widgets/components/fields', [ 'fields' => $admin_fields ] ); ?> +
    + diff --git a/wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Admin__Notice__Archive_Slug_Conflict.php b/wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Admin__Notice__Archive_Slug_Conflict.php new file mode 100644 index 000000000..df5ffd128 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Admin__Notice__Archive_Slug_Conflict.php @@ -0,0 +1,28 @@ +plugin_path . 'vendor/freemius/start.php'; + } + + /** + * Initialize the Fremius instance using their methods + * + * @since 4.9.5 + * @depecated 5.1.0 + * + * @param string $slug Slug of the plugin + * @param string $id ID in Freemius + * @param string $key Your public key in freemius + * @param array $args Array of extra arguments to register on Freemius + * + * @return Freemius + */ + public function initialize( $slug, $id, $key, array $args = [] ) { + $defaults = [ + 'id' => null, + 'slug' => null, + 'type' => 'plugin', + 'public_key' => null, + 'is_premium' => false, + 'has_addons' => false, + 'has_paid_plans' => false, + ]; + $args = wp_parse_args( $args, $defaults ); + + // These three values can't be overwritten + $args['slug'] = $slug; + $args['id'] = $id; + $args['public_key'] = $key; + + $freemius = fs_dynamic_init( $args ); + + $this->instances[ $slug ] = $freemius; + + return $freemius; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Plugin_Download_Notice.php b/wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Plugin_Download_Notice.php new file mode 100644 index 000000000..9d7e5a748 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/deprecated/Tribe__Plugin_Download_Notice.php @@ -0,0 +1,4 @@ +meta_query = tribe_filter_meta_query( + * $args['meta_query'], + * array( 'key' => '/_Event(Start|End)Date(UTC)/' ) + * ); + * + * @since 4.9.5 + * + * @param array $meta_query The meta query array to filter, usually the content of the `$query->meta_query` + * property. + * @param array $where A map of criteria for the filtering that will be applied with OR logic: if an + * entry matches even one then it will be removed. If the value of the comparison is a + * regular expression, with fences, then it will be used for a `preg_match` check against + * the key, not a simple comparison. + * + * @return array The filtered meta query array. + */ + function tribe_filter_meta_query( array $meta_query, array $where ) { + $filtered = []; + + foreach ( $meta_query as $key => $entry ) { + if ( ! is_array( $entry ) ) { + $filtered[ $key ] = $entry; + continue; + } + + foreach ( $where as $where_key => $where_value ) { + if ( isset( $entry[ $where_key ] ) ) { + if ( tribe_is_regex( $where_value ) ) { + $var = $entry[ $where_key ]; + if ( preg_match( $where_value, $var ) ) { + continue 2; + } + } elseif ( $entry[ $where_key ] == $where_value ) { + continue 2; + } + } + } + $filtered[ $key ] = $entry; + } + + return $filtered; + } +} + +if ( ! function_exists( 'tribe_normalize_orderby' ) ) { + + /** + * Normalizes an `orderby` string or array to an map of keys and orders. + * + * Note the function and the variables use the "orderby" (no spaces) name to stick + * with the WordPress query standard. + * + * @since 4.12.6 + * + * @param string|array $orderby Either an `orderby` key, a list of `orderby` + * keys or a map of `orderby` clauses. + * @param string $order The default order that should be applied to `orderby` entries that + * lack one. + * + * @return array The normalized `orderby` array, in the format supported by WordPress queries: + * `[ => , => , ... ]`. + */ + function tribe_normalize_orderby( $orderby, $order = 'ASC' ) { + // Make the `orderby` part an array. + $orderby_arr = (array) $orderby; + $normalized = []; + + foreach ( $orderby_arr as $by_key => $direction ) { + if ( empty( $direction ) ) { + continue; + } + + if ( is_numeric( $by_key ) ) { + // It's an entry where the key is just listed, relying on the default order. + $by_key = $direction; + $direction = $order; + } + + $normalized[ $by_key ] = $direction; + } + + return $normalized; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/date.php b/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/date.php new file mode 100644 index 000000000..d68562da9 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/date.php @@ -0,0 +1,453 @@ +ID, '_EventAllDay', true ) ) ) { + return; + } + + // @todo [BTRIA-584]: Move timezones to Common. + if ( class_exists( 'Tribe__Events__Timezones' ) ) { + $start_date = Tribe__Events__Timezones::event_start_timestamp( $event->ID, $timezone ); + } + + if ( '' == $date_format ) { + $date_format = tribe_get_time_format(); + } + + /** + * Filters the returned event start time + * + * @param string $start_date + * @param WP_Post $event + */ + return apply_filters( 'tribe_get_start_time', tribe_format_date( $start_date, false, $date_format ), $event ); + } +} + +if ( ! function_exists( 'tribe_get_end_time' ) ) { + /** + * End Time + * + * Returns the event end time + * + * @category Events + * + * @param int $event (optional) + * @param string $date_format Allows date and time formating using standard php syntax (http://php.net/manual/en/function.date.php) + * @param string $timezone Timezone in which to present the date/time (or default behaviour if not set) + * + * @return string|null Time + */ + function tribe_get_end_time( $event = null, $date_format = '', $timezone = null ) { + if ( is_null( $event ) ) { + global $post; + $event = $post; + } + + if ( is_numeric( $event ) ) { + $event = get_post( $event ); + } + + if ( ! is_object( $event ) ) { + return; + } + + if ( Tribe__Date_Utils::is_all_day( get_post_meta( $event->ID, '_EventAllDay', true ) ) ) { + return; + } + + // @todo [BTRIA-584]: Move timezones to Common. + if ( class_exists( 'Tribe__Events__Timezones' ) ) { + $end_date = Tribe__Events__Timezones::event_end_timestamp( $event->ID, $timezone ); + } + + if ( '' == $date_format ) { + $date_format = tribe_get_time_format(); + } + + /** + * Filters the returned event end time + * + * @param string $end_date + * @param WP_Post $event + */ + return apply_filters( 'tribe_get_end_time', tribe_format_date( $end_date, false, $date_format ), $event ); + } +} + +if ( ! function_exists( 'tribe_get_start_date' ) ) { + /** + * Start Date + * + * Returns the event start date and time + * + * @category Events + * + * @since 4.7.6 Deprecated the $timezone parameter. + * + * @param int $event (optional) + * @param bool $display_time If true shows date and time, if false only shows date + * @param string $date_format Allows date and time formating using standard php syntax (http://php.net/manual/en/function.date.php) + * @param string $timezone Deprecated. Timezone in which to present the date/time (or default behaviour if not set) + * + * @return string|null Date + */ + function tribe_get_start_date( $event = null, $display_time = true, $date_format = '', $timezone = null ) { + static $cache_var_name = __FUNCTION__; + + if ( is_null( $event ) ) { + global $post; + $event = $post; + } + + if ( is_numeric( $event ) ) { + $event = get_post( $event ); + } + + if ( ! is_object( $event ) ) { + return ''; + } + + $start_dates = tribe_get_var( $cache_var_name, [] ); + $cache_key = "{$event->ID}:{$display_time}:{$date_format}:{$timezone}"; + + if ( ! isset( $start_dates[ $cache_key ] ) ) { + if ( Tribe__Date_Utils::is_all_day( get_post_meta( $event->ID, '_EventAllDay', true ) ) ) { + $display_time = false; + } + + // @todo [BTRIA-584]: Move timezones to Common. + if ( class_exists( 'Tribe__Events__Timezones' ) ) { + $start_date = Tribe__Events__Timezones::event_start_timestamp( $event->ID, $timezone ); + } else { + return null; + } + + $start_dates[ $cache_key ] = tribe_format_date( $start_date, $display_time, $date_format ); + tribe_set_var( $cache_var_name, $start_dates ); + } + + /** + * Filters the returned event start date and time + * + * @param string $start_date + * @param WP_Post $event + */ + return apply_filters( 'tribe_get_start_date', $start_dates[ $cache_key ], $event ); + } +} + +if ( ! function_exists( 'tribe_get_end_date' ) ) { + /** + * End Date + * + * Returns the event end date + * + * @category Events + * + * @since 4.7.6 Deprecated the $timezone parameter. + * + * @param int $event (optional) + * @param bool $display_time If true shows date and time, if false only shows date + * @param string $date_format Allows date and time formating using standard php syntax (http://php.net/manual/en/function.date.php) + * @param string $timezone Deprecated. Timezone in which to present the date/time (or default behaviour if not set) + * + * @return string|null Date + */ + function tribe_get_end_date( $event = null, $display_time = true, $date_format = '', $timezone = null ) { + static $cache_var_name = __FUNCTION__; + + if ( is_null( $event ) ) { + global $post; + $event = $post; + } + + if ( is_numeric( $event ) ) { + $event = get_post( $event ); + } + + if ( ! is_object( $event ) ) { + return ''; + } + + $end_dates = tribe_get_var( $cache_var_name, [] ); + $cache_key = "{$event->ID}:{$display_time}:{$date_format}:{$timezone}"; + + if ( ! isset( $end_dates[ $cache_key ] ) ) { + if ( Tribe__Date_Utils::is_all_day( get_post_meta( $event->ID, '_EventAllDay', true ) ) ) { + $display_time = false; + } + + // @todo [BTRIA-584]: Move timezones to Common. + if ( class_exists( 'Tribe__Events__Timezones' ) ) { + $end_date = Tribe__Events__Timezones::event_end_timestamp( $event->ID ); + } else { + return null; + } + + $end_dates[ $cache_key ] = tribe_format_date( $end_date, $display_time, $date_format ); + tribe_set_var( $cache_var_name, $end_dates ); + } + + /** + * Filters the returned event end date and time + * + * @param string $end_date + * @param WP_Post $event + */ + return apply_filters( 'tribe_get_end_date', $end_dates[ $cache_key ], $event ); + } +} + +if ( ! function_exists( 'tribe_normalize_manual_utc_offset' ) ) { + /** + * Normalizes a manual UTC offset string. + * + * @param string $utc_offset + * + * @return string The normalized manual UTC offset. + * e.g. 'UTC+3', 'UTC-4.5', 'UTC+2.75' + */ + function tribe_normalize_manual_utc_offset( $utc_offset ) { + $matches = []; + if ( preg_match( '/^UTC\\s*((\\+|-)(\\d{1,2}))((:|.|,)(\\d{1,2})+)*/ui', $utc_offset, $matches ) ) { + if ( ! empty( $matches[6] ) ) { + $minutes = $matches[6] > 10 && $matches[6] <= 60 ? $minutes = $matches[6] / 60 : $matches[6]; + $minutes = str_replace( '0.', '', $minutes ); + } + + $utc_offset = sprintf( 'UTC%s%s', $matches[1], ! empty( $minutes ) ? '.' . $minutes : '' ); + + } + + return $utc_offset; + } +} + +if ( ! function_exists( 'tribe_wp_locale_weekday' ) ) { + /** + * Return a WP Locale weekday in the specified format + * + * @param int|string $weekday Day of week + * @param string $format Weekday format: full, weekday, initial, abbreviation, abbrev, abbr, short + * + * @return string + */ + function tribe_wp_locale_weekday( $weekday, $format ) { + return Tribe__Date_Utils::wp_locale_weekday( $weekday, $format ); + } +} + +if ( ! function_exists( 'tribe_wp_locale_month' ) ) { + /** + * Return a WP Locale month in the specified format + * + * @param int|string $month Month of year + * @param string $format month format: full, month, abbreviation, abbrev, abbr, short + * + * @return string + */ + function tribe_wp_locale_month( $month, $format ) { + return Tribe__Date_Utils::wp_locale_month( $month, $format ); + } +} + +if ( ! function_exists( 'tribe_is_site_using_24_hour_time' ) ) { + /** + * Handy function for easily detecting if this site's using the 24-hour time format. + * + * @since 4.7.1 + * + * @return boolean + */ + function tribe_is_site_using_24_hour_time() { + $time_format = get_option( 'time_format' ); + return strpos( $time_format, 'H' ) !== false; + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/general.php b/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/general.php new file mode 100644 index 000000000..f0ccd1334 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/general.php @@ -0,0 +1,875 @@ +plugin_path ) ? $origin->plugin_path : $origin->pluginPath; + } else { + $plugin_path = dirname( dirname( dirname( dirname( dirname( __FILE__ ) ) ) ) ); + } + + if ( ! isset( $_plugin_url[ $plugin_path ] ) ) { + $_plugin_url[ $plugin_path ] = trailingslashit( plugins_url( basename( $plugin_path ), $plugin_path ) ); + } + $plugin_base_url = $_plugin_url[ $plugin_path ]; + + $extension = pathinfo( $resource, PATHINFO_EXTENSION ); + $resource_path = $root_dir; + + if ( is_null( $resource_path ) ) { + $resources_path = 'src/resources/'; + switch ( $extension ) { + case 'css': + $resource_path = $resources_path . 'css/'; + break; + case 'js': + $resource_path = $resources_path . 'js/'; + break; + case 'scss': + $resource_path = $resources_path . 'scss/'; + break; + default: + $resource_path = $resources_path; + break; + } + } + + $url = $plugin_base_url . $resource_path . $resource; + + /** + * Filters the resource URL + * + * @param $url + * @param $resource + */ + $url = apply_filters( 'tribe_resource_url', $url, $resource ); + + /** + * Deprecated the tribe_events_resource_url filter in 4.0 in favor of tribe_resource_url. Remove in 5.0 + */ + $url = apply_filters( 'tribe_events_resource_url', $url, $resource ); + + if ( $echo ) { + echo $url; + } + + return $url; + } +}//end if + +if ( ! function_exists( 'tribe_multi_line_remove_empty_lines' ) ) { + /** + * helper function to remove empty lines from multi-line strings + * + * @category Events + * @link http://stackoverflow.com/questions/709669/how-do-i-remove-blank-lines-from-text-in-php + * + * @param string $multi_line_string a multiline string + * + * @return string the same string without empty lines + */ + function tribe_multi_line_remove_empty_lines( $multi_line_string ) { + return preg_replace( "/^\n+|^[\t\s]*\n+/m", '', $multi_line_string ); + } +}//end if + +if ( ! function_exists( 'tribe_get_date_format' ) ) { + /** + * Get the date format specified in the tribe options + * + * @category Events + * @param bool $with_year + * + * @return mixed + */ + function tribe_get_date_format( $with_year = false ) { + if ( $with_year ) { + $format = tribe_get_date_option( 'dateWithYearFormat', get_option( 'date_format' ) ); + } else { + $format = tribe_get_date_option( 'dateWithoutYearFormat', 'F j' ); + } + + return apply_filters( 'tribe_date_format', $format ); + } +}//end if + +if ( ! function_exists( 'tribe_get_datetime_format' ) ) { + /** + * Get the Datetime Format + * + * @category Events + * + * @param bool $with_year + * + * @return mixed|void + */ + function tribe_get_datetime_format( $with_year = false ) { + + $raw_separator = tribe_get_option( 'dateTimeSeparator', ' @ ' ); + $separator = (array) str_split( $raw_separator ); + + if ( empty( $raw_separator ) ) { + /** + * Filterable fallback for when the dateTimeSeparator is an empty string. Defaults to a space. + * + * @since 4.5.6 + * + * @param string $fallback The string to use as the fallback. + * @param string $raw_separator The raw value of the dateTimeSeparator option. + * @return string + */ + $separator[0] = apply_filters( 'tribe_empty_datetime_separator_fallback', ' ', $raw_separator ); + } + + $format = tribe_get_date_format( $with_year ); + $format .= ( ! empty( $separator ) ? '\\' : '' ) . implode( '\\', $separator ); + $format .= get_option( 'time_format' ); + + return apply_filters( 'tribe_datetime_format', $format ); + } +}//end if + +if ( ! function_exists( 'tribe_get_time_format' ) ) { + /** + * Get the time format + * + * @category Events + * + * @return mixed|void + */ + function tribe_get_time_format( ) { + static $cache_var_name = __FUNCTION__; + + $format = tribe_get_var( $cache_var_name, null ); + + if ( ! $format ) { + $format = get_option( 'time_format' ); + tribe_set_var( $cache_var_name, $format ); + } + + return apply_filters( 'tribe_time_format', $format ); + } +}//end if + +if ( ! function_exists( 'tribe_get_days_between' ) ) { + /** + * Accepts two dates and returns the number of days between them + * + * @category Events + * + * @param string $start_date + * @param string $end_date + * @param string|bool $day_cutoff + * + * @return int + * @see Tribe__Date_Utils::date_diff() + **/ + function tribe_get_days_between( $start_date, $end_date, $day_cutoff = '00:00' ) { + if ( $day_cutoff === false ) { + $day_cutoff = '00:00'; + } elseif ( $day_cutoff === true ) { + $day_cutoff = tribe_get_option( 'multiDayCutoff', '00:00' ); + } + + $start_date = new DateTime( $start_date ); + if ( $start_date < new DateTime( $start_date->format( 'Y-m-d ' . $day_cutoff ) ) ) { + $start_date->modify( '-1 day' ); + } + $end_date = new DateTime( $end_date ); + if ( $end_date <= new DateTime( $end_date->format( 'Y-m-d ' . $day_cutoff ) ) ) { + $end_date->modify( '-1 day' ); + } + + return Tribe__Date_Utils::date_diff( $start_date->format( 'Y-m-d ' . $day_cutoff ), $end_date->format( 'Y-m-d ' . $day_cutoff ) ); + } +}//end if + +if ( ! function_exists( 'tribe_prepare_for_json' ) ) { + /** + * Function to prepare content for use as a value in a json encoded string destined for storage on a html data attribute. + * Hence the double quote fun, especially in case they pass html encoded " along. Any of those getting through to the data att will break jQuery's parseJSON method. + * 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. + * + * @category Events + * + * @param $string + * + * @return string + */ + function tribe_prepare_for_json( $string ) { + $value = trim( htmlspecialchars( $string, ENT_QUOTES, 'UTF-8' ) ); + $value = str_replace( '"', '"', $value ); + // &#013; is same as \r and JSON strings should be a single line not multiple lines. + $removable_values = [ '\r', '\n', '\t', '&#013;' ]; + $value = str_replace( $removable_values, '', $value ); + + return $value; + } +}//end if + +if ( ! function_exists( 'tribe_prepare_for_json_deep' ) ) { + /** + * Recursively iterate through an nested structure, calling + * tribe_prepare_for_json() on all scalar values + * + * @category Events + * + * @param mixed $value The data to be cleaned + * + * @return mixed The clean data + */ + function tribe_prepare_for_json_deep( $value ) { + if ( is_array( $value ) ) { + $value = array_map( 'tribe_prepare_for_json_deep', $value ); + } elseif ( is_object( $value ) ) { + $vars = get_object_vars( $value ); + foreach ( $vars as $key => $data ) { + $value->{$key} = tribe_prepare_for_json_deep( $data ); + } + } elseif ( is_string( $value ) ) { + $value = tribe_prepare_for_json( $value ); + } + return $value; + } +}//end if + +if ( ! function_exists( 'tribe_the_notices' ) ) { + /** + * Generates html for any notices that have been queued on the current view + * + * @category Events + * + * @param bool $echo Whether or not to echo the notices html + * + * @return void | string + * @see Tribe__Notices::get() + **/ + function tribe_the_notices( $echo = true ) { + $notices = Tribe__Notices::get(); + + $html = ! empty( $notices ) ? '
    • ' . implode( '
    • ', $notices ) . '
    ' : ''; + + /** + * Deprecated the tribe_events_the_notices filter in 4.0 in favor of tribe_the_notices. Remove in 5.0 + */ + $the_notices = apply_filters( 'tribe_events_the_notices', $html, $notices ); + + /** + * filters the notices HTML + */ + $the_notices = apply_filters( 'tribe_the_notices', $html, $notices ); + if ( $echo ) { + echo $the_notices; + } else { + return $the_notices; + } + } +}//end if + +if ( ! function_exists( 'tribe_is_bot' ) ) { + /** + * tribe_is_bot checks if the visitor is a bot and returns status + * + * @category Events + * + * @return bool + */ + function tribe_is_bot() { + // get the current user agent + $user_agent = strtolower( $_SERVER['HTTP_USER_AGENT'] ); + + // check if the user agent is empty since most browsers identify themselves, so possibly a bot + if ( empty( $user_agent ) ) { + return apply_filters( 'tribe_is_bot_status', true, $user_agent, null ); + } + + // declare known bot user agents (lowercase) + $user_agent_bots = (array) apply_filters( + 'tribe_is_bot_list', [ + 'bot', + 'slurp', + 'spider', + 'crawler', + 'yandex', + ] + ); + + foreach ( $user_agent_bots as $bot ) { + if ( stripos( $user_agent, $bot ) !== false ) { + return apply_filters( 'tribe_is_bot_status', true, $user_agent, $bot ); + } + } + + // we think this is probably a real human + return apply_filters( 'tribe_is_bot_status', false, $user_agent, null ); + } +}//end if + +if ( ! function_exists( 'tribe_count_hierarchical_keys' ) ) { + /** + * Count keys in a hierarchical array + * + * @param $value + * @param $key + * @todo - remove, only used in the meta walker + */ + function tribe_count_hierarchical_keys( $value, $key ) { + global $tribe_count_hierarchical_increment; + $tribe_count_hierarchical_increment++; + } +}//end if + +if ( ! function_exists( 'tribe_count_hierarchical' ) ) { + /** + * Count items in a hierarchical array + * + * @param array $walk + * + * @return int + * @todo - remove, only used in the meta walker + */ + function tribe_count_hierarchical( array $walk ) { + global $tribe_count_hierarchical_increment; + $tribe_count_hierarchical_increment = 0; + array_walk_recursive( $walk, 'tribe_count_hierarchical_keys' ); + + return $tribe_count_hierarchical_increment; + } +}//end if + +if ( ! function_exists( 'tribe_get_mobile_breakpoint' ) ) { + /** + * Mobile breakpoint + * + * Get the breakpoint for switching to mobile styles. Defaults to 768. + * + * @category Events + * + * @param int $default The default width (in pixels) at which to break into mobile styles + * + * @return int + */ + function tribe_get_mobile_breakpoint( $default = 768 ) { + return apply_filters( 'tribe_events_mobile_breakpoint', $default ); + } +}//end if + +if ( ! function_exists( 'tribe_format_currency' ) ) { + /** + * Receives a float and formats it with a currency symbol + * + * @category Cost + * @param string $cost pricing to format + * @param null|int $post_id + * @param null|string $currency_symbol + * @param null|bool $reverse_position + * + * @return string + */ + function tribe_format_currency( $cost, $post_id = null, $currency_symbol = null, $reverse_position = null ) { + $post_id = Tribe__Main::post_id_helper( $post_id ); + + if ( empty( $currency_symbol ) ) { + $currency_symbol = tribe_get_option( 'defaultCurrencySymbol', '$' ); + + /** + * Filters the currency symbol that will be used to format the price, defaults + * to the one set in the options. + * + * This will only apply if the currency symbol was not passed as a parameter. + * + * @since 4.7.7 + * + * @param string $currency_symbol + * @param int $post_id + */ + $currency_symbol = apply_filters( 'tribe_currency_symbol', $currency_symbol, $post_id ); + } + + if ( null === $reverse_position ) { + /** + * Filters whether the currency symbol that will be used to format the price should be + * prefixed (`false`) or appended (`true`) to the price value. + * + * This will only apply if the currency symbol reverse position not passed as a parameter. + * + * @since 4.7.7 + * + * @param bool $reverse_position + * @param int $post_id + */ + $reverse_position = apply_filters( 'tribe_reverse_currency_position', (bool) $reverse_position, $post_id ); + } + + // if no currency position was passed and we're not looking at a particular event, + // let's get the default currency position + if ( null === $reverse_position && ! $post_id ) { + $reverse_position = tribe_get_option( 'reverseCurrencyPosition', false ); + } + + /** + * Add option to filter the cost value before is returned, allowing other providers to hook into it. + * + * @since 4.7.10 + * + * @param string $cost + * @param int $post_id + */ + $cost = apply_filters( 'tribe_currency_cost', $cost, $post_id ); + + $cost = $reverse_position + ? $cost . $currency_symbol + : $currency_symbol . $cost; + + /** + * Filter the entire formatted string returned. + * + * @since 4.14.9 + * + * @param string $cost + * @param int $post_id + */ + return apply_filters( 'tribe_currency_formatted', $cost, $post_id ); + } +}//end if + +if ( ! function_exists( 'tribe_get_date_option' ) ) { + /** + * Get a date option. + * + * Retrieve an option value taking care to escape it to preserve date format slashes. + * + * @category Events + * @param string $optionName Name of the option to retrieve. + * @param string $default Value to return if no such option is found. + * + * @return mixed Value of the option if found + */ + function tribe_get_date_option( $optionName, $default = '' ) { + $value = tribe_get_option( $optionName, $default ); + + return Tribe__Date_Utils::unescape_date_format($value); + } +} + +/** + * Shortcut for Tribe__Admin__Notices::register(), create a Admin Notice easily + * + * @param string $slug Slug to save the notice + * @param callable|string $callback A callable Method/Function to actually display the notice + * @param array $arguments Arguments to Setup a notice + * @param callable|null $active_callback An optional callback that should return bool values + * to indicate whether the notice should display or not. + * + * @return stdClass Which notice was registered + */ +function tribe_notice( $slug, $callback, $arguments = [], $active_callback = null ) { + return Tribe__Admin__Notices::instance()->register( $slug, $callback, $arguments, $active_callback ); +} + +/** + * Shortcut for Tribe__Admin__Notices::register_transient(), create a transient Admin Notice easily. + * + * A transient admin notice is a "fire-and-forget" admin notice that will display once registered and + * until dismissed (if dismissible) without need, on the side of the source code, to register it on each request. + * + * @param string $slug Slug to save the notice + * @param string $html The notice output HTML code + * @param array $arguments Arguments to Setup a notice + * @param int $expire After how much time (in seconds) the notice will stop showing. + * + * @return stdClass Which notice was registered + */ +function tribe_transient_notice( $slug, $html, $arguments = [], $expire = null ) { + $expire = null !== $expire ? (int) $expire : WEEK_IN_SECONDS; + + return Tribe__Admin__Notices::instance()->register_transient( $slug, $html, $arguments, $expire ); +} + +/** + * Removes a transient notice based on its slug. + * + * @since 4.7.7 + * + * @param string $slug + */ +function tribe_transient_notice_remove( $slug ) { + Tribe__Admin__Notices::instance()->remove_transient( $slug ); +} + +/** + * A quick internal way of sending errors using WP_Error + * + * @param string|array $indexes Which Error we are looking for + * @param array $context Gives the Error context + * @param array $sprintf Allows variables on the message + * + * @return WP_Error + */ +function tribe_error( $indexes, $context = [], $sprintf = [] ) { + return Tribe__Error::instance()->send( $indexes, $context, $sprintf ); +} + +/** + * Register a new error based on a Namespace + * + * @param string|array $indexes A list of the namespaces and last item should be the error name + * @param string $message What is going to be the message associate with this indexes + * + * @return boolean + */ +function tribe_register_error( $indexes, $message ) { + return Tribe__Error::instance()->register( $indexes, $message ); +} + +/** + * Shortcut for Tribe__Assets::register(), include a single asset + * + * @since 4.3 + * + * @param object $origin The main object for the plugin you are enqueueing the asset for. + * @param string $slug Slug to save the asset - passes through `sanitize_title_with_dashes()`. + * @param string $file The asset file to load (CSS or JS), including non-minified file extension. + * @param array $deps The list of dependencies or callable function that will return a list of dependencies. + * @param string|array|null $action The WordPress action(s) to enqueue on, such as `wp_enqueue_scripts`, + * `admin_enqueue_scripts`, or `login_enqueue_scripts`. + * @param array $arguments See `Tribe__Assets::register()` for more info. + * + * @return object|false The asset that got registered or false on error. + */ +function tribe_asset( $origin, $slug, $file, $deps = [], $action = null, $arguments = [] ) { + /** @var Tribe__Assets $assets */ + $assets = tribe( 'assets' ); + + return $assets->register( $origin, $slug, $file, $deps, $action, $arguments ); +} + +/** + * Shortcut for Tribe__Assets::enqueue() to include assets. + * + * @since 4.7 + * + * @param string|array $slug Slug to enqueue + */ +function tribe_asset_enqueue( $slug ) { + /** @var Tribe__Assets $assets */ + $assets = tribe( 'assets' ); + + $assets->enqueue( $slug ); +} + +/** + * Shortcut for Tribe__Assets::enqueue_group() include assets by groups. + * + * @since 4.7 + * + * @param string|array $group Which group(s) should be enqueued. + */ +function tribe_asset_enqueue_group( $group ) { + /** @var Tribe__Assets $assets */ + $assets = tribe( 'assets' ); + + $assets->enqueue_group( $group ); +} + +/** + * Function to include more the one asset, based on `tribe_asset` + * + * @since 4.3 + * @since 4.12.10 Added support for overriding arguments for individual assets. + * + * @param object $origin The main Object for the plugin you are enqueueing the script/style for + * @param array $assets { + * Indexed array, don't use any associative key. + * E.g.: [ 'slug-my-script', 'my/own/path.js', [ 'jquery' ] ] + * + * @type string $slug Slug to save the asset + * @type string $file Which file will be loaded, either CSS or JS + * @type array $deps (optional) Dependencies + * } + * @param string $action A WordPress hook that will automatically enqueue this asset once fired + * @param array $arguments Look at `Tribe__Assets::register()` for more info + * + * @return array Which Assets were registered + */ +function tribe_assets( $origin, $assets, $action = null, $arguments = [] ) { + $registered = []; + + foreach ( $assets as $asset ) { + if ( ! is_array( $asset ) ) { + continue; + } + + $slug = reset( $asset ); + if ( empty( $asset[1] ) ) { + continue; + } + + $file = $asset[1]; + $deps = ! empty( $asset[2] ) ? $asset[2] : []; + + // Support the asset having a custom action. + $asset_action = ! empty( $asset[3] ) ? $asset[3] : $action; + + // Support the asset having custom arguments and merge them with the original ones. + $asset_arguments = ! empty( $asset[4] ) ? array_merge( $arguments, $asset[4] ) : $arguments; + + $registered[] = tribe_asset( $origin, $slug, $file, $deps, $asset_action, $asset_arguments ); + + } + + return $registered; +} + +if ( ! function_exists( 'tribe_doing_frontend' ) ) { + /** + * Registers truthy or falsy callbacks on the filters used to detect if + * any frontend operation is being done for logged in users or not. + * + * @since 4.7.4 + * + * @param bool $doing_frontend Whether what is being done happens in the + * context of the frontend or not. + */ + function tribe_doing_frontend( $doing_frontend ) { + $callback = $doing_frontend ? '__return_true' : '__return_false'; + + add_filter( 'tribe_doing_frontend', $callback ); + } +} + +if ( ! function_exists( 'tribe_is_frontend' ) ) { + /** + * Whether we are currently performing a frontend operation or not. + * + * @since 4.6.2 + * + * @return bool + */ + function tribe_is_frontend() { + /** + * Whether we are currently performing a frontend operation or not. + * + * @since 4.6.2 + * + * @param bool $is_frontend + */ + return (bool) apply_filters( 'tribe_doing_frontend', false ); + } +} + +if ( ! function_exists( 'tribe_set_time_limit' ) ) { + /** + * Wrapper for set_time_limit to suppress errors + * + * @since 4.7.12 + * + * @param int $limit Time limit. + */ + function tribe_set_time_limit( $limit = 0 ) { + if ( + ! function_exists( 'set_time_limit' ) + && false !== strpos( ini_get( 'disable_functions' ), 'set_time_limit' ) + && ini_get( 'safe_mode' ) + ) { + return false; + } + + return @set_time_limit( $limit ); + } +} + +if ( ! function_exists( 'tribe_context' ) ) { + /** + * A wrapper function to get the singleton, immutable, global context object. + * + * Due to its immutable nature any method that would modify the context will return + * a clone of the context, not the original one. + * + * @since 4.9.5 + * + * @return Tribe__Context The singleton, immutable, global object instance. + */ + function tribe_context() { + $context = tribe( 'context' ); + + /** + * Filters the global context object. + * + * @since 4.9.5 + * + * @param Tribe__Context $context The singleton, immutable, global object instance. + */ + $context = apply_filters( 'tribe_global_context', $context ); + + return $context; + } +} + +if ( ! function_exists( 'tribe_cache' ) ) { + /** + * Returns the current Tribe Cache instance. + * + * @since 4.11.2 + * + * @return Tribe__Cache The current cache instance. + */ + function tribe_cache() { + return tribe( 'cache' ); + } +} + +if ( ! function_exists( 'tribe_asset_print_group' ) ) { + /** + * Prints the `script` (JS) and `link` (CSS) HTML tags associated with one or more assets groups. + * + * @since 4.12.6 + * + * @param string|array $group Which group(s) should be enqueued. + * @param bool $echo Whether to print the group(s) tag(s) to the page or not; default to `true` to + * print the HTML `script` (JS) and `link` (CSS) tags to the page. + * + * @return string The `script` and `link` HTML tags produced for the group(s). + */ + function tribe_asset_print_group( $group, $echo = true ) { + /** @var \Tribe__Assets $assets */ + $assets = tribe( 'assets' ); + + return $assets->print_group($group, $echo); + } +} + +if ( ! function_exists( 'tribe_doing_shortcode' ) ) { + /** + * Check whether a specific shortcode is being run. + * + * This is limited to only shortcodes registered with Tribe\Shortcode\Manager. + * + * @since 4.12.10 + * + * @param null|string $tag The shortcode tag name, or null to check if doing any shortcode. + * + * @return bool Whether the shortcode is currently being run. + */ + function tribe_doing_shortcode( $tag = null ) { + return tribe( 'shortcode.manager' )->is_doing_shortcode( $tag ); + } +} diff --git a/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/html.php b/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/html.php new file mode 100644 index 000000000..a113a9aae --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/html.php @@ -0,0 +1,225 @@ +get_classes(); +} + +/** + * Parses input values into a valid class html attribute to be used in the templates. + * + * @since 4.9.13 + * + * @param mixed $classes,... unlimited Any amount of params to be rendered as classes. + * + * @return void + */ +function tribe_classes() { + $element_classes = new Element_Classes( func_get_args() ); + echo $element_classes->get_attribute(); +} + +/** + * Parse input values into a valid array of attributes to be used in the templates. + * + * @since 4.12.3 + * + * @param mixed $attributes,... unlimited Any amount of params to be rendered as attributes. + * + * @return array An array of the parsed string attributes. + */ +function tribe_get_attributes() { + $element_attributes = new Element_Attributes( func_get_args() ); + return $element_attributes->get_attributes_array(); +} + +/** + * Parse input values into a valid html attributes to be used in the templates. + * + * @since 4.12.3 + * + * @param mixed $attributes,... unlimited Any amount of params to be rendered as attributes. + * + * @return void + */ +function tribe_attributes() { + $element_attributes = new Element_Attributes( func_get_args() ); + echo $element_attributes->get_attributes(); +} + +/** + * Get attributes for required fields. + * + * @deprecated 4.12.6 + * + * @since 4.10.0 + * + * @param boolean $required If the field is required. + * @param boolean $echo Whether to echo the string or return it. + * + * @return string|void If echo is false, returns $required_string. + */ +function tribe_required( $required, $echo = true ) { + if ( $required ) { + $required_string = 'required aria-required="true"'; + + if ( ! $echo ) { + return $required_string; + } else { + echo $required_string; + } + } +} + +/** + * Get string for required field labels. + * + * @since 4.10.0 + * + * @param boolean $required If the field is required. + * @param boolean $echo Whether to echo the string or return it. + * + * @return string|void If echo is false, returns $required_string. + */ +function tribe_required_label( $required, $echo = true ) { + if ( $required ) { + $required_string = '' + . esc_html_x( '(required)', 'The associated field is required.', 'tribe-common' ) + . ''; + + if ( ! $echo ) { + return $required_string; + } else { + echo $required_string; + } + } +} + +/** + * Get attributes for disabled fields. + * + * @deprecated 4.12.6 + * + * @since 4.10.0 + * + * @param boolean $disabled If the field is disabled. + * @param boolean $echo Whether to echo the string or return it. + * + * @return string|void If echo is false, returns $disabled_string. + */ +function tribe_disabled( $disabled, $echo = true ) { + if ( $disabled ) { + $disabled_string = 'disabled aria-disabled="true"'; + + if ( ! $echo ) { + return $disabled_string; + } else { + echo $disabled_string; + } + } +} + +/** + * Generates a string for the tribe-dependency attributes. + * + * @since 4.12.14 + * + * @param array $deps The passed array of dependencies. + * + * @return string $dependency The string of dependencies attributes to add to the input. + */ +function tribe_format_field_dependency( $deps ) { + // Sanity check. + if ( empty( $deps ) ) { + return ''; + } + + // Let's be case-insensitive! + $deps = array_combine( array_map( 'strtolower', array_keys( $deps ) ), $deps ); + + // No ID to hook to? Bail. + if ( empty( $deps['id'] ) ) { + return; + } + + $dependency = ''; + + $accepted = [ + 'id', + 'parent', + 'is', + 'is-not', + 'is-empty', + 'is-not-empty', + 'is-numeric', + 'is-not-numeric', + 'is-checked', + 'is-not-checked', + ]; + + $valid_deps = array_intersect_key( $deps, array_flip( $accepted ) ); + + foreach ( $valid_deps as $attr => $value ) { + // Attributes are always lower case. + $attr = strtolower( $attr ); + + // Handle the ID component. + if ( 'id' === $attr ) { + // Prepend a hash "#" if it's missing. + if ( '#' !== substr( $value, 0, 1 ) ) { + $value = '#' . $value; + } + + $dependency .= " data-depends=\"{$value}\""; + continue; + } + + // Handle the dependent parent component. + if ( 'parent' === $attr ) { + $dependency .= " data-dependent-parent=\"{$value}\""; + continue; + } + + // Handle boolean values. + if ( is_bool( $value ) ) { + if ( $value ) { + $dependency .= " data-condition-{$attr}"; + } else { + if ( 0 === stripos( $attr, 'is-not-' ) ) { + $attr = str_replace( 'is-not-', 'is-', $attr ); + } else { + $attr = str_replace( 'is-', 'is-not-', $attr ); + } + + $dependency .= " data-{$attr}"; + } + + continue; + } + + // Handle string and "empty" values + if( 0 === strlen( $value ) ) { + $dependency .= " data-condition-{$attr}"; + } else if ( 'is' === $attr ) { + $dependency .= " data-condition=\"{$value}\""; + } else if ( 'is-not' === $attr ) { + $dependency .= " data-condition-not=\"{$value}\""; + } + } + + return $dependency; +} diff --git a/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/post.php b/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/post.php new file mode 100644 index 000000000..11314248f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/functions/template-tags/post.php @@ -0,0 +1,100 @@ +=' ) ) { + $content = get_the_content( $more_link_text, $strip_teaser, $post ); + } else { + $content = get_the_content( $more_link_text, $strip_teaser ); + } + + $has_blocks = function_exists( 'has_blocks' ) && has_blocks( $content ); + // If blocks are present we need to run the content filter. + + if ( $has_blocks || ! doing_filter( 'the_content' ) ) { + /** + * Filters the post content. + * + * @since 0.71 of WordPress + * + * @param string $content Content of the current post. + */ + $content = apply_filters( 'the_content', $content ); + } + + $content = str_replace( ']]>', ']]>', $content ); + + $post = $previous_post; + + return $content; +} + +/** + * Prints the post content. + * + * @since 4.9.23 + * + * @global WP_Post $post Current post on the loop + * @global string $wp_version Which version of WordPress we are currently dealing with + * + * @param string $more_link_text Optional. Content for when there is more text. + * @param bool $strip_teaser Optional. Strip teaser content before the more text. Default is false. + * @param WP_Post|object|int $post_id Optional. WP_Post instance or Post ID/object. Default is null. + * + * @return void + */ +function tribe_the_content( $more_link_text = null, $strip_teaser = false, $post_id = null ) { + echo tribe_get_the_content( $more_link_text, $strip_teaser, $post_id ); +} + +/** + * Wrapper for post_class function that allows us to in-memory cache + * + * @since 4.11.0 + * + * @param string|string[] $class Space-separated string or array of class names to add to the class list. + * @param int|WP_Post $post Optional. Post ID or post object. + * + * @return string[] Array of class names. + */ +function tribe_get_post_class( $class, $post ) { + static $post_classes = []; + + if ( is_numeric( $post ) ) { + $post_id = $post; + } else { + $post_id = $post->ID; + } + + if ( ! isset( $post_classes[ $post_id ] ) ) { + $post_classes[ $post_id ] = get_post_class( [], $post ); + } + + if ( ! is_array( $class ) ) { + $class = explode( ' ', $class ); + } + + return array_merge( $class, $post_classes[ $post_id ] ); +} diff --git a/wp-content/plugins/the-events-calendar/common/src/functions/transient.php b/wp-content/plugins/the-events-calendar/common/src/functions/transient.php new file mode 100644 index 000000000..f74f53003 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/functions/transient.php @@ -0,0 +1,25 @@ + &$value ) { + if ( is_array( $value ) && isset( $merged [ $key ] ) && is_array( $merged [ $key ] ) ) { + $merged [ $key ] = tribe_array_merge_recursive( $merged [ $key ], $value ); + } else { + $merged [ $key ] = $value; + } + } + + return $merged; + } +} + + +if ( ! function_exists( 'tribe_register_plugin' ) ) { + /** + * Checks if this plugin has permission to run, if not it notifies the admin + * + * @param string $file_path Full file path to the base plugin file + * @param string $main_class The Main/base class for this plugin + * @param string $version The version + * @param array $classes_req Any Main class files/tribe plugins required for this to run + * @param array $dependencies an array of dependencies to check + */ + function tribe_register_plugin( $file_path, $main_class, $version, $classes_req = [], $dependencies = [] ) { + $tribe_dependency = tribe( Tribe__Dependency::class ); + $tribe_dependency->register_plugin( $file_path, $main_class, $version, $classes_req, $dependencies ); + } +} + +if ( ! function_exists( 'tribe_check_plugin' ) ) { + /** + * Checks if this plugin has permission to run, if not it notifies the admin + * + * @since 4.9 + * + * @param string $main_class The Main/base class for this plugin + * + * @return bool Indicates if plugin should continue initialization + */ + function tribe_check_plugin( $main_class ) { + + $tribe_dependency = Tribe__Dependency::instance(); + + return $tribe_dependency->check_plugin( $main_class ); + + } +} + +if ( ! function_exists( 'tribe_append_path' ) ) { + /** + * Append a path fragment to a URL preserving query arguments + * and fragments. + * + * @since 4.3 + * + * @param string $path The path to append to the existing, if any, one., e.g. `/some/path` + * + * @param string $url A full URL in the `http://example.com/?query=var#frag` format. + * + * @return mixed|string + */ + function tribe_append_path( $url, $path ) { + $path = trim( $path, '/' ); + + $query = @parse_url( $url, PHP_URL_QUERY ); + $frag = @parse_url( $url, PHP_URL_FRAGMENT ); + + if ( ! ( empty( $query ) && empty( $frag ) ) ) { + $url = str_replace( '?' . $query, '', $url ); + $url = str_replace( '#' . $frag, '', $url ); + $query = $query ? '?' . $query : ''; + $frag = $frag ? '#' . $frag : ''; + } + + $url = trailingslashit( esc_url_raw( trailingslashit( $url ) . $path ) ); + $url .= $query . $frag; + + return $url; + } +} + +if ( ! function_exists( 'tribe_exit' ) ) { + /** + * Filterable `die` wrapper. + * + * @param string $status + * + * @return void|mixed Depending on the handler this function might return + * a value or `die` before anything is returned. + */ + function tribe_exit( $status = '' ) { + $handler = 'die'; + + /** + * Filters the callback to call in place of `die()`. + * + * @param callable $handler The `die` replacement callback. + * @param string $status The exit/die status. + */ + $handler = apply_filters( 'tribe_exit', $handler, $status ); + + // Die and exit are language constructs that cannot be used as callbacks on all PHP runtimes + if ( 'die' === $handler || 'exit' === $handler ) { + exit ( $status ); + } + + return call_user_func( $handler, $status ); + } +} + +if ( ! function_exists( 'tribe_get_request_var' ) ) { + /** + * Tests to see if the requested variable is set either as a post field or as a URL + * param and returns the value if so. + * + * Post data takes priority over fields passed in the URL query. If the field is not + * set then $default (null unless a different value is specified) will be returned. + * + * The variable being tested for can be an array if you wish to find a nested value. + * + * @since 4.9.17 Included explicit check against $_REQUEST. + * + * @see Tribe__Utils__Array::get() + * + * @param string|array $var + * @param mixed $default + * + * @return mixed + */ + function tribe_get_request_var( $var, $default = null ) { + $requests = []; + + // Prevent a slew of warnings every time we call this. + if ( isset( $_REQUEST ) ) { + $requests[] = (array) $_REQUEST; + } + + if ( isset( $_GET ) ) { + $requests[] = (array) $_GET; + } + + if ( isset( $_POST ) ) { + $requests[] = (array) $_POST; + } + + if ( empty( $requests ) ) { + return $default; + } + + $unsafe = Tribe__Utils__Array::get_in_any( $requests, $var, $default ); + return tribe_sanitize_deep( $unsafe ); + } +} + +if ( ! function_exists( 'tribe_get_global_query_object' ) ) { + /** + * Grabs the $wp_query global in a safe way with some fallbacks that help prevent fatal errors + * on sites where themes or other plugins directly manipulate the $wp_query global. + * + * @since 4.7.8 + * + * @return WP_Query The $wp_query, the $wp_the_query if $wp_query empty, null otherwise. + */ + function tribe_get_global_query_object() { + global $wp_query; + global $wp_the_query; + + if ( ! empty( $wp_query ) ) { + return $wp_query; + } + + if ( ! empty( $wp_the_query ) ) { + return $wp_the_query; + } + + return null; + } +} + +if ( ! function_exists( 'tribe_null_or_truthy' ) ) { + /** + * Validation of Null or Truthy values for Shortcode Attributes. + * + * @since 5.1.4 + * + * @param mixed $value Which value will be validated. + * + * @return bool|null Sanitizes the value passed as a boolean or null. + */ + function tribe_null_or_truthy( $value = null ) { + if ( null === $value || 'null' === $value ) { + return null; + } + + return tribe_is_truthy( $value ); + } +} + +if ( ! function_exists( 'tribe_null_or_number' ) ) { + /** + * Validation of Null or Numerical values for Shortcode Attributes. + * We don't use absint() since -1 is a common number used to indicate "all" or "infinite". + * + * @since 4.13.2 + * + * @param mixed $value Which value will be validated. + * + * @return int|null Sanitizes the value passed as an integer or null. + */ + function tribe_null_or_number( $value = null ) { + if ( null === $value || 'null' === $value ) { + return null; + } + + return (int) $value; + } +} + +if ( ! function_exists( 'tribe_is_truthy' ) ) { + /** + * Determines if the provided value should be regarded as 'true'. + * + * @param mixed $var + * + * @return bool + */ + function tribe_is_truthy( $var ) { + if ( is_bool( $var ) ) { + return $var; + } + + /** + * Provides an opportunity to modify strings that will be + * deemed to evaluate to true. + * + * @param array $truthy_strings + */ + $truthy_strings = (array) apply_filters( 'tribe_is_truthy_strings', [ + '1', + 'enable', + 'enabled', + 'on', + 'y', + 'yes', + 'true', + ] ); + + // Makes sure we are dealing with lowercase for testing + if ( is_string( $var ) ) { + $var = strtolower( $var ); + } + + // If $var is a string, it is only true if it is contained in the above array + if ( in_array( $var, $truthy_strings, true ) ) { + return true; + } + + // All other strings will be treated as false + if ( is_string( $var ) ) { + return false; + } + + // For other types (ints, floats etc) cast to bool + return (bool) $var; + } +} + +if ( ! function_exists( 'tec_bool_to_string' ) ) { + /** + * Utility function to convert booleans to text. + * + * @since 5.1.0 + * + * @param bool $bool + * @return string "true" or "false" based on the boolean value. + */ + function tec_bool_to_string( bool $bool ): string { + return tribe_is_truthy( $bool ) ? 'true' : 'false'; + } +} + +if ( ! function_exists( 'tec_bool_to_int' ) ) { + /** + * Utility function to convert booleans to text. + * + * @since 5.1.0 + * + * @param bool $bool + * @return int 1 (true) or 0 (false) based on the boolean value. + */ + function tec_bool_to_int( bool $bool ): int { + return tribe_is_truthy( $bool ) ? 1 : 0; + } +} + +if ( ! function_exists( 'tribe_sort_by_priority' ) ) { + /** + * Sorting function based on Priority + * + * @since 4.7.20 + * + * @param object|array $b Second subject to compare + * + * @param object|array $a First Subject to compare + * + * @return int + */ + function tribe_sort_by_priority( $a, $b ) { + if ( is_array( $a ) ) { + $a_priority = $a['priority']; + } else { + $a_priority = $a->priority; + } + + if ( is_array( $b ) ) { + $b_priority = $b['priority']; + } else { + $b_priority = $b->priority; + } + + if ( (int) $a_priority === (int) $b_priority ) { + return 0; + } + + return (int) $a_priority > (int) $b_priority ? 1 : -1; + } +} + +if ( ! function_exists( 'tribe_normalize_terms_list' ) ) { + /** + * Normalizes a list of terms to a list of fields. + * + * @since 4.5 + * + * @param string $taxonomy The terms taxonomy. + * @param string $field The fields the terms should be normalized to. + * @param $terms A term or array of terms to normalize. + * + * @return array An array of the valid normalized terms. + */ + function tribe_normalize_terms_list( $terms, $taxonomy, $field = 'term_id' ) { + if ( ! is_array( $terms ) ) { + $terms = [ $terms ]; + } + + $normalized = []; + foreach ( $terms as $term ) { + if ( is_object( $term ) && ! empty( $term->{$field} ) ) { + $normalized[] = $term->{$field}; + } elseif ( is_numeric( $term ) ) { + $term = get_term_by( 'id', $term, $taxonomy ); + if ( $term instanceof WP_Term ) { + $normalized[] = $term->{$field}; + } + } elseif ( is_string( $term ) ) { + $term = get_term_by( 'slug', $term, $taxonomy ); + if ( $term instanceof WP_Term ) { + $normalized[] = $term->{$field}; + } + } elseif ( is_array( $term ) && ! empty( $term[ $field ] ) ) { + $normalized[] = $term[ $field ]; + } + } + + return $normalized; + } +} + +if ( ! function_exists( 'tribe_upload_image' ) ) { + /** + * @see Tribe__Image__Uploader::upload_and_get_attachment_id() + * + * @param string|int $image The path to an image file, an image URL or an attachment post ID. + * + * @return int|bool The attachment post ID if the uploading and attachment is successful or the ID refers to an attachment; + * `false` otherwise. + */ + function tribe_upload_image( $image ) { + $uploader = new Tribe__Image__Uploader( $image ); + + return $uploader->upload_and_get_attachment_id(); + } +} + +if ( ! function_exists( 'tribe_is_error' ) ) { + /** + * Check whether variable is a WordPress or Tribe Error. + * + * Returns true if $thing is an object of the Tribe_Error or WP_Error class. + * + * @since 4.5.3 + * + * @param mixed $thing Any old variable will do. + * + * @return bool Indicates if $thing was an error. + */ + function tribe_is_error( $thing ) { + return ( $thing instanceof Tribe__Error || is_wp_error( $thing ) ); + } +} + +if ( ! function_exists( 'tribe_retrieve_object_by_hook' ) ) { + /** + * Attempts to find and return an object of the specified type that is associated + * with a specific hook. + * + * This is useful when third party code registers callbacks that belong to anonymous + * objects and it isn't possible to obtain the reference any other way. + * + * @since 4.5.8 + * + * @param string $class_name + * @param string $hook + * @param int $priority + * + * @return object|false + */ + function tribe_retrieve_object_by_hook( $class_name, $hook, $priority ) { + global $wp_filter; + + // No callbacks registered for this hook and priority? + if ( + ! isset( $wp_filter[ $hook ] ) + || ! isset( $wp_filter[ $hook ][ $priority ] ) + ) { + return false; + } + + // Otherwise iterate through the registered callbacks at the specified priority + foreach ( $wp_filter[ $hook ]->callbacks[ $priority ] as $callback ) { + // Skip if this callback isn't an object method + if ( + ! is_array( $callback['function'] ) + || ! is_object( $callback['function'][0] ) + ) { + continue; + } + + // If this isn't the callback we're looking for let's skip ahead + if ( $class_name !== get_class( $callback['function'][0] ) ) { + continue; + } + + return $callback['function'][0]; + } + + return false; + } +} + +if ( ! function_exists( 'tribe_is_wpml_active' ) ) { + /** + * A unified way of checking if WPML is activated. + * + * @since 4.6.2 + * + * @return boolean + */ + function tribe_is_wpml_active() { + return ( class_exists( 'SitePress' ) && defined( 'ICL_PLUGIN_PATH' ) ); + } +} + +if ( ! function_exists( 'tribe_post_exists' ) ) { + /** + * Checks if a post, optionally of a specific type, exists in the database. + * + * This is a low-level database check that will ignore caches and will + * check if there is an entry, in the posts table, for the post. + * + * @since 4.7.7 + * + * @param string|int $post_id_or_name Either a post ID or a post name. + * @param null $post_type An optional post type, or a list of post types, the + * post should have; a logic OR will be used. + * + * @return bool|int The matching post ID if found, `false` otherwise + */ + function tribe_post_exists( $post_id_or_name, $post_type = null ) { + if ( $post_id_or_name instanceof WP_Post ) { + $post_id_or_name = $post_id_or_name->ID; + } + + global $wpdb; + + $query_template = "SELECT ID FROM {$wpdb->posts} WHERE %s"; + $query_vars = []; + $where = ''; + + if ( is_numeric( $post_id_or_name ) ) { + $where = 'ID = %d'; + $query_vars[] = $post_id_or_name; + } elseif ( is_string( $post_id_or_name ) ) { + $where = 'post_name = %s'; + $query_vars[] = $post_id_or_name; + } + + if ( + is_string( $post_type ) + || ( + is_array( $post_type ) + && count( $post_type ) === count( array_filter( $post_type, 'is_string' ) ) + ) + ) { + $post_types_where_template = ' AND post_type IN (%s)'; + $post_types = (array) $post_type; + + $post_types_interval = $wpdb->prepare( + implode( + ',', + array_fill( 0, count( $post_types ), '%s' ) + ), + $post_types + ); + + $where .= sprintf( $post_types_where_template, $post_types_interval ); + } + + $prepared = $wpdb->prepare( sprintf( $query_template, $where ), $query_vars ); + $found = $wpdb->get_var( $prepared ); + + return ! empty( $found ) ? (int) $found : false; + } +} + +if ( ! function_exists( 'tribe_post_excerpt' ) ) { + /** + * Wrapper function for `tribe_events_get_the_excerpt` to prevent access the function when is not present on the + * current site installation. + * + * @param $post + * + * @return null|string + */ + function tribe_post_excerpt( $post ) { + if ( function_exists( 'tribe_events_get_the_excerpt' ) ) { + return tribe_events_get_the_excerpt( $post ); + } + + if ( ! is_numeric( $post ) && ! $post instanceof WP_Post ) { + $post = get_the_ID(); + } + + if ( is_numeric( $post ) ) { + $post = WP_Post::get_instance( $post ); + } + + if ( ! $post instanceof WP_Post ) { + return null; + } + + $excerpt = has_excerpt( $post->ID ) + ? $post->post_excerpt + : wp_trim_words( $post->post_content ); + + return wpautop( $excerpt ); + } +} + +if ( ! function_exists( 'tribe_catch_and_throw' ) ) { + /** + * A convenience function used to cast errors to exceptions. + * + * Use in `set_error_handler` calls: + * + * try{ + * set_error_handler( 'tribe_catch_and_throw' ); + * // ...do something that could generate an error... + * restore_error_handler(); + * } catch ( RuntimeException $e ) { + * // Handle the exception. + * } + * + * @since 4.9.5 + * + * @see set_error_handler() + * @see restore_error_handler() + * @throws RuntimeException The message will be the error message, the code will be the error code. + */ + function tribe_catch_and_throw( $errno, $errstr ) { + throw new RuntimeException( $errstr, $errno ); + } +} + +if ( ! function_exists( 'tribe_is_regex' ) ) { + + /** + * Checks whether a candidate string is a valid regular expression or not. + * + * @since 4.9.5 + * + * @param string $candidate The candidate string to check, it must include the + * regular expression opening and closing tags to validate. + * + * @return bool Whether a candidate string is a valid regular expression or not. + */ + function tribe_is_regex( $candidate ) { + if ( ! is_string( $candidate ) ) { + return false; + } + + $n = strlen( $candidate ); + // regex must be at least 2 delimiters + 1 character - invalid regex. + if ( $n < 3 ) { + return false; + } + + // Missing or mismatched delimiters - invalid regex. + if ( $candidate[0] !== $candidate[ $n - 1 ] ) { + return false; + } + + // We need to have the Try/Catch for Warnings too + try { + return ! ( @preg_match( $candidate, null ) === false ); + } catch ( Exception $e ) { + return false; + } + } +} + +if ( ! function_exists( 'tribe_unfenced_regex' ) ) { + + /** + * Removes fence characters and modifiers from a regular expression string. + * + * Use this to go from a PCRE-format regex (PHP) to one SQL can understand. + * + * @since 4.9.5 + * + * @param string $regex The input regular expression string. + * + * @return string The un-fenced regular expression string. + */ + function tribe_unfenced_regex( $regex ) { + if ( ! is_string( $regex ) ) { + return $regex; + } + + $str_fence = $regex[0]; + // Let's pick a fence char the string itself is not using. + $fence_char = '~' === $str_fence ? '#' : '~'; + $pattern = $fence_char + . preg_quote( $str_fence, $fence_char ) // the opening fence + . '(.*)' // keep anything after the opening fence, group 1 + . preg_quote( $str_fence, $fence_char ) // the closing fence + . '.*' // any modifier after the closing fence + . $fence_char; + + return preg_replace( $pattern, '$1', $regex ); + } +} + +/** + * Create a function to mock the real function if the extension or Beta is not present. + * + * + */ +if ( ! function_exists( 'has_blocks' ) ) { + /** + * Determine whether a post or content string has blocks. + * + * This test optimizes for performance rather than strict accuracy, detecting + * the pattern of a block but not validating its structure. For strict accuracy + * you should use the block parser on post content. + * + * @since 4.8 + * + * @see https://github.com/WordPress/gutenberg/blob/73d9759116dde896931f4d152f186147a57889fe/lib/register.php#L313-L337s + * + * @param int|string|WP_Post|null $post Optional. Post content, post ID, or post object. Defaults to global $post. + * + * @return bool Whether the post has blocks. + */ + function has_blocks( $post = null ) { + if ( ! is_string( $post ) ) { + $wp_post = get_post( $post ); + if ( $wp_post instanceof WP_Post ) { + $post = $wp_post->post_content; + } + } + + return false !== strpos( (string) $post, '=5fg=QC;@SFe~g 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 T8;vCQuU{z2s>&4IhX(vVChZ2L literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/gutenberg-admin-notice-TEC.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/gutenberg-admin-notice-TEC.png new file mode 100644 index 0000000000000000000000000000000000000000..d12da016ba1ff9a8e6f397d00cd98f167b05e89c GIT binary patch literal 9636 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 L)fLL*%mV)(cpflo literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/gutenberg-admin-notice-tickets.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/gutenberg-admin-notice-tickets.png new file mode 100644 index 0000000000000000000000000000000000000000..a586806c846eaad333950b727da27fceb869cb76 GIT binary patch literal 9976 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/header/all-solutions.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/header/all-solutions.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1a71db6b3977de3961240beefa66a542160b530 GIT binary patch literal 31953 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 AD*ylh literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/header/extensions.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/header/extensions.jpg new file mode 100644 index 0000000000000000000000000000000000000000..36f694525cddc6d33a0fa1bf988c3a98db92f6b8 GIT binary patch literal 40455 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ⅈ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 U+Sau(!$GfxffK?@C;q+pKQc7|VE_OC literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-desktop-et.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-desktop-et.jpg new file mode 100644 index 0000000000000000000000000000000000000000..140bfdc410a2dd1c1d100eb264cfa5fe942bac24 GIT binary patch literal 104454 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 Yl~l7U=Ng!w`2zwJ3I$vL0O5cC*{4Ym(f|Me literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-desktop.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-desktop.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d21221906eda7f8577a478936f860a23449a9e3 GIT binary patch literal 94188 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 z%0DfG6CC(Y8{V8p)sk$3K@_axJq*n6!B@dED^>1OAYyMe4~4@^7P;ios~9dSk!9P2 zCs(E=()JSgKFhLCMYNKg?Lcwy7*eYUGjqSKv$ysBKlb?7;XY$Gy8o-@L;lht z7hq2Il0Han_&G)dY_C)^`@ZXYHiQD-D-J6O{0l6)a@lU4 z-RxuVldbOU8A~x$pqoeIy_bUc>hD>kX)1Sr*~6}}5ticmq}Iw|OGts9&Gi?seYWSu zQhH+=0-psA85qYJ(In7z7@qHwOAb2oU?_jJDuhw&Sh=AgiFn3@m+Bd za3QQ@U;3W*W9j`)!WtAKt{d$joN;!TA10Y9aOdo`J+rpiXDzXg?@SLPP<*7X{OLa| zR(r-~%OJuZSIJF1Ub`|EFaLObc{cDb@aQk_u#*iD0&bRJl0MnM&n9rQ?ks9&i1q1E zO_C6Pj1FZM7#id|zf0By>!#!%e}5{aN0>;%dSTS+ol;ZNZ_}RiqdGvIX_D~>bsgT; z78e~QF_{=xsq6vGM2T-0>SRVHW!tu@kd`{PO6V+x6G`+np2F=Sqw?G{xk#(m!vanA zGI#-GFS)>Li<9_@cR!~`y#gYe;zVKTbSN-M8V+$j@NXH2dh z`dG+~GVpyAH z;&^2!4Af2FC<9Kd+||(j8zed6T~F7Q)kgMY^Jk^(;O2lr*Wnb6z}Mi5s)Z#+={7c2 zMNsAmbKhr&K=>IX-A)&I7$sCFVPpN)*IZCGqS~ql(yMJSVh264JddGL*3t^y@H;jL z7o{r~S(bh;NVAG5t}UxBG1}r3FQ;^{!R7}aKSXnhh$R0`rL~QWAA%uJ^rf7AjKtpy zv1EoQHxE=TNCF=gw~C@}r-Z7rdVY)$@eoT-VM5b@=<&*#uo7 zLKZUj{_b{cXIawlFVKwiyU%4I@atUhVJ&V5dnw*;)9#r(ZUkfpPxdT+^}zvbca3$< zQrXI`(}0EjMOSW>=DRT=z%9lhjG(Syt`;^Gv?2&2?5?_;Z|i{fkL&4*A>6Ri8g6bE z!MCR7tJrr4Y+XiMI0>DKj8m8JbB5}-+_h%~un-fj_er;9UI^VotkFr*%(f3-`?M#v zN~B}MBz0wZl8Ygh>{YNMh~E@o9d`FeZoTmnLoMQa`i-`_m!SS=;zX0Q^oDCru_Sa= zgHb}xc;f$6G`OqRa@mEqWq0;8>1o~2TCbQKQX-*oy|zx#Jxi~3ekWVZfl8}*OOh3*mDQ86yIseE-gotc03VFT*z6+l z6Y3}qF{3fQCMi$d<5;wG{g(tImG^cO+C59WACG{ylR7{<-ioAbO#< zKeMoy5!EUzh$y$&E6v`t(p720q!@TU*hX1sq5F|TxNF;UcHy8g9qI-~q3tNN221SM zc=<3N?oCo=&xm>rA*CuBwER4Y3$ba-Wgz6(O@V*%s68BqDH4Z@Wq=zfT1azEqN^n2 zIS)C&&FTegUEnzM7kF_?4YP>7WJ*K#lKt#Z14psJhWm)MSaCU+OXNEN})f=@Q zgA!rj!~W6eY#*z9;go*=A_6YwKDk!E0*r2N2tULy&*V$RUYjc})7XbhH07tEeG%P5 zbsWdRU)X$UsJvIYA6J;DOscj;>6R#8MhmW)V`+9hi7{r{E_0}&*etOO7LF6zs~W+8IwZD+Lv+Dl zvFtH%rm~MW^_E!U7Yvund!tC)`nYGUtQ{ZHK)*dG%>#8F_7||5F|hJsF)yZC&C6DOF$p!Q7Ry`eQoy9C9NMxS58xEz8T(X zuAf#3zVPCUX8tOK!x_)Fek4=^3H8FIru2#M`RDNfum0OoV?>rd&nGKE?4xqEj8p_A zJB)9D*qsV)fr}mMIe@3wvNCD`-FJbzxq>@50gh{0Ske`fxJr{{=&FBo(O7y1ku>+Y zEu>>Fosr7)(XearaM%;5NOkZKxQJ`k*cF-`nr(l0M(ZADFZsrQqWiwUWsIPj>wHXj z5Hb&UdBpCG>oY9GeYF7!13AciJRIdM5==Uam;{^W&qhd!T$%WkDAIV+)ql!Q%ZAV9 zh6>46nZC@F;MQU#$yYK?W{af(FpZJpQtg~FNhzGS{0z(A0EYFl3xHr&;iy?iid_nR z6=A9G|P-D^NP76^X+sjI7>)9nN7=!RH0h!Ziol3ZQ2$+#gRgsl+pB6(szPIdGFM~2p3+=VFrhiM3!Nrgu*rSau5&p2|{m) z$~4u5cPUDt;0#zo^+9IgVybkbk`7Aj++%>Uk|hLZyn5vCMGZLf`8b7y0e~=<%jDP) zpDuEu=lATq-q1>9uo$jnB6P?_-wckZohX9f7u3dDRu#GD2$7s6cu?h%sQPuI?^4;2 z#@64&>^|Gp39Dl%^&aj#Qgbf?YqO}B{JB*>RZJoT6_{tes8pC1HmSe)QjorOgx`B3 z0U+~E)sib^O66Rc^in%SMeD;4<+`?)(DR(lH*O@Iw0{dMFHvXw?PV?B3ekb>$ zPCBDjU83*)r30PUJ#4*xUprj#IfK3_rRjarKN@m~M%5RssaqMCKF)W}`!?epL7C|- zsEtz`dwhvO>0MXr6UCX>}n9ZG>Xa>NzVJ)n2dsLI*ni z=^Uvju%EFSOz-?^9vV&=LzhPDs{J?Xg|F3Y)4;o+;G`Gusq9{x_}1|KT%Ue z&97d#`*IQp*~3IzQY+*#P`0fk0r!K)Px+>D3Z?FY(_7WP&?i2tljOc)ScL9*zpEUr zqi+nVT(K+2@t^3xR1!y;-0bp=6(A1s!+BT=u9y1(m11&eWW%&&xI6B!4F=7E0iI=B zS^i=pv{Vmwj1N4Z8$xAR*f1oJFuva@3M&|4jXW$t@jG0m-7-!ZV(YQsxuT?x9-5GHohLj;p9?KG{@DFs^#KVV@8)oDHuT0#T9xM8QFhQf{F? zDTt&a(*|bhHmkhXhAhtLxgl_Xe}MgdP%r{qNN$50Sd9CFSs*g1VS)rf*B;-_i#E_o zU#x+l4GwnI23vGtprS-%J`|aPGCll&@k3qbf`X^^cb!U7OX(731f&&$8Wa~v6}m&K z3;bO0OdeW^JkI#c^kAvMRg52!4+t-4()36q!#3@R_bbuA-p@kRQKW`K&ak%@@lb{?q;9n5F@>zTbsW--UZ- zHQ6Y^aAIpFY+m=s7b%l=cZH@v6=DK3Ugr+qfRxUO#G}Rwm(+dlpUs;>sQB@H0kZG4 zzYj~&ck!ty((q4K+L)tIlF@eV9_=2Jv2XkIt>*X$d;s7B76_T(ftn-_se3+Lx~WS; zBuO3(kuT?;XzZa#*{-1FJObjCj<+Fda(e{Zr$+!6`+~*GLAR>EOox4eBsD+PP&N#6 z>iG9V+n@9IFTW%%z>LAQBOYh6e{Gf5^v8?s#Q3jGqTPISsvC~U9?t{tjO!d*!C@zZ zvsZl*lbZdK2PpyJi&^TL_gIo(D0;}MajZ(@nnI1h?HlzUOCJ!2fuwGFSe` zTa~`Aenjh%{-3a=eFewGzgl!Kjaht41QZfG9U`{dVD>znP(KZjDx?!T51 z(01G_za!`OJF9j*r$ef@qx}k<- zOMJzXq)S_U7-Upp({lUR{NB!7y zpQ9qqp32((nt!cd^6QxiR?edNgAI?l?Os2E|m|7MV?yy6k~0 zot`->@;Gk6q(1CteAo%|$LY9_sW!GVz4-*y+bzcbw;~wfe zgiq^C<0r{+*^d{4f4!YLxjrp%`UCp?fbHs3ELh%MSmgPcl&#eY;jHLmcU1@00&m9O zyUCSr+S(k@ws5|do_KEjJ@a?zt1K@Gr$6=aDN++>{;7S{9=-FjDbnx1ha>0j1UjAa zwUOZcK(*^5vf3|A%t78=O7PtpIn${3H6O7g()D=v{0Enp#)j8aj+v>=yB+*_C@L^v zXyM5>-><=^ounT9e5ZN+(C`PQk7Zr%a?KCP4E_rG+w3yWz|PI(aO3%;2Q~lR|EyK| z-etam9r&@&%thSAgvW`yS8{i{Zf?1I%OR-e3cV$8+&b{3{x`MbgI@i%iATCNMCBjf zR;)G;c9b1T=08U6#ozF7ko@pEs8?TBKN_T1HXFE={n-4$gYq)Twu?`mF1`|6P2N(v zrZ*K*oliU~$}D$A zW?Xzzd^A4euGB9zfo~%t#H{bSr)vL=<(8BjmJP5kr{B6&Vf@0~6*XBX=Z5igoXfH> zKDlw>>Z#ZtYS zR-Mg!->PhOzWd123vYu<}O`5PJZQu0u?5pt#l4l*3d^fv` z1@;MIo{_B^cMsKrUGK}q4)?$K4V(Lw^=;a(ElTdkz*VG{@A-g5#%s5;PPeKQ=qvgbbpQ=cPrA(jNe#iDd&!AEXl@;Ob8=7(r1or ziGDCZ1m2T9y5$9E?M0bqIPb;&=9=|_{U_|emQ^!jtPk44xHGt z#~MYjLm7l)rk4wiIxjjV*{h?oC=X#PzAFUQH@{qXzcJt{L#&_8e=q$=A|Qzo$d1J9 zc;?|WrNjck4V=pYIi>#qFUEMjG3Wo9nxP4Qi? za2X*LGm$HU!!I)OICB^i$VfTO1u)_A;g%HaQ-lsdfhFG{;mJf0se5ob1;(>DCEmUvFnN}&$$@$~XkDRX zqD0u6@WG_V0qZM<>={MNlICRZlowGUx5(SpXXTzLUQFaX$X83|=)jra>l>-BG24N| z<}xhvw47b4yAQ@fl! zkoNIkOL+n^+>6kBhrdt91t{5;w)DR1G5OXF`EKTQ?+SXK9Ig`@PnBOsSg%zf!Ek1G zy;j7V68OgpVYP+QgHgC7udLexD=4Tvzed{(I`#TS3 zd{4^ydGyUM?OS*#MgtE4FhgQgA%@D zCKoW%-gyos7UWZUap0XE_m!7JYE&GWy;BE!;6!C05@&vx0)E-5(RbCy&(56mZ$+z- z7cmU;zhC`fI2pprVE~boxi+{-)ni$ZwOt=Eyq>c}?`>^!<(3A6jGG@8 zM_!(+$9r$y>Av}zXF#5@UeaS@%-!4H*CwLoL z(h@Kw%he2*Hn$ku#l+pa$3P7|nrs)Zd)JQ~!GqU3%d3*_1=q-ew8X3Nod)v^`SZ#t z+(!$Y-8r9+obYD5d(^XM!Q3M^#zqk%A&{xEY~C|?b%gac=~1naa5GgLfOEoY{_< zlNxu9+@I%zreACsxv}+~{OMH?9jeR{TsU+7IRN%oqd_+R0GE8WGmX9t86CbScU)*p zDo1LUWfTjd>$+U52hmY7;$%tFxk3Pd#DmhlaJ5sRNvDnvT2As&7;HXIDjYCUlwX#< z*$$1BnG|8FT&cN92Inx(1Mq^5vMPB>X9dA=!v`&;$S56p_I5qd;ap?JUCr5yW6u46 zNujM50Tx8dgapW|N1_-|*h#C0eKpsTH+{9D1@8Zrw zCu^T*T(c>!KIb4rxkDH*xlcs}S_U35!Y7j1gJqKeLud|oTphJM#Xw7wpvBD30UFpT zL9X%uCXtUAgR?~0M5(8?ZuIfp87ZwqZB&p9`b|y%m2Q-lZwuCIn;2+-0MJlbTUEJJ z)c2goUY@dKqrBd(qz;}kl2x9*9dw60Hb$C+eL94WJtrz^;^4U2Z`qx3Y}iCPDQl2% zxpMI`XRLJx-ki@Dn5g9{Eh&KyL6!44KgAq=z3=&V{{Yz$6-Bkk|Oz$Se&pC)EcY|}d9n>j_q zR({e!;tZe=awalT6F!>D!re43Xj%$3S1iC>ClWHPS-1i~R_wX)wk0Ca~FaGuKc8b~I}cF^A`GSOkTp$?Z4Y-!&+R7S%mVBd0rY?@~WqE3uD zx|X!w>vh88$uhF#-bPI0#ZA&$b>a(Klq(s_;|a$sFrgsD@FL|K!p~#TYfF&FL5_-g z2oA7MSDyGFUWxb)m~*N+)65@Y`;KZJn7EsCa4e1IwI3mna%Vt3uMn=%TY`!VH!aK| ziV&+CP)|lM0s$!r+cTB?fD!2&7tS2s`@m!d*t1Zld4-V1@i^A`9*J?4CRuu7`iM4G zG8~HS8MQ|w!M*{K8yN-!&0+}wkaoPGFv9`47!HUvBZ$tp6aslY%%;aXq|cGzF?vzM zGp6rShdl6RUlXlQkah9FW`;d?k#S5XP&4n7RowtVp*Fu8>B+$WL1W_~wR#{Ix#_bs z!`Z=?SH|gd&J@~P7=sKWfhS`a_~cM1cuD!k?TtVEg5_r^4e%roY%tw5KZH|5 z1R#MTAyeTi>OOcgL%A5Ea0=uIFk=^)_P;%6GkIE>!Hl_)C*>GQudxgl{Ld=lV4(8C zsw>7{K#&CmOcr508cUF`R_)Xz>$O)r9=}A4VFC!FHt{ksK-CF_)TSpa(2Rm2q69_6 zIaMyOiH}h*DwP8a{{SwySmt&qb4R2y)VNqdm#120h6jhFdH8CiX-kdFl=H|v(&kFQsVJU1C?1Dfb5ea zGmIQzP|<(|U~)9GARZMnvqXyqPjMAsn|Phk5C$peVvtZ{%wiCFaWHVyzMg>L;&g&4 z2TqeARxBOG;*v6Uk%xFPl3*oqIb^43!^Ad<7}GBzWh1#`(*WO{Glon)x@P9w4a4cj zr8|{`Sp?Z1AKQop$_6jSC#;^9?}&<`jA278YwK~0XD2Dha0O_Yszt$y9`Oz~V4>-< z!p#t;w0Vf4wSl!%#a!zJ{{Zbs+h8-GCP;1~6sd|4rWPTfax7dfIF|%e!9XV0EJZRM zAr&Cs>{s9NR8zANAF7g42&V%^Qh5iX8P&m5 z>~-r{Q4@>Js)j(E!N^}-uakT+4Z1)bi4v|(i!3fgXt1WGN{&@YqoNiG%2W=5$}w#w z6g8-(EWx~vWY{yrEQ?y;b63Idg<+|jcze%%(;jxnbwjDHEIQn&)mf7ciHvWqDuuBw zE9>4MnPG$25@NkriQavK2UtnPN{QJGv14PFhVY&aNuKeGqeBv!DrSXq!ig-lU|L}? zjCd44wo_KFL?Dqq2Qp(41-@{-D2ttheVB}`N3PZ>O zqfnTqER@$)CL2_FWE_i*<^KRl*tB>SD(qCK6&#?36gDnL1mZAKp$de9SuB_ZxTJ?Q zC=_FQ&6r`|iU+8ufujV=m~QO#!Qt?cR863Wv|*g|bn($#3>6gJlgYdrrR6dOJ8``t zt*(#AoFgwfmgwwAinE|Y4Dca>00062201Qo!2bZE8flP6i55XP^9EUFVc5~N!cE8> z;w90dBXr)G>TAh!c%c-)PS0jyc%cGLRIpf}tYlQ|#h!A`8z6*82MWi)RVxo8>8Lqp zrMV|oE0DO!AXE^7#L1&>y-yMbR5+WbXGBZ}JhX6y#T}s}Hfmr1R)D~a*DWAGKom&& zV}~jtnX)VtEmG2Ge8`~%1VMmgR}7STrK!LmDGtcBHg3i5GYZC94AixWu^jMftI!_Z znbCsfxHaRU#2ER()eS^_HeEiY1%r2z)C9+7Bd$~n=3HhW=OxUU_H(sy6{$e5*h>eu z6_DTwL=vjGoAY9M4QDQ7n-bvk4yG=AxvU(PYP!8E;_-%&HXsoss|}&kl&ykk8OsEU z5Su9@`?3vy7$Cz$PlxGhA60|BITNX5dT+RdV9WpJ>`QNxNEi0cn9nSzq#q`cD z%yNTFG*WGWEKKgUc;OCPdy@=?^XE9IEu47}4A+Jrpv!cPBB?_KAbNU{{w!l{P3U4iN;HIbkMiQ*eM%-tuw+XPT z4ncDu0#rjQYvETk)7(BYzc9sWPzE_|rN*LqKEA$}rap!*(bprQ#u-rEZRpf!<(U$xe>eSc|Me1QBaxoK74x1b_el0RkM>xBd8i{{SD3Usv(}08d(&1{6t2f*|6J zxi7E}b0!fULN2XhYsp^yqx1TJ*I&gQszs6tA+0TmR>l+O53M9L~LO~y2xKq5s-z{CR~1Olm{#>kc9 zfsi-{V>(zq9d^7xWT1&M3$a%!VB;uZ;%nFo9$rca1mrAS(0m6yu?dXjx&%|O<)s~v z2oi10i0((HMbqLGQJsyshmy8 z-E}`aMtr-P_SFaBH;x;$#%A%2xHE-(`QI{q++eCObr8*oIFk(}dEn zqKwS#V6J-}rxPGawx-lgjjgfcc}}G;(-=x(*8>}ZYVnC!HBg3M)x45%UG-H|TNGC& zD1r%sY+Gbr^R%a@to<{@VAmSl0Nu5+c$u3Q6vbxaRFG$@#q`0nYh%z#T(My>W^uu( zvuGRYe(90#ovUd#uLz{Q95KgenenE~-))5a`(J&u)&7h(z586Ro=4m zA^>9HuAQGRGcrzNC_t)~VPbAV#Rn0^0{{?U1OPB_FZup)*EZ|Z>%$#y@%nQfKVSNt zXPMXBl3^)%aLuFX(9>8TF&L~Mir^r*GNeZx4GI|~&TC+y6u=rx7B#T(Jz=fV5vGG@ z0Bpd-C3$giRdnl4!LtRfQzLRYNimzNH^68;Y3w1*PbZu&15q9V3JkfXiJGEg0W`(l z_U7A15yO#+2(Wri2cVcM^O-X>^1Ort{{SYJMx&cW_F8!e0f<7%#$?EV+)Xbcz{JZ2 z#+2G9%Q+5giH*5KzfUqgnB}0*_hlH*jjCLplZvdq2#K=)0KQgUfE{EpmZl8_lavgq zDEny4^6MFPj{!v$UpNKyk@7OGm2fdIBCbn{+mOX=>lIq{dZ3Lc?&~<~u39D)fC+Dt zCVXM_IKw2WG8XE2WiP)VE=;nJw%)XAAD#v#<-&+<`dr@=&oVB`x$~Kq0gYkw9Gjz+ zn9vs@^)VdyFmb@6DcfE%bUP<>u{w*I1pFWRZP)wp|G^yh1njJO+8$HKAepX zwd;SIw7eo6OHBnO3YY~LXS`V6XM=;#nQ=+okE4$U00000K*8gN@xu;#zwhs!I{U7< z?fK`)_v8Mw+Xs{o?zCFoFrjaNmP4w;-d!XFbV<7+;8Q$A%8ZqU+M5(M$x@2Tm}Ro%8g^-3br&Og;KMyQW2q$5kiH>wr+}D z8Z+l0i8VMg*cl`fGo>yYeqI6?vL*9@Fm$bFi^`KIgm?-&AvUQDdCqvi_6W#F(doFG z=4o#@(rbA$p0nSMS2dt;H3kY)iEvP78CeE4E{(BiuF{PdRfj1aq$yVg(S*1#JZP|t z9j{^uvU*va5bVOanI3bN8fj79I5*L?x50>{&6AS+H6tREpz#!&*_})~p8o)naSIZ3 z7M_-QtK4m;1?(?s|f5$1)_w)Y%ZV)XEY3r>E(}JXe{y?hqu4ds;`R!b)(kcnf8Xz3X(+eSy zTjwDpO`Gh*P`Q>;jb)+%vf~^=(P+}zqiq~59 zs`&!GrFPyt)!bCNEar$Xteh_A`Jdaa(j6P9BdZK^&81H;AY7ti5mt0VWZ5Q-EcM{~ zNhRhfE(kaR#+e^bohbo)Qj`ow>Gbx`5GCk2oRJviaCr#u;2Hn` z0002ye{a7}@@M${e)@7x=Y-mQ`RDrk^Xue<&%d8v)1PCfW&}3@9*cC@0sELFTXzh`{~y{`~CB-N7wo?(h7QdCy>m&`u_mJd5h+D ze5~vgD>t$Poi8aA6;*1yKTp4ZJU>3X>-+xzKfbx&w;V^uUw+;mz4iUSj(z+09Q*gv znf?0X&!4~Rf_?u0U(t)7WK3D!BedwW@jKCRyuMO)1r28Y;*+(!K%lCs-gmF@zvG{L z{r>;7|AWJbi8S zv-bXs$m^j4_b+mA_^@xqgv}}tv3guRNyTo2RLmmGMdrUBe){vTj<{p*e184=`}4Ez zKIiS{f7{R9{{X%@JbpinaQpY~&n7>=@A=|m@8ic0U%$WSzJC7zj~@R3d~w2D`fF^mHGQ{{W0{@A~-WK0i-oH=3@1K9qzBpvRaqawbf4|?p{QLLs@yfh!94i1I8E=g<2Yq7( zf&_wr0?Pg099n}YD2R)p1rXWf6F6W50ssI20ER!JC&Df_m&ngx7&E@Oh`N}dP*qj0 z6~7;P-|fu(`}NN&&o}Rj&+^&#_2YZ{{CobqugurJI^^HqzqhYGzrQqnPrsfSe*XUe z=N$X}r(d@be%p(*xmkeeoQ-;pP-G&b1{6bQfK1_l5C{MO00J2Ph`%cST0T--fM&CI zBxRdCNmMAUIp=@Jzpp<__w_mV@$ZlCo;N=qcl-YUze%6J82!1I{r&#{9Q}2TdUpQ+ zzCF$UkK4lk06qNg@5d%Szv~~{j<@svramVppZDv(-+{xQ=%kuqNdysaX`FZh0RR91 z07D4 zyYg~lzsL9ba%A7OyX4=GUKl?9KKk>me*XY}#`!+^^t$@+KWo7{;glB$sKJF0l=3|i zqKO6zz#$O9$4o$Lx@(^!>wlrAfWBu(%5K21XMc1lzFttsG*#w4_m6Hv;MRKDN%!BM ze_uNN{PV}>JU5*8&n%y>HTT>1=D#0*PPqO4{&|l+e>@}B^UrU-dGYrBzn(hv7=odd z7%-w6Jc4Ho0DwRM000oj{9)O$HA?zi0rK^q&{Me^4dwEZco6(Yt$ZqPxcr$5kB z@gEK4@{;5j)8Fo7yHgM-Dpk(s-?!`S$o@L&{k}hrNAE}5!{a;q_xn%uybw5Kfn9quV}FaLL!12MC|ejoG=0b z00000Lm&KOo=N->K~O!@JRc!Hg?^y_0Pj!5bl%=Yy9NcFyak17;(e3}0L0CD%ePvh_3 zjvl|;&p(a*{ds%gy>ZB`5fvCEL^pUe&O8ACfB*mhA&>r9IP>61@Po!5GtG`O;qM<4 z{{UjZ^78ea|&06+i$0Rx>`x&GI!^8i>fIGd^7 z^~{qujK7XQWa7&*_{+c;ajo-a0CSXA9O%i#+k?;kwW_M>a;8MRKuZ98A6VyW)b6X1 z5e`6%3;+q700TD@apGzrk@U!!ISZ+<%^cZgB)FPyzA+)HW0vnGT>ImB?)jyVyn?z- z#b4hk)b=M8NEkT325@S!F7$a!m<{izP&XU|dLBTSo0Xu@69PX1C7cW@Phcox7}!d_ zQ;BL4CB#N??9-ZjUX8%5ES^UMpaQ*U#}+dI(U?oFo~C;n;7r$}Ap2UR>Yh5!4;RX5 zOrayMgYr8GGGOf5AAIMSlp~C=IIEppS{~fNa7wUXY_2`C4_-0JvAQ6xS6JV!iNF!0 zYMP8LLlVaV;Ss`|i;N=Bxv3|Oy-jig)I`H3bxzBSPdniWaOgWN^oV!gW58IT1V4-X z8B1b7W=mAsP&}$S;+(FHp09JS9+>gLp;71;^|1uCT?pXZMf-i!NhC>T_|S{y*MgRFs=qj;d>FjPLnD;VT27dbw}7JeiN7y zA#GU5of9Tt;p7Uag(VE2*EhhUA!jHNyDk8%+9SMTLyXIlFeY!MC}ybJ|_Kj${Q)7HPtXV$DLhpMZgQ$u~5cabq%b?1Zqq`m}NU^`=5-QP|H}DFyxmL ze>kTHY_k=|zSFkf$E%nicL%;kS>_#HOY@jyf+2y70__Y8^0UcNGzBjzNpsMep>(sUvBC;aL<@ZZ5#wUJ8kAnBR%}u`>m%$~imz-TlnG^a zz$7S%ra1s0U~6OgoVFPg7!V(Tc0?}w<`=HZjhN~VA?b&KI^9a)o--BSx3qGOt29h& zTZ5J#JaF0|CDJzDiLW`wEMAH*3{Jd%ZSnN{=NZT1;r#H*c@04EoF6@Po;Br2jiNGF zdCYuD7SfpaHmhlmZzMzzFZ2#3ZmSkFz|4^NLjSa zwD!h3`08?8*FN9+5XS)|TtOvbbro#qU{Hdnc4aAtfsQg}@I!1B5N*-#`FuN(kqFvu z;IvTHQY3%&Xu}suLI&z=@#%EmA1uKWRaxO(q%}QAyOsEwQWc3D1 zhWepPn5(5$E>?*~D@Qk>sMb6U=}=gb9dKKK4i24zN_iL4t~DXmFv6lf#Zj3gNQA&c z0g-W}Vd>GfLySNpVEZ*bsw^ z#=X8#bJ4bM;W486WLM|f*`a&B3dO-LdA!G+T@~%B)X1(?V^HXKY zUcu+O{J8)GB~c73O-u=AOyw1@IHsusVRsBI;V)o?GGSmPuS~dx9$^<9nceVC``dpU z9EhWx4woAc3yh5R=}bk09Pg=Dyl<&{%0z%V)9IYd0q2ZxVCu97Ok6Sx>ry2^^IVd) zFxtRol`+lbqm0rMJ{I(0mh}Z%K{A=n9opgp5M6N|aqP$7FXypyhn8f>MMYd`u3yMb zj!Q_*9WR$@`Its?DMdww5g2(dKV1`uq7|e=}Q$PT4s~~|z zUh%r;fw#d^9f727)Dr`q7y+B3HqCS5p3ZhNlx)xWPWbR_=(KaTax>m)HwGAdK4tN|WJ*Du%q06^GMNO|aqDTb>{ zP{zR>XLMJc`A|^X%!J9{TukDP*o@3!-KsKKAVvvcg`2fnhXikgIcgjPtlEbRhTb4t zJvDAc@D#bPJ*2oZJQ zm9M~D975Md-i84%BDOjyQQjGj3#J(^h{Ws)%7hSb@1@Pnza7thT&8yr$+uWD=;wD_ zLu_-E; zmj_jN;^ZlC6y*1-oSQM_!Iq{`uSC(Sj+}6*g24cCW)Zo{)z5irWXG^?vvb;EopPBAoL~SLdv9ngmplYx zSu9uxlHn5G$-}IKbBwPHdAPr<4Hj37?2cf~`D(()fxYxH;JFr&3}YC;&n{LqW^#3$ zI4dkSX9DT+K63tb;m3oBAxU($Vy9~7uI@Q-jWP-_u5eRV3WA-`NOEZx2BarbDpZP* zB}fQZ37}a$vzCJl^b!M=4+hiJk~fzkiZ7uDrwwHW_~j%4Kn>TXLNgnVW?dj)WMal6 zykK7rapQ<4OfN$8hH5R{L&?UtN2UDv_19mXS4L)26A9^)biOzu=d#X+@sE3%$D!KU zo7QIY*M^4pGHo^vzI2qo=SWO;MfN=xuKZib(6hKyiQpIW>~nor^Ck#<*n0l}(`_mn zbH;=^AQu42D(pxS?ska5#D|N-BJ|2g6^N+1b< zJu%*Zh;S+sQmquA=I6#6+-E?#YPF#?>*>cN zIWFl#!*P!~-FTB0O{A7}FlP=U`rzh<0s@Z66l-kE%;Y=mPW&(Wo5Z)3hivVq0{#ta z=a?y^dY4EB5}6%(=JDQU`#W%#vy2ne?~F<^6E@t>#LeGX~t*_k7lL z;>{_-E=ygLKtSx-#VkXMW28GwL^9Ax1+C7LY11a5j{vsUPg{A>*k(w6xb}8T@F~_G ze@7i=41u}6My_i9g2lFYKmyD>AkfiO&%RWIu+xzQc}Qeko%M~@OGkgY;69nCUf8;U zV1^DG<}c3Ye%T(Ekj;gjKLsL5=l0<(&|h579;xZQP7gs`9x*-)7W!Tt3kgzOZZ!6f zuyRVd&#*pl?A-X_Ow#F%$8Upu2S*UIS+~Cl3+eC3piS@`C`CbcBdN?n#clUZGGhn2 z=aOI>RzdY+dQ;B=T9)-g;78zp>x$b|DrJh`${caU3fwwZ(*)?S%rn5X7!q~T_%o7j z?~Ax>u{uxMO4d8P>-}Hx{+!1=2ei2BGP<{b%?2lqN$HEeXJC&;C$~e>o3%Y(T=Vbk zd8zYT{ys}6C?(`bX`guBE%5DH{7-T}6hlUJFfc7% zmdDi-I^*eWX$L#sm$~(xlJvB*yN7@`^qTQy$x>gV_{`WhC)x)q(r0yt)7j(t>B#qf zJLuyvdW+xNt~iP@2X}NLpuU~m;*Px!!Mi32a(VSs`ZZ74e`U$UXLyNRgFZHQj}#E2Z|CqbFeHuu)+bm zr(xG`JsqZ&kcZ@Z-m3SUdU|ytN_KnSeN%kqJqU=d))Zfna&_>O*?rJ3v?At@odBKQ zdm+CA4BorOTnY2e(kQu_Lkr@`j>q03fCdYv`u_mQ9+mZ@!Xm6>(ie)tC{fUy5Wm(1 z4;r5!`M;^zPt5DR;5t)udMWaDkB+qWgDgNQ*RWK<*uH7*aCLXw5Il5P=f#LSc~62v z*r@^s&wb~=9Gdyx-c35_lOM+u@8>etXK^ft+wsLHtkeweL+sg)T?~LUyL08)X7rZ! zW=p^;D-@~VLB|P94?Da|7LrgL&G}7TW|Sr5IKlMi?$}<3>HzaZn%o`3W8OT5e!LCT z2kD)|<^KSGh@q#9z#*VV$A{#2fK^?j>-5)6+EQmciV01fjR+dk6yIJY!VzAc0V>@q zEN!P8?Px4Jngq%XHb>WZC&-|sm+RtdBGehYcd7w^;zdJ!UYR~PJSS$)gjgQqW_)iF zOkT&t${H@?_UWy_TtE^uH(S!+4|~gB?m51)Iy@;bAO$Pl-0ObKnQs=^vLg{cpdX$}VMrphvlCtXC|j9SqcW)Rg)qq8lCAO9ee%ncKOn{-q9f2d=<( ztB+1DX}^)xlW;l_2ufjd?AYHxiu#27^d-L8^}r(6UMBmD*r%z}%6ySnB9Hu(D0$z?h8_5RQy)H5)A6ShJQ?zV0A_gOnc18vg-2G{ z`}8+&r!Y#CHsbm4f?qfQNSYBQb$`kfEmsZ;94QzPBwGvF`S@AVj2PHmej!=?%hzG} z_v-h~k~`d$sGFTJhuP@ypnCe6&YzWsQ?AXXpGDAi(~vc@;@OX2;a@0dz#`ULBax zJ?vuo#;p_sJ>m&Vg1XgMdP1jkEmS;950ACa5AB1h@$?(!UWEvoVt(_d8$t%n&|)N( zTappF@l{pR5}*~7`JQQGI<4@(m40=@=u&sp;4Udz$f0kQAvqhQ~i{Ba-FY1Dlv+K#HE?~ao6jK}Mz^vwC-%fFYx&}JUHe)k@Ui{FtyPLJEZ`5&7P&Pg?r z{{VB6wF05;{(k3CsBq!pgSYVv?&;rVZQ>-GX3nK|y3dK%l7tA=boih&Nm%vcIIiwM z0U$>AfprY?#}7`zsB2MkDjMIp!6XFGMJm{1v_2(?O?K)EHon4&dFu3Cb<2{mi`DVH zZMX9unQs<+wmLp_LwyJl;V5=LI$NgPRBy*wIHl{k@+G34E7LKo+*h*}59Gfc8Uu4{ zktq}Ns-M14>Lcp#9-EXH*cRFihSmD!J0F60&uMA7OV=D%LuETo{od|Rj`@`s0;(fx zAP9PxHLqw>>jX6kR47I0jB}MV%_2B6Yqn(3xP6 zZ20dde5xscf~U${HhlL(c$&~Yi67M8@BUjm2zEXIm(pVlc??dyl<3z%dV_`Gssy4y zw>$1-Z9ZNhRN77ShHP{Q=`@@e`2nGTSzY;s_I1j99Ji%koO=Azh!FJj-m6aG0`~*X z>@(r#$9)7=KO^(V5o!y5V4r7k@3=MNqD$vbgrne?nhg453F5%uq!}q#=wRqK(XN1| z>%-{yUaty;Y(FiYiw_5SsBaID@-pbXmUd}-KKMJ`0Y`ivmLu}~2{?f?xLr%ABI=27 z-q=V~&7KGttFwL{L^z4>tW z6x@V;-(RFWNEx!Rid)h=Vi5ry>xFu+wEX{ ziF3fTUjCWx59WpAox7wve8Nd6w|wi9rE2MuBz>ej_-^qvJ87z@%%zJTNQH*;P>P_i z4vc-XNe$@Z5H+jg2O^5sxhF?2AZZLyU8x|@t3c35-UQg~pzvwgg`H-Vc%PsKE_&qc zR4vFO!j$ZWs3pHdo?%ZN;JQ_I3+}Jqo&EIdvnY%@ z&%{3a{{S&`G)P-}LFG|^c*fL}071%NMi{vkhyx_~MgLlc}ds9bL8dG?7Fl)u1A#mY9(5ziNn()B%gL;^yo3k?X&XX3?JXMY*L5sdgV8Qc&*`6OO1JhoH4JD!5ny*7c*4hIBA`}pv zEWV@UI<}`amB3UrH>D{-HvBrp>$Urok47uEBxQLTq9Mg~1~^Bdcvs&eqQ_fD!3igR z9{#%$b<|y5y+{G5nTUE=wCK?b-|S4?JUG<-Wr7`BrxL7x8BjYs+;peoh>Z{mx?+3= z!PDJw>y{0c5Ca{Ws;aPT871ihA0tKZn0f{ymhsggk4<5oDHThXz2~B+lu=$&2^Q=^ zM0r~jiPJ1_50HrqaCu07g~Ke6!tGJxQ#25cs2@$0JkUefJFFdhnA-$D_X^t+m$?>ZDyVpn9&I zHIU?8L$rC{L$S#Z&nUo$$L{vt{{YPhs}_M@$RrU}4svubP!4aYrJ+K&B2}~BR&V9M z1_XGJ6xi92ciz;8?=LX2IpG`-$zD63>{{7^Gfao(!qYM zzWOgmH{hZ=(0O`mX@576?KCILqGooN?3@AMl)a$9V=L0V9!G;k4@&n+{PjK|evWSw z1`d)`T2BF6xt#w1*!%rIPyYV^<2Xbw1EFks{{ZJ-bhluAC>m6{K8+#GoVXa*2SJH* zIKB}J(ISDkAhAK*&S2vBHv3@Lp`t?9+!C;<{zKm^kz(@aaz#r7NT;CEme zH6~6nKLgVA&?XQoy9cP51LbNEm@E~TRk}O?Xj*n5n!%2&UQbY)=|ZEE2TG4HtVgVT zH{k2zzn&prc0axXl9;4^&S?5n3!-E`?#-qh@BtQLU?;_c(Pzl|I6gH63MG~5!a=4q ziv__2l{WdVAssU9sv=hq`k*E!fj9JzK3C*Rm(q2u zkLRBSQ=fOIckRoH@)zNt^1Hpw4`6MYf>>FJ;So0u#3SL5^W{y1(RlxUGZM4b2e zzs>jm03ZDPe|~xV^ZDQ7kTC|iW4pC*Yt)PW48pNi(L<#Is~iYih|Z8D=}{yMzmPGk zFu)n@ZM)!L?r?h(z<^Hxn{Yn!gT}18fv~8ckYIBk=kwlm{Qm&+o_{+1y#D~6AVC?? zP96jJ9dX0uu7pJv?)B=s=Mkn25L|*PK+77wVDTZwstn4 ziZ)C%nl`vXfZR^A2BqaxSi_478o;9y8Hb8Q!UNkO2KrLO9)qDT!a$u+cMKZ0Ny5PZ zKnbcC2!}!t!5NARLr;U<2n3j+wBoVQ(O$0g7{1zdrf@|xO6fY&$XU_DVXMx@LBGV?c-h6w(s$orM!*<(F$QPjA zBEbh*3z|;fZr7x1!iR8BCZQxlQpfUMYC;8RMAKmv3}*uqRK=}&3vUiT`${Zb;Wg4< z>)HZt>q8k4$~ZNOD4iXz@Eh0(;w-3hsfw zCL_Ih+3|pD^rIRZz*Ni_2*eem*KfPmv!M>d);}ILhbvzDR7YWUFQleTQCDqD?aJH}wpFEN z$evK>U<*V6prsW%K8mM1AjH@UwiOF&gxH1ayXTC> zq5$VgBQ$)cuchF$2X!GMWVT7s7f9ogMP?_#*nmg@CMDV0d+M?;FpNT!7?`raK;RYb zAT*xgfD8vjP;SlZzkTul03qt#kZ~NC2Bx%JAJ5OvKjY8md^fM>@6FL?1z-WDqPjOj zLdA@Kq4F${7g6lQ@HzOPY4;TS7>+x{(2BGlYxM^*r6_=+TbHB&glYw@H_@wR)NcBVTK6ob2HPPpO#5QqTBw^l9zXa>%n z5NSJMut3)+$_IRd1Er;CY{<`~q)vx|m^YwDS3tRLUb^ED37s#Z4$I;XL{1lJ%2P#+ zTOda?QCMCydz}sGz0nFpqs=*Rr^wWASbL2a;m~p+O9_C%NG8-@L_9o6%_Id<$%D8@ zZ#6hPl4MOm9k2`=q0}i=CZ0854XJrZI3Tg9===o9fCdVG4WDL%)V}@}G2~N5L=nN+ z6zZcoUrWSAC_Pcp9+@!BhI*5Ku=ZD`5JD>hh>>JOEUst}02oR@O_3C7n$>Q%^g{-Z z+Le9t=dZ8w3F|YJcKnG=2P4acbe)|;6-h$?gFt?q53|qHjsF1f=Klaa=k5FRasEHg zzx?I;`utz#*Y%uV`~H9LKVRj)-}-X?KkxaR{(n9Gee?PE$7y+_(MSx(49qx$Qdhb^ zm!goAD#lj;G-_S zVu3EXYs4jIJ|PMzl0MRd4=rCAl*LO?ejC#vIEz*w&a|{fAx5hX=K_Nv_G9`VjGemE zx=hU%8B_|bE2cyU0+j){`$YJGf8w108np5Z>?l*2!p8Gv3t9G@#FquC{Y?oki8r|0 zn40Dny5U#^QbH_OwX%Uh%~UDbqwb$5qKl;#wZeodwM1MHdwQbQQ(6EDOhJipU4jb& z5ddHy0&r&rs7NVLk!VhjuU;Y}gRbb%#dMoKc_v~mRPE_89?6rXH~f+kAA}WFN?C(} zIHYHfQa}QNC=nuXpTF1h`tgtPzm89@?f(Fu&#rsaf1mZr%>I8rUU%Q^>%aTVo!(6I z^Vk0Vzq~m=Zoi+ykLT;mhr3fOC_yTf< zj-y3|*cAg8rJD0`^ehiRixNMB^U=d}(P{Y%eg#E6YK-KpRw@xtI`2kXM}q*42m#=L zv{ZJZt>St?hMCfh_GG><$Z$&Gq2W?`k`r04WqSn-dkm(O%P&{s`t_t`GK~bVqgO)b z5*;Rr{P=%C#7ajL?N;}(aoH~WAl5|%@zY?e@!wtU@t5Sxy@7T_p*;OK(e*@BkYVzO zFd+LI%)(kB`4Gd$!m!)LophEESVKhYLdDHTn;rlFk^q^*Ng_K6b>3Uy{S4)fM2nrq zD!WPVpB!rYA@WNDJdNAmA)Wob{rdijd^7y15xW*1)P#u|M)P9gOjlw)dT2CJ9#i8F z;ol$W?)`sWzfOLCpU>mZ=kx2I&%e(pz~el?TZ zkJXd70JL3*1}ej%fM7%5$Q^X~iXTKWcio!1!WiQXTO@vIG4%R*LRALFL%QfekhyuT zf#GaOk-fEQw_s}e9*I>6-E5@!9;N0%gaIE@VcSr;eWxivU~Ag58SUC(>sOV^iX3G~ zRbW3c#yL(2J($?Z_y9FDiDo%i8>|72oFws}4`=G82It>1ph~Y;{{V?`;tI6J=?Du6 zT8J)rwIIcF`-2HAi13AMg(^FS2#5fjz^VsTLV@&EdOa-Ivt!lhp}#GkC3ozJmq)j< z`_`Ix9;03@CJ@!4<;prdx4Lm^#5$seWAAT!-TweDJMby@gu1(hK(7+jNXTkkK|Hc; zLAl&Ry9hz(l;`vL{{Ub9bNTY}JD<<4_kf?z=hp>2MP?Yxm6eN74;>^o^z6?xq|L|5 zewceriCVo!fBLO!*>3a~u{i)#CLbg^?{N6(!q33#z-<&NkPqEB^@Ge$mjf9IZVe}b zcE)zf_d5%X_;KfWxvGn@IYFZi+eXF zmq<{2@nBUcqfVDKg?E`gc`*!BZM9O8!$vjPa_~TeQHbcBhi9`7Zvau-OR5wLdRD4$ zX~CgGpoG{`I}7Aw?RbvPtnG6Nn;ZlL@j*War28A7>C`=`@tTuk=IbgK$Ew$4pS5Q0E9^6evIx0RR94jQ~h~`2jw+ z@%lXTJ~l-GHyghZb@PE15vBP+{=jsX@oo=8^V#RZ@9WQwGX^BX<=*ekXU7*H@69QX zOz!^xo0L%im$GLprTe2t*sst-;&Qw%hJ5s2)8pfVL}SHYom@=F{qdnqOmcRVO`+M+ zh+usSACklFU-HEf7@8&`dU7H)kBI@33=VK^rLYvV-$G_>xCV4Wg-u?k@=}n&L=s&w zsB{3n0JZfNU$VhVIYfOcFPy%_-?^P3@VXX}@l^|~Nte17OqCDC=C>oID8)gW+ZZED z!x%*Dg<3!&)i%BsXj3$awOUcSfl+YvM}baM2nGW{fk^-s8NgV3VN}R^Ql&$hM_N8G z+%bkMiuvCvKp9{_JvAKhGpcVDwR!-i9`^_-`1I%`c?GIiy95%42vtcGW1*lx00WZh zir=$`?|=Q|nLXV*_&>dV{o$#I);IQ)dVc=^918S-8uWI#BjK8S`o^@>vP{F@>3(_g zOW+>71XBxqWwM@rtag$eB_EW2GJ5;mX+$I{)}h}`eZ8A};2j~1jt}~=o(~JvjyQ{ptyiEtj#ak( zQ{Nx6^~$tQM4|2?)4Vt9hms9i0&m2ZGVx;c>mL9EzyLr2Ill+Mz03~3W3!|0$rV3P zcx{C1vw{{A(0=$mnZKHFBBDifHXkqR_xkdJpge$dyTK*k=wtMT1FPcOHTn5N{<$r0Z=W7D znR`7yP6fR#jKnwJ?0@?!X*Pn2HdnrTJI+k~1s;ka-DlUsc03HnKMQ_aw!7c^Fe1P! z#7|3)+Yh(5{{Ua{Bq~EB96gl~hZv|uLJkT9jsO4%>Bqd!pT*z(I1b8mKw;Rq>3{2k zc|k#iR~IW#t8z%eA_8`wd-yvbgz@5PDX2N~@_qNk!!6G`=`Y6pXMB(;4EYd;D z;26@UM617s_ukC=pBv*|;dJ(U@z&=X;Qp8Wo9a*25AHhtpW{)vT0m|pG<}G8t@i|05J|j|Miy~O}*Z|FbVb}pZJP~Uo5qV4r zP;i$gLSDRB)$lKHYlPm+_&Rr;>Ns?TZ=Zjj3Y5Z9#B@FUnfp7$2U0&kfWvehJ1MV!o4){EJHQF*XK|b zYxmwm`hJh^z~t6q5C8@cE6`g3U#bG!>-69g)h->` zJ!icRyUq8XlUF-?`T7362uIvXwf z{Qm%c0Hdu`m*NfVT)(l%?fsz3**{C$`tZrrZ}5Ik>+E?>_oL))TlMk8C8jZx%BOP| zem^{e?wuz=MNE3Dko)5*s*&gh`pxe7>BAL|NVPiev!+g;gwut-;CN+Xro7Poo=T^~ zU8C48FHI|f^O!tnkr-fjk5{tuq-S90tpQK|%aBr;{>TS~h>ILU!L~IPnT7-a4jStq z+%@(UtZ5D_l_vZK_>@)`&j6o9}-$Ob%2g^EJz~kj3~i^AJD%lpK1wcUVV>dOf6Aga(L;$8d>Sw_s2GFZhe5JO7OrA zhNcwxbl}W>%nrd6>&kv6@Dw5Oj0+&wVoLw^+jP=bk=u|zhozuR)`u^MobcaLG4x2ms zkLRA)T*ix4OMy;0a3IJ6-8DjSi~+eG#4Z+Nwqx^kS%Iu6}C57+j8 zZVs?P9C)_v(hG_I0FyI~s}*GmD!=TR4X6%T&}J}$&H`&&05c^9F*%^wq14B>9b=Q{ zz<8E04AJLZfNtf6`^d9eCZevT#y6=_!lfWI9)qJ&Ue5_)knDPvr_pl*B>E>r5>X;7 z`aAc%{WwQW6W;Ar=_UG`%LxlbNM}uagx<}0A_EX3r0Goj&&S*X)bHcEKa28x_rt8% z=`-1#kleyu2A8}^p%oD!C{JZ7n;x(HPwT{yh@K6Z5!7h7pRhAH!n;;bqO1PME02bZ z9;^Y^I0HC{&q0T&2oNBEP>@Q(=+&)H1Gj`?T=HvXS!?!1SLcQYs!*7_yWV<{>y*%n ztU>G}vGdWew}^lMA`lic7fVXPX&NL23aEugLPi0Uf4fu#BKQjFPfWej!;B{nC&{`J zUDWEIFA^d!PmgwZf;N|_k}W7iBttb5v}9%Nhr?Cby)Z{hpv+43*?U5FSUjav*C z9@6xH>(M)skr6>K6bnw5tQ0)C_W12i*IvkAVPV-@hb{^xLFnur;!F;FM}yLbqB2yJ z3OS}KO3JWUEMgW6d39F(N1cH2VDQv{3cX=P#fqAOn1kyBzXi3+%@oC4=`=VaHNU7h zxHM=WVHM884PD-=3D_JBj&1~@*vBAu(<9IkSiOVOO#p3-DRmf@{a<%()4AJR2R+NQ zb>4BA`vWtKE45_`D!=T6;4i^pr~-x~oN`xTuu*0KfdmR!QJ}}ajDAJwWaOc!=wM1&d-J6^iHYz8C&X&Ni%7lqjnI0Eg~T`-l4w z?;WNSs!fy69OEal(ku#Tp#U^awM;w@8aRWmPUQlYn`_$u5E9sEd{cl?lzgD6-@$tj zER<4V@Q)WeyvG^S%h8NgjfIcn7J>rpCfsz6w!Uf$}lsF4kkX6l6R)Lnf`=Rd`*Ic_yc(Jz*gf+t z96E&zQ3m#RpY(T6R!qYjA!5Vn2Rr`&CTAN~D#{d9f5p+`FUhC;AM7RhhZ3V8I8qpM zlSSv4Bk@H59Bw3}9qjwn&hmJCMO;Y@7&J2UyBHhtaAP;E1%@Lgny478X!6JdR$NY} zUtYceUcm#^K?I|S_%A>xBq~(!dqb-s?E|${U~{Bj1<~8JfJ#HPpf5EOThglf?z;xb zw+?z@9V14FnF@RO?_PRFimQ8m6W4h4pF9ynK~)F{#3Uf;KRoC!c7xp4v7g(BD50W} zLS346Ia*u7SqW7D6q%8Bd@tA;oMBz7C{b1a0N^=x!TNXoF9bn4K|f#h_YkxTDUJdX z;O7!#)QB;_v4Q|aSJh?ZqLyY@T&t+=Kp$jEJv%X?v8!!wk_1eON9 zg)2ln8zAxy0ANQ%Kr0P(vpm?-N~}!`SrH1Bqp3Izqv#Jdl*;1;V<0gD!mxM%?EoR~ zZQ{Z31bZH}QmxLV*aZ3>t%w~6^aV`l8p4e>nC9u!)zk^be1+Zk26)Rm3V!_X18Y?w z7N30*&sV-p_vkPmUZl$T->@?{!n;;bqO1P^$_S51AJ>W7w*LTDKhKZ#-vSR6%m@?; z;NbxR>#5vSfq)K9Q*be9QL(40_TCSsvXPVDvTV-*sl-drM0H&fPhAo>uu3tW(&X-# z`cg{7A;+}Phgh{V(y8(q1>~Uu3x^AWQe;lIMj%G!?$!nBRzV2K#FXk0c(BsGr0dTo zXUT%i7$m!sz8Ywqn)d5LAolz-ltey~bR4OLdJfX?C0z+Jewj$y^xrtM0)pR&p63Xv zNFCln7Sq?M!5e!{6)TKSIGiq2rB&d?5cv@O^Uvg6^~kCW)DFjV>pi`D$(IkDzB|t` zx%YFNAXLSI&b=4c9(GMZ(8o(sE#`Lvw=?zUS--~r0P4u5iP5DxR@k$J5ySpaU@K?x z2pqO9yjuG{joDs~L~#aCe{-SYtcZ4jM52Cy z^RU4sN8W?Mh_3B7-z{y6M_mpWc0vXUT+m+NQgwI%(5VF>qPh)Tp?W+`!j^WS^z0}T zW0jo50T4nYrY5L?*L}QfhC=ip&}g(k+ZS8}3aHkhRqY9)L#Lb~qEu*t)`J4rf;}U^ z`Wmrz+$h7ZuJzPF%pxZCbQ&snfqF6=vQrBSq+~`DDn47w2G~bXStp|gN~j@V zH9IhAJ8NDd38D`6jTBr)p`bijnmj=qfCpUh_ScaRQLndJ5Q?;Hk88%r4`q`8_gc>L zA2^l)%61N&&|M?k0|pd{FbaP5~6{m^q5`Hasf#@ zdO zpBIgQPy&4Y$Arhew}H?QtbOI08NQCr__#m}i~`<(#<&$8K!H-B3JjtGUZ2Th!6;(l zw4zgMf>{x75=IoD)qEf}nKbtI!o_CMR%$Ul=(lE2_~rpVV(O#F7D<83uVDOteO{48=(>=)@fwm`o{PqTC8Wh^LBzLZDfUE%qu1DP2-_YtRc=&;|wAm{S2G zO-dM`3_`phDk6o)YQ=#mAts{9jtkV=aaLb<((*Hcgg+rpR05yY6xVkVcXsS{0I%vWyzdfix|A6+|J>0ve|ULj*v8RB73WRXz*0 zMxFi#*(0;5sBX?2xn_V&S#L*0DZocG;6RGgcYIgB&M=}Vra#B${X)WE%nKy|4#I>N zgo~v>UcSJoY4CGw^iUPkqK=69pR)uYAOMWo_Vggq)InlsP?JY`GwxRj$Re!8Y!Nm> zwR;d2aO}c|MXDG81rcqnrHF(&y2v7lH+hD3RO6MjrlYCxfJ6ev$igl6dk((;lkEi6iTq#9*>j?Lh;KERV1v-6t zQw(V=c$yA_Oac)vQn)_HBsv4s{aDDA%QE-hqJ)K$8t;hxZ*wZ$Rf07Uql}0MXkPAW zh;WzyBK90^lcTm34$;2!+bFbb)>xvX;n-Ubulp9+dM1loURo zFrkAN0W?oQrcjVT!nIpVwN5IL5y`6BN3{{2)ny0BJXNryUd7S~HzWXQ50E}qMo*Lr zK}uOaVvs}?MT@=!!h%f>&d`VkiXjLXAV-ixsIs(BT7%69j4BmQJs^m>qix}l0fnkl z4`>10A_oeHktgIcQZ_Ig0(Np7;9(KgjYA0~y0e?YTKl=Z4YQ6dxx zLDu>&*95468UzUE$o7+{d|t~qXe~`ZL)=Z8o7e#6&% z7@ZxOMi9fEg$*FPTH6*5A$0U2yrs0NBSmV8G##Xhg`i>{vuYnUl8xd8(^CYF;gQP` zF}xr{&n5&BMFazSUgK?wNK>#}2%4n}K#IgyOwdXc7#!_D?hLSsjO^H>CXS>y==6!~ z7LfFarA`32RRTguNFYlX7^PB>#0Uf6ARTN$w9|&FRT?n?2b2hP`3PMH2Fcd!G-!mt zU;;FK1P*%9j;o=j(E&TM1}(B95&BWGS%GL;lzY%Fe26MfLy)E*Bzz2LTIao$c+u9-nsZ;(+lF)(zqXy;xTwz7{7OiAN-YK_L|37KxQYclZ>oik2fo@X5E&>W zR6(s6q2Ew+%{%G%>xe7ZgA+nbYU(qg`8bgak-DebciKIA?*$(Kgb&NDnK$Q8T!cUg zt?#{HL7%Z?crlO29noo^OY)u^UqcBnB$rJ`1g=(a584_f080UHzv^YgO3wCz2SN^1 zC;<}+^rT=xMzs^6v2FBM3D8*-9bTMKCMdNn0@e|v`M4Adhjl`gz&Yq%<>Rsn5Gf>7 z$UX{3>11-?92r)jBhq-bE~G-jY%%W$QA#_`5h~LFr=(`nJM&UcwW|;ARTJc8Zz)yh=vi0f{CTN zV$u%-NTM(tSG6mTVLRTo;sG>g$W(v{g3&_49RbCF2lbkcm7zx+1tH~)1nOKR!?TK! zv`;}56reClIOb>}l+2>bN2DTc^!dyMHBvxIYvE6pWyIkffPk*#Qq#25wV4UTjU>(W z9@t~whr;#6YEnh59l>g(B^gNn0I4v}eMlf8fJ8(=8_f)zqyP|lD$_um8>18I0C6cp z1VD_@FQ}hO4|wc65xk|OlC+pUArl~@vW|3sdH}y6Ov_%+T)Cs75kW4<5OZHhgag(O z!5a6VEUgx6qR&QKx`FC5fc*ivRoSIA`_CB1G&~CA>x`oUE(&K zDzJ_aP%R>=lwL{l&ac82cSp6@WKLS@`fmCtG)CUGc)U?9#^8e;?Ezk%ySv2mO&+Wo z3$CadgFSfW1Qrl33k&6Ft3Wtd0wPqZ^hWr(cdO?$U7I2wyZQb8 zcaKnZ!0w-IfHqG!p~Y1~trhsRB1s{f#4f8;zy_T_mD%4t&Z}X2DTf&{LP-vJf3OjL zZ`3J;1r#}CR!CtE*_|r)`ey)O_o3|_?wQk`_6R0KKq*AJyNgu9Li5ph(uUSX-$tEI zjs%SnrGL|F^|bLh0%T5&WUTM@Pv~x08Xy<|_5YgQ`T-aSQ0q|T zFi;o(XbdPA45+t300{sJ01XWd0|f>6|L6lO%tvTAC@n_hLpq=o+$Qv|GMT5$`9O!;0z4``lWClPdE}>}&+TAW))RYSiq-HYc`0L*C z+jt0(PV5Oapdlns8iUQ%hilA-Y7hjsT=dYP1{P}-{CRJOa~gWkczEj86tl^gf?vO} zOoYb{)9VJHJIg0yB~8SAx$H`2Dp|9AvVa#~B<>U@PG>U2GUV}!$#3uIlCm{64G}jFT8|uHZ3lD^x_Z9Im*>1GZ|$0JZAXfuiigYF$E&tcseB7 zx-O2UOB&+~)Zkq!*M_77BDm~-orrDrZ$hE7F&x09&GBVy(mlh86VNaPaY;pbE_oVj zCSV`l=yZDh0Szk&7(p@<7D=+MFHZyQ;0uA=SPZ-)*T%-n6m!PkgK*4oKkB}o=bY

    _Cf-dJ4#ZCS3(o#67t&|J)5k5{%$y6g{e2Yx*pa`^z`QK>T==QI1Z72_aW zLT0@#xs}tR996cJv5+0de4+d^7bRJ5u*_`CVcUu&2r-q)KjkdH)Sh!_`jguv>H%C=;!IENEIjGrMo+4L}mX7p?2aeb`*#|LJOy zSzv7ZLL-ySIu%}C{2&7;^bxY?5LlaF^LpQ0K~<(X>P~A4c_GB3%*@C{B<~b z0GXsfT{8bMoYKE3W&lA(e>R?jJ8%XkJ1!JVLXae$4$e92Y$$h6HHk9=49*vQX=Ztj zm={+_6mk_~!Y*I18u!L+NhYdpTeKVQMLDY5*66|$oo~WD+q>?9R%&LHEkUp$U8tdd z2WEX0Ru=F}Z*8d@iXPe|I z-3hDr=--YuGzMR##>-g zawB{b=tjOjL_hH?l=%p3?$&zot_n1~Qga61tldHf=v?XK3aqIz-%YW64o$|;zL;<(M1 zRWqK{SraB7>Hy>s zv|2!+XkYG82Wp5crcO&)KR=6QqoHit;_0-3<8g(ZN^?sDCudxPgv>$s3|&5{!Lpt# zu8*M7S9iaFvhFHTFvJz;wPz|Bn*joS?4)o`gb_B2wl98}QP~MvIcoIqS@sKL%FoSg z(YW|?Bvn~yD^w*^^X-U)CHE&dHA3LCpB;?fpZ(sJe%V2n zZ{0<@B@zyGC4TPEt?lhsn5C_Z*Xlh~Ts;AL|{)|a>-VB_k_QfCo9-sE1hW-q=# zW4h!)5R*-3h|+l;1>juCe*;WGAlJ0Sm7i$4=^qxiZ;)0UH|ym_!y476+k@s<=KH%( z0&IM`QWur$@&HTc)AklZ-uq4^AXR6!N=kR2%niMb*Y#Kk|CGK?McI{TV>4*kXQ{hK z761@re^`CqM42z=?EGTZ);C>#5nZM@sJk1PVu*ZcM}G{K>e>r^Ogyq(RRN&&y*j*D z<~oj3;jvU-SrnFo%QiX)kE{RyU+VN-XR&#FOe|p;J1cFM z!*k-+eIk8Ly@moLb`TX8>yW>85&q;G04Ao|Eo6yG@yP2z>eumwfZ6Q+Nwvv>Q@T!$ zof4tTs!?C}MiT%4brL;wf^hEiG&BCIV_%?C zYhP}kA~S)Xm!SpMVxmoo4@fFpd5&;AMD{{Q&x zpXvuVcvysgqc>>u{~AEcpS%2zLl~ItY_Aey3uTKjXP6pyhHtlo0a{|0Ej5#i*x zaX$|EI_VYN*r0aDOf(3NGFjE!Q4cjw6ZI=q+yWj$*G6BLWkK-N^~=TdFdOH29Mct( zCk^7F>ati3t}1Yc54&rZ&|)vF8`QJoLpatnzR)v03D#z=XjCSZ=a5sF^X)XEXPsmP z)GiTj4K(m(S{!Ic98L1b1@!GMu4vgdjIl=zj-yXp+hNw{&{GpiZGYN#sJZ=?kq zj-7P7H8R)UW^__mn#CozjI%|54yL_9`+iAoYSLlV{>fC>vZX=iPXGla?^x&1U3Vk+ zDlTacDbkXRb07P0D`6#FY(nY1GcQPBC$AVm>BPO$Mz#`m(CTCD_o*)&+;q{4`x9cU zVM_-*w&rOTE8?F#ge@n+$JlQJDRl(2l{_A^csB!hLm882vJ>kKt!w8yhuK^321{$1 zdXByKsZqk0ay729nEN9I*B}??LF4;sNyiK^I6Wu|K=*NLXx*mxH5waHXzSrzmgX=<@F>zb>y{Jw)qvUgH7 zWf^Ilbs~ias_=IAj-FkdU%&04Ewrg*N%0MgA6tsfj`ckHlkP+)JAJK1oxaay!P6kO zwi&&rE{9jzRGS`S%9-}`f|h2n;a}@}qFLX6Nl6@NRvNB5#gZ~eT3i1VV9!ved^ z*lw-c3&7;sjH0bKv;4fInYg@i?mMNYRBrzqLsh1lwh%yn(zSU|tc(MKCH6!rW!PsO zEdH$YIf{!RI;V8kwYr|4QsIk&orPdnhfW$O68!y==TMnO39nr}#x-hK&s}*zpeCx{ zwFBEC0zJEa+Tcu&6@)wT9rRo!j{xGT7m!VBF?B3|aA+sMk+*0Svgk@*t;IX?zdLa5 zjKjIq9W}+7{$#@1!W-<^GOc!vY$NTdGvwj)>8JNG3FB!Q2=Q}Oj@ z#fi?*rtYGS(%@Z1C1i$Y>>%w#@Hhedje|Gi5@AYH(+%CEZ7#6VJEontgJ&g*?BJjz9G21w804M(rkW znqp3R*9byJ?wzs<8x_t&Q|LmTK9_1ui?0LV$97o;ArUxwe2oTruVMSkN%^KclWyeZ zt;>s#*>wQ4>=9dSzhc8L^rqSR(o23Rqta}{rsnR$-1YuM`}Y92THI^9U%Z3#ZFF=# zZ-Dp}LsK`5hR-!!QA)ykEdT)hZh%B_mTLHt8N0IfFOZn~MueRyCu250(d%yjz>mqM zZCd?v^y+O+Bnr38mGu_1 zlkqzbjQ^N%8`nTOjsdKS9+#7VJ(mu)67@;1-Fvy-ci&n#{rpwcwEYG4SK-ITtWsU} z`yA_<_gmm{dm$BPU5}nSQF2;RBMTYTrMuq6M(+sy%wNGYaKO)c205I4yc&U?e=I!I z!3$YucS^Q*18aG>c5T|j^!U3J=D=ssIcmw`4e)uy?1?sE<0iW%_-e zd4zSZ&jCig%Ta1gBF5+;&lf^rI-tYT$0~9L-dE&zfch4hwYmiPcERNhAj2;8KELne z=q`-5^DhU0Uwc}A0}TIHLF>Bhw*2QY??j@0u6ofV@-Gkj%jVzT|E+*|_kzU#I6x@a z|Jw~h!9&A*fJ1=&i1@D`g!yNd-U)>;;OoB(48%`~ME4<(8**{)=TE@x8JIZr2-G{h zBOafApB~5Zo2lIS$6B3Zf8UVI`cl1*BKf{(o+B$jW>*oIkQmk${sSWF2#K1tjk;YZ znTD#MLtoq(BPyQ$hcgI694naHD^u1BP&M zQpsv_)P9>GUrfg25jo0k!>VGZ6g)&r4lB(|^Pext7*xKPhsz$5=N5)2!oV;_FZMy3{)stIXAx5zafizXHY`a|Jx0?JsNZ$b z$_ULUwL0@k`G6d|&Y~4(IRO{KCCGTnoh*>@)f!W+u?2lulF}@;@~2&cmRIjCr}OjZ zS?x?|rk^Fc$amL8SW2Yjh7`o4Ai-_9@J5J$|D)(5!@w()Ohyr=8YBuuwj6h6(|Jad zyz_;@E)_gZ=Hn1uJ16`b zd|gOrT_=)c>GuVMc{Fzb6j(7C)_M?xE&-)H3NI`#zp%WZ2>jX=BkPTLTuFpZSd`wr zQH6Iu$5XNMt|UHq^r=0BKhRlx1F+qpf0NV?Uu8+qxPgPpaL0)EbwI;~+3BWyWRHEM ze`FEh{gyOaKuPqA+0@UY>gn4}g-c_u)=*NXBek91i(fX@jqeSO8*p-?{bxR%9vex( z!*WOR%B7FeOwt+7!?osYj`lraxw})K%=;N?U`WU_MQk}KA~7@Z8dq}1hHsI1xvAdA z0(NyHQ`q+gW;6dHkV}Y-5}GFAef)dYl)98hc+5bO%%1Z%fDa77>pKn|<#)GqFwE~r zPFmFbNFhg|r{fJ$FLl@-`3wx9UcIY7+pTNHiw#^ctRcQV>qdUHQvn%Clqs}W0^8OV zhvke5Mns;UonBVXeiLC`|Js+UYX}L?Vc{!|<~nNVb&pNTc-b+i$8LyBYR~CbP6NAeJ*_>-^dz1+a1l2Z+In)%f+wn)Fv-0S{WF0D!{) zq(d6DPmTK@W&s+X&)1Cr@Z*#2p5RJz+YK+vQ0V@R?uJiqkVI^^~|2H;bBX>`wZ0 z(fQ#yx89qCI(cH@`p&QZPi@XSj_kY_MP33rKs)n5xFx~LTHmN~oU*%Oncm;(dxv3) zA94YHTMqAkJy0BQhuqOPy6ei-_9V>O`xr=o8Q|a~@~-9g8uS#h;=%FY_?rl3;{x%2HEMw>yCvEH`zrk*G9bnPgK3wFzaS2=vZXmY z1_CyVxh%mm1ENo$(5K;j^EFV((Lu)ccWqn=N(nQ{NNy`d;gq|J=_Y%!T339PFPI4u z7GVTp;k2maUGgy7PF**(`1>o?todt!Rt zXO5H%xQLar#l@_;`dHZ--O>_s`4q`mlU-~deA~?OEQ+7v03XHC0C7wJR69fz>~@?a zEvMPb^`)ktyz=DvZG|`ZZvb6X^|6Cgzw>?2-zeV$ONq+dD&+?SUx-pT`{QF^2=Sxv z4e(OuSh(t?%XuwipZh>PuCvVZ(&eY}v|H^Htpqd8DUO%m)Yhb3 z?rF73hr>MZyg|s;p89vh!ym2StK)25_E5s7ZywMeTx)0uZ>xd4=7u>6#Z88~t95qA z`;cMV-2gfRub^E>NwMXS83`k+#mdBrOSBvdld`OBsqB(+=uS&EejH{LCh1(96X{%H zAQi^fZ5OKu&CK#1Dp6rno;-UVRp>3441G|KquE-sp4&l z0=1FyC@A6d+BOTBPw1!B*8G2z_+LKnhuw;z7gu|>Hgr|$s9q<+N3R-F1F2dGeMv=! zIq;fKxvJ8ssj?0k-0&Q)YRd=*9WGO(P>MCm^PoNQLj8D-gV_NtCR;gZ(pf zNU4f~gMSn#j$+Ts_NwC<5mvPLmYcprn^$rM(-5wtI&g=WPO0#07f*!h>e~F#X4-1t zD_km|BUc)!rFwRZxU3PF0ScAfdbmK037yDgckWq`ec*ly#yLfqN(r|rDAd!%xERkj z49OFyqD@aJ5x+h~NXKs%-e5^QRF1ZDZB@pB zzOoLP)GxuWEZ{^_NB&_wiQ)v|L=|Uy-!>**!Jn5udWuzEsx8MgFhj}0D!m%hVGHc) zTrsRPRE@H3b7U^auj_O<(C;y7A1VLH`3aL)!`%NUl{PcXDgy^kHQCM@>u6>dP3UCg z+)n!|uz`nF4cVt~1(CqBxBW=%*THFI{VYoqztN5Q&Di$It$k=3{OT7v}{+=N6uB zW>ECy=?_7HoaN*1qt?2}D+$Vq9f4eY2-Rop4)*QOh2i-HHWdb+8AKT6 zQJ&L=glZkBmX~@Ogi`x{Raca|U`DoTDDdUtZI`HDNykW07k=aIr$0W8)~kzl5}Ld` zAoh2na{~^|97gkj*WeS8y;$6UI7eU&G-aat(!^h<;jvGn4pb_Ef3(yhN(54KYpfOB zAT+Ml&#ORPWd-QWnpRXLragEGn`_?y+yYM9XyUY`=vC98f_Cr;y7ZbMOSGZA>hL`a zOEiXJr%ljTaP1$xmRP583odI`R*hc@D)E2XAO!)cwGpOR>ak4Ktc8i%h0<%#9Z??k zYdCw4;F#)}(+JaUp|WeqH-Ogin7piqTZ$?5dHK{O1AHj^nR;G;Lz6TF`)6I%mP--7 z)w6GskJY-Yw}>X^{Bi-@PL+nKGJfZbKI#(3H)M_ zVYp0Ip2*%z?en;oC`CBar;bZY^I*4A(sgw=f90&-}hGDYvukL&soD8BB;Wq88EMW|k{ zpIe=%eGl^BIov(nJq-%@iNos83f4#Js{bkAV_4M zL*W=kcrvAJI zkgs;OO_+j0lI(s9r_(#1`Xpl0B*bvmDI&fdsvWJ=44JkC(6ew5K|wSlXtQ$X^mJyO z61zKAaaa>K%bvx5ZQX*K!pPS-&Ni8oqw*UoL)e(PZ8i8-y4_p<<>YI^3H2L5tvmH} zqAt*c_xTs@UzCgr;2-Y5XI+0X!OJyF+|@gRa$8VZa=E>br|vp(zvob{jm&Cw@@O|9 zEfEJs8rX7=%ST+xsRAvc5bxwxlIK>EZ>p>$eg*IHeHXFB3jXyYEOX@&Z8^Sd{8&3F zr&W7uab*>JygOqkI>P+q9P`0urnH9nhDcQoqg&9q0_B3!F~nHRp_ZKFG^^D8ioNJW zgJaPJc7olBU3#z)WGZPhsOxG{#Y6lcXTeaP*AKz!IUuMV59tPXg=(wf%E}mfa8kvBu=5)9DyzJ~^D&BX$u^#I$gRgoZt3 zo<|&^H$bpKChsWStlG!{{;OxU_E<1i=-NkX8Zr2v!NEli@2_a`$qk;sPAhPku4U3w zD>5xroMTva%i(N|F1?-CihddcUac@<=Zj)YGXD-*KtBR|$D2j!g6gNb6z=_US z6z+2*sjQ)*w7VVU3RZNd4FZQFAZuUCP=LQ>`O?RmuoyvsrpUW}|=;Z-$_CjldhBpXcZsxrCn9wU#dCEY=2B(936Q z32hvFO52Zz7MA)+_YReLv7coculx^7LrRnA&eDrF*E4F(gEz&r;%7LjCrZ0Yo?o5i zH~@%HKb#1f9HN_}>oa@w)y-d9XGHaCd+>YLJkmzbJFAafMxmqV5~K3G7)#1Ily6)a zOCMP)Xe%zere4(vpC4RLl0&Ti{Y}BghZvdDT z{2|^C4qy#{wM;SDi)sNaai@_%i(no3oE(bk0vy^J^uahRuDZpFePXUKU)GUnM$|m8 zQE<1?*BAKoP@`hOdet(wnd+nNd`+q=WGC2an!KQx zx*+LqNjnZb)vxT5I2=NtyVA&W zbRp!dbhp?k)!U%euO}z0g-@Idgr)?yNO`dhv_Nal^7DeQwWxuLXLz3C5=J8orh;^<~ z-zNfuD^2KASeas-bCBX6JJtmDw~+lJX?~)AWoqFLnfS1en zOhLF7_e5=~c>!EvM5saga;WcM)Yqa7Y&_Kb;h&Fx_|zmHh02H{Yro(1(OOf=6{s<* z&d4-TFR;0)tMn^NSOdqj|4Kz)mL2dF60~l>rFYm~*q1x(H(995!7}GM?sv>}m}qFk z76O2VtvH}b+!Ihj2YD3fL9}=r$gu*RczI@};(mo-`>~C!o<7BAtR+)caDWZ{mZPZ| z7T}JQvffcBDbL62B%04*4xS+I$;kBZdpE=M z-KL7->e!*2PLJ;>tQVbY5j5yFc54>VJ(r3}^>YzW!A-1&C%!|2R`XE|cGOkn>gnR0tyqbTN9;cQp-%@F$UptU*nND6C@3 zFFw#3Eo$pHPF9i0oHRo2O1 zVl+swHcsC2(;>bsXbsnWOXl{4rV?k-`dPe%9yfE=r1Q`>4gra_Dw@+Yi`(H=Vyfu zF``@TUgcAv)V&hiGihe!8cq!uW@$e}8>55=w5>G$aa4LQ7K|z5d{HkDQhn zCITts14GI4*k&?nqWod$uv}GE-dE4{aeKibE3$C;8aMp3D@DH#)oyJf*UBW3q;Ws{ zu|O^S))Dw_fpXrzlO+Fx?fmK=CahMQdE5BEKZ0Hj&Liu7na}C9e(tMhRM$vM&i>P19I*V^l|Hp zlm^T=&IA)nn*D0rs2C+SL#OrK$GMC(@i7sD0YySL;17JA{77o*jK-x6SEbL#vg1o^ zdzxvQv7EX7Zmt#Q!NzF`>hK!gt-~CL#U^R-1%fJn3bgVgR0_Di8>)OPhi+>fcB%B2 z^deIA#1ok%C*fWAJhpaWuk%Hi;+R-?n9ZFp7XGGIbh+?zQyEzZRWN=?3P@>DaO6 z5URG4k6h>vQdx7!*jF%Hq^^oFGwWqOU%M?Lb}w8B+O^M@sQOgdeMTMLO5Sq<-e#WY zuNKAIT(0sDGxSy?N`dW@<2`x@Vd_)vP0BpkL#(z6ehR>oh>szHdro0`zTE)wWzR#7Ei23G~0|rhR%Qe&rm#AQ);Y zC{@)Pt<+Aog}Di2E$UH2=b_M+bzXB^DR3ty-en}RCaE8Jq?SmAShPe(&_F>S$8uzW zA6zl7s^mCQ%rnFpO8exkOLb;7{LE>R=`oEGzp5RTbX{&cLNg9e`^%h8zXb(st^XMh%6^7HZC<@lA}o z9gI_QM1^3=_Pel2w^4u%V=Hu zEVY$RTZ}#5`c)LalWXQhHe4aGzPPN$SY7_AWN8X*p_DaQdymVXWz9-te@%`+%t201 zMhvbuUgQJ1uX7aXZ1-~Yt0|sGUlqcj11KRtLa~&WTj2YQkjjt6YcJ5;KH3LjU?;)3r(jo^`ijjA*5`TdC@MQ5XwWcb^CPVCx7ENnYBocSFA9 zbWb;%%44R}(>I~LyX}Igl~S#0w%@m~BP2QOzn@0qMz7Mgz!MZoARZKR`}`5B&rsI9 z%)(}ZJEflaVDPn5ibpE5P(gX+Fhj}5hdBx-KakR}u+WVb$zG=dmXa!%2wm|xL>0Ks z7BO*F;#*zxa>0ya9NvihjIkatE!@AH;Q-Mrh8qHsD-?`(p0^J<+ zxl@ZamMW&Tq(}J6Jv3J@@s=ZH?G{@}ukDE3=5=fB#Rsc)lx4}ykvTk&fiaI2cm{sD z1X|3t?8#U=%D=91R%)b=qq?8HjI^S=94$OspI;*hmOBMGBFl#?{X_pS+40`mggb~_BopB7w zf?Ie%aT|&f58%0Bj2?4uLFck99IzQZsuK5=sZ5m?>&`(|4`WsSt_)A0$;@5Ml$gM! z*9IJVT%Ja;MKQN_bet8vzkkj$T<971F!!bZl9sf}Q5DpG-2z;*|uQ0}=_U$0@y?QkE+`oSk@a%eNC>RIlQy#Legw?CO1<*t|4jD)$;WSZnHPQ#hNvr{t~#Sg-GP}9ks5_GiAJd(itv-xW0-| zbe1_nxB>EkRgbX-GW)x0_&23{2-O4}mJKYnMn6%;h|MI%Jr_!*(MYf4x+95o{%Cp(q^h%zuGjS(7xPP{YR_0wt z7D=xDgH=iW=-rKJ!VXPe;%MA!7(UFQ3v@{+Jl$$+ub|kjh8eQrvjl|hJmVE;d z(~lTa!9|vrpw=;+?oMF<1#sMa4slj)#TwZ;uG7~-?SOv32KWMwKGq!i3MLu6%NkCP zSxjFtgJgy7`HldBaXHv!OF~ZyLl1;8frQj%bCq(D6#I`_YHLV+%q^={Da0q|4kkg) z2gYZDh0i*`qOFH_&)s6@%$M-o3T;h}472T3s`i}hk7FQ~K}#vCMV2>jBo$K#_w-kE zfJiVNv_kaDcw9+zw1O}1_=&Huwt+)*t_EspH$$}H1f)f13Tm*jleme&IxhYLWaGp_ z4!&y!2FEWX06UqN&6Rp}0p2^B^rq-hKO4j12l_|4_7J9)mZXw(xws~LS~_gC0C#U& zP>G;!;Y#6B3r?*WDjFrZ84x<6cirJQ!uD>sJ;MOBf>Wi)zM(dU34vd6uYA=-ls5O9 zNnnTdP)#)$OH6YwKqaNQ?pf6Z&FpTe5`7(hmFSH)3ob*T`gM02vBOV0V$!x+voNmD z(RT<8aR~9|E2P@(s0hqaIakZ$amN+L%vo)_5r%56^03FYMC9g(|LrN(E#5T5m;8rZ zQc}%=ax=xN=@F605#6aIgkrlW`-9ZMT%E{;=lx8ehIZ{X!uC)<8Z_sXHBKa5!e?1q z8Is5>qQ#NlnwM?m>qKsWk}%v0N=hG)k0)(^Aqdz+9PQ5Fx(`Pj#xU)&@N&3lWs<7g zSnFovW(>uWGCWXl-Y@)J>h|db=FwzpemHza446u7(%s)A`f}+|Iv~32R&+ngO|*?+ zwbIDtn;uJ5F8t|A+Sk?jQcJ)rb9hF~$hZIuK^NLkEwroTdeZ88-f-+Qs$3I;OA?h<9Te(tfNpaBtN;!mH^ds=}0*!`7ydUYNS$mDZIPo*%`mA>_& zJ|o|ckdi%0qoR^RtqS8>3_`nIKCp5PEO{h2=mS-94_}u?4nsBo;6=n-@x>k zpg`MirwEG(3^B*G&+O*cjDLN>-JKaM0-?&W*V(V2sb?~u$>b)Cj7L84UUzQ3=&{*s zD@`?btx)O{>rB21HSyVn`(30ECkU3e-FbzggDST)k$xx-L0*pBZQopB0J?3Z;~Ktt zOH(xV&cRr?WEWNVzC%XiIu?S;MUba!Zk}3dV4+rPW2vf@to$U^nKRLs7}LUnBfeB! z?VJ29EL*cO~9M4#7X8AT=D?qwlIMe>MY;=b{KN%Ta6-!YDvKHWF~Mb9mn zI=ezE;i*nEmpb)a;Bc8CK0avA`iDbnHEY-(3TOnfymisuXema*OzYJSN-6!>(fee- z=}{u_-Wds`9pkX#tog`K?WG@LavT zP09f8^1WqwoGdhjC5MQ%@Zd9WlDJ}80yS^@T~cP`T&)@M+#5>|s#!MGyEE65t$~x} zif;hhtk8xC#X$VjbpFO!)SH_g6TFP%bfQ0Z>knTHgqn!cj?tlTWOjyLUyvrgdcB|C-qqh+{9m z(*9FQkOXUk%xGoZ+}a#W6jJ1XxzpfMZs+eJPDeL=B~e^g-|?k$nBnp=Yw>rqHnWWY&7Sf;;tNxcO!vUz z+;%o`nyQbZ9=m%6XWn4nhHLNW&Zl;HI(XKb12J^(!8}dH$kAs$pYg;d_&~>QuUhhg zgX2DNlm1|3vzzr&#rO?{Xd3uznFqy9pWhlBS}nOkc3%gGgg@2r+VAslR|V z?PIt=c*9e2!z{)uMt@ppTj=G7292a*8`vz*!a2$G5?jU~W)}*O5MCw@*Ra29f&4us zMb|N^j1o=ronVxSvCj1Y)TsRpYf&qeO^zU!1V`Bl4JhnqAsWD!cay% z9kyiStOZ4M<{^gXVp{`dxqyV4JdF{^c>bPc^1VEFCI470eqFeEQX&H+I2Z6By8z@_ z@raRgF~yaJMm<3Hc8pMCv!yF-a51yM5wvXW=`M
    h=Xw7pdR{v%{OPdpiWveBNF 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


    %wUG%;R^+Pp*EU;cyOK&Q0&;gX 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-mobile-etplus.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/header/welcome-mobile-etplus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f217b3fee06f403ddb6e910aa3b31c18be620955 GIT binary patch literal 141196 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

    bM1S8y!YUJx3BgK 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

    )e!>vyHemLHCy!p%p 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 T#72!Y00000NkvXXu0mjfcwI`w literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/error-icon.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/error-icon.svg new file mode 100644 index 000000000..d9b40fc94 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/error-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/getting-started.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/getting-started.png new file mode 100644 index 0000000000000000000000000000000000000000..6764847d579fa7e1b701dcb18af59c555dd34a0b GIT binary patch literal 129168 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%0A5|S@)SdtT6CKw!Q{BDp=!Rh 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⋙5f_-q)bN=j8ceLOfm9E`Gs5RcLnGKCRU~d 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/help-calendar-header.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/help-calendar-header.png new file mode 100644 index 0000000000000000000000000000000000000000..8532fa3f66dbc5efde65aa0cc01c247aab8e2d8d GIT binary patch literal 90195 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 z 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 PFS4xE7s(271ONX4r!;B% literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/help-start-guide-tickets.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/help-start-guide-tickets.png new file mode 100644 index 0000000000000000000000000000000000000000..a5503296963ae029ef09ad2bf42aabd138c30514 GIT binary patch literal 63714 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

    6E8$@ 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�Kgt1J(l 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 + + diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/success-icon.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/success-icon.svg new file mode 100644 index 000000000..726256d1f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/success-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/troubleshooting-hero.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/troubleshooting-hero.png new file mode 100644 index 0000000000000000000000000000000000000000..b779fc4782fbcfaf3d1fcf5b7cb680478496b1d5 GIT binary patch literal 9178 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 NGB7(|u6H&3e*iN!$YcNj literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/troubleshooting-support.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/troubleshooting-support.png new file mode 100644 index 0000000000000000000000000000000000000000..f0fb4095c9aa3025de6561b6772fa13bda8763ea GIT binary patch literal 18472 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 z ze^ljK?{WJ+fu1;HZ-Q-_5svAp1dg}(U**g8=CV^ePA<{VuHV=U?Q^hE4!!gy$cVj1 z#)mv59}u20ASL^+!40VX%9jlZi7xqPoxupS#--RFWwj^rR2HE66ZJdp+gP6M@9U9% z_oV6O3?QXGs~h@O&HJMK*^cfh+ivLls;#X3$@7t_bbJ7L-w!_Y2wwZg{`~S~?vai? zYk%WUUT4-`Q5Cym-lyrp@(It;kCCUz_&%uuw%~jJtLdKAkt@@<3|Itkvrg-`MOxV` zI`4k7tmt|hG>y_}$KQEf0)5@<&sR{zM*RpxWOq+nVhoi|cQl|a$jY@gnd}pf15=1V?FCQA?A-_& zqwRRD@ZjMc*Rj=?{n#@gXd6$7w!i@dGCiWX>3>K`TX3_CKsfLcr-OB&o~O_Ub0sY; z>py=Kwx4bEcZ$ls8wA)B38u@7b1-C}xG-ClrOl2g%%lV|J{e7p=%(NRQ@fK)e5z<} z|5oBKUt$_^TzSc;OaT!uPo|UV&MpDB0M5JfTcF8uG`?_{QTIHn3RIBS>WOfv-}A-t zBo~P`y6Qejhm}9vzjw5fCX|bJdJIP^-OPO8GV3R`Lef2=oaxVIpN00qoeMF?a$v$dSrRH&*gn z^kL0Z_TbZq6u&LE8%cxm5G~uIwpBEjE=)Xl+xzs?2)U7$wgS*VAkWeoOVM4gB53V1 zYrO0kcr)o9+q?MUhNm-%G}*DdoPrTZpjmC1R8jma+8K2`{P1J=2S4$X_?B<`PQ3NU z-i{|rzy0gK60iNkzf<}qbgTB_jq6xRgs2j{S?Ix3OA-$CE7odOeUBntRxZ)O?Duf1 zkCyc9e`jQIbJ>>qRsyynifB2btk+!wwePwHY}t!mLCAJT$)Iu93A-0!VJ~}+*c)Hl zgR5D0*5_+D*ssOW8{CaKi`ME7yow;LnNZTr4+uov`@Xh4#bo+k$7MW>a2YdzAsZH> z%nS~(n#~r$F2SAwd)mg5=$^XL#x>m&P{BzY_Ia7h9Wj!%%cFjl6l+gr25HGHLw=Hb z-LH1Tq#iu?b3l7`XzYMWu|1Uqx3@BGyFr%UzEASvr7fPtllEEGSb$^;6x11xUn_?v z*GO)yzL{Rl$H9vf$YyAH5qv9|YuB)JoRj|c?~TW0Ahr4~^4P!d%<-xp8_IG2jWvd+ zvizfMW2mG}j`99B!epo;;Ta{FU6LT~%-@$}r@f1=`iN!F!ZbF$>dYp{QyJ21*MRzR>dM@i_t;ZYO8vgzm;B?Qf$lgC|zqU~SBh*{&c9#K}=VMXl6B-Sfq!pf!K~I```Yw=TH2^KgCbK`+djn zr<(R<&)@#rz6!tN`uCz2y|8qJuq2+sjVEk_XnoM*q}$`kVhYI4Krh~;q5CP%tTC%t zZ36Rt)fkYRK|^TdtX%xS6YKF%hQ$1nuW@~)%XUlG(SmFfIaOp(^c+7kLUR20Pu#_K zzW#+7xKul%e%fcI4Uc<+hH!)N4$y>1P#4CNp+>5g|y;M`tTT)EqBWDS=VYD1^gofL+AlckemylCk1vu&OuJyg^3Z!54Z~gw8Ph>rt zo=wlDXVcS}e*16xO8oxc^IP%ampoWrZBG*9jPGM=MWC_;p6O3ElRzfkGLuWjW1nEu zT@wjsnb8#1GiMQmofm2%%W8lE$V5X8rcT-%K#0vcTWQ_Ouk6>k0R@dHn`r%e_UD3 zTJp6dkPjxSd*vy#Jrl2RPCne4C5^Kt|H(V=>WaW}9e*8*MVz)NPjh}ixR zz=fU+ofaA*K--XuPJR!1{@Zpw*%>P1Br>zwix%wff!co7T0g%HEb2?DRm#9g^)}NW zG@bzE*!ePKaqj?bK#{+3;>+tk%Wu#3gyD;>zdlX_HVKRjXzCZqc)A#9!G~o<`E69A zqX=z@wLtF0j>1nnWZVK=JmK3ea>o?_+R2_L_nB^eM(iT@@p3(uO`XVT}*kkI3gl z3|_LmY1PG{dljWtjnyc4i=gpE4>%tEut`vH@p}Je1WvgSWec{28cgva#l$u91;~=8 zp@JLE&kJBVTShZ#aXiPSF29HYmEoXixb8zE=x7m6huH5C-6+@YL7zdN4jrLD>;Viu z;=@7RFoL&hGw;O5VWOA6=OqAqL`7Xazf>>u;A6F!o=h*V)HP1NR5q>1H0<|YgSQ}X zTqT8^=yk|+EpjHT>fwDA)08*5oy;=8ibvw%-T&-o@a6yd?|e!dfS*mzrf1W$>0cy$ z{^xxTUi0cN!fU?dR~(-&deI)F^@mF;3h1+5XBvSQ<|B$Y*sF&OR!?N>aW6A=RxotN zd3+29aO=#oc~6p@7LD2&g3RvK^h?n{ocQQu}Zx2;KqmQl1 zA$SFT_Yc@C>l@)Q5-uvZp#ZV=gz>D^4O$x2GEWQ*z;v$}kkk3y;HLRvNS(PiqO~y1 zb&nkTKDNK|9p8VQZF}mQg8${ERge6)t*3);zu!}L5ckXPnB+a>^&7u$UBgqzziN9` zk3EI!_d&ho?^S*OJjw2J@2S%NRNHte<^E-~@l^Wisni4T>`1_YOw>z#t2TOn_H;j| zzq)@vJvgt&nUNi;rfRPDUiGS%AG2mJdGUkCOxkB2zaPY{GtFd7%B{N73X9`>dNXkT zoawR=VAY;3EXYsCFcXV;sWRx2AS&Bj(aHQk1IHFjR(s`rL;&H*lh|9hhKcqFEUT?W z30pty{_vxQ-|>e&3GaFThK-uu1C@9g`kr{t7e+HNGj#+=_aHN67dn^i$iqviAuoV@ zch${LUPeAXHsc7`=!sLVD}u>5=PmE|hi^xFa{e)e1X2HGyhGIKfr+3i-e|zCegBBy zjbGprL1gvE$?D_x@WpTYINZOsCkfa>$!dPIEts=Q}Hi7Wqz~0^D>J(TYBJLHSa?qh01LXD%_zcZtkHKB%BL z+ogcAR&0xYtoCO-squeirVsi4VWDxS(hzzuxCW4{A+tS3vpDC{)+OuA z^BJo#)WNY3z0@b6ZAphciDO^wv+CPZ*gF~huKi-{DMM~$Ye9R;iz>55M`W%C(@brI z>|Nx_!nu`L$CxPVj)HVQJU`9GQFTYUT;ibSDpyr52I~L3Y2t0RHP$sugSYzJdEbMz z-}@hY5`O0AH`&V-%X<6*k`R9eT78=xiIRh=lcw|Y!Rs>Y124SbeLs6=c6(8_Q5%_p zo_H`~>ra`Ee{xoA(A$Hjs63wxy{6Ck%qNaLef;`jK9fz{y`4{;#*%C?aeiJ%9y^Wq z?oE*7cMV_vV}Hy3Dn3pV1#CWqZ=l$r047VA^v3OFQE8?+q?H3!hUmTY>_l2!3{oe^ z@Kc`6d9VfrPZ@}j26Vct=&9x=v=c37E?szPd8v*rncKBUO~*a%hiPVT=}ci<4^(+2<>9Pj zlGFZs+i?G6sW!GS`Jf%>GF#yaUypj5{fPX@4p6d@K<%d9F4||DSp-zl?tSc^@AL6G ztNc|aTbSjL(GP@;`z?E#@xj$DIJu_v{Cv;*?_7hn7vnuYb3Qp6Dq~|G+p(SN(%yIg z^a(prYlfIz75~*=_Bg)wH#~-4@k`I$_&Yss_|fMdufuxZ&(_lf9I*AbCmaFLnEB%w zyC@r~v;Sp4x8LI@KfPuQzx03f5q$ZpKa9`*^e6E0Pr2aH#|&?I`}3|eJ&5=I?41nU zL>>8DH-pafdCBF{X7%WShW!EMum8Ir$HCg3=v|`6PYqfQPMSi4)s`jJuamYMH*LC~ zK)i59JPP6dcOEWqtAbF5*}2^(iSe-vKur0hi6%4|RR(AP%g&Q|8##^7B-_%-^$}SF zuGUCyR)#fPfjBP zYW~je(Ds(aiKokDo>@fMLCp5Dn?MiZ)~z7+&D@rsI<=a#xXeM0Q(#5B$&1z*wbM!O z*Hp)&zC`n8s%Qb?KFhfAI!M>KVg|fPd=5H**`Y2h<{+t_WSo|!G9aZHPtG&R7toam zqNB+q_s!l4z9uZ>*|@5A3NjX55ST0ZFnXA7D9jBVSg8I?Vw-840+Eo-h4AeTIdK=- z>J@e8Sro>{E8(=I;C&rrMf0SyK*LetBuY?OOsUr|%eBiweL%Enn0m??8W$R-dD$+#A48K9LAN!J7czp-;cQy# z_wRZB{NH#0-}}ZF6rX?|WQ+4N+l9Wa%G#1Gn-?(a)+;{c9{#}BeF(qemwc2|sTA>j zKX(`3`GXJOKmFksoNXS$D3ONPR&F5LyWFd{L=2S-X#BVj*7jtNKJ>HBqiSP`Hbr#q zspA5$^4&EfM%S#2x98?>o)zmoy^nPe*ON~fla^`Ls^R*rWeSEsuHIMq3^a0*)+mM` zWW<8MMG)n!b>oVALj=x!xh(>Q7VXW*mU_TJk25x2V&m~C z-TR{X=jFtrtJrSVPl3)1&Pr=NvDRtaQ`uOGFzJHE8PTDlI$r%rgNHeA;WnLUqnRX_ zAm=>W#Qafx{v_>A_U6)#8gO;`YUx+%SXHmafMrzCuk$tSR4N#Bo!?U@>Dp{;)#v?S z@zv~K^#_0(h*oWQwrOO?%4*Z2-j_bl&S_lO>;u5OxOJGX1kENHsEeVO*())0RPac6rHE2wAYEsrTo6pYf0TW}j*M-GAi8$MR@yq^G@V z#~&?`?s4v=?M>TLY|?+l%P#oVfA2$h#V0=jM<4VNkJt2P|JnoizBfKUaVeoGX2(K2 zgNE4HFa0w(KIFUU=KrYkMGrdu?7#nWc=;#aOTI_d3Xs<;uY3Ii`0l^`AUIXujo)o= zU(oElBzty;Z~pPU49aPX5!K0D0n^!U=kMIZ0hIH-YK+~9Q1!eK|9L8A2|Y&}pf%5?hhXEX|9Otf;8=)u}qIf8XAYt6_yJQ@FIaTJIvw^n>PgNA!2 zv2w+zlCIS=%bv7&T2we=sxX3@U@RSUEO|Lq(&`~u%MsB5=$8xnNICi_me(!&Onqh0 z=fulVjvQ72s7pR1=Oj*dLN9ij~!9DwuHeZI7}zqLRY&dY9b@3NqAphWZ!>1_o` zVL~xr8u>tvNu}Wdyh%m1vZn|l`_q3&y&BC*8L%^UR3EQ`HTJF1M-&XXx1kK{=a7fB z`&EaB@(`wEW37L^vpz11acA2uGHN&!HUpP7oNWaBy)O@2{p&udZ0bpVdf9a9(4{jn zOt&Ks=h|}Ma$Ji*XY3`boMlh9Y`09M0zD(gnFrt+m)n4*k%{D5 z`aPX9JlNfTUg!+9PS>8{*L~Sz*I=!pO!nV0>2dx3wZHyRe8p=%ob{!&8$H}fa>m=~ zG7ea|cKI_VSliPkz=ZA1vuP|1>*0h;!)==p*Lh zr@*`d^x~Omk$`Gx5twQAa!TBY4PC7z6Vu+bXsbCu-hJ%NND0tNgV;HdZu)9Du?55q z4J=39-UF;~X54iqR;#w!ogc}@$8-Ox*%9b(i1!x<+FE77vNy8b2$E~iDfZSq)p5NY z(Lg%m6!CFCi{^XP6~Rpe8Kqm5=adL9;ccqeOrqF{)p9a8Xeoyu{n`g6Mz&O}8|6Q} zYIo_qYr@hKutarv+4r1d! zxt*e6!x4D>$!~nkqQgCNH<7VoJaOuSHdh6Kw9NbcLS`vD_FRMH zU-W5?KmCUu!l(bDOD%~G5^Pi(s+12VjE4bUah<*TmTx+PwKGt^1Kx&E1M<<=m+FJh z{`8N@8wdo_K(1@!iv?MG)yJ5E-hY~1a{b(CiltDIz!HzLu>S}D?gzf^+Scn5+L%UK z`i%D3%U!>G{ae28nH8+s6oyf#}0>A>e(QbD_ z34AoWi`Q0x_x9_&WBCZ zkEb4E<|OK^WmKl^22jXv(mlDBlvgg};AqTR?ANz3OK=(2i!n^eu(%dM&W2^OHiII; zOI6IXi5W}{=O4VpOsvuDRyz1mM+_j+AF){J)A))n?584;A*bzp&ttL`eRvN#gIM-b zUW8~EGR}U_0MHjQuR2)I(l&!kr{LRp;L9^rL`wccI^At`T-z)*nh*WRyoK2@u&G(v z5nveM4!S%>`*zB98;4g-0m`uR^9Aj^v{`+?HisUFcDc4Sv#fKYnK+V1=o{;6;SuXG z>$6k2EyaK_ASpf88Tw$21GOl|D*$ugSs2;_|Fhmr?5p#S<`X*pSt-r&c?50${)dj) zvZGrs)U~GWEw1m&pnI_PiX&KyN^5qX{X$FxgkRggJ@`V1xh8Mh{Coe4AW>9%E0yeO zp~0F<+e_RV=_Q}`$~Qm%`S`l43|=?U*A{~a*7yIu{>Pqy!P=hcx!og$YTM0mVdW0c zSva=T9GAKz=r{r-%bFuViQ-xv&-0=bifbO%g_@P;5YC(k8%r`E2a?XjrKF2otoSt^ zi9$V>&{DGV7A#n!)6g|e?|aB3fu$uA7RXx2!Ud#UKxFnOH9|)Ru!VJ*6#>r365Ltk zOVA9-IM1|&6SzS3s-e>mZJ~m;82+VBGJUJLbdcX+`B%M41GKh&j3GO_2+h*s>`G)T2QYCvqGjfh&pAhe}8o`)4v(jx3 zlQ?twH=u(fw$naS4GAu|ugx?NBLR~<&NZ`MXHFvc z!p}^6lFcVJEc$wpB=9h6KFGA`hGT4J9gDo<6JehxF!N*y==x;t$L~Gx`j$U<4ccB# zv+?1AwlbmJtX}yk`!eVUk0&r0%vrvYhOTVeoz$bNd0})!XdahCrNV{f0%J8+9w_@!YIX z)J0I3^rJ?$JfhED4hKu15_!))4~HMKODoIwDNvc(Y5GV->Cc;Pu|p#nCD=MRpujOh zaR!;`uY(w?nW^AYg6730ZU+1{;hcwWm0Tt7Ek|h8S2L(v`(FL5Iuu!KYN0#i(&H6Z z5x8&p`!wCQ2Ew$d2PV5QrP~#cQmhUiL(Q&S={N|0P{wMWNx#ZRq0u_Q<*iZP!a*cQJf>!rGXS-t?jE zXY9;cq%95J$h0$S_#}r~e{VfWoN0Si3KEJ}7b~iOfJW0+ zyoS`7t`0yln#Sok`K8Oc@2Zv@3M{<=+(qi94w5>21Up%?*$BGX`2^5+K-3us1-_!y zorA80)A0hiq?hvQ90F zTkSgcr-_Up`rE58)dO-Yg%Y+TrGTqBbYnTxlCy4pcW?lng959Wp=iQ_kMuNbi{9uT z?We)H(%PkO28qS!EgYq4%1dD%vQB;LLA6-}o}#_(Z&RLvkK!p10^{4*eL&x%{Q_&qVkAUtvv-Y{Kx`#V=?lisUx?O^6 zxlR3om`Nl3*!sRU_ANwuye=y8W$%p%=tmxF5nJk=mw&s^+VAzByW4Z#%thY%J?1aC zhu?E8@JF%=ALp(aKJed%U~Nx#^BctsX_ihmfC_Xt$T7aQe|POTsEIi@CP7JTYPJS9 zLSE5wG*x9P016A)#xFKpFGU0u31=+^PG=G!_Vzf@D=J^XnOsH6L;@tW;=@pOUKB`+ z7V&b%VXmJfwUo1I=rY>?3R+jrHM&sCRnRFw?rVUH8BCU8@jN?%0%LMNuFHw>+nY{G z-IVq~Ps(4aeFoN`IA!2;fRB;R6Hi<=bWB6((i@P?>@;nokUL;4=quf77E>lg&U@qw z1Ux>s3_3_SAVTYkQ!rW{x_E1{Kk^wnN@_zR2W>j*Iyum$y2EnP2epxChxrG}9*X55 z$FP5Q)P71jS1bsjfH})ca8b2l5oo~`Unbd`VGj0Dj&C~ylbY3W;!kztl-ri@%gcXZ zKV>5*ob#FuEV4|*AT(2Om~?OTu$T5dL^?g_Nj)ds>9(C2QI?awz9sjZ9t zm#J@LpZ{UF}> zBhSN+{JrPl(GLS(`o$l^SN<pHEbtgLJ%_N<|^&Fn$~THq2_(%(wwOne({5|J;r8Lbb2!L#7W|Fb9E0-gQ_a=3FDbL>eg;Mv1K66@ZrlURLEwv(6T?CRY-rR<1RuQA0D@t( zU<6{c^^`6P=`2`cX+ zn+Qgn94IfrXuh+2EIIW3bCaE|+7wn@Y2*C&aVj^jji7I~9iRdm5ek(nhl~iCBIN6$_twrfb#3&aQI$?K2oo%ao4mJniJ+o?)i-GMVh#wV ze2~1;40Qy=IA<-UWmaoF(VeCt^=tiZU~nu?U8*J0PHy1Htjtswox z{(XPj!q50dy?DJj-Tmz}&h4%ZNyx0Ao-ak>oSZ{2M zz>mM^Wv~2Vd;+Gs&0Hnb%*yQk6&l*oOLW#0;6=&3XZMP2%C}142xCu>C#skRw8zGcFj>Id8c8X;?)lEkcH23 zu#VDPw~e{a=3wpS$dR2mZX~PGXN)#|4N`?+ELUIF86Uw<=)*zP(cVha!XpP?8*-Ky z3=~igG=i?faYc=;mXiGxWv!mV+(3c5oihM6Q+sQZzcZqq;=53Pko?(3XBiDWyXaEN zs1OyXpY8E}oK$pl+LBQyI#|kLrpoi)Hl`l$7rd-yEHs#}Hfz69@h-Ey7IN-E1hT&3 zZ$V9W<}$Sq_kiUrjo2+aX>D5r&F;*w$j>vBL$1f5fwwOx4oM>zm@G0L`!7MWN5=ev z1}eyQhN2^0Tc$&7Cw^FlNIBNbTG=zaW)dM>FkkCHEA(L%@FWz4JVZ~pDVs205S#UK z-wjUD;fjMt4d{!{In_SGPDYeBu}f?DoG|v3k15CzUfRI5^ViY;egE2MDwjpKX4!ET z+xX3IK-jN8@lk@SSat}42}eb@hf}_)#@p}-n(lVh5TQFV2=M6?j zd+ATR^CKNNmg)PUsHvkyv{2hbTXN!!c+t z)y}!*b=JoA$@uB%fpzKJ@}AnRwww9A^{_sL;{3~90K z=ER3t*@$bnoK2cK+B2APYSGeRF;I>>Qdyr(5TESj;G*4C5EisYB{D_7%oiX;VA=qY zXCAfwx>nw*(J&zrIV2BVD;{koQo%ZcInrY@ZmOi@L}ThnMj;?xeN1T7(vpF7`6Mp) zVHtN0^m`GK^xikE>hS{gaie`o1!60~?zH#3l)roY{M%gPnY8v zejY?rozZt2UF(muQM)VpNY~3-oxh#3Ngg|2aWAhjd>X9V|e22_ykRN zyI~*6!ttb8j{t&{1fc7q*rY7sV93DD$U$9Z`@pF{45;E8vOR7C>EI^ANRVfWMRhR& zX4KEfOF`_xgS$MWAoR-xr)I+l&KVe)rGbleq~mUm*H#vUe#TS)u`hW9*tqmjpCX56 z16pfju{_%M-k!)j=(i>1=du{-kJ0-(FBfuVO&M+kCf&*85~CSdg9JV~Ac(nsS{|)B zDEqz{+hbO9pb_bH$+v7PfZau=^?gW$#KsMl6%1D_bu&9E5LbCo03g>g2!hB;%z>yJ z9*0!28T0bTE+50h8`F2wOAN={y@t8+Fb!5HFL-%~ojoYf7@uKF%cRb}?BHxi0+->@ z^0(As;|a{VRyuNG;A!@%OWyZm9;#P)t=UiLZ`rjU{h)_j8;S7(9$b2Cw*Wzv#Z#u2 zpIre68@$)&oJIrC|sYxX5?rt-fJ#C~0Rv zDbW(&X8(h}QeatzgG65jcXRz&t&>Ewa}e8>*tET?Zu^?88+EUrPl}EgYGmePH^;Ug z%-c^Hz|d0~9M}D~z4WE8cqcwV)A^KWN|`p6(}=?}Xk(?f2@G`)8OQ;Q45N)OE?zn+ zK=Qy*>Um#2xp-!ELXYa+R6?_IfUAflXeQ7uV#mm{yLNBj)=J4QawO9x@)J3!U{M-n zGH4F_nSwa4rpWoRV~}9hV^*g?DEn#zqFJSJeLmXQP%|Klr}}~>cj7DIv2q9^^}Qvd zO{M{p*fHJcAVwsK>_aEKW-nywJsMe@%+7%0<~N9nem7e37<~~hcISWzBr{{j1d+vA z-V-=k`*i7`>BovhvTyWqp^K9fEjc)029^$DAP4mc)ueO;&uOE)S=yk1>S(i9DfF(E zy|{iz;bN1@Z|m9N#vssmWc!o=-?6Y2cEnZwD3ec)4*9aZTJUIV%pJsKP}+j?7zkbN z-5ZzACC|%+k3Ko=<2;_jxCLf@k{e?J>vri*mC7D*2S3R>*I$@D4fv8RE=TeQDmayb zg0$6A4hp@=oVHs?J2PKS^+caIyao1v>{}z8&w2)?YcR@sdm-9*vcy$Dwzkh`+eW$S zW0U*u`?`h7wo68S`0?Qc>?LcH1U~4uIvr@abG9b9&?6P zv?R4AHWlT0-;q;$={(F9-!IVMy#SZ>%zLm%SX}6fq^rR}=@DPQUm!!Wjgc}tq$%}) zEcKw}nTlD;ScAT^lFMbDou25Fy4kj9iP5a=otJFPu%2B;bMSeGE>_yUg2B8c-TFP`%K#Y_fQO z32Yfh3b_fluAQWr)K#q9A4mG^x6<9q%<5@3%7so84F~#E+roQcjsz?Q@h#Cu>Dzj; zjDcX?%S?MZjJsx0W+fmX;GgcKT-KnOfrJWK44%P6x14n^bz>&KP zkikj`J*lF~t!A(?f6(UvU`(sFbR8RR1(BGK7o%*L2^?~cGcD+6Q z&Dc&$tZ6U4P!(I)u2;X|#C5;iD|~mwtH9(3UU0cCTatVt`(-wvEIJ-YxX`hOKFZJw zHjZOGKKHYpfMCCuS3V|vE_F!wC-VNaJ#9St+S72aC~e~Gt zY(eBw%-1M!F2plep<)wMcgNbxCa|9El)hfl;W+Akl+RcK>})m)aFGN>ke;XUk22C# zPJtH(ax@}6!44ACtegpWP%(I`7;gl%`-T%IkREl_N$btgnp&=UKDslmCr$)i6ns|D zbIITFiX+q7ZY0I8pueZCOUo*UZ1xwR?|(23tbx9-jBcQ?XyBnNVQKzSH&Ryc8yBqg zDfRmZY--TP{Zzc_k{t0Nfv3@ZUb<5p2qzl#$E;P}cfe=MpONMx5|;~EERysLx*y*qc$8Ml|e>>hr_FL}HZhZxXS zEON-@Z7+T4E8mGv;B+^a3Qx~Yql^59bVZ$7_E=)=00i(7mIj2pCrd_TM(u?mvSVo^ z7(36b!?^T~e9YTu*H;D~yr2M*{hio>&Xy$ktwy7NgC>VAB}ZLx#78aV?*Cu3y{N5? zN{(_(Xhk2$;H47b`^;wze;sH6uYh=3Cy=Mb8wG%aQQnB3e%iw*Eq@o-#BvGkFBy!8 z6F3Ez_msgff0~6jglaQ?29nIQOlT=MBWfCoifzEssxHpkg{lOyeVta;C1ztQGH ze(=^0fav`AeeP8Q<>#Oy4Dlj1;*N=*)CbJ7h=E{=9bNW?9erhD9nAK=Fcfw)od?r4 zv$w`KmwZCENyS2M23Af>*)R%xQ!F=AmnUCO%En&8vu>rMr+!&wM^^5IsTTPn;#w5> zxBrbt@$jRD@BhzUh-sYT1@n6l_QVrFtgeIZ1q|)Wp!*)SJy`qZ|LsG^XJ^71{pZZ$ zy&uLWcsky6kU^K;b)1L)vuczBY*71fL1c;293p z+tBwMB#8cpzLJbsCJl(w0l4ae+7{1% zRi%ii_Izw|->;1aG<2p&`R4u;{hD&E^ojTmy2)uwwm^UytS4oVAX6$CIG(5_-R1l+fEt7JYrK$wFuA^wjvdB#7gH<;*4(hN6)9{%0)Der52lz@?KNOTd&cQ>g>9CTKH+@dKkti671 zl67bI%=f;ZyMv#6*IhjF;cY>_wmY$~WT^I90%wSH|Z`M}Zbp^x2_yzYrE^!PJc~iGEoYmFeC^d)@+t?l5_l z>deL#S>=`l-MUZo)XxzdOtL`*Mp=D<@G@9ve5%m2U0()61r+CAD9iiS5lJbJvP-z2@J|LN?_{NiM@%8`?@RI(}&Dx+}!HBEKCw|ZG z-h!Qy+@K)=)+BE@Gk!vK^wOxqBp}lk(87b}$nsa|mM+hb-Vm=&)KB`{c*BBkOo0>8 z)&rkgDeG+x2nO-CWCOEJ>HuNB+lq3)mK$>Rzv>$zXkja>Wb0sH5%hq0{k)j{rY~;9`90>8T3WDzN{J8#x%$MGry7& z#73Z7I-UQ3gJ5b|`hxXvmfd+%f}xp{Q@$WcHho#oVynGVgr~uu=%Aro&#aS*B8|83 z*Nh>?t3E{6Lgz(GCf$Y5-xK?VxbVdGk(a&nrN8)t_ykVp!MPli+{7YwD@Y~xxD}UI z!CyjA{7cGM1rg2*p!MsnV_Hg_4YF(~G#Ry}JJp7dtaPp88sG1Ph|khT>_OFNgCa$0 zYtWcMAB3kkW`Mg&8)<;ej98h@@h#ihQ16{nIy;Rb8f*I#B^b3sUbjbhqrL8@OiSGcM&zAV)1x>pB2JUvXth92roa}r%>6DS9^hv#uGtb+mq)NarmO<&o z=eC*K^iO>{LVX9TgW6XksaACG@s*TI4 z(@U|`(xntyv_aUp8h|WX8M^l7PxN4IPg}Fo^Pkg3um)Q;*7;U|Uu~3)D(y!0(b3x$ z`qfNm?1PEl(XRqf9T57=7k!Qq0>WWh6A}zErY-Kh(3wGpnThu4*5>N3I6E>Bz0d!um-nq7V`+1%6LC6VgDNsMNAQbft{~G z0}iZ6viMPY<9QvaBWsNfuc2oJ$si$RoM=Yf$?fr8L=J)r`~uu(-#CW_%yTwn#K({y z198;{p!G>O2b*{bhfz9Ulfj9w=VWSFF4r)%QN=bXcV07bmK9g?V2x^RfuhW!cKs5* ztKRHdqO}5Zs*}^CyWGBsAbryBR^PZ*!9wu9|J?&2lgQd#WtsuXWV=ps^?HfCkL9$m zwj5k3Ke3#zJW|_^(no%Bl`%)?rgB-IOK@nWw4eDeS)CJaHCR)TnyCz;qa_F>JmtYA z_jv@yNA`R>devX$8D1OG6L~SSr|m^u8*U|X10|2}8RJH-d@P(@U_kj!t~~AqUN+oI zY#jsOQAf40AeL>Zu=2Xv>OY8Q)A4k`J9A#^)Go303NS`;{v-erhZHju(Mfgz_Vplb?|wqd*1VKc5+yJ z&-(n824?)t1RzM4T=k&jNzNkbl7Q#DcRUJzJViM)J!aP8y_>1)qn)Nk0r=En)4u(1 z(~Z@(3PJ}9Ra$A!{NecMPnP4%p!?dwez{6l@`WE4r=#^yC3+Ku9Vi$8IV28lL?3;Y zgNKvm`iVD>V=Fc#-kZL2;MSc>IH&w5M^$o(!R3vCNCsvg9)sU@W?4lTEfHow_d4z0 z_ZhQoyMvXy7*lvZQv~Ei(*}JoXv={^U-giu%V#AhTcZ9`wLxI;M1L-BXUGW7ReXW*qod@O2^Vt}+=AS*=7!& zEp@Ye)`3YGJSv`Ne*jpc(o$e)TbaMn$<^3>tMsxvssFU=%Xat8csA_^=h_EP#}Kdo z75T`YOG3|2(KRc)Xd70xp_wCHwmxqpD;dC4ePzBV5kEh`F&!Ce= zzTVHGidNXp(DV4>y4DfJ-8%HpeI9|)zcMN@kGKu78D91`S)W-sWzVn4vJ5zASxubY z3>azfW(t%v(n;q)Pr2m?Jpryi+7IHfUqgX?3t+Twyyzn55+w+y2t+sZWyGnUo%^K} z-kXf-ZgcM3FxVf^aS75U1Nj9jZpYo^%iYnJN-LU*d}F^}@RH4xlT7`=%qV~sq zc7U!J(r4iE@ao0eHC);^;X|E1V^ybRUJey|2J+Q#Ro2hrI|hzKdBF&)nWDmki`MTa zDhHpOYWCQY2N`HB0=5Wxc!p>>%aw8g>3@;W{S&qps99|p7ijHpaBhfMzLOrCWDvi- z2j}DandL%PbeY)97BruH)b~E1rM5R(@@3l(p^)t)O;OLF%`+dwRy zJBXYGNEDVhG15C<`qEGPgnq+8r0pt{ckW-N(dTh-|7QghPQMwbs52R_DCHOTG- zXIc$9a(T$u0dW}xUxmVxHXbe5L_e1-M>JLH{XXXJqmFRs!ZZgyO$O~k@kK_*GiS*9 zXC5NpNSw=HqHPXkV}lyMkZV@J+D67lJDUPr(Ls7dJf0-21vmu+e#`ko^s~?SO*2-) zb5e1$TdQhI=VX(P6&)6|wm!;!3|(+QTXKLxz*9C`g^FG+9gdW9q0>Mk&vI;7>wSC(v!gz*F{MsV*`?IZ8z8u(@O?ox+82&RPPrB@$^dW<)$`kc>C^}tpAQ-oIN!^Wd zWm47|o`8X1@6C8N9qH~>f&#Pw5qIilfe5-7-lbuS*(P?n-I?t24{EqNGP%$zEpre!9u2GX!ZVn)VfM!hBt zjN5E@OmDrnua9ugd_xB)@T!q zR<&7S^m!QUo_RiGw^Tv|~;i)@RvzbCPETMRzqrypq##E;h0_oduY{{yyvXvrQ6P)SI$y^pg9D-^B~h&0-N8+%I1i=U=XqJxHKK|Jtfn29qmaB>H^E%Jamz*T% z9()80AGUF1ah303OXp`SbjA{M_C%B694L{@hMuoxv4R%ijqj_ew)zPlNuGsuv>XlY z&l$hf?!2|_Ib%Ef_{w`Sg7KQu>L=N*WSj@310Yz;a!K_{5G@%OKE8bnAO2xHn~r23 z_`rKU>p6D!9p_JHdmx}Dg>|S*(~iifNC`C)=Lg8*C>21?&&~Ow5@Dy^?fIdOb-qpc z;_+`ZdO649GCHjZEvc-&kd4v(xR9ruH{vxEVP0)fPdOkZf59{spqTdBI1OLBs75hw z;edD(Fjc_&oIt^tNO=NpTi+jYvd%v{M?gS7>zqjTrH(8+KLd__)!>T?bQVkbvCx5_ zTY^IZPADc-X^esOmO4E$CFwBWsJpM!cp!9Y2#HW#y`=sL>wxDxiF1?&5}I?v%z zh(7nHP(SNk{9fo{Pi(uc^oSiy?RUF-s`si5m9LhM!O9#o>ORU|Zu~#UU-Wkl%ucy* z(7=PKZu2hsbPI=k$!FBhI@truK0Y1a!17R@>iV?5Pb)zRg;f{5y%lY^+15JEy!19? znRH;q@r3XpZe9s+wJ}@hl=mw)bm=}sO{*27OkMGXKDGL#Z+utL|L2Q7<&|HCXVa0k z@ouhno<9v!fFkeJgxXh0ABj>+9VGCZKzT27$?9r}@KPn6%1b3oh^@j6qVN2ZAdc~Z zeMvZ18_PlifONv!vt|Agj`Q3H6-FQJmXodjB1co=!{|)h1dI2SRrOa+lk@CF1Sj75 zPC&c&EzMlz`!Z`9KL1dTF`B3m^$1v;L6YdYfp+Co&U@B{8)Zg2tI_0>jf8u9e|cO4{rA5)Rgc;#lHGb%+TS1iR#b&Q}watsMK7 zLe5EFm8(Eim%cnf-JDq_BDyYDczFCm&N9bvu#h;g3exg8i?^; zpVL|L(GHE`WIgDI$g6*kub!W>A8iT{$$mGUJ-d)z^B=XDw#~mU&_Fx-z4o}}j3TIC z$v$JB@+^0f$-1L%2BwTpdZT|~?4W&Fgri_9l0bE|0aaC5^0sCN7C7CojtEqnQF>2G7dIWtXxLPuRvnRi+JjEoh;D46b5ENf-q|8 z4GN^?#nTg|90)|U%1`HJr90>)%(9=o>t6;DHU$UBpa=^-2{c(IgOsGo)hW9;uCCu! zv^G|ck?zHXt^{r$x?uHWG<-Y;&yU(Ia84@FT z=^iJ52SLfYKt;ESppj%2ZImZ~R7U#f69)BtK6KAl`h}L4<=N<4<#$(|5{Fd>COiF3 z@9xd-w}DyeI-*<32C5CudMaS};!g}9fcKPj?1@-A zw$X=a;I-LR0pzS->As}@au@$gd=g(o+lr22jw*5rENHYk7jpr#;-MY1J81A#ghfu& zTbYSAv4hL3kB76gI+KmchMt_d3PgYqAewnL%clPS?Ojc>Y{^ZQ>e(Z@&AUX{ZqFJo zfN*#N*zAB6*suY-0wP#}+baOG0@whwR{$%ZnPKqY8RG~B-LFJdos{%_lCr8^Grei| zyH$BIl}i15Qf8iWiWBs#?=jnLPJ)m4+k)FPM-I|fK)3D^>~}ADUfgGmO}t#oX&{m- zZjzz0OdC#w3)TR+o39OtLh)BhK&F!OTmd>C#o(NS?J1~EsqLE3QC9+W!-FMDm4b~5 zW2u&4=wpJuR5+R8#$=ZQ^DuGx&_5P5A`lFuE~Er?R zodVc#*Yau2DMnJAAxpKy4yF2I6@8`zpidV-E~aX5?ND~xH6)pX^BZA4aBVW-Z3Ks+ za|$9YFt6F@KqsgiV^We+09`3KTG(aC>vU=+l1Dg3wjVF#Y|@@VC|9j$3kJHjjD3+X z`+Kk$@M8Lum?UqDacGFaD}5#s0ToEpS!VHhUGG82X$koX^Cy)2Xpsyup0S|@VSdPE z`j71gXzSqj5mo&kEBq{(pWt;CLH{(<(!@J|;`1CYmvycUxkHO{7D(ja=)TDf@YHP~0)xc-s_rI#Xya4+X@~Zx$J_yT-C}nt zco6dKItK}PFb4pNtu5iUPXB3y$dvJ5r(o;1p$w83$vQOYEpIXXL z2#q3qr06g2tR;fo@kIiFY~6GnPA{ZrqJhTf?JRj^^DIfzYOkWr&@#xK!q6-`K%hJZ z#FdDGJPy_}S&AS}PLzQsWQKFbVm1Vw1fpQT+ulkZE$8&s4o)Po!q=UxbKb8;Nl$Ru zWn35*ew4rPj->{Hkc$+AD(`}Gav1ysSO4oBe%3)H02C7E)PqvOR}~Vwu3}seG7q9Vj&_@TtxGF%4G^No-C}o6-q431lW19Ai|TF0Pl8l26uhjJuMUUAvpCPD8&s4>^vWi4N#2l1P*> zkBd9tVsJcX=fMU%LCeSa&bMFcfS)LWqj(+Wk-t%!I>%k@y71zJFlwb0pNGym+wS7R z^%w^e0>G2L!xn?nUwRlva@UQ!8nkcRh{sQcUzUU0Yhe}IqnIIqHXHfyHc1!tXT>j+ zuqC5fVomtG`fU}}(v@&0`QbL&+`A$Suq2NR3B9rUI(nzU7-i1-m^1VXnA{0?KsxK=I?xS&$c!&f*AmTWU_oo9p! z;=w4#yk&b(7EuRl7WphwH!oiUI(9GqBSNQb|q>z$5y?^?)@nLky50JB@^> zo0^odc?d1@EjDVU&!qRdOCzcG`S=fa*fIdq+^UnwBRvDnvVho@YR7FXZDc&KMdg^Z zKFR0i`Wi|0eBCKe=;UZN`SP_6lP6=k-tIPmyeal9aA1!HG(- zTjaL+UcH7>oPC+%f^ZDr7=ld`s8ZY+bLub(NxTjC#PVhT_1i+Ku8K6i`1s|!-j|#`itvlT+JV)JVk=|D|H0}yIVK=Sw`dru`+lvm~a|N0P%X0RIUkosFuHt zJv0+*X+mgfS%{PE)=0Egiusce&d=N8B8;;KcE+JBagg4J15pT&iu0M80*g7oabSjLe zoNvLj*=!~(J&`x*J0&I!TE~Jbe)vz&ZWR8LzzTk-!iM?O@fYoCQyacojoE|t;qgHK znX!cCO*Ad_Mu~Ds4urh9un^?3jjf&Xye;4)VpD%*9H$+oLYr(kf0f3^3fm6HWrVHm43;JuWI>pL#xl_ zwX{N#T)S-lcKP@+V)8uEmFhkB?Nt>`Y3AX{h zDrY&aWKvO!73W!XLBoR#2AddPXIk4a7geY4GRK$PmO$fyI$7lR22DG2%uWSh+0a*! z$)K(cu1WMsQ%^NslyOl`DS|t)uktcXaJVl?$9Yd>!F7{rt1Hw9*_|Fhi%$`YnS`qGCH|NE!$S9@%NfIkF|`nvc;MHZlevFI}Y8=G0{)LccSLajM{J+7e>U^`j9z zEb}Rj(zQbtjyZ{KDG!tx$Fz)hmi$Mo_IlwtdmHo9r<-g{-rJ8q{`U8NC9j1_)9UZv z{rYFBZ+>nVJXI+B?w|-+d|e?>TQDx&v9dQfG`41}XdFZFdz%8d&=FLcr{<2E(f2ma zfl9YJ-jz(Aqkrjkt5+~+aGnVi*F`yYg7DF9UZIWwuFhH9>Ce=DkCh2XQUZ7dk15fk zLk8(?^4jK3_2^F- zDN8%Hoz4Z?xNXMLFpo;5CwtXT<<7Xn)t0pQIB?(JiSH-kK&)WOX zg=$_AJbs-lP{G!%CS%d29N(IcDbivq4NwzpALI4|^Iv@H<&)Rr(4o}l>E)xBPd>Yd z?VoR7T>l~xDzS0_6C3g!NO0o6(}3qbfNxtP?bXo1#K#G`ExZh0mHWl88UfD;RI`0c z)}->SzyrJtP;lCLjOo7}NhZG%8A<~-^YSAT=EqvQ@q5TH-FBlND_;?=iNKHToIbl++n)7DxO9!T9YK!Tf&@p_m;0{(2 z=uA3j-Yqyk1>XIr>qcH%A3TPMASlrP_VL8JTvv=_wfIIrrde0{3$$_C+-BYZgQIqx zUhx4mJ#H78!Q=Js89v|h39>)i%%dhm+WE72te6vC8;=LAkA-78PND4!=m~v6JATHI zq4OK#m!mx8K&+8K!59r7Y)JAEuk!t0f@)cW!><)yx=YlZ=i=|9|EH|{dr!u)&TO_v z#NvY|9wV?IaJg`y5{V1d$@GLZCRai@m17jS6dm*U`4EDb5e}r-@tD&fuE6y*$)v+O zZPB~F<4nnkv7vum18P&3Csitc#%-T-68+IyJFM zEZcKL%>O*uK_g8k7TLy(+civVM2vXN&q;LvbI}f?Q&v+~en?HxfFUsekj0?y_lOWL zRsb5tYA;eP2$C;O6cKujib=h9>0o36qTKn)t#IP70P$p67<5hOsZ!j^(PIqrdIAj( z8dCJ&H~3ebGq~R9I9&oon1=`?DHgI8#&V^Cughu|v6gI~sa@Kv*+uaxT?z+!i1>SNwUw#9_9f^v2G zeh);RD3m-5NMlY%I&-cwy+3T|nV6ggSO?CGgG_|!EZ9j&GATQdJvVqNLXB&E@ z8o%e4t>~o5I7fnp31H%o^M^q*18-%^tO~If z)MwG{(p&2qAe+7NgM&ZTYvDKB1VD=){|e371`dy2$R~`AJyyaq9-G@i1MfN8A1zHv zMHy+)@v{Z*^YU?oXtkr5HCDgRN22}RV>McM2?qh1R(UG<*090febo7Nqol= zD;G1?pRca4-trGqCyEjPLzmOw#+85p&B@56@K=nc25<_p5s-L(G@+V&L~vX@#R>)* zBi+?Ur}DhOR9$CakCPlmeJ%vUmqSzR0e^@XW1UR-ByQ)5 z_NcwsldapbT1HXIspMQJO(@zn`3WPr(?{Hdowd$^0ad5${R~u<=OKpCq zPwvWT8$ss|0K@{$XmSdl#eQaGSd)Yo~0xf z?Rzj}@ilCqwf)e-33kZ9zr;nh&4*NV-g(1uAJJkN4#M^u>@Dkf*XRy?2qx%HcRC3A z#7<5l&-Jr_sT`e{E!}CvDPYaTR1w$ixqDB_lIN)ord;Ue ze0Ou{_|__b=)~KDzKfY=<7Op>n$W_nm>2Uy^_O1nfBf;w>(imT@>DeV{cnHsPnU*2 zzJ9Jpj(L1`Ty@q5}qbdvtQN@5*k3~Hzn*#maz6Sx3dx13Q-Ff1SfO+>MEOh|ULt=M3 z3OVENw?SOq5eTKgC zu)E-&H1XIG=f=E~UcOFIKT_Sz;W@kGG6BSJ+`7h}6HDp77wtHC!i25Ptrr#AWrT5( z_tlR0D0P)4B`8ZTVZXwDuq%#j04+1lb)EF2F?!z_&hG&|m3}@C^tCSY#7-f8Vln8i z6KeXMY)bwAL?`BU{Q$onv9rnByFgXQXPb{K-EhJtm}`k_5_6*SpuWlsCdTrBnA|i5 zqOzSohPzcjc0&q8eSKN(gK~PN(MNB;{b%pZ{tjSRT=2)XcpjzHB->SCl!ZrYqz3Kr z=Ejv6W~=TCVQ_dYDL}*IfvkU~r-h1*?MuZj@w0VaI`YkdNO`>$qod1O0Iwh(f=4?)j09GW{a#PUvcr^FPMWIuR*B19j#P zVR&>|=w|}oMPheA2;_mL+naLGphlW4AuAL>}*vDnes$}VA0B{Q( zpL0y9^i8^f+kVwO$ch7JwK*FDg3-J&plsS!p2ZqZQ_&WPr@sfCw&2i2OqG4pUn>HbZiQu@OSUFisL`GxyQ-SGiH4nB0vH;w@}ixVld zJi$s^QK?6S*&XFlZXXD?PbCpy{T)ZI?~Cnd(j7o^wiTRHvX=`KNn3^mHnuB+?B@+~ zueo}{#opdWUz>!bhP0+kQ4n}Ud!F`RKj*G-+KAZUtECb zZ{$cZL@4RWE$;sNliqfH1P3yi?@jP77+fPa)qXbbAzK=@DeONlfOQ%Aq_+tl*nS zN%ks_W4zNYXX=Nxrg=Y84MDW3ro3$?+%&L5wh2bj;~xxuU7In3h&z(3ap6xC0^m@ zN-O2yfoGdUN$vBY<;r|N{)s(XuoDw(26Dk9_NbsfXoG%L{9c?>24d9L(XPx17^qrt z$_`i#zHu}XHs}Um#FGcx)Mb|`2LyN<`rR_wwahl7b*HvJAsqdX_eGmDNHDIyUO;K~IuV;g58zMBAco{VvjuEh9m2ZY7d1Ls{=3BmLp-oJ@+N z$xaqFV0YbdGO7pLuVtKf@!vHE;IuAN7-Ux+>y;OH^DP~GPZ|$x^XQ@H#Y0KpeXM@# z!sHtwPu=#=>`FS*qn}lMY8xMES-UplpVD6wUVLJUVYowVU;M$_@4Oy|J}6J`uzC5z zmrp)>V_*I7Vm@C8Lx>zJpYvLz*z+ziS3pj#ZV@O!^SAIyLB{D=AYctMt`o zI%~i6U3@Fh6c|(61c09iv=IE&$App8SGy;P)yn{WG)3c8*6lYzPp6faOwt9g7ip`% zMH0!2Y=XPET!eu+SD?tdGSLQz6|c>eCAdOY`u)Djl{S##U?*X7xT~EQ?7;?t80&(C%2+bP&k@e1Rj0 zBUMIdT8O2NA2|@C#iSd=T)*b_shZa_S!4g%;~b9d7@*t-Fu99bVLWN$X>AMHBp(}Z zcpb}{8&0wKJ%XL~p6he^L$nX6;^oJ=ayWB1G^*FHpW#VS;Z-T_#Er$<(a#ADiYu}* z0Iq{~IAXvlfeaC#R%g}|0Bk0A(0%psdyL{<8cF@6;fc_1fMRJ&@Y&YOMB`e{3+04! z#QI5=J}FBdfP^*q0UZjGv6K@8-f5SWXxzD;qN#k;y5x^+7=kP>&2o3KscQBMT7Hb0PU5|efu8T#po04JPg=r?KO8!@uONao+l&lo$Dz+@0DA7C55>AMrh=h;sR$hIW2gK`aWoD@#{@A=&)mPo7c7+=BOtoVQ=ZwIf8 zP*f<0FWVWDuLosFMvh>ZyW45|QWCRkb1m$f^u?poeP;Z*jfu42zuPrEzB~VQZaA*c zb<$_!%ke#JZH^=|)62@MbT61@k@z+at=f-By?-oE4vxAxVe7t8aU9=a7d&9H26+3_ zsfJ^u+afKT?%9CzyQ3*GW2_HX=Y40qHb(7ot1x+EKmF)i-~D@eEf32FqRw;Wf8PD( zM;DX($%Xo#UcP?1j=j{AvMD_ZJF>m{1JI0bhRplj_&b)krueR*61WAAW%;241XDNs z1hBH37aoYyEQv}Gusc8sK|=0>7COG<@~zO3O)`T(B`6SSOI&hnp)p&+X|O|uGFao1 zOmB5(X-}X{@2;Z20__ltC=tw~&4g$GY0)uJf35&nV?W?A5=K~zj5O%8c5y?HQuV@k%?6?}J{Y6~*BbG9gm>it`0A0ORF=NV?wVou55x;(3FH!>$* zg24_ZoEw>uYv-?p7U@VfF|{mQAQ9o?>Pn#UHUwHja8mt~i>ZBj8T9St z(x<^e#X{j^Ny;a_mDRYm(5nG@cZ^seOsTI#-x2X^QZp6{Lst6DMA;-E&P8%HA7SP7 zIzQgEb1;-G&9)n2XK5>bDiy3}0BfZMDEw|H@VGwd1?47D7ym#~c>H5@+#mrOw}%OI zcxmVm80P6rN8F%Wn&V*bQ1V#N19Fl>eY7!YbzgQ8Kd9X2Z*H@@SH{uXB%f#&LEFP1 z-Gjc!{l$y`{q_CsP6HSP`Ez+KPnG`zqV+h+ Ta`eG700000NkvXXu0mjfhhwxP literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/warning-icon.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/warning-icon.svg new file mode 100644 index 000000000..964631b2f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/warning-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/arrow-right.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/arrow-right.svg new file mode 100644 index 000000000..5d9008b31 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-down.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-down.svg new file mode 100644 index 000000000..0430237ee --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-left.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-left.svg new file mode 100644 index 000000000..dd305be3e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-right.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-right.svg new file mode 100644 index 000000000..550e7a534 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-up.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-up.svg new file mode 100644 index 000000000..a7f0a6b5b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/caret-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/check.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/check.svg new file mode 100644 index 000000000..eba5bc6bc --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/circle-bolt.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/circle-bolt.svg new file mode 100644 index 000000000..00035579c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/circle-bolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/day.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/day.svg new file mode 100644 index 000000000..cca9ec624 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/day.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/dropdown.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/dropdown.svg new file mode 100644 index 000000000..580ab0551 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/dropdown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/faq.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/faq.png new file mode 100644 index 0000000000000000000000000000000000000000..40b6dbd9795c9eaba0b83ecef552a3eabf9247fc GIT binary patch literal 1046 zcmV+x1nK*UP)&su%G7H3el#bq#)8cUS-bbii;+7p=mn#Qm z<&Y>=(|p(c-Y$Wt{)c&~-`r*9i-7S9(QYl{Hbmbj6DWf(XF)LVJ*4zO6bM$idcIx7P*-^p`>j4#*5RicICwhEcOppyE= z23i6U>+cAMI!zq{$Hp?3KonfzK!xr1gqDOQV0X3D*I`b0gSB-1j0?UUQY2;wkhn${ zcx&ZI#zg{4M#hV>MEtx9n530awgliBU$~wICLOYlAgyitI%3z%Mdr_z04_}mY(;)*v_+F?BO2jQts-6TrXD`r0Q>%SnOqUd_;64yO zq5yE8gw&zPI-_m&rNRX*e(!TM3FO)<`8*cAJU>Wp;0PxG#_6bFRkLOR* z{L0r3DSi=p?vEk>I~WE3P)O91!FC=jtWFnClW#LRZFW&v)<$%_3wb3X*^S^gp<{aQ5}*ZmRTtQj+E zez73`_ifAV$yW!QHG>FX<|7=xGEr+0(uX&(kP}msP1*l}o@TsURp|eve;=W#3%b>! QKL7v#07*qoM6N<$f-E`O*8l(j literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/featured-event.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/featured-event.svg new file mode 100644 index 000000000..566c7b455 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/featured-event.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/filters.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/filters.svg new file mode 100644 index 000000000..0dddd41b3 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/filters.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/horns-white.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/horns-white.svg new file mode 100644 index 000000000..a828f6a76 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/horns-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/horns.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/horns.svg new file mode 100644 index 000000000..47ed87233 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/horns.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/list.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/list.svg new file mode 100644 index 000000000..01bbbaed6 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/map.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/map.svg new file mode 100644 index 000000000..33b924d47 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/month.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/month.svg new file mode 100644 index 000000000..5f9af450e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/month.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/photo.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/photo.svg new file mode 100644 index 000000000..18f84a89a --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/photo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/recurring-events.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/recurring-events.svg new file mode 100644 index 000000000..c096bda1e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/recurring-events.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/sale-burst.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/sale-burst.svg new file mode 100644 index 000000000..54ec7f32f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/sale-burst.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/search.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/search.svg new file mode 100644 index 000000000..095adddf0 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/small-arrow.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/small-arrow.svg new file mode 100644 index 000000000..1a56dc4e6 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/small-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/week.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/week.svg new file mode 100644 index 000000000..217d6f2ef --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/icons/week.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-community-manager.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-community-manager.svg new file mode 100644 index 000000000..17b17578b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-community-manager.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-event-importer.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-event-importer.svg new file mode 100644 index 000000000..a0678347a --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-event-importer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-event-marketing.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-event-marketing.svg new file mode 100644 index 000000000..d4116b3e8 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-event-marketing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-ultimate.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-ultimate.svg new file mode 100644 index 000000000..36bfeaa07 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-ultimate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-virtual-events.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-virtual-events.svg new file mode 100644 index 000000000..81b3359e0 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/bundle-virtual-events.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/community-events.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/community-events.svg new file mode 100644 index 000000000..9893a4840 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/community-events.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/community-tickets.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/community-tickets.svg new file mode 100644 index 000000000..27a05fd68 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/community-tickets.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-aggregator.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-aggregator.svg new file mode 100644 index 000000000..65acc5d9e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-aggregator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-automator.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-automator.svg new file mode 100644 index 000000000..b77027283 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-automator.svg @@ -0,0 +1 @@ + diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-tickets-plus.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-tickets-plus.svg new file mode 100644 index 000000000..a5bb0a45a --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-tickets-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-tickets.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-tickets.svg new file mode 100644 index 000000000..7db1458cd --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/event-tickets.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/eventbrite-tickets.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/eventbrite-tickets.svg new file mode 100644 index 000000000..8c89017af --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/eventbrite-tickets.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/events-calendar-pro.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/events-calendar-pro.svg new file mode 100644 index 000000000..38cd1a65a --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/events-calendar-pro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/filterbar.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/filterbar.svg new file mode 100644 index 000000000..dff161cb0 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/filterbar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/image-widget-plus.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/image-widget-plus.svg new file mode 100644 index 000000000..04d044b80 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/image-widget-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/promoter.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/promoter.svg new file mode 100644 index 000000000..5592f35b4 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/promoter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/tec-brand.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/tec-brand.svg new file mode 100644 index 000000000..f10ee3130 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/tec-brand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/the-events-calendar.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/the-events-calendar.svg new file mode 100644 index 000000000..a127fac4f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/the-events-calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/virtual-events.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/virtual-events.svg new file mode 100644 index 000000000..427e89c12 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/logo/virtual-events.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/marketing/bf-promo.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/marketing/bf-promo.png new file mode 100644 index 0000000000000000000000000000000000000000..b327d438c8971ec7ccb6cb5c07be692381831f03 GIT binary patch literal 57766 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 T#niPW00000NkvXXu0mjf;yv7% literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/marketing/eoy-sale-2021.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/marketing/eoy-sale-2021.svg new file mode 100644 index 000000000..ba63a4b3e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/marketing/eoy-sale-2021.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/marketing/eoy-sale-promo.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/marketing/eoy-sale-promo.png new file mode 100644 index 0000000000000000000000000000000000000000..55455cb92ecf6d479f6e112f87f1539f49842134 GIT binary patch literal 31365 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 vm<&cC^}I@f*` + + + + + + + + + + + diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/mascot.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/mascot.png new file mode 100644 index 0000000000000000000000000000000000000000..022f9bb18c877322de29fb95ad8b5b63ba13d025 GIT binary patch literal 29301 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/modern-tribe@2x.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/modern-tribe@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6fa0e9e3f9110d69c9112816cd3f06653bead599 GIT binary patch literal 1376 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 T#niPW00000NkvXXu0mjf;yv7% literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/aggregator.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/aggregator.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ccc31ba0bc0f824dbbe4d8e87d6ff546f1b6395c GIT binary patch literal 9015 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 b#mZt%HmJC+HmwLlNnn`o?)tI%dFlTEqG2eC literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/automator.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/automator.svg new file mode 100644 index 000000000..4ab3cd5f0 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/automator.svg @@ -0,0 +1 @@ + diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/calendar.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/calendar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b994f842db81cc663f4cafe0f2907113d4a5ae33 GIT binary patch literal 6299 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/community-tickets.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/community-tickets.jpg new file mode 100644 index 0000000000000000000000000000000000000000..885b2fcb4cd3b2fed1c1fa3109712cffde0a125e GIT binary patch literal 10321 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 Mal1!|uO7etFUt6_DgXcg literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/community.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/community.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2904f6994d71e3eb7d0adb62f54e3356bd6b7fdd GIT binary patch literal 8938 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 SI9DtBZWC)s)@Ar-_5T1eSoZq> literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-change-label.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-change-label.jpg new file mode 100644 index 0000000000000000000000000000000000000000..10e44acf07486389681e0333a4977325a17767c5 GIT binary patch literal 12938 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 E0Tw#99RL6T literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-custom-venue-links.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-custom-venue-links.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f6c7e6034816763226d24904d4ec33f5e827f3f8 GIT binary patch literal 6528 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

    aSvOsRmO)jQ+VeyHohF`1;H-dO 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-link-to-webinar.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-link-to-webinar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..41130c3063a338fa815ca9038e383921a2ae13e7 GIT binary patch literal 15487 zcmbWebwC_T(=WWZy99T4x8Uw9i@O95?(XjH?jGEo5CQ~uLLdZp4-h1G$vNkd?|r{N z?ya5OuBoc-ss2q@&Ghu_@0H)*0qFA5a?$_@2mnA9`~m#_3J3*2{vl{cNN8ASXlPh? zSTMmO!oLzCGU6XX{+m$$5XLKE{fi)=prBx&Vc?;m;jvMWP_X~6>Gu!-10I45A^-}4 z0sx5t0fhna`y+q^00Dr2hI;k&A3}hHf`x~GhJ!);y#|2)OH(lLj}~0=?SOxvh_BF6 z-siJezBGPT1A+y3W(L;0!^dtXZfAFXrkd?kf23@l+}B10a}Rj}R{NccM+#3d*b87| zc;f|oe;J87i%ElgJ2&BqgNPON1+<6~zBqfvvdL;|eWwvYEe*|Wg6VQwjc#8Tsd2$$ zjicl&D>a~rlLB4m2cpZdQB=N~c+dKLeVZN1wMWB@mHKM_c1`jfkG6Wx)CG(X>dg2= zx0)&y+Jy1RCFU(>7(67sf=%B-G7)82~^Ma`{iD6@PnUr#BuT{*n(?dC4Z^ z%}oMeY8Cd}IRa|gwTUjh56ZvQ2zh({ux@Yo+hTT76pjC~KJRPl-p1+%`%3U!{bYPx zUoY9-CEVar+Bf9;04y)gUqYN;{U!Mxw7MMjM&PT`Y)Ped0>KTol#aeONW!`2cJGhT z$|ZvwJMUuCO@?7Ye=i+91`l@3S}q}OZc>zcg5ZNL2b!l0SEP%j8OH#8bLtmLDYH;j z?bk;7jw}KRw&R!84S#86pZ53CudIKBWGdr@pS33Y%b~-rtPZ#cV;n2e>AP68VP22L zdOMMMKn%a)kgKLF3^%myxVraQxh+KaJ#Mg_Wm&4UV(c%?kAW29YL0byNrOsaxJ_v! z-BmdNK}=>d-EY2MM_SfQ`tBi_%V<$%qwv8;c~7r;*wxtpRaWg+Gv)7U3qC`oY06v8_JWAmT)l9S5kaZE17m}E_~;GTB#S*uu9$G zJAd9tJ}0>#TX8*^k)>FRVNLI85&QWw7)S(_1m@}Kplt$`9ska5|FLagZ=I2Z1#L+? ziZ|(Xo4foS7lsSnihHc=0N9#eF~M(ka&WgXYVBxjy4pmf08Q}N&g^m#b2cN(Pp*G8 zP#U?wlz^4uM|LoixqvXQ3KvYA=$DJ)Cf;{%f!lXl)gUrBIV(VP8-fw9xM+U|0c`>UFUmeqDnE^u%E%jO4ZL>sUv z005aC_^15qCjgvFh`_l50_Hzc2>=QLobTXZ;QwS2Nc6ueK(OkpmwyQQ)H47;EAw_Y zn{fLLh;xeGnbm+edd{hR&@ev_V7!K+;kN=-9X^-Udc{7+%sr@N<7-NYRs^LS_oW}> zbV=7;F2HIe&UlFkyk9)1V{HVmECng;>-c=v zq8xVNF}|zUt`F|L^NagD98PLs3Iv(-x1 zE#8+14?8`cCnNH*_lH=R>{)2#=0?1NzX7NerqZ0`o0g3c?fet)nMtvq9o*fcSy;ck zOO^d(Mv}ha2E<^e!1Q)?yCpSUc#uNPP)i{ymZWOwzbtyDj@V;CGiuoc+lHn%71gXC zJKg^B2^ z?7Y}GY&=-F6x?E>s?@X`;y@EhPGd)>zppwF@DRTNGYp7_a$GMQMKM(l6R35nJv`q9 zPLsb%ubehWuQInNc-Hl7C(;V9RyV_NkdcvRIwq)GAWcE1&myFz6K9n98Cu8iP7!k1 zw=7P+N7K&tb2vl*m@gA#cXf(R)G*u4CE?1NC%F1< zu1fTKXZPF@jD7rLC2pO43{>EPCtb7ph$@p4>}}lljSIdI-(AANzIUE71JV~CGKs|c zoa44gDN%C<_T5XB!z(g`T>$2}CL{LVHgI3lxX_eoF@L?&L7tB?sUI`?h%pnezF^^^ z)T57BbdRa}T}~#5nglx4^B)!v>j}yJ9ey+;F@cqQNe}|>>I&npT}Xw}SC#B2xB?*7 zP+ls!0mT<%7itP)7FVBEGMa3yJ6v$v+ym*lsV0~WxBfd|myof;C@yUssJOYnNXRS>7;-1r1O4gX#|S` zM_$EtRH%%0R1QYg#_R^xuwYfzr`wbM&+_7=jUuc9@ z(*SBd`o)9b+rh`*084E0uKa?l2fVA6&(I%d4tJ|&U$>~n*UdWVb(2flrFYt;SKXC! z`deZRR{f&|%dHc?+g3195Gtg%B9<{s=?~ma5h%H!j<72-;L_`fl>1=U5h7@h^I$hX zrJ_XZOr*9k8$;!kbsALGaqwsD?a?w(>!f&M7leC91AH zO%;p{fd)t|{qt0IjmxQtg#kcQdH1>h@-rlkNE7EoE*g7mzsVlHbma|nj?JYet*X2t z7bQgvSI{LmjW`+gZR_>o6`gF|+xa+&%o}JC=p-`(Nb~SzWbt+p_KzwS?^`C8%PnGC z53O`{l^n_!G&KBr(RwvTM87oozuQu;;ZsXqU2VEico?3xsHIzNM&z*?iutuJZePuH zP*l+l#FWuto-LS==QmMkfw`BdzQztSD^{XDEO7k?#L+7&Y`;d(y!;ro8b-V+2v1^GE>M<}&Ntf_75%Eq>; zc%{N?79mX+ccf)D69xGFV?zM0d3=O$0CS~z82i)=?iNX|)_KR$xisBdK7T^Pb@D@g zMN32R0gP1rb`;GL9686NKrX4PPFkA7)$>%upb^gzVbeS$Ct$F@Wt1khiGy(PI=0;u->egLT(c_)rxfu z1`Jy!)cLFvVgz#n>?rz|g4@3Vi4lBL8L~37A2Th=zl;;D=h$F`3D3NFb@TdQ>Zv-fi?)I_BPrsH483s2>Te+KZ(4+y=%!ALyNn4O?=`X*HY+4JRC zI?p7Aei23?NqXih=;no(+Xul;!;Cc8Ds8caKaXb4i>!ApNC%c>@ zf28lVsHr2=RH&+xh07`tLFCMROboy=KX86@d@|AcPrq5felNFUJ##O7Cl~y*+c?r^ zs;bvnVQfrEho_}L)0S>RE`b)Fpcv~HZ^soIwHqAit)28(!zz*Rb-x60JFkFo2pm`Y zPIVixs_w2gJiQ$Shgr;`TVCV%lI@Z!kpr=t@m-wHpAeHd+yf%Svg{LAqY)LTdIe>k zC$o4W-n36k<2;ILg@S`->QB(1?Yu^fV??zbRnn9jLz@j?UsP`#0+VNI^4a{WIemPq zw`!`D&~qbQ6QnlC7*XbpMONW=y7 zua2I-Itu&=P5_DDGH7Nv4EG#ISA>9-0%`#rTm-T0E1`(3IZ#JB2 zr7Z{268WJ0q;$}-RaEGN_C1^WDbIL*OzC}XprN{YO2q+s8UK7)0ZQ1rrgWxt1CV{? zcxi5UgN7GFbd@rboZoCl(dg;+WtjhT+UtOS?D%;sO*j0O&zqpAdRZyeGdBhK(@w=3 z&*-kO4h@Ew>&1%If^Z~ZB?IBFW!QT5Dr^M#`7xn3MLecqHo#;zA^L@KB&)?3Qr}GB z80lWn?Jm1`m`a?ud>0FQ)fXW&71eu)izot)8%|0DDnj^NF$J+9V>?wvQ$*c4kSa=^>hH+ZEZ(HvL z5;s+y*oa3mr!2O-LiA^blNhIFl**u5fy1tq^QqnFjWba8A$HBo)h-MzE4yXhS=8hJ zKq|L+OjnE!_agrVv*__zul%iL+v!Dyj!;8=3Hi}!*;i1U26F=}vXklCGp0%KkRXX= zau59Q8d@b!qwTujYuKM0gDTLnQ>SRHF5cGETtmN1zNKhcgS51y6=t?}gk2>koe8Qa z-d}Y-=LXfQm(;!Ca1$%GBM(2+D%g6{s@W*8N&$iBO&n*o9L%h)!I17ZFh(xNmIwP7 z+zKoct9nOUyUTL!5(r&X!-`AEEhUx>g;Ze1pN}i?AguNp0UO(2>+lL+FB^}Z5yzKU zcewUpUwRVvJatbYl)>mlp-8q$zwa59Smp84lmyHTO zwsk!QN>7~k*!Dd_ueX7f=67p6CScRMHyrKuyc z@F8Nn3|iW>x-pl#LQA>1%AXQ^3Dgf4dmBE*x5R5%U%M;GY(DlI00k-&0HNr%!^|5# ze2}v~y)t#;ay>$zUx%8Hdw!qQPL+x4qSkoF565wel4-OK_U(noD4>uz?l%B_HSHy+ zjrYcwIqo?wYx7_=?GC40d(%^J>}?Sg`_DfQt@7bN^2~<^ddWSw>*d zYn7GNx~Fj->i_}iFXwxz%?kGr6BZdK-Y0X0;S;=k|9<>?FlsNnLLMoYn)*rs&6gja8?xga~(tEu9H-L z5~E0g9@Q7&`tLH(Zm53)%o}$KJ(WF1bKqVE>)Gt_>}%VOp`}@h8!)LimebfUoMeoZ`ZCCzJ5^|5E*F%N?|r zo(3D7U1&6`LGuVrpk6)3i@EAr*e(&(hfRR0noN-T#b^|H+=6vGyo~Gp{Z^LZh_B;9 zd0YSyCw&Q6GqwlTn7?W|&6>94cq4hgswrcZNX@r8L7G6N(cBu4#m9~K5Ve$;kL0?U z5|u9So7l4(pC`=z9 z4^Zi2(rfWI`iI@D*u-T%rv(caUW|NY1t#Fh=q&-|MM`g!l*<AXkQMH`MHaP@7>>v`(4~D zg+6W_<{?B_w9sy%PFkt-5#`K0ZMk@p=JN9vJq+zl{{|#Xz4^o5i16ueMC>EI8m!hK z+zmJDVx33Ow21KiX=-OFVjooreBQVBtaqsjnQInKm1t6w6`D~M-b%fhtiG9X(uihi zSxQnhw`hruVdgGnH!pu>IKj+bOE^=@23YkfA$vTj3Y_hx8?)=UbW+Cj`o3;1-fO|wog z_1YHAJX9kht`mD+rERpFWGI0&7|n~QXcemS=i^!zbJ|bE z42>$t3FG2QzG?z5wNE9{ZDv>IZ+FnlQM*m+>-wM1ZU=A*h% z(?#Kx8D*+zkpIvjQ_tJ91W-7;qne{ZO^cjvsuciHjuudiE}ZCUhtX3CPJ!EFAuPL} z@@Hdmj!Dwk2eTIl%fER}ks~n(eORK*Kqe47#aB4#3}g5WXeH6kMof3}2&xdCA>zjP zh8mOUB-R;zFpL>(s#Cu3BhSYQUbejOz2Fe_s71$hT$%h=Lu#71dU2<`={TX%-pShp z`ONQ=HYi_CySGzP9BYZ_Cty>nkAuo}adLY?=-FFL2sL#dqwaDozW0F|AdumRoJ6#k zdf@Rjh3{xsNszEub8s1qc$gIXY~|Y-vbw3#H&CKkXXSaScj~D!Gbjn|%4k1RhP} z$3>CsuC&Eh*N?5d=rnhXPur$vIg+^nr4*0|Vf>^lPP;Mprf8vZr5? z>xZD9jYh|2IEKi^->Y>xH3=Sc4(2Ve4;d}3-_Ng2tZ!=HRK+7N6|OhU&ag!5E11lP z%mE!AFik{L8^UvU^h|FhN)5hpnozaD)Ecj%P$UpD0-q{cc8TGfw_Uwv|A&)UuS2!d zygQf>D;?5K>wFByFg-1eq?o?Cm;n~|sp+!F4%1uJmqNoJ@#n(i7hvGZ;}~{+iczqM zkKp{MS(fjXlmAvs%cx4h|K2{dqeUz1ZqU0)x6~;m+S3XgJ*NA3sBLaD#29LJ3tCj{ z&D54`C)8gFIOow!Z=pR!D{m@OFl~|@@2-x4C7E*tREmTq4R%Xy>lGGuM43wZsR_^$ z?S}&`1nFyiN8zlGQX99F&fD%!f8#{@2PcJpc04{96R;FL~2SA5)%`ayz8>t`*Y{uw?+2;{tw_-YW+KwUegu$ z@&4EA^1X|_s<`K8KX7c<{yVk@O@uxB4#L8`9;L!(vd2@cpz=xdZXB#?N@ua&A}$6B zvRdyC?w(pmPxO}9)_b$L40<)*rAGIJW_q!R#S+#~FO_7X zUn836Nxs#B;>4?vjCBMOES(U){7Q^$tNI9^$okbmM&aQJlk0FI6B%69<)MlRbb?^#{^-_5~~FiaJm zPRc0>vHKdS8PDWWLx|R*5zyBVDNeYPnr^rgQ<|6Gb*?nn4>ksMmOp^yz(RbgHE;Zr2bIUY36BH?SK+gXl?^2MdO3|c&o5M5BR+lW zCv4wWnnFGMpJxnp^P)gqiD7i*m+*d#7xhmsFMZ%B zTQdCTq6lYC4@;!KJm(UxOjjKZ(m%Hug666A1^y`Oi_Nung5d%cZ~FXTqm%908|Gyw zZsqZbP{LMIrbc6u?ScPC=MZt2-t*({ zP;vPmaTKp}9g{PhUCw)VJGJMa-Poo|480_vs^7697a(srRqS< z+?JRc7XrY6Z~yQUT5onns+SlL<1M5w)$70h*O#Q8Vk1Ed!$GDdvb}jRqL2CD)&%#) zyW=mbKUz%;2ctF&2g@38D_lz?NPA^-U0)%|ir2T1K zAsyr=Vu79l0yz?l77Ytn)BBtN;hPRN$F4hCm2>&ajyiLOgCgS74<$J zjm3Bo>#&10<;**7t|LA1^_gIkl)p>@>|b|Y?YqGCT7TJl{$)=Cwl@RY*Z!xy?O!|B zk6_KqD!bivo4jtd`6?kIitDm&$}dw5%;dxR&@I*R;`ge%B0K%y`6nYfc%2mr3KA9y zyuSKpDG>q#Kn|XGnmApcvjrs;4U#p^iUKdUjQ?3m6G8tC*k3{jn030@Jf!fW7eHux zj1J6(nyKOs<4T!CVl()BCuW4i3&{Lgh(PHi!nAq7H0Na`t580wiL`J^6)N$qC*Abg zjlDP>AG!2H9S1^qu++e@w<3zzm$pL?GX8zlY#E>Z1s!^dvWtT6nAut;bq_zV{lc^a zbIaOAOznQ}H$Vg`+0-q1SEy;l+TE~rQ@eGC+EP57%GMG^*UnchH%6N~xzuo@m0z6R zI7-f7JOv%@QGA0_g=hpR2AiU^LwaAnhjg-eJYF_MaxPSa3|8~j~37tr$e18+dQvyPev;$P|y=X~{_e^p*?I2nZ9 zf|4T~p6GBTPS#qxmD4r~)M3$@ZA?NM*(vZ^R_D?Q2u*VV$?U4_G3J1(Kx(8;39ddF zU3d#46bNSFra5kgNfsnREU`!-s}w9wcLRxNixhK|F<1_JEX*S2G8CIVOfn)6PX?@8 z<&g8e=$$ZsKQ&ZAu?QitqN>v}SztB*Ml_)~8;S}5Sh_H*XF*|kIfN%IlS3Cs<2}gx za3`xYot&?BO=m#v!^_XMQU?Qdc>@EfY9s{EiIC2+r1ye2 zNzd_bfSShESt*AsZezEN)9DAp)YGY-rO7aj+Umt1WP$L-UmpW(PSC3{Jk`ve{F;jvyGl`nY0b%BX2Bz+W z6@^AaEn+nrhy&zPr(H%2B<3HMEuXb~p0(aRYq>nDpY%@SRIK0B&;F`uUb!i3+_==L zXgm}{_Yl-_eFpNKdzR@~oX(|#tHK4Ju6Pt-udopdcVI;or~S!96-t$7wnB76 zLCqyPF}$uSiONNrIkmxBCHzCHL>a`{mF<}!9`K#GdaWE|sol3N+0YFr)98t| z{xt;Vp}65_s`RXRdtI^mX9g%5TE)F!lh!J}E}pm1otojBab zTlH(CStZtCCLs-$k4%%d$zj+xgEBcWf4yA`Y<45$=tC66dMCcXZS@{BOcTjW*)wl4 zB9^f#^LaW^6sh_E=p{}i(Byu_)+`M2-yW?DoAe!^6Kk@(nb5PLADkIHP^aRz25tmJ z(ZfNjmF6FNvv>>NX!~89WQznI(Q)NcCeBb;%_wQ)L74?2)y7y@Wa=Ja?TS&#PRVq4&9|M%TVA80$@S#M#Xr!`pLwC zJeqe)&?DQsW!|2OF*8%Jiht20QX_Yfqq7oB*Oho|2L8bGOQ7lFV1+cd@{$UiRJzH! zqO7$bUoswmIp`>IHzv@~25{>^XnsqiCb=*%$-@RsH1^@s?#be@8IMe(4hMC zpg1eIW?o$yJ6}fYI-~+@t%x;+n&q{_v>0YuEDABWX+r^;ggeRffY8ElrHnY22zm5q z>LfQVPM$laYHpA1R^D#tpCJEHE zYvw>L;Ub{ttj&fZsTw8ROtp%>woeY^Jwnx1bH>Lcpi&#rA5zhgOJq5At0b&86D{$U zJ`yQNL*Q<@H-KTd=_ky&dO$-$^L~q2eCCWdsI!p;0W!c9rEiA^7RW--$#R&GN6 z-eUYGIy!{1t^*cO-Xcpeixv1ycLKl*SbIkSn7J*avbNY$RK;g!NgrOkFJLY}fR2AL z=JZ_-Jv}$v?P&pwArwyt+MOytl@N5;CWNGZx*vHEhliwZGIMoM9&p67Weu56 zYV|1$dcqTIV9Mt@2*!Z9x;jt3h#s9bDBG=vurw|rDMP8BCve{TI1Xu^W@m%1TTVBd zCa+#qt^1v*g;LplNs}DD6UG#3f(}K{C@KEOIm^QbNPEOBC=3!SrpeCyF5xmd{6egq zf<h4M$EjfDA@L&y>|x}jb<<#B-CxAvTJXYRRO}>Z@6`O zmOKtk~w@K zg)AmzXB^q}^%{O!*`Jq_(nFhBU~w9~vmjvYbexhlDV=X(R%FLD4aG>m7+%nqs>`%Z zOoT>=KomA&p9QO`s7yK=Ii_M_y1 zv6J;}F%fdI6*r_Rf1DL{A{lm;9`&|OoZZeCgwG@$gB({lF^yq=0sfo*aDE1Q@jF%) zs0Gh70Bk{aelnbdQLEy)6iio!tG2W)h;g&4z1B$aP)%b-Zoc{l)p(M5+3=7+d%?_w zEd0~=(DpzqdD}0=v2f%mK5|@S6!Nn@(NHt)biN!Ld!2NOyavP=P7alZ_EbSTB}EVr zgIm^>{^ZK*5`}7)5VV!w>XSy2tlZ|K+dJGMZwfbLfp4MR=|pDL_gYr*e1Z<1hI|?F zqV1o%Co(BDzT=lcqi*I(&<}B$4;Dt6S}_TJFGiEieW@gU2R-z~iJnDvDMZy64Rg&k zNR*CA{F0!AyFLQp!1`dOG?u|q13D+jv;5<}zn~rDw{hwixS$Sh0%ycExsFw)c~Rye z$tgLFCc>6V?;(l$1YIA@hTs8N#72!pa;!o~Km**KT-K+9H_xYA#9`1#T@S8$ggx@f zy#?1>rM89__i^Kx-McMk51P7lDSE>+7w1_h~Lj{#c%!%@cwr8P=4a!I|I|5 zZ?){#GuKU;t(39)%#GSR@v@db?J)@_yU_foM7;c1Y3o5WBk4hGm2M6kHkrOH9$!0| zG@xFc#DA_iD|3J&T?$zt5(NY{Ft90NeYZg8Hzpb&Y7v#aQgMam^XkCXcJ?DH^MtRa8Fh*d-sV%k%ZR(gr5M5;X*E*YeTj(4TwH<6ue$i@=yy4J zztr*Gvd{%TXJB6vuW5Pu0Xgy_aNJdj{D8o-E{#kd7P{=`3>@eR>k;YL=ldF^khX;Xmu{%%IF47Oze=F)P@n12Vu$z z5t;Phegl+regoctXJXVsnZ)1<4J{WLV%O|LZ*GuV*8{+J=7Lz2ydgB>d#V0)qRQpE$YCuNC})-7cl zD$Ay1Yh%o4TQe5v?T-RX81=c=Xr)ctwz^KT`YhAnu#ALGRf-9JO&myLhA-=W+;!Ew zvwG$WM`|(c@}2LIS9^cJ>8E|;bl~>Me~5W}3Lr*To7eAAg(vf0Eo|?Ep%R*bjx(1@ z7Z=fD$xDgvS7h@)K~#CO(r!vx&JAwrkYA%Cx9LhL{S=l(iTA(qYG1`C-*UN2ne6*K zhK5wolWzwlW!6Mmv`{sz>PUUTlYa&l}^4CRlxv~I5d2H-w=P#@L(;Yv&^5ycLjpfhaLE0_i? zv757L5Y|FQ?a|>ILgN*SzcG!L)8vBC-K^#PG@ieKCr#T2x^ML3w$iLm>BY#Zq{Rx% z4X}50VxknEVxMVdT%SqtT*wQ`qz|LE97an7n>=JCXrg1(3*KU4y->yQ1*u-uKUm5; z8`s4mq#zM;H;pooAHZ{>-%MKWD(xq(1z-{|Q17Vie(dK2MNw@iSvJDe5&0pBAFK9o z)CpzVWI0I=Gq6xCFcHeFz#UIkom9q^YbxBz5n?hCO=taLL+NbNV>Kni&9o7dvj4!H zdQGCOZ_uN#5E1`nu$FLGJfiFfn(KOxn$fZeRBxBUQnEhqR*B`B|7?>nD6Q0vck{hD zs+!o0<1cm78XhWLmBd>fw!{2*(!=Gap4Cmo8}9{7axlA=a#(f!@z&LrO|DluK#Wzb zvnpGeCMjB9@%>OMam9?jV3z0;RG|~g=!+v zK2t{dWh^%-yPoUNbso=&%Qc%+w zsMaZSnImRKjDc9#SHTBf%}lvzKKLvSgalH-*ZC8mTb?u< z0@ceE74AOX!e^4GS!wsR?9s_SQE-Gk?ym_EoWBhnTZjD=I1ZQRA4L+osN?2u{6t5T zI!|ovWHTu}z%1-9R@@|jb6wmewC`ysM%a_J-TGG5y^(@J1WySZ`(rI!nyq?|Y}tdO zGc7Ewgu@K;m+^8eu~{?DhjYXubRmLAb+t$VNLk8@Wp2R@RY{Cg0U)audV9@OU9of& zY4Z69G!p5`GBjALj4x(lHD+!2**~=xYKqVeL_+vKS3!M*$AR(6ORmUwQ_V1#9`}Xmhu;tks@Ye2MNLXsQ$r6pyHhg(tdfZ;E)4<~m-|p}kU$ zAsXsU^;2>Z_xv~RWVhfEi=@k_-@D(8+7J;W-ama-50ZkAq4z@fqim!utQEKE8mRvDI1GO({9(a|v}5)_hNGEV zb{ufFqyNKZ{IBeP82n-XUClBH$&*vv=J^_Ym%sV(nH_Rxz$#7FK6BLLE z`Co{eavW7S1(D{`inal{VU)<7z{J%G+X5?vNHV*TTBP@^lqUreBbHV*X=ic#+2Y_; z#ymL4mNF~P+S50#->v(fYMA(QB%h#!dk(6@-J*=+`jBGbwTjB9N>eK>=zY2?0_3~Z zzYY3i8YIM#jCTCn%ql7VtLM|=+@JGrPbo@LEUMcxP%rVDBj)JCba*<4G??pId7 zE^474v4Wo04BsOE+GKVG9Vl3=;*FqD5(yz$B+WU6Mkg@JaBfK1g3^&O|FZTpVyH`) z)S&^HGq9>`Lp85NUV6quW~-S4o67+1+mGf1;}v4KLzOmSJ0%iR`j{J@#L3xjz~iDb zH1D6qw;!o<=TfMyk_w4^7PO*7@63J!zWx+sm^Yq(_3Ou=y+qp>(R{|`p>mxE3obre zQq{f?+?kh}wp+J18Oc89p0($DwZ7?r`Vv<5qNk&|Lj~%HP-bCCXUfMk&-5L7xpoz% z>C>S)9uz)}GDeA!h|T)h$(udY;)bvy&BJdTUQbgNafl=5YBtCACEN%YD~BSvYV}o% z8MtQoIMxl;Lv{4JBs}?g@|$)*YrN+@EZvkKdq7#^Qo;H1srSSH6wz` zQ;&wN7G{Q+vt;km_IyT6`E=SyW}E4s=@33^;@r4dJJ_%~-L=!Eh6V{n3FHqK=w71D zUZboLDL{Mp0Tg99_*0W=U2k`rF+V9F{X|C4;EnH@8?v9x7)PNN6Qvg*uAVn_-O^00 zLxV+a$Vol-s6eXks9+AHpcLXbd|Vuk#Fe)_0^lEutREw~wSB;IJ8!~H_7{z+H6N|F z*LjaDs}@JR-Qy3yhR2l5`+*z@%fI6?#3D3?))*C-_N2@pJSNAV`jY@ZghshIRg5ZH z&%C>x*o6$CU|RNkE+1Y`uWcu9mBwvKh!IIV#db}r*6yE^{2e-kqV6)SB``SA=IGP| zaYJ(&_5SJ{UOa0ZNiNR98G!r?0GR8M*?wDV71$C=1<8>`mMBYG8kAv|vEt%k9k%16 zQ4T$ixCx4S=EEufc)%x{1cI-d)hqs++NHo`zo2gj<1 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-web-url-cta.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/extension-web-url-cta.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b927ffd6575a08befd7561047719736a4c4d03e4 GIT binary patch literal 12735 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/filter-bar.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/filter-bar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53ae5f3528f4565e57b4bcf2141dae6074b42ebd GIT binary patch literal 6459 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/image-widget-plus.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/image-widget-plus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..76984a830d0cd71db12ef5f480197699da34aded GIT binary patch literal 6702 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

    mojvBk!X+$_|(==byS*E;6J_1~aL8dyVv@z@pQ1 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 Gmj4Iqw^XkH literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/next-level.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/next-level.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04c363b5b3d85a587bd4237cbff1f25663e3b3ac GIT binary patch literal 42308 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/promo.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/promo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b715f790ed280a86084ed5f8e71d1c96a6042541 GIT binary patch literal 503190 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�mZS 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 w9-kIvMGLLxo8GJI6Uzeb7WzN>X| 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 bW!C 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�#3R2S8Gt`-^D<)5shSQkFny*@` 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

  • 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 H60!f;`2NnQ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/tickets-commerce.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/tickets-commerce.png new file mode 100644 index 0000000000000000000000000000000000000000..44a6a747f2bc5efe302aca71b3a7547f8c5c2c4c GIT binary patch literal 7204 zcmV+<9NXiGP)5P5yLQ^vz_v3<`6Lq<2e|~)aUND5aTMGYBI&>a$Ix&j$wQN6Xony zVHlrbw~EJbs>wJ>5W7_v#&?{iXp!m_yDJxj7|r!Tg4Yxc#KY`vwroLl)FUW2fjGq>EySLlFoYDTq-V`)9pRDX$_U z3oqK3RA>!LinhL*A4DV@n??!o1?q&zEJL1G6~UCC7B94q5Ea@b^YQ|73eCy)A0^s% zfIP>t`@DTLLH&PrCykeW|kCMVk{fUR9%Q-cW?;o_ZQjilDI9V z#fvJ7DohymXOuuk@y-oa#;~Yw!lJE>ijX5-w82EVDr|(5DkljkG@`ZQ`_?fbUQ;QW zNl}Riw)_fz1m;)7D+Bt4o7;%C{rCYRLp8#}i#BkpNI}h<`H|F@?mo5^5v`KY^hmZs z^az(Pvmf)55C|`iB@G8#AN@z8YU2S5FS;bi9$2w2{%i{^zoxtB3n8l2EA5E3;tE@E zK@%$B<;jSYbfXwt>aP?9xsMkix_ZCeL9wZwWKDGa`oZ3g-@dXp_uRtE6S;F;XdNq? zt4|g%rWk}tii{!imm92z&-| zmMu@vb!$xOxSECL5~k??b)yLZCW{G>h1X(q^=>dJ*0vT=jS5CB^L1%Qhu)>JW23q2 zZ+?9(_1sB}2S9vc6twFr8?1+f*pfriyB%I6io&;5v~= z5aS(&AzeE6iT{;#y9cd}YgQRsr&yMiFbw~!GEC!0vBhSsv!j~PAydd2IJ)Dl+_`Cr z6tkm)7+)}d@f;=3oV7MiIeX#!_FrapCV#y9KQ{H<_CSW1P$E*u1R-^l{WWpSMKz0R z0V$>)@i^M~%Ly@o^U|wiPWe{qVLCQ8+%5h?ySw`CO_F7?07HPCLeA(CDP*UeLe>`5 zO5sd1*R5MejKBQqbb;n0`vi| zqFOncAqDg>A! zrfwV~kQmWO%#<5ED@y86cZUh0Y7=oIsafCY6R}2#W#PMyloiDLuuT!~cY{c-P;IX9duCQTCI#5VEvQ>~VcN;?)AV${)EO|pMx z*d2sA=hWOpMYUCzETvB_Tq&=0QmItIwO<1(8#ivuP0-`$b!uA-46aPS)P4_(9FYvd zJ0S!J5gs|*PxHm=mR#9IUQ=hPSuGY;=^`5Ti+?KJETf}#B%5jywRPl07Bj<;HtH;x zHBX4_Y9Y9*WmGE%gx25RFVFGiNB^#w3F)$+s`1#XDIm=cR_q97iT4&iKXoerN|oTtJOm?nJl<&mWb!{X)2GVBE6I7?W2W1 zqx&+$?9&7+JdaRA{pQ?-o}`b};!HDxm`8I`%&UoWJT^KyS|Bhtm@{{Yw1Gj0u!X_9 zd5M^>gH0?bVY2XCLPfNog{GtYk&2*9(aNid7KB$5b~0rt%e=L%;5jM61*@e9F}V(5 z`r*}N;njiaqd{!;$m6n52+c`QZWW!Lo}QY$nm|Qnr*Bh{-ZOdA5~oj7zb*yrVQ{RV z4Zik}jEeATdcA6ag;xPxWQb;nYSm6$`^DJ{=TSvKwzC(`$;a>>fBMwVbFT@iwu&wm z{k;_PYwE{J)Z$z@oi$5Ch$oJvrB74&Hl4!6Yam({o=-qv7fqchA{c}fmqLT!!X`4s z;PC^rWd_mG?y3pFyYgLD32UY zNkO8|=Z9A_5aGdzapU4^L|T?c9`Bfr|#GuY7sjsfZR< zf$8A0d3OKH^xT10Dt=C3s;z>hL16`^Xf&rFy(SRh;ZFVKRkxIMWvH}Cog;m6e$mE0 zu&-xLDePM*0jUUPi*05o`(V|A&*10(_X2G{yesz@{vJeUOuDNZhko<;lgIuvcg}8= z@DYgcAf%TLy-v3-`*hLgonNA;QY^yZW_A0Dn<~x){`!^R(@dr`f%WlrzVl{D;W2g} z?vdS3=OVunTs7WJcB_P+z=St6dX$*rAj&;H_`EzvWc%`}&(&m>ZdSKSln6|CNH-xq zj2<#JNGBg3d{(64c3?uvwy;YJnqOfIPhGDc3{?8mX;v`mE>|T|~YC zL8(^Eujv$;lWM%0dOc0$)08U}geXhZ)P!)~Ih69;HpX7ffPfPPbD8MNp-<uCa~EzDU{6M~#B`hFMt(Dw^e zc+G6%Y6Mv3p4|JQ6dfX+TP~e#+wyD8iiz&^--z}`zWD*f2BUNsfiSTK4{g;S_K=?h zEWDW%HIQ09KKPtGhZDsu(dp3+U>ZS1wOxaDRKqnB4mjfZ3{p&p50m3qrQsG%;r;BF z3Hqm}hzTh%3XrH7pp^s+HnV+B&r%htQOQ6C-*@UQosRQ)u09+|< z;&iLDU&^NFuoG~^yO^Q^jL%3hkzTq{9a_hkW+LJ-;U=&?9@4F-_%tCn740yf;x_td z=Jc5+&6*ReTg40Xhz?GV+RaJWJ(`NZgy;5MKg?i21$^P7H@n`iRW>X|`(@3MW-8Nj zF~6p|2KCy@P)l>#jCs@b!Obg=~jtf z>Tm6kYQTF`bu|YD23#{imqYq9PnG{S>>8R&a(kcqS>U#!@G#_$5jc1X-NN24AR1}r zv-@9>M^u&eViZ^J-?dGR)0~SF6ei%+eCVNvs8O723Qv@X1GVgVZkPH?%Obb0zp_a_ z1`*!!7u&<()r3$`oJdXlHVS@MRDdlEc+s~5djBqr(aza7(<$cH)E`&p#i-=fJgpV9 zJ(I1gDJ^2h26Dd5V&L(E`}%14HQnSTRrm2w9|h~@)E&HDFsc`oXoq<_q?&$2J22?!PSm1@!VK3D!sb;Mriu$I-cC%Rrw6U@%;kEhyfZNI#rVBvXyD%9)6vL}2A z!|qmbf(WhBV?SzZPO7J=mG4tPoVE~`(89$DX`T+1SCgq7H4^Mas_9HK!{}DgL6xyh zn>LXf=+()bUd?LuJ1=b@MMob5a-#2r-rn9`P*bx~ zea&)SO;txz`8CgIKFv~lpDRM=)nuwe&1ZTwu+nU971+fL!;s=xy?S*{XkPAxF6(J# zQ^`{3H8qdFCnDdw15$LM^lC-{J6eU))~5POie_-DKw!PSy%aX|nwminN#Q|U=!aoT zEVWNx=G4*be(UF@Bd6XuN!7peLcHu&X&stEcn||bqCo#i|6=R5HoVsEXPwKQ+t(Or zRKoIOvy@p=-0$P*X(qc>nwzE&9z^Hn3ixJ(-72j`pymCT>WQjbrBz|!d4$`$-6oUC z+&R+BW_7DDHY_}sQG+t*SGonX0}fM&gs|G zJ)3%cO;E{ZhFY3Hucw)}hMBp&(1Wh230Qb8vtX7zDV%q(xVzybaJxi1c7na`8uARM zPg4oaZNFyDn|Z48@6~H+qV5Vr>8BuBcrK%+I@A=18>JuIcB?>W%f;JD{E-mc$Lw>j zfOF-Zdpy``wn2*dG!Y%mE4%1ZH~)~mn$3tgcadCyj*0n3h39mu%>TXW_chm9xIhT) zQ+9*U{Mzr_nI=1N`Zb+CO}z}DeqPM0sfyVu!?fN^qe=dz4B|FH8quS8j+5@noSA{ z*s20hjrQ~OG;`M6jBhpMytD@by?0P9Y zRFkeZ-PGMG=odZlXu{KBf5tzWLU@Q6y=(s=x6+^(&J_zmqe}bX{XTc#<(kXhJKZXY z1dFbfXe!GXzR0S6r?Z7^@hWZvYV*x!_rF^6QY2@ZxppnDMrbA2tLY(_N>EWxZO2?K z&S?ZhJf?N1m}>g5XtY&PQSZsUFUsi!OfytF(Be!py{bUD~9;%j+M z>vbr9rhT6GXo9f$G(i=@bI)ZTMG*C{2Rc^2KeGGjs&-9sx>eS#tIw?xCOr3Ro~r)$ zKztA>>S&_oir+p>!1H(>gQ$1cn$OD>^bp_uJAYDfpTJg1Gx4{qU%$TQYS3PywqZVU zxSs}J%kR&=XmO`>tz37*M)DdKo)74I$g46I<;16_nSN|r>?N2IsU$k($y6Rq?1!$~ z$%^fV{-b{L=<0b-8x#8DbaG98L8Pgu9!k?*7K23Xt!a(j^;m5uT zEIc34_mD^0iO6^Rikk{H?sQHgbagd%Z56!#u>B3ie447jtwH2Ve~*RdGY}t2|2?_) zh1`J4_QS8s33jBUPPYnABlv?VaO)Q=ya2!+@=Mz<6MeqtrTDO|*WmHTXr485(li3o zny~N!;*$$k%I&IOIjlqq z#A{vHG8O_LKn$>)+xuSbu~v7hL>(4hNN7d33R9Y@Qq6~VJtgO$u(%Uz*)aO%?mVX>JIdX`EJat1y+RdvHY!f#10JIypeV5wLz*&8@;zrr|yw zCV%0;z^EKkAFbwAVJhRw;EJ+8VNQyv9d@fk4_D{$9@+hrblhXXCsQ58YO6$v6T?Ku zhwUR4wjLj`k67q>d^o?@700m_T9fVi1UkHjOWW__K3|nYp|%P{g(W;EPG*n8`4&}N z7amruW3lHC5_b_(nO2%cKtwuxgy`)fw!qL%o^&NrWz@+&j3zDcvqYAzU78ef zJh6;ny&0CiG`ep<6lmt!DiGGb{n_Jz+9H?`%7`HZC0g3DXv8waxj432l!;B)Li^|M z8x7Tk_{LvZOD1Br2tSBXhxq+*GQ^Q6K0)@80>U$|CJOw(1{JoldtsuP+$xA#5ZB%V zc0@y~GLk`DDIu;5&c$)y!Uf7CHyfVUg2)P2iMM~!^FOsZ2Gi93p+N}DLTxD=KYkSr+_~OJQwxxMz{rr@r<6NZ zLWol*C=rX%I?EQKD|jkAOsc!J9dWA>2DgfeW~!A!MYD_BDSdL7`a~of&?DKS)VgGa zm_+ODvEoywibxnE3_UmGa`1dT-r({5a?vMa1GB-7qkHJ-C!Q>L+z+=3qFQ>7EwX_< zrTb_~Xd+!qiPSOW6k1fteg;W26$yn1?0 zyD7SAqZ*+fV^N=BP-=Xf`dMi8lNI55A;3-9C7!_U(>|cSM(4>q=tKYV|%L&kP;h}_itAJ<*a{wBaMPcK~dNy@Ay5p^a z>slk8KGgp|uT_p}qOZp3qt86{ppm390-S;s<+xjW1y-&jA~f5ASwu2?F2}}B$|FSP zR)5u*W>(`?fhzHQmCa*cFg^ywayy*ran&Th$TH_n^m#S()k@j1r1i?8B=^;tgSYlu_x-^Y)MHqd zwdK1nKh}*qdJrs_6_+B!Ugi1@ul95E>e^yiZP~1jwvf)rh=n7>rLO(vjemQA_CNbt z?s{lwC^vClO;iJxZNZX5{o;<=PfSxGG-pmR3}gMz{`bE&jf|h^{q31!HP1&h3cmcd z0EQ~Q79y?myTXp1X0BM#LE{r9J^5Vas1~11snOHa_x}5|jiXv~BQ%$hgDZDj_1TO# ztm*2#x0{U0L!m*@>~n%+$3|&%=veN0>YPscL227ZZeWC?TI*3Ts@Zqj{Yi01hFyTo zigOxaskR3j4~#?$qui6W0FArF*TVM{v=zaiiV`38V7udML(*u>!~N02sOCktJ@cJT zYr^Ulr`^QV1>7pne{r+^P*Sw@#6*&+gs150-C$D8SSRk%-Nb2V703vd5?Mp)z#}i3 zzj^xnB3r01W5ApVr0G9b>ZotPiVxZ zthTHV5=|z=Onkv_WlYV+y7J^K*aK$ngFTMbrCtOGztP$3zcLg;xw25iO&G ztPf4`&v)1@kn}WT_sOiZ_!MxSp$TI^Omk;yh-B3QTaKAMM>@KOm`LNh@Ji9u`!^j% zo7FDnv`irelPrkQfFMo#6*#X-pqYZB6jclY8!=G3u`QNqFnZOBNriqm%qiSM48wQ| zYI0aw<2|?-#s@H{qC{8O3C=J~!yq-*qumx_7;R7{+rD;q-{dFpLkt zt)fKNOAM2RQ%&zkP+@UXPBWPtEIjXU7R%&SG)P4{893c~~dCd%2Z!Z1F=ZWX2?oNBsDg4nIX zFuvn7MVrJhjOVahg{cZoHQfUh)J*M~(@dr$EIjvc)>2`&3d8sSyHyy*XG~(Z3R44| zYPv(hah)WFVLV57s|*vvFuuTU6{aRQ)oh#uv0H_y5f+~NaBUT)B5lMpN=7@!h9v(@ m48t%C!?YknLqjGpHSs&0bL*06G=NM10000Wwz_0->w0*g8IpMCKZ+|h8(!E>}8 z_c;+K)IIb>c?W$0>67=y^VdTs)O`+SK^=ESv~nJdZL`+hGw-4vVb!lIAp+l&v}pnA zbcN7erows+Gp{gX<;bOv6hiB7fSWDa+HVHy{Qwl|c}!~0>Y$GfCa`oS7q{AHUEK;s zx_kL=0O2^w46@3Oj%XYk-T5R}vEa;Zt2oZw`E*YHcOgooO(g-Sl4jghFfQtD@m+${ zQBwsB#j-&(_qKY{8`Rvszh}eQQOlJ%J*sJ{P0|8Apm~+iz^66WeS<-Pe1?AIx(A4j z{_+%?IDU8sNcPSL>ccy~{}&$sfCvi*j{x%l2@3ije$W{2O#z>YU{#&mF#tD`P#<*% zoSdhvy1ep9JM+@2cFrnrqv*l~r^qdGFsj52nxmZ!+(o_eIr}G;`I+VCuR``LUS%?= zjqYXA{?)LzpX3ejPK)$EwEhbV@Gn(EfPzK*H!PTc z!CDubMYdz<`i3qI;1b9C(PvmIM1WHsqa4zyUbf~;7ENM#f8ZWkD&7;NTYLMZ8)z_Z z`~E*<-5i+$xVD?AGlp`E+7i35g{i~eK^DB+&ep-qIKt&||MUhBLT`mCz5K(16EM0| z_w)sCiiX9a2LMWXgsOZrTKVHJ%rLCn$7*wrmp}S0}N=D zoNp-B1e>@P#fgls&#d|(YtTs$mn z(f`;W6bgVkQImWm4RZd`p5e#cB7G^1zG}zk&UU4rs6rRymEX<4EXy9{{zG_wMYMKp zwiSCFg)UD?s>ri0@NHZoJSz>-be1=ZuS`7uVLBpck$p zUbNl-$zMrJl2q^v+Oxb+`!;QRKgEmpQ&#d`$bUr0 z1jX&1aF{@i!70cnX9d`u7lD|vbZ`Hf6y~#%5yLxBGMMFsz7lU&P2cvysYiPnF!80} znP?_tLV9s#arU~nSeHg`NR3;&#LeCM#%}O zo*Fa6h!YQfH`&SNHL*cqJo4U#JIAhlj1hIclQyv+>wQr2q6tAXr}H_Ke< zELUV^5$kSJgYGra6mCj4N9QB+&)7;B>+TH)7ZaQ21FtE^ND6INN3it%c2{mht9I0h zq9)>-e;Esw4T$qK*`A)>{VqaT>sm&>{iwz3z|FgBWK;eIz__Y%p_pF+x(X?r&)Cm6 zV5)SwWq+s_41eT}k=OfY#M(7oi|zD>8X@eNNng0w>qx_E?HQp(=9a%#=7#;^W_kWv zx6eSgMqO%1v!OaCelr-|gs)+ed3VlWU7}<=v#ZxX%4*O%nbc}(pH#YTIal$uN@_c_ zO1~-N4PcLbf7Uqh;+WfPSM0wM{I}hX^L3T(Y{e?~eoMrDjBsoO(rAm;>=1YB|N%)f& zPfTE%0R25sU)F-{wz4&fS)MzXUIsE_#l^-)N}#0^wXfkcYR6(<(V=9*%rLlpGCMDp z+B|E(lwRN4U@0E#qtBhB1`~QKmSp==Mht~NnQS||#mDa;$(wy4q>^!ieR}mdumjz81sBCf-gm;rgFy$IgzWMUq{UhtY zzUX>o?v@6dY5f}CbA`SZE+aPLpU(t+C7|M06ps3N=;rN46SfDd+9c1JEWiMFHH&5c z_F5}1816v+@ALeO06@UR!p6YC#iO8Pb8DU_pmT@J0jb#$#Z>TVxI~@) zCih#;!c>7&DzY(y z9i^42_;qIwZ-Aa(FOx6`CH0xyP24!L38(@{vdiI%YrG-RPno^4e|Gw`zLQuFF1-QD zPGZ7NGcIV!UJqDG(BnMA5-%!5CzZ*$%pi_!5-yET6;08OGhHi;$Ubs`csznOhy@xQ z;4vu?ncpO_%Hfgw`5oE`WwY69)_i)qqA6?h0&NR?S_?V*pHL)qwi*P3y@!DL4(V6> zLm6wWc2}4L4{>5Z6W@4lDeDCIh|3|*t2k9~hv&V^pzbs~Fc?wRNcCq1$vj%WYK{$6A%O&)mt=^&ak6Jr%PED-j@ zr-@W;vLh2;Rj8s(1Evln*+P?@M4l+CWJdV@dk~OpK)T9>+D9)k)|v5fX5QYr)i5PG z9H@(uW8C0$muYZS_&#NKn@(w%9@&-H3fl`EqWXug(L8$Ta~UF2(rfH*Z)Fq88T3?MER4J1)~`?Kf@1(+s^EZJS@Bfg}aD-veISa zPSF4&S}9pFq-gvIGbRK|T~e9sz7KbCCzf})+BZ>XIL3rvR#WI)-9{&}yfk7ax~*%| zre2_}xw6~X+Ggly@$sRv6o>nVmo`O;)RUjTCwVL}nkSaQQF<~TuW}^ZC-eOy4qYzF zLRe2kINPuNJ+j-}LNLcbX3~WE0$AEAWx$`EEsI}=a_+t00((9-3|RJ9%`V)!J66&J z>oHdOkYrb-tHCA0RE&nZoDAV?g;BA7wOYNHRZ=P9R;7lP_hhl%9_iLQ#Y507D;qnm z&y?n%6lF@|?G|@|#H7We&~F4(4cDMM?G_{u%%dz^S7axf#poq|e3f9&plJTsZot5JKb z`@B_UJ!+%5KA(u__<7dQ8#sl(Y5CE*Srcbc@<_}4BIV;k6mK%f)F!E$v6R+Mo)K5_ zeBn5NQJatm;*E?=K_JE}^O>!uhX`mAia>cVFNN~i8mLWTYeN(sJ}Y@NMp*tzndG|M z&50{O{+ulVYTfPtw9eR`Venm|e1kgEw-;R?16 z{EG$lw$c?6CVAxz?aWaljG1{#Z7K7?c%5s0iyn7cV`ymzn&`9NRRSHz&6o7Eh+~51 z(S)@Kf;;o$7ScLNWhGV!87fsjb1H3dvuwVg7QO!`x&*m}=~j<&aA=A*X|<*sz$m zU}!i9uDoje81-)-8DXFeg^N6;b9g|cDZvEBesRrr zTXJ${c)ccKX#M`UqvsdRKh0vhwzU`{lqY#PgjyYyiG=yhwh4oMk{TVcHkqBb>IPX} zX;Ch*>&v6pjUJDK=YSs_mGh)@cPz}7EDoF_`tB0N^^ItY;dV5s)`O8OT7&!bB~aJoLmRjrx3c8HDM#r{ex1vs$a*<|3@gB z6{}py9BA3#{?WnRP-gC%9K?T(Kwdy?wPI;ftKgf{W=x&L2X-z(5*6uQX&Dk*NgIM$ zNoy)9x}@u%Lmqrz@*cFA<7Q-ErD62ERsBWjoVmHnpIPA;Z%uM7eZ@D!&LO z?QB+zpxbcFano8E_Q2kQ@o~P+$clM3=*&i&__2zbwn~wyhIqY{nF(EUU^L7G+81-r z9Z9D;$?oFoR|5B3aEtEZ0e6hl+)KqBM!#V$)Wbf1?01j$;sTdyHQqE<D&W@z8VHSB8Bx*Q)^=HB`c_;`1i!@6WQ z{uu?{{K;!X!5GD5WO1~tso-$!?*oe2<2l|t`4--A`7KtMU;*rA^b_vAp9_^JfW^+n3jSQSA@hrk~|%`@e?dOcIIa|yq~>~Wic=!cTNZg zV#F&5O>INRtFz6#`Kp}R+pPNV!s0=@*6x!!7_R%#)Z(M-{I2J&Hw&cL0+U?0J+hHy zi`fwVllWSq5fy5r?i)@-2Rox8G5S2&BT{rzOSNw`Y8k`|x1MB9`|-Db*v^D29GmNg zy{n)gt83MxMF@Is$@MY|y=XuVDah@oWdWj3k?ALn5d?zsij=%JsJc?=WZMcnG%gK1 zF2)et0PV@cmKCMJ)n}<9w>8R3`lc^S`%gAle6}ir{g%7l1*%kVlKY`S{sa2zjc$e7 zoDt2}?@l0X`z)@7!-hb-1n+a7=_EM7A#Wl{32yfN@Gczy=1NR1!hGb{K8lpU`&i=$Ax!+RzG`bwM*8X zG^9#OlQEx)u?Dm|plb=0*6muSFp%Y}E)c#t{wFQ~+hLGv1g5|x0T`$uXZzwpH{r$P2P@G=8WQ%Md#JFrD@Li9XmB@363TnH~~hc$mw+BLhZ{wLn#&F@@W>KrXD-FzDSb4)du0H%B-Py@D^TQexGG2 zNWis^nVssZqRmG$P~Iv!u-6Srcw_|8&sP*TP0+i(epMcg?LW*rpekEjeqy;LiexDv zx9WwObVvhE z`6t)b<+Z_46;jBA8c|RN_zmD(Ja18g2Rm|n6zcRlH!D=@_z4-uuk6nii!Lx|lxdU- z5_nxz)hky&WNeTW+3L8B-~}_#%w&^ITXKb$dz?b880}=R11+_5DN*(q#SACRr074#Puq_N?nv!2H(b8=(BM zoCazJjXP|1AYzPiDJD3|hGd!dGW zByE)_WLiOH_ef8mZ*-!DM*Lw0&?sZdSCGbRtXRe+;S;}K45t=JQHtsaOa;qt{>Xl# zZLbuKlrXd*oshr)(!UF`#i`sC)%B5kHe~zx<;4ux&2>V5!y{H+G5LK@814;~vdx4? zj&3STmi&a>l3zZSjMwLy-9F8$opz>b7{dz&t($5KP~~X!KZqYW&PXp|;)2T`3#~ss zS(mgI78b?)y(`09vf+9lBNA^WiYku%n2WcV)Qw{#1y|gJ>xv7`>w4(Dc+XtQW4`CQ zp`f8Zz#}0c!2c_beGg+lyvMPa2v`7Y97+sa3MzIU4@5iyAR7m-m`0NdI5ausJ&!Us z&na%?6p)Z#_eoU3IO)gle`m&_phN%*sE#9C{!EQ&9MdMe1=xjZMGdeIa+48Xa-m6Y~wkC z00X7O2`O&40ku7Wng3!2D$FZ{!vCVM{5!8``DX@H3U9q#CQE;xsvB;RKEuL;*Am2TKh9q7HzURLWXfYptL3N230j^lGJbgw5CzDXJI1@~f&9gk~@N zD~6={T*kwDHn+0y_H>SrAFota!K_VH!zAenJz!mSPfqp6qn;gtlfe0ojVye@sQ}>t zurqLFjQ&S2({u{@`6`AVrD%Mfc%m%DpGegrdK!u{IZ6gOF-FyhMF6}P^#ed)=$!OZ z4c0&{%ctM2fhVO3Mf;TYcQNuiDI*|sD(0-Q{K7YY9M$mP48Cz^t;BJ+V85)iTja>^ z8|DIx@1tb|dwVe;HwpXcQ4lK+k+Jm9V{1YX$FgAAT64UYT4zts|6nm>c3{%BGFqk3 zHXXR4qc|)VmKXOLv?{$Bh)Bwcv9>0FKbl9YXIHTJ1IF&jOGbF@4ZtohK6ONy)}-1= z4|PrQX|q6?D;K%cFaFNV^$p;g#-M}Kq~Hd?gH4;xeda9YL4)YVXYUtcZ`95Ibp(^+ zJ-Y7GU`iF&XzZl=>C85zj*A9ebevZi82P2+MT8dG!dsV^>228+S?&zLU$GXd?qBIF z<2lHs7PZAAfjwf2!ap*|DLG3tUZ{o!zO1TY;iS;hi2Xtb7?f}rTBV7&)ow6hI128? zsFiG6NEkX@ELlD_3=0?Gt*b^5lSe7}J1$wO+2~pmGa#wrh(IUG0{$T2Ifc#*dKK$ zhMhQ5Bz(jB;FYkjWd&n)N0vc8{POa@)^TmM+a1NlR2vzgq7lNet&#J!BCBL)I_`u4 zfLVJJs9pq|KsGJ~F^`XnIqRF5;e_K4=T+B}tP_sR& z8nlK)OwaZ(K1~nCA5iR_)6}~oie7kL99m+PO*GKzUJS&BSGH`a*#f_$&eXn}fh?W9 zF&4CV1R^oi9;8>p4qs*=Kc0!*`j7r$wPbywk89o-@ zLc7xnwM;D9k*LUm;cT-y?e?04Z!=erBZcTZJB~c zS3Q@mNTXD{yW?rh|+S)7H2VUdf7miI_Ny0@z$zv^b^-&ROEB*FvG;V%^3ry5H zzYJ+0(%F`OD?z91%eo0f$e2W5`6U;UTY3P$0RSVd_;=6)3|#;Z03fUu;0>?j$@_8f zr_!Bs?t^g7rK4e;XYTQy$hn`;=H@TsE0MWj|J7%o-@m{1ZTnXwzX4irAA$n^M)ke{ zG#TCiE=L#eurK%#uhnX=2UBZ8UF3GQ9YI?cpSI;ltX9oa`d7t6hvg<)q!>Y@eT*M4 zk4SlMx7u-LU?;83p$z&^;S_9te!U?L4Q|lX_b%mNw%MDJQTmR>lFa|Y&IluhX)J;Y z=@lnVZPK1IAZV=7wCy_=Lz*t3P_t{Gy&=l%^IbY)%aO(w%80M5FykHOw!&HsSn*DV zkgBTppm1+=ASo!ZYpJB5;k-OH+YS5jTN1cE5y3RuN!)yF?y>cIs=0!A9cGYO} z**P1Orh0e6JHu6u%f6S7oK&c@IzQEGIjW15g!_YaEREd1K~~L{vX3%M18cc4Nrmco zJj>WS0txc$&f&c`dZiaO#jyCXj`cI5(~Fv2eFjT2Bk*?wsid3mfX4AoEu<{j({K8h zidHTp^JDANK>|p&ovZ91W$C2gyo^I#TzZIP*bc%pcCdG$Gk#=6m!X>&%sQQ!@9UXB zg=Z|UZhU7QC`kNbL0_kBKADM);)qcuwBhxhctk^9B zBQZ`XRtj|pb-dVh%YQLkI-!56pG5ofjcoSK??ma+cgP&!a&qLZo>Sdp| zyH!hUukKc1f$mcFx&{%U+G*FQwHXs0b~Q^qbVkR!zne3umdp_ZI~aQ4Hw^j!Q&)UO zt71v_V-EyqdeOl2Ec`AhS9?W|U^Ms`%Tc$fow{A=8vPvZ)3Ux+PBSH!Mp+x`=#|Km zy*4b>o-aIuiHNY$zoN!DSzL5c`D(hHKwf=n4nig|Tv6lPD#WoXXg`~kogEiZn;H4% z8p2v<-#7UdKm4hmLFzkoDfgTuj2_nF;NZ7(pn06TALmG72-TCA#=^osa1;NWKq|-V zoQ+;q$G`uUoU>FO<^<#Ql-9~#9q7sMr&&@t> zqU38s-UhX31v6{$<+!;p3|Uou36*aQ$``OqW@GK|8xFwf`9odlaPr9DaTC{ec51ZN zs@Nfx;FxBW1A)>aMkJQtqCRRb!T&0!r?VBqbeyYm&VC;#0#p`ny=XUA*to=p$9179 zJYHG^amxr{V)8Og{()9T4g0MIIysp}PBl<9UcHF^TXG@laI#_-0B$#DQ(!_7O;4l9 z3ET@;(?|JCJL84aB+l23x2}*>|I<%QuS`CymtZ!hmL6twn`9S0%>lkm^Oy&qJO)8K#3WwbBlpo#EKrn75XC;@{nkbX#SeAHqZ(|6Cgq;<>UdI?{?g>WJ_UVhI< zo?N4?E`-?CrJH_y*&W3Rp`0Qb*G1(a%0TBX!Ps$)Co;y4G+QtcFlIKF);8AxUHTM# z&94)&`DEyFGeMg;1?F5ys#9YmRZktbTT&reLG5A^gR)$W8TJA}$rOvp0dt8oPw(`q zvgN*CV9stmmBUOJi@4UY(jrJ4Nc|DvfJ>( zT=YBRl8Gd0;~PfTuaw3J;mQ_!k?f?jA~u{(pbM3xepBZd&Hj0#-*5E$p1ibWZRNb& zw%9uTi_4Pm*ftY)~hGfiFI zYA*qG?0GRZQJ2z?x5?)jQfiOx9G~ZVOMfb6fzx!e;y0|#blbQI&HV<@CO#ildxSRl z;*G9>_E+eD_rOUF>glB`ZO>{$6{W=UVmgvJTp*zwwS4KsY5Gm zr^bS+b#XYqEm?q|amP~C_kW_@<3()@FzUfW#-a{gPmnQ6pIhb*M9Nq4VQX)<7sw;$ z>eJBEln0!8mnl@(B_lqeyLL|_^NR#cw>)E;8I`fyQAsh%Ivsv`?3Bm)eM?cwA{#?> zUDu40ocu#I6IoSm693v)SUpYjo_+ER$=;y0FFoVQIvrW(HD-M}kPVm_RF&G738L%ojS> zZhP8m`R4Kx(p+w?+;e!DiRe5cMy22Md>ZOCyw=@6~R59Af!O8}u@ z0PmGoSO{?c6e0Z+$YTQFuqffN*}273FmNcS*o=}PxOn(L4mEYKn|pB5kH+8Avvbtq z?}2>X)Fln4glgcHsIl`uvHW`loCsjHLmqORU7bm9^~0y2hj`T?$;>fie}W6Ct9BP!6lA?Obpda%`&CT8OlbMQBy6$T$mtEj4bgh|U6hr@GE zw*$BK?LE4z^S?2{x$$*0lp&Wju4IzRU@?x;Ymca4~?%EON&SNglET0*1e;1lPx zNM}L9tk@(*7lt$1r7t1{Gzb8dsJIE(qrQbIZdkL&A2aDVF(X?l&Tm(x5mI%~v79Q3 z9bXh4h>2Y{-Cf#gYS<8dp&4hI%U^L1gBA$E6;f7t{Vq?`m_T~a8LH6o-RmO$La<{1 z?dN&3uU_Fz_C_lOh8Q8d6OrU+)pXE>Zl}cGyUq7Gr_~o7q4}4noA8xJtZH#Sy2KFz zrC}3O#}|I==S#`ySrms}IwEWHqR4fm^GiXAX154NR-6@4ICOFUZcR%Egqs<{fOXIE zW&+B{9GDCJ){41QZCy@n8)V56ib$pauXuo$++30QJP*C+Z$P|mLr;xB)doI;;DN_^ zxiqvapGw%>tI5$M$u}9~E&#a{fcB%fWJc-t1>%n8@o|Wh&@fJOW>wG!H_~<- zusSC*^R>~78(!R>e#Qwl4L(L6LH?VzwJYbOagVS2U~@en?iXkFcHTo_;NSD9y_Jx; z{?Vw0cn=E{p14N8Os7g!-tF~0e7e8wq5l4H1^3q!jCojE0Y7tc&K^Y?E(H~~v?(>qz)W$2bN0n^>7V}X>u-nze2Qr5CvAjq7 z%?cn)Dx}b|fI{3)U>^mP@iRizpkI_h_5&7S1|GVdtg2q)7i$U#NuFI!Gm|nZFX++< zl69hvIYA5ke&|I)X2m_m>gF3vg%3%?>J0Nn1uIgtW(E`s%9kb`#N2V#2AW5 zx~d#}_E~xAs|XF;6a>#LEdy@5z$zf0#vP>R8R+=n=a8cGaCYNciK>rLalq%N616TCNqc25 z9}Nt5rDIa%bD6@jI<^{E8O|a$atC<=1?_u#FJ*zKL${Dlw1Wr)@P z`_b`9)%t_=L89IpfM;fILAT?4Zi2e?)uG4`b$L(iLwp}@YRH;gWTqTrlAssCs9&qT zCctP?2k-Yr;mw%ZCkQUqkl@YW_1LHCX?f;)c8f$AW9_xYRC8kx9bH{Fy1@Axfa1ms zKVY*Wiz^pK-Oqb%i&yNxZ)2CtHvgQNJFRoA^bEu?15uOX-It(uvcPjZ? z(@xA7>I=`2cau=&k+y9jIJ=Anaey%yi-}4$rdA$@hSWXHs!5lE6ROci5Z5KNVbeOU zMz=k}3^N+-X=Sly*;ikp~e9?Oywrm#)wi?X&%=7k{G$3Jk-bU|8E0eD;HX zyjOixT?O~p=gK@UhXw62rVxp|Z*sL%-MA?Bg)<}lc8MzrO>ENRUHvmdWjax)A2dPs zToDfG<$daNPFIRrwaO(B&YuNP?RiI5MVr?njwP)s8=%tS9nU&0WzWCfhzuK68Yzf( zt-1t8p}*JRP^aU9Dmwh6`pciY^UG2SF~N*7$uU&Kj8=L9^+9|lzv%i3GgC@yC#76d zceGNUA}hfPn&dcpQLsopY68P-#BFG4^oLtD6_INKvy%gYQSt(1nyDBAM(Ma}S@z3I z3VGa3_yRyhq}CqoOD>s(siwnd!>3{yl2=$K#Toeu=nnvw6jalT;6&|XY;F20;MHi3JL>$ z5uO4-UF(XQ@C^JmU3gVWbM3$f2=&a*a;JDJ1_JfltglJx=>wub-qTC)IMGBvxp0U5 zx#9dV?i)ZutX?TD=~Qj)GHCqe*P!5%)Y9gAIRI|;9!nb}S@-<6kqhNrX}R=t_XK3U z(gogyz9e(x;MuKqoK2- z)10}tedfOOVfcE>q^vCL7Z|pE29-~RMS|>x(wJ{K$wcq&n+@u|PB`d{$m~o9LyTAj z$Zjf)fwrT;zy5KsKtWW?P`GZ0*(2F+-Lfq z_%HNr%1e}i(iz`fqy5vFE_Lvc)Be9NOEZMHw3G(Ve|&jVnx9 zb=&>Jfny;b?mZa~P%XOV$PJo3RK@EZc8vym(jM;ON=lD1!yhnc4C+pQ)lB-^XE(yv z$GpeOex5T;X+Pd;)6rk16h(P~6eMISIYEp6%Vrvm7IZw5OYk#OVn1mum{EYB%R>k= zjIi0eNN;5IviBmWkJPj^b?Hd8!7BesZ>bhr(S40sacb6v z#ZDdnms(wBQT0&kEIE3pR;b{jOePIpRpAQp8O?u~l*@%6Tngg!01eKuLul#Gl#n~o z@Ic2$WHfXHu&Ft!P<)hVP`?L)<`r}y8%O?%F};mtz~5>x%x;)l@&xxw)EW_k#IlE7 zWKZt8os-8^Ke2d^*Lve_DEyf2Dn@kpW-%ALl!uh#mgEL;8n+uArRA;*v23vax&oJ)#R_z-RoiikaTIzwA-rb@R*; zARAKPKD(|o{DZ_-x4ItW?_%}+&XJsA8NEq?24dTwWYtr;>Wa|kfYejCtv*nJEzMi6 z+q&<2k>IYtO3H&OjO(}MxstDJTuA4Vs%&)tZCcmMi}|E3gUpF-%6sPhL&lTUfTSP8 z&1+q7cdeWdQdy=M#R^*;%iO<&83&uuVVuR_J?S1P5SyFp0To0Jh@H(MfC}O}K}qjP zfn45jc9XT~Hrm*V;aM$%Q3HS##$v-gv z2kid~H30ArXap!Y`2WQk68(Q}+?4H%003{+N^V@tBoR{bmC{>w3MTmXslwowI+Osr zm@Nv61z}H;Dk);VksD3_E?cOl?9STrCVnD0_D+p0kUhs5)K%rrL-V#bBQ3Yp<)XLe zi_O(LREO60wkax|p#;}5G`1Yi`(qk2UIBR~J}(75l}(~!ma&guK1qcbB1WH?Y9y_8 zI%DO0*M`_)nWo~_hTWPRNK&pUN2WV_*JY8Eq&+EYv(X9&8ePkVGYY8wD|vl8WcPv90W8h48s3dDAfN!&5o7iE(pNG z+E7Dr%l{q(``-8`{}aIGUcRg)e*rO-*~sP61()}Ba`6}G^$+qz#M50fR5ce*M9nLf zmG<)iKM#^)<(C9PhYTMyom2Zy0KLUuPhs;e1LQtiK7&*KjBgF3I+7l(74q(11-jMR z{ul~SPd!~GbS&Sy!4k{HRvS+{(X0dGkt*~rim9a9~AgFXj^|)pW;R~$zukl zq;7rOFXj@$e&tPQK*jtueK%)}eut_vxtFRIL^X)q34#3sV&=b}MO7H2zzcx?6Hwre zqzbJTMD%K&xHI`sdn3IG8G{m+m8$AF+=pkN^& z;Q;95Y?#G{FCLW(au5PXLk@VR*ACDyQBcvXATs-ZK5lo=I3mCd1nHYCk+y(C}>$X5k6|V+gi-e%)-Tq z{;f8t*JEGGU9sd!vfWZYb#aS$J>&0~=STELZzZ^kcM&j!Hy zqSnl0%E`IXu4J4{QH4q!G@$%m=^soyQ4Fx z+~aK~f>S^RjT~~+HJW8NaEAD?=G!K&;cerc03s>-{044O(cPoMs zj`$wp;aR<3X#B@Zl}G$C#hE{Skr3z%^XFM4v?bW!XdK%#UD?}_8^*Y%U?kYXu#c&+ zm-QVw9~?jmvcCb_>n-_{X8cx!XNGmBoeJ1m9kauX*{^2jpr_?^pxQa*vb;eZNpdqF zeEJf&GIg3kyJop$f}zfuqCs6h4B5NPFt77+#kc0g#nR!QX@BvK=SPshxBbU>Ji#^r zf7{6sBZcGkGUs@EwU|*yzOBJmc|)QsMsxCRN8v_qEA_R zkBn?qo?Q5fQW=Fw;$1c%)Jd+P?ykIi^GLV_3I!QHL9KL(buh}~2)RaO4dSpFYIH7_ z6MAZ@9X!(Ily2yRu)Ee?lemnCR?B^l!q;-pC_u&$Yae^oM)`N7Le?l_*K7*=+%3Ke z0J`F$RFTC~ceS&Bgia)>&4^jyO|H18vbxEoDyEs4SSE)@KhvyvZxw!ir;U6)JZTU& zh8`d4njYjz&Mt29&z03-uCP1O&ni#Au6BVNk@$-QJtU*>nkq3QtCgDVzRqj$cqj0I z=gT9UviFnh-AoKNZJ(e0&!tSWCPed!QXQ696YeqlqVS`E$GhnQsK;#g6EH&wDbJyX znoPeJAxIfB;jeugkGKh{);4Rb?tgyp_)Y{FAxq#o!g8d@u7@|E!ApxkKEyU8pxTc% z`Y$X={1=uWpdg{3;he|5&ce20OFMFGGD;!ujJqLWjxv5T3&afmzPQmd(( z2IFyxn7M?6CilCh6g13T|8LAf5dIglOz<0$8YtnV4-j})wNKuPZZ;OX{pWt~Brjid z>Io0oJ+Z&TrN6<=LPbiOBs?09yu!gn0GCc=SUDSV1K}rgdc}?Ohy2$;r z&#^#of9d=Z&?0T=>dh^)=cMtwMAs*6Yifn7GhB}ATf>_1BvzaaJSAmfz52XRgjjfD zs=2c#B@drBV%b$m(Vr-3YCft8gBqjmCkq&}_KqP>Y`^|MNYBTzxq#f6YX`;psh>)B zXZ$%xdu+g;sc(gTQWG*FXww1g>K~LWW4*&14?gi(rl)2N505!n`e|{ywL(8;s`P-= z7SC!ywlkah&ra)$yfPT|@}B_BQ8k^c#X+-g&u$g{GYkmp}A!DFVseciTd zrZB~-M4A%Q{rev;SzEEruG0zwjCiE$u3vo@w*3z;D>vTo$hxfF4lbpSVXj$g*tP>vqpLBs=}n|wBe|tZU5S*g zX*kvc3|aUIl14CeM=ilT6B{Gka9b{$T@s~I+>PH{Y9Aa>3F2=QZg}n5d;bb%X4h1N zEpwf*Egb@j*YcT?gp#;2+hnjbylxOT>E7^Ln|ibQ+qNLDj@krZgLiK zTXTnQ7V}SnhyCb{0`g2TcHiXH#t5$*HH;+tihAOhdhoWavVsq@6~w7BdnD0{VY%E*?%LA88kmlek{_knM6O)z&o<; zX1F;rdl#y*JH$Eugpd38vN!a)mDBcbihKF=OIg^Hu?H?(>l}OzMP@e9?y;UzUwJY( z?7YyCwNH`Zkwqe7CE#PFW~ngNDXE$zJR)yIml>80(43rC&7sPjsAyo<0GU+b2scsj zdXA(_T4~8^hAh6DGPQf@_->y7=%zmu5m!XWqd)10-+*ag&@n&gFr(R*iTFbe8%*3U z-RfdY&DA}BTOOhN^+|ddG(WOe6%J0z=*1})a^+9Kx9B8XmIY2x*~(;^tM4GTsLf}_ zaOE|CNh4xIv6sHf5KhucgcX{adgLQ^=D%l4q;{ev`oDd|U_O;RS5WaBG_RL=H;C+C znc*6M8}At=ZtU?Io|3s4^{SnQeo7yUseYJ>^P>}^6C=b9v19*uVE6>=QVPnHZ3DOb zTtIC3jna?3Tl@|~f%KP5_asLytVK_%kF9k3i5nU3cf-zq^FAn{rO2hI<|+9lq)#v& zKuZ?s9gn`UIdT}uwn$ZG6v4^AZ7c}{el5vKrHjdX9k1b^{Tix?h{4%vlI-vR2^eS| zSW0krhvRkFnoGQyIcG9N&&Oa6;BuKO)hfZm%9Y|%ZBcohLiA;Ly?8-5xH5D-D43s_ zIPa}bJ5sgn)alJ3v6LSCG_Y`?%)G($<8eQ`ymDnqa#(Pr@y`8~&P*1tuaYKqR%Kpc zM#?^Hc$b7b#Z|sFrpRaRPtoQ(wi1{w%dv?XXdO`alk@|2b@mrTYh7-&J1H2qL2N7P z>7?@;2o8&FD3jRdf)u?K)adG{W-T;cl4beYMpHH|hx2Xb{->+Tx5NpVayw>b`1XSe zUBdD6;Z+^2&Y0$(yQf)<-yX|*D&kpirB7=Xs5tK9m%rF8yhMKjLV91VzJCHD59zK) zS6tY#`vArl*^><~i}W6d1RZCY2kX!n$tqLpNf;Q*D$zwqE8#^gIP2|( z3(}-}p&m5t8YkptaPr70;u)DMNq+550_)d8oLjk%ZYk~^78OJRwE!$tv)0&j)F(2w z^1L~RB3KJ=WV54pJqle}7LvAY*U@8=GtISSA@%0>?B3H^4SV~;=Ano^-&z?oku5a@TqrGpf@>Zvxe! zvOcU!N^DM`+sQhvN5WzCWs7#2LokjCxi)8_meGn$Zp`*ujG@|NCCA$ z^n5fBxJ7LO*G^zqRtyt!SGO@h^NI&p8(z4cUv}z>b$ge*C8hGcl+-=yq^G1=e_flfaIL&sQ8m!_ zlhnS*=xP_ryg3XEQ_rmYFzH|!9s1w>#O<&jp+7M$Rmq}Fy>9=+-)sexXg8^Dpie5) z4r|qVQywruG=YCt`vP$>#fDRTZnC0UC-X8~O%iV(s^xHT zM4iZ+x6866yPi>3SR}iq0l*!FhVxE*yNl?UEAHcMR}J>3vzvAAE2W%CSW{D7q(4Wf z7Tu!J31%w`?fY0wS!c`~O>u2e1rt@^Qiqtc{gkAvXhD8x`+8#e;r!#P3(R9J0iya+ z+FbHVQ&p+B5F;2c4<}kdIf(}f9#fJ^5zc7^bN0l@=_cRxDA-PIA~_ALwOE%}D0#(! zm0s5}>1!3}p`#zUrax{OIMH~Iqu`Gnjb6Icv~#xil{E-svs%;Aw3T09ty0&6uG5DS){Xx7y_1d%hGlY%`brkAkg!SP7Tb5BO#h@U|}Bg z!_s&>-*Vyn_julEp=1u8#^rkXr|({8GEABGcVK;ajUN}wV|$K_M21V2NQn=44hv*o zwujS4nnLuT6=Y1)lufM;&SrHUHKntMTS_-FIFTBO`T8~Sm3qstEs;!7?(x3(KpWp` zSAY2$UqWnZZ_xJ%kcr}A&>jaff4G!O$(1IIaxlo_sl}sreUy%OjxE`e2LDj$-F?&J{&XmZ5bk_6U6?=L?2cFD!4P|vj zLk}WQWJuC)(5**dZV30I(~mVvp<(SEm9D!ka-IUPBWZ!WPyr^e_8mzs+hH!#aa+o#;$pVIi@0s?3oqM#1GFf&&6Jzr(sERC#Oh6Q|Ec* zMtx;1ZoOW|#zJWrO>0dl4^kn__lR9`8k%z*euTnFsEzG9g{nDYyB(BTx^??C6A!j< zTOl@UEqW&oS4w79Q#R~|r?Rc?T3xwgJp@>>nSOsPXtnI5u`K>R!n!7OdJR81F^v%! zePZEcE^pB_oU$ui1Iw^RD7+pUK`PB6o-o$6Nh6_r_Q!ckz?s!%?_}S)mM)P&iz&1} z<<1J%H|dR4=hbNQeH!7XB35P7$^+VcdK|%cJTOZZ)?oB>(yJz2oCMU>6)y>H(*}>9 zwc`wKjvcV2)i^9|%>HenQzqRqctUJ(=*4Jud4p1q-#S4f^Blc^Q{Q9v7L?7KduFcb z(nR9a$tKjo<91mi5g(~V;YIfM3o%L^F5esL5Vvx?f_F>0(SD|*uNlY( zYRGW0XZmqUUWxRm#=eGo!!P?Y5G$#Nuv#NY@uf z(LqfPzxO+Bg=1{-zz@wFPM8y`k$O)S6we)VVz;!Bw+no7gqtZFuUF)TVf_Rff}J=}QloOmezl1GO1;hDA5yTf=cx)+(3nym)ETm>K8bj>on+dWR6cRxjR3b{2Jc;q7%_)X6>sp zdAg`2R46JaZs)Z4^*kec=+7*#Zn;<7bCqG@{xxe;oKV`Zx8CXo$b7>n8i|fv?WbVY zgH=eQ?E>FOa@)C~PpFf(RM1CjePqg)*A(uH(cZ1Xb{^%kI69xrt?0s;CY=DFC#2D6 z4WofySbJy&{;}w!NW{&9|N6_icQ;z1-Nk6-LBx-K3JPRq5^P7s_$$>R!48)oswJv%VvN1cP9FOJ{FRNaF(? zBX5-X^a|tMj6zbCW+JfWayn@e*zS~kKvUv+_`4J@HYo+(I_Jx7=cB%=w#PZ}$@NMn zugdom0ONW&H2S=;C465tBr~TI$WZV627JCw*d-3^BYnIjuA&_mA78Dx6ee52BR-VaV0O* zM~*&b#zDFx&;VbNSRV<0WJyJ{2yv!LX5UnIRO)FWGo^!Zs#JTB{;G2QNsnV)Z`kh<$i?7 zgbrSPzOMucd*K;ZU;QFOokHHaem?Crhq1`v1K{r?6F!diI0O$pv$C>YXZ~?dwCMj$ zS|FeyA^zi?{yPvD6ab*;KSEs9#JNBuIH~{tWtSj?Dc<3iy*jXyal!_ucL9xu&CZj- zeFNz42;C^;2^%uasl*kkDXSDjTxQnuW^K9|Ea{a5bY7SYSvak81E6hEp;-|r8(bvr z`!?2Rq6(*1GKIK($97@L7Df%sa=PZg&;&N}5G@_R zDbKAr4oD2)zSco`R79;Oc7wqv97-u`;j)D3iCj+{Ad+|n1cXHXT1f(oWZdt5vZU zya+{Z<53!i)L#!l154fub5QQqVg|_?tvkb*xh+kefyj#tk?%eWi2?sd0R0Qs2qW-L zOObv~b1rgSo|?JPG{z|XD6C36b z2G!e6`5j>wm=TtC36LquRQ*DP-!=vd3_>jah2YZ%Lw<|3jTl9Wnf02%s$R9WkXjE% zo%;<9UM4p9T3LehI6QNKFQi#Go2F^q1l|M^8=OV z=m_%9I?g8mWxMUVx4!plLfHGfMhFrTtP3O@=eVkPGkI=HP8)U-Y6K!KDIX%ffpi?@ zE4l&&06J2QCQ3HgCdp}tTFreYq^U@Pb5+?~N_VqDkmC{R=LEup#Wc#X8IM2gKF1NJ zJ(WN+R3~evYV|&K-Q>=>gbB6^qLk3PshC(Y7p`2pKkS)1ZQpN~E?;tQ_sjwSjy8Kg z2KjsISQvTUi`r9)51tiu8XXG+q^KKX8Li}QH?>-Y4I@=>5EKvo<%6yZ3<7c!TK^=w z#Ba#-!{9G)%sGD|BcGuW#-{|`GKCIFk>Ir52H$=F+46YeAK@X7V?cGbjBk})hmF{C z!4#q5qN(uM07iTOi)K*EAW17rXULc?Ql;k@=L-T3wgxJZFk7>*z*Np4$g85#q$xpq^Y{%~BD=Ra5QZ2upZ&ceSyQ)Q7l~5_6CM z>G(p9Vql+N|6C=_L@AFl)SSd!BO?YU10k}Gp>%gQA{5iL8~YQWw_h?pG)s5rWYsjt zv;EN|>~7_84o;$pkdQR9`y<{6{Y@tbTNL9P>1ye#5PW(W)F>WnF>Zba%3kUA`6ocR zxjmNGr6C@YQ#ds&dOJ@g`q>%{R^hVPnF336`{Ld(=@2cyHLb-=g;8)#iRq2y7Bq;B ze`olc2l?9S?U52hBz)5tXV{3-x#~g1Fbh`zE7FOA!cXl~N?9pGvG23Xzn)Iq4@VC) z%Qr%LhWyrt-0{HiO#9nk4!9md37;4jd9JKO<7x1Hci`M8@i?`9^{EkFQPmGA%yRX# zLQ#oS;V}}DYi4p}pf@_B|Kze-R2!!|EkM2g?gw>JqgTI3B|xqjqQwijGTpZudh8Ab z-B`^TJrk~fdU;9b#M<`9{;`(=M3|x6FB8_w8EHhgMRt7$bjTL+UX;0x1hiYM>lrOF zBnX-0hb~M4umxs|gT@A{HfzGaL?HQ3>i_`>1p^I(01FKZ^Gr-S(jy%@oSjWz0A26}hp zl_|Zd^n~WIW7?wV5XM2$kbtCevTa|n3)*~7stm*dQoirrBU<*<-;gxPWO+Ji3?kVU zh{EP|gHxE*AH{<-Ox+(k&te49IGnA@3e$gNB!hoqBaYAOsVDPrHYB=i$u6%%xxCUx zgAURqBjDd$+NmM^=zoAOH?eJP^K#^|BqYy45!U^zbvcX;ix*)#Zkb<*q{CH8<#g#a@%wMMYG;^oS*hpo($!78N#eraGYi=p z@DM9Y_LI6WMmm}rZlUh@?4z_0OSO$V<_44zl%u8g7k(XH&H6@J;4a_er>LVsPmC0~ zdL$^^G<=vN`=K57!0rFOgOwa>8rTKf2w=v4%SV+wB92*7UjHIwmR=^po7*XQA^$ZW zax*&q%7^jI6!+#%t8DPMZ!T#Inr|9#;&!Ud^tG<9q4bhP*3ZhBN(RoAcsb5Lu3VvVW8A&K3gNmGjO(H{ViSt3F<<^)0abxl|k|x=zztGbvm0{(?dTj&jaiFT+^yrgb44*J z!xHYA`w#L(2Vt4}8y;+gaR(#E_0fJ4XPAbC#;m9JQCsET?=NYi{0TKBdVRsV+VmAR z$0ueO>T3Ns0vN3HJK@mIKVB<;c)z?7-xH=ZFQ}-smsWWDo30fnqc_s<3KY0aBDJ)* zd~27h?Y<}-s$kd)RQG0NBq6}nOb9227}0b`mhWn%qYIb3bhNb}^vk+!Rnn;`J8Dkz zK3OIX(xzt#h#4PP$67HG7OelPtQrSCAnP74TiT;~_F4@@-}_rF6z;!tm6HsJ*P#rc z1fm^HKOJR%ko$zrm=S^?uK_72=4Cx`hxZ==mS4;^+uItnv=qe^xh%}*7StA`=4S+I z(!cH*+Kt`=z$4>7l3_Q0cqFNJT|Qglo0s&N`Aby@(T;7dfu%c@;89Q*&TOo@LO4U` zRv*s-#s|pAD&;lzWO}OMuf!vmEE7H+`pN|c#ZrrPn$Ro@i%sU>aJiaTw#DlpY2lu} zk?G%tE02i#LNrh(%TlMfC>5tnrW`d6GF7;XfxPoqE`%cnYKDlBt86iHYSpjro<9LS zs}`8yI1h4!{7Lc%AAXg7cESZ1M-P8G$IuPdrLA1EGJpS*q6Fj_2FWFk%aH%ZD1de+ zGGG$WF{?a2oFM)Lz#S*&#qBsq4aH^Y;1`8dmkyB{UqqWWE7R+DHOS4k(xkD6NhV`%W`1ABhX3^BzdvUND5+XPl z8rC=(0Kh(66SI>R<*@p#OW{FCHHrob?mxz}0xjugbU{pNNux=1+%(svrM8%O?9^Mp zj?+TO?3|lCuCOwhew}N=vZol#TF~12+Ouj8C}$CP(v?y6yX6oDDii#jx=Pws^iEsX zQK-r8*8r5q6iS6kN)U&Xe*&)NP)HQ;AzPURnls}PmbsUMf~v~hYW^~Y?@ zD`G@k&hm4I0VOqw50o*^)|EAOue=9$PH3s)D##Q3(o)Uz+%0K%U~~*GGE>g0AgI-ElD`1tnwJ#``FK>DtIU!el1GjUUX+#TQOOGG{UY`F{Jm|xFj?0Zw`pVx zL0!Z4&4(=bjrADNfCxdI1K>^eL1{blsPs(nq}g0&)=WXmE-cL}Y+jn5P(?2Meq&lH zTi{|7t<=ypUn4NN=4D)Ii4yA}-TPI>8xIM;o6ohp?@(Vl!w9638AOI#q}qzqy)o6n zq%IyYN&hvCSgze_@WjxSojifLv^2L&CCCQXLc`Jpo8u?b`r~W7`(i>}_cyfBpS2bjQVCYdF`kL}6|o>2KPrt%M|o5p5*l@SZOJ3!D$hK;FIk_q zG-;_YATS2i)<9f`^iAAUn3AswRZ>~S16U%%s>D7CvtN4bw}l2=9NjhY*xibzgpt$V z`06$2ubD)E{b3$Jq%l9iq7e^M6!4N3R}|}Fd@(!HS73zuy_L%rUDsfl!Qa>5hr~-uifpvXAmhp`@YVB5{Vxp zhqh>>cycWhE*&fOh;kI_W{HPaP7V!C0Ff$}AzYL^C(viwNVlLW54`LS|3$%jKm@C1uT8R%TG;KkGp8INxh(Z*#yNcDA0^ z_i?+dXe!0SiZh8kEv;BwFLbA-??P`wi@bYPWlo@EHj+_x3$?|lxmsYURTg1wZWvVI zDi2-ZHQ<0ReVtTQk@2>KVc&#}qTs&-I(ITQ-SUCcTedSeF-ay#jDV}r)^OcscW_HDM1vzz0_QnsqhpQ zDbLL%*yHU$dar`5D2;n$c^{|EXxPrqH~z?<9CdCFHDjj*%V{n- zHM`$@-M7tB%)BjwE_^GsB>jzfZ6V9zRD4JZ?yE`|mTjGpWc}9^TN9qgceHe6`RQaN zE#$MLgHoNqwTMq<SgaUgc&YkC@+q_F%UoQJ@y z4+ayU3}zwz@)s;_g%<%9B$r9)D8;x3ytT?xjs09TG0q89L=Lo}^1u~KH*NL_MXW+e z;#+cWs<8#Zf3iTaYK;h63pl;=QpQqsEM*0oB`;%Wuf5L7C%duX+*SRYCL_HK@N=4h zg+hr%yIoK?7DaOr!;*WGg+LTlMoI1}V-seDQ&2v{kAk_zAe40&xS?NnLQkql^>s^mz5yJo;M#X}57Km5PcWY@Af( zp~Bj-kk)9?Unk%~oo&9eZ6|oX2xt=NCaE1Oku3yPr1v!`@fUrbou-1gO`@S#jrSiL zM?l7BwrZg^%t~tY*#$)qOP3^t*nx(-N2>;jc5o|Qq;m8wS9_Xjx1_tmlG+Pw*2IAk zwTKJ(aV6|#{IaQ6#DNpjk5tJpkSr+9W2F-syq#{?-sBmYZFLoI^%Fx@Y3S#m0eQu#9+#sP#qrVoENk)IA zQb}TF{0Yq%4O#8YUm#LX+*%PS)xWolAmx?w39t_A;Mf!nK0EKft)Ei9@)r>Hhx3>I z6aNW_M$4h5XC8t9B+J$Vz_N6SBub0Ez3S`nPo~-r>hh@P>L8zHEbWm8jppt#1_oBY zQqcQut)c`9|G|qiNLN?ahtQh-ghI{-Y`u(65&JKwidulkAQn%Rij!sU#o5EHEq?}2 z-QP&Og;m@TXZas2OxT$22!eL4} z5D!Kcof-`jkg#+0J?kAd_}~p)|NSm#L0MKFa}XN%tcq8Q}PzhVXydcW5YR7IjQ{kMfbo4C?z+(WL>}QP&7!R12>SXNt*EGsGrQ|ii~d;sJ74_ zG*>y4MV0IptD}Y^41|eT%ktGES~C;2`?FM2TQax}&i<)MpS)susuVc*_nJ5&#vLe`aUWX<6&K8UgM9$bZ?}##N)~yxoF6L9syUy z+0aik#S|9LW#wsR0aA65y#?ssOlH1iZfZF-&i2WaMxJDzTP6l{`X>g|@b^$2{0z(j z*ULg%-pzIz>IODvY{?*yGrbh>lGSQ9)xc87N2!-6Qddzs@OdS56xAM|Eh!cK78Mqq z5GcxM8Uk8B%$*#6w_h@^P+xg4=6C$k-9IX5x>?+?!`ACUq^RZ4SpQO<@M7&NMPw*> zn%BxCic2G|D$8{{9tMd(pbw5KJ8jo&Xy`}aip&ka#1vx( z;_^Xy2$(XR@bB65`Iox(_%=2{U(qbk!6PRN?tvr}V zZ|IhWya!PRZ9gRG(-o@j<_B<=@%W_%*-Y)L4tnIv8%+CwJzga~vNqQZR8#Dn{+$JJ z6q>lq1=Sbiq^QR#c0)PlCgR$QHTum>*<5xtYE%wGL>r^FUXf}Z$Sx`VUuzFT^@7#6 z|4_zrV5&FF$eka+9=XAazSqtF=5jpO}PaWHF{=YWqO!rZS1Jz6mcpvtNVZpy*c zx%m(-nXdg4>Met@^Pkzu()^~M0HzvzHK@TN3HCaSQ9qC z^t9AntlHcFWsLTVoX1)g%-pHfO)aKm?Q~O}%w$;}>RegsQ(68zhWc2!#%%C7Sk|(% ztUVnxQ2?6mV=%r1$uLuCj>GrtMZOf)3ZT@BLen4$P!@H67pKaw__f2jWr1lVBJEZ` zHA?TYGO@2O*CKqp=a?DS+a*`CYqE?#M!6xgJ91o2f2hYQj9JMUo=wRFrm;53f{DOB>$x>+K^`pIG^l+WCOtXGG=6Li*G|VJr z@nnN%a)IGheGFCo0;AkU+g*do<*TKYr6*0+FH5ruOEVYQQ`yD8?VkV^H8a(tdBjEa zwMBZ83(k0xr=&mcvXAhcOj zzXlBhJO8fE74!3=zEh z&qZJ?M>HX$A7477ocS+od1JnmP7bo>$)P6F;*?`ElK^hV*U{^3BqSfF-%3pg6*wAd z=Drrm+*gu(j%(xD`riM>MW@wY`+SxvUhKdt%bJkW1+J$#HjgJGuVqX7}LL6^=NdLXP$8dIFuRI%Z@i6#` zjMh7`F!5ZBuSD7MfIYtm9WN2nn50sWXkkS^Fu#ceqjn5)2et=)aqO#N?qzym{&sn$ zwf_ltl?4ZG0(X011{zYZADpve8xF$v%G1;-Xle@?psj#>-BIN9-KpBQhJe7%Nx>zK zKyCq2>Ar-uO48GWXi_vvuW z00ZSuK$k^NnbgVo^Q#x^$4xIO)hkt?&9k$=$i2$0R|Mf&Iry+_`H;(QmUm$kYKwM# zg(+t&p4Ti(Sh2W%Q7TDGov|tMYHbS3(^tEnCWXn0t6iacJa6A4n$$%;g* zg!x5%3?NK)gNnC4v>YZWKVHi~jcehn0(ImQJ)nnHtL7M;5nGNo{2jIT*v8}|{?Gs7 zdA2w#-oBc>_PW0pzxcN8j;w4vr+u`ZjSQTwJJxo6S&RDPI#TmWbtjA_&9waX zjikVLo$ni`+N)++N5&(<5X(pYXov`OG5~Tv7Xam=Eb{d*&-!bypHT3HSm}ZSCzoBB z$$=95!khY*;0DxLlCuK`O8mDNJae$D~;H=iztNlV~PWi@! zqkr3uefOnL{+XkQr5FiHF1(wN!Z-H(zTi=ISF00z%;=!hvVY`OtsahzPMY>Y$pZ$( zym(i!#owyOeDR&`N7|?7n^d=j-(Ia9z~8|Q8#8fQzFbdt0u(0)Z+t!zEnQJ$(is!t z=g-cjEI+t=^&GFBuUFpHIH{gq+uJ)YD{j) zXDu2{CTKqg-z~f(lpZi6FgnFbfrB0AlVqi_ESAXiLK%Hexms7s)Q1{mp&R?zCOFvz z*y~c08l=fC;g;;X*AoWgK9bY3<;F7^O#hBYsZrl{*6ZaPcmFzu!%m%>TM(7UOdxuZS|N#d)n5b=T<`;}}hg_PXpYvY|{lt<5lE-3~}e zyxv-`^^+6*U1B&wl+c^%xk~nRr=2P=Pkofrm2wC8mYf+}zN%)xJ6waLVyv z7MrCht8-}OO_C>z-`R;dIjuN>%a^QFe2td37nrbjnhP%+{O0lY5eumpQG5*eoku%V zc)*OCff`A*J3qWWmd!rQy#9-G`8UN&yVe!7>HDl~whfpj*(SF*U6Ylnp_7BVIRA9e zr0hq0k@L&zSJ;n&6(zil_Jxmt=;#6)M$-ylbt%-kG|@BiI4eeqs+%nP*u>+&{w%kN zs=$)Etg0%NJm<8bwEbGbK448lM*~m^0Ql4Wt4Ybx|6AkyZ`BU!|J4=%DA37)Y@#Bn zCc*!A&rTTq12yh&XzSdh6pbFe10~H#GUi$KJgfGw;HbM`D*hJ@TJ$zclT7)!1sf;x zH%lpUzlKn`7g2remAYRX6?@5d?LSUnoxUeDR=U7x@7r0YI!gh5{e6t7}0g%dMM{ zL>$O+*mezU|GE5+aJDO`U3y_NLBYV=!%gca9dc$a)kr4%+txNR?h=d5k^*K`f$J75@aMp-$x{yuD$FEI<`0 z@OQ&%{y5%3m7;A7m7Pu_4qG;4K)vxqY}Zm=&;Xl9R$>z>yT?&zI_&G~PG&3CeOdxp zTi*F)s3YKr_k|k2Sa0l5Ya-b}xu(%eeGeh{E4q%JTfzr#hgadbA7N%Y3q%{GoHWag zQ41Sb{;e_00OmQZnUSFwprS*xgDEct(pqPj(=J*erD5_z5GrW02(9q-G)ok z{4Ltk`e#&1QDH;ToMQuhuWD{kzlb4_(NYK+GL@RG5M#K`_GKiW-VIvnomE=#o=WM; zxS_Eri)If2G#A@$mswiS&MlVjSM`A}-p^PF;3o6M5RYZyi;}kN#}t_ zkh`cnjk}O^6v`p`_2B;e){l0h-NdBG7^W^?-z4@!mu?>h|%}0vs*Iig`y+4T71FAO;T=)%Z@?!6roQ5 zU}f<`ZCBNkVE$zk^R#W3JYKj@FS}eIg#i}u2^ftgU~Tf^vo5KY^-BrHo?-VG;*uWc zh?E|`wGVZfiW2_oH`p7j0e|BiwC1)~+gLbj5xybJc(z6tyg5dNX#x0a#gouTMZ3(e z7H1nBFtE#D?LqP$8&MLOh<0#uVkt6EZ?o8NhVMdKnp{hVTPy+R9EWLMT?--cZ00aR8$)l!GineyKmdRb-}94C?c|i7OJW)TfnFGnfq{Q?HmlO}*HR|@uciwQ z#*e0E%kvYb^IOweSOY#f1A=Dhe?|YkiCq{0*h4$z#VrqrOSR>dU}n)+d>g={R@R9a4M~ zrrN>?@~^YTbN)?!!#Ix*QW#XG{RL24|HJ?!5di@K00II60s;d800000 z009vp05L&P5FjvNae+XQvBCe^00;pB0RcY{{{RObKsCMEDgMRGf8yrz1V6&~&%d$9 z9Zkb_NK7|0BSD~vBb?2Tun83|7XhqvSS&akX2AIZhW`M79Q)C+_kLId_-zMcK#2B!pxril;Iy|PbU5xJjDj$q=9M2CUQf=V%} zkg(;I(EF$q0H}ZgRa^koa5yZ(%p=eG(J8i03aYBBRn=bA_szO?La-dmrDBuo65JAl z?7&f2f|160^ojn=f0H}KqvqORbTjmR=RW5?xYy(DH`6$E1It@SRC zpnwO6`cS|WiJXFhp;aoXs8000009|u9pC@6-A=$xKBVw39t0!Aqm2U0=cI}`prBuYFhFHzMA>3=x; zA4ee2N6$jWujCe?hWoK)U9(b@z)~KN6mS3lKCZwaG=wulBhg#Rj8GKxX@5yZh=9#9 z5UCLW(7;2#u0gvYaq(0(t(>CV0AM_5L;wY9)%YfIFfm+&YcT0suA8Z+z?>1S0ASNe7K3}J%wrab56+>OR*H!n*EmWQLq@w6D5TuQ1K&j z$y50VgKCUE3#IN2d?-L;N+ORFLW|pj5RM{78qU+&ZCb9bh4TEONY zLYUx@rSTdk&`)w|ZG3fr0001hU8 zSDL3_28RT8AgEHhtW$~ILFyeTgGkcQ0MMMk)+?A$Jb<7S6$1PnCk&`S4OL(rzXy;> z9JhfkR*m@#O(6JcGBp#9Z-jtNyN$p&kmqEfW_UiHyFQYhoRDJm=3Vp>ZDxlgU}?RE zO+;L=7*jq_p$R|$m~oY5M;8Q%`;QN+1cU{(xb|q6-v*&(bxnLj zFSEjg=^%n~OiM%+Ia26_5HwT_K@d(Ox12_@Y$*1C060S#kW`5`&_cC9a34X?LWNz! zi=y{f4gdq@ zA`({sC;(TGRf`#lD*md?ehJm6dUYQN>%xzYJO!Z$R+kM-LKP=N*GNG#!A&Ew+F|a* zgC82i@OK!4ikoU0n;2se6E>$IkcAhL3%H-66j;nIW))FZgg_O*MH)Dn-o{n}CKKbM z5vjTP9C~wkiOT8MVlE+Q<(1p)q{n0frjON2p-0wQG# zpKoso^F_abuSNP#%AiB0edw-&1;OA98>Ag33FhF#>(S0%3sL<){hqj0K!4g(^vXU+ z{zs^~Z=vL6)7tYbwmfE_1PBIz1DP(3l-X7+2o?4g1+!3)X}}PE%71^83IHPk&XRV@ zmE}vgOBiWHtT+NenQh=883>?<7Ima{7CfPq?VSVaY{)isi{5GvGcK(~WFts6^?0RoVx|Rx(x4 z@{z}nL{p`02-G(bC|>^n5LdA1ssMB&ehQqUz;(5j`E$}YY`GwcW>ur8W_kX$D>%5RtrKOi-T zrW-^F6G}9)TxCE5%>Wdj=gF@#O#1vNs48C@C#rVKSAxog3&`JV*O z1RGZXD1a-Vu+^zi|WO*i|wJ^}6f=Gx1cz1%^Dm3mQsT;CkrjD(BGX zPl$>ccfA*&sN*r(ln4N3lYqbvqjTwOw^wgcB{>O8Fd2)aK%$?`x=tpAgS$FC59B<@ z$bc#XSO?m$3IRb26G9G3XB3;JkBH4>lH^QL8i5&W<-Dk!l%chz2u7U`WDhP=6bg!} zt8~x95f-Q{g#u(!x5m9^c>t)=$TiK-BZ)*dD@OnTAYeQYNaS}l9k-#E+2!gtIL3rQ z8aq0Z;t0UYAj}cuF`%wU4Un^zZ~$IAa|YOor;P?Qi+x zMN6ZVi}}A|>d0Vju%FNS;Il3RcSQnfe?8GEZ6~68TM~V7s0;XL0m#IB2yzJBv#O?~!>42Xo0uV~5hfwugzT9f=rpWLL02`&}U6Dc?lQZop*OP$)(;neiN~Ltr3?g?MPc;38fJC;(LhL){Z7 zfEWk?AoHX^o(%KxIlE0Kj(lgrReL23v>*`?QfpdfaFi<#} zL{+gYS}sQYFEhjeP>a8L%DjT)8;w+u^bV)3I5 zI8n@(4e*J#JbADVvH2_a)&-s3xpe`8>jg>X!-N;_{)g|@YF2PXT*YCM-nR)&x|aAD zLL|aO!{s&2;dh-she3?z{Kr zRgclFSt_ZePo=6^Qt8jepM3zbjD)lV00a~SVE6d}{MiPC0YLt5r$0jg6lg#mz#0q$ z1ptZy0)_(eX9Pe90Du8NLBT*k0RK)fu+VUjP@rHC;2?jt0MLJz^ao|<2i^h%8HY-O zhE_Fi0AO`#=~uB^_En7l808#j~lWuk+QyGoDIZMpVxQqXmNW%q|cy_&ZLn=bQ z4aFOcxxWCCmFnL~@9}P|Hg6gA*F#sy5yPvcb|JvR?3;rXW^>W7kYLeCx)Wzt;T5>1 zm=QpM(}iDY0Au!6Fvus1z$fq%T>_9#Z2ud$04NAZFc@%XSP;;EfeVWK2|MU&8~|xm zkNfdu0B|D5Fv%TO2tcA8QcKN{2?E@k6i0KrRR#1KX{|?wVxUV;m)YmV{-(jk*B<-3 ztVT0jj~=7CXD}v)>}09^Wlxc(#i+6utFl-@pVqNb-}I_IJLjK5t5`y?RGop(ieJ?- zWtx8!fXmx?G5ffdlZCB~`_8gvD`X=RHGekz|1>~8A_Y)rczu@^4z5kLu00bB$C^$3-6wJTS0s9LbFg*ZZ z1DxQfsHqHW$`)5op}NdL}OI{jQ{SkWBA_?}Lwh#Wc@02JZt5U4R0e<^pt(+10>BJ6hoKXN_%Z}PM^5)S zFbFU(F!0au|Gn-YAfcdP0G|X{WDp!~Y$A3}R3;QmbS&Y2)*uKp;CSPhU}v~~YKV|P z>&*d&C_cw~iqc*eseY@SP`}MipvPvz-($7$*G-M_kBs(u8J@KVx{~Nd;v7+PVlB4L*m}S%ekBgLaOc|1Jro_SwbeA; zQ^ZA2Mh%~Vj>P$zyjyS$EWmWZ75M|;Z+VOE@dbl-4z08_VbKXDzz~@Vt1&O8|6%AF z6Qv@yC*7lVb758f+Y-3b(tr~695cT2m|P0}s7{v`(^hkVzxgrwuMRVQ-xloLA zex)$aq|s37Y57K8F}f46&_8eYu}`tu1arrAVqR03y35wHVy+>R^V}!WoIwgoOxK#( zfqNvc+xUtMDD(P|iOE0}SJT)+cvIR6(bB*VbF0 zxIJFBh6f^Zlz=P{Ru}0T6ChdiT|MNLidd(W}?+@VNtn@F`vM_3qQg zL#w0_s8#ww{KBp^bc)M^9%PfTwsJ#|8PN0>MbyDx>bLtGcCY?!3od!?wey+WQb_e= zoSip33!M&-2%0SvEO$~tcRY$F0y_U2dN-r>b*{K->N$PFgvyMe>x7Ky&Aqc28|O)X z`VT-)sk(b}LAO8S7(Epoz+-i;Be6?6V;A~D5vCq0UCi<-IsyxH_b2TUjEl{1G&AfA z#2F3sbD;z|<3@A7q>(w&2z%1n&b3{5Hgw-!iI!DPsdq;VNpam(6OWtF&&W-ORZ((i~7M@x^H_K=5Ao^Qa z*TA(gN|y)@W9B&RT4w4uEwl8S=UIBp^UXb``MPg_-tOCUk5>|#mdWcH`Ppk!Q&bXW z_>)zfgy~(>3=PoT-I2Ka4=Z}oldp@g*MVX?T{jG5WE42rl8&Yj&jOv3R;Uz)AOp^w z_vLr88up=-9|?>@eRza{zn>iaSI_s}Y8Lx`YL@uk)-2>+$Mg7rR@qswZJ~PtB?fcM z|1y!H$N&&3+ja<%y1@Z z$!VNrh7nE}1-7y5!82_yoGLt_c=<1{3nqT;;9dW$X$~a4a&m3itDk&NtQ(x0_vxX0 z6zKT>umJT-cwAm+6}a{Km%4Q6vMQ0CwEYxwe5$hst<#OS2cN>dlGUC^A*RuDqm%NAj_}aVm}%)r7UOO4-MqhZMyuhj__zFDM~qhe-Ld`rKgJ9e1KlwL ze6QmAia#zH-hZxR`-=Zw(SNJMq9mwcUpW+`4=ZqH zVtMI!!`V|wWo2X%DF@FW6_{SG?01X}n;s?LZR5ZAgOYO@sR4i3%rbJB=$Q9bTrA}` z42SWjy~Hv?J4G^;(eH>9`~f5he)I{9@g=>;+gxpCczmF7ZN3rqTK6M43ab9|-@Yuj z--ax4`PridKL-?Rg=L6;kXI=vRN@8&t2I=AbtzgyrYe z$sz8aA9Y|J9;Vg)#-c8K?tKcSexT(Vel)ty-WZ{UnQ~6&L}p;Ar8dAb))L_=E30eN zRzX$8Ib8N$cbQNyoX`Fau^F=k(p`#>YYfJPrse)*E<+F88Pdtf26-jzW7faiu!s%Cvdf*zm+2*()dK9l-B9$45o*aDU9;$hY!j*4_ z)7$27-y71cif9-N3xPA?W-NmRHcpt!iE17kZ8=v^*r8F33rmpFcnwFIcIi8Wcg<>B z4brgziE?Gw$^=xnR0=*4DD;WoXE!%nxPAe$zp`bntjAk$P4K*@`Pt=YOu*q&T3E#g zo%mW`d9&9ubxj?@$+^E7%(ka@Vmm)`k)!T7Z%j5#k~_6mdgeQEwLFl_j2avnMzpS- zj6L`hs6YrIVV;81z_w?=6-Pwx{11Oh!&MFxuA zbN6`$E`21%aqoD4OPti6w)WZ59HnD2j8?5N^Mn4fAn8GYi`pTK*Dt@;CDR=Xox+gFW|gYtUm-pmqDUkPWObZgEmu@8uN=^#X3#c9H224~ zoC_JFR=_MzEFFwE_n+~c2RCPzzF3c<2kbQs7W&&Saz~a$t$aT`n`839Mb^@4h*{aE zwy{%WEJx!`I%1uSx4lmv!#juRS>uLDDIKONhcNpN)~H{*+x(;asAYFyb}{B>kmc>@scTgg*cVm&eMyD`yKyu3N>h zC>!(qK7!joT{xoyrwk0>j&=MvVNn-S^(*BJy%6MPa;3N-SlyPb-^eCM7pGL+EQgR8 z!=h5QoaiznwD)4dJi`i>g;X34W*5Y_Hy|wEDMOACkDofStuWH`1SS^nDrwU0i@!9q zm>uYGFAy%@gy zcSm#X0so|;;s1I8BPSnm8xO{>kDa@qw-UK9bPJk_-mM(W5cgJ5nl#XpQB9GLCD}51 z!&9FHi%MUbtX7eECK6TaYO3y@w0)gwR%wr@h7z*LW+P&Ivlpl_i%o7?si5(oqPDS3 zj5k7#6msBUJB1O+Dc`DWt(SJSb#a{KNARqjR=JV1xl-5E)-0h<`GE^iUW5GuxadnL zvF?6X z&=78X9I&vr6Q2&BMvTN3U)FA~f~-&{t@3zROEWkyMLx=P>y+BKhp%g2WRUp3R?H~p zDaQqH&+4wJzbu#y9N)CMIrJ4q))|X(tAu zCk9#i{#7;lDZ`AlbU~v+1M8-0a=jxnS*1*PetKSJc-D%|Tr*r(Q6eP?Va;n^-@g{t zre8Qi$LBW8jy-h-GQ!$CG?5i8aUo9lmIq3 zsfY}~3~jpUG;s93q%0*%{LDfV4^b7ZS5V4jr*=w1_V$igvB4*s|HmYVq#ZUlkO*+6 zlR`{l)q0jiF!dh6h%kSorC`JrdZ3nh>3Pz#T*nrVp2!T`8*%MF)V6&qfHknE8A|ZQ zn)4IG&d|&~(XxeaOKZ*#hE6S#8wukMi{d>VC5!;hFPj#4w{@Zz$kwxFjH^1FWZ>D- zOnoUmqmq`LL*@1w(iMjN7~50eO^Hk|xTMCCb+F`;42HXZ%|j(x?R9qb9>acGZH`n*U8{(XOpjan z;WQ1gqR3=AoC~+-6>;_hPg#pvW(@uEA@fBFUw%AcF#y*=KV*l@%UHvtZG~W%1yyTF zJYE#Vbd;UmD%!0AUk2*o`SOefXbkSbiL3C&a^>nRraWAfhu{!Pb+lOwT6Z(%7Q6fQ5Nvm{8%6_wqgu zM-FQt#gWnX!p?;8&~aWH%dJy@A_ZX^MoQvkX(}rD-y+Cy~9T9u~;ltzh;iXt`h|Z${RL5RxziW*!`hif1u#rT1Mp|zDbSg6lO^y z8(=(++}jpTE%Vr1+mTLhGv&M1Tce@+2Qakw2e7X5wJDMC?lF@*|L(;vMfW~%^5EjF zPjgBH*Opzrq{Zgd8o~2b%5jC`<(;_Q_d76WjIaG&=Dvi0-Sbh=LKh5Th3dEPMC|Ic z%cZPX07iN;CeWUhQkNPcsm$D7ajBw2+Wh?`7EwI+q!!>&a;z@E-h~ieSa-tqz7H_J zD?Z#5Z)BN9!6k^07WlGg)Nn>V(s^H^Lt+%g!%q48NdCpw`^l2qe?8Cn`t0Y)`j;~9 z+>bwi4%#{2kDVuLqM^t2_PXjn0FFdyM(C@ySc3Dm@)`DgWh}fPu;JD|mvD5EY@q}$ z)JNcbKV!Y-wF8Dq>o;6$P64>ZANr{L?gpaQrzNGTlv=swY8UtR&W+Dj=lB6*Uxy!@ z3dg0u1H|!!PrlP@T4YS+3tQ*qC?2nxAZwBkMt$&wJ2?v#S z+$UAZJd-1zP%=bWJu|RPSPIZpap#JbNhQQ=2u-h=hQdb3tsCL~LLXu=dfYpwvV7Mm zx*_tVtpZE3mS9~1QNcOvH4EOBE;Q)Cd&tjQf{;Oy{y=8Rsf>4D#x?!KP$R%5w%Lkh zcB5@>stVXS?N2Z??wL-CM6~9d0U3xj@VGE${F2qEwyz@6yOf&70P;J-zT6fjHaOiF zFEJ=JJy3UVIVbtjV4OkbPi zr1$7rN9&=My^3p$?;%go#U-}_=bHBqz_Ne~lY0W2x{$KSsE*I~IJI=>aBK$8o1yX% z#Xbd+WLr5SGMYZ-;l2nU)tQ)>uGZ45v2wLRg(am+zTdh>DXb&+GG@QS z3hR$QfF6F<`|P80UExhq)HX4KvseVK@H1E+t~*e*GT0C2L;D$W1!zgv*#r4nAanu+ z+cWF0nWThkdhCyy8Qz5FDC59Bq~;DB1HtOrpO!s~Ty(cnX;@KRHGHzyS!g2I->}Bn zCTr{L(jBG)Y{3wDavflHj$3ktOPb-TRo2?fWp!H8sbw^LSITJlUscj`&$#DYKfmtg z*FUbG=7($(%gL~feZQx%S>5yjHEO+F_HStktmc0D=exq$@0eZ>JuC#2Z{P$b@Mc)3 z5QmM9MQO?CCyG6_)WD!B>?spz)`PWjXn?h@PFamAT#u+;wzP4);4^~V| ztrl_Eoo|&0D+)1q;E=V0df+f$jXWefN!c^gGbkc;;+7(^)_x4XwJZz5)c?l|wwKPs z>}8|Ga0@Sxvya-k@8FuK)oX1-rTDJep%R}GVKc1JDLE`k)?YL;A~Pm6JetdGK2D+o z>DX$k`c{MaTCr}mR`FAV@w;OEVx8h`t>I~beu+-Ou2%o7K#xS5WOr9!Hor%_O`^NY z9{`)r4bCdT<;jQDk1fvXl(-r!o#as!U};4^0bLpPR{Vj@81MJ66RV+?-MBig`2Y^J z_PcG|P}Of7Uk-O%*)xCX0;7$t_JuW#_N!4+R7o|e)vcPojfknXsEQv-n7EBf6^eqy z#6F!Iul!_a?6=7gi5&O6sK1seZ4+^%GadWpyAhvBNq;mW>GLjFU+^uYyQ~7FF%*8>NT2_T5|yn^6|*CTDL7@$7r#HOZ|9d^R@1YjTojLVE6S zRyg&o&0v35XFrQYI1*dZ+YE8 z(`x27-Ke)}V{6t#o;5!OSmrc&$ZWlUj`bi8m86vM*hF+P!c1p)5(<^=q(R4we*R%8 zZE>jYA8#*pKY4(3+JW?^~QG-L|ig{ElLu z6F^lonLsd-phy}m!d|l&e<68>yS_D;kp1b(j3}q#h0#!r~s$@IaOULcAxPx1d;O9-S*`|sa(1O2W}z;$}b^&1$Gx#8C|xU_DP@PZtU8P5XGPE zlK6SYkzu_&Tjs`2_yp&D@J`v7Z1X0#Y|9$sOtnai-uTy8aZKK=J-#0f#nx56r>Q(8 zPqF)0-<46GbN$E$b>@n=LDGsv`X(Zr5#Mpm@(%hLxk0d)y1{8=OrR}%+{Z|4+TCV6 z=4*8Oa7G@OgIPBUNws;(GzOO#w21xJJ&RoVb_OSBJ`%l)Cht)nRS{HBBC;kBsuWLX zji~~WJBk0lek$SHp!0VSU2f)vWl7(e z4Wg-xH9^Q1+HSGgTc-u?(wMX5fdPL>NkZ{5aCjdj8BAACMUk4zBA=j&E2vnH9+Kd^ zHkEYm!-Y&oJ*I$^4eC*BG22UdYp8dVl--oE6skq0&_(L_kglEJ^I*|G;K|gsMb%B zygigce^r;)9JDI8$MZv*@GUpNOp4W1C)W`RZ2*s5T{Ny{y6()?HcQ^9(~kA473G;f zl6pWKOGh%!myDa)DGHLN`tdgw@imfG(8G$_sizd4Ql4c=PNv=D$#NJ34#q8&rmD@X zHaS0zQ2O{7Dhbyv5GEwxq+&o*r_ zZ=3K0URo&!49yfsJUNUDKVU8^6cgHyJ>K|Om)5V15GXgy5d5G%-A zj{2*-Tg{jiJjaggYFByY{Ibm_XPYRa8|O^F1EUF6=R9L6Z6h|4|M+)4tgXi%0E@(~ zDCut*4~86~o3>?1JW4%Ic?Sn!3iLy_i;mE$;nElYZN;LLFw2G_wk(6k02?i<&U9 zSHNSuaH%@E!DYU#>&>Zli}1b!osxzzv%4LP!%=yk>pY`$gNQ4roqX>0Vh=vlh@m`Z zlLvj-{-tcXOfq$KeKj6Mnu^#3?aZ<^aEK(gV^24ho+LePwLN##xA0I-?=6 zzC0a%Hj}<%ApuZL*Fit`lznsu~nz53*awj`6vUydceVh#V)V9j3FH9@R^kwB*U4@J7Qw0qA zixs{njIoECxs$Z!shGI>Jw+cQ=FbV$b^W87Lvr~6pk=uti?bnPsa3T_vLL5>{@ zLmCHTaR*V^DIKScLM*(&Bs+vPg6UW)oI>uGt7Mgr@1~~C+E?NB9mwDoZmMGYlAy;l z&kY~iJBgI#IH`oIIDz5f!Yf7=o9#L-2$N51K*UTYjw&v`U5+zsuU4_x`FfE?C#aJ_ zkw=J3NA7_<51FQe;XG`fV%_B+iEWcmUX|jME)0lchCnO{uW^UPmttqVa8b`d$8gE3 zJwnyu537?h%Sjrffw9?vAV%%1XflWm;#A!6MKp;?$EfOzU`?gciknj_Rp2b+3$E8V z;>9oJembLG~Ej9C*DeTtt3oGko=Zb|I*%&nn_T{Y}vF7vud1uaQ$Qx zR9quvp(y5Vzs4mNPTZz`>dCuL?WO^HE*jJ5?+T@+SD{hVgFj#(o#LAldMDk2K`|q{ zmt$d{mqA?}P4e#<^4f7f)AO{g=dw6#;OR6g4Lns}h$?o7Rd&IG=?nY$Me|83T=kr5xbdY)=U%-m z+%RdbCPCcM4~R;0_ao;PM`mpH>L?UV2#0x56P4Majer)ptO&DSsYhnInr3227t&Z` z)hZzn`y+?V;ay}10%rd8RsBk%ss_sEa7kA`a*pc28IMAHS*smi6B-`n%|ti-;wWnW z?7-#t3)-&JbCgNh;I_CUz9E-pr;Kx_A)OdQ26G!ex@R$3A`5jfTz9U1$VKKl`YC%8 zrtA{|I684IIZgzg=h$zc)rf7OJqjnd#aJBsCUHE^s3Z2q>ofQ~dg11H5S^XNQOnm{ z8CzK!?#;>!N;D_5)iiewp~9|+hnF*;5RiDl<8xYDn89qbH*6jloEhb4mB~8ek!GEV z&JS*-dmw475*KcfQM@=vyL@CpY!uTL+z!5>lPb}@#Oy}OruU*Y;GvVe*11lt>P|X? zM~BpzYw+iu4;#vU69gHLBAth6$O&{^mAQF*@dk8^t9AGTxOMUc7bB`#cJV&&@=oIl zaU|?vriyQyJ2+ZlY)#;R3qB6Zf+!eUA1V*iiZrW`dSVTYSvjp8&WV0R_)*C7Etr~d;m zsc1rMiMwp=Ti}!}6O^ zjG6`IZdPT^A+O5Ipli`o4A${=krQ?2LvJjwrCbt<0Gy&^rQECu)nMz4fcc&%o5W4m zB7Zz@ij%+eHUmsKg1UJp$`z6Khs9d`6(h4^CC^HP*Qi;THv-qP#rEQ01ul~a1jhDT z-e!Lc2GRp^|2FmRzh5zBBuJ}_?S#~Qbi1>hkGqAeLVACVO=7^yLCbgG*$*%ibIgRR z+R*qKJI@b|e5WcXsc6T%4j^gUeSY!7A=}e?E z!dF?wNCkqa8yY`#gB%LAH~I?1#7DQlHh&$b^FIJe$@hOU690$Hv#QndVUZh6x!IfG zTWPeSw3?>OIlmPp8PqA^t8PQ2@29UN{uv_r8Iu793kwbTcZ3=UC>S^Z0tJJ}hOnobaK4dgY0}dEL`t{=lSPo9ja=W{ z0=A?|22J+L&E>huu~6Mpq_J{D`@%`sCxZuru{Z=ghZXR@d`qCDQ`kpkh3_%{(9`fLJ}FO68SNa#k+F)(*a5=U;jJC%t6||6K%Rg2*_&iqLn+Zk&rib20j!um;!z$ zn!Sz>z5FEDI^9PLVZ`xHnZ&oq|C%dLN)Lw4g}L)Z9E<*oT%}4`_slsgaoPG z#`OfTVF!y5AA0zBDzb9*M+G}qx8y>ro3qyABoYI@ZVpP|cniW802M4d0C2mLlUBKX z{{XS>J&kR3dwGE#8cI$siX<~89)>2&&!Y(6*bf&gs(Je0T92%dTcB=Eqtj@fjO^Ir3hIZZ7S~U21QciD+&xA8`HG5F$=i z-PQJf$jU1)J(gt!?;RxOb_+=q;J;y^8#*=2R--U{#6Euf12Yacirf3)Ad(EXRCQ>oe<=V}3 z9=C2lmyT;l{M2FMtQT!W zR*#s_OfnINk1twMHL9&;Qd??86dFaU)#mRjjG(!&Ml-dgb(DABvD2I>>y!Xsg=CIo zcJh(~EJs1c)WeOX;B+Ed*^tgKuW{$$+04XY<5^<|FNyc^r+n}1C95lnC@Lv&#@9!N zE_k@a#Ov%d4P%8Vgu*8wa^KkdnY^ya*ytPnwY699JLQj?A8m(%H5p4tz1oh`tLz$r zK4Sjo_M!*+Zm39Q#>yz`CA0~PRSGlcue)rV;p_*t1};|UnZb>rK10thv+BO~mi!8o44&1LB~@c6>upGwv|tvc`Z`PtpoUwSLL zP09*mbn|JvB!22Er=7-sT#Upt(}?ySR-=aoVYf(`{aPQ?=}7eHwY9d4`O1#%DnYfR ziHhJQ%uFt7!^6xiOaSj>)MsKK0{8qFlj%xFTw+vn8fp2w{jyN?V|3vN;h}z9<6@#s z1?%B#m~}ET0Plkx;Xv7QhN8lSE$-sD6K}kuC?dHr$=YVrU2tgynL=*^-zZK!(v^C< z!R4S{cj&St7f;_r%i`iQGE#sayAc(MeeIhnS50rFS&+Po!RD2AXtlJse$3efV(M2W zZBld9q)KojTsEg#=V3xv`4be36W-$rlJL1Xw=6`gmMgMU+o2e#{PG_~!PR#bBaF*P)vWkoFKpU-O>cVF%shGcK+FLI^5 z6rv89CKbe4np>M{NF71oNl(K{EvhePQs_-wf)IqT z8wrDhLa&H_oz?Ht7F7Q5cw_hYVfI_{b^CgCdo}e3;hAHLrlW@9N?_h6%kDocp6>s! z?EZI_;)(dNRiZoej^aEnv7t!N9(=9=WIX;luH;9h52iS;pyU6;r z37^wVB)x6os~j_a*H40d(vR6@f*vg@ecggjGf#!`8G8>3`Wb);3i7WVRlw)n5MpLw zWn>~IW9Nt9WT8*nesKSvol@iUX+zUt$j%Rm4>~~_(sAN*{X8J_e zi#rEae9_{aH%>_n=?p>HByU7o9WfxnD>9Drh>+08s!mA>!3t5N`y6(gEf%vmn6O*m zI5?RmO1D{0g6o?nH0YiYOfqihcocblj3zaKbRc)t!HXqhhLKNy0I_HMg4|PBu}Iwm zcXUMA%#OcL*c%aj=mf#idPkySqmFDU5Yr{+u}zJUi4A_#I%_?!{R zN)<09f;x+j=p^&;!AMo6q9_tolrF1xp?mmVsg?qmtK_InBVK(~s+1(TB_zPbos>z- z(^L;C&IBrrpHXTiH1KJTij<@ZRXb();G@0?+R_Sw=3~^OH-m}g#-MFrh$coC!@xD? z57{BRnx#(ublfK#d9i+-!(T9Lk$rFB#t8Apv#c>{jwFWw86;a?Ia4-;OE(px>%tvj7=&^}G4xsK#X^%@FrOZxahHK8 zk4zIPeVuco=!0XIF-^&y9gQLF)+sVifV^|Lnr5mb*JLto29d;7Z>;nhZ&N^^&95=$hz39F;&mo5~ya28X0F?biT&8Kmby#5YMjZldka~mE?tlpa@jN z6;DN3h0`h^Eo+bEQBt;l#v8W(B2kIt2}b_K6tOcpK|z}R@vHy>4FsR!fMCxAv}Hjp zOG}CvO+Gw@VsB49a1~a8QlsOYgIUDWe>q?MJi!Q@vzh+d0tXvay#}qRyl=wS)}D5@ zs1fuIUibyRymfUIv#|y3N>+Z{>M?>{r>J^w$5KH(KP41K$q0Pm_}GrOB!oMjCP6l= zqRkl#y}?YVMks$t$Yrh^s|Z}05*F=tjOk2=I=vKxMO-4qGcH724cmgVQ`@$7KVyS; zBD?rKD^yZpq_y7MD6`AxPW45Djw@29PlzA86{Y zT`sKiMW&Q7m%$Fn>`F{@b=KL+7qpZZGWgr~{iFwH8a z104deiggCnSG~v@QVTM~Ab>`R%Cr-PbvW#HN+pvZ0CsGmf}|dvi*|| zaI@8viVpl}BmMxeBA7JT!HhF5`>!?@$jV`*_T*{#t!qzGC$qj&33eO0_4Lw^m7H}3QECz_3nf_b63A^P0s1E|Ndha+O;V(8$7f9+cSX%ePVoB6?{Vo zHFm((^QFquo#D1@ccrI0!&BwcXaS#M83)}lAB_Sds`XwIWycfNqE zVQbvSu_IcjGC+D0m}%7A8YH3i*qf=33UB&+mcB+P$)Bl1uB2d5 zNf1KEIQs;K*GLo-w8Bg+HQga;d?F!X+bUub@;FeVdzPO9-J!ynQn1KYU>HdOcab~Ctfb+T zMZG7%t4iFhi_n>5Lb9{7RxqFtL0FxwQa`v_No>r%i!Lc?V}Rt?yWwp+EHWTCGtOnR|$YkrkdftPpGR%SR!vJ|c=y<^Zt(1VBASIub5P3-yLs zDW7Z;I#OcUSucQ9mGu>=YhGr6(kHi7Ik+rciB^RG`Vq~VJgq;C8xCVpp1Fqw^HN51?$HEW6I9lc-9L^(_F!| zV%U5}4jxCFt14A^au3`ekW1@JJDeH9A&~<0a?31}8>BDgiH-YG*LcLP+LnVtu8jj- zou*V>T|HIfu3O{&oVp*Blr*97_}IawgA(UuVy>00L9SuuTXedp;III5Tk)vNMubkz zRH*_33T}_o^o35Vi^VKPJ(ngnL5rpkl=d811BEb!1`MO+UQw{~nG*rX$?!E$b>#`e xe1<%= { + $( obj.selectors.colorFieldInput ).wpColorPicker(); + }; + + $( obj.init ); + +} )( jQuery, tribe.settings.fields.color ); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-color-field.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-color-field.min.js new file mode 100644 index 000000000..fc1e0c4b9 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-color-field.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +tribe.settings=tribe.settings||{},tribe.settings.fields=tribe.settings.fields||{},tribe.settings.fields.color={},function($,obj){"use strict";obj.selectors={colorFieldInput:".tec-admin__settings-color-field-input"},obj.init=()=>{$(obj.selectors.colorFieldInput).wpColorPicker()},$(obj.init)}(jQuery,tribe.settings.fields.color); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-date-preview.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-date-preview.js new file mode 100644 index 000000000..48bcc32e2 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-date-preview.js @@ -0,0 +1,34 @@ +/** + * Provides live preview facilities for the event date format fields, akin + * to (and using the same ajax mechanism as) the date format preview in WP's + * general settings screen. + */ +jQuery( function( $ ) { + // Whenever the input field for a date format changes, update the matching + // live preview area + $( ".live-date-preview" ).siblings( "input" ).on( 'change', function() { + var $format_field = $( this ); + var new_format = $format_field.val(); + var $preview_field = $format_field.siblings( ".live-date-preview" ); + + /** + * Update the preview field when we get our response back from WP. + */ + var show_update = function( preview_text ) { + preview_text = $( "
    " ).html( preview_text ).text(); // Escaping! + $preview_field.html( preview_text ); + } + + // Before making the request, show the spinner (this should naturally be "wiped" + // when the response is rendered) + $preview_field.append( "" ); + $preview_field.find( ".spinner" ).css( "visibility", "visible" ); + + var request = { + action: "date_format", + date: new_format + } + + $.post( ajaxurl, request, show_update, "text" ); + } ); +} ); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-date-preview.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-date-preview.min.js new file mode 100644 index 000000000..b1dfa30aa --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-date-preview.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +jQuery((function($){$(".live-date-preview").siblings("input").on("change",(function(){var $format_field=$(this),new_format=$format_field.val(),$preview_field=$format_field.siblings(".live-date-preview");$preview_field.append(""),$preview_field.find(".spinner").css("visibility","visible");var request={action:"date_format",date:new_format};$.post(ajaxurl,request,(function(preview_text){preview_text=$("
    ").html(preview_text).text(),$preview_field.html(preview_text)}),"text")}))})); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-image-field.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-image-field.js new file mode 100644 index 000000000..3a7c80872 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-image-field.js @@ -0,0 +1,172 @@ +/* eslint-disable linebreak-style */ +/** + * Makes sure we have all the required levels on the Tribe Object. + * + * @since 5.0.0 + * + * @type {PlainObject} + */ +tribe.settings = tribe.settings || {}; +tribe.settings.fields = tribe.settings.fields || {}; + +/** + * Configure image field for settings in global Tribe variable. + * + * @since 5.0.0 + * + * @type {PlainObject} + */ +tribe.settings.fields.image = {}; + +/** + * Intializes the image field for settings. + * + * @since 5.0.0 + * + * @param {PlainObject} $ jQuery + * @param {PlainObject} obj tribe.settings.fields.image + */ +( function( $, obj ) { + 'use strict'; + var $document = $( document ); + + /** + * Store the frame object globally. + * + * @since 5.0.0 + * + * @type {PlainObject} + */ + obj.frame = false; + + /** + * Selectors used for configuration and setup + * + * @since 5.0.0 + * + * @type {PlainObject} + */ + obj.selectors = { + imageFieldContainer: '.tribe-field-image', + addImgLink: '.tec-admin__settings-image-field-btn-add', + removeImgLink: '.tec-admin__settings-image-field-btn-remove', + imgContainer: '.tec-admin__settings-image-field-image-container', + imgIdInput: '.tec-admin__settings-image-field-input', + }; + + /** + * Method to hide/show elements based on the image input field. + * + * @since 5.0.0 + * + * @param {jQuery} $fieldParent jQuery object of the field container. + * + * @return {void} + */ + obj.hideElements = function( $fieldParent ) { + const imageIsSet = $fieldParent.find( obj.selectors.imgIdInput ).val() !== ''; + $fieldParent.find( obj.selectors.addImgLink ).toggleClass( 'hidden', imageIsSet ); + $fieldParent.find( obj.selectors.removeImgLink ).toggleClass( 'hidden', !imageIsSet ); + $fieldParent.find( obj.selectors.imgContainer ).toggleClass( 'hidden', !imageIsSet ); + }; + + /** + * Method to handle when image is selected from WP Media feature. + * + * @since 5.0.0 + * + * @param {jQuery} $fieldParent jQuery object of the field container. + * + * @return {void} + */ + obj.onImageSelect = function( $fieldParent ) { + const attachment = obj.frame.state().get('selection').first().toJSON(), + $imgContainer = $fieldParent.find( obj.selectors.imgContainer ); + if ( $imgContainer.find( 'img' ).length > 0 ) { + $imgContainer.find( 'img' ).attr( 'src', attachment.url ); + } else { + $imgContainer.html( '' ); + } + $fieldParent.find( obj.selectors.imgIdInput ).val( attachment.url ); + obj.hideElements( $fieldParent ); + }; + + /** + * Method that handles 'Add Image' button click event. + * + * @since 5.0.0 + * + * @param {Event} e Click event. + * + * @return {void} + */ + obj.addImage = function( e ) { + e.preventDefault(); + const $target = $( e.target ); + const $fieldParent = $target.closest( obj.selectors.imageFieldContainer ); + + if ( obj.frame ) { + obj.frame.open(); + } else { + obj.frame = wp.media({ // eslint-disable-line no-undef + title: $fieldParent.data( 'select-image-text' ), + button: { + text: $fieldParent.data( 'use-image-text' ) + }, + multiple: false + }); + obj.frame.open(); + } + + obj.frame.off( 'select' ).on( 'select', function() { + obj.onImageSelect( $fieldParent ); + } ); + }; + + /** + * Method that handles 'Remove Image' button click event. + * + * @since 5.0.0 + * + * @param {Event} e Click event. + * + * @return {void} + */ + obj.removeImage = function( e ) { + e.preventDefault(); + const $target = $( e.target ); + const $fieldParent = $target.closest( obj.selectors.imageFieldContainer ); + $fieldParent.find( obj.selectors.imgIdInput ).val( '' ); + $fieldParent.find( obj.selectors.imgContainer ).html( '' ); + obj.hideElements( $fieldParent ); + }; + + /** + * Bind events for events bar + * + * @since 5.0.0 + * + * @return {void} + */ + obj.bindEvents = function() { + $document.on( 'click', obj.selectors.addImgLink, obj.addImage ); + $document.on( 'click', obj.selectors.removeImgLink, obj.removeImage ); + }; + + /** + * Handles the initialization of image fields when Document is ready. + * + * @since 5.0.0 + * + * @return {void} + */ + obj.init = function() { + $( obj.selectors.imageFieldContainer ).each( function( x, elm ) { + obj.hideElements( $( elm ) ); + } ); + obj.bindEvents(); + }; + + $( obj.init ); + +} )( jQuery, tribe.settings.fields.image ); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-image-field.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-image-field.min.js new file mode 100644 index 000000000..cf95febec --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-image-field.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +tribe.settings=tribe.settings||{},tribe.settings.fields=tribe.settings.fields||{},tribe.settings.fields.image={},function($,obj){"use strict";var $document=$(document);obj.frame=!1,obj.selectors={imageFieldContainer:".tribe-field-image",addImgLink:".tec-admin__settings-image-field-btn-add",removeImgLink:".tec-admin__settings-image-field-btn-remove",imgContainer:".tec-admin__settings-image-field-image-container",imgIdInput:".tec-admin__settings-image-field-input"},obj.hideElements=function($fieldParent){const imageIsSet=""!==$fieldParent.find(obj.selectors.imgIdInput).val();$fieldParent.find(obj.selectors.addImgLink).toggleClass("hidden",imageIsSet),$fieldParent.find(obj.selectors.removeImgLink).toggleClass("hidden",!imageIsSet),$fieldParent.find(obj.selectors.imgContainer).toggleClass("hidden",!imageIsSet)},obj.onImageSelect=function($fieldParent){const attachment=obj.frame.state().get("selection").first().toJSON(),$imgContainer=$fieldParent.find(obj.selectors.imgContainer);$imgContainer.find("img").length>0?$imgContainer.find("img").attr("src",attachment.url):$imgContainer.html(''),$fieldParent.find(obj.selectors.imgIdInput).val(attachment.url),obj.hideElements($fieldParent)},obj.addImage=function(e){e.preventDefault();const $fieldParent=$(e.target).closest(obj.selectors.imageFieldContainer);obj.frame||(obj.frame=wp.media({title:$fieldParent.data("select-image-text"),button:{text:$fieldParent.data("use-image-text")},multiple:!1})),obj.frame.open(),obj.frame.off("select").on("select",(function(){obj.onImageSelect($fieldParent)}))},obj.removeImage=function(e){e.preventDefault();const $fieldParent=$(e.target).closest(obj.selectors.imageFieldContainer);$fieldParent.find(obj.selectors.imgIdInput).val(""),$fieldParent.find(obj.selectors.imgContainer).html(""),obj.hideElements($fieldParent)},obj.bindEvents=function(){$document.on("click",obj.selectors.addImgLink,obj.addImage),$document.on("click",obj.selectors.removeImgLink,obj.removeImage)},obj.init=function(){$(obj.selectors.imageFieldContainer).each((function(x,elm){obj.hideElements($(elm))})),obj.bindEvents()},$(obj.init)}(jQuery,tribe.settings.fields.image); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-log-controls.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-log-controls.js new file mode 100644 index 000000000..4308031f1 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-log-controls.js @@ -0,0 +1,176 @@ +var tribe_logger_admin = tribe_logger_admin || {}; +var tribe_logger_data = tribe_logger_data || {}; + +( function( $, obj ) { /* eslint-disable-line no-unused-vars */ + var working = false; + var current_view = ''; + var current_engine = ''; + var view_changed = false; + var $controls = $( '#tribe-log-controls' ); + var $options = $controls.find( 'select' ); + var $spinner = $controls.find( '.working' ); + var $viewer = $( '#tribe-log-viewer' ); + var $download_link = $( 'a.download_log' ); + + /** + * Update the log view based on changes to the various selectors. + */ + function update() { + // If an update is already in progress let's wait until that job completes + if ( working ) { + return; + } + + detect_view_change(); + freeze(); + request(); + } + + /** + * Communicate any changes back to the server so we can obtain fresh log data + * to display to the user. + */ + function request() { + var data = { + 'action': 'tribe_logging_controls', + 'check': tribe_logger_data.check, + 'log-level': $( '#log-level' ).find( ':selected' ).attr( 'name' ), + 'log-engine': $( '#log-engine' ).find( ':selected' ).attr( 'name' ) + }; + + if ( view_changed ) { + data['log-view'] = current_view; + } + + $.ajax( ajaxurl, { + 'method': 'POST', + 'success': on_success, + 'error': on_error, + 'dataType': 'json', + 'data': data + } ); + } + + /** + * Unfreeze the controls (following an update) and refresh on-screen data as needed. + * + * @param data + */ + function on_success( data ) { + unfreeze(); + + if ( Array.isArray( data.data.entries ) ) { + $viewer.html( to_table( data.data.entries ) ); + update_download_link(); + } + } + + /** + * Converts data_array, which is expected to be an array of + * arrays, into an HTML table. + */ + function to_table( data_array ) { + var html = ''; + + for ( var row in data_array ) { + html += ''; + + for ( var cell in data_array[row] ) { + html += ''; + } + + html += ''; + } + + return html + '
    ' + data_array[row][cell] + '
    '; + } + + /** + * Add, append or update the log download link so it points to the + * currently selected log file. + */ + function update_download_link() { + // bail if not in DOM + if ( 1 > $download_link.length ) { + return; + } + + var url = $download_link.attr( 'href' ); + var log = encodeURI( get_current_view() ); + var matches = url.match(/&log=([a-z0-9\-]+)/i); /* eslint-disable-line no-useless-escape */ + + // Update or add the log parameter + if ( Array.isArray( matches ) && 2 === matches.length ) { + url = url.replace( matches[0], '&log=' + log ); + } else if ( url.indexOf( '?' ) ) { + url = url + '&log=' + log; + } else { + url = url + '?log=' + log; + } + + $download_link.attr( 'href', url ); + } + + /** + * If our request back to the server failed, unfreeze the controls so + * we can try again. + * + * @todo in a future iteration we should add substantive handling for this scenario + */ + function on_error() { + unfreeze(); + } + + /** + * Freeze/disable the controls and show the spinner. + */ + function freeze() { + working = true; + $options.prop( 'disabled', true ); + $spinner.removeClass( 'hidden' ); + } + + /** + * Unfreeze/enable the controls and hide the spinner. + */ + function unfreeze() { + working = false; + $options.prop( 'disabled', false ); + $spinner.addClass( 'hidden' ); + } + + /** + * Check if a change in controls constituting a change of view has occured. + * + * This could be because the user changed logging engine or because they picked + * a different log to peruse; a change in logging level on the other hand does + * not count. + */ + function detect_view_change() { + var new_view = get_current_view(); + var new_engine = get_current_engine(); + + if ( new_view !== current_view || new_engine !== current_engine ) { + view_changed = true; + current_view = new_view; + current_engine = new_engine; + } else { + view_changed = false; + } + } + + function get_current_view() { + return $( '#log-selector' ).find( ':selected' ).attr( 'name' ); + } + + function get_current_engine() { + return $( '#log-engine' ).find( ':selected' ).attr( 'name' ); + } + + // Setup + current_view = get_current_view(); + current_engine = get_current_engine(); + + update_download_link(); + $options.on( 'change', update ); +} )( jQuery, tribe_logger_admin ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-log-controls.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-log-controls.min.js new file mode 100644 index 000000000..841e4483d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin-log-controls.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +var tribe_logger_admin=tribe_logger_admin||{},tribe_logger_data=tribe_logger_data||{};!function($,obj){var working=!1,current_view="",current_engine="",view_changed=!1,$controls=$("#tribe-log-controls"),$options=$controls.find("select"),$spinner=$controls.find(".working"),$viewer=$("#tribe-log-viewer"),$download_link=$("a.download_log");function on_success(data){unfreeze(),Array.isArray(data.data.entries)&&($viewer.html(function to_table(data_array){var html="";for(var row in data_array){for(var cell in html+="",data_array[row])html+="";html+=""}return html+"
    "+data_array[row][cell]+"
    "}(data.data.entries)),update_download_link())}function update_download_link(){if(!(1>$download_link.length)){var url=$download_link.attr("href"),log=encodeURI(get_current_view()),matches=url.match(/&log=([a-z0-9\-]+)/i);url=Array.isArray(matches)&&2===matches.length?url.replace(matches[0],"&log="+log):url.indexOf("?")?url+"&log="+log:url+"?log="+log,$download_link.attr("href",url)}}function on_error(){unfreeze()}function unfreeze(){working=!1,$options.prop("disabled",!1),$spinner.addClass("hidden")}function get_current_view(){return $("#log-selector").find(":selected").attr("name")}function get_current_engine(){return $("#log-engine").find(":selected").attr("name")}current_view=get_current_view(),current_engine=get_current_engine(),update_download_link(),$options.on("change",(function update(){working||(!function detect_view_change(){var new_view=get_current_view(),new_engine=get_current_engine();new_view!==current_view||new_engine!==current_engine?(view_changed=!0,current_view=new_view,current_engine=new_engine):view_changed=!1}(),function freeze(){working=!0,$options.prop("disabled",!0),$spinner.removeClass("hidden")}(),function request(){var data={action:"tribe_logging_controls",check:tribe_logger_data.check,"log-level":$("#log-level").find(":selected").attr("name"),"log-engine":$("#log-engine").find(":selected").attr("name")};view_changed&&(data["log-view"]=current_view);$.ajax(ajaxurl,{method:"POST",success:on_success,error:on_error,dataType:"json",data:data})}())}))}(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/help-page.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/help-page.js new file mode 100644 index 000000000..4bdd320da --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/help-page.js @@ -0,0 +1,129 @@ +tribe.helpPage = tribe.helpPage || {}; + +( function ( $, obj ) { + 'use strict'; + + obj.selectors = { + copyButton: '.system-info-copy-btn', + optInMsg: '.tribe-sysinfo-optin-msg', + autoInfoOptIn: '#tribe_auto_sysinfo_opt_in', + }; + + obj.setup = function () { + obj.setupSystemInfo(); + obj.setupCopyButton(); + }; + + /** + * Initialize system info opt in copy + */ + obj.setupCopyButton = function () { + if ( 'undefined' === typeof tribe_system_info ) { + return; + } + + var clipboard = new ClipboardJS( obj.selectors.copyButton ); /* eslint-disable-line no-undef */ + var button_icon = ''; + var button_text = tribe_system_info.clipboard_btn_text; + + //Prevent Button From Doing Anything Else + $( '.system-info-copy-btn' ).on( + 'click', + function ( e ) { + e.preventDefault(); + } + ); + + clipboard.on( 'success', function ( event ) { + event.clearSelection(); + event.trigger.innerHTML = button_icon + '' + tribe_system_info.clipboard_copied_text + ''; // eslint-disable-line max-len + window.setTimeout( function () { + event.trigger.innerHTML = button_icon + button_text; + }, 5000 ); + } ); + + clipboard.on( 'error', function ( event ) { + event.trigger.innerHTML = button_icon + '' + tribe_system_info.clipboard_fail_text + ''; // eslint-disable-line max-len + window.setTimeout( function () { + event.trigger.innerHTML = button_icon + button_text; + }, 5000 ); + } ); + + }; + + /** + * Initialize system info opt in + */ + obj.setupSystemInfo = function () { + if ( 'undefined' === typeof tribe_system_info ) { + return; + } + + obj.$system_info_opt_in = $( obj.selectors.autoInfoOptIn ); + obj.$system_info_opt_in_msg = $( obj.selectors.optInMsg ); + + obj.$system_info_opt_in.on( 'change', function () { + if ( this.checked ) { + obj.doAjaxRequest( 'generate' ); + } else { + obj.doAjaxRequest( 'remove' ); + } + } ); + + }; + + obj.doAjaxRequest = function ( generate ) { + var request = { + 'action' : 'tribe_toggle_sysinfo_optin', + 'confirm' : tribe_system_info.sysinfo_optin_nonce, + 'generate_key' : generate + }; + + // Send our request + $.post( + ajaxurl, + request, + function ( results ) { + + if ( results.success ) { + obj.$system_info_opt_in_msg.html( "

    " + results.data + "

    " ); + } else { + var html = "

    " + + tribe_system_info.sysinfo_error_message_text + + "

    "; + + if ( results.data ) { + if ( results.data.message ) { + html += '

    ' + results.data.message + '

    '; + } else if ( results.message ) { + html += '

    ' + results.message + '

    '; + } + + if ( results.data.code ) { + html += '

    ' + + tribe_system_info.sysinfo_error_code_text + + ' ' + + results.data.code + + '

    '; + } + + if ( results.data.status ) { + html += '

    ' + + tribe_system_info.sysinfo_error_status_text + + results.data.status + + '

    '; + } + + } + + obj.$system_info_opt_in_msg.html( html ); // eslint-disable-line max-len + $( obj.selectors.autoInfoOptIn ).prop( "checked", false ); + } + } + ); + + }; + + $( obj.setup ); + +} )( jQuery, tribe.helpPage ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/help-page.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/help-page.min.js new file mode 100644 index 000000000..4188c6b5f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/help-page.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +tribe.helpPage=tribe.helpPage||{},function($,obj){"use strict";obj.selectors={copyButton:".system-info-copy-btn",optInMsg:".tribe-sysinfo-optin-msg",autoInfoOptIn:"#tribe_auto_sysinfo_opt_in"},obj.setup=function(){obj.setupSystemInfo(),obj.setupCopyButton()},obj.setupCopyButton=function(){if("undefined"!=typeof tribe_system_info){var clipboard=new ClipboardJS(obj.selectors.copyButton),button_icon='',button_text=tribe_system_info.clipboard_btn_text;$(".system-info-copy-btn").on("click",(function(e){e.preventDefault()})),clipboard.on("success",(function(event){event.clearSelection(),event.trigger.innerHTML=button_icon+''+tribe_system_info.clipboard_copied_text+"",window.setTimeout((function(){event.trigger.innerHTML=button_icon+button_text}),5e3)})),clipboard.on("error",(function(event){event.trigger.innerHTML=button_icon+''+tribe_system_info.clipboard_fail_text+"",window.setTimeout((function(){event.trigger.innerHTML=button_icon+button_text}),5e3)}))}},obj.setupSystemInfo=function(){"undefined"!=typeof tribe_system_info&&(obj.$system_info_opt_in=$(obj.selectors.autoInfoOptIn),obj.$system_info_opt_in_msg=$(obj.selectors.optInMsg),obj.$system_info_opt_in.on("change",(function(){this.checked?obj.doAjaxRequest("generate"):obj.doAjaxRequest("remove")})))},obj.doAjaxRequest=function(generate){var request={action:"tribe_toggle_sysinfo_optin",confirm:tribe_system_info.sysinfo_optin_nonce,generate_key:generate};$.post(ajaxurl,request,(function(results){if(results.success)obj.$system_info_opt_in_msg.html("

    "+results.data+"

    ");else{var html="

    "+tribe_system_info.sysinfo_error_message_text+"

    ";results.data&&(results.data.message?html+="

    "+results.data.message+"

    ":results.message&&(html+="

    "+results.message+"

    "),results.data.code&&(html+="

    "+tribe_system_info.sysinfo_error_code_text+" "+results.data.code+"

    "),results.data.status&&(html+="

    "+tribe_system_info.sysinfo_error_status_text+results.data.status+"

    ")),obj.$system_info_opt_in_msg.html(html),$(obj.selectors.autoInfoOptIn).prop("checked",!1)}}))},$(obj.setup)}(jQuery,tribe.helpPage); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/url-fragment-scroll.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/url-fragment-scroll.js new file mode 100644 index 000000000..4058273ed --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/url-fragment-scroll.js @@ -0,0 +1,119 @@ +tribe.urlFragmentScroll = tribe.urlFragmentScroll || {}; + +( function ( $, obj ) { + 'use strict'; + + var $document = $( document ); + + /** + * Sets up listeners and callbacks to handle navigation to page #elements + * gracefully and in a way that doesn't result in the admin toolbar obscuring + * the target. + * + * @since 4.5.6 + * @since 4.9.12 Moved from tribe-common.js to a more specific file + * + * @return {void} + */ + obj.setup = function () { + obj.navigateToFragment( window.location.href ); + + $document.on( 'click', '.tribe_events_page_tribe-common', obj.onClick ); + }; + + /** + * If it looks like the user has navigated to a specific anchor within the page + * then trigger our scroll position adjustment. + * + * @since 4.5.6 + * @since 4.9.12 Moved from tribe-common.js to a more specific file and renamed to `onClick` + * + * @param {Event} event Event in which this was triggered on. + * + * @return {void} + */ + obj.onClick = function( event ) { + var link = $( event.target ).attr( 'href' ); + + // If we couldn't determine the URL, bail + if ( 'undefined' === typeof link ) { + return; + } + + obj.navigateToFragment( link ); + } + + /** + * Will atempt to navigate to a given Fragment based on a URL. + * + * @since 4.9.12 + * + * @param {String} link Which link target we are trying to navigate to. + * + * @return {void} + */ + obj.navigateToFragment = function( link ) { + var fragment = obj.getUrlFragment( link ); + + // No ID/fragment in the URL? Bail + if ( ! fragment ) { + return; + } + + obj.adjustScrollPosition( fragment ); + }; + + /** + * Adjust the scroll/viewport offset if necessary to stop the admin toolbar + * from obscuring the target element. + * + * @since 4.5.6 + * @since 4.9.12 Moved from tribe-common.js to a more specific file + * + * @param {String} id + * + * @return {void} + */ + obj.adjustScrollPosition = function( id ) { + // No toolbar, no problem + if ( ! $( '#wpadminbar' ).length ) { + return; + } + + var elementPosition = $( '#' + id ).position(); + + // Bail if the element doesn't actually exist + if ( ! elementPosition ) { + return; + } + + // A fractional delay is needed to ensure our adjustment sticks + setTimeout( function() { + window.scroll( window.scrollX, elementPosition.top ); + } ); + }; + + /** + * Attempts to extract the "#fragment" string from a URL and returns it + * (will be empty if not set). + * + * @since 4.5.6 + * + * @param {String} url + * + * @returns {String} + */ + obj.getUrlFragment = function( url ) { + var fragment = url.match( /#([a-z0-9_-]+)$/i ) + + if ( null === fragment ) { + return ''; + } + + // Return the first captured group + return fragment[1]; + }; + + $( obj.setup ); + +} )( jQuery, tribe.urlFragmentScroll ); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/url-fragment-scroll.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/url-fragment-scroll.min.js new file mode 100644 index 000000000..dd5f2989c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/admin/url-fragment-scroll.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +tribe.urlFragmentScroll=tribe.urlFragmentScroll||{},function($,obj){"use strict";var $document=$(document);obj.setup=function(){obj.navigateToFragment(window.location.href),$document.on("click",".tribe_events_page_tribe-common",obj.onClick)},obj.onClick=function(event){var link=$(event.target).attr("href");void 0!==link&&obj.navigateToFragment(link)},obj.navigateToFragment=function(link){var fragment=obj.getUrlFragment(link);fragment&&obj.adjustScrollPosition(fragment)},obj.adjustScrollPosition=function(id){if($("#wpadminbar").length){var elementPosition=$("#"+id).position();elementPosition&&setTimeout((function(){window.scroll(window.scrollX,elementPosition.top)}))}},obj.getUrlFragment=function(url){var fragment=url.match(/#([a-z0-9_-]+)$/i);return null===fragment?"":fragment[1]},$(obj.setup)}(jQuery,tribe.urlFragmentScroll); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/app-shop.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/app-shop.js new file mode 100644 index 000000000..d551518dd --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/app-shop.js @@ -0,0 +1,10 @@ +jQuery( function() { + + var maxHeight = 0; + jQuery( "div.tribe-addon .caption" ).each( function() { + var h = jQuery( this ).height(); + maxHeight = h > maxHeight ? h : maxHeight; + } ); + + jQuery( "div.tribe-addon:not(.first) .caption" ).css( 'height', maxHeight ); +} ); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/app-shop.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/app-shop.min.js new file mode 100644 index 000000000..291243a3f --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/app-shop.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +jQuery((function(){var maxHeight=0;jQuery("div.tribe-addon .caption").each((function(){var h=jQuery(this).height();maxHeight=h>maxHeight?h:maxHeight})),jQuery("div.tribe-addon:not(.first) .caption").css("height",maxHeight)})); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/app/main.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/app/main.min.js new file mode 100644 index 000000000..1ef093fb0 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/app/main.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +var tribe="object"==typeof tribe?tribe:{};tribe.common=function(modules){function webpackJsonpCallback(data){for(var moduleId,chunkId,chunkIds=data[0],moreModules=data[1],executeModules=data[2],i=0,resolves=[];i({type:ADD_PLUGIN,payload:{name:name}}),removePlugin=name=>({type:REMOVE_PLUGIN,payload:{name:name}});var external_lodash_includes_=__webpack_require__("Etll"),external_lodash_includes_default=__webpack_require__.n(external_lodash_includes_),external_lodash_curry_=__webpack_require__("oNd/");const getPlugins=state=>state.plugins,hasPlugin=__webpack_require__.n(external_lodash_curry_)()(((state,plugin)=>external_lodash_includes_default()(getPlugins(state),plugin))),EVENTS_PLUGIN="events",EVENTS_PRO_PLUGIN="events-pro",EVENTS_VIRTUAL_PLUGIN="events-virtual",TICKETS="tickets",TICKETS_PLUS="tickets-plus";var external_tribe_modules_propTypes_=__webpack_require__("rf6O"),external_tribe_modules_propTypes_default=__webpack_require__.n(external_tribe_modules_propTypes_);const ReactSelectOption=external_tribe_modules_propTypes_default.a.shape({label:external_tribe_modules_propTypes_default.a.string.isRequired,value:external_tribe_modules_propTypes_default.a.any.isRequired}),ReactSelectOptions=external_tribe_modules_propTypes_default.a.arrayOf(ReactSelectOption);var plugins=function(){let state=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],action=arguments.length>1?arguments[1]:void 0;switch(action.type){case types_namespaceObject.ADD_PLUGIN:return external_lodash_uniq_default()([...state,action.payload.name]);case types_namespaceObject.REMOVE_PLUGIN:return[...state].filter((pluginName=>pluginName!==action.payload.name));default:return state}},helpers_extends=__webpack_require__("pVnL"),extends_default=__webpack_require__.n(helpers_extends),defineProperty=__webpack_require__("lSNA"),defineProperty_default=__webpack_require__.n(defineProperty),external_React_=__webpack_require__("cDcd"),external_React_default=__webpack_require__.n(external_React_),developmentOnly=(__webpack_require__("edCo"),__webpack_require__("/TnQ")),es=__webpack_require__("ddIi"),redux_thunk_es=__webpack_require__("sINF"),external_tribe_modules_reduxSaga_=__webpack_require__("1fKG"),external_tribe_modules_reduxSaga_default=__webpack_require__.n(external_tribe_modules_reduxSaga_);const EVENT="tribe_events",VENUE="tribe_venue",ORGANIZER="tribe_organizer",ADD_FORM="@@MT/COMMON/ADD_FORM",SET_FORM_FIELDS="@@MT/COMMON/SET_FORM_FIELDS",CREATE_FORM_DRAFT="@@MT/COMMON/CREATE_FORM_DRAFT",EDIT_FORM_ENTRY="@@MT/COMMON/EDIT_FORM_ENTRY",SUBMIT_FORM="@@MT/COMMON/SUBMIT_FORM",CLEAR_FORM="@@MT/COMMON/CLEAR_FORM",SET_SAVING_FORM="@@MT/COMMON/SET_SAVING_FORM",ADD_VOLATILE_ID="@@MT/COMMON/ADD_VOLATILE_ID",REMOVE_VOLATILE_ID="@@MT/COMMON/REMOVE_VOLATILE_ID";function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}function _objectSpread(target){for(var i=1;i0&&void 0!==arguments[0]?arguments[0]:DEFAULT_STATE,action=arguments.length>1?arguments[1]:void 0;switch(action.type){case ADD_FORM:return _objectSpread(_objectSpread({},state),{},{type:action.payload.type});case CLEAR_FORM:return _objectSpread(_objectSpread(_objectSpread({},state),DEFAULT_STATE),{},{type:state.type});case CREATE_FORM_DRAFT:return _objectSpread(_objectSpread({},state),{},{submit:!1,edit:!1,create:!0,fields:action.payload.fields});case SET_SAVING_FORM:return _objectSpread(_objectSpread({},state),{},{saving:action.payload.saving});case EDIT_FORM_ENTRY:return _objectSpread(_objectSpread({},state),{},{create:!1,submit:!1,edit:!0,fields:action.payload.fields});case SUBMIT_FORM:return _objectSpread(_objectSpread({},state),{},{submit:!0});default:return state}};function reducer_ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}function reducer_objectSpread(target){for(var i=1;i0&&void 0!==arguments[0]?arguments[0]:{},action=arguments.length>1?arguments[1]:void 0;switch(action.type){case ADD_FORM:case CLEAR_FORM:case SET_FORM_FIELDS:case CREATE_FORM_DRAFT:case EDIT_FORM_ENTRY:case SUBMIT_FORM:case SET_SAVING_FORM:return reducer_objectSpread(reducer_objectSpread({},state),{},{[action.payload.id]:reducers_form(state[action.payload.id],action)});default:return state}},volatile:function(){let state=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],action=arguments.length>1?arguments[1]:void 0;switch(action.type){case ADD_VOLATILE_ID:return[...state,action.payload.id];case REMOVE_VOLATILE_ID:return state.filter((id=>id!==action.payload.id));default:return state}}}),external_lodash_get_=__webpack_require__("lCf4"),external_lodash_get_default=__webpack_require__.n(external_lodash_get_),external_lodash_isEmpty_=__webpack_require__("4Qn9"),external_lodash_isEmpty_default=__webpack_require__.n(external_lodash_isEmpty_);const WP_REQUEST="@@MT/COMMON/WP_REQUEST",wpRequest=meta=>({type:WP_REQUEST,meta:meta});var external_lodash_isUndefined_=__webpack_require__("peom"),external_lodash_isUndefined_default=__webpack_require__.n(external_lodash_isUndefined_),querystringify=__webpack_require__("nFlj");function utils_ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}const toWpParams=function(){const params=function utils_objectSpread(target){for(var i=1;i0&&void 0!==arguments[0]?arguments[0]:{});return external_lodash_isUndefined_default()(params.search)||external_lodash_isEmpty_default()(params.search)||(params.orderby="relevance"),external_lodash_isEmpty_default()(params.exclude)&&delete params.exclude,params},toWPQuery=function(){let args=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object(querystringify.stringify)(toWpParams(args))},getTotalPages=headers=>{const totalPages=parseInt(headers.get("x-wp-totalpages"),10);return isNaN(totalPages)?0:totalPages};var asyncToGenerator=__webpack_require__("yXPU"),asyncToGenerator_default=__webpack_require__.n(asyncToGenerator),external_lodash_inRange_=__webpack_require__("j3nO"),external_lodash_inRange_default=__webpack_require__.n(external_lodash_inRange_),external_lodash_noop_=__webpack_require__("In0u"),external_lodash_noop_default=__webpack_require__.n(external_lodash_noop_);__webpack_require__("bZMm");const get=(key,defaultValue)=>window[key]||defaultValue,google=()=>get("google"),wpApi=wp.api,wpApiRequest=wp.apiRequest,wpComponents=wp.components,wpData=wp.data,wpEditor=wp.blockEditor||wp.editor,wpHooks=wp.hooks,wpDataSelectCoreEditor=()=>wpData.select("core/block-editor")||wpData.select("core/editor"),IconButton=wpComponents.Button||wpComponents.IconButton,config=()=>get("tribe_editor_config",{}),common=()=>config().common||{},adminUrl=()=>common().adminUrl||"",globals_rest=()=>common().rest||{},restNonce=()=>globals_rest().nonce||{},dateSettings=()=>common().dateSettings||{},editorConstants=()=>common().constants||{},list=()=>({countries:common().countries||{},us_states:common().usStates||{}}),tec=()=>config().events||{},editor=()=>tec().editor||{},settings=()=>tec().settings||{},mapsAPI=()=>tec().googleMap||{},priceSettings=()=>tec().priceSettings||{},tecDateSettings=()=>tec().dateSettings||{},timezoneHtml=()=>tec().timezoneHTML||"",defaultTimes=()=>tec().defaultTimes||{},timezone=()=>tec().timeZone||{},pro=()=>config().eventsPRO||{},editorDefaults=()=>pro().defaults||{},tickets=()=>config().tickets||{},ticketsPlus=()=>config().ticketsPlus||{},iacVars=()=>ticketsPlus().iacVars||{},postObjects=()=>config().post_objects||{},blocks=()=>config().blocks||{};function wp_request_ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}function wp_request_objectSpread(target){for(var i=1;inext=>function(){var _ref=asyncToGenerator_default()((function*(action){if(action.type!==request_types_namespaceObject.WP_REQUEST)return next(action);const{meta:meta={}}=action,{path:path="",params:params={}}=meta;next(action);const{url:url="",nonce:nonce={}}=globals_rest(),wpRESTNonce=nonce.wp_rest||"",BASE=`${url}${(globals_rest.namespaces||{}).core||"wp/v2"}`,actions=wp_request_objectSpread({start:external_lodash_noop_default.a,success:external_lodash_noop_default.a,error:external_lodash_noop_default.a,none:external_lodash_noop_default.a},external_lodash_get_default()(meta,"actions",{}));if(""===path)return void actions.none(path);const endpoint=`${BASE}/${path}`;actions.start(endpoint,params);const headers=wp_request_objectSpread(wp_request_objectSpread({Accept:"application/json","Content-Type":"application/json"},external_lodash_get_default()(params,"headers",{})),{},{"X-WP-Nonce":wpRESTNonce});try{const response=yield fetch(endpoint,wp_request_objectSpread(wp_request_objectSpread({},params),{},{credentials:"include",headers:headers})),{status:status}=response;if(!external_lodash_inRange_default()(status,200,300))throw response;const body=yield response.json();return actions.success({body:body,headers:response.headers}),[response,body]}catch(error){return actions.error(error),error}}));return function(_x){return _ref.apply(this,arguments)}}(),external_tribe_modules_reselect_=__webpack_require__("MWqi");const formSelector=(state,props)=>state.forms.byId[props.name],getFormType=Object(external_tribe_modules_reselect_.createSelector)([formSelector],(block=>block?block.type:DEFAULT_STATE.type)),getFormEdit=Object(external_tribe_modules_reselect_.createSelector)([formSelector],(block=>block?block.edit:DEFAULT_STATE.edit)),getFormCreate=Object(external_tribe_modules_reselect_.createSelector)([formSelector],(block=>block?block.create:DEFAULT_STATE.create)),getFormSubmit=Object(external_tribe_modules_reselect_.createSelector)([formSelector],(block=>block?block.submit:DEFAULT_STATE.submit)),getFormFields=Object(external_tribe_modules_reselect_.createSelector)([formSelector],(block=>block?block.fields:DEFAULT_STATE.fields)),getFormSaving=Object(external_tribe_modules_reselect_.createSelector)([formSelector],(block=>block?block.saving:DEFAULT_STATE.saving)),getVolatile=state=>state.forms.volatile,registerForm=(id,type)=>({type:ADD_FORM,payload:{id:id,type:type}}),clearForm=id=>({type:CLEAR_FORM,payload:{id:id}}),createDraft=(id,fields)=>({type:CREATE_FORM_DRAFT,payload:{id:id,fields:fields}}),editEntry=(id,fields)=>({type:EDIT_FORM_ENTRY,payload:{id:id,fields:fields}}),setSubmit=id=>({type:SUBMIT_FORM,payload:{id:id}}),setSaving=(id,saving)=>({type:SET_SAVING_FORM,payload:{id:id,saving:saving}}),addVolatile=id=>({type:ADD_VOLATILE_ID,payload:{id:id}}),removeVolatile=id=>({type:REMOVE_VOLATILE_ID,payload:{id:id}}),sendForm=function(id){let fields=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},completed=arguments.length>2?arguments[2]:void 0;return(dispatch,getState)=>{const state=getState(),props={name:id},type=getFormType(state,props),create=getFormCreate(state,props),details=getFormFields(state,props);if(getFormSaving(state,props))return;const options={path:create?`${type}`:`${type}/${details.id}`,params:{method:create?"POST":"PUT",body:JSON.stringify(fields)},actions:{start:()=>dispatch(setSaving(id,!0)),success:_ref=>{let{body:body}=_ref;const postID=external_lodash_get_default()(body,"id","");create&&postID&&dispatch(addVolatile(postID)),completed(body),dispatch(clearForm(id)),dispatch(setSaving(id,!1))},error:()=>{dispatch(clearForm(id)),dispatch(setSaving(id,!1))}}};dispatch(request_actions_namespaceObject.wpRequest(options))}},deleteEntry=dispatch=>path=>_ref2=>{let{body:body}=_ref2;const{id:id,status:status}=body;if("draft"!==status)return void dispatch(removeVolatile(id));const options={path:path,params:{method:"DELETE"},actions:{success:()=>dispatch(removeVolatile(id))}};dispatch(request_actions_namespaceObject.wpRequest(options))},maybeRemoveEntry=function(id){let details=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(dispatch,getState)=>{const state=getState(),type=getFormType(state,{name:id});if(external_lodash_isEmpty_default()(details))return;const path=`${type}/${details.id}`,options={path:path,actions:{success:deleteEntry(dispatch)(path)}};dispatch(request_actions_namespaceObject.wpRequest(options))}};var data_forms=forms_reducer,reducers=Object(es.b)({plugins:plugins,forms:data_forms});const sagaMiddleware=external_tribe_modules_reduxSaga_default()();const store_store=(()=>{if(window.__tribe_common_store__)return window.__tribe_common_store__;const middlewares=[redux_thunk_es.a,sagaMiddleware,wp_request],composeEnhancers=Object(developmentOnly.composeWithDevTools)({name:"tribe/common"}),store=Object(external_tribe_modules_redux_.createStore)(reducers({}),composeEnhancers(Object(external_tribe_modules_redux_.applyMiddleware)(...middlewares)));return Object(es.a)(reducers,store),store.run=sagaMiddleware.run,window.__tribe_common_store__=store,store})();function with_store_ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}function with_store_objectSpread(target){for(var i=1;istore_store;var with_store=function(){let additionalProps=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return WrappedComponent=>props=>{const extraProps=with_store_objectSpread(with_store_objectSpread({},additionalProps),{},{store:getStore()});return wp.element.createElement(WrappedComponent,extends_default()({},props,extraProps))}},with_form=function(){let getName=arguments.length>0&&void 0!==arguments[0]?arguments[0]:external_lodash_noop_default.a;return WrappedComponent=>{class WithForm extends external_React_.Component{componentDidMount(){const name=getName(this.props),{registerForm:registerForm,postType:postType}=this.props;registerForm(name,postType)}render(){return wp.element.createElement(WrappedComponent,extends_default()({},this.props,this.additionalProps()))}additionalProps(){const{createDraft:createDraft,sendForm:sendForm,setSubmit:setSubmit,editEntry:editEntry,maybeRemoveEntry:maybeRemoveEntry}=this.props,name=getName(this.props);return{createDraft:fieldsObject=>createDraft(name,fieldsObject),editEntry:fieldsObject=>editEntry(name,fieldsObject),sendForm:(fieldsObject,callback)=>sendForm(name,fieldsObject,callback),setSubmit:()=>setSubmit(name),maybeRemoveEntry:details=>maybeRemoveEntry(name,details)}}}defineProperty_default()(WithForm,"propTypes",{registerForm:external_tribe_modules_propTypes_default.a.func,postType:external_tribe_modules_propTypes_default.a.string});return Object(external_tribe_modules_reactRedux_.connect)(((state,props)=>{const modifiedProps={name:getName(props)};return{edit:forms_selectors_namespaceObject.getFormEdit(state,modifiedProps),create:forms_selectors_namespaceObject.getFormCreate(state,modifiedProps),fields:forms_selectors_namespaceObject.getFormFields(state,modifiedProps),submit:forms_selectors_namespaceObject.getFormSubmit(state,modifiedProps)}}),(dispatch=>Object(external_tribe_modules_redux_.bindActionCreators)(forms_actions_namespaceObject,dispatch)))(WithForm)}};const with_block_closer_dispatch=e=>{e.target.dispatchEvent(new CustomEvent("tribe:click:proxy",{bubbles:!0}))},intercept=e=>e.stopPropagation();var with_block_closer=WrappedComponent=>{class WithBlockCloser extends external_React_.PureComponent{constructor(props){super(props),defineProperty_default()(this,"nodeRef",external_React_default.a.createRef()),defineProperty_default()(this,"_eventNamespace","tribe:click:proxy"),defineProperty_default()(this,"_dispatchClickProxyEvent",with_block_closer_dispatch),defineProperty_default()(this,"_interceptClickProxyEvent",intercept),defineProperty_default()(this,"open",(()=>{this.setState({isOpen:!0}),this.props.onOpen()})),defineProperty_default()(this,"handleKeyDown",(e=>{27===e.keyCode&&(this.setState({isOpen:!1}),this.props.onClose())})),defineProperty_default()(this,"handleClick",(()=>{this.setState({isOpen:!1}),this.props.onClose()})),this.state={isOpen:!1}}componentDidUpdate(prevProps,prevState){prevState.isOpen!==this.state.isOpen&&(this.state.isOpen?this._addEventListeners():this._removeEventListeners())}componentWillUnmount(){this._removeEventListeners()}get blacklistedNodes(){const classNames=this.props.classNameClickBlacklist.join(", ");return Array.from(document.querySelectorAll(classNames))}get node(){return this.nodeRef.current}_addEventListeners(){this.node.addEventListener(this._eventNamespace,this._interceptClickProxyEvent),this.blacklistedNodes.forEach((node=>node.addEventListener(this._eventNamespace,this._interceptClickProxyEvent))),document.addEventListener(this._eventNamespace,this.handleClick),document.addEventListener("click",this._dispatchClickProxyEvent),document.addEventListener("keydown",this.handleKeyDown)}_removeEventListeners(){this.node.removeEventListener(this._eventNamespace,this._interceptClickProxyEvent),this.blacklistedNodes.forEach((node=>node.removeEventListener(this._eventNamespace,this._interceptClickProxyEvent))),document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener(this._eventNamespace,this.handleClick),document.removeEventListener("click",this._dispatchClickProxyEvent)}render(){const additionalProps={open:this.open,isOpen:this.state.isOpen};return wp.element.createElement("div",{ref:this.nodeRef},wp.element.createElement(WrappedComponent,extends_default()({},this.props,additionalProps)))}}return defineProperty_default()(WithBlockCloser,"displayName",`WithBlockCloser( ${WrappedComponent.displayName||WrappedComponent.name||"Component "}`),defineProperty_default()(WithBlockCloser,"propTypes",{onClose:external_tribe_modules_propTypes_default.a.func,onOpen:external_tribe_modules_propTypes_default.a.func,classNameClickBlacklist:external_tribe_modules_propTypes_default.a.arrayOf(external_tribe_modules_propTypes_default.a.string).isRequired}),defineProperty_default()(WithBlockCloser,"defaultProps",{classNameClickBlacklist:[".edit-post-sidebar"],onClose:external_lodash_noop_default.a,onOpen:external_lodash_noop_default.a}),WithBlockCloser},with_selected=()=>WrappedComponent=>{class WithSelected extends external_React_.Component{componentDidMount(){const{isSelected:isSelected,onBlockFocus:onBlockFocus,onBlockBlur:onBlockBlur}=this.props;isSelected?onBlockFocus():onBlockBlur()}componentDidUpdate(prevProps){const{isSelected:isSelected,onBlockFocus:onBlockFocus,onBlockBlur:onBlockBlur}=this.props;prevProps.isSelected!==isSelected&&(isSelected?onBlockFocus():onBlockBlur())}render(){return wp.element.createElement(WrappedComponent,this.props)}}return defineProperty_default()(WithSelected,"defaultProps",{isSelected:!1,onBlockFocus:external_lodash_noop_default.a,onBlockBlur:external_lodash_noop_default.a}),defineProperty_default()(WithSelected,"propTypes",{onBlockFocus:external_tribe_modules_propTypes_default.a.func,onBlockBlur:external_tribe_modules_propTypes_default.a.func,isSelected:external_tribe_modules_propTypes_default.a.bool}),WithSelected.displayName=`WithIsSelected( ${WrappedComponent.displayName||WrappedComponent.name||"Component "}`,WithSelected},external_lodash_isArray_=__webpack_require__("e5yv"),external_lodash_isArray_default=__webpack_require__.n(external_lodash_isArray_),external_lodash_reduce_=__webpack_require__("EeaZ"),external_lodash_reduce_default=__webpack_require__.n(external_lodash_reduce_),external_lodash_map_=__webpack_require__("vz5h"),external_lodash_map_default=__webpack_require__.n(external_lodash_map_),external_wp_data_=__webpack_require__("1ZqX");__webpack_require__("/d2E");const{InnerBlocks:InnerBlocks}=wpEditor;class component_PluginBlockHooks extends external_React_.PureComponent{get registeredBlockNames(){const blockTypes=Object(external_wp_data_.select)("core/blocks").getBlockTypes();return external_lodash_map_default()(blockTypes,(block=>block.name))}get template(){const blockNames=this.registeredBlockNames;return this.props.plugins.reduce(((acc,plugin)=>{const pluginTemplate=this.props.pluginTemplates[plugin];if(pluginTemplate){const blockTemplates=this.filterPluginTemplates(blockNames,pluginTemplate);return[...acc,...blockTemplates]}return acc}),[])}filterPluginTemplates(blockNames,pluginTemplate){return external_lodash_reduce_default()(pluginTemplate,((acc,_ref)=>{let[name,attributes,nestedBlockTemplates]=_ref;if(external_lodash_includes_default()(blockNames,name)){const blockTemplate=external_lodash_isArray_default()(nestedBlockTemplates)?[name,attributes,this.filterPluginTemplates(blockNames,nestedBlockTemplates)]:[name,attributes];return[...acc,blockTemplate]}return acc}),[])}render(){return wp.element.createElement("div",{className:"tribe-common__plugin-block-hook"},wp.element.createElement(InnerBlocks,{allowedBlocks:this.props.allowedBlocks,layouts:this.props.layouts,template:this.template,templateInsertUpdatesSelection:this.props.templateInsertUpdatesSelection,templateLock:this.props.templateLock}))}}defineProperty_default()(component_PluginBlockHooks,"propTypes",{allowedBlocks:external_tribe_modules_propTypes_default.a.arrayOf(external_tribe_modules_propTypes_default.a.string),layouts:external_tribe_modules_propTypes_default.a.oneOfType([external_tribe_modules_propTypes_default.a.object,external_tribe_modules_propTypes_default.a.arrayOf(external_tribe_modules_propTypes_default.a.object)]),plugins:external_tribe_modules_propTypes_default.a.arrayOf(external_tribe_modules_propTypes_default.a.string).isRequired,pluginTemplates:external_tribe_modules_propTypes_default.a.objectOf(external_tribe_modules_propTypes_default.a.arrayOf(external_tribe_modules_propTypes_default.a.array)),templateInsertUpdatesSelection:external_tribe_modules_propTypes_default.a.bool.isRequired,templateLock:external_tribe_modules_propTypes_default.a.oneOf(["all","insert",!1])}),defineProperty_default()(component_PluginBlockHooks,"defaultProps",{templateInsertUpdatesSelection:!1});var container=Object(external_tribe_modules_redux_.compose)(with_store(),Object(external_tribe_modules_reactRedux_.connect)((state=>({plugins:selectors_namespaceObject.getPlugins(state)}))))(component_PluginBlockHooks);class component_PreventBlockClose extends external_React_.PureComponent{constructor(){super(...arguments),defineProperty_default()(this,"nodeRef",external_React_default.a.createRef())}componentDidMount(){this.node.addEventListener("tribe:click:proxy",intercept)}componentWillUnmount(){this.node.removeEventListener("tribe:click:proxy",intercept)}get node(){return this.nodeRef.current}render(){return wp.element.createElement("div",{ref:this.nodeRef},this.props.children)}}defineProperty_default()(component_PreventBlockClose,"propTypes",{children:external_tribe_modules_propTypes_default.a.node.isRequired});var external_lodash_find_=__webpack_require__("6OzC"),external_lodash_find_default=__webpack_require__.n(external_lodash_find_),external_lodash_partial_=__webpack_require__("fUNU"),external_lodash_partial_default=__webpack_require__.n(external_lodash_partial_),external_tribe_modules_classnames_=__webpack_require__("K2gz"),external_tribe_modules_classnames_default=__webpack_require__.n(external_tribe_modules_classnames_),external_wp_components_=__webpack_require__("tI+e"),react_scroll_to=__webpack_require__("4GEM");__webpack_require__("fd22");class component_Select extends external_React_.PureComponent{constructor(){super(...arguments),defineProperty_default()(this,"_onOptionClick",((onClose,value,e)=>{this.props.onOptionClick(value,e),onClose()})),defineProperty_default()(this,"renderOptions",(onClose=>this.props.options.map((option=>wp.element.createElement("button",{className:external_tribe_modules_classnames_default()("tribe-common-form-select__options__option",this.props.optionClassName),key:option.value,onClick:external_lodash_partial_default()(this._onOptionClick,onClose,option.value),role:"menuitem",type:"button",value:option.value},option.label))))),defineProperty_default()(this,"renderToggle",(_ref=>{let{onToggle:onToggle,isOpen:isOpen}=_ref;return wp.element.createElement("div",{className:"tribe-common-form-select__toggle"},wp.element.createElement("button",{type:"button","aria-expanded":isOpen,onClick:onToggle},wp.element.createElement("span",null,this.label),wp.element.createElement(external_wp_components_.Dashicon,{className:"btn--icon",icon:isOpen?"arrow-up":"arrow-down"})))})),defineProperty_default()(this,"renderContent",(_ref2=>{let{onClose:onClose}=_ref2;return wp.element.createElement(react_scroll_to.ScrollTo,null,(()=>wp.element.createElement(component_PreventBlockClose,null,wp.element.createElement(react_scroll_to.ScrollArea,{role:"menu",className:external_tribe_modules_classnames_default()("tribe-common-form-select__options")},this.renderOptions(onClose)))))}))}get selected(){return external_lodash_find_default()(this.props.options,(option=>option.value===this.props.value))}get label(){const selected=this.selected;return selected&&selected.label}render(){return wp.element.createElement(external_wp_components_.Dropdown,{className:external_tribe_modules_classnames_default()("tribe-common-form-select",this.props.className),position:"bottom center",contentClassName:"tribe-common-form-select__content",renderToggle:this.renderToggle,renderContent:this.renderContent})}}defineProperty_default()(component_Select,"propTypes",{options:external_tribe_modules_propTypes_default.a.shape({label:external_tribe_modules_propTypes_default.a.string,value:external_tribe_modules_propTypes_default.a.any}),onOptionClick:external_tribe_modules_propTypes_default.a.func.isRequired,optionClassName:external_tribe_modules_propTypes_default.a.string,isOpen:external_tribe_modules_propTypes_default.a.bool.isRequired,value:external_tribe_modules_propTypes_default.a.any,className:external_tribe_modules_propTypes_default.a.string}),defineProperty_default()(component_Select,"defaultProps",{onOptionClick:external_lodash_noop_default.a,isOpen:!0,optionClassName:""});var objectWithoutProperties=__webpack_require__("QILm"),objectWithoutProperties_default=__webpack_require__.n(objectWithoutProperties);__webpack_require__("kXRp");const _excluded=["children","className","isDisabled","onClick","type"];class element_Button extends external_React_.PureComponent{render(){const _this$props=this.props,{children:children,className:className,isDisabled:isDisabled,onClick:onClick,type:type}=_this$props,rest=objectWithoutProperties_default()(_this$props,_excluded);return wp.element.createElement("button",extends_default()({className:external_tribe_modules_classnames_default()("tribe-editor__button",className),disabled:isDisabled,type:type,onClick:onClick},rest),children)}}defineProperty_default()(element_Button,"defaultProps",{onClick:external_lodash_noop_default.a,type:"button"}),defineProperty_default()(element_Button,"propTypes",{className:external_tribe_modules_propTypes_default.a.oneOfType([external_tribe_modules_propTypes_default.a.string,external_tribe_modules_propTypes_default.a.arrayOf(external_tribe_modules_propTypes_default.a.string),external_tribe_modules_propTypes_default.a.object]),isDisabled:external_tribe_modules_propTypes_default.a.bool,children:external_tribe_modules_propTypes_default.a.node,onClick:external_tribe_modules_propTypes_default.a.func,type:external_tribe_modules_propTypes_default.a.string});var elements_button=element_Button,bezier_easing_src=__webpack_require__("0Tit");var get_hidden_height=el=>{const width=el.clientWidth,element=el;element.style.visibility="hidden",element.style.height="auto",element.style.maxHeight="none",element.style.position="fixed",element.style.width=`${width}px`;const tHeight=element.offsetHeight;return element.style.visibility="",element.style.height="",element.style.maxHeight="",element.style.width="",element.style.position="",element.style.zIndex="",tHeight};const ease=__webpack_require__.n(bezier_easing_src)()(.25,.1,.25,1),requestIds={},checkRequestIds=id=>(requestIds[id]||(requestIds[id]={up:null,down:null}),requestIds[id]),cancelAnimations=id=>{requestIds[id].up&&(window.cancelAnimationFrame(requestIds[id].up),requestIds[id].up=null),requestIds[id].down&&(window.cancelAnimationFrame(requestIds[id].down),requestIds[id].down=null)},down=function(elem,id){let time=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400,callback=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;const startHeight=elem.offsetHeight,endHeight=get_hidden_height(elem);let startTime=null;elem.style.maxHeight="0",checkRequestIds(id),cancelAnimations(id);const step=timestamp=>{startTime||(startTime=timestamp);const timeDiff=timestamp-startTime,height=ease(timeDiff/time)*(endHeight-startHeight)+startHeight;elem.style.maxHeight=`${height}px`,timeDiff2&&void 0!==arguments[2]?arguments[2]:400,callback=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;const startHeight=elem.offsetHeight;let startTime=null;elem.style.maxHeight=`${startHeight}px`,checkRequestIds(id),cancelAnimations(id);const step=timestamp=>{startTime||(startTime=timestamp);const timeDiff=timestamp-startTime,height=ease(timeDiff/time)*(0-startHeight)+startHeight;elem.style.maxHeight=`${height}px`,timeDiff{const _isActive=this.state.isActive?"true":"false";return template_objectSpread({"aria-controls":this.contentId,"aria-expanded":_isActive,"aria-selected":_isActive,id:this.headerId,role:"tab"},this.props.headerAttrs)})),defineProperty_default()(this,"getContentAttrs",(()=>template_objectSpread({"aria-hidden":this.state.isActive?"false":"true","aria-labelledby":this.headerId,id:this.contentId,role:"tabpanel"},this.props.contentAttrs))),defineProperty_default()(this,"onClose",((parent,e)=>()=>{parent.classList.remove("closing"),parent.classList.add("closed"),this.props.onClose&&this.props.onClose(e)})),defineProperty_default()(this,"onOpen",((parent,e)=>()=>{parent.classList.remove("opening"),parent.classList.add("open"),this.props.onOpen&&this.props.onOpen(e)})),defineProperty_default()(this,"onClick",(e=>{const{contentId:contentId,onClick:onClick}=this.props,parent=e.currentTarget.parentNode,content=e.currentTarget.nextElementSibling;this.state.isActive?parent.classList.add("closing"):parent.classList.add("opening"),this.state.isActive?up(content,contentId,200,this.onClose(parent,e)):down(content,contentId,200,this.onOpen(parent,e)),onClick&&onClick(e),this.setState((state=>({isActive:!state.isActive})))})),this.state={isActive:!1},this.headerId=`accordion-header-${this.props.accordionId}`,this.contentId=`accordion-content-${this.props.accordionId}`}render(){const{content:content,contentClassName:contentClassName,header:header,headerClassName:headerClassName}=this.props;return wp.element.createElement("article",{className:external_tribe_modules_classnames_default()("tribe-editor__accordion__row",{active:this.state.isActive})},wp.element.createElement(elements_button,extends_default()({className:external_tribe_modules_classnames_default()("tribe-editor__accordion__row-header",headerClassName),onClick:e=>this.onClick(e)},this.getHeaderAttrs()),header),wp.element.createElement("div",extends_default()({className:external_tribe_modules_classnames_default()("tribe-editor__accordion__row-content",contentClassName)},this.getContentAttrs()),content))}}defineProperty_default()(template_Row,"propTypes",{accordionId:external_tribe_modules_propTypes_default.a.string.isRequired,content:external_tribe_modules_propTypes_default.a.node,contentAttrs:external_tribe_modules_propTypes_default.a.object,contentClassName:external_tribe_modules_propTypes_default.a.string,header:external_tribe_modules_propTypes_default.a.node,headerAttrs:external_tribe_modules_propTypes_default.a.object,headerClassName:external_tribe_modules_propTypes_default.a.string,onClick:external_tribe_modules_propTypes_default.a.func,onClose:external_tribe_modules_propTypes_default.a.func,onOpen:external_tribe_modules_propTypes_default.a.func}),defineProperty_default()(template_Row,"defaultProps",{contentAttrs:{},headerAttrs:{}});var accordion_row=template_Row;__webpack_require__("MQF+");const Accordion=_ref=>{let{className:className,containerAttrs:containerAttrs,rows:rows}=_ref;return rows.length?wp.element.createElement("div",extends_default()({"aria-multiselectable":"true",className:external_tribe_modules_classnames_default()("tribe-editor__accordion",className),role:"tablist"},containerAttrs),rows.map(((row,index)=>wp.element.createElement(accordion_row,extends_default()({key:index},row))))):null};Accordion.defaultProps={containerAttrs:{},rows:[]},Accordion.propTypes={className:external_tribe_modules_propTypes_default.a.string,containerAttrs:external_tribe_modules_propTypes_default.a.object,rows:external_tribe_modules_propTypes_default.a.arrayOf(external_tribe_modules_propTypes_default.a.shape({accordionId:external_tribe_modules_propTypes_default.a.string.isRequired,content:external_tribe_modules_propTypes_default.a.node,contentClassName:external_tribe_modules_propTypes_default.a.string,header:external_tribe_modules_propTypes_default.a.node,headerClassName:external_tribe_modules_propTypes_default.a.string,onClick:external_tribe_modules_propTypes_default.a.func,onClose:external_tribe_modules_propTypes_default.a.func,onOpen:external_tribe_modules_propTypes_default.a.func}).isRequired).isRequired};var accordion=Accordion,_extends=Object.assign||function(target){for(var i=1;i{let{styles:styles={}}=_ref,props=function _objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_ref,["styles"]);return external_React_default.a.createElement("svg",_extends({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 29.99 39.98"},props),external_React_default.a.createElement("defs",null,external_React_default.a.createElement("clipPath",{id:"a",transform:"translate(-984 -154.02)"},external_React_default.a.createElement("path",{className:styles["cls-1"]||"cls-1",d:"M989 159.02h19.99V189H989z"})),external_React_default.a.createElement("clipPath",{id:"b",transform:"translate(-984 -154.02)"},external_React_default.a.createElement("path",{className:styles["cls-1"]||"cls-1",d:"M0 0h1281v1258H0z"})),external_React_default.a.createElement("clipPath",{id:"c",transform:"translate(-984 -154.02)"},external_React_default.a.createElement("path",{className:styles["cls-1"]||"cls-1",d:"M989 159h20v31h-20z"})),external_React_default.a.createElement("clipPath",{id:"d",transform:"translate(-984 -154.02)"},external_React_default.a.createElement("path",{d:"M1005.81 159a3.24 3.24 0 0 0-3.18 3.28v6.42a3 3 0 0 0-1.36-.32 3.1 3.1 0 0 1-4.54 0 3 3 0 0 0-1.36.32v-6.4a3.18 3.18 0 1 0-6.36 0v16.42a10 10 0 1 0 20 .1.65.65 0 0 0 0-.1V162.3a3.24 3.24 0 0 0-3.2-3.3zm-1.36 3.28a1.36 1.36 0 1 1 2.73 0v12.1a5.84 5.84 0 0 0-2.73-1.22zm-4.54 9.38a1.36 1.36 0 1 1 2.73 0v1.41h-2.74zm-4.54 0a1.36 1.36 0 1 1 2.73 0v1.41h-2.73zm3.63 15.5a8.32 8.32 0 0 1-8.17-8.44V162.3a1.36 1.36 0 1 1 2.73 0V174a6.53 6.53 0 0 0 .65 2.78 5 5 0 0 0 4.79 2.85h.33a5.59 5.59 0 0 0-1.24 3.75.91.91 0 1 0 1.82 0 3.54 3.54 0 0 1 3.63-3.75.94.94 0 0 0 0-1.88H999a3.42 3.42 0 0 1-2.55-.94 3.84 3.84 0 0 1-1-1.88h8.06a4.22 4.22 0 0 1 .91.12 3.29 3.29 0 0 1 2.64 2.69 5 5 0 0 1 .08.94 9.11 9.11 0 0 1 0 .94 8.3 8.3 0 0 1-8.13 7.51z",clipRule:"evenodd",fill:"none"})),external_React_default.a.createElement("clipPath",{id:"e",transform:"translate(-984 -154.02)"},external_React_default.a.createElement("path",{className:styles["cls-1"]||"cls-1",d:"M989 159h20v30h-20z"}))),external_React_default.a.createElement("g",{"data-name":"Layer 2"},external_React_default.a.createElement("g",{"data-name":"Layer 1"},external_React_default.a.createElement("path",{d:"M8.4 6.07l-2 .83-.25 19.88s1.71 3.33 1.88 3.54 3.83 2.79 3.83 2.79l4.75.46 5.42-3.21 1.5-3.83.58-6V7.77l-2.12-2-2.33 1.42-.13 9.38-2.21-1.17-2.37 1-1.8-1.42-2.71.67V6.86z",fill:"#fff"}),external_React_default.a.createElement("g",{clipPath:"url(#a)"},external_React_default.a.createElement("g",{clipPath:"url(#b)"},external_React_default.a.createElement("g",{clipPath:"url(#c)"},external_React_default.a.createElement("g",{clipPath:"url(#d)"},external_React_default.a.createElement("g",{clipPath:"url(#e)"},external_React_default.a.createElement("path",{fill:"#020202",d:"M0 0h29.99v39.98H0z"})))))))))},close_extends=Object.assign||function(target){for(var i=1;i{let{styles:styles={}}=_ref,props=function close_objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_ref,["styles"]);return external_React_default.a.createElement("svg",close_extends({width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg"},props),external_React_default.a.createElement("path",{d:"M14.36 15.78L8 9.41l-6.36 6.37-1.42-1.42L6.59 8 .22 1.64 1.64.22 8 6.59 14.36.23l1.41 1.41L9.41 8l6.36 6.36z",fill:"#191E23"}))},alert_extends=Object.assign||function(target){for(var i=1;i{let{styles:styles={}}=_ref,props=function alert_objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_ref,["styles"]);return external_React_default.a.createElement("svg",alert_extends({width:"19",height:"17",xmlns:"http://www.w3.org/2000/svg"},props),external_React_default.a.createElement("path",{d:"M10.632 12.074H8.388l-.391-6.33c0-.5.675-.905 1.507-.905.832 0 1.507.405 1.507.904l-.379 6.33zm-.092 2.96c-.247.206-.593.31-1.037.31-.449 0-.8-.104-1.054-.31-.254-.206-.38-.492-.38-.86 0-.371.121-.66.367-.866.244-.206.6-.308 1.067-.308.462 0 .813.103 1.05.308.239.206.358.496.358.866 0 .368-.123.654-.37.86zm8.42.614L10.344.618C10.117.313 9.81 0 9.504 0c-.307 0-.613.312-.84.619L.032 15.675c-.082.316-.06.831.72 1.222h17.494c.805-.402.804-.936.714-1.25z",fill:"#D0021B",fillRule:"evenodd"}))},clipboard_extends=Object.assign||function(target){for(var i=1;i{let{styles:styles={}}=_ref,props=function clipboard_objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_ref,["styles"]);return external_React_default.a.createElement("svg",clipboard_extends({width:"16",height:"20",xmlns:"http://www.w3.org/2000/svg"},props),external_React_default.a.createElement("path",{d:"M12 16H4v-2h8v2zm0-6H4v2h8v-2zm2-9h-2v2h2v15H2V3h2V1H2a2 2 0 0 0-2 2v15a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm-4 2V2a2 2 0 1 0-4 0v1a2 2 0 0 0-2 2v1h8V5a2 2 0 0 0-2-2z"}))},cog_extends=Object.assign||function(target){for(var i=1;i{let{styles:styles={}}=_ref,props=function cog_objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_ref,["styles"]);return external_React_default.a.createElement("svg",cog_extends({width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg"},props),external_React_default.a.createElement("path",{d:"M17.867 10c0-.568-.059-1.122-.17-1.656L19.5 6.732l-1.967-3.464-2.283.786a7.813 7.813 0 0 0-2.813-1.657L11.967 0H8.033l-.472 2.396c-1.043.348-2 .913-2.81 1.657l-2.284-.785L.5 6.732l1.804 1.612a8.054 8.054 0 0 0 0 3.312L.5 13.268l1.967 3.464 2.283-.786a7.813 7.813 0 0 0 2.813 1.657L8.033 20h3.934l.472-2.396a7.83 7.83 0 0 0 2.81-1.657l2.284.786 1.967-3.464-1.804-1.613c.112-.535.171-1.09.171-1.657V10zM10 14c-2.173 0-3.934-1.79-3.934-4S7.826 6 10 6c2.173 0 3.934 1.79 3.934 4s-1.76 4-3.934 4z",fill:"#191E23"}))},info_extends=Object.assign||function(target){for(var i=1;i{let{styles:styles={}}=_ref,props=function info_objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_ref,["styles"]);return external_React_default.a.createElement("svg",info_extends({width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg"},props),external_React_default.a.createElement("path",{d:"M11 7H9V5h2v2zm0 2H9v6h2V9zm-1-7c-4.41 0-8 3.59-8 8s3.59 8 8 8 8-3.59 8-8-3.59-8-8-8zm0-2c5.523 0 10 4.477 10 10s-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0z"}))},pencil_extends=Object.assign||function(target){for(var i=1;i{let{styles:styles={}}=_ref,props=function pencil_objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_ref,["styles"]);return external_React_default.a.createElement("svg",pencil_extends({width:"18",height:"18",xmlns:"http://www.w3.org/2000/svg"},props),external_React_default.a.createElement("path",{d:"M17.254 2.483L15.282.51C14.942.17 14.5 0 14.023 0c-.476 0-.918.17-1.258.51L1.543 11.767c-.034.034-.034.034-.034.068 0 0 0 .034-.034.034-.034.034-.034.034-.034.068v.034c0 .034 0 .034-.034.034L.012 17.14a.57.57 0 0 0 .136.51c.102.102.238.17.374.17.034 0 .102 0 .136-.034l5.136-1.428c.034 0 .034 0 .034-.034h.034c.034 0 .034-.034.068-.034 0 0 .034 0 .034-.034.034-.034.034-.034.068-.034L17.254 4.999c.68-.68.68-1.836 0-2.516zM2.461 16.188l-.884-.885.578-2.176 2.448 2.448-2.142.613zm3.197-1.089l-1.123-1.122-.748-.748-1.122-1.122 9.522-9.522 1.122 1.122.748.748 1.123 1.122L5.658 15.1zM16.506 4.251l-.612.612L12.9 1.87l.612-.612a.692.692 0 0 1 .51-.204c.204 0 .374.068.51.204l1.973 1.973c.272.306.272.748 0 1.02z",fill:"#8D949B"}))},tag_extends=Object.assign||function(target){for(var i=1;i{let{styles:styles={}}=_ref,props=function tag_objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_ref,["styles"]);return external_React_default.a.createElement("svg",tag_extends({width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg"},props),external_React_default.a.createElement("path",{d:"M18 .007h-7.087c-.53 0-1.04.21-1.414.586L.592 9.5a2 2 0 0 0 0 2.827l7.086 7.086a2 2 0 0 0 2.827 0l8.906-8.906c.376-.374.587-.883.587-1.413V2.007a2 2 0 0 0-2-2H18zM15.007 7a2 2 0 1 1-.09-3.999A2 2 0 0 1 15.007 7z",fill:"#23282D"}))},user_extends=Object.assign||function(target){for(var i=1;i{let{styles:styles={}}=_ref,props=function user_objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_ref,["styles"]);return external_React_default.a.createElement("svg",user_extends({width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg"},props),external_React_default.a.createElement("path",{d:"M8 0c2.21 0 4 1.79 4 4s-1.79 4-4 4-4-1.79-4-4 1.79-4 4-4zm0 16s8 0 8-2c0-2.4-3.9-5-8-5s-8 2.6-8 5c0 2 8 2 8 2z"}))},block_icon=(__webpack_require__("m/Jx"),()=>wp.element.createElement("div",{className:"tribe-editor__icons__container tribe-editor__icons--tec"},wp.element.createElement(icons_tec,null)));__webpack_require__("y3rM");const Counter=_ref=>{let{className:className,count:count,label:label}=_ref;return wp.element.createElement("div",{className:external_tribe_modules_classnames_default()("tribe-editor__counter",className)},wp.element.createElement("span",{className:"tribe-editor__counter__count"},count),wp.element.createElement("span",{className:"tribe-editor__counter__label"},label))};Counter.propTypes={className:external_tribe_modules_propTypes_default.a.string,count:external_tribe_modules_propTypes_default.a.number,label:external_tribe_modules_propTypes_default.a.string};var counter=Counter;const element_excluded=["alt","className","src"],Image=_ref=>{let{alt:alt,className:className,src:src}=_ref,rest=objectWithoutProperties_default()(_ref,element_excluded);return wp.element.createElement("img",extends_default()({src:src,alt:alt,className:external_tribe_modules_classnames_default()("tribe-editor__image",className)},rest))};Image.propTypes={alt:external_tribe_modules_propTypes_default.a.string.isRequired,className:external_tribe_modules_propTypes_default.a.string,src:external_tribe_modules_propTypes_default.a.string.isRequired};var elements_image=Image,external_wp_i18n_=__webpack_require__("l3Sj");__webpack_require__("pnAs");const{MediaUpload:MediaUpload}=wpEditor,ImageUpload=_ref2=>{let{buttonDisabled:buttonDisabled,buttonLabel:buttonLabel,className:className,description:description,image:image,onRemove:onRemove,onSelect:onSelect,removeButtonDisabled:removeButtonDisabled,title:title}=_ref2;const hasImageClass={"tribe-editor__image-upload--has-image":image.id};return wp.element.createElement("div",{className:external_tribe_modules_classnames_default()("tribe-editor__image-upload",hasImageClass,className)},title&&wp.element.createElement("h3",{className:"tribe-editor__image-upload__title"},title),wp.element.createElement("div",{className:"tribe-editor__image-upload__content"},description&&wp.element.createElement("p",{className:"tribe-editor__image-upload__description"},description),image.id?((disabled,image,onRemove)=>wp.element.createElement("div",{className:"tribe-editor__image-upload__image-wrapper"},wp.element.createElement(elements_image,{src:image.src,alt:image.alt,className:"tribe-editor__image-upload__image"}),wp.element.createElement(elements_button,{className:"tribe-editor__image-upload__remove-button",onClick:onRemove,disabled:disabled},wp.element.createElement(icons_close,null),wp.element.createElement("span",{className:"tribe-editor__image-upload__remove-button-text"},Object(external_wp_i18n_.__)("remove","tribe-common")))))(removeButtonDisabled,image,onRemove):wp.element.createElement(MediaUpload,{onSelect:onSelect,type:"image",render:(disabled=buttonDisabled,label=buttonLabel,_ref=>{let{open:open}=_ref;return wp.element.createElement(elements_button,{onClick:open,className:["tribe-editor__button--sm","tribe-editor__image-upload__upload-button"],disabled:disabled},label)}),value:image.id})));var disabled,label};ImageUpload.propTypes={buttonDisabled:external_tribe_modules_propTypes_default.a.bool,buttonLabel:external_tribe_modules_propTypes_default.a.string,className:external_tribe_modules_propTypes_default.a.string,description:external_tribe_modules_propTypes_default.a.string,image:external_tribe_modules_propTypes_default.a.shape({alt:external_tribe_modules_propTypes_default.a.string.isRequired,id:external_tribe_modules_propTypes_default.a.number.isRequired,src:external_tribe_modules_propTypes_default.a.string.isRequired}).isRequired,onRemove:external_tribe_modules_propTypes_default.a.func.isRequired,onSelect:external_tribe_modules_propTypes_default.a.func.isRequired,removeButtonDisabled:external_tribe_modules_propTypes_default.a.bool,title:external_tribe_modules_propTypes_default.a.string},ImageUpload.defaultProps={onRemove:external_lodash_noop_default.a,onSelect:external_lodash_noop_default.a};var image_upload=ImageUpload;const LabeledItem=_ref=>{let{className:className,forId:forId,isLabel:isLabel,label:label,children:children}=_ref;const renderLabel=isLabel?wp.element.createElement("label",{className:"tribe-editor__labeled-item__label",htmlFor:forId},label):wp.element.createElement("span",{className:"tribe-editor__labeled-item__label"},label);return wp.element.createElement("div",{className:external_tribe_modules_classnames_default()("tribe-editor__labeled-item",className)},renderLabel,children)};LabeledItem.defaultProps={isLabel:!1},LabeledItem.propTypes={className:external_tribe_modules_propTypes_default.a.string,isLabel:external_tribe_modules_propTypes_default.a.bool.isRequired,forId:external_tribe_modules_propTypes_default.a.string,label:external_tribe_modules_propTypes_default.a.node,children:external_tribe_modules_propTypes_default.a.node.isRequired};var labeled_item=LabeledItem;const link_element_excluded=["children","className","href","target"];function element_ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}const Link=_ref=>{let{children:children,className:className,href:href,target:target}=_ref,props=objectWithoutProperties_default()(_ref,link_element_excluded);return wp.element.createElement("a",extends_default()({className:external_tribe_modules_classnames_default()("tribe-editor__link",className),href:href,target:target},(()=>{const elemProps=function element_objectSpread(target){for(var i=1;i{let{className:className,label:label,linkDisabled:linkDisabled,linkHref:linkHref,linkTarget:linkTarget,linkText:linkText}=_ref;return wp.element.createElement(labeled_item,{className:external_tribe_modules_classnames_default()("tribe-editor__label-with-link",className),label:label},(()=>{const linkClass="tribe-editor__label-with-link__link";return linkDisabled?wp.element.createElement(elements_button,{className:external_tribe_modules_classnames_default()(linkClass,`${linkClass}--disabled`),disabled:!0},linkText):wp.element.createElement(elements_link,{className:linkClass,href:linkHref,target:linkTarget},linkText)})())};LabelWithLink.propTypes={className:external_tribe_modules_propTypes_default.a.string,label:external_tribe_modules_propTypes_default.a.node,linkDisabled:external_tribe_modules_propTypes_default.a.bool,linkHref:external_tribe_modules_propTypes_default.a.string.isRequired,linkTarget:external_tribe_modules_propTypes_default.a.string,linkText:external_tribe_modules_propTypes_default.a.string};var label_with_link=LabelWithLink;const modal_button_element_excluded=["className","disabled","isOpen","label","onClick","onClose","onOpen","modalClassName","modalContent","modalOverlayClassName","modalTitle"];class element_ModalButton extends external_React_.PureComponent{constructor(props){super(props),defineProperty_default()(this,"onClick",(e=>{this.props.onClick&&this.props.onClick(e),this.onOpen(),void 0===this.props.isOpen&&this.setState({isOpen:!0})})),defineProperty_default()(this,"onRequestClose",(e=>{this.onClose(e),void 0===this.props.isOpen&&this.setState({isOpen:!1})})),defineProperty_default()(this,"onOpen",(()=>this.props.onOpen&&this.props.onOpen())),defineProperty_default()(this,"onClose",(e=>this.props.onClose&&this.props.onClose(e))),defineProperty_default()(this,"preventClick",(e=>e.stopPropagation())),defineProperty_default()(this,"preventBlur",(e=>e.stopPropagation())),defineProperty_default()(this,"renderModal",(()=>{const _this$props=this.props,{className:className,disabled:disabled,isOpen:isOpen,label:label,onClick:onClick,onClose:onClose,onOpen:onOpen,modalClassName:modalClassName,modalContent:modalContent,modalOverlayClassName:modalOverlayClassName,modalTitle:modalTitle}=_this$props,restProps=objectWithoutProperties_default()(_this$props,modal_button_element_excluded);return(void 0!==isOpen?isOpen:this.state.isOpen)&&wp.element.createElement(external_wp_components_.Modal,extends_default()({className:external_tribe_modules_classnames_default()("tribe-editor__modal-button__modal-content",modalClassName),onRequestClose:this.onRequestClose,overlayClassName:external_tribe_modules_classnames_default()("tribe-editor__modal-button__modal-overlay",modalOverlayClassName),title:modalTitle},restProps),modalContent)})),this.state={isOpen:!1}}render(){const{className:className,disabled:disabled,label:label}=this.props;return wp.element.createElement("div",{className:external_tribe_modules_classnames_default()("tribe-editor__modal-button",className)},wp.element.createElement(elements_button,{className:"tribe-editor__modal-button__button",onClick:this.onClick,disabled:disabled},label),this.renderModal())}}defineProperty_default()(element_ModalButton,"propTypes",{className:external_tribe_modules_propTypes_default.a.string,disabled:external_tribe_modules_propTypes_default.a.bool,isOpen:external_tribe_modules_propTypes_default.a.bool,label:external_tribe_modules_propTypes_default.a.string,modalClassName:external_tribe_modules_propTypes_default.a.string,modalContent:external_tribe_modules_propTypes_default.a.node,modalOverlayClassName:external_tribe_modules_propTypes_default.a.string,modalTitle:external_tribe_modules_propTypes_default.a.string,onClick:external_tribe_modules_propTypes_default.a.func,onClose:external_tribe_modules_propTypes_default.a.func,onOpen:external_tribe_modules_propTypes_default.a.func});var modal_button=element_ModalButton;__webpack_require__("Ck6X");const label_with_modal_element_excluded=["className","isOpen","label","modalButtonDisabled","modalButtonLabel","modalClassName","modalContent","modalOverlayClassName","modalTitle","onClick","onClose","onOpen"],LabelWithModal=_ref=>{let{className:className,isOpen:isOpen,label:label,modalButtonDisabled:modalButtonDisabled,modalButtonLabel:modalButtonLabel,modalClassName:modalClassName,modalContent:modalContent,modalOverlayClassName:modalOverlayClassName,modalTitle:modalTitle,onClick:onClick,onClose:onClose,onOpen:onOpen}=_ref,restProps=objectWithoutProperties_default()(_ref,label_with_modal_element_excluded);return wp.element.createElement(labeled_item,{className:external_tribe_modules_classnames_default()("tribe-editor__label-with-modal",className),label:label},wp.element.createElement(modal_button,extends_default()({className:"tribe-editor__label-with-modal__modal-button",disabled:modalButtonDisabled,isOpen:isOpen,label:modalButtonLabel,modalClassName:modalClassName,modalContent:modalContent,modalOverlayClassName:modalOverlayClassName,modalTitle:modalTitle,onClick:onClick,onClose:onClose,onOpen:onOpen},restProps)))};LabelWithModal.defaultProps={onClick:external_lodash_noop_default.a,onClose:external_lodash_noop_default.a,onOpen:external_lodash_noop_default.a},LabelWithModal.propTypes={className:external_tribe_modules_propTypes_default.a.string,isOpen:external_tribe_modules_propTypes_default.a.bool,label:external_tribe_modules_propTypes_default.a.node,modalButtonDisabled:external_tribe_modules_propTypes_default.a.bool,modalButtonLabel:external_tribe_modules_propTypes_default.a.string,modalClassName:external_tribe_modules_propTypes_default.a.string,modalContent:external_tribe_modules_propTypes_default.a.node,modalOverlayClassName:external_tribe_modules_propTypes_default.a.string,modalTitle:external_tribe_modules_propTypes_default.a.string,onClick:external_tribe_modules_propTypes_default.a.func,onClose:external_tribe_modules_propTypes_default.a.func,onOpen:external_tribe_modules_propTypes_default.a.func};var label_with_modal=LabelWithModal,external_moment_=__webpack_require__("wy2R"),external_moment_default=__webpack_require__.n(external_moment_);__webpack_require__("dPZZ");const input_element_excluded=["className","type"],Input=_ref=>{let{className:className,type:type}=_ref,rest=objectWithoutProperties_default()(_ref,input_element_excluded);return wp.element.createElement("input",extends_default()({className:external_tribe_modules_classnames_default()("tribe-editor__input",className),type:type},rest))};Input.propTypes={className:external_tribe_modules_propTypes_default.a.string,type:external_tribe_modules_propTypes_default.a.string.isRequired};var elements_input=Input,external_lodash_identity_=__webpack_require__("df/k"),external_lodash_identity_default=__webpack_require__.n(external_lodash_identity_),dist=__webpack_require__("6EsV");function date_ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}function date_objectSpread(target){for(var i=1;itimezone_namespaceObject.getItems().map((group=>group.options||[])).reduce(((prev,current)=>[...prev,...current]),[]),timezonesAsSelectData=()=>timezones().map((tzone=>({value:tzone.key,label:tzone.text}))),toNaturalLanguage=function(){let params=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const options=date_objectSpread({date:null,format:{month:"MMMM",day:"D",year:"YYYY",time:moment_namespaceObject.toFormat(FORMATS.WP.time)},separator:""},params),parsed={text:"",moment:options.date&&moment_namespaceObject.toMoment(options.date),detail:{day:"",month:"",year:"",time:""},isValid:!1};if(parsed.isValid=Boolean(parsed.moment&&parsed.moment.isValid()),parsed.isValid){parsed.detail={month:`${parsed.moment.format(options.format.month)}`,day:`${parsed.moment.format(options.format.day)}`,year:`${parsed.moment.format(options.format.year)}`,time:`${parsed.moment.format(options.format.time)}`};const{detail:detail}=parsed;parsed.text=`${detail.month} ${detail.day} ${detail.year} ${options.separator} ${detail.time}`}return parsed},rangeToNaturalLanguage=function(){let start=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",end=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",separators=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const separatorOptions=date_objectSpread({time:Object(external_wp_i18n_.__)("at","tribe-common"),date:" - "},separators),from=toNaturalLanguage({date:start,separator:separatorOptions.time}),to=toNaturalLanguage({date:end,separator:separatorOptions.time}),parts=[from.text];return from.isValid&&to.isValid&&(moment_namespaceObject.isSameDay(from.moment,to.moment)?parts.push(to.detail.time):moment_namespaceObject.isSameMonth(from.moment,to.moment)?parts.push(`${to.detail.month} ${to.detail.day} ${separatorOptions.time} ${to.detail.time}`):parts.push(to.text)),parts.filter(external_lodash_identity_default.a).join(separatorOptions.date)},labelToDate=label=>{const[parsed]=dist.parse(label),dates={start:null,end:null};if(parsed){const{start:start,end:end}=parsed;dates.start=start?moment_namespaceObject.toDateTime(moment_namespaceObject.toMoment(start.date())):null,dates.end=end?moment_namespaceObject.toDateTime(moment_namespaceObject.toMoment(end.date())):null}return dates},hasClass=function(node){let classNames=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];for(let i=0;inode===window.top.document,searchParent=function(){let node=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},callback=arguments.length>1&&void 0!==arguments[1]?arguments[1]:external_lodash_noop_default.a,found=!1,testNode=node;do{testNode&&(found=callback(testNode));const nextNode=testNode&&testNode.parentNode?testNode.parentNode:null;testNode=isRootNode(nextNode)?null:nextNode}while(!found&&null!==testNode);return found},sendValue=callback=>event=>{const{target:target={}}=event,{value:value=""}=target;callback(value)};var external_lodash_isString_=__webpack_require__("5vqK"),external_lodash_isString_default=__webpack_require__.n(external_lodash_isString_),zero_fill=__webpack_require__("hrvI"),zero_fill_default=__webpack_require__.n(zero_fill);const MINUTE_IN_SECONDS=60,HALF_HOUR_IN_SECONDS=30*MINUTE_IN_SECONDS,HOUR_IN_SECONDS=60*MINUTE_IN_SECONDS,DAY_IN_SECONDS=24*HOUR_IN_SECONDS,START_OF_DAY="00:00",END_OF_DAY="23:59",TIME_FORMAT_HH_MM_SS_SSS="hh:mm:ss.sss",TIME_FORMAT_HH_MM_SS="hh:mm:ss",TIME_FORMAT_HH_MM="hh:mm",TIME_FORMAT_MM_SS_SSS="mm:ss.sss",TIME_FORMAT_MM_SS="mm:ss",SECOND_IN_MS=1e3,MINUTE_IN_MS=MINUTE_IN_SECONDS*SECOND_IN_MS,HOUR_IN_MS=HOUR_IN_SECONDS*SECOND_IN_MS,formatTime=(time,format)=>{let showMs,showSc,showHr;switch(format){case TIME_FORMAT_HH_MM_SS_SSS:showMs=!0,showSc=!0,showHr=!0;break;case TIME_FORMAT_HH_MM_SS:showMs=!!time.miliseconds,showSc=!0,showHr=!0;break;case TIME_FORMAT_HH_MM:showMs=!!time.miliseconds,showSc=showMs||!!time.seconds,showHr=!0;break;case TIME_FORMAT_MM_SS_SSS:showMs=!0,showSc=!0,showHr=!!time.hours;break;case TIME_FORMAT_MM_SS:showMs=!!time.miliseconds,showSc=!0,showHr=!!time.hours;break;default:throw new Error("Argument `format` provided to `formatTime` is not a recognized format.")}const hh=zero_fill_default()(2,time.hours),mm=zero_fill_default()(2,time.minutes),ss=zero_fill_default()(2,time.seconds),sss=zero_fill_default()(3,time.miliseconds);let formattedTime=time.negative?"-":"";return formattedTime+=showHr?`${hh}:`:"",formattedTime+=mm,formattedTime+=showSc?`:${ss}`:"",formattedTime+=showMs?`.${sss}`:"",formattedTime},toMilliseconds=function(time){let re,format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:TIME_FORMAT_MM_SS;if([TIME_FORMAT_HH_MM_SS_SSS,TIME_FORMAT_HH_MM_SS,TIME_FORMAT_MM_SS_SSS,TIME_FORMAT_MM_SS].includes(format))re=/^(-)?(?:(\d\d+):)?(\d\d):(\d\d)(\.\d+)?$/;else{if(format!==TIME_FORMAT_HH_MM)throw new Error("Argument `format` provided to `toMilliseconds` is not a recognized format.");re=/^(-)?(\d\d):(\d\d)(?::(\d\d)(?:(\.\d+))?)?$/}const result=re.exec(time);if(!result)throw new Error("Argument `time` provided to `toMilliseconds` is not a recognized format.");const negative="-"===result[1],hours=0|result[2],minutes=0|result[3],seconds=0|result[4],miliseconds=Math.floor(1e3*result[5]|0);if(minutes>=60||seconds>=60)throw new Error("Argument `time` provided to `toMilliseconds` contains minutes or seconds greater than 59.");return(negative?-1:1)*(hours*HOUR_IN_MS+minutes*MINUTE_IN_MS+seconds*SECOND_IN_MS+miliseconds)},fromMilliseconds=function(ms){let format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:TIME_FORMAT_MM_SS;if("number"!=typeof ms||Number.isNaN(ms))throw new Error("Argument `ms` provided to `fromMilliseconds` is not a number or is NaN.");const absMs=Math.abs(ms),negative=ms<0,hours=Math.floor(absMs/HOUR_IN_MS),minutes=Math.floor(absMs%HOUR_IN_MS/MINUTE_IN_MS),seconds=Math.floor(absMs%MINUTE_IN_MS/SECOND_IN_MS),miliseconds=Math.floor(absMs%SECOND_IN_MS);return formatTime({negative:negative,hours:hours,minutes:minutes,seconds:seconds,miliseconds:miliseconds},format)},toSeconds=function(time){const ms=toMilliseconds(time,arguments.length>1&&void 0!==arguments[1]?arguments[1]:TIME_FORMAT_MM_SS);return Math.floor(ms/SECOND_IN_MS)},fromSeconds=function(s){let format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:TIME_FORMAT_MM_SS;if("number"!=typeof s||Number.isNaN(s))throw new Error("Argument `s` provided to `fromSeconds` is not a number or is NaN.");return fromMilliseconds(s*SECOND_IN_MS,format)},roundTime=function(time){let format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:TIME_FORMAT_MM_SS;const seconds=toSeconds(time,format);return fromSeconds(seconds-seconds%(30*MINUTE_IN_SECONDS),format)};var external_lodash_escapeRegExp_=__webpack_require__("3MpR"),external_lodash_escapeRegExp_default=__webpack_require__.n(external_lodash_escapeRegExp_);const isTruthy=value=>-1!==["true","yes","1"].indexOf(value),isFalsy=value=>-1!==["false","no","0",""].indexOf(value),replaceWithObject=function(){let str=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",pairs=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const substrs=Object.keys(pairs).map(external_lodash_escapeRegExp_default.a);return str.split(RegExp(`(${substrs.join("|")})`)).map((part=>external_lodash_isUndefined_default()(pairs[part])?part:pairs[part])).join("")},getWords=function(){let text=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return external_lodash_isString_default()(text)?text.split(/\s/).filter(external_lodash_identity_default.a):[]},wordsAsList=function(words){let startSeparator=arguments.length>1&&void 0!==arguments[1]?arguments[1]:", ",endSeparator=arguments.length>2&&void 0!==arguments[2]?arguments[2]:" & ";if(words.length<=1)return words.join("");return`${words.slice(0,words.length-1).join(startSeparator)}${endSeparator}${words[words.length-1]}`},normalize=function(){let text=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return external_lodash_isString_default()(text)?text.toLowerCase().replace(/[^a-z\s]/g,"").trim().replace(/\s+/g,"-"):""},toBlockName=function(){let text=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return external_lodash_isString_default()(text)?text.replace(/[^a-zA-Z0-9-]/g,""):""},TIME_FORMAT="h:mm a",toFormat=format=>replaceWithObject(format,{d:"DD",D:"ddd",j:"D",l:"dddd",N:"E",S:"o",w:"e",z:"DDD",W:"W",F:"MMMM",m:"MM",M:"MMM",n:"M",t:"",L:"",o:"YYYY",Y:"YYYY",y:"YY",a:"a",A:"A",B:"",g:"h",G:"H",h:"hh",H:"HH",i:"mm",s:"ss",u:"SSS",e:"zz",I:"",O:"",P:"",T:"",Z:"",c:"",r:"",U:"X"}),moment_roundTime=date=>{if(!Object(external_moment_.isMoment)(date))return date;let minutes=date.minute();return minutes>=30&&(minutes%=30),date.clone().subtract(minutes,"m").seconds(0)},toMoment=function(date){let format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:FORMATS.DATABASE.datetime,parseFormat=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return Object(external_moment_.isMoment)(date)||date instanceof Date?external_moment_default()(date):external_lodash_isString_default()(date)?external_moment_default()(date,parseFormat?toFormat(format):format):external_moment_default()()},parseFormats=function(date){let formats=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[FORMATS.DATABASE.datetime,FORMATS.WP.datetime];for(let i=0;i{if(!(date instanceof Date))throw new Error("Make sure your date is an instance of Date");const year=date.getFullYear(),month=date.getMonth(),day=date.getDate();return external_moment_default()().year(year).month(month).date(day).startOf("day")},toMomentFromDateTime=(date,timeString)=>{const[hours,minutes]=timeString.split(":");return external_moment_default()(date).hours(hours).minutes(minutes)},replaceDate=(original,replaced)=>{if(!Object(external_moment_.isMoment)(original)||!Object(external_moment_.isMoment)(replaced))throw new Error("Make sure your values are instances of moment");return original.year(replaced.year()).month(replaced.month()).date(replaced.date())},setTimeInSeconds=function(original){let seconds=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!Object(external_moment_.isMoment)(original))throw new Error("Make sure your values are instances of moment");return seconds<0?original:original.startOf("day").seconds(seconds||original.seconds())},totalSeconds=date=>date&&Object(external_moment_.isMoment)(date)?date.diff(external_moment_default()(date).startOf("day"),"seconds"):0,toDateTime=function(date){let format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:FORMATS.DATABASE.datetime;return date.format(toFormat(format))},toDate=function(date){let format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:FORMATS.WP.date;return date.format(toFormat(format))},toDateNoYear=function(date){let format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:FORMATS.WP.dateNoYear;return date.format(toFormat(format))},toTime=function(date){let format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:FORMATS.WP.time;return date.format(toFormat(format))},toTime24Hr=function(date){let format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:FORMATS.WP.time24Hr;return date.format(toFormat(format))},toDatabaseDate=function(date){let format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:FORMATS.DATABASE.date;return date.format(toFormat(format))},toDatabaseTime=function(date){let format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:FORMATS.DATABASE.time;return date.format(toFormat(format))},toDatePicker=function(){let date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:external_moment_default()(),format=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"YYYY-MM-DDTHH:mm:ss";return date.format(format)},isSameDay=(start,end)=>!(!start||!end)&&external_moment_default()(start).isSame(end,"day"),isSameMonth=(start,end)=>!(!start||!end)&&external_moment_default()(start).isSame(end,"month"),isSameYear=(start,end)=>toMoment(start).isSame(toMoment(end),"year"),resetTimes=start=>{const testMoment=start.clone().add(HOUR_IN_SECONDS,"seconds");isSameDay(start,testMoment)||start.subtract(HOUR_IN_SECONDS,"seconds");const end=start.clone().add(HOUR_IN_SECONDS,"seconds");return{start:start,end:end}},adjustStart=(start,end)=>end.isBefore(start)?resetTimes(start):{start:start,end:end};var external_lodash_split_=__webpack_require__("vuOd"),external_lodash_split_default=__webpack_require__.n(external_lodash_split_),external_lodash_trim_=__webpack_require__("XNrZ"),external_lodash_trim_default=__webpack_require__.n(external_lodash_trim_);const parseChars=function(){let input=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return external_lodash_split_default()(input," ").map((part=>part.replace(/[^0-9.,-]/g,""))).join(" ").trim()},extractParts=chars=>external_lodash_split_default()(chars.replace(/,/g,"."),"-").map((item=>{const result=/([0-9]+(.[0-9]+)?)/g.exec(item.trim());return null===result?"":result[1]})).filter((item=>!external_lodash_isEmpty_default()(item))).map((item=>{const decimals=0!isNaN(item))).slice(0,2),parser=input=>{const range=external_lodash_trim_default()(input);if(external_lodash_isEmpty_default()(range))return range;const chars=parseChars(input);if(external_lodash_isEmpty_default()(chars))return chars;const[a,b]=extractParts(chars),[numA,numB]=[parseFloat(a),parseFloat(b)];return numB&&numB!==numA?numA>=numB?`${external_lodash_trim_default()(b)} - ${external_lodash_trim_default()(a)}`:`${external_lodash_trim_default()(a)} - ${external_lodash_trim_default()(b)}`:0===numA?"":external_lodash_trim_default()(a)},isFree=input=>{const parts=external_lodash_split_default()(input,"-"),test=parts.map((item=>parseFloat(item))).filter((item=>!isNaN(item))).filter((item=>0===item));return parts.length===test.length};var external_lodash_flatten_=__webpack_require__("3sCE"),external_lodash_flatten_default=__webpack_require__.n(external_lodash_flatten_);let timezoneOpts;const getTimezoneOpts=()=>{if(timezoneOpts)return timezoneOpts;const $timezoneOpts=jQuery(timezoneHtml()),groups=[];let number=0;return $timezoneOpts.each(((index,item)=>{const $group=jQuery(item);if(!$group.is("optgroup"))return;number++;const label=$group.attr("label"),group={key:label,text:label,options:[]};$group.find("option").each(((optIndex,optionEl)=>{number++;const $option=jQuery(optionEl);group.options.push({key:$option.val(),text:$option.text(),index:number})})),groups.push(group)})),timezoneOpts=groups,groups},timezone_getItems=searchFor=>{const groups=getTimezoneOpts();if(searchFor){const opts=external_lodash_flatten_default()(external_lodash_map_default()(groups,"options"));return external_lodash_find_default()(opts,searchFor)}return groups},percentage=function(){let value=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,total=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(0===total)return 0;const result=Number.parseFloat(value/total*100);if(isNaN(result))throw new RangeError(`Make sure ${value} and ${total} are valid numbers, operation result in NaN value`);return result};function api_ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}function api_objectSpread(target){for(var i=1;i{let hasRules=!1;try{hasRules=window.tribe[plugins_namespaceObject.constants.EVENTS_PRO_PLUGIN].data.blocks.recurring.selectors.hasRules(state)}catch(e){}return hasRules},noTicketsOnRecurring=()=>document.body.classList.contains("tec-no-tickets-on-recurring"),createChainableValidator=validator=>{const createChainedValidator=(isRequired,props,propName,componentName)=>{const propValue=props[propName];return null==propValue?isRequired?null===propValue?new Error(`The prop \`${propName}\` is marked as required in \`${componentName}\`, but its value is \`null\`.`):new Error(`The prop \`${propName}\` is marked as required in \`${componentName}\`, but its value is \`undefined\`.`):null:validator(props,propName,componentName)},chainedValidator=createChainedValidator.bind(null,!1);return chainedValidator.isRequired=createChainedValidator.bind(null,!0),chainedValidator},timeRegex=/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/;var proptypes={timeFormat:createChainableValidator(((props,propName,componentName)=>{const propValue=props[propName];if("string"!=typeof propValue){return new Error(`Invalid prop \`${propName}\` of type \`${typeof propValue}\` supplied to \`${componentName}\`, expected \`string\`.`)}return timeRegex.test(propValue)?null:new Error(`Invalid prop \`${propName}\` format supplied to \`${componentName}\`, expected \`hh:mm\`.`)})),nullType:createChainableValidator(((props,propName,componentName)=>{if(null!==props[propName])return new Error(`Invalid prop: \`${propName}\` supplied to \`${componentName}\`, expect null.`)}))};__webpack_require__("P8YZ");const TimePicker=_ref=>{let{allDay:allDay,current:current,disabled:disabled,end:end,onBlur:onBlur,onChange:onChange,onClick:onClick,onFocus:onFocus,showAllDay:showAllDay,start:start,step:step,timeFormat:timeFormat}=_ref;const renderItem=(item,onClose)=>{const itemClasses={"tribe-editor__timepicker__item":!0,"tribe-editor__timepicker__item--current":item.isCurrent&&!allDay};return wp.element.createElement(elements_button,{key:`time-${item.value}`,className:external_tribe_modules_classnames_default()(itemClasses),value:item.value,onClick:()=>onClick(item.value,onClose)},item.text)};return wp.element.createElement("div",{key:"tribe-element-timepicker",className:"tribe-editor__timepicker"},wp.element.createElement(external_wp_components_.Dropdown,{className:"tribe-editor__timepicker__toggle",contentClassName:"tribe-editor__timepicker__content",position:"bottom center",renderToggle:_ref2=>{let{onToggle:onToggle,isOpen:isOpen}=_ref2;return wp.element.createElement(external_React_.Fragment,null,(onAllDayClick=onToggle,allDay?wp.element.createElement(elements_button,{className:"tribe-editor__timepicker__all-day-btn",disabled:disabled,onClick:onAllDayClick},Object(external_wp_i18n_.__)("All Day","tribe-common")):wp.element.createElement(elements_input,{className:"tribe-editor__timepicker__input",disabled:disabled,onBlur:onBlur,onChange:onChange,onFocus:onFocus,type:"text",value:current})),wp.element.createElement(elements_button,{"aria-expanded":isOpen,className:"tribe-editor__timepicker__toggle-btn",disabled:disabled,onClick:onToggle},wp.element.createElement(external_wp_components_.Dashicon,{className:"tribe-editor__timepicker__toggle-btn-icon",icon:isOpen?"arrow-up":"arrow-down"})));var onAllDayClick},renderContent:_ref3=>{let{onClose:onClose}=_ref3;return wp.element.createElement(react_scroll_to.ScrollTo,null,(()=>wp.element.createElement(component_PreventBlockClose,null,wp.element.createElement(react_scroll_to.ScrollArea,{key:"tribe-element-timepicker-items",className:"tribe-editor__timepicker__items"},showAllDay&&renderItem({text:Object(external_wp_i18n_.__)("All Day","tribe-common"),value:"all-day"},onClose),(()=>{const items=[],startSeconds=time_namespaceObject.toSeconds(start,time_namespaceObject.TIME_FORMAT_HH_MM),endSeconds=time_namespaceObject.toSeconds(end,time_namespaceObject.TIME_FORMAT_HH_MM),currentMoment=external_moment_default()(current,moment_namespaceObject.TIME_FORMAT);for(let time=startSeconds;time<=endSeconds;time+=step){let isCurrent=!1;if(currentMoment.isValid()){const currentTime=moment_namespaceObject.toTime24Hr(currentMoment);isCurrent=time===time_namespaceObject.toSeconds(currentTime,time_namespaceObject.TIME_FORMAT_HH_MM)}items.push({value:time,text:(seconds=time,moment_namespaceObject.setTimeInSeconds(external_moment_default()(),seconds).format(moment_namespaceObject.toFormat(timeFormat))),isCurrent:isCurrent})}var seconds;return items})().map((item=>renderItem(item,onClose)))))))}}))};TimePicker.defaultProps={allDay:!1,onBlur:external_lodash_noop_default.a,onChange:external_lodash_noop_default.a,onClick:external_lodash_noop_default.a,onFocus:external_lodash_noop_default.a,step:time_namespaceObject.HALF_HOUR_IN_SECONDS,timeFormat:date_namespaceObject.FORMATS.WP.time},TimePicker.propTypes={allDay:external_tribe_modules_propTypes_default.a.bool,current:external_tribe_modules_propTypes_default.a.string,disabled:external_tribe_modules_propTypes_default.a.bool,end:proptypes.timeFormat.isRequired,onBlur:external_tribe_modules_propTypes_default.a.func,onChange:external_tribe_modules_propTypes_default.a.func,onClick:external_tribe_modules_propTypes_default.a.func,onFocus:external_tribe_modules_propTypes_default.a.func,showAllDay:external_tribe_modules_propTypes_default.a.bool,start:proptypes.timeFormat.isRequired,step:external_tribe_modules_propTypes_default.a.number,timeFormat:external_tribe_modules_propTypes_default.a.string};var time_picker=TimePicker;class element_Tooltip extends external_React_.PureComponent{render(){const{disabled:disabled,label:label,labelClassName:labelClassName,position:position,text:text}=this.props;return wp.element.createElement(external_wp_components_.Tooltip,{text:text,position:position},wp.element.createElement(elements_button,{"aria-label":text,className:external_tribe_modules_classnames_default()("tribe-editor__tooltip-label",labelClassName),disabled:disabled},label))}}defineProperty_default()(element_Tooltip,"defaultProps",{position:"top right",text:""}),defineProperty_default()(element_Tooltip,"propTypes",{disabled:external_tribe_modules_propTypes_default.a.bool,label:external_tribe_modules_propTypes_default.a.node,labelClassName:external_tribe_modules_propTypes_default.a.string,position:external_tribe_modules_propTypes_default.a.oneOf(["top left","top center","top right","bottom left","bottom center","bottom right"]),text:external_tribe_modules_propTypes_default.a.string});var tooltip=element_Tooltip,DayPickerInput=(__webpack_require__("UNSI"),__webpack_require__("lxV4")),DayPickerInput_default=__webpack_require__.n(DayPickerInput);__webpack_require__("NbNY");var day_picker_input=props=>wp.element.createElement(DayPickerInput_default.a,extends_default()({classNames:{container:external_tribe_modules_classnames_default()("tribe-editor__day-picker-input","DayPickerInput"),overlayWrapper:external_tribe_modules_classnames_default()("tribe-editor__day-picker-input__overlay-wrapper","DayPickerInput-OverlayWrapper"),overlay:external_tribe_modules_classnames_default()("tribe-editor__day-picker-input__overlay","DayPickerInput-Overlay")}},props)),react_select_esm=__webpack_require__("y2Vs"),Creatable=__webpack_require__("6DYz"),Creatable_default=__webpack_require__.n(Creatable);__webpack_require__("oNup");const creatable_select_element_excluded=["className"],DropdownIndicator=props=>react_select_esm.a.DropdownIndicator&&wp.element.createElement(react_select_esm.a.DropdownIndicator,props,wp.element.createElement(external_wp_components_.Dashicon,{className:"tribe-editor__creatable-select__dropdown-indicator",icon:"arrow-down"})),IndicatorSeparator=()=>null,CreatableSelect=_ref=>{let{className:className}=_ref,rest=objectWithoutProperties_default()(_ref,creatable_select_element_excluded);return wp.element.createElement(Creatable_default.a,extends_default()({className:external_tribe_modules_classnames_default()("tribe-editor__creatable-select",className),classNamePrefix:"tribe-editor__creatable-select",components:{DropdownIndicator:DropdownIndicator,IndicatorSeparator:IndicatorSeparator}},rest))};CreatableSelect.propTypes={className:external_tribe_modules_propTypes_default.a.string};var creatable_select=CreatableSelect;__webpack_require__("SSeO");const Placeholder=_ref=>{let{children:children,className:className}=_ref;return wp.element.createElement("div",{className:external_tribe_modules_classnames_default()("tribe-editor__placeholder",className)},children)};Placeholder.propTypes={children:external_tribe_modules_propTypes_default.a.node.isRequired};var placeholder=Placeholder;__webpack_require__("tOPs");const Heading=_ref=>{let{level:level,children:children,className:className}=_ref;const HeadingLevel=`h${level}`,headingClassName=external_tribe_modules_classnames_default()("tribe-editor__heading",`tribe-editor__heading--h${level}`,className);return wp.element.createElement(HeadingLevel,{className:headingClassName},children)};Heading.propTypes={children:external_tribe_modules_propTypes_default.a.node.isRequired,level:external_tribe_modules_propTypes_default.a.oneOf([1,2,3,4,5,6]).isRequired};var heading=Heading;__webpack_require__("dq2P");const SIZES={medium:"medium",small:"small"},Paragraph=_ref=>{let{children:children,size:size,className:className}=_ref;return wp.element.createElement("p",{className:external_tribe_modules_classnames_default()("tribe-editor__paragraph",`tribe-editor__paragraph--${size}`,className)},children)};Paragraph.propTypes={children:external_tribe_modules_propTypes_default.a.node.isRequired,size:external_tribe_modules_propTypes_default.a.oneOf(Object.keys(SIZES))},Paragraph.defaultProps={size:SIZES.medium};var paragraph=Paragraph;const url_input_element_excluded=["checked","className","onChange"],UrlInput=_ref=>{let{checked:checked,className:className,onChange:onChange}=_ref,rest=objectWithoutProperties_default()(_ref,url_input_element_excluded);return wp.element.createElement(elements_input,extends_default()({type:"url",className:external_tribe_modules_classnames_default()("tribe-editor__input--url",className),onChange:onChange},rest))};UrlInput.propTypes={className:external_tribe_modules_propTypes_default.a.string,onChange:external_tribe_modules_propTypes_default.a.func};var url_input=UrlInput;const number_input_element_excluded=["className","max","min","onChange","step"],NumberInput=_ref=>{let{className:className,max:max,min:min,onChange:onChange,step:step}=_ref,rest=objectWithoutProperties_default()(_ref,number_input_element_excluded);return wp.element.createElement(elements_input,extends_default()({className:external_tribe_modules_classnames_default()("tribe-editor__input--number",className),max:max,min:min,onChange:onChange,step:step,type:"number"},rest))};NumberInput.propTypes={className:external_tribe_modules_propTypes_default.a.string,max:external_tribe_modules_propTypes_default.a.number,min:external_tribe_modules_propTypes_default.a.number,onChange:external_tribe_modules_propTypes_default.a.func,step:external_tribe_modules_propTypes_default.a.number};var number_input=NumberInput;const Radio=_ref=>{let{checked:checked,className:className,disabled:disabled,id:id,label:label,onChange:onChange,name:name,value:value}=_ref;return wp.element.createElement("div",{className:external_tribe_modules_classnames_default()("tribe-editor__radio",className)},wp.element.createElement(radio_input,{checked:checked,className:"tribe-editor__radio__input",disabled:disabled,id:id,name:name,onChange:onChange,value:value}),wp.element.createElement("label",{className:"tribe-editor__radio_label",htmlFor:id},label))};Radio.defaultProps={checked:!1,onChange:external_lodash_noop_default.a},Radio.propTypes={checked:external_tribe_modules_propTypes_default.a.bool.isRequired,className:external_tribe_modules_propTypes_default.a.string,disabled:external_tribe_modules_propTypes_default.a.bool,id:external_tribe_modules_propTypes_default.a.string,label:external_tribe_modules_propTypes_default.a.string,name:external_tribe_modules_propTypes_default.a.string,onChange:external_tribe_modules_propTypes_default.a.func,value:external_tribe_modules_propTypes_default.a.string};var elements_radio=Radio;const radio_input_element_excluded=["checked","className","onChange"],RadioInput=_ref=>{let{checked:checked,className:className,onChange:onChange}=_ref,rest=objectWithoutProperties_default()(_ref,radio_input_element_excluded);return wp.element.createElement(elements_input,extends_default()({checked:checked,className:external_tribe_modules_classnames_default()("tribe-editor__input--radio",className),onChange:onChange,type:"radio"},rest))};RadioInput.propTypes={checked:external_tribe_modules_propTypes_default.a.bool,className:external_tribe_modules_propTypes_default.a.string,onChange:external_tribe_modules_propTypes_default.a.func};var radio_input=RadioInput;__webpack_require__("Bbvq");const checkbox_input_element_excluded=["checked","className","onChange"],CheckboxInput=_ref=>{let{checked:checked,className:className,onChange:onChange}=_ref,rest=objectWithoutProperties_default()(_ref,checkbox_input_element_excluded);return wp.element.createElement(elements_input,extends_default()({checked:checked,className:external_tribe_modules_classnames_default()("tribe-editor__input--checkbox",className),onChange:onChange,type:"checkbox"},rest))};CheckboxInput.propTypes={checked:external_tribe_modules_propTypes_default.a.bool,className:external_tribe_modules_propTypes_default.a.string,onChange:external_tribe_modules_propTypes_default.a.func};var checkbox_input=CheckboxInput;const Checkbox=_ref=>{let{checked:checked,className:className,disabled:disabled,id:id,label:label,onChange:onChange,name:name,value:value}=_ref;return wp.element.createElement("div",{className:external_tribe_modules_classnames_default()("tribe-editor__checkbox",className)},wp.element.createElement(checkbox_input,{checked:checked,className:"tribe-editor__checkbox__input",disabled:disabled,id:id,name:name,onChange:onChange,value:value}),wp.element.createElement("label",{className:"tribe-editor__checkbox__label",htmlFor:id},label))};Checkbox.defaultProps={checked:!1,onChange:external_lodash_noop_default.a},Checkbox.propTypes={checked:external_tribe_modules_propTypes_default.a.bool.isRequired,className:external_tribe_modules_propTypes_default.a.string,disabled:external_tribe_modules_propTypes_default.a.bool,id:external_tribe_modules_propTypes_default.a.string,label:external_tribe_modules_propTypes_default.a.node,name:external_tribe_modules_propTypes_default.a.string,onChange:external_tribe_modules_propTypes_default.a.func,value:external_tribe_modules_propTypes_default.a.string};var elements_checkbox=Checkbox;__webpack_require__("q143");const select_element_excluded=["className"],element_DropdownIndicator=props=>react_select_esm.a.DropdownIndicator&&wp.element.createElement(react_select_esm.a.DropdownIndicator,props,wp.element.createElement(external_wp_components_.Dashicon,{className:"tribe-editor__select__dropdown-indicator",icon:"arrow-down"})),element_IndicatorSeparator=()=>null,element_Select=_ref=>{let{className:className}=_ref,rest=objectWithoutProperties_default()(_ref,select_element_excluded);return wp.element.createElement(react_select_esm.b,extends_default()({className:external_tribe_modules_classnames_default()("tribe-editor__select",className),classNamePrefix:"tribe-editor__select",components:{DropdownIndicator:element_DropdownIndicator,IndicatorSeparator:element_IndicatorSeparator}},rest))};element_Select.propTypes={className:external_tribe_modules_propTypes_default.a.string};var elements_select=element_Select;const textarea_element_excluded=["className"],Textarea=_ref=>{let{className:className}=_ref,rest=objectWithoutProperties_default()(_ref,textarea_element_excluded);return wp.element.createElement("textarea",extends_default()({className:external_tribe_modules_classnames_default()("tribe-editor__textarea",className)},rest))};Textarea.propTypes={className:external_tribe_modules_propTypes_default.a.string};var elements_textarea=Textarea;__webpack_require__("f5Ej")},cDcd:function(module,exports){module.exports=React},dPZZ:function(module,exports,__webpack_require__){},"df/k":function(module,exports){module.exports=lodash.identity},dq2P:function(module,exports,__webpack_require__){},e5yv:function(module,exports){module.exports=lodash.isArray},edCo:function(module,exports){module.exports=regeneratorRuntime},f5Ej:function(module,exports,__webpack_require__){},fUNU:function(module,exports){module.exports=lodash.partial},faye:function(module,exports){module.exports=ReactDOM},fd22:function(module,exports,__webpack_require__){},h74D:function(module,exports){module.exports=tribe.modules.reactRedux},j3nO:function(module,exports){module.exports=lodash.inRange},kXRp:function(module,exports,__webpack_require__){},l3Sj:function(module,exports){module.exports=wp.i18n},lCf4:function(module,exports){module.exports=lodash.get},"m/Jx":function(module,exports,__webpack_require__){},"oNd/":function(module,exports){module.exports=lodash.curry},oNup:function(module,exports,__webpack_require__){},pC8B:function(module,exports,__webpack_require__){},peom:function(module,exports){module.exports=lodash.isUndefined},pnAs:function(module,exports,__webpack_require__){},q143:function(module,exports,__webpack_require__){},rKB8:function(module,exports){module.exports=tribe.modules.redux},rf6O:function(module,exports){module.exports=tribe.modules.propTypes},"tI+e":function(module,exports){module.exports=wp.components},tOPs:function(module,exports,__webpack_require__){},vuOd:function(module,exports){module.exports=lodash.split},vz5h:function(module,exports){module.exports=lodash.map},wy2R:function(module,exports){module.exports=moment},y3rM:function(module,exports,__webpack_require__){}}); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/app/modules.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/app/modules.min.js new file mode 100644 index 000000000..88b0e91e0 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/app/modules.min.js @@ -0,0 +1,37 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +var tribe="object"==typeof tribe?tribe:{};tribe.modules=function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{enumerable:!0,get:getter})},__webpack_require__.r=function(exports){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},__webpack_require__.t=function(value,mode){if(1&mode&&(value=__webpack_require__(value)),8&mode)return value;if(4&mode&&"object"==typeof value&&value&&value.__esModule)return value;var ns=Object.create(null);if(__webpack_require__.r(ns),Object.defineProperty(ns,"default",{enumerable:!0,value:value}),2&mode&&"string"!=typeof value)for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key]}.bind(null,key));return ns},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module.default}:function getModuleExports(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=14)}([function(module,exports,__webpack_require__){module.exports=__webpack_require__(11)()},function(module,exports,__webpack_require__){"use strict";module.exports=__webpack_require__(9)},function(module,exports,__webpack_require__){"use strict";module.exports=function(condition,format,a,b,c,d,e,f){if(!condition){var error;if(void 0===format)error=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var args=[a,b,c,d,e,f],argIndex=0;(error=new Error(format.replace(/%s/g,(function(){return args[argIndex++]})))).name="Invariant Violation"}throw error.framesToPop=1,error}}},function(module,exports,__webpack_require__){"use strict";module.exports=__webpack_require__(13)},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__; +/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/!function(){"use strict";var hasOwn={}.hasOwnProperty;function classNames(){for(var classes=[],i=0;i=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(this.props,[]);return function cleanInputProps(inputProps){INPUT_PROPS_BLACKLIST.forEach((function(field){return delete inputProps[field]}))}(inputProps),inputProps.className=this.props.inputClassName,inputProps.id=this.state.inputId,inputProps.style=inputStyle,_react2.default.createElement("div",{className:this.props.className,style:wrapperStyle},this.renderStyles(),_react2.default.createElement("input",_extends({},inputProps,{ref:this.inputRef})),_react2.default.createElement("div",{ref:this.sizerRef,style:sizerStyle},sizerValue),this.props.placeholder?_react2.default.createElement("div",{ref:this.placeHolderSizerRef,style:sizerStyle},this.props.placeholder):null)}}]),AutosizeInput}(_react.Component);AutosizeInput.propTypes={className:_propTypes2.default.string,defaultValue:_propTypes2.default.any,extraWidth:_propTypes2.default.oneOfType([_propTypes2.default.number,_propTypes2.default.string]),id:_propTypes2.default.string,injectStyles:_propTypes2.default.bool,inputClassName:_propTypes2.default.string,inputRef:_propTypes2.default.func,inputStyle:_propTypes2.default.object,minWidth:_propTypes2.default.oneOfType([_propTypes2.default.number,_propTypes2.default.string]),onAutosize:_propTypes2.default.func,onChange:_propTypes2.default.func,placeholder:_propTypes2.default.string,placeholderIsMinWidth:_propTypes2.default.bool,style:_propTypes2.default.object,value:_propTypes2.default.any},AutosizeInput.defaultProps={minWidth:1,injectStyles:!0},exports.default=AutosizeInput},function(module,exports,__webpack_require__){var e;"undefined"!=typeof self&&self,module.exports=(e=__webpack_require__(1),function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=8)}([function(t,n){t.exports=e},function(e,t,n){"use strict";function o(e){return new Date(e.getTime())}function r(e){return e instanceof Date&&!isNaN(e.valueOf())}function a(e,t){var n=o(e);return n.setMonth(e.getMonth()+t),n}function s(e,t){return!(!e||!t)&&e.getDate()===t.getDate()&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}function i(e,t){return!(!e||!t)&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}function u(e,t){return o(e).setHours(0,0,0,0)o(t).setHours(0,0,0,0)}function c(e){var t=new Date;return t.setHours(0,0,0,0),u(e,t)}function p(e){var t=new Date((new Date).getTime()+864e5);return t.setHours(0,0,0,0),e>=t}function f(e,t,n){var r=o(e);return r.setHours(0,0,0,0),l(r,t)&&u(r,n)||l(r,n)&&u(r,t)}function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{from:null,to:null},n=t.from,o=t.to;return n?n&&o&&s(n,o)&&s(e,n)?(n=null,o=null):o&&u(e,n)?n=e:o&&s(e,o)?(n=e,o=e):u(o=e,n)&&(o=n,n=e):n=e,{from:n,to:o}}function d(e,t){var n=t.from,o=t.to;return n&&s(e,n)||o&&s(e,o)||n&&o&&f(e,n,o)}function y(e){var t=o(e);return t.setHours(0,0,0),t.setDate(t.getDate()+4-(t.getDay()||7)),Math.ceil(((t-new Date(t.getFullYear(),0,1))/864e5+1)/7)}Object.defineProperty(t,"__esModule",{value:!0}),t.clone=o,t.isDate=r,t.addMonths=a,t.isSameDay=s,t.isSameMonth=i,t.isDayBefore=u,t.isDayAfter=l,t.isPastDay=c,t.isFutureDay=p,t.isDayBetween=f,t.addDayToRange=h,t.isDayInRange=d,t.getWeekNumber=y,t.default={addDayToRange:h,addMonths:a,clone:o,getWeekNumber:y,isDate:r,isDayAfter:l,isDayBefore:u,isDayBetween:f,isDayInRange:d,isFutureDay:p,isPastDay:c,isSameDay:s,isSameMonth:i}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LEFT=37,t.UP=38,t.RIGHT=39,t.DOWN=40,t.ENTER=13,t.SPACE=32,t.ESC=27,t.TAB=9},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={container:"DayPicker",wrapper:"DayPicker-wrapper",interactionDisabled:"DayPicker--interactionDisabled",months:"DayPicker-Months",month:"DayPicker-Month",navBar:"DayPicker-NavBar",navButtonPrev:"DayPicker-NavButton DayPicker-NavButton--prev",navButtonNext:"DayPicker-NavButton DayPicker-NavButton--next",navButtonInteractionDisabled:"DayPicker-NavButton--interactionDisabled",caption:"DayPicker-Caption",weekdays:"DayPicker-Weekdays",weekdaysRow:"DayPicker-WeekdaysRow",weekday:"DayPicker-Weekday",body:"DayPicker-Body",week:"DayPicker-Week",weekNumber:"DayPicker-WeekNumber",day:"DayPicker-Day",footer:"DayPicker-Footer",todayButton:"DayPicker-TodayButton",today:"today",selected:"selected",disabled:"disabled",outside:"outside"}},function(e,t,n){"use strict";function o(e){e.preventDefault(),e.stopPropagation()}function r(e){return new Date(e.getFullYear(),e.getMonth(),1,12)}function a(e){var t=r(e);return t.setMonth(t.getMonth()+1),t.setDate(t.getDate()-1),t.getDate()}function s(e){var t=y({},e.modifiers);return e.selectedDays&&(t[e.classNames.selected]=e.selectedDays),e.disabledDays&&(t[e.classNames.disabled]=e.disabledDays),t}function i(e){var t=e.firstDayOfWeek,n=e.locale,o=void 0===n?"en":n,r=e.localeUtils,a=void 0===r?{}:r;return isNaN(t)?a.getFirstDayOfWeek?a.getFirstDayOfWeek(o):0:t}function u(e){return!!(e&&e.from&&e.to)}function l(e,t){return t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())}function c(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,m.getFirstDayOfWeek)(),n=arguments[2],o=a(e),r=[],s=[],i=[],u=1;u<=o;u+=1)r.push(new Date(e.getFullYear(),e.getMonth(),u,12));r.forEach((function(e){s.length>0&&e.getDay()===t&&(i.push(s),s=[]),s.push(e),r.indexOf(e)===r.length-1&&i.push(s)}));for(var l=i[0],c=7-l.length;c>0;c-=1){var p=(0,v.clone)(l[0]);p.setDate(l[0].getDate()-1),l.unshift(p)}for(var f=i[i.length-1],h=f.length;h<7;h+=1){var d=(0,v.clone)(f[f.length-1]);d.setDate(f[f.length-1].getDate()+1),f.push(d)}if(n&&i.length<6)for(var y=void 0,k=i.length;k<6;k+=1){for(var D=(y=i[i.length-1])[y.length-1],b=[],g=0;g<7;g+=1){var w=(0,v.clone)(D);w.setDate(D.getDate()+g+1),b.push(w)}i.push(b)}return i}function p(e){var t=(0,v.clone)(e);return t.setDate(1),t.setHours(12,0,0,0),t}function f(e,t){var n=void 0;n=t===D.default?t.day+"--"+t.outside:""+t.outside;var a="."+t.day.replace(/ /g,".")+":not(."+n.replace(/ /g,".")+")";return e.querySelectorAll(a)}function h(e){return Array.prototype.slice.call(e,0)}function d(e,t){return Object.prototype.hasOwnProperty.call(e,t)}Object.defineProperty(t,"__esModule",{value:!0});var y=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).reduce((function(n,r){var a=t[r];return o(e,a)&&n.push(r),n}),[])}Object.defineProperty(t,"__esModule",{value:!0}),t.dayMatchesModifier=o,t.getModifiersForDay=r;var a=n(1),s=n(4);t.default={dayMatchesModifier:o,getModifiersForDay:r}},function(e,t,n){"use strict";function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function r(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.ModifiersUtils=t.LocaleUtils=t.DateUtils=t.DayPicker=void 0;var l=Object.assign||function(e){for(var t=1;t1&&e.fromMonth){var o=w.startOfMonth(e.fromMonth),r=w.getMonthsDiff(o,n);n=P.addMonths(o,Math.floor(r/e.numberOfMonths)*e.numberOfMonths)}else e.toMonth&&e.numberOfMonths>1&&w.getMonthsDiff(n,e.toMonth)<=0&&(n=P.addMonths(w.startOfMonth(e.toMonth),1-this.props.numberOfMonths));return n}},{key:"getNextNavigableMonth",value:function(){return P.addMonths(this.state.currentMonth,this.props.numberOfMonths)}},{key:"getPreviousNavigableMonth",value:function(){return P.addMonths(this.state.currentMonth,-1)}},{key:"allowPreviousMonth",value:function(){var e=P.addMonths(this.state.currentMonth,-1);return this.allowMonth(e)}},{key:"allowNextMonth",value:function(){var e=P.addMonths(this.state.currentMonth,this.props.numberOfMonths);return this.allowMonth(e)}},{key:"allowMonth",value:function(e){var t=this.props,n=t.fromMonth,o=t.toMonth;return!(!t.canChangeMonth||n&&w.getMonthsDiff(n,e)<0||o&&w.getMonthsDiff(o,e)>0)}},{key:"allowYearChange",value:function(){return this.props.canChangeMonth}},{key:"showMonth",value:function(e,t){var n=this;this.allowMonth(e)&&this.setState({currentMonth:w.startOfMonth(e)},(function(){t&&t(),n.props.onMonthChange&&n.props.onMonthChange(n.state.currentMonth)}))}},{key:"showNextYear",value:function(){if(this.allowYearChange()){var e=P.addMonths(this.state.currentMonth,12);this.showMonth(e)}}},{key:"showPreviousYear",value:function(){if(this.allowYearChange()){var e=P.addMonths(this.state.currentMonth,-12);this.showMonth(e)}}},{key:"focus",value:function(){this.wrapper.focus()}},{key:"focusFirstDayOfMonth",value:function(){w.getDayNodes(this.dayPicker,this.props.classNames)[0].focus()}},{key:"focusLastDayOfMonth",value:function(){var e=w.getDayNodes(this.dayPicker,this.props.classNames);e[e.length-1].focus()}},{key:"focusPreviousDay",value:function(e){var t=this,n=w.getDayNodes(this.dayPicker,this.props.classNames),o=w.nodeListToArray(n).indexOf(e);-1!==o&&(0===o?this.showPreviousMonth((function(){return t.focusLastDayOfMonth()})):n[o-1].focus())}},{key:"focusNextDay",value:function(e){var t=this,n=w.getDayNodes(this.dayPicker,this.props.classNames),o=w.nodeListToArray(n).indexOf(e);-1!==o&&(o===n.length-1?this.showNextMonth((function(){return t.focusFirstDayOfMonth()})):n[o+1].focus())}},{key:"focusNextWeek",value:function(e){var t=this,n=w.getDayNodes(this.dayPicker,this.props.classNames),o=w.nodeListToArray(n).indexOf(e);o>n.length-8?this.showNextMonth((function(){var r=7-(n.length-o);w.getDayNodes(t.dayPicker,t.props.classNames)[r].focus()})):n[o+7].focus()}},{key:"focusPreviousWeek",value:function(e){var t=this,n=w.getDayNodes(this.dayPicker,this.props.classNames),o=w.nodeListToArray(n).indexOf(e);o<=6?this.showPreviousMonth((function(){var e=w.getDayNodes(t.dayPicker,t.props.classNames);e[e.length-7+o].focus()})):n[o-7].focus()}},{key:"handleOutsideDayClick",value:function(e){var t=this.state.currentMonth,n=this.props.numberOfMonths,o=w.getMonthsDiff(t,e);o>0&&o>=n?this.showNextMonth():o<0&&this.showPreviousMonth()}},{key:"renderNavbar",value:function(){var e=this.props,t=e.labels,n=e.locale,o=e.localeUtils,r=e.canChangeMonth,s=e.navbarElement,i=a(e,["labels","locale","localeUtils","canChangeMonth","navbarElement"]);if(!r)return null;var u={month:this.state.currentMonth,classNames:this.props.classNames,className:this.props.classNames.navBar,nextMonth:this.getNextNavigableMonth(),previousMonth:this.getPreviousNavigableMonth(),showPreviousButton:this.allowPreviousMonth(),showNextButton:this.allowNextMonth(),onNextClick:this.showNextMonth,onPreviousClick:this.showPreviousMonth,dir:i.dir,labels:t,locale:n,localeUtils:o};return f.default.isValidElement(s)?f.default.cloneElement(s,u):f.default.createElement(s,u)}},{key:"renderMonths",value:function(){for(var e=[],t=w.getFirstDayOfWeekFromProps(this.props),n=0;n-1,ariaSelected:r.indexOf(o.props.classNames.selected)>-1,onClick:o.props.onDayClick,onFocus:o.props.onDayFocus,onKeyDown:o.props.onDayKeyDown,onMouseEnter:o.props.onDayMouseEnter,onMouseLeave:o.props.onDayMouseLeave,onMouseDown:o.props.onDayMouseDown,onMouseUp:o.props.onDayMouseUp,onTouchEnd:o.props.onDayTouchEnd,onTouchStart:o.props.onDayTouchStart},o.props.renderDay(e,u))},s(o,n)}return i(t,e),u(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.classNames,o=t.month,r=t.months,a=t.fixedWeeks,s=t.captionElement,i=t.weekdayElement,u=t.locale,l=t.localeUtils,p=t.weekdaysLong,h=t.weekdaysShort,d=t.firstDayOfWeek,v=t.onCaptionClick,m=t.showWeekNumbers,k=t.showWeekDays,b=t.onWeekClick,w={date:o,classNames:n,months:r,localeUtils:l,locale:u,onClick:v?function(e){return v(o,e)}:void 0},M=c.default.isValidElement(s)?c.default.cloneElement(s,w):c.default.createElement(s,w),P=D.getWeekArray(o,d,a);return c.default.createElement("div",{className:n.month,role:"grid"},M,k&&c.default.createElement(f.default,{classNames:n,weekdaysShort:h,weekdaysLong:p,firstDayOfWeek:d,showWeekNumbers:m,locale:u,localeUtils:l,weekdayElement:i}),c.default.createElement("div",{className:n.body,role:"rowgroup"},P.map((function(t){var r=void 0;return m&&(r=g.getWeekNumber(t[6])),c.default.createElement("div",{key:t[0].getTime(),className:n.week,role:"row"},m&&c.default.createElement("div",{className:n.weekNumber,tabIndex:b?0:-1,role:"gridcell",onClick:b?function(e){return b(r,t,e)}:void 0,onKeyUp:b?function(e){return e.keyCode===y.ENTER&&b(r,t,e)}:void 0},e.props.renderWeek(r,t,o)),t.map(e.renderDay))}))))}}]),t}(l.Component);t.default=w},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}function l(e){var t=(e.input,e.selectedDay,e.month,e.children),n=e.classNames,o=u(e,["input","selectedDay","month","children","classNames"]);return y.default.createElement("div",h({className:n.overlayWrapper},o),y.default.createElement("div",{className:n.overlay},t))}function c(e){return(0,k.isDate)(e)?e.getFullYear()+"-"+(e.getMonth()+1)+"-"+e.getDate():""}function p(e){if("string"==typeof e){var t=e.split("-");if(3===t.length){var n=parseInt(t[0],10),o=parseInt(t[1],10)-1,r=parseInt(t[2],10);if(!(isNaN(n)||String(n).length>4||isNaN(o)||isNaN(r)||r<=0||r>31||o<0||o>=12))return new Date(n,o,r,12,0,0,0)}}}Object.defineProperty(t,"__esModule",{value:!0}),t.HIDE_TIMEOUT=void 0;var f=function(){function e(e,t){for(var n=0;n0&&this.setState(t)}},{key:"componentWillUnmount",value:function(){clearTimeout(this.clickTimeout),clearTimeout(this.hideTimeout),clearTimeout(this.inputFocusTimeout),clearTimeout(this.inputBlurTimeout),clearTimeout(this.overlayBlurTimeout)}},{key:"getInitialMonthFromProps",value:function(e){var t=e.dayPickerProps,n=e.format,o=void 0;return e.value&&(o=(0,k.isDate)(e.value)?e.value:e.parseDate(e.value,n,t.locale)),t.initialMonth||t.month||o||new Date}},{key:"getInitialStateFromProps",value:function(e){var t=e.dayPickerProps,n=e.formatDate,o=e.format,r=e.typedValue,a=e.value;return e.value&&(0,k.isDate)(e.value)&&(a=n(e.value,o,t.locale)),{value:a,typedValue:r,month:this.getInitialMonthFromProps(e),selectedDays:t.selectedDays}}},{key:"getInput",value:function(){return this.input}},{key:"getDayPicker",value:function(){return this.daypicker}},{key:"updateState",value:function(e,t,n){var o=this,a=this.props,s=a.dayPickerProps,i=a.onDayChange;this.setState({month:e,value:t,typedValue:""},(function(){if(n&&n(),i){var t=h({disabled:s.disabledDays,selected:s.selectedDays},s.modifiers),a=(0,D.getModifiersForDay)(e,t).reduce((function(e,t){return h({},e,r({},t,!0))}),{});i(e,a,o)}}))}},{key:"showDayPicker",value:function(){var e=this,t=this.props,n=t.parseDate,o=t.format,r=t.dayPickerProps,a=this.state,s=a.value;if(!a.showOverlay){var i=s?n(s,o,r.locale):this.getInitialMonthFromProps(this.props);this.setState((function(e){return{showOverlay:!0,month:i||e.month}}),(function(){e.props.onDayPickerShow&&e.props.onDayPickerShow()}))}}},{key:"hideDayPicker",value:function(){var e=this;!1!==this.state.showOverlay&&this.setState({showOverlay:!1},(function(){e.props.onDayPickerHide&&e.props.onDayPickerHide()}))}},{key:"hideAfterDayClick",value:function(){var e=this;this.props.hideOnDayClick&&(this.hideTimeout=setTimeout((function(){e.overlayHasFocus=!1,e.hideDayPicker()}),g))}},{key:"handleInputClick",value:function(e){this.showDayPicker(),this.props.inputProps.onClick&&(e.persist(),this.props.inputProps.onClick(e))}},{key:"handleInputFocus",value:function(e){var t=this;this.showDayPicker(),this.inputFocusTimeout=setTimeout((function(){t.overlayHasFocus=!1}),2),this.props.inputProps.onFocus&&(e.persist(),this.props.inputProps.onFocus(e))}},{key:"handleInputBlur",value:function(e){var t=this;this.inputBlurTimeout=setTimeout((function(){t.overlayHasFocus||t.hideDayPicker()}),1),this.props.inputProps.onBlur&&(e.persist(),this.props.inputProps.onBlur(e))}},{key:"handleOverlayFocus",value:function(e){e.preventDefault(),this.overlayHasFocus=!0,this.props.keepFocus&&this.input&&"function"==typeof this.input.focus&&this.input.focus()}},{key:"handleOverlayBlur",value:function(){var e=this;this.overlayBlurTimeout=setTimeout((function(){e.overlayHasFocus=!1}),3)}},{key:"handleInputChange",value:function(e){var t=this.props,n=t.dayPickerProps,o=t.format,r=t.inputProps,a=t.onDayChange,s=t.parseDate;r.onChange&&(e.persist(),r.onChange(e));var i=e.target.value;if(""===i.trim())return this.setState({value:i,typedValue:""}),void(a&&a(void 0,{},this));var u=s(i,o,n.locale);if(!u)return this.setState({value:i,typedValue:i}),void(a&&a(void 0,{},this));this.updateState(u,i)}},{key:"handleInputKeyDown",value:function(e){e.keyCode===b.TAB?this.hideDayPicker():this.showDayPicker(),this.props.inputProps.onKeyDown&&(e.persist(),this.props.inputProps.onKeyDown(e))}},{key:"handleInputKeyUp",value:function(e){e.keyCode===b.ESC?this.hideDayPicker():this.showDayPicker(),this.props.inputProps.onKeyUp&&(e.persist(),this.props.inputProps.onKeyUp(e))}},{key:"handleMonthChange",value:function(e){var t=this;this.setState({month:e},(function(){t.props.dayPickerProps&&t.props.dayPickerProps.onMonthChange&&t.props.dayPickerProps.onMonthChange(e)}))}},{key:"handleDayClick",value:function(e,t,n){var o=this,r=this.props,a=r.clickUnselectsDay,s=r.dayPickerProps,i=r.onDayChange,u=r.formatDate,l=r.format;if(s.onDayClick&&s.onDayClick(e,t,n),!(t.disabled||s&&s.classNames&&t[s.classNames.disabled])){if(t.selected&&a){var c=this.state.selectedDays;if(Array.isArray(c)){var p=(c=c.slice(0)).indexOf(e);c.splice(p,1)}else c&&(c=null);return this.setState({value:"",typedValue:"",selectedDays:c},this.hideAfterDayClick),void(i&&i(void 0,t,this))}var f=u(e,l,s.locale);this.setState({value:f,typedValue:"",month:e},(function(){i&&i(e,t,o),o.hideAfterDayClick()}))}}},{key:"renderOverlay",value:function(){var e=this,t=this.props,n=t.classNames,o=t.dayPickerProps,r=t.parseDate,a=t.formatDate,s=t.format,i=this.state,u=i.selectedDays,l=i.value,c=void 0;if(!u&&l){var p=r(l,s,o.locale);p&&(c=p)}else u&&(c=u);var f=void 0;o.todayButton&&(f=function(){return e.updateState(new Date,a(new Date,s,o.locale),e.hideAfterDayClick)});var d=this.props.overlayComponent;return y.default.createElement(d,{classNames:n,month:this.state.month,selectedDay:c,input:this.input,tabIndex:0,onFocus:this.handleOverlayFocus,onBlur:this.handleOverlayBlur},y.default.createElement(m.default,h({ref:function(t){return e.daypicker=t},onTodayButtonClick:f},o,{month:this.state.month,selectedDays:c,onDayClick:this.handleDayClick,onMonthChange:this.handleMonthChange})))}},{key:"render",value:function(){var e=this,t=this.props.component,n=this.props.inputProps;return y.default.createElement("div",{className:this.props.classNames.container,style:this.props.style},y.default.createElement(t,h({ref:function(t){return e.input=t},placeholder:this.props.placeholder},n,{value:this.state.value||this.state.typedValue,onChange:this.handleInputChange,onFocus:this.handleInputFocus,onBlur:this.handleInputBlur,onKeyDown:this.handleInputKeyDown,onKeyUp:this.handleInputKeyUp,onClick:n.disabled?void 0:this.handleInputClick})),this.state.showOverlay&&this.renderOverlay())}}]),t}(y.default.Component);w.defaultProps={dayPickerProps:{},value:"",typedValue:"",placeholder:"YYYY-M-D",format:"L",formatDate:c,parseDate:p,showOverlay:!1,hideOnDayClick:!0,clickUnselectsDay:!1,keepFocus:!0,component:"input",inputProps:{},overlayComponent:l,classNames:{container:"DayPickerInput",overlayWrapper:"DayPickerInput-OverlayWrapper",overlay:"DayPickerInput-Overlay"}},t.default=w}]).default)},function(module,exports,__webpack_require__){"use strict";function defaultEqualityCheck(a,b){return a===b}function defaultMemoize(func){var equalityCheck=arguments.length>1&&void 0!==arguments[1]?arguments[1]:defaultEqualityCheck,lastArgs=null,lastResult=null;return function(){return function areArgumentsShallowlyEqual(equalityCheck,prev,next){if(null===prev||null===next||prev.length!==next.length)return!1;for(var length=prev.length,i=0;i1?_len-1:0),_key=1;_key<_len;_key++)memoizeOptions[_key-1]=arguments[_key];return function(){for(var _len2=arguments.length,funcs=Array(_len2),_key2=0;_key2<_len2;_key2++)funcs[_key2]=arguments[_key2];var recomputations=0,resultFunc=funcs.pop(),dependencies=function getDependencies(funcs){var dependencies=Array.isArray(funcs[0])?funcs[0]:funcs;if(!dependencies.every((function(dep){return"function"==typeof dep}))){var dependencyTypes=dependencies.map((function(dep){return typeof dep})).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, instead received the following types: ["+dependencyTypes+"]")}return dependencies}(funcs),memoizedResultFunc=memoize.apply(void 0,[function(){return recomputations++,resultFunc.apply(null,arguments)}].concat(memoizeOptions)),selector=defaultMemoize((function(){for(var params=[],length=dependencies.length,i=0;i1&&void 0!==arguments[1]?arguments[1]:createSelector;if("object"!=typeof selectors)throw new Error("createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof selectors);var objectKeys=Object.keys(selectors);return selectorCreator(objectKeys.map((function(key){return selectors[key]})),(function(){for(var _len3=arguments.length,values=Array(_len3),_key3=0;_key3<_len3;_key3++)values[_key3]=arguments[_key3];return values.reduce((function(composition,value,index){return composition[objectKeys[index]]=value,composition}),{})}))};var createSelector=exports.createSelector=createSelectorCreator(defaultMemoize)},function(module,exports,__webpack_require__){"use strict";var reactIs=__webpack_require__(3),REACT_STATICS={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},KNOWN_STATICS={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},MEMO_STATICS={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},TYPE_STATICS={};function getStatics(component){return reactIs.isMemo(component)?MEMO_STATICS:TYPE_STATICS[component.$$typeof]||REACT_STATICS}TYPE_STATICS[reactIs.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},TYPE_STATICS[reactIs.Memo]=MEMO_STATICS;var defineProperty=Object.defineProperty,getOwnPropertyNames=Object.getOwnPropertyNames,getOwnPropertySymbols=Object.getOwnPropertySymbols,getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,getPrototypeOf=Object.getPrototypeOf,objectPrototype=Object.prototype;module.exports=function hoistNonReactStatics(targetComponent,sourceComponent,blacklist){if("string"!=typeof sourceComponent){if(objectPrototype){var inheritedComponent=getPrototypeOf(sourceComponent);inheritedComponent&&inheritedComponent!==objectPrototype&&hoistNonReactStatics(targetComponent,inheritedComponent,blacklist)}var keys=getOwnPropertyNames(sourceComponent);getOwnPropertySymbols&&(keys=keys.concat(getOwnPropertySymbols(sourceComponent)));for(var targetStatics=getStatics(targetComponent),sourceStatics=getStatics(sourceComponent),i=0;iQ.length&&Q.push(a)}function T(a,b,c,e){var d=typeof a;"undefined"!==d&&"boolean"!==d||(a=null);var g=!1;if(null===a)g=!0;else switch(d){case"string":case"number":g=!0;break;case"object":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,""===b?"."+U(a,0):b),1;if(g=0,b=""===b?".":b+":",Array.isArray(a))for(var k=0;k=0||(target[key]=source[key]);return target}var hoist_non_react_statics_cjs=__webpack_require__(8),hoist_non_react_statics_cjs_default=__webpack_require__.n(hoist_non_react_statics_cjs),browser=__webpack_require__(2),browser_default=__webpack_require__.n(browser),react_is=__webpack_require__(3),CLEARED=null,nullListeners={notify:function notify(){}};var Subscription=function(){function Subscription(store,parentSub,onStateChange){this.store=store,this.parentSub=parentSub,this.onStateChange=onStateChange,this.unsubscribe=null,this.listeners=nullListeners}var _proto=Subscription.prototype;return _proto.addNestedSub=function addNestedSub(listener){return this.trySubscribe(),this.listeners.subscribe(listener)},_proto.notifyNestedSubs=function notifyNestedSubs(){this.listeners.notify()},_proto.isSubscribed=function isSubscribed(){return Boolean(this.unsubscribe)},_proto.trySubscribe=function trySubscribe(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.onStateChange):this.store.subscribe(this.onStateChange),this.listeners=function createListenerCollection(){var current=[],next=[];return{clear:function clear(){next=CLEARED,current=CLEARED},notify:function notify(){for(var listeners=current=next,i=0;i, or explicitly pass "'+storeKey+'" as a prop to "'+displayName+'".'),_this.initSelector(),_this.initSubscription(),_this}_inheritsLoose(Connect,_Component);var _proto=Connect.prototype;return _proto.getChildContext=function getChildContext(){var _ref3,subscription=this.propsMode?null:this.subscription;return(_ref3={})[subscriptionKey]=subscription||this.context[subscriptionKey],_ref3},_proto.componentDidMount=function componentDidMount(){shouldHandleStateChanges&&(this.subscription.trySubscribe(),this.selector.run(this.props),this.selector.shouldComponentUpdate&&this.forceUpdate())},_proto.componentWillReceiveProps=function componentWillReceiveProps(nextProps){this.selector.run(nextProps)},_proto.shouldComponentUpdate=function shouldComponentUpdate(){return this.selector.shouldComponentUpdate},_proto.componentWillUnmount=function componentWillUnmount(){this.subscription&&this.subscription.tryUnsubscribe(),this.subscription=null,this.notifyNestedSubs=noop,this.store=null,this.selector.run=noop,this.selector.shouldComponentUpdate=!1},_proto.getWrappedInstance=function getWrappedInstance(){return browser_default()(withRef,"To access the wrapped instance, you need to specify { withRef: true } in the options argument of the "+methodName+"() call."),this.wrappedInstance},_proto.setWrappedInstance=function setWrappedInstance(ref){this.wrappedInstance=ref},_proto.initSelector=function initSelector(){var sourceSelector=selectorFactory(this.store.dispatch,selectorFactoryOptions);this.selector=function makeSelectorStateful(sourceSelector,store){var selector={run:function runComponentSelector(props){try{var nextProps=sourceSelector(store.getState(),props);(nextProps!==selector.props||selector.error)&&(selector.shouldComponentUpdate=!0,selector.props=nextProps,selector.error=null)}catch(error){selector.shouldComponentUpdate=!0,selector.error=error}}};return selector}(sourceSelector,this.store),this.selector.run(this.props)},_proto.initSubscription=function initSubscription(){if(shouldHandleStateChanges){var parentSub=(this.propsMode?this.props:this.context)[subscriptionKey];this.subscription=new Subscription(this.store,parentSub,this.onStateChange.bind(this)),this.notifyNestedSubs=this.subscription.notifyNestedSubs.bind(this.subscription)}},_proto.onStateChange=function onStateChange(){this.selector.run(this.props),this.selector.shouldComponentUpdate?(this.componentDidUpdate=this.notifyNestedSubsOnComponentDidUpdate,this.setState(dummyState)):this.notifyNestedSubs()},_proto.notifyNestedSubsOnComponentDidUpdate=function notifyNestedSubsOnComponentDidUpdate(){this.componentDidUpdate=void 0,this.notifyNestedSubs()},_proto.isSubscribed=function isSubscribed(){return Boolean(this.subscription)&&this.subscription.isSubscribed()},_proto.addExtraProps=function addExtraProps(props){if(!(withRef||renderCountProp||this.propsMode&&this.subscription))return props;var withExtras=_extends({},props);return withRef&&(withExtras.ref=this.setWrappedInstance),renderCountProp&&(withExtras[renderCountProp]=this.renderCount++),this.propsMode&&this.subscription&&(withExtras[subscriptionKey]=this.subscription),withExtras},_proto.render=function render(){var selector=this.selector;if(selector.shouldComponentUpdate=!1,selector.error)throw selector.error;return Object(react.createElement)(WrappedComponent,this.addExtraProps(selector.props))},Connect}(react.Component);return connectAdvanced_prefixUnsafeLifecycleMethods&&(Connect.prototype.UNSAFE_componentWillReceiveProps=Connect.prototype.componentWillReceiveProps,delete Connect.prototype.componentWillReceiveProps),Connect.WrappedComponent=WrappedComponent,Connect.displayName=displayName,Connect.childContextTypes=childContextTypes,Connect.contextTypes=contextTypes,Connect.propTypes=contextTypes,hoist_non_react_statics_cjs_default()(Connect,WrappedComponent)}}var hasOwn=Object.prototype.hasOwnProperty;function is(x,y){return x===y?0!==x||0!==y||1/x==1/y:x!=x&&y!=y}function shallowEqual(objA,objB){if(is(objA,objB))return!0;if("object"!=typeof objA||null===objA||"object"!=typeof objB||null===objB)return!1;var keysA=Object.keys(objA),keysB=Object.keys(objB);if(keysA.length!==keysB.length)return!1;for(var i=0;i=0;i--){var result=factories[i](arg);if(result)return result}return function(dispatch,options){throw new Error("Invalid value of type "+typeof arg+" for "+name+" argument when connecting component "+options.wrappedComponentName+".")}}function strictEqual(a,b){return a===b}var connect_connect=function createConnect(_temp){var _ref=void 0===_temp?{}:_temp,_ref$connectHOC=_ref.connectHOC,connectHOC=void 0===_ref$connectHOC?connectAdvanced:_ref$connectHOC,_ref$mapStateToPropsF=_ref.mapStateToPropsFactories,mapStateToPropsFactories=void 0===_ref$mapStateToPropsF?connect_mapStateToProps:_ref$mapStateToPropsF,_ref$mapDispatchToPro=_ref.mapDispatchToPropsFactories,mapDispatchToPropsFactories=void 0===_ref$mapDispatchToPro?connect_mapDispatchToProps:_ref$mapDispatchToPro,_ref$mergePropsFactor=_ref.mergePropsFactories,mergePropsFactories=void 0===_ref$mergePropsFactor?connect_mergeProps:_ref$mergePropsFactor,_ref$selectorFactory=_ref.selectorFactory,selectorFactory=void 0===_ref$selectorFactory?finalPropsSelectorFactory:_ref$selectorFactory;return function connect(mapStateToProps,mapDispatchToProps,mergeProps,_ref2){void 0===_ref2&&(_ref2={});var _ref3=_ref2,_ref3$pure=_ref3.pure,pure=void 0===_ref3$pure||_ref3$pure,_ref3$areStatesEqual=_ref3.areStatesEqual,areStatesEqual=void 0===_ref3$areStatesEqual?strictEqual:_ref3$areStatesEqual,_ref3$areOwnPropsEqua=_ref3.areOwnPropsEqual,areOwnPropsEqual=void 0===_ref3$areOwnPropsEqua?shallowEqual:_ref3$areOwnPropsEqua,_ref3$areStatePropsEq=_ref3.areStatePropsEqual,areStatePropsEqual=void 0===_ref3$areStatePropsEq?shallowEqual:_ref3$areStatePropsEq,_ref3$areMergedPropsE=_ref3.areMergedPropsEqual,areMergedPropsEqual=void 0===_ref3$areMergedPropsE?shallowEqual:_ref3$areMergedPropsE,extraOptions=_objectWithoutPropertiesLoose(_ref3,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),initMapStateToProps=connect_match(mapStateToProps,mapStateToPropsFactories,"mapStateToProps"),initMapDispatchToProps=connect_match(mapDispatchToProps,mapDispatchToPropsFactories,"mapDispatchToProps"),initMergeProps=connect_match(mergeProps,mergePropsFactories,"mergeProps");return connectHOC(selectorFactory,_extends({methodName:"connect",getDisplayName:function getDisplayName(name){return"Connect("+name+")"},shouldHandleStateChanges:Boolean(mapStateToProps),initMapStateToProps:initMapStateToProps,initMapDispatchToProps:initMapDispatchToProps,initMergeProps:initMergeProps,pure:pure,areStatesEqual:areStatesEqual,areOwnPropsEqual:areOwnPropsEqual,areStatePropsEqual:areStatePropsEqual,areMergedPropsEqual:areMergedPropsEqual},extraOptions))}}(),utils_extends=Object.assign||function(target){for(var i=1;i=0&&array.splice(index,1)}var array={from:function from(obj){var arr=Array(obj.length);for(var i in obj)utils_hasOwn(obj,i)&&(arr[i]=obj[i]);return arr}};function deferred(){var def=utils_extends({},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),promise=new Promise((function(resolve,reject){def.resolve=resolve,def.reject=reject}));return def.promise=promise,def}function arrayOfDeffered(length){for(var arr=[],i=0;i1&&void 0!==arguments[1])||arguments[1],timeoutId=void 0,promise=new Promise((function(resolve){timeoutId=setTimeout((function(){return resolve(val)}),ms)}));return promise[CANCEL]=function(){return clearTimeout(timeoutId)},promise}function createMockTask(){var _ref,running=!0,_result=void 0,_error=void 0;return(_ref={})[TASK]=!0,_ref.isRunning=function isRunning(){return running},_ref.result=function result(){return _result},_ref.error=function error(){return _error},_ref.setRunning=function setRunning(b){return running=b},_ref.setResult=function setResult(r){return _result=r},_ref.setError=function setError(e){return _error=e},_ref}function autoInc(){var seed=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return function(){return++seed}}var uid=autoInc(),kThrow=function kThrow(err){throw err},kReturn=function kReturn(value){return{value:value,done:!0}};function makeIterator(next){var iterator={name:arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",next:next,throw:arguments.length>1&&void 0!==arguments[1]?arguments[1]:kThrow,return:kReturn};return arguments[3]&&(iterator[HELPER]=!0),"undefined"!=typeof Symbol&&(iterator[Symbol.iterator]=function(){return iterator}),iterator}function utils_log(level,message){var error=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";"undefined"==typeof window?console.log("redux-saga "+level+": "+message+"\n"+(error&&error.stack||error)):console[level](message,error)}function deprecate(fn,deprecationWarning){return function(){return fn.apply(void 0,arguments)}}var updateIncentive=function updateIncentive(deprecated,preferred){return deprecated+" has been deprecated in favor of "+preferred+", please update your code"},internalErr=function internalErr(err){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: "+err+"\n")},createSetContextWarning=function createSetContextWarning(ctx,props){return(ctx?ctx+".":"")+"setContext(props): argument "+props+" is not a plain object"},wrapSagaDispatch=function wrapSagaDispatch(dispatch){return function(action){return dispatch(Object.defineProperty(action,SAGA_ACTION,{value:!0}))}},cloneableGenerator=function cloneableGenerator(generatorFunc){return function(){for(var _len=arguments.length,args=Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];var history=[],gen=generatorFunc.apply(void 0,args);return{next:function next(arg){return history.push(arg),gen.next(arg)},clone:function clone(){var clonedGen=cloneableGenerator(generatorFunc).apply(void 0,args);return history.forEach((function(arg){return clonedGen.next(arg)})),clonedGen},return:function _return(value){return gen.return(value)},throw:function _throw(exception){return gen.throw(exception)}}}},BUFFER_OVERFLOW="Channel's Buffer overflow!",ON_OVERFLOW_THROW=1,ON_OVERFLOW_SLIDE=3,ON_OVERFLOW_EXPAND=4,zeroBuffer={isEmpty:kTrue,put:utils_noop,take:utils_noop};function ringBuffer(){var limit=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,overflowAction=arguments[1],arr=new Array(limit),length=0,pushIndex=0,popIndex=0,push=function push(it){arr[pushIndex]=it,pushIndex=(pushIndex+1)%limit,length++},take=function take(){if(0!=length){var it=arr[popIndex];return arr[popIndex]=null,length--,popIndex=(popIndex+1)%limit,it}},flush=function flush(){for(var items=[];length;)items.push(take());return items};return{isEmpty:function isEmpty(){return 0==length},put:function put(it){if(length0&&void 0!==arguments[0]?arguments[0]:buffers.fixed(),closed=!1,takers=[];function checkForbiddenStates(){if(closed&&takers.length)throw internalErr("Cannot have a closed channel with pending takers");if(takers.length&&!buffer.isEmpty())throw internalErr("Cannot have pending takers with non empty buffer")}return check(buffer,utils_is.buffer,INVALID_BUFFER),{take:function take(cb){checkForbiddenStates(),check(cb,utils_is.func,"channel.take's callback must be a function"),closed&&buffer.isEmpty()?cb(END):buffer.isEmpty()?(takers.push(cb),cb.cancel=function(){return remove(takers,cb)}):cb(buffer.take())},put:function put(input){if(checkForbiddenStates(),check(input,utils_is.notUndef,UNDEFINED_INPUT_ERROR),!closed){if(!takers.length)return buffer.put(input);for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:buffers.none(),matcher=arguments[2];arguments.length>2&&check(matcher,utils_is.func,"Invalid match function passed to eventChannel");var chan=channel_channel(buffer),close=function close(){chan.__closed__||(unsubscribe&&unsubscribe(),chan.close())},unsubscribe=subscribe((function(input){isEnd(input)?close():matcher&&!matcher(input)||chan.put(input)}));if(chan.__closed__&&unsubscribe(),!utils_is.func(unsubscribe))throw new Error("in eventChannel: subscribe should return a function to unsubscribe");return{take:chan.take,flush:chan.flush,close:close}}var IO=sym("IO"),TAKE="TAKE",PUT="PUT",ALL="ALL",RACE="RACE",CALL="CALL",CPS="CPS",FORK="FORK",JOIN="JOIN",io_CANCEL="CANCEL",SELECT="SELECT",ACTION_CHANNEL="ACTION_CHANNEL",CANCELLED="CANCELLED",FLUSH="FLUSH",GET_CONTEXT="GET_CONTEXT",SET_CONTEXT="SET_CONTEXT",TEST_HINT="\n(HINT: if you are getting this errors in tests, consider using createMockTask from redux-saga/utils)",io_effect=function effect(type,payload){var _ref;return(_ref={})[IO]=!0,_ref[type]=payload,_ref},io_detach=function detach(eff){return check(asEffect.fork(eff),utils_is.object,"detach(eff): argument must be a fork effect"),eff[FORK].detached=!0,eff};function io_take(){var patternOrChannel=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"*";if(arguments.length&&check(arguments[0],utils_is.notUndef,"take(patternOrChannel): patternOrChannel is undefined"),utils_is.pattern(patternOrChannel))return io_effect(TAKE,{pattern:patternOrChannel});if(utils_is.channel(patternOrChannel))return io_effect(TAKE,{channel:patternOrChannel});throw new Error("take(patternOrChannel): argument "+String(patternOrChannel)+" is not valid channel or a valid pattern")}io_take.maybe=function(){var eff=io_take.apply(void 0,arguments);return eff[TAKE].maybe=!0,eff};var takem=deprecate(io_take.maybe);function io_put(channel,action){return arguments.length>1?(check(channel,utils_is.notUndef,"put(channel, action): argument channel is undefined"),check(channel,utils_is.channel,"put(channel, action): argument "+channel+" is not a valid channel"),check(action,utils_is.notUndef,"put(channel, action): argument action is undefined")):(check(channel,utils_is.notUndef,"put(action): argument action is undefined"),action=channel,channel=null),io_effect(PUT,{channel:channel,action:action})}function io_all(effects){return io_effect(ALL,effects)}function race(effects){return io_effect(RACE,effects)}function getFnCallDesc(meth,fn,args){check(fn,utils_is.notUndef,meth+": argument fn is undefined");var context=null;if(utils_is.array(fn)){var _fn=fn;context=_fn[0],fn=_fn[1]}else if(fn.fn){var _fn2=fn;context=_fn2.context,fn=_fn2.fn}return context&&utils_is.string(fn)&&utils_is.func(context[fn])&&(fn=context[fn]),check(fn,utils_is.func,meth+": argument "+fn+" is not a function"),{context:context,fn:fn,args:args}}function call(fn){for(var _len=arguments.length,args=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)args[_key-1]=arguments[_key];return io_effect(CALL,getFnCallDesc("call",fn,args))}function apply(context,fn){return io_effect(CALL,getFnCallDesc("apply",{context:context,fn:fn},arguments.length>2&&void 0!==arguments[2]?arguments[2]:[]))}function cps(fn){for(var _len2=arguments.length,args=Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++)args[_key2-1]=arguments[_key2];return io_effect(CPS,getFnCallDesc("cps",fn,args))}function fork(fn){for(var _len3=arguments.length,args=Array(_len3>1?_len3-1:0),_key3=1;_key3<_len3;_key3++)args[_key3-1]=arguments[_key3];return io_effect(FORK,getFnCallDesc("fork",fn,args))}function spawn(fn){for(var _len4=arguments.length,args=Array(_len4>1?_len4-1:0),_key4=1;_key4<_len4;_key4++)args[_key4-1]=arguments[_key4];return io_detach(fork.apply(void 0,[fn].concat(args)))}function join(){for(var _len5=arguments.length,tasks=Array(_len5),_key5=0;_key5<_len5;_key5++)tasks[_key5]=arguments[_key5];if(tasks.length>1)return io_all(tasks.map((function(t){return join(t)})));var task=tasks[0];return check(task,utils_is.notUndef,"join(task): argument task is undefined"),check(task,utils_is.task,"join(task): argument "+task+" is not a valid Task object "+TEST_HINT),io_effect(JOIN,task)}function io_cancel(){for(var _len6=arguments.length,tasks=Array(_len6),_key6=0;_key6<_len6;_key6++)tasks[_key6]=arguments[_key6];if(tasks.length>1)return io_all(tasks.map((function(t){return io_cancel(t)})));var task=tasks[0];return 1===tasks.length&&(check(task,utils_is.notUndef,"cancel(task): argument task is undefined"),check(task,utils_is.task,"cancel(task): argument "+task+" is not a valid Task object "+TEST_HINT)),io_effect(io_CANCEL,task||SELF_CANCELLATION)}function io_select(selector){for(var _len7=arguments.length,args=Array(_len7>1?_len7-1:0),_key7=1;_key7<_len7;_key7++)args[_key7-1]=arguments[_key7];return 0===arguments.length?selector=ident:(check(selector,utils_is.notUndef,"select(selector,[...]): argument selector is undefined"),check(selector,utils_is.func,"select(selector,[...]): argument "+selector+" is not a function")),io_effect(SELECT,{selector:selector,args:args})}function actionChannel(pattern,buffer){return check(pattern,utils_is.notUndef,"actionChannel(pattern,...): argument pattern is undefined"),arguments.length>1&&(check(buffer,utils_is.notUndef,"actionChannel(pattern, buffer): argument buffer is undefined"),check(buffer,utils_is.buffer,"actionChannel(pattern, buffer): argument "+buffer+" is not a valid buffer")),io_effect(ACTION_CHANNEL,{pattern:pattern,buffer:buffer})}function cancelled(){return io_effect(CANCELLED,{})}function io_flush(channel){return check(channel,utils_is.channel,"flush(channel): argument "+channel+" is not valid channel"),io_effect(FLUSH,channel)}function getContext(prop){return check(prop,utils_is.string,"getContext(prop): argument "+prop+" is not a string"),io_effect(GET_CONTEXT,prop)}function io_setContext(props){return check(props,utils_is.object,createSetContextWarning(null,props)),io_effect(SET_CONTEXT,props)}io_put.resolve=function(){var eff=io_put.apply(void 0,arguments);return eff[PUT].resolve=!0,eff},io_put.sync=deprecate(io_put.resolve);var createAsEffectType=function createAsEffectType(type){return function(effect){return effect&&effect[IO]&&effect[type]}},asEffect={take:createAsEffectType(TAKE),put:createAsEffectType(PUT),all:createAsEffectType(ALL),race:createAsEffectType(RACE),call:createAsEffectType(CALL),cps:createAsEffectType(CPS),fork:createAsEffectType(FORK),join:createAsEffectType(JOIN),cancel:createAsEffectType(io_CANCEL),select:createAsEffectType(SELECT),actionChannel:createAsEffectType(ACTION_CHANNEL),cancelled:createAsEffectType(CANCELLED),flush:createAsEffectType(FLUSH),getContext:createAsEffectType(GET_CONTEXT),setContext:createAsEffectType(SET_CONTEXT)},proc_extends=Object.assign||function(target){for(var i=1;i1&&void 0!==arguments[1]?arguments[1]:function(){return utils_noop},dispatch=arguments.length>2&&void 0!==arguments[2]?arguments[2]:utils_noop,getState=arguments.length>3&&void 0!==arguments[3]?arguments[3]:utils_noop,parentContext=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},options=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},parentEffectId=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0,name=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"anonymous",cont=arguments[8];check(iterator,utils_is.iterator,NOT_ITERATOR_ERROR);var runParallelEffect=deprecate(runAllEffect,updateIncentive("[...effects]","all([...effects])")),sagaMonitor=options.sagaMonitor,logger=options.logger,onError=options.onError,log=logger||utils_log,logError=function logError(err){var message=err.sagaStack;!message&&err.stack&&(message=-1!==err.stack.split("\n")[0].indexOf(err.message)?err.stack:"Error: "+err.message+"\n"+err.stack),log("error","uncaught at "+name,message||err.message||err)},stdChannel=function channel_stdChannel(subscribe){var chan=eventChannel((function(cb){return subscribe((function(input){input[SAGA_ACTION]?cb(input):asap((function(){return cb(input)}))}))}));return channel_extends({},chan,{take:function take(cb,matcher){arguments.length>1&&(check(matcher,utils_is.func,"channel.take's matcher argument must be a function"),cb[MATCH]=matcher),chan.take(cb)}})}(subscribe),taskContext=Object.create(parentContext);next.cancel=utils_noop;var task=function newTask(id,name,iterator,cont){var _ref9,_mutatorMap;return iterator._deferredEnd=null,(_ref9={})[TASK]=!0,_ref9.id=id,_ref9.name=name,"done",(_mutatorMap={}).done=_mutatorMap.done||{},_mutatorMap.done.get=function(){if(iterator._deferredEnd)return iterator._deferredEnd.promise;var def=deferred();return iterator._deferredEnd=def,iterator._isRunning||(iterator._error?def.reject(iterator._error):def.resolve(iterator._result)),def.promise},_ref9.cont=cont,_ref9.joiners=[],_ref9.cancel=cancel,_ref9.isRunning=function isRunning(){return iterator._isRunning},_ref9.isCancelled=function isCancelled(){return iterator._isCancelled},_ref9.isAborted=function isAborted(){return iterator._isAborted},_ref9.result=function result(){return iterator._result},_ref9.error=function error(){return iterator._error},_ref9.setContext=function setContext(props){check(props,utils_is.object,createSetContextWarning("task",props)),object.assign(taskContext,props)},function _defineEnumerableProperties(obj,descs){for(var key in descs){var desc=descs[key];desc.configurable=desc.enumerable=!0,"value"in desc&&(desc.writable=!0),Object.defineProperty(obj,key,desc)}return obj}(_ref9,_mutatorMap),_ref9}(parentEffectId,name,iterator,cont),mainTask={name:name,cancel:function cancelMain(){mainTask.isRunning&&!mainTask.isCancelled&&(mainTask.isCancelled=!0,next(TASK_CANCEL))},isRunning:!0},taskQueue=function forkQueue(name,mainTask,cb){var tasks=[],result=void 0,completed=!1;function abort(err){cancelAll(),cb(err,!0)}function addTask(task){tasks.push(task),task.cont=function(res,isErr){completed||(remove(tasks,task),task.cont=utils_noop,isErr?abort(res):(task===mainTask&&(result=res),tasks.length||(completed=!0,cb(result))))}}function cancelAll(){completed||(completed=!0,tasks.forEach((function(t){t.cont=utils_noop,t.cancel()})),tasks=[])}return addTask(mainTask),{addTask:addTask,cancelAll:cancelAll,abort:abort,getTasks:function getTasks(){return tasks},taskNames:function taskNames(){return tasks.map((function(t){return t.name}))}}}(0,mainTask,end);function cancel(){iterator._isRunning&&!iterator._isCancelled&&(iterator._isCancelled=!0,taskQueue.cancelAll(),end(TASK_CANCEL))}return cont&&(cont.cancel=cancel),iterator._isRunning=!0,next(),task;function next(arg,isErr){if(!mainTask.isRunning)throw new Error("Trying to resume an already finished generator");try{var result=void 0;isErr?result=iterator.throw(arg):arg===TASK_CANCEL?(mainTask.isCancelled=!0,next.cancel(),result=utils_is.func(iterator.return)?iterator.return(TASK_CANCEL):{done:!0,value:TASK_CANCEL}):result=arg===CHANNEL_END?utils_is.func(iterator.return)?iterator.return():{done:!0}:iterator.next(arg),result.done?(mainTask.isMainRunning=!1,mainTask.cont&&mainTask.cont(result.value)):runEffect(result.value,parentEffectId,"",next)}catch(error){mainTask.isCancelled&&logError(error),mainTask.isMainRunning=!1,mainTask.cont(error,!0)}}function end(result,isErr){iterator._isRunning=!1,stdChannel.close(),isErr?(result instanceof Error&&Object.defineProperty(result,"sagaStack",{value:"at "+name+" \n "+(result.sagaStack||result.stack),configurable:!0}),task.cont||(result instanceof Error&&onError?onError(result):logError(result)),iterator._error=result,iterator._isAborted=!0,iterator._deferredEnd&&iterator._deferredEnd.reject(result)):(iterator._result=result,iterator._deferredEnd&&iterator._deferredEnd.resolve(result)),task.cont&&task.cont(result,isErr),task.joiners.forEach((function(j){return j.cb(result,isErr)})),task.joiners=null}function runEffect(effect,parentEffectId){var label=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",cb=arguments[3],effectId=uid();sagaMonitor&&sagaMonitor.effectTriggered({effectId:effectId,parentEffectId:parentEffectId,label:label,effect:effect});var effectSettled=void 0;function currCb(res,isErr){effectSettled||(effectSettled=!0,cb.cancel=utils_noop,sagaMonitor&&(isErr?sagaMonitor.effectRejected(effectId,res):sagaMonitor.effectResolved(effectId,res)),cb(res,isErr))}currCb.cancel=utils_noop,cb.cancel=function(){if(!effectSettled){effectSettled=!0;try{currCb.cancel()}catch(err){logError(err)}currCb.cancel=utils_noop,sagaMonitor&&sagaMonitor.effectCancelled(effectId)}};var data=void 0;return utils_is.promise(effect)?resolvePromise(effect,currCb):utils_is.helper(effect)?runForkEffect(wrapHelper(effect),effectId,currCb):utils_is.iterator(effect)?resolveIterator(effect,effectId,name,currCb):utils_is.array(effect)?runParallelEffect(effect,effectId,currCb):(data=asEffect.take(effect))?function runTakeEffect(_ref2,cb){var channel=_ref2.channel,pattern=_ref2.pattern,maybe=_ref2.maybe;channel=channel||stdChannel;var takeCb=function takeCb(inp){return inp instanceof Error?cb(inp,!0):isEnd(inp)&&!maybe?cb(CHANNEL_END):cb(inp)};try{channel.take(takeCb,proc_matcher(pattern))}catch(err){return cb(err,!0)}cb.cancel=takeCb.cancel}(data,currCb):(data=asEffect.put(effect))?function runPutEffect(_ref3,cb){var channel=_ref3.channel,action=_ref3.action,resolve=_ref3.resolve;asap((function(){var result=void 0;try{result=(channel?channel.put:dispatch)(action)}catch(error){if(channel||resolve)return cb(error,!0);logError(error)}if(!resolve||!utils_is.promise(result))return cb(result);resolvePromise(result,cb)}))}(data,currCb):(data=asEffect.all(effect))?runAllEffect(data,effectId,currCb):(data=asEffect.race(effect))?function runRaceEffect(effects,effectId,cb){var completed=void 0,keys=Object.keys(effects),childCbs={};keys.forEach((function(key){var chCbAtKey=function chCbAtKey(res,isErr){if(!completed)if(isErr)cb.cancel(),cb(res,!0);else if(!isEnd(res)&&res!==CHANNEL_END&&res!==TASK_CANCEL){var _response;cb.cancel(),completed=!0;var response=((_response={})[key]=res,_response);cb(utils_is.array(effects)?[].slice.call(proc_extends({},response,{length:keys.length})):response)}};chCbAtKey.cancel=utils_noop,childCbs[key]=chCbAtKey})),cb.cancel=function(){completed||(completed=!0,keys.forEach((function(key){return childCbs[key].cancel()})))},keys.forEach((function(key){completed||runEffect(effects[key],effectId,key,childCbs[key])}))}(data,effectId,currCb):(data=asEffect.call(effect))?function runCallEffect(_ref4,effectId,cb){var context=_ref4.context,fn=_ref4.fn,args=_ref4.args,result=void 0;try{result=fn.apply(context,args)}catch(error){return cb(error,!0)}return utils_is.promise(result)?resolvePromise(result,cb):utils_is.iterator(result)?resolveIterator(result,effectId,fn.name,cb):cb(result)}(data,effectId,currCb):(data=asEffect.cps(effect))?function runCPSEffect(_ref5,cb){var context=_ref5.context,fn=_ref5.fn,args=_ref5.args;try{var cpsCb=function cpsCb(err,res){return utils_is.undef(err)?cb(res):cb(err,!0)};fn.apply(context,args.concat(cpsCb)),cpsCb.cancel&&(cb.cancel=function(){return cpsCb.cancel()})}catch(error){return cb(error,!0)}}(data,currCb):(data=asEffect.fork(effect))?runForkEffect(data,effectId,currCb):(data=asEffect.join(effect))?function runJoinEffect(t,cb){if(t.isRunning()){var joiner={task:task,cb:cb};cb.cancel=function(){return remove(t.joiners,joiner)},t.joiners.push(joiner)}else t.isAborted()?cb(t.error(),!0):cb(t.result())}(data,currCb):(data=asEffect.cancel(effect))?function runCancelEffect(taskToCancel,cb){taskToCancel===SELF_CANCELLATION&&(taskToCancel=task);taskToCancel.isRunning()&&taskToCancel.cancel();cb()}(data,currCb):(data=asEffect.select(effect))?function runSelectEffect(_ref7,cb){var selector=_ref7.selector,args=_ref7.args;try{cb(selector.apply(void 0,[getState()].concat(args)))}catch(error){cb(error,!0)}}(data,currCb):(data=asEffect.actionChannel(effect))?function runChannelEffect(_ref8,cb){var pattern=_ref8.pattern,buffer=_ref8.buffer,match=proc_matcher(pattern);match.pattern=pattern,cb(eventChannel(subscribe,buffer||buffers.fixed(),match))}(data,currCb):(data=asEffect.flush(effect))?function runFlushEffect(channel,cb){channel.flush(cb)}(data,currCb):(data=asEffect.cancelled(effect))?function runCancelledEffect(data,cb){cb(!!mainTask.isCancelled)}(0,currCb):(data=asEffect.getContext(effect))?function runGetContextEffect(prop,cb){cb(taskContext[prop])}(data,currCb):(data=asEffect.setContext(effect))?function runSetContextEffect(props,cb){object.assign(taskContext,props),cb()}(data,currCb):currCb(effect)}function resolvePromise(promise,cb){var cancelPromise=promise[CANCEL];utils_is.func(cancelPromise)?cb.cancel=cancelPromise:utils_is.func(promise.abort)&&(cb.cancel=function(){return promise.abort()}),promise.then(cb,(function(error){return cb(error,!0)}))}function resolveIterator(iterator,effectId,name,cb){proc(iterator,subscribe,dispatch,getState,taskContext,options,effectId,name,cb)}function runForkEffect(_ref6,effectId,cb){var context=_ref6.context,fn=_ref6.fn,args=_ref6.args,detached=_ref6.detached,taskIterator=function createTaskIterator(_ref){var context=_ref.context,fn=_ref.fn,args=_ref.args;if(utils_is.iterator(fn))return fn;var pc,eff,result=void 0,error=void 0;try{result=fn.apply(context,args)}catch(err){error=err}return utils_is.iterator(result)?result:makeIterator(error?function(){throw error}:(pc=void 0,eff={done:!1,value:result},function(arg){return pc?function ret(value){return{done:!0,value:value}}(arg):(pc=!0,eff)}))}({context:context,fn:fn,args:args});try{suspend();var _task=proc(taskIterator,subscribe,dispatch,getState,taskContext,options,effectId,fn.name,detached?null:utils_noop);detached?cb(_task):taskIterator._isRunning?(taskQueue.addTask(_task),cb(_task)):taskIterator._error?taskQueue.abort(taskIterator._error):cb(_task)}finally{scheduler_flush()}}function runAllEffect(effects,effectId,cb){var keys=Object.keys(effects);if(!keys.length)return cb(utils_is.array(effects)?[]:{});var completedCount=0,completed=void 0,results={},childCbs={};keys.forEach((function(key){var chCbAtKey=function chCbAtKey(res,isErr){completed||(isErr||isEnd(res)||res===CHANNEL_END||res===TASK_CANCEL?(cb.cancel(),cb(res,isErr)):(results[key]=res,completedCount++,function checkEffectEnd(){completedCount===keys.length&&(completed=!0,cb(utils_is.array(effects)?array.from(proc_extends({},results,{length:keys.length})):results))}()))};chCbAtKey.cancel=utils_noop,childCbs[key]=chCbAtKey})),cb.cancel=function(){completed||(completed=!0,keys.forEach((function(key){return childCbs[key].cancel()})))},keys.forEach((function(key){return runEffect(effects[key],effectId,key,childCbs[key])}))}}var NON_GENERATOR_ERR="runSaga(storeInterface, saga, ...args): saga argument must be a Generator function!";function runSaga(storeInterface,saga){for(var _len=arguments.length,args=Array(_len>2?_len-2:0),_key=2;_key<_len;_key++)args[_key-2]=arguments[_key];var iterator=void 0;utils_is.iterator(storeInterface)?(iterator=storeInterface,storeInterface=saga):(check(saga,utils_is.func,NON_GENERATOR_ERR),check(iterator=saga.apply(void 0,args),utils_is.iterator,NON_GENERATOR_ERR));var _storeInterface=storeInterface,subscribe=_storeInterface.subscribe,dispatch=_storeInterface.dispatch,getState=_storeInterface.getState,context=_storeInterface.context,sagaMonitor=_storeInterface.sagaMonitor,logger=_storeInterface.logger,onError=_storeInterface.onError,effectId=uid();sagaMonitor&&(sagaMonitor.effectTriggered=sagaMonitor.effectTriggered||utils_noop,sagaMonitor.effectResolved=sagaMonitor.effectResolved||utils_noop,sagaMonitor.effectRejected=sagaMonitor.effectRejected||utils_noop,sagaMonitor.effectCancelled=sagaMonitor.effectCancelled||utils_noop,sagaMonitor.actionDispatched=sagaMonitor.actionDispatched||utils_noop,sagaMonitor.effectTriggered({effectId:effectId,root:!0,parentEffectId:0,effect:{root:!0,saga:saga,args:args}}));var task=proc(iterator,subscribe,wrapSagaDispatch(dispatch),getState,context,{sagaMonitor:sagaMonitor,logger:logger,onError:onError},effectId,saga.name);return sagaMonitor&&sagaMonitor.effectResolved(effectId,task),task}var done={done:!0,value:void 0},qEnd={};function safeName(patternOrChannel){return utils_is.channel(patternOrChannel)?"channel":Array.isArray(patternOrChannel)?String(patternOrChannel.map((function(entry){return String(entry)}))):String(patternOrChannel)}function fsmIterator(fsm,q0){var updateState=void 0,qNext=q0;function next(arg,error){if(qNext===qEnd)return done;if(error)throw qNext=qEnd,error;updateState&&updateState(arg);var _fsm$qNext=fsm[qNext](),q=_fsm$qNext[0],output=_fsm$qNext[1],_updateState=_fsm$qNext[2];return updateState=_updateState,(qNext=q)===qEnd?done:output}return makeIterator(next,(function(error){return next(null,error)}),arguments.length>2&&void 0!==arguments[2]?arguments[2]:"iterator",!0)}function takeEvery(patternOrChannel,worker){for(var _len=arguments.length,args=Array(_len>2?_len-2:0),_key=2;_key<_len;_key++)args[_key-2]=arguments[_key];var yTake={done:!1,value:io_take(patternOrChannel)},yFork=function yFork(ac){return{done:!1,value:fork.apply(void 0,[worker].concat(args,[ac]))}},action=void 0,setAction=function setAction(ac){return action=ac};return fsmIterator({q1:function q1(){return["q2",yTake,setAction]},q2:function q2(){return action===END?[qEnd]:["q1",yFork(action)]}},"q1","takeEvery("+safeName(patternOrChannel)+", "+worker.name+")")}function takeLatest(patternOrChannel,worker){for(var _len=arguments.length,args=Array(_len>2?_len-2:0),_key=2;_key<_len;_key++)args[_key-2]=arguments[_key];var yTake={done:!1,value:io_take(patternOrChannel)},yFork=function yFork(ac){return{done:!1,value:fork.apply(void 0,[worker].concat(args,[ac]))}},yCancel=function yCancel(task){return{done:!1,value:io_cancel(task)}},task=void 0,action=void 0,setTask=function setTask(t){return task=t},setAction=function setAction(ac){return action=ac};return fsmIterator({q1:function q1(){return["q2",yTake,setAction]},q2:function q2(){return action===END?[qEnd]:task?["q3",yCancel(task)]:["q1",yFork(action),setTask]},q3:function q3(){return["q1",yFork(action),setTask]}},"q1","takeLatest("+safeName(patternOrChannel)+", "+worker.name+")")}function throttle(delayLength,pattern,worker){for(var _len=arguments.length,args=Array(_len>3?_len-3:0),_key=3;_key<_len;_key++)args[_key-3]=arguments[_key];var action=void 0,channel=void 0,yActionChannel={done:!1,value:actionChannel(pattern,buffers.sliding(1))},yTake=function yTake(){return{done:!1,value:io_take(channel)}},yFork=function yFork(ac){return{done:!1,value:fork.apply(void 0,[worker].concat(args,[ac]))}},yDelay={done:!1,value:call(delay,delayLength)},setAction=function setAction(ac){return action=ac},setChannel=function setChannel(ch){return channel=ch};return fsmIterator({q1:function q1(){return["q2",yActionChannel,setChannel]},q2:function q2(){return["q3",yTake(),setAction]},q3:function q3(){return action===END?[qEnd]:["q4",yFork(action)]},q4:function q4(){return["q2",yDelay]}},"q1","throttle("+safeName(pattern)+", "+worker.name+")")}var sagaHelpers_takeEvery=deprecate(takeEvery),sagaHelpers_takeLatest=deprecate(takeLatest),sagaHelpers_throttle=deprecate(throttle);function io_helpers_takeEvery(patternOrChannel,worker){for(var _len=arguments.length,args=Array(_len>2?_len-2:0),_key=2;_key<_len;_key++)args[_key-2]=arguments[_key];return fork.apply(void 0,[takeEvery,patternOrChannel,worker].concat(args))}function io_helpers_takeLatest(patternOrChannel,worker){for(var _len2=arguments.length,args=Array(_len2>2?_len2-2:0),_key2=2;_key2<_len2;_key2++)args[_key2-2]=arguments[_key2];return fork.apply(void 0,[takeLatest,patternOrChannel,worker].concat(args))}function io_helpers_throttle(ms,pattern,worker){for(var _len3=arguments.length,args=Array(_len3>3?_len3-3:0),_key3=3;_key3<_len3;_key3++)args[_key3-3]=arguments[_key3];return fork.apply(void 0,[throttle,ms,pattern,worker].concat(args))}var es=function sagaMiddlewareFactory(){var _ref=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},_ref$context=_ref.context,context=void 0===_ref$context?{}:_ref$context,options=function _objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_ref,["context"]),sagaMonitor=options.sagaMonitor,logger=options.logger,onError=options.onError;if(utils_is.func(options))throw new Error("Saga middleware no longer accept Generator functions. Use sagaMiddleware.run instead");if(logger&&!utils_is.func(logger))throw new Error("`options.logger` passed to the Saga middleware is not a function!");if(onError&&!utils_is.func(onError))throw new Error("`options.onError` passed to the Saga middleware is not a function!");if(options.emitter&&!utils_is.func(options.emitter))throw new Error("`options.emitter` passed to the Saga middleware is not a function!");function sagaMiddleware(_ref2){var getState=_ref2.getState,dispatch=_ref2.dispatch,sagaEmitter=function emitter(){var subscribers=[];return{subscribe:function subscribe(sub){return subscribers.push(sub),function(){return remove(subscribers,sub)}},emit:function emit(item){for(var arr=subscribers.slice(),i=0,len=arr.length;i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}var Svg=function Svg(_ref){var size=_ref.size,props=_objectWithoutProperties(_ref,["size"]);return _react.default.createElement("svg",_extends({height:size,width:size,viewBox:"0 0 20 20","aria-hidden":"true",focusable:"false",className:(0,_emotion.css)({display:"inline-block",fill:"currentColor",lineHeight:1,stroke:"currentColor",strokeWidth:0})},props))},CrossIcon=function CrossIcon(props){return _react.default.createElement(Svg,_extends({size:20},props),_react.default.createElement("path",{d:"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z"}))};exports.CrossIcon=CrossIcon;var DownChevron=function DownChevron(props){return _react.default.createElement(Svg,_extends({size:20},props),_react.default.createElement("path",{d:"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"}))};exports.DownChevron=DownChevron;var baseCSS=function baseCSS(_ref2){var isFocused=_ref2.isFocused,_ref2$theme=_ref2.theme,baseUnit=_ref2$theme.spacing.baseUnit,colors=_ref2$theme.colors;return{label:"indicatorContainer",color:isFocused?colors.neutral60:colors.neutral20,display:"flex",padding:2*baseUnit,transition:"color 150ms",":hover":{color:isFocused?colors.neutral80:colors.neutral40}}},dropdownIndicatorCSS=baseCSS;exports.dropdownIndicatorCSS=dropdownIndicatorCSS;exports.DropdownIndicator=function DropdownIndicator(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps;return _react.default.createElement("div",_extends({},innerProps,{className:cx((0,_emotion.css)(getStyles("dropdownIndicator",props)),{indicator:!0,"dropdown-indicator":!0},className)}),children||_react.default.createElement(DownChevron,null))};var clearIndicatorCSS=baseCSS;exports.clearIndicatorCSS=clearIndicatorCSS;exports.ClearIndicator=function ClearIndicator(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps;return _react.default.createElement("div",_extends({},innerProps,{className:cx((0,_emotion.css)(getStyles("clearIndicator",props)),{indicator:!0,"clear-indicator":!0},className)}),children||_react.default.createElement(CrossIcon,null))};exports.indicatorSeparatorCSS=function indicatorSeparatorCSS(_ref3){var isDisabled=_ref3.isDisabled,_ref3$theme=_ref3.theme,baseUnit=_ref3$theme.spacing.baseUnit,colors=_ref3$theme.colors;return{label:"indicatorSeparator",alignSelf:"stretch",backgroundColor:isDisabled?colors.neutral10:colors.neutral20,marginBottom:2*baseUnit,marginTop:2*baseUnit,width:1}};exports.IndicatorSeparator=function IndicatorSeparator(props){var className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps;return _react.default.createElement("span",_extends({},innerProps,{className:cx((0,_emotion.css)(getStyles("indicatorSeparator",props)),{"indicator-separator":!0},className)}))};var keyframesInjected=!1;exports.loadingIndicatorCSS=function loadingIndicatorCSS(_ref4){var isFocused=_ref4.isFocused,size=_ref4.size,_ref4$theme=_ref4.theme,colors=_ref4$theme.colors,baseUnit=_ref4$theme.spacing.baseUnit;return{label:"loadingIndicator",color:isFocused?colors.neutral60:colors.neutral20,display:"flex",padding:2*baseUnit,transition:"color 150ms",alignSelf:"center",fontSize:size,lineHeight:1,marginRight:size,textAlign:"center",verticalAlign:"middle"}};var LoadingDot=function LoadingDot(_ref5){var color=_ref5.color,delay=_ref5.delay,offset=_ref5.offset;return _react.default.createElement("span",{className:(0,_emotion.css)({animationDuration:"1s",animationDelay:"".concat(delay,"ms"),animationIterationCount:"infinite",animationName:"react-select-loading-indicator",animationTimingFunction:"ease-in-out",backgroundColor:color,borderRadius:"1em",display:"inline-block",marginLeft:offset?"1em":null,height:"1em",verticalAlign:"top",width:"1em"})})},LoadingIndicator=function LoadingIndicator(props){var className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps,isFocused=props.isFocused,isRtl=props.isRtl,colors=props.theme.colors,color=isFocused?colors.neutral80:colors.neutral20;return keyframesInjected||((0,_emotion.injectGlobal)("@keyframes ","react-select-loading-indicator","{0%,80%,100%{opacity:0;}40%{opacity:1;}};"),keyframesInjected=!0),_react.default.createElement("div",_extends({},innerProps,{className:cx((0,_emotion.css)(getStyles("loadingIndicator",props)),{indicator:!0,"loading-indicator":!0},className)}),_react.default.createElement(LoadingDot,{color:color,delay:0,offset:isRtl}),_react.default.createElement(LoadingDot,{color:color,delay:160,offset:!0}),_react.default.createElement(LoadingDot,{color:color,delay:320,offset:!isRtl}))};exports.LoadingIndicator=LoadingIndicator,LoadingIndicator.defaultProps={size:4}},"/+00":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _react=function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__("cDcd")),_emotion=__webpack_require__("PAeb");function _extends(){return _extends=Object.assign||function(target){for(var i=1;i=NEWTON_MIN_SLOPE?function newtonRaphsonIterate(aX,aGuessT,mX1,mX2){for(var i=0;i0?aB=currentT:aA=currentT}while(Math.abs(currentX)>SUBDIVISION_PRECISION&&++i{console.log(`Removing unlikely result '${result.text}'`)})),!1):result.start.isValidDate()?result.end&&!result.end.isValidDate()?(context.debug((()=>{console.log(`Removing invalid result: ${result} (${result.end})`)})),!1):!this.strictMode||this.isStrictModeValid(context,result):(context.debug((()=>{console.log(`Removing invalid result: ${result} (${result.start})`)})),!1)}isStrictModeValid(context,result){return result.start.isOnlyWeekdayComponent()?(context.debug((()=>{console.log(`(Strict) Removing weekday only component: ${result} (${result.end})`)})),!1):!!(!result.start.isOnlyTime()||result.start.isCertain("hour")&&result.start.isCertain("minute"))||(context.debug((()=>{console.log(`(Strict) Removing uncertain time component: ${result} (${result.end})`)})),!1)}}exports.default=UnlikelyFormatFilter},"2wtq":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(target){for(var i=1;i1&&void 0!==arguments[1]?arguments[1]:(0,_LocaleUtils.getFirstDayOfWeek)(),fixedWeeks=arguments[2],daysInMonth=getDaysInMonth(d),dayArray=[],week=[],weekArray=[],i=1;i<=daysInMonth;i+=1)dayArray.push(new Date(d.getFullYear(),d.getMonth(),i,12));dayArray.forEach((function(day){week.length>0&&day.getDay()===firstDayOfWeek&&(weekArray.push(week),week=[]),week.push(day),dayArray.indexOf(day)===dayArray.length-1&&weekArray.push(week)}));for(var firstWeek=weekArray[0],_i=7-firstWeek.length;_i>0;_i-=1){var outsideDate=(0,_DateUtils.clone)(firstWeek[0]);outsideDate.setDate(firstWeek[0].getDate()-1),firstWeek.unshift(outsideDate)}for(var lastWeek=weekArray[weekArray.length-1],_i2=lastWeek.length;_i2<7;_i2+=1){var _outsideDate=(0,_DateUtils.clone)(lastWeek[lastWeek.length-1]);_outsideDate.setDate(lastWeek[lastWeek.length-1].getDate()+1),lastWeek.push(_outsideDate)}if(fixedWeeks&&weekArray.length<6)for(var lastExtraWeek=void 0,_i3=weekArray.length;_i3<6;_i3+=1){for(var lastDay=(lastExtraWeek=weekArray[weekArray.length-1])[lastExtraWeek.length-1],extraWeek=[],j=0;j<7;j+=1){var _outsideDate2=(0,_DateUtils.clone)(lastDay);_outsideDate2.setDate(lastDay.getDate()+j+1),extraWeek.push(_outsideDate2)}weekArray.push(extraWeek)}return weekArray},exports.startOfMonth=function startOfMonth(d){var newDate=(0,_DateUtils.clone)(d);return newDate.setDate(1),newDate.setHours(12,0,0,0),newDate},exports.getDayNodes=function getDayNodes(node,classNames){var outsideClassName=void 0;outsideClassName=classNames===_classNames2.default?classNames.day+"--"+classNames.outside:""+classNames.outside;var dayQuery=classNames.day.replace(/ /g,"."),outsideDayQuery=outsideClassName.replace(/ /g,"."),selector="."+dayQuery+":not(."+outsideDayQuery+")";return node.querySelectorAll(selector)},exports.nodeListToArray=function nodeListToArray(nodeList){return Array.prototype.slice.call(nodeList,0)},exports.hasOwnProp=function hasOwnProp(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)};var _DateUtils=__webpack_require__("TqUV"),_LocaleUtils=__webpack_require__("pqdI"),_classNames2=function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__("2XPZ"));function getFirstDayOfMonth(d){return new Date(d.getFullYear(),d.getMonth(),1,12)}function getDaysInMonth(d){var resultDate=getFirstDayOfMonth(d);return resultDate.setMonth(resultDate.getMonth()+1),resultDate.setDate(resultDate.getDate()-1),resultDate.getDate()}},"3Niq":function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const AbstractMergeDateRangeRefiner_1=__importDefault(__webpack_require__("fx0C"));class JPMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default{patternBetween(){return/^\s*(から|ー|-)\s*$/i}}exports.default=JPMergeDateRangeRefiner},"3lEq":function(module,exports,__webpack_require__){"use strict";function _typeof(obj){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(obj){return typeof obj}:function _typeof(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function exportedEqual(a,b){try{return equal(a,b)}catch(error){if(error.message&&error.message.match(/stack|recursion/i))return console.warn("Warning: react-fast-compare does not handle circular references.",error.name,error.message),!1;throw error}};var isArray=Array.isArray,keyList=Object.keys,hasProp=Object.prototype.hasOwnProperty;function equal(a,b){if(a===b)return!0;if(a&&b&&"object"==_typeof(a)&&"object"==_typeof(b)){var i,length,key,arrA=isArray(a),arrB=isArray(b);if(arrA&&arrB){if((length=a.length)!=b.length)return!1;for(i=length;0!=i--;)if(!equal(a[i],b[i]))return!1;return!0}if(arrA!=arrB)return!1;var dateA=a instanceof Date,dateB=b instanceof Date;if(dateA!=dateB)return!1;if(dateA&&dateB)return a.getTime()==b.getTime();var regexpA=a instanceof RegExp,regexpB=b instanceof RegExp;if(regexpA!=regexpB)return!1;if(regexpA&®expB)return a.toString()==b.toString();var keys=keyList(a);if((length=keys.length)!==keyList(b).length)return!1;for(i=length;0!=i--;)if(!hasProp.call(b,keys[i]))return!1;for(i=length;0!=i--;)if(!("_owner"===(key=keys[i])&&a.$$typeof||equal(a[key],b[key])))return!1;return!0}return a!=a&&b!=b}},"4GEM":function(module,exports,__webpack_require__){var e;window,module.exports=(e=__webpack_require__("cDcd"),function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/",r(r.s=12)}([function(t,r){t.exports=e},function(e,t,r){e.exports=r(11)()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r0?e:"Unknown"}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}(t,["children"]);return i.default.createElement("div",n({},o,{ref:function(t){return e.node=t}}),r)}}]),t}();f.contextTypes={addScrollArea:l.default.func.isRequired,removeScrollArea:l.default.func.isRequired},t.default=f},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;window.scroll(e,t)}},function(e,t,r){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,r){"use strict";var n=function(e){};e.exports=function(e,t,r,o,u,i,l,c){if(n(t),!e){var a;if(void 0===t)a=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var f=[r,o,u,i,l,c],s=0;(a=new Error(t.replace(/%s/g,(function(){return f[s++]})))).name="Invariant Violation"}throw a.framesToPop=1,a}}},function(e,t,r){"use strict";function n(e){return function(){return e}}var o=function(){};o.thatReturns=n,o.thatReturnsFalse=n(!1),o.thatReturnsTrue=n(!0),o.thatReturnsNull=n(null),o.thatReturnsThis=function(){return this},o.thatReturnsArgument=function(e){return e},e.exports=o},function(e,t,r){"use strict";var n=r(10),o=r(9),u=r(8);e.exports=function(){function e(e,t,r,n,i,l){l!==u&&o(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return r.checkPropTypes=n,r.PropTypes=r,r}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(2);Object.defineProperty(t,"ScrollTo",{enumerable:!0,get:function(){return i(n).default}});var o=r(6);Object.defineProperty(t,"ScrollArea",{enumerable:!0,get:function(){return i(o).default}});var u=r(4);function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"ScrollToHOC",{enumerable:!0,get:function(){return i(u).default}})}]))},"4KnI":function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("Jvgq"),results_1=__webpack_require__("MpCh"),dayjs_1=__importDefault(__webpack_require__("Wgwc")),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),pattern_1=__webpack_require__("omFw"),PATTERN=new RegExp(`(в прошлом|на прошлой|на следующей|в следующем|на этой|в этом)\\s*(${pattern_1.matchAnyPattern(constants_1.TIME_UNIT_DICTIONARY)})(?=\\s*)${constants_1.REGEX_PARTS.rightBoundary}`,constants_1.REGEX_PARTS.flags);class RURelativeDateFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return constants_1.REGEX_PARTS.leftBoundary}innerPattern(){return PATTERN}innerExtract(context,match){const modifier=match[1].toLowerCase(),unitWord=match[2].toLowerCase(),timeunit=constants_1.TIME_UNIT_DICTIONARY[unitWord];if("на следующей"==modifier||"в следующем"==modifier){const timeUnits={};return timeUnits[timeunit]=1,results_1.ParsingComponents.createRelativeFromReference(context.reference,timeUnits)}if("в прошлом"==modifier||"на прошлой"==modifier){const timeUnits={};return timeUnits[timeunit]=-1,results_1.ParsingComponents.createRelativeFromReference(context.reference,timeUnits)}const components=context.createParsingComponents();let date=dayjs_1.default(context.reference.instant);return timeunit.match(/week/i)?(date=date.add(-date.get("d"),"d"),components.imply("day",date.date()),components.imply("month",date.month()+1),components.imply("year",date.year())):timeunit.match(/month/i)?(date=date.add(1-date.date(),"d"),components.imply("day",date.date()),components.assign("year",date.year()),components.assign("month",date.month()+1)):timeunit.match(/year/i)&&(date=date.add(1-date.date(),"d"),date=date.add(-date.month(),"month"),components.imply("day",date.date()),components.imply("month",date.month()+1),components.assign("year",date.year())),components}}exports.default=RURelativeDateFormatParser},"4LgJ":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.default=class OverlapRemovalRefiner{refine(context,results){if(results.length<2)return results;const filteredResults=[];let prevResult=results[0];for(let i=1;iprevResult.text.length&&(prevResult=result):(filteredResults.push(prevResult),prevResult=result)}return null!=prevResult&&filteredResults.push(prevResult),filteredResults}}},"4UVn":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("ksW2"),results_1=__webpack_require__("MpCh"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),PATTERN=new RegExp(`(${constants_1.TIME_UNITS_PATTERN})\\s{0,5}(?:later|after|from now|henceforth|forward|out)(?=(?:\\W|$))`,"i"),STRICT_PATTERN=new RegExp("("+constants_1.TIME_UNITS_PATTERN+")(later|from now)(?=(?:\\W|$))","i");class ENTimeUnitLaterFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{constructor(strictMode){super(),this.strictMode=strictMode}innerPattern(){return this.strictMode?STRICT_PATTERN:PATTERN}innerExtract(context,match){const fragments=constants_1.parseTimeUnits(match[1]);return results_1.ParsingComponents.createRelativeFromReference(context.reference,fragments)}}exports.default=ENTimeUnitLaterFormatParser},"4W4v":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const index_1=__webpack_require__("6EsV"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+");class FRCasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(context){return/(cet?)?\s*(matin|soir|après-midi|aprem|a midi|à minuit)(?=\W|$)/i}innerExtract(context,match){const suffixLower=match[2].toLowerCase(),component=context.createParsingComponents();switch(suffixLower){case"après-midi":case"aprem":component.imply("hour",14),component.imply("minute",0),component.imply("meridiem",index_1.Meridiem.PM);break;case"soir":component.imply("hour",18),component.imply("minute",0),component.imply("meridiem",index_1.Meridiem.PM);break;case"matin":component.imply("hour",8),component.imply("minute",0),component.imply("meridiem",index_1.Meridiem.AM);break;case"a midi":component.imply("hour",12),component.imply("minute",0),component.imply("meridiem",index_1.Meridiem.AM);break;case"à minuit":component.imply("hour",0),component.imply("meridiem",index_1.Meridiem.AM)}return component}}exports.default=FRCasualTimeParser},"4caT":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const index_1=__webpack_require__("6EsV"),FIRST_REG_PATTERN=new RegExp("(^|\\s|T)(?:(?:[àa])\\s*)?(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i"),SECOND_REG_PATTERN=new RegExp("^\\s*(\\-|\\–|\\~|\\〜|[àa]|\\?)\\s*(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i");class FRSpecificTimeExpressionParser{pattern(context){return FIRST_REG_PATTERN}extract(context,match){const result=context.createParsingResult(match.index+match[1].length,match[0].substring(match[1].length));if(result.text.match(/^\d{4}$/))return match.index+=match[0].length,null;if(result.start=FRSpecificTimeExpressionParser.extractTimeComponent(result.start.clone(),match),!result.start)return match.index+=match[0].length,null;const remainingText=context.text.substring(match.index+match[0].length),secondMatch=SECOND_REG_PATTERN.exec(remainingText);return secondMatch&&(result.end=FRSpecificTimeExpressionParser.extractTimeComponent(result.start.clone(),secondMatch),result.end&&(result.text+=secondMatch[0])),result}static extractTimeComponent(extractingComponents,match){let hour=0,minute=0,meridiem=null;if(hour=parseInt(match[2]),null!=match[3]&&(minute=parseInt(match[3])),minute>=60||hour>24)return null;if(hour>=12&&(meridiem=index_1.Meridiem.PM),null!=match[5]){if(hour>12)return null;const ampm=match[5][0].toLowerCase();"a"==ampm&&(meridiem=index_1.Meridiem.AM,12==hour&&(hour=0)),"p"==ampm&&(meridiem=index_1.Meridiem.PM,12!=hour&&(hour+=12))}if(extractingComponents.assign("hour",hour),extractingComponents.assign("minute",minute),null!==meridiem?extractingComponents.assign("meridiem",meridiem):hour<12?extractingComponents.imply("meridiem",index_1.Meridiem.AM):extractingComponents.imply("meridiem",index_1.Meridiem.PM),null!=match[4]){const second=parseInt(match[4]);if(second>=60)return null;extractingComponents.assign("second",second)}return extractingComponents}}exports.default=FRSpecificTimeExpressionParser},"4po4":function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const AbstractMergeDateTimeRefiner_1=__importDefault(__webpack_require__("Gqx+"));class ENMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner_1.default{patternBetween(){return new RegExp("^\\s*(T|at|after|before|on|of|,|-)?\\s*$")}}exports.default=ENMergeDateTimeRefiner},"4sGF":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const abstractRefiners_1=__webpack_require__("LMHj"),results_1=__webpack_require__("MpCh"),constants_1=__webpack_require__("ksW2"),timeunits_1=__webpack_require__("aWHD");function hasImpliedEarlierReferenceDate(result){return null!=result.text.match(/\s+(before|from)$/i)}class ENMergeRelativeDateRefiner extends abstractRefiners_1.MergingRefiner{patternBetween(){return/^\s*$/i}shouldMergeResults(textBetween,currentResult,nextResult){return!!textBetween.match(this.patternBetween())&&(!(!hasImpliedEarlierReferenceDate(currentResult)&&!function hasImpliedLaterReferenceDate(result){return null!=result.text.match(/\s+(after|since)$/i)}(currentResult))&&(!!nextResult.start.get("day")&&!!nextResult.start.get("month")&&!!nextResult.start.get("year")))}mergeResults(textBetween,currentResult,nextResult){let timeUnits=constants_1.parseTimeUnits(currentResult.text);hasImpliedEarlierReferenceDate(currentResult)&&(timeUnits=timeunits_1.reverseTimeUnits(timeUnits));const components=results_1.ParsingComponents.createRelativeFromReference(new results_1.ReferenceWithTimezone(nextResult.start.date()),timeUnits);return new results_1.ParsingResult(nextResult.reference,currentResult.index,`${currentResult.text}${textBetween}${nextResult.text}`,components)}}exports.default=ENMergeRelativeDateRefiner},"59S1":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resultsAriaMessage=exports.optionFocusAriaMessage=exports.valueFocusAriaMessage=exports.valueEventAriaMessage=exports.instructionsAriaMessage=void 0;exports.instructionsAriaMessage=function instructionsAriaMessage(event){var context=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},isSearchable=context.isSearchable,isMulti=context.isMulti,label=context.label,isDisabled=context.isDisabled;switch(event){case"menu":return"Use Up and Down to choose options".concat(isDisabled?"":", press Enter to select the currently focused option",", press Escape to exit the menu, press Tab to select the option and exit the menu.");case"input":return"".concat(label||"Select"," is focused ").concat(isSearchable?",type to refine list":"",", press Down to open the menu, ").concat(isMulti?" press left to focus selected values":"");case"value":return"Use left and right to toggle between focused values, press Backspace to remove the currently focused value"}};exports.valueEventAriaMessage=function valueEventAriaMessage(event,context){var value=context.value,isDisabled=context.isDisabled;if(value)switch(event){case"deselect-option":case"pop-value":case"remove-value":return"option ".concat(value,", deselected.");case"select-option":return"option ".concat(value,isDisabled?" is disabled. Select another option.":", selected.")}};exports.valueFocusAriaMessage=function valueFocusAriaMessage(_ref){var focusedValue=_ref.focusedValue,getOptionLabel=_ref.getOptionLabel,selectValue=_ref.selectValue;return"value ".concat(getOptionLabel(focusedValue)," focused, ").concat(selectValue.indexOf(focusedValue)+1," of ").concat(selectValue.length,".")};exports.optionFocusAriaMessage=function optionFocusAriaMessage(_ref2){var focusedOption=_ref2.focusedOption,getOptionLabel=_ref2.getOptionLabel,options=_ref2.options;return"option ".concat(getOptionLabel(focusedOption)," focused").concat(focusedOption.isDisabled?" disabled":"",", ").concat(options.indexOf(focusedOption)+1," of ").concat(options.length,".")};exports.resultsAriaMessage=function resultsAriaMessage(_ref3){var inputValue=_ref3.inputValue,screenReaderMessage=_ref3.screenReaderMessage;return"".concat(screenReaderMessage).concat(inputValue?" for search term "+inputValue:"",".")}},"5Jgo":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const years_1=__webpack_require__("pKWP"),PATTERN=new RegExp("([^\\d]|^)([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})(?:[\\/\\.\\-]([0-9]{4}|[0-9]{2}))?(\\W|$)","i");exports.default=class SlashDateFormatParser{constructor(littleEndian){this.groupNumberMonth=littleEndian?3:2,this.groupNumberDay=littleEndian?2:3}pattern(){return PATTERN}extract(context,match){if(0==match[1].length&&match.index>0&&match.index="0"&&previousChar<="9")return}const index=match.index+match[1].length,text=match[0].substr(match[1].length,match[0].length-match[1].length-match[5].length);if(text.match(/^\d\.\d$/)||text.match(/^\d\.\d{1,2}\.\d{1,2}\s*$/))return;if(!match[4]&&match[0].indexOf("/")<0)return;const result=context.createParsingResult(index,text);let month=parseInt(match[this.groupNumberMonth]),day=parseInt(match[this.groupNumberDay]);if((month<1||month>12)&&month>12){if(!(day>=1&&day<=12&&month<=31))return null;[day,month]=[month,day]}if(day<1||day>31)return null;if(result.start.assign("day",day),result.start.assign("month",month),match[4]){const rawYearNumber=parseInt(match[4]),year=years_1.findMostLikelyADYear(rawYearNumber);result.start.assign("year",year)}else{const year=years_1.findYearClosestToRef(context.refDate,day,month);result.start.imply("year",year)}return result}}},"5Nnj":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseYear=exports.YEAR_PATTERN=exports.MONTH_DICTIONARY=exports.WEEKDAY_DICTIONARY=void 0,exports.WEEKDAY_DICTIONARY={domingo:0,dom:0,lunes:1,lun:1,martes:2,mar:2,"miércoles":3,miercoles:3,"mié":3,mie:3,jueves:4,jue:4,viernes:5,vie:5,"sábado":6,sabado:6,"sáb":6,sab:6},exports.MONTH_DICTIONARY={enero:1,ene:1,"ene.":1,febrero:2,feb:2,"feb.":2,marzo:3,mar:3,"mar.":3,abril:4,abr:4,"abr.":4,mayo:5,may:5,"may.":5,junio:6,jun:6,"jun.":6,julio:7,jul:7,"jul.":7,agosto:8,ago:8,"ago.":8,septiembre:9,setiembre:9,sep:9,"sep.":9,octubre:10,oct:10,"oct.":10,noviembre:11,nov:11,"nov.":11,diciembre:12,dic:12,"dic.":12},exports.YEAR_PATTERN="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?",exports.parseYear=function parseYear(match){if(match.match(/^[0-9]{1,4}$/)){let yearNumber=parseInt(match);return yearNumber<100&&(yearNumber+=yearNumber>50?1900:2e3),yearNumber}return match.match(/a\.?\s*c\.?/i)?(match=match.replace(/a\.?\s*c\.?/i,""),-parseInt(match)):parseInt(match)}},"5Q0V":function(module,exports,__webpack_require__){var _typeof=__webpack_require__("cDf5").default;module.exports=function _toPrimitive(input,hint){if("object"!==_typeof(input)||null===input)return input;var prim=input[Symbol.toPrimitive];if(void 0!==prim){var res=prim.call(input,hint||"default");if("object"!==_typeof(res))return res;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===hint?String:Number)(input)},module.exports.__esModule=!0,module.exports.default=module.exports},"5bE3":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.defaultComponents=exports.components=void 0;var _containers=__webpack_require__("2cv3"),_indicators=__webpack_require__("+URl"),_Control=_interopRequireDefault(__webpack_require__("rc6b")),_Group=_interopRequireWildcard(__webpack_require__("n929")),_Input=_interopRequireDefault(__webpack_require__("KIQE")),_Menu=_interopRequireWildcard(__webpack_require__("Avrx")),_MultiValue=_interopRequireWildcard(__webpack_require__("lQ6M")),_Option=_interopRequireDefault(__webpack_require__("SrCC")),_Placeholder=_interopRequireDefault(__webpack_require__("BCie")),_SingleValue=_interopRequireDefault(__webpack_require__("+8qv"));function _interopRequireWildcard(obj){if(obj&&obj.__esModule)return obj;var newObj={};if(null!=obj)for(var key in obj)if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};desc.get||desc.set?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,newObj}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}var components={ClearIndicator:_indicators.ClearIndicator,Control:_Control.default,DropdownIndicator:_indicators.DropdownIndicator,DownChevron:_indicators.DownChevron,CrossIcon:_indicators.CrossIcon,Group:_Group.default,GroupHeading:_Group.GroupHeading,IndicatorsContainer:_containers.IndicatorsContainer,IndicatorSeparator:_indicators.IndicatorSeparator,Input:_Input.default,LoadingIndicator:_indicators.LoadingIndicator,Menu:_Menu.default,MenuList:_Menu.MenuList,MenuPortal:_Menu.MenuPortal,LoadingMessage:_Menu.LoadingMessage,NoOptionsMessage:_Menu.NoOptionsMessage,MultiValue:_MultiValue.default,MultiValueContainer:_MultiValue.MultiValueContainer,MultiValueLabel:_MultiValue.MultiValueLabel,MultiValueRemove:_MultiValue.MultiValueRemove,Option:_Option.default,Placeholder:_Placeholder.default,SelectContainer:_containers.SelectContainer,SingleValue:_SingleValue.default,ValueContainer:_containers.ValueContainer};exports.components=components;exports.defaultComponents=function defaultComponents(props){return function _objectSpread(target){for(var i=1;i1?arguments[1]:void 0,candidate=String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toLowerCase(),optionValue=String(option.value).toLowerCase(),optionLabel=String(option.label).toLowerCase();return optionValue===candidate||optionLabel===candidate},defaultProps=function _objectSpread(target){for(var i=1;i=0||(target[key]=source[key]);return target},module.exports.__esModule=!0,module.exports.default=module.exports},"8PcY":function(module,exports,__webpack_require__){"use strict";exports.__esModule=!0,exports.getChildMapping=getChildMapping,exports.mergeChildMappings=mergeChildMappings,exports.getInitialChildMapping=function getInitialChildMapping(props,onExited){return getChildMapping(props.children,(function(child){return(0,_react.cloneElement)(child,{onExited:onExited.bind(null,child),in:!0,appear:getProp(child,"appear",props),enter:getProp(child,"enter",props),exit:getProp(child,"exit",props)})}))},exports.getNextChildMapping=function getNextChildMapping(nextProps,prevChildMapping,onExited){var nextChildMapping=getChildMapping(nextProps.children),children=mergeChildMappings(prevChildMapping,nextChildMapping);return Object.keys(children).forEach((function(key){var child=children[key];if((0,_react.isValidElement)(child)){var hasPrev=key in prevChildMapping,hasNext=key in nextChildMapping,prevChild=prevChildMapping[key],isLeaving=(0,_react.isValidElement)(prevChild)&&!prevChild.props.in;!hasNext||hasPrev&&!isLeaving?hasNext||!hasPrev||isLeaving?hasNext&&hasPrev&&(0,_react.isValidElement)(prevChild)&&(children[key]=(0,_react.cloneElement)(child,{onExited:onExited.bind(null,child),in:prevChild.props.in,exit:getProp(child,"exit",nextProps),enter:getProp(child,"enter",nextProps)})):children[key]=(0,_react.cloneElement)(child,{in:!1}):children[key]=(0,_react.cloneElement)(child,{onExited:onExited.bind(null,child),in:!0,exit:getProp(child,"exit",nextProps),enter:getProp(child,"enter",nextProps)})}})),children};var _react=__webpack_require__("cDcd");function getChildMapping(children,mapFn){var result=Object.create(null);return children&&_react.Children.map(children,(function(c){return c})).forEach((function(child){result[child.key]=function mapper(child){return mapFn&&(0,_react.isValidElement)(child)?mapFn(child):child}(child)})),result}function mergeChildMappings(prev,next){function getValueForKey(key){return key in next?next[key]:prev[key]}prev=prev||{},next=next||{};var i,nextKeysPending=Object.create(null),pendingKeys=[];for(var prevKey in prev)prevKey in next?pendingKeys.length&&(nextKeysPending[prevKey]=pendingKeys,pendingKeys=[]):pendingKeys.push(prevKey);var childMapping={};for(var nextKey in next){if(nextKeysPending[nextKey])for(i=0;i1)for(var i=1;i50?1900:2e3),yearNumber};const SINGLE_TIME_UNIT_PATTERN=`(${exports.NUMBER_PATTERN})\\s{0,5}(${pattern_1.matchAnyPattern(exports.TIME_UNIT_DICTIONARY)})\\s{0,5}`,SINGLE_TIME_UNIT_REGEX=new RegExp(SINGLE_TIME_UNIT_PATTERN,"i");function collectDateTimeFragment(fragments,match){const num=parseNumberPattern(match[1]);fragments[exports.TIME_UNIT_DICTIONARY[match[2].toLowerCase()]]=num}exports.TIME_UNITS_PATTERN=pattern_1.repeatedTimeunitPattern("",SINGLE_TIME_UNIT_PATTERN),exports.parseTimeUnits=function parseTimeUnits(timeunitText){const fragments={};let remainingText=timeunitText,match=SINGLE_TIME_UNIT_REGEX.exec(remainingText);for(;match;)collectDateTimeFragment(fragments,match),remainingText=remainingText.substring(match[0].length),match=SINGLE_TIME_UNIT_REGEX.exec(remainingText);return fragments}},AhAL:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const AbstractTimeExpressionParser_1=__webpack_require__("MXb4");class ESTimeExpressionParser extends AbstractTimeExpressionParser_1.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:aslas|deslas|las?|al?|de|del)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\–|\\~|\\〜|a(?:l)?|\\?)\\s*"}}exports.default=ESTimeExpressionParser},Avrx:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMenuPlacement=getMenuPlacement,exports.MenuPortal=exports.menuPortalCSS=exports.LoadingMessage=exports.NoOptionsMessage=exports.loadingMessageCSS=exports.noOptionsMessageCSS=exports.MenuList=exports.menuListCSS=exports.default=exports.MenuPlacer=exports.menuCSS=void 0;var _react=function _interopRequireWildcard(obj){if(obj&&obj.__esModule)return obj;var newObj={};if(null!=obj)for(var key in obj)if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};desc.get||desc.set?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,newObj}(__webpack_require__("cDcd")),_emotion=__webpack_require__("PAeb"),_reactDom=__webpack_require__("faye"),_propTypes=function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__("rf6O")),_utils=__webpack_require__("b+PA");function _typeof(obj){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(obj){return typeof obj}:function _typeof(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _extends(){return _extends=Object.assign||function(target){for(var i=1;i=menuHeight)return{placement:"bottom",maxHeight:maxHeight};if(scrollSpaceBelow>=menuHeight&&!isFixedPosition)return shouldScroll&&(0,_utils.animatedScrollTo)(scrollParent,scrollDown,160),{placement:"bottom",maxHeight:maxHeight};if(!isFixedPosition&&scrollSpaceBelow>=minHeight||isFixedPosition&&viewSpaceBelow>=minHeight)return shouldScroll&&(0,_utils.animatedScrollTo)(scrollParent,scrollDown,160),{placement:"bottom",maxHeight:isFixedPosition?viewSpaceBelow-marginBottom:scrollSpaceBelow-marginBottom};if("auto"===placement||isFixedPosition){var _constrainedHeight=maxHeight,spaceAbove=isFixedPosition?viewSpaceAbove:scrollSpaceAbove;return spaceAbove>=minHeight&&(_constrainedHeight=Math.min(spaceAbove-marginBottom-spacing.controlHeight,maxHeight)),{placement:"top",maxHeight:_constrainedHeight}}if("bottom"===placement)return(0,_utils.scrollTo)(scrollParent,scrollDown),{placement:"bottom",maxHeight:maxHeight};break;case"top":if(viewSpaceAbove>=menuHeight)return{placement:"top",maxHeight:maxHeight};if(scrollSpaceAbove>=menuHeight&&!isFixedPosition)return shouldScroll&&(0,_utils.animatedScrollTo)(scrollParent,scrollUp,160),{placement:"top",maxHeight:maxHeight};if(!isFixedPosition&&scrollSpaceAbove>=minHeight||isFixedPosition&&viewSpaceAbove>=minHeight){var _constrainedHeight2=maxHeight;return(!isFixedPosition&&scrollSpaceAbove>=minHeight||isFixedPosition&&viewSpaceAbove>=minHeight)&&(_constrainedHeight2=isFixedPosition?viewSpaceAbove-marginTop:scrollSpaceAbove-marginTop),shouldScroll&&(0,_utils.animatedScrollTo)(scrollParent,scrollUp,160),{placement:"top",maxHeight:_constrainedHeight2}}return{placement:"bottom",maxHeight:maxHeight};default:throw new Error('Invalid placement provided "'.concat(placement,'".'))}return defaultState}var coercePlacement=function coercePlacement(p){return"auto"===p?"bottom":p};exports.menuCSS=function menuCSS(_ref2){var _ref3,placement=_ref2.placement,_ref2$theme=_ref2.theme,borderRadius=_ref2$theme.borderRadius,spacing=_ref2$theme.spacing,colors=_ref2$theme.colors;return _defineProperty(_ref3={label:"menu"},function alignToControl(placement){return placement?{bottom:"top",top:"bottom"}[placement]:"bottom"}(placement),"100%"),_defineProperty(_ref3,"backgroundColor",colors.neutral0),_defineProperty(_ref3,"borderRadius",borderRadius),_defineProperty(_ref3,"boxShadow","0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)"),_defineProperty(_ref3,"marginBottom",spacing.menuGutter),_defineProperty(_ref3,"marginTop",spacing.menuGutter),_defineProperty(_ref3,"position","absolute"),_defineProperty(_ref3,"width","100%"),_defineProperty(_ref3,"zIndex",1),_ref3};var MenuPlacer=function(_Component){function MenuPlacer(){var _getPrototypeOf2,_this;_classCallCheck(this,MenuPlacer);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return _defineProperty(_assertThisInitialized(_assertThisInitialized(_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(MenuPlacer)).call.apply(_getPrototypeOf2,[this].concat(args))))),"state",{maxHeight:_this.props.maxMenuHeight,placement:null}),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getPlacement",(function(ref){var _this$props=_this.props,minMenuHeight=_this$props.minMenuHeight,maxMenuHeight=_this$props.maxMenuHeight,menuPlacement=_this$props.menuPlacement,menuPosition=_this$props.menuPosition,menuShouldScrollIntoView=_this$props.menuShouldScrollIntoView,theme=_this$props.theme,getPortalPlacement=_this.context.getPortalPlacement;if(ref){var isFixedPosition="fixed"===menuPosition,state=getMenuPlacement({maxHeight:maxMenuHeight,menuEl:ref,minHeight:minMenuHeight,placement:menuPlacement,shouldScroll:menuShouldScrollIntoView&&!isFixedPosition,isFixedPosition:isFixedPosition,theme:theme});getPortalPlacement&&getPortalPlacement(state),_this.setState(state)}})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getUpdatedProps",(function(){var menuPlacement=_this.props.menuPlacement,placement=_this.state.placement||coercePlacement(menuPlacement);return function _objectSpread(target){for(var i=1;i31)return null;const components=context.createParsingComponents({day:day,month:month});if(match[4]){const year=constants_3.parseYear(match[4]);components.assign("year",year)}else{const year=years_1.findYearClosestToRef(context.refDate,day,month);components.imply("year",year)}if(!match[3])return components;const endDate=constants_2.parseOrdinalNumberPattern(match[3]),result=context.createParsingResult(match.index,match[0]);return result.start=components,result.end=components.clone(),result.end.assign("day",endDate),result}}exports.default=ENMonthNameMiddleEndianParser},G4RC:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createConfiguration=exports.createCasualConfiguration=exports.parseDate=exports.parse=exports.strict=exports.casual=void 0;const JPStandardParser_1=__importDefault(__webpack_require__("LvKx")),JPMergeDateRangeRefiner_1=__importDefault(__webpack_require__("3Niq")),JPCasualDateParser_1=__importDefault(__webpack_require__("OOKS")),chrono_1=__webpack_require__("aLSU");function createCasualConfiguration(){const option=createConfiguration();return option.parsers.unshift(new JPCasualDateParser_1.default),option}function createConfiguration(){return{parsers:[new JPStandardParser_1.default],refiners:[new JPMergeDateRangeRefiner_1.default]}}exports.casual=new chrono_1.Chrono(createCasualConfiguration()),exports.strict=new chrono_1.Chrono(createConfiguration()),exports.parse=function parse(text,ref,option){return exports.casual.parse(text,ref,option)},exports.parseDate=function parseDate(text,ref,option){return exports.casual.parseDate(text,ref,option)},exports.createCasualConfiguration=createCasualConfiguration,exports.createConfiguration=createConfiguration},G6Ui:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseTimeUnits=exports.TIME_UNITS_PATTERN=exports.parseYear=exports.YEAR_PATTERN=exports.parseOrdinalNumberPattern=exports.ORDINAL_NUMBER_PATTERN=exports.parseNumberPattern=exports.NUMBER_PATTERN=exports.TIME_UNIT_DICTIONARY=exports.ORDINAL_WORD_DICTIONARY=exports.INTEGER_WORD_DICTIONARY=exports.MONTH_DICTIONARY=exports.WEEKDAY_DICTIONARY=void 0;const pattern_1=__webpack_require__("omFw"),years_1=__webpack_require__("pKWP");function parseNumberPattern(match){const num=match.toLowerCase();return void 0!==exports.INTEGER_WORD_DICTIONARY[num]?exports.INTEGER_WORD_DICTIONARY[num]:"paar"===num?2:"half"===num||num.match(/halve?/)?.5:parseFloat(num.replace(",","."))}exports.WEEKDAY_DICTIONARY={zondag:0,zon:0,"zon.":0,zo:0,"zo.":0,maandag:1,ma:1,"ma.":1,dinsdag:2,din:2,"din.":2,di:2,"di.":2,woensdag:3,woe:3,"woe.":3,wo:3,"wo.":3,donderdag:4,dond:4,"dond.":4,do:4,"do.":4,vrijdag:5,vrij:5,"vrij.":5,vr:5,"vr.":5,zaterdag:6,zat:6,"zat.":6,za:6,"za.":6},exports.MONTH_DICTIONARY={januari:1,jan:1,"jan.":1,februari:2,feb:2,"feb.":2,maart:3,mar:3,"mar.":3,april:4,apr:4,"apr.":4,mei:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,augustus:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,"sept.":9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,december:12,dec:12,"dec.":12},exports.INTEGER_WORD_DICTIONARY={een:1,twee:2,drie:3,vier:4,vijf:5,zes:6,zeven:7,acht:8,negen:9,tien:10,elf:11,twaalf:12},exports.ORDINAL_WORD_DICTIONARY={eerste:1,tweede:2,derde:3,vierde:4,vijfde:5,zesde:6,zevende:7,achtste:8,negende:9,tiende:10,elfde:11,twaalfde:12,dertiende:13,veertiende:14,vijftiende:15,zestiende:16,zeventiende:17,achttiende:18,negentiende:19,twintigste:20,eenentwintigste:21,"tweeëntwintigste":22,drieentwintigste:23,vierentwintigste:24,vijfentwintigste:25,zesentwintigste:26,zevenentwintigste:27,achtentwintig:28,negenentwintig:29,dertigste:30,eenendertigste:31},exports.TIME_UNIT_DICTIONARY={sec:"second",second:"second",seconden:"second",min:"minute",mins:"minute",minute:"minute",minuut:"minute",minuten:"minute",minuutje:"minute",h:"hour",hr:"hour",hrs:"hour",uur:"hour",u:"hour",uren:"hour",dag:"d",dagen:"d",week:"week",weken:"week",maand:"month",maanden:"month",jaar:"year",jr:"year",jaren:"year"},exports.NUMBER_PATTERN=`(?:${pattern_1.matchAnyPattern(exports.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+[\\.,][0-9]+|halve?|half|paar)`,exports.parseNumberPattern=parseNumberPattern,exports.ORDINAL_NUMBER_PATTERN=`(?:${pattern_1.matchAnyPattern(exports.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:ste|de)?)`,exports.parseOrdinalNumberPattern=function parseOrdinalNumberPattern(match){let num=match.toLowerCase();return void 0!==exports.ORDINAL_WORD_DICTIONARY[num]?exports.ORDINAL_WORD_DICTIONARY[num]:(num=num.replace(/(?:ste|de)$/i,""),parseInt(num))},exports.YEAR_PATTERN="(?:[1-9][0-9]{0,3}\\s*(?:voor Christus|na Christus)|[1-2][0-9]{3}|[5-9][0-9])",exports.parseYear=function parseYear(match){if(/voor Christus/i.test(match))return match=match.replace(/voor Christus/i,""),-parseInt(match);if(/na Christus/i.test(match))return match=match.replace(/na Christus/i,""),parseInt(match);const rawYearNumber=parseInt(match);return years_1.findMostLikelyADYear(rawYearNumber)};const SINGLE_TIME_UNIT_PATTERN=`(${exports.NUMBER_PATTERN})\\s{0,5}(${pattern_1.matchAnyPattern(exports.TIME_UNIT_DICTIONARY)})\\s{0,5}`,SINGLE_TIME_UNIT_REGEX=new RegExp(SINGLE_TIME_UNIT_PATTERN,"i");function collectDateTimeFragment(fragments,match){const num=parseNumberPattern(match[1]);fragments[exports.TIME_UNIT_DICTIONARY[match[2].toLowerCase()]]=num}exports.TIME_UNITS_PATTERN=pattern_1.repeatedTimeunitPattern("(?:(?:binnen|in)\\s*)?",SINGLE_TIME_UNIT_PATTERN),exports.parseTimeUnits=function parseTimeUnits(timeunitText){const fragments={};let remainingText=timeunitText,match=SINGLE_TIME_UNIT_REGEX.exec(remainingText);for(;match;)collectDateTimeFragment(fragments,match),remainingText=remainingText.substring(match[0].length),match=SINGLE_TIME_UNIT_REGEX.exec(remainingText);return fragments}},GBDt:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createConfiguration=exports.createCasualConfiguration=exports.parseDate=exports.parse=exports.strict=exports.casual=void 0;const configurations_1=__webpack_require__("HskP"),chrono_1=__webpack_require__("aLSU"),SlashDateFormatParser_1=__importDefault(__webpack_require__("5Jgo")),ESWeekdayParser_1=__importDefault(__webpack_require__("Uixn")),ESTimeExpressionParser_1=__importDefault(__webpack_require__("AhAL")),ESMergeDateTimeRefiner_1=__importDefault(__webpack_require__("EnI3")),ESMergeDateRangeRefiner_1=__importDefault(__webpack_require__("c8hp")),ESMonthNameLittleEndianParser_1=__importDefault(__webpack_require__("e1zI")),ESCasualDateParser_1=__importDefault(__webpack_require__("HeyX")),ESCasualTimeParser_1=__importDefault(__webpack_require__("lIaP"));function createCasualConfiguration(littleEndian=!0){const option=createConfiguration(!1,littleEndian);return option.parsers.push(new ESCasualDateParser_1.default),option.parsers.push(new ESCasualTimeParser_1.default),option}function createConfiguration(strictMode=!0,littleEndian=!0){return configurations_1.includeCommonConfiguration({parsers:[new SlashDateFormatParser_1.default(littleEndian),new ESWeekdayParser_1.default,new ESTimeExpressionParser_1.default,new ESMonthNameLittleEndianParser_1.default],refiners:[new ESMergeDateTimeRefiner_1.default,new ESMergeDateRangeRefiner_1.default]},strictMode)}exports.casual=new chrono_1.Chrono(createCasualConfiguration()),exports.strict=new chrono_1.Chrono(createConfiguration(!0)),exports.parse=function parse(text,ref,option){return exports.casual.parse(text,ref,option)},exports.parseDate=function parseDate(text,ref,option){return exports.casual.parseDate(text,ref,option)},exports.createCasualConfiguration=createCasualConfiguration,exports.createConfiguration=createConfiguration},GEdi:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("Jvgq"),pattern_1=__webpack_require__("omFw"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),weekdays_1=__webpack_require__("byqA"),PATTERN=new RegExp(`(?:(?:,|\\(|()\\s*)?(?:в\\s*?)?(?:(эту|этот|прошлый|прошлую|следующий|следующую|следующего)\\s*)?(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})(?:\\s*(?:,|\\)|)))?(?:\\s*на\\s*(этой|прошлой|следующей)\\s*неделе)?${constants_1.REGEX_PARTS.rightBoundary}`,constants_1.REGEX_PARTS.flags);class RUWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}patternLeftBoundary(){return constants_1.REGEX_PARTS.leftBoundary}innerExtract(context,match){const dayOfWeek=match[2].toLowerCase(),weekday=constants_1.WEEKDAY_DICTIONARY[dayOfWeek],prefix=match[1],postfix=match[3];let modifierWord=prefix||postfix;modifierWord=modifierWord||"",modifierWord=modifierWord.toLowerCase();let modifier=null;return"прошлый"==modifierWord||"прошлую"==modifierWord||"прошлой"==modifierWord?modifier="last":"следующий"==modifierWord||"следующую"==modifierWord||"следующей"==modifierWord||"следующего"==modifierWord?modifier="next":"этот"!=modifierWord&&"эту"!=modifierWord&&"этой"!=modifierWord||(modifier="this"),weekdays_1.createParsingComponentsAtWeekday(context.reference,weekday,modifier)}}exports.default=RUWeekdayParser},GPup:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("i3am"),pattern_1=__webpack_require__("omFw"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),weekdays_1=__webpack_require__("byqA"),PATTERN=new RegExp(`(?:(?:\\,|\\(|\\()\\s*)?(?:(este|esta|passado|pr[oó]ximo)\\s*)?(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\)))?(?:\\s*(este|esta|passado|pr[óo]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i");class PTWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const dayOfWeek=match[2].toLowerCase(),weekday=constants_1.WEEKDAY_DICTIONARY[dayOfWeek];if(void 0===weekday)return null;const prefix=match[1],postfix=match[3];let norm=prefix||postfix||"";norm=norm.toLowerCase();let modifier=null;return"passado"==norm?modifier="this":"próximo"==norm||"proximo"==norm?modifier="next":"este"==norm&&(modifier="this"),weekdays_1.createParsingComponentsAtWeekday(context.reference,weekday,modifier)}}exports.default=PTWeekdayParser},Gf9Y:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("6IGW"),results_1=__webpack_require__("MpCh"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),timeunits_1=__webpack_require__("aWHD"),pattern_1=__webpack_require__("omFw");class DETimeUnitAgoFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{constructor(){super()}innerPattern(){return new RegExp(`(?:\\s*((?:nächste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?|vor|in)\\s*)?(${constants_1.NUMBER_PATTERN})?(?:\\s*(nächste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?)?\\s*(${pattern_1.matchAnyPattern(constants_1.TIME_UNIT_DICTIONARY)})`,"i")}innerExtract(context,match){const num=match[2]?constants_1.parseNumberPattern(match[2]):1;let timeUnits={};timeUnits[constants_1.TIME_UNIT_DICTIONARY[match[4].toLowerCase()]]=num;let modifier=match[1]||match[3]||"";if(modifier=modifier.toLowerCase(),modifier)return(/vor/.test(modifier)||/letzte/.test(modifier)||/vergangen/.test(modifier))&&(timeUnits=timeunits_1.reverseTimeUnits(timeUnits)),results_1.ParsingComponents.createRelativeFromReference(context.reference,timeUnits)}}exports.default=DETimeUnitAgoFormatParser},GlKT:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LOCK_STYLES=exports.STYLE_KEYS=void 0;exports.STYLE_KEYS=["boxSizing","height","overflow","paddingRight","position"];exports.LOCK_STYLES={boxSizing:"border-box",overflow:"hidden",position:"relative",height:"100%"}},GnGX:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createConfiguration=exports.createCasualConfiguration=exports.parseDate=exports.parse=exports.strict=exports.casual=void 0;const RUTimeUnitWithinFormatParser_1=__importDefault(__webpack_require__("w615")),RUMonthNameLittleEndianParser_1=__importDefault(__webpack_require__("RnQN")),RUMonthNameParser_1=__importDefault(__webpack_require__("WMsO")),RUTimeExpressionParser_1=__importDefault(__webpack_require__("VgZQ")),RUTimeUnitAgoFormatParser_1=__importDefault(__webpack_require__("TucD")),RUMergeDateRangeRefiner_1=__importDefault(__webpack_require__("nEWl")),RUMergeDateTimeRefiner_1=__importDefault(__webpack_require__("iiY3")),configurations_1=__webpack_require__("HskP"),RUCasualDateParser_1=__importDefault(__webpack_require__("Qmdk")),RUCasualTimeParser_1=__importDefault(__webpack_require__("eTEF")),RUWeekdayParser_1=__importDefault(__webpack_require__("GEdi")),RURelativeDateFormatParser_1=__importDefault(__webpack_require__("4KnI")),chrono_1=__webpack_require__("aLSU"),SlashDateFormatParser_1=__importDefault(__webpack_require__("5Jgo")),RUTimeUnitCasualRelativeFormatParser_1=__importDefault(__webpack_require__("0sEr"));function createCasualConfiguration(){const option=createConfiguration(!1);return option.parsers.unshift(new RUCasualDateParser_1.default),option.parsers.unshift(new RUCasualTimeParser_1.default),option.parsers.unshift(new RUMonthNameParser_1.default),option.parsers.unshift(new RURelativeDateFormatParser_1.default),option.parsers.unshift(new RUTimeUnitCasualRelativeFormatParser_1.default),option}function createConfiguration(strictMode=!0){return configurations_1.includeCommonConfiguration({parsers:[new SlashDateFormatParser_1.default(!0),new RUTimeUnitWithinFormatParser_1.default,new RUMonthNameLittleEndianParser_1.default,new RUWeekdayParser_1.default,new RUTimeExpressionParser_1.default(strictMode),new RUTimeUnitAgoFormatParser_1.default],refiners:[new RUMergeDateTimeRefiner_1.default,new RUMergeDateRangeRefiner_1.default]},strictMode)}exports.casual=new chrono_1.Chrono(createCasualConfiguration()),exports.strict=new chrono_1.Chrono(createConfiguration(!0)),exports.parse=function parse(text,ref,option){return exports.casual.parse(text,ref,option)},exports.parseDate=function parseDate(text,ref,option){return exports.casual.parseDate(text,ref,option)},exports.createCasualConfiguration=createCasualConfiguration,exports.createConfiguration=createConfiguration},"Gqx+":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const abstractRefiners_1=__webpack_require__("LMHj"),mergingCalculation_1=__webpack_require__("apo/");class AbstractMergeDateTimeRefiner extends abstractRefiners_1.MergingRefiner{shouldMergeResults(textBetween,currentResult,nextResult){return(currentResult.start.isOnlyDate()&&nextResult.start.isOnlyTime()||nextResult.start.isOnlyDate()&¤tResult.start.isOnlyTime())&&null!=textBetween.match(this.patternBetween())}mergeResults(textBetween,currentResult,nextResult){const result=currentResult.start.isOnlyDate()?mergingCalculation_1.mergeDateTimeResult(currentResult,nextResult):mergingCalculation_1.mergeDateTimeResult(nextResult,currentResult);return result.index=currentResult.index,result.text=currentResult.text+textBetween+nextResult.text,result}}exports.default=AbstractMergeDateTimeRefiner},H6Zs:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _react=function _interopRequireWildcard(obj){if(obj&&obj.__esModule)return obj;var newObj={};if(null!=obj)for(var key in obj)if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};desc.get||desc.set?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,newObj}(__webpack_require__("cDcd")),_emotion=__webpack_require__("PAeb");function _typeof(obj){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(obj){return typeof obj}:function _typeof(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _extends(){return _extends=Object.assign||function(target){for(var i=1;i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}function _defineProperties(target,props){for(var i=0;i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}exports.inputCSS=function inputCSS(_ref){var isDisabled=_ref.isDisabled,_ref$theme=_ref.theme,spacing=_ref$theme.spacing,colors=_ref$theme.colors;return{margin:spacing.baseUnit/2,paddingBottom:spacing.baseUnit/2,paddingTop:spacing.baseUnit/2,visibility:isDisabled?"hidden":"visible",color:colors.neutral80}};var inputStyle=function inputStyle(isHidden){return{label:"input",background:0,border:0,fontSize:"inherit",opacity:isHidden?0:1,outline:0,padding:0,color:"inherit"}},_default=function Input(_ref2){var className=_ref2.className,cx=_ref2.cx,getStyles=_ref2.getStyles,innerRef=_ref2.innerRef,isHidden=_ref2.isHidden,isDisabled=_ref2.isDisabled,theme=_ref2.theme,props=(_ref2.selectProps,_objectWithoutProperties(_ref2,["className","cx","getStyles","innerRef","isHidden","isDisabled","theme","selectProps"]));return _react.default.createElement("div",{className:(0,_emotion.css)(getStyles("input",_objectSpread({theme:theme},props)))},_react.default.createElement(_reactInputAutosize.default,_extends({className:cx(null,{input:!0},className),inputRef:innerRef,inputStyle:inputStyle(isHidden),disabled:isDisabled},props)))};exports.default=_default},KXCe:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.defaultTheme=exports.spacing=exports.colors=void 0;var colors={primary:"#2684FF",primary75:"#4C9AFF",primary50:"#B2D4FF",primary25:"#DEEBFF",danger:"#DE350B",dangerLight:"#FFBDAD",neutral0:"hsl(0, 0%, 100%)",neutral5:"hsl(0, 0%, 95%)",neutral10:"hsl(0, 0%, 90%)",neutral20:"hsl(0, 0%, 80%)",neutral30:"hsl(0, 0%, 70%)",neutral40:"hsl(0, 0%, 60%)",neutral50:"hsl(0, 0%, 50%)",neutral60:"hsl(0, 0%, 40%)",neutral70:"hsl(0, 0%, 30%)",neutral80:"hsl(0, 0%, 20%)",neutral90:"hsl(0, 0%, 10%)"};exports.colors=colors;var spacing={baseUnit:4,controlHeight:38,menuGutter:8};exports.spacing=spacing;var defaultTheme={borderRadius:4,colors:colors,spacing:spacing};exports.defaultTheme=defaultTheme},KZge:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const dayjs_1=__importDefault(__webpack_require__("Wgwc")),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),constants_1=__webpack_require__("izab"),PATTERN=new RegExp("(?:星期|禮拜|週)(?"+Object.keys(constants_1.WEEKDAY_OFFSET).join("|")+")");class ZHHantWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const result=context.createParsingResult(match.index,match[0]),dayOfWeek=match.groups.weekday,offset=constants_1.WEEKDAY_OFFSET[dayOfWeek];if(void 0===offset)return null;let startMoment=dayjs_1.default(context.refDate);const refOffset=startMoment.day();return startMoment=Math.abs(offset-7-refOffset)6&&(targetDate=targetDate.add(-1,"day")),dayjs_2.assignSimilarDate(component,targetDate),component.imply("hour",0))}return component}}exports.default=ENCasualDateParser},LMHj:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.MergingRefiner=exports.Filter=void 0;exports.Filter=class Filter{refine(context,results){return results.filter((r=>this.isValid(context,r)))}};exports.MergingRefiner=class MergingRefiner{refine(context,results){if(results.length<2)return results;const mergedResults=[];let curResult=results[0],nextResult=null;for(let i=1;i{console.log(`${this.constructor.name} merged ${left} and ${right} into ${mergedResult}`)})),curResult=mergedResult}else mergedResults.push(curResult),curResult=nextResult}return null!=curResult&&mergedResults.push(curResult),mergedResults}}},LqQ3:function(module,exports,__webpack_require__){"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k),Object.defineProperty(o,k2,{enumerable:!0,get:function(){return m[k]}})}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}:function(o,v){o.default=v}),__importStar=this&&this.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(null!=mod)for(var k in mod)"default"!==k&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result};Object.defineProperty(exports,"__esModule",{value:!0});const AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),references=__importStar(__webpack_require__("q2Un"));class PTCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(context){return/(agora|hoje|amanha|amanhã|ontem)(?=\W|$)/i}innerExtract(context,match){const lowerText=match[0].toLowerCase(),component=context.createParsingComponents();switch(lowerText){case"agora":return references.now(context.reference);case"hoje":return references.today(context.reference);case"amanha":case"amanhã":return references.tomorrow(context.reference);case"ontem":return references.yesterday(context.reference)}return component}}exports.default=PTCasualDateParser},LvKx:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("X82P"),years_1=__webpack_require__("pKWP"),dayjs_1=__importDefault(__webpack_require__("Wgwc")),PATTERN=/(?:(?:([同今本])|((昭和|平成|令和)?([0-90-9]{1,4}|元)))年\s*)?([0-90-9]{1,2})月\s*([0-90-9]{1,2})日/i;exports.default=class JPStandardParser{pattern(){return PATTERN}extract(context,match){const month=parseInt(constants_1.toHankaku(match[5])),day=parseInt(constants_1.toHankaku(match[6])),components=context.createParsingComponents({day:day,month:month});if(match[1]&&match[1].match("同|今|本")){const moment=dayjs_1.default(context.refDate);components.assign("year",moment.year())}if(match[2]){const yearNumText=match[4];let year="元"==yearNumText?1:parseInt(constants_1.toHankaku(yearNumText));"令和"==match[3]?year+=2018:"平成"==match[3]?year+=1988:"昭和"==match[3]&&(year+=1925),components.assign("year",year)}else{const year=years_1.findYearClosestToRef(context.refDate,day,month);components.imply("year",year)}return components}}},M7Pc:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("6IGW"),pattern_1=__webpack_require__("omFw"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),weekdays_1=__webpack_require__("byqA"),PATTERN=new RegExp(`(?:(?:\\,|\\(|\\()\\s*)?(?:a[mn]\\s*?)?(?:(diese[mn]|letzte[mn]|n(?:ä|ae)chste[mn])\\s*)?(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\)))?(?:\\s*(diese|letzte|n(?:ä|ae)chste)\\s*woche)?(?=\\W|$)`,"i");class DEWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const dayOfWeek=match[2].toLowerCase(),offset=constants_1.WEEKDAY_DICTIONARY[dayOfWeek],prefix=match[1],postfix=match[3];let modifierWord=prefix||postfix;modifierWord=modifierWord||"",modifierWord=modifierWord.toLowerCase();let modifier=null;return modifierWord.match(/letzte/)?modifier="last":modifierWord.match(/chste/)?modifier="next":modifierWord.match(/diese/)&&(modifier="this"),weekdays_1.createParsingComponentsAtWeekday(context.reference,offset,modifier)}}exports.default=DEWeekdayParser},MVmo:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.implySimilarTime=exports.implySimilarDate=exports.assignSimilarTime=exports.assignSimilarDate=exports.implyTheNextDay=exports.assignTheNextDay=void 0;const index_1=__webpack_require__("6EsV");function assignSimilarDate(component,targetDayJs){component.assign("day",targetDayJs.date()),component.assign("month",targetDayJs.month()+1),component.assign("year",targetDayJs.year())}function implySimilarDate(component,targetDayJs){component.imply("day",targetDayJs.date()),component.imply("month",targetDayJs.month()+1),component.imply("year",targetDayJs.year())}function implySimilarTime(component,targetDayJs){component.imply("hour",targetDayJs.hour()),component.imply("minute",targetDayJs.minute()),component.imply("second",targetDayJs.second()),component.imply("millisecond",targetDayJs.millisecond())}exports.assignTheNextDay=function assignTheNextDay(component,targetDayJs){assignSimilarDate(component,targetDayJs=targetDayJs.add(1,"day")),implySimilarTime(component,targetDayJs)},exports.implyTheNextDay=function implyTheNextDay(component,targetDayJs){implySimilarDate(component,targetDayJs=targetDayJs.add(1,"day")),implySimilarTime(component,targetDayJs)},exports.assignSimilarDate=assignSimilarDate,exports.assignSimilarTime=function assignSimilarTime(component,targetDayJs){component.assign("hour",targetDayJs.hour()),component.assign("minute",targetDayJs.minute()),component.assign("second",targetDayJs.second()),component.assign("millisecond",targetDayJs.millisecond()),component.get("hour")<12?component.assign("meridiem",index_1.Meridiem.AM):component.assign("meridiem",index_1.Meridiem.PM)},exports.implySimilarDate=implySimilarDate,exports.implySimilarTime=implySimilarTime},MXb4:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.AbstractTimeExpressionParser=void 0;const index_1=__webpack_require__("6EsV");exports.AbstractTimeExpressionParser=class AbstractTimeExpressionParser{constructor(strictMode=!1){this.cachedPrimaryPrefix=null,this.cachedPrimarySuffix=null,this.cachedPrimaryTimePattern=null,this.cachedFollowingPhase=null,this.cachedFollowingSuffix=null,this.cachedFollowingTimePatten=null,this.strictMode=strictMode}patternFlags(){return"i"}primaryPatternLeftBoundary(){return"(^|\\s|T|\\b)"}primarySuffix(){return"(?=\\W|$)"}followingSuffix(){return"(?=\\W|$)"}pattern(context){return this.getPrimaryTimePatternThroughCache()}extract(context,match){const startComponents=this.extractPrimaryTimeComponents(context,match);if(!startComponents)return match.index+=match[0].length,null;const index=match.index+match[1].length,text=match[0].substring(match[1].length),result=context.createParsingResult(index,text,startComponents);match.index+=match[0].length;const remainingText=context.text.substring(match.index),followingMatch=this.getFollowingTimePatternThroughCache().exec(remainingText);return text.match(/^\d{3,4}/)&&followingMatch&&followingMatch[0].match(/^\s*([+-])\s*\d{2,4}$/)?null:!followingMatch||followingMatch[0].match(/^\s*([+-])\s*\d{3,4}$/)?this.checkAndReturnWithoutFollowingPattern(result):(result.end=this.extractFollowingTimeComponents(context,followingMatch,result),result.end&&(result.text+=followingMatch[0]),this.checkAndReturnWithFollowingPattern(result))}extractPrimaryTimeComponents(context,match,strict=!1){const components=context.createParsingComponents();let minute=0,meridiem=null,hour=parseInt(match[2]);if(hour>100){if(this.strictMode||null!=match[3])return null;minute=hour%100,hour=Math.floor(hour/100)}if(hour>24)return null;if(null!=match[3]){if(1==match[3].length&&!match[6])return null;minute=parseInt(match[3])}if(minute>=60)return null;if(hour>12&&(meridiem=index_1.Meridiem.PM),null!=match[6]){if(hour>12)return null;const ampm=match[6][0].toLowerCase();"a"==ampm&&(meridiem=index_1.Meridiem.AM,12==hour&&(hour=0)),"p"==ampm&&(meridiem=index_1.Meridiem.PM,12!=hour&&(hour+=12))}if(components.assign("hour",hour),components.assign("minute",minute),null!==meridiem?components.assign("meridiem",meridiem):hour<12?components.imply("meridiem",index_1.Meridiem.AM):components.imply("meridiem",index_1.Meridiem.PM),null!=match[5]){const millisecond=parseInt(match[5].substring(0,3));if(millisecond>=1e3)return null;components.assign("millisecond",millisecond)}if(null!=match[4]){const second=parseInt(match[4]);if(second>=60)return null;components.assign("second",second)}return components}extractFollowingTimeComponents(context,match,result){const components=context.createParsingComponents();if(null!=match[5]){const millisecond=parseInt(match[5].substring(0,3));if(millisecond>=1e3)return null;components.assign("millisecond",millisecond)}if(null!=match[4]){const second=parseInt(match[4]);if(second>=60)return null;components.assign("second",second)}let hour=parseInt(match[2]),minute=0,meridiem=-1;if(null!=match[3]?minute=parseInt(match[3]):hour>100&&(minute=hour%100,hour=Math.floor(hour/100)),minute>=60||hour>24)return null;if(hour>=12&&(meridiem=index_1.Meridiem.PM),null!=match[6]){if(hour>12)return null;const ampm=match[6][0].toLowerCase();"a"==ampm&&(meridiem=index_1.Meridiem.AM,12==hour&&(hour=0,components.isCertain("day")||components.imply("day",components.get("day")+1))),"p"==ampm&&(meridiem=index_1.Meridiem.PM,12!=hour&&(hour+=12)),result.start.isCertain("meridiem")||(meridiem==index_1.Meridiem.AM?(result.start.imply("meridiem",index_1.Meridiem.AM),12==result.start.get("hour")&&result.start.assign("hour",0)):(result.start.imply("meridiem",index_1.Meridiem.PM),12!=result.start.get("hour")&&result.start.assign("hour",result.start.get("hour")+12)))}if(components.assign("hour",hour),components.assign("minute",minute),meridiem>=0)components.assign("meridiem",meridiem);else{result.start.isCertain("meridiem")&&result.start.get("hour")>12?result.start.get("hour")-12>hour?components.imply("meridiem",index_1.Meridiem.AM):hour<=12&&(components.assign("hour",hour+12),components.assign("meridiem",index_1.Meridiem.PM)):hour>12?components.imply("meridiem",index_1.Meridiem.PM):hour<=12&&components.imply("meridiem",index_1.Meridiem.AM)}return components.date().getTime()24)return null}return result}checkAndReturnWithFollowingPattern(result){if(result.text.match(/^\d+-\d+$/))return null;const endingWithNumbers=result.text.match(/[^\d:.](\d[\d.]+)\s*-\s*(\d[\d.]+)$/);if(endingWithNumbers){if(this.strictMode)return null;const startingNumbers=endingWithNumbers[1],endingNumbers=endingWithNumbers[2];if(endingNumbers.includes(".")&&!endingNumbers.match(/\d(\.\d{2})+$/))return null;const endingNumberVal=parseInt(endingNumbers),startingNumberVal=parseInt(startingNumbers);if(endingNumberVal>24||startingNumberVal>24)return null}return result}getPrimaryTimePatternThroughCache(){const primaryPrefix=this.primaryPrefix(),primarySuffix=this.primarySuffix();return this.cachedPrimaryPrefix===primaryPrefix&&this.cachedPrimarySuffix===primarySuffix||(this.cachedPrimaryTimePattern=function primaryTimePattern(leftBoundary,primaryPrefix,primarySuffix,flags){return new RegExp(`${leftBoundary}${primaryPrefix}(\\d{1,4})(?:(?:\\.|:|:)(\\d{1,2})(?:(?::|:)(\\d{2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${primarySuffix}`,flags)}(this.primaryPatternLeftBoundary(),primaryPrefix,primarySuffix,this.patternFlags()),this.cachedPrimaryPrefix=primaryPrefix,this.cachedPrimarySuffix=primarySuffix),this.cachedPrimaryTimePattern}getFollowingTimePatternThroughCache(){const followingPhase=this.followingPhase(),followingSuffix=this.followingSuffix();return this.cachedFollowingPhase===followingPhase&&this.cachedFollowingSuffix===followingSuffix||(this.cachedFollowingTimePatten=function followingTimePatten(followingPhase,followingSuffix){return new RegExp(`^(${followingPhase})(\\d{1,4})(?:(?:\\.|\\:|\\:)(\\d{1,2})(?:(?:\\.|\\:|\\:)(\\d{1,2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${followingSuffix}`,"i")}(followingPhase,followingSuffix),this.cachedFollowingPhase=followingPhase,this.cachedFollowingSuffix=followingSuffix),this.cachedFollowingTimePatten}}},Mecv:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const index_1=__webpack_require__("6EsV"),AbstractTimeExpressionParser_1=__webpack_require__("MXb4");class ENTimeExpressionParser extends AbstractTimeExpressionParser_1.AbstractTimeExpressionParser{constructor(strictMode){super(strictMode)}followingPhase(){return"\\s*(?:\\-|\\–|\\~|\\〜|to|\\?)\\s*"}primaryPrefix(){return"(?:(?:at|from)\\s*)??"}primarySuffix(){return"(?:\\s*(?:o\\W*clock|at\\s*night|in\\s*the\\s*(?:morning|afternoon)))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(context,match){const components=super.extractPrimaryTimeComponents(context,match);if(components){if(match[0].endsWith("night")){const hour=components.get("hour");hour>=6&&hour<12?(components.assign("hour",components.get("hour")+12),components.assign("meridiem",index_1.Meridiem.PM)):hour<6&&components.assign("meridiem",index_1.Meridiem.AM)}if(match[0].endsWith("afternoon")){components.assign("meridiem",index_1.Meridiem.PM);const hour=components.get("hour");hour>=0&&hour<=6&&components.assign("hour",components.get("hour")+12)}if(match[0].endsWith("morning")){components.assign("meridiem",index_1.Meridiem.AM);components.get("hour")<12&&components.assign("hour",components.get("hour"))}}return components}}exports.default=ENTimeExpressionParser},MpCh:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ParsingResult=exports.ParsingComponents=exports.ReferenceWithTimezone=void 0;const quarterOfYear_1=__importDefault(__webpack_require__("mx/2")),dayjs_1=__importDefault(__webpack_require__("Wgwc")),dayjs_2=__webpack_require__("MVmo"),timezone_1=__webpack_require__("14I9");dayjs_1.default.extend(quarterOfYear_1.default);exports.ReferenceWithTimezone=class ReferenceWithTimezone{constructor(input){var _a;(input=null!=input?input:new Date)instanceof Date?this.instant=input:(this.instant=null!==(_a=input.instant)&&void 0!==_a?_a:new Date,this.timezoneOffset=timezone_1.toTimezoneOffset(input.timezone))}getDateWithAdjustedTimezone(){return new Date(this.instant.getTime()+6e4*this.getSystemTimezoneAdjustmentMinute(this.instant))}getSystemTimezoneAdjustmentMinute(date,overrideTimezoneOffset){var _a;(!date||date.getTime()<0)&&(date=new Date);const currentTimezoneOffset=-date.getTimezoneOffset();return currentTimezoneOffset-(null!==(_a=null!=overrideTimezoneOffset?overrideTimezoneOffset:this.timezoneOffset)&&void 0!==_a?_a:currentTimezoneOffset)}};class ParsingComponents{constructor(reference,knownComponents){if(this.reference=reference,this.knownValues={},this.impliedValues={},knownComponents)for(const key in knownComponents)this.knownValues[key]=knownComponents[key];const refDayJs=dayjs_1.default(reference.instant);this.imply("day",refDayJs.date()),this.imply("month",refDayJs.month()+1),this.imply("year",refDayJs.year()),this.imply("hour",12),this.imply("minute",0),this.imply("second",0),this.imply("millisecond",0)}get(component){return component in this.knownValues?this.knownValues[component]:component in this.impliedValues?this.impliedValues[component]:null}isCertain(component){return component in this.knownValues}getCertainComponents(){return Object.keys(this.knownValues)}imply(component,value){return component in this.knownValues||(this.impliedValues[component]=value),this}assign(component,value){return this.knownValues[component]=value,delete this.impliedValues[component],this}delete(component){delete this.knownValues[component],delete this.impliedValues[component]}clone(){const component=new ParsingComponents(this.reference);component.knownValues={},component.impliedValues={};for(const key in this.knownValues)component.knownValues[key]=this.knownValues[key];for(const key in this.impliedValues)component.impliedValues[key]=this.impliedValues[key];return component}isOnlyDate(){return!this.isCertain("hour")&&!this.isCertain("minute")&&!this.isCertain("second")}isOnlyTime(){return!this.isCertain("weekday")&&!this.isCertain("day")&&!this.isCertain("month")}isOnlyWeekdayComponent(){return this.isCertain("weekday")&&!this.isCertain("day")&&!this.isCertain("month")}isOnlyDayMonthComponent(){return this.isCertain("day")&&this.isCertain("month")&&!this.isCertain("year")}isValidDate(){const date=this.dateWithoutTimezoneAdjustment();return date.getFullYear()===this.get("year")&&(date.getMonth()===this.get("month")-1&&(date.getDate()===this.get("day")&&((null==this.get("hour")||date.getHours()==this.get("hour"))&&(null==this.get("minute")||date.getMinutes()==this.get("minute")))))}toString(){return`[ParsingComponents {knownValues: ${JSON.stringify(this.knownValues)}, impliedValues: ${JSON.stringify(this.impliedValues)}}, reference: ${JSON.stringify(this.reference)}]`}dayjs(){return dayjs_1.default(this.date())}date(){const date=this.dateWithoutTimezoneAdjustment(),timezoneAdjustment=this.reference.getSystemTimezoneAdjustmentMinute(date,this.get("timezoneOffset"));return new Date(date.getTime()+6e4*timezoneAdjustment)}dateWithoutTimezoneAdjustment(){const date=new Date(this.get("year"),this.get("month")-1,this.get("day"),this.get("hour"),this.get("minute"),this.get("second"),this.get("millisecond"));return date.setFullYear(this.get("year")),date}static createRelativeFromReference(reference,fragments){let date=dayjs_1.default(reference.instant);for(const key in fragments)date=date.add(fragments[key],key);const components=new ParsingComponents(reference);return fragments.hour||fragments.minute||fragments.second?(dayjs_2.assignSimilarTime(components,date),dayjs_2.assignSimilarDate(components,date),null!==reference.timezoneOffset&&components.assign("timezoneOffset",-reference.instant.getTimezoneOffset())):(dayjs_2.implySimilarTime(components,date),null!==reference.timezoneOffset&&components.imply("timezoneOffset",-reference.instant.getTimezoneOffset()),fragments.d?(components.assign("day",date.date()),components.assign("month",date.month()+1),components.assign("year",date.year())):(fragments.week&&components.imply("weekday",date.day()),components.imply("day",date.date()),fragments.month?(components.assign("month",date.month()+1),components.assign("year",date.year())):(components.imply("month",date.month()+1),fragments.year?components.assign("year",date.year()):components.imply("year",date.year())))),components}}exports.ParsingComponents=ParsingComponents;class ParsingResult{constructor(reference,index,text,start,end){this.reference=reference,this.refDate=reference.instant,this.index=index,this.text=text,this.start=start||new ParsingComponents(reference),this.end=end}clone(){const result=new ParsingResult(this.reference,this.index,this.text);return result.start=this.start?this.start.clone():null,result.end=this.end?this.end.clone():null,result}date(){return this.start.date()}toString(){return`[ParsingResult {index: ${this.index}, text: '${this.text}', ...}]`}}exports.ParsingResult=ParsingResult},Mrws:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const AbstractMergeDateRangeRefiner_1=__importDefault(__webpack_require__("fx0C"));class DEMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default{patternBetween(){return/^\s*(bis(?:\s*(?:am|zum))?|-)\s*$/i}}exports.default=DEMergeDateRangeRefiner},N3bB:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _react=__webpack_require__("cDcd"),_reactDom=__webpack_require__("faye");function _typeof(obj){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(obj){return typeof obj}:function _typeof(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _defineProperties(target,props){for(var i=0;i!(refiner instanceof ExtractTimezoneOffsetRefiner_1.default))),configuration}exports.hans=new chrono_1.Chrono(createCasualConfiguration()),exports.casual=new chrono_1.Chrono(createCasualConfiguration()),exports.strict=new chrono_1.Chrono(createConfiguration()),exports.parse=function parse(text,ref,option){return exports.casual.parse(text,ref,option)},exports.parseDate=function parseDate(text,ref,option){return exports.casual.parseDate(text,ref,option)},exports.createCasualConfiguration=createCasualConfiguration,exports.createConfiguration=createConfiguration},OOKS:function(module,exports,__webpack_require__){"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k),Object.defineProperty(o,k2,{enumerable:!0,get:function(){return m[k]}})}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}:function(o,v){o.default=v}),__importStar=this&&this.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(null!=mod)for(var k in mod)"default"!==k&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result},__importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const dayjs_1=__importDefault(__webpack_require__("Wgwc")),index_1=__webpack_require__("6EsV"),references=__importStar(__webpack_require__("q2Un")),PATTERN=/今日|当日|昨日|明日|今夜|今夕|今晩|今朝/i;exports.default=class JPCasualDateParser{pattern(){return PATTERN}extract(context,match){const text=match[0],date=dayjs_1.default(context.refDate),components=context.createParsingComponents();switch(text){case"昨日":return references.yesterday(context.reference);case"明日":return references.tomorrow(context.reference);case"今日":case"当日":return references.today(context.reference)}return"今夜"==text||"今夕"==text||"今晩"==text?(components.imply("hour",22),components.assign("meridiem",index_1.Meridiem.PM)):text.match("今朝")&&(components.imply("hour",6),components.assign("meridiem",index_1.Meridiem.AM)),components.assign("day",date.date()),components.assign("month",date.month()+1),components.assign("year",date.year()),components}}},PAGr:function(module,exports,__webpack_require__){"use strict";exports.__esModule=!0,exports.default=void 0;_interopRequireDefault(__webpack_require__("rf6O"));var _react=_interopRequireDefault(__webpack_require__("cDcd")),_reactDom=__webpack_require__("faye"),_TransitionGroup=_interopRequireDefault(__webpack_require__("UnXY"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var ReplaceTransition=function(_React$Component){function ReplaceTransition(){for(var _this,_len=arguments.length,_args=new Array(_len),_key=0;_key<_len;_key++)_args[_key]=arguments[_key];return(_this=_React$Component.call.apply(_React$Component,[this].concat(_args))||this).handleEnter=function(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];return _this.handleLifecycle("onEnter",0,args)},_this.handleEntering=function(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];return _this.handleLifecycle("onEntering",0,args)},_this.handleEntered=function(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++)args[_key4]=arguments[_key4];return _this.handleLifecycle("onEntered",0,args)},_this.handleExit=function(){for(var _len5=arguments.length,args=new Array(_len5),_key5=0;_key5<_len5;_key5++)args[_key5]=arguments[_key5];return _this.handleLifecycle("onExit",1,args)},_this.handleExiting=function(){for(var _len6=arguments.length,args=new Array(_len6),_key6=0;_key6<_len6;_key6++)args[_key6]=arguments[_key6];return _this.handleLifecycle("onExiting",1,args)},_this.handleExited=function(){for(var _len7=arguments.length,args=new Array(_len7),_key7=0;_key7<_len7;_key7++)args[_key7]=arguments[_key7];return _this.handleLifecycle("onExited",1,args)},_this}!function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype),subClass.prototype.constructor=subClass,subClass.__proto__=superClass}(ReplaceTransition,_React$Component);var _proto=ReplaceTransition.prototype;return _proto.handleLifecycle=function handleLifecycle(handler,idx,originalArgs){var _child$props,children=this.props.children,child=_react.default.Children.toArray(children)[idx];child.props[handler]&&(_child$props=child.props)[handler].apply(_child$props,originalArgs),this.props[handler]&&this.props[handler]((0,_reactDom.findDOMNode)(this))},_proto.render=function render(){var _this$props=this.props,children=_this$props.children,inProp=_this$props.in,props=function _objectWithoutPropertiesLoose(source,excluded){if(null==source)return{};var key,i,target={},sourceKeys=Object.keys(source);for(i=0;i=0||(target[key]=source[key]);return target}(_this$props,["children","in"]),_React$Children$toArr=_react.default.Children.toArray(children),first=_React$Children$toArr[0],second=_React$Children$toArr[1];return delete props.onEnter,delete props.onEntering,delete props.onEntered,delete props.onExit,delete props.onExiting,delete props.onExited,_react.default.createElement(_TransitionGroup.default,props,inProp?_react.default.cloneElement(first,{key:"first",onEnter:this.handleEnter,onEntering:this.handleEntering,onEntered:this.handleEntered}):_react.default.cloneElement(second,{key:"second",onEnter:this.handleExit,onEntering:this.handleExiting,onEntered:this.handleExited}))},ReplaceTransition}(_react.default.Component);ReplaceTransition.propTypes={};var _default=ReplaceTransition;exports.default=_default,module.exports=exports.default},PAeb:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),function(global){__webpack_require__.d(__webpack_exports__,"flush",(function(){return flush})),__webpack_require__.d(__webpack_exports__,"hydrate",(function(){return hydrate})),__webpack_require__.d(__webpack_exports__,"cx",(function(){return cx})),__webpack_require__.d(__webpack_exports__,"merge",(function(){return merge})),__webpack_require__.d(__webpack_exports__,"getRegisteredStyles",(function(){return getRegisteredStyles})),__webpack_require__.d(__webpack_exports__,"injectGlobal",(function(){return injectGlobal})),__webpack_require__.d(__webpack_exports__,"keyframes",(function(){return keyframes})),__webpack_require__.d(__webpack_exports__,"css",(function(){return css})),__webpack_require__.d(__webpack_exports__,"sheet",(function(){return sheet})),__webpack_require__.d(__webpack_exports__,"caches",(function(){return caches}));var create_emotion__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("oj4i"),context=void 0!==global?global:{},_createEmotion=Object(create_emotion__WEBPACK_IMPORTED_MODULE_0__.a)(context),flush=_createEmotion.flush,hydrate=_createEmotion.hydrate,cx=_createEmotion.cx,merge=_createEmotion.merge,getRegisteredStyles=_createEmotion.getRegisteredStyles,injectGlobal=_createEmotion.injectGlobal,keyframes=_createEmotion.keyframes,css=_createEmotion.css,sheet=_createEmotion.sheet,caches=_createEmotion.caches}.call(this,__webpack_require__("yLpj"))},QILm:function(module,exports,__webpack_require__){var objectWithoutPropertiesLoose=__webpack_require__("8OQS");module.exports=function _objectWithoutProperties(source,excluded){if(null==source)return{};var key,i,target=objectWithoutPropertiesLoose(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target},module.exports.__esModule=!0,module.exports.default=module.exports},QcsS:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _react=function _interopRequireWildcard(obj){if(obj&&obj.__esModule)return obj;var newObj={};if(null!=obj)for(var key in obj)if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};desc.get||desc.set?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,newObj}(__webpack_require__("cDcd")),_emotion=__webpack_require__("PAeb"),_NodeResolver=_interopRequireDefault(__webpack_require__("N3bB")),_index=_interopRequireDefault(__webpack_require__("CXKz"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _typeof(obj){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(obj){return typeof obj}:function _typeof(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _defineProperties(target,props){for(var i=0;i31)return match.index=match.index+match[1].length,null;if(result.start.assign("month",month),result.start.assign("day",day),match[4]){const yearNumber=constants_2.parseYear(match[4]);result.start.assign("year",yearNumber)}else{const year=years_1.findYearClosestToRef(context.refDate,day,month);result.start.imply("year",year)}if(match[2]){const endDate=constants_3.parseOrdinalNumberPattern(match[2]);result.end=result.start.clone(),result.end.assign("day",endDate)}return result}}exports.default=RUMonthNameLittleEndianParser},S3Uj:function(module,exports,__webpack_require__){"use strict";exports.__esModule=!0,exports.default=exports.EXITING=exports.ENTERED=exports.ENTERING=exports.EXITED=exports.UNMOUNTED=void 0;var PropTypes=function _interopRequireWildcard(obj){if(obj&&obj.__esModule)return obj;var newObj={};if(null!=obj)for(var key in obj)if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};desc.get||desc.set?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,newObj}(__webpack_require__("rf6O")),_react=_interopRequireDefault(__webpack_require__("cDcd")),_reactDom=_interopRequireDefault(__webpack_require__("faye")),_reactLifecyclesCompat=__webpack_require__("VCL8");__webpack_require__("xfxO");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var UNMOUNTED="unmounted";exports.UNMOUNTED=UNMOUNTED;var EXITED="exited";exports.EXITED=EXITED;var ENTERING="entering";exports.ENTERING=ENTERING;var ENTERED="entered";exports.ENTERED=ENTERED;exports.EXITING="exiting";var Transition=function(_React$Component){function Transition(props,context){var _this;_this=_React$Component.call(this,props,context)||this;var initialStatus,parentGroup=context.transitionGroup,appear=parentGroup&&!parentGroup.isMounting?props.enter:props.appear;return _this.appearStatus=null,props.in?appear?(initialStatus=EXITED,_this.appearStatus=ENTERING):initialStatus=ENTERED:initialStatus=props.unmountOnExit||props.mountOnEnter?UNMOUNTED:EXITED,_this.state={status:initialStatus},_this.nextCallback=null,_this}!function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype),subClass.prototype.constructor=subClass,subClass.__proto__=superClass}(Transition,_React$Component);var _proto=Transition.prototype;return _proto.getChildContext=function getChildContext(){return{transitionGroup:null}},Transition.getDerivedStateFromProps=function getDerivedStateFromProps(_ref,prevState){return _ref.in&&prevState.status===UNMOUNTED?{status:EXITED}:null},_proto.componentDidMount=function componentDidMount(){this.updateStatus(!0,this.appearStatus)},_proto.componentDidUpdate=function componentDidUpdate(prevProps){var nextStatus=null;if(prevProps!==this.props){var status=this.state.status;this.props.in?status!==ENTERING&&status!==ENTERED&&(nextStatus=ENTERING):status!==ENTERING&&status!==ENTERED||(nextStatus="exiting")}this.updateStatus(!1,nextStatus)},_proto.componentWillUnmount=function componentWillUnmount(){this.cancelNextCallback()},_proto.getTimeouts=function getTimeouts(){var exit,enter,appear,timeout=this.props.timeout;return exit=enter=appear=timeout,null!=timeout&&"number"!=typeof timeout&&(exit=timeout.exit,enter=timeout.enter,appear=void 0!==timeout.appear?timeout.appear:enter),{exit:exit,enter:enter,appear:appear}},_proto.updateStatus=function updateStatus(mounting,nextStatus){if(void 0===mounting&&(mounting=!1),null!==nextStatus){this.cancelNextCallback();var node=_reactDom.default.findDOMNode(this);nextStatus===ENTERING?this.performEnter(node,mounting):this.performExit(node)}else this.props.unmountOnExit&&this.state.status===EXITED&&this.setState({status:UNMOUNTED})},_proto.performEnter=function performEnter(node,mounting){var _this2=this,enter=this.props.enter,appearing=this.context.transitionGroup?this.context.transitionGroup.isMounting:mounting,timeouts=this.getTimeouts(),enterTimeout=appearing?timeouts.appear:timeouts.enter;mounting||enter?(this.props.onEnter(node,appearing),this.safeSetState({status:ENTERING},(function(){_this2.props.onEntering(node,appearing),_this2.onTransitionEnd(node,enterTimeout,(function(){_this2.safeSetState({status:ENTERED},(function(){_this2.props.onEntered(node,appearing)}))}))}))):this.safeSetState({status:ENTERED},(function(){_this2.props.onEntered(node)}))},_proto.performExit=function performExit(node){var _this3=this,exit=this.props.exit,timeouts=this.getTimeouts();exit?(this.props.onExit(node),this.safeSetState({status:"exiting"},(function(){_this3.props.onExiting(node),_this3.onTransitionEnd(node,timeouts.exit,(function(){_this3.safeSetState({status:EXITED},(function(){_this3.props.onExited(node)}))}))}))):this.safeSetState({status:EXITED},(function(){_this3.props.onExited(node)}))},_proto.cancelNextCallback=function cancelNextCallback(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},_proto.safeSetState=function safeSetState(nextState,callback){callback=this.setNextCallback(callback),this.setState(nextState,callback)},_proto.setNextCallback=function setNextCallback(callback){var _this4=this,active=!0;return this.nextCallback=function(event){active&&(active=!1,_this4.nextCallback=null,callback(event))},this.nextCallback.cancel=function(){active=!1},this.nextCallback},_proto.onTransitionEnd=function onTransitionEnd(node,timeout,handler){this.setNextCallback(handler);var doesNotHaveTimeoutOrListener=null==timeout&&!this.props.addEndListener;node&&!doesNotHaveTimeoutOrListener?(this.props.addEndListener&&this.props.addEndListener(node,this.nextCallback),null!=timeout&&setTimeout(this.nextCallback,timeout)):setTimeout(this.nextCallback,0)},_proto.render=function render(){var status=this.state.status;if(status===UNMOUNTED)return null;var _this$props=this.props,children=_this$props.children,childProps=function _objectWithoutPropertiesLoose(source,excluded){if(null==source)return{};var key,i,target={},sourceKeys=Object.keys(source);for(i=0;i=0||(target[key]=source[key]);return target}(_this$props,["children"]);if(delete childProps.in,delete childProps.mountOnEnter,delete childProps.unmountOnExit,delete childProps.appear,delete childProps.enter,delete childProps.exit,delete childProps.timeout,delete childProps.addEndListener,delete childProps.onEnter,delete childProps.onEntering,delete childProps.onEntered,delete childProps.onExit,delete childProps.onExiting,delete childProps.onExited,"function"==typeof children)return children(status,childProps);var child=_react.default.Children.only(children);return _react.default.cloneElement(child,childProps)},Transition}(_react.default.Component);function noop(){}Transition.contextTypes={transitionGroup:PropTypes.object},Transition.childContextTypes={transitionGroup:function transitionGroup(){}},Transition.propTypes={},Transition.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:noop,onEntering:noop,onEntered:noop,onExit:noop,onExiting:noop,onExited:noop},Transition.UNMOUNTED=0,Transition.EXITED=1,Transition.ENTERING=2,Transition.ENTERED=3,Transition.EXITING=4;var _default=(0,_reactLifecyclesCompat.polyfill)(Transition);exports.default=_default},SH9J:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("ARTj"),results_1=__webpack_require__("MpCh"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),timeunits_1=__webpack_require__("aWHD"),pattern_1=__webpack_require__("omFw");class FRTimeUnitAgoFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{constructor(){super()}innerPattern(){return new RegExp(`(?:les?|la|l'|du|des?)\\s*(${constants_1.NUMBER_PATTERN})?(?:\\s*(prochaine?s?|derni[eè]re?s?|pass[ée]e?s?|pr[ée]c[ée]dents?|suivante?s?))?\\s*(${pattern_1.matchAnyPattern(constants_1.TIME_UNIT_DICTIONARY)})(?:\\s*(prochaine?s?|derni[eè]re?s?|pass[ée]e?s?|pr[ée]c[ée]dents?|suivante?s?))?`,"i")}innerExtract(context,match){const num=match[1]?constants_1.parseNumberPattern(match[1]):1;let timeUnits={};timeUnits[constants_1.TIME_UNIT_DICTIONARY[match[3].toLowerCase()]]=num;let modifier=match[2]||match[4]||"";if(modifier=modifier.toLowerCase(),modifier)return(/derni[eè]re?s?/.test(modifier)||/pass[ée]e?s?/.test(modifier)||/pr[ée]c[ée]dents?/.test(modifier))&&(timeUnits=timeunits_1.reverseTimeUnits(timeUnits)),results_1.ParsingComponents.createRelativeFromReference(context.reference,timeUnits)}}exports.default=FRTimeUnitAgoFormatParser},SHH1:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.preventTouchMove=function preventTouchMove(e){e.preventDefault()},exports.allowTouchMove=function allowTouchMove(e){e.stopPropagation()},exports.preventInertiaScroll=function preventInertiaScroll(){var top=this.scrollTop,totalScroll=this.scrollHeight,currentScroll=top+this.offsetHeight;0===top?this.scrollTop=1:currentScroll===totalScroll&&(this.scrollTop=top-1)},exports.isTouchDevice=function isTouchDevice(){return"ontouchstart"in window||navigator.maxTouchPoints}},Si88:function(module,exports,__webpack_require__){"use strict";exports.__esModule=!0,exports.default=void 0;(function _interopRequireWildcard(obj){if(obj&&obj.__esModule)return obj;var newObj={};if(null!=obj)for(var key in obj)if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};desc.get||desc.set?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,newObj})(__webpack_require__("rf6O"));var _addClass=_interopRequireDefault(__webpack_require__("ycFn")),_removeClass=_interopRequireDefault(__webpack_require__("VOcB")),_react=_interopRequireDefault(__webpack_require__("cDcd")),_Transition=_interopRequireDefault(__webpack_require__("S3Uj"));__webpack_require__("xfxO");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _extends(){return _extends=Object.assign||function(target){for(var i=1;iclone(d2).setHours(0,0,0,0)}function isPastDay(d){var today=new Date;return today.setHours(0,0,0,0),isDayBefore(d,today)}function isFutureDay(d){var tomorrow=new Date((new Date).getTime()+864e5);return tomorrow.setHours(0,0,0,0),d>=tomorrow}function isDayBetween(d,d1,d2){var date=clone(d);return date.setHours(0,0,0,0),isDayAfter(date,d1)&&isDayBefore(date,d2)||isDayAfter(date,d2)&&isDayBefore(date,d1)}function addDayToRange(day){var range=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{from:null,to:null},from=range.from,to=range.to;return from?from&&to&&isSameDay(from,to)&&isSameDay(day,from)?(from=null,to=null):to&&isDayBefore(day,from)?from=day:to&&isSameDay(day,to)?(from=day,to=day):isDayBefore(to=day,from)&&(to=from,from=day):from=day,{from:from,to:to}}function isDayInRange(day,range){var from=range.from,to=range.to;return from&&isSameDay(day,from)||to&&isSameDay(day,to)||from&&to&&isDayBetween(day,from,to)}function getWeekNumber(day){var date=clone(day);return date.setHours(0,0,0),date.setDate(date.getDate()+4-(date.getDay()||7)),Math.ceil(((date-new Date(date.getFullYear(),0,1))/864e5+1)/7)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.clone=clone,exports.isDate=isDate,exports.addMonths=addMonths,exports.isSameDay=isSameDay,exports.isSameMonth=isSameMonth,exports.isDayBefore=isDayBefore,exports.isDayAfter=isDayAfter,exports.isPastDay=isPastDay,exports.isFutureDay=isFutureDay,exports.isDayBetween=isDayBetween,exports.addDayToRange=addDayToRange,exports.isDayInRange=isDayInRange,exports.getWeekNumber=getWeekNumber,exports.default={addDayToRange:addDayToRange,addMonths:addMonths,clone:clone,getWeekNumber:getWeekNumber,isDate:isDate,isDayAfter:isDayAfter,isDayBefore:isDayBefore,isDayBetween:isDayBetween,isDayInRange:isDayInRange,isFutureDay:isFutureDay,isPastDay:isPastDay,isSameDay:isSameDay,isSameMonth:isSameMonth}},TucD:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("Jvgq"),results_1=__webpack_require__("MpCh"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),timeunits_1=__webpack_require__("aWHD"),PATTERN=new RegExp(`(${constants_1.TIME_UNITS_PATTERN})\\s{0,5}назад(?=(?:\\W|$))`,constants_1.REGEX_PARTS.flags);class RUTimeUnitAgoFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return constants_1.REGEX_PARTS.leftBoundary}innerPattern(){return PATTERN}innerExtract(context,match){const timeUnits=constants_1.parseTimeUnits(match[1]),outputTimeUnits=timeunits_1.reverseTimeUnits(timeUnits);return results_1.ParsingComponents.createRelativeFromReference(context.reference,outputTimeUnits)}}exports.default=RUTimeUnitAgoFormatParser},UK2x:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createConfiguration=exports.createCasualConfiguration=exports.parseDate=exports.parse=exports.strict=exports.casual=void 0;const configurations_1=__webpack_require__("HskP"),chrono_1=__webpack_require__("aLSU"),SlashDateFormatParser_1=__importDefault(__webpack_require__("5Jgo")),PTWeekdayParser_1=__importDefault(__webpack_require__("GPup")),PTTimeExpressionParser_1=__importDefault(__webpack_require__("sFAh")),PTMergeDateTimeRefiner_1=__importDefault(__webpack_require__("loBo")),PTMergeDateRangeRefiner_1=__importDefault(__webpack_require__("pgTb")),PTMonthNameLittleEndianParser_1=__importDefault(__webpack_require__("yJtp")),PTCasualDateParser_1=__importDefault(__webpack_require__("LqQ3")),PTCasualTimeParser_1=__importDefault(__webpack_require__("wI+u"));function createCasualConfiguration(littleEndian=!0){const option=createConfiguration(!1,littleEndian);return option.parsers.push(new PTCasualDateParser_1.default),option.parsers.push(new PTCasualTimeParser_1.default),option}function createConfiguration(strictMode=!0,littleEndian=!0){return configurations_1.includeCommonConfiguration({parsers:[new SlashDateFormatParser_1.default(littleEndian),new PTWeekdayParser_1.default,new PTTimeExpressionParser_1.default,new PTMonthNameLittleEndianParser_1.default],refiners:[new PTMergeDateTimeRefiner_1.default,new PTMergeDateRangeRefiner_1.default]},strictMode)}exports.casual=new chrono_1.Chrono(createCasualConfiguration()),exports.strict=new chrono_1.Chrono(createConfiguration(!0)),exports.parse=function parse(text,ref,option){return exports.casual.parse(text,ref,option)},exports.parseDate=function parseDate(text,ref,option){return exports.casual.parseDate(text,ref,option)},exports.createCasualConfiguration=createCasualConfiguration,exports.createConfiguration=createConfiguration},ULKs:function(module,exports,__webpack_require__){"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k),Object.defineProperty(o,k2,{enumerable:!0,get:function(){return m[k]}})}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}:function(o,v){o.default=v}),__exportStar=this&&this.__exportStar||function(m,exports){for(var p in m)"default"===p||Object.prototype.hasOwnProperty.call(exports,p)||__createBinding(exports,m,p)},__importStar=this&&this.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(null!=mod)for(var k in mod)"default"!==k&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result};Object.defineProperty(exports,"__esModule",{value:!0}),exports.hans=void 0,__exportStar(__webpack_require__("sHdU"),exports),exports.hans=__importStar(__webpack_require__("NB32"))},UNSI:function(module,exports,__webpack_require__){},Uixn:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("5Nnj"),pattern_1=__webpack_require__("omFw"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),weekdays_1=__webpack_require__("byqA"),PATTERN=new RegExp(`(?:(?:\\,|\\(|\\()\\s*)?(?:(este|esta|pasado|pr[oó]ximo)\\s*)?(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\)))?(?:\\s*(este|esta|pasado|pr[óo]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i");class ESWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const dayOfWeek=match[2].toLowerCase(),weekday=constants_1.WEEKDAY_DICTIONARY[dayOfWeek];if(void 0===weekday)return null;const prefix=match[1],postfix=match[3];let norm=prefix||postfix||"";norm=norm.toLowerCase();let modifier=null;return"pasado"==norm?modifier="this":"próximo"==norm||"proximo"==norm?modifier="next":"este"==norm&&(modifier="this"),weekdays_1.createParsingComponentsAtWeekday(context.reference,weekday,modifier)}}exports.default=ESWeekdayParser},UnXY:function(module,exports,__webpack_require__){"use strict";exports.__esModule=!0,exports.default=void 0;var _propTypes=_interopRequireDefault(__webpack_require__("rf6O")),_react=_interopRequireDefault(__webpack_require__("cDcd")),_reactLifecyclesCompat=__webpack_require__("VCL8"),_ChildMapping=__webpack_require__("8PcY");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _extends(){return _extends=Object.assign||function(target){for(var i=1;i=0||(target[key]=source[key]);return target}(_this$props,["component","childFactory"]),children=values(this.state.children).map(childFactory);return delete props.appear,delete props.enter,delete props.exit,null===Component?children:_react.default.createElement(Component,props,children)},TransitionGroup}(_react.default.Component);TransitionGroup.childContextTypes={transitionGroup:_propTypes.default.object.isRequired},TransitionGroup.propTypes={},TransitionGroup.defaultProps={component:"div",childFactory:function childFactory(child){return child}};var _default=(0,_reactLifecyclesCompat.polyfill)(TransitionGroup);exports.default=_default,module.exports=exports.default},"V+3o":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.zhStringToYear=exports.zhStringToNumber=exports.WEEKDAY_OFFSET=exports.NUMBER=void 0,exports.NUMBER={"零":0,"〇":0,"一":1,"二":2,"两":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9,"十":10},exports.WEEKDAY_OFFSET={"天":0,"日":0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6},exports.zhStringToNumber=function zhStringToNumber(text){let number=0;for(let i=0;i31)return match.index=match.index+match[1].length,null;if(result.start.assign("month",month),result.start.assign("day",day),match[4]){const yearNumber=constants_2.parseYear(match[4]);result.start.assign("year",yearNumber)}else{const year=years_1.findYearClosestToRef(context.refDate,day,month);result.start.imply("year",year)}if(match[2]){const endDate=parseInt(match[2]);result.end=result.start.clone(),result.end.assign("day",endDate)}return result}}exports.default=DEMonthNameLittleEndianParser},VCL8:function(module,__webpack_exports__,__webpack_require__){"use strict";function componentWillMount(){var state=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=state&&this.setState(state)}function componentWillReceiveProps(nextProps){this.setState(function updater(prevState){var state=this.constructor.getDerivedStateFromProps(nextProps,prevState);return null!=state?state:null}.bind(this))}function componentWillUpdate(nextProps,nextState){try{var prevProps=this.props,prevState=this.state;this.props=nextProps,this.state=nextState,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(prevProps,prevState)}finally{this.props=prevProps,this.state=prevState}}function polyfill(Component){var prototype=Component.prototype;if(!prototype||!prototype.isReactComponent)throw new Error("Can only polyfill class components");if("function"!=typeof Component.getDerivedStateFromProps&&"function"!=typeof prototype.getSnapshotBeforeUpdate)return Component;var foundWillMountName=null,foundWillReceivePropsName=null,foundWillUpdateName=null;if("function"==typeof prototype.componentWillMount?foundWillMountName="componentWillMount":"function"==typeof prototype.UNSAFE_componentWillMount&&(foundWillMountName="UNSAFE_componentWillMount"),"function"==typeof prototype.componentWillReceiveProps?foundWillReceivePropsName="componentWillReceiveProps":"function"==typeof prototype.UNSAFE_componentWillReceiveProps&&(foundWillReceivePropsName="UNSAFE_componentWillReceiveProps"),"function"==typeof prototype.componentWillUpdate?foundWillUpdateName="componentWillUpdate":"function"==typeof prototype.UNSAFE_componentWillUpdate&&(foundWillUpdateName="UNSAFE_componentWillUpdate"),null!==foundWillMountName||null!==foundWillReceivePropsName||null!==foundWillUpdateName){var componentName=Component.displayName||Component.name,newApiName="function"==typeof Component.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+componentName+" uses "+newApiName+" but also contains the following legacy lifecycles:"+(null!==foundWillMountName?"\n "+foundWillMountName:"")+(null!==foundWillReceivePropsName?"\n "+foundWillReceivePropsName:"")+(null!==foundWillUpdateName?"\n "+foundWillUpdateName:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"==typeof Component.getDerivedStateFromProps&&(prototype.componentWillMount=componentWillMount,prototype.componentWillReceiveProps=componentWillReceiveProps),"function"==typeof prototype.getSnapshotBeforeUpdate){if("function"!=typeof prototype.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");prototype.componentWillUpdate=componentWillUpdate;var componentDidUpdate=prototype.componentDidUpdate;prototype.componentDidUpdate=function componentDidUpdatePolyfill(prevProps,prevState,maybeSnapshot){var snapshot=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:maybeSnapshot;componentDidUpdate.call(this,prevProps,prevState,snapshot)}}return Component}__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"polyfill",(function(){return polyfill})),componentWillMount.__suppressDeprecationWarning=!0,componentWillReceiveProps.__suppressDeprecationWarning=!0,componentWillUpdate.__suppressDeprecationWarning=!0},VJsS:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("G6Ui"),results_1=__webpack_require__("MpCh"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),PATTERN=new RegExp("("+constants_1.TIME_UNITS_PATTERN+")(later|na|vanaf nu|voortaan|vooruit|uit)(?=(?:\\W|$))","i"),STRICT_PATTERN=new RegExp("("+constants_1.TIME_UNITS_PATTERN+")(later|vanaf nu)(?=(?:\\W|$))","i");class NLTimeUnitLaterFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{constructor(strictMode){super(),this.strictMode=strictMode}innerPattern(){return this.strictMode?STRICT_PATTERN:PATTERN}innerExtract(context,match){const fragments=constants_1.parseTimeUnits(match[1]);return results_1.ParsingComponents.createRelativeFromReference(context.reference,fragments)}}exports.default=NLTimeUnitLaterFormatParser},VOcB:function(module,exports,__webpack_require__){"use strict";function replaceClassName(origClass,classToRemove){return origClass.replace(new RegExp("(^|\\s)"+classToRemove+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}module.exports=function removeClass(element,className){element.classList?element.classList.remove(className):"string"==typeof element.className?element.className=replaceClassName(element.className,className):element.setAttribute("class",replaceClassName(element.className&&element.className.baseVal||"",className))}},VbCf:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const dayjs_1=__importDefault(__webpack_require__("Wgwc")),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),constants_1=__webpack_require__("V+3o"),PATTERN=new RegExp("(?:星期|礼拜|周)(?"+Object.keys(constants_1.WEEKDAY_OFFSET).join("|")+")");class ZHHansWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const result=context.createParsingResult(match.index,match[0]),dayOfWeek=match.groups.weekday,offset=constants_1.WEEKDAY_OFFSET[dayOfWeek];if(void 0===offset)return null;let startMoment=dayjs_1.default(context.refDate);const refOffset=startMoment.day();return startMoment=Math.abs(offset-7-refOffset)=6&&hour<12?(components.assign("hour",components.get("hour")+12),components.assign("meridiem",index_1.Meridiem.PM)):hour<6&&components.assign("meridiem",index_1.Meridiem.AM)}if(match[0].endsWith("после полудня")){components.assign("meridiem",index_1.Meridiem.PM);const hour=components.get("hour");hour>=0&&hour<=6&&components.assign("hour",components.get("hour")+12)}if(match[0].endsWith("утра")){components.assign("meridiem",index_1.Meridiem.AM);components.get("hour")<12&&components.assign("hour",components.get("hour"))}}return components}}exports.default=RUTimeExpressionParser},WMsO:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("Jvgq"),years_1=__webpack_require__("pKWP"),pattern_1=__webpack_require__("omFw"),constants_2=__webpack_require__("Jvgq"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),PATTERN=new RegExp(`((?:в)\\s*)?(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})\\s*(?:[,-]?\\s*(${constants_2.YEAR_PATTERN})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,constants_1.REGEX_PARTS.flags);class RUMonthNameParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return constants_1.REGEX_PARTS.leftBoundary}innerPattern(){return PATTERN}innerExtract(context,match){const monthName=match[2].toLowerCase();if(match[0].length<=3&&!constants_1.FULL_MONTH_NAME_DICTIONARY[monthName])return null;const result=context.createParsingResult(match.index,match.index+match[0].length);result.start.imply("day",1);const month=constants_1.MONTH_DICTIONARY[monthName];if(result.start.assign("month",month),match[3]){const year=constants_2.parseYear(match[3]);result.start.assign("year",year)}else{const year=years_1.findYearClosestToRef(context.refDate,1,month);result.start.imply("year",year)}return result}}exports.default=RUMonthNameParser},Wgwc:function(module,exports,__webpack_require__){module.exports=function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",f="month",h="quarter",c="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t){console.log(`Extracting timezone: '${match[0]}' into : ${result}`)}));let timezoneOffset=60*parseInt(match[2])+parseInt(match[3]||"0");timezoneOffset>840||("-"===match[1]&&(timezoneOffset=-timezoneOffset),null!=result.end&&result.end.assign("timezoneOffset",timezoneOffset),result.start.assign("timezoneOffset",timezoneOffset),result.text+=match[0])})),results}}},WlRN:function(module,exports,__webpack_require__){"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k),Object.defineProperty(o,k2,{enumerable:!0,get:function(){return m[k]}})}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}:function(o,v){o.default=v}),__importStar=this&&this.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(null!=mod)for(var k in mod)"default"!==k&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result},__importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const dayjs_1=__importDefault(__webpack_require__("Wgwc")),index_1=__webpack_require__("6EsV"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),dayjs_2=__webpack_require__("MVmo"),references=__importStar(__webpack_require__("q2Un"));class FRCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(context){return/(maintenant|aujourd'hui|demain|hier|cette\s*nuit|la\s*veille)(?=\W|$)/i}innerExtract(context,match){let targetDate=dayjs_1.default(context.refDate);const lowerText=match[0].toLowerCase(),component=context.createParsingComponents();switch(lowerText){case"maintenant":return references.now(context.reference);case"aujourd'hui":return references.today(context.reference);case"hier":return references.yesterday(context.reference);case"demain":return references.tomorrow(context.reference);default:lowerText.match(/cette\s*nuit/)?(dayjs_2.assignSimilarDate(component,targetDate),component.imply("hour",22),component.imply("meridiem",index_1.Meridiem.PM)):lowerText.match(/la\s*veille/)&&(targetDate=targetDate.add(-1,"day"),dayjs_2.assignSimilarDate(component,targetDate),component.imply("hour",0))}return component}}exports.default=FRCasualDateParser},WvHe:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.mergeStyles=function mergeStyles(source){var target=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},styles=function _objectSpread(target){for(var i=1;i0?results[0].start.date():null}parse(text,referenceDate,option){const context=new ParsingContext(text,referenceDate,option);let results=[];return this.parsers.forEach((parser=>{const parsedResults=Chrono.executeParser(context,parser);results=results.concat(parsedResults)})),results.sort(((a,b)=>a.index-b.index)),this.refiners.forEach((function(refiner){results=refiner.refine(context,results)})),results}static executeParser(context,parser){const results=[],pattern=parser.pattern(context),originalText=context.text;let remainingText=context.text,match=pattern.exec(remainingText);for(;match;){const index=match.index+originalText.length-remainingText.length;match.index=index;const result=parser.extract(context,match);if(!result){remainingText=originalText.substring(match.index+1),match=pattern.exec(remainingText);continue}let parsedResult=null;result instanceof results_1.ParsingResult?parsedResult=result:result instanceof results_1.ParsingComponents?(parsedResult=context.createParsingResult(match.index,match[0]),parsedResult.start=result):parsedResult=context.createParsingResult(match.index,match[0],result),context.debug((()=>console.log(`${parser.constructor.name} extracted result ${parsedResult}`))),results.push(parsedResult),remainingText=originalText.substring(index+parsedResult.text.length),match=pattern.exec(remainingText)}return results}}exports.Chrono=Chrono;class ParsingContext{constructor(text,refDate,option){this.text=text,this.reference=new results_1.ReferenceWithTimezone(refDate),this.option=null!=option?option:{},this.refDate=this.reference.instant}createParsingComponents(components){return components instanceof results_1.ParsingComponents?components:new results_1.ParsingComponents(this.reference,components)}createParsingResult(index,textOrEndIndex,startComponents,endComponents){const text="string"==typeof textOrEndIndex?textOrEndIndex:this.text.substring(index,textOrEndIndex),start=startComponents?this.createParsingComponents(startComponents):null,end=endComponents?this.createParsingComponents(endComponents):null;return new results_1.ParsingResult(this.reference,index,text,start,end)}debug(block){if(this.option.debug)if(this.option.debug instanceof Function)this.option.debug(block);else{this.option.debug.debug(block)}}}exports.ParsingContext=ParsingContext},aWHD:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.addImpliedTimeUnits=exports.reverseTimeUnits=void 0,exports.reverseTimeUnits=function reverseTimeUnits(timeUnits){const reversed={};for(const key in timeUnits)reversed[key]=-timeUnits[key];return reversed},exports.addImpliedTimeUnits=function addImpliedTimeUnits(components,timeUnits){const output=components.clone();let date=components.dayjs();for(const key in timeUnits)date=date.add(timeUnits[key],key);return("day"in timeUnits||"d"in timeUnits||"week"in timeUnits||"month"in timeUnits||"year"in timeUnits)&&(output.imply("day",date.date()),output.imply("month",date.month()+1),output.imply("year",date.year())),("second"in timeUnits||"minute"in timeUnits||"hour"in timeUnits)&&(output.imply("second",date.second()),output.imply("minute",date.minute()),output.imply("hour",date.hour())),output}},"apo/":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.mergeDateTimeComponent=exports.mergeDateTimeResult=void 0;const index_1=__webpack_require__("6EsV");function mergeDateTimeComponent(dateComponent,timeComponent){const dateTimeComponent=dateComponent.clone();return timeComponent.isCertain("hour")?(dateTimeComponent.assign("hour",timeComponent.get("hour")),dateTimeComponent.assign("minute",timeComponent.get("minute")),timeComponent.isCertain("second")?(dateTimeComponent.assign("second",timeComponent.get("second")),timeComponent.isCertain("millisecond")?dateTimeComponent.assign("millisecond",timeComponent.get("millisecond")):dateTimeComponent.imply("millisecond",timeComponent.get("millisecond"))):(dateTimeComponent.imply("second",timeComponent.get("second")),dateTimeComponent.imply("millisecond",timeComponent.get("millisecond")))):(dateTimeComponent.imply("hour",timeComponent.get("hour")),dateTimeComponent.imply("minute",timeComponent.get("minute")),dateTimeComponent.imply("second",timeComponent.get("second")),dateTimeComponent.imply("millisecond",timeComponent.get("millisecond"))),timeComponent.isCertain("timezoneOffset")&&dateTimeComponent.assign("timezoneOffset",timeComponent.get("timezoneOffset")),timeComponent.isCertain("meridiem")?dateTimeComponent.assign("meridiem",timeComponent.get("meridiem")):null!=timeComponent.get("meridiem")&&null==dateTimeComponent.get("meridiem")&&dateTimeComponent.imply("meridiem",timeComponent.get("meridiem")),dateTimeComponent.get("meridiem")==index_1.Meridiem.PM&&dateTimeComponent.get("hour")<12&&(timeComponent.isCertain("hour")?dateTimeComponent.assign("hour",dateTimeComponent.get("hour")+12):dateTimeComponent.imply("hour",dateTimeComponent.get("hour")+12)),dateTimeComponent}exports.mergeDateTimeResult=function mergeDateTimeResult(dateResult,timeResult){const result=dateResult.clone(),beginDate=dateResult.start,beginTime=timeResult.start;if(result.start=mergeDateTimeComponent(beginDate,beginTime),null!=dateResult.end||null!=timeResult.end){const endDateTime=mergeDateTimeComponent(null==dateResult.end?dateResult.start:dateResult.end,null==timeResult.end?timeResult.start:timeResult.end);null==dateResult.end&&endDateTime.date().getTime()2&&void 0!==arguments[2]?arguments[2]:200,callback=arguments.length>3&&void 0!==arguments[3]?arguments[3]:noop,start=getScrollTop(element),change=to-start,increment=10,currentTime=0;!function animateScroll(){var val=function easeOutCubic(t,b,c,d){return c*((t=t/d-1)*t*t+1)+b}(currentTime+=increment,start,change,duration);scrollTo(element,val),currentTimemenuRect.bottom?scrollTo(menuEl,Math.min(focusedEl.offsetTop+focusedEl.clientHeight-menuEl.offsetHeight+overScroll,menuEl.scrollHeight)):focusedRect.top-overScroll-1}function getScrollTop(el){return isDocumentElement(el)?window.pageYOffset:el.scrollTop}function scrollTo(el,top){isDocumentElement(el)?window.scrollTo(0,top):el.scrollTop=top}exports.cleanValue=function cleanValue(value){return Array.isArray(value)?value.filter(Boolean):"object"===_typeof(value)&&null!==value?[value]:[]}},bQgK:function(module,exports,__webpack_require__){(function(process){(function(){var getNanoSeconds,hrtime,loadTime,moduleLoadTime,nodeLoadTime,upTime;"undefined"!=typeof performance&&null!==performance&&performance.now?module.exports=function(){return performance.now()}:null!=process&&process.hrtime?(module.exports=function(){return(getNanoSeconds()-nodeLoadTime)/1e6},hrtime=process.hrtime,moduleLoadTime=(getNanoSeconds=function(){var hr;return 1e9*(hr=hrtime())[0]+hr[1]})(),upTime=1e9*process.uptime(),nodeLoadTime=moduleLoadTime-upTime):Date.now?(module.exports=function(){return Date.now()-loadTime},loadTime=Date.now()):(module.exports=function(){return(new Date).getTime()-loadTime},loadTime=(new Date).getTime())}).call(this)}).call(this,__webpack_require__("8oxB"))},bZMm:function(module,exports){!function(self){"use strict";if(!self.fetch){var support={searchParams:"URLSearchParams"in self,iterable:"Symbol"in self&&"iterator"in Symbol,blob:"FileReader"in self&&"Blob"in self&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in self,arrayBuffer:"ArrayBuffer"in self};if(support.arrayBuffer)var viewClasses=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],isDataView=function(obj){return obj&&DataView.prototype.isPrototypeOf(obj)},isArrayBufferView=ArrayBuffer.isView||function(obj){return obj&&viewClasses.indexOf(Object.prototype.toString.call(obj))>-1};Headers.prototype.append=function(name,value){name=normalizeName(name),value=normalizeValue(value);var oldValue=this.map[name];this.map[name]=oldValue?oldValue+","+value:value},Headers.prototype.delete=function(name){delete this.map[normalizeName(name)]},Headers.prototype.get=function(name){return name=normalizeName(name),this.has(name)?this.map[name]:null},Headers.prototype.has=function(name){return this.map.hasOwnProperty(normalizeName(name))},Headers.prototype.set=function(name,value){this.map[normalizeName(name)]=normalizeValue(value)},Headers.prototype.forEach=function(callback,thisArg){for(var name in this.map)this.map.hasOwnProperty(name)&&callback.call(thisArg,this.map[name],name,this)},Headers.prototype.keys=function(){var items=[];return this.forEach((function(value,name){items.push(name)})),iteratorFor(items)},Headers.prototype.values=function(){var items=[];return this.forEach((function(value){items.push(value)})),iteratorFor(items)},Headers.prototype.entries=function(){var items=[];return this.forEach((function(value,name){items.push([name,value])})),iteratorFor(items)},support.iterable&&(Headers.prototype[Symbol.iterator]=Headers.prototype.entries);var methods=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];Request.prototype.clone=function(){return new Request(this,{body:this._bodyInit})},Body.call(Request.prototype),Body.call(Response.prototype),Response.prototype.clone=function(){return new Response(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new Headers(this.headers),url:this.url})},Response.error=function(){var response=new Response(null,{status:0,statusText:""});return response.type="error",response};var redirectStatuses=[301,302,303,307,308];Response.redirect=function(url,status){if(-1===redirectStatuses.indexOf(status))throw new RangeError("Invalid status code");return new Response(null,{status:status,headers:{location:url}})},self.Headers=Headers,self.Request=Request,self.Response=Response,self.fetch=function(input,init){return new Promise((function(resolve,reject){var request=new Request(input,init),xhr=new XMLHttpRequest;xhr.onload=function(){var rawHeaders,headers,options={status:xhr.status,statusText:xhr.statusText,headers:(rawHeaders=xhr.getAllResponseHeaders()||"",headers=new Headers,rawHeaders.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(line){var parts=line.split(":"),key=parts.shift().trim();if(key){var value=parts.join(":").trim();headers.append(key,value)}})),headers)};options.url="responseURL"in xhr?xhr.responseURL:options.headers.get("X-Request-URL");var body="response"in xhr?xhr.response:xhr.responseText;resolve(new Response(body,options))},xhr.onerror=function(){reject(new TypeError("Network request failed"))},xhr.ontimeout=function(){reject(new TypeError("Network request failed"))},xhr.open(request.method,request.url,!0),"include"===request.credentials?xhr.withCredentials=!0:"omit"===request.credentials&&(xhr.withCredentials=!1),"responseType"in xhr&&support.blob&&(xhr.responseType="blob"),request.headers.forEach((function(value,name){xhr.setRequestHeader(name,value)})),xhr.send(void 0===request._bodyInit?null:request._bodyInit)}))},self.fetch.polyfill=!0}function normalizeName(name){if("string"!=typeof name&&(name=String(name)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name))throw new TypeError("Invalid character in header field name");return name.toLowerCase()}function normalizeValue(value){return"string"!=typeof value&&(value=String(value)),value}function iteratorFor(items){var iterator={next:function(){var value=items.shift();return{done:void 0===value,value:value}}};return support.iterable&&(iterator[Symbol.iterator]=function(){return iterator}),iterator}function Headers(headers){this.map={},headers instanceof Headers?headers.forEach((function(value,name){this.append(name,value)}),this):Array.isArray(headers)?headers.forEach((function(header){this.append(header[0],header[1])}),this):headers&&Object.getOwnPropertyNames(headers).forEach((function(name){this.append(name,headers[name])}),this)}function consumed(body){if(body.bodyUsed)return Promise.reject(new TypeError("Already read"));body.bodyUsed=!0}function fileReaderReady(reader){return new Promise((function(resolve,reject){reader.onload=function(){resolve(reader.result)},reader.onerror=function(){reject(reader.error)}}))}function readBlobAsArrayBuffer(blob){var reader=new FileReader,promise=fileReaderReady(reader);return reader.readAsArrayBuffer(blob),promise}function bufferClone(buf){if(buf.slice)return buf.slice(0);var view=new Uint8Array(buf.byteLength);return view.set(new Uint8Array(buf)),view.buffer}function Body(){return this.bodyUsed=!1,this._initBody=function(body){if(this._bodyInit=body,body)if("string"==typeof body)this._bodyText=body;else if(support.blob&&Blob.prototype.isPrototypeOf(body))this._bodyBlob=body;else if(support.formData&&FormData.prototype.isPrototypeOf(body))this._bodyFormData=body;else if(support.searchParams&&URLSearchParams.prototype.isPrototypeOf(body))this._bodyText=body.toString();else if(support.arrayBuffer&&support.blob&&isDataView(body))this._bodyArrayBuffer=bufferClone(body.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!support.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(body)&&!isArrayBufferView(body))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=bufferClone(body)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof body?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):support.searchParams&&URLSearchParams.prototype.isPrototypeOf(body)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},support.blob&&(this.blob=function(){var rejected=consumed(this);if(rejected)return rejected;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?consumed(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(readBlobAsArrayBuffer)}),this.text=function(){var rejected=consumed(this);if(rejected)return rejected;if(this._bodyBlob)return function readBlobAsText(blob){var reader=new FileReader,promise=fileReaderReady(reader);return reader.readAsText(blob),promise}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function readArrayBufferAsText(buf){for(var view=new Uint8Array(buf),chars=new Array(view.length),i=0;i-1?upcased:method}(options.method||this.method||"GET"),this.mode=options.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&body)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(body)}function decode(body){var form=new FormData;return body.trim().split("&").forEach((function(bytes){if(bytes){var split=bytes.split("="),name=split.shift().replace(/\+/g," "),value=split.join("=").replace(/\+/g," ");form.append(decodeURIComponent(name),decodeURIComponent(value))}})),form}function Response(bodyInit,options){options||(options={}),this.type="default",this.status=void 0===options.status?200:options.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in options?options.statusText:"OK",this.headers=new Headers(options.headers),this.url=options.url||"",this._initBody(bodyInit)}}("undefined"!=typeof self?self:this)},boci:function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;!function(root,factory){"use strict";"object"==typeof module.exports?module.exports=factory():(__WEBPACK_AMD_DEFINE_ARRAY__=[],void 0===(__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof(__WEBPACK_AMD_DEFINE_FACTORY__=factory)?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__)||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}(0,(function(){"use strict";var toStr=Object.prototype.toString;function hasOwnProperty(obj,prop){return null!=obj&&Object.prototype.hasOwnProperty.call(obj,prop)}function isEmpty(value){if(!value)return!0;if(isArray(value)&&0===value.length)return!0;if("string"!=typeof value){for(var i in value)if(hasOwnProperty(value,i))return!1;return!0}return!1}function toString(type){return toStr.call(type)}var isArray=Array.isArray||function(obj){return"[object Array]"===toStr.call(obj)};function getKey(key){var intKey=parseInt(key);return intKey.toString()===key?intKey:key}function factory(options){var hasShallowProperty,getShallowPropertySafely,objectPath=function(obj){return Object.keys(objectPath).reduce((function(proxy,prop){return"create"===prop||"function"==typeof objectPath[prop]&&(proxy[prop]=objectPath[prop].bind(objectPath,obj)),proxy}),{})};function getShallowProperty(obj,prop){if(hasShallowProperty(obj,prop))return obj[prop]}function set(obj,path,value,doNotReplace){if("number"==typeof path&&(path=[path]),!path||0===path.length)return obj;if("string"==typeof path)return set(obj,path.split(".").map(getKey),value,doNotReplace);var currentPath=path[0],currentValue=getShallowPropertySafely(obj,currentPath);return 1===path.length?(void 0!==currentValue&&doNotReplace||(obj[currentPath]=value),currentValue):(void 0===currentValue&&("number"==typeof path[1]?obj[currentPath]=[]:obj[currentPath]={}),set(obj[currentPath],path.slice(1),value,doNotReplace))}return hasShallowProperty=(options=options||{}).includeInheritedProps?function(){return!0}:function(obj,prop){return"number"==typeof prop&&Array.isArray(obj)||hasOwnProperty(obj,prop)},getShallowPropertySafely=options.includeInheritedProps?function(obj,currentPath){"string"!=typeof currentPath&&"number"!=typeof currentPath&&(currentPath=String(currentPath));var currentValue=getShallowProperty(obj,currentPath);if("__proto__"===currentPath||"prototype"===currentPath||"constructor"===currentPath&&"function"==typeof currentValue)throw new Error("For security reasons, object's magic properties cannot be set");return currentValue}:function(obj,currentPath){return getShallowProperty(obj,currentPath)},objectPath.has=function(obj,path){if("number"==typeof path?path=[path]:"string"==typeof path&&(path=path.split(".")),!path||0===path.length)return!!obj;for(var i=0;i=0&&(backwardCount-=7),backwardCount}exports.createParsingComponentsAtWeekday=function createParsingComponentsAtWeekday(reference,weekday,modifier){const daysToWeekday=getDaysToWeekday(reference.getDateWithAdjustedTimezone(),weekday,modifier);let components=new results_1.ParsingComponents(reference);return components=timeunits_1.addImpliedTimeUnits(components,{day:daysToWeekday}),components.assign("weekday",weekday),components},exports.getDaysToWeekday=getDaysToWeekday,exports.getDaysToWeekdayClosest=getDaysToWeekdayClosest,exports.getDaysForwardToWeekday=getDaysForwardToWeekday,exports.getBackwardDaysToWeekday=getBackwardDaysToWeekday},"c+lM":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.stripDiacritics=void 0;var diacritics=[{base:"A",letters:/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},{base:"AA",letters:/[\uA732]/g},{base:"AE",letters:/[\u00C6\u01FC\u01E2]/g},{base:"AO",letters:/[\uA734]/g},{base:"AU",letters:/[\uA736]/g},{base:"AV",letters:/[\uA738\uA73A]/g},{base:"AY",letters:/[\uA73C]/g},{base:"B",letters:/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},{base:"C",letters:/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},{base:"D",letters:/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},{base:"DZ",letters:/[\u01F1\u01C4]/g},{base:"Dz",letters:/[\u01F2\u01C5]/g},{base:"E",letters:/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},{base:"F",letters:/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},{base:"G",letters:/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},{base:"H",letters:/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},{base:"I",letters:/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},{base:"J",letters:/[\u004A\u24BF\uFF2A\u0134\u0248]/g},{base:"K",letters:/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},{base:"L",letters:/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},{base:"LJ",letters:/[\u01C7]/g},{base:"Lj",letters:/[\u01C8]/g},{base:"M",letters:/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},{base:"N",letters:/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},{base:"NJ",letters:/[\u01CA]/g},{base:"Nj",letters:/[\u01CB]/g},{base:"O",letters:/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},{base:"OI",letters:/[\u01A2]/g},{base:"OO",letters:/[\uA74E]/g},{base:"OU",letters:/[\u0222]/g},{base:"P",letters:/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},{base:"Q",letters:/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},{base:"R",letters:/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},{base:"S",letters:/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},{base:"T",letters:/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},{base:"TZ",letters:/[\uA728]/g},{base:"U",letters:/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},{base:"V",letters:/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},{base:"VY",letters:/[\uA760]/g},{base:"W",letters:/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},{base:"X",letters:/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},{base:"Y",letters:/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},{base:"Z",letters:/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}];exports.stripDiacritics=function stripDiacritics(str){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(modifiersObj).reduce((function(modifiers,modifierName){var value=modifiersObj[modifierName];return dayMatchesModifier(day,value)&&modifiers.push(modifierName),modifiers}),[])}exports.default={dayMatchesModifier:dayMatchesModifier,getModifiersForDay:getModifiersForDay}},d6Hc:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _react=function _interopRequireWildcard(obj){if(obj&&obj.__esModule)return obj;var newObj={};if(null!=obj)for(var key in obj)if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};desc.get||desc.set?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,newObj}(__webpack_require__("cDcd")),_NodeResolver=function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__("N3bB"));function _objectWithoutProperties(source,excluded){if(null==source)return{};var key,i,target=function _objectWithoutPropertiesLoose(source,excluded){if(null==source)return{};var key,i,target={},sourceKeys=Object.keys(source);for(i=0;i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}function _typeof(obj){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(obj){return typeof obj}:function _typeof(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _defineProperties(target,props){for(var i=0;i0,availableScroll=scrollHeight-clientHeight-scrollTop,shouldCancelScroll=!1;availableScroll>delta&&_this.isBottom&&(onBottomLeave&&onBottomLeave(event),_this.isBottom=!1),isDeltaPositive&&_this.isTop&&(onTopLeave&&onTopLeave(event),_this.isTop=!1),isDeltaPositive&&delta>availableScroll?(onBottomArrive&&!_this.isBottom&&onBottomArrive(event),target.scrollTop=scrollHeight,shouldCancelScroll=!0,_this.isBottom=!0):!isDeltaPositive&&-delta>scrollTop&&(onTopArrive&&!_this.isTop&&onTopArrive(event),target.scrollTop=0,shouldCancelScroll=!0,_this.isTop=!0),shouldCancelScroll&&_this.cancelScroll(event)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onWheel",(function(event){_this.handleEventDelta(event,event.deltaY)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onTouchStart",(function(event){_this.touchStart=event.changedTouches[0].clientY})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onTouchMove",(function(event){var deltaY=_this.touchStart-event.changedTouches[0].clientY;_this.handleEventDelta(event,deltaY)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getScrollTarget",(function(ref){_this.scrollTarget=ref})),_this}return _inherits(ScrollCaptor,_Component),_createClass(ScrollCaptor,[{key:"componentDidMount",value:function componentDidMount(){this.startListening(this.scrollTarget)}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.stopListening(this.scrollTarget)}},{key:"startListening",value:function startListening(el){el&&(el.scrollHeight<=el.clientHeight||("function"==typeof el.addEventListener&&el.addEventListener("wheel",this.onWheel,!1),"function"==typeof el.addEventListener&&el.addEventListener("touchstart",this.onTouchStart,!1),"function"==typeof el.addEventListener&&el.addEventListener("touchmove",this.onTouchMove,!1)))}},{key:"stopListening",value:function stopListening(el){el.scrollHeight<=el.clientHeight||("function"==typeof el.removeEventListener&&el.removeEventListener("wheel",this.onWheel,!1),"function"==typeof el.removeEventListener&&el.removeEventListener("touchstart",this.onTouchStart,!1),"function"==typeof el.removeEventListener&&el.removeEventListener("touchmove",this.onTouchMove,!1))}},{key:"render",value:function render(){return _react.default.createElement(_NodeResolver.default,{innerRef:this.getScrollTarget},this.props.children)}}]),ScrollCaptor}(_react.Component),ScrollCaptorSwitch=function(_Component2){function ScrollCaptorSwitch(){return _classCallCheck(this,ScrollCaptorSwitch),_possibleConstructorReturn(this,_getPrototypeOf(ScrollCaptorSwitch).apply(this,arguments))}return _inherits(ScrollCaptorSwitch,_Component2),_createClass(ScrollCaptorSwitch,[{key:"render",value:function render(){var _this$props2=this.props,isEnabled=_this$props2.isEnabled,props=_objectWithoutProperties(_this$props2,["isEnabled"]);return isEnabled?_react.default.createElement(ScrollCaptor,props):this.props.children}}]),ScrollCaptorSwitch}(_react.Component);exports.default=ScrollCaptorSwitch,_defineProperty(ScrollCaptorSwitch,"defaultProps",{isEnabled:!0})},"dJ/X":function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const AbstractMergeDateRangeRefiner_1=__importDefault(__webpack_require__("fx0C"));class ZHHantMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default{patternBetween(){return/^\s*(至|到|\-|\~|~|-|ー)\s*$/i}}exports.default=ZHHantMergeDateRangeRefiner},ddIi:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"b",(function(){return setupCreateReducer})),__webpack_require__.d(__webpack_exports__,"a",(function(){return es_store}));var external_tribe_modules_redux_=__webpack_require__("rKB8"),isMergeableObject=function isMergeableObject(value){return function isNonNullObject(value){return!!value&&"object"==typeof value}(value)&&!function isSpecial(value){var stringValue=Object.prototype.toString.call(value);return"[object RegExp]"===stringValue||"[object Date]"===stringValue||function isReactElement(value){return value.$$typeof===REACT_ELEMENT_TYPE}(value)}(value)};var REACT_ELEMENT_TYPE="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function cloneUnlessOtherwiseSpecified(value,options){return!1!==options.clone&&options.isMergeableObject(value)?deepmerge(function emptyTarget(val){return Array.isArray(val)?[]:{}}(value),value,options):value}function defaultArrayMerge(target,source,options){return target.concat(source).map((function(element){return cloneUnlessOtherwiseSpecified(element,options)}))}function deepmerge(target,source,options){(options=options||{}).arrayMerge=options.arrayMerge||defaultArrayMerge,options.isMergeableObject=options.isMergeableObject||isMergeableObject;var sourceIsArray=Array.isArray(source);return sourceIsArray===Array.isArray(target)?sourceIsArray?options.arrayMerge(target,source,options):function mergeObject(target,source,options){var destination={};return options.isMergeableObject(target)&&Object.keys(target).forEach((function(key){destination[key]=cloneUnlessOtherwiseSpecified(target[key],options)})),Object.keys(source).forEach((function(key){options.isMergeableObject(source[key])&&target[key]?destination[key]=deepmerge(target[key],source[key],options):destination[key]=cloneUnlessOtherwiseSpecified(source[key],options)})),destination}(target,source,options):cloneUnlessOtherwiseSpecified(source,options)}deepmerge.all=function deepmergeAll(array,options){if(!Array.isArray(array))throw new Error("first argument should be an array");return array.reduce((function(prev,next){return deepmerge(prev,next,options)}),{})};var es=deepmerge;var curry=function curry(fn){for(var _len=arguments.length,args=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)args[_key-1]=arguments[_key];return fn.length<=args.length?fn.apply(void 0,args):function(){for(var _len2=arguments.length,more=Array(_len2),_key2=0;_key2<_len2;_key2++)more[_key2]=arguments[_key2];return curry.apply(void 0,[fn].concat(args,more))}},_extends=Object.assign||function(target){for(var i=1;i31)return match.index=match.index+match[1].length,null;if(result.start.assign("month",month),result.start.assign("day",day),match[4]){const yearNumber=constants_2.parseYear(match[4]);result.start.assign("year",yearNumber)}else{const year=years_1.findYearClosestToRef(context.refDate,day,month);result.start.imply("year",year)}if(match[2]){const endDate=parseInt(match[2]);result.end=result.start.clone(),result.end.assign("day",endDate)}return result}}exports.default=ESMonthNameLittleEndianParser},eTEF:function(module,exports,__webpack_require__){"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k),Object.defineProperty(o,k2,{enumerable:!0,get:function(){return m[k]}})}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}:function(o,v){o.default=v}),__importStar=this&&this.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(null!=mod)for(var k in mod)"default"!==k&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result},__importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),references=__importStar(__webpack_require__("q2Un")),dayjs_1=__webpack_require__("MVmo"),dayjs_2=__importDefault(__webpack_require__("Wgwc")),constants_1=__webpack_require__("Jvgq"),PATTERN=new RegExp(`(сейчас|прошлым\\s*вечером|прошлой\\s*ночью|следующей\\s*ночью|сегодня\\s*ночью|этой\\s*ночью|ночью|этим утром|утром|утра|в\\s*полдень|вечером|вечера|в\\s*полночь)${constants_1.REGEX_PARTS.rightBoundary}`,constants_1.REGEX_PARTS.flags);class RUCasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return constants_1.REGEX_PARTS.leftBoundary}innerPattern(){return PATTERN}innerExtract(context,match){let targetDate=dayjs_2.default(context.refDate);const lowerText=match[0].toLowerCase(),component=context.createParsingComponents();if("сейчас"===lowerText)return references.now(context.reference);if("вечером"===lowerText||"вечера"===lowerText)return references.evening(context.reference);if(lowerText.endsWith("утром")||lowerText.endsWith("утра"))return references.morning(context.reference);if(lowerText.match(/в\s*полдень/))return references.noon(context.reference);if(lowerText.match(/прошлой\s*ночью/))return references.lastNight(context.reference);if(lowerText.match(/прошлым\s*вечером/))return references.yesterdayEvening(context.reference);if(lowerText.match(/следующей\s*ночью/)){const daysToAdd=targetDate.hour()<22?1:2;targetDate=targetDate.add(daysToAdd,"day"),dayjs_1.assignSimilarDate(component,targetDate),component.imply("hour",0)}return lowerText.match(/в\s*полночь/)||lowerText.endsWith("ночью")?references.midnight(context.reference):component}}exports.default=RUCasualTimeParser},epFH:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ModifiersUtils=exports.LocaleUtils=exports.DateUtils=exports.DayPicker=void 0;var _extends=Object.assign||function(target){for(var i=1;i1&&props.fromMonth){var fromMonth=Helpers.startOfMonth(props.fromMonth),diffInMonths=Helpers.getMonthsDiff(fromMonth,currentMonth);currentMonth=DateUtils.addMonths(fromMonth,Math.floor(diffInMonths/props.numberOfMonths)*props.numberOfMonths)}else props.toMonth&&props.numberOfMonths>1&&Helpers.getMonthsDiff(currentMonth,props.toMonth)<=0&&(currentMonth=DateUtils.addMonths(Helpers.startOfMonth(props.toMonth),1-this.props.numberOfMonths));return currentMonth}},{key:"getNextNavigableMonth",value:function getNextNavigableMonth(){return DateUtils.addMonths(this.state.currentMonth,this.props.numberOfMonths)}},{key:"getPreviousNavigableMonth",value:function getPreviousNavigableMonth(){return DateUtils.addMonths(this.state.currentMonth,-1)}},{key:"allowPreviousMonth",value:function allowPreviousMonth(){var previousMonth=DateUtils.addMonths(this.state.currentMonth,-1);return this.allowMonth(previousMonth)}},{key:"allowNextMonth",value:function allowNextMonth(){var nextMonth=DateUtils.addMonths(this.state.currentMonth,this.props.numberOfMonths);return this.allowMonth(nextMonth)}},{key:"allowMonth",value:function allowMonth(d){var _props=this.props,fromMonth=_props.fromMonth,toMonth=_props.toMonth;return!(!_props.canChangeMonth||fromMonth&&Helpers.getMonthsDiff(fromMonth,d)<0||toMonth&&Helpers.getMonthsDiff(toMonth,d)>0)}},{key:"allowYearChange",value:function allowYearChange(){return this.props.canChangeMonth}},{key:"showMonth",value:function showMonth(d,callback){var _this2=this;this.allowMonth(d)&&this.setState({currentMonth:Helpers.startOfMonth(d)},(function(){callback&&callback(),_this2.props.onMonthChange&&_this2.props.onMonthChange(_this2.state.currentMonth)}))}},{key:"showNextYear",value:function showNextYear(){if(this.allowYearChange()){var nextMonth=DateUtils.addMonths(this.state.currentMonth,12);this.showMonth(nextMonth)}}},{key:"showPreviousYear",value:function showPreviousYear(){if(this.allowYearChange()){var nextMonth=DateUtils.addMonths(this.state.currentMonth,-12);this.showMonth(nextMonth)}}},{key:"focus",value:function focus(){this.wrapper.focus()}},{key:"focusFirstDayOfMonth",value:function focusFirstDayOfMonth(){Helpers.getDayNodes(this.dayPicker,this.props.classNames)[0].focus()}},{key:"focusLastDayOfMonth",value:function focusLastDayOfMonth(){var dayNodes=Helpers.getDayNodes(this.dayPicker,this.props.classNames);dayNodes[dayNodes.length-1].focus()}},{key:"focusPreviousDay",value:function focusPreviousDay(dayNode){var _this3=this,dayNodes=Helpers.getDayNodes(this.dayPicker,this.props.classNames),dayNodeIndex=Helpers.nodeListToArray(dayNodes).indexOf(dayNode);-1!==dayNodeIndex&&(0===dayNodeIndex?this.showPreviousMonth((function(){return _this3.focusLastDayOfMonth()})):dayNodes[dayNodeIndex-1].focus())}},{key:"focusNextDay",value:function focusNextDay(dayNode){var _this4=this,dayNodes=Helpers.getDayNodes(this.dayPicker,this.props.classNames),dayNodeIndex=Helpers.nodeListToArray(dayNodes).indexOf(dayNode);-1!==dayNodeIndex&&(dayNodeIndex===dayNodes.length-1?this.showNextMonth((function(){return _this4.focusFirstDayOfMonth()})):dayNodes[dayNodeIndex+1].focus())}},{key:"focusNextWeek",value:function focusNextWeek(dayNode){var _this5=this,dayNodes=Helpers.getDayNodes(this.dayPicker,this.props.classNames),dayNodeIndex=Helpers.nodeListToArray(dayNodes).indexOf(dayNode);dayNodeIndex>dayNodes.length-8?this.showNextMonth((function(){var nextMonthDayNodeIndex=7-(dayNodes.length-dayNodeIndex);Helpers.getDayNodes(_this5.dayPicker,_this5.props.classNames)[nextMonthDayNodeIndex].focus()})):dayNodes[dayNodeIndex+7].focus()}},{key:"focusPreviousWeek",value:function focusPreviousWeek(dayNode){var _this6=this,dayNodes=Helpers.getDayNodes(this.dayPicker,this.props.classNames),dayNodeIndex=Helpers.nodeListToArray(dayNodes).indexOf(dayNode);dayNodeIndex<=6?this.showPreviousMonth((function(){var previousMonthDayNodes=Helpers.getDayNodes(_this6.dayPicker,_this6.props.classNames);previousMonthDayNodes[previousMonthDayNodes.length-7+dayNodeIndex].focus()})):dayNodes[dayNodeIndex-7].focus()}},{key:"handleOutsideDayClick",value:function handleOutsideDayClick(day){var currentMonth=this.state.currentMonth,numberOfMonths=this.props.numberOfMonths,diffInMonths=Helpers.getMonthsDiff(currentMonth,day);diffInMonths>0&&diffInMonths>=numberOfMonths?this.showNextMonth():diffInMonths<0&&this.showPreviousMonth()}},{key:"renderNavbar",value:function renderNavbar(){var _props2=this.props,labels=_props2.labels,locale=_props2.locale,localeUtils=_props2.localeUtils,canChangeMonth=_props2.canChangeMonth,navbarElement=_props2.navbarElement,attributes=function _objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_props2,["labels","locale","localeUtils","canChangeMonth","navbarElement"]);if(!canChangeMonth)return null;var props={month:this.state.currentMonth,classNames:this.props.classNames,className:this.props.classNames.navBar,nextMonth:this.getNextNavigableMonth(),previousMonth:this.getPreviousNavigableMonth(),showPreviousButton:this.allowPreviousMonth(),showNextButton:this.allowNextMonth(),onNextClick:this.showNextMonth,onPreviousClick:this.showPreviousMonth,dir:attributes.dir,labels:labels,locale:locale,localeUtils:localeUtils};return _react2.default.isValidElement(navbarElement)?_react2.default.cloneElement(navbarElement,props):_react2.default.createElement(navbarElement,props)}},{key:"renderMonths",value:function renderMonths(){for(var months=[],firstDayOfWeek=Helpers.getFirstDayOfWeekFromProps(this.props),i=0;i1&&(startMoment=startMoment.add(1,"day")):"昨"==day1||"尋"==day1||"琴"==day1?startMoment=startMoment.add(-1,"day"):"前"==day1?startMoment=startMoment.add(-2,"day"):"大前"==day1?startMoment=startMoment.add(-3,"day"):"後"==day1?startMoment=startMoment.add(2,"day"):"大後"==day1&&(startMoment=startMoment.add(3,"day")),"早"==time1||"朝"==time1?result.start.imply("hour",6):"晚"==time1&&(result.start.imply("hour",22),result.start.imply("meridiem",1))}else if(match[4]){const time2=match[4][0];"早"==time2||"朝"==time2||"上"==time2?result.start.imply("hour",6):"下"==time2||"晏"==time2?(result.start.imply("hour",15),result.start.imply("meridiem",1)):"中"==time2?(result.start.imply("hour",12),result.start.imply("meridiem",1)):"夜"==time2||"晚"==time2?(result.start.imply("hour",22),result.start.imply("meridiem",1)):"凌"==time2&&result.start.imply("hour",0)}else if(match[5]){const day3=match[5];"明"==day3||"聽"==day3?refMoment.hour()>1&&(startMoment=startMoment.add(1,"day")):"昨"==day3||"尋"==day3||"琴"==day3?startMoment=startMoment.add(-1,"day"):"前"==day3?startMoment=startMoment.add(-2,"day"):"大前"==day3?startMoment=startMoment.add(-3,"day"):"後"==day3?startMoment=startMoment.add(2,"day"):"大後"==day3&&(startMoment=startMoment.add(3,"day"));const timeString3=match[6];if(timeString3){const time3=timeString3[0];"早"==time3||"朝"==time3||"上"==time3?result.start.imply("hour",6):"下"==time3||"晏"==time3?(result.start.imply("hour",15),result.start.imply("meridiem",1)):"中"==time3?(result.start.imply("hour",12),result.start.imply("meridiem",1)):"夜"==time3||"晚"==time3?(result.start.imply("hour",22),result.start.imply("meridiem",1)):"凌"==time3&&result.start.imply("hour",0)}}return result.start.assign("day",startMoment.date()),result.start.assign("month",startMoment.month()+1),result.start.assign("year",startMoment.year()),result}}exports.default=ZHHantCasualDateParser},esAq:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("ksW2"),results_1=__webpack_require__("MpCh"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),PATTERN_WITH_PREFIX=new RegExp(`(?:within|in|for)\\s*(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${constants_1.TIME_UNITS_PATTERN})(?=\\W|$)`,"i"),PATTERN_WITHOUT_PREFIX=new RegExp(`(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${constants_1.TIME_UNITS_PATTERN})(?=\\W|$)`,"i");class ENTimeUnitWithinFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(context){return context.option.forwardDate?PATTERN_WITHOUT_PREFIX:PATTERN_WITH_PREFIX}innerExtract(context,match){const timeUnits=constants_1.parseTimeUnits(match[1]);return results_1.ParsingComponents.createRelativeFromReference(context.reference,timeUnits)}}exports.default=ENTimeUnitWithinFormatParser},fKPB:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function defineProperties(target,props){for(var i=0;i{fromResult.start.isCertain(key)||fromResult.start.assign(key,toResult.start.get(key))})),fromResult.start.getCertainComponents().forEach((key=>{toResult.start.isCertain(key)||toResult.start.assign(key,fromResult.start.get(key))}))),fromResult.start.date().getTime()>toResult.start.date().getTime()){let fromMoment=fromResult.start.dayjs(),toMoment=toResult.start.dayjs();fromResult.start.isOnlyWeekdayComponent()&&fromMoment.add(-7,"days").isBefore(toMoment)?(fromMoment=fromMoment.add(-7,"days"),fromResult.start.imply("day",fromMoment.date()),fromResult.start.imply("month",fromMoment.month()+1),fromResult.start.imply("year",fromMoment.year())):toResult.start.isOnlyWeekdayComponent()&&toMoment.add(7,"days").isAfter(fromMoment)?(toMoment=toMoment.add(7,"days"),toResult.start.imply("day",toMoment.date()),toResult.start.imply("month",toMoment.month()+1),toResult.start.imply("year",toMoment.year())):[toResult,fromResult]=[fromResult,toResult]}const result=fromResult.clone();return result.start=fromResult.start,result.end=toResult.start,result.index=Math.min(fromResult.index,toResult.index),fromResult.index-1}}},h94c:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("ARTj"),results_1=__webpack_require__("MpCh"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+");class FRTimeUnitWithinFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp(`(?:dans|en|pour|pendant|de)\\s*(${constants_1.TIME_UNITS_PATTERN})(?=\\W|$)`,"i")}innerExtract(context,match){const timeUnits=constants_1.parseTimeUnits(match[1]);return results_1.ParsingComponents.createRelativeFromReference(context.reference,timeUnits)}}exports.default=FRTimeUnitWithinFormatParser},hphd:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const years_1=__webpack_require__("pKWP"),constants_1=__webpack_require__("ARTj"),constants_2=__webpack_require__("ARTj"),constants_3=__webpack_require__("ARTj"),pattern_1=__webpack_require__("omFw"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),PATTERN=new RegExp(`(?:on\\s*?)?(${constants_3.ORDINAL_NUMBER_PATTERN})(?:\\s*(?:au|\\-|\\–|jusqu'au?|\\s)\\s*(${constants_3.ORDINAL_NUMBER_PATTERN}))?(?:-|/|\\s*(?:de)?\\s*)(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})(?:(?:-|/|,?\\s*)(${constants_2.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i");class FRMonthNameLittleEndianParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const result=context.createParsingResult(match.index,match[0]),month=constants_1.MONTH_DICTIONARY[match[3].toLowerCase()],day=constants_3.parseOrdinalNumberPattern(match[1]);if(day>31)return match.index=match.index+match[1].length,null;if(result.start.assign("month",month),result.start.assign("day",day),match[4]){const yearNumber=constants_2.parseYear(match[4]);result.start.assign("year",yearNumber)}else{const year=years_1.findYearClosestToRef(context.refDate,day,month);result.start.imply("year",year)}if(match[2]){const endDate=constants_3.parseOrdinalNumberPattern(match[2]);result.end=result.start.clone(),result.end.assign("day",endDate)}return result}}exports.default=FRMonthNameLittleEndianParser},hrvI:function(module,exports){ +/*! zero-fill. MIT License. Feross Aboukhadijeh */ +module.exports=function zeroFill(width,number,pad){return void 0===number?function(number,pad){return zeroFill(width,number,pad)}:(void 0===pad&&(pad="0"),(width-=number.toString().length)>0?new Array(width+(/\./.test(number)?2:1)).join(pad)+number:number+"")}},i3am:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseYear=exports.YEAR_PATTERN=exports.MONTH_DICTIONARY=exports.WEEKDAY_DICTIONARY=void 0,exports.WEEKDAY_DICTIONARY={domingo:0,dom:0,segunda:1,"segunda-feira":1,seg:1,"terça":2,"terça-feira":2,ter:2,quarta:3,"quarta-feira":3,qua:3,quinta:4,"quinta-feira":4,qui:4,sexta:5,"sexta-feira":5,sex:5,"sábado":6,sabado:6,sab:6},exports.MONTH_DICTIONARY={janeiro:1,jan:1,"jan.":1,fevereiro:2,fev:2,"fev.":2,"março":3,mar:3,"mar.":3,abril:4,abr:4,"abr.":4,maio:5,mai:5,"mai.":5,junho:6,jun:6,"jun.":6,julho:7,jul:7,"jul.":7,agosto:8,ago:8,"ago.":8,setembro:9,set:9,"set.":9,outubro:10,out:10,"out.":10,novembro:11,nov:11,"nov.":11,dezembro:12,dez:12,"dez.":12},exports.YEAR_PATTERN="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?",exports.parseYear=function parseYear(match){if(match.match(/^[0-9]{1,4}$/)){let yearNumber=parseInt(match);return yearNumber<100&&(yearNumber+=yearNumber>50?1900:2e3),yearNumber}return match.match(/a\.?\s*c\.?/i)?(match=match.replace(/a\.?\s*c\.?/i,""),-parseInt(match)):parseInt(match)}},i7j1:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const dayjs_1=__importDefault(__webpack_require__("Wgwc")),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),constants_1=__webpack_require__("izab");class ZHHantDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp("(\\d{2,4}|["+Object.keys(constants_1.NUMBER).join("")+"]{4}|["+Object.keys(constants_1.NUMBER).join("")+"]{2})?(?:\\s*)(?:年)?(?:[\\s|,|,]*)(\\d{1,2}|["+Object.keys(constants_1.NUMBER).join("")+"]{1,2})(?:\\s*)(?:月)(?:\\s*)(\\d{1,2}|["+Object.keys(constants_1.NUMBER).join("")+"]{1,2})?(?:\\s*)(?:日|號)?")}innerExtract(context,match){const startMoment=dayjs_1.default(context.refDate),result=context.createParsingResult(match.index,match[0]);let month=parseInt(match[2]);if(isNaN(month)&&(month=constants_1.zhStringToNumber(match[2])),result.start.assign("month",month),match[3]){let day=parseInt(match[3]);isNaN(day)&&(day=constants_1.zhStringToNumber(match[3])),result.start.assign("day",day)}else result.start.imply("day",startMoment.date());if(match[1]){let year=parseInt(match[1]);isNaN(year)&&(year=constants_1.zhStringToYear(match[1])),result.start.assign("year",year)}else result.start.imply("year",startMoment.year());return result}}exports.default=ZHHantDateParser},iBjy:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const dayjs_1=__importDefault(__webpack_require__("Wgwc")),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+");class ZHHansCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(context){return new RegExp("(现在|立(?:刻|即)|即刻)|(今|明|前|大前|后|大后|昨)(早|晚)|(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|(今|明|前|大前|后|大后|昨)(?:日|天)(?:[\\s|,|,]*)(?:(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?","i")}innerExtract(context,match){const index=match.index,result=context.createParsingResult(index,match[0]),refMoment=dayjs_1.default(context.refDate);let startMoment=refMoment;if(match[1])result.start.imply("hour",refMoment.hour()),result.start.imply("minute",refMoment.minute()),result.start.imply("second",refMoment.second()),result.start.imply("millisecond",refMoment.millisecond());else if(match[2]){const day1=match[2],time1=match[3];"明"==day1?refMoment.hour()>1&&(startMoment=startMoment.add(1,"day")):"昨"==day1?startMoment=startMoment.add(-1,"day"):"前"==day1?startMoment=startMoment.add(-2,"day"):"大前"==day1?startMoment=startMoment.add(-3,"day"):"后"==day1?startMoment=startMoment.add(2,"day"):"大后"==day1&&(startMoment=startMoment.add(3,"day")),"早"==time1?result.start.imply("hour",6):"晚"==time1&&(result.start.imply("hour",22),result.start.imply("meridiem",1))}else if(match[4]){const time2=match[4][0];"早"==time2||"上"==time2?result.start.imply("hour",6):"下"==time2?(result.start.imply("hour",15),result.start.imply("meridiem",1)):"中"==time2?(result.start.imply("hour",12),result.start.imply("meridiem",1)):"夜"==time2||"晚"==time2?(result.start.imply("hour",22),result.start.imply("meridiem",1)):"凌"==time2&&result.start.imply("hour",0)}else if(match[5]){const day3=match[5];"明"==day3?refMoment.hour()>1&&(startMoment=startMoment.add(1,"day")):"昨"==day3?startMoment=startMoment.add(-1,"day"):"前"==day3?startMoment=startMoment.add(-2,"day"):"大前"==day3?startMoment=startMoment.add(-3,"day"):"后"==day3?startMoment=startMoment.add(2,"day"):"大后"==day3&&(startMoment=startMoment.add(3,"day"));const timeString3=match[6];if(timeString3){const time3=timeString3[0];"早"==time3||"上"==time3?result.start.imply("hour",6):"下"==time3?(result.start.imply("hour",15),result.start.imply("meridiem",1)):"中"==time3?(result.start.imply("hour",12),result.start.imply("meridiem",1)):"夜"==time3||"晚"==time3?(result.start.imply("hour",22),result.start.imply("meridiem",1)):"凌"==time3&&result.start.imply("hour",0)}}return result.start.assign("day",startMoment.date()),result.start.assign("month",startMoment.month()+1),result.start.assign("year",startMoment.year()),result}}exports.default=ZHHansCasualDateParser},iN34:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function defineProperties(target,props){for(var i=0;i-1,ariaSelected:dayModifiers.indexOf(_this.props.classNames.selected)>-1,onClick:_this.props.onDayClick,onFocus:_this.props.onDayFocus,onKeyDown:_this.props.onDayKeyDown,onMouseEnter:_this.props.onDayMouseEnter,onMouseLeave:_this.props.onDayMouseLeave,onMouseDown:_this.props.onDayMouseDown,onMouseUp:_this.props.onDayMouseUp,onTouchEnd:_this.props.onDayTouchEnd,onTouchStart:_this.props.onDayTouchStart},_this.props.renderDay(day,modifiers))},_possibleConstructorReturn(_this,_temp)}return function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}(Month,_Component),_createClass(Month,[{key:"render",value:function render(){var _this2=this,_props=this.props,classNames=_props.classNames,month=_props.month,months=_props.months,fixedWeeks=_props.fixedWeeks,captionElement=_props.captionElement,weekdayElement=_props.weekdayElement,locale=_props.locale,localeUtils=_props.localeUtils,weekdaysLong=_props.weekdaysLong,weekdaysShort=_props.weekdaysShort,firstDayOfWeek=_props.firstDayOfWeek,onCaptionClick=_props.onCaptionClick,showWeekNumbers=_props.showWeekNumbers,showWeekDays=_props.showWeekDays,onWeekClick=_props.onWeekClick,captionProps={date:month,classNames:classNames,months:months,localeUtils:localeUtils,locale:locale,onClick:onCaptionClick?function(e){return onCaptionClick(month,e)}:void 0},caption=_react2.default.isValidElement(captionElement)?_react2.default.cloneElement(captionElement,captionProps):_react2.default.createElement(captionElement,captionProps),weeks=Helpers.getWeekArray(month,firstDayOfWeek,fixedWeeks);return _react2.default.createElement("div",{className:classNames.month,role:"grid"},caption,showWeekDays&&_react2.default.createElement(_Weekdays2.default,{classNames:classNames,weekdaysShort:weekdaysShort,weekdaysLong:weekdaysLong,firstDayOfWeek:firstDayOfWeek,showWeekNumbers:showWeekNumbers,locale:locale,localeUtils:localeUtils,weekdayElement:weekdayElement}),_react2.default.createElement("div",{className:classNames.body,role:"rowgroup"},weeks.map((function(week){var weekNumber=void 0;return showWeekNumbers&&(weekNumber=DateUtils.getWeekNumber(week[6])),_react2.default.createElement("div",{key:week[0].getTime(),className:classNames.week,role:"row"},showWeekNumbers&&_react2.default.createElement("div",{className:classNames.weekNumber,tabIndex:onWeekClick?0:-1,role:"gridcell",onClick:onWeekClick?function(e){return onWeekClick(weekNumber,week,e)}:void 0,onKeyUp:onWeekClick?function(e){return e.keyCode===_keys.ENTER&&onWeekClick(weekNumber,week,e)}:void 0},_this2.props.renderWeek(weekNumber,week,month)),week.map(_this2.renderDay))}))))}}]),Month}(_react.Component);exports.default=Month},iiY3:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const AbstractMergeDateTimeRefiner_1=__importDefault(__webpack_require__("Gqx+"));class RUMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner_1.default{patternBetween(){return new RegExp("^\\s*(T|в|,|-)?\\s*$")}}exports.default=RUMergeDateTimeRefiner},izab:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.zhStringToYear=exports.zhStringToNumber=exports.WEEKDAY_OFFSET=exports.NUMBER=void 0,exports.NUMBER={"零":0,"一":1,"二":2,"兩":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9,"十":10,"廿":20,"卅":30},exports.WEEKDAY_OFFSET={"天":0,"日":0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6},exports.zhStringToNumber=function zhStringToNumber(text){let number=0;for(let i=0;i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}function _extends(){return _extends=Object.assign||function(target){for(var i=1;i1&&void 0!==arguments[1]?arguments[1]:"set-value",option=arguments.length>2?arguments[2]:void 0,_this$props2=_this.props,closeMenuOnSelect=_this$props2.closeMenuOnSelect,isMulti=_this$props2.isMulti;_this.onInputChange("",{action:"set-value"}),closeMenuOnSelect&&(_this.inputIsHiddenAfterUpdate=!isMulti,_this.onMenuClose()),_this.clearFocusValueOnUpdate=!0,_this.onChange(newValue,{action:action,option:option})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"selectOption",(function(newValue){var _this$props3=_this.props,blurInputOnSelect=_this$props3.blurInputOnSelect,isMulti=_this$props3.isMulti,selectValue=_this.state.selectValue;if(isMulti)if(_this.isOptionSelected(newValue,selectValue)){var candidate=_this.getOptionValue(newValue);_this.setValue(selectValue.filter((function(i){return _this.getOptionValue(i)!==candidate})),"deselect-option",newValue),_this.announceAriaLiveSelection({event:"deselect-option",context:{value:_this.getOptionLabel(newValue)}})}else _this.isOptionDisabled(newValue,selectValue)?_this.announceAriaLiveSelection({event:"select-option",context:{value:_this.getOptionLabel(newValue),isDisabled:!0}}):(_this.setValue([].concat(_toConsumableArray(selectValue),[newValue]),"select-option",newValue),_this.announceAriaLiveSelection({event:"select-option",context:{value:_this.getOptionLabel(newValue)}}));else _this.isOptionDisabled(newValue,selectValue)?_this.announceAriaLiveSelection({event:"select-option",context:{value:_this.getOptionLabel(newValue),isDisabled:!0}}):(_this.setValue(newValue,"select-option"),_this.announceAriaLiveSelection({event:"select-option",context:{value:_this.getOptionLabel(newValue)}}));blurInputOnSelect&&_this.blurInput()})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"removeValue",(function(removedValue){var selectValue=_this.state.selectValue,candidate=_this.getOptionValue(removedValue);_this.onChange(selectValue.filter((function(i){return _this.getOptionValue(i)!==candidate})),{action:"remove-value",removedValue:removedValue}),_this.announceAriaLiveSelection({event:"remove-value",context:{value:removedValue?_this.getOptionLabel(removedValue):""}}),_this.focusInput()})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"clearValue",(function(){var isMulti=_this.props.isMulti;_this.onChange(isMulti?[]:null,{action:"clear"})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"popValue",(function(){var selectValue=_this.state.selectValue,lastSelectedValue=selectValue[selectValue.length-1];_this.announceAriaLiveSelection({event:"pop-value",context:{value:lastSelectedValue?_this.getOptionLabel(lastSelectedValue):""}}),_this.onChange(selectValue.slice(0,selectValue.length-1),{action:"pop-value",removedValue:lastSelectedValue})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getOptionLabel",(function(data){return _this.props.getOptionLabel(data)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getOptionValue",(function(data){return _this.props.getOptionValue(data)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getStyles",(function(key,props){var base=_styles.defaultStyles[key](props);base.boxSizing="border-box";var custom=_this.props.styles[key];return custom?custom(base,props):base})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getElementId",(function(element){return"".concat(_this.instancePrefix,"-").concat(element)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getActiveDescendentId",(function(){var menuIsOpen=_this.props.menuIsOpen,_this$state=_this.state,menuOptions=_this$state.menuOptions,focusedOption=_this$state.focusedOption;if(focusedOption&&menuIsOpen){var index=menuOptions.focusable.indexOf(focusedOption),option=menuOptions.render[index];return option&&option.key}})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"announceAriaLiveSelection",(function(_ref2){var event=_ref2.event,context=_ref2.context;_this.setState({ariaLiveSelection:(0,_index2.valueEventAriaMessage)(event,context)})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"announceAriaLiveContext",(function(_ref3){var event=_ref3.event,context=_ref3.context;_this.setState({ariaLiveContext:(0,_index2.instructionsAriaMessage)(event,_objectSpread({},context,{label:_this.props["aria-label"]}))})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onMenuMouseDown",(function(event){0===event.button&&(event.stopPropagation(),event.preventDefault(),_this.focusInput())})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onMenuMouseMove",(function(event){_this.blockOptionHover=!1})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onControlMouseDown",(function(event){var openMenuOnClick=_this.props.openMenuOnClick;_this.state.isFocused?_this.props.menuIsOpen?"INPUT"!==event.target.tagName&&_this.onMenuClose():openMenuOnClick&&_this.openMenu("first"):(openMenuOnClick&&(_this.openAfterFocus=!0),_this.focusInput()),"INPUT"!==event.target.tagName&&event.preventDefault()})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onDropdownIndicatorMouseDown",(function(event){if(!(event&&"mousedown"===event.type&&0!==event.button||_this.props.isDisabled)){var _this$props4=_this.props,isMulti=_this$props4.isMulti,menuIsOpen=_this$props4.menuIsOpen;_this.focusInput(),menuIsOpen?(_this.inputIsHiddenAfterUpdate=!isMulti,_this.onMenuClose()):_this.openMenu("first"),event.preventDefault(),event.stopPropagation()}})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onClearIndicatorMouseDown",(function(event){event&&"mousedown"===event.type&&0!==event.button||(_this.clearValue(),event.stopPropagation(),_this.openAfterFocus=!1,setTimeout((function(){return _this.focusInput()})))})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onScroll",(function(event){"boolean"==typeof _this.props.closeMenuOnScroll?event.target instanceof HTMLElement&&(0,_utils.isDocumentElement)(event.target)&&_this.props.onMenuClose():"function"==typeof _this.props.closeMenuOnScroll&&_this.props.closeMenuOnScroll(event)&&_this.props.onMenuClose()})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onCompositionStart",(function(){_this.isComposing=!0})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onCompositionEnd",(function(){_this.isComposing=!1})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onTouchStart",(function(_ref4){var touch=_ref4.touches.item(0);touch&&(_this.initialTouchX=touch.clientX,_this.initialTouchY=touch.clientY,_this.userIsDragging=!1)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onTouchMove",(function(_ref5){var touch=_ref5.touches.item(0);if(touch){var deltaX=Math.abs(touch.clientX-_this.initialTouchX),deltaY=Math.abs(touch.clientY-_this.initialTouchY);_this.userIsDragging=deltaX>5||deltaY>5}})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onTouchEnd",(function(event){_this.userIsDragging||(_this.controlRef&&!_this.controlRef.contains(event.target)&&_this.menuListRef&&!_this.menuListRef.contains(event.target)&&_this.blurInput(),_this.initialTouchX=0,_this.initialTouchY=0)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onControlTouchEnd",(function(event){_this.userIsDragging||_this.onControlMouseDown(event)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onClearIndicatorTouchEnd",(function(event){_this.userIsDragging||_this.onClearIndicatorMouseDown(event)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onDropdownIndicatorTouchEnd",(function(event){_this.userIsDragging||_this.onDropdownIndicatorMouseDown(event)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"handleInputChange",(function(event){var inputValue=event.currentTarget.value;_this.inputIsHiddenAfterUpdate=!1,_this.onInputChange(inputValue,{action:"input-change"}),_this.onMenuOpen()})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onInputFocus",(function(event){var _this$props5=_this.props,isSearchable=_this$props5.isSearchable,isMulti=_this$props5.isMulti;_this.props.onFocus&&_this.props.onFocus(event),_this.inputIsHiddenAfterUpdate=!1,_this.announceAriaLiveContext({event:"input",context:{isSearchable:isSearchable,isMulti:isMulti}}),_this.setState({isFocused:!0}),(_this.openAfterFocus||_this.props.openMenuOnFocus)&&_this.openMenu("first"),_this.openAfterFocus=!1})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onInputBlur",(function(event){_this.menuListRef&&_this.menuListRef.contains(document.activeElement)?_this.inputRef.focus():(_this.props.onBlur&&_this.props.onBlur(event),_this.onInputChange("",{action:"input-blur"}),_this.onMenuClose(),_this.setState({focusedValue:null,isFocused:!1}))})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onOptionHover",(function(focusedOption){_this.blockOptionHover||_this.state.focusedOption===focusedOption||_this.setState({focusedOption:focusedOption})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"shouldHideSelectedOptions",(function(){var _this$props6=_this.props,hideSelectedOptions=_this$props6.hideSelectedOptions,isMulti=_this$props6.isMulti;return void 0===hideSelectedOptions?isMulti:hideSelectedOptions})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onKeyDown",(function(event){var _this$props7=_this.props,isMulti=_this$props7.isMulti,backspaceRemovesValue=_this$props7.backspaceRemovesValue,escapeClearsValue=_this$props7.escapeClearsValue,inputValue=_this$props7.inputValue,isClearable=_this$props7.isClearable,isDisabled=_this$props7.isDisabled,menuIsOpen=_this$props7.menuIsOpen,onKeyDown=_this$props7.onKeyDown,tabSelectsValue=_this$props7.tabSelectsValue,openMenuOnFocus=_this$props7.openMenuOnFocus,_this$state2=_this.state,focusedOption=_this$state2.focusedOption,focusedValue=_this$state2.focusedValue,selectValue=_this$state2.selectValue;if(!(isDisabled||"function"==typeof onKeyDown&&(onKeyDown(event),event.defaultPrevented))){switch(_this.blockOptionHover=!0,event.key){case"ArrowLeft":if(!isMulti||inputValue)return;_this.focusValue("previous");break;case"ArrowRight":if(!isMulti||inputValue)return;_this.focusValue("next");break;case"Delete":case"Backspace":if(inputValue)return;if(focusedValue)_this.removeValue(focusedValue);else{if(!backspaceRemovesValue)return;isMulti?_this.popValue():isClearable&&_this.clearValue()}break;case"Tab":if(_this.isComposing)return;if(event.shiftKey||!menuIsOpen||!tabSelectsValue||!focusedOption||openMenuOnFocus&&_this.isOptionSelected(focusedOption,selectValue))return;_this.selectOption(focusedOption);break;case"Enter":if(229===event.keyCode)break;if(menuIsOpen){if(!focusedOption)return;if(_this.isComposing)return;_this.selectOption(focusedOption);break}return;case"Escape":menuIsOpen?(_this.inputIsHiddenAfterUpdate=!1,_this.onInputChange("",{action:"menu-close"}),_this.onMenuClose()):isClearable&&escapeClearsValue&&_this.clearValue();break;case" ":if(inputValue)return;if(!menuIsOpen){_this.openMenu("first");break}if(!focusedOption)return;_this.selectOption(focusedOption);break;case"ArrowUp":menuIsOpen?_this.focusOption("up"):_this.openMenu("last");break;case"ArrowDown":menuIsOpen?_this.focusOption("down"):_this.openMenu("first");break;case"PageUp":if(!menuIsOpen)return;_this.focusOption("pageup");break;case"PageDown":if(!menuIsOpen)return;_this.focusOption("pagedown");break;case"Home":if(!menuIsOpen)return;_this.focusOption("first");break;case"End":if(!menuIsOpen)return;_this.focusOption("last");break;default:return}event.preventDefault()}}));var value=_props.value;_this.cacheComponents=(0,_memoizeOne.default)(_this.cacheComponents,_reactFastCompare.default).bind(_assertThisInitialized(_assertThisInitialized(_this))),_this.cacheComponents(_props.components),_this.instancePrefix="react-select-"+(_this.props.instanceId||++instanceId);var _selectValue=(0,_utils.cleanValue)(value),_menuOptions=_this.buildMenuOptions(_props,_selectValue);return _this.state.menuOptions=_menuOptions,_this.state.selectValue=_selectValue,_this}return function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),superClass&&_setPrototypeOf(subClass,superClass)}(Select,_Component),function _createClass(Constructor,protoProps,staticProps){return protoProps&&_defineProperties(Constructor.prototype,protoProps),staticProps&&_defineProperties(Constructor,staticProps),Constructor}(Select,[{key:"componentDidMount",value:function componentDidMount(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput()}},{key:"componentWillReceiveProps",value:function componentWillReceiveProps(nextProps){var _this$props8=this.props,options=_this$props8.options,value=_this$props8.value,inputValue=_this$props8.inputValue;if(this.cacheComponents(nextProps.components),nextProps.value!==value||nextProps.options!==options||nextProps.inputValue!==inputValue){var selectValue=(0,_utils.cleanValue)(nextProps.value),menuOptions=this.buildMenuOptions(nextProps,selectValue),focusedValue=this.getNextFocusedValue(selectValue),focusedOption=this.getNextFocusedOption(menuOptions.focusable);this.setState({menuOptions:menuOptions,selectValue:selectValue,focusedOption:focusedOption,focusedValue:focusedValue})}null!=this.inputIsHiddenAfterUpdate&&(this.setState({inputIsHidden:this.inputIsHiddenAfterUpdate}),delete this.inputIsHiddenAfterUpdate)}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){var _this$props9=this.props,isDisabled=_this$props9.isDisabled,menuIsOpen=_this$props9.menuIsOpen,isFocused=this.state.isFocused;(isFocused&&!isDisabled&&prevProps.isDisabled||isFocused&&menuIsOpen&&!prevProps.menuIsOpen)&&this.focusInput(),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(0,_utils.scrollIntoView)(this.menuListRef,this.focusedOptionRef),this.scrollToFocusedOptionOnUpdate=!1}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.stopListeningComposition(),this.stopListeningToTouch(),document.removeEventListener("scroll",this.onScroll,!0)}},{key:"onMenuOpen",value:function onMenuOpen(){this.props.onMenuOpen()}},{key:"onMenuClose",value:function onMenuClose(){var _this$props10=this.props,isSearchable=_this$props10.isSearchable,isMulti=_this$props10.isMulti;this.announceAriaLiveContext({event:"input",context:{isSearchable:isSearchable,isMulti:isMulti}}),this.onInputChange("",{action:"menu-close"}),this.props.onMenuClose()}},{key:"onInputChange",value:function onInputChange(newValue,actionMeta){this.props.onInputChange(newValue,actionMeta)}},{key:"focusInput",value:function focusInput(){this.inputRef&&this.inputRef.focus()}},{key:"blurInput",value:function blurInput(){this.inputRef&&this.inputRef.blur()}},{key:"openMenu",value:function openMenu(focusOption){var _this$state3=this.state,menuOptions=_this$state3.menuOptions,selectValue=_this$state3.selectValue,isFocused=_this$state3.isFocused,isMulti=this.props.isMulti,openAtIndex="first"===focusOption?0:menuOptions.focusable.length-1;if(!isMulti){var selectedIndex=menuOptions.focusable.indexOf(selectValue[0]);selectedIndex>-1&&(openAtIndex=selectedIndex)}this.scrollToFocusedOptionOnUpdate=!(isFocused&&this.menuListRef),this.inputIsHiddenAfterUpdate=!1,this.onMenuOpen(),this.setState({focusedValue:null,focusedOption:menuOptions.focusable[openAtIndex]}),this.announceAriaLiveContext({event:"menu"})}},{key:"focusValue",value:function focusValue(direction){var _this$props11=this.props,isMulti=_this$props11.isMulti,isSearchable=_this$props11.isSearchable,_this$state4=this.state,selectValue=_this$state4.selectValue,focusedValue=_this$state4.focusedValue;if(isMulti){this.setState({focusedOption:null});var focusedIndex=selectValue.indexOf(focusedValue);focusedValue||(focusedIndex=-1,this.announceAriaLiveContext({event:"value"}));var lastIndex=selectValue.length-1,nextFocus=-1;if(selectValue.length){switch(direction){case"previous":nextFocus=0===focusedIndex?0:-1===focusedIndex?lastIndex:focusedIndex-1;break;case"next":focusedIndex>-1&&focusedIndex0&&void 0!==arguments[0]?arguments[0]:"first",pageSize=this.props.pageSize,_this$state5=this.state,focusedOption=_this$state5.focusedOption,options=_this$state5.menuOptions.focusable;if(options.length){var nextFocus=0,focusedIndex=options.indexOf(focusedOption);focusedOption||(focusedIndex=-1,this.announceAriaLiveContext({event:"menu"})),"up"===direction?nextFocus=focusedIndex>0?focusedIndex-1:options.length-1:"down"===direction?nextFocus=(focusedIndex+1)%options.length:"pageup"===direction?(nextFocus=focusedIndex-pageSize)<0&&(nextFocus=0):"pagedown"===direction?(nextFocus=focusedIndex+pageSize)>options.length-1&&(nextFocus=options.length-1):"last"===direction&&(nextFocus=options.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:options[nextFocus],focusedValue:null}),this.announceAriaLiveContext({event:"menu",context:{isDisabled:(0,_builtins.isOptionDisabled)(options[nextFocus])}})}}},{key:"getTheme",value:function getTheme(){return this.props.theme?"function"==typeof this.props.theme?this.props.theme(_theme.defaultTheme):_objectSpread({},_theme.defaultTheme,this.props.theme):_theme.defaultTheme}},{key:"getCommonProps",value:function getCommonProps(){var clearValue=this.clearValue,getStyles=this.getStyles,setValue=this.setValue,selectOption=this.selectOption,props=this.props,classNamePrefix=props.classNamePrefix,isMulti=props.isMulti,isRtl=props.isRtl,options=props.options,selectValue=this.state.selectValue,hasValue=this.hasValue();return{cx:_utils.classNames.bind(null,classNamePrefix),clearValue:clearValue,getStyles:getStyles,getValue:function getValue(){return selectValue},hasValue:hasValue,isMulti:isMulti,isRtl:isRtl,options:options,selectOption:selectOption,setValue:setValue,selectProps:props,theme:this.getTheme()}}},{key:"getNextFocusedValue",value:function getNextFocusedValue(nextSelectValue){if(this.clearFocusValueOnUpdate)return this.clearFocusValueOnUpdate=!1,null;var _this$state6=this.state,focusedValue=_this$state6.focusedValue,lastFocusedIndex=_this$state6.selectValue.indexOf(focusedValue);if(lastFocusedIndex>-1){if(nextSelectValue.indexOf(focusedValue)>-1)return focusedValue;if(lastFocusedIndex-1?lastFocusedOption:options[0]}},{key:"hasValue",value:function hasValue(){return this.state.selectValue.length>0}},{key:"hasOptions",value:function hasOptions(){return!!this.state.menuOptions.render.length}},{key:"countOptions",value:function countOptions(){return this.state.menuOptions.focusable.length}},{key:"isClearable",value:function isClearable(){var _this$props12=this.props,isClearable=_this$props12.isClearable,isMulti=_this$props12.isMulti;return void 0===isClearable?isMulti:isClearable}},{key:"isOptionDisabled",value:function isOptionDisabled(option,selectValue){return"function"==typeof this.props.isOptionDisabled&&this.props.isOptionDisabled(option,selectValue)}},{key:"isOptionSelected",value:function isOptionSelected(option,selectValue){var _this2=this;if(selectValue.indexOf(option)>-1)return!0;if("function"==typeof this.props.isOptionSelected)return this.props.isOptionSelected(option,selectValue);var candidate=this.getOptionValue(option);return selectValue.some((function(i){return _this2.getOptionValue(i)===candidate}))}},{key:"filterOption",value:function filterOption(option,inputValue){return!this.props.filterOption||this.props.filterOption(option,inputValue)}},{key:"formatOptionLabel",value:function formatOptionLabel(data,context){if("function"==typeof this.props.formatOptionLabel){var inputValue=this.props.inputValue,selectValue=this.state.selectValue;return this.props.formatOptionLabel(data,{context:context,inputValue:inputValue,selectValue:selectValue})}return this.getOptionLabel(data)}},{key:"formatGroupLabel",value:function formatGroupLabel(data){return this.props.formatGroupLabel(data)}},{key:"startListeningComposition",value:function startListeningComposition(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))}},{key:"stopListeningComposition",value:function stopListeningComposition(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))}},{key:"startListeningToTouch",value:function startListeningToTouch(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))}},{key:"stopListeningToTouch",value:function stopListeningToTouch(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))}},{key:"buildMenuOptions",value:function buildMenuOptions(props,selectValue){var _this3=this,_props$inputValue=props.inputValue,inputValue=void 0===_props$inputValue?"":_props$inputValue,options=props.options,toOption=function toOption(option,id){var isDisabled=_this3.isOptionDisabled(option,selectValue),isSelected=_this3.isOptionSelected(option,selectValue),label=_this3.getOptionLabel(option),value=_this3.getOptionValue(option);if(!(_this3.shouldHideSelectedOptions()&&isSelected||!_this3.filterOption({label:label,value:value,data:option},inputValue))){var onHover=isDisabled?void 0:function(){return _this3.onOptionHover(option)},onSelect=isDisabled?void 0:function(){return _this3.selectOption(option)},optionId="".concat(_this3.getElementId("option"),"-").concat(id);return{innerProps:{id:optionId,onClick:onSelect,onMouseMove:onHover,onMouseOver:onHover,tabIndex:-1},data:option,isDisabled:isDisabled,isSelected:isSelected,key:optionId,label:label,type:"option",value:value}}};return options.reduce((function(acc,item,itemIndex){if(item.options){_this3.hasGroups||(_this3.hasGroups=!0);var children=item.options.map((function(child,i){var option=toOption(child,"".concat(itemIndex,"-").concat(i));return option&&acc.focusable.push(child),option})).filter(Boolean);if(children.length){var groupId="".concat(_this3.getElementId("group"),"-").concat(itemIndex);acc.render.push({type:"group",key:groupId,data:item,options:children})}}else{var option=toOption(item,"".concat(itemIndex));option&&(acc.render.push(option),acc.focusable.push(item))}return acc}),{render:[],focusable:[]})}},{key:"constructAriaLiveMessage",value:function constructAriaLiveMessage(){var _this$state7=this.state,ariaLiveContext=_this$state7.ariaLiveContext,selectValue=_this$state7.selectValue,focusedValue=_this$state7.focusedValue,focusedOption=_this$state7.focusedOption,_this$props13=this.props,options=_this$props13.options,menuIsOpen=_this$props13.menuIsOpen,inputValue=_this$props13.inputValue,screenReaderStatus=_this$props13.screenReaderStatus,focusedValueMsg=focusedValue?(0,_index2.valueFocusAriaMessage)({focusedValue:focusedValue,getOptionLabel:this.getOptionLabel,selectValue:selectValue}):"",focusedOptionMsg=focusedOption&&menuIsOpen?(0,_index2.optionFocusAriaMessage)({focusedOption:focusedOption,getOptionLabel:this.getOptionLabel,options:options}):"",resultsMsg=(0,_index2.resultsAriaMessage)({inputValue:inputValue,screenReaderMessage:screenReaderStatus({count:this.countOptions()})});return"".concat(focusedValueMsg," ").concat(focusedOptionMsg," ").concat(resultsMsg," ").concat(ariaLiveContext)}},{key:"renderInput",value:function renderInput(){var _this$props14=this.props,isDisabled=_this$props14.isDisabled,isSearchable=_this$props14.isSearchable,inputId=_this$props14.inputId,inputValue=_this$props14.inputValue,tabIndex=_this$props14.tabIndex,Input=this.components.Input,inputIsHidden=this.state.inputIsHidden,id=inputId||this.getElementId("input");if(!isSearchable)return _react.default.createElement(_index.DummyInput,{id:id,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:_utils.noop,onFocus:this.onInputFocus,readOnly:!0,disabled:isDisabled,tabIndex:tabIndex,value:""});var ariaAttributes={"aria-autocomplete":"list","aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"]},_this$commonProps=this.commonProps,cx=_this$commonProps.cx,theme=_this$commonProps.theme,selectProps=_this$commonProps.selectProps;return _react.default.createElement(Input,_extends({autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",cx:cx,getStyles:this.getStyles,id:id,innerRef:this.getInputRef,isDisabled:isDisabled,isHidden:inputIsHidden,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,selectProps:selectProps,spellCheck:"false",tabIndex:tabIndex,theme:theme,type:"text",value:inputValue},ariaAttributes))}},{key:"renderPlaceholderOrValue",value:function renderPlaceholderOrValue(){var _this4=this,_this$components=this.components,MultiValue=_this$components.MultiValue,MultiValueContainer=_this$components.MultiValueContainer,MultiValueLabel=_this$components.MultiValueLabel,MultiValueRemove=_this$components.MultiValueRemove,SingleValue=_this$components.SingleValue,Placeholder=_this$components.Placeholder,commonProps=this.commonProps,_this$props15=this.props,controlShouldRenderValue=_this$props15.controlShouldRenderValue,isDisabled=_this$props15.isDisabled,isMulti=_this$props15.isMulti,inputValue=_this$props15.inputValue,placeholder=_this$props15.placeholder,_this$state8=this.state,selectValue=_this$state8.selectValue,focusedValue=_this$state8.focusedValue,isFocused=_this$state8.isFocused;if(!this.hasValue()||!controlShouldRenderValue)return inputValue?null:_react.default.createElement(Placeholder,_extends({},commonProps,{key:"placeholder",isDisabled:isDisabled,isFocused:isFocused}),placeholder);if(isMulti)return selectValue.map((function(opt){var isOptionFocused=opt===focusedValue;return _react.default.createElement(MultiValue,_extends({},commonProps,{components:{Container:MultiValueContainer,Label:MultiValueLabel,Remove:MultiValueRemove},isFocused:isOptionFocused,isDisabled:isDisabled,key:_this4.getOptionValue(opt),removeProps:{onClick:function onClick(){return _this4.removeValue(opt)},onTouchEnd:function onTouchEnd(){return _this4.removeValue(opt)},onMouseDown:function onMouseDown(e){e.preventDefault(),e.stopPropagation()}},data:opt}),_this4.formatOptionLabel(opt,"value"))}));if(inputValue)return null;var singleValue=selectValue[0];return _react.default.createElement(SingleValue,_extends({},commonProps,{data:singleValue,isDisabled:isDisabled}),this.formatOptionLabel(singleValue,"value"))}},{key:"renderClearIndicator",value:function renderClearIndicator(){var ClearIndicator=this.components.ClearIndicator,commonProps=this.commonProps,_this$props16=this.props,isDisabled=_this$props16.isDisabled,isLoading=_this$props16.isLoading,isFocused=this.state.isFocused;if(!this.isClearable()||!ClearIndicator||isDisabled||!this.hasValue()||isLoading)return null;var innerProps={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return _react.default.createElement(ClearIndicator,_extends({},commonProps,{innerProps:innerProps,isFocused:isFocused}))}},{key:"renderLoadingIndicator",value:function renderLoadingIndicator(){var LoadingIndicator=this.components.LoadingIndicator,commonProps=this.commonProps,_this$props17=this.props,isDisabled=_this$props17.isDisabled,isLoading=_this$props17.isLoading,isFocused=this.state.isFocused;if(!LoadingIndicator||!isLoading)return null;return _react.default.createElement(LoadingIndicator,_extends({},commonProps,{innerProps:{"aria-hidden":"true"},isDisabled:isDisabled,isFocused:isFocused}))}},{key:"renderIndicatorSeparator",value:function renderIndicatorSeparator(){var _this$components2=this.components,DropdownIndicator=_this$components2.DropdownIndicator,IndicatorSeparator=_this$components2.IndicatorSeparator;if(!DropdownIndicator||!IndicatorSeparator)return null;var commonProps=this.commonProps,isDisabled=this.props.isDisabled,isFocused=this.state.isFocused;return _react.default.createElement(IndicatorSeparator,_extends({},commonProps,{isDisabled:isDisabled,isFocused:isFocused}))}},{key:"renderDropdownIndicator",value:function renderDropdownIndicator(){var DropdownIndicator=this.components.DropdownIndicator;if(!DropdownIndicator)return null;var commonProps=this.commonProps,isDisabled=this.props.isDisabled,isFocused=this.state.isFocused,innerProps={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return _react.default.createElement(DropdownIndicator,_extends({},commonProps,{innerProps:innerProps,isDisabled:isDisabled,isFocused:isFocused}))}},{key:"renderMenu",value:function renderMenu(){var _this5=this,_this$components3=this.components,Group=_this$components3.Group,GroupHeading=_this$components3.GroupHeading,Menu=_this$components3.Menu,MenuList=_this$components3.MenuList,MenuPortal=_this$components3.MenuPortal,LoadingMessage=_this$components3.LoadingMessage,NoOptionsMessage=_this$components3.NoOptionsMessage,Option=_this$components3.Option,commonProps=this.commonProps,_this$state9=this.state,focusedOption=_this$state9.focusedOption,menuOptions=_this$state9.menuOptions,_this$props18=this.props,captureMenuScroll=_this$props18.captureMenuScroll,inputValue=_this$props18.inputValue,isLoading=_this$props18.isLoading,loadingMessage=_this$props18.loadingMessage,minMenuHeight=_this$props18.minMenuHeight,maxMenuHeight=_this$props18.maxMenuHeight,menuIsOpen=_this$props18.menuIsOpen,menuPlacement=_this$props18.menuPlacement,menuPosition=_this$props18.menuPosition,menuPortalTarget=_this$props18.menuPortalTarget,menuShouldBlockScroll=_this$props18.menuShouldBlockScroll,menuShouldScrollIntoView=_this$props18.menuShouldScrollIntoView,noOptionsMessage=_this$props18.noOptionsMessage,onMenuScrollToTop=_this$props18.onMenuScrollToTop,onMenuScrollToBottom=_this$props18.onMenuScrollToBottom;if(!menuIsOpen)return null;var menuUI,render=function render(props){var isFocused=focusedOption===props.data;return props.innerRef=isFocused?_this5.getFocusedOptionRef:void 0,_react.default.createElement(Option,_extends({},commonProps,props,{isFocused:isFocused}),_this5.formatOptionLabel(props.data,"menu"))};if(this.hasOptions())menuUI=menuOptions.render.map((function(item){if("group"===item.type){item.type;var group=_objectWithoutProperties(item,["type"]),headingId="".concat(item.key,"-heading");return _react.default.createElement(Group,_extends({},commonProps,group,{Heading:GroupHeading,headingProps:{id:headingId},label:_this5.formatGroupLabel(item.data)}),item.options.map((function(option){return render(option)})))}if("option"===item.type)return render(item)}));else if(isLoading){var message=loadingMessage({inputValue:inputValue});if(null===message)return null;menuUI=_react.default.createElement(LoadingMessage,commonProps,message)}else{var _message=noOptionsMessage({inputValue:inputValue});if(null===_message)return null;menuUI=_react.default.createElement(NoOptionsMessage,commonProps,_message)}var menuPlacementProps={minMenuHeight:minMenuHeight,maxMenuHeight:maxMenuHeight,menuPlacement:menuPlacement,menuPosition:menuPosition,menuShouldScrollIntoView:menuShouldScrollIntoView},menuElement=_react.default.createElement(_Menu.MenuPlacer,_extends({},commonProps,menuPlacementProps),(function(_ref6){var ref=_ref6.ref,_ref6$placerProps=_ref6.placerProps,placement=_ref6$placerProps.placement,maxHeight=_ref6$placerProps.maxHeight;return _react.default.createElement(Menu,_extends({},commonProps,menuPlacementProps,{innerRef:ref,innerProps:{onMouseDown:_this5.onMenuMouseDown,onMouseMove:_this5.onMenuMouseMove},isLoading:isLoading,placement:placement}),_react.default.createElement(_index.ScrollCaptor,{isEnabled:captureMenuScroll,onTopArrive:onMenuScrollToTop,onBottomArrive:onMenuScrollToBottom},_react.default.createElement(_index.ScrollBlock,{isEnabled:menuShouldBlockScroll},_react.default.createElement(MenuList,_extends({},commonProps,{innerRef:_this5.getMenuListRef,isLoading:isLoading,maxHeight:maxHeight}),menuUI))))}));return menuPortalTarget||"fixed"===menuPosition?_react.default.createElement(MenuPortal,_extends({},commonProps,{appendTo:menuPortalTarget,controlElement:this.controlRef,menuPlacement:menuPlacement,menuPosition:menuPosition}),menuElement):menuElement}},{key:"renderFormField",value:function renderFormField(){var _this6=this,_this$props19=this.props,delimiter=_this$props19.delimiter,isDisabled=_this$props19.isDisabled,isMulti=_this$props19.isMulti,name=_this$props19.name,selectValue=this.state.selectValue;if(name&&!isDisabled){if(isMulti){if(delimiter){var value=selectValue.map((function(opt){return _this6.getOptionValue(opt)})).join(delimiter);return _react.default.createElement("input",{name:name,type:"hidden",value:value})}var input=selectValue.length>0?selectValue.map((function(opt,i){return _react.default.createElement("input",{key:"i-".concat(i),name:name,type:"hidden",value:_this6.getOptionValue(opt)})})):_react.default.createElement("input",{name:name,type:"hidden"});return _react.default.createElement("div",null,input)}var _value=selectValue[0]?this.getOptionValue(selectValue[0]):"";return _react.default.createElement("input",{name:name,type:"hidden",value:_value})}}},{key:"renderLiveRegion",value:function renderLiveRegion(){return this.state.isFocused?_react.default.createElement(_index.A11yText,{"aria-live":"assertive"},_react.default.createElement("p",{id:"aria-selection-event"}," ",this.state.ariaLiveSelection),_react.default.createElement("p",{id:"aria-context"}," ",this.constructAriaLiveMessage())):null}},{key:"render",value:function render(){var _this$components4=this.components,Control=_this$components4.Control,IndicatorsContainer=_this$components4.IndicatorsContainer,SelectContainer=_this$components4.SelectContainer,ValueContainer=_this$components4.ValueContainer,_this$props20=this.props,className=_this$props20.className,id=_this$props20.id,isDisabled=_this$props20.isDisabled,menuIsOpen=_this$props20.menuIsOpen,isFocused=this.state.isFocused,commonProps=this.commonProps=this.getCommonProps();return _react.default.createElement(SelectContainer,_extends({},commonProps,{className:className,innerProps:{id:id,onKeyDown:this.onKeyDown},isDisabled:isDisabled,isFocused:isFocused}),this.renderLiveRegion(),_react.default.createElement(Control,_extends({},commonProps,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:isDisabled,isFocused:isFocused,menuIsOpen:menuIsOpen}),_react.default.createElement(ValueContainer,_extends({},commonProps,{isDisabled:isDisabled}),this.renderPlaceholderOrValue(),this.renderInput()),_react.default.createElement(IndicatorsContainer,_extends({},commonProps,{isDisabled:isDisabled}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())}}]),Select}(_react.Component);exports.default=Select,_defineProperty(Select,"defaultProps",defaultProps)},jTCZ:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const dayjs_1=__importDefault(__webpack_require__("Wgwc")),dayjs_2=__webpack_require__("MVmo");exports.default=class ForwardDateRefiner{refine(context,results){return context.option.forwardDate?(results.forEach((function(result){let refMoment=dayjs_1.default(context.refDate);if(result.start.isOnlyTime()&&refMoment.isAfter(result.start.dayjs())&&(refMoment=refMoment.add(1,"day"),dayjs_2.implySimilarDate(result.start,refMoment),result.end&&result.end.isOnlyTime()&&(dayjs_2.implySimilarDate(result.end,refMoment),result.start.dayjs().isAfter(result.end.dayjs())&&(refMoment=refMoment.add(1,"day"),dayjs_2.implySimilarDate(result.end,refMoment)))),result.start.isOnlyDayMonthComponent()&&refMoment.isAfter(result.start.dayjs()))for(let i=0;i<3&&refMoment.isAfter(result.start.dayjs());i++)result.start.imply("year",result.start.get("year")+1),context.debug((()=>{console.log(`Forward yearly adjusted for ${result} (${result.start})`)})),result.end&&!result.end.isCertain("year")&&(result.end.imply("year",result.end.get("year")+1),context.debug((()=>{console.log(`Forward yearly adjusted for ${result} (${result.end})`)})));result.start.isOnlyWeekdayComponent()&&refMoment.isAfter(result.start.dayjs())&&(refMoment=refMoment.day()>=result.start.get("weekday")?refMoment.day(result.start.get("weekday")+7):refMoment.day(result.start.get("weekday")),result.start.imply("day",refMoment.date()),result.start.imply("month",refMoment.month()+1),result.start.imply("year",refMoment.year()),context.debug((()=>{console.log(`Forward weekly adjusted for ${result} (${result.start})`)})),result.end&&result.end.isOnlyWeekdayComponent()&&(refMoment=refMoment.day()>result.end.get("weekday")?refMoment.day(result.end.get("weekday")+7):refMoment.day(result.end.get("weekday")),result.end.imply("day",refMoment.date()),result.end.imply("month",refMoment.month()+1),result.end.imply("year",refMoment.year()),context.debug((()=>{console.log(`Forward weekly adjusted for ${result} (${result.end})`)}))))})),results):results}}},ksW2:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseTimeUnits=exports.TIME_UNITS_PATTERN=exports.parseYear=exports.YEAR_PATTERN=exports.parseOrdinalNumberPattern=exports.ORDINAL_NUMBER_PATTERN=exports.parseNumberPattern=exports.NUMBER_PATTERN=exports.TIME_UNIT_DICTIONARY=exports.ORDINAL_WORD_DICTIONARY=exports.INTEGER_WORD_DICTIONARY=exports.MONTH_DICTIONARY=exports.FULL_MONTH_NAME_DICTIONARY=exports.WEEKDAY_DICTIONARY=void 0;const pattern_1=__webpack_require__("omFw"),years_1=__webpack_require__("pKWP");function parseNumberPattern(match){const num=match.toLowerCase();return void 0!==exports.INTEGER_WORD_DICTIONARY[num]?exports.INTEGER_WORD_DICTIONARY[num]:"a"===num||"an"===num?1:num.match(/few/)?3:num.match(/half/)?.5:num.match(/couple/)?2:num.match(/several/)?7:parseFloat(num)}exports.WEEKDAY_DICTIONARY={sunday:0,sun:0,"sun.":0,monday:1,mon:1,"mon.":1,tuesday:2,tue:2,"tue.":2,wednesday:3,wed:3,"wed.":3,thursday:4,thurs:4,"thurs.":4,thur:4,"thur.":4,thu:4,"thu.":4,friday:5,fri:5,"fri.":5,saturday:6,sat:6,"sat.":6},exports.FULL_MONTH_NAME_DICTIONARY={january:1,february:2,march:3,april:4,may:5,june:6,july:7,august:8,september:9,october:10,november:11,december:12},exports.MONTH_DICTIONARY=Object.assign(Object.assign({},exports.FULL_MONTH_NAME_DICTIONARY),{jan:1,"jan.":1,feb:2,"feb.":2,mar:3,"mar.":3,apr:4,"apr.":4,jun:6,"jun.":6,jul:7,"jul.":7,aug:8,"aug.":8,sep:9,"sep.":9,sept:9,"sept.":9,oct:10,"oct.":10,nov:11,"nov.":11,dec:12,"dec.":12}),exports.INTEGER_WORD_DICTIONARY={one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10,eleven:11,twelve:12},exports.ORDINAL_WORD_DICTIONARY={first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,twentieth:20,"twenty first":21,"twenty-first":21,"twenty second":22,"twenty-second":22,"twenty third":23,"twenty-third":23,"twenty fourth":24,"twenty-fourth":24,"twenty fifth":25,"twenty-fifth":25,"twenty sixth":26,"twenty-sixth":26,"twenty seventh":27,"twenty-seventh":27,"twenty eighth":28,"twenty-eighth":28,"twenty ninth":29,"twenty-ninth":29,thirtieth:30,"thirty first":31,"thirty-first":31},exports.TIME_UNIT_DICTIONARY={s:"second",sec:"second",second:"second",seconds:"second",m:"minute",min:"minute",mins:"minute",minute:"minute",minutes:"minute",h:"hour",hr:"hour",hrs:"hour",hour:"hour",hours:"hour",d:"d",day:"d",days:"d",w:"w",week:"week",weeks:"week",mo:"month",mos:"month",month:"month",months:"month",qtr:"quarter",quarter:"quarter",quarters:"quarter",y:"year",yr:"year",year:"year",years:"year"},exports.NUMBER_PATTERN=`(?:${pattern_1.matchAnyPattern(exports.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s{0,2}an?)?|an?\\b(?:\\s{0,2}few)?|few|several|a?\\s{0,2}couple\\s{0,2}(?:of)?)`,exports.parseNumberPattern=parseNumberPattern,exports.ORDINAL_NUMBER_PATTERN=`(?:${pattern_1.matchAnyPattern(exports.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:st|nd|rd|th)?)`,exports.parseOrdinalNumberPattern=function parseOrdinalNumberPattern(match){let num=match.toLowerCase();return void 0!==exports.ORDINAL_WORD_DICTIONARY[num]?exports.ORDINAL_WORD_DICTIONARY[num]:(num=num.replace(/(?:st|nd|rd|th)$/i,""),parseInt(num))},exports.YEAR_PATTERN="(?:[1-9][0-9]{0,3}\\s{0,2}(?:BE|AD|BC|BCE|CE)|[1-2][0-9]{3}|[5-9][0-9])",exports.parseYear=function parseYear(match){if(/BE/i.test(match))return match=match.replace(/BE/i,""),parseInt(match)-543;if(/BCE?/i.test(match))return match=match.replace(/BCE?/i,""),-parseInt(match);if(/(AD|CE)/i.test(match))return match=match.replace(/(AD|CE)/i,""),parseInt(match);const rawYearNumber=parseInt(match);return years_1.findMostLikelyADYear(rawYearNumber)};const SINGLE_TIME_UNIT_PATTERN=`(${exports.NUMBER_PATTERN})\\s{0,3}(${pattern_1.matchAnyPattern(exports.TIME_UNIT_DICTIONARY)})`,SINGLE_TIME_UNIT_REGEX=new RegExp(SINGLE_TIME_UNIT_PATTERN,"i");function collectDateTimeFragment(fragments,match){const num=parseNumberPattern(match[1]);fragments[exports.TIME_UNIT_DICTIONARY[match[2].toLowerCase()]]=num}exports.TIME_UNITS_PATTERN=pattern_1.repeatedTimeunitPattern("(?:(?:about|around)\\s{0,3})?",SINGLE_TIME_UNIT_PATTERN),exports.parseTimeUnits=function parseTimeUnits(timeunitText){const fragments={};let remainingText=timeunitText,match=SINGLE_TIME_UNIT_REGEX.exec(remainingText);for(;match;)collectDateTimeFragment(fragments,match),remainingText=remainingText.substring(match[0].length).trim(),match=SINGLE_TIME_UNIT_REGEX.exec(remainingText);return fragments}},lIaP:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const index_1=__webpack_require__("6EsV"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),dayjs_1=__webpack_require__("MVmo"),dayjs_2=__importDefault(__webpack_require__("Wgwc"));class ESCasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return/(?:esta\s*)?(mañana|tarde|medianoche|mediodia|mediodía|noche)(?=\W|$)/i}innerExtract(context,match){const targetDate=dayjs_2.default(context.refDate),component=context.createParsingComponents();switch(match[1].toLowerCase()){case"tarde":component.imply("meridiem",index_1.Meridiem.PM),component.imply("hour",15);break;case"noche":component.imply("meridiem",index_1.Meridiem.PM),component.imply("hour",22);break;case"mañana":component.imply("meridiem",index_1.Meridiem.AM),component.imply("hour",6);break;case"medianoche":dayjs_1.assignTheNextDay(component,targetDate),component.imply("hour",0),component.imply("minute",0),component.imply("second",0);break;case"mediodia":case"mediodía":component.imply("meridiem",index_1.Meridiem.AM),component.imply("hour",12)}return component}}exports.default=ESCasualTimeParser},lQ6M:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.MultiValueRemove=exports.MultiValueLabel=exports.MultiValueContainer=exports.MultiValueGeneric=exports.multiValueRemoveCSS=exports.multiValueLabelCSS=exports.multiValueCSS=void 0;var _react=function _interopRequireWildcard(obj){if(obj&&obj.__esModule)return obj;var newObj={};if(null!=obj)for(var key in obj)if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};desc.get||desc.set?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,newObj}(__webpack_require__("cDcd")),_emotion=__webpack_require__("PAeb"),_indicators=__webpack_require__("+URl");function _typeof(obj){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(obj){return typeof obj}:function _typeof(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _objectSpread(target){for(var i=1;i=60||hour>24)return null;if(hour>=12&&(meridiem=index_1.Meridiem.PM),null!=match[5]){if(hour>12)return null;const ampm=match[5].toLowerCase();ampm.match(/morgen|vormittag/)&&(meridiem=index_1.Meridiem.AM,12==hour&&(hour=0)),ampm.match(/nachmittag|abend/)&&(meridiem=index_1.Meridiem.PM,12!=hour&&(hour+=12)),ampm.match(/nacht/)&&(12==hour?(meridiem=index_1.Meridiem.AM,hour=0):hour<6?meridiem=index_1.Meridiem.AM:(meridiem=index_1.Meridiem.PM,hour+=12))}if(extractingComponents.assign("hour",hour),extractingComponents.assign("minute",minute),null!==meridiem?extractingComponents.assign("meridiem",meridiem):hour<12?extractingComponents.imply("meridiem",index_1.Meridiem.AM):extractingComponents.imply("meridiem",index_1.Meridiem.PM),null!=match[4]){const second=parseInt(match[4]);if(second>=60)return null;extractingComponents.assign("second",second)}return extractingComponents}}exports.default=DESpecificTimeExpressionParser},"mx/2":function(module,exports,__webpack_require__){module.exports=function(){"use strict";var t="month",n="quarter";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf("day"):this.month(3*o+2).endOf(t).endOf("day")}return u.bind(this)(e,i)}}}()},n6WO:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const dayjs_1=__importDefault(__webpack_require__("Wgwc")),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),constants_1=__webpack_require__("V+3o"),FIRST_REG_PATTERN=new RegExp("(?:从|自)?(?:(今|明|前|大前|后|大后|昨)(早|朝|晚)|(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|(今|明|前|大前|后|大后|昨)(?:日|天)(?:[\\s,,]*)(?:(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?)?(?:[\\s,,]*)(?:(\\d+|["+Object.keys(constants_1.NUMBER).join("")+"]+)(?:\\s*)(?:点|时|:|:)(?:\\s*)(\\d+|半|正|整|["+Object.keys(constants_1.NUMBER).join("")+"]+)?(?:\\s*)(?:分|:|:)?(?:\\s*)(\\d+|["+Object.keys(constants_1.NUMBER).join("")+"]+)?(?:\\s*)(?:秒)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),SECOND_REG_PATTERN=new RegExp("(?:^\\s*(?:到|至|\\-|\\–|\\~|\\〜)\\s*)(?:(今|明|前|大前|后|大后|昨)(早|朝|晚)|(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|(今|明|前|大前|后|大后|昨)(?:日|天)(?:[\\s,,]*)(?:(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?)?(?:[\\s,,]*)(?:(\\d+|["+Object.keys(constants_1.NUMBER).join("")+"]+)(?:\\s*)(?:点|时|:|:)(?:\\s*)(\\d+|半|正|整|["+Object.keys(constants_1.NUMBER).join("")+"]+)?(?:\\s*)(?:分|:|:)?(?:\\s*)(\\d+|["+Object.keys(constants_1.NUMBER).join("")+"]+)?(?:\\s*)(?:秒)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i");class ZHHansTimeExpressionParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return FIRST_REG_PATTERN}innerExtract(context,match){if(match.index>0&&context.text[match.index-1].match(/\w/))return null;const refMoment=dayjs_1.default(context.refDate),result=context.createParsingResult(match.index,match[0]);let startMoment=refMoment.clone();if(match[1]){const day1=match[1];"明"==day1?refMoment.hour()>1&&(startMoment=startMoment.add(1,"day")):"昨"==day1?startMoment=startMoment.add(-1,"day"):"前"==day1?startMoment=startMoment.add(-2,"day"):"大前"==day1?startMoment=startMoment.add(-3,"day"):"后"==day1?startMoment=startMoment.add(2,"day"):"大后"==day1&&(startMoment=startMoment.add(3,"day")),result.start.assign("day",startMoment.date()),result.start.assign("month",startMoment.month()+1),result.start.assign("year",startMoment.year())}else if(match[4]){const day3=match[4];"明"==day3?startMoment=startMoment.add(1,"day"):"昨"==day3?startMoment=startMoment.add(-1,"day"):"前"==day3?startMoment=startMoment.add(-2,"day"):"大前"==day3?startMoment=startMoment.add(-3,"day"):"后"==day3?startMoment=startMoment.add(2,"day"):"大后"==day3&&(startMoment=startMoment.add(3,"day")),result.start.assign("day",startMoment.date()),result.start.assign("month",startMoment.month()+1),result.start.assign("year",startMoment.year())}else result.start.imply("day",startMoment.date()),result.start.imply("month",startMoment.month()+1),result.start.imply("year",startMoment.year());let hour=0,minute=0,meridiem=-1;if(match[8]){let second=parseInt(match[8]);if(isNaN(second)&&(second=constants_1.zhStringToNumber(match[8])),second>=60)return null;result.start.assign("second",second)}if(hour=parseInt(match[6]),isNaN(hour)&&(hour=constants_1.zhStringToNumber(match[6])),match[7]?"半"==match[7]?minute=30:"正"==match[7]||"整"==match[7]?minute=0:(minute=parseInt(match[7]),isNaN(minute)&&(minute=constants_1.zhStringToNumber(match[7]))):hour>100&&(minute=hour%100,hour=Math.floor(hour/100)),minute>=60)return null;if(hour>24)return null;if(hour>=12&&(meridiem=1),match[9]){if(hour>12)return null;const ampm=match[9][0].toLowerCase();"a"==ampm&&(meridiem=0,12==hour&&(hour=0)),"p"==ampm&&(meridiem=1,12!=hour&&(hour+=12))}else if(match[2]){const zhAMPM1=match[2][0];"早"==zhAMPM1?(meridiem=0,12==hour&&(hour=0)):"晚"==zhAMPM1&&(meridiem=1,12!=hour&&(hour+=12))}else if(match[3]){const zhAMPM2=match[3][0];"上"==zhAMPM2||"早"==zhAMPM2||"凌"==zhAMPM2?(meridiem=0,12==hour&&(hour=0)):"下"!=zhAMPM2&&"晚"!=zhAMPM2||(meridiem=1,12!=hour&&(hour+=12))}else if(match[5]){const zhAMPM3=match[5][0];"上"==zhAMPM3||"早"==zhAMPM3||"凌"==zhAMPM3?(meridiem=0,12==hour&&(hour=0)):"下"!=zhAMPM3&&"晚"!=zhAMPM3||(meridiem=1,12!=hour&&(hour+=12))}if(result.start.assign("hour",hour),result.start.assign("minute",minute),meridiem>=0?result.start.assign("meridiem",meridiem):hour<12?result.start.imply("meridiem",0):result.start.imply("meridiem",1),!(match=SECOND_REG_PATTERN.exec(context.text.substring(result.index+result.text.length))))return result.text.match(/^\d+$/)?null:result;let endMoment=startMoment.clone();if(result.end=context.createParsingComponents(),match[1]){const day1=match[1];"明"==day1?refMoment.hour()>1&&(endMoment=endMoment.add(1,"day")):"昨"==day1?endMoment=endMoment.add(-1,"day"):"前"==day1?endMoment=endMoment.add(-2,"day"):"大前"==day1?endMoment=endMoment.add(-3,"day"):"后"==day1?endMoment=endMoment.add(2,"day"):"大后"==day1&&(endMoment=endMoment.add(3,"day")),result.end.assign("day",endMoment.date()),result.end.assign("month",endMoment.month()+1),result.end.assign("year",endMoment.year())}else if(match[4]){const day3=match[4];"明"==day3?endMoment=endMoment.add(1,"day"):"昨"==day3?endMoment=endMoment.add(-1,"day"):"前"==day3?endMoment=endMoment.add(-2,"day"):"大前"==day3?endMoment=endMoment.add(-3,"day"):"后"==day3?endMoment=endMoment.add(2,"day"):"大后"==day3&&(endMoment=endMoment.add(3,"day")),result.end.assign("day",endMoment.date()),result.end.assign("month",endMoment.month()+1),result.end.assign("year",endMoment.year())}else result.end.imply("day",endMoment.date()),result.end.imply("month",endMoment.month()+1),result.end.imply("year",endMoment.year());if(hour=0,minute=0,meridiem=-1,match[8]){let second=parseInt(match[8]);if(isNaN(second)&&(second=constants_1.zhStringToNumber(match[8])),second>=60)return null;result.end.assign("second",second)}if(hour=parseInt(match[6]),isNaN(hour)&&(hour=constants_1.zhStringToNumber(match[6])),match[7]?"半"==match[7]?minute=30:"正"==match[7]||"整"==match[7]?minute=0:(minute=parseInt(match[7]),isNaN(minute)&&(minute=constants_1.zhStringToNumber(match[7]))):hour>100&&(minute=hour%100,hour=Math.floor(hour/100)),minute>=60)return null;if(hour>24)return null;if(hour>=12&&(meridiem=1),match[9]){if(hour>12)return null;const ampm=match[9][0].toLowerCase();"a"==ampm&&(meridiem=0,12==hour&&(hour=0)),"p"==ampm&&(meridiem=1,12!=hour&&(hour+=12)),result.start.isCertain("meridiem")||(0==meridiem?(result.start.imply("meridiem",0),12==result.start.get("hour")&&result.start.assign("hour",0)):(result.start.imply("meridiem",1),12!=result.start.get("hour")&&result.start.assign("hour",result.start.get("hour")+12)))}else if(match[2]){const zhAMPM1=match[2][0];"早"==zhAMPM1?(meridiem=0,12==hour&&(hour=0)):"晚"==zhAMPM1&&(meridiem=1,12!=hour&&(hour+=12))}else if(match[3]){const zhAMPM2=match[3][0];"上"==zhAMPM2||"早"==zhAMPM2||"凌"==zhAMPM2?(meridiem=0,12==hour&&(hour=0)):"下"!=zhAMPM2&&"晚"!=zhAMPM2||(meridiem=1,12!=hour&&(hour+=12))}else if(match[5]){const zhAMPM3=match[5][0];"上"==zhAMPM3||"早"==zhAMPM3||"凌"==zhAMPM3?(meridiem=0,12==hour&&(hour=0)):"下"!=zhAMPM3&&"晚"!=zhAMPM3||(meridiem=1,12!=hour&&(hour+=12))}if(result.text=result.text+match[0],result.end.assign("hour",hour),result.end.assign("minute",minute),meridiem>=0)result.end.assign("meridiem",meridiem);else{result.start.isCertain("meridiem")&&1==result.start.get("meridiem")&&result.start.get("hour")>hour?result.end.imply("meridiem",0):hour>12&&result.end.imply("meridiem",1)}return result.end.date().getTime()=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}function _extends(){return _extends=Object.assign||function(target){for(var i=1;i上|今|下|這|呢)(?:個)?(?:星期|禮拜|週)(?"+Object.keys(constants_1.WEEKDAY_OFFSET).join("|")+")");class ZHHantRelationWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const result=context.createParsingResult(match.index,match[0]),dayOfWeek=match.groups.weekday,offset=constants_1.WEEKDAY_OFFSET[dayOfWeek];if(void 0===offset)return null;let modifier=null;const prefix=match.groups.prefix;"上"==prefix?modifier="last":"下"==prefix?modifier="next":"今"!=prefix&&"這"!=prefix&&"呢"!=prefix||(modifier="this");let startMoment=dayjs_1.default(context.refDate),startMomentFixed=!1;const refOffset=startMoment.day();return"last"==modifier||"past"==modifier?(startMoment=startMoment.day(offset-7),startMomentFixed=!0):"next"==modifier?(startMoment=startMoment.day(offset+7),startMomentFixed=!0):startMoment="this"==modifier?startMoment.day(offset):Math.abs(offset-7-refOffset)=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}function _defineProperties(target,props){for(var i=0;i1?_len2-1:0),_key2=1;_key2<_len2;_key2++)args[_key2-1]=arguments[_key2];return(_this$props=this.props)[name].apply(_this$props,args)}}},{key:"render",value:function render(){var _this2=this,_this$props2=this.props,props=(_this$props2.defaultInputValue,_this$props2.defaultMenuIsOpen,_this$props2.defaultValue,_objectWithoutProperties(_this$props2,["defaultInputValue","defaultMenuIsOpen","defaultValue"]));return _react.default.createElement(SelectComponent,_extends({},props,{ref:function ref(_ref){_this2.select=_ref},inputValue:this.getProp("inputValue"),menuIsOpen:this.getProp("menuIsOpen"),onChange:this.onChange,onInputChange:this.onInputChange,onMenuClose:this.onMenuClose,onMenuOpen:this.onMenuOpen,value:this.getProp("value")}))}}]),StateManager}(_react.Component),_defineProperty(_class,"defaultProps",defaultProps),_temp};exports.default=_default},oZmp:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isOptionDisabled=exports.getOptionValue=exports.getOptionLabel=exports.formatGroupLabel=void 0;exports.formatGroupLabel=function formatGroupLabel(group){return group.label};exports.getOptionLabel=function getOptionLabel(option){return option.label};exports.getOptionValue=function getOptionValue(option){return option.value};exports.isOptionDisabled=function isOptionDisabled(option){return!!option.isDisabled}},oj4i:function(module,__webpack_exports__,__webpack_require__){"use strict";var memoize_esm=function memoize(fn){var cache={};return function(arg){return void 0===cache[arg]&&(cache[arg]=fn(arg)),cache[arg]}},unitless_esm={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var hash_esm=function murmurhash2_32_gc(str){for(var k,l=str.length,h=l^l,i=0;l>=4;)k=1540483477*(65535&(k=255&str.charCodeAt(i)|(255&str.charCodeAt(++i))<<8|(255&str.charCodeAt(++i))<<16|(255&str.charCodeAt(++i))<<24))+((1540483477*(k>>>16)&65535)<<16),h=1540483477*(65535&h)+((1540483477*(h>>>16)&65535)<<16)^(k=1540483477*(65535&(k^=k>>>24))+((1540483477*(k>>>16)&65535)<<16)),l-=4,++i;switch(l){case 3:h^=(255&str.charCodeAt(i+2))<<16;case 2:h^=(255&str.charCodeAt(i+1))<<8;case 1:h=1540483477*(65535&(h^=255&str.charCodeAt(i)))+((1540483477*(h>>>16)&65535)<<16)}return h=1540483477*(65535&(h^=h>>>13))+((1540483477*(h>>>16)&65535)<<16),((h^=h>>>15)>>>0).toString(36)};var stylis_esm=function stylis_min(W){function M(d,c,e,h,a){for(var q,g,k,y,C,m=0,b=0,v=0,n=0,x=0,K=0,u=k=q=0,l=0,r=0,I=0,t=0,B=e.length,J=B-1,f="",p="",F="",G="";lq)&&(t=(f=f.replace(" ",":")).length),0h&&(h=(c=c.trim()).charCodeAt(0)),h){case 38:return c.replace(F,"$1"+d.trim());case 58:return d.trim()+c.replace(F,"$1"+d.trim());default:if(0<1*e&&0b.charCodeAt(8))break;case 115:a=a.replace(b,"-webkit-"+b)+";"+a;break;case 207:case 102:a=a.replace(b,"-webkit-"+(102e.charCodeAt(0)&&(e=e.trim()),e=[e],01?_len-1:0),_key=1;_key<_len;_key++)interpolations[_key-1]=arguments[_key];return interpolations.forEach((function(interpolation,i){styles+=handleInterpolation.call(this,interpolation,46===styles.charCodeAt(styles.length-1)),!0===stringMode&&void 0!==strings[i+1]&&(styles+=strings[i+1])}),this),stylesWithLabel=styles,styles=styles.replace(labelPattern,(function(match,p1){return identifierName+="-"+p1,""})),name=createClassName(styles,identifierName),styles};function insert(scope,styles){void 0===caches.inserted[name]&&(current="",stylis(scope,styles),caches.inserted[name]=current)}var css=function css(){var styles=createStyles.apply(this,arguments),selector=key+"-"+name;return void 0===caches.registered[selector]&&(caches.registered[selector]=stylesWithLabel),insert("."+selector,styles),selector};function getRegisteredStyles(registeredStyles,classNames){var rawClassName="";return classNames.split(" ").forEach((function(className){void 0!==caches.registered[className]?registeredStyles.push(className):rawClassName+=className+" "})),rawClassName}function merge(className,sourceMap){var registeredStyles=[],rawClassName=getRegisteredStyles(registeredStyles,className);return registeredStyles.length<2?className:rawClassName+css(registeredStyles,sourceMap)}function hydrateSingleId(id){caches.inserted[id]=!0}if(isBrowser){var chunks=document.querySelectorAll("[data-emotion-"+key+"]");Array.prototype.forEach.call(chunks,(function(node){sheet.tags[0].parentNode.insertBefore(node,sheet.tags[0]),node.getAttribute("data-emotion-"+key).split(" ").forEach(hydrateSingleId)}))}var emotion={flush:function flush(){isBrowser&&(sheet.flush(),sheet.inject()),caches.inserted={},caches.registered={}},hydrate:function hydrate(ids){ids.forEach(hydrateSingleId)},cx:function cx(){for(var _len2=arguments.length,classNames=new Array(_len2),_key2=0;_key2<_len2;_key2++)classNames[_key2]=arguments[_key2];return merge(classnames(classNames))},merge:merge,getRegisteredStyles:getRegisteredStyles,injectGlobal:function injectGlobal(){insert("",createStyles.apply(this,arguments))},keyframes:function keyframes(){var styles=createStyles.apply(this,arguments),animation="animation-"+name;return insert("","@keyframes "+animation+"{"+styles+"}"),animation},css:css,sheet:sheet,caches:caches};return context.__SECRET_EMOTION__=emotion,emotion}},omFw:function(module,exports,__webpack_require__){"use strict";function extractTerms(dictionary){let keys;return keys=dictionary instanceof Array?[...dictionary]:dictionary instanceof Map?Array.from(dictionary.keys()):Object.keys(dictionary),keys}Object.defineProperty(exports,"__esModule",{value:!0}),exports.matchAnyPattern=exports.extractTerms=exports.repeatedTimeunitPattern=void 0,exports.repeatedTimeunitPattern=function repeatedTimeunitPattern(prefix,singleTimeunitPattern){const singleTimeunitPatternNoCapture=singleTimeunitPattern.replace(/\((?!\?)/g,"(?:");return`${prefix}${singleTimeunitPatternNoCapture}\\s{0,5}(?:,?\\s{0,5}${singleTimeunitPatternNoCapture}){0,10}`},exports.extractTerms=extractTerms,exports.matchAnyPattern=function matchAnyPattern(dictionary){return`(?:${extractTerms(dictionary).sort(((a,b)=>b.length-a.length)).join("|").replace(/\./g,"\\.")})`}},ouvS:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const AbstractTimeExpressionParser_1=__webpack_require__("MXb4");class NLTimeExpressionParser extends AbstractTimeExpressionParser_1.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:om)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\–|\\~|\\〜|om|\\?)\\s*"}primarySuffix(){return"(?:\\s*(?:uur))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(context,match){return match[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(context,match)}}exports.default=NLTimeExpressionParser},p76M:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const index_1=__webpack_require__("6EsV"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),dayjs_1=__importDefault(__webpack_require__("Wgwc")),dayjs_2=__webpack_require__("MVmo");class NLCasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return/(deze)?\s*(namiddag|avond|middernacht|ochtend|middag|'s middags|'s avonds|'s ochtends)(?=\W|$)/i}innerExtract(context,match){const targetDate=dayjs_1.default(context.refDate),component=context.createParsingComponents();switch("deze"===match[1]&&(component.assign("day",context.refDate.getDate()),component.assign("month",context.refDate.getMonth()+1),component.assign("year",context.refDate.getFullYear())),match[2].toLowerCase()){case"namiddag":case"'s namiddags":component.imply("meridiem",index_1.Meridiem.PM),component.imply("hour",15);break;case"avond":case"'s avonds'":component.imply("meridiem",index_1.Meridiem.PM),component.imply("hour",20);break;case"middernacht":dayjs_2.assignTheNextDay(component,targetDate),component.imply("hour",0),component.imply("minute",0),component.imply("second",0);break;case"ochtend":case"'s ochtends":component.imply("meridiem",index_1.Meridiem.AM),component.imply("hour",6);break;case"middag":case"'s middags":component.imply("meridiem",index_1.Meridiem.AM),component.imply("hour",12)}return component}}exports.default=NLCasualTimeParser},pC9g:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const abstractRefiners_1=__webpack_require__("LMHj");class MergeWeekdayComponentRefiner extends abstractRefiners_1.MergingRefiner{mergeResults(textBetween,currentResult,nextResult){const newResult=nextResult.clone();return newResult.index=currentResult.index,newResult.text=currentResult.text+textBetween+newResult.text,newResult.start.assign("weekday",currentResult.start.get("weekday")),newResult.end&&newResult.end.assign("weekday",currentResult.start.get("weekday")),newResult}shouldMergeResults(textBetween,currentResult,nextResult){return currentResult.start.isOnlyWeekdayComponent()&&!currentResult.start.isCertain("hour")&&nextResult.start.isCertain("day")&&null!=textBetween.match(/^,?\s*$/)}}exports.default=MergeWeekdayComponentRefiner},pKWP:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.findYearClosestToRef=exports.findMostLikelyADYear=void 0;const dayjs_1=__importDefault(__webpack_require__("Wgwc"));exports.findMostLikelyADYear=function findMostLikelyADYear(yearNumber){return yearNumber<100&&(yearNumber+=yearNumber>50?1900:2e3),yearNumber},exports.findYearClosestToRef=function findYearClosestToRef(refDate,day,month){const refMoment=dayjs_1.default(refDate);let dateMoment=refMoment;dateMoment=dateMoment.month(month-1),dateMoment=dateMoment.date(day),dateMoment=dateMoment.year(refMoment.year());const nextYear=dateMoment.add(1,"y"),lastYear=dateMoment.add(-1,"y");return Math.abs(nextYear.diff(refMoment))2&&dayjs_2.implyTheNextDay(component,targetDate),component.assign("hour",0),component.imply("minute",0),component.imply("second",0),component.imply("millisecond",0),component},exports.morning=function morning(reference,implyHour=6){const component=new results_1.ParsingComponents(reference,{});return component.imply("meridiem",index_1.Meridiem.AM),component.imply("hour",implyHour),component.imply("minute",0),component.imply("second",0),component.imply("millisecond",0),component},exports.afternoon=function afternoon(reference,implyHour=15){const component=new results_1.ParsingComponents(reference,{});return component.imply("meridiem",index_1.Meridiem.PM),component.imply("hour",implyHour),component.imply("minute",0),component.imply("second",0),component.imply("millisecond",0),component},exports.noon=function noon(reference){const component=new results_1.ParsingComponents(reference,{});return component.imply("meridiem",index_1.Meridiem.AM),component.imply("hour",12),component.imply("minute",0),component.imply("second",0),component.imply("millisecond",0),component}},qD7Z:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.HIDE_TIMEOUT=void 0;var _createClass=function(){function defineProperties(target,props){for(var i=0;i=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_ref,["input","selectedDay","month","children","classNames"]);return _react2.default.createElement("div",_extends({className:classNames.overlayWrapper},props),_react2.default.createElement("div",{className:classNames.overlay},children))}function defaultFormat(d){return(0,_DateUtils.isDate)(d)?d.getFullYear()+"-"+(""+(d.getMonth()+1))+"-"+(""+d.getDate()):""}function defaultParse(str){if("string"==typeof str){var split=str.split("-");if(3===split.length){var year=parseInt(split[0],10),month=parseInt(split[1],10)-1,day=parseInt(split[2],10);if(!(isNaN(year)||String(year).length>4||isNaN(month)||isNaN(day)||day<=0||day>31||month<0||month>=12))return new Date(year,month,day,12,0,0,0)}}}var DayPickerInput=function(_React$Component){function DayPickerInput(props){!function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}(this,DayPickerInput);var _this=function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}(this,(DayPickerInput.__proto__||Object.getPrototypeOf(DayPickerInput)).call(this,props));return _this.input=null,_this.daypicker=null,_this.clickTimeout=null,_this.hideTimeout=null,_this.inputBlurTimeout=null,_this.inputFocusTimeout=null,_this.state=_this.getInitialStateFromProps(props),_this.state.showOverlay=props.showOverlay,_this.hideAfterDayClick=_this.hideAfterDayClick.bind(_this),_this.handleInputClick=_this.handleInputClick.bind(_this),_this.handleInputFocus=_this.handleInputFocus.bind(_this),_this.handleInputBlur=_this.handleInputBlur.bind(_this),_this.handleInputChange=_this.handleInputChange.bind(_this),_this.handleInputKeyDown=_this.handleInputKeyDown.bind(_this),_this.handleInputKeyUp=_this.handleInputKeyUp.bind(_this),_this.handleDayClick=_this.handleDayClick.bind(_this),_this.handleMonthChange=_this.handleMonthChange.bind(_this),_this.handleOverlayFocus=_this.handleOverlayFocus.bind(_this),_this.handleOverlayBlur=_this.handleOverlayBlur.bind(_this),_this}return function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}(DayPickerInput,_React$Component),_createClass(DayPickerInput,[{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){var newState={},_props=this.props,value=_props.value,formatDate=_props.formatDate,format=_props.format,dayPickerProps=_props.dayPickerProps;value===prevProps.value&&dayPickerProps.locale===prevProps.dayPickerProps.locale&&format===prevProps.format||((0,_DateUtils.isDate)(value)?newState.value=formatDate(value,format,dayPickerProps.locale):newState.value=value);var prevMonth=prevProps.dayPickerProps.month;dayPickerProps.month&&dayPickerProps.month!==prevMonth&&!(0,_DateUtils.isSameMonth)(dayPickerProps.month,prevMonth)&&(newState.month=dayPickerProps.month),prevProps.dayPickerProps.selectedDays!==dayPickerProps.selectedDays&&(newState.selectedDays=dayPickerProps.selectedDays),Object.keys(newState).length>0&&this.setState(newState)}},{key:"componentWillUnmount",value:function componentWillUnmount(){clearTimeout(this.clickTimeout),clearTimeout(this.hideTimeout),clearTimeout(this.inputFocusTimeout),clearTimeout(this.inputBlurTimeout),clearTimeout(this.overlayBlurTimeout)}},{key:"getInitialMonthFromProps",value:function getInitialMonthFromProps(props){var dayPickerProps=props.dayPickerProps,format=props.format,day=void 0;return props.value&&(day=(0,_DateUtils.isDate)(props.value)?props.value:props.parseDate(props.value,format,dayPickerProps.locale)),dayPickerProps.initialMonth||dayPickerProps.month||day||new Date}},{key:"getInitialStateFromProps",value:function getInitialStateFromProps(props){var dayPickerProps=props.dayPickerProps,formatDate=props.formatDate,format=props.format,typedValue=props.typedValue,value=props.value;return props.value&&(0,_DateUtils.isDate)(props.value)&&(value=formatDate(props.value,format,dayPickerProps.locale)),{value:value,typedValue:typedValue,month:this.getInitialMonthFromProps(props),selectedDays:dayPickerProps.selectedDays}}},{key:"getInput",value:function getInput(){return this.input}},{key:"getDayPicker",value:function getDayPicker(){return this.daypicker}},{key:"updateState",value:function updateState(day,value,callback){var _this2=this,_props2=this.props,dayPickerProps=_props2.dayPickerProps,onDayChange=_props2.onDayChange;this.setState({month:day,value:value,typedValue:""},(function(){if(callback&&callback(),onDayChange){var modifiersObj=_extends({disabled:dayPickerProps.disabledDays,selected:dayPickerProps.selectedDays},dayPickerProps.modifiers),modifiers=(0,_ModifiersUtils.getModifiersForDay)(day,modifiersObj).reduce((function(obj,modifier){return _extends({},obj,function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}({},modifier,!0))}),{});onDayChange(day,modifiers,_this2)}}))}},{key:"showDayPicker",value:function showDayPicker(){var _this3=this,_props3=this.props,parseDate=_props3.parseDate,format=_props3.format,dayPickerProps=_props3.dayPickerProps,_state=this.state,value=_state.value;if(!_state.showOverlay){var month=value?parseDate(value,format,dayPickerProps.locale):this.getInitialMonthFromProps(this.props);this.setState((function(state){return{showOverlay:!0,month:month||state.month}}),(function(){_this3.props.onDayPickerShow&&_this3.props.onDayPickerShow()}))}}},{key:"hideDayPicker",value:function hideDayPicker(){var _this4=this;!1!==this.state.showOverlay&&this.setState({showOverlay:!1},(function(){_this4.props.onDayPickerHide&&_this4.props.onDayPickerHide()}))}},{key:"hideAfterDayClick",value:function hideAfterDayClick(){var _this5=this;this.props.hideOnDayClick&&(this.hideTimeout=setTimeout((function(){_this5.overlayHasFocus=!1,_this5.hideDayPicker()}),HIDE_TIMEOUT))}},{key:"handleInputClick",value:function handleInputClick(e){this.showDayPicker(),this.props.inputProps.onClick&&(e.persist(),this.props.inputProps.onClick(e))}},{key:"handleInputFocus",value:function handleInputFocus(e){var _this6=this;this.showDayPicker(),this.inputFocusTimeout=setTimeout((function(){_this6.overlayHasFocus=!1}),2),this.props.inputProps.onFocus&&(e.persist(),this.props.inputProps.onFocus(e))}},{key:"handleInputBlur",value:function handleInputBlur(e){var _this7=this;this.inputBlurTimeout=setTimeout((function(){_this7.overlayHasFocus||_this7.hideDayPicker()}),1),this.props.inputProps.onBlur&&(e.persist(),this.props.inputProps.onBlur(e))}},{key:"handleOverlayFocus",value:function handleOverlayFocus(e){e.preventDefault(),this.overlayHasFocus=!0,this.props.keepFocus&&this.input&&"function"==typeof this.input.focus&&this.input.focus()}},{key:"handleOverlayBlur",value:function handleOverlayBlur(){var _this8=this;this.overlayBlurTimeout=setTimeout((function(){_this8.overlayHasFocus=!1}),3)}},{key:"handleInputChange",value:function handleInputChange(e){var _props4=this.props,dayPickerProps=_props4.dayPickerProps,format=_props4.format,inputProps=_props4.inputProps,onDayChange=_props4.onDayChange,parseDate=_props4.parseDate;inputProps.onChange&&(e.persist(),inputProps.onChange(e));var value=e.target.value;if(""===value.trim())return this.setState({value:value,typedValue:""}),void(onDayChange&&onDayChange(void 0,{},this));var day=parseDate(value,format,dayPickerProps.locale);if(!day)return this.setState({value:value,typedValue:value}),void(onDayChange&&onDayChange(void 0,{},this));this.updateState(day,value)}},{key:"handleInputKeyDown",value:function handleInputKeyDown(e){e.keyCode===_keys.TAB?this.hideDayPicker():this.showDayPicker(),this.props.inputProps.onKeyDown&&(e.persist(),this.props.inputProps.onKeyDown(e))}},{key:"handleInputKeyUp",value:function handleInputKeyUp(e){e.keyCode===_keys.ESC?this.hideDayPicker():this.showDayPicker(),this.props.inputProps.onKeyUp&&(e.persist(),this.props.inputProps.onKeyUp(e))}},{key:"handleMonthChange",value:function handleMonthChange(month){var _this9=this;this.setState({month:month},(function(){_this9.props.dayPickerProps&&_this9.props.dayPickerProps.onMonthChange&&_this9.props.dayPickerProps.onMonthChange(month)}))}},{key:"handleDayClick",value:function handleDayClick(day,modifiers,e){var _this10=this,_props5=this.props,clickUnselectsDay=_props5.clickUnselectsDay,dayPickerProps=_props5.dayPickerProps,onDayChange=_props5.onDayChange,formatDate=_props5.formatDate,format=_props5.format;if(dayPickerProps.onDayClick&&dayPickerProps.onDayClick(day,modifiers,e),!(modifiers.disabled||dayPickerProps&&dayPickerProps.classNames&&modifiers[dayPickerProps.classNames.disabled])){if(modifiers.selected&&clickUnselectsDay){var selectedDays=this.state.selectedDays;if(Array.isArray(selectedDays)){var selectedDayIdx=(selectedDays=selectedDays.slice(0)).indexOf(day);selectedDays.splice(selectedDayIdx,1)}else selectedDays&&(selectedDays=null);return this.setState({value:"",typedValue:"",selectedDays:selectedDays},this.hideAfterDayClick),void(onDayChange&&onDayChange(void 0,modifiers,this))}var value=formatDate(day,format,dayPickerProps.locale);this.setState({value:value,typedValue:"",month:day},(function(){onDayChange&&onDayChange(day,modifiers,_this10),_this10.hideAfterDayClick()}))}}},{key:"renderOverlay",value:function renderOverlay(){var _this11=this,_props6=this.props,classNames=_props6.classNames,dayPickerProps=_props6.dayPickerProps,parseDate=_props6.parseDate,formatDate=_props6.formatDate,format=_props6.format,_state2=this.state,selectedDays=_state2.selectedDays,value=_state2.value,selectedDay=void 0;if(!selectedDays&&value){var day=parseDate(value,format,dayPickerProps.locale);day&&(selectedDay=day)}else selectedDays&&(selectedDay=selectedDays);var onTodayButtonClick=void 0;dayPickerProps.todayButton&&(onTodayButtonClick=function onTodayButtonClick(){return _this11.updateState(new Date,formatDate(new Date,format,dayPickerProps.locale),_this11.hideAfterDayClick)});var Overlay=this.props.overlayComponent;return _react2.default.createElement(Overlay,{classNames:classNames,month:this.state.month,selectedDay:selectedDay,input:this.input,tabIndex:0,onFocus:this.handleOverlayFocus,onBlur:this.handleOverlayBlur},_react2.default.createElement(_DayPicker2.default,_extends({ref:function ref(el){return _this11.daypicker=el},onTodayButtonClick:onTodayButtonClick},dayPickerProps,{month:this.state.month,selectedDays:selectedDay,onDayClick:this.handleDayClick,onMonthChange:this.handleMonthChange})))}},{key:"render",value:function render(){var _this12=this,Input=this.props.component,inputProps=this.props.inputProps;return _react2.default.createElement("div",{className:this.props.classNames.container,style:this.props.style},_react2.default.createElement(Input,_extends({ref:function ref(el){return _this12.input=el},placeholder:this.props.placeholder},inputProps,{value:this.state.value||this.state.typedValue,onChange:this.handleInputChange,onFocus:this.handleInputFocus,onBlur:this.handleInputBlur,onKeyDown:this.handleInputKeyDown,onKeyUp:this.handleInputKeyUp,onClick:inputProps.disabled?void 0:this.handleInputClick})),this.state.showOverlay&&this.renderOverlay())}}]),DayPickerInput}(_react2.default.Component);DayPickerInput.defaultProps={dayPickerProps:{},value:"",typedValue:"",placeholder:"YYYY-M-D",format:"L",formatDate:defaultFormat,parseDate:defaultParse,showOverlay:!1,hideOnDayClick:!0,clickUnselectsDay:!1,keepFocus:!0,component:"input",inputProps:{},overlayComponent:OverlayComponent,classNames:{container:"DayPickerInput",overlayWrapper:"DayPickerInput-OverlayWrapper",overlay:"DayPickerInput-Overlay"}},exports.default=DayPickerInput},qcEV:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("ksW2"),pattern_1=__webpack_require__("omFw"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),weekdays_1=__webpack_require__("byqA"),PATTERN=new RegExp(`(?:(?:\\,|\\(|\\()\\s*)?(?:on\\s*?)?(?:(this|last|past|next)\\s*)?(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\)))?(?:\\s*(this|last|past|next)\\s*week)?(?=\\W|$)`,"i");class ENWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const dayOfWeek=match[2].toLowerCase(),weekday=constants_1.WEEKDAY_DICTIONARY[dayOfWeek],prefix=match[1],postfix=match[3];let modifierWord=prefix||postfix;modifierWord=modifierWord||"",modifierWord=modifierWord.toLowerCase();let modifier=null;return"last"==modifierWord||"past"==modifierWord?modifier="last":"next"==modifierWord?modifier="next":"this"==modifierWord&&(modifier="this"),weekdays_1.createParsingComponentsAtWeekday(context.reference,weekday,modifier)}}exports.default=ENWeekdayParser},r8Bu:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const dayjs_1=__importDefault(__webpack_require__("Wgwc")),index_1=__webpack_require__("6EsV"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),dayjs_2=__webpack_require__("MVmo"),timeunits_1=__webpack_require__("aWHD");class DECasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(context){return/(diesen)?\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht)(?=\W|$)/i}innerExtract(context,match){const targetDate=dayjs_1.default(context.refDate),timeKeywordPattern=match[2].toLowerCase(),component=context.createParsingComponents();return dayjs_2.implySimilarTime(component,targetDate),DECasualTimeParser.extractTimeComponents(component,timeKeywordPattern)}static extractTimeComponents(component,timeKeywordPattern){switch(timeKeywordPattern){case"morgen":component.imply("hour",6),component.imply("minute",0),component.imply("second",0),component.imply("meridiem",index_1.Meridiem.AM);break;case"vormittag":component.imply("hour",9),component.imply("minute",0),component.imply("second",0),component.imply("meridiem",index_1.Meridiem.AM);break;case"mittag":case"mittags":component.imply("hour",12),component.imply("minute",0),component.imply("second",0),component.imply("meridiem",index_1.Meridiem.AM);break;case"nachmittag":component.imply("hour",15),component.imply("minute",0),component.imply("second",0),component.imply("meridiem",index_1.Meridiem.PM);break;case"abend":component.imply("hour",18),component.imply("minute",0),component.imply("second",0),component.imply("meridiem",index_1.Meridiem.PM);break;case"nacht":component.imply("hour",22),component.imply("minute",0),component.imply("second",0),component.imply("meridiem",index_1.Meridiem.PM);break;case"mitternacht":component.get("hour")>1&&(component=timeunits_1.addImpliedTimeUnits(component,{day:1})),component.imply("hour",0),component.imply("minute",0),component.imply("second",0),component.imply("meridiem",index_1.Meridiem.AM)}return component}}exports.default=DECasualTimeParser},rFfs:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const AbstractMergeDateRangeRefiner_1=__importDefault(__webpack_require__("fx0C"));class FRMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default{patternBetween(){return/^\s*(à|a|-)\s*$/i}}exports.default=FRMergeDateRangeRefiner},rN2S:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const years_1=__webpack_require__("pKWP"),constants_1=__webpack_require__("ksW2"),constants_2=__webpack_require__("ksW2"),constants_3=__webpack_require__("ksW2"),pattern_1=__webpack_require__("omFw"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),PATTERN=new RegExp(`(?:on\\s{0,3})?(${constants_3.ORDINAL_NUMBER_PATTERN})(?:\\s{0,3}(?:to|\\-|\\–|until|through|till)?\\s{0,3}(${constants_3.ORDINAL_NUMBER_PATTERN}))?(?:-|/|\\s{0,3}(?:of)?\\s{0,3})(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})(?:(?:-|/|,?\\s{0,3})(${constants_2.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i");class ENMonthNameLittleEndianParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const result=context.createParsingResult(match.index,match[0]),month=constants_1.MONTH_DICTIONARY[match[3].toLowerCase()],day=constants_3.parseOrdinalNumberPattern(match[1]);if(day>31)return match.index=match.index+match[1].length,null;if(result.start.assign("month",month),result.start.assign("day",day),match[4]){const yearNumber=constants_2.parseYear(match[4]);result.start.assign("year",yearNumber)}else{const year=years_1.findYearClosestToRef(context.refDate,day,month);result.start.imply("year",year)}if(match[2]){const endDate=constants_3.parseOrdinalNumberPattern(match[2]);result.end=result.start.clone(),result.end.assign("day",endDate)}return result}}exports.default=ENMonthNameLittleEndianParser},rc6b:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.css=void 0;var _react=function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__("cDcd")),_emotion=__webpack_require__("PAeb");function _extends(){return _extends=Object.assign||function(target){for(var i=1;i!(refiner instanceof ExtractTimezoneOffsetRefiner_1.default))),configuration}exports.hant=new chrono_1.Chrono(createCasualConfiguration()),exports.casual=new chrono_1.Chrono(createCasualConfiguration()),exports.strict=new chrono_1.Chrono(createConfiguration()),exports.parse=function parse(text,ref,option){return exports.casual.parse(text,ref,option)},exports.parseDate=function parseDate(text,ref,option){return exports.casual.parseDate(text,ref,option)},exports.createCasualConfiguration=createCasualConfiguration,exports.createConfiguration=createConfiguration},sINF:function(module,__webpack_exports__,__webpack_require__){"use strict";function createThunkMiddleware(extraArgument){return function middleware(_ref){var dispatch=_ref.dispatch,getState=_ref.getState;return function(next){return function(action){return"function"==typeof action?action(dispatch,getState,extraArgument):next(action)}}}}var thunk=createThunkMiddleware();thunk.withExtraArgument=createThunkMiddleware,__webpack_exports__.a=thunk},sQQt:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("ksW2"),pattern_1=__webpack_require__("omFw"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),PATTERN=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i");class ENCasualYearMonthDayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const month=match[3]?parseInt(match[3]):constants_1.MONTH_DICTIONARY[match[2].toLowerCase()];if(month<1||month>12)return null;const year=parseInt(match[1]);return{day:parseInt(match[4]),month:month,year:year}}}exports.default=ENCasualYearMonthDayParser},sdvt:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function defineProperties(target,props){for(var i=0;i0&&context.text[match.index-1].match(/\w/))return null;const refMoment=dayjs_1.default(context.refDate),result=context.createParsingResult(match.index,match[0]);let startMoment=refMoment.clone();if(match[1])"明"==(day1=match[1])||"聽"==day1?refMoment.hour()>1&&(startMoment=startMoment.add(1,"day")):"昨"==day1||"尋"==day1||"琴"==day1?startMoment=startMoment.add(-1,"day"):"前"==day1?startMoment=startMoment.add(-2,"day"):"大前"==day1?startMoment=startMoment.add(-3,"day"):"後"==day1?startMoment=startMoment.add(2,"day"):"大後"==day1&&(startMoment=startMoment.add(3,"day")),result.start.assign("day",startMoment.date()),result.start.assign("month",startMoment.month()+1),result.start.assign("year",startMoment.year());else if(match[4]){"明"==(day3=match[4])||"聽"==day3?startMoment=startMoment.add(1,"day"):"昨"==day3||"尋"==day3||"琴"==day3?startMoment=startMoment.add(-1,"day"):"前"==day3?startMoment=startMoment.add(-2,"day"):"大前"==day3?startMoment=startMoment.add(-3,"day"):"後"==day3?startMoment=startMoment.add(2,"day"):"大後"==day3&&(startMoment=startMoment.add(3,"day")),result.start.assign("day",startMoment.date()),result.start.assign("month",startMoment.month()+1),result.start.assign("year",startMoment.year())}else result.start.imply("day",startMoment.date()),result.start.imply("month",startMoment.month()+1),result.start.imply("year",startMoment.year());let hour=0,minute=0,meridiem=-1;if(match[8]){var second=parseInt(match[8]);if(isNaN(second)&&(second=constants_1.zhStringToNumber(match[8])),second>=60)return null;result.start.assign("second",second)}if(hour=parseInt(match[6]),isNaN(hour)&&(hour=constants_1.zhStringToNumber(match[6])),match[7]?"半"==match[7]?minute=30:"正"==match[7]||"整"==match[7]?minute=0:(minute=parseInt(match[7]),isNaN(minute)&&(minute=constants_1.zhStringToNumber(match[7]))):hour>100&&(minute=hour%100,hour=Math.floor(hour/100)),minute>=60)return null;if(hour>24)return null;if(hour>=12&&(meridiem=1),match[9]){if(hour>12)return null;"a"==(ampm=match[9][0].toLowerCase())&&(meridiem=0,12==hour&&(hour=0)),"p"==ampm&&(meridiem=1,12!=hour&&(hour+=12))}else if(match[2]){"朝"==(zhAMPM1=match[2][0])||"早"==zhAMPM1?(meridiem=0,12==hour&&(hour=0)):"晚"==zhAMPM1&&(meridiem=1,12!=hour&&(hour+=12))}else if(match[3]){"上"==(zhAMPM2=match[3][0])||"朝"==zhAMPM2||"早"==zhAMPM2||"凌"==zhAMPM2?(meridiem=0,12==hour&&(hour=0)):"下"!=zhAMPM2&&"晏"!=zhAMPM2&&"晚"!=zhAMPM2||(meridiem=1,12!=hour&&(hour+=12))}else if(match[5]){"上"==(zhAMPM3=match[5][0])||"朝"==zhAMPM3||"早"==zhAMPM3||"凌"==zhAMPM3?(meridiem=0,12==hour&&(hour=0)):"下"!=zhAMPM3&&"晏"!=zhAMPM3&&"晚"!=zhAMPM3||(meridiem=1,12!=hour&&(hour+=12))}if(result.start.assign("hour",hour),result.start.assign("minute",minute),meridiem>=0?result.start.assign("meridiem",meridiem):hour<12?result.start.imply("meridiem",0):result.start.imply("meridiem",1),!(match=SECOND_REG_PATTERN.exec(context.text.substring(result.index+result.text.length))))return result.text.match(/^\d+$/)?null:result;let endMoment=startMoment.clone();var day1;if(result.end=context.createParsingComponents(),match[1])"明"==(day1=match[1])||"聽"==day1?refMoment.hour()>1&&(endMoment=endMoment.add(1,"day")):"昨"==day1||"尋"==day1||"琴"==day1?endMoment=endMoment.add(-1,"day"):"前"==day1?endMoment=endMoment.add(-2,"day"):"大前"==day1?endMoment=endMoment.add(-3,"day"):"後"==day1?endMoment=endMoment.add(2,"day"):"大後"==day1&&(endMoment=endMoment.add(3,"day")),result.end.assign("day",endMoment.date()),result.end.assign("month",endMoment.month()+1),result.end.assign("year",endMoment.year());else if(match[4]){var day3;"明"==(day3=match[4])||"聽"==day3?endMoment=endMoment.add(1,"day"):"昨"==day3||"尋"==day3||"琴"==day3?endMoment=endMoment.add(-1,"day"):"前"==day3?endMoment=endMoment.add(-2,"day"):"大前"==day3?endMoment=endMoment.add(-3,"day"):"後"==day3?endMoment=endMoment.add(2,"day"):"大後"==day3&&(endMoment=endMoment.add(3,"day")),result.end.assign("day",endMoment.date()),result.end.assign("month",endMoment.month()+1),result.end.assign("year",endMoment.year())}else result.end.imply("day",endMoment.date()),result.end.imply("month",endMoment.month()+1),result.end.imply("year",endMoment.year());if(hour=0,minute=0,meridiem=-1,match[8]){second=parseInt(match[8]);if(isNaN(second)&&(second=constants_1.zhStringToNumber(match[8])),second>=60)return null;result.end.assign("second",second)}if(hour=parseInt(match[6]),isNaN(hour)&&(hour=constants_1.zhStringToNumber(match[6])),match[7]?"半"==match[7]?minute=30:"正"==match[7]||"整"==match[7]?minute=0:(minute=parseInt(match[7]),isNaN(minute)&&(minute=constants_1.zhStringToNumber(match[7]))):hour>100&&(minute=hour%100,hour=Math.floor(hour/100)),minute>=60)return null;if(hour>24)return null;if(hour>=12&&(meridiem=1),match[9]){if(hour>12)return null;var ampm;"a"==(ampm=match[9][0].toLowerCase())&&(meridiem=0,12==hour&&(hour=0)),"p"==ampm&&(meridiem=1,12!=hour&&(hour+=12)),result.start.isCertain("meridiem")||(0==meridiem?(result.start.imply("meridiem",0),12==result.start.get("hour")&&result.start.assign("hour",0)):(result.start.imply("meridiem",1),12!=result.start.get("hour")&&result.start.assign("hour",result.start.get("hour")+12)))}else if(match[2]){var zhAMPM1;"朝"==(zhAMPM1=match[2][0])||"早"==zhAMPM1?(meridiem=0,12==hour&&(hour=0)):"晚"==zhAMPM1&&(meridiem=1,12!=hour&&(hour+=12))}else if(match[3]){var zhAMPM2;"上"==(zhAMPM2=match[3][0])||"朝"==zhAMPM2||"早"==zhAMPM2||"凌"==zhAMPM2?(meridiem=0,12==hour&&(hour=0)):"下"!=zhAMPM2&&"晏"!=zhAMPM2&&"晚"!=zhAMPM2||(meridiem=1,12!=hour&&(hour+=12))}else if(match[5]){var zhAMPM3;"上"==(zhAMPM3=match[5][0])||"朝"==zhAMPM3||"早"==zhAMPM3||"凌"==zhAMPM3?(meridiem=0,12==hour&&(hour=0)):"下"!=zhAMPM3&&"晏"!=zhAMPM3&&"晚"!=zhAMPM3||(meridiem=1,12!=hour&&(hour+=12))}if(result.text=result.text+match[0],result.end.assign("hour",hour),result.end.assign("minute",minute),meridiem>=0)result.end.assign("meridiem",meridiem);else{result.start.isCertain("meridiem")&&1==result.start.get("meridiem")&&result.start.get("hour")>hour?result.end.imply("meridiem",0):hour>12&&result.end.imply("meridiem",1)}return result.end.date().getTime()31)return match.index=match.index+match[1].length,null;const components=context.createParsingComponents({day:day,month:month});if(match[4]){const year=constants_3.parseYear(match[4]);components.assign("year",year)}else{const year=years_1.findYearClosestToRef(context.refDate,day,month);components.imply("year",year)}if(!match[2])return components;const endDate=constants_2.parseOrdinalNumberPattern(match[2]),result=context.createParsingResult(match.index,match[0]);return result.start=components,result.end=components.clone(),result.end.assign("day",endDate),result}}exports.default=NLMonthNameMiddleEndianParser},vXO7:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const AbstractMergeDateRangeRefiner_1=__importDefault(__webpack_require__("fx0C"));class ZHHansMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default{patternBetween(){return/^\s*(至|到|-|~|~|-|ー)\s*$/i}}exports.default=ZHHansMergeDateRangeRefiner},w615:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("Jvgq"),results_1=__webpack_require__("MpCh"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),PATTERN=`(?:(?:около|примерно)\\s*(?:~\\s*)?)?(${constants_1.TIME_UNITS_PATTERN})${constants_1.REGEX_PARTS.rightBoundary}`,PATTERN_WITH_PREFIX=new RegExp(`(?:в течение|в течении)\\s*${PATTERN}`,constants_1.REGEX_PARTS.flags),PATTERN_WITHOUT_PREFIX=new RegExp(PATTERN,"i");class RUTimeUnitWithinFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return constants_1.REGEX_PARTS.leftBoundary}innerPattern(context){return context.option.forwardDate?PATTERN_WITHOUT_PREFIX:PATTERN_WITH_PREFIX}innerExtract(context,match){const timeUnits=constants_1.parseTimeUnits(match[1]);return results_1.ParsingComponents.createRelativeFromReference(context.reference,timeUnits)}}exports.default=RUTimeUnitWithinFormatParser},"wI+u":function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const index_1=__webpack_require__("6EsV"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),dayjs_1=__webpack_require__("MVmo"),dayjs_2=__importDefault(__webpack_require__("Wgwc"));class PTCasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return/(?:esta\s*)?(manha|manhã|tarde|meia-noite|meio-dia|noite)(?=\W|$)/i}innerExtract(context,match){const targetDate=dayjs_2.default(context.refDate),component=context.createParsingComponents();switch(match[1].toLowerCase()){case"tarde":component.imply("meridiem",index_1.Meridiem.PM),component.imply("hour",15);break;case"noite":component.imply("meridiem",index_1.Meridiem.PM),component.imply("hour",22);break;case"manha":case"manhã":component.imply("meridiem",index_1.Meridiem.AM),component.imply("hour",6);break;case"meia-noite":dayjs_1.assignTheNextDay(component,targetDate),component.imply("hour",0),component.imply("minute",0),component.imply("second",0);break;case"meio-dia":component.imply("meridiem",index_1.Meridiem.AM),component.imply("hour",12)}return component}}exports.default=PTCasualTimeParser},xEkU:function(module,exports,__webpack_require__){(function(global){for(var now=__webpack_require__("bQgK"),root="undefined"==typeof window?global:window,vendors=["moz","webkit"],suffix="AnimationFrame",raf=root["request"+suffix],caf=root["cancel"+suffix]||root["cancelRequest"+suffix],i=0;!raf&&i12)return null;const year=parseInt(match[1]);return{day:parseInt(match[4]),month:month,year:year}}}exports.default=NLCasualYearMonthDayParser},xkid:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const constants_1=__webpack_require__("G6Ui"),pattern_1=__webpack_require__("omFw"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),weekdays_1=__webpack_require__("byqA"),PATTERN=new RegExp(`(?:(?:\\,|\\(|\\()\\s*)?(?:op\\s*?)?(?:(deze|vorige|volgende)\\s*(?:week\\s*)?)?(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})(?=\\W|$)`,"i");class NLWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const dayOfWeek=match[2].toLowerCase(),weekday=constants_1.WEEKDAY_DICTIONARY[dayOfWeek],prefix=match[1],postfix=match[3];let modifierWord=prefix||postfix;modifierWord=modifierWord||"",modifierWord=modifierWord.toLowerCase();let modifier=null;return"vorige"==modifierWord?modifier="last":"volgende"==modifierWord?modifier="next":"deze"==modifierWord&&(modifier="this"),weekdays_1.createParsingComponentsAtWeekday(context.reference,weekday,modifier)}}exports.default=NLWeekdayParser},y2Vs:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return components}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("cDcd"),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),memoize_one__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("Wwog"),emotion__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("PAeb"),react_dom__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("faye"),prop_types__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("rf6O"),prop_types__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__),raf__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("xEkU"),raf__WEBPACK_IMPORTED_MODULE_5___default=__webpack_require__.n(raf__WEBPACK_IMPORTED_MODULE_5__),react_input_autosize__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("AuWn"),react_input_autosize__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(react_input_autosize__WEBPACK_IMPORTED_MODULE_6__),react_transition_group__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("1w3K");function _typeof(obj){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _defineProperties(target,props){for(var i=0;i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}function _assertThisInitialized(self){if(void 0===self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return self}function _possibleConstructorReturn(self,call){return!call||"object"!=typeof call&&"function"!=typeof call?_assertThisInitialized(self):call}function _toConsumableArray(arr){return function _arrayWithoutHoles(arr){if(Array.isArray(arr)){for(var i=0,arr2=new Array(arr.length);i-1}function getScrollTop(el){return isDocumentElement(el)?window.pageYOffset:el.scrollTop}function scrollTo(el,top){isDocumentElement(el)?window.scrollTo(0,top):el.scrollTop=top}function animatedScrollTo(element,to){var duration=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200,callback=arguments.length>3&&void 0!==arguments[3]?arguments[3]:noop,start=getScrollTop(element),change=to-start,increment=10,currentTime=0;!function animateScroll(){var val=function easeOutCubic(t,b,c,d){return c*((t=t/d-1)*t*t+1)+b}(currentTime+=increment,start,change,duration);scrollTo(element,val),currentTime=menuHeight)return{placement:"bottom",maxHeight:maxHeight};if(scrollSpaceBelow>=menuHeight&&!isFixedPosition)return shouldScroll&&animatedScrollTo(scrollParent,scrollDown,160),{placement:"bottom",maxHeight:maxHeight};if(!isFixedPosition&&scrollSpaceBelow>=minHeight||isFixedPosition&&viewSpaceBelow>=minHeight)return shouldScroll&&animatedScrollTo(scrollParent,scrollDown,160),{placement:"bottom",maxHeight:isFixedPosition?viewSpaceBelow-marginBottom:scrollSpaceBelow-marginBottom};if("auto"===placement||isFixedPosition){var _constrainedHeight=maxHeight,spaceAbove=isFixedPosition?viewSpaceAbove:scrollSpaceAbove;return spaceAbove>=minHeight&&(_constrainedHeight=Math.min(spaceAbove-marginBottom-spacing.controlHeight,maxHeight)),{placement:"top",maxHeight:_constrainedHeight}}if("bottom"===placement)return scrollTo(scrollParent,scrollDown),{placement:"bottom",maxHeight:maxHeight};break;case"top":if(viewSpaceAbove>=menuHeight)return{placement:"top",maxHeight:maxHeight};if(scrollSpaceAbove>=menuHeight&&!isFixedPosition)return shouldScroll&&animatedScrollTo(scrollParent,scrollUp,160),{placement:"top",maxHeight:maxHeight};if(!isFixedPosition&&scrollSpaceAbove>=minHeight||isFixedPosition&&viewSpaceAbove>=minHeight){var _constrainedHeight2=maxHeight;return(!isFixedPosition&&scrollSpaceAbove>=minHeight||isFixedPosition&&viewSpaceAbove>=minHeight)&&(_constrainedHeight2=isFixedPosition?viewSpaceAbove-marginTop:scrollSpaceAbove-marginTop),shouldScroll&&animatedScrollTo(scrollParent,scrollUp,160),{placement:"top",maxHeight:_constrainedHeight2}}return{placement:"bottom",maxHeight:maxHeight};default:throw new Error('Invalid placement provided "'.concat(placement,'".'))}return defaultState}var coercePlacement=function coercePlacement(p){return"auto"===p?"bottom":p},MenuPlacer=function(_Component){function MenuPlacer(){var _getPrototypeOf2,_this;_classCallCheck(this,MenuPlacer);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return _defineProperty(_assertThisInitialized(_assertThisInitialized(_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(MenuPlacer)).call.apply(_getPrototypeOf2,[this].concat(args))))),"state",{maxHeight:_this.props.maxMenuHeight,placement:null}),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getPlacement",(function(ref){var _this$props=_this.props,minMenuHeight=_this$props.minMenuHeight,maxMenuHeight=_this$props.maxMenuHeight,menuPlacement=_this$props.menuPlacement,menuPosition=_this$props.menuPosition,menuShouldScrollIntoView=_this$props.menuShouldScrollIntoView,theme=_this$props.theme,getPortalPlacement=_this.context.getPortalPlacement;if(ref){var isFixedPosition="fixed"===menuPosition,state=getMenuPlacement({maxHeight:maxMenuHeight,menuEl:ref,minHeight:minMenuHeight,placement:menuPlacement,shouldScroll:menuShouldScrollIntoView&&!isFixedPosition,isFixedPosition:isFixedPosition,theme:theme});getPortalPlacement&&getPortalPlacement(state),_this.setState(state)}})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getUpdatedProps",(function(){var menuPlacement=_this.props.menuPlacement,placement=_this.state.placement||coercePlacement(menuPlacement);return _objectSpread({},_this.props,{placement:placement,maxHeight:_this.state.maxHeight})})),_this}return _inherits(MenuPlacer,_Component),_createClass(MenuPlacer,[{key:"render",value:function render(){return(0,this.props.children)({ref:this.getPlacement,placerProps:this.getUpdatedProps()})}}]),MenuPlacer}(react__WEBPACK_IMPORTED_MODULE_0__.Component);_defineProperty(MenuPlacer,"contextTypes",{getPortalPlacement:prop_types__WEBPACK_IMPORTED_MODULE_4___default.a.func});var noticeCSS=function noticeCSS(_ref5){var _ref5$theme=_ref5.theme,baseUnit=_ref5$theme.spacing.baseUnit;return{color:_ref5$theme.colors.neutral40,padding:"".concat(2*baseUnit,"px ").concat(3*baseUnit,"px"),textAlign:"center"}},noOptionsMessageCSS=noticeCSS,loadingMessageCSS=noticeCSS,NoOptionsMessage=function NoOptionsMessage(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("noOptionsMessage",props)),{"menu-notice":!0,"menu-notice--no-options":!0},className)},innerProps),children)};NoOptionsMessage.defaultProps={children:"No options"};var LoadingMessage=function LoadingMessage(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("loadingMessage",props)),{"menu-notice":!0,"menu-notice--loading":!0},className)},innerProps),children)};LoadingMessage.defaultProps={children:"Loading..."};var MenuPortal=function(_Component2){function MenuPortal(){var _getPrototypeOf3,_this2;_classCallCheck(this,MenuPortal);for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];return _defineProperty(_assertThisInitialized(_assertThisInitialized(_this2=_possibleConstructorReturn(this,(_getPrototypeOf3=_getPrototypeOf(MenuPortal)).call.apply(_getPrototypeOf3,[this].concat(args))))),"state",{placement:null}),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this2)),"getPortalPlacement",(function(_ref7){var placement=_ref7.placement;placement!==coercePlacement(_this2.props.menuPlacement)&&_this2.setState({placement:placement})})),_this2}return _inherits(MenuPortal,_Component2),_createClass(MenuPortal,[{key:"getChildContext",value:function getChildContext(){return{getPortalPlacement:this.getPortalPlacement}}},{key:"render",value:function render(){var _this$props2=this.props,appendTo=_this$props2.appendTo,children=_this$props2.children,controlElement=_this$props2.controlElement,menuPlacement=_this$props2.menuPlacement,position=_this$props2.menuPosition,getStyles=_this$props2.getStyles,isFixed="fixed"===position;if(!appendTo&&!isFixed||!controlElement)return null;var placement=this.state.placement||coercePlacement(menuPlacement),rect=function getBoundingClientObj(element){var rect=element.getBoundingClientRect();return{bottom:rect.bottom,height:rect.height,left:rect.left,right:rect.right,top:rect.top,width:rect.width}}(controlElement),scrollDistance=isFixed?0:window.pageYOffset,state={offset:rect[placement]+scrollDistance,position:position,rect:rect},menuWrapper=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("menuPortal",state))},children);return appendTo?Object(react_dom__WEBPACK_IMPORTED_MODULE_3__.createPortal)(menuWrapper,appendTo):menuWrapper}}]),MenuPortal}(react__WEBPACK_IMPORTED_MODULE_0__.Component);_defineProperty(MenuPortal,"childContextTypes",{getPortalPlacement:prop_types__WEBPACK_IMPORTED_MODULE_4___default.a.func});var isArray=Array.isArray,keyList=Object.keys,hasProp=Object.prototype.hasOwnProperty;function equal(a,b){if(a===b)return!0;if(a&&b&&"object"==_typeof(a)&&"object"==_typeof(b)){var i,length,key,arrA=isArray(a),arrB=isArray(b);if(arrA&&arrB){if((length=a.length)!=b.length)return!1;for(i=length;0!=i--;)if(!equal(a[i],b[i]))return!1;return!0}if(arrA!=arrB)return!1;var dateA=a instanceof Date,dateB=b instanceof Date;if(dateA!=dateB)return!1;if(dateA&&dateB)return a.getTime()==b.getTime();var regexpA=a instanceof RegExp,regexpB=b instanceof RegExp;if(regexpA!=regexpB)return!1;if(regexpA&®expB)return a.toString()==b.toString();var keys=keyList(a);if((length=keys.length)!==keyList(b).length)return!1;for(i=length;0!=i--;)if(!hasProp.call(b,keys[i]))return!1;for(i=length;0!=i--;)if(!("_owner"===(key=keys[i])&&a.$$typeof||equal(a[key],b[key])))return!1;return!0}return a!=a&&b!=b}function exportedEqual(a,b){try{return equal(a,b)}catch(error){if(error.message&&error.message.match(/stack|recursion/i))return console.warn("Warning: react-fast-compare does not handle circular references.",error.name,error.message),!1;throw error}}var diacritics=[{base:"A",letters:/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},{base:"AA",letters:/[\uA732]/g},{base:"AE",letters:/[\u00C6\u01FC\u01E2]/g},{base:"AO",letters:/[\uA734]/g},{base:"AU",letters:/[\uA736]/g},{base:"AV",letters:/[\uA738\uA73A]/g},{base:"AY",letters:/[\uA73C]/g},{base:"B",letters:/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},{base:"C",letters:/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},{base:"D",letters:/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},{base:"DZ",letters:/[\u01F1\u01C4]/g},{base:"Dz",letters:/[\u01F2\u01C5]/g},{base:"E",letters:/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},{base:"F",letters:/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},{base:"G",letters:/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},{base:"H",letters:/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},{base:"I",letters:/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},{base:"J",letters:/[\u004A\u24BF\uFF2A\u0134\u0248]/g},{base:"K",letters:/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},{base:"L",letters:/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},{base:"LJ",letters:/[\u01C7]/g},{base:"Lj",letters:/[\u01C8]/g},{base:"M",letters:/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},{base:"N",letters:/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},{base:"NJ",letters:/[\u01CA]/g},{base:"Nj",letters:/[\u01CB]/g},{base:"O",letters:/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},{base:"OI",letters:/[\u01A2]/g},{base:"OO",letters:/[\uA74E]/g},{base:"OU",letters:/[\u0222]/g},{base:"P",letters:/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},{base:"Q",letters:/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},{base:"R",letters:/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},{base:"S",letters:/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},{base:"T",letters:/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},{base:"TZ",letters:/[\uA728]/g},{base:"U",letters:/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},{base:"V",letters:/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},{base:"VY",letters:/[\uA760]/g},{base:"W",letters:/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},{base:"X",letters:/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},{base:"Y",letters:/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},{base:"Z",letters:/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}],stripDiacritics=function stripDiacritics(str){for(var i=0;i0,availableScroll=scrollHeight-clientHeight-scrollTop,shouldCancelScroll=!1;availableScroll>delta&&_this.isBottom&&(onBottomLeave&&onBottomLeave(event),_this.isBottom=!1),isDeltaPositive&&_this.isTop&&(onTopLeave&&onTopLeave(event),_this.isTop=!1),isDeltaPositive&&delta>availableScroll?(onBottomArrive&&!_this.isBottom&&onBottomArrive(event),target.scrollTop=scrollHeight,shouldCancelScroll=!0,_this.isBottom=!0):!isDeltaPositive&&-delta>scrollTop&&(onTopArrive&&!_this.isTop&&onTopArrive(event),target.scrollTop=0,shouldCancelScroll=!0,_this.isTop=!0),shouldCancelScroll&&_this.cancelScroll(event)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onWheel",(function(event){_this.handleEventDelta(event,event.deltaY)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onTouchStart",(function(event){_this.touchStart=event.changedTouches[0].clientY})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onTouchMove",(function(event){var deltaY=_this.touchStart-event.changedTouches[0].clientY;_this.handleEventDelta(event,deltaY)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getScrollTarget",(function(ref){_this.scrollTarget=ref})),_this}return _inherits(ScrollCaptor,_Component),_createClass(ScrollCaptor,[{key:"componentDidMount",value:function componentDidMount(){this.startListening(this.scrollTarget)}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.stopListening(this.scrollTarget)}},{key:"startListening",value:function startListening(el){el&&(el.scrollHeight<=el.clientHeight||("function"==typeof el.addEventListener&&el.addEventListener("wheel",this.onWheel,!1),"function"==typeof el.addEventListener&&el.addEventListener("touchstart",this.onTouchStart,!1),"function"==typeof el.addEventListener&&el.addEventListener("touchmove",this.onTouchMove,!1)))}},{key:"stopListening",value:function stopListening(el){el.scrollHeight<=el.clientHeight||("function"==typeof el.removeEventListener&&el.removeEventListener("wheel",this.onWheel,!1),"function"==typeof el.removeEventListener&&el.removeEventListener("touchstart",this.onTouchStart,!1),"function"==typeof el.removeEventListener&&el.removeEventListener("touchmove",this.onTouchMove,!1))}},{key:"render",value:function render(){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(NodeResolver,{innerRef:this.getScrollTarget},this.props.children)}}]),ScrollCaptor}(react__WEBPACK_IMPORTED_MODULE_0__.Component),ScrollCaptorSwitch=function(_Component2){function ScrollCaptorSwitch(){return _classCallCheck(this,ScrollCaptorSwitch),_possibleConstructorReturn(this,_getPrototypeOf(ScrollCaptorSwitch).apply(this,arguments))}return _inherits(ScrollCaptorSwitch,_Component2),_createClass(ScrollCaptorSwitch,[{key:"render",value:function render(){var _this$props2=this.props,isEnabled=_this$props2.isEnabled,props=_objectWithoutProperties(_this$props2,["isEnabled"]);return isEnabled?react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ScrollCaptor,props):this.props.children}}]),ScrollCaptorSwitch}(react__WEBPACK_IMPORTED_MODULE_0__.Component);_defineProperty(ScrollCaptorSwitch,"defaultProps",{isEnabled:!0});var instructionsAriaMessage=function instructionsAriaMessage(event){var context=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},isSearchable=context.isSearchable,isMulti=context.isMulti,label=context.label,isDisabled=context.isDisabled;switch(event){case"menu":return"Use Up and Down to choose options".concat(isDisabled?"":", press Enter to select the currently focused option",", press Escape to exit the menu, press Tab to select the option and exit the menu.");case"input":return"".concat(label||"Select"," is focused ").concat(isSearchable?",type to refine list":"",", press Down to open the menu, ").concat(isMulti?" press left to focus selected values":"");case"value":return"Use left and right to toggle between focused values, press Backspace to remove the currently focused value"}},valueEventAriaMessage=function valueEventAriaMessage(event,context){var value=context.value,isDisabled=context.isDisabled;if(value)switch(event){case"deselect-option":case"pop-value":case"remove-value":return"option ".concat(value,", deselected.");case"select-option":return"option ".concat(value,isDisabled?" is disabled. Select another option.":", selected.")}},isOptionDisabled=function isOptionDisabled(option){return!!option.isDisabled},ValueContainer=function(_Component){function ValueContainer(){return _classCallCheck(this,ValueContainer),_possibleConstructorReturn(this,_getPrototypeOf(ValueContainer).apply(this,arguments))}return _inherits(ValueContainer,_Component),_createClass(ValueContainer,[{key:"render",value:function render(){var _this$props=this.props,children=_this$props.children,className=_this$props.className,cx=_this$props.cx,isMulti=_this$props.isMulti,getStyles=_this$props.getStyles,hasValue=_this$props.hasValue;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("valueContainer",this.props)),{"value-container":!0,"value-container--is-multi":isMulti,"value-container--has-value":hasValue},className)},children)}}]),ValueContainer}(react__WEBPACK_IMPORTED_MODULE_0__.Component),Svg=function Svg(_ref){var size=_ref.size,props=_objectWithoutProperties(_ref,["size"]);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("svg",_extends({height:size,width:size,viewBox:"0 0 20 20","aria-hidden":"true",focusable:"false",className:Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)({display:"inline-block",fill:"currentColor",lineHeight:1,stroke:"currentColor",strokeWidth:0})},props))},CrossIcon=function CrossIcon(props){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Svg,_extends({size:20},props),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("path",{d:"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z"}))},DownChevron=function DownChevron(props){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Svg,_extends({size:20},props),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("path",{d:"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"}))},baseCSS=function baseCSS(_ref2){var isFocused=_ref2.isFocused,_ref2$theme=_ref2.theme,baseUnit=_ref2$theme.spacing.baseUnit,colors=_ref2$theme.colors;return{label:"indicatorContainer",color:isFocused?colors.neutral60:colors.neutral20,display:"flex",padding:2*baseUnit,transition:"color 150ms",":hover":{color:isFocused?colors.neutral80:colors.neutral40}}},dropdownIndicatorCSS=baseCSS,clearIndicatorCSS=baseCSS,keyframesInjected=!1,LoadingDot=function LoadingDot(_ref5){var color=_ref5.color,delay=_ref5.delay,offset=_ref5.offset;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span",{className:Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)({animationDuration:"1s",animationDelay:"".concat(delay,"ms"),animationIterationCount:"infinite",animationName:"react-select-loading-indicator",animationTimingFunction:"ease-in-out",backgroundColor:color,borderRadius:"1em",display:"inline-block",marginLeft:offset?"1em":null,height:"1em",verticalAlign:"top",width:"1em"})})},LoadingIndicator=function LoadingIndicator(props){var className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps,isFocused=props.isFocused,isRtl=props.isRtl,colors=props.theme.colors,color=isFocused?colors.neutral80:colors.neutral20;return keyframesInjected||(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.injectGlobal)("@keyframes ","react-select-loading-indicator","{0%,80%,100%{opacity:0;}40%{opacity:1;}};"),keyframesInjected=!0),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({},innerProps,{className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("loadingIndicator",props)),{indicator:!0,"loading-indicator":!0},className)}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(LoadingDot,{color:color,delay:0,offset:isRtl}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(LoadingDot,{color:color,delay:160,offset:!0}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(LoadingDot,{color:color,delay:320,offset:!isRtl}))};LoadingIndicator.defaultProps={size:4};var inputStyle=function inputStyle(isHidden){return{label:"input",background:0,border:0,fontSize:"inherit",opacity:isHidden?0:1,outline:0,padding:0,color:"inherit"}},MultiValueGeneric=function MultiValueGeneric(_ref4){var children=_ref4.children,innerProps=_ref4.innerProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",innerProps,children)},MultiValueContainer=MultiValueGeneric,MultiValueLabel=MultiValueGeneric,MultiValueRemove=function(_Component){function MultiValueRemove(){return _classCallCheck(this,MultiValueRemove),_possibleConstructorReturn(this,_getPrototypeOf(MultiValueRemove).apply(this,arguments))}return _inherits(MultiValueRemove,_Component),_createClass(MultiValueRemove,[{key:"render",value:function render(){var _this$props=this.props,children=_this$props.children,innerProps=_this$props.innerProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",innerProps,children||react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(CrossIcon,{size:14}))}}]),MultiValueRemove}(react__WEBPACK_IMPORTED_MODULE_0__.Component),MultiValue=function(_Component2){function MultiValue(){return _classCallCheck(this,MultiValue),_possibleConstructorReturn(this,_getPrototypeOf(MultiValue).apply(this,arguments))}return _inherits(MultiValue,_Component2),_createClass(MultiValue,[{key:"render",value:function render(){var _this$props2=this.props,children=_this$props2.children,className=_this$props2.className,components=_this$props2.components,cx=_this$props2.cx,data=_this$props2.data,getStyles=_this$props2.getStyles,innerProps=_this$props2.innerProps,isDisabled=_this$props2.isDisabled,removeProps=_this$props2.removeProps,selectProps=_this$props2.selectProps,Container=components.Container,Label=components.Label,Remove=components.Remove,containerInnerProps=_objectSpread({className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("multiValue",this.props)),{"multi-value":!0,"multi-value--is-disabled":isDisabled},className)},innerProps),labelInnerProps={className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("multiValueLabel",this.props)),{"multi-value__label":!0},className)},removeInnerProps=_objectSpread({className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("multiValueRemove",this.props)),{"multi-value__remove":!0},className)},removeProps);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Container,{data:data,innerProps:containerInnerProps,selectProps:selectProps},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Label,{data:data,innerProps:labelInnerProps,selectProps:selectProps},children),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Remove,{data:data,innerProps:removeInnerProps,selectProps:selectProps}))}}]),MultiValue}(react__WEBPACK_IMPORTED_MODULE_0__.Component);_defineProperty(MultiValue,"defaultProps",{cropWithEllipsis:!0});var components={ClearIndicator:function ClearIndicator(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({},innerProps,{className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("clearIndicator",props)),{indicator:!0,"clear-indicator":!0},className)}),children||react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(CrossIcon,null))},Control:function Control(props){var children=props.children,cx=props.cx,getStyles=props.getStyles,className=props.className,isDisabled=props.isDisabled,isFocused=props.isFocused,innerRef=props.innerRef,innerProps=props.innerProps,menuIsOpen=props.menuIsOpen;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({ref:innerRef,className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("control",props)),{control:!0,"control--is-disabled":isDisabled,"control--is-focused":isFocused,"control--menu-is-open":menuIsOpen},className)},innerProps),children)},DropdownIndicator:function DropdownIndicator(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({},innerProps,{className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("dropdownIndicator",props)),{indicator:!0,"dropdown-indicator":!0},className)}),children||react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(DownChevron,null))},DownChevron:DownChevron,CrossIcon:CrossIcon,Group:function Group(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,Heading=props.Heading,headingProps=props.headingProps,label=props.label,theme=props.theme,selectProps=props.selectProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("group",props)),{group:!0},className)},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Heading,_extends({},headingProps,{selectProps:selectProps,theme:theme,getStyles:getStyles,cx:cx}),label),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",null,children))},GroupHeading:function GroupHeading(props){var className=props.className,cx=props.cx,getStyles=props.getStyles,theme=props.theme,cleanProps=(props.selectProps,_objectWithoutProperties(props,["className","cx","getStyles","theme","selectProps"]));return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("groupHeading",_objectSpread({theme:theme},cleanProps))),{"group-heading":!0},className)},cleanProps))},IndicatorsContainer:function IndicatorsContainer(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("indicatorsContainer",props)),{indicators:!0},className)},children)},IndicatorSeparator:function IndicatorSeparator(props){var className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span",_extends({},innerProps,{className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("indicatorSeparator",props)),{"indicator-separator":!0},className)}))},Input:function Input(_ref2){var className=_ref2.className,cx=_ref2.cx,getStyles=_ref2.getStyles,innerRef=_ref2.innerRef,isHidden=_ref2.isHidden,isDisabled=_ref2.isDisabled,theme=_ref2.theme,props=(_ref2.selectProps,_objectWithoutProperties(_ref2,["className","cx","getStyles","innerRef","isHidden","isDisabled","theme","selectProps"]));return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("input",_objectSpread({theme:theme},props)))},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_input_autosize__WEBPACK_IMPORTED_MODULE_6___default.a,_extends({className:cx(null,{input:!0},className),inputRef:innerRef,inputStyle:inputStyle(isHidden),disabled:isDisabled},props)))},LoadingIndicator:LoadingIndicator,Menu:function Menu(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,innerRef=props.innerRef,innerProps=props.innerProps,cn=cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("menu",props)),{menu:!0},className);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({className:cn},innerProps,{ref:innerRef}),children)},MenuList:function MenuList(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,isMulti=props.isMulti,innerRef=props.innerRef;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("menuList",props)),{"menu-list":!0,"menu-list--is-multi":isMulti},className),ref:innerRef},children)},MenuPortal:MenuPortal,LoadingMessage:LoadingMessage,NoOptionsMessage:NoOptionsMessage,MultiValue:MultiValue,MultiValueContainer:MultiValueContainer,MultiValueLabel:MultiValueLabel,MultiValueRemove:MultiValueRemove,Option:function Option(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,isDisabled=props.isDisabled,isFocused=props.isFocused,isSelected=props.isSelected,innerRef=props.innerRef,innerProps=props.innerProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({ref:innerRef,className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("option",props)),{option:!0,"option--is-disabled":isDisabled,"option--is-focused":isFocused,"option--is-selected":isSelected},className)},innerProps),children)},Placeholder:function Placeholder(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("placeholder",props)),{placeholder:!0},className)},innerProps),children)},SelectContainer:function SelectContainer(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,innerProps=props.innerProps,isDisabled=props.isDisabled,isRtl=props.isRtl;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("container",props)),{"--is-disabled":isDisabled,"--is-rtl":isRtl},className)},innerProps),children)},SingleValue:function SingleValue(props){var children=props.children,className=props.className,cx=props.cx,getStyles=props.getStyles,isDisabled=props.isDisabled,innerProps=props.innerProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",_extends({className:cx(Object(emotion__WEBPACK_IMPORTED_MODULE_2__.css)(getStyles("singleValue",props)),{"single-value":!0,"single-value--is-disabled":isDisabled},className)},innerProps),children)},ValueContainer:ValueContainer},defaultComponents=function defaultComponents(props){return _objectSpread({},components,props.components)},defaultStyles={clearIndicator:clearIndicatorCSS,container:function containerCSS(_ref){var isDisabled=_ref.isDisabled;return{label:"container",direction:_ref.isRtl?"rtl":null,pointerEvents:isDisabled?"none":null,position:"relative"}},control:function css$$1(_ref){var isDisabled=_ref.isDisabled,isFocused=_ref.isFocused,_ref$theme=_ref.theme,colors=_ref$theme.colors,borderRadius=_ref$theme.borderRadius,spacing=_ref$theme.spacing;return{label:"control",alignItems:"center",backgroundColor:isDisabled?colors.neutral5:colors.neutral0,borderColor:isDisabled?colors.neutral10:isFocused?colors.primary:colors.neutral20,borderRadius:borderRadius,borderStyle:"solid",borderWidth:1,boxShadow:isFocused?"0 0 0 1px ".concat(colors.primary):null,cursor:"default",display:"flex",flexWrap:"wrap",justifyContent:"space-between",minHeight:spacing.controlHeight,outline:"0 !important",position:"relative",transition:"all 100ms","&:hover":{borderColor:isFocused?colors.primary:colors.neutral30}}},dropdownIndicator:dropdownIndicatorCSS,group:function groupCSS(_ref){var spacing=_ref.theme.spacing;return{paddingBottom:2*spacing.baseUnit,paddingTop:2*spacing.baseUnit}},groupHeading:function groupHeadingCSS(_ref2){var spacing=_ref2.theme.spacing;return{label:"group",color:"#999",cursor:"default",display:"block",fontSize:"75%",fontWeight:"500",marginBottom:"0.25em",paddingLeft:3*spacing.baseUnit,paddingRight:3*spacing.baseUnit,textTransform:"uppercase"}},indicatorsContainer:function indicatorsContainerCSS(){return{alignItems:"center",alignSelf:"stretch",display:"flex",flexShrink:0}},indicatorSeparator:function indicatorSeparatorCSS(_ref3){var isDisabled=_ref3.isDisabled,_ref3$theme=_ref3.theme,baseUnit=_ref3$theme.spacing.baseUnit,colors=_ref3$theme.colors;return{label:"indicatorSeparator",alignSelf:"stretch",backgroundColor:isDisabled?colors.neutral10:colors.neutral20,marginBottom:2*baseUnit,marginTop:2*baseUnit,width:1}},input:function inputCSS(_ref){var isDisabled=_ref.isDisabled,_ref$theme=_ref.theme,spacing=_ref$theme.spacing,colors=_ref$theme.colors;return{margin:spacing.baseUnit/2,paddingBottom:spacing.baseUnit/2,paddingTop:spacing.baseUnit/2,visibility:isDisabled?"hidden":"visible",color:colors.neutral80}},loadingIndicator:function loadingIndicatorCSS(_ref4){var isFocused=_ref4.isFocused,size=_ref4.size,_ref4$theme=_ref4.theme,colors=_ref4$theme.colors,baseUnit=_ref4$theme.spacing.baseUnit;return{label:"loadingIndicator",color:isFocused?colors.neutral60:colors.neutral20,display:"flex",padding:2*baseUnit,transition:"color 150ms",alignSelf:"center",fontSize:size,lineHeight:1,marginRight:size,textAlign:"center",verticalAlign:"middle"}},loadingMessage:loadingMessageCSS,menu:function menuCSS(_ref2){var _ref3,placement=_ref2.placement,_ref2$theme=_ref2.theme,borderRadius=_ref2$theme.borderRadius,spacing=_ref2$theme.spacing,colors=_ref2$theme.colors;return _defineProperty(_ref3={label:"menu"},function alignToControl(placement){return placement?{bottom:"top",top:"bottom"}[placement]:"bottom"}(placement),"100%"),_defineProperty(_ref3,"backgroundColor",colors.neutral0),_defineProperty(_ref3,"borderRadius",borderRadius),_defineProperty(_ref3,"boxShadow","0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)"),_defineProperty(_ref3,"marginBottom",spacing.menuGutter),_defineProperty(_ref3,"marginTop",spacing.menuGutter),_defineProperty(_ref3,"position","absolute"),_defineProperty(_ref3,"width","100%"),_defineProperty(_ref3,"zIndex",1),_ref3},menuList:function menuListCSS(_ref4){var maxHeight=_ref4.maxHeight,baseUnit=_ref4.theme.spacing.baseUnit;return{maxHeight:maxHeight,overflowY:"auto",paddingBottom:baseUnit,paddingTop:baseUnit,position:"relative",WebkitOverflowScrolling:"touch"}},menuPortal:function menuPortalCSS(_ref6){var rect=_ref6.rect,offset=_ref6.offset,position=_ref6.position;return{left:rect.left,position:position,top:offset,width:rect.width,zIndex:1}},multiValue:function multiValueCSS(_ref){var _ref$theme=_ref.theme,spacing=_ref$theme.spacing,borderRadius=_ref$theme.borderRadius;return{label:"multiValue",backgroundColor:_ref$theme.colors.neutral10,borderRadius:borderRadius/2,display:"flex",margin:spacing.baseUnit/2,minWidth:0}},multiValueLabel:function multiValueLabelCSS(_ref2){var _ref2$theme=_ref2.theme,borderRadius=_ref2$theme.borderRadius,colors=_ref2$theme.colors,cropWithEllipsis=_ref2.cropWithEllipsis;return{borderRadius:borderRadius/2,color:colors.neutral80,fontSize:"85%",overflow:"hidden",padding:3,paddingLeft:6,textOverflow:cropWithEllipsis?"ellipsis":null,whiteSpace:"nowrap"}},multiValueRemove:function multiValueRemoveCSS(_ref3){var _ref3$theme=_ref3.theme,spacing=_ref3$theme.spacing,borderRadius=_ref3$theme.borderRadius,colors=_ref3$theme.colors;return{alignItems:"center",borderRadius:borderRadius/2,backgroundColor:_ref3.isFocused&&colors.dangerLight,display:"flex",paddingLeft:spacing.baseUnit,paddingRight:spacing.baseUnit,":hover":{backgroundColor:colors.dangerLight,color:colors.danger}}},noOptionsMessage:noOptionsMessageCSS,option:function optionCSS(_ref){var isDisabled=_ref.isDisabled,isFocused=_ref.isFocused,isSelected=_ref.isSelected,_ref$theme=_ref.theme,spacing=_ref$theme.spacing,colors=_ref$theme.colors;return{label:"option",backgroundColor:isSelected?colors.primary:isFocused?colors.primary25:"transparent",color:isDisabled?colors.neutral20:isSelected?colors.neutral0:"inherit",cursor:"default",display:"block",fontSize:"inherit",padding:"".concat(2*spacing.baseUnit,"px ").concat(3*spacing.baseUnit,"px"),width:"100%",userSelect:"none",WebkitTapHighlightColor:"rgba(0, 0, 0, 0)",":active":{backgroundColor:!isDisabled&&(isSelected?colors.primary:colors.primary50)}}},placeholder:function placeholderCSS(_ref){var _ref$theme=_ref.theme,spacing=_ref$theme.spacing;return{label:"placeholder",color:_ref$theme.colors.neutral50,marginLeft:spacing.baseUnit/2,marginRight:spacing.baseUnit/2,position:"absolute",top:"50%",transform:"translateY(-50%)"}},singleValue:function css$$1(_ref){var isDisabled=_ref.isDisabled,_ref$theme=_ref.theme,spacing=_ref$theme.spacing,colors=_ref$theme.colors;return{label:"singleValue",color:isDisabled?colors.neutral40:colors.neutral80,marginLeft:spacing.baseUnit/2,marginRight:spacing.baseUnit/2,maxWidth:"calc(100% - ".concat(2*spacing.baseUnit,"px)"),overflow:"hidden",position:"absolute",textOverflow:"ellipsis",whiteSpace:"nowrap",top:"50%",transform:"translateY(-50%)"}},valueContainer:function valueContainerCSS(_ref2){var spacing=_ref2.theme.spacing;return{alignItems:"center",display:"flex",flex:1,flexWrap:"wrap",padding:"".concat(spacing.baseUnit/2,"px ").concat(2*spacing.baseUnit,"px"),WebkitOverflowScrolling:"touch",position:"relative",overflow:"hidden"}}};var defaultTheme={borderRadius:4,colors:{primary:"#2684FF",primary75:"#4C9AFF",primary50:"#B2D4FF",primary25:"#DEEBFF",danger:"#DE350B",dangerLight:"#FFBDAD",neutral0:"hsl(0, 0%, 100%)",neutral5:"hsl(0, 0%, 95%)",neutral10:"hsl(0, 0%, 90%)",neutral20:"hsl(0, 0%, 80%)",neutral30:"hsl(0, 0%, 70%)",neutral40:"hsl(0, 0%, 60%)",neutral50:"hsl(0, 0%, 50%)",neutral60:"hsl(0, 0%, 40%)",neutral70:"hsl(0, 0%, 30%)",neutral80:"hsl(0, 0%, 20%)",neutral90:"hsl(0, 0%, 10%)"},spacing:{baseUnit:4,controlHeight:38,menuGutter:8}},defaultProps={backspaceRemovesValue:!0,blurInputOnSelect:isTouchCapable(),captureMenuScroll:!isTouchCapable(),closeMenuOnSelect:!0,closeMenuOnScroll:!1,components:{},controlShouldRenderValue:!0,escapeClearsValue:!1,filterOption:function createFilter(config){return function(option,rawInput){var _ignoreCase$ignoreAcc=_objectSpread({ignoreCase:!0,ignoreAccents:!0,stringify:defaultStringify,trim:!0,matchFrom:"any"},config),ignoreCase=_ignoreCase$ignoreAcc.ignoreCase,ignoreAccents=_ignoreCase$ignoreAcc.ignoreAccents,stringify=_ignoreCase$ignoreAcc.stringify,trim=_ignoreCase$ignoreAcc.trim,matchFrom=_ignoreCase$ignoreAcc.matchFrom,input=trim?trimString(rawInput):rawInput,candidate=trim?trimString(stringify(option)):stringify(option);return ignoreCase&&(input=input.toLowerCase(),candidate=candidate.toLowerCase()),ignoreAccents&&(input=stripDiacritics(input),candidate=stripDiacritics(candidate)),"start"===matchFrom?candidate.substr(0,input.length)===input:candidate.indexOf(input)>-1}}(),formatGroupLabel:function formatGroupLabel(group){return group.label},getOptionLabel:function getOptionLabel(option){return option.label},getOptionValue:function getOptionValue(option){return option.value},isDisabled:!1,isLoading:!1,isMulti:!1,isRtl:!1,isSearchable:!0,isOptionDisabled:isOptionDisabled,loadingMessage:function loadingMessage(){return"Loading..."},maxMenuHeight:300,minMenuHeight:140,menuIsOpen:!1,menuPlacement:"bottom",menuPosition:"absolute",menuShouldBlockScroll:!1,menuShouldScrollIntoView:!function isMobileDevice(){try{return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}catch(e){return!1}}(),noOptionsMessage:function noOptionsMessage(){return"No options"},openMenuOnFocus:!1,openMenuOnClick:!0,options:[],pageSize:5,placeholder:"Select...",screenReaderStatus:function screenReaderStatus(_ref){var count=_ref.count;return"".concat(count," result").concat(1!==count?"s":""," available")},styles:{},tabIndex:"0",tabSelectsValue:!0},instanceId=1,Select=function(_Component){function Select(_props){var _this;_classCallCheck(this,Select),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this=_possibleConstructorReturn(this,_getPrototypeOf(Select).call(this,_props)))),"state",{ariaLiveSelection:"",ariaLiveContext:"",focusedOption:null,focusedValue:null,inputIsHidden:!1,isFocused:!1,menuOptions:{render:[],focusable:[]},selectValue:[]}),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"blockOptionHover",!1),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"isComposing",!1),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"clearFocusValueOnUpdate",!1),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"commonProps",void 0),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"components",void 0),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"hasGroups",!1),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"initialTouchX",0),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"initialTouchY",0),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"inputIsHiddenAfterUpdate",void 0),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"instancePrefix",""),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"openAfterFocus",!1),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"scrollToFocusedOptionOnUpdate",!1),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"userIsDragging",void 0),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"controlRef",null),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getControlRef",(function(ref){_this.controlRef=ref})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"focusedOptionRef",null),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getFocusedOptionRef",(function(ref){_this.focusedOptionRef=ref})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"menuListRef",null),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getMenuListRef",(function(ref){_this.menuListRef=ref})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"inputRef",null),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getInputRef",(function(ref){_this.inputRef=ref})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"cacheComponents",(function(components$$1){_this.components=defaultComponents({components:components$$1})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"focus",_this.focusInput),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"blur",_this.blurInput),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onChange",(function(newValue,actionMeta){var _this$props=_this.props;(0,_this$props.onChange)(newValue,_objectSpread({},actionMeta,{name:_this$props.name}))})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"setValue",(function(newValue){var action=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"set-value",option=arguments.length>2?arguments[2]:void 0,_this$props2=_this.props,closeMenuOnSelect=_this$props2.closeMenuOnSelect,isMulti=_this$props2.isMulti;_this.onInputChange("",{action:"set-value"}),closeMenuOnSelect&&(_this.inputIsHiddenAfterUpdate=!isMulti,_this.onMenuClose()),_this.clearFocusValueOnUpdate=!0,_this.onChange(newValue,{action:action,option:option})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"selectOption",(function(newValue){var _this$props3=_this.props,blurInputOnSelect=_this$props3.blurInputOnSelect,isMulti=_this$props3.isMulti,selectValue=_this.state.selectValue;if(isMulti)if(_this.isOptionSelected(newValue,selectValue)){var candidate=_this.getOptionValue(newValue);_this.setValue(selectValue.filter((function(i){return _this.getOptionValue(i)!==candidate})),"deselect-option",newValue),_this.announceAriaLiveSelection({event:"deselect-option",context:{value:_this.getOptionLabel(newValue)}})}else _this.isOptionDisabled(newValue,selectValue)?_this.announceAriaLiveSelection({event:"select-option",context:{value:_this.getOptionLabel(newValue),isDisabled:!0}}):(_this.setValue([].concat(_toConsumableArray(selectValue),[newValue]),"select-option",newValue),_this.announceAriaLiveSelection({event:"select-option",context:{value:_this.getOptionLabel(newValue)}}));else _this.isOptionDisabled(newValue,selectValue)?_this.announceAriaLiveSelection({event:"select-option",context:{value:_this.getOptionLabel(newValue),isDisabled:!0}}):(_this.setValue(newValue,"select-option"),_this.announceAriaLiveSelection({event:"select-option",context:{value:_this.getOptionLabel(newValue)}}));blurInputOnSelect&&_this.blurInput()})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"removeValue",(function(removedValue){var selectValue=_this.state.selectValue,candidate=_this.getOptionValue(removedValue);_this.onChange(selectValue.filter((function(i){return _this.getOptionValue(i)!==candidate})),{action:"remove-value",removedValue:removedValue}),_this.announceAriaLiveSelection({event:"remove-value",context:{value:removedValue?_this.getOptionLabel(removedValue):""}}),_this.focusInput()})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"clearValue",(function(){var isMulti=_this.props.isMulti;_this.onChange(isMulti?[]:null,{action:"clear"})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"popValue",(function(){var selectValue=_this.state.selectValue,lastSelectedValue=selectValue[selectValue.length-1];_this.announceAriaLiveSelection({event:"pop-value",context:{value:lastSelectedValue?_this.getOptionLabel(lastSelectedValue):""}}),_this.onChange(selectValue.slice(0,selectValue.length-1),{action:"pop-value",removedValue:lastSelectedValue})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getOptionLabel",(function(data){return _this.props.getOptionLabel(data)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getOptionValue",(function(data){return _this.props.getOptionValue(data)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getStyles",(function(key,props){var base=defaultStyles[key](props);base.boxSizing="border-box";var custom=_this.props.styles[key];return custom?custom(base,props):base})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getElementId",(function(element){return"".concat(_this.instancePrefix,"-").concat(element)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getActiveDescendentId",(function(){var menuIsOpen=_this.props.menuIsOpen,_this$state=_this.state,menuOptions=_this$state.menuOptions,focusedOption=_this$state.focusedOption;if(focusedOption&&menuIsOpen){var index=menuOptions.focusable.indexOf(focusedOption),option=menuOptions.render[index];return option&&option.key}})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"announceAriaLiveSelection",(function(_ref2){var event=_ref2.event,context=_ref2.context;_this.setState({ariaLiveSelection:valueEventAriaMessage(event,context)})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"announceAriaLiveContext",(function(_ref3){var event=_ref3.event,context=_ref3.context;_this.setState({ariaLiveContext:instructionsAriaMessage(event,_objectSpread({},context,{label:_this.props["aria-label"]}))})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onMenuMouseDown",(function(event){0===event.button&&(event.stopPropagation(),event.preventDefault(),_this.focusInput())})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onMenuMouseMove",(function(event){_this.blockOptionHover=!1})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onControlMouseDown",(function(event){var openMenuOnClick=_this.props.openMenuOnClick;_this.state.isFocused?_this.props.menuIsOpen?"INPUT"!==event.target.tagName&&_this.onMenuClose():openMenuOnClick&&_this.openMenu("first"):(openMenuOnClick&&(_this.openAfterFocus=!0),_this.focusInput()),"INPUT"!==event.target.tagName&&event.preventDefault()})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onDropdownIndicatorMouseDown",(function(event){if(!(event&&"mousedown"===event.type&&0!==event.button||_this.props.isDisabled)){var _this$props4=_this.props,isMulti=_this$props4.isMulti,menuIsOpen=_this$props4.menuIsOpen;_this.focusInput(),menuIsOpen?(_this.inputIsHiddenAfterUpdate=!isMulti,_this.onMenuClose()):_this.openMenu("first"),event.preventDefault(),event.stopPropagation()}})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onClearIndicatorMouseDown",(function(event){event&&"mousedown"===event.type&&0!==event.button||(_this.clearValue(),event.stopPropagation(),_this.openAfterFocus=!1,setTimeout((function(){return _this.focusInput()})))})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onScroll",(function(event){"boolean"==typeof _this.props.closeMenuOnScroll?event.target instanceof HTMLElement&&isDocumentElement(event.target)&&_this.props.onMenuClose():"function"==typeof _this.props.closeMenuOnScroll&&_this.props.closeMenuOnScroll(event)&&_this.props.onMenuClose()})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onCompositionStart",(function(){_this.isComposing=!0})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onCompositionEnd",(function(){_this.isComposing=!1})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onTouchStart",(function(_ref4){var touch=_ref4.touches.item(0);touch&&(_this.initialTouchX=touch.clientX,_this.initialTouchY=touch.clientY,_this.userIsDragging=!1)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onTouchMove",(function(_ref5){var touch=_ref5.touches.item(0);if(touch){var deltaX=Math.abs(touch.clientX-_this.initialTouchX),deltaY=Math.abs(touch.clientY-_this.initialTouchY);_this.userIsDragging=deltaX>5||deltaY>5}})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onTouchEnd",(function(event){_this.userIsDragging||(_this.controlRef&&!_this.controlRef.contains(event.target)&&_this.menuListRef&&!_this.menuListRef.contains(event.target)&&_this.blurInput(),_this.initialTouchX=0,_this.initialTouchY=0)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onControlTouchEnd",(function(event){_this.userIsDragging||_this.onControlMouseDown(event)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onClearIndicatorTouchEnd",(function(event){_this.userIsDragging||_this.onClearIndicatorMouseDown(event)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onDropdownIndicatorTouchEnd",(function(event){_this.userIsDragging||_this.onDropdownIndicatorMouseDown(event)})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"handleInputChange",(function(event){var inputValue=event.currentTarget.value;_this.inputIsHiddenAfterUpdate=!1,_this.onInputChange(inputValue,{action:"input-change"}),_this.onMenuOpen()})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onInputFocus",(function(event){var _this$props5=_this.props,isSearchable=_this$props5.isSearchable,isMulti=_this$props5.isMulti;_this.props.onFocus&&_this.props.onFocus(event),_this.inputIsHiddenAfterUpdate=!1,_this.announceAriaLiveContext({event:"input",context:{isSearchable:isSearchable,isMulti:isMulti}}),_this.setState({isFocused:!0}),(_this.openAfterFocus||_this.props.openMenuOnFocus)&&_this.openMenu("first"),_this.openAfterFocus=!1})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onInputBlur",(function(event){_this.menuListRef&&_this.menuListRef.contains(document.activeElement)?_this.inputRef.focus():(_this.props.onBlur&&_this.props.onBlur(event),_this.onInputChange("",{action:"input-blur"}),_this.onMenuClose(),_this.setState({focusedValue:null,isFocused:!1}))})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onOptionHover",(function(focusedOption){_this.blockOptionHover||_this.state.focusedOption===focusedOption||_this.setState({focusedOption:focusedOption})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"shouldHideSelectedOptions",(function(){var _this$props6=_this.props,hideSelectedOptions=_this$props6.hideSelectedOptions,isMulti=_this$props6.isMulti;return void 0===hideSelectedOptions?isMulti:hideSelectedOptions})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onKeyDown",(function(event){var _this$props7=_this.props,isMulti=_this$props7.isMulti,backspaceRemovesValue=_this$props7.backspaceRemovesValue,escapeClearsValue=_this$props7.escapeClearsValue,inputValue=_this$props7.inputValue,isClearable=_this$props7.isClearable,isDisabled=_this$props7.isDisabled,menuIsOpen=_this$props7.menuIsOpen,onKeyDown=_this$props7.onKeyDown,tabSelectsValue=_this$props7.tabSelectsValue,openMenuOnFocus=_this$props7.openMenuOnFocus,_this$state2=_this.state,focusedOption=_this$state2.focusedOption,focusedValue=_this$state2.focusedValue,selectValue=_this$state2.selectValue;if(!(isDisabled||"function"==typeof onKeyDown&&(onKeyDown(event),event.defaultPrevented))){switch(_this.blockOptionHover=!0,event.key){case"ArrowLeft":if(!isMulti||inputValue)return;_this.focusValue("previous");break;case"ArrowRight":if(!isMulti||inputValue)return;_this.focusValue("next");break;case"Delete":case"Backspace":if(inputValue)return;if(focusedValue)_this.removeValue(focusedValue);else{if(!backspaceRemovesValue)return;isMulti?_this.popValue():isClearable&&_this.clearValue()}break;case"Tab":if(_this.isComposing)return;if(event.shiftKey||!menuIsOpen||!tabSelectsValue||!focusedOption||openMenuOnFocus&&_this.isOptionSelected(focusedOption,selectValue))return;_this.selectOption(focusedOption);break;case"Enter":if(229===event.keyCode)break;if(menuIsOpen){if(!focusedOption)return;if(_this.isComposing)return;_this.selectOption(focusedOption);break}return;case"Escape":menuIsOpen?(_this.inputIsHiddenAfterUpdate=!1,_this.onInputChange("",{action:"menu-close"}),_this.onMenuClose()):isClearable&&escapeClearsValue&&_this.clearValue();break;case" ":if(inputValue)return;if(!menuIsOpen){_this.openMenu("first");break}if(!focusedOption)return;_this.selectOption(focusedOption);break;case"ArrowUp":menuIsOpen?_this.focusOption("up"):_this.openMenu("last");break;case"ArrowDown":menuIsOpen?_this.focusOption("down"):_this.openMenu("first");break;case"PageUp":if(!menuIsOpen)return;_this.focusOption("pageup");break;case"PageDown":if(!menuIsOpen)return;_this.focusOption("pagedown");break;case"Home":if(!menuIsOpen)return;_this.focusOption("first");break;case"End":if(!menuIsOpen)return;_this.focusOption("last");break;default:return}event.preventDefault()}}));var value=_props.value;_this.cacheComponents=Object(memoize_one__WEBPACK_IMPORTED_MODULE_1__.default)(_this.cacheComponents,exportedEqual).bind(_assertThisInitialized(_assertThisInitialized(_this))),_this.cacheComponents(_props.components),_this.instancePrefix="react-select-"+(_this.props.instanceId||++instanceId);var _selectValue=cleanValue(value),_menuOptions=_this.buildMenuOptions(_props,_selectValue);return _this.state.menuOptions=_menuOptions,_this.state.selectValue=_selectValue,_this}return _inherits(Select,_Component),_createClass(Select,[{key:"componentDidMount",value:function componentDidMount(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput()}},{key:"componentWillReceiveProps",value:function componentWillReceiveProps(nextProps){var _this$props8=this.props,options=_this$props8.options,value=_this$props8.value,inputValue=_this$props8.inputValue;if(this.cacheComponents(nextProps.components),nextProps.value!==value||nextProps.options!==options||nextProps.inputValue!==inputValue){var selectValue=cleanValue(nextProps.value),menuOptions=this.buildMenuOptions(nextProps,selectValue),focusedValue=this.getNextFocusedValue(selectValue),focusedOption=this.getNextFocusedOption(menuOptions.focusable);this.setState({menuOptions:menuOptions,selectValue:selectValue,focusedOption:focusedOption,focusedValue:focusedValue})}null!=this.inputIsHiddenAfterUpdate&&(this.setState({inputIsHidden:this.inputIsHiddenAfterUpdate}),delete this.inputIsHiddenAfterUpdate)}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){var _this$props9=this.props,isDisabled=_this$props9.isDisabled,menuIsOpen=_this$props9.menuIsOpen,isFocused=this.state.isFocused;(isFocused&&!isDisabled&&prevProps.isDisabled||isFocused&&menuIsOpen&&!prevProps.menuIsOpen)&&this.focusInput(),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&function scrollIntoView(menuEl,focusedEl){var menuRect=menuEl.getBoundingClientRect(),focusedRect=focusedEl.getBoundingClientRect(),overScroll=focusedEl.offsetHeight/3;focusedRect.bottom+overScroll>menuRect.bottom?scrollTo(menuEl,Math.min(focusedEl.offsetTop+focusedEl.clientHeight-menuEl.offsetHeight+overScroll,menuEl.scrollHeight)):focusedRect.top-overScroll-1&&(openAtIndex=selectedIndex)}this.scrollToFocusedOptionOnUpdate=!(isFocused&&this.menuListRef),this.inputIsHiddenAfterUpdate=!1,this.onMenuOpen(),this.setState({focusedValue:null,focusedOption:menuOptions.focusable[openAtIndex]}),this.announceAriaLiveContext({event:"menu"})}},{key:"focusValue",value:function focusValue(direction){var _this$props11=this.props,isMulti=_this$props11.isMulti,isSearchable=_this$props11.isSearchable,_this$state4=this.state,selectValue=_this$state4.selectValue,focusedValue=_this$state4.focusedValue;if(isMulti){this.setState({focusedOption:null});var focusedIndex=selectValue.indexOf(focusedValue);focusedValue||(focusedIndex=-1,this.announceAriaLiveContext({event:"value"}));var lastIndex=selectValue.length-1,nextFocus=-1;if(selectValue.length){switch(direction){case"previous":nextFocus=0===focusedIndex?0:-1===focusedIndex?lastIndex:focusedIndex-1;break;case"next":focusedIndex>-1&&focusedIndex0&&void 0!==arguments[0]?arguments[0]:"first",pageSize=this.props.pageSize,_this$state5=this.state,focusedOption=_this$state5.focusedOption,options=_this$state5.menuOptions.focusable;if(options.length){var nextFocus=0,focusedIndex=options.indexOf(focusedOption);focusedOption||(focusedIndex=-1,this.announceAriaLiveContext({event:"menu"})),"up"===direction?nextFocus=focusedIndex>0?focusedIndex-1:options.length-1:"down"===direction?nextFocus=(focusedIndex+1)%options.length:"pageup"===direction?(nextFocus=focusedIndex-pageSize)<0&&(nextFocus=0):"pagedown"===direction?(nextFocus=focusedIndex+pageSize)>options.length-1&&(nextFocus=options.length-1):"last"===direction&&(nextFocus=options.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:options[nextFocus],focusedValue:null}),this.announceAriaLiveContext({event:"menu",context:{isDisabled:isOptionDisabled(options[nextFocus])}})}}},{key:"getTheme",value:function getTheme(){return this.props.theme?"function"==typeof this.props.theme?this.props.theme(defaultTheme):_objectSpread({},defaultTheme,this.props.theme):defaultTheme}},{key:"getCommonProps",value:function getCommonProps(){var clearValue=this.clearValue,getStyles=this.getStyles,setValue=this.setValue,selectOption=this.selectOption,props=this.props,classNamePrefix=props.classNamePrefix,isMulti=props.isMulti,isRtl=props.isRtl,options=props.options,selectValue=this.state.selectValue,hasValue=this.hasValue();return{cx:classNames.bind(null,classNamePrefix),clearValue:clearValue,getStyles:getStyles,getValue:function getValue(){return selectValue},hasValue:hasValue,isMulti:isMulti,isRtl:isRtl,options:options,selectOption:selectOption,setValue:setValue,selectProps:props,theme:this.getTheme()}}},{key:"getNextFocusedValue",value:function getNextFocusedValue(nextSelectValue){if(this.clearFocusValueOnUpdate)return this.clearFocusValueOnUpdate=!1,null;var _this$state6=this.state,focusedValue=_this$state6.focusedValue,lastFocusedIndex=_this$state6.selectValue.indexOf(focusedValue);if(lastFocusedIndex>-1){if(nextSelectValue.indexOf(focusedValue)>-1)return focusedValue;if(lastFocusedIndex-1?lastFocusedOption:options[0]}},{key:"hasValue",value:function hasValue(){return this.state.selectValue.length>0}},{key:"hasOptions",value:function hasOptions(){return!!this.state.menuOptions.render.length}},{key:"countOptions",value:function countOptions(){return this.state.menuOptions.focusable.length}},{key:"isClearable",value:function isClearable(){var _this$props12=this.props,isClearable=_this$props12.isClearable,isMulti=_this$props12.isMulti;return void 0===isClearable?isMulti:isClearable}},{key:"isOptionDisabled",value:function isOptionDisabled$$1(option,selectValue){return"function"==typeof this.props.isOptionDisabled&&this.props.isOptionDisabled(option,selectValue)}},{key:"isOptionSelected",value:function isOptionSelected(option,selectValue){var _this2=this;if(selectValue.indexOf(option)>-1)return!0;if("function"==typeof this.props.isOptionSelected)return this.props.isOptionSelected(option,selectValue);var candidate=this.getOptionValue(option);return selectValue.some((function(i){return _this2.getOptionValue(i)===candidate}))}},{key:"filterOption",value:function filterOption(option,inputValue){return!this.props.filterOption||this.props.filterOption(option,inputValue)}},{key:"formatOptionLabel",value:function formatOptionLabel(data,context){if("function"==typeof this.props.formatOptionLabel){var inputValue=this.props.inputValue,selectValue=this.state.selectValue;return this.props.formatOptionLabel(data,{context:context,inputValue:inputValue,selectValue:selectValue})}return this.getOptionLabel(data)}},{key:"formatGroupLabel",value:function formatGroupLabel$$1(data){return this.props.formatGroupLabel(data)}},{key:"startListeningComposition",value:function startListeningComposition(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))}},{key:"stopListeningComposition",value:function stopListeningComposition(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))}},{key:"startListeningToTouch",value:function startListeningToTouch(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))}},{key:"stopListeningToTouch",value:function stopListeningToTouch(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))}},{key:"buildMenuOptions",value:function buildMenuOptions(props,selectValue){var _this3=this,_props$inputValue=props.inputValue,inputValue=void 0===_props$inputValue?"":_props$inputValue,options=props.options,toOption=function toOption(option,id){var isDisabled=_this3.isOptionDisabled(option,selectValue),isSelected=_this3.isOptionSelected(option,selectValue),label=_this3.getOptionLabel(option),value=_this3.getOptionValue(option);if(!(_this3.shouldHideSelectedOptions()&&isSelected||!_this3.filterOption({label:label,value:value,data:option},inputValue))){var onHover=isDisabled?void 0:function(){return _this3.onOptionHover(option)},onSelect=isDisabled?void 0:function(){return _this3.selectOption(option)},optionId="".concat(_this3.getElementId("option"),"-").concat(id);return{innerProps:{id:optionId,onClick:onSelect,onMouseMove:onHover,onMouseOver:onHover,tabIndex:-1},data:option,isDisabled:isDisabled,isSelected:isSelected,key:optionId,label:label,type:"option",value:value}}};return options.reduce((function(acc,item,itemIndex){if(item.options){_this3.hasGroups||(_this3.hasGroups=!0);var children=item.options.map((function(child,i){var option=toOption(child,"".concat(itemIndex,"-").concat(i));return option&&acc.focusable.push(child),option})).filter(Boolean);if(children.length){var groupId="".concat(_this3.getElementId("group"),"-").concat(itemIndex);acc.render.push({type:"group",key:groupId,data:item,options:children})}}else{var option=toOption(item,"".concat(itemIndex));option&&(acc.render.push(option),acc.focusable.push(item))}return acc}),{render:[],focusable:[]})}},{key:"constructAriaLiveMessage",value:function constructAriaLiveMessage(){var _this$state7=this.state,ariaLiveContext=_this$state7.ariaLiveContext,selectValue=_this$state7.selectValue,focusedValue=_this$state7.focusedValue,focusedOption=_this$state7.focusedOption,_this$props13=this.props,options=_this$props13.options,menuIsOpen=_this$props13.menuIsOpen,inputValue=_this$props13.inputValue,screenReaderStatus=_this$props13.screenReaderStatus,focusedValueMsg=focusedValue?function valueFocusAriaMessage(_ref){var focusedValue=_ref.focusedValue,getOptionLabel=_ref.getOptionLabel,selectValue=_ref.selectValue;return"value ".concat(getOptionLabel(focusedValue)," focused, ").concat(selectValue.indexOf(focusedValue)+1," of ").concat(selectValue.length,".")}({focusedValue:focusedValue,getOptionLabel:this.getOptionLabel,selectValue:selectValue}):"",focusedOptionMsg=focusedOption&&menuIsOpen?function optionFocusAriaMessage(_ref2){var focusedOption=_ref2.focusedOption,getOptionLabel=_ref2.getOptionLabel,options=_ref2.options;return"option ".concat(getOptionLabel(focusedOption)," focused").concat(focusedOption.isDisabled?" disabled":"",", ").concat(options.indexOf(focusedOption)+1," of ").concat(options.length,".")}({focusedOption:focusedOption,getOptionLabel:this.getOptionLabel,options:options}):"",resultsMsg=function resultsAriaMessage(_ref3){var inputValue=_ref3.inputValue,screenReaderMessage=_ref3.screenReaderMessage;return"".concat(screenReaderMessage).concat(inputValue?" for search term "+inputValue:"",".")}({inputValue:inputValue,screenReaderMessage:screenReaderStatus({count:this.countOptions()})});return"".concat(focusedValueMsg," ").concat(focusedOptionMsg," ").concat(resultsMsg," ").concat(ariaLiveContext)}},{key:"renderInput",value:function renderInput(){var _this$props14=this.props,isDisabled=_this$props14.isDisabled,isSearchable=_this$props14.isSearchable,inputId=_this$props14.inputId,inputValue=_this$props14.inputValue,tabIndex=_this$props14.tabIndex,Input=this.components.Input,inputIsHidden=this.state.inputIsHidden,id=inputId||this.getElementId("input");if(!isSearchable)return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(DummyInput,{id:id,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:noop,onFocus:this.onInputFocus,readOnly:!0,disabled:isDisabled,tabIndex:tabIndex,value:""});var ariaAttributes={"aria-autocomplete":"list","aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"]},_this$commonProps=this.commonProps,cx=_this$commonProps.cx,theme=_this$commonProps.theme,selectProps=_this$commonProps.selectProps;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Input,_extends({autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",cx:cx,getStyles:this.getStyles,id:id,innerRef:this.getInputRef,isDisabled:isDisabled,isHidden:inputIsHidden,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,selectProps:selectProps,spellCheck:"false",tabIndex:tabIndex,theme:theme,type:"text",value:inputValue},ariaAttributes))}},{key:"renderPlaceholderOrValue",value:function renderPlaceholderOrValue(){var _this4=this,_this$components=this.components,MultiValue=_this$components.MultiValue,MultiValueContainer=_this$components.MultiValueContainer,MultiValueLabel=_this$components.MultiValueLabel,MultiValueRemove=_this$components.MultiValueRemove,SingleValue=_this$components.SingleValue,Placeholder=_this$components.Placeholder,commonProps=this.commonProps,_this$props15=this.props,controlShouldRenderValue=_this$props15.controlShouldRenderValue,isDisabled=_this$props15.isDisabled,isMulti=_this$props15.isMulti,inputValue=_this$props15.inputValue,placeholder=_this$props15.placeholder,_this$state8=this.state,selectValue=_this$state8.selectValue,focusedValue=_this$state8.focusedValue,isFocused=_this$state8.isFocused;if(!this.hasValue()||!controlShouldRenderValue)return inputValue?null:react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Placeholder,_extends({},commonProps,{key:"placeholder",isDisabled:isDisabled,isFocused:isFocused}),placeholder);if(isMulti)return selectValue.map((function(opt){var isOptionFocused=opt===focusedValue;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(MultiValue,_extends({},commonProps,{components:{Container:MultiValueContainer,Label:MultiValueLabel,Remove:MultiValueRemove},isFocused:isOptionFocused,isDisabled:isDisabled,key:_this4.getOptionValue(opt),removeProps:{onClick:function onClick(){return _this4.removeValue(opt)},onTouchEnd:function onTouchEnd(){return _this4.removeValue(opt)},onMouseDown:function onMouseDown(e){e.preventDefault(),e.stopPropagation()}},data:opt}),_this4.formatOptionLabel(opt,"value"))}));if(inputValue)return null;var singleValue=selectValue[0];return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SingleValue,_extends({},commonProps,{data:singleValue,isDisabled:isDisabled}),this.formatOptionLabel(singleValue,"value"))}},{key:"renderClearIndicator",value:function renderClearIndicator(){var ClearIndicator=this.components.ClearIndicator,commonProps=this.commonProps,_this$props16=this.props,isDisabled=_this$props16.isDisabled,isLoading=_this$props16.isLoading,isFocused=this.state.isFocused;if(!this.isClearable()||!ClearIndicator||isDisabled||!this.hasValue()||isLoading)return null;var innerProps={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ClearIndicator,_extends({},commonProps,{innerProps:innerProps,isFocused:isFocused}))}},{key:"renderLoadingIndicator",value:function renderLoadingIndicator(){var LoadingIndicator=this.components.LoadingIndicator,commonProps=this.commonProps,_this$props17=this.props,isDisabled=_this$props17.isDisabled,isLoading=_this$props17.isLoading,isFocused=this.state.isFocused;if(!LoadingIndicator||!isLoading)return null;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(LoadingIndicator,_extends({},commonProps,{innerProps:{"aria-hidden":"true"},isDisabled:isDisabled,isFocused:isFocused}))}},{key:"renderIndicatorSeparator",value:function renderIndicatorSeparator(){var _this$components2=this.components,DropdownIndicator=_this$components2.DropdownIndicator,IndicatorSeparator=_this$components2.IndicatorSeparator;if(!DropdownIndicator||!IndicatorSeparator)return null;var commonProps=this.commonProps,isDisabled=this.props.isDisabled,isFocused=this.state.isFocused;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(IndicatorSeparator,_extends({},commonProps,{isDisabled:isDisabled,isFocused:isFocused}))}},{key:"renderDropdownIndicator",value:function renderDropdownIndicator(){var DropdownIndicator=this.components.DropdownIndicator;if(!DropdownIndicator)return null;var commonProps=this.commonProps,isDisabled=this.props.isDisabled,isFocused=this.state.isFocused,innerProps={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(DropdownIndicator,_extends({},commonProps,{innerProps:innerProps,isDisabled:isDisabled,isFocused:isFocused}))}},{key:"renderMenu",value:function renderMenu(){var _this5=this,_this$components3=this.components,Group=_this$components3.Group,GroupHeading=_this$components3.GroupHeading,Menu$$1=_this$components3.Menu,MenuList$$1=_this$components3.MenuList,MenuPortal$$1=_this$components3.MenuPortal,LoadingMessage$$1=_this$components3.LoadingMessage,NoOptionsMessage$$1=_this$components3.NoOptionsMessage,Option=_this$components3.Option,commonProps=this.commonProps,_this$state9=this.state,focusedOption=_this$state9.focusedOption,menuOptions=_this$state9.menuOptions,_this$props18=this.props,captureMenuScroll=_this$props18.captureMenuScroll,inputValue=_this$props18.inputValue,isLoading=_this$props18.isLoading,loadingMessage=_this$props18.loadingMessage,minMenuHeight=_this$props18.minMenuHeight,maxMenuHeight=_this$props18.maxMenuHeight,menuIsOpen=_this$props18.menuIsOpen,menuPlacement=_this$props18.menuPlacement,menuPosition=_this$props18.menuPosition,menuPortalTarget=_this$props18.menuPortalTarget,menuShouldBlockScroll=_this$props18.menuShouldBlockScroll,menuShouldScrollIntoView=_this$props18.menuShouldScrollIntoView,noOptionsMessage=_this$props18.noOptionsMessage,onMenuScrollToTop=_this$props18.onMenuScrollToTop,onMenuScrollToBottom=_this$props18.onMenuScrollToBottom;if(!menuIsOpen)return null;var menuUI,render=function render(props){var isFocused=focusedOption===props.data;return props.innerRef=isFocused?_this5.getFocusedOptionRef:void 0,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Option,_extends({},commonProps,props,{isFocused:isFocused}),_this5.formatOptionLabel(props.data,"menu"))};if(this.hasOptions())menuUI=menuOptions.render.map((function(item){if("group"===item.type){item.type;var group=_objectWithoutProperties(item,["type"]),headingId="".concat(item.key,"-heading");return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Group,_extends({},commonProps,group,{Heading:GroupHeading,headingProps:{id:headingId},label:_this5.formatGroupLabel(item.data)}),item.options.map((function(option){return render(option)})))}if("option"===item.type)return render(item)}));else if(isLoading){var message=loadingMessage({inputValue:inputValue});if(null===message)return null;menuUI=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(LoadingMessage$$1,commonProps,message)}else{var _message=noOptionsMessage({inputValue:inputValue});if(null===_message)return null;menuUI=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(NoOptionsMessage$$1,commonProps,_message)}var menuPlacementProps={minMenuHeight:minMenuHeight,maxMenuHeight:maxMenuHeight,menuPlacement:menuPlacement,menuPosition:menuPosition,menuShouldScrollIntoView:menuShouldScrollIntoView},menuElement=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(MenuPlacer,_extends({},commonProps,menuPlacementProps),(function(_ref6){var ref=_ref6.ref,_ref6$placerProps=_ref6.placerProps,placement=_ref6$placerProps.placement,maxHeight=_ref6$placerProps.maxHeight;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Menu$$1,_extends({},commonProps,menuPlacementProps,{innerRef:ref,innerProps:{onMouseDown:_this5.onMenuMouseDown,onMouseMove:_this5.onMenuMouseMove},isLoading:isLoading,placement:placement}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ScrollCaptorSwitch,{isEnabled:captureMenuScroll,onTopArrive:onMenuScrollToTop,onBottomArrive:onMenuScrollToBottom},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ScrollBlock,{isEnabled:menuShouldBlockScroll},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(MenuList$$1,_extends({},commonProps,{innerRef:_this5.getMenuListRef,isLoading:isLoading,maxHeight:maxHeight}),menuUI))))}));return menuPortalTarget||"fixed"===menuPosition?react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(MenuPortal$$1,_extends({},commonProps,{appendTo:menuPortalTarget,controlElement:this.controlRef,menuPlacement:menuPlacement,menuPosition:menuPosition}),menuElement):menuElement}},{key:"renderFormField",value:function renderFormField(){var _this6=this,_this$props19=this.props,delimiter=_this$props19.delimiter,isDisabled=_this$props19.isDisabled,isMulti=_this$props19.isMulti,name=_this$props19.name,selectValue=this.state.selectValue;if(name&&!isDisabled){if(isMulti){if(delimiter){var value=selectValue.map((function(opt){return _this6.getOptionValue(opt)})).join(delimiter);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("input",{name:name,type:"hidden",value:value})}var input=selectValue.length>0?selectValue.map((function(opt,i){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("input",{key:"i-".concat(i),name:name,type:"hidden",value:_this6.getOptionValue(opt)})})):react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("input",{name:name,type:"hidden"});return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",null,input)}var _value=selectValue[0]?this.getOptionValue(selectValue[0]):"";return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("input",{name:name,type:"hidden",value:_value})}}},{key:"renderLiveRegion",value:function renderLiveRegion(){return this.state.isFocused?react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(A11yText,{"aria-live":"assertive"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p",{id:"aria-selection-event"}," ",this.state.ariaLiveSelection),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p",{id:"aria-context"}," ",this.constructAriaLiveMessage())):null}},{key:"render",value:function render(){var _this$components4=this.components,Control=_this$components4.Control,IndicatorsContainer=_this$components4.IndicatorsContainer,SelectContainer=_this$components4.SelectContainer,ValueContainer=_this$components4.ValueContainer,_this$props20=this.props,className=_this$props20.className,id=_this$props20.id,isDisabled=_this$props20.isDisabled,menuIsOpen=_this$props20.menuIsOpen,isFocused=this.state.isFocused,commonProps=this.commonProps=this.getCommonProps();return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SelectContainer,_extends({},commonProps,{className:className,innerProps:{id:id,onKeyDown:this.onKeyDown},isDisabled:isDisabled,isFocused:isFocused}),this.renderLiveRegion(),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Control,_extends({},commonProps,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:isDisabled,isFocused:isFocused,menuIsOpen:menuIsOpen}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ValueContainer,_extends({},commonProps,{isDisabled:isDisabled}),this.renderPlaceholderOrValue(),this.renderInput()),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(IndicatorsContainer,_extends({},commonProps,{isDisabled:isDisabled}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())}}]),Select}(react__WEBPACK_IMPORTED_MODULE_0__.Component);_defineProperty(Select,"defaultProps",defaultProps);var defaultProps$1={defaultInputValue:"",defaultMenuIsOpen:!1,defaultValue:null},manageState=function manageState(SelectComponent){var _class,_temp;return _temp=_class=function(_Component){function StateManager(){var _getPrototypeOf2,_this;_classCallCheck(this,StateManager);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return _defineProperty(_assertThisInitialized(_assertThisInitialized(_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(StateManager)).call.apply(_getPrototypeOf2,[this].concat(args))))),"select",void 0),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"state",{inputValue:void 0!==_this.props.inputValue?_this.props.inputValue:_this.props.defaultInputValue,menuIsOpen:void 0!==_this.props.menuIsOpen?_this.props.menuIsOpen:_this.props.defaultMenuIsOpen,value:void 0!==_this.props.value?_this.props.value:_this.props.defaultValue}),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onChange",(function(value,actionMeta){_this.callProp("onChange",value,actionMeta),_this.setState({value:value})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onInputChange",(function(value,actionMeta){var newValue=_this.callProp("onInputChange",value,actionMeta);_this.setState({inputValue:void 0!==newValue?newValue:value})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onMenuOpen",(function(){_this.callProp("onMenuOpen"),_this.setState({menuIsOpen:!0})})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onMenuClose",(function(){_this.callProp("onMenuClose"),_this.setState({menuIsOpen:!1})})),_this}return _inherits(StateManager,_Component),_createClass(StateManager,[{key:"focus",value:function focus(){this.select.focus()}},{key:"blur",value:function blur(){this.select.blur()}},{key:"getProp",value:function getProp(key){return void 0!==this.props[key]?this.props[key]:this.state[key]}},{key:"callProp",value:function callProp(name){if("function"==typeof this.props[name]){for(var _this$props,_len2=arguments.length,args=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++)args[_key2-1]=arguments[_key2];return(_this$props=this.props)[name].apply(_this$props,args)}}},{key:"render",value:function render(){var _this2=this,_this$props2=this.props,props=(_this$props2.defaultInputValue,_this$props2.defaultMenuIsOpen,_this$props2.defaultValue,_objectWithoutProperties(_this$props2,["defaultInputValue","defaultMenuIsOpen","defaultValue"]));return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SelectComponent,_extends({},props,{ref:function ref(_ref){_this2.select=_ref},inputValue:this.getProp("inputValue"),menuIsOpen:this.getProp("menuIsOpen"),onChange:this.onChange,onInputChange:this.onInputChange,onMenuClose:this.onMenuClose,onMenuOpen:this.onMenuOpen,value:this.getProp("value")}))}}]),StateManager}(react__WEBPACK_IMPORTED_MODULE_0__.Component),_defineProperty(_class,"defaultProps",defaultProps$1),_temp},defaultProps$2={cacheOptions:!1,defaultOptions:!1,filterOption:null},makeAsyncSelect=function makeAsyncSelect(SelectComponent){var _class,_temp;return _temp=_class=function(_Component){function Async(props){var _this;return _classCallCheck(this,Async),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this=_possibleConstructorReturn(this,_getPrototypeOf(Async).call(this)))),"select",void 0),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"lastRequest",void 0),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"mounted",!1),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"optionsCache",{}),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"handleInputChange",(function(newValue,actionMeta){var _this$props=_this.props,cacheOptions=_this$props.cacheOptions,inputValue=function handleInputChange(inputValue,actionMeta,onInputChange){if(onInputChange){var newValue=onInputChange(inputValue,actionMeta);if("string"==typeof newValue)return newValue}return inputValue}(newValue,actionMeta,_this$props.onInputChange);if(!inputValue)return delete _this.lastRequest,void _this.setState({inputValue:"",loadedInputValue:"",loadedOptions:[],isLoading:!1,passEmptyOptions:!1});if(cacheOptions&&_this.optionsCache[inputValue])_this.setState({inputValue:inputValue,loadedInputValue:inputValue,loadedOptions:_this.optionsCache[inputValue],isLoading:!1,passEmptyOptions:!1});else{var request=_this.lastRequest={};_this.setState({inputValue:inputValue,isLoading:!0,passEmptyOptions:!_this.state.loadedInputValue},(function(){_this.loadOptions(inputValue,(function(options){_this.mounted&&(options&&(_this.optionsCache[inputValue]=options),request===_this.lastRequest&&(delete _this.lastRequest,_this.setState({isLoading:!1,loadedInputValue:inputValue,loadedOptions:options||[],passEmptyOptions:!1})))}))}))}return inputValue})),_this.state={defaultOptions:Array.isArray(props.defaultOptions)?props.defaultOptions:void 0,inputValue:void 0!==props.inputValue?props.inputValue:"",isLoading:!0===props.defaultOptions,loadedOptions:[],passEmptyOptions:!1},_this}return _inherits(Async,_Component),_createClass(Async,[{key:"componentDidMount",value:function componentDidMount(){var _this2=this;this.mounted=!0;var defaultOptions=this.props.defaultOptions,inputValue=this.state.inputValue;!0===defaultOptions&&this.loadOptions(inputValue,(function(options){if(_this2.mounted){var isLoading=!!_this2.lastRequest;_this2.setState({defaultOptions:options||[],isLoading:isLoading})}}))}},{key:"componentWillReceiveProps",value:function componentWillReceiveProps(nextProps){nextProps.cacheOptions!==this.props.cacheOptions&&(this.optionsCache={}),nextProps.defaultOptions!==this.props.defaultOptions&&this.setState({defaultOptions:Array.isArray(nextProps.defaultOptions)?nextProps.defaultOptions:void 0})}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.mounted=!1}},{key:"focus",value:function focus(){this.select.focus()}},{key:"blur",value:function blur(){this.select.blur()}},{key:"loadOptions",value:function loadOptions(inputValue,callback){var loadOptions=this.props.loadOptions;if(!loadOptions)return callback();var loader=loadOptions(inputValue,callback);loader&&"function"==typeof loader.then&&loader.then(callback,(function(){return callback()}))}},{key:"render",value:function render(){var _this3=this,_this$props2=this.props,props=(_this$props2.loadOptions,_objectWithoutProperties(_this$props2,["loadOptions"])),_this$state=this.state,defaultOptions=_this$state.defaultOptions,inputValue=_this$state.inputValue,isLoading=_this$state.isLoading,loadedInputValue=_this$state.loadedInputValue,loadedOptions=_this$state.loadedOptions,options=_this$state.passEmptyOptions?[]:inputValue&&loadedInputValue?loadedOptions:defaultOptions||[];return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SelectComponent,_extends({},props,{ref:function ref(_ref){_this3.select=_ref},options:options,isLoading:isLoading,onInputChange:this.handleInputChange}))}}]),Async}(react__WEBPACK_IMPORTED_MODULE_0__.Component),_defineProperty(_class,"defaultProps",defaultProps$2),_temp},compareOption=(makeAsyncSelect(manageState(Select)),function compareOption(){var option=arguments.length>1?arguments[1]:void 0,candidate=String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toLowerCase(),optionValue=String(option.value).toLowerCase(),optionLabel=String(option.label).toLowerCase();return optionValue===candidate||optionLabel===candidate}),defaultProps$3=_objectSpread({allowCreateWhileLoading:!1,createOptionPosition:"last"},{formatCreateLabel:function formatCreateLabel(inputValue){return'Create "'.concat(inputValue,'"')},isValidNewOption:function isValidNewOption(inputValue,selectValue,selectOptions){return!(!inputValue||selectValue.some((function(option){return compareOption(inputValue,option)}))||selectOptions.some((function(option){return compareOption(inputValue,option)})))},getNewOptionData:function getNewOptionData(inputValue,optionLabel){return{label:optionLabel,value:inputValue,__isNew__:!0}}}),makeCreatableSelect=function makeCreatableSelect(SelectComponent){var _class,_temp;return _temp=_class=function(_Component){function Creatable(props){var _this;_classCallCheck(this,Creatable),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this=_possibleConstructorReturn(this,_getPrototypeOf(Creatable).call(this,props)))),"select",void 0),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"onChange",(function(newValue,actionMeta){var _this$props=_this.props,getNewOptionData=_this$props.getNewOptionData,inputValue=_this$props.inputValue,isMulti=_this$props.isMulti,onChange=_this$props.onChange,onCreateOption=_this$props.onCreateOption,value=_this$props.value;if("select-option"!==actionMeta.action)return onChange(newValue,actionMeta);var newOption=_this.state.newOption,valueArray=Array.isArray(newValue)?newValue:[newValue];if(valueArray[valueArray.length-1]!==newOption)onChange(newValue,actionMeta);else if(onCreateOption)onCreateOption(inputValue);else{var newOptionData=getNewOptionData(inputValue,inputValue),newActionMeta={action:"create-option"};onChange(isMulti?[].concat(_toConsumableArray(cleanValue(value)),[newOptionData]):newOptionData,newActionMeta)}}));var options=props.options||[];return _this.state={newOption:void 0,options:options},_this}return _inherits(Creatable,_Component),_createClass(Creatable,[{key:"componentWillReceiveProps",value:function componentWillReceiveProps(nextProps){var allowCreateWhileLoading=nextProps.allowCreateWhileLoading,createOptionPosition=nextProps.createOptionPosition,formatCreateLabel=nextProps.formatCreateLabel,getNewOptionData=nextProps.getNewOptionData,inputValue=nextProps.inputValue,isLoading=nextProps.isLoading,isValidNewOption=nextProps.isValidNewOption,value=nextProps.value,options=nextProps.options||[],newOption=this.state.newOption;newOption=isValidNewOption(inputValue,cleanValue(value),options)?getNewOptionData(inputValue,formatCreateLabel(inputValue)):void 0,this.setState({newOption:newOption,options:!allowCreateWhileLoading&&isLoading||!newOption?options:"first"===createOptionPosition?[newOption].concat(_toConsumableArray(options)):[].concat(_toConsumableArray(options),[newOption])})}},{key:"focus",value:function focus(){this.select.focus()}},{key:"blur",value:function blur(){this.select.blur()}},{key:"render",value:function render(){var _this2=this,props=_extends({},this.props),options=this.state.options;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SelectComponent,_extends({},props,{ref:function ref(_ref){_this2.select=_ref},options:options,onChange:this.onChange}))}}]),Creatable}(react__WEBPACK_IMPORTED_MODULE_0__.Component),_defineProperty(_class,"defaultProps",defaultProps$3),_temp},AnimatedInput=(manageState(makeCreatableSelect(Select)),makeAsyncSelect(manageState(makeCreatableSelect(Select))),function AnimatedInput(WrappedComponent){return function(_ref){_ref.in,_ref.onExited,_ref.appear,_ref.enter,_ref.exit;var props=_objectWithoutProperties(_ref,["in","onExited","appear","enter","exit"]);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(WrappedComponent,props)}}),Fade=function Fade(_ref){var Tag=_ref.component,_ref$duration=_ref.duration,duration=void 0===_ref$duration?1:_ref$duration,inProp=_ref.in,props=(_ref.onExited,_objectWithoutProperties(_ref,["component","duration","in","onExited"])),transition={entering:{opacity:0},entered:{opacity:1,transition:"opacity ".concat(duration,"ms")},exiting:{opacity:0},exited:{opacity:0}};return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_transition_group__WEBPACK_IMPORTED_MODULE_7__.Transition,{mountOnEnter:!0,unmountOnExit:!0,in:inProp,timeout:duration},(function(state){var innerProps={style:_objectSpread({},transition[state])};return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Tag,_extends({innerProps:innerProps},props))}))},collapseDuration=260,Collapse=function(_Component){function Collapse(){var _getPrototypeOf2,_this;_classCallCheck(this,Collapse);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return _defineProperty(_assertThisInitialized(_assertThisInitialized(_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(Collapse)).call.apply(_getPrototypeOf2,[this].concat(args))))),"duration",collapseDuration),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"rafID",void 0),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"state",{width:"auto"}),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"transition",{exiting:{width:0,transition:"width ".concat(_this.duration,"ms ease-out")},exited:{width:0}}),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getWidth",(function(ref){ref&&isNaN(_this.state.width)&&(_this.rafID=window.requestAnimationFrame((function(){var width=ref.getBoundingClientRect().width;_this.setState({width:width})})))})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getStyle",(function(width){return{overflow:"hidden",whiteSpace:"nowrap",width:width}})),_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)),"getTransition",(function(state){return _this.transition[state]})),_this}return _inherits(Collapse,_Component),_createClass(Collapse,[{key:"componentWillUnmount",value:function componentWillUnmount(){this.rafID&&window.cancelAnimationFrame(this.rafID)}},{key:"render",value:function render(){var _this2=this,_this$props=this.props,children=_this$props.children,inProp=_this$props.in,width=this.state.width;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_transition_group__WEBPACK_IMPORTED_MODULE_7__.Transition,{enter:!1,mountOnEnter:!0,unmountOnExit:!0,in:inProp,timeout:this.duration},(function(state){var style=_objectSpread({},_this2.getStyle(width),_this2.getTransition(state));return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{ref:_this2.getWidth,style:style},children)}))}}]),Collapse}(react__WEBPACK_IMPORTED_MODULE_0__.Component),AnimatedMultiValue=function AnimatedMultiValue(WrappedComponent){return function(_ref){var inProp=_ref.in,onExited=_ref.onExited,props=_objectWithoutProperties(_ref,["in","onExited"]);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Collapse,{in:inProp,onExited:onExited},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(WrappedComponent,_extends({cropWithEllipsis:inProp},props)))}},AnimatedPlaceholder=function AnimatedPlaceholder(WrappedComponent){return function(props){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Fade,_extends({component:WrappedComponent,duration:props.isMulti?collapseDuration:1},props))}},AnimatedSingleValue=function AnimatedSingleValue(WrappedComponent){return function(props){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Fade,_extends({component:WrappedComponent},props))}},AnimatedValueContainer=function AnimatedValueContainer(WrappedComponent){return function(props){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_transition_group__WEBPACK_IMPORTED_MODULE_7__.TransitionGroup,_extends({component:WrappedComponent},props))}},makeAnimated=function makeAnimated(){var components$$1=defaultComponents({components:arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}}),Input=components$$1.Input,MultiValue=components$$1.MultiValue,Placeholder=components$$1.Placeholder,SingleValue=components$$1.SingleValue,ValueContainer=components$$1.ValueContainer,rest=_objectWithoutProperties(components$$1,["Input","MultiValue","Placeholder","SingleValue","ValueContainer"]);return _objectSpread({Input:AnimatedInput(Input),MultiValue:AnimatedMultiValue(MultiValue),Placeholder:AnimatedPlaceholder(Placeholder),SingleValue:AnimatedSingleValue(SingleValue),ValueContainer:AnimatedValueContainer(ValueContainer)},rest)},AnimatedComponents=makeAnimated(),index$1=(AnimatedComponents.Input,AnimatedComponents.MultiValue,AnimatedComponents.Placeholder,AnimatedComponents.SingleValue,AnimatedComponents.ValueContainer,Object(memoize_one__WEBPACK_IMPORTED_MODULE_1__.default)(makeAnimated,exportedEqual),manageState(Select));__webpack_exports__.b=index$1},yD6e:function(module,exports,__webpack_require__){"use strict";exports.__esModule=!0,exports.default=function hasClass(element,className){return element.classList?!!className&&element.classList.contains(className):-1!==(" "+(element.className.baseVal||element.className)+" ").indexOf(" "+className+" ")},module.exports=exports.default},yJtp:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const years_1=__webpack_require__("pKWP"),constants_1=__webpack_require__("i3am"),constants_2=__webpack_require__("i3am"),pattern_1=__webpack_require__("omFw"),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),PATTERN=new RegExp(`([0-9]{1,2})(?:º|ª|°)?(?:\\s*(?:desde|de|\\-|\\–|ao?|\\s)\\s*([0-9]{1,2})(?:º|ª|°)?)?\\s*(?:de)?\\s*(?:-|/|\\s*(?:de|,)?\\s*)(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})(?:\\s*(?:de|,)?\\s*(${constants_2.YEAR_PATTERN}))?(?=\\W|$)`,"i");class PTMonthNameLittleEndianParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const result=context.createParsingResult(match.index,match[0]),month=constants_1.MONTH_DICTIONARY[match[3].toLowerCase()],day=parseInt(match[1]);if(day>31)return match.index=match.index+match[1].length,null;if(result.start.assign("month",month),result.start.assign("day",day),match[4]){const yearNumber=constants_2.parseYear(match[4]);result.start.assign("year",yearNumber)}else{const year=years_1.findYearClosestToRef(context.refDate,day,month);result.start.imply("year",year)}if(match[2]){const endDate=parseInt(match[2]);result.end=result.start.clone(),result.end.assign("day",endDate)}return result}}exports.default=PTMonthNameLittleEndianParser},yLpj:function(module,exports){var g;g=function(){return this}();try{g=g||new Function("return this")()}catch(e){"object"==typeof window&&(g=window)}module.exports=g},yRC8:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createConfiguration=exports.createCasualConfiguration=exports.parseDate=exports.parse=exports.strict=exports.casual=void 0;const configurations_1=__webpack_require__("HskP"),chrono_1=__webpack_require__("aLSU"),FRCasualDateParser_1=__importDefault(__webpack_require__("WlRN")),FRCasualTimeParser_1=__importDefault(__webpack_require__("4W4v")),SlashDateFormatParser_1=__importDefault(__webpack_require__("5Jgo")),FRTimeExpressionParser_1=__importDefault(__webpack_require__("zVke")),FRMergeDateTimeRefiner_1=__importDefault(__webpack_require__("IT3k")),FRMergeDateRangeRefiner_1=__importDefault(__webpack_require__("rFfs")),FRWeekdayParser_1=__importDefault(__webpack_require__("rk+4")),FRSpecificTimeExpressionParser_1=__importDefault(__webpack_require__("4caT")),FRMonthNameLittleEndianParser_1=__importDefault(__webpack_require__("hphd")),FRTimeUnitAgoFormatParser_1=__importDefault(__webpack_require__("TXM6")),FRTimeUnitWithinFormatParser_1=__importDefault(__webpack_require__("h94c")),FRTimeUnitRelativeFormatParser_1=__importDefault(__webpack_require__("SH9J"));function createCasualConfiguration(littleEndian=!0){const option=createConfiguration(!1,littleEndian);return option.parsers.unshift(new FRCasualDateParser_1.default),option.parsers.unshift(new FRCasualTimeParser_1.default),option.parsers.unshift(new FRTimeUnitRelativeFormatParser_1.default),option}function createConfiguration(strictMode=!0,littleEndian=!0){return configurations_1.includeCommonConfiguration({parsers:[new SlashDateFormatParser_1.default(littleEndian),new FRMonthNameLittleEndianParser_1.default,new FRTimeExpressionParser_1.default,new FRSpecificTimeExpressionParser_1.default,new FRTimeUnitAgoFormatParser_1.default,new FRTimeUnitWithinFormatParser_1.default,new FRWeekdayParser_1.default],refiners:[new FRMergeDateTimeRefiner_1.default,new FRMergeDateRangeRefiner_1.default]},strictMode)}exports.casual=new chrono_1.Chrono(createCasualConfiguration()),exports.strict=new chrono_1.Chrono(createConfiguration(!0)),exports.parse=function parse(text,ref,option){return exports.casual.parse(text,ref,option)},exports.parseDate=function parseDate(text,ref,option){return exports.casual.parseDate(text,ref,option)},exports.createCasualConfiguration=createCasualConfiguration,exports.createConfiguration=createConfiguration},yXPU:function(module,exports){function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg),value=info.value}catch(error){return void reject(error)}info.done?resolve(value):Promise.resolve(value).then(_next,_throw)}module.exports=function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise((function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(void 0)}))}},module.exports.__esModule=!0,module.exports.default=module.exports},ycFn:function(module,exports,__webpack_require__){"use strict";var _interopRequireDefault=__webpack_require__("TqRt");exports.__esModule=!0,exports.default=function addClass(element,className){element.classList?element.classList.add(className):(0,_hasClass.default)(element,className)||("string"==typeof element.className?element.className=element.className+" "+className:element.setAttribute("class",(element.className&&element.className.baseVal||"")+" "+className))};var _hasClass=_interopRequireDefault(__webpack_require__("yD6e"));module.exports=exports.default},ylIs:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const TIMEZONE_NAME_PATTERN=new RegExp("^\\s*,?\\s*\\(?([A-Z]{2,4})\\)?(?=\\W|$)","i"),DEFAULT_TIMEZONE_ABBR_MAP={ACDT:630,ACST:570,ADT:-180,AEDT:660,AEST:600,AFT:270,AKDT:-480,AKST:-540,ALMT:360,AMST:-180,AMT:-240,ANAST:720,ANAT:720,AQTT:300,ART:-180,AST:-240,AWDT:540,AWST:480,AZOST:0,AZOT:-60,AZST:300,AZT:240,BNT:480,BOT:-240,BRST:-120,BRT:-180,BST:60,BTT:360,CAST:480,CAT:120,CCT:390,CDT:-300,CEST:120,CET:60,CHADT:825,CHAST:765,CKT:-600,CLST:-180,CLT:-240,COT:-300,CST:-360,CVT:-60,CXT:420,ChST:600,DAVT:420,EASST:-300,EAST:-360,EAT:180,ECT:-300,EDT:-240,EEST:180,EET:120,EGST:0,EGT:-60,EST:-300,ET:-300,FJST:780,FJT:720,FKST:-180,FKT:-240,FNT:-120,GALT:-360,GAMT:-540,GET:240,GFT:-180,GILT:720,GMT:0,GST:240,GYT:-240,HAA:-180,HAC:-300,HADT:-540,HAE:-240,HAP:-420,HAR:-360,HAST:-600,HAT:-90,HAY:-480,HKT:480,HLV:-210,HNA:-240,HNC:-360,HNE:-300,HNP:-480,HNR:-420,HNT:-150,HNY:-540,HOVT:420,ICT:420,IDT:180,IOT:360,IRDT:270,IRKST:540,IRKT:540,IRST:210,IST:330,JST:540,KGT:360,KRAST:480,KRAT:480,KST:540,KUYT:240,LHDT:660,LHST:630,LINT:840,MAGST:720,MAGT:720,MART:-510,MAWT:300,MDT:-360,MESZ:120,MEZ:60,MHT:720,MMT:390,MSD:240,MSK:240,MST:-420,MUT:240,MVT:300,MYT:480,NCT:660,NDT:-90,NFT:690,NOVST:420,NOVT:360,NPT:345,NST:-150,NUT:-660,NZDT:780,NZST:720,OMSST:420,OMST:420,PDT:-420,PET:-300,PETST:720,PETT:720,PGT:600,PHOT:780,PHT:480,PKT:300,PMDT:-120,PMST:-180,PONT:660,PST:-480,PT:-480,PWT:540,PYST:-180,PYT:-240,RET:240,SAMT:240,SAST:120,SBT:660,SCT:240,SGT:480,SRT:-180,SST:-660,TAHT:-600,TFT:300,TJT:300,TKT:780,TLT:540,TMT:300,TVT:720,ULAT:480,UTC:0,UYST:-120,UYT:-180,UZT:300,VET:-210,VLAST:660,VLAT:660,VUT:660,WAST:120,WAT:60,WEST:60,WESZ:60,WET:0,WEZ:0,WFT:720,WGST:-120,WGT:-180,WIB:420,WIT:540,WITA:480,WST:780,WT:0,YAKST:600,YAKT:600,YAPT:600,YEKST:360,YEKT:360};exports.default=class ExtractTimezoneAbbrRefiner{constructor(timezoneOverrides){this.timezone=Object.assign(Object.assign({},DEFAULT_TIMEZONE_ABBR_MAP),timezoneOverrides)}refine(context,results){var _a;const timezoneOverrides=null!==(_a=context.option.timezones)&&void 0!==_a?_a:{};return results.forEach((result=>{var _a,_b;const suffix=context.text.substring(result.index+result.text.length),match=TIMEZONE_NAME_PATTERN.exec(suffix);if(!match)return;const timezoneAbbr=match[1].toUpperCase(),extractedTimezoneOffset=null!==(_b=null!==(_a=timezoneOverrides[timezoneAbbr])&&void 0!==_a?_a:this.timezone[timezoneAbbr])&&void 0!==_b?_b:null;if(null===extractedTimezoneOffset)return;context.debug((()=>{console.log(`Extracting timezone: '${timezoneAbbr}' into: ${extractedTimezoneOffset} for: ${result.start}`)}));const currentTimezoneOffset=result.start.get("timezoneOffset");if(null!==currentTimezoneOffset&&extractedTimezoneOffset!=currentTimezoneOffset){if(result.start.isCertain("timezoneOffset"))return;if(timezoneAbbr!=match[1])return}result.start.isOnlyDate()&&timezoneAbbr!=match[1]||(result.text+=match[0],result.start.isCertain("timezoneOffset")||result.start.assign("timezoneOffset",extractedTimezoneOffset),null==result.end||result.end.isCertain("timezoneOffset")||result.end.assign("timezoneOffset",extractedTimezoneOffset))})),results}}},yz8E:function(module,exports,__webpack_require__){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const dayjs_1=__importDefault(__webpack_require__("Wgwc")),AbstractParserWithWordBoundary_1=__webpack_require__("g0k+"),constants_1=__webpack_require__("V+3o"),PATTERN=new RegExp("(?上|下|这)(?:个)?(?:星期|礼拜|周)(?"+Object.keys(constants_1.WEEKDAY_OFFSET).join("|")+")");class ZHHansRelationWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking{innerPattern(){return PATTERN}innerExtract(context,match){const result=context.createParsingResult(match.index,match[0]),dayOfWeek=match.groups.weekday,offset=constants_1.WEEKDAY_OFFSET[dayOfWeek];if(void 0===offset)return null;let modifier=null;const prefix=match.groups.prefix;"上"==prefix?modifier="last":"下"==prefix?modifier="next":"这"==prefix&&(modifier="this");let startMoment=dayjs_1.default(context.refDate),startMomentFixed=!1;const refOffset=startMoment.day();return"last"==modifier||"past"==modifier?(startMoment=startMoment.day(offset-7),startMomentFixed=!0):"next"==modifier?(startMoment=startMoment.day(offset+7),startMomentFixed=!0):startMoment="this"==modifier?startMoment.day(offset):Math.abs(offset-7-refOffset)6&&(targetDate=targetDate.add(-1,"day")),dayjs_2.assignSimilarDate(component,targetDate),component.imply("hour",0))}return timeKeyword&&(component=DECasualTimeParser_1.default.extractTimeComponents(component,timeKeyword)),component}}exports.default=DECasualDateParser},zVke:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const AbstractTimeExpressionParser_1=__webpack_require__("MXb4");class FRTimeExpressionParser extends AbstractTimeExpressionParser_1.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:[àa])\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\–|\\~|\\〜|[àa]|\\?)\\s*"}extractPrimaryTimeComponents(context,match){return match[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(context,match)}}exports.default=FRTimeExpressionParser}}]); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/bumpdown.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/bumpdown.js new file mode 100644 index 000000000..67bf870c9 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/bumpdown.js @@ -0,0 +1,293 @@ +(function( $, _ ) { + 'use strict'; + // Configure on Document ready for the default trigger + $( function() { + $( '.tribe-bumpdown-trigger' ).bumpdown(); + } ); + + $.fn.bumpdown = function() { + var $document = $( document ), + selectors = { + // A template for the ID if we don't have one already + ID: 'tribe-bumpdown-', + data_trigger: function( ID ) { + return '[data-trigger="' + ID + '"]'; + }, + bumpdown: '.tribe-bumpdown', + content: '.tribe-bumpdown-content', + trigger: '.tribe-bumpdown-trigger', + hover_trigger: '.tribe-bumpdown-trigger:not(.tribe-bumpdown-nohover)', + close: '.tribe-bumpdown-close', + permanent: '.tribe-bumpdown-permanent', + active: '.tribe-bumpdown-active', + }, + methods = { + open: function( $bumpdown ) { + var data = $bumpdown.data( 'bumpdown' ), + width_rule = data.$trigger.data( 'width-rule' ); + + if ( $bumpdown.is( ':visible' ) ) { + return; + } + + // Adds a Class to signal it's active + data.$trigger.addClass( selectors.active.replace( '.', '' ) ); + + var $content = $bumpdown.find( selectors.content ); + + if ( 'string' === typeof width_rule && 'all-triggers' === width_rule ) { + var min_width = 600; + var trigger_position = 0; + $( selectors.trigger ).each( function() { + var $el = $( this ); + + // only attempt to align items with a width rule + if ( ! $el.data( 'width-rule' ) ) { + return; + } + + var position = $el.position(); + + if ( position.left > trigger_position ) { + trigger_position = position.left; + } + } ); + + if ( trigger_position ) { + trigger_position = trigger_position > min_width ? trigger_position : min_width; + + $content.css( 'max-width', trigger_position + 'px' ); + } + } + + $content.prepend( '
    ' ); // eslint-disable-line max-len + $content.prepend( '' ); + methods.arrow( $bumpdown ); + + $bumpdown.data( 'preventClose', true ); + $bumpdown.slideDown( 'fast', function() { + $bumpdown.data( 'preventClose', false ); + } ); + }, + close: function( $bumpdown ) { + var data = $bumpdown.data( 'bumpdown' ); + + if ( ! $bumpdown.is( ':visible' ) || $bumpdown.data( 'preventClose' ) ) { + return; + } + + // When we close we reset the flag about hoverintent + $( this ).removeData( 'is_hoverintent_queued' ); + + $bumpdown.find( '.tribe-bumpdown-close, .tribe-bumpdown-arrow' ).remove(); + $bumpdown.not( '.tribe-bumpdown-trigger' ).slideUp( 'fast' ); + + data.$trigger.removeClass( selectors.active.replace( '.', '' ) ); + }, + arrow: function( $bumpdown ) { + var data = $bumpdown.data( 'bumpdown' ), + arrow; + + arrow = Math.ceil( + data.$trigger.position().left - ( + 'block' === data.type + ? data.$parent.offset().left + : 0 + ) + ); + + data.$bumpdown.find( '.tribe-bumpdown-arrow' ).css( 'left', arrow ); // eslint-disable-line es5/no-es6-methods,max-len + } + }; + + $( window ).on( { + 'resize.bumpdown': function() { + $document.find( selectors.active ).each( function() { + methods.arrow( $( this ) ); + } ); + } + } ); + + if ( 'function' === typeof $.fn.hoverIntent ) { + $document + // Use hoverIntent to make sure we are not opening Bumpdown on a fast hover + .hoverIntent( { + over: function() { + var data = $( this ).data( 'bumpdown' ); + + // Flags that it's open + data.$trigger.data( 'is_hoverintent_queued', false ); + + // Actually opens + data.$bumpdown.trigger( 'open.bumpdown' ); + }, + out: function() {}, // Prevents Notice on JS + selector: selectors.hover_trigger, + interval: 200, + } ); + } + + $document + // Setup Events on Trigger + .on( { + mouseenter: function() { + if ( $( this ).data( 'is_hoverintent_queued' ) === undefined ) { + // Flags that hoverIntent will take care of the + $( this ).data( 'is_hoverintent_queued', true ); + } + }, + click: function( e ) { + var data = $( this ).data( 'bumpdown' ); + e.preventDefault(); + e.stopPropagation(); + + if ( data.$bumpdown.is( ':visible' ) ) { + // Makes sure we are not dealing with the first enter of the mouse + if ( data.$trigger.data( 'is_hoverintent_queued' ) ) { + // On double click it will close, kinda like forcing the closing + return data.$trigger.data( 'is_hoverintent_queued', false ); + } + + data.$bumpdown.trigger( 'close.bumpdown' ); + } else { + data.$bumpdown.trigger( 'open.bumpdown' ); + } + }, + 'open.bumpdown': function() { methods.open( $( this ) ); }, + 'close.bumpdown': function() { methods.close( $( this ) ); } + }, selectors.trigger ) + + // Setup Events on Trigger + .on( { + click: function( e ) { + var data = $( this ).parents( selectors.bumpdown ).first().data( 'bumpdown' ); + + e.preventDefault(); + e.stopPropagation(); + + if ( 'undefined' === typeof data ) { + return; + } + + if ( 'undefined' === typeof data.$bumpdown ) { + return; + } + + data.$bumpdown.trigger( 'close.bumpdown' ); + }, + }, selectors.close ) + + // Triggers closing when clicking on the document + .on( 'click', function( e ) { + var $target = $( e.target ), + is_bumpdown = $target.is( selectors.bumpdown ) + || 0 !== $target.parents( selectors.bumpdown ).length; + + if ( is_bumpdown ) { + return; + } + + $( selectors.trigger ).not( selectors.permanent ).trigger( 'close.bumpdown' ); + } ) + + // Creates actions on the actual bumpdown + .on( { + 'open.bumpdown': function() { methods.open( $( this ) ); }, + 'close.bumpdown': function() { methods.close( $( this ) ); } + }, selectors.bumpdown ); + + // Configure all the fields + return this.each( function() { + var data = { + // Store the jQuery Elements + $trigger: $( this ), + $parent: null, + $bumpdown: null, + + // Store other Variables + ID: null, + html: null, + type: 'block', + + // Flags + is_permanent: false, + }; + + // We need a ID for this Bumpdown + data.ID = data.$trigger.attr( 'id' ); + + // If we currently don't have the ID, set it up + if ( ! data.ID ) { + data.ID = _.uniqueId( selectors.ID ); + + // Apply the given ID to + data.$trigger.attr( 'id', data.ID ); + } + + // We fetch from `[data-bumpdown]` attr the possible HTML for this Bumpdown + data.html = data.$trigger.attr( 'data-bumpdown' ); + data.html = '
    ' + data.html + '
    '; + + // We fetch from `[data-bumpdown-class]` attr the possible class(es) for this Bumpdown + data.class = data.$trigger.attr( 'data-bumpdown-class' ); + + // Flags about if this bumpdown is permanent, + // meaning it only closes when clicking on the close button or the trigger + data.is_permanent = data.$trigger.is( selectors.permanent ); + + // Fetch the first Block-Level parent + data.$parent = data.$trigger.parents().filter( function() { + return -1 < $.inArray( + $( this ).css( 'display' ), + [ 'block', 'table', 'table-cell', 'table-row' ] + ); + } ).first(); + + if ( ! data.html ) { + data.$bumpdown = $( selectors.data_trigger( data.ID ) ); + data.type = 'block'; + } else { + data.type = data.$parent.is( 'td, tr, td, table' ) ? 'table' : 'block'; + + if ( 'table' === data.type ) { + data.$bumpdown = $( '' ) + .attr( { colspan: 2 } ) + .addClass( 'tribe-bumpdown-cell' ) + .html( data.html ); + var classes = data.class ? 'tribe-bumpdown-row ' + data.class : 'tribe-bumpdown-row', + $row = $( '' ).append( data.$bumpdown ).addClass( classes ); + + data.$parent = data.$trigger.parents( 'tr' ).first(); + + data.$parent.after( $row ); + } else { + data.$bumpdown = $( '
    ' ).addClass( 'tribe-bumpdown-block' ).html( data.html ); + data.$trigger.after( data.$bumpdown ); + } + } + + // Setup data on trigger + data.$trigger + .data( 'bumpdown', data ) + + // Mark this as the trigger + .addClass( selectors.trigger.replace( '.', '' ) ); + + + // Setup data on actual bumpdown + data.$bumpdown + .data( 'bumpdown', data ) + + // Mark it as the Bumpdown + .addClass( selectors.bumpdown.replace( '.', '' ) ); + + // support our dependency library + if ( data.$trigger.data( 'depends' ) ) { + var field_ids = data.$trigger.data( 'depends' ); + $( document ).on( 'change', field_ids, function() { + methods.close( data.$bumpdown ); + } ); + } + }); + }; +}( jQuery, window.underscore || window._ ) ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/bumpdown.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/bumpdown.min.js new file mode 100644 index 000000000..cfeb3bc70 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/bumpdown.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +!function($,_){"use strict";$((function(){$(".tribe-bumpdown-trigger").bumpdown()})),$.fn.bumpdown=function(){var $document=$(document),selectors={ID:"tribe-bumpdown-",data_trigger:function(ID){return'[data-trigger="'+ID+'"]'},bumpdown:".tribe-bumpdown",content:".tribe-bumpdown-content",trigger:".tribe-bumpdown-trigger",hover_trigger:".tribe-bumpdown-trigger:not(.tribe-bumpdown-nohover)",close:".tribe-bumpdown-close",permanent:".tribe-bumpdown-permanent",active:".tribe-bumpdown-active"},methods={open:function($bumpdown){var data=$bumpdown.data("bumpdown"),width_rule=data.$trigger.data("width-rule");if(!$bumpdown.is(":visible")){data.$trigger.addClass(selectors.active.replace(".",""));var $content=$bumpdown.find(selectors.content);if("string"==typeof width_rule&&"all-triggers"===width_rule){var trigger_position=0;$(selectors.trigger).each((function(){var $el=$(this);if($el.data("width-rule")){var position=$el.position();position.left>trigger_position&&(trigger_position=position.left)}})),trigger_position&&(trigger_position=trigger_position>600?trigger_position:600,$content.css("max-width",trigger_position+"px"))}$content.prepend(''),$content.prepend(''),methods.arrow($bumpdown),$bumpdown.data("preventClose",!0),$bumpdown.slideDown("fast",(function(){$bumpdown.data("preventClose",!1)}))}},close:function($bumpdown){var data=$bumpdown.data("bumpdown");$bumpdown.is(":visible")&&!$bumpdown.data("preventClose")&&($(this).removeData("is_hoverintent_queued"),$bumpdown.find(".tribe-bumpdown-close, .tribe-bumpdown-arrow").remove(),$bumpdown.not(".tribe-bumpdown-trigger").slideUp("fast"),data.$trigger.removeClass(selectors.active.replace(".","")))},arrow:function($bumpdown){var arrow,data=$bumpdown.data("bumpdown");arrow=Math.ceil(data.$trigger.position().left-("block"===data.type?data.$parent.offset().left:0)),data.$bumpdown.find(".tribe-bumpdown-arrow").css("left",arrow)}};return $(window).on({"resize.bumpdown":function(){$document.find(selectors.active).each((function(){methods.arrow($(this))}))}}),"function"==typeof $.fn.hoverIntent&&$document.hoverIntent({over:function(){var data=$(this).data("bumpdown");data.$trigger.data("is_hoverintent_queued",!1),data.$bumpdown.trigger("open.bumpdown")},out:function(){},selector:selectors.hover_trigger,interval:200}),$document.on({mouseenter:function(){void 0===$(this).data("is_hoverintent_queued")&&$(this).data("is_hoverintent_queued",!0)},click:function(e){var data=$(this).data("bumpdown");if(e.preventDefault(),e.stopPropagation(),data.$bumpdown.is(":visible")){if(data.$trigger.data("is_hoverintent_queued"))return data.$trigger.data("is_hoverintent_queued",!1);data.$bumpdown.trigger("close.bumpdown")}else data.$bumpdown.trigger("open.bumpdown")},"open.bumpdown":function(){methods.open($(this))},"close.bumpdown":function(){methods.close($(this))}},selectors.trigger).on({click:function(e){var data=$(this).parents(selectors.bumpdown).first().data("bumpdown");e.preventDefault(),e.stopPropagation(),void 0!==data&&void 0!==data.$bumpdown&&data.$bumpdown.trigger("close.bumpdown")}},selectors.close).on("click",(function(e){var $target=$(e.target);$target.is(selectors.bumpdown)||0!==$target.parents(selectors.bumpdown).length||$(selectors.trigger).not(selectors.permanent).trigger("close.bumpdown")})).on({"open.bumpdown":function(){methods.open($(this))},"close.bumpdown":function(){methods.close($(this))}},selectors.bumpdown),this.each((function(){var data={$trigger:$(this),$parent:null,$bumpdown:null,ID:null,html:null,type:"block",is_permanent:!1};if(data.ID=data.$trigger.attr("id"),data.ID||(data.ID=_.uniqueId(selectors.ID),data.$trigger.attr("id",data.ID)),data.html=data.$trigger.attr("data-bumpdown"),data.html='
    '+data.html+"
    ",data.class=data.$trigger.attr("data-bumpdown-class"),data.is_permanent=data.$trigger.is(selectors.permanent),data.$parent=data.$trigger.parents().filter((function(){return-1<$.inArray($(this).css("display"),["block","table","table-cell","table-row"])})).first(),data.html)if(data.type=data.$parent.is("td, tr, td, table")?"table":"block","table"===data.type){data.$bumpdown=$("").attr({colspan:2}).addClass("tribe-bumpdown-cell").html(data.html);var classes=data.class?"tribe-bumpdown-row "+data.class:"tribe-bumpdown-row",$row=$("").append(data.$bumpdown).addClass(classes);data.$parent=data.$trigger.parents("tr").first(),data.$parent.after($row)}else data.$bumpdown=$("
    ").addClass("tribe-bumpdown-block").html(data.html),data.$trigger.after(data.$bumpdown);else data.$bumpdown=$(selectors.data_trigger(data.ID)),data.type="block";if(data.$trigger.data("bumpdown",data).addClass(selectors.trigger.replace(".","")),data.$bumpdown.data("bumpdown",data).addClass(selectors.bumpdown.replace(".","")),data.$trigger.data("depends")){var field_ids=data.$trigger.data("depends");$(document).on("change",field_ids,(function(){methods.close(data.$bumpdown)}))}}))}}(jQuery,window.underscore||window._); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/buttonset.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/buttonset.js new file mode 100644 index 000000000..9707a51ea --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/buttonset.js @@ -0,0 +1,94 @@ +var tribe_buttonset = tribe_buttonset || {}; + +( function( $, obj, _ ) { // eslint-disable-line no-unused-vars + 'use strict'; + + obj.$body; + + obj.selector = { + buttonset: '.tribe-buttonset', + button: '.tribe-button-field', + input: '.tribe-button-input', + active: '.tribe-active' + }; + + obj.ready = function( event ) { // eslint-disable-line no-unused-vars + obj.$body = $( 'body' ); + obj.$body.on( 'click.tribe_buttonset', obj.selector.button, obj.click ); + obj.$body.on( 'change.tribe_buttonset', obj.selector.input, obj.change ) + .find( obj.selector.input ).trigger( 'change' ); // eslint-disable-line es5/no-es6-methods + }; + + obj.change = function( event ) { // eslint-disable-line no-unused-vars + var $input = $( this ), + value = $input.val(), + $group = $input.parents( obj.selector.buttonset ).eq( 0 ); + + $group + .find( '[data-value="' + value + '"]' ) + .addClass( obj.selector.active.replace( '.', '' ) ); + }; + + obj.click = function( event ) { + var $button = $( this ), + $group, + $input; + + if ( $button.is( '[data-group]' ) ) { + $group = $( $button.data( 'group' ) ); + } else { + $group = $button.parents( obj.selector.buttonset ); + } + + var has_group = $group.length > 0, + input_selector = $group.data( 'input' ) ? $group.data( 'input' ) : obj.selector.input, + value = $button.data( 'value' ), + is_multiple = $group.is( '[data-multiple]' ); + + if ( has_group && ! is_multiple ) { + $group.find( obj.selector.button ).removeClass( obj.selector.active.replace( '.', '' ) ); + } + + if ( is_multiple ) { + $button.toggleClass( obj.selector.active.replace( '.', '' ) ); + } else { + $button.addClass( obj.selector.active.replace( '.', '' ) ); + } + + // Allows buttons to have specific inputs + if ( $button.is( '[data-input]' ) ) { + input_selector = $button.data( 'input' ); + } + + // Tries to find the Input inside of the Button + $input = $button.find( input_selector ); + + // Check for the group and try to find the input there + if ( has_group && $input.length === 0 ) { + $input = $group.find( input_selector ); + } + + // If didn't find something yet tries globally + if ( $input.length === 0 ) { + $input = $( input_selector ); + } + + if ( $button.is( '[data-value]' ) ) { + // Apply the value + $input.val( value ); + } + + if ( 'checkbox' === $input.attr( 'type' ) ) { + $input.prop( 'checked', $button.is( obj.selector.active ) ); + } else { + $input.prop( 'disabled', ! $button.is( obj.selector.active ) ); + } + + $input.trigger( 'change' ); + + event.preventDefault(); + return false; + }; + + $( obj.ready ); +} )( jQuery, tribe_buttonset, window.underscore || window._ ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/buttonset.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/buttonset.min.js new file mode 100644 index 000000000..a9d69767c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/buttonset.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +var tribe_buttonset=tribe_buttonset||{};!function($,obj,_){"use strict";obj.$body,obj.selector={buttonset:".tribe-buttonset",button:".tribe-button-field",input:".tribe-button-input",active:".tribe-active"},obj.ready=function(event){obj.$body=$("body"),obj.$body.on("click.tribe_buttonset",obj.selector.button,obj.click),obj.$body.on("change.tribe_buttonset",obj.selector.input,obj.change).find(obj.selector.input).trigger("change")},obj.change=function(event){var $input=$(this),value=$input.val();$input.parents(obj.selector.buttonset).eq(0).find('[data-value="'+value+'"]').addClass(obj.selector.active.replace(".",""))},obj.click=function(event){var $group,$input,$button=$(this),has_group=($group=$button.is("[data-group]")?$($button.data("group")):$button.parents(obj.selector.buttonset)).length>0,input_selector=$group.data("input")?$group.data("input"):obj.selector.input,value=$button.data("value"),is_multiple=$group.is("[data-multiple]");return has_group&&!is_multiple&&$group.find(obj.selector.button).removeClass(obj.selector.active.replace(".","")),is_multiple?$button.toggleClass(obj.selector.active.replace(".","")):$button.addClass(obj.selector.active.replace(".","")),$button.is("[data-input]")&&(input_selector=$button.data("input")),$input=$button.find(input_selector),has_group&&0===$input.length&&($input=$group.find(input_selector)),0===$input.length&&($input=$(input_selector)),$button.is("[data-value]")&&$input.val(value),"checkbox"===$input.attr("type")?$input.prop("checked",$button.is(obj.selector.active)):$input.prop("disabled",!$button.is(obj.selector.active)),$input.trigger("change"),event.preventDefault(),!1},$(obj.ready)}(jQuery,tribe_buttonset,window.underscore||window._); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/dependency.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/dependency.js new file mode 100644 index 000000000..316b01d6d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/dependency.js @@ -0,0 +1,336 @@ +/** + * Tribe Dependency. Allows us to conditionally hide/show and disable elements + * based on a data relationship. + * + * Glossary (in case you get lost like I did!) + * dependent = the element that is the "target" of the relationship the one that + * is affected, thus dependent. + * dependency = the element the relationship is based on the one we check in our conditions + * active = the class we use to denote an "active" (not hidden & enabled) element + * selector = the css selector for the dependency, must be an ID, includes the hash "#" + * linked = data attribute for linked dependents mainly for radio buttons to + * ensure they all get triggered together + */ +( function( $, _, obj ) { + 'use strict'; + var $document = $( document ); + var $window = $( window ); + + /** + * Store all selectors used to setup and properly use Dependency + * + * @since 4.7.15 + * + * @type {Object} + */ + obj.selectors = { + dependent: '.tribe-dependent', + active: '.tribe-active', + dependency: '.tribe-dependency', + dependencyVerified: '.tribe-dependency-verified', + dependencyManualControl: '[data-dependency-manual-control]', + fields: 'input, select, textarea', + advanced_fields: '.select2-container', + linked: '.tribe-dependent-linked' + }; + + /** + * Replacemente for jQuery $.isNumeric that was deprecated on version 5.7 of WP. + * + * @param {string|int} number + * + * @returns {boolean} + */ + obj.isNumeric = function( number ) { + return ! isNaN( parseFloat( number ) ) && isFinite( number ); + }; + + /** + * Set up each constraint truth condition + * Each function will be passed the value, the constraint and the dependent field + * + * @since 4.7.15 + * + * @type {Object} + */ + obj.constraintConditions = { + 'condition': function ( val, constraint ) { + return _.isArray( constraint ) ? -1 !== constraint.indexOf( val ) : val == constraint; // eslint-disable-line eqeqeq,max-len + }, + 'not_condition': function ( val, constraint ) { + return _.isArray( constraint ) ? -1 === constraint.indexOf( val ) : val != constraint; // eslint-disable-line eqeqeq,max-len + }, + 'is_not_empty': function ( val ) { + return '' != val; // eslint-disable-line eqeqeq + }, + 'is_empty': function ( val ) { + return '' === val; + }, + 'is_numeric': function ( val ) { + return obj.isNumeric( val ); + }, + 'is_not_numeric': function ( val ) { + return ! obj.isNumeric( val ); + }, + 'is_checked': function ( _, __, $field ) { + return ( $field.is( ':checkbox' ) || $field.is( ':radio' ) ) + ? $field.is( ':checked' ) + : false; + }, + 'is_not_checked': function ( _, __, $field ) { + return ( $field.is( ':checkbox' ) || $field.is( ':radio' ) ) + ? ! $field.is( ':checked' ) + : false; + } + }; + + /** + * Actually verify the dependencies of a field + * + * @since 4.7.15 + * + * @type {Function} + */ + obj.verify = function( e ) { // eslint-disable-line no-unused-vars + var $field = $( this ); + var selector = '#' + $field.attr( 'id' ); + var value = $field.val(); + + // We need an ID to make something depend on this + if ( ! selector ) { + return; + } + + /** + * If we're hooking to a radio, we need to make sure changing + * any similarly _named_ ones trigger verify on all of them. + * The base code only triggers on direct interactions. + * + * @since 4.5.8 + */ + if ( $field.is( ':radio' ) ) { + var $radios = $( "[name='" + $field.attr( 'name' ) + "']" ); + + $radios.not( obj.selectors.linked ).on( 'change', function() { + $radios.trigger( 'verify.dependency' ); + } ).addClass( obj.selectors.linked.replace( '.', '' ) ); + } + + // Fetch dependent elements + var $dependents = $document + .find( '[data-depends="' + selector + '"]' ) + .not( '.select2-container' ); + if ( 0 === $dependents.length ) { + return; + } + + $dependents.each( function( k, dependent ) { + var $dependent = $( dependent ); + + if ( $dependent.is( '[data-dependent-parent]' ) ) { + var dependentParent = $dependent.data( 'dependent-parent' ); + var $dependentParent = $dependent.closest( dependentParent ); + + if ( 0 === $dependentParent.length ) { + console.warn( 'Dependency: `data-dependent-parent` has bad selector', $dependent ); + return; + } + + $dependent = $dependentParent.find( dependent ); + } + + /* eslint-disable max-len */ + var constraints = { + condition: $dependent.is( '[data-condition]' ) ? $dependent.data( 'condition' ) : false, + not_condition: $dependent.is( '[data-condition-not]' ) ? $dependent.data( 'conditionNot' ) : false, + is_not_empty: $dependent.data( 'conditionIsNotEmpty' ) || $dependent.is( '[data-condition-is-not-empty]' ) || $dependent.data( 'conditionNotEmpty' ) || $dependent.is( '[data-condition-not-empty]' ), + is_empty: $dependent.data( 'conditionIsEmpty' ) || $dependent.is( '[data-condition-is-empty]' ) || $dependent.data( 'conditionEmpty' ) || $dependent.is( '[data-condition-empty]' ), + is_numeric: $dependent.data( 'conditionIsNumeric' ) || $dependent.is( '[data-condition-is-numeric]' ) || $dependent.data( 'conditionNumeric' ) || $dependent.is( '[data-condition-numeric]' ), + is_not_numeric: $dependent.data( 'conditionIsNotNumeric' ) || $dependent.is( '[data-condition-is-not-numeric]' ), + is_checked: $dependent.data( 'conditionIsChecked' ) || $dependent.is( '[data-condition-is-checked]' ) || $dependent.data( 'conditionChecked' ) || $dependent.is( '[data-condition-checked]' ), + is_not_checked: $dependent.data( 'conditionIsNotChecked' ) || $dependent.is( '[data-condition-is-not-checked]' ) || $dependent.data( 'conditionNotChecked' ) || $dependent.is( '[data-condition-not-checked]' ), + }; + /* eslint-enable max-len */ + + var activeClass = obj.selectors.active.replace( '.', '' ); + + // Allows us to check a disabled dependency + var allowDisabled = $dependent.is( '[data-dependency-check-disabled]' ); + var alwaysVisible = $dependent.is( '[data-dependency-always-visible]' ); + + // If allowDisabled, then false - we don't care! + var isDisabled = allowDisabled ? false : $field.is( ':disabled' ); + var conditionRelation = $dependent.data( 'condition-relation' ) || 'or'; + var passes; + + constraints = _.pick( constraints, function ( isApplicable ) { + return false !== isApplicable; + } ); + + if ( 'or' === conditionRelation ) { + passes = _.reduce( constraints, function ( passes, constraint, key ) { + return passes || obj.constraintConditions[ key ]( value, constraint, $field ); + }, false ); + } else { + // There is no "and"! + passes = _.reduce( constraints, function ( passes, constraint, key ) { + return passes && obj.constraintConditions[ key ]( value, constraint, $field ); + }, true ); + } + + if ( passes && ! isDisabled ) { + if ( $dependent.is( '.tribe-dropdown, .tribe-ea-dropdown' ) ) { + $dependent.select2().data( 'select2' ).$container.addClass( activeClass ); + + // ideally the class should be enough, but just in case... + if ( $dependent.select2().data( 'select2' ).$container.is( ':hidden' ) ) { + $dependent.select2().data( 'select2' ).$container.show(); + } + } else { + $dependent.addClass( activeClass ); + + // ideally the class should be enough, but just in case... + if ( $dependent.is( ':hidden' ) ) { + $dependent.show(); + } + } + + if ( alwaysVisible ) { + $dependent.filter( obj.selectors.fields ).prop( 'disabled', false ); + } + + $dependent + .find( obj.selectors.fields ) + .not( obj.selectors.dependencyManualControl ) + .prop( 'disabled', false ); + + if ( 'undefined' !== typeof $().select2 ) { + $dependent + .find( '.tribe-dropdown, .tribe-ea-dropdown' ) + .select2() + .prop( 'disabled', false ); + } + } else { + $dependent.removeClass( activeClass ); + + // ideally the class should be enough, but just in case... + if ( $dependent.is( ':visible' ) ) { + $dependent.hide(); + } + + if ( ! $dependent.data( 'dependency-dont-disable' ) ) { + $dependent + .find( obj.selectors.fields ) + .not( obj.selectors.dependencyManualControl ) + .prop( 'disabled', true ); + } + + if ( 'undefined' !== typeof $().select2 ) { + $dependent + .find( '.tribe-dropdown, .tribe-ea-dropdown' ) + .select2() + .prop( 'disabled', true ); + } + + if ( $dependent.is( '.tribe-dropdown, .tribe-ea-dropdown' ) ) { + $dependent.select2().data( 'select2' ).$container.removeClass( activeClass ); + } + + // When we have a flag to always display the field we display when disabled + if ( alwaysVisible ) { + $dependent.addClass( activeClass ).show(); + $dependent.filter( obj.selectors.fields ).prop( 'disabled', true ); + + if ( $dependent.is( '.tribe-dropdown, .tribe-ea-dropdown' ) ) { + $dependent.select2().data( 'select2' ).$container.addClass( activeClass ).show(); + } + } + } + + var $dependentChildren = $dependent.find( obj.selectors.dependency ); + if ( $dependentChildren.length > 0 ) { + // Checks if any child elements have dependencies + $dependentChildren.trigger( 'change' ); + } + } ); + + $field.addClass( obj.selectors.dependencyVerified.className() ); + }; + + /** + * Setup dependency, it might be run on a bunch of different places to allow + * AJAX fields to be used. + * + * @since 4.7.15 + * + * @type {Function} + */ + obj.setup = function ( event ) { // eslint-disable-line no-unused-vars + // Fetch all dependents + var $dependents = $( obj.selectors.dependent ); + + if ( $dependents.length ) { + // Trigger Dependency Configuration on all of these + $dependents.dependency(); + } + + // Fetch all Dependencies + var $dependencies = $( obj.selectors.dependency ); + + if ( $dependencies.not( obj.selectors.dependencyVerified ).length ) { + // Now verify all the Dependencies + $dependencies.trigger( 'verify.dependency' ); + } + }; + + /** + * Setup a Dependent, it's a jQuery prototype method + * + * @since 4.7.15 + * + * @type {Function} + */ + $.fn.dependency = function () { + return this.each( function() { + var $el = $( this ); + var selector = $el.data( 'depends' ); + var $selector = $( selector ); + + // Block any fails from valid selectors + if ( ! $selector.length ) { + return; + } + + if ( ! $selector.get( 0 ).created ) { + $selector.addClass( obj.selectors.dependency.replace( '.', '' ) ).data( 'dependent', $el ); + $selector.get( 0 ).created = true; + } + } ); + }; + + /** + * Listen on async recurrent elements. + * + * @since 4.7.15 + */ + $document.on( 'setup.dependency', obj.setup ); + + /** + * Remove any dependency actions previously created + */ + $document.off( 'change.dependency verify.dependency', obj.selectors.dependency ); + + /** + * Add the Dependency check on the correct elements + */ + $document.on( { + 'verify.dependency': obj.verify, + 'change.dependency': obj.verify, + }, obj.selectors.dependency ); + + // Configure on Document ready for the default trigger + $( obj.setup ); + + // Configure on Window Load again + $window.on( 'load', obj.setup ); +}( jQuery, window.underscore || window._, {} ) ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/dependency.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/dependency.min.js new file mode 100644 index 000000000..f4a67ee85 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/dependency.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +!function($,_,obj){"use strict";var $document=$(document),$window=$(window);obj.selectors={dependent:".tribe-dependent",active:".tribe-active",dependency:".tribe-dependency",dependencyVerified:".tribe-dependency-verified",dependencyManualControl:"[data-dependency-manual-control]",fields:"input, select, textarea",advanced_fields:".select2-container",linked:".tribe-dependent-linked"},obj.isNumeric=function(number){return!isNaN(parseFloat(number))&&isFinite(number)},obj.constraintConditions={condition:function(val,constraint){return _.isArray(constraint)?-1!==constraint.indexOf(val):val==constraint},not_condition:function(val,constraint){return _.isArray(constraint)?-1===constraint.indexOf(val):val!=constraint},is_not_empty:function(val){return""!=val},is_empty:function(val){return""===val},is_numeric:function(val){return obj.isNumeric(val)},is_not_numeric:function(val){return!obj.isNumeric(val)},is_checked:function(_,__,$field){return!(!$field.is(":checkbox")&&!$field.is(":radio"))&&$field.is(":checked")},is_not_checked:function(_,__,$field){return!(!$field.is(":checkbox")&&!$field.is(":radio"))&&!$field.is(":checked")}},obj.verify=function(e){var $field=$(this),selector="#"+$field.attr("id"),value=$field.val();if(selector){if($field.is(":radio")){var $radios=$("[name='"+$field.attr("name")+"']");$radios.not(obj.selectors.linked).on("change",(function(){$radios.trigger("verify.dependency")})).addClass(obj.selectors.linked.replace(".",""))}var $dependents=$document.find('[data-depends="'+selector+'"]').not(".select2-container");0!==$dependents.length&&($dependents.each((function(k,dependent){var $dependent=$(dependent);if($dependent.is("[data-dependent-parent]")){var dependentParent=$dependent.data("dependent-parent"),$dependentParent=$dependent.closest(dependentParent);if(0===$dependentParent.length)return void console.warn("Dependency: `data-dependent-parent` has bad selector",$dependent);$dependent=$dependentParent.find(dependent)}var constraints={condition:!!$dependent.is("[data-condition]")&&$dependent.data("condition"),not_condition:!!$dependent.is("[data-condition-not]")&&$dependent.data("conditionNot"),is_not_empty:$dependent.data("conditionIsNotEmpty")||$dependent.is("[data-condition-is-not-empty]")||$dependent.data("conditionNotEmpty")||$dependent.is("[data-condition-not-empty]"),is_empty:$dependent.data("conditionIsEmpty")||$dependent.is("[data-condition-is-empty]")||$dependent.data("conditionEmpty")||$dependent.is("[data-condition-empty]"),is_numeric:$dependent.data("conditionIsNumeric")||$dependent.is("[data-condition-is-numeric]")||$dependent.data("conditionNumeric")||$dependent.is("[data-condition-numeric]"),is_not_numeric:$dependent.data("conditionIsNotNumeric")||$dependent.is("[data-condition-is-not-numeric]"),is_checked:$dependent.data("conditionIsChecked")||$dependent.is("[data-condition-is-checked]")||$dependent.data("conditionChecked")||$dependent.is("[data-condition-checked]"),is_not_checked:$dependent.data("conditionIsNotChecked")||$dependent.is("[data-condition-is-not-checked]")||$dependent.data("conditionNotChecked")||$dependent.is("[data-condition-not-checked]")},activeClass=obj.selectors.active.replace(".",""),allowDisabled=$dependent.is("[data-dependency-check-disabled]"),alwaysVisible=$dependent.is("[data-dependency-always-visible]"),isDisabled=!allowDisabled&&$field.is(":disabled"),conditionRelation=$dependent.data("condition-relation")||"or";constraints=_.pick(constraints,(function(isApplicable){return!1!==isApplicable})),("or"===conditionRelation?_.reduce(constraints,(function(passes,constraint,key){return passes||obj.constraintConditions[key](value,constraint,$field)}),!1):_.reduce(constraints,(function(passes,constraint,key){return passes&&obj.constraintConditions[key](value,constraint,$field)}),!0))&&!isDisabled?($dependent.is(".tribe-dropdown, .tribe-ea-dropdown")?($dependent.select2().data("select2").$container.addClass(activeClass),$dependent.select2().data("select2").$container.is(":hidden")&&$dependent.select2().data("select2").$container.show()):($dependent.addClass(activeClass),$dependent.is(":hidden")&&$dependent.show()),alwaysVisible&&$dependent.filter(obj.selectors.fields).prop("disabled",!1),$dependent.find(obj.selectors.fields).not(obj.selectors.dependencyManualControl).prop("disabled",!1),void 0!==$().select2&&$dependent.find(".tribe-dropdown, .tribe-ea-dropdown").select2().prop("disabled",!1)):($dependent.removeClass(activeClass),$dependent.is(":visible")&&$dependent.hide(),$dependent.data("dependency-dont-disable")||$dependent.find(obj.selectors.fields).not(obj.selectors.dependencyManualControl).prop("disabled",!0),void 0!==$().select2&&$dependent.find(".tribe-dropdown, .tribe-ea-dropdown").select2().prop("disabled",!0),$dependent.is(".tribe-dropdown, .tribe-ea-dropdown")&&$dependent.select2().data("select2").$container.removeClass(activeClass),alwaysVisible&&($dependent.addClass(activeClass).show(),$dependent.filter(obj.selectors.fields).prop("disabled",!0),$dependent.is(".tribe-dropdown, .tribe-ea-dropdown")&&$dependent.select2().data("select2").$container.addClass(activeClass).show()));var $dependentChildren=$dependent.find(obj.selectors.dependency);$dependentChildren.length>0&&$dependentChildren.trigger("change")})),$field.addClass(obj.selectors.dependencyVerified.className()))}},obj.setup=function(event){var $dependents=$(obj.selectors.dependent);$dependents.length&&$dependents.dependency();var $dependencies=$(obj.selectors.dependency);$dependencies.not(obj.selectors.dependencyVerified).length&&$dependencies.trigger("verify.dependency")},$.fn.dependency=function(){return this.each((function(){var $el=$(this),selector=$el.data("depends"),$selector=$(selector);$selector.length&&($selector.get(0).created||($selector.addClass(obj.selectors.dependency.replace(".","")).data("dependent",$el),$selector.get(0).created=!0))}))},$document.on("setup.dependency",obj.setup),$document.off("change.dependency verify.dependency",obj.selectors.dependency),$document.on({"verify.dependency":obj.verify,"change.dependency":obj.verify},obj.selectors.dependency),$(obj.setup),$window.on("load",obj.setup)}(jQuery,window.underscore||window._,{}); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/dialog.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/dialog.js new file mode 100644 index 000000000..722c3fde2 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/dialog.js @@ -0,0 +1,73 @@ +var tribe = tribe || {}; // eslint-disable-line no-redeclare +tribe.dialogs = tribe.dialogs || {}; + +( function( $, obj ) { + 'use strict'; + + obj.dialogs = obj.dialogs || []; + obj.events = obj.events || {}; + + /** + * Get the dialog name. + * + * @since 4.11.3 + * + * @param {obj} dialog The dialog object + * + * @return {string} the dialog name. + */ + obj.getDialogName = function( dialog ) { + return 'dialog_obj_' + dialog.id; + }; + + /** + * Initialize tribe dialogs. + * + * @since 4.11.3 + * + * @return {void} + */ + obj.init = function() { + obj.dialogs.forEach( function( dialog ) { + var objName = obj.getDialogName( dialog ); + var a11yInstance = new window.A11yDialog( { + appendTarget: dialog.appendTarget, + bodyLock: dialog.bodyLock, + closeButtonAriaLabel: dialog.closeButtonAriaLabel, + closeButtonClasses: dialog.closeButtonClasses, + contentClasses: dialog.contentClasses, + effect: dialog.effect, + effectEasing: dialog.effectEasing, + effectSpeed: dialog.effectSpeed, + overlayClasses: dialog.overlayClasses, + overlayClickCloses: dialog.overlayClickCloses, + trigger: dialog.trigger, + wrapperClasses: dialog.wrapperClasses, + } ); + + window[ objName ] = a11yInstance; + dialog.a11yInstance = a11yInstance; + + window[ objName ].on( 'show', function( dialogEl, event ) { + if ( event ) { + event.preventDefault(); + event.stopPropagation(); + } + + $( obj.events ).trigger( dialog.showEvent, [ dialogEl, event ] ); + } ); + + window[ objName ].on( 'hide', function ( dialogEl, event ) { + if ( event ) { + event.preventDefault(); + event.stopPropagation(); + } + + $( obj.events ).trigger( dialog.closeEvent, [ dialogEl, event ] ); + } ); + } ); + }; + + $( obj.init ); + +} )( jQuery, tribe.dialogs ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/dialog.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/dialog.min.js new file mode 100644 index 000000000..c2636ee31 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/dialog.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +var tribe=tribe||{};tribe.dialogs=tribe.dialogs||{},function($,obj){"use strict";obj.dialogs=obj.dialogs||[],obj.events=obj.events||{},obj.getDialogName=function(dialog){return"dialog_obj_"+dialog.id},obj.init=function(){obj.dialogs.forEach((function(dialog){var objName=obj.getDialogName(dialog),a11yInstance=new window.A11yDialog({appendTarget:dialog.appendTarget,bodyLock:dialog.bodyLock,closeButtonAriaLabel:dialog.closeButtonAriaLabel,closeButtonClasses:dialog.closeButtonClasses,contentClasses:dialog.contentClasses,effect:dialog.effect,effectEasing:dialog.effectEasing,effectSpeed:dialog.effectSpeed,overlayClasses:dialog.overlayClasses,overlayClickCloses:dialog.overlayClickCloses,trigger:dialog.trigger,wrapperClasses:dialog.wrapperClasses});window[objName]=a11yInstance,dialog.a11yInstance=a11yInstance,window[objName].on("show",(function(dialogEl,event){event&&(event.preventDefault(),event.stopPropagation()),$(obj.events).trigger(dialog.showEvent,[dialogEl,event])})),window[objName].on("hide",(function(dialogEl,event){event&&(event.preventDefault(),event.stopPropagation()),$(obj.events).trigger(dialog.closeEvent,[dialogEl,event])}))}))},$(obj.init)}(jQuery,tribe.dialogs); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/dropdowns.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/dropdowns.js new file mode 100644 index 000000000..b254a70aa --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/dropdowns.js @@ -0,0 +1,558 @@ +var tribe_dropdowns = window.tribe_dropdowns || {}; + +( function( $, obj, _ ) { + 'use strict'; + + obj.selector = { + dropdown: '.tribe-dropdown', + created: '.tribe-dropdown-created', + searchField: '.select2-search__field', + }; + + // Setup a Dependent + $.fn.tribe_dropdowns = function() { + obj.dropdown( this, {} ); + + return this; + }; + + obj.freefrom_create_search_choice = function( params ) { + if ( 'string' !== typeof params.term ) { + return null; + } + + var term = params.term.trim(); + + if ( '' === term ) { + return null; + } + + var args = this.options.options; + var $select = args.$select; + + if ( + term.match( args.regexToken ) + && ( + ! $select.is( '[data-int]' ) + || ( + $select.is( '[data-int]' ) + && term.match( /\d+/ ) + ) + ) + ) { + var choice = { id: term, text: term, new: true }; + + if ( $select.is( '[data-create-choice-template]' ) ) { + choice.text = _.template( $select.data( 'createChoiceTemplate' ) )( { term: term } ); + } + + return choice; + } + + return null; + }; + + /** + * Better Search ID for Select2, compatible with WordPress ID from WP_Query + * + * @param {object|string} e Searched object or the actual ID + * @return {string} ID of the object + */ + obj.search_id = function( e ) { + var id = undefined; + + if ( 'undefined' !== typeof e.id ) { + id = e.id; + } else if ( 'undefined' !== typeof e.ID ) { + id = e.ID; + } else if ( 'undefined' !== typeof e.value ) { + id = e.value; + } + return undefined === e ? undefined : id; + }; + + /** + * Better way of matching results + * + * @param {string} term Which term we are searching for + * @param {string} text Search here + * @return {boolean} + */ + obj.matcher = function( params, data ) { + // If there are no search terms, return all of the data + if ( 'string' !== typeof params.term || params.term.trim() === '') { + return data; + } + + // Do not display the item if there is no 'text' property + if ( typeof data.text === 'undefined' ) { + return null; + } + + var term = params.term.trim(); + var text = data.text; + var $select = $( data.element ).closest( 'select' ); + var args = $select.data( 'dropdown' ); + var result = text.toUpperCase().indexOf( term.toUpperCase() ) !== -1; + + if ( ! result && 'undefined' !== typeof args.tags ){ + var possible = _.where( args.tags, { text: text } ); + if ( args.tags.length > 0 && _.isObject( possible ) ){ + var test_value = obj.search_id( possible[0] ); + result = test_value.toUpperCase().indexOf( term.toUpperCase() ) !== -1; + } + } + + return result; + }; + + /** + * If the element used as the basis of a dropdown specifies one or more numeric/text + * identifiers in its val attribute, then use those to preselect the appropriate options. + * + * @param {object} $select + * @param {function} make_selection + */ + obj.init_selection = function( $select, make_selection ) { + var isMultiple = $select.is( '[multiple]' ); + var options = $select.data( 'dropdown' ); + var currentValues = $select.val().split( options.regexSplit ); + var selectedItems = []; + + $( currentValues ).each( function( index, value ) { // eslint-disable-line no-unused-vars + var searchFor = { id: this, text: this }; + var data = options.ajax ? $select.data( 'options' ) : options.data; + var locatedItem = find_item( searchFor, data ); + + if ( locatedItem && locatedItem.selected ) { + selectedItems.push( locatedItem ); + } + } ); + + if ( selectedItems.length && isMultiple ) { + make_selection( selectedItems ); + } else if ( selectedItems.length ) { + make_selection( selectedItems[ 0 ] ); + } else { + make_selection( false ); + return; + } + }; + + /** + * Searches array 'haystack' for objects that match 'description'. + * + * The 'description' object should take the form { id: number, text: string }. The first + * object within the haystack that matches one of those two properties will be returned. + * + * If objects contain an array named 'children', then that array will also be searched. + * + * @param {Object} description + * @param {Array} haystack + * + * @return {Object|boolean} + */ + function find_item( description, haystack ) { + if ( ! _.isArray( haystack ) ) { + return false; + } + + for ( var index in haystack ) { + var possible_match = haystack[ index ]; + + if ( possible_match.hasOwnProperty( 'id' ) && possible_match.id == description.id ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len + return possible_match; + } + + if ( possible_match.hasOwnProperty( 'text' ) && possible_match.text == description.text ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len + return possible_match; + } + + if ( possible_match.hasOwnProperty( 'children' ) && _.isArray( possible_match.children ) ) { // eslint-disable-line no-prototype-builtins,max-len + var subsearch = find_item( description, possible_match.children ); + + if ( subsearch ) { + return subsearch; + } + } + } + + return false; + } + + obj.getSelectClasses = function( $select ) { + var classesToRemove = [ + 'select2-hidden-accessible', + 'hide-before-select2-init', + ]; + var originalClasses = $select.attr( 'class' ).split( /\s+/ ); + return _.difference( originalClasses, classesToRemove ); + }; + + obj.element = function( field, args ) { + var $select = $( field ); + var args = $.extend( {}, args ); // eslint-disable-line no-redeclare + var carryOverData = [ // eslint-disable-line no-unused-vars + 'depends', + 'condition', + 'conditionNot', + 'condition-not', + 'conditionNotEmpty', + 'condition-not-empty', + 'conditionEmpty', + 'condition-empty', + 'conditionIsNumeric', + 'condition-is-numeric', + 'conditionIsNotNumeric', + 'condition-is-not-numeric', + 'conditionChecked', + 'condition-is-checked', + ]; + + var $container; + + // Add a class for dropdown created + $select.addClass( obj.selector.created.className() ); + + // args.debug = true; + + // For Reference we save the jQuery element as an Arg. + args.$select = $select; + + // Auto define the Width of the Select2. + args.dropdownAutoWidth = true; + args.width = 'resolve'; + + // CSS for the container + args.containerCss = {}; + + // Only apply visibility when it's a Visible Select2. + if ( $select.is( ':visible' ) ) { + args.containerCss.display = 'inline-block'; + args.containerCss.position = 'relative'; + } + + // CSS for the dropdown + args.dropdownCss = {}; + args.dropdownCss.width = 'auto'; + + // When we have this we replace the default with what's in the param. + if ( $select.is( '[data-dropdown-css-width]' ) ) { + args.dropdownCss.width = $select.data( 'dropdown-css-width' ); + + if ( ! args.dropdownCss.width || 'false' === args.dropdownCss.width ) { + delete args.dropdownCss.width; + delete args.containerCss; + } + } + + // By default we allow The field to be cleared + args.allowClear = true; + if ( $select.is( '[data-prevent-clear]' ) ) { + args.allowClear = false; + } + + // Pass the "Searching..." placeholder if specified + if ( $select.is( '[data-searching-placeholder]' ) ) { + args.formatSearching = $select.data( 'searching-placeholder' ); + } + + // If we are dealing with a Input Hidden we need to set the Data for it to work + if ( ! $select.is( '[data-placeholder]' ) && $select.is( '[placeholder]' ) ) { + args.placeholder = $select.attr( 'placeholder' ); + } + + // If we are dealing with a Input Hidden we need to set the Data for it to work. + if ( $select.is( '[data-options]' ) ) { + args.data = $select.data( 'options' ); + } + + // With less then 10 args we wouldn't show the search. + args.minimumResultsForSearch = 10; + + // Prevents the Search box to show + if ( $select.is( '[data-hide-search]' ) ) { + args.minimumResultsForSearch = Infinity; + } + + // Makes sure search shows up. + if ( $select.is( '[data-force-search]' ) ) { + delete args.minimumResultsForSearch; + } + + // Allows freeform entry + if ( $select.is( '[data-freeform]' ) ) { + args.createTag = obj.freefrom_create_search_choice; + args.tags = true; + $select.data( 'tags', true ); + } + + if ( $select.is( '[multiple]' ) ) { + args.multiple = true; + + // Set the max select items, if defined + if ( $select.is( '[data-maximum-selection-size]' ) ) { + args.maximumSelectionSize = $select.data( 'maximum-selection-size' ); + } + + // If you don't have separator, add one (comma) + if ( ! $select.is( 'data-separator' ) ) { + $select.data( 'separator', ',' ); + } + + if ( ! _.isArray( $select.data( 'separator' ) ) ) { + args.tokenSeparators = [ $select.data( 'separator' ) ]; + } else { + args.tokenSeparators = $select.data( 'separator' ); + } + args.separator = $select.data( 'separator' ); + + // Define the regular Exp based on + args.regexSeparatorElements = [ '^(' ]; + args.regexSplitElements = [ '(?:' ]; + $.each( args.tokenSeparators, function ( i, token ) { + args.regexSeparatorElements.push( '[^' + token + ']+' ); + args.regexSplitElements.push( '[' + token + ']' ); + } ); + args.regexSeparatorElements.push( ')$' ); + args.regexSplitElements.push( ')' ); + + args.regexSeparatorString = args.regexSeparatorElements.join( '' ); + args.regexSplitString = args.regexSplitElements.join( '' ); + + args.regexToken = new RegExp( args.regexSeparatorString, 'ig' ); + args.regexSplit = new RegExp( args.regexSplitString, 'ig' ); + } + + // Select also allows Tags, so we go with that too + if ( $select.is( '[data-tags]' ) ) { + args.tags = $select.data( 'tags' ); + + args.createSearchChoice = function( term, data ) { // eslint-disable-line no-unused-vars + if ( term.match( args.regexToken ) ) { + return { id: term, text: term }; + } + }; + + if ( 0 === args.tags.length ) { + args.formatNoMatches = function() { + return $select.attr( 'placeholder' ); + }; + } + } + + // When we have a source, we do an AJAX call + if ( $select.is( '[data-source]' ) ) { + var source = $select.data( 'source' ); + + // For AJAX we reset the data + args.data = { results: [] }; + + // Format for Parents breadcrumbs + args.formatResult = function ( item, container, query ) { // eslint-disable-line no-unused-vars,max-len + if ( 'undefined' !== typeof item.breadcrumbs ) { + return $.merge( item.breadcrumbs, [ item.text ] ).join( ' » ' ); + } + + return item.text; + }; + + // instead of writing the function to execute the request we use Select2's convenient helper. + args.ajax = { + dataType: 'json', + type: 'POST', + url: obj.ajaxurl(), + + // parse the results into the format expected by Select2. + processResults: function ( response, page, query ) { // eslint-disable-line no-unused-vars + if ( ! $.isPlainObject( response ) || 'undefined' === typeof response.success ) { + console.error( 'We received a malformed Object, could not complete the Select2 Search.' ); // eslint-disable-line max-len + return { results: [] }; + } + + if ( + ! $.isPlainObject( response.data ) + || 'undefined' === typeof response.data.results + ) { + console.error( 'We received a malformed results array, could not complete the Select2 Search.' ); // eslint-disable-line max-len + return { results: [] }; + } + + if ( ! response.success ) { + if ( 'string' === $.type( response.data.message ) ) { + console.error( response.data.message ); + } else { + console.error( 'The Select2 search failed in some way... Verify the source.' ); + } + return { results: [] }; + } + + return response.data; + }, + }; + + // By default only send the source + args.ajax.data = function( search, page ) { + return { + action: 'tribe_dropdown', + source: source, + search: search, + page: page, + args: $select.data( 'source-args' ), + }; + }; + } + + // Attach dropdown to container in DOM. + if ( $select.is( '[data-attach-container]' ) ) { + + // If multiple, attach container without search. + if ( $select.is( '[multiple]' ) ) { + $.fn.select2.amd.define( + 'AttachedDropdownAdapter', + [ + 'select2/utils', + 'select2/dropdown', + 'select2/dropdown/attachContainer', + ], + function( utils, dropdown, attachContainer ) { + return utils.Decorate( dropdown, attachContainer ); + } + ); + + args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedDropdownAdapter' ); + + // If not multiple, attach container with search. + } else { + $.fn.select2.amd.define( + 'AttachedWithSearchDropdownAdapter', + [ + 'select2/utils', + 'select2/dropdown', + 'select2/dropdown/search', + 'select2/dropdown/minimumResultsForSearch', + 'select2/dropdown/attachContainer', + ], + function( utils, dropdown, search, minimumResultsForSearch, attachContainer ) { + var adapter = utils.Decorate( dropdown, attachContainer ); + adapter = utils.Decorate( adapter, search ); + adapter = utils.Decorate( adapter, minimumResultsForSearch ); + return adapter; + } + ); + + args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedWithSearchDropdownAdapter' ); + } + } + + // Save data on Dropdown + $select.data( 'dropdown', args ); + + $container = $select.select2TEC( args ); + + // Propagating original input classes to the select2 container. + var originalClasses = obj.getSelectClasses( $select ).join( ' ' ); + $container.data( 'select2' ).$container.addClass( originalClasses ); + + // Propagating original input classes to the select2 container. + $container.data( 'select2' ).$container.removeClass( 'hide-before-select2-init' ); + + $container.on( 'select2:open', obj.action_select2_open ); + + /** + * @todo @bordoni Investigate how and if we should be doing this. + * + if ( carryOverData.length > 0 ) { + carryOverData.map( function( dataKey ) { + var attr = 'data-' + dataKey; + var val = $select.attr( attr ); + + if ( ! val ) { + return; + } + + this.attr( attr, val ); + }, $container ); + } + */ + }; + + obj.ajaxurl = function() { + if ( 'undefined' !== typeof window.ajaxurl ) { + return window.ajaxurl; + } + + if ( 'undefined' !== typeof TEC && 'undefined' !== typeof TEC.ajaxurl ) { + return TEC.ajaxurl; + } + + console.error( 'Dropdowns framework cannot properly do an AJAX request without the WordPress `ajaxurl` variable setup.' ); // eslint-disable-line max-len + }; + + obj.action_select2_open = function( event ) { // eslint-disable-line no-unused-vars + var $select = $( this ); + var select2Data = $select.data( 'select2' ); + var $search = select2Data.$dropdown.find( obj.selector.searchField ); // eslint-disable-line es5/no-es6-methods,max-len + + var originalClasses = obj.getSelectClasses( select2Data.$element ).reduce( + function ( prev, curr ) { + if( 'hide-if-js' === curr ) { + return prev; + } + + if ( 'tribe-dropdown-created' === curr ) { + return prev; + } + + return prev + ' ' + curr; + } + ); + + select2Data.$dropdown.addClass( originalClasses ); + + // If we have a placeholder for search, apply it! + if ( $select.is( '[data-search-placeholder]' ) ) { + $search.attr( 'placeholder', $select.data( 'searchPlaceholder' ) ); + } + }; + + /** + * Configure the Drop Down Fields + * + * @param {jQuery} $fields All the fields from the page + * @param {array} args Allow extending the arguments + * + * @return {jQuery} Affected fields + */ + obj.dropdown = function( $fields, args ) { + var $elements = $fields.not( '.select2-offscreen, .select2-container, ' + obj.selector.created.className() ); // eslint-disable-line max-len + + if ( 0 === $elements.length ) { + return $elements; + } + + // Default args to avoid Undefined + if ( ! args ) { + args = {}; + } + + $elements + .each( function( index, element ) { + // Apply element to all given items and pass args + obj.element( element, args ); + } ); + + // return to be able to chain jQuery calls + return $elements; + }; + + $( function() { + $( obj.selector.dropdown ).tribe_dropdowns(); + } ); + + // Addresses some problems with Select2 inputs not being initialized when using a browser's "Back" button. + $( window ).on( 'unload', function() { + $( obj.selector.dropdown ).tribe_dropdowns(); + }); + +} )( jQuery, tribe_dropdowns, window.underscore || window._ ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/dropdowns.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/dropdowns.min.js new file mode 100644 index 000000000..1cc3e0ce6 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/dropdowns.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +var tribe_dropdowns=window.tribe_dropdowns||{};!function($,obj,_){"use strict";function find_item(description,haystack){if(!_.isArray(haystack))return!1;for(var index in haystack){var possible_match=haystack[index];if(possible_match.hasOwnProperty("id")&&possible_match.id==description.id)return possible_match;if(possible_match.hasOwnProperty("text")&&possible_match.text==description.text)return possible_match;if(possible_match.hasOwnProperty("children")&&_.isArray(possible_match.children)){var subsearch=find_item(description,possible_match.children);if(subsearch)return subsearch}}return!1}obj.selector={dropdown:".tribe-dropdown",created:".tribe-dropdown-created",searchField:".select2-search__field"},$.fn.tribe_dropdowns=function(){return obj.dropdown(this,{}),this},obj.freefrom_create_search_choice=function(params){if("string"!=typeof params.term)return null;var term=params.term.trim();if(""===term)return null;var args=this.options.options,$select=args.$select;if(term.match(args.regexToken)&&(!$select.is("[data-int]")||$select.is("[data-int]")&&term.match(/\d+/))){var choice={id:term,text:term,new:!0};return $select.is("[data-create-choice-template]")&&(choice.text=_.template($select.data("createChoiceTemplate"))({term:term})),choice}return null},obj.search_id=function(e){var id=void 0;return void 0!==e.id?id=e.id:void 0!==e.ID?id=e.ID:void 0!==e.value&&(id=e.value),void 0===e?void 0:id},obj.matcher=function(params,data){if("string"!=typeof params.term||""===params.term.trim())return data;if(void 0===data.text)return null;var term=params.term.trim(),text=data.text,args=$(data.element).closest("select").data("dropdown"),result=-1!==text.toUpperCase().indexOf(term.toUpperCase());if(!result&&void 0!==args.tags){var possible=_.where(args.tags,{text:text});if(args.tags.length>0&&_.isObject(possible))result=-1!==obj.search_id(possible[0]).toUpperCase().indexOf(term.toUpperCase())}return result},obj.init_selection=function($select,make_selection){var isMultiple=$select.is("[multiple]"),options=$select.data("dropdown"),currentValues=$select.val().split(options.regexSplit),selectedItems=[];if($(currentValues).each((function(index,value){var locatedItem=find_item({id:this,text:this},options.ajax?$select.data("options"):options.data);locatedItem&&locatedItem.selected&&selectedItems.push(locatedItem)})),selectedItems.length&&isMultiple)make_selection(selectedItems);else{if(!selectedItems.length)return void make_selection(!1);make_selection(selectedItems[0])}},obj.getSelectClasses=function($select){var originalClasses=$select.attr("class").split(/\s+/);return _.difference(originalClasses,["select2-hidden-accessible","hide-before-select2-init"])},obj.element=function(field,args){var $container,$select=$(field);args=$.extend({},args);if($select.addClass(obj.selector.created.className()),args.$select=$select,args.dropdownAutoWidth=!0,args.width="resolve",args.containerCss={},$select.is(":visible")&&(args.containerCss.display="inline-block",args.containerCss.position="relative"),args.dropdownCss={},args.dropdownCss.width="auto",$select.is("[data-dropdown-css-width]")&&(args.dropdownCss.width=$select.data("dropdown-css-width"),args.dropdownCss.width&&"false"!==args.dropdownCss.width||(delete args.dropdownCss.width,delete args.containerCss)),args.allowClear=!0,$select.is("[data-prevent-clear]")&&(args.allowClear=!1),$select.is("[data-searching-placeholder]")&&(args.formatSearching=$select.data("searching-placeholder")),!$select.is("[data-placeholder]")&&$select.is("[placeholder]")&&(args.placeholder=$select.attr("placeholder")),$select.is("[data-options]")&&(args.data=$select.data("options")),args.minimumResultsForSearch=10,$select.is("[data-hide-search]")&&(args.minimumResultsForSearch=1/0),$select.is("[data-force-search]")&&delete args.minimumResultsForSearch,$select.is("[data-freeform]")&&(args.createTag=obj.freefrom_create_search_choice,args.tags=!0,$select.data("tags",!0)),$select.is("[multiple]")&&(args.multiple=!0,$select.is("[data-maximum-selection-size]")&&(args.maximumSelectionSize=$select.data("maximum-selection-size")),$select.is("data-separator")||$select.data("separator",","),_.isArray($select.data("separator"))?args.tokenSeparators=$select.data("separator"):args.tokenSeparators=[$select.data("separator")],args.separator=$select.data("separator"),args.regexSeparatorElements=["^("],args.regexSplitElements=["(?:"],$.each(args.tokenSeparators,(function(i,token){args.regexSeparatorElements.push("[^"+token+"]+"),args.regexSplitElements.push("["+token+"]")})),args.regexSeparatorElements.push(")$"),args.regexSplitElements.push(")"),args.regexSeparatorString=args.regexSeparatorElements.join(""),args.regexSplitString=args.regexSplitElements.join(""),args.regexToken=new RegExp(args.regexSeparatorString,"ig"),args.regexSplit=new RegExp(args.regexSplitString,"ig")),$select.is("[data-tags]")&&(args.tags=$select.data("tags"),args.createSearchChoice=function(term,data){if(term.match(args.regexToken))return{id:term,text:term}},0===args.tags.length&&(args.formatNoMatches=function(){return $select.attr("placeholder")})),$select.is("[data-source]")){var source=$select.data("source");args.data={results:[]},args.formatResult=function(item,container,query){return void 0!==item.breadcrumbs?$.merge(item.breadcrumbs,[item.text]).join(" » "):item.text},args.ajax={dataType:"json",type:"POST",url:obj.ajaxurl(),processResults:function(response,page,query){return $.isPlainObject(response)&&void 0!==response.success?$.isPlainObject(response.data)&&void 0!==response.data.results?response.success?response.data:("string"===$.type(response.data.message)?console.error(response.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:[]})}},args.ajax.data=function(search,page){return{action:"tribe_dropdown",source:source,search:search,page:page,args:$select.data("source-args")}}}$select.is("[data-attach-container]")&&($select.is("[multiple]")?($.fn.select2.amd.define("AttachedDropdownAdapter",["select2/utils","select2/dropdown","select2/dropdown/attachContainer"],(function(utils,dropdown,attachContainer){return utils.Decorate(dropdown,attachContainer)})),args.dropdownAdapter=$.fn.select2.amd.require("AttachedDropdownAdapter")):($.fn.select2.amd.define("AttachedWithSearchDropdownAdapter",["select2/utils","select2/dropdown","select2/dropdown/search","select2/dropdown/minimumResultsForSearch","select2/dropdown/attachContainer"],(function(utils,dropdown,search,minimumResultsForSearch,attachContainer){var adapter=utils.Decorate(dropdown,attachContainer);return adapter=utils.Decorate(adapter,search),adapter=utils.Decorate(adapter,minimumResultsForSearch)})),args.dropdownAdapter=$.fn.select2.amd.require("AttachedWithSearchDropdownAdapter"))),$select.data("dropdown",args),$container=$select.select2TEC(args);var originalClasses=obj.getSelectClasses($select).join(" ");$container.data("select2").$container.addClass(originalClasses),$container.data("select2").$container.removeClass("hide-before-select2-init"),$container.on("select2:open",obj.action_select2_open)},obj.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.")},obj.action_select2_open=function(event){var $select=$(this),select2Data=$select.data("select2"),$search=select2Data.$dropdown.find(obj.selector.searchField),originalClasses=obj.getSelectClasses(select2Data.$element).reduce((function(prev,curr){return"hide-if-js"===curr||"tribe-dropdown-created"===curr?prev:prev+" "+curr}));select2Data.$dropdown.addClass(originalClasses),$select.is("[data-search-placeholder]")&&$search.attr("placeholder",$select.data("searchPlaceholder"))},obj.dropdown=function($fields,args){var $elements=$fields.not(".select2-offscreen, .select2-container, "+obj.selector.created.className());return 0===$elements.length||(args||(args={}),$elements.each((function(index,element){obj.element(element,args)}))),$elements},$((function(){$(obj.selector.dropdown).tribe_dropdowns()})),$(window).on("unload",(function(){$(obj.selector.dropdown).tribe_dropdowns()}))}(jQuery,tribe_dropdowns,window.underscore||window._); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/notice-dismiss.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/notice-dismiss.js new file mode 100644 index 000000000..d18fe3564 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/notice-dismiss.js @@ -0,0 +1,40 @@ +/** + * Notice Dismiss structure + */ +( function( $ ) { + // Add / Update a key-value pair in the URL query parameters + function update_query_string( uri, key, value ) { + // remove the hash part before operating on the uri + var i = uri.indexOf( '#' ); + var hash = i === -1 ? '' : uri.substr(i); + + uri = i === -1 ? uri : uri.substr(0, i); + + var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); + var separator = uri.indexOf('?') !== -1 ? "&" : "?"; + if (uri.match(re)) { + uri = uri.replace(re, '$1' + key + "=" + value + '$2'); + } else { + uri = uri + separator + key + "=" + value; + } + return uri + hash; // finally append the hash as well + } + + $( function() { + $( '.tribe-dismiss-notice.is-dismissible' ).on( 'click', '.notice-dismiss', function() { + var dismiss_ajaxurl = update_query_string( + ajaxurl, + 'tribe-dismiss-notice', + $( this ).parents( '.tribe-dismiss-notice' ).data( 'ref' ) + ); + + $.ajax( dismiss_ajaxurl, { + dataType: 'json', + method: 'POST', + data: { + action: 'tribe_notice_dismiss' + } + } ); + } ); + } ); +}( jQuery ) ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/notice-dismiss.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/notice-dismiss.min.js new file mode 100644 index 000000000..258f78ad8 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/notice-dismiss.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +!function($){$((function(){$(".tribe-dismiss-notice.is-dismissible").on("click",".notice-dismiss",(function(){var dismiss_ajaxurl=function update_query_string(uri,key,value){var i=uri.indexOf("#"),hash=-1===i?"":uri.substr(i);uri=-1===i?uri:uri.substr(0,i);var re=new RegExp("([?&])"+key+"=.*?(&|$)","i"),separator=-1!==uri.indexOf("?")?"&":"?";return(uri=uri.match(re)?uri.replace(re,"$1"+key+"="+value+"$2"):uri+separator+key+"="+value)+hash}(ajaxurl,"tribe-dismiss-notice",$(this).parents(".tribe-dismiss-notice").data("ref"));$.ajax(dismiss_ajaxurl,{dataType:"json",method:"POST",data:{action:"tribe_notice_dismiss"}})}))}))}(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/onboarding.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/onboarding.js new file mode 100644 index 000000000..251072e21 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/onboarding.js @@ -0,0 +1,106 @@ +/** + * + * @type {PlainObject} + */ +tribe.onboarding = {}; + +/** + * + * @param {PlainObject} $ jQuery + * @param {PlainObject} obj tribe.onboarding + * + * @return {void} + */ +( function( $, obj ) { + 'use strict'; + var $document = $( document ); + + /** + * Selectors used for configuration and setup + * + * @since 4.14.9 + * + * @type {PlainObject} + */ + obj.selectors = {}; + + /** + * Concatenate the CSS classes for the tooltip. + * + * @param {Array} classes + * @returns {String} String containing the classes for the tooltip. + */ + obj.getTooltipClasses = function( classes ) { + const defaultClasses = [ 'tribe-onboarding__tooltip' ]; + + return defaultClasses.concat( classes ).join( ' ' ); + } + + /** + * Init onboarding steps. + * + * @since 4.14.9 + * + * @return void + */ + obj.initTour = function() { + const steps = TribeOnboardingTour.steps; + const classes = TribeOnboardingTour.classes || []; + + if ( typeof steps === 'undefined' ) { + return; + } + + if ( ! steps.length ) { + return; + } + + introJs().setOptions( { + tooltipClass: obj.getTooltipClasses( classes ), + steps: steps + } ).start(); + }; + + /** + * Init hints. + * + * @since 4.14.9 + * + * @return void + */ + obj.initHints = function() { + const hints = TribeOnboardingHints.hints; + const classes = TribeOnboardingHints.classes || []; + + if ( ! Array.isArray( hints ) || ! hints.length ) { + return; + } + + introJs().setOptions( { + tooltipClass: obj.getTooltipClasses( classes ), + hintButtonLabel: TribeOnboarding.hintButtonLabel, + hintPosition: 'middle-right', + hintAnimation: true, + hints: hints, + } ).addHints(); + }; + + /** + * Handles the initialization of the enhancer. + * + * @since 4.14.9 + * + * @return {void} + */ + obj.ready = function() { + // Init Tour. + obj.initTour(); + + // Init hint. + obj.initHints(); + }; + + // Configure on document ready. + $document.ready( obj.ready ); + +} )( jQuery, tribe.onboarding ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/onboarding.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/onboarding.min.js new file mode 100644 index 000000000..6ee39c815 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/onboarding.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +tribe.onboarding={},function($,obj){"use strict";var $document=$(document);obj.selectors={},obj.getTooltipClasses=function(classes){return["tribe-onboarding__tooltip"].concat(classes).join(" ")},obj.initTour=function(){const steps=TribeOnboardingTour.steps,classes=TribeOnboardingTour.classes||[];void 0!==steps&&steps.length&&introJs().setOptions({tooltipClass:obj.getTooltipClasses(classes),steps:steps}).start()},obj.initHints=function(){const hints=TribeOnboardingHints.hints,classes=TribeOnboardingHints.classes||[];Array.isArray(hints)&&hints.length&&introJs().setOptions({tooltipClass:obj.getTooltipClasses(classes),hintButtonLabel:TribeOnboarding.hintButtonLabel,hintPosition:"middle-right",hintAnimation:!0,hints:hints}).addHints()},obj.ready=function(){obj.initTour(),obj.initHints()},$document.ready(obj.ready)}(jQuery,tribe.onboarding); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/pue-notices.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/pue-notices.js new file mode 100644 index 000000000..6ea8c9286 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/pue-notices.js @@ -0,0 +1,31 @@ +var tribe_plugin_notices = tribe_plugin_notices || {}; + +/** + * Appends license key notifications inline within the plugin table. + * + * This is done via JS because the options for achieving the same things + * server-side are currently limited. + */ +(function( $, my ) { + 'use strict'; + + my.init = function() { + for ( var plugin_file in tribe_plugin_notices ) { + if ( ! tribe_plugin_notices.hasOwnProperty( plugin_file ) ) { // eslint-disable-line no-prototype-builtins,max-len + continue; + } + + var $row = $( tribe_plugin_notices[ plugin_file ].message_row_html ); + var $active_plugin_row = $( 'tr[data-plugin="' + plugin_file + '"].active' ); + + // Add the .update class to the plugin row and append our new row with the update message + $active_plugin_row.addClass( 'update' ).after( $row ); + } + }; + + $( function() { + if ( 'object' === typeof tribe_plugin_notices ) { + my.init(); + } + }); +})( jQuery, tribe_plugin_notices ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/pue-notices.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/pue-notices.min.js new file mode 100644 index 000000000..3da2b76e9 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/pue-notices.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +var tribe_plugin_notices=tribe_plugin_notices||{};!function($,my){"use strict";my.init=function(){for(var plugin_file in tribe_plugin_notices)if(tribe_plugin_notices.hasOwnProperty(plugin_file)){var $row=$(tribe_plugin_notices[plugin_file].message_row_html);$('tr[data-plugin="'+plugin_file+'"].active').addClass("update").after($row)}},$((function(){"object"==typeof tribe_plugin_notices&&my.init()}))}(jQuery,tribe_plugin_notices); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/select2-after.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/select2-after.js new file mode 100644 index 000000000..e70b5cdb7 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/select2-after.js @@ -0,0 +1,59 @@ +jQuery.fn.select2.amd.define( 'jquery.select2TEC', [ + 'jquery', + 'jquery-mousewheel', + + './select2/core', + './select2/defaults', +], function( $, _, Select2, Defaults ) { + if ( $.fn.select2TEC == null ) { + // All methods that should return the element + var thisMethods = [ 'open', 'close', 'destroy' ]; + + $.fn.select2TEC = function( options ) { + options = options || {}; + + if ( typeof options === 'object' ) { + this.each( function() { + var instanceOptions = $.extend( true, {}, options ); + + var instance = new Select2( $( this ), instanceOptions ); // eslint-disable-line no-unused-vars,max-len + } ); + + return this; + } else if ( typeof options === 'string' ) { + var ret; + var args = Array.prototype.slice.call( arguments, 1 ); + + this.each( function() { + var instance = $( this ).data( 'select2' ); + + if ( instance == null && window.console && console.error ) { + console.error( + 'The select2(\'' + options + '\') method was called on an ' + + 'element that is not using Select2.' + ); + } + + ret = instance[ options ].apply( instance, args ); + } ); + + // Check if we should be returning `this` + if ( $.inArray( options, thisMethods ) > -1 ) { + return this; + } + + return ret; + } else { + throw new Error( 'Invalid arguments for Select2: ' + options ); + } + }; + } + + if ( $.fn.select2TEC.defaults == null ) { + $.fn.select2TEC.defaults = Defaults; + } + + return Select2; +} ); + +jQuery.fn.select2.amd.require( 'jquery.select2TEC' ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/select2-after.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/select2-after.min.js new file mode 100644 index 000000000..4819baec8 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/select2-after.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +jQuery.fn.select2.amd.define("jquery.select2TEC",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],(function($,_,Select2,Defaults){if(null==$.fn.select2TEC){var thisMethods=["open","close","destroy"];$.fn.select2TEC=function(options){if("object"==typeof(options=options||{}))return this.each((function(){var instanceOptions=$.extend(!0,{},options);new Select2($(this),instanceOptions)})),this;if("string"==typeof options){var ret,args=Array.prototype.slice.call(arguments,1);return this.each((function(){var instance=$(this).data("select2");null==instance&&window.console&&console.error&&console.error("The select2('"+options+"') method was called on an element that is not using Select2."),ret=instance[options].apply(instance,args)})),$.inArray(options,thisMethods)>-1?this:ret}throw new Error("Invalid arguments for Select2: "+options)}}return null==$.fn.select2TEC.defaults&&($.fn.select2TEC.defaults=Defaults),Select2})),jQuery.fn.select2.amd.require("jquery.select2TEC"); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/tec-a11y-dialog.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/tec-a11y-dialog.js new file mode 100644 index 000000000..ed352221e --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/tec-a11y-dialog.js @@ -0,0 +1,554 @@ +/* global NodeList, Element, define */ + +(function (global) { + 'use strict'; + + var FOCUSABLE_ELEMENTS = ['a[href]', 'area[href]', 'input:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^="-"])']; + var TAB_KEY = 9; + var ESCAPE_KEY = 27; + var focusedBeforeDialog; + var browser = browserTests(); + var scroll = 0; + var scroller = browser.ie || browser.firefox || (browser.chrome && !browser.edge) ? document.documentElement : document.body; + + /** + * Define the constructor to instantiate a dialog + * + * @constructor + * @param {Object} options + */ + function A11yDialog(options) { + this.options = extend({ + appendTarget: '', + bodyLock: true, + 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: true, + trigger: null, + wrapperClasses: 'a11y-dialog', + ariaDescribedBy: '', + ariaLabel: '', + ariaLabelledBy: '', + }, options); + // Prebind the functions that will be bound in addEventListener and + // removeEventListener to avoid losing references + this._rendered = false; + 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 = isString(this.options.trigger) ? getNodes(this.options.trigger, true, document, true) : this.options.trigger; + this.node = null; + + if (!this.trigger) { + console.warn('Lookup for a11y target node failed.'); + return; + } + + // Keep an object of listener types mapped to callback functions + this._listeners = {}; + + // Initialise everything needed for the dialog to work properly + this.create(); + } + + /** + * Set up everything necessary for the dialog to be functioning + * + * @return {this} + */ + A11yDialog.prototype.create = function () { + this.shown = false; + + this.trigger.forEach( + function(opener) { + opener.addEventListener('click', this._show); + }.bind(this) + ); + + // Execute all callbacks registered for the `create` event + this._fire('create'); + + return this; + }; + + /** + * Render the dialog + * + * @return {this} + */ + A11yDialog.prototype.render = function (event) { + var contentNode = getNodes(this.trigger[0].dataset.content)[0]; + if (!contentNode) { + return this; + } + var ariaDescribedBy = this.options.ariaDescribedBy ? 'aria-describedby="' + this.options.ariaDescribedBy + '" ' : ''; + var ariaLabel = this.options.ariaLabel ? 'aria-label="' + this.options.ariaLabel + '"' : ''; + var ariaLabelledBy = this.options.ariaLabelledBy ? 'aria-labelledby="' + this.options.ariaLabelledBy + '"' : ''; + var node = document.createElement('div'); + node.setAttribute('aria-hidden', 'true'); + node.classList.add(this.options.wrapperClasses); + node.innerHTML = '
    \n' + + ' '; + + var appendTarget = this.trigger; + if (this.options.appendTarget.length) { + appendTarget = document.querySelectorAll(this.options.appendTarget)[0] || this.trigger; + } + insertAfter(node, appendTarget); + this.node = node; + this.overlay = getNodes('a11y-overlay', false, this.node)[0]; + this.closeButton = getNodes('a11y-close-button', false, this.node)[0]; + if (this.options.overlayClickCloses) { + this.overlay.addEventListener('click', this._hide); + } + this.closeButton.addEventListener('click', this._hide); + this._rendered = true; + this._fire('render', event); + return this; + }; + + /** + * Show the dialog element, disable all the targets (siblings), trap the + * current focus within it, listen for some specific key presses and fire all + * registered callbacks for `show` event + * + * @param {Event} event + * @return {this} + */ + A11yDialog.prototype.show = function (event) { + // If the dialog is already open, abort + if (this.shown) { + return this; + } + + if (!this._rendered) { + this.render(event); + } + + if (!this._rendered) { + return this; + } + + this.shown = true; + this._applyOpenEffect(); + this.node.setAttribute('aria-hidden', 'false'); + if (this.options.bodyLock) { + lock(); + } + + // Keep a reference to the currently focused element to be able to restore + // it later, then set the focus to the first focusable child of the dialog + // element + focusedBeforeDialog = document.activeElement; + setFocusToFirstItem(this.node); + + // Bind a focus event listener to the body element to make sure the focus + // stays trapped inside the dialog while open, and start listening for some + // specific key presses (TAB and ESC) + document.body.addEventListener('focus', this._maintainFocus, true); + document.addEventListener('keydown', this._bindKeypress); + + // Execute all callbacks registered for the `show` event + this._fire('show', event); + + return this; + }; + + /** + * Hide the dialog element, enable all the targets (siblings), restore the + * focus to the previously active element, stop listening for some specific + * key presses and fire all registered callbacks for `hide` event + * + * @param {Event} event + * @return {this} + */ + A11yDialog.prototype.hide = function (event) { + // If the dialog is already closed, abort + if (!this.shown) { + return this; + } + + this.shown = false; + if (this.options.effect === 'none') { + this.node.setAttribute('aria-hidden', 'true'); + } + this._applyCloseEffect(); + + if (this.options.bodyLock) { + unlock(); + } + + // If their was a focused element before the dialog was opened, restore the + // focus back to it + if (focusedBeforeDialog) { + focusedBeforeDialog.focus(); + } + + // Remove the focus event listener to the body element and stop listening + // for specific key presses + document.body.removeEventListener('focus', this._maintainFocus, true); + document.removeEventListener('keydown', this._bindKeypress); + + // Execute all callbacks registered for the `hide` event + this._fire('hide', event); + + return this; + }; + + /** + * Destroy the current instance (after making sure the dialog has been hidden) + * and remove all associated listeners from dialog openers and closers + * + * @return {this} + */ + A11yDialog.prototype.destroy = function () { + // Hide the dialog to avoid destroying an open instance + this.hide(); + + this.trigger.forEach( + function(opener) { + opener.removeEventListener('click', this._show); + }.bind(this) + ); + + if (this._rendered) { + if ( this.options.overlayClickCloses ) { + this.overlay.removeEventListener( 'click', this._hide ); + } + this.closeButton.removeEventListener( 'click', this._hide ); + } + + // Execute all callbacks registered for the `destroy` event + this._fire('destroy'); + + // Keep an object of listener types mapped to callback functions + this._listeners = {}; + + return this; + }; + + /** + * Register a new callback for the given event type + * + * @param {string} type + * @param {Function} handler + */ + A11yDialog.prototype.on = function (type, handler) { + if (typeof this._listeners[type] === 'undefined') { + this._listeners[type] = []; + } + + this._listeners[type].push(handler); + + return this; + }; + + /** + * Unregister an existing callback for the given event type + * + * @param {string} type + * @param {Function} handler + */ + A11yDialog.prototype.off = function (type, handler) { + var index = this._listeners[type].indexOf(handler); + + if (index > -1) { + this._listeners[type].splice(index, 1); + } + + return this; + }; + + /** + * Iterate over all registered handlers for given type and call them all with + * the dialog element as first argument, event as second argument (if any). + * + * @access private + * @param {string} type + * @param {Event} event + */ + A11yDialog.prototype._fire = function (type, event) { + var listeners = this._listeners[type] || []; + + listeners.forEach(function (listener) { + listener(this.node, event); + }.bind(this)); + }; + + /** + * Private event handler used when listening to some specific key presses + * (namely ESCAPE and TAB) + * + * @access private + * @param {Event} event + */ + A11yDialog.prototype._bindKeypress = function (event) { + // If the dialog is shown and the ESCAPE key is being pressed, prevent any + // further effects from the ESCAPE key and hide the dialog + if (this.shown && event.which === ESCAPE_KEY) { + event.preventDefault(); + this.hide(); + } + + // If the dialog is shown and the TAB key is being pressed, make sure the + // focus stays trapped within the dialog element + if (this.shown && event.which === TAB_KEY) { + trapTabKey(this.node, event); + } + }; + + /** + * Private event handler used when making sure the focus stays within the + * currently open dialog + * + * @access private + * @param {Event} event + */ + A11yDialog.prototype._maintainFocus = function (event) { + // If the dialog is shown and the focus is not within the dialog element, + // move it back to its first focusable child + if (this.shown && !this.node.contains(event.target)) { + setFocusToFirstItem(this.node); + } + }; + + /** + * Applies effects to the opening of the dialog. + * + * @access private + */ + + A11yDialog.prototype._applyOpenEffect = function () { + var _this = this; + setTimeout(function() { + _this.node.classList.add('a11y-dialog--open'); + }, 50); + if (this.options.effect === 'fade') { + this.node.style.opacity = '0'; + this.node.style.transition = 'opacity ' + this.options.effectSpeed + 'ms ' + this.options.effectEasing; + setTimeout(function() { + _this.node.style.opacity = '1'; + }, 50); + } + }; + + /** + * Applies effects to the closing of the dialog. + * + * @access private + */ + + A11yDialog.prototype._applyCloseEffect = function () { + var _this = this; + this.node.classList.remove('a11y-dialog--open'); + if (this.options.effect === 'fade') { + this.node.style.opacity = '0'; + setTimeout(function() { + _this.node.style.transition = ''; + _this.node.setAttribute('aria-hidden', 'true'); + }, this.options.effectSpeed); + } else if (this.options.effect === 'css') { + setTimeout(function() { + _this.node.setAttribute('aria-hidden', 'true'); + }, this.options.effectSpeed); + } + }; + + /** + * Highly efficient function to convert a nodelist into a standard array. Allows you to run Array.forEach + * + * @param {Element|NodeList} elements to convert + * @returns {Array} Of converted elements + */ + + function convertElements(elements) { + var converted = []; + var i = elements.length; + for (i; i--; converted.unshift(elements[i])); // eslint-disable-line + + return converted; + } + + /** + * Should be used at all times for getting nodes throughout our app. Please use the data-js attribute whenever possible + * + * @param selector The selector string to search for. If arg 4 is false (default) then we search for [data-js="selector"] + * @param convert Convert the NodeList to an array? Then we can Array.forEach directly. Uses convertElements from above + * @param node Parent node to search from. Defaults to document + * @param custom Is this a custom selector where we don't want to use the data-js attribute? + * @returns {NodeList} + */ + + function getNodes(selector, convert, node, custom) { + if (!node) { + node = document; + } + var selectorString = custom ? selector : '[data-js="' + selector + '"]'; + var nodes = node.querySelectorAll(selectorString); + if (convert) { + nodes = convertElements(nodes); + } + return nodes; + } + + /** + * Query the DOM for nodes matching the given selector, scoped to context (or + * the whole document) + * + * @param {String} selector + * @param {Element} [context = document] + * @return {Array} + */ + function $$(selector, context) { + return convertElements((context || document).querySelectorAll(selector)); + } + + /** + * Set the focus to the first focusable child of the given element + * + * @param {Element} node + */ + function setFocusToFirstItem(node) { + var focusableChildren = getFocusableChildren(node); + + if (focusableChildren.length) { + focusableChildren[0].focus(); + } + } + + /** + * Insert a node after another node + * + * @param newNode {Element|NodeList} + * @param referenceNode {Element|NodeList} + */ + function insertAfter(newNode, referenceNode) { + referenceNode.parentNode.insertBefore(newNode, referenceNode.nextElementSibling); + } + + /** + * Get the focusable children of the given element + * + * @param {Element} node + * @return {Array} + */ + function getFocusableChildren(node) { + return $$(FOCUSABLE_ELEMENTS.join(','), node).filter(function (child) { + return !!(child.offsetWidth || child.offsetHeight || child.getClientRects().length); + }); + } + + function isString(x) { + return Object.prototype.toString.call(x) === "[object String]" + } + + function extend(obj, src) { + Object.keys(src).forEach(function(key) { obj[key] = src[key]; }); + return obj; + } + + /** + * Trap the focus inside the given element + * + * @param {Element} node + * @param {Event} event + */ + function trapTabKey(node, event) { + var focusableChildren = getFocusableChildren(node); + var focusedItemIndex = focusableChildren.indexOf(document.activeElement); + + // If the SHIFT key is being pressed while tabbing (moving backwards) and + // the currently focused item is the first one, move the focus to the last + // focusable item from the dialog element + if (event.shiftKey && focusedItemIndex === 0) { + focusableChildren[focusableChildren.length - 1].focus(); + event.preventDefault(); + // If the SHIFT key is not being pressed (moving forwards) and the currently + // focused item is the last one, move the focus to the first focusable item + // from the dialog element + } else if (!event.shiftKey && focusedItemIndex === focusableChildren.length - 1) { + focusableChildren[0].focus(); + event.preventDefault(); + } + } + + /** + * @function lock + * @description Lock the body at a particular position and prevent scroll, + * use margin to simulate original scroll position. + */ + + function lock() { + scroll = scroller.scrollTop; + document.body.classList.add('a11y-dialog__body-locked'); + document.body.style.position = 'fixed'; + document.body.style.width = '100%'; + document.body.style.marginTop = '-' + scroll + 'px'; + } + + /** + * @function unlock + * @description Unlock the body and return it to its actual scroll position. + */ + + function unlock() { + document.body.style.marginTop = ''; + document.body.style.position = ''; + document.body.style.width = ''; + scroller.scrollTop = scroll; + document.body.classList.remove('a11y-dialog__body-locked'); + } + + function browserTests() { + var android = /(android)/i.test(navigator.userAgent); + var chrome = !!window.chrome; + var firefox = typeof InstallTrigger !== 'undefined'; + var ie = document.documentMode; + var edge = !ie && !!window.StyleMedia; + var ios = !!navigator.userAgent.match(/(iPod|iPhone|iPad)/i); + var iosMobile = !!navigator.userAgent.match(/(iPod|iPhone)/i); + var opera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; + var safari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0 || !chrome && !opera && window.webkitAudioContext !== 'undefined'; // eslint-disable-line + var os = navigator.platform; + + return { + android: android, + chrome: chrome, + edge: edge, + firefox: firefox, + ie: ie, + ios: ios, + iosMobile: iosMobile, + opera: opera, + safari: safari, + os: os, + } + } + + if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = A11yDialog; + } else if (typeof define === 'function' && define.amd) { + define('A11yDialog', [], function () { + return A11yDialog; + }); + } else if (typeof global === 'object') { + global.A11yDialog = A11yDialog; + } +}(typeof global !== 'undefined' ? global : window)); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/tec-a11y-dialog.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/tec-a11y-dialog.min.js new file mode 100644 index 000000000..ebaca905a --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/tec-a11y-dialog.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +!function(global){"use strict";var focusedBeforeDialog,FOCUSABLE_ELEMENTS=["a[href]","area[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])'],browser=function browserTests(){var android=/(android)/i.test(navigator.userAgent),chrome=!!window.chrome,firefox="undefined"!=typeof InstallTrigger,ie=document.documentMode,edge=!ie&&!!window.StyleMedia,ios=!!navigator.userAgent.match(/(iPod|iPhone|iPad)/i),iosMobile=!!navigator.userAgent.match(/(iPod|iPhone)/i),opera=!!window.opera||navigator.userAgent.indexOf(" OPR/")>=0,safari=Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0||!chrome&&!opera&&"undefined"!==window.webkitAudioContext,os=navigator.platform;return{android:android,chrome:chrome,edge:edge,firefox:firefox,ie:ie,ios:ios,iosMobile:iosMobile,opera:opera,safari:safari,os:os}}(),scroll=0,scroller=browser.ie||browser.firefox||browser.chrome&&!browser.edge?document.documentElement:document.body;function A11yDialog(options){this.options=function extend(obj,src){return Object.keys(src).forEach((function(key){obj[key]=src[key]})),obj}({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",ariaDescribedBy:"",ariaLabel:"",ariaLabelledBy:""},options),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=function isString(x){return"[object String]"===Object.prototype.toString.call(x)}(this.options.trigger)?getNodes(this.options.trigger,!0,document,!0):this.options.trigger,this.node=null,this.trigger?(this._listeners={},this.create()):console.warn("Lookup for a11y target node failed.")}function convertElements(elements){for(var converted=[],i=elements.length;i--;converted.unshift(elements[i]));return converted}function getNodes(selector,convert,node,custom){node||(node=document);var selectorString=custom?selector:'[data-js="'+selector+'"]',nodes=node.querySelectorAll(selectorString);return convert&&(nodes=convertElements(nodes)),nodes}function setFocusToFirstItem(node){var focusableChildren=getFocusableChildren(node);focusableChildren.length&&focusableChildren[0].focus()}function getFocusableChildren(node){return function $$(selector,context){return convertElements((context||document).querySelectorAll(selector))}(FOCUSABLE_ELEMENTS.join(","),node).filter((function(child){return!!(child.offsetWidth||child.offsetHeight||child.getClientRects().length)}))}A11yDialog.prototype.create=function(){return this.shown=!1,this.trigger.forEach(function(opener){opener.addEventListener("click",this._show)}.bind(this)),this._fire("create"),this},A11yDialog.prototype.render=function(event){var contentNode=getNodes(this.trigger[0].dataset.content)[0];if(!contentNode)return this;var ariaDescribedBy=this.options.ariaDescribedBy?'aria-describedby="'+this.options.ariaDescribedBy+'" ':"",ariaLabel=this.options.ariaLabel?'aria-label="'+this.options.ariaLabel+'"':"",ariaLabelledBy=this.options.ariaLabelledBy?'aria-labelledby="'+this.options.ariaLabelledBy+'"':"",node=document.createElement("div");node.setAttribute("aria-hidden","true"),node.classList.add(this.options.wrapperClasses),node.innerHTML='
    \n ";var appendTarget=this.trigger;return this.options.appendTarget.length&&(appendTarget=document.querySelectorAll(this.options.appendTarget)[0]||this.trigger),function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextElementSibling)}(node,appendTarget),this.node=node,this.overlay=getNodes("a11y-overlay",!1,this.node)[0],this.closeButton=getNodes("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",event),this},A11yDialog.prototype.show=function(event){return this.shown?this:(this._rendered||this.render(event),this._rendered?(this.shown=!0,this._applyOpenEffect(),this.node.setAttribute("aria-hidden","false"),this.options.bodyLock&&function lock(){scroll=scroller.scrollTop,document.body.classList.add("a11y-dialog__body-locked"),document.body.style.position="fixed",document.body.style.width="100%",document.body.style.marginTop="-"+scroll+"px"}(),focusedBeforeDialog=document.activeElement,setFocusToFirstItem(this.node),document.body.addEventListener("focus",this._maintainFocus,!0),document.addEventListener("keydown",this._bindKeypress),this._fire("show",event),this):this)},A11yDialog.prototype.hide=function(event){return this.shown?(this.shown=!1,"none"===this.options.effect&&this.node.setAttribute("aria-hidden","true"),this._applyCloseEffect(),this.options.bodyLock&&function unlock(){document.body.style.marginTop="",document.body.style.position="",document.body.style.width="",scroller.scrollTop=scroll,document.body.classList.remove("a11y-dialog__body-locked")}(),focusedBeforeDialog&&focusedBeforeDialog.focus(),document.body.removeEventListener("focus",this._maintainFocus,!0),document.removeEventListener("keydown",this._bindKeypress),this._fire("hide",event),this):this},A11yDialog.prototype.destroy=function(){return this.hide(),this.trigger.forEach(function(opener){opener.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},A11yDialog.prototype.on=function(type,handler){return void 0===this._listeners[type]&&(this._listeners[type]=[]),this._listeners[type].push(handler),this},A11yDialog.prototype.off=function(type,handler){var index=this._listeners[type].indexOf(handler);return index>-1&&this._listeners[type].splice(index,1),this},A11yDialog.prototype._fire=function(type,event){(this._listeners[type]||[]).forEach(function(listener){listener(this.node,event)}.bind(this))},A11yDialog.prototype._bindKeypress=function(event){this.shown&&27===event.which&&(event.preventDefault(),this.hide()),this.shown&&9===event.which&&function trapTabKey(node,event){var focusableChildren=getFocusableChildren(node),focusedItemIndex=focusableChildren.indexOf(document.activeElement);event.shiftKey&&0===focusedItemIndex?(focusableChildren[focusableChildren.length-1].focus(),event.preventDefault()):event.shiftKey||focusedItemIndex!==focusableChildren.length-1||(focusableChildren[0].focus(),event.preventDefault())}(this.node,event)},A11yDialog.prototype._maintainFocus=function(event){this.shown&&!this.node.contains(event.target)&&setFocusToFirstItem(this.node)},A11yDialog.prototype._applyOpenEffect=function(){var _this=this;setTimeout((function(){_this.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(){_this.node.style.opacity="1"}),50))},A11yDialog.prototype._applyCloseEffect=function(){var _this=this;this.node.classList.remove("a11y-dialog--open"),"fade"===this.options.effect?(this.node.style.opacity="0",setTimeout((function(){_this.node.style.transition="",_this.node.setAttribute("aria-hidden","true")}),this.options.effectSpeed)):"css"===this.options.effect&&setTimeout((function(){_this.node.setAttribute("aria-hidden","true")}),this.options.effectSpeed)},"undefined"!=typeof module&&void 0!==module.exports?module.exports=A11yDialog:"function"==typeof define&&define.amd?define("A11yDialog",[],(function(){return A11yDialog})):"object"==typeof global&&(global.A11yDialog=A11yDialog)}("undefined"!=typeof global?global:window); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/timepicker.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/timepicker.js new file mode 100644 index 000000000..0a5a53a5c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/timepicker.js @@ -0,0 +1,111 @@ +/** + * @todo Move this to use the new `tribe` object, tribe.timepicker + * @type {object} + */ +var tribe_timepickers = tribe_timepickers || {}; + +( function ( $, obj ) { + 'use strict'; + + obj.selector = { + container : '.tribe-datetime-block', + timepicker : '.tribe-timepicker', + all_day : '#allDayCheckbox', + timezone : '.tribe-field-timezone', + input : 'select, input', + }; + + obj.timepicker = { + opts: { + forceRoundTime: false, + step: 30, + } + }; + + obj.timezone = { + link: _.template( '<%= label %> <%= timezone %>' ), // eslint-disable-line max-len + }; + + obj.$ = {}; + + obj.container = function( k, container ) { + var $container = $( container ); + var $allDay = $container.find( obj.selector.all_day ); + var $timepicker = $container.find( obj.selector.timepicker ); + var $timezone = $container.find( obj.selector.timezone ).not( obj.selector.input ); + var $input = $container.find( obj.selector.timezone ).filter( obj.selector.input ); + + // Create the Link + var $timezoneLink = $( obj.timezone.link( { + label: $input.data( 'timezoneLabel' ), + timezone: $input.data( 'timezoneValue' ), + } ) ); + + // Toggle Timepickers on All Day change + $allDay.on( 'change', function() { + if ( true === $allDay.prop( 'checked' ) ) { + $timepicker.hide(); + } else { + $timepicker.show(); + } + } ).trigger( 'change' ); + + obj.setup_timepickers( $timepicker ); + + // Attach a Click action the Timezone Link + $timezoneLink.on( 'click', function( e ) { + $timezone = $container.find( obj.selector.timezone ).filter( '.select2-container' ); + e.preventDefault(); + + $timezoneLink.hide(); + $timezone.show(); + } ); + + // Append the Link to the Timezone + $input.before( $timezoneLink ); + }; + + obj.init = function() { + obj.$.containers = $( obj.selector.container ); + obj.$.containers.each( obj.container ); + }; + + /** + * Initializes timepickers + */ + obj.setup_timepickers = function( $timepickers ) { + // Setup all Timepickers + $timepickers.each( function() { + var $item = $( this ); + var opts = $.extend( {}, obj.timepicker.opts ); + + if ( $item.data( 'format' ) ) { + opts.timeFormat = $item.data( 'format' ); + } + + // By default the step is 15 + if ( $item.data( 'step' ) ) { + opts.step = $item.data( 'step' ); + } + + // Passing anything but 0 or 'false' will make it round to the nearest step + var round = $item.data( 'round' ); + if ( + round && + 0 != round && // eslint-disable-line eqeqeq + 'false' !== round + ) { + opts.forceRoundTime = true; + } + + if ( 'undefined' !== typeof $.fn.tribeTimepicker ) { + $item.tribeTimepicker( opts ).trigger( 'change' ); + } else { + // @deprecated 4.6.1 + $item.timepicker( opts ).trigger( 'change' ); + } + } ); + }; + + $( obj.init ); +} ( jQuery, tribe_timepickers ) ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/timepicker.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/timepicker.min.js new file mode 100644 index 000000000..df46ef7e4 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/timepicker.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +var tribe_timepickers=tribe_timepickers||{};!function($,obj){"use strict";obj.selector={container:".tribe-datetime-block",timepicker:".tribe-timepicker",all_day:"#allDayCheckbox",timezone:".tribe-field-timezone",input:"select, input"},obj.timepicker={opts:{forceRoundTime:!1,step:30}},obj.timezone={link:_.template('<%= label %> <%= timezone %>')},obj.$={},obj.container=function(k,container){var $container=$(container),$allDay=$container.find(obj.selector.all_day),$timepicker=$container.find(obj.selector.timepicker),$timezone=$container.find(obj.selector.timezone).not(obj.selector.input),$input=$container.find(obj.selector.timezone).filter(obj.selector.input),$timezoneLink=$(obj.timezone.link({label:$input.data("timezoneLabel"),timezone:$input.data("timezoneValue")}));$allDay.on("change",(function(){!0===$allDay.prop("checked")?$timepicker.hide():$timepicker.show()})).trigger("change"),obj.setup_timepickers($timepicker),$timezoneLink.on("click",(function(e){$timezone=$container.find(obj.selector.timezone).filter(".select2-container"),e.preventDefault(),$timezoneLink.hide(),$timezone.show()})),$input.before($timezoneLink)},obj.init=function(){obj.$.containers=$(obj.selector.container),obj.$.containers.each(obj.container)},obj.setup_timepickers=function($timepickers){$timepickers.each((function(){var $item=$(this),opts=$.extend({},obj.timepicker.opts);$item.data("format")&&(opts.timeFormat=$item.data("format")),$item.data("step")&&(opts.step=$item.data("step"));var round=$item.data("round");round&&0!=round&&"false"!==round&&(opts.forceRoundTime=!0),void 0!==$.fn.tribeTimepicker?$item.tribeTimepicker(opts).trigger("change"):$item.timepicker(opts).trigger("change")}))},$(obj.init)}(jQuery,tribe_timepickers); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/tooltip.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/tooltip.js new file mode 100644 index 000000000..d2941f384 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/tooltip.js @@ -0,0 +1,64 @@ +var tribe = tribe || {}; // eslint-disable-line no-redeclare +tribe.tooltip = tribe.tooltip || {}; + +( function ( $, obj ) { + 'use strict'; + + var $document = $( document ); + + /** + * Object containing the relevant selectors + * + * @since 4.9.12 + * + * @return {Object} + */ + obj.selectors = { + tooltip: '.tribe-tooltip', + active: 'active', + }; + + /** + * Setup the live listener to anything that lives inside of the document + * that matches the tooltip selector for a click action. + * + * @since 4.9.12 + * + * @return {void} + */ + obj.setup = function () { + $document.on( 'click', obj.selectors.tooltip, obj.onClick ); + + $document.on( 'click', function( event ) { + var tooltip = event.target.closest( obj.selectors.tooltip ); + if ( ! tooltip ) { + $( obj.selectors.tooltip ).each( function () { + $( this ).removeClass( obj.selectors.active ).attr( 'aria-expanded', false ); + } ); + } + } ); + }; + + /** + * When a tooltip is clicked we setup A11y for the element + * + * @since 4.9.12 + * + * @return {void} + */ + obj.onClick = function () { + var $tooltip = $( this ).closest( obj.selectors.tooltip ); + var add = ! $tooltip.hasClass( obj.selectors.active ); + + $( obj.selectors.tooltip ).each( function () { + $( this ).removeClass( obj.selectors.active ).attr( 'aria-expanded', false ); + } ); + + if ( add ) { + $( $tooltip ).addClass( obj.selectors.active ).attr( 'aria-expanded', true ); + } + }; + + $( obj.setup ); + +} )( jQuery, tribe.tooltip ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/tooltip.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/tooltip.min.js new file mode 100644 index 000000000..f1733c177 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/tooltip.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +var tribe=tribe||{};tribe.tooltip=tribe.tooltip||{},function($,obj){"use strict";var $document=$(document);obj.selectors={tooltip:".tribe-tooltip",active:"active"},obj.setup=function(){$document.on("click",obj.selectors.tooltip,obj.onClick),$document.on("click",(function(event){event.target.closest(obj.selectors.tooltip)||$(obj.selectors.tooltip).each((function(){$(this).removeClass(obj.selectors.active).attr("aria-expanded",!1)}))}))},obj.onClick=function(){var $tooltip=$(this).closest(obj.selectors.tooltip),add=!$tooltip.hasClass(obj.selectors.active);$(obj.selectors.tooltip).each((function(){$(this).removeClass(obj.selectors.active).attr("aria-expanded",!1)})),add&&$($tooltip).addClass(obj.selectors.active).attr("aria-expanded",!0)},$(obj.setup)}(jQuery,tribe.tooltip); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-common.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-common.js new file mode 100644 index 000000000..57f5d4bb3 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-common.js @@ -0,0 +1,37 @@ +// Run some magic to allow a better handling of class names for jQuery.hasClass type of methods +String.prototype.className = function () { + // Prevent Non Strings to be included + if ( + ( + 'string' !== typeof this + && ! this instanceof String // eslint-disable-line no-unsafe-negation + ) + || 'function' !== typeof this.replace + ) { + return this; + } + + return this.replace( '.', '' ); +}; + +// Add a method to convert ID/Classes into JS easy/safe variable +String.prototype.varName = function () { + // Prevent Non Strings to be included + if ( + ( + 'string' !== typeof this + && ! this instanceof String // eslint-disable-line no-unsafe-negation + ) + || 'function' !== typeof this.replace + ) { + return this; + } + + return this.replace( '-', '_' ); +}; + +/** + * Creates a global Tribe Variable where we should start to store all the things + * @type {object} + */ +var tribe = tribe || {}; // eslint-disable-line no-redeclare diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-common.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-common.min.js new file mode 100644 index 000000000..f478c61e9 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-common.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +String.prototype.className=function(){return"string"!=typeof this&&!this instanceof String||"function"!=typeof this.replace?this:this.replace(".","")},String.prototype.varName=function(){return"string"!=typeof this&&!this instanceof String||"function"!=typeof this.replace?this:this.replace("-","_")};var tribe=tribe||{}; \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-datatables.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-datatables.js new file mode 100644 index 000000000..df69b0150 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-datatables.js @@ -0,0 +1,200 @@ +window.tribe_data_table = null; + +( function( $ ) { + 'use strict'; + + $.fn.tribeDataTable = function( options ) { + var settings = $.extend( { + language: { + lengthMenu : tribe_l10n_datatables.length_menu, + emptyTable : tribe_l10n_datatables.emptyTable, + info : tribe_l10n_datatables.info, + infoEmpty : tribe_l10n_datatables.info_empty, + infoFiltered : tribe_l10n_datatables.info_filtered, + zeroRecords : tribe_l10n_datatables.zero_records, + search : tribe_l10n_datatables.search, + paginate : { + next : tribe_l10n_datatables.pagination.next, + previous : tribe_l10n_datatables.pagination.previous, + }, + aria : { + sortAscending : tribe_l10n_datatables.aria.sort_ascending, + sortDescending : tribe_l10n_datatables.aria.sort_descending + }, + select: { + rows: { + '0': tribe_l10n_datatables.select.rows[0], + _: tribe_l10n_datatables.select.rows._, + '1': tribe_l10n_datatables.select.rows[1] + } + } + }, + lengthMenu: [ + [10, 25, 50, -1], + [10, 25, 50, tribe_l10n_datatables.pagination.all ] + ], + }, options ); + + var only_data = false; + if ( this.is( '.dataTable' ) ) { + only_data = true; + } + + var methods = { + setVisibleCheckboxes: function( $table, table, value ) { + var $thead = $table.find( 'thead' ); + var $tfoot = $table.find( 'tfoot' ); + var $header_checkbox = $thead.find( '.column-cb input:checkbox' ); + var $footer_checkbox = $tfoot.find( '.column-cb input:checkbox' ); + + // Defaults to false + if ( 'undefined' === typeof value ) { + value = false; + } + + $table.find( 'tbody .check-column input:checkbox' ).prop( 'checked', value ); + $header_checkbox.prop( 'checked', value ); + $footer_checkbox.prop( 'checked', value ); + + if ( value ) { + table.rows( { page: 'current' } ).select(); + methods.addGlobalCheckboxLine( $table, table ) + } else { + $table.find( '.tribe-datatables-all-pages-checkbox' ).remove(); + table.rows().deselect(); + } + }, + addGlobalCheckboxLine: function( $table, table ) { + // Remove the Previous All Pages checkbox + $table.find( '.tribe-datatables-all-pages-checkbox' ).remove(); + + var $thead = $table.find( 'thead' ); + + var $link = $( '' ).attr( 'href', '#select-all' ).text( tribe_l10n_datatables.select_all_link ); // eslint-disable-line max-len + var $text = $( '
    ' ).css( 'text-align', 'center' ).text( tribe_l10n_datatables.all_selected_text ).append( $link ); // eslint-disable-line max-len + var $column = $( '' ).attr( 'colspan', table.columns()[0].length ).append( $text ); + var $row = $( '' ).addClass( 'tribe-datatables-all-pages-checkbox' ).append( $column ); + + $link.one( 'click', function( event ) { + // Selects all items (even the not visible ones) + table.rows().select(); + + $link.text( tribe_l10n_datatables.clear_selection ).one( 'click', function() { + methods.setVisibleCheckboxes( $table, table, false ); + + event.preventDefault(); + return false; + } ); + + event.preventDefault(); + return false; + } ); + + $thead.append( $row ); + }, + togglePageCheckbox: function( $checkbox, table ) { + var $table = $checkbox.closest( '.dataTable' ); + methods.setVisibleCheckboxes( $table, table, $checkbox.is( ':checked' ) ); + }, + toggleRowCheckbox: function( $checkbox, table ) { + var $row = $checkbox.closest( 'tr' ); + + if ( $checkbox.is( ':checked' ) ) { + table.row( $row ).select(); + + let $tableBody = $checkbox.closest( '.dataTable tbody' ); + let $checkCells = $tableBody.find( ".check-column" ); + for ( let checkCell of $checkCells ) { /* eslint-disable-line es5/no-for-of */ + let checkboxInput = checkCell.querySelector( 'input' ); + let thisRow = checkCell.closest( 'tr' ); + if ( checkboxInput.checked ) { + table.row( thisRow ).select(); + } + } + + return; + } + + table.row( $row ).deselect(); + $checkbox + .closest( '.dataTable' ) + .find( 'thead .column-cb input:checkbox, tfoot .column-cb input:checkbox' ) + .prop( 'checked', false ); + }, + /** + * On ctrl/spacebar click to multi-select rows, run through all the rows and run select() on any that are checked. + * This happens on change event as click is too early and will not detect the entire interval of selected events. + * + * @since 4.15.1 + * + * @param {jQuery} $checkbox The jQuery object of the checkbox. + * @param {DataTable} table The DataTable object. + */ + toggleMultipleRowCheckboxes: function( $checkbox, table ) { + const $tableBody = $checkbox.closest( '.dataTable tbody' ); + const $checkCells = $tableBody.find( ".check-column" ); + for ( let checkCell of $checkCells ) { /* eslint-disable-line es5/no-for-of */ + const checkboxInput = checkCell.querySelector( 'input' ); + const thisRow = checkCell.closest( 'tr' ); + if ( checkboxInput.checked ) { + table.row( thisRow ).select(); + } + } + } + }; + + return this.each( function() { + var $el = $( this ); + var table; + + if ( only_data ) { + table = $el.DataTable(); + } else { + table = $el.DataTable( settings ); + } + + window.tribe_data_table = table; + + if ( 'undefined' !== typeof settings.data ) { + table.clear().draw(); + table.rows.add( settings.data ); + table.draw(); + } + + var resetSelection = function ( event, settings ) { // eslint-disable-line no-unused-vars + methods.setVisibleCheckboxes( $el, table, false ); + }; + + // If anything happens to the page, we reset the Checked ones + $el.on( { + 'order.dt': resetSelection, + 'search.dt': resetSelection, + 'length.dt': resetSelection + } ); + + $el.on( + 'click', + 'thead .column-cb input:checkbox, tfoot .column-cb input:checkbox', + function() { + methods.togglePageCheckbox( $( this ), table ); + } + ); + + $el.on( + 'click', + 'tbody .check-column input:checkbox', + function() { + methods.toggleRowCheckbox( $( this ), table ); + } + ); + + $el.on( + 'change', + 'tbody .check-column input:checkbox', + function() { + methods.toggleMultipleRowCheckboxes( $( this ), table ); + } + ); + } ); + }; +} )( jQuery ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-datatables.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-datatables.min.js new file mode 100644 index 000000000..ff8a2761c --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-datatables.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +window.tribe_data_table=null,function($){"use strict";$.fn.tribeDataTable=function(options){var settings=$.extend({language:{lengthMenu:tribe_l10n_datatables.length_menu,emptyTable:tribe_l10n_datatables.emptyTable,info:tribe_l10n_datatables.info,infoEmpty:tribe_l10n_datatables.info_empty,infoFiltered:tribe_l10n_datatables.info_filtered,zeroRecords:tribe_l10n_datatables.zero_records,search:tribe_l10n_datatables.search,paginate:{next:tribe_l10n_datatables.pagination.next,previous:tribe_l10n_datatables.pagination.previous},aria:{sortAscending:tribe_l10n_datatables.aria.sort_ascending,sortDescending:tribe_l10n_datatables.aria.sort_descending},select:{rows:{0:tribe_l10n_datatables.select.rows[0],_:tribe_l10n_datatables.select.rows._,1:tribe_l10n_datatables.select.rows[1]}}},lengthMenu:[[10,25,50,-1],[10,25,50,tribe_l10n_datatables.pagination.all]]},options),only_data=!1;this.is(".dataTable")&&(only_data=!0);var methods={setVisibleCheckboxes:function($table,table,value){var $thead=$table.find("thead"),$tfoot=$table.find("tfoot"),$header_checkbox=$thead.find(".column-cb input:checkbox"),$footer_checkbox=$tfoot.find(".column-cb input:checkbox");void 0===value&&(value=!1),$table.find("tbody .check-column input:checkbox").prop("checked",value),$header_checkbox.prop("checked",value),$footer_checkbox.prop("checked",value),value?(table.rows({page:"current"}).select(),methods.addGlobalCheckboxLine($table,table)):($table.find(".tribe-datatables-all-pages-checkbox").remove(),table.rows().deselect())},addGlobalCheckboxLine:function($table,table){$table.find(".tribe-datatables-all-pages-checkbox").remove();var $thead=$table.find("thead"),$link=$("").attr("href","#select-all").text(tribe_l10n_datatables.select_all_link),$text=$("
    ").css("text-align","center").text(tribe_l10n_datatables.all_selected_text).append($link),$column=$("").attr("colspan",table.columns()[0].length).append($text),$row=$("").addClass("tribe-datatables-all-pages-checkbox").append($column);$link.one("click",(function(event){return table.rows().select(),$link.text(tribe_l10n_datatables.clear_selection).one("click",(function(){return methods.setVisibleCheckboxes($table,table,!1),event.preventDefault(),!1})),event.preventDefault(),!1})),$thead.append($row)},togglePageCheckbox:function($checkbox,table){var $table=$checkbox.closest(".dataTable");methods.setVisibleCheckboxes($table,table,$checkbox.is(":checked"))},toggleRowCheckbox:function($checkbox,table){var $row=$checkbox.closest("tr");if($checkbox.is(":checked")){table.row($row).select();let $checkCells=$checkbox.closest(".dataTable tbody").find(".check-column");for(let checkCell of $checkCells){let checkboxInput=checkCell.querySelector("input"),thisRow=checkCell.closest("tr");checkboxInput.checked&&table.row(thisRow).select()}}else table.row($row).deselect(),$checkbox.closest(".dataTable").find("thead .column-cb input:checkbox, tfoot .column-cb input:checkbox").prop("checked",!1)},toggleMultipleRowCheckboxes:function($checkbox,table){const $checkCells=$checkbox.closest(".dataTable tbody").find(".check-column");for(let checkCell of $checkCells){const checkboxInput=checkCell.querySelector("input"),thisRow=checkCell.closest("tr");checkboxInput.checked&&table.row(thisRow).select()}}};return this.each((function(){var table,$el=$(this);table=only_data?$el.DataTable():$el.DataTable(settings),window.tribe_data_table=table,void 0!==settings.data&&(table.clear().draw(),table.rows.add(settings.data),table.draw());var resetSelection=function(event,settings){methods.setVisibleCheckboxes($el,table,!1)};$el.on({"order.dt":resetSelection,"search.dt":resetSelection,"length.dt":resetSelection}),$el.on("click","thead .column-cb input:checkbox, tfoot .column-cb input:checkbox",(function(){methods.togglePageCheckbox($(this),table)})),$el.on("click","tbody .check-column input:checkbox",(function(){methods.toggleRowCheckbox($(this),table)})),$el.on("change","tbody .check-column input:checkbox",(function(){methods.toggleMultipleRowCheckboxes($(this),table)}))}))}}(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-after.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-after.js new file mode 100644 index 000000000..72789e304 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-after.js @@ -0,0 +1,19 @@ +(function(){ + /** + * If we have a temp variable of type function it means lodash was loaded before underscore so we need to + * remove the reference to underscore from window._ by using the method .noConflict() from underscore, after + * this point we need to revert back the value of window._ which was lodash. + * + * In the second scenario when underscore is loaded before lodash, this will not be executed as window._ + * will remain as lodash. + * + * On a third scenario when lodash is not included this will either be executed which will allow to use + * something like: window.underscore || window._ to fallback to the correct value of underscore in the plugins. + */ + if ( window._lodash_tmp !== false && typeof window._lodash_tmp === 'function' ) { + // Remove reference to _ if is underscore + window.underscore = _.noConflict(); + // Restore reference to lodash if present + window._ = window._lodash_tmp; + } +})(); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-after.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-after.min.js new file mode 100644 index 000000000..b851e67bb --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-after.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +!1!==window._lodash_tmp&&"function"==typeof window._lodash_tmp&&(window.underscore=_.noConflict(),window._=window._lodash_tmp); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-before.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-before.js new file mode 100644 index 000000000..3acdf1916 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-before.js @@ -0,0 +1,42 @@ +(function(){ + + /** + * Function that search if an object has all the specified methods and all those methods are functions. + * + * @since 4.7.7 + * + * @param {Object} obj The object where all the methods might be stored + * @param {Array} methods An array with the name of all the methods to be tested + * @return {boolean} True if has all the methods false otherwise. + */ + function search_for_methods( obj, methods ) { + + // Object is not defined or does not exist on window nothing to do. + if ( ! obj || window[ obj ] ) { + return false; + } + + var search = methods.filter( function( name ) { + // Test if the method is part of Obj and if is a function. + return obj[ name ] && 'function' === typeof obj[ name ]; + }); + return methods.length === search.length; + } + + /** + * Function to compare if the variable _ is from lodash by testing some of us unique methods. + * + * @since 4.7.7 + * + * @return {boolean} True if the global _ is from lodash. + */ + function is_lodash() { + return search_for_methods( window._, [ 'get', 'set', 'at', 'cloneDeep', 'some', 'every' ] ); + } + + window._lodash_tmp = false; + // If current _ is from lodash Store it in a temp variable before underscore is loaded + if ( '_' in window && is_lodash() ) { + window._lodash_tmp = _; + } +})(); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-before.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-before.min.js new file mode 100644 index 000000000..84aeb9f2d --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/underscore-before.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +window._lodash_tmp=!1,"_"in window&&function is_lodash(){return function search_for_methods(obj,methods){if(!obj||window[obj])return!1;var search=methods.filter((function(name){return obj[name]&&"function"==typeof obj[name]}));return methods.length===search.length}(window._,["get","set","at","cloneDeep","some","every"])}()&&(window._lodash_tmp=_); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/utils-camelcase.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/utils-camelcase.js new file mode 100644 index 000000000..b53dd2c1b --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/utils-camelcase.js @@ -0,0 +1,112 @@ +/** + * Configures this Object in the Global Tribe variable + * + * @since 4.7 + * + * @type {Object} + */ +tribe.utils = tribe.utils || {}; + +/** + * A Module that allows one to convert a dash/dot/underscore/space separated + * string to camelCase: foo-bar -> fooBar + * + * This module was heavily based on Sindresorhus work. + * Only converted to play nicely on WordPress Plugin Env + * + * @see https://github.com/sindresorhus/camelcase + * + * @since 4.7 + * + */ +( function( obj, _ ) { + 'use strict'; + + function preserveCamelCase( str ) { + var isLastCharLower = false; + var isLastCharUpper = false; + var isLastLastCharUpper = false; + + for ( var i = 0; i < str.length; i++ ) { + var char = str[ i ]; + + if ( isLastCharLower && /[a-zA-Z]/.test( char ) && char.toUpperCase() === char ) { + str = str.substr( 0, i ) + '-' + str.substr( i ); + + isLastCharLower = false; + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = true; + i++; + } else if ( + isLastCharUpper && + isLastLastCharUpper && + /[a-zA-Z]/.test( char ) && + char.toLowerCase() === char // eslint-disable-line no-undef + ) { + str = str.substr( 0, i - 1 ) + '-' + str.substr( i - 1 ); + + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = false; + isLastCharLower = true; + } else { + isLastCharLower = char.toLowerCase() === char; + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = char.toUpperCase() === char; + } + } + + return str; + } + + /** + * Converts a String into camelCase + * + * @since 4.7 + * + * @param {string} str String to be converted + * + * @return {string} + */ + obj.camelCase = function( str ) { + // Makes sure we deal with strings only + if ( arguments.length > 1 ) { + // Remove any Empty Spaces + str = _.map( arguments, function( val ) { + return val.trim(); + } ); + + // Remove any empty Entries and Join by `-` + str = str.filter( str, function( val ){ + return 0 !== val.length; + } ).join( '-' ); + } else { + str = str.trim(); + } + + // by here we know what it is + if ( 0 === str.length ) { + return ''; + } + + if ( 1 === str.length ) { + return str.toLowerCase(); + } + + if ( /^[a-z0-9]+$/.test( str ) ) { + return str; + } + + var hasUpperCase = str !== str.toLowerCase(); + + if ( hasUpperCase ) { + str = preserveCamelCase( str ); + } + + return str + .replace( /^[_.\- ]+/, '' ) + .toLowerCase() + .replace( /[_.\- ]+(\w|$)/g, function ( m, p1 ){ + return p1.toUpperCase(); + } ); + }; +}( tribe.utils, window.underscore || _ ) ); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/utils-camelcase.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/utils-camelcase.min.js new file mode 100644 index 000000000..425b4ff94 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/utils-camelcase.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +tribe.utils=tribe.utils||{},function(obj,_){"use strict";obj.camelCase=function(str){return 0===(str=arguments.length>1?(str=_.map(arguments,(function(val){return val.trim()}))).filter(str,(function(val){return 0!==val.length})).join("-"):str.trim()).length?"":1===str.length?str.toLowerCase():/^[a-z0-9]+$/.test(str)?str:(str!==str.toLowerCase()&&(str=function preserveCamelCase(str){for(var isLastCharLower=!1,isLastCharUpper=!1,isLastLastCharUpper=!1,i=0;i= 0; --i) { + var obj; + var root = chain[i]; + + if (root === '[]' && options.parseArrays) { + obj = [].concat(leaf); + } else { + obj = options.plainObjects ? Object.create(null) : {}; + var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; + var index = parseInt(cleanRoot, 10); + if (!options.parseArrays && cleanRoot === '') { + obj = { 0: leaf }; + } else if ( + !isNaN(index) + && root !== cleanRoot + && String(index) === cleanRoot + && index >= 0 + && (options.parseArrays && index <= options.arrayLimit) + ) { + obj = []; + obj[index] = leaf; + } else { + obj[cleanRoot] = leaf; + } + } + + leaf = obj; + } + + return leaf; +}; + +var parseKeys = function parseQueryStringKeys(givenKey, val, options) { + if (!givenKey) { + return; + } + + // Transform dot notation to bracket notation + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; + + // The regex chunks + + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; + + // Get the parent + + var segment = brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; + + // Stash the parent if it exists + + var keys = []; + if (parent) { + // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys.push(parent); + } + + // Loop through children appending to the array until we hit depth + + var i = 0; + while ((segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { + if (!options.allowPrototypes) { + return; + } + } + keys.push(segment[1]); + } + + // If there's a remainder, just add whatever is left + + if (segment) { + keys.push('[' + key.slice(segment.index) + ']'); + } + + return parseObject(keys, val, options); +}; + +module.exports = function (str, opts) { + var options = opts ? utils.assign({}, opts) : {}; + + if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') { + throw new TypeError('Decoder has to be a function.'); + } + + options.ignoreQueryPrefix = options.ignoreQueryPrefix === true; + options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter; + options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth; + options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit; + options.parseArrays = options.parseArrays !== false; + options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder; + options.allowDots = typeof options.allowDots === 'undefined' ? defaults.allowDots : !!options.allowDots; + options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects; + options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes; + options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit; + options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; + + if (typeof options.charset !== 'undefined' && options.charset !== 'utf-8' && options.charset !== 'iso-8859-1') { + throw new Error('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + if (typeof options.charset === 'undefined') { + options.charset = defaults.charset; + } + + if (str === '' || str === null || typeof str === 'undefined') { + return options.plainObjects ? Object.create(null) : {}; + } + + var tempObj = typeof str === 'string' ? parseValues(str, options) : str; + var obj = options.plainObjects ? Object.create(null) : {}; + + // Iterate over the keys and setup the new object + + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options); + obj = utils.merge(obj, newObj, options); + } + + return utils.compact(obj); +}; + +},{"./utils":5}],4:[function(require,module,exports){ +'use strict'; + +var utils = require('./utils'); +var formats = require('./formats'); + +var arrayPrefixGenerators = { + brackets: function brackets(prefix) { // eslint-disable-line func-name-matching + return prefix + '[]'; + }, + indices: function indices(prefix, key) { // eslint-disable-line func-name-matching + return prefix + '[' + key + ']'; + }, + repeat: function repeat(prefix) { // eslint-disable-line func-name-matching + return prefix; + } +}; + +var isArray = Array.isArray; +var push = Array.prototype.push; +var pushToArray = function (arr, valueOrArray) { + push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); +}; + +var toISO = Date.prototype.toISOString; + +var defaults = { + addQueryPrefix: false, + allowDots: false, + charset: 'utf-8', + charsetSentinel: false, + delimiter: '&', + encode: true, + encoder: utils.encode, + encodeValuesOnly: false, + // deprecated + indices: false, + serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false +}; + +var stringify = function stringify( // eslint-disable-line func-name-matching + object, + prefix, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly, + charset +) { + var obj = object; + if (typeof filter === 'function') { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } + + if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset) : prefix; + } + + obj = ''; + } + + if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset); + return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset))]; + } + return [formatter(prefix) + '=' + formatter(String(obj))]; + } + + var values = []; + + if (typeof obj === 'undefined') { + return values; + } + + var objKeys; + if (Array.isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + + if (skipNulls && obj[key] === null) { + continue; + } + + if (Array.isArray(obj)) { + pushToArray(values, stringify( + obj[key], + generateArrayPrefix(prefix, key), + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly, + charset + )); + } else { + pushToArray(values, stringify( + obj[key], + prefix + (allowDots ? '.' + key : '[' + key + ']'), + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly, + charset + )); + } + } + + return values; +}; + +module.exports = function (object, opts) { + var obj = object; + var options = opts ? utils.assign({}, opts) : {}; + + if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') { + throw new TypeError('Encoder has to be a function.'); + } + + var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter; + var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; + var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls; + var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode; + var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder; + var sort = typeof options.sort === 'function' ? options.sort : null; + var allowDots = typeof options.allowDots === 'undefined' ? defaults.allowDots : !!options.allowDots; + var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate; + var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly; + var charset = options.charset || defaults.charset; + if (typeof options.charset !== 'undefined' && options.charset !== 'utf-8' && options.charset !== 'iso-8859-1') { + throw new Error('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + + if (typeof options.format === 'undefined') { + options.format = formats['default']; + } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) { + throw new TypeError('Unknown format option provided.'); + } + var formatter = formats.formatters[options.format]; + var objKeys; + var filter; + + if (typeof options.filter === 'function') { + filter = options.filter; + obj = filter('', obj); + } else if (Array.isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + + var keys = []; + + if (typeof obj !== 'object' || obj === null) { + return ''; + } + + var arrayFormat; + if (options.arrayFormat in arrayPrefixGenerators) { + arrayFormat = options.arrayFormat; + } else if ('indices' in options) { + arrayFormat = options.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = 'indices'; + } + + var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; + + if (!objKeys) { + objKeys = Object.keys(obj); + } + + if (sort) { + objKeys.sort(sort); + } + + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + + if (skipNulls && obj[key] === null) { + continue; + } + pushToArray(keys, stringify( + obj[key], + key, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encode ? encoder : null, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly, + charset + )); + } + + var joined = keys.join(delimiter); + var prefix = options.addQueryPrefix === true ? '?' : ''; + + if (options.charsetSentinel) { + if (charset === 'iso-8859-1') { + // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark + prefix += 'utf8=%26%2310003%3B&'; + } else { + // encodeURIComponent('✓') + prefix += 'utf8=%E2%9C%93&'; + } + } + + return joined.length > 0 ? prefix + joined : ''; +}; + +},{"./formats":1,"./utils":5}],5:[function(require,module,exports){ +'use strict'; + +var has = Object.prototype.hasOwnProperty; + +var hexTable = (function () { + var array = []; + for (var i = 0; i < 256; ++i) { + array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); + } + + return array; +}()); + +var compactQueue = function compactQueue(queue) { + while (queue.length > 1) { + var item = queue.pop(); + var obj = item.obj[item.prop]; + + if (Array.isArray(obj)) { + var compacted = []; + + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== 'undefined') { + compacted.push(obj[j]); + } + } + + item.obj[item.prop] = compacted; + } + } +}; + +var arrayToObject = function arrayToObject(source, options) { + var obj = options && options.plainObjects ? Object.create(null) : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== 'undefined') { + obj[i] = source[i]; + } + } + + return obj; +}; + +var merge = function merge(target, source, options) { + if (!source) { + return target; + } + + if (typeof source !== 'object') { + if (Array.isArray(target)) { + target.push(source); + } else if (typeof target === 'object') { + if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) { + target[source] = true; + } + } else { + return [target, source]; + } + + return target; + } + + if (typeof target !== 'object') { + return [target].concat(source); + } + + var mergeTarget = target; + if (Array.isArray(target) && !Array.isArray(source)) { + mergeTarget = arrayToObject(target, options); + } + + if (Array.isArray(target) && Array.isArray(source)) { + source.forEach(function (item, i) { + if (has.call(target, i)) { + if (target[i] && typeof target[i] === 'object') { + target[i] = merge(target[i], item, options); + } else { + target.push(item); + } + } else { + target[i] = item; + } + }); + return target; + } + + return Object.keys(source).reduce(function (acc, key) { + var value = source[key]; + + if (has.call(acc, key)) { + acc[key] = merge(acc[key], value, options); + } else { + acc[key] = value; + } + return acc; + }, mergeTarget); +}; + +var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function (acc, key) { + acc[key] = source[key]; + return acc; + }, target); +}; + +var decode = function (str, decoder, charset) { + var strWithoutPlus = str.replace(/\+/g, ' '); + if (charset === 'iso-8859-1') { + // unescape never throws, no try...catch needed: + return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); + } + // utf-8 + try { + return decodeURIComponent(strWithoutPlus); + } catch (e) { + return strWithoutPlus; + } +}; + +var encode = function encode(str, defaultEncoder, charset) { + // This code was originally written by Brian White (mscdex) for the io.js core querystring library. + // It has been adapted here for stricter adherence to RFC 3986 + if (str.length === 0) { + return str; + } + + var string = typeof str === 'string' ? str : String(str); + + if (charset === 'iso-8859-1') { + return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { + return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; + }); + } + + var out = ''; + for (var i = 0; i < string.length; ++i) { + var c = string.charCodeAt(i); + + if ( + c === 0x2D // - + || c === 0x2E // . + || c === 0x5F // _ + || c === 0x7E // ~ + || (c >= 0x30 && c <= 0x39) // 0-9 + || (c >= 0x41 && c <= 0x5A) // a-z + || (c >= 0x61 && c <= 0x7A) // A-Z + ) { + out += string.charAt(i); + continue; + } + + if (c < 0x80) { + out = out + hexTable[c]; + continue; + } + + if (c < 0x800) { + out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + if (c < 0xD800 || c >= 0xE000) { + out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); + out += hexTable[0xF0 | (c >> 18)] + + hexTable[0x80 | ((c >> 12) & 0x3F)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + } + + return out; +}; + +var compact = function compact(value) { + var queue = [{ obj: { o: value }, prop: 'o' }]; + var refs = []; + + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { + queue.push({ obj: obj, prop: key }); + refs.push(val); + } + } + } + + compactQueue(queue); + + return value; +}; + +var isRegExp = function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +}; + +var isBuffer = function isBuffer(obj) { + if (obj === null || typeof obj === 'undefined') { + return false; + } + + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); +}; + +var combine = function combine(a, b) { + return [].concat(a, b); +}; + +module.exports = { + arrayToObject: arrayToObject, + assign: assign, + combine: combine, + compact: compact, + decode: decode, + encode: encode, + isBuffer: isBuffer, + isRegExp: isRegExp, + merge: merge +}; + +},{}]},{},[2])(2) +}); diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/utils/query-string.min.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/utils/query-string.min.js new file mode 100644 index 000000000..b9e06a2a8 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/utils/query-string.min.js @@ -0,0 +1,11 @@ +/** + * This JS file was auto-generated via Terser. + * + * Contributors should avoid editing this file, but instead edit the associated + * non minified file file. For more information, check out our engineering docs + * on how we handle JS minification in our engineering docs. + * + * @see: https://evnt.is/dev-docs-minification + */ + +!function(f){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Qs=f()}}((function(){return function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,(function(r){return o(e[i][1][r]||r)}),p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i=0;--i){var obj,root=chain[i];if("[]"===root&&options.parseArrays)obj=[].concat(leaf);else{obj=options.plainObjects?Object.create(null):{};var cleanRoot="["===root.charAt(0)&&"]"===root.charAt(root.length-1)?root.slice(1,-1):root,index=parseInt(cleanRoot,10);options.parseArrays||""!==cleanRoot?!isNaN(index)&&root!==cleanRoot&&String(index)===cleanRoot&&index>=0&&options.parseArrays&&index<=options.arrayLimit?(obj=[])[index]=leaf:obj[cleanRoot]=leaf:obj={0:leaf}}leaf=obj}return leaf}(keys,val,options)}};module.exports=function(str,opts){var options=opts?utils.assign({},opts):{};if(null!==options.decoder&&void 0!==options.decoder&&"function"!=typeof options.decoder)throw new TypeError("Decoder has to be a function.");if(options.ignoreQueryPrefix=!0===options.ignoreQueryPrefix,options.delimiter="string"==typeof options.delimiter||utils.isRegExp(options.delimiter)?options.delimiter:defaults.delimiter,options.depth="number"==typeof options.depth?options.depth:defaults.depth,options.arrayLimit="number"==typeof options.arrayLimit?options.arrayLimit:defaults.arrayLimit,options.parseArrays=!1!==options.parseArrays,options.decoder="function"==typeof options.decoder?options.decoder:defaults.decoder,options.allowDots=void 0===options.allowDots?defaults.allowDots:!!options.allowDots,options.plainObjects="boolean"==typeof options.plainObjects?options.plainObjects:defaults.plainObjects,options.allowPrototypes="boolean"==typeof options.allowPrototypes?options.allowPrototypes:defaults.allowPrototypes,options.parameterLimit="number"==typeof options.parameterLimit?options.parameterLimit:defaults.parameterLimit,options.strictNullHandling="boolean"==typeof options.strictNullHandling?options.strictNullHandling:defaults.strictNullHandling,void 0!==options.charset&&"utf-8"!==options.charset&&"iso-8859-1"!==options.charset)throw new Error("The charset option must be either utf-8, iso-8859-1, or undefined");if(void 0===options.charset&&(options.charset=defaults.charset),""===str||null==str)return options.plainObjects?Object.create(null):{};for(var tempObj="string"==typeof str?function parseQueryStringValues(str,options){var i,obj={},cleanStr=options.ignoreQueryPrefix?str.replace(/^\?/,""):str,limit=options.parameterLimit===1/0?void 0:options.parameterLimit,parts=cleanStr.split(options.delimiter,limit),skipIndex=-1,charset=options.charset;if(options.charsetSentinel)for(i=0;i0?prefix+joined:""}},{"./formats":1,"./utils":5}],5:[function(require,module,exports){"use strict";var has=Object.prototype.hasOwnProperty,hexTable=function(){for(var array=[],i=0;i<256;++i)array.push("%"+((i<16?"0":"")+i.toString(16)).toUpperCase());return array}(),arrayToObject=function arrayToObject(source,options){for(var obj=options&&options.plainObjects?Object.create(null):{},i=0;i1;){var item=queue.pop(),obj=item.obj[item.prop];if(Array.isArray(obj)){for(var compacted=[],j=0;j=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122?out+=string.charAt(i):c<128?out+=hexTable[c]:c<2048?out+=hexTable[192|c>>6]+hexTable[128|63&c]:c<55296||c>=57344?out+=hexTable[224|c>>12]+hexTable[128|c>>6&63]+hexTable[128|63&c]:(i+=1,c=65536+((1023&c)<<10|1023&string.charCodeAt(i)),out+=hexTable[240|c>>18]+hexTable[128|c>>12&63]+hexTable[128|c>>6&63]+hexTable[128|63&c])}return out},isBuffer:function isBuffer(obj){return null!=obj&&!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj))},isRegExp:function isRegExp(obj){return"[object RegExp]"===Object.prototype.toString.call(obj)},merge:function merge(target,source,options){if(!source)return target;if("object"!=typeof source){if(Array.isArray(target))target.push(source);else{if("object"!=typeof target)return[target,source];(options&&(options.plainObjects||options.allowPrototypes)||!has.call(Object.prototype,source))&&(target[source]=!0)}return target}if("object"!=typeof target)return[target].concat(source);var mergeTarget=target;return Array.isArray(target)&&!Array.isArray(source)&&(mergeTarget=arrayToObject(target,options)),Array.isArray(target)&&Array.isArray(source)?(source.forEach((function(item,i){has.call(target,i)?target[i]&&"object"==typeof target[i]?target[i]=merge(target[i],item,options):target.push(item):target[i]=item})),target):Object.keys(source).reduce((function(acc,key){var value=source[key];return has.call(acc,key)?acc[key]=merge(acc[key],value,options):acc[key]=value,acc}),mergeTarget)}}},{}]},{},[2])(2)})); \ No newline at end of file diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/js/validation.js b/wp-content/plugins/the-events-calendar/common/src/resources/js/validation.js new file mode 100644 index 000000000..46b608c76 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/js/validation.js @@ -0,0 +1,825 @@ +/** + * Configures this Object in the Global Tribe variable + * + * @since 4.7 + * + * @type {Object} + */ +tribe.validation = {}; + +( function( obj, $, _ ) { + 'use strict'; + var $document = $( document ); + + /** + * Object containing all the selectors for Validation + * + * @since 4.7.1 + * + * @type {object} + */ + obj.selectors = { + item: '.tribe-validation', + fields: 'input, select, textarea', + submit: '.tribe-validation-submit', + submitButtons: 'input[type="submit"], button[type="submit"]', + error: '.tribe-validation-error', + valid: '.tribe-validation-valid', + notice: '.tribe-notice-validation', + noticeAfter: '.wp-header-end', + noticeFallback: '.wrap > h1', + noticeDismiss: '.notice-dismiss', + }; + + /** + * Object containing all the conditions for the Fields + * + * @since 4.7 + * + * @type {object} + */ + obj.conditions = { + isRequired: function( value ) { + return '' != value; // eslint-disable-line eqeqeq + }, + isGreaterThan: function( value, constraint, $field ) { + var condition = obj.parseCondition( 'isGreaterThan', value, constraint, $field ); + + // If we failed to parse Condition we don't check + if ( false === condition ) { + return true; + } + + return condition.constraint < condition.value; + }, + isGreaterOrEqualTo: function( value, constraint, $field ) { + var condition = obj.parseCondition( 'isGreaterOrEqualTo', value, constraint, $field ); + + // If we failed to parse Condition we don't check + if ( false === condition ) { + return true; + } + + return condition.constraint <= condition.value; + }, + isLessThan: function( value, constraint, $field ) { + var condition = obj.parseCondition( 'isLessThan', value, constraint, $field ); + + // If we failed to parse Condition we don't check + if ( false === condition ) { + return true; + } + + return condition.constraint > condition.value; + }, + isLessOrEqualTo: function( value, constraint, $field ) { + var condition = obj.parseCondition( 'isLessOrEqualTo', value, constraint, $field ); + + // If we failed to parse Condition we don't check + if ( false === condition ) { + return true; + } + + return condition.constraint >= condition.value; + }, + isEqualTo: function( value, constraint, $field ) { + var condition = obj.parseCondition( 'isEqualTo', value, constraint, $field ); + + // If we failed to parse Condition we don't check + if ( false === condition ) { + return true; + } + + return condition.constraint == condition.value; // eslint-disable-line eqeqeq + }, + isNotEqualTo: function( value, constraint, $field ) { + var condition = obj.parseCondition( 'isNotEqualTo', value, constraint, $field ); + + // If we failed to parse Condition we don't check + if ( false === condition ) { + return true; + } + + return condition.constraint != condition.value; // eslint-disable-line eqeqeq + }, + matchRegExp: function( value, constraint, $field ) { // eslint-disable-line no-unused-vars + var exp = new RegExp( constraint, 'g' ); + var match = exp.exec( value ); + + return null !== match; + }, + notMatchRegExp: function( value, constraint, $field ) { // eslint-disable-line no-unused-vars + var exp = new RegExp( constraint, 'g' ); + var match = exp.exec( value ); + + return null === match; + } + }; + + /** + * Object containing types of fields supported + * + * @since 4.7 + * + * @type {object} + */ + obj.parseType = { + datepicker: function( value, $constraint, $field ) { // eslint-disable-line no-unused-vars + var formats = [ + 'yyyy-mm-dd', + 'm/d/yyyy', + 'mm/dd/yyyy', + 'd/m/yyyy', + 'dd/mm/yyyy', + 'm-d-yyyy', + 'mm-dd-yyyy', + 'd-m-yyyy', + 'dd-mm-yyyy', + 'yyyy.mm.dd', + 'mm.dd.yyyy', + 'dd.mm.yyyy', + ]; + + // Default Format Key + var formatKey = 0; + + if ( $constraint.length && $constraint.attr( 'data-datepicker_format' ) ) { + formatKey = $constraint.attr( 'data-datepicker_format' ); + } else if ( _.isString( formats[ $constraint ] ) ) { + formatKey = formats[ $constraint ]; + } else if ( $constraint.parents( '[data-datepicker_format]' ).length ) { + formatKey = $constraint + .parents( '[data-datepicker_format]' ) + .eq( 0 ) + .data( 'datepicker_format' ); + } + + if ( 'undefined' === typeof formats[ formatKey ] || ! formats[ formatKey ] ) { + formatKey = 0; + } + + var format = formats[ formatKey ].toUpperCase(); + value = moment( value, format ).format( 'X' ); + + return value; + }, + default: function( value, $constraint, $field ) { // eslint-disable-line no-unused-vars + if ( $.isNumeric( value ) ) { + value = parseFloat( value, 10 ); + } + + return value; + } + }; + + /** + * Parses the Condition for all the types of conditional and returns a + * better state of Value and Contraint based on the rules for each + * + * @since 4.7 + * + * @type {function} + * + * @return {object} + */ + obj.parseCondition = function( conditional, value, constraint, $field ) { + var type = $field.data( 'validationType' ); + var $constraint = null; + var condition = { value: value, constraint: constraint }; + + // When we don't have type we assume default + if ( ! type && ! _.isFunction( obj.parseType[ type ] ) ) { + type = 'default'; + } + + // If it's not Numeric we treat it like a Selector + if ( ! $.isNumeric( constraint ) ) { + $constraint = $( constraint ); + + // Check if we got a valid selector before checking Disabled + if ( ! $constraint.length ) { + // Throws a warning so it's easy to spot on development and support + console.warn( 'Tribe Validation:', 'Invalid selector for', $field, constraint ); + return false; + } + + $constraint = $constraint.not( ':disabled' ); + + // Verify only for active fields + if ( ! $constraint.length ) { + return false; + } + + constraint = $constraint.val(); + } + + // Applies the type of validation + condition.constraint = obj.parseType[ type ]( constraint, $constraint, $field ); + condition.value = obj.parseType[ type ]( value, $constraint, $field ); + + return condition; + }; + + + /** + * Object containing all the constraints for the Fields + * + * @since 4.7 + * + * @type {object} + */ + obj.constraints = { + isRequired: function( $field ) { + // Default to Null to prevent Conflicts + var value = null; + + // Verify by Data value + value = $field.data( 'required' ) || value; + value = $field.data( 'validationRequired' ) || value; + value = $field.data( 'validationIsRequired' ) || value; + + // Verify by Attributes + value = $field.is( '[required]' ) || value; + value = $field.is( '[data-required]' ) || value; + value = $field.is( '[data-validation-required]' ) || value; + value = $field.is( '[data-validation-is-required]' ) || value; + + return value; + }, + isGreaterThan: function( $field ) { + // Default to Null to prevent Conflicts + var value = null; + + // If we have attribute, fetch the data value + if ( $field.is( '[data-validation-is-greater-than]' ) ) { + value = $field.data( 'validationIsGreaterThan' ); + } + + return value; + }, + isGreaterOrEqualTo: function( $field ) { + // Default to Null to prevent Conflicts + var value = null; + + // If we have attribute, fetch the data value + if ( $field.is( '[data-validation-is-greater-or-equal-to]' ) ) { + value = $field.data( 'validationIsGreaterOrEqualTo' ); + } + + return value; + }, + isLessThan: function( $field ) { + // Default to Null to prevent Conflicts + var value = null; + + // If we have attribute, fetch the data value + if ( $field.is( '[data-validation-is-less-than]' ) ) { + value = $field.data( 'validationIsLessThan' ); + } + + return value; + }, + isLessOrEqualTo: function( $field ) { + // Default to Null to prevent Conflicts + var value = null; + + // If we have attribute, fetch the data value + if ( $field.is( '[data-validation-is-less-or-equal-to]' ) ) { + value = $field.data( 'validationIsLessOrEqualTo' ); + } + + return value; + }, + isEqualTo: function( $field ) { + // Default to Null to prevent Conflicts + var value = null; + + // If we have attribute, fetch the data value + if ( $field.is( '[data-validation-is-equal-to]' ) ) { + value = $field.data( 'validationIsEqualTo' ); + } + + return value; + }, + isNotEqualTo: function( $field ) { + // Default to Null to prevent Conflicts + var value = null; + + // If we have attribute, fetch the data value + if ( $field.is( '[data-validation-is-not-equal-to]' ) ) { + value = $field.data( 'validationIsNotEqualTo' ); + } + + return value; + }, + matchRegExp: function( $field ) { + // Default to Null to prevent Conflicts + var value = null; + + // If we have attribute, fetch the data value + if ( $field.is( '[data-validation-match-regexp]' ) ) { + value = $field.data( 'validationMatchRegexp' ); + } + + return value; + }, + notMatchRegExp: function( $field ) { + // Default to Null to prevent Conflicts + var value = null; + + // If we have attribute, fetch the data value + if ( $field.is( '[data-validation-not-match-regexp]' ) ) { + value = $field.data( 'validationNotMatchRegexp' ); + } + + return value; + }, + }; + + /** + * FN (prototype) method from jQuery + * + * @since 4.7 + * + * @type {function} + */ + obj.fn = function() { + return this.each( obj.setup ); + }; + + /** + * Configures a Single Form for validation + * + * @since 4.7 + * + * @param {int} i Field Index + * @param {DOM} item DOM element for the item + * + * @type {function} + */ + obj.setup = function( i, item ) { + var $item = $( item ); + + // First we add the Class for the Form + $item.addClass( obj.selectors.item.className() ); + + // Make the Submit buttons have the required class for The Click + $item.find( obj.selectors.submitButtons ).addClass( obj.selectors.submit.className() ) + + // On Form Submit + $item.on( 'submit.tribe', obj.onSubmit ); + + // Actual Validation + $item.on( 'validation.tribe', obj.onValidation ); + + // Show the errors for all the fields + $item.on( 'displayErrors.tribe', obj.onDisplayErrors ); + + // Prevent form normal invalidation to be triggered. + $document.on( 'click.tribe', obj.selectors.submit, obj.onClickSubmitButtons ); + + // When click on dismiss of the notice for errors + $document.on( 'click.tribe', obj.selectors.noticeDismiss, obj.onClickDismissNotice ); + }; + + /** + * Validates a single Field + * + * @since 4.7 + * + * @param {int} index Field Index + * @param {DOM} item DOM element for the field + * + * @return {void} + */ + obj.validate = function( index, field ) { + var $field = $( field ); + var isValid = obj.isValid( $field ); + + // If it's valid we bail + if ( isValid ) { + return; + } + + $field.addClass( obj.selectors.error.className() ); + $field.one( 'change', obj.onChangeFieldRemoveError ); + }; + + /** + * Validates a single Field + * + * @since 4.7 + * + * @param {object} $field jQuery Object for the field + * + * @return {bool} + */ + obj.isValid = function( $field ) { + var constraints = obj.getConstraints( $field ); + + if ( ! _.isObject( constraints ) ) { + return constraints; + } + + // It needs to be valid on all to be valid + var valid = _.every( constraints ); + + return valid; + }; + + /** + * Validates if a given Section has Errors + * + * @since 4.7 + * + * @param {object} $field jQuery Object for the Section been validated + * + * @return {boolean} + */ + obj.hasErrors = function( $item ) { + var $errors = $item.find( obj.selectors.error ).not( ':disabled' ); + + return 0 !== $errors.length; + }; + + /** + * Gets which constrains have Passed. + * + * @since 4.7 + * + * @param {object} $field jQuery Object for the field. + * + * @return {object} Constraints that have passed. + */ + obj.getConstraints = function( $field ) { + var isDisabled = $field.is( ':disabled' ); + var valid = true; + + // Bail if it's a disabled field. + if ( isDisabled ) { + return valid; + } + + var constraints = obj.getConstraintsValue( $field ); + var value = $field.val(); + + // When we don't have constrains it's always valid. + if ( _.isEmpty( constraints ) ) { + return valid; + } + + // Verifies if we have a valid set of constraints. + constraints = _.mapObject( constraints, function( constraint, key ) { + return obj.conditions[ key ]( value, constraint, $field ); + } ); + + return constraints; + }; + + /** + * Gets which constraint have valid values. + * + * @since 4.7 + * + * @param {object} $field Object with all the values for the constraints of a field. + * + * @return {object} Specific constraint value. + */ + obj.getConstraintsValue = function( $field ) { + var isDisabled = $field.is( ':disabled' ); + var constraints = {}; + + // Bail if it's a disabled field + if ( isDisabled ) { + return constraints; + } + + // Set to all constraints + constraints = obj.constraints; + + // Fetch the values for each one of these + constraints = _.mapObject( constraints, function( isApplicable ) { + return isApplicable( $field ); + } ); + + // Check which ones of these are not null + constraints = _.pick( constraints, function( value ) { + return null !== value; + } ); + + return constraints; + }; + + /** + * Gets which jQuery objects are related to a fields constraints + * + * @since 4.7 + * + * @param {object} $field jQuery Object for the fields + * + * @return {object} Constraints for validation. + */ + obj.getConstraintsFields = function( $field ) { + var constraints = obj.getConstraintsValue( $field ); + + // Fetch the values for each one of these + constraints = _.mapObject( constraints, function( constraint ) { + var $constraint = null; + if ( ! _.isNumber( constraint ) && ! _.isBoolean( constraint ) ) { + $constraint = $( constraint ); + } + + return $constraint; + } ); + + // Check which ones of these are not null. + constraints = _.pick( constraints, function( value ) { + return value instanceof jQuery; + } ); + + // Turn this into an proper array. + constraints = _.values( constraints ); + + // Add the current field. + constraints.unshift( $field ); + + // Convert to jQuery collection. + constraints = $( constraints ).map( function() { + return this.get(); + } ); + + return constraints; + }; + + /** + * Actually does the validation for the Form + * + * @since 4.7 + * + * @param {object} event JQuery Event + * + * @return {void} + */ + obj.onValidation = function( event ) { // eslint-disable-line no-unused-vars + var $item = $( this ); + var $fields = $item.find( obj.selectors.fields ); + + // Before Validation remove all Errors + $fields.removeClass( obj.selectors.error.className() ); + + // Validate all Fields + $fields.each( obj.validate ); + + var $errors = $item.find( obj.selectors.error ).not( ':disabled' ); + + // if there are errors we show the message and bail + if ( 0 !== $errors.length ) { + $item.trigger( 'displayErrors.tribe' ); + return; + } + + // If we got here add the valid class + $item.addClass( obj.selectors.valid.className() ); + }; + + /** + * Fired on `displayErrors` for a validation form + * + * @since 4.7 + * + * @param {object} event JQuery Event + * + * @return {void} + */ + obj.onDisplayErrors = function( event ) { // eslint-disable-line no-unused-vars + var $item = $( this ); + var $errors = $item.find( obj.selectors.error ).not( ':disabled' ); + var $list = $( '
  • Ec8ocH_%)$JBCWma*B!2R%_9OCJ-E|`1ad%47jhuHGhub(e1hJi z*xT4Hu^7P@4Z25v^6iHuTmy%KaiqqD(MU^7T+ghbrwwt@_qLdLWT1uft4bTEX~Hj} z>a=?3#Fh!IT@$`R^bS9BM5HSDbXv8eQ>^-cdi7i|DM#Ivf?;^3HhshNyH5(BS!jr- zPv>q!beCvMfE}q8d6wOfvby^dk2R~|W>1|pTSadJJxBf#%LOiF>alOUl#d&dbuhvd z?BQg{_6LUo6DI;X(l$CqnW%3W^sOX`gdfE@>oTIX$C4bvlaEj@X}*1FcKbr6Zl%U6 z`xwnqdJKYA<(2mngdBMY+7y0_iYcWKk$&eGqVwIb zunDH-bRR@{@|slAR5^&3nY=B_h#Ep?qr5m@)HPT=Hx`|hW(M1G`c$*qHnlIv$X4P4LuAG_7KuK)l5 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/pro.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/pro.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e418f7a31b323611228f3965cf3bf86a3e6c144 GIT binary patch literal 12844 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 AtpET3 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/promoter.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/promoter.jpg new file mode 100644 index 0000000000000000000000000000000000000000..138854ec82a21342c14298104767eefe6c8f1dd7 GIT binary patch literal 6635 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 H+${bVkT7-? literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-give-cta.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-give-cta.jpg new file mode 100644 index 0000000000000000000000000000000000000000..730ebef47a4e5ffa0ab9630a532df578d942a0eb GIT binary patch literal 19603 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-give-logo.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-give-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..aecae1b51c7d062a02e0008aff2a9042f60f876a GIT binary patch literal 5038 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-iconic-cta.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-iconic-cta.jpg new file mode 100644 index 0000000000000000000000000000000000000000..54cf2b59da9c97e3cdcc0c0e9e808f1e4f1c05b5 GIT binary patch literal 16602 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-iconic-logo.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-iconic-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3b704002a68f1266f373f9f06a286e57d529fd12 GIT binary patch literal 3565 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-ithemes-cta.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-ithemes-cta.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a88a1665adf5231de7e0895da90dff43fa08cd0c GIT binary patch literal 18038 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-ithemes-logo.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-ithemes-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8e85812133c684ce143b858f8f7cd9e3ed27e5b0 GIT binary patch literal 3638 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 Z<6+Vz$dhG>Ztz{e%*4vL*3d2Se*gv%5+?uv literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-kadence-cta.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-kadence-cta.jpg new file mode 100644 index 0000000000000000000000000000000000000000..079e7d07aaa5f1f6bc936129d552691e1bb31c3b GIT binary patch literal 29785 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 ad1z#449|rh))*&30?G;+@>MX4@c#oTJK$sh literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-learndash-cta.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-learndash-cta.jpg new file mode 100644 index 0000000000000000000000000000000000000000..27ffbb306d6a9929467e386738393255965ff4d5 GIT binary patch literal 23981 zcmbrlbyQra1$TEF+}+*X-Q67mgy8P(?rsAFcL)$126qeYlH}(5edpZu*1LDT zKhCS(vwPRnR9E+|?&|8UoiXXR3kd}c0|yU*@COWl|CjKj``^U>K@LlJ zvY9jRUyKl>qhSxoW1|0s!ZNGfA>a4y;XxGuAO*Y(&c3~tzBaBoa_HMeCbI7N)aiFR=LE5{Gpv|&#e4Vng{EEk`v~TG z-T(kE2Cp7x_i}j6oZyhhdj;g(z@2dqr4>#g5?9_R6}=hmr900663 zamVE6=o?>UkMx=9h z(5}pGUIkNZFoVm&k-AdKAAn277r-YbO9KWHmDUM&WGn?FpZ-RR^}YpQsR`_TXVFLe zwxewQ!PdLXl>>TmwIxhe)I!N!x40?)zi7$)z&OfJ^|5^A~sn!f{ zWAL434)OMVO^**wH)Nx#C8;o} zeP`{lp-Jz{o6ju&(+LO7Blg~M9sq&X9sqzWOe`dE3BQla_Ac%Bo{OC7+gSBzAl~{M z%l5_A+s9c)D=?Y~0G-(Ww_KUInjp7E)+_#w;rKU>hQ(VIaMi#ukqhXR)T?-3xcma2 z+jA2~?AzJ#J4>Kg{ZKrH@CpC`%QN+RqjTt^zxKSV`47O&QcYzlXjxf=_OQ2dl7lyr z>fE?uqBCUfV{*qonW~o{dne+$ney;I60HmS>At?^2A^!Lc%C#)S_QoS0noqSlP0@2 z%pVGe&ynG6&&`Zh${pY;(U89Nf7{NJLM~V$i7lungRf7l|RN_o!^k?OEa%M!E=%x z)qR;B%N3-ozJ=)(Nrp30@!A|m+?W0WmAQ3Y-l-^B*u#k_|1=YhrMcMLLmbl004HM_n(f57M>z; zIOe_B<)p6!D%b4~b-Z#mFcNuvWT21Nw$pozS9-T?9UtQhn*P%`RK@}RC1r`0NRuDu zHf)Ns!PTp+JOYG)0w#T#uP)yG+9aQwG|eu*-({23K_ zpDr6{NV6S?AW0JNODu_N2MzCYJ;BX9LNnYUz)IkdKKn}Lq>j_rTtL3@$C2-_5 zcJ5{%eeYeqbPsG?8GxEJargrILe1eF%GFEsg( zz%IWzuUOS;yWX^Kjy)+iVj3{L&QoqTo)s* z3U~{a-s5_mUZ=U&@;I|~ee~GWFWXVQCp;2g2ciK4-H0J>ACR)z{rZXFQS8n5?i#5MqrOIUJQ(@{aBc7i+-p4|97=l~Zbg_QMv#nqu-G8LQ1!UcC zAME!4;sz@M)gLG`EH1fkkr_jajTGO9NI`|0rRSA9pzcc?X&Pqb&&Tv*mYa(U#CZQ< zwK-pNC&g2Rj|gp;CMQbNYh81C<(3|@*z{gAqOh90;pUvB`joO|$c~??J-FbXK%35w zius6Z0zf5_5%T~|@P3m;#(8qXIOzVA_ba1@G@J6l#J=WntHUbpGyj!Fs&`$1&nQp4 zkwC+B@2a25ifVLQ-9Liyw{o+#Pd`E%J+iW#d6G#)%HNHh)SOn!gowLJmb*P%HeM>A zzW-cI%yqEwptWfQD|+*iC_g^YOxprTcoX6hP2E2AwI0stxhHU9JCHYX;W`^X(3VkQ zsaGCxHW>7y9{67xhhoTeY{>Z#=9d$Gaw1)e>nXVcK#imSs8Z8UO26Lg`sHI+ur8bV zd;L|arwf~{ZS!ev+S|jUrN#N!+WN$iA}`Tz%+Y^H_aBL00N$jMfPdjIM-+gtbn{=> z|1b;w>qrp(^%NkX{-1sX01_Gk3I-PLKW+ph+W)0&dEGC6zcm&2$ly9%ZaF;Cujpz; z)?oy|vc`EU@Fv9EuQRp{`9CWCz$NY$W^Wt*OF*C~@O)OV z=JNeI>s85jtg2}wX<0vv9~bD{2e--yci=W{0370e{#7wV zohBNxt5$SBW|0p!K5^&bZ%b-=0${Ele!Q}E zymO5O`~iqT4frKNQT1*|lE!8bo_xC4c_S8f;eS@Y4!H-ws>)n&-`!3Md#-mx2A`(A zZZZv>n?#AAphfK3r$^>GG+ZI-1dUa!oYknf>xP12kAz z^X9BX+^F|ph`6|t>hu^P8h7%rgOc6BktIM`=Q!+%ir`f7(jCI*RlA2!9OFI4-EhT4G94W1p@~Sfcs}8 z|9ysr0l=ceVPImBW0O&^iNd4d;IeXyQL}S!;Zag?s;YfaH~p_=0t7tZ58w*Z`h>O< zoM_W-B*J1Z6sMqZCh`aHsWJJz5+NqyCA_55e#1lXbIl_v>c^_v>_PsxK!Oj^72l=@ z=&+iZZ4c}DAH+>E$-^|!iKbV!w)#UuMSU@5#nG9%nSx6T#{2u|_s%jMzBQ5q(4O9) z&?ux9gL%@lOFe(2*2&K&jbc!5goJ2_)k-bFuV}1O2W#+QaVNQBz^~t(5EzGSs|q@+ zYmsm30r*6b{O>{FAh@9UcL9=+U^}PsilG@)FqeB$s|{*3iel7e)cLt&My)Tq?+sLN#7Q2hJwwPT?o&y(_>h~3U2Qv&h@C>w1%k*eu3PN8qFzfslE}XL z+D9T-`hfUd(U4t;;#bv4g9hWos!Prq&_b8%5$@!TCnZ22mhbWiDzwIgc4j-~+;b}n$6n$bA9RLaLYoWe~XZ^+k%e$?Bw7GYN3-EUL zGtwC1V7|d1j-{k{R0=VL+vr}6w~$vb61hzIS+<<}R@WzNYQnhiJLfyUnI|NzOjRuY zD&#oBYAanfHjBIeWRqoqG~-dgp(`XqxtZ;ULzOP0Ia4vZ#F?|$SsiJS-OQx_xtJLe zwdxnt-AID^w=SV3S{s=}9`A8RN|_{ZXy-$dmGi9B7{8CautjB>$i&$w#A{>4+aJK~ zt4HJR*~&LIBfizS$=SU5FcM1JrMxQabIvIJ2)UJ7-NOo}045LcPs{WJWNMjql@2gf zdD&FhM5_e67AGee1C31FycN@_|43k{b;Fmd-8Umce!3>RGBD+QOYf_3U;y(B*eL&{W1;E5g}cIxZtVkx+zi>eCdu>Un*%!9HC9uIG9ZJ3zX z;uG88-s=z2oA~KO(;mpl8hqy)I#Ze5}vQi?X z93^78MyakE6ytv=*g0X9e2T=xa13%}Nw68zs1^_7LK~2MQ&71tWvr~|rVpSoQMTv& zQrTfsO2v=s-)Rtf$WTc!M(K`;`@uKs@$6;1r?Ls;;LK4f7+btswpzRZA8#`GOov@t z#Lu|$?%!e8-cD)nC^i;+TP}I+2UVT?Yd50D<$m(+Kp@gu=wWwId7245dD~CQgwY+G z6cqEj<5PWlH5Zb@ll?6xH_#9e0f*D5NLIT@Vx>fH)GDW@t`viNkt(Lb$G002n>>}^ za}uYH!p66EY9UN)d!p#=(>^Kd!{AJ&-;zo3>s&l0#f=PA?I9!2_iQF*)LEGeg{r=# zrj4&zmWhS{t&*BMirE2&TAid$(u#@`;!4>)54cCI*R~$dsUX zFlfvh&>c!i_6J})B#fCHNtSYg*MJ%JrNQ+!EY1r;BCplrN0qXf6rc6b{H#8`)P5m| z#I-C>!q6>wPzAq{w`|m*FXPB<$hUs;u$&xd<0c+CRzE}mR~t}brC?4K7&Q9M3kXFE-%LaWS<*sLV>n{RXsCz+*>+0!Ea|ymFf@%GI=Ni5`GLD96Fs4r;&F;uB+|Q!$)LU z5gNq@M5AQd^=Du_%`=!ba4(XLlXasTNRASnT2siUM&|ym#f^auqX2-yAFW)Xu!w$O zQ8vLBW6gbQ&Cz+QeEm;{yz(&!RG{v++BkIbS|LuTWM_Gi*=bj_>#?)*-!S1;GZ4r0 z@3y@&>XA{ilY<`J_Ij0~ldmtr3NHhT(uT@df?$o>T#JgZ3jKC&^Blei`E=@QVSka4 z=u*G*O+&P(+w;hOQ$r&~Zqu&Hbu!GBW@UaR5uYI2Ri=Un=hX;-kU)fZm}GKKl)J_0 zb9eGpA)9Ixa}0+szQEN*vS}YBr$2d@?$tWnrFMX)6HXrFBWlDD5;7r*D?#lFFx((W zRgrE?S=^Bm$|Uw=BGH!i)5AZqw8;z*>{%N^a{3Z<+0ddH811nza-!w6%ivLEkW14q zWSbm}e~pc+0SfwQI5_3{5z|yW#a`s8NBm=k{g)@k>UraTQ5ho@L*7S;c24_Tl8@YPK=fd@h`3 zFl_Y^;j7CvU1u1CMB4TGS(s?H zcL7Xtn4;z?1xyNE#-NVU_n7{3gvZ&SJ86%6^{Ag#9JU)NV5zW?TKy0lOVh>n6>mB6 z9zXXK&{o>YgBRA~u7r$i)iPqX_jPL6i8r=Q5R8pCzn|DhQd(-hGDhM~)$jerw{X&^U2UkmJ#D7Lj)Vg!o5Z$$kk0Hzjpd>)AHM(SVzT3B zN##~|n}{lGZw#{u44SA^ALMQw#1y`+Q!PmsI z41D_%3X$1w0iD?=%oaH1(eU5g6xz&2e>#TA0g17@&?_gtoT-rcehx?BSZv#M=#>Ya zBb#=Wq)jn2;Ns*MVn2kZtdvf^KZ-oZS-58!NDkj7O*a(${F0SEp>8o5nC-}vX*Kfc zTibYP+F^&~>O|`wfQ;0Yy$GoGcd@7s(Ix&yK1kyapf_Qu#Nrc&cO;inyGM3+2(E1% zxp&(NC#L54?oT&i1wu|7@^9;Bc&Whoi%1${#agf(MW+==PfIwAz$nR}`Jfy_*Y)Yd zR=B8CfRz@fFl_flUD=Czzt?_Crs&{J^P`<;IGF1Z+Ia=vaTh&fzmY_uKwTmLDTuOm zMt)$?5zVrOdt9-st;OZ6Yq!y~THyE=@Z zHrwBAU}v2p&Pe@6X*SzzDX~aK1tz$>`}3rsmDvv8R364Zfcg1=oWv{OA3&9eNY}Ia zw7s_62DOyk@`Otj_blUhsvU;@hS|CRu?6>1vv`qIp%!|34;NdWL)SDx4%?(T7Zf)p zG^f%=BhY!CJwxilsT(D=d29_)JDj&(f2w<|ouYSapS;01C?JXGUe%r(l)=D+KKO{Y z`-0+jLv$`bu;L8s$wZFjzMN5(r4mxRFeBiVI=ep3%=#|9FYsx=siGkZW(+G=cx6g| zj)xAwI+Nw`{kw<=i8d}(Fj*BN-NVqbHh99zB&fo-$AY4rWTiglP&(CmBl-(?0pHtF z7AfNTeuB6#M7Op?dg}#}~KKF|lx9i^yi^fOe^%Y~4X}mR^rB~5$=~{pM_F!=& zFjvbjmp-M=h_Sudf<=WN82k8*wY}B*nnSA zKwn`*wR_Iv!Y8x0ymlKOjpipRc#uy`q+>`@2QRH7iaj7r@VtbzNMW= z-7Z>nA3uA{>7pPToop+4Z<>Q{pvBC%`(J&agu@8_-aWfAXuMQ7=+nSOY3%(2pcQ## zvwm~e%iw5{9m;$?Oyis5TW}8k)IYb=IAu;;%OYzJqrhBzd|}mKIP#)S(KJ<8W8%!= z^`k<{-X7UfH)?W5XRZHW0_2Srs)xby@34&(icre`o|CoMILi5SAlT9=Pcx8xtQkU| zU%u{@&_l1&?$bl0y733_l{gNoS$pXPKpj@Hwtz_Hp{hyWzNYP-DHWLW;M%%m$#nbv_egg>xFU zjFFit$YXlw`cil%GNJ+DbwS3SlZ(93tu4Hsp4|*e!ht(BR64g? zv}7pw!Ve67>9>c?q*qekMznhj1Gi+Jv4a=$b_k=bT4t;!xL5p_bDb4aKpu#U1f4Ez z<#sDilnBPqvHDdw@eNuQX2*t%!qv3z?)IvYysUXBKheen&Ih!4=Q9OsxrI`sn<4or zdX{Fo<`bO*1Pkwg+oOK~_tc{-ORe{K6C-30vvPq-O)V>>dW{?NEhCYqq1^J-EoV+p z;Avbgl5SD!Of!S$GR+bU6^gA>U&nu&^5yDeH5IALTnGZhwd{NE2d5`eMqQxUB zGRM3~jzlh8T?%&7`6azFDL`Ec`Vip`Z>g~{s!FTL#z9W!#v+verk;n|k5z!_-DzMd zdlhx?`4Ajo?Ooj_=H2qUx6=}o2FYH)%97MjtoIswq6c%s#?IF1H*xjRoO(A-1Dh6+ zT&AsVpw92&(k7Hc?)C<}Y;Yp}s(xwIu6?Au3ozs;p zK7jnpk@IS@T+3r|i&c~T7HTE!pEg76V1wXcf{AQDbca&l< znF}Ou=~NKdK;^7tGq^w)^+Ey4)aGl3fkET`JrHGg!TcAk_cgF6ErTOoF^El%{_ryx z=-al0-R7}sT;9kEK4(wUa*98-}*B zC=!?EW>WBP>RIpcpv)W#1$-Y)1e&!q8%{1*R;#A z&5ihmOdWZ;9oydJ$B0SQO1Wps1Fe3CI7X$?Ia=sTtIxM!1qkc6%80Bw-T^VBWd&v2 zBplaS(9Q2u>kB?U9t8yOGjCJg4CJ5$1Uyc@V6f3a@NP(SrpRL^@+LJJq(zcVUWUT^ zY3)Ygq>k1~6^fC|$|GpL3e(an*wLcpUF}*(rdyzEUU{OotSTSSp8M#{qc?#m1s4(Z z5xLjon`$-7Y%}Q!jaON|WJXaHMY@r>>SP`HGs2XGBst&?#aJX;^TWYg88I#$+36$$;gTu&>8 zQVm+Vv5nYlbc(vnDzEUQ4tW)R>aCwsad&uFoi$9dMQ0`#h=cWi^b+tRk64|Qh|Y;~ zB;U;*mWD*WyD@)|nNhwrxrxalGc zpR4JK^NM&8vz_eK;i@OK?kXa3W9uHqB;we68oJiRl!szsj%pD`%H_%FD@vX0QI*3z zXB=ehshy_|)1KtIm&x>4tG&3B3mofdzD_8LA1IV{ds7MK_+Z&0x|U^Z^SVHqxZ@^bS(re0lYRo6E$5krV9AEZ3n;;k~^Z4gf% ziIt(M8USY@WlC0_f#ge|hXft#J+y7e8W{>{(F|g%;Z&n*Bz!gmKr(${9FwAyX@^#v z4i`8H6HUatqFJ*>nTx0e)>C3tJn?NKVn+J>Vbl}jzr;x5Y^KNRam8v$SM73MUfozCG;vE=Q3zpYV_aj}RJD@|ka;VTv|I79 z)7ejZ3dRbit5LS7l-K~S)QnCJt9m_@7Q<`pS~`r$2YYB~-*I(=$EmXz@n|itiOb7r z`-l#>p|zgH)%sUG`Z`ypq!5MMZMfa*`e5n{MmDY=7$b7~J z6LlKu@}`K_P9RRavpw~!7f)_5x!v4ILQ@;4H`m#4%FZs{WN{<=Htqh7tF75ID|<+s zAd$F?F-{>yWe5?g1%;XnMKSYxLj@VjPok|Dh$6Q;s9$ST_FR&)r0EIHe(k?2W z=BrWLOqa>Rk&Uz!r>*9Y-@|CIx9A>YIPq0*+q1)2c4=_0MP$l-%vi2EyRMgGJ$-;Jy_1e?;^j?mU3H@2mvRYRqKTG6+Dble z7I3ir9JJA+^4w@y5cc7{p^>07Wu>WMlt`kFH@~C%xq8e1NC`ZkqI2(usfbx7e+egE zZ|g1u?t94YUZy6{4v$lIG z{sUO-uwQcr7w-5yjH|dcwb>hXtOa#1Dm8{2nf5o^rx>u_Ehs4kC_VQ8SNyJ>1NPB% zqJF0Lm6W8_z9e98W3ZG}OM&+KPV2hw>>a5y!IwSaj#XMrob*9dpbm7Sri4f_qKSNy6tM(ABp|yzQi}hydL*uYOS4rL_5#W|+&A~#h+i@p@%(vNgXvfr!Elg{l zFBo1d4?)%r28@K?1ZZN855buW#1LtG`?4#pb`vph#d}9cJllixc@;VpyR=(vRv{)~ z;9(Lfl(#^_k9qGrXCY4uZ(y_fmu5dV4-=f!;aE{7L5-XKY{c zF^O?^>Dj^}-g&&A$$tz(z%SA+tLRi9$;QLmWeuI3e^4r%mYx0dhV6qF`-$L1jNdA; zNpI&Lz=q@)l$$zHfa3C!DpMUJHR$%I`}Ry#d~M6r$b_3OIFekN$3-yf4}fqFpIgI~ ztbTs80jut78q*DQq4;P^Ep7(pi-~JcpGyY0E0ecu3>2CEgloBTg-tLb&@;)`kpxzFO&!rAVW-f= zZ4Q81sOnuV|5-yj5(<40A{Su~RHrqP5h5sAnaD3`*+Y^71I}i*Sdv*{_|`IH;ATt| zw5fxB(7m^^jImLpqY(67;eS6JB;H}fRde;ZQ^JCo`RlO5FQegSqvyWqIcYysj)uoD z)*tp)Iy&tc>(ud;?rmUWmBj1qk$kocHB|Kf?A6_o)NNR!ksl&-=%x3c$@t8l6~xCQ2o(JgUA4({(fF?vb*uPrfGOovoZ zH)r$0Ap(woAMFE^dn92VVupsnnB;^4r+259h2{76igP0AK0hT(s)DX-JGe>wu{huR zHocQO4J|p$EI(E2WRTU3TiH_^!l8o`+yu$o2`u?j+PhCF+p*s+pJwmOm(O-=j`eSL zx~rCJ?DQqv0(^o=hXk75%+=*aL&vBvL+$NjUIuy}x$kr|yhCIQql zX$b))EqM*<_@Uh9z2^4Cb}&xoGnGdeVQocjQRPjrtgCp_L7@bWA1(J;kF^LD!qUxU zH3zPZWeJ9<4UQ%WT5MSlf%KJS{h98ga~j!YJwcf1#8Rbg7Cm%_?aXL?jsKdBS>B5> zT%3c1BtwY=o~^ZT(2kEa(>T#3l0gFB#?I9_e-`+pd%oxN_p8k`TjF}B*X!TIO|8Zg z-^UD_EK2zO31#9|W!qLFi_S7?LcpYF1x*K5kfn-=(ulg6^g?;X*bBcM(6och5qQn> z*bwGySXM)gTjPi5USFvS4bfrotbD6Pe%q{UF(IK_+U9<)#JZ@gco!i`UUW(doqDqf z>MuMJ8oygrxFV1xZzwb>GUs$~IU*1$g5LMMfQVW;p*)WF))#iv5DbT*(}4kDoqXkR zS|$Bf@6BmsQ)#5Rn9RoYHL+oPN>ecV$@5(BBrotucveUzu1T%TLHRuA5cs#>>bU+| z4SX;n`g=mq<_{oyty|KWnMQZ)BPqKu1(V}W+&V~Bac&YJ`<0wSgo?)IFzoyPHz~(D zVx^>7x%Tg-p~&ADy#gBGp9noPG&~XvEG*Q&F?s+xGzK{go0u9Vg_#=~8M}INYRdvF z7OSYZhI>d#@jRuLd0I0ShlJ+WL2OmiFD0#OgZ+`%i zSeWT;Rx@cNUKGNlm2O8ELs~*Epcj$I-(OWdWNXiEZFGmlwFzuf zQ18X=3g&9>XOf}yKY(B04iv&wf)}Ci#~A}Cq>G#mSlqv;$iFC&RNZVU9~Zt3X#G4=bg;Z*5U7~%k9d^Tj2G0&KKF`|$w0P`gh-;s z5&(&{!td(4!q#%rRcCXeyMZ`PuRm5&{HE1LZW@|zLCMA6YAbrnhe!d|j6SQ@JaQ-$ ztA-((8rxlBJo&qR{AtI4Xr(qrgR0szb->E+%(<5&fAO67io04FgA64t-pDcKp_|+9 ziiM1P=2pSObJ;mlA~t%qvcjGf@*fW?5Vn=_(KQCWR%p}t5UOn;MYzTOOJ z9_B^hpgl9Z>)LE6^@+j4*?C->6DB4mUTM`JCY?1`UClQS5<8K$N}qmjd>@MbwHmU_ zL`k+UCpnOd;>~V#@c_d}gHI4ZGwj1rPDP`~gYT)z%LaKo9?3tlr_YCHi9SwlV{sVX zKFC>5$V)9@=SugH>Es%JkuO=t=o1qMKS4884BIq)S_gb%_|z9O)L7CK{lAgoPSZLd zk~dP>LaUNb-7|d8n70VncSLkKPY0~f%ANLTtl{9J@dU%;W zPO##>^%*~uK z-KAQ5M?2)C6o78fC=KFrjz!M+h)a*uNq@8nYUU#Fhmr1!F&cZ|u%!NS;D2&&!d}We zy22^yl)ZTb`3Py&jHZB=)p@CAk$QG!5B4QeR_72;=I21+=HUwCkc)|$s+y%ljO{zo z7Y|FpM|rg3rsyifkb%VR2)pKr#A4QqUsRy%ub^A&NF zRLVTDq?vYJH*u=sqxyqDpSDr>+oIuz#sMOhPySdbWoKj*a!3~!$QPM_Gx*)@4?uq} zaU@aVWA*!ulbnTE3~!hkL0*G{^US$LeK}P%4%J-JSjp9DUupl~_ZKn8g>gJl2tI7> z!=1kJNluCKVOgG1caecjDN6Ah+kvaDO|dtfU6@az8lVS^#Pjy}c!Qas>IZ@m>49_t z9w7&Gv}-eY>aQ>+akg@&3VJb54R2&$IVlf)qVyk6e!S5{5^Ul;IPTTUs6gBzlLD|x z9*TCty`;T6t*SO-2=2<;QqFDd_KW?5Iq(q$kY}XT#(s=opx$zg&q$j&Xez03NiIbs zt^5I?=*Z|!jg75miqY=1pZx*!425;(jo8rMS1TQ0ki*rdhdJLS30&BT(P_Bh04d5y z#uAy#SV3X&vCIu(jG~B8n+|HpA)`*v@kMc2ccrIgJOFl?C*o|9e1N&SqLX6_X}4xc^Hkd4FCyt%kr;|h zH8aUzxgUI6pBeoJF#cGd8TG(&VL)LXz8S9*?`U@!dF1uFbZ5uf$1W4l)MD- zu_)(C%Be2lSFI3&ukg*#u3Vj!NDtbc2`;mPwZv36l(4obT+ygz+qNy_TJV#m7FImk z#s?BM@)y0aa_H9#*43_)P*y3nWa2}f8ixX1cg$XZ&zVc@wHFNExkjVPRz_lWk3oo7 zwl5Khsq`kIa7P~}PpETAnP;t-Pf6TqlJVgRLwM(oJ+;^?llc%ZqPWeJ;f-qFwc0I6 zOqD>#;tU8;a`;?+5;$g}pX9rGOs<>D`7&+VS_+`p6j0|5K?9Ft^7qI9(c~&!_7Hu& zYB8<)ysJt#$PUf+mh$>^CdX$dawG5VB~7P&%YP z5Nm6yNC9f9bP9ctyJ8DDkg1lZsepo^K@LS5mw=orbig`!C~=L208B`(CkIW$f^HyT z8BG80O~K;tUoBJ}U)5ztqAB(UJ|RnBxzH8zNQXd74IppR7W^K3J-aF)q*+KsY39C) z;awK0VaHo;9U8b+lME9WTxdo~(KX_MQs;|@xy;#pUQHS;&yGc+0y?{hNt$yZ))oPf z2T)VqG8!8iSyu~|`-K8I+db;F9`(QG97{{Lcc=qhegv*H`qu=INPg|Bf!j-&Xc*?9|osiUX^wBE7EEj&aj>1uX1S1 zD8Bm!j+LL~XC;+p+Eoo;c7-b&Auc{hU}C-adGU$GK1H1iRF@|6rMJIdpolwj^M@)~ zOt#&=h!6F3e;YOq&_1$|-X$PzTUTw*THz+s6T7P=L=!~5AjUC%8yms$USVfIlYUF$ zbfO+4ZU=u>smc8VFwl9e{sRCv8z^B}bH|`f2t?Ocwp#+3#lnX7Lqp)Ir?L<8}WKeF9{6`tf(SRftH7UZ_!)OCG5x;gu;35J5r&)4hgiDqpUKRd1 z(;NUhtR!$+_*)eJ84L7d{*3kTNH24;pXOf43Zm;A+3}Pk_gqJ1h>@<2E&Pmz%&P?w z$_mPFrJ2Lb^#)p(tY3AMWRK#C>YB5dxFbW(qW6w3etD&Yy~h3&Ihts&zL>(&Kn~xl zn^X$UoXOpizrebAG3nYm@%`x7sUeL~jAHjtE$atul@H=DNO2_8KK^d= zrgl>VsP0@upbpPdeYp4%uflS`#aa1Fx;%5i?(iW8I!SCLl{^;X)*o9X`q3l!f-740 zR&9o|gqQpCCPbYyxmYTBv~K+IhPNd6r$nd}4;~+qr-uyRvR|8+n;3Sagl9E;R&{p)9 zlxgu6r5~5d5xQ6?z_9 z`_=@t8wMt7zAasjGM5(_I%D-Bo_mBKNGbO@HLmuHyYmF1HYL_3~xd|gm`e_Ox z^Nj7-Uj6hyERdmQXp7TpL1`gfYqFTB3a!bDDYe1nY=%E zc~-fJNXnh?MO6qrmwId;*-MYqKQ>77NfuKu%oYpkm)w?;AG>9$LEiM-;8dx#d88Hkut+jSvAWCj}W6;GO!q24KC$sP*g2xtg`C?jkNltC0vw1G{ zSSOmpbpGo@(BvPR7017KyXGiH=YDv$z!aq>@-ygWOiBy1AV-_A*C!_ zhdUlUh;okh>-DV(du*=(IdN$eZ?3gfkShl|_?1xxY*b&pXrh2qm2G(Io=czzJT;9BiMDhut~ z#E4`(AS)dGQB`yX|DENq<3ell$9Ae9obQot)U^ID>;W@-X?2Lj?si;$br?}GK{?Q# zj6(14Ln^hczni1M73cBLDX|fMJ(XmWmLl!dQIeB(3!9*4nyiBReFI^Qj7qEVmI#ha z(D$GO{k%QNNeUTW!+~Q1IHT3-6zib_e16T%194>6_}Yt&!Kp|BEa80Q0pD-GO=g2l zKlYr1_{Uo{?4x88OCgzoiWek$WYi5?_}tC!oG@+t^E^lc8cj>_sE~A2kzQ*?y__Mw z;6essdPn_35@_AV_a8U}xpsYxo(}$;D~Z~~fYSX4Ka&Y5T&fkI@2v($*u*+N(YH~h zKLG4ux*p)8wc3-NWqA4}1uuE#6=!jIxMZ?CoE|Dyk+WM!2*oN4PUMSq|92roC`w*r zIRZYy!8*|ottj=ut{=q`LoD+46hUu8JutW(rVJ2douBrbFoM{05k&CnbJ_j?bn7#D z>abgAA4@s}f46B*~m%QJ^1Zdp^VBJ_)vQLj~HV-R68Qe`J6cXMAP;tZb zk5^sG&m%!IzZWzBI>v9Sev8R~AGk{% zTvcqL_OSa0^CpU4Y!kkj|9UF5W5e`R0QZqs<^P_bDNYt%NR}S4hp%Lt>XS$ideE%3 z)f!z6S15!$;SnEu6&|dj^yG%--)^X-zjJZR0F@H(O3U5K0P!Ogk_a&~QmnbRW8KvG zIhZ2c?0NBBqdd?+;d7_O)*9w?kBtYYa0K@ZnO}Tm!c-gYvl8<_ddgH^>p>e)oY_j3 zXBF&HF0@T|4Gn|@&VV;eTBxURbZaB{%hLKz)g^~#g3X#h*#5AKE!A%cvgZ^jF3RSj za%j@h?g+hEH&rQ&+~`cng4gg=`2!kOfHTqy)sPKSAYGY8v9_udS%g`2lppGr{3Hdj z^gev?s)XqhzphHk(($ZVdpp+8QC08<1SbRp7xWs*^y+|N5Qe7$4J9gX3J-QGTZbTG z&N^t`56YoOE3P`7qof409R9Ob$Px=O9ja`W(V#BKn!%f3^<|W=m{UxxrWUfc^rj*J;*-r^p#bRA& ztnTVE7~HA%^L1>+TF2>ZiJ0^R%j#|a#qNHaYdyrIAGFNG`r|l z0ITG%p0tR~X6v)$EQuIC$Z5Q4>W6u=l(c?Y!ew+=*66;Fy_Xp&$*`S+apf(*dI^pmz#l^h ztxnJMy3-7V#HpSk^ZQxj+FaCuGK2iOM3?{Et znVw5bxbnX61fv;uS>oFg9cR|ysIk`PYE3m$4(gSQ^O~2@QKsHnl`h50zcGo`eoFEU zH;_jy?Ykr1AbdVcvZZwNnZ*j3%GYFTLsUc+*@6u^GTM3!Cl1`u#;QXnIG%^2bdT`F z<6>~JG@YDOo|-aT=Y4zqJX42z^%*cYzQt&}V)P3~kc>^e%+<6;9JCn>bN^Rhx85^{X()Oz*gL=@%l*}Oq@3)Ln7@%s4+cjG zO{eFHv|KOeUx59(l`K*6Nn@oBbf&?g2xtDsY!KayHA>>Jagu!@?(~$3XqjJ}uhxuTpZS?> z?GrrL9l*$s?*R5JFfXSU&}$HEdAY7&SPF}d6@IHgGW*sGxC%iEehyPfmpp|}2_iXW zO9fmlDxbFjIyhB_kuP5wjz|9}7<%tC9muLADZ|t7nAK4oFZY4O459x5O0iVxddKQ$ zwjpIkODc-S$RuU$#Xk&)iw~t)M^l+2Mvhg<%1?qZYyx~x-S*THt{;B#S3Agk zf%siO($axZUE7}^b}t08g9s7{QY`4)@ldq}+ySaoBx1RI-h8KIvMIbcYjB)6f-hFl zYfJqwELg=ION9I9UmDo~m55CTd1-eEV4~Z^twyeIMK;xbZs9v0yBdx$l^&+&vXf^> z!tn%VxY?#_##|DGWP8_bj{{FIkDgi)`>rv>BKfk%b9H4FVUbuqa{mI_JRN>966!LZ zk*R7oG3BYuq-OtUgV6un?@rsD$-2##9@DgZnDvb>>+H)Cm#+l4BwEg&1&ul0IK*|{ zy+3%K=qhcJUs>+?ia9Xq`;P0iR$Ho)>Cid#u0(?e!R5v;vm4Ot zwON*P69{bG(~p5~e4HzY-(|}R7V9z;{T~;A5VfN?4ag)3i}mbHL6ls&QZr1W_hBk( zc5o#oZtX{O6ycNNF@N5(uU8Af0dHZglH$?00%1&(MZ6x~;XTxG5vlu=bJjL@H)joG z^yQP7w8Rd9?+gkC{{oy+P8V?1u_^65iN{mup>$~2K)07JbztJC5{-ylg?^ZSqkiOE zTgqNaxnam0&Nf7viMhr@Q1iJ@J%gbA9N?VbG5HR`tU1D6z2~$+x1y(>p64&X)C*sp zt#xEEvT!3ym7$ZoO47uaDx^HYRJ?I~aIb)I_neqG`1Iem;=(zoI;AN!euQCcduLRi zD3E9nDs31_P;{@Wk~zw7#&G~yX1UiA88b@uH$wwQ9a}DUL}oRW)k!lDW?Z((-;25R z^7h})T&G6!UXZbJu5i7yhs0d)iVPXR{R7bf3L=j<>NE8DUQVv7Iz8JL*>sde3 zVL7BZ8Qu|V;dX0wC1u7S2Ji*EYHCuCZh{oxWFsxx4LD{M3b;ov^DMLPOHA`g*{Ul+ z%48TD!5WenkOuuz1ZHdubQD&N&JZ#3pnwNcKBc!<8+r9_&~l?s1YnN+z>1TV1^^&g zc2dS|do&)5)-S|Pdg4-2nxvVr+JQ7yg)1+pPFB@&z7~=^83S#R(rRO6Vn}uaJlsxP zSw8pd-SB&yM2t)JSm`)*&>q*x^}K}-YOups^W0ZaR$&FJKkYX?@824g z!7i%m`KfWYb*&Ri;?wRe6c+cO_bEOl18Scin3xFlsv;gEf=quoHZOss7@_h5y%_2*RF|giRmpaHo*GMDEJVpn$>d(c{vUIB3Eu~( zF|;#cFl(L+{^>2;YzX6Q4-0vak81u~3OuT6*S}qh2x|Qv|NeT-C#Xdt^&c71%I|hE z`xg*iy>Mm5F_UGG_w~J2(jhC6BI@$m9ra|Jw!dYtC|y=>yETb0#!HYYZob^+iRiVJ z=5ai^!*YimD0YmJsq>04^!e=#Xo6JCB>c1=c$w0BAxH8&XP!X|KZPXyswi#v6D^$Y zW!ndjqPE+{%79@vJpY)cZKf`o6`#|Em*ap_uM#|LhJ0JHn2!CqX+*MRx&Meo0=bik z86Z+514<~3F49B8y5uqBwYR!UV%Ln1syi7Y7T$Bs@3FTd?FTk89GBTWTHR;I&1z~K zLM9QF#T$`VY8q$jpKW<&F+_N+k6lZ3+uf#!l_tiezMq*SqhjzfYx*^Z_IPJ?h6RWk zUBOFHQmXXqQSs`=MR+0sBC`c*&2$gk=PziDb*|Ht{jkzIq%B!&i5s8WQ9PFxqHUKq zCxW3ax&|Mc{4u#adFEw-e)Eu!mNyx z`kRj5jgk-l9iRSlT8VM*n=wRE*vuS0#=w8jbm*^M?ltS!;BXkq!79;Rw$5|Bo>j0( zbwk#x)-NQAqrOr^uk%E@dc5UWx?EU^9++V7G)F=zm=EbHa>nk6-?n*I)rM&2i{oLq z8B-6)P*ndK8*YGp(9P1~rLfhV%9gMTj`cMaret)6r>7XQnV?Ccx2Ls9L#xJ>GT;Ma zYxQ}&Ref`1i1)D*h2j^yx=|R`m_5&x;JsPqa_@PNb7}4)OL3-QZ`tWO|~ zsWwA(*lF^x$y1l11qk7BkO9gZAJwH!x)vLQ!rSf6XI$s{MNNsUhGsg0I)GEtcuMM%T;b)#g9S6k`jN%RxTaS&w)B`6@#?Cn*ud3;_J zt=zXtrmN$P%Z-Ed5J6`e*!Ryuob$|$sbPNYAIq);?cS%KL{r?1Qr0;w)XHoOwFEmQ zP~SFmyUwm*t*A@A(S9Vl`jy9xSB+YP;vv<@ER7A&h+YU+Z8}H;R^P*(%{?a6`$f@L zE=N;%$r-2`BrYwyUsah{&QQ>A%F=gg0U)iP_oQ$oV4ct|V{sa)p|ck4ZT_K2j6pqQK+nph8? zZJ)sYJ!WG8X@oW3(|)88W*n-ZbEY6nvDA`p7_*3aA;a#nY-aBkCJe)73Rh|_`aM@) zaLTPFQsw&&A+>^#q%*e=8-rPuZ&VHhKw<3CU%%d9Il_(DIm zL|nj05X)H?se87^_P!t;W1P+CK|9d_R=#Xb@RcK&D2y%N#^TR;=fvt~4;6ijWPowi z_9w99B3}AHzeYlO`CYMOtNxb=J|oZfFcVH&0nW(p$~|zt#uzQlZ1pGd4!kyQS1OxD zFPNVCkQS&_wR56~EV6u%Q~7x7-l2sX<*!5#N7mw#m|P-;u6gG-5}0C-qPdz>AKB+~ zJocL@;8`3gmowY^BVYiC_)K=-W3oW4Vp37AgvH^cc#ww$@anV?+zUtRkakLwU zZ{ZP)#q*Y;eLz!MjzR#o@#))q3uBpV?rDJrs%LT44$Lu4{4WDJ7F=}@XXM3&WLlAI z)Sow#^_y2^Nnn^Aol0eu9W3oQGEw7Qyhm%gyJ|4h34<)vnVoyx@E}FI@osPF9PA7g;1(LlHhuz86a9f8BMqP zDmS;?!>qZ45|225*A9QS!RxWkbaS)&Ot3*_EEi!+g7ve&l=hY?uYekr9Z1eo_p;8$ zvXoqvK8bie9zJcN6(J^#<_O+>9lb^=QI{z2pY(+%os-EPBY7jG4WgyP*mNwT$@ZYg z!6z8Lqse3;uSYfsNrhe~tb)Lqm4^aDb0!-$7BEJ+gnjzNsR7krs%54|P}+oYx76xU zPfJ#aK$*aRurxfam|#*roQ84__))C~no^D-&-FCH*1#fZvoK@EZmuHYO04 z0EqP;{Ps^%APA_8Lq=(sNyR2&Y~lx{W)V{{vd?I3o1`rt{8-uXv&dFQmZ1p*m~Dd$EwiieRdvr^@^OA(XV8)-?$w;< zIU@}yjsUw8L*--EgHX&(AVsmbV{LpKp{F9fWkKBrNyHC+y)|)310k8jH`9P_Q~AFD zylXrU^+g+UL4okY94AG8Hau+8eO@6aqTnO!CNTr)sU~7^1JW&MSQ!0!W8l$i{f^+L ziC9{z0%O}iPHI|@mHV~Oahd5u()Vsb@y5CbpS{gB_i80xd}K-{8g_7$U&K0?`Q-7= zj3HZ%CEJeCLH#lh;DM31OB{y`SAhghlXeQo-Xe<~8S|(2Mf&HLlXzPxJIoCpDW~WV zg;zFpEWH}VvQ>YXBMPaosoTlc)W5ad#KIw^Q@rp9Vj$uY zU9AryqO*2sH#?{EMSXB?{0y!pr87QQ>b}E~mq8Q?sycb^(I}K+pFpY|JzP2YjWKWJ zIyOe}yp`DQHgAfau-m(@&Lmx#9Am8U?g|0FiNf-9hy0{JZ zMRw!tbN${_C0?~jZE`X^aq@uDuk-!|&=wif;JXu|kIyLP7kG1`Nem@ZC1dOt11Kw; z@AVWY1N<=6v1l}q5mQ9e0#Et?JoD;20vG}&E5*twTCzIAu10qSs*It1QY$hhiC3psRv| zyP+D=*>YHqY!Rgxt9Fsyypk1+bfjsAl3Pp677o(d^JWCyO|NSep5^x+&Xry(pRd;^ z{>Gv`XTD6)G_SCXnxg0LYw^3*;vo06tI}Gbss?9v8PylgtWePMaHn%|id99|8ZD0i zPY^ulux-_W2>X6{pFaupRkr#S=eS1-85=BdSM(;3O(7j;$v49n1c=i23fJGVFOZ3q zK>k#(;Ac@z2I7tlP4OR@%9+2u{w6aJ%eYl)5cP6#)GBFXITMfmkr}mxn?m;UtAgXqo4l&913zjBQD0jszAe z6d$qF5oV3trh%x(0TQ^TqL1_rck1>T+MVwm9$tzRJ5`|nRmk~D!HRZyC(YDO1eu?$ zjT|AVW>9nUV_@lswbe)AD3=Rn+Uw)bkPxlW-yuI~A}IVKZ2EyQmDY~M0p|jvUqEz6 zZyN*A%UuI*haiW8{-51Cdkpld2{pN>t$VsDWl8}Ps9}>pk9ynk0+OFa0jjhbw}=)J z==&P_PXHr-;)*ei4h*fKgsv@=TY;*3yG5Y{EwlI<1lNcz4ljcrH96 zE}?96#}Aj<_SceP?-u0d1J6jvQ3<NcKqb-a11^TVsR#X4X(NQu<=_<>u8H-Em+W}O_9#Gvwz~= zajy1}GD8O5yw?=xw+>8&%^2$Mbq`6%JB42V&H6?$BlHLW7wn_}b707G87Y6aO6d0! z?Tyoq*;8Q=utDDX=*yn})7qyP>ifrwzm59fV<+ogAi53$vy#eDU}{@l3#M!Y$UJ?M zz23%9DsB!^E8EdDu>`5QyaZ=P*Za|7D=EwspN2(Ie*MvdS$5BEPp_BMAg0YPVQ&u>pXi#e%eGa9-01IK36h|&pyV^DFI{N?epyvvg!bI ztK(93Ig;#zB_+Rsv)l!#ZON*$LH#E$DY|f5_4qKI$*J#`>!?yMFA;z<`vZ`zcJqbR)sY$BU=&MAV$qYdep$Q~?}@VB z)fnq^Nn(*_EXbI_CdM|w3e43LwI9=GMWRWI+l>~{xk5N`9q)qk?k&b0>daY^$CdO> zKMvF`B8LxmpNUGm+vB8wQ|accpcDFmSamzrxj2I;)jf8ZEFc3wgL{g9%9nv8!NJvU= zl*EXQ9*w+vulH|wznt?t&!=;p``q_^p7&ass&q7*Gynk5!PQi>0f5Yabk+iqk>azS z^dZu_8C*qC*C(AYtLTWC;Go*UNeLst9^Psp$<*;TIfW>%mQaV6LNU7C6FNQL)@s;CVA50xa-_du9tdG(~=F)YFCl897L*aF65f-lyj`yEPK%27Y z6M^ToepK|FXLC$2q0d$cm-D^Z1;6rbLo(-<{O8kVW@q_H71?{5kFt<*G9QH!0H{6u zzr~s`-g`%fCVO1_@;uAOBjhjS{|!SkXR+7=Suvkw{B%`{y1?Kme-h3&EiDZ($P7a; zpd25`Y~1VW@tpOZ^9B1XAMY;3^Jx^x1F--vHA>-xcmbJf@je?YyWIOZLayMy633*9 zz8iFYO5FUkL=nRr1*7PQlpXRXj_XsMM)JXj?>u{gEnk0mI|b_6bGT z0Y2!ta*oUVkIT-?f5lvs)I6C1r(JnT+d+HN&OQ0&p(6c8CMJ5!dD?~bWism<0Ps=o z{OwM3=Dh9oxt6B0iSn(kp!<>fIU|CJ&uX1sG~NY(B_?<7^W{Hc|NgDBVe5ikUx4Rc zw+lZ0q;oHESd1d%psfV)%{N0|Gzn~S4G4L_F1Q_+P*eJ#et}9%orU2ONW9w6K>QL^;Y&DoX z34XP(E98rrEvoVX7nfofmc0S9Sk=tPI?bHnbr0wH7Q&^Rq@?@t&LW(pgH`auU#Nb} z$|wTc;12GyZ};KYZPI#m?y%&-4@_-erA86@lCrsZmbd16wsAe~!Te??MnA?sL~S-k zKg}7j(-Qtksn}yBQ7Iz)L84I!i9|m6s=1@~-QYkOmNT+eW-P9e!0?LwY11ryMtc7W zAAG~($+$yeW23^N&KGM%hSLd!?CI(0HIp{YeD|g9=+e^rnA$?=hbih$<8zg=h9T~S z_Nk@FeyM>4{e5H4NNj$)0AWG}@i{=g^~k+|tc?Ojk2+ES2Mg`T1Rp<M{Y>PfKnn&Vn6?G;MuM<6?-Kj{cE({}o_DV3Qtbw@ndN*PJ;tu-o5OiYY@ zNE>8tX}Ub@_^8~pnKN&@VAC&8+aji^%=lhnwmN*=v)QOLB6F$HIZF#Q@lof-Dvh2>`u@}H}uluKxNp+^Ng1V`xiXc8{g3O zBU~1NfpS0eZv9%v;4Pg=c$zWR2XuIvm`qNSXn6AC;}rF+3>*T|*Aiag@;&^g5(6qW zl}X8{6p3degmY0+Dr%8P%QM%ZzcFoJndHjdfyCTOq0yU?^tkX!xPDZ8B>pN5LeE0YF+hZzp-Y6U|gzbFzF7%f) z8l4Jcz;I$4v}evC?8VKl;Z=SrBEn7B)CS!vM?!DbT?3y(z32+p&O;}>a8-BkF&Q)$f3VW~1%F0?`!2bNW*QRQuf4!#BRhwF8%2$wQQ_SBYICyN6_&iC}Gvj?@W3&Ba6FgXq;$^FS^^L28cvrRvm!_hWI1pJR{jD?uc0xaHa&<`2ZyZa5C958t;fkD7W#ZjB+?z|DZgN*~V_|Lso=MQO# zesXe<*OQ+9gf1SCl6wt2mKwL9a`t+9)`qLj1S^bJp0=T> z>Fvfr00_*x%Rt{KIxx@mS+U-F(n0E`f#?;WE%E&J zBEwWm93LDj6ZEPZ)*x*Zb{$s_u8?l;^kkd$9{By6LbAKCXv6n5k#BUKodRBc#atzx z6_n$xC8d$m$oV1rIII8*w!kVeGJzT-!$Rj%xdf;#Tr0kRSFG{)am$oA~W+a8Bgb`;oK z+qB$RDOpnOzTp8wSZ$YL4SKv@){hLbVUx3?nxZa(bc@I9nJhY*Cb1crn~hj-2{}uL zb9r3um~wZ@`Cq(k%j3LmA+X8!q zAWD)~tL`Dn4qiGRLk-F&8?K#&x;3O$uTo|5Z0>ho=!sk4cC~DqK7a zb+peG^g4r*e3yY@BYk{)+@@;%$iAK*Z;jv-S3@w@9(gTxP!=&cvUle_PdZ+z<#nwS*gjNUEL+fxO{3C(gHh?`FOCA+mm;jfi8P+#xfU=)?kO4o zcK;rX(!|6;GS`n9*8eOQYPjunwXpdtcC>E@$I$B3P(k^XHlN4yIS6@YX{{NDa)WxG zhY7()XJ$B${NeE`7cUoRTp%z+HuGO5ip82q(@u2`fW1(RvcuK}PQ+Ld$Xr_14(#{V zn5<5vQUWsqE}rzZa{aS=vpPIhcUz%;w~tprG|+Q(Soe3$mhHDOvm`Myn|z<+_nJ!2 z7$~yz+otl*)r(Tm;Q^anU0pjhbVWs`KYSjXE3LRm_h}xGM8(O8?giBq^D%la+n=&> z&o#r<2h!v<_O=i2Z;>|N?#(}QCT{0FW5c^HK|w*0;5TCgW9BX{h%H4e{*O`FzhfGj4hZOCFuD#?pOUA;sZ!GWui3L~`^?EjD~y8EP|F#OUG zbG2$(gh=oUcdC`U0@S0uyuHCDQ~(h29v)=FLCOpu6ad6J{Qu%5W#%3;U`6bYA^mFr MI80NeOvya-KToTarvLx| literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-logo.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..76a8ff01c37c87b48aa4ef0eca881f882d531fd7 GIT binary patch literal 6829 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-rcp-cta.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/stellar-rcp-cta.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c6c9405c290076e7927a7ea5bd23e4a5500195d GIT binary patch literal 25450 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/tickets.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/shop/tickets.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b237a0e76650d4ab9ddc2ab850b82ffb13d824a1 GIT binary patch literal 7553 zcmb7oWmHvB*X}-?!yyF@hc4-s2I+1o=@JB_yOi#bEB%RDWw~vLy!h(kb8K) z_Z#>Ay>st9_MFd}Yt2<-%xA5~`NuT?M^RQm765?&Kpyb`k4r!Z07gQ3dclYnArKT~ z2tv@HD99-2Xc!piXz1ve&tO=Xm^hf|=va8zI51o|9FBp7M}UV*fY5P4PqiQrRAgjS zTugLK-2ZQR>;Yh?z!=CM459{*U?4CI^whitBxi8 z`=tHi2#^LgA;$E_FXYy_l%L{8RWY$ugc1ScoY%kactHM1Qf+ilS;|;YVOW4bft*Ui zTpcw7fo zSGJzu$Z}vov7BQjI{bL`8%qWTbJ3B&6JA=;sM>}12tYc00ptG#301Vf&ZUX1pp)v7=rwtHATWfc!ItlzJZ}Xh&JMc zbjn-B0rHuIKrV9XU z7y$s7m028sIsu5Fq)$N+o9U?|{}m7t6oQNb{!du&f5L`6e+vMfkATeHuM+??ZDpwZ z2p|wae}8^8~~Do7={{vq^^c&UJMbD z3kLupBc=cfM*Ht*As{3$G86@d3*f-9eEVyr<+Sz=lBA(d0e2X zmQ&CR0}H<9MpsK4vuZT&$D%5}TXq#9_*Uz6(69W2!N^rjW4nzu)<*z`+WpqGT9%PKyAu*~_q#3tc7!kucl6b?t=+CkRvv29r!2Z7#a35>dwPIq$t?a#<>f zZ)()QR4GC$ju;;vi?dyjI&vKX= zp+C3NXS0P0QPhxY zboz9ciEJ4zdV|h)R%cweUT@5Qo15R;?VY-k>>j^Mg@^l^&nw)u9-D78;m}nWx80<* zI-tjuBue8_%Dw}?EaIP<5GwIVCD(SLq9@V87505*yAo}iP2Esw;R|7r(1# z8y*2drsK^1_i@F2j!|Rz**k|dcTHCcKH-V`dydIRT^pZ$-xlgN_#FnaGvrb83NTEF z8Y}{C4P(#^=%~;PzR)utKeCVemvzmpr4-TVSMz@tybkR(_KztQa$PQX-HFS|K=xsW zf8M+s+r^!0dznt->Go%QnHGPe>_utv%%)~ApjFe)pI1v0#&*QwSf78e$7#qfp3~Aq z{$1VzTd(!r%EC5+&#Ws?OH@ARh*npbLgHtnz*<__5Y5Tx`sWH%kYkR_jA+ zx=)4Lz1@26>E|NU(&o_2ju(*1`aq=*<+8^{3z;wI<02aQ@EUo8`uYDU%0DDN0(4@1 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 BixB_- literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/tribe-loading@2x.gif b/wp-content/plugins/the-events-calendar/common/src/resources/images/tribe-loading@2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..9a717adde28822663138b77ef01af91676fb15a7 GIT binary patch literal 4697 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 BixB_- literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/calendar.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/calendar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e551d6a0179661cfd811f093a9265ff8d8eb5599 GIT binary patch literal 20563 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/et-plus-upsell.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/et-plus-upsell.jpg new file mode 100644 index 0000000000000000000000000000000000000000..728e93088a07663e3944756306a39878d937013b GIT binary patch literal 29943 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 XNpQ+604t1&N)wGdvF-W8zm@+7O>Tu; literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/extension-library.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/extension-library.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40e830631a47c49a82662310420cbd5e5dd072b3 GIT binary patch literal 25042 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 W%B+lfT$;|WUJt!*o=@?2=Kla)QxB;C literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/guide-book-green.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/guide-book-green.jpg new file mode 100644 index 0000000000000000000000000000000000000000..73aa87e5c1f3fd875843073e05a1e89f1c858cfe GIT binary patch literal 31571 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%0DtG!7kMVXJt5SC?zT+eqc3HzW!Bve&oHb0@%W;R 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/knowledgebase.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/knowledgebase.jpg new file mode 100644 index 0000000000000000000000000000000000000000..da3362afa6157e78c645003bf5b072490daa6589 GIT binary patch literal 16717 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 C{%jEd literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/migration.jpg b/wp-content/plugins/the-events-calendar/common/src/resources/images/welcome/migration.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b757b1501d877c4461df5dbeeb2aa0950493d4e GIT binary patch literal 15252 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
    K(m_unXzA|lp} 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 VD1R4#fDm9_2Ssg%zyAP_|Jj7+)`tK9 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/1.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/1.png new file mode 100644 index 0000000000000000000000000000000000000000..7010de1b85996b91a5d9aad9b7d3b0e3f4aa9626 GIT binary patch literal 1611 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 + + diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/arrow-up.svg b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/arrow-up.svg new file mode 100644 index 000000000..6c1a477f6 --- /dev/null +++ b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/arrow-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/common-issues.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/common-issues.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3c811cedb74058dd62af40c474feab01bb4acc GIT binary patch literal 158876 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 TA0EJH00000NkvXXu0mjf&Af)K literal 0 HcmV?d00001 diff --git a/wp-content/plugins/the-events-calendar/common/src/resources/images/help/customizing.png b/wp-content/plugins/the-events-calendar/common/src/resources/images/help/customizing.png new file mode 100644 index 0000000000000000000000000000000000000000..45088379fb42bbcadd9a7510c86cd7e5dbb616bf GIT binary patch literal 148377 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