function eme_events_in_location_list($location, $scope = "") { $eme_event_list_number_events = get_option('eme_event_list_number_items'); $events = eme_get_events($eme_event_list_number_events, $scope, "", "", $location['location_id']); $list = ""; if (count($events) > 0) { foreach ($events as $event) { $list .= eme_replace_placeholders(get_option('eme_location_event_list_item_format'), $event); } } else { $list = get_option('eme_location_no_events_message'); } return $list; }
function eme_ical() { echo "BEGIN:VCALENDAR\r\n"; echo "VERSION:2.0\r\n"; echo "METHOD:PUBLISH\r\n"; echo "PRODID:-//hacksw/handcal//NONSGML v1.0//EN\r\n"; $title_format = get_option('eme_ical_title_format' ); $description_format = get_option('eme_ical_description_format'); $location_id = isset( $_GET['location_id'] ) ? urldecode($_GET['location_id']) : ''; $category = isset( $_GET['category'] ) ? urldecode($_GET['category']) : ''; $notcategory = isset( $_GET['notcategory'] ) ? urldecode($_GET['notcategory']) : ''; $scope = isset( $_GET['scope'] ) ? urldecode($_GET['scope']) : ''; $author = isset( $_GET['author'] ) ? urldecode($_GET['author']) : ''; $contact_person = isset( $_GET['contact_person'] ) ? urldecode($_GET['contact_person']) : ''; $events = eme_get_events ( 0,$scope,"ASC",0,$location_id,$category, $author, $contact_person, 1, $notcategory); foreach ( $events as $event ) { echo eme_ical_single_event($event,$title_format,$description_format); } echo "END:VCALENDAR\r\n"; }
function eme_send_mail_form($event_id = 0) { ?> <div class="wrap"> <div id="icon-events" class="icon32"><br /> </div> <h2><?php _e('Send Mails to attendees or bookings for a event', 'eme'); ?> </h2> <?php admin_show_warnings(); ?> <div id='message' class='updated'><p> <?php _e('Warning: using this functionality to send mails to attendees can result in a php timeout, so not everybody will receive the mail then. This depends on the number of attendees, the load on the server, ... . If this happens, use the CSV export link to get the list of all attendees and use mass mailing tools (like OpenOffice) for your mailing.', 'eme'); $all_events = eme_get_events(0, "future"); $event_id = isset($_POST['event_id']) ? intval($_POST['event_id']) : 0; $current_userid = get_current_user_id(); $templates_array = eme_get_templates_array_by_id(); if (is_array($templates_array) && count($templates_array) > 0) { $templates_array[0] = ''; } else { $templates_array[0] = __('No templates defined yet!', 'eme'); } ksort($templates_array); ?> </p></div> <form id='send_mail' name='send_mail' action="" method="post"> <input type='hidden' name='page' value='eme-send-mails' /> <input type='hidden' name='eme_admin_action' value='send_mail' /> <input type='hidden' id='onchange' name='onchange' value='0' /> <select name="event_id" onchange="document.getElementById('onchange').value='1';this.form.submit();"> <option value='0' ><?php _e('Select the event', 'eme'); ?> </option> <?php foreach ($all_events as $event) { $option_text = $event['event_name'] . " (" . eme_localised_date($event['event_start_date']) . ")"; if ($event['event_rsvp'] && current_user_can(get_option('eme_cap_send_other_mails')) || current_user_can(get_option('eme_cap_send_mails')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { if ($event['event_id'] == $event_id) { echo "<option selected='selected' value='" . $event['event_id'] . "' >" . $option_text . "</option> "; } else { echo "<option value='" . $event['event_id'] . "' >" . $option_text . "</option> "; } } } ?> </select> <p> <?php if ($event_id > 0) { ?> <table> <tr> <td><label><?php _e('Select the type of mail', 'eme'); ?> </td> <td> <select name="eme_mail_type" required='required'> <option value=''></option> <option value='attendees'><?php _e('Attendee mails', 'eme'); ?> </option> <option value='bookings'><?php _e('Booking mails', 'eme'); ?> </option> <option value='all_wp'><?php _e('Mail to all WP users', 'eme'); ?> </option> <option value='all_wp_not_registered'><?php _e('All WP users except those registered for the event', 'eme'); ?> </option> </select> </td> </tr> <tr id="eme_pending_approved_row"> <td><label><?php _e('Select your target audience', 'eme'); ?> </td> <td> <select name="pending_approved"> <option value=0><?php _e('All registered persons', 'eme'); ?> </option> <option value=2><?php _e('Exclude pending registrations', 'eme'); ?> </option> <option value=1><?php _e('Only pending registrations', 'eme'); ?> </option> </select></p><p> </td> </tr> <tr id="eme_only_unpayed_row"> <td><?php _e('Only send mails to attendees who did not pay yet', 'eme'); ?> </td> <td> <input type="checkbox" name="only_unpayed" value="1" /> </td> </tr> </table> <div id="titlediv" class="form-field form-required"><p> <b><?php _e('Subject', 'eme'); ?> </b><br /> <?php _e('Either choose from a template: ', 'eme'); echo eme_ui_select(0, 'subject_template', $templates_array); ?> <br /> <?php _e('Or enter your own (if anything is entered here, it takes precedence over the selected template): ', 'eme'); ?> <input type="text" name="mail_subject" id="mail_subject" value="" /></p> </div> <div class="form-field form-required"><p> <b><?php _e('Message', 'eme'); ?> </b><br /> <?php _e('Either choose from a template: ', 'eme'); echo eme_ui_select(0, 'message_template', $templates_array); ?> <br /> <?php _e('Or enter your own (if anything is entered here, it takes precedence over the selected template): ', 'eme'); ?> <textarea name="mail_message" id="mail_message" value="" rows=10></textarea> </p> </div> <div> <?php _e('You can use any placeholders mentioned here:', 'eme'); print "<br /><a href='http://www.e-dynamics.be/wordpress/?cat=25'>" . __('Event placeholders', 'eme') . "</a>"; print "<br /><a href='http://www.e-dynamics.be/wordpress/?cat=48'>" . __('Attendees placeholders', 'eme') . "</a> (" . __('for ', 'eme') . __('Attendee mails', 'eme') . ")"; print "<br /><a href='http://www.e-dynamics.be/wordpress/?cat=45'>" . __('Booking placeholders', 'eme') . "</a> (" . __('for ', 'eme') . __('Booking mails', 'eme') . ")"; ?> </div> <br /> <input type="submit" value="<?php _e('Send Mail', 'eme'); ?> " class="button-primary action" /> </form> <?php $csv_address = admin_url("admin.php?page=eme-people&eme_admin_action=booking_csv&event_id=" . $event['event_id']); $available_seats = eme_get_available_seats($event['event_id']); $total_seats = $event['event_seats']; if ($total_seats != $available_seats) { echo "<br /><br /> <a id='booking_csv_" . $event['event_id'] . "' target='' href='{$csv_address}'>" . __('CSV export', 'eme') . "</a>"; } } }
function eme_get_categories($eventful = false, $scope = "future", $extra_conditions = "") { global $wpdb; $categories_table = $wpdb->prefix . CATEGORIES_TBNAME; $categories = array(); $orderby = " ORDER BY category_name ASC"; if ($eventful) { $events = eme_get_events(0, $scope, "ASC"); if ($events) { foreach ($events as $event) { if (!empty($event['event_category_ids'])) { $event_cats = explode(",", $event['event_category_ids']); if (!empty($event_cats)) { foreach ($event_cats as $category_id) { $categories[$category_id] = $category_id; } } } } } if (!empty($categories)) { $event_cats = join(",", $categories); if ($extra_conditions != "") { $extra_conditions = " AND ({$extra_conditions})"; } $result = $wpdb->get_results("SELECT * FROM {$categories_table} WHERE category_id IN ({$event_cats}) {$extra_conditions} {$orderby}", ARRAY_A); } } else { if ($extra_conditions != "") { $extra_conditions = " WHERE ({$extra_conditions})"; } $result = $wpdb->get_results("SELECT * FROM {$categories_table} {$extra_conditions} {$orderby}", ARRAY_A); } if (has_filter('eme_categories_filter')) { $result = apply_filters('eme_categories_filter', $result); } return $result; }
function eme_countdown($atts) { global $eme_timezone; extract(shortcode_atts(array('id' => ''), $atts)); if ($id != "") { $event = eme_get_event($id); } else { $newest_event_array = eme_get_events(1); $event = $newest_event_array[0]; } $eme_date_obj = new ExpressiveDate($event['event_start_date'] . " " . $event['event_start_time'], $eme_timezone); $eme_date_obj_now = new ExpressiveDate(null, $eme_timezone); return intval($eme_date_obj_now->getDifferenceInDays($eme_date_obj)); }
function eme_get_calendar($args = "") { global $wp_locale; global $wpdb, $eme_timezone; // the calendar is being used, so we need the jquery for the calendar global $eme_need_calendar_js; $eme_need_calendar_js = 1; $defaults = array('category' => 0, 'notcategory' => 0, 'full' => 0, 'month' => '', 'year' => '', 'echo' => 1, 'long_events' => 0, 'author' => '', 'contact_person' => '', 'location_id' => '', 'template_id' => 0); $r = wp_parse_args($args, $defaults); extract($r); $echo = $echo === "true" || $echo === "1" ? true : $echo; $full = $full === "true" || $full === "1" ? true : $full; $long_events = $long_events === "true" || $long_events === "1" ? true : $long_events; $echo = $echo === "false" || $echo === "0" ? false : $echo; $full = $full === "false" || $full === "0" ? false : $full; $long_events = $long_events === "false" || $long_events === "0" ? false : $long_events; // this comes from global wordpress preferences $start_of_week = get_option('start_of_week'); $eme_date_obj = new ExpressiveDate(null, $eme_timezone); if (get_option('eme_use_client_clock') && isset($_SESSION['eme_client_mday']) && isset($_SESSION['eme_client_month']) && isset($_SESSION['eme_client_fullyear'])) { // these come from client unless their clock is wrong $iNowDay = sprintf("%02d", $_SESSION['eme_client_mday']); $iNowMonth = sprintf("%02d", $_SESSION['eme_client_month']); $iNowYear = sprintf("%04d", $_SESSION['eme_client_fullyear']); } else { // Get current year, month and day list($iNowYear, $iNowMonth, $iNowDay) = explode('-', $eme_date_obj->getDate()); } $iSelectedYear = $year; $iSelectedMonth = $month; if ($iSelectedMonth == '') { $iSelectedMonth = $iNowMonth; } if ($iSelectedYear == '') { $iSelectedYear = $iNowYear; } $iSelectedMonth = sprintf("%02d", $iSelectedMonth); // Get name and number of days of specified month $eme_date_obj->setDay(1); $eme_date_obj->setMonth($iSelectedMonth); $eme_date_obj->setYear($iSelectedYear); // Get friendly month name, but since DateTime::format doesn't respect the locale, we need eme_localised_date if ($full) { list($sMonthName, $iDaysInMonth) = explode('-', eme_localised_date($eme_date_obj->getDate(), 'F-t')); } else { list($sMonthName, $iDaysInMonth) = explode('-', eme_localised_date($eme_date_obj->getDate(), 'M-t')); } // take into account some locale info: some always best show full month name, some show month after year, some have a year suffix $locale_code = substr(get_locale(), 0, 2); $showMonthAfterYear = 0; $yearSuffix = ""; switch ($locale_code) { case "hu": $showMonthAfterYear = 1; break; case "ja": $showMonthAfterYear = 1; $sMonthName = eme_localised_date($eme_date_obj->getDate(), 'F'); $yearSuffix = "年"; break; case "ko": $showMonthAfterYear = 1; $sMonthName = eme_localised_date($eme_date_obj->getDate(), 'F'); $yearSuffix = "년"; break; case "zh": $showMonthAfterYear = 1; $sMonthName = eme_localised_date($eme_date_obj->getDate(), 'F'); $yearSuffix = "年"; break; } if ($showMonthAfterYear) { $cal_datestring = "{$iSelectedYear}{$yearSuffix} {$sMonthName}"; } else { $cal_datestring = "{$sMonthName} {$iSelectedYear}{$yearSuffix}"; } // Get previous year and month $iPrevYear = $iSelectedYear; $iPrevMonth = $iSelectedMonth - 1; if ($iPrevMonth <= 0) { $iPrevYear--; $iPrevMonth = 12; // set to December } $iPrevMonth = sprintf("%02d", $iPrevMonth); // Get next year and month $iNextYear = $iSelectedYear; $iNextMonth = $iSelectedMonth + 1; if ($iNextMonth > 12) { $iNextYear++; $iNextMonth = 1; } $iNextMonth = sprintf("%02d", $iNextMonth); // Get number of days of previous month $eme_date_obj2 = new ExpressiveDate(null, $eme_timezone); $eme_date_obj2->setDay(1); $eme_date_obj2->setMonth($iPrevMonth); $eme_date_obj2->setYear($iPrevYear); $iPrevDaysInMonth = (int) $eme_date_obj2->getDaysInMonth(); // Get numeric representation of the day of the week of the first day of specified (current) month // remember: first day of week is a Sunday // if you want the day of the week to begin on Monday: start_of_week=1, Tuesday: start_of_week=2, etc ... // So, if e.g. the month starts on a Sunday and start_of_week=1 (Monday), then $iFirstDayDow is 6 $iFirstDayDow = (int) $eme_date_obj->getDayOfWeekAsNumeric() - $start_of_week; if ($iFirstDayDow < 0) { $iFirstDayDow += 7; } // On what day the previous month begins $iPrevShowFrom = $iPrevDaysInMonth - $iFirstDayDow + 1; // we'll look for events in the requested month and 7 days before and after $calbegin = "{$iPrevYear}-{$iPrevMonth}-{$iPrevShowFrom}"; $calend = "{$iNextYear}-{$iNextMonth}-07"; $events = eme_get_events(0, "{$calbegin}--{$calend}", "ASC", 0, $location_id, $category, $author, $contact_person, 1, $notcategory); $eventful_days = array(); if ($events) { //Go through the events and slot them into the right d-m index foreach ($events as $event) { if ($event['event_status'] == STATUS_PRIVATE && !is_user_logged_in()) { continue; } $eme_date_obj_end = new ExpressiveDate($event['event_end_date'] . " " . $event['event_end_time'], $eme_timezone); $eme_date_obj_now = new ExpressiveDate(null, $eme_timezone); if (get_option('eme_cal_hide_past_events') && $eme_date_obj_end->lessThan($eme_date_obj_now)) { continue; } if ($long_events) { //If $long_events is set then show a date as eventful if there is an multi-day event which runs during that day $eme_date_obj_tmp = new ExpressiveDate($event['event_start_date'] . " " . $event['event_start_time'], $eme_timezone); if ($eme_date_obj_end->lessThan($eme_date_obj_tmp)) { $eme_date_obj_end = $eme_date_obj_tmp->copy(); } $day_count = 0; while ($eme_date_obj_tmp->lessOrEqualTo($eme_date_obj_end)) { $event_eventful_date = $eme_date_obj_tmp->getDate(); //Only show events on the day that they start if (isset($eventful_days[$event_eventful_date]) && is_array($eventful_days[$event_eventful_date])) { $eventful_days[$event_eventful_date][] = $event; } else { $eventful_days[$event_eventful_date] = array($event); } $eme_date_obj_tmp->addOneDay(); } } else { //Only show events on the day that they start if (isset($eventful_days[$event['event_start_date']]) && is_array($eventful_days[$event['event_start_date']])) { $eventful_days[$event['event_start_date']][] = $event; } else { $eventful_days[$event['event_start_date']] = array($event); } } } } // we found all the events for the wanted days, now get them in the correct format with a good link if ($template_id) { $event_format = eme_get_template_format($template_id); } else { $event_format = get_option('eme_full_calendar_event_format'); } $event_title_format = get_option('eme_small_calendar_event_title_format'); $event_title_separator_format = get_option('eme_small_calendar_event_title_separator'); $cells = array(); foreach ($eventful_days as $day_key => $events) { // Set the date into the key $events_titles = array(); foreach ($events as $event) { $events_titles[] = eme_replace_placeholders($event_title_format, $event, "text"); } $link_title = implode($event_title_separator_format, $events_titles); $cal_day_link = eme_calendar_day_url($day_key); // Let's add the possible options // template_id is not being used per event if (!empty($location_id)) { $cal_day_link = add_query_arg(array('location_id' => $location_id), $cal_day_link); } if (!empty($category)) { $cal_day_link = add_query_arg(array('category' => $category), $cal_day_link); } if (!empty($notcategory)) { $cal_day_link = add_query_arg(array('notcategory' => $scope), $cal_day_link); } if (!empty($author)) { $cal_day_link = add_query_arg(array('author' => $author), $cal_day_link); } if (!empty($contact_person)) { $cal_day_link = add_query_arg(array('contact_person' => $contact_person), $cal_day_link); } $event_date = explode('-', $day_key); $event_day = ltrim($event_date[2], '0'); $cells[$day_key] = "<a title='{$link_title}' href='{$cal_day_link}'>{$event_day}</a>"; if ($full) { $cells[$day_key] .= "<ul class='eme-calendar-day-event'>"; foreach ($events as $event) { $cells[$day_key] .= eme_replace_placeholders($event_format, $event); } $cells[$day_key] .= "</ul>"; } } // If previous month $isPreviousMonth = $iFirstDayDow > 0; // Initial day on the calendar $iCalendarDay = $isPreviousMonth ? $iPrevShowFrom : 1; $isNextMonth = false; $sCalTblRows = ''; // Generate rows for the calendar for ($i = 0; $i < 6; $i++) { // 6-weeks range if ($isNextMonth) { continue; } $sCalTblRows .= "<tr>"; for ($j = 0; $j < 7; $j++) { // 7 days a week // we need the calendar day with 2 digits for the planned events $iCalendarDay_padded = sprintf("%02d", $iCalendarDay); if ($isPreviousMonth) { $calstring = "{$iPrevYear}-{$iPrevMonth}-{$iCalendarDay_padded}"; } elseif ($isNextMonth) { $calstring = "{$iNextYear}-{$iNextMonth}-{$iCalendarDay_padded}"; } else { $calstring = "{$iSelectedYear}-{$iSelectedMonth}-{$iCalendarDay_padded}"; } // each day in the calendar has the name of the day as a class by default $eme_date_obj = new ExpressiveDate($calstring, $eme_timezone); $sClass = $eme_date_obj->format('D'); if (isset($cells[$calstring])) { if ($isPreviousMonth) { $sClass .= " eventful-pre event-day-{$iCalendarDay}"; } elseif ($isNextMonth) { $sClass .= " eventful-post event-day-{$iCalendarDay}"; } elseif ($calstring == "{$iNowYear}-{$iNowMonth}-{$iNowDay}") { $sClass .= " eventful-today event-day-{$iCalendarDay}"; } else { $sClass .= " eventful event-day-{$iCalendarDay}"; } $sCalTblRows .= '<td class="' . $sClass . '">' . $cells[$calstring] . "</td>\n"; } else { if ($isPreviousMonth) { $sClass .= " eventless-pre"; } elseif ($isNextMonth) { $sClass .= " eventless-post"; } elseif ($calstring == "{$iNowYear}-{$iNowMonth}-{$iNowDay}") { $sClass .= " eventless-today"; } else { $sClass .= " eventless"; } $sCalTblRows .= '<td class="' . $sClass . '">' . $iCalendarDay . "</td>\n"; } // Next day $iCalendarDay++; if ($isPreviousMonth && $iCalendarDay > $iPrevDaysInMonth) { $isPreviousMonth = false; $iCalendarDay = 1; } if (!$isPreviousMonth && !$isNextMonth && $iCalendarDay > $iDaysInMonth) { $isNextMonth = true; $iCalendarDay = 1; } } $sCalTblRows .= "</tr>\n"; } $weekdays = array(__('Sunday'), __('Monday'), __('Tuesday'), __('Wednesday'), __('Thursday'), __('Friday'), __('Saturday')); $sCalDayNames = ""; // respect the beginning of the week offset for ($i = $start_of_week; $i < $start_of_week + 7; $i++) { $j = $i; if ($j == 7) { $j -= 7; } if ($full) { $sCalDayNames .= "<td>" . $wp_locale->get_weekday_abbrev($weekdays[$j]) . "</td>"; } else { $sCalDayNames .= "<td>" . $wp_locale->get_weekday_initial($weekdays[$j]) . "</td>"; } } // the real links are created via jquery when clicking on the prev-month or next-month class-links $previous_link = "<a class='prev-month' href=\"#\"><<</a>"; $next_link = "<a class='next-month' href=\"#\">>></a>"; $random = rand(100, 200); $full ? $class = 'eme-calendar-full' : ($class = 'eme-calendar'); $calendar = "<div class='{$class}' id='eme-calendar-{$random}'>"; if ($full) { $fullclass = 'fullcalendar'; $head = "<td class='month_name' colspan='7'>{$previous_link} {$next_link} {$cal_datestring}</td>\n"; } else { $fullclass = ''; $head = "<td>{$previous_link}</td><td class='month_name' colspan='5'>{$cal_datestring}</td><td>{$next_link}</td>\n"; } // Build the heading portion of the calendar table $calendar .= "<table class='eme-calendar-table {$fullclass}'>\n" . "<thead>\n<tr>\n" . $head . "</tr>\n</thead>\n" . "<tr class='days-names'>\n" . $sCalDayNames . "</tr>\n"; $calendar .= $sCalTblRows; $calendar .= "</table>\n</div>"; // we generate the onclick javascript per calendar div // this is important if more than one calendar exists on the page $calendar .= "<script type='text/javascript'>\n jQuery('#eme-calendar-" . $random . " a.prev-month').click(function(e){\n e.preventDefault();\n tableDiv = jQuery('#eme-calendar-" . $random . "');\n loadCalendar(tableDiv, '{$full}', '{$long_events}','{$iPrevMonth}','{$iPrevYear}','{$category}','{$author}','{$contact_person}','{$location_id}','{$notcategory}','{$template_id}');\n } );\n jQuery('#eme-calendar-" . $random . " a.next-month').click(function(e){\n e.preventDefault();\n tableDiv = jQuery('#eme-calendar-" . $random . "');\n loadCalendar(tableDiv, '{$full}', '{$long_events}','{$iNextMonth}','{$iNextYear}','{$category}','{$author}','{$contact_person}','{$location_id}','{$notcategory}','{$template_id}');\n } );\n </script>"; $output = $calendar; if ($echo) { echo $output; } else { return $output; } }
function eme_countdown($atts) { extract(shortcode_atts(array('id' => ''), $atts)); $now = date("Y-m-d"); if ($id != "") { $event = eme_get_event($id); } else { $newest_event_array = eme_get_events(1); $event = $newest_event_array[0]; } $start_date = $event['event_start_date']; return eme_daydifference($now, $start_date); }