Function Reference: geodir_event_date_occurrences
Summary
This function has not been documented yet.
Source File
geodir_event_date_occurrences() is located in geodir_event_manager/gdevents_functions.php [Line: 1543]
Source Code
function geodir_event_date_occurrences( $type = 'year', $start_date, $end_date = '', $interval = 1, $limit = '', $repeat_end = '', $repeat_days = array(), $repeat_weeks = array() ) { $dates = array(); $start_time = strtotime( $start_date ); $end_time = strtotime( $repeat_end ); switch ( $type ) { case 'year': { if ( $repeat_end != '' && geodir_event_is_date( $repeat_end ) ) { for ( $time = $start_time; $time <= $end_time; $time = strtotime( date_i18n( 'Y-m-d', $time ) . '+' . $interval . ' year' ) ) { $year = date_i18n( 'Y', $time ); $month = date_i18n( 'm', $time ); $day = date_i18n( 'd', $time ); $date_occurrence = $year . '-' . $month . '-' . $day; $time_occurrence = strtotime( $date_occurrence ); if ( $time_occurrence <= $end_time ) { $dates[] = $date_occurrence; } } } else { $dates[] = date_i18n( 'Y-m-d', $start_time ); if ( $limit > 0 ) { for ( $i = 1; $i < $limit ; $i++ ) { $every = $interval * $i; $time = strtotime( $start_date . '+' . $every . ' year' ); $year = date_i18n( 'Y', $time ); $month = date_i18n( 'm', $time ); $day = date_i18n( 'd', $time ); $date_occurrence = $year . '-' . $month . '-' . $day; $dates[] = $date_occurrence; } } } } break; case 'month': { if ( $repeat_end != '' && geodir_event_is_date( $repeat_end ) ) { for ( $time = $start_time; $time <= $end_time; $time = strtotime( date_i18n( 'Y-m-d', $time ) . '+' . $interval . ' month' ) ) { $year = date_i18n( 'Y', $time ); $month = date_i18n( 'm', $time ); $day = date_i18n( 'd', $time ); $date_occurrence = $year . '-' . $month . '-' . $day; $time_occurrence = strtotime( $date_occurrence ); if ( !empty( $repeat_days ) || !empty( $repeat_weeks ) ) { $month_days = cal_days_in_month( CAL_GREGORIAN, $month, $year ); for ( $d = 1; $d <= $month_days; $d++ ) { $recurr_time = strtotime( $year . '-' . $month . '-' . $d ); $week_day = date_i18n( 'w', $recurr_time ); $week_diff = ( $recurr_time - strtotime( $year . '-' . $month . '-01' ) ); $week_num = $week_diff > 0 ? (int)( $week_diff / ( DAY_IN_SECONDS * 7 ) ) : 0; $week_num++; if ( $recurr_time >= $start_time && $recurr_time <= $end_time ) { if ( empty( $repeat_days ) && !empty( $repeat_weeks ) && in_array( $week_num, $repeat_weeks ) ) { $dates[] = date_i18n( 'Y-m-d', $recurr_time ); } else if ( !empty( $repeat_days ) && empty( $repeat_weeks ) && in_array( $week_day, $repeat_days ) ) { $dates[] = date_i18n( 'Y-m-d', $recurr_time ); } else if ( !empty( $repeat_weeks ) && in_array( $week_num, $repeat_weeks ) && !empty( $repeat_days ) && in_array( $week_day, $repeat_days ) ) { $dates[] = date_i18n( 'Y-m-d', $recurr_time ); } } } } else { $dates[] = $date_occurrence; } } } else { $dates[] = date_i18n( 'Y-m-d', $start_time ); if ( $limit > 0 ) { if ( !empty( $repeat_days ) || !empty( $repeat_weeks ) ) { $dates = array(); $week_dates = array(); $days_limit = 0; $i = 0; while ( $days_limit <= $limit ) { $time = strtotime( $start_date . '+' . ( $interval * $i ) . ' month' ); $year = date_i18n( 'Y', $time ); $month = date_i18n( 'm', $time ); $day = date_i18n( 'd', $time ); $month_days = cal_days_in_month( CAL_GREGORIAN, $month, $year ); for ( $d = 1; $d <= $month_days; $d++ ) { $recurr_time = strtotime( $year . '-' . $month . '-' . $d ); $week_day = date_i18n( 'w', $recurr_time ); $week_diff = ( $recurr_time - strtotime( $year . '-' . $month . '-01' ) ); $week_num = $week_diff > 0 ? (int)( $week_diff / ( DAY_IN_SECONDS * 7 ) ) : 0; $week_num++; if ( $recurr_time >= $start_time && in_array( $week_day, $repeat_days ) ) { $week_date = ''; if ( empty( $repeat_days ) && !empty( $repeat_weeks ) && in_array( $week_num, $repeat_weeks ) ) { $week_date = date_i18n( 'Y-m-d', $recurr_time ); } else if ( !empty( $repeat_days ) && empty( $repeat_weeks ) && in_array( $week_day, $repeat_days ) ) { $week_date = date_i18n( 'Y-m-d', $recurr_time ); } else if ( !empty( $repeat_weeks ) && in_array( $week_num, $repeat_weeks ) && !empty( $repeat_days ) && in_array( $week_day, $repeat_days ) ) { $week_date = date_i18n( 'Y-m-d', $recurr_time ); } if ( $week_date != '' ) { $dates[] = $week_date; $days_limit++; } if ( count( $dates ) == $limit ) { break 2; } } } $i++; } $dates = !empty( $dates ) ? $dates : date_i18n( 'Y-m-d', $start_time ); } else { for ( $i = 1; $i < $limit ; $i++ ) { $every = $interval * $i; $time = strtotime( $start_date . '+' . $every . ' month' ); $year = date_i18n( 'Y', $time ); $month = date_i18n( 'm', $time ); $day = date_i18n( 'd', $time ); $date_occurrence = $year . '-' . $month . '-' . $day; $dates[] = $date_occurrence; } } } } } break; case 'week': { if ( $repeat_end != '' && geodir_event_is_date( $repeat_end ) ) { for ( $time = $start_time; $time <= $end_time; $time = strtotime( date_i18n( 'Y-m-d', $time ) . '+' . $interval . ' week' ) ) { $year = date_i18n( 'Y', $time ); $month = date_i18n( 'm', $time ); $day = date_i18n( 'd', $time ); $date_occurrence = $year . '-' . $month . '-' . $day; $time_occurrence = strtotime( $date_occurrence ); if ( $time_occurrence <= $end_time ) { if ( !empty( $repeat_days ) ) { for ( $d = 0; $d <= 6; $d++ ) { $recurr_time = strtotime( $date_occurrence . '+' . $d . ' day' ); $week_day = date_i18n( 'w', $recurr_time ); if ( in_array( $week_day, $repeat_days ) ) { $dates[] = date_i18n( 'Y-m-d', $recurr_time ); } } } else { $dates[] = $date_occurrence; } } } } else { $dates[] = date_i18n( 'Y-m-d', $start_time ); if ( $limit > 0 ) { if ( !empty( $repeat_days ) ) { $dates = array(); $week_dates = array(); $days_limit = 0; $i = 0; while ( $days_limit <= $limit ) { $time = strtotime( $start_date . '+' . $i . ' week' ); $year = date_i18n( 'Y', $time ); $month = date_i18n( 'm', $time ); $day = date_i18n( 'd', $time ); $date_occurrence = $year . '-' . $month . '-' . $day; for ( $d = 0; $d <= 6; $d++ ) { $recurr_time = strtotime( $date_occurrence . '+' . $d . ' day' ); $week_day = date_i18n( 'w', $recurr_time ); if ( in_array( $week_day, $repeat_days ) ) { $week_dates[] = date_i18n( 'Y-m-d', $recurr_time ); $dates[] = date_i18n( 'Y-m-d', $recurr_time ); $days_limit++; if ( count( $dates ) == $limit ) { break 2; } } } $i++; } $dates = !empty( $dates ) ? $dates : date_i18n( 'Y-m-d', $start_time ); } else { for ( $i = 1; $i < $limit ; $i++ ) { $every = $interval * $i; $time = strtotime( $start_date . '+' . $every . ' week' ); $year = date_i18n( 'Y', $time ); $month = date_i18n( 'm', $time ); $day = date_i18n( 'd', $time ); $date_occurrence = $year . '-' . $month . '-' . $day; $dates[] = $date_occurrence; } } } } } break; case 'day': { if ( $repeat_end != '' && geodir_event_is_date( $repeat_end ) ) { for ( $time = $start_time; $time <= $end_time; $time = strtotime( date_i18n( 'Y-m-d', $time ) . '+' . $interval . ' day' ) ) { $year = date_i18n( 'Y', $time ); $month = date_i18n( 'm', $time ); $day = date_i18n( 'd', $time ); $date_occurrence = $year . '-' . $month . '-' . $day; $time_occurrence = strtotime( $date_occurrence ); if ( $time_occurrence <= $end_time ) { $dates[] = $date_occurrence; } } } else { $dates[] = date_i18n( 'Y-m-d', $start_time ); if ( $limit > 0 ) { for ( $i = 1; $i < $limit ; $i++ ) { $every = $interval * $i; $time = strtotime( $start_date . '+' . $every . ' day' ); $year = date_i18n( 'Y', $time ); $month = date_i18n( 'm', $time ); $day = date_i18n( 'd', $time ); $date_occurrence = $year . '-' . $month . '-' . $day; $dates[] = $date_occurrence; } } } } break; } $dates = !empty( $dates ) ? array_unique( $dates ) : $dates; return $dates; }