function eme_ical_single_event($event, $title_format, $description_format) { global $eme_timezone; $title = eme_sanitize_ical (eme_replace_placeholders ( $title_format, $event, "text" )); $description = eme_sanitize_ical (eme_replace_placeholders ( $description_format, $event, "text" )); $html_description = eme_sanitize_ical (eme_replace_placeholders ( $description_format, $event, "html" ),1); $event_link = eme_event_url($event); $startstring=new ExpressiveDate($event['event_start_date']." ".$event['event_start_time'],$eme_timezone); $dtstartdate=$startstring->format("Ymd"); $dtstarthour=$startstring->format("His"); //$dtstart=$dtstartdate."T".$dtstarthour."Z"; // we'll use localtime, so no "Z" $dtstart=$dtstartdate."T".$dtstarthour; if ($event['event_end_date'] == "") $event['event_end_date'] = $event['event_start_date']; if ($event['event_end_time'] == "") $event['event_end_time'] = $event['event_start_time']; $endstring=$event['event_end_date']." ".$event['event_end_time']; $endstring=new ExpressiveDate($event['event_end_date']." ".$event['event_end_time'],$eme_timezone); $dtenddate=$endstring->format("Ymd"); $dtendhour=$endstring->format("His"); //$dtend=$dtenddate."T".$dtendhour."Z"; // we'll use localtime, so no "Z" $dtend=$dtenddate."T".$dtendhour; $tzstring = get_option('timezone_string'); $res = ""; $res .= "BEGIN:VEVENT\r\n"; //DTSTAMP must be in UTC format, so adding "Z" as well $res .= "DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z\r\n"; if ($event['event_properties']['all_day']) { // ical standard for an all day event: specify only the day, meaning // an 'all day' event is flagged as starting at the beginning of one day and lasting until the beginning of the next // so it is the same as adding "T000000" as time spec to the start/end datestring // But since it "ends" at the beginning of the next day, we should add 24 hours, otherwise the event ends one day too soon $dtenddate=$endstring->addOneDay()->format('Ymd'); $res .= "DTSTART;VALUE=DATE:$dtstartdate\r\n"; $res .= "DTEND;VALUE=DATE:$dtenddate\r\n"; } else { $res .= "DTSTART;TZID=$tzstring:$dtstart\r\n"; $res .= "DTEND;TZID=$tzstring:$dtend\r\n"; } $res .= "UID:$dtstart-$dtend-".$event['event_id']."@".$_SERVER['SERVER_NAME']."\r\n"; $res .= "SUMMARY:$title\r\n"; $res .= "DESCRIPTION:$description\r\n"; $res .= "X-ALT-DESC;FMTTYPE=text/html:$html_description\r\n"; $res .= "URL:$event_link\r\n"; $res .= "ATTACH:$event_link\r\n"; if ($event['event_image_id']) { $thumb_array = image_downsize( $event['event_image_id'], get_option('eme_thumbnail_size') ); $thumb_url = $thumb_array[0]; $res .= "ATTACH:$thumb_url\r\n"; } if (isset($event['location_id']) && $event['location_id']) { $location = eme_sanitize_ical (eme_replace_placeholders ( "#_LOCATION, #_ADDRESS, #_TOWN", $event, "text" )); $res .= "LOCATION:$location\r\n"; } $res .= "END:VEVENT\r\n"; return $res; }
/** * Generates whole month from a specific date * @param String * @return array */ public static function getMonthDates($month) { $day = new ExpressiveDate($month); $totalNoOfDays = (int) $day->getDaysInMonth(); $daysArray = array(); for ($i = 0; $i < $totalNoOfDays; $i++) { $daysArray[] = $day->getDate(); $day = $day->addOneDay(); } return $daysArray; }
function eme_create_year_scope($count) { global $eme_timezone; $scope = array(); $scope[0] = __('Select Year', 'eme'); $eme_date_obj = new ExpressiveDate(null, $eme_timezone); for ($i = 0; $i < $count; $i++) { $year = $eme_date_obj->getYear(); $limit_start = "{$year}-01-01"; $limit_end = "{$year}-12-31"; $this_scope = "{$limit_start}--{$limit_end}"; $scope_text = eme_localised_date($limit_start . " " . $eme_timezone, get_option('eme_show_period_yearly_dateformat')); $scope[$this_scope] = $scope_text; $eme_date_obj->addOneYear(); } return $scope; }
function eme_cleanup_page() { global $wpdb, $eme_timezone; $bookings_table = $wpdb->prefix . BOOKINGS_TBNAME; $events_table = $wpdb->prefix . EVENTS_TBNAME; $recurrence_table = $wpdb->prefix . RECURRENCE_TBNAME; $message = ""; if (current_user_can(get_option('eme_cap_cleanup'))) { // do the actions if required if (isset($_POST['eme_admin_action']) && $_POST['eme_admin_action'] == "eme_cleanup" && isset($_POST['eme_number']) && isset($_POST['eme_period'])) { $eme_number = intval($_POST['eme_number']); $eme_period = $_POST['eme_period']; $eme_date_obj = new ExpressiveDate(null, $eme_timezone); if (!in_array($eme_period, array('day', 'week', 'month'))) { $eme_period = "month"; } switch ($eme_period) { case 'day': $eme_date_obj->minusDays($eme_number); break; case 'week': $eme_date_obj->minusWeeks($eme_number); break; default: $eme_date_obj->minusMonths($eme_number); break; } $end_date = $eme_date_obj->getDate(); $wpdb->query("DELETE FROM {$bookings_table} where event_id in (SELECT event_id from {$events_table} where event_end_date<'{$end_date}')"); $wpdb->query("DELETE FROM {$events_table} where event_end_date<'{$end_date}'"); $wpdb->query("DELETE FROM {$recurrence_table} where recurence_freq <> 'specific' AND recurrence_end_date<'{$end_date}'"); $message = sprintf(__("Cleanup done: events (and corresponding booking data) older than %d %s(s) have been removed.", "eme"), $eme_number, $eme_period); } } eme_cleanup_form($message); }
public function widget($args, $instance) { global $wp_query, $eme_timezone; //extract($args); //$title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Calendar','eme' ) : $instance['title'], $instance, $this->id_base); //$title = apply_filters('widget_title', $instance['title'], $instance, $this->id_base); $title = apply_filters('widget_title', $instance['title']); $long_events = isset($instance['long_events']) ? $instance['long_events'] : false; $category = empty($instance['category']) ? '' : $instance['category']; $notcategory = empty($instance['notcategory']) ? '' : $instance['notcategory']; if ($instance['authorid'] == -1) { $author = ''; } else { $authinfo = get_userdata($instance['authorid']); $author = $authinfo->user_login; } if (is_array($category)) { $category = implode(',', $category); } if (is_array($notcategory)) { $notcategory = implode(',', $notcategory); } $options = array(); $options['title'] = $title; $options['long_events'] = $long_events; $options['category'] = $category; $options['notcategory'] = $notcategory; // the month shown depends on the calendar day clicked if (get_query_var('calendar_day')) { $eme_date_obj = new ExpressiveDate(get_query_var('calendar_day'), $eme_timezone); } else { $eme_date_obj = new ExpressiveDate(null, $eme_timezone); } $options['month'] = $eme_date_obj->format('m'); $options['year'] = $eme_date_obj->format('Y'); $options['author'] = $author; echo $args['before_widget']; if ($title) { echo $args['before_title'] . $title . $args['after_title']; } eme_get_calendar($options); echo $args['after_widget']; }
/** * Get the date the post was created. * * @return string */ public function date() { return ExpressiveDate::make($this->created_at)->getRelativeDate(); }
public function makeTasks($tasks) { try { $data = array(); foreach ($tasks as $task) { if ($task['status'] == 'delayed') { $today = new ExpressiveDate(); $enddate = new ExpressiveDate($task['end_date']); $task['num_status'] = (int) $today->getDifferenceInDays($enddate); if ($task['num_status'] > 0) { $task['status'] = 'active'; $tempTask = \Task::find($task['id']); $tempTask->status = 'active'; $tempTask->save(); } else { $task['status_desc'] = abs($task['num_status']) . ' days passed since End date'; } } elseif ($task['status'] == 'active') { if ($task['end_date'] != null) { $today = new ExpressiveDate(); $enddate = new ExpressiveDate($task['end_date']); $task['num_status'] = (int) $today->getDifferenceInDays($enddate); if ((int) $task['num_status'] < 0) { $tempTask = \Task::find($task['id']); $tempTask->status = 'delayed'; $tempTask->update(); $task['status_desc'] = abs($task['num_status']) . ' days passed since End date'; $task['num_status'] = 'Delayed'; $task['status'] = 'delayed'; } } else { $task['num_status'] = 'Active'; } } if ($task['project_id'] == null) { $task['project_name'] = null; } else { $project = \Project::find($task['project_id']); $task['project_name'] = $project->project_name; } $tempUpdatedAt = new ExpressiveDate($task['updated_at']); $task['updated_at'] = $tempUpdatedAt->format('jS F, Y \\a\\t g:ia'); $task['totalsubtasks'] = $subtasks = \Task::find($task['id'])->subtasks()->get()->count(); if ($task['totalsubtasks'] == 0) { $task['rem_subtasks'] = 0; $task['subTaskPercentage'] = 0; } else { $task['rem_subtasks'] = $subtasks = \Task::find($task['id'])->subtasks()->where('status', '=', 'active')->orWhere('status', '=', 'delayed')->get()->count(); $task['subTaskPercentage'] = (int) (($task['totalsubtasks'] - $task['rem_subtasks']) * 100) / $task['totalsubtasks']; } $task['users'] = \Task::find($task['id'])->users()->orderBy('first_name')->get()->toArray(); $task['files'] = \Fileref::where('parent_id', '=', $task['id'])->where('parent_type', '=', 'task')->get()->count(); $data[] = $task; } return $data; } catch (Exception $e) { \Log::error('Something went wrong in Task Repository - makeTasks():' . $e->getMessage()); throw new \SomeThingWentWrongException(); } }
@if(count($playlistItems)) {{ Table::open() }} <?php foreach ($playlistItems as $playlistItem) { $controls = ''; $playbackStateLabel = ''; $user = $playlistItem->user; $duration = new Zeropingheroes\LanagerCore\Helpers\Duration($playlistItem->duration); $submitted = new ExpressiveDate($playlistItem->created_at); // Change labels and controls for different playback states switch ($playlistItem->playback_state) { case 0: // unplayed if (Authority::can('manage', 'playlist', $playlist->id)) { //$controls = Button::xs_normal('', array('title' => 'Skip this item'))->with_icon('step-forward'); } break; case 1: // playing $playbackStateLabel = Label::success('Now Playing'); if (Authority::can('manage', 'playlist', $playlist->id)) { $controls = Button::link_xs_normal(route('playlist.item.pause', array('playlist' => $playlist->id, 'playlistItem' => $playlistItem->id)), '', array('title' => 'Pause this item'))->with_icon('pause'); //$controls .= Button::xs_normal('', array('title' => 'Skip this item'))->with_icon('step-forward'); } else { //$controls = Button::xs_normal('', array('title' => 'Vote to skip this item'))->with_icon('step-forward'); } break; case 2: // paused $playbackStateLabel = Label::info('Paused'); if (Authority::can('manage', 'playlist', $playlist->id)) {
function eme_get_recurrence_eventids($recurrence_id, $future_only = 0) { global $wpdb; $events_table = $wpdb->prefix . EVENTS_TBNAME; if ($future_only) { $eme_date_obj = new ExpressiveDate(null, $eme_timezone); $today = $eme_date_obj->format('Y-m-d'); $sql = $wpdb->prepare("SELECT event_id FROM {$events_table} WHERE recurrence_id = %d AND event_start_date > %s ORDER BY event_start_date ASC, event_start_time ASC", $recurrence_id, $today); } else { $sql = $wpdb->prepare("SELECT event_id FROM {$events_table} WHERE recurrence_id = %d ORDER BY event_start_date ASC, event_start_time ASC", $recurrence_id); } return $wpdb->get_col($sql); }
function eme_replace_placeholders($format, $event, $target = "html", $do_shortcode = 1, $lang = '') { global $eme_need_gmap_js, $eme_timezone; // an initial filter for the format, in case people want to change anything before the placeholders get replaced if (has_filter('eme_events_format_prefilter')) { $format = apply_filters('eme_events_format_prefilter', $format, $event); } // some variables we'll use further down more than once $current_userid = get_current_user_id(); $person_id = eme_get_person_id_by_wp_id($current_userid); $eme_enable_notes_placeholders = get_option('eme_enable_notes_placeholders'); if (isset($event['location_id']) && $event['location_id']) { $location = eme_get_location($event['location_id']); } else { $location = eme_new_location(); } // first replace the notes sections, since these can contain other placeholders if ($eme_enable_notes_placeholders) { $format = eme_replace_notes_placeholders($format, $event, $target); } // then we do the custom attributes, since these can contain other placeholders preg_match_all("/#(ESC|URL)?_ATT\\{.+?\\}(\\{.+?\\})?/", $format, $results); foreach ($results[0] as $resultKey => $result) { $need_escape = 0; $need_urlencode = 0; $orig_result = $result; if (strstr($result, '#ESC')) { $result = str_replace("#ESC", "#", $result); $need_escape = 1; } elseif (strstr($result, '#URL')) { $result = str_replace("#URL", "#", $result); $need_urlencode = 1; } $replacement = ""; //Strip string of placeholder and just leave the reference $attRef = substr(substr($result, 0, strpos($result, '}')), 6); if (isset($event['event_attributes'][$attRef])) { $replacement = $event['event_attributes'][$attRef]; } if (trim($replacement) == '' && isset($results[2][$resultKey]) && $results[2][$resultKey] != '') { //Check to see if we have a second set of braces; $replacement = substr($results[2][$resultKey], 1, strlen(trim($results[2][$resultKey])) - 2); } if ($need_escape) { $replacement = eme_sanitize_request(eme_sanitize_html(preg_replace('/\\n|\\r/', '', $replacement))); } if ($need_urlencode) { $replacement = rawurlencode($replacement); } $format = str_replace($orig_result, $replacement, $format); } // and now all the other placeholders $legacy = get_option('eme_legacy'); $deprecated = get_option('eme_deprecated'); if ($legacy) { preg_match_all("/#(ESC|URL)?@?_?[A-Za-z0-9_]+(\\[.*\\])?(\\[.*\\])?/", $format, $placeholders); } else { preg_match_all("/#(ESC|URL)?@?_?[A-Za-z0-9_]+(\\{.*?\\})?(\\{.*?\\})?/", $format, $placeholders); } // make sure we set the largest matched placeholders first, otherwise if you found e.g. // #_LOCATION, part of #_LOCATIONPAGEURL would get replaced as well ... usort($placeholders[0], 'sort_stringlenth'); // if the add and remove booking form appear on the same page, we need to decide which form shows the "message" upon booking // the first one wins $a1 = strpos($format, "ADDBOOKINGFORM"); $a2 = strpos($format, "REMOVEBOOKINGFORM"); $show_message_on_add = 1; $show_message_on_remove = 1; if ($a1 !== false && $a2 !== false) { if ($a1 < $a2) { $show_message_on_remove = 0; } else { $show_message_on_add = 0; } } $eme_date_obj_now = new ExpressiveDate(null, $eme_timezone); foreach ($placeholders[0] as $result) { $need_escape = 0; $need_urlencode = 0; $orig_result = $result; $found = 1; if (strstr($result, '#ESC')) { $result = str_replace("#ESC", "#", $result); $need_escape = 1; } elseif (strstr($result, '#URL')) { $result = str_replace("#URL", "#", $result); $need_urlencode = 1; } $replacement = ""; // matches all fields placeholder if ($event && preg_match('/#_EDITEVENTLINK/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = "<a href=' " . admin_url("admin.php?page=events-manager&eme_admin_action=edit_event&event_id=" . $event['event_id']) . "'>" . __('Edit') . "</a>"; } } elseif ($event && preg_match('/#_EDITEVENTURL/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = admin_url("admin.php?page=events-manager&eme_admin_action=edit_event&event_id=" . $event['event_id']); } } elseif ($event && preg_match('/#_EVENTPRINTBOOKINGSLINK/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_list_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = "<a href=' " . admin_url("admin.php?page=eme-people&eme_admin_action=booking_printable&event_id=" . $event['event_id']) . "'>" . __('Printable view of bookings', 'eme') . "</a>"; } } elseif ($event && preg_match('/#_EVENTPRINTBOOKINGSURL/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_list_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = admin_url("admin.php?page=eme-people&eme_admin_action=booking_printable&event_id=" . $event['event_id']); } } elseif ($event && preg_match('/#_EVENTCSVBOOKINGSLINK/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_list_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = "<a href=' " . admin_url("admin.php?page=eme-people&eme_admin_action=booking_csv&event_id=" . $event['event_id']) . "'>" . __('Printable view of bookings', 'eme') . "</a>"; } } elseif ($event && preg_match('/#_EVENTCSVBOOKINGSURL/', $result)) { if (current_user_can(get_option('eme_cap_edit_events')) || current_user_can(get_option('eme_cap_list_events')) || current_user_can(get_option('eme_cap_author_event')) && ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid)) { $replacement = admin_url("admin.php?page=eme-people&eme_admin_action=booking_csv&event_id=" . $event['event_id']); } } elseif ($event && preg_match('/#_STARTDATE/', $result)) { $replacement = eme_localised_date($event['event_start_date'] . " " . $event['event_start_time'] . " " . $eme_timezone); } elseif ($event && preg_match('/#_STARTTIME/', $result)) { $replacement = eme_localised_time($event['event_start_date'] . " " . $event['event_start_time'] . " " . $eme_timezone); } elseif ($event && preg_match('/#_ENDDATE/', $result)) { $replacement = eme_localised_date($event['event_end_date'] . " " . $event['event_end_time'] . " " . $eme_timezone); } elseif ($event && preg_match('/#_ENDTIME/', $result)) { $replacement = eme_localised_time($event['event_end_date'] . " " . $event['event_end_time'] . " " . $eme_timezone); } elseif ($event && preg_match('/#_24HSTARTTIME/', $result)) { $replacement = substr($event['event_start_time'], 0, 5); } elseif ($event && preg_match('/#_24HENDTIME$/', $result)) { $replacement = substr($event['event_end_time'], 0, 5); } elseif ($event && preg_match('/#_PAST_FUTURE_CLASS/', $result)) { $eme_start_obj = new ExpressiveDate($event['event_start_date'] . " " . $event['event_start_time'], $eme_timezone); $eme_end_obj = new ExpressiveDate($event['event_end_date'] . " " . $event['event_end_time'], $eme_timezone); if ($eme_start_obj->greaterThan($eme_date_obj_now)) { $replacement = "eme-future-event"; } elseif ($eme_start_obj->lessOrEqualTo($eme_date_obj_now) && $eme_end_obj->greaterOrEqualTo($eme_date_obj_now)) { $replacement = "eme-ongoing-event"; } else { $replacement = "eme-past-event"; } } elseif ($event && preg_match('/#_12HSTARTTIME$/', $result)) { $replacement = $eme_date_obj_now->copy()->setTimestampFromString($event['event_start_date'] . " " . $event['event_start_time'] . " " . $eme_timezone)->format('h:i A'); } elseif ($event && preg_match('/#_12HENDTIME$/', $result)) { $replacement = $eme_date_obj_now->copy()->setTimestampFromString($event['event_end_date'] . " " . $event['event_end_time'] . " " . $eme_timezone)->format('h:i A'); } elseif ($event && preg_match('/#_12HSTARTTIME_NOLEADINGZERO/', $result)) { $replacement = $eme_date_obj_now->copy()->setTimestampFromString($event['event_start_date'] . " " . $event['event_start_time'] . " " . $eme_timezone)->format('g:i A'); if (get_option('eme_time_remove_leading_zeros')) { $replacement = str_replace(":00", "", $replacement); $replacement = str_replace(":0", ":", $replacement); } } elseif ($event && preg_match('/#_12HENDTIME_NOLEADINGZERO/', $result)) { $replacement = $eme_date_obj_now->copy()->setTimestampFromString($event['event_end_date'] . " " . $event['event_end_time'] . " " . $eme_timezone)->format('g:i A'); if (get_option('eme_time_remove_leading_zeros')) { $replacement = str_replace(":00", "", $replacement); $replacement = str_replace(":0", ":", $replacement); } } elseif ($event && preg_match('/#_MAP/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } elseif (isset($event['location_id']) && $event['location_id']) { $replacement = eme_single_location_map($location); } } elseif ($event && preg_match('/#_DIRECTIONS/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } elseif (isset($event['location_id']) && $event['location_id']) { $replacement = eme_add_directions_form($location); } } elseif ($event && preg_match('/#_EVENTS_FILTERFORM/', $result)) { if ($target == "rss" || $target == "text" || eme_is_single_event_page()) { $replacement = ""; } else { $replacement = eme_filter_form(); } } elseif ($event && preg_match('/#_ADDBOOKINGFORM$/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } else { $replacement = eme_add_booking_form($event['event_id'], $show_message_on_add); } } elseif ($event && preg_match('/#_ADDBOOKINGFORM_IF_NOT_REGISTERED/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } else { $not_registered_only = 1; $replacement = eme_add_booking_form($event['event_id'], $show_message_on_add, $not_registered_only); } } elseif ($event && preg_match('/#_REMOVEBOOKINGFORM$/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } else { // when the booking just happened and the user needs to pay, we don't show the remove booking form if ($booking_id_done && eme_event_can_pay_online($event)) { $replacement = ""; } else { $replacement = eme_delete_booking_form($event['event_id'], $show_message_on_remove); } } } elseif ($event && preg_match('/#_REMOVEBOOKINGFORM_IF_REGISTERED/', $result)) { if ($target == "rss" || $target == "text") { $replacement = ""; } elseif (is_user_logged_in()) { // when the booking just happened and the user needs to pay, we don't show the remove booking form if ($booking_id_done && eme_event_can_pay_online($event)) { $replacement = ""; } elseif (eme_get_booking_ids_by_wp_id($current_userid, $event['event_id'])) { $replacement = eme_delete_booking_form($event['event_id'], $show_message_on_remove); } } } elseif ($event && preg_match('/#_(AVAILABLESPACES|AVAILABLESEATS)$/', $result)) { $replacement = eme_get_available_seats($event['event_id']); } elseif ($deprecated && preg_match('/#_(AVAILABLESPACES|AVAILABLESEATS)(\\d+)/', $result, $matches) || preg_match('/#_(AVAILABLESPACES|AVAILABLESEATS)\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2]) - 1; if (eme_is_multi($event['event_seats'])) { $seats = eme_get_available_multiseats($event['event_id']); if (array_key_exists($field_id, $seats)) { $replacement = $seats[$field_id]; } } } elseif ($event && preg_match('/#_(TOTALSPACES|TOTALSEATS)$/', $result)) { $replacement = $event['event_seats']; } elseif ($deprecated && preg_match('/#_(TOTALSPACES|TOTALSEATS)(\\d+)/', $result, $matches) || preg_match('/#_(TOTALSPACES|TOTALSEATS)\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2]) - 1; $replacement = 0; if (eme_is_multi($event['event_seats'])) { $seats = eme_convert_multi2array($event['event_seats']); if (array_key_exists($field_id, $seats)) { $replacement = $seats[$field_id]; } } } elseif ($event && preg_match('/#_(RESERVEDSPACES|BOOKEDSEATS)$/', $result)) { $replacement = eme_get_booked_seats($event['event_id']); } elseif ($deprecated && preg_match('/#_(RESERVEDSPACES|BOOKEDSEATS)(\\d+)/', $result, $matches) || preg_match('/#_(RESERVEDSPACES|BOOKEDSEATS)\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2]) - 1; $replacement = 0; if (eme_is_multi($event['event_seats'])) { $seats = eme_get_booked_multiseats($event['event_id']); if (array_key_exists($field_id, $seats)) { $replacement = $seats[$field_id]; } } } elseif ($event && preg_match('/#_(PENDINGSPACES|PENDINGSEATS)$/', $result)) { $replacement = eme_get_pending_seats($event['event_id']); } elseif ($event && preg_match('/#_(PENDINGSPACES|PENDINGSEATS)\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2]) - 1; $replacement = 0; if (eme_is_multi($event['event_seats'])) { $seats = eme_get_pending_multiseats($event['event_id']); if (array_key_exists($field_id, $seats)) { $replacement = $seats[$field_id]; } } } elseif ($event && preg_match('/#_(APPROVEDSPACES|APPROVEDSEATS)$/', $result)) { $replacement = eme_get_approved_seats($event['event_id']); } elseif ($event && preg_match('/#_(APPROVEDSPACES|APPROVEDSEATS)\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2]) - 1; $replacement = 0; if (eme_is_multi($event['event_seats'])) { $seats = eme_get_approved_multiseats($event['event_id']); if (array_key_exists($field_id, $seats)) { $replacement = $seats[$field_id]; } } } elseif ($event && preg_match('/#_USER_(RESERVEDSPACES|BOOKEDSEATS)$/', $result)) { if (is_user_logged_in()) { $replacement = eme_get_booked_seats_by_wp_event_id($current_userid, $event['event_id']); } } elseif ($event && preg_match('/#_LINKEDNAME/', $result)) { $event_link = eme_event_url($event, $lang); if ($target == "html") { $replacement = "<a href='{$event_link}' title='" . eme_trans_sanitize_html($event['event_name'], $lang) . "'>" . eme_trans_sanitize_html($event['event_name'], $lang) . "</a>"; } else { $replacement = eme_translate($event['event_name'], $lang); } if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_ICALLINK/', $result)) { $url = site_url("/?eme_ical=public_single&event_id=" . $event['event_id']); $replacement = "<a href='{$url}'>ICAL</a>"; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_ICALURL/', $result)) { $replacement = site_url("/?eme_ical=public_single&event_id=" . $event['event_id']); } elseif ($event && preg_match('/#_EVENTIMAGE$/', $result)) { if (!empty($event['event_image_id'])) { $event['event_image_url'] = wp_get_attachment_url($event['event_image_id']); } if ($event['event_image_url'] != '') { $replacement = "<img src='" . $event['event_image_url'] . "' alt='" . eme_trans_sanitize_html($event['event_name'], $lang) . "'/>"; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_EVENTIMAGEURL$/', $result)) { if (!empty($event['event_image_id'])) { $event['event_image_url'] = wp_get_attachment_url($event['event_image_id']); } if ($event['event_image_url'] != '') { $replacement = $event['event_image_url']; } } elseif ($event && preg_match('/#_EVENTIMAGETHUMB$/', $result)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], get_option('eme_thumbnail_size')); $thumb_url = $thumb_array[0]; $thumb_width = $thumb_array[1]; $thumb_height = $thumb_array[2]; $replacement = "<img width='{$thumb_width}' height='{$thumb_height}' src='" . $thumb_url . "' alt='" . eme_trans_sanitize_html($event['event_name'], $lang) . "'/>"; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_EVENTIMAGETHUMBURL$/', $result)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], get_option('eme_thumbnail_size')); $thumb_url = $thumb_array[0]; $replacement = $thumb_url; } } elseif ($event && preg_match('/#_EVENTIMAGETHUMB\\{(.+)\\}/', $result, $matches)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], $matches[1]); $thumb_url = $thumb_array[0]; $thumb_width = $thumb_array[1]; $thumb_height = $thumb_array[2]; $replacement = "<img width='{$thumb_width}' height='{$thumb_height}' src='" . $thumb_url . "' alt='" . eme_trans_sanitize_html($event['event_name'], $lang) . "'/>"; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($legacy && $event && preg_match('/#_EVENTIMAGETHUMB\\[(.+)\\]/', $result, $matches)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], $matches[1]); $thumb_url = $thumb_array[0]; $thumb_width = $thumb_array[1]; $thumb_height = $thumb_array[2]; $replacement = "<img width='{$thumb_width}' height='{$thumb_height}' src='" . $thumb_url . "' alt='" . eme_trans_sanitize_html($event['event_name'], $lang) . "'/>"; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_EVENTIMAGETHUMBURL\\{(.+)\\}/', $result, $matches)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], $matches[1]); $thumb_url = $thumb_array[0]; $replacement = $thumb_url; } } elseif ($legacy && $event && preg_match('/#_EVENTIMAGETHUMBURL\\[(.+)\\]/', $result, $matches)) { if (!empty($event['event_image_id'])) { $thumb_array = image_downsize($event['event_image_id'], $matches[1]); $thumb_url = $thumb_array[0]; $replacement = $thumb_url; } } elseif ($event && preg_match('/#_EVENTATT\\{(.+)\\}\\{(.+)\\}/', $result, $matches)) { $tmp_event_id = intval($matches[1]); $tmp_event_attkey = $matches[2]; $tmp_event = eme_get_event($tmp_event_id); if (isset($tmp_event['event_attributes'][$tmp_event_attkey])) { $replacement = $tmp_event['event_attributes'][$tmp_event_attkey]; } } elseif ($event && preg_match('/#_MYLOCATIONATT\\{(.+)\\}/', $result, $matches)) { $tmp_attkey = $matches[1]; if (isset($location['location_attributes'][$tmp_attkey])) { $replacement = $location['location_attributes'][$tmp_attkey]; } } elseif ($event && preg_match('/#_EVENTPAGEURL\\{(.+)\\}/', $result, $matches)) { $events_page_link = eme_get_events_page(true, false); $replacement = add_query_arg(array('event_id' => intval($matches[1])), $events_page_link); if (!empty($lang)) { $replacement = add_query_arg(array('lang' => $lang), $replacement); } } elseif ($legacy && $event && preg_match('/#_EVENTPAGEURL\\[(.+)\\]/', $result, $matches)) { $events_page_link = eme_get_events_page(true, false); $replacement = add_query_arg(array('event_id' => intval($matches[1])), $events_page_link); if (!empty($lang)) { $replacement = add_query_arg(array('lang' => $lang), $replacement); } } elseif ($event && preg_match('/#_EVENTPAGEURL$/', $result)) { $replacement = eme_event_url($event, $lang); } elseif ($event && preg_match('/#_(NAME|EVENTNAME)$/', $result)) { $field = "event_name"; if (isset($event[$field])) { $replacement = $event[$field]; } if ($target == "html") { $replacement = eme_trans_sanitize_html($replacement, $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate($replacement, $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate($replacement, $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_EVENTID/', $result)) { $field = "event_id"; $replacement = intval($event[$field]); } elseif ($event && preg_match('/#_SINGLE_EVENTPAGE_EVENTID/', $result)) { // returns the event id of the single event page currently shown if (eme_is_single_event_page()) { $replacement = intval(get_query_var('event_id')); } } elseif ($event && preg_match('/#_DAYS_TILL_START/', $result)) { $eme_date_obj = new ExpressiveDate($event['event_start_date'] . " " . $event['event_start_time'], $eme_timezone); $replacement = $eme_date_obj_now->getDifferenceInDays($eme_date_obj); } elseif ($event && preg_match('/#_DAYS_TILL_END/', $result)) { $eme_date_obj = new ExpressiveDate($event['event_end_date'] . " " . $event['event_end_time'], $eme_timezone); $replacement = $eme_date_obj_now->getDifferenceInDays($eme_date_obj); } elseif ($event && preg_match('/#_HOURS_TILL_START/', $result)) { $eme_date_obj = new ExpressiveDate($event['event_start_date'] . " " . $event['event_start_time'], $eme_timezone); $replacement = round($eme_date_obj_now->getDifferenceInHours($eme_date_obj)); } elseif ($event && preg_match('/#_HOURS_TILL_END/', $result)) { $eme_date_obj = new ExpressiveDate($event['event_end_date'] . " " . $event['event_end_time'], $eme_timezone); $replacement = round($eme_date_obj_now->getDifferenceInHours($eme_date_obj)); } elseif ($event && preg_match('/#_EVENTPRICE$|#_PRICE$/', $result)) { $field = "price"; if ($event[$field]) { $replacement = $event[$field]; } if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($deprecated && $event && preg_match('/#_(EVENT)?PRICE(\\d+)/', $result, $matches) || $event && preg_match('/#_(EVENT)?PRICE\\{(\\d+)\\}/', $result, $matches)) { $field_id = intval($matches[2] - 1); if ($event["price"] && eme_is_multi($event["price"])) { $prices = eme_convert_multi2array($event["price"]); if (is_array($prices) && array_key_exists($field_id, $prices)) { $replacement = $prices[$field_id]; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } } elseif ($event && preg_match('/#_CURRENCY/', $result)) { $field = "currency"; // currency is only important if the price is not empty as well if ($event['price']) { $replacement = $event[$field]; } if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_ATTENDEES/', $result)) { $replacement = eme_get_attendees_list_for($event); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_BOOKINGS/', $result)) { $replacement = eme_get_bookings_list_for_event($event); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_(CONTACTNAME|CONTACTPERSON)/', $result)) { $contact = eme_get_contact($event); if ($contact) { $replacement = $contact->display_name; } $replacement = eme_trans_sanitize_html($replacement, $lang); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_(CONTACTEMAIL|PLAIN_CONTACTEMAIL)/', $result)) { $contact = eme_get_contact($event); if ($contact) { $replacement = $contact->user_email; if ($target == "html") { // ascii encode for primitive harvesting protection ... $replacement = eme_ascii_encode($replacement); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_CONTACTPHONE/', $result)) { $contact = eme_get_contact($event); if ($contact) { $phone = eme_get_user_phone($contact->ID); // ascii encode for primitive harvesting protection ... $replacement = eme_ascii_encode($phone); } if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_AUTHORNAME/', $result)) { $author = eme_get_author($event); if ($author) { $replacement = $author->display_name; } $replacement = eme_trans_sanitize_html($replacement, $lang); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_AUTHOREMAIL/', $result)) { $author = eme_get_author($event); if ($author) { $replacement = $author->user_email; if ($target == "html") { // ascii encode for primitive harvesting protection ... $replacement = eme_ascii_encode($replacement); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_AUTHORPHONE/', $result)) { $author = eme_get_author($event); if ($author) { $phone = eme_get_user_phone($author->ID); // ascii encode for primitive harvesting protection ... $replacement = eme_ascii_encode($phone); } if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif (preg_match('/#_EVENTCREATIONDATE/', $result)) { $replacement = eme_localised_date($event['creation_date'] . " " . $eme_timezone); } elseif (preg_match('/#_EVENTMODIFDATE/', $result)) { $replacement = eme_localised_date($event['modif_date'] . " " . $eme_timezone); } elseif (preg_match('/#_EVENTCREATIONTIME/', $result)) { $replacement = eme_localised_time($event['creation_date'] . " " . $eme_timezone); } elseif (preg_match('/#_EVENTMODIFTIME/', $result)) { $replacement = eme_localised_time($event['modif_date'] . " " . $eme_timezone); } elseif ($event && preg_match('/#[A-Za-z]$/', $result)) { // matches all PHP date placeholders for startdate-time $replacement = eme_localised_date($event['event_start_date'] . " " . $event['event_start_time'] . " " . $eme_timezone, ltrim($result, "#")); if (get_option('eme_time_remove_leading_zeros') && $result == "#i") { $replacement = ltrim($replacement, "0"); } } elseif ($event && preg_match('/#@[A-Za-z]$/', $result)) { // matches all PHP time placeholders for enddate-time $replacement = eme_localised_date($event['event_end_date'] . " " . $event['event_end_time'] . " " . $eme_timezone, ltrim($result, "#@")); if (get_option('eme_time_remove_leading_zeros') && $result == "#@i") { $replacement = ltrim($replacement, "0"); } } elseif ($event && preg_match('/#_EVENTCATEGORYIDS$/', $result) && get_option('eme_categories_enabled')) { $categories = $event['event_category_ids']; if ($target == "html") { $replacement = eme_trans_sanitize_html($categories, $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_trans_sanitize_html($categories, $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_trans_sanitize_html($categories, $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_(EVENT)?CATEGORIES$/', $result) && get_option('eme_categories_enabled')) { $categories = eme_get_event_category_names($event['event_id']); if ($target == "html") { $replacement = eme_trans_sanitize_html(join(", ", $categories), $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_EVENTCATEGORIES_CSS$/', $result) && get_option('eme_categories_enabled')) { $categories = eme_get_event_category_names($event['event_id']); if ($target == "html") { $replacement = eme_trans_sanitize_html(join(" ", $categories), $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(" ", $categories), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(" ", $categories), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_EVENTCATEGORYDESCRIPTIONS$/', $result) && get_option('eme_categories_enabled')) { $categories = eme_get_event_category_descriptions($event['event_id']); if ($target == "html") { $replacement = eme_trans_sanitize_html(join(", ", $categories), $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_LINKED(EVENT)?CATEGORIES$/', $result) && get_option('eme_categories_enabled')) { $categories = eme_get_event_categories($event['event_id']); $cat_links = array(); foreach ($categories as $category) { $cat_link = eme_category_url($category); $cat_name = $category['category_name']; if ($target == "html") { array_push($cat_links, "<a href='{$cat_link}' title='" . eme_trans_sanitize_html($cat_name, $lang) . "'>" . eme_trans_sanitize_html($cat_name, $lang) . "</a>"); } else { array_push($cat_links, eme_translate($cat_name, $lang)); } } $replacement = join(", ", $cat_links); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/^#_(EVENT)?CATEGORIES\\{(.*?)\\}\\{(.*?)\\}/', $result, $matches) && get_option('eme_categories_enabled')) { $include_cats = $matches[2]; $exclude_cats = $matches[3]; $extra_conditions_arr = array(); if (!empty($include_cats)) { array_push($extra_conditions_arr, "category_id IN ({$include_cats})"); } if (!empty($exclude_cats)) { array_push($extra_conditions_arr, "category_id NOT IN ({$exclude_cats})"); } $extra_conditions = join(" AND ", $extra_conditions_arr); $categories = eme_get_event_category_names($event['event_id'], $extra_conditions); if ($target == "html") { $replacement = eme_trans_sanitize_html(join(", ", $categories), $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/^#_EVENTCATEGORIES_CSS\\{(.*?)\\}\\{(.*?)\\}/', $result, $matches) && get_option('eme_categories_enabled')) { $include_cats = $matches[1]; $exclude_cats = $matches[2]; $extra_conditions_arr = array(); if (!empty($include_cats)) { array_push($extra_conditions_arr, "category_id IN ({$include_cats})"); } if (!empty($exclude_cats)) { array_push($extra_conditions_arr, "category_id NOT IN ({$exclude_cats})"); } $extra_conditions = join(" AND ", $extra_conditions_arr); $categories = eme_get_event_category_names($event['event_id'], $extra_conditions); if ($target == "html") { $replacement = eme_trans_sanitize_html(join(" ", $categories), $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(" ", $categories), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(" ", $categories), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($legacy && $event && preg_match('/^#_(EVENT)?CATEGORIES\\[(.*?)\\]\\[(.*?)\\]/', $result, $matches) && get_option('eme_categories_enabled')) { $include_cats = $matches[2]; $exclude_cats = $matches[3]; $extra_conditions_arr = array(); if (!empty($include_cats)) { array_push($extra_conditions_arr, "category_id IN ({$include_cats})"); } if (!empty($exclude_cats)) { array_push($extra_conditions_arr, "category_id NOT IN ({$exclude_cats})"); } $extra_conditions = join(" AND ", $extra_conditions_arr); $categories = eme_get_event_category_names($event['event_id'], $extra_conditions); if ($target == "html") { $replacement = eme_trans_sanitize_html(join(", ", $categories), $lang); $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $categories), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_LINKED(EVENT)?CATEGORIES\\{(.*?)\\}\\{(.*?)\\}/', $result, $matches) && get_option('eme_categories_enabled')) { $include_cats = $matches[2]; $exclude_cats = $matches[3]; $extra_conditions_arr = array(); if (!empty($include_cats)) { array_push($extra_conditions_arr, "category_id IN ({$include_cats})"); } if (!empty($exclude_cats)) { array_push($extra_conditions_arr, "category_id NOT IN ({$exclude_cats})"); } $extra_conditions = join(" AND ", $extra_conditions_arr); $categories = eme_get_event_categories($event['event_id'], $extra_conditions); $cat_links = array(); foreach ($categories as $category) { $cat_link = eme_category_url($category); $cat_name = $category['category_name']; if ($target == "html") { array_push($cat_links, "<a href='{$cat_link}' title='" . eme_trans_sanitize_html($cat_name, $lang) . "'>" . eme_trans_sanitize_html($cat_name, $lang) . "</a>"); } else { array_push($cat_links, eme_translate($cat_name, $lang)); } } $replacement = join(", ", $cat_links); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif ($legacy && $event && preg_match('/#_LINKED(EVENT)?CATEGORIES\\[(.*?)\\]\\[(.*?)\\]/', $result, $matches) && get_option('eme_categories_enabled')) { $include_cats = $matches[2]; $exclude_cats = $matches[3]; $extra_conditions_arr = array(); if (!empty($include_cats)) { array_push($extra_conditions_arr, "category_id IN ({$include_cats})"); } if (!empty($exclude_cats)) { array_push($extra_conditions_arr, "category_id NOT IN ({$exclude_cats})"); } $extra_conditions = join(" AND ", $extra_conditions_arr); $categories = eme_get_event_categories($event['event_id'], $extra_conditions); $cat_links = array(); foreach ($categories as $category) { $cat_link = eme_category_url($category); $cat_name = $category['category_name']; if ($target == "html") { array_push($cat_links, "<a href='{$cat_link}' title='" . eme_trans_sanitize_html($cat_name, $lang) . "'>" . eme_trans_sanitize_html($cat_name, $lang) . "</a>"); } else { array_push($cat_links, eme_translate($cat_name, $lang)); } } $replacement = join(", ", $cat_links); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = eme_translate(join(", ", $cat_links), $lang); $replacement = apply_filters('eme_text', $replacement); } } elseif (preg_match('/#_CALENDAR_DAY/', $result)) { $day_key = get_query_var('calendar_day'); $replacement = eme_localised_date($day_key . " " . $eme_timezone); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif ($event && preg_match('/#_RECURRENCE_DESC|#_RECURRENCEDESC/', $result)) { if ($event['recurrence_id']) { $replacement = eme_get_recurrence_desc($event['recurrence_id']); if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } } elseif ($event && preg_match('/#_RECURRENCE_NBR/', $result)) { // returns the sequence number of an event in a recurrence series if ($event['recurrence_id']) { $events = eme_get_recurrence_eventids($event['recurrence_id']); $nbr = array_search($event['event_id'], $events); if ($nbr !== false) { $replacement = $nbr + 1; } } } elseif ($event && preg_match('/#_RSVPEND/', $result)) { // show the end date+time for which a user can rsvp for an event if (eme_is_event_rsvp($event)) { $rsvp_number_days = $event['rsvp_number_days']; $rsvp_number_hours = $event['rsvp_number_hours']; $rsvp_end_obj = new ExpressiveDate($event['event_start_date'] . " " . $event['event_start_time'], $eme_timezone); $rsvp_end_obj->minusDays($rsvp_number_days); $rsvp_end_obj->minusHours($rsvp_number_hours); $rsvp_end_date = eme_localised_date($rsvp_end_obj->getDateTime() . " " . $eme_timezone); $rsvp_end_time = eme_localised_time($rsvp_end_obj->getDateTime() . " " . $eme_timezone); $replacement = $rsvp_end_date . " " . $rsvp_end_time; } } elseif ($event && preg_match('/#_IS_RSVP_ENDED/', $result)) { if (eme_is_event_rsvp($event)) { $rsvp_number_days = $event['rsvp_number_days']; $rsvp_number_hours = $event['rsvp_number_hours']; $rsvp_end_obj = new ExpressiveDate($event['event_start_date'] . " " . $event['event_start_time'], $eme_timezone); $rsvp_end_obj->minusDays($rsvp_number_days); $rsvp_end_obj->minusHours($rsvp_number_hours); if ($rsvp_end_obj->lessThan($eme_date_obj_now)) { $replacement = 1; } else { $replacement = 0; } } } elseif ($event && preg_match('/#_EVENT_EXTERNAL_REF/', $result)) { $replacement = $event['event_external_ref']; if ($target == "html") { $replacement = apply_filters('eme_general', $replacement); } elseif ($target == "rss") { $replacement = apply_filters('eme_general_rss', $replacement); } else { $replacement = apply_filters('eme_text', $replacement); } } elseif (preg_match('/#_IS_SINGLE_DAY/', $result)) { if (eme_is_single_day_page()) { $replacement = 1; } else { $replacement = 0; } } elseif (preg_match('/#_IS_SINGLE_EVENT/', $result)) { if (eme_is_single_event_page()) { $replacement = 1; } else { $replacement = 0; } } elseif (preg_match('/#_IS_LOGGED_IN/', $result)) { if (is_user_logged_in()) { $replacement = 1; } else { $replacement = 0; } } elseif (preg_match('/#_IS_ADMIN_PAGE/', $result)) { if (is_admin()) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_RSVP_ENABLED/', $result)) { if (eme_is_event_rsvp($event)) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_PRIVATE_EVENT/', $result)) { if ($event['event_status'] == STATUS_PRIVATE) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_RECURRENT_EVENT/', $result)) { if ($event['recurrence_id']) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_ONGOING_EVENT/', $result)) { $eme_start_obj = new ExpressiveDate($event['event_start_date'] . " " . $event['event_start_time'], $eme_timezone); $eme_end_obj = new ExpressiveDate($event['event_end_date'] . " " . $event['event_end_time'], $eme_timezone); if ($eme_start_obj->lessOrEqualTo($eme_date_obj_now) && $eme_end_obj->greaterOrEqualTo($eme_date_obj_now)) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_REGISTERED/', $result)) { if (is_user_logged_in() && eme_get_booking_ids_by_wp_id($current_userid, $event['event_id'])) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_MULTIPRICE/', $result)) { if (eme_is_multi($event['price'])) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_MULTISEAT/', $result)) { if (eme_is_multi($event['event_seats'])) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_ALLDAY/', $result)) { if ($event['event_properties']['all_day']) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_ATTENDANCE/', $result)) { if ($event['event_properties']['take_attendance']) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_AUTHOR$/', $result)) { if ($event['event_author'] == $current_userid) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_CONTACTPERSON/', $result)) { if ($event['event_contactperson_id'] == $current_userid) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_AUTHOR_OR_CONTACTPERSON/', $result)) { if ($event['event_author'] == $current_userid || $event['event_contactperson_id'] == $current_userid) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_MULTIDAY/', $result)) { if ($event['event_start_date'] != $event['event_end_date']) { $replacement = 1; } else { $replacement = 0; } } elseif ($event && preg_match('/#_IS_FIRST_RECURRENCE/', $result)) { // returns 1 if the event is the first event in a recurrence series if ($event['recurrence_id']) { $events = eme_get_recurrence_eventids($event['recurrence_id']); $nbr = array_search($event['event_id'], $events); if ($nbr !== false && $nbr == 0) { $replacement = 1; } } } elseif ($event && preg_match('/#_IS_LAST_RECURRENCE/', $result)) { // returns 1 if the event is the last event in a recurrence series if ($event['recurrence_id']) { $events = eme_get_recurrence_eventids($event['recurrence_id']); $nbr = array_search($event['event_id'], $events); $last_index = count($events) - 1; if ($nbr !== false && $nbr == $last_index) { $replacement = 1; } } } elseif (preg_match('/#_LOCALE/', $result)) { $replacement = get_locale(); } else { $found = 0; } if ($found) { if ($need_escape) { $replacement = eme_sanitize_request(eme_sanitize_html(preg_replace('/\\n|\\r/', '', $replacement))); } if ($need_urlencode) { $replacement = rawurlencode($replacement); } $format = str_replace($orig_result, $replacement, $format); } } # now handle all possible location placeholders # but the eme_replace_locations_placeholders can't do "do_shortcode" at the end, because # this would cause [eme_if] tags to be replaced here already, while some placeholders of the # event haven't been replaced yet (like time placeholders, and event details) $format = eme_replace_locations_placeholders($format, $location, $target, 0, $lang); // for extra date formatting, eg. #_{d/m/Y} preg_match_all("/#(ESC|URL)?@?_\\{.*?\\}/", $format, $results); // make sure we set the largest matched placeholders first, otherwise if you found e.g. // #_LOCATION, part of #_LOCATIONPAGEURL would get replaced as well ... usort($results[0], 'sort_stringlenth'); foreach ($results[0] as $result) { $need_escape = 0; $need_urlencode = 0; $orig_result = $result; if (strstr($result, '#ESC')) { $result = str_replace("#ESC", "#", $result); $need_escape = 1; } elseif (strstr($result, '#URL')) { $result = str_replace("#URL", "#", $result); $need_urlencode = 1; } $replacement = ''; if (substr($result, 0, 3) == "#@_") { $my_date = "event_end_date"; $my_time = "event_end_time"; $offset = 4; } else { $my_date = "event_start_date"; $my_time = "event_start_time"; $offset = 3; } $replacement = eme_localised_date($event[$my_date] . " " . $event[$my_time] . " " . $eme_timezone, substr($result, $offset, strlen($result) - ($offset + 1))); if ($need_escape) { $replacement = eme_sanitize_request(eme_sanitize_html(preg_replace('/\\n|\\r/', '', $replacement))); } if ($need_urlencode) { $replacement = rawurlencode($replacement); } $format = str_replace($orig_result, $replacement, $format); } # we handle NOTES the last, this used to be the default behavior # so no placeholder replacement happened accidentaly in possible shortcodes inside #_NOTES # but since we have templates to aid in all that ... if (!$eme_enable_notes_placeholders) { $format = eme_replace_notes_placeholders($format, $event, $target); } // now, replace any language tags found in the format itself $format = eme_translate($format, $lang); if ($do_shortcode) { return do_shortcode($format); } else { return $format; } }
/** * Generate the Monthly Project Report for Selected User * @return View */ public function postUserProjectReport() { //Get the selected UserId $userId = \Input::get('userprojectreportid'); //Get Details of User $user = \User::find($userId); $firstName = $user->first_name; $lastName = $user->last_name; //Get selected Project Id $projectId = \Input::get('projectmonth'); //Get the selected Date for the month $selectedMonth = \Input::get('userprojectdate_submit'); //Generate Month from the date $daysArray = \DateAndTime::getMonthDates($selectedMonth); //Get Data $data = $this->report->generateWeeklyProjectReport($daysArray, $projectId, $userId); //Manipulation for View $tempDates = array(); foreach ($daysArray as $day) { $tempDay = new \ExpressiveDate($day); $tempDates[] = $tempDay->format('jS F, Y'); } //Manipulation for Charts $chartWeek = json_encode($tempDates); $tempDate = new \ExpressiveDate($selectedMonth); $year = $tempDate->getYear(); $month = $tempDate->getMonth(); $totalNoOfDays = (int) $tempDate->getDaysInMonth(); $allmonths = array(1 => 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); $chartWeekData = json_encode($data['dayTime'], JSON_NUMERIC_CHECK); return \View::make('dashboard.reports.monthlyproject')->with('data', $data)->with('name', $firstName . $lastName)->with('totalDays', $totalNoOfDays)->with('dates', $daysArray)->with('year', (int) $year)->with('month', $allmonths[(int) $month])->with('chartWeek', $chartWeek)->with('chartWeekData', $chartWeekData); }
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_get_category_eventids($category_id,$future=0) { // similar to eme_get_recurrence_eventids global $wpdb; $events_table = $wpdb->prefix.EVENTS_TBNAME; if ($future_only) { $eme_date_obj=new ExpressiveDate(null,$eme_timezone); $today = $eme_date_obj->format('Y-m-d'); $sql = $wpdb->prepare("SELECT event_id FROM $events_table WHERE FIND_IN_SET(%d,event_category_ids) AND event_start_date > %s ORDER BY event_start_date ASC, event_start_time ASC",$category_id,$today); } else { $sql = $wpdb->prepare("SELECT event_id FROM $events_table WHERE FIND_IN_SET(%d,event_category_ids) ORDER BY event_start_date ASC, event_start_time ASC",$category_id); } return $wpdb->get_col($sql); }
<div class="row"> <div class="col-md-6"> <h4>Signups {{ $signupStatusLabel }}</h4> </div> <div class="col-md-6"> <h4 class="pull-right">{{ $signupRelativeTime }}</h4> </div> </div> <hr> @if(count($event->users)) <?php $tableBody = array(); foreach ($event->users as $user) { $tableBody[] = array('user' => '<a href="' . URL::route('user.show', $user->id) . '">' . HTML::userAvatar($user) . ' ' . e($user->username) . '</a>', 'signup-time' => ExpressiveDate::make($user->pivot->created_at)->getRelativeDate()); } ?> {{ Table::open(array('class' => 'signups')) }} {{ Table::headers('User', 'Signed Up') }} {{ Table::body($tableBody) }} {{ Table::close() }} @else <p>No users signed up!</p> @endif @if( Auth::check() ) @if( !$event->users->contains(Auth::user()) AND $signupTimespan->status === 1) {{ Button::link(URL::route('event.join', array('event' => $event->id)), 'Join') }} @elseif( $event->users->contains(Auth::user()) ) {{ Button::link(URL::route('event.leave', array('event' => $event->id)), 'Leave') }} @endif
function eme_global_map($atts) { global $eme_need_gmap_js, $eme_timezone; if (get_option('eme_gmap_is_active') == '1') { // the locations shortcode has been deteced, so we indicate // that we want the javascript in the footer as well $eme_need_gmap_js = 1; extract(shortcode_atts(array('show_locations' => true, 'show_events' => false, 'eventful' => false, 'scope' => 'all', 'paging' => 0, 'category' => '', 'width' => 450, 'height' => 300, 'list_location' => 'after'), $atts)); $eventful = $eventful === "true" || $eventful === "1" ? true : $eventful; $show_events = $show_events === "true" || $show_events === "1" ? true : $show_events; $show_locations = $show_locations === "true" || $show_locations === "1" ? true : $show_locations; $eventful = $eventful === "false" || $eventful === "0" ? false : $eventful; $show_events = $show_events === "false" || $show_events === "0" ? false : $show_events; $show_locations = $show_locations === "false" || $show_locations === "0" ? false : $show_locations; $events_page_link = eme_get_events_page(true, false); $prev_text = ""; $next_text = ""; $scope_offset = 0; // for browsing: if paging=1 and only for this_week,this_month or today if ($eventful && $paging == 1) { $eme_date_obj = new ExpressiveDate(null, $eme_timezone); if (isset($_GET['eme_offset'])) { $scope_offset = $_GET['eme_offset']; } $prev_offset = $scope_offset - 1; $next_offset = $scope_offset + 1; if ($scope == "this_week") { $start_of_week = get_option('start_of_week'); $eme_date_obj->setWeekStartDay($start_of_week); $eme_date_obj->modifyWeeks($scope_offset); $limit_start = $eme_date_obj->startOfWeek()->format('Y-m-d'); $limit_end = $eme_date_obj->endOfWeek()->format('Y-m-d'); $scope = "{$limit_start}--{$limit_end}"; $scope_text = eme_localised_date($limit_start . " " . $eme_timezone) . " -- " . eme_localised_date($limit_end . " " . $eme_timezone); $prev_text = __('Previous week', 'eme'); $next_text = __('Next week', 'eme'); } elseif ($scope == "this_month") { $eme_date_obj->modifyMonths($scope_offset); $limit_start = $eme_date_obj->startOfMonth()->format('Y-m-d'); $limit_end = $eme_date_obj->endOfMonth()->format('Y-m-d'); $scope = "{$limit_start}--{$limit_end}"; $scope_text = eme_localised_date($limit_start . " " . $eme_timezone, get_option('eme_show_period_monthly_dateformat')); $prev_text = __('Previous month', 'eme'); $next_text = __('Next month', 'eme'); } elseif ($scope == "this_year") { $eme_date_obj->modifyYears($scope_offset); $year = $eme_date_obj->getYear(); $limit_start = "{$year}-01-01"; $limit_end = "{$year}-12-31"; $scope = "{$limit_start}--{$limit_end}"; $scope = "{$limit_start}--{$limit_end}"; $scope_text = eme_localised_date($limit_start . " " . $eme_timezone, get_option('eme_show_period_yearly_dateformat')); $prev_text = __('Previous year', 'eme'); $next_text = __('Next year', 'eme'); } elseif ($scope == "today") { $scope = $eme_date_obj->modifyDays($scope_offset)->format('Y-m-d'); $limit_start = $scope; $limit_end = $scope; $scope_text = eme_localised_date($limit_start . " " . $eme_timezone); $prev_text = __('Previous day', 'eme'); $next_text = __('Next day', 'eme'); } elseif ($scope == "tomorrow") { $scope_offset++; $scope = $eme_date_obj->modifyDays($scope_offset)->format('Y-m-d'); $limit_start = $scope; $limit_end = $scope; $scope_text = eme_localised_date($limit_start . " " . $eme_timezone); $prev_text = __('Previous day', 'eme'); $next_text = __('Next day', 'eme'); } // to prevent going on indefinitely and thus allowing search bots to go on for ever, // we stop providing links if there are no more events left $older_events = eme_get_events(1, "--" . $limit_start, "ASC", 0, $location['location_id'], $category); $newer_events = eme_get_events(1, "++" . $limit_end, "ASC", 0, $location['location_id'], $category); if (count($older_events) == 0) { $prev_text = ""; } if (count($newer_events) == 0) { $next_text = ""; } } $id_base = preg_replace("/\\D/", "_", microtime(1)); $id_base = rand() . "_" . $id_base; if (!preg_match('/\\%$|px$/', $width)) { $width = $width . "px"; } if (!preg_match('/\\%$|px$/', $height)) { $height = $height . "px"; } $result = "<div id='eme_global_map_{$id_base}' class='eme_global_map' style='width: {$width}; height: {$height}'>map</div>"; // get the paging output ready if ($paging == 1) { $pagination_top = "<div id='locations-pagination-top'> "; $this_page_url = $_SERVER['REQUEST_URI']; // remove the offset info $this_page_url = remove_query_arg('eme_offset', $this_page_url); if ($prev_text != "") { $pagination_top .= "<a class='eme_nav_left' href='" . add_query_arg(array('eme_offset' => $prev_offset), $this_page_url) . "'><< {$prev_text}</a>"; } if ($next_text != "") { $pagination_top .= "<a class='eme_nav_right' href='" . add_query_arg(array('eme_offset' => $next_offset), $this_page_url) . "'>{$next_text} >></a>"; } $pagination_top .= "<span class='eme_nav_center'>{$scope_text}</span>"; $pagination_top .= "</div>"; $pagination_bottom = str_replace("locations-pagination-top", "locations-pagination-bottom", $pagination_top); $result = $pagination_top . $result . $pagination_bottom; } $eventful_string = "eventful_" . $id_base; $scope_string = "scope_" . $id_base; $category_string = "category_" . $id_base; $result .= "<script type='text/javascript'>\n <!--// \n {$eventful_string} = '{$eventful}';\n {$scope_string} = '{$scope}';\n {$category_string} = '{$category}';\n events_page_link = '{$events_page_link}';\n //-->\n </script>"; // we add the list if wanted (only for "before" or "after") $locations = eme_get_locations((bool) $eventful, $scope, $category, $scope_offset); $loc_list = "<div id='eme_div_locations_list_{$id_base}' class='eme_div_locations_list'><ol id='eme_locations_list_{$id_base}' class='eme_locations_list'>"; $firstletter = "A"; foreach ($locations as $location) { if ($show_locations) { $loc_list .= "<li id='location-" . $location['location_id'] . "_{$id_base}" . "' style='list-style-type: upper-alpha'><a>" . eme_trans_sanitize_html($location['location_name']) . "</a></li>"; } if ($show_events) { $events = eme_get_events(0, $scope, "ASC", $scope_offset, $location['location_id'], $category); $loc_list .= "<ol id='eme_events_list'>"; foreach ($events as $event) { if ($show_locations) { $loc_list .= "<li id='location-" . $location['location_id'] . "_{$id_base}" . "' style='list-style-type: none'>- <a>" . eme_trans_sanitize_html($event['event_name']) . "</a></li>"; } else { $loc_list .= "<li id='location-" . $location['location_id'] . "_{$id_base}" . "' style='list-style-type: none'>{$firstletter}. <a>" . eme_trans_sanitize_html($event['event_name']) . "</a></li>"; } } $loc_list .= "</ol>"; } // cool: we can increment strings in php, so we can mimic the CSS "style='list-style-type: upper-alpha'" thingie // usefull when we show events (more than one event per location) $firstletter++; } $loc_list .= "</ol></div>"; if ($list_location == "before") { $result = $loc_list . $result; } elseif ($list_location == "after") { $result .= $loc_list; } } else { $result = ""; } return $result; }
function eme_fdgg_notification() { $store_name = get_option('eme_fdgg_store_name'); $shared_secret = get_option('eme_fdgg_shared_secret'); require_once 'payment_gateways/fdgg/fdgg-util_sha2.php'; $payment_id = intval($_POST['invoicenumber']); $charge_total = $_POST['charge_total']; $approval_code = $_POST['approval_code']; $response_hash = $_POST['response_hash']; $response_status = $_POST['status']; //$cur=$event['currency']; // First Data only allows USD $cur = "USD"; $payment = eme_get_payment($payment_id); $timezone_short = "GMT"; $eme_date_obj = new ExpressiveDate($payment['creation_date_gmt'], $timezone_short); $datetime = $eme_date_obj->format("Y:m:d-H:i:s"); $calc_hash = fdgg_createHash($shared_secret . $approval_code . $charge_total . $cur . $datetime . $store_name); if ($response_hash != $calc_hash) { die('Hash Incorrect'); } // TODO: do some extra checks, like the price payed and such #$price=eme_get_total_booking_price($event,$booking); if (strtolower($response_status) == 'approved') { eme_update_payment_payed($payment_id); } }
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)); }
public function getWeek($date) { $week = array(); $allmonths = array(1 => 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); $tempDate = new ExpressiveDate($date); $startWeek = $tempDate->startOfWeek()->getDate(); $currentDay = new ExpressiveDate($startWeek); for ($i = 0; $i < 7; $i++) { $tempday = array(); $tempday['day'] = $currentDay->getDay(); $tempday['year'] = $currentDay->getYear(); $tempday['dayofweek'] = $currentDay->getDayOfWeek(); $tempday['month'] = $allmonths[(int) $currentDay->getMonth()]; $tempday['class'] = 'calendar-day-' . $currentDay->getDate(); $tempday['date'] = $currentDay->getDate(); $currentDay = $currentDay->addOneDay(); $week[] = $tempday; } return $week; }
public function getUpdatedAtAttribute($value) { $tempUpdatedAt = new ExpressiveDate($value); return $tempUpdatedAt->format('jS F, Y \\a\\t g:ia'); }
/** * Get a relative date string, e.g., 3 days ago. * * @param ExpressiveDate $compare * @return string */ public function getRelativeDate($compare = null) { if (!$compare) { $compare = new ExpressiveDate(null, $this->getTimezone()); } $units = array('second', 'minute', 'hour', 'day', 'week', 'month', 'year'); $values = array(60, 60, 24, 7, 4.35, 12); // Get the difference between the two timestamps. We'll use this to cacluate the // actual time remaining. $difference = abs($compare->getTimestamp() - $this->getTimestamp()); for ($i = 0; $i < count($values) and $difference >= $values[$i]; $i++) { $difference = $difference / $values[$i]; } // Round the difference to the nearest whole number. $difference = round($difference); if ($compare->getTimestamp() < $this->getTimestamp()) { $suffix = 'from now'; } else { $suffix = 'ago'; } // Get the unit of time we are measuring. We'll then check the difference, if it is not equal // to exactly 1 then it's a multiple of the given unit so we'll append an 's'. $unit = $units[$i]; if ($difference != 1) { $unit .= 's'; } return $difference . ' ' . $unit . ' ' . $suffix; }
function eme_registration_seats_form_table($pending = 0) { global $plugin_page, $eme_timezone; $scope_names = array(); $scope_names['past'] = __('Past events', 'eme'); $scope_names['all'] = __('All events', 'eme'); $scope_names['future'] = __('Future events', 'eme'); $event_id = isset($_POST['event_id']) ? intval($_POST['event_id']) : 0; $scope = isset($_POST['scope']) ? $_POST['scope'] : 'future'; if (isset($_GET['search'])) { $scope = "all"; $search = "[person_id=" . intval($_GET['search']) . "]"; } $all_events = eme_get_events(0, $scope); ?> <div class="wrap"> <div id="icon-events" class="icon32"><br /> </div> <h1><?php _e('Add a registration for an event', 'eme'); ?> </h1> <div class="wrap"> <br /> <?php admin_show_warnings(); ?> <form id='add-booking' name='add-booking' action="" method="post"> <input type='hidden' name='eme_admin_action' value='newRegistration' /> <table class="widefat"> <tbody> <tr><th scope='row'><?php _e('Event', 'eme'); ?> :</th><td> <select name="event_id"> <?php foreach ($all_events as $event) { if ($event['event_rsvp']) { $option_text = $event['event_name'] . " (" . eme_localised_date($event['event_start_date'] . " " . $event['event_start_time'] . " " . $eme_timezone) . ")"; echo "<option value='" . $event['event_id'] . "' >" . $option_text . "</option> "; } } ?> </select> </td> </tr> </tbody> </table> <input type="submit" class="button-primary action" value="<?php _e('Register new booking', 'eme'); ?> " /> </form> <br /> </div> <div class="clear"></div> <h1><?php if ($pending) { _e('Pending Approvals', 'eme'); } else { _e('Change reserved spaces or cancel registrations', 'eme'); } ?> </h1> <div class="wrap"> <br /> <div class="tablenav"> <div class="alignleft"> <form id="eme-admin-regsearchform" name="eme-admin-regsearchform" action="<?php echo admin_url("admin.php?page={$plugin_page}"); ?> " method="post"> <select name="scope"> <?php foreach ($scope_names as $key => $value) { $selected = ""; if ($key == $scope) { $selected = "selected='selected'"; } echo "<option value='{$key}' {$selected}>{$value}</option> "; } ?> </select> <select name="event_id"> <option value='0'><?php _e('All events'); ?> </option> <?php $events_with_bookings = array(); foreach ($all_events as $event) { $selected = ""; if ($event_id && $event['event_id'] == $event_id) { $selected = "selected='selected'"; } if ($pending && eme_get_pending_bookings($event['event_id']) > 0) { $events_with_bookings[] = $event['event_id']; echo "<option value='" . $event['event_id'] . "' {$selected}>" . $event['event_name'] . "</option> "; } elseif (eme_get_approved_seats($event['event_id']) > 0) { $events_with_bookings[] = $event['event_id']; echo "<option value='" . $event['event_id'] . "' {$selected}>" . $event['event_name'] . "</option> "; } } ?> </select> <input class="button-secondary" type="submit" value="<?php _e('Filter'); ?> " /> </form> </div> <br /> <br /> <form id="eme-admin-regform" name="eme-admin-regform" action="" method="post"> <select name="eme_admin_action"> <option value="-1" selected="selected"><?php _e('Bulk Actions'); ?> </option> <?php if ($pending) { ?> <option value="approveRegistration"><?php _e('Approve registration', 'eme'); ?> </option> <?php } ?> <option value="updatePayedStatus"><?php _e('Update payed status', 'eme'); ?> </option> <option value="denyRegistration"><?php _e('Deny registration', 'eme'); ?> </option> </select> <input type="submit" class="button-secondary" value="<?php _e('Apply'); ?> " /> <div class="clear"><p> <?php _e('Send mails to attendees upon changes being made?', 'eme'); echo eme_ui_select_binary(1, "send_mail"); ?> </p></div> <?php if ($pending) { $booking_status = 1; // different table id for pending bookings, so the save-state from datatables doesn't interfere with the one from non-pending $table_id = "eme_pending_admin_bookings"; } else { $booking_status = 2; $table_id = "eme_admin_bookings"; } if ($event_id) { $bookings = eme_get_bookings_for($event_id, $booking_status); } else { $bookings = eme_get_bookings_for($events_with_bookings, $booking_status); } if (!empty($bookings)) { ?> <table class="widefat hover stripe" id="<?php print "{$table_id}"; ?> "> <thead> <tr> <th class='manage-column column-cb check-column' scope='col'><input class='select-all' type="checkbox" value='1' /></th> <th>hidden for person id search</th> <th><?php _e('ID', 'eme'); ?> </th> <th><?php _e('Name', 'eme'); ?> </th> <th><?php _e('Date and time', 'eme'); ?> </th> <th><?php _e('Booker', 'eme'); ?> </th> <th><?php _e('Booking date', 'eme'); ?> </th> <th><?php _e('Seats', 'eme'); ?> </th> <th><?php _e('Event price', 'eme'); ?> </th> <th><?php _e('Total price', 'eme'); ?> </th> <th><?php _e('Unique nbr', 'eme'); ?> </th> <th><?php _e('Paid', 'eme'); ?> </th> </tr> </thead> <tbody> <?php $search_dest = admin_url("admin.php?page=eme-people"); foreach ($bookings as $event_booking) { $person = eme_get_person($event_booking['person_id']); $person_info_shown = eme_sanitize_html($person['lastname']); if ($person['firstname']) { $person_info_shown .= " " . eme_sanitize_html($person['firstname']); } $person_info_shown .= " (" . eme_sanitize_html($person['email']) . ")"; $search_url = add_query_arg(array('search' => $person['person_id']), $search_dest); $event = eme_get_event($event_booking['event_id']); $payment_id = eme_get_booking_payment_id($event_booking['booking_id']); $localised_start_date = eme_localised_date($event['event_start_date'] . " " . $event['event_start_time'] . " " . $eme_timezone); $localised_start_time = eme_localised_time($event['event_start_date'] . " " . $event['event_start_time'] . " " . $eme_timezone); $localised_end_date = eme_localised_date($event['event_end_date'] . " " . $event['event_end_time'] . " " . $eme_timezone); $localised_end_time = eme_localised_time($event['event_end_date'] . " " . $event['event_end_time'] . " " . $eme_timezone); $localised_booking_date = eme_localised_date($event_booking['creation_date'] . " " . $eme_timezone); $localised_booking_time = eme_localised_time($event_booking['creation_date'] . " " . $eme_timezone); $style = ""; $eme_date_obj = new ExpressiveDate(null, $eme_timezone); $today = $eme_date_obj->getDate(); $datasort_startstring = strtotime($event['event_start_date'] . " " . $event['event_start_time'] . " " . $eme_timezone); $bookingtimestamp = strtotime($event_booking['creation_date'] . " " . $eme_timezone); if ($event['event_start_date'] < $today) { $style = "style ='background-color: #FADDB7;'"; } ?> <tr <?php echo "{$style}"; ?> > <td><input type='checkbox' class='row-selector' value='<?php echo $event_booking['booking_id']; ?> ' name='selected_bookings[]' /> <input type='hidden' class='row-selector' value='<?php echo $event_booking['booking_id']; ?> ' name='bookings[]' /></td> <td>[person_id=<?php echo $person['person_id']; ?> ]</td> <td><a class="row-title" href="<?php echo admin_url("admin.php?page={$plugin_page}&eme_admin_action=editRegistration&booking_id=" . $event_booking['booking_id']); ?> " title="<?php _e('Click the booking ID in order to see and/or edit the details of the booking.', 'eme'); ?> "><?php echo $event_booking['booking_id']; ?> </a> <td><strong> <a class="row-title" href="<?php echo admin_url("admin.php?page=events-manager&eme_admin_action=edit_event&event_id=" . $event_booking['event_id']); ?> " title="<?php _e('Click the event name in order to see and/or edit the details of the event.', 'eme'); ?> "><?php echo eme_trans_sanitize_html($event['event_name']); ?> </a> </strong> <?php $approved_seats = eme_get_approved_seats($event['event_id']); $pending_seats = eme_get_pending_seats($event['event_id']); $total_seats = $event['event_seats']; echo "<br />" . __('Approved: ', 'eme') . $approved_seats . ", " . __('Pending: ', 'eme') . $pending_seats . ", " . __('Max: ', 'eme') . $total_seats; if ($approved_seats > 0 || $pending_seats > 0) { $printable_address = admin_url("admin.php?page=eme-people&eme_admin_action=booking_printable&event_id=" . $event['event_id']); $csv_address = admin_url("admin.php?page=eme-people&eme_admin_action=booking_csv&event_id=" . $event['event_id']); echo " (<a id='booking_printable_" . $event['event_id'] . "' target='' href='{$printable_address}'>" . __('Printable view', 'eme') . "</a>)"; echo " (<a id='booking_csv_" . $event['event_id'] . "' target='' href='{$csv_address}'>" . __('CSV export', 'eme') . "</a>)"; } ?> </td> <td data-sort="<?php echo $datasort_startstring; ?> "> <?php echo $localised_start_date; if ($localised_end_date != '' && $localised_end_date != $localised_start_date) { echo " - " . $localised_end_date; } ?> <br /> <?php echo "{$localised_start_time} - {$localised_end_time}"; ?> </td> <td><a href="<?php echo $search_url; ?> " title="<?php _e('Click the name of the booker in order to see and/or edit the details of the booker.', 'eme'); ?> "><?php print $person_info_shown; ?> </a> </td> <td data-sort="<?php echo $bookingtimestamp; ?> "> <?php echo $localised_booking_date . " " . $localised_booking_time; ?> </td> <?php if (eme_is_multi(eme_get_booking_price($event, $event_booking))) { ?> <td> <?php echo $event_booking['booking_seats_mp'] . '<br />' . __('(Multiprice)', 'eme'); ?> </td> <?php } else { ?> <td> <?php echo $event_booking['booking_seats']; ?> </td> <?php } ?> <td> <?php echo eme_get_booking_price($event, $event_booking); ?> </td> <td> <?php echo eme_get_total_booking_price($event, $event_booking); ?> </td> <td> <span title="<?php print sprintf(__('This is based on the payment ID of the booking: %d', 'eme'), $payment_id); ?> "><?php echo eme_sanitize_html($event_booking['transfer_nbr_be97']); ?> </span> </td> <td> <?php echo eme_ui_select_binary($event_booking['booking_payed'], "bookings_payed[]"); ?> </td> </tr> <?php } ?> </tbody> </table> <script type="text/javascript"> jQuery(document).ready( function() { jQuery('#<?php print "{$table_id}"; ?> ').dataTable( { "dom": 'Blfrtip', "colReorder": true, <?php // jquery datatables locale loading $locale_code = get_locale(); $locale_file = EME_PLUGIN_DIR . "js/jquery-datatables/i18n/{$locale_code}.json"; $locale_file_url = EME_PLUGIN_URL . "js/jquery-datatables/i18n/{$locale_code}.json"; if ($locale_code != "en_US" && file_exists($locale_file)) { ?> "language": { "url": "<?php echo $locale_file_url; ?> " }, <?php } ?> "stateSave": true, <?php if (!empty($search)) { // If datatables state is saved, the initial search // is ignored and we need to use stateloadparams // So we give the 2 options ?> "stateLoadParams": function (settings, data) { data.search.search = "<?php echo $search; ?> "; }, "search": { "search": "<?php echo $search; ?> " }, <?php } ?> "pagingType": "full", "columnDefs": [ { "sortable": false, "targets": 0 }, { "visible": false, "targets": 1 } ], "buttons": [ 'csv', 'print', { extend: 'colvis', columns: [2,3,4,5,6,7,8,9,10,11] } ] } ); } ); </script> <?php } ?> <div class='tablenav'> <div class="alignleft actions"><br class='clear' /> </div> <br class='clear' /> </div> </div> </form> </div> </div> <?php }
function eme_localised_date($mydate,$date_format='') { global $eme_date_format, $eme_timezone; if (empty($date_format)) $date_format = $eme_date_format; // $mydate contains the timezone, but in case it doesn't we provide it $eme_date_obj = new ExpressiveDate($mydate,$eme_timezone); // Currently in the backend, the timezone is UTC, but maybe that changes in future wp versions // so we search for the current timezone using date_default_timezone_get // Since DateTime::format doesn't respect the locale, we use date_i18n here // but date_i18n uses the WP backend timezone, so we need to account for the timezone difference // All this because we don't want to use date_default_timezone_set() and wp doesn't set the backend // timezone correctly ... $wp_date = new ExpressiveDate($eme_date_obj->getDateTime(),date_default_timezone_get()); $tz_diff=$eme_date_obj->getOffset()-$wp_date->getOffset(); $result = date_i18n($date_format, $eme_date_obj->getTimestamp()+$tz_diff); return $result; }
public function testGetDateDifferenceInSeconds() { $past = new ExpressiveDate('-1 day'); $future = new ExpressiveDate('+1 day'); $this->assertEquals(86400 * 2 * -1, $future->getDifferenceInSeconds($past)); $this->assertEquals(86400 * 2, $past->getDifferenceInSeconds($future)); }