prefix . "simple_events"; $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, event_start INT(10) ZEROFILL NOT NULL, event_end INT(10) ZEROFILL NOT NULL, event_title TEXT NOT NULL, event_desc LONGTEXT NULL, event_url TEXT NULL, event_loc TEXT NOT NULL, event_loc_url TEXT NULL, event_label VARCHAR(10) NOT NULL, UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); add_option("SE_db_version", $SE_db_version); global $wpdb; $installed_ver = get_option( "SE_db_version" ); if( $installed_ver != $SE_db_version ) { $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, event_start INT(10) ZEROFILL NOT NULL, event_end INT(10) ZEROFILL NOT NULL, event_title TEXT NOT NULL, event_desc LONGTEXT NULL, event_url TEXT NULL, event_loc TEXT NOT NULL, event_loc_url TEXT NULL, event_label VARCHAR(10) NOT NULL, UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); update_option( "SE_db_version", $SE_db_version ); } } // End Create Table in DB function register_activation_hook(__FILE__,'SE_install'); function myplugin_update_db_check() { global $SE_db_version; if (get_site_option('SE_db_version') != $SE_db_version) { SE_install(); } } add_action('plugins_loaded', 'myplugin_update_db_check'); // Set default settings if( !get_option('SE_clock')) { $SE_clock = "24"; $SE_ext_css = "no"; $SE_timezone = "+00:00"; $SE_author = "manage_options"; $SE_links = "none"; $SE_twitter = "yes"; add_option("SE_clock", $SE_clock); add_option("SE_ext_css", $SE_ext_css); add_option("SE_timezone", $SE_timezone); add_option("SE_author", $SE_author); add_option("SE_links", $SE_links); add_option("SE_twitter", $SE_twitter); } // Create the admin menu add_action('admin_menu', 'SE_menu'); function SE_menu() { add_menu_page('Simple Events Calendar', 'Events', get_option('SE_author'), 'simple-events', 'simple_events_options',SE_DOMAIN.'icon.png'); }// End function SE_menu to add a button to the admin dashboard function simple_events_options() { if (!current_user_can(get_option('SE_author'))) { wp_die( __('You do not have sufficient permissions to access this page.',SE_TEXTDOMAIN) ); } // end check authorisation level of the user logged in if(isset($_POST['store_event'])) { if($_POST['event']['event_title']) { // New entries at least have to have a title, if none then nothing is written to DB global $wpdb; $table_name = $wpdb->prefix . "simple_events"; $event = $_POST['event']; $event_start = mktime($event['event_start_hr'],$event['event_start_mn'],0,$event['event_start_month'],$event['event_start_day'],$event['event_start_yr']); $event_end = mktime($event['event_end_hr'],$event['event_end_mn'],0,$event['event_end_month'],$event['event_end_day'],$event['event_end_yr']); $newEvent['event_start'] = $event_start; $newEvent['event_end'] = $event_end; $newEvent['event_title'] = $event['event_title']; $newEvent['event_desc'] = $event['event_desc']; $newEvent['event_url'] = str_replace(" ", "", $event['event_url']); $newEvent['event_loc'] = $event['event_loc']; $newEvent['event_loc_url'] = str_replace(" ", "", $event['event_loc_url']); $newEvent['event_label'] = strtolower(str_replace(" ", "", $event['event_label'])); $wpdb->insert( $table_name, $newEvent ); $result = $wpdb->insert_id; if(!$result) { echo '

'.__('Unfortunately something went wrong...',SE_TEXTDOMAIN).'

'; } else { echo '

'.__('The event was succesfully added!',SE_TEXTDOMAIN).'

'; } // End check if entry was written successfully to the DB } else { // So if no title was entered for the event then: echo '

'.__('C\'mon, at least give me a title!',SE_TEXTDOMAIN).'

'; } // End check if title was entered or not and if so, the event was written to the DB } // END check if event was saved elseif(isset($_POST['update_event'])) { global $wpdb; $table_name = $wpdb->prefix . "simple_events"; $event = $_POST['event']; $event_start = mktime($event['event_start_hr'],$event['event_start_mn'],0,$event['event_start_month'],$event['event_start_day'],$event['event_start_yr']); $event_end = mktime($event['event_end_hr'],$event['event_end_mn'],0,$event['event_end_month'],$event['event_end_day'],$event['event_end_yr']); $editEvent['event_start'] = $event_start; $editEvent['event_end'] = $event_end; $editEvent['event_title'] = $event['event_title']; $editEvent['event_desc'] = $event['event_desc']; $editEvent['event_url'] = str_replace(" ", "", $event['event_url']); $editEvent['event_loc'] = $event['event_loc']; $editEvent['event_loc_url'] = str_replace(" ", "", $event['event_loc_url']); $editEvent['event_label'] = strtolower(str_replace(" ", "", $event['event_label'])); $where['id'] = $_POST['eventid']; $wpdb->update( $table_name, $editEvent, $where ); $result = $wpdb->update_id; echo '

'.__('The event was succesfully updated!',SE_TEXTDOMAIN).'

'; } // END check if event was updated ?>

Simple Events Calendar Jerry G. Rietveld',SE_TEXTDOMAIN);?>

+

simple-events-calendar.css in your theme's folder.",SE_TEXTDOMAIN);?>

prefix . "simple_events"; $edit_event = $_POST['event_id']; $update = $wpdb->get_results(" SELECT * FROM $table_name WHERE id = $edit_event ", "ARRAY_A"); ?>

37) { $start_timeM = '45'; } elseif(date('i') > 20) { $start_timeM = '30'; } elseif(date('i') > 5) { $start_timeM = '15'; } else { $start_timeM = '0'; } $end_year = (date('Y',mktime(date('G')+1))); $end_month = (date('n',mktime(date('G')+1))); $end_day = (date('j',mktime(date('G')+1))); $end_timeH = (date('G',mktime(date('G')+1))); ?>

prefix . "simple_events"; $myevents = $wpdb->get_results(" SELECT * FROM $table_name ORDER BY event_start ", "ARRAY_A"); if(count($myevents) > 0) { ?>

query(" DELETE FROM $table_name WHERE id = $remove_event "); } // Display all events currently stored in the database setlocale(LC_ALL, get_locale()); foreach($myevents as $details) { ?>


'.$details['event_loc'].''; } elseif($details['event_loc'] != "" ) { echo ' '.$details['event_loc']; } elseif($details['event_loc_url'] != "" ) { echo ' '.shortenstring(httpprefix($details['event_loc_url']),30).''; } else { echo ''; } ?> '.shortenstring(httpprefix($details['event_url']),30).''; } else { echo ''; } ?>

0 ) { $limit = "LIMIT 0, " . $atts['limit']; } else { $limit = ""; } $allevents = array(); $allevents = eventquery($label,$age,$range,$limit); $i = 1; foreach ($allevents as $event) { // decide what needs to be mentioned in the start date if(date('Y',$event['event_start']) == date('Y',time())) { $eventtime = strftime(DATE .' '. TIME,$event['event_start']); $shorttime = strftime(DATE,$event['event_start']); } else { $eventtime = strftime(DATE . ' ' . YEAR . ' ' . TIME,$event['event_start']); $shorttime = strftime(DATE,$event['event_start']); } // decide what needs to be mentioned in the end date if(date('Y',$event['event_end']) == date('Y',$event['event_start'])) { $end_year = "same"; } else { $end_year = "diff";} if(date('dmy',$event['event_end']) == date('dmy',$event['event_start'])) { $end_date = "same"; } else { $end_date = "diff";} // Check how to open the links if(get_option('SE_links') == "none") { $targetLoc = "_self"; $targetInf = "_self"; } elseif(get_option('SE_links') == "both") { $targetLoc = "_blank"; $targetInf = "_blank"; } elseif(get_option('SE_links') == "location") { $targetLoc = "_blank"; $targetInf = "_self"; } elseif(get_option('SE_links') == "information") { $targetLoc = "_self"; $targetInf = "_blank"; } // decide if the event location should be a URL $evt_loc = NULL; if($event['event_loc'] != "" && $event['event_loc_url'] != "" ) { $evt_loc = '
'.__('Where:',SE_TEXTDOMAIN).' '.$event['event_loc'].'
'; } elseif($event['event_loc'] != "") { $evt_loc = '
'.__('Where:',SE_TEXTDOMAIN).' '.$event['event_loc'].'
'; } // Check if more info link should be displayed $evt_url = NULL; if(isset($atts['moreinfo']) && $atts['moreinfo'] == "no" ) { $evt_url = ""; } elseif($event['event_url'] != "" ) { $evt_url = ''; } // Check if tweet button should be displayed if(isset($atts['tweet']) && $atts['tweet'] == "no" || get_option('SE_twitter') == "no") { $evt_twt = ""; } else { $evt_twt = '
Tweet
'; } // Check if and how the times should be displayed $tz = get_option('SE_timezone'); $start_time = ''.__('When:',SE_TEXTDOMAIN).' '.$eventtime.''; $start_notime = ''.__('When:',SE_TEXTDOMAIN).' '.$shorttime.''; if(isset($atts['time']) && $atts['time'] == "no") { if($end_date == "same") { $evt_time = $start_notime; } elseif($end_year == "same") { $evt_time = $start_notime . ' - '. strftime(DATE,$event['event_end']) .''; } else { $evt_time = $start_notime . ' - '. strftime(DATE . " " . YEAR,$event['event_end']) .''; } } elseif( isset($atts['time']) && $atts['time'] == "start") { $evt_time = $start_time; } elseif($end_date == "same") { $evt_time = $start_time . ' - '. strftime( TIME ,$event['event_end']) .''; } elseif($end_year == "same") { $evt_time = $start_time . ' - '. strftime(DATE ." ".TIME,$event['event_end']) .''; } else { $evt_time = $start_time . ' - '. strftime(DATE ." ".YEAR." ".TIME,$event['event_end']) .''; } if($i % 2) $evt_no = "odd"; else $evt_no = "even"; // adding odd and even classes for styling options $the_events[] = '
'. '
'. '
'. $evt_time. '
'. stripslashes($event['event_title']). '
'. $evt_loc. $evt_url. $evt_twt. '
'. '
'. stripslashes(nl2br($event['event_desc'])). '
'; $i++; } // end foreach ($allevents as $event) if(count($allevents) > 0) $items = implode($the_events); else $items = "There are no events to display"; return($items); } add_shortcode( 'events', 'displayevents' ); function age($age) { if($age == "expired") { $range = "event_end <= " . time(); } elseif($age == "all") { $range = "event_end > 315532800"; // timestamp for jan 1st 1980 - assuming no event will be creted before that date } else { $range = "event end > " . time(); } return $range; } function eventquery($label,$age,$range,$limit) { global $wpdb; $table_name = $wpdb->prefix . "simple_events"; if(!is_null($age) && !is_null($label)) { $conditions = "WHERE event_label = '$label' AND $range ORDER BY event_start $limit"; } elseif(!is_null($age)) { $conditions = "WHERE $range ORDER BY event_start $limit"; } elseif(!is_null($label)) { $currentTime = time(); $conditions = "WHERE event_label = '$label' AND event_end >= $currentTime ORDER BY event_start $limit"; } else { $currentTime = time(); $conditions = "WHERE event_end >= $currentTime ORDER BY event_start $limit"; } return $wpdb->get_results(" SELECT * FROM $table_name " . $conditions , "ARRAY_A"); } // function to check url and set http prefix if needed function httpprefix($httpurl) { $httpurl = strtolower($httpurl); if(substr($httpurl,0,4) == "http") { $fullurl = $httpurl; } else { $fullurl = "http://".$httpurl; } return $fullurl; } // function to shorten long strings to $length characters and to prepend ... if it was actually shortend function shortenstring($strng,$length) { if(strlen($strng) > $length) $longer = '...'; else $longer = ''; return substr($strng,0,$length).$longer; } function sec_head() { global $sec_options; echo "\n"; echo "\n\n\n"; if(!is_admin() && get_option('SE_ext_css') == "no") { wp_enqueue_style('sec-styling', SE_DOMAIN .'simple-events-calendar.css', false, SE_VERSION, "all"); } elseif(!is_admin() && get_option('SE_ext_css') == "yes") { $themedir = get_bloginfo('template_url') . "/"; wp_enqueue_style('sec-styling', $themedir .'simple-events-calendar.css', false, SE_VERSION, "all"); } } add_action('wp_head', 'sec_head'); function SE_public_scripts() { global $sec_options; if(!is_admin() && get_option('SE_twitter') == "yes") wp_enqueue_script('tweetevents', 'http://platform.twitter.com/widgets.js', '', SE_VERSION , true); } add_action( 'wp_enqueue_scripts', 'SE_public_scripts' ); function SE_admin_scripts() { wp_enqueue_script('textcounter', SE_PLUGIN . 'simple-events-calendar.js', '', SE_VERSION); } add_action( 'admin_enqueue_scripts', 'SE_admin_scripts' );