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 ( defined( 'TRIBE_HIDE_UPSELL' ) && TRIBE_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. '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' ); // If we are on the settings page or a welcome page, change the Black Friday URL. if ( ! empty( $current_screen->id ) && ( 'tribe_events_page_tribe-common' === $current_screen->id || 'events_page_tribe-common' === $current_screen->id || 'toplevel_page_tribe-common' === $current_screen->id ) ) { 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(); } }