Inheritance: extends DateTime
Beispiel #1
0
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;
}
Beispiel #2
0
 /**
  * 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;
 }
Beispiel #3
0
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;
}
Beispiel #4
0
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);
}
Beispiel #5
0
 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'];
 }
Beispiel #6
0
 /**
  * Get the date the post was created.
  *
  * @return string
  */
 public function date()
 {
     return ExpressiveDate::make($this->created_at)->getRelativeDate();
 }
Beispiel #7
0
 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&amp;eme_admin_action=edit_event&amp;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&amp;eme_admin_action=edit_event&amp;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&amp;eme_admin_action=booking_printable&amp;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&amp;eme_admin_action=booking_printable&amp;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&amp;eme_admin_action=booking_csv&amp;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&amp;eme_admin_action=booking_csv&amp;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&amp;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&amp;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;
    }
}
Beispiel #11
0
 /**
  * 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);
 }
Beispiel #12
0
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=\"#\">&lt;&lt;</a>";
    $next_link = "<a class='next-month' href=\"#\">&gt;&gt;</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) . "'>&lt;&lt; {$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} &gt;&gt;</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;
}
Beispiel #16
0
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);
    }
}
Beispiel #17
0
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));
}
Beispiel #18
0
 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;
 }
Beispiel #19
0
 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;
 }
Beispiel #21
0
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}&amp;eme_admin_action=editRegistration&amp;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&amp;eme_admin_action=edit_event&amp;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&amp;eme_admin_action=booking_printable&amp;event_id=" . $event['event_id']);
                $csv_address = admin_url("admin.php?page=eme-people&amp;eme_admin_action=booking_csv&amp;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;
}
Beispiel #23
0
 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));
 }