Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- Custom placeholder to get date/time difference between event start date and event end date
- */
- add_filter('em_event_output_placeholder','my_em_days_duration_placeholders',1,3);
- function my_em_days_duration_placeholders($replace, $EM_Event, $result){
- global $wp_query, $wp_rewrite;
- switch( $result ){
- case '#_EVENTDURATION':
- if ( !$EM_Event->event_all_day ){
- $replace = dateDiff($EM_Event->start,$EM_Event->end);
- }else{
- $replace = "Whole Day Event!";
- }
- break;
- }
- return $replace;
- }
- function dateDiff($time1, $time2, $precision = 6) {
- // If not numeric then convert texts to unix timestamps
- if (!is_int($time1)) {
- $time1 = strtotime($time1);
- }
- if (!is_int($time2)) {
- $time2 = strtotime($time2);
- }
- // If time1 is bigger than time2
- // Then swap time1 and time2
- if ($time1 > $time2) {
- $ttime = $time1;
- $time1 = $time2;
- $time2 = $ttime;
- }
- // Set up intervals and diffs arrays
- $intervals = array('year','month','day','hour','minute','second');
- $diffs = array();
- // Loop thru all intervals
- foreach ($intervals as $interval) {
- // Set default diff to 0
- $diffs[$interval] = 0;
- // Create temp time from time1 and interval
- $ttime = strtotime("+1 " . $interval, $time1);
- // Loop until temp time is smaller than time2
- while ($time2 >= $ttime) {
- $time1 = $ttime;
- $diffs[$interval]++;
- // Create new temp time from time1 and interval
- $ttime = strtotime("+1 " . $interval, $time1);
- }
- }
- $count = 0;
- $times = array();
- // Loop thru all diffs
- foreach ($diffs as $interval => $value) {
- // Break if we have needed precission
- if ($count >= $precision) {
- break;
- }
- // Add value and interval
- // if value is bigger than 0
- if ($value > 0) {
- // Add s if value is not 1
- if ($value != 1) {
- $interval .= "s";
- }
- // Add value and interval to times array
- $times[] = $value . " " . $interval;
- $count++;
- }
- }
- // Return string with times
- return implode(", ", $times);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement