ikamal7

event recurring query.php

Oct 26th, 2020
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 25.94 KB | None | 0 0
  1. <?php
  2. /*
  3. * Template Name: Test template
  4. */
  5. get_header();
  6.  
  7.                     // setting up currtime timestamp variable...
  8.                     $now      = new DateTime();
  9.                     $currtime = $now->getTimestamp();
  10.                     /*
  11.                      * Setup query to show the 3 Event Posts in Slider.
  12.                      */
  13.                     $weekly_repeat_array  = array( '1' => 'monday', '2' => 'tuesday', '3' => 'wednesday', '4' => 'thursday', '5' => 'friday', '6' => 'saturday', '7' => 'sunday' );
  14.                     $week_of_month_repeat = array( '1' => 'first', '2' => 'second', '3' => 'third', '4' => 'fourth', '5' => 'fifth', '6' => 'last' );
  15.                     $args                 = array(
  16.                         'post_type'      => 'ajde_events',
  17.                         'posts_per_page' => -1,
  18.                         'meta_query'     => array(
  19.                             array(
  20.                                 'key'     => 'evcal_erow',
  21.                                 'value'   => $currtime,
  22.                                 'compare' => '>=',
  23.                             ),
  24.                             array(
  25.                                 'key'   => '_featured',
  26.                                 'value' => 'no',
  27.                             ),
  28.                         ),
  29.                         'post__not_in'   => '',
  30.                         'meta_key'       => 'evcal_erow',
  31.                         'orderby'        => 'meta_value',
  32.                         'order'          => 'ASC',
  33.                     );
  34.                     $loop = new WP_Query( $args );
  35.  
  36.                     $events_data = array();
  37.                     while ( $loop->have_posts() ): $loop->the_post();
  38.                         $do_not_duplicate[] = $post->ID;
  39.  
  40.                         $event_startend_data = get_post_meta( get_the_ID() );
  41.                         // var_dump( $event_startend_data );
  42.                         if ( $event_startend_data ) {
  43.                             $event_original_start = $event_startend_data['evcal_srow'][0];
  44.                             $event_original_end   = $event_startend_data['evcal_erow'][0];
  45.                             $event_link           = get_post_permalink( get_the_ID() );
  46.                             if ( isset( $event_startend_data['evcal_rep_freq'][0] ) ) {
  47.                                 $event_frequency = $event_startend_data['evcal_rep_freq'][0];
  48.                             } else {
  49.                                 // Event Repeat Type:
  50.                                 $event_frequency = '';
  51.                             }
  52.  
  53.  
  54.                             $event_rep_num = $event_startend_data['evcal_rep_num'][0]; //Number of repeats:
  55.                             $evcal_repeat  = $event_startend_data['evcal_repeat'][0]; //Repeat Yes or No
  56.                             $evcal_rep_gap = $event_startend_data['evcal_rep_gap'][0]; //Gap between repeats:
  57.                             if ( isset( $event_startend_data['repeat_intervals'][0] ) ) {
  58.                                 $repeat_intervals = $event_startend_data['repeat_intervals'][0];
  59.                             } else {
  60.                                 // repeat intervals days:
  61.                                 $repeat_intervals = '0';
  62.                             }
  63.  
  64.                             if ( isset( $event_startend_data['evo_repeat_wom'][0] ) ) {
  65.                                 $evo_repeat_wom = $event_startend_data['evo_repeat_wom'][0];
  66.                             } else {
  67.                                 //repeat week of month:
  68.                                 $evo_repeat_wom = '';
  69.                             }
  70.  
  71.                             $evp_repeat_rb    = $event_startend_data['evp_repeat_rb'][0]; //Repeat by:day of month(dom),days of week(dow)
  72.                             $evp_repeat_rb_wk = $event_startend_data['evp_repeat_rb_wk'][0]; //Repeat by:single day(sing),days of week(dow)
  73.                             if ( isset( $event_startend_data['evcal_srow'][0] ) ) {
  74.                                 $event_start_date  = date( 'Y-m-d', $event_startend_data['evcal_srow'][0] );
  75.                                 $event_start_year  = date( 'Y', $event_startend_data['evcal_srow'][0] );
  76.                                 $event_start_month = date( 'F', $event_startend_data['evcal_srow'][0] );
  77.                             }
  78.                             if ( isset( $event_startend_data['evcal_erow'][0] ) ) {
  79.                                 $event_end_date = date( 'Y-m-d', $event_startend_data['evcal_erow'][0] );
  80.                             }
  81.  
  82.                             $terms     = get_the_terms( get_the_ID(), 'event_type' );
  83.                             $cover_img = get_post_meta( get_the_ID(), 'event_image_cover', true );
  84.  
  85.                             $terms_organize    = get_the_terms( get_the_ID(), 'event_organizer' );
  86.                             $locations         = get_the_terms( get_the_ID(), 'event_location' );
  87.                             $postviews         = get_post_meta( get_the_ID(), 'tie_views', true );
  88.                             $commentsnumber    = get_comments_number( get_the_ID() );
  89.                             $post_a_start_date = get_post_meta( get_the_ID(), 'evcal_srow', true );
  90.                             $post_a_end_date   = get_post_meta( get_the_ID(), 'evcal_erow', true );
  91.                             $meta_id           = get_post_meta( get_the_ID(), 'event_image_cover', true );
  92.                             if ( !empty( $meta_id ) ) {
  93.                                 $eventimg = $meta_id;
  94.                             } else {
  95.                                 $eventimg = wp_get_attachment_url( get_post_thumbnail_id( get_the_ID() ) );
  96.                             }
  97.  
  98.                             $events_data['list'][] = array(
  99.                                 'event_title'       => get_the_title(),
  100.                                 'post_a_start_date' => $post_a_start_date,
  101.                                 'post_a_end_date'   => $post_a_end_date,
  102.                                 'event_link'        => $event_link,
  103.                                 'event_start'       => $event_start_date,
  104.                                 'event_end'         => $event_end_date,
  105.                                 'terms'             => $terms,
  106.                                 'cover_img'         => $cover_img,
  107.                                 'terms_organize'    => $terms_organize,
  108.                                 'locations'         => $locations,
  109.                                 'postviews'         => $postviews,
  110.                                 'comments_number'   => $commentsnumber,
  111.                                 'event_image'       => $eventimg,
  112.                             );
  113.                             if ( $event_frequency && $evcal_repeat == 'yes' ) {
  114.                                 if ( $event_frequency == 'custom' ) {
  115.                                     $repeat_intervals = unserialize( $repeat_intervals );
  116.                                     if ( $repeat_intervals ) {
  117.                                         foreach ( $repeat_intervals as $rpkey => $rpevents ) {
  118.                                             if ( $rpkey > 0 ) {
  119.                                                 $post_a_start_date     = $rpevents[0];
  120.                                                 $post_a_end_date       = $rpevents[1];
  121.                                                 $loop_start_date       = date( 'Y-m-d', $post_a_start_date );
  122.                                                 $loop_end_date         = date( 'Y-m-d', $post_a_end_date );
  123.                                                 $events_data['list'][] = array(
  124.                                                     'post_a_start_date' => $post_a_start_date,
  125.                                                     'post_a_end_date'   => $post_a_end_date,
  126.                                                     'event_start'       => $loop_start_date,
  127.                                                     'event_end'         => $loop_end_date,
  128.                                                 );
  129.                                             }
  130.                                         }
  131.                                     }
  132.  
  133.                                 }
  134.                                 if ( $event_frequency == 'daily' ) {
  135.                                     $k = $evcal_rep_gap;
  136.  
  137.                                     for ( $i = 1; $i <= $event_rep_num; $i++ ) {
  138.                                         if ( $evcal_rep_gap > 1 && $k > 1 ) {
  139.                                             $loop_start_date = date( 'Y-m-d', strtotime( '+' . $k . ' day', $event_startend_data['evcal_srow'][0] ) );
  140.                                             $loop_end_date   = date( 'Y-m-d', strtotime( '+' . $k . ' day', $event_startend_data['evcal_erow'][0] ) );
  141.                                         } else {
  142.                                             $loop_start_date = date( 'Y-m-d', strtotime( '+' . $i . ' day', $event_startend_data['evcal_srow'][0] ) );
  143.                                             $loop_end_date   = date( 'Y-m-d', strtotime( '+' . $i . ' day', $event_startend_data['evcal_erow'][0] ) );
  144.                                         }
  145.  
  146.                                         // $loop_event_start_year  = date( 'Y', strtotime( $loop_start_date ) );
  147.                                         // $loop_event_start_month = date( 'F', strtotime( $loop_start_date ) );
  148.                                        
  149.                                         $events_data['list'][]  = array(
  150.                                             // 'post_a_start_date' => $post_a_start_date,
  151.                                             // 'post_a_end_date'   => $post_a_end_date,
  152.                                             'event_start'       => $loop_start_date,
  153.                                             'event_end'         => $loop_end_date,
  154.                                         );
  155.                                         $k += $evcal_rep_gap;
  156.  
  157.                                     }
  158.  
  159.                                     // var_dump($events_data['list']);
  160.                                 }
  161.                                 if ( $event_frequency == 'weekly' ) {
  162.                                     $repeat_intervals = array();
  163.                                     if ( isset( $event_startend_data['evo_rep_WKwk'][0] ) ) {
  164.                                         $repeat_intervals = unserialize( $event_startend_data['evo_rep_WKwk'][0] );
  165.                                     }
  166.  
  167.                                     if ( $repeat_intervals && $evp_repeat_rb_wk == 'dow' ) {
  168.                                         $start_all_days_array = array();
  169.                                         $kk                   = $evcal_rep_gap;
  170.                                         for ( $i = 1; $i <= $event_rep_num; $i++ ) {
  171.                                             if ( count( $repeat_intervals ) > 0 ) {
  172.                                                 foreach ( $repeat_intervals as $interval_day_number ) {
  173.                                                     $weekday = $weekly_repeat_array[$interval_day_number];
  174.                                                     if ( $evcal_rep_gap > 1 && $kk > 1 ) {
  175.                                                         $kk                                           = $kk - 1;
  176.                                                         $month_loop_start_date                        = date( 'Y-m-d', strtotime( '' . $weekday . ' +' . $kk . ' week', $event_original_start ) );
  177.                                                         $month_loop_end_date                          = date( 'Y-m-d', strtotime( '' . $weekday . ' +' . $kk . ' week', $event_original_end ) );
  178.                                                         $startdate_month                              = date( 'm', $month_loop_start_date );
  179.                                                         $startdate_year                               = date( 'Y', $month_loop_start_date );
  180.                                                         $start_all_days_array[$month_loop_start_date] = $month_loop_end_date;
  181.                                                     } else {
  182.                                                         $month_loop_start_date = date( 'Y-m-d', strtotime( '' . $weekday . ' +' . $i . ' week', $event_original_start ) );
  183.                                                         $month_loop_end_date   = date( 'Y-m-d', strtotime( '' . $weekday . ' +' . $i . ' week', $event_original_end ) );
  184.  
  185.                                                         $startdate_month = date( 'm', $month_loop_start_date );
  186.                                                         $startdate_year  = date( 'Y', $month_loop_start_date );
  187.  
  188.                                                         $start_all_days_array[$month_loop_start_date] = $month_loop_end_date;
  189.                                                     }
  190.  
  191.                                                 }
  192.                                             }
  193.                                             $kk += $evcal_rep_gap;
  194.                                         }
  195.                                         if ( $start_all_days_array ) {
  196.                                             $final_loop    = array();
  197.                                             $month_counter = 0;
  198.                                             foreach ( $start_all_days_array as $sdaste => $edate ) {
  199.                                                 $month_counter++;
  200.                                                 // $sdaste = $weekdays_list;
  201.                                                 // $edate  = date('Y-m-d', strtotime('+'.$month_counter.' week',strtotime($sdaste)));
  202.                                                 $dates_data = array(
  203.                                                     'post_a_start_date' => $post_a_start_date,
  204.                                                     'post_a_end_date'   => $post_a_end_date,
  205.                                                     'event_start'       => $sdaste,
  206.                                                     'event_end'         => $edate,
  207.                                                 );
  208.                                                 $final_loop[] = $dates_data;
  209.                                             }
  210.                                         }
  211.                                         // echo'<pre>';
  212.                                         // print_r( $start_all_days_array);
  213.                                         // echo'</pre>';
  214.                                         $events_data['list'] = $final_loop;
  215.  
  216.                                     } else {
  217.                                         $k = $evcal_rep_gap;
  218.                                         for ( $i = 1; $i <= $event_rep_num; $i++ ) {
  219.                                             if ( $evcal_rep_gap > 1 && $k > 1 ) {
  220.                                                 $loop_start_date = date( 'Y-m-d', strtotime( '+' . $k . ' week', $event_startend_data['evcal_srow'][0] ) );
  221.                                                 $loop_end_date   = date( 'Y-m-d', strtotime( '+' . $k . ' week', $event_startend_data['evcal_erow'][0] ) );
  222.                                             } else {
  223.                                                 $loop_start_date = date( 'Y-m-d', strtotime( '+' . $i . ' week', $event_startend_data['evcal_srow'][0] ) );
  224.                                                 $loop_end_date   = date( 'Y-m-d', strtotime( '+' . $i . ' week', $event_startend_data['evcal_erow'][0] ) );
  225.                                             }
  226.                                             $loop_event_start_year  = date( 'Y', strtotime( $loop_start_date ) );
  227.                                             $loop_event_start_month = date( 'F', strtotime( $loop_start_date ) );
  228.                                             $events_data['list'][]  = array(
  229.  
  230.                                                 'post_a_start_date' => $post_a_start_date,
  231.                                                 'post_a_end_date'   => $post_a_end_date,
  232.                                                 'event_start'       => $loop_start_date,
  233.                                                 'event_end'         => $loop_end_date,
  234.                                             );
  235.                                             $k += $evcal_rep_gap;
  236.                                         }
  237.  
  238.                                     }
  239.                                     var_dump( $events_data['list'] );
  240.  
  241.                                 }
  242.                                 if ( $event_frequency == 'monthly' ) {
  243.                                     $repeat_intervals = array();
  244.                                     if ( isset( $event_startend_data['evo_rep_WK'][0] ) ) {
  245.                                         $repeat_intervals = unserialize( $event_startend_data['evo_rep_WK'][0] );
  246.                                     }
  247.                                     // var_dump($repeat_intervals);
  248.                                     if ( $repeat_intervals && $evp_repeat_rb == 'dow' ) {
  249.                                         $evo_repeat_wom_list = array();
  250.                                         if ( isset( $evo_repeat_wom ) ) {
  251.                                             $evo_repeat_wom_list = unserialize( $evo_repeat_wom );
  252.                                         }
  253.                                         var_dump($evo_repeat_wom_list);
  254.                                         $start_all_days_array = array();
  255.                                         $kk                   = $evcal_rep_gap;
  256.                                         for ( $i = 0; $i <= $event_rep_num; $i++ ) {
  257.                                             if ( count( $repeat_intervals ) > 0 && count( $evo_repeat_wom_list ) > 0 ) {
  258.                                                 foreach ( $repeat_intervals as $interval_day_number ) {
  259.                                                     $weekday = $weekly_repeat_array[$interval_day_number];
  260.                                                     if ( $evcal_rep_gap > 1 && $kk > 1 ) {
  261.                                                         $month_loop_start_date = date( 'Y-m-d', strtotime( '+' . $kk . ' month', $event_original_start ) );
  262.                                                         $month_loop_end_date   = date( 'Y-m-d', strtotime( '+' . $kk . ' month', $event_original_end ) );
  263.                                                     } else {
  264.                                                         $month_loop_start_date = date( 'Y-m-d', strtotime( '+' . $i . ' month', $event_original_start ) );
  265.                                                         $month_loop_end_date   = date( 'Y-m-d', strtotime( '+' . $i . ' month', $event_original_end ) );
  266.                                                     }
  267.                                                     // week of month
  268.                                                     $startdate_month = date( 'm', strtotime( $month_loop_start_date ) );
  269.                                                     $startdate_year  = date( 'Y', strtotime( $month_loop_start_date ) );
  270.                                                     foreach ( $evo_repeat_wom_list as $week_repeat_list ) {
  271.                                                         $week_of_month_counter = $week_of_month_repeat[$week_repeat_list];
  272.                                                         // echo $week_of_month_counter." ".$weekday." of $startdate_year-$startdate_month";
  273.                                                         // echo'<br>';
  274.                                                         $start_all_days         = date( 'Y-m-d', strtotime( $week_of_month_counter . " " . $weekday . " of $startdate_year-$startdate_month" ) );
  275.                                                         $start_all_days_array[] = $start_all_days;
  276.                                                     }
  277.                                                     if ( $start_all_days_array ) {
  278.                                                         $final_loop    = array();
  279.                                                         $month_counter = 0;
  280.                                                         foreach ( $start_all_days_array as $weekdays_list ) {
  281.                                                             $month_counter++;
  282.                                                             $sdaste     = $weekdays_list;
  283.                                                             $edate      = date( 'Y-m-d', strtotime( '+' . $month_counter . ' month', strtotime( $sdaste ) ) );
  284.                                                             $dates_data = array(
  285.                                                                 'post_a_start_date' => $post_a_start_date,
  286.                                                                 'post_a_end_date'   => $post_a_end_date,
  287.                                                                 'event_start'       => $sdaste,
  288.                                                                 'event_end'         => $edate,
  289.                                                             );
  290.                                                             $final_loop[] = $dates_data;
  291.                                                         }
  292.                                                     }
  293.                                                     $loop_start_date = date( 'Y-m-d', strtotime( $weekday, $month_loop_start_date ) );
  294.                                                     $loop_end_date   = date( 'Y-m-d', strtotime( $weekday, $month_loop_end_date ) );
  295.                                                 }
  296.                                             }
  297.                                             $kk += $evcal_rep_gap;
  298.                                         }
  299.                                         $dates_data = array(
  300.                                             'post_a_start_date' => $post_a_start_date,
  301.                                             'post_a_end_date'   => $post_a_end_date,
  302.                                             'event_start'       => date( 'Y-m-d', $event_original_start ),
  303.                                             'event_end'         => date( 'Y-m-d', $event_original_end ),
  304.                                         );
  305.                                         array_push( $final_loop, $dates_data );
  306.                                         $events_data['list'] = $final_loop;
  307.                                     } else {
  308.                                         $k = $evcal_rep_gap;
  309.                                         for ( $i = 1; $i <= $event_rep_num; $i++ ) {
  310.                                             if ( $evcal_rep_gap > 1 && $k > 1 ) {
  311.                                                 $loop_start_date = date( 'Y-m-d', strtotime( '+' . $k . ' month', $event_original_start ) );
  312.                                                 $loop_end_date   = date( 'Y-m-d', strtotime( '+' . $k . ' month', $event_original_end ) );
  313.                                             } else {
  314.                                                 $loop_start_date = date( 'Y-m-d', strtotime( '+' . $i . ' month', $event_original_start ) );
  315.                                                 $loop_end_date   = date( 'Y-m-d', strtotime( '+' . $i . ' month', $event_original_end ) );
  316.                                             }
  317.                                             $events_data['list'][] = array(
  318.                                                 'post_a_start_date' => $post_a_start_date,
  319.                                                 'post_a_end_date'   => $post_a_end_date,
  320.                                                 'event_start'       => $loop_start_date,
  321.                                                 'event_end'         => $loop_end_date,
  322.                                             );
  323.                                             $k += $evcal_rep_gap;
  324.                                         }
  325.                                     }
  326.                                     // var_dump( $events_data['list'] );
  327.  
  328.                                 }
  329.                                 if ( $event_frequency == 'yearly' ) {
  330.                                     $k = $evcal_rep_gap;
  331.                                     for ( $i = 1; $i <= $event_rep_num; $i++ ) {
  332.                                         if ( $evcal_rep_gap > 1 && $k > 1 ) {
  333.                                             $loop_start_date = date( 'Y-m-d', strtotime( '+' . $k . ' year', $event_startend_data['evcal_srow'][0] ) );
  334.                                             $loop_end_date   = date( 'Y-m-d', strtotime( '+' . $k . ' year', $event_startend_data['evcal_erow'][0] ) );
  335.                                         } else {
  336.                                             $loop_start_date = date( 'Y-m-d', strtotime( '+' . $i . ' year', $event_startend_data['evcal_srow'][0] ) );
  337.                                             $loop_end_date   = date( 'Y-m-d', strtotime( '+' . $i . ' year', $event_startend_data['evcal_erow'][0] ) );
  338.                                         }
  339.                                         $loop_event_start_year  = date( 'Y', strtotime( $loop_start_date ) );
  340.                                         $loop_event_start_month = date( 'F', strtotime( $loop_start_date ) );
  341.                                         $events_data['list'][]  = array(
  342.                                             'post_a_start_date' => $post_a_start_date,
  343.                                             'post_a_end_date'   => $post_a_end_date,
  344.                                             'event_start'       => $loop_start_date,
  345.                                             'event_end'         => $loop_end_date,
  346.                                         );
  347.                                         $k += $evcal_rep_gap;
  348.                                     }
  349.                                 }
  350.                             }
  351.                         }
  352.  
  353.     endwhile;
  354.     wp_reset_postdata();
  355.     var_dump( $events_data['list']);
  356.    
  357.     get_footer();
  358.  
  359.  
  360.  
Add Comment
Please, Sign In to add comment