Skip to content

Instantly share code, notes, and snippets.

@bulentsakarya
Created November 29, 2017 16:59
Show Gist options
  • Save bulentsakarya/6607e74762e9d509bebd286f1ce326c1 to your computer and use it in GitHub Desktop.
Save bulentsakarya/6607e74762e9d509bebd286f1ce326c1 to your computer and use it in GitHub Desktop.
function sc_draw_calendar( $month, $year ){
//start draw table
$calendar = '<table cellpadding="0" cellspacing="0" class="calendar">';
$day_names = array(
0 => __('Pazar', 'pippin_sc'),
1 => __('Pazartesi', 'pippin_sc'),
2 => __('Salı', 'pippin_sc'),
3 => __('Çarşamba', 'pippin_sc'),
4 => __('Perşembe', 'pippin_sc'),
5 => __('Cuma', 'pippin_sc'),
6 => __('Cumartesi', 'pippin_sc')
);
$week_start_day = get_option( 'start_of_week' );
// adjust day names for sites with Monday set as the start day
if( $week_start_day == 1 ) {
$end_day = $day_names[0];
$start_day = $day_names[1];
array_shift($day_names);
$day_names[] = $end_day;
}
$calendar.= '<tr class="calendar-row">';
for( $i = 0; $i <= 6; $i++ ) {
$calendar .= '<th class="calendar-day-head">' . $day_names[$i] .'</th>';
}
$calendar .= '</tr>';
//days and weeks vars now
$running_day = date( 'w', mktime( 0, 0, 0, $month, 1, $year ) );
if ( $week_start_day == 1 )
$running_day = ( $running_day > 0 ) ? $running_day - 1 : 6;
$days_in_month = date( 't', mktime( 0, 0, 0, $month, 1, $year ) );
$days_in_this_week = 1;
$day_counter = 0;
$dates_array = array();
//get today's date
$time = current_time('timestamp');
$today_day = date('j', $time);
$today_month = date('m', $time);
$today_year = date('Y', $time);
//row for week one */
$calendar.= '<tr class="calendar-row">';
//print "blank" days until the first of the current week
for($x = 0; $x < $running_day; $x++):
$calendar.= '<td class="calendar-day-np" valign="top"></td>';
$days_in_this_week++;
endfor;
//keep going with days
for($list_day = 1; $list_day <= $days_in_month; $list_day++):
$today = ( $today_day == $list_day && $today_month == $month && $today_year == $year ) ? 'today' : '';
$cal_day = '<td class="calendar-day '. $today .'" valign="top"><div class="sc_day_div">';
// add in the day numbering
$cal_day .= '<div class="day-number">'.$list_day.'</div>';
$args = array(
'numberposts' => -1,
'post_type' => 'product',
'post_status' => 'publish',
'meta_key' => 'sc_event_date_time',
'orderby' => 'meta_value_num',
'order' => 'asc',
'meta_value' => mktime(0, 0, 0, $month, $list_day, $year),
'meta_compare' => '>='
);
$events = get_posts( apply_filters( 'sc_calendar_query_args', $args ) );
$cal_event = '';
$cal_event2 = '';
$shown_events = array();
foreach ($events as $event) : setup_postdata( $event );
$id = $event->ID;
$shown_events[] = $id;
//timestamp for start date
$timestamp = get_post_meta($id, 'sc_event_date_time', true);
$timestamp2 = get_post_meta($id, 'sc_event_date_time2', true);
$yer = get_post_meta($id, 'sc_event_location', true);
$ikincigun = get_post_meta($id, 'sc_event_day_of_month2', true);
//define start date
$evt_day = date( 'j', $timestamp );
$evt_month = date( 'n', $timestamp );
$evt_year = date( 'Y', $timestamp );
$evt_day2 = date( 'j', $timestamp2 );
$evt_month2 = date( 'n', $timestamp2 );
$evt_year2 = date( 'Y', $timestamp2 );
//max days in the event's month
$last_day = date( 't', mktime( 0, 0, 0, $evt_month, 1, $evt_year ) );
$last_day2 = date( 't', mktime( 0, 0, 0, $evt_month2, 1, $evt_year2 ) );
//we check if any events exists on current iteration
//if yes, return the link to event
if(
$evt_day == $list_day &&
$evt_month == $month &&
$evt_year == $year
) {
$cal_event .= '<a href="'. get_permalink($id) .'">'. get_the_title($id) .'</a>&nbsp;-&nbsp;<br/><span>'.$yer.'</span>';
}
if($ikincigun != '') {
if(
$evt_day2 == $list_day+1 &&
$evt_month == $month &&
$evt_year == $year
) {
$cal_event2 .= '<a href="'. get_permalink($id) .'">'. get_the_title($id) .'</a>&nbsp;-&nbsp;<br/><span>'.$yer.'</span>';
}
}
endforeach;
$calendar .= $cal_day;
$calendar.= $cal_event ? $cal_event : '';
$calendar.= $cal_event2 ? $cal_event2 : '';
$calendar.= '</div></td>';
if($running_day == 6):
$calendar.= '</tr>';
if( ( $day_counter + 1 ) != $days_in_month ):
$calendar .= '<tr class="calendar-row">';
endif;
$running_day = -1;
$days_in_this_week = 0;
endif;
$days_in_this_week++; $running_day++; $day_counter++;
endfor;
//finish the rest of the days in the week
if( $days_in_this_week < 8 ):
for( $x = 1; $x <= ( 8 - $days_in_this_week ); $x++ ):
$calendar.= '<td class="calendar-day-np" valign="top"><div class="sc_day_div"></div></td>';
endfor;
endif;
wp_reset_postdata();
//final row
$calendar.= '</tr>';
//end the table
$calendar.= '</table>';
//all done, return the completed table
return $calendar;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment