) ? sanitize_text_field($attribute_set[1]) : '' ]; } } } $data[] = [ 'id' => $i, 'title' => ! empty( $event["eael_event_title"] ) ? $event["eael_event_title"] : 'No Title', 'description' => $event["eael_event_description"], 'start' => $start, 'end' => $end, 'borderColor' => ! empty( $settings_eael_event_global_popup_ribbon_color ) ? $settings_eael_event_global_popup_ribbon_color : '#10ecab', 'textColor' => $settings_eael_event_global_text_color, 'color' => $settings_eael_event_global_bg_color, 'url' => esc_url_raw( $event["eael_event_link"]["url"] ), 'allDay' => $event['eael_event_all_day'], 'external' => $event['eael_event_link']['is_external'], 'nofollow' => $event['eael_event_link']['nofollow'], 'is_redirect' => $event['eael_event_redirection'], 'custom_attributes' => $custom_attributes, 'event_link' => $event['eael_event_link'] ]; $i++; } } return $data; } /** * get google calendar events * * @param $settings * * @return array */ public function get_google_calendar_events($settings) { if (empty($settings['eael_event_google_api_key']) && empty($settings['eael_event_calendar_id'])) { return []; } $calendar_id = urlencode($settings['eael_event_calendar_id']); $base_url = "https://www.googleapis.com/calendar/v3/calendars/{$calendar_id}/events"; $start_date = strtotime($settings['eael_google_calendar_start_date']); $end_date = strtotime($settings['eael_google_calendar_end_date']); $arg = [ 'key' => $settings['eael_event_google_api_key'], 'maxResults' => $settings['eael_google_calendar_max_result'], 'timeMin' => urlencode(date('c', $start_date)), 'singleEvents' => 'true', 'calendar_id' => urlencode($settings['eael_event_calendar_id']), ]; $transient_args = [ 'key' => $settings['eael_event_google_api_key'], 'maxResults' => $settings['eael_google_calendar_max_result'], 'timeMin' => urlencode(date('Y-m-d H', $start_date)), 'singleEvents' => 'true', 'calendar_id' => urlencode($settings['eael_event_calendar_id']), 'cache_time' => $settings['eael_event_calendar_data_cache_limit'] ]; if (!empty($end_date) && $end_date > $start_date) { $arg['timeMax'] = urlencode(date('c', $end_date)); $transient_args['timeMax'] = urlencode(date('Y-m-d H', $end_date)); } $transient_key = 'eael_google_calendar_' . md5(implode('', $transient_args)); $data = get_transient($transient_key); if (isset($arg['calendar_id'])) { unset($arg['calendar_id']); } if ( empty( $data ) ) { $data = wp_remote_retrieve_body( wp_remote_get( esc_url_raw( add_query_arg( $arg, $base_url ) ) ) ); $check_error = json_decode( $data ); if ( ! empty( $check_error->error ) ) { return []; } set_transient( $transient_key, $data, $settings['eael_event_calendar_data_cache_limit'] * MINUTE_IN_SECONDS ); } $calendar_data = []; $data = json_decode($data); $random_colors = $this->get_random_colors(); $random_color_enabled = isset( $settings['eael_event_random_bg_color'] ) && 'yes' == $settings['eael_event_random_bg_color']; $random_color_index = 0; if (isset($data->items)) { foreach ($data->items as $key => $item) { if ($item->status !== 'confirmed') { // continue; } $all_day = ''; if (isset($item->start->date)) { $all_day = 'yes'; $ev_start_date = $item->start->date; $ev_end_date = $item->end->date; } else { $ev_start_date = $item->start->dateTime; $ev_end_date = $item->end->dateTime; } if ( $random_color_enabled ) { $random_color_index = $random_color_index > count( $random_colors ) - 2 ? 0 : $random_color_index+1; $settings_eael_event_global_bg_color = $random_colors[ $random_color_index ]; $settings_eael_event_global_text_color = '#ffffff'; } else { $settings_eael_event_global_bg_color = $this->fetch_color_or_global_color($settings, 'eael_event_global_bg_color'); $settings_eael_event_global_text_color = $this->fetch_color_or_global_color($settings, 'eael_event_global_text_color'); } $settings_eael_event_global_popup_ribbon_color = $this->fetch_color_or_global_color($settings, 'eael_event_global_popup_ribbon_color'); if( !empty( $settings["eael_old_events_hide"] ) && 'yes' === $settings["eael_old_events_hide"] ){ $is_old_event = $this->is_old_event($ev_start_date); if($is_old_event) { continue; } } if( $settings['eael_old_events_hide'] === 'start' ){ $default_date = $settings['eael_event_default_date_type'] === 'custom' ? $settings['eael_event_calendar_default_date'] : date( 'Y-m-d' ); $should_show = $this->is_old_event( $ev_start_date, $default_date ); if ( $should_show ) { continue; } } $calendar_data[] = [ 'id' => ++$key, 'title' => !empty($item->summary) ? $item->summary : 'No Title', 'description' => isset($item->description) ? $item->description : '', 'start' => $ev_start_date, 'end' => $ev_end_date, 'borderColor' => !empty($settings_eael_event_global_popup_ribbon_color) ? $settings_eael_event_global_popup_ribbon_color : '#10ecab', 'textColor' => $settings_eael_event_global_text_color, 'color' => $settings_eael_event_global_bg_color, 'url' => ($settings['eael_event_details_link_hide'] !== 'yes') ? esc_url( $item->htmlLink ) : '', 'allDay' => $all_day, 'external' => 'on', 'nofollow' => 'on', ]; } } return $calendar_data; } /** * @param $settings * * @return array * @since 3.8.2 */ public function get_the_events_calendar_events($settings) { if (!function_exists('tribe_get_events')) { return []; } $arg = [ 'posts_per_page' => $settings['eael_the_events_calendar_max_result'], ]; if ( $settings['eael_the_events_calendar_fetch'] == 'date_range' ) { $arg['start_date'] = $settings['eael_the_events_calendar_start_date']; $arg['end_date'] = $settings['eael_the_events_calendar_end_date']; } else if ( $settings['eael_event_default_date_type'] === 'custom' ) { $arg['start_date'] = $settings['eael_event_calendar_default_date']; } else { $arg['start_date'] = date( 'Y-m-d' ); } if (!empty($settings['eael_the_events_calendar_category'])) { $arg['tax_query'] = [ [ 'taxonomy' => 'tribe_events_cat', 'field' => 'id', 'terms' => $settings['eael_the_events_calendar_category'], ], ]; } $events = tribe_get_events($arg); if (empty($events)) { return []; } $random_colors = $this->get_random_colors(); $random_color_enabled = isset( $settings['eael_event_random_bg_color'] ) && 'yes' == $settings['eael_event_random_bg_color']; $random_color_index = 0; $calendar_data = []; foreach ($events as $key => $event) { $date_format = 'Y-m-d'; $all_day = 'yes'; if (!tribe_event_is_all_day($event->ID)) { $date_format .= ' H:i'; $all_day = ''; } if (tribe_event_is_all_day($event->ID)) { $end = date('Y-m-d', strtotime("+1 days", strtotime(tribe_get_end_date($event->ID, true, $date_format)))); } else { $end = date('Y-m-d H:i', strtotime(tribe_get_end_date($event->ID, true, $date_format))) . ":01"; } if ( $random_color_enabled ) { $random_color_index = $random_color_index > count( $random_colors ) - 2 ? 0 : $random_color_index+1; $settings_eael_event_global_bg_color = $random_colors[ $random_color_index ]; $settings_eael_event_global_text_color = '#ffffff'; } else { $settings_eael_event_global_bg_color = $this->fetch_color_or_global_color($settings, 'eael_event_global_bg_color'); $settings_eael_event_global_text_color = $this->fetch_color_or_global_color($settings, 'eael_event_global_text_color'); } $start = tribe_get_start_date($event->ID, true, $date_format); if( !empty( $settings["eael_old_events_hide"] ) && 'yes' === $settings["eael_old_events_hide"] ){ $is_old_event = $this->is_old_event($start); if($is_old_event) { continue; } } $settings_eael_event_global_popup_ribbon_color = $this->fetch_color_or_global_color($settings, 'eael_event_global_popup_ribbon_color'); $calendar_data[] = [ 'id' => ++$key, 'title' => !empty($event->post_title) ? $event->post_title : __('No Title', 'essential-addons-for-elementor-lite'), 'description' => do_shortcode($event->post_content), 'start' => $start, 'end' => $end, 'borderColor' => !empty($settings_eael_event_global_popup_ribbon_color) ? $settings_eael_event_global_popup_ribbon_color : '#10ecab', 'textColor' => $settings_eael_event_global_text_color, 'color' => $settings_eael_event_global_bg_color, 'url' => ($settings['eael_event_details_link_hide'] !== 'yes') ? esc_url( get_the_permalink($event->ID) ) : '', 'allDay' => $all_day, 'external' => 'on', 'nofollow' => 'on', ]; } return $calendar_data; } public function is_old_event($start_date, $date_to_comp = '' ){ $date_to_comp = $date_to_comp === '' ? current_time( 'Y-m-d' ) : $date_to_comp; $date_to_comp = strtotime( $date_to_comp ); $start_date_timestamp = strtotime( $start_date ); if ( $start_date_timestamp < $date_to_comp ) { return true; } return false; } public function fetch_color_or_global_color($settings, $control_name=''){ if( !isset($settings[$control_name])) { return ''; } $color = $settings[$control_name]; if(!empty($settings['__globals__']) && !empty($settings['__globals__'][$control_name])){ $color = $settings['__globals__'][$control_name]; $color_arr = explode('?id=', $color); //E.x. 'globals/colors/?id=primary' $color_name = count($color_arr) > 1 ? $color_arr[1] : ''; if( !empty($color_name) ) { $color = "var( --e-global-color-$color_name )"; } } return $color; } public function get_random_colors() { $colors = [ '#F43E3E', '#F46C3E', '#F4993E', '#F4C63E', '#F4F43E', '#C6F43E', '#99F43E', '#3EF43E', '#3EF499', '#3EF4C6', '#3EF4F4', '#3EC6F4', '#3E99F4', '#3E3EF4', '#6C3EF4', '#993EF4', '#C63EF4', '#F43EF4', '#F43E99', '#F43E6C', '#F43E3E']; return $colors; } }