Thread: vBulletin CMS Widgets - Upcoming Events
View Single Post
  #273  
Old 04-10-2012, 03:52 PM
Elenna Elenna is offline
 
Join Date: Jan 2006
Location: St. Charles, MO
Posts: 422
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I have updated the code to work with single-day events, events that have already started but havn't ended, etc. Thanks to tomsch for the mkdate snippet!

I believe I got user time zone correction to work. Please see the following code:

Note: This version checks for the user's preferred date and time display settings (i.e. UK vs US, etc) and displays things accordingly. This can also pull from one or more selected calendars, per the instructions below (see orange comments).

PHP Code:
ob_start(); 
//Change $show_count to change how many events to display in the block
$show_count 5;
//Get the user's time zone
$user_tz vB::$vbulletin->userinfo['timezoneoffset'];
$tz_adjust $user_tz 3600;
$mydate =  mktime(000date("m"), date("d")-1date("Y"));
 
//Get events from the table
//Use the code below to pull from ALL calendars
$query sprintf(" SELECT * FROM ".TABLE_PREFIX."event WHERE visible = 1 AND (dateline_from >= '$mydate' || (dateline_from >= '$mydate' AND dateline_to <= '$mydate' ) || ('$mydate' BETWEEN dateline_from AND dateline_to)) ORDER BY dateline_from ASC LIMIT $show_count"); 
//To pull from just certain calendars, comment out the above $query and uncomment the line below. Change the "AND calendarids in (1, 2, 3)" to match your calendar IDs to pull
//$query = sprintf(" SELECT * FROM ".TABLE_PREFIX."event WHERE visible = 1 AND (dateline_from >= '$mydate' || (dateline_from >= '$mydate' AND dateline_to <= '$mydate' ) || ('$mydate' BETWEEN dateline_from AND dateline_to)) AND calendarids in (1, 2, 3) ORDER BY dateline_from ASC LIMIT $show_count"); 
$event_get vB::$db->query_read($query); 
$output_bits ''
while(
$event vB::$db->fetch_array($event_get)) { 
 
// Convert user timezone offset into minutes
$offset $user_tz;
 
// Only adjust start times for ranged events; all-day events should keep their midnight start time.
     
if($event['dateline_to'] == 
     { 
         
$from $event['dateline_from']; 
     } else { 
         
$from $event['dateline_from'] + $tz_adjust;
     } 
$to $event['dateline_to'] + $tz_adjust
 
 
$fromDate trim(vbdate(vB::$vbulletin->options['dateformat'],  $fromfalsetruefalsetrue));
$toDate trim(vbdate(vB::$vbulletin->options['dateformat'],  $tofalsetruefalsetrue));
$fromTime trim(vbdate(vB::$vbulletin->options['timeformat'],  $fromfalsetruefalsetrue));
$toTime trim(vbdate(vB::$vbulletin->options['timeformat'],  $tofalsetruefalsetrue));
 
if(
$event['dateline_to'] == 
 { 
 
$format sprintf("%s",$fromDate); 
     } else { 
 
$format sprintf("%s %s - %s",$fromDate$fromTime$toTime);
 } 
 
$output_bits .= sprintf(
 <div class = "cms_widget_post_bit"><h4 class="cms_widget_post_header"><a href="calendar.php?do=getinfo&e=%d">%s</a></h4> 
 <p class="cms_widget_post_content">%s</p>
 </div> 
        '
,$event['eventid'],$event['title'],$format); 

$output $output_bits
ob_end_clean(); 
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01392 seconds
  • Memory Usage 1,811KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete