Пример #1
0
function dbem_rss()
{
    if (isset($_REQUEST['dbem_rss']) && $_REQUEST['dbem_rss'] == 'main') {
        header("Content-type: text/xml");
        echo "<?xml version='1.0'?>\n";
        $events_page_id = get_option('dbem_events_page');
        $events_page_link = get_permalink($events_page_id);
        if (stristr($events_page_link, "?")) {
            $joiner = "&amp;";
        } else {
            $joiner = "?";
        }
        ?>
<rss version="2.0">
<channel>
<title><?php 
        echo get_option('dbem_rss_main_title');
        ?>
</title>
<link><?php 
        echo $events_page_link;
        ?>
</link>
<description><?php 
        echo get_option('dbem_rss_main_description');
        ?>
</description>
<docs>
http://blogs.law.harvard.edu/tech/rss
</docs>
<generator>
Weblog Editor 2.0
</generator>
<?php 
        $title_format = get_option('dbem_rss_title_format');
        $description_format = str_replace(">", "&gt;", str_replace("<", "&lt;", get_option('dbem_rss_description_format')));
        $events = dbem_get_events(5);
        foreach ($events as $event) {
            $title = dbem_replace_placeholders($title_format, $event, "rss");
            $description = dbem_replace_placeholders($description_format, $event, "rss");
            echo "<item>";
            echo "<title>{$title}</title>\n";
            echo "<link>{$events_page_link}" . $joiner . "event_id=" . $event['event_id'] . "</link>\n ";
            echo "<description>{$description} </description>\n";
            echo "</item>";
        }
        ?>

</channel>
</rss>

<?php 
        die;
    }
}
function dbem_rss()
{
    if (isset($_REQUEST['dbem_rss']) && $_REQUEST['dbem_rss'] == 'main') {
        header("Content-type: text/xml");
        echo "<?xml version='1.0'?>\n";
        $events_page_id = get_option('dbem_events_page');
        $events_page_link = get_permalink($events_page_id);
        if (stristr($events_page_link, "?")) {
            $joiner = "&amp;";
        } else {
            $joiner = "?";
        }
        ?>
<rss version="2.0">
<channel>
<title><?php 
        echo get_option('dbem_rss_main_title');
        ?>
</title>
<link><?php 
        echo $events_page_link;
        ?>
</link>
<description><?php 
        echo get_option('dbem_rss_main_description');
        ?>
</description>
<docs>
http://blogs.law.harvard.edu/tech/rss
</docs>
<generator>
Wordpress Events Manager Plugin
</generator>
<?php 
        $title_format = get_option('dbem_rss_title_format');
        $description_format = str_replace(">", "&gt;", str_replace("<", "&lt;", get_option('dbem_rss_description_format')));
        /* ROR Begin Edit */
        /* Added support for creating an RSS feed from a specific category. */
        if (isset($_REQUEST['category']) && $_REQUEST['category'] != '') {
            $events = dbem_get_events(5, future, ASC, '', '', $_REQUEST['category']);
        } else {
            $events = dbem_get_events(10);
        }
        if ($events != '') {
            foreach ($events as $event) {
                $title = dbem_replace_placeholders($title_format, $event, "rss");
                $description = dbem_replace_placeholders($description_format, $event, "rss");
                echo "<item>";
                echo "<title>{$title}</title>\n";
                echo "<link>{$events_page_link}" . $joiner . "event_id=" . $event['event_id'] . "</link>\n ";
                echo "<description>{$description} </description>\n";
                echo "</item>";
            }
        }
        /* ROR End Edit */
        ?>
</channel>
</rss>
<?php 
        die;
    }
}
Пример #3
0
function dbem_events_in_location_list($location, $scope = "")
{
    $events = dbem_get_events("", $scope, "", "", $location['location_id']);
    $list = "";
    if (count($events) > 0) {
        foreach ($events as $event) {
            $list .= dbem_replace_placeholders(get_option('dbem_location_event_list_item_format'), $event);
        }
    } else {
        $list = get_option('dbem_location_no_events_message');
    }
    return $list;
}
Пример #4
0
function dbem_get_calendar($args = "")
{
    $defaults = array('full' => 0, 'month' => '', 'echo' => 1, 'long_events' => 0);
    $r = wp_parse_args($args, $defaults);
    extract($r, EXTR_SKIP);
    $full = $r['full'];
    $month = $r['month'];
    $echo = $r['echo'];
    $week_starts_on_sunday = get_option('dbem_week_starts_sunday');
    $start_of_week = get_option('start_of_week');
    global $wpdb;
    if (isset($_GET['calmonth']) && $_GET['calmonth'] != '') {
        $month = $_GET['calmonth'];
    } else {
        if ($month == '') {
            $month = date('m');
        }
    }
    if (isset($_GET['calyear']) && $_GET['calyear'] != '') {
        $year = $_GET['calyear'];
    } else {
        if ($year == '') {
            $year = date('Y');
        }
    }
    $date = mktime(0, 0, 0, $month, date('d'), $year);
    $day = date('d', $date);
    // $month = date('m', $date);
    // $year = date('Y', $date);
    // Get the first day of the month
    $month_start = mktime(0, 0, 0, $month, 1, $year);
    // Get friendly month name
    $month_name = mysql2date('M', "{$year}-{$month}-{$day} 00:00:00");
    // Figure out which day of the week
    // the month starts on.
    $month_start_day = date('D', $month_start);
    switch ($month_start_day) {
        case "Sun":
            $offset = 0;
            break;
        case "Mon":
            $offset = 1;
            break;
        case "Tue":
            $offset = 2;
            break;
        case "Wed":
            $offset = 3;
            break;
        case "Thu":
            $offset = 4;
            break;
        case "Fri":
            $offset = 5;
            break;
        case "Sat":
            $offset = 6;
            break;
    }
    $offset -= $start_of_week;
    if ($offset < 0) {
        $offset += 7;
    }
    // determine how many days are in the last month.
    if ($month == 1) {
        $num_days_last = dbem_days_in_month(12, $year - 1);
    } else {
        $num_days_last = dbem_days_in_month($month - 1, $year);
    }
    // determine how many days are in the current month.
    $num_days_current = dbem_days_in_month($month, $year);
    // Build an array for the current days
    // in the month
    for ($i = 1; $i <= $num_days_current; $i++) {
        $num_days_array[] = mktime(0, 0, 0, date('m'), $i, date('Y'));
    }
    // Build an array for the number of days
    // in last month
    for ($i = 1; $i <= $num_days_last; $i++) {
        $num_days_last_array[] = $i;
    }
    // If the $offset from the starting day of the
    // week happens to be Sunday, $offset would be 0,
    // so don't need an offset correction.
    if ($offset > 0) {
        $offset_correction = array_slice($num_days_last_array, -$offset, $offset);
        $new_count = array_merge($offset_correction, $num_days_array);
        $offset_count = count($offset_correction);
    } else {
        $offset_count = 0;
        $new_count = $num_days_array;
    }
    // count how many days we have with the two
    // previous arrays merged together
    $current_num = count($new_count);
    // Since we will have 5 HTML table rows (TR)
    // with 7 table data entries (TD)
    // we need to fill in 35 TDs
    // so, we will have to figure out
    // how many days to appened to the end
    // of the final array to make it 35 days.
    if ($current_num > 35) {
        $num_weeks = 6;
        $outset = 42 - $current_num;
    } elseif ($current_num < 35) {
        $num_weeks = 5;
        $outset = 35 - $current_num;
    }
    if ($current_num == 35) {
        $num_weeks = 5;
        $outset = 0;
    }
    // Outset Correction
    for ($i = 1; $i <= $outset; $i++) {
        $new_count[] = $i;
    }
    // Now let's "chunk" the $all_days array
    // into weeks. Each week has 7 days
    // so we will array_chunk it into 7 days.
    $weeks = array_chunk($new_count, 7);
    // Build Previous and Next Links
    $base_link = "?" . $_SERVER['QUERY_STRING'] . "&amp;";
    if ($month == 1) {
        $back_month = 12;
        $back_year = $year - 1;
    } else {
        $back_month = $month - 1;
        $back_year = $year;
    }
    $full ? $link_extra_class = "full-link" : ($link_extra_class = '');
    $previous_link = "<a class='prev-month {$link_extra_class}' href=\"" . $base_link . "calmonth={$back_month}&amp;calyear={$back_year} \">&lt;&lt;</a>";
    if ($month == 12) {
        $next_month = 1;
        $next_year = $year + 1;
    } else {
        $next_month = $month + 1;
        $next_year = $year;
    }
    $next_link = "<a class='next-month {$link_extra_class}' href=\"" . $base_link . "calmonth={$next_month}&amp;calyear={$next_year} \">&gt;&gt;</a>";
    $random = rand(100, 200);
    $full ? $class = 'dbem-calendar-full' : ($class = 'dbem-calendar');
    $calendar = "<div class='{$class}' id='dbem-calendar-{$random}'><div style='display:none' class='month_n'>{$month}</div><div class='year_n' style='display:none' >{$year}</div>";
    $weekdays = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    $n = 0;
    while ($n < $start_of_week) {
        $last_day = array_shift($weekdays);
        $weekdays[] = $last_day;
        $n++;
    }
    $days_initials = "";
    foreach ($weekdays as $weekday) {
        $days_initials .= "<td>" . dbem_translate_and_trim($weekday) . "</td>";
    }
    $full ? $fullclass = 'fullcalendar' : ($fullclass = '');
    // Build the heading portion of the calendar table
    $calendar .= "<table class='dbem-calendar-table {$fullclass}'>\n" . "<thead>\n<tr>\n" . "<td>{$previous_link}</td><td class='month_name' colspan='5'>{$month_name} {$year}</td><td>{$next_link}</td>\n" . "</tr>\n</thead>\n" . "<tr class='days-names'>\n" . $days_initials . "</tr>\n";
    // Now we break each key of the array
    // into a week and create a new table row for each
    // week with the days of that week in the table data
    $i = 0;
    foreach ($weeks as $week) {
        $calendar .= "<tr>\n";
        foreach ($week as $d) {
            if ($i < $offset_count) {
                //if it is PREVIOUS month
                $calendar .= "<td class='eventless-pre'>{$d}</td>\n";
            }
            if ($i >= $offset_count && $i < $num_weeks * 7 - $outset) {
                // if it is THIS month
                $fullday = $d;
                $d = date('j', $d);
                $day_link = "{$d}";
                // original :
                //if($date == mktime(0,0,0,$month,$d,$year)){
                // proposed patch (http://davidebenini.it/events-manager-forum/topic.php?id=73 )
                // if(($date == mktime(0,0,0,$month,$d,$year)) && (date('F') == $month_name)) {
                // my solution:
                if ($d == date('j') && $month == date('m') && $year == date('Y')) {
                    $calendar .= "<td class='eventless-today'>{$d}</td>\n";
                } else {
                    $calendar .= "<td class='eventless'>{$day_link}</td>\n";
                }
            } elseif ($outset > 0) {
                //if it is NEXT month
                if ($i >= $num_weeks * 7 - $outset) {
                    $calendar .= "<td class='eventless-post'>{$d}</td>\n";
                }
            }
            $i++;
        }
        $calendar .= "</tr>\n";
    }
    $calendar .= " </table>\n</div>";
    // query the database for events in this time span
    if ($month == 1) {
        $month_pre = 12;
        $month_post = 2;
        $year_pre = $year - 1;
        $year_post = $year;
    } elseif ($month == 12) {
        $month_pre = 11;
        $month_post = 1;
        $year_pre = $year;
        $year_post = $year + 1;
    } else {
        $month_pre = $month - 1;
        $month_post = $month + 1;
        $year_pre = $year;
        $year_post = $year;
    }
    $limit_pre = date("Y-m-d", mktime(0, 0, 0, $month_pre, 1, $year_pre));
    $limit_post = date("Y-m-d", mktime(0, 0, 0, $month_post, 30, $year_post));
    $events_table = $wpdb->prefix . EVENTS_TBNAME;
    $sql = "SELECT event_id, \n\t\tevent_name, \n\t \tevent_start_date,\n\t\tevent_start_time, \n\t\tevent_end_date,\n\t\tDATE_FORMAT(event_start_date, '%w') AS 'event_weekday_n',\n\t\tDATE_FORMAT(event_start_date, '%e') AS 'event_day',\n\t\tDATE_FORMAT(event_start_date, '%c') AS 'event_month_n',\n\t\tDATE_FORMAT(event_start_time, '%Y') AS 'event_year',\n\t\tDATE_FORMAT(event_start_time, '%k') AS 'event_hh',\n\t\tDATE_FORMAT(event_start_time, '%i') AS 'event_mm'\n\t\tFROM {$events_table} \n\t\tWHERE (event_start_date BETWEEN '{$limit_pre}' AND '{$limit_post}') OR (event_end_date BETWEEN '{$limit_pre}' AND '{$limit_post}') ORDER BY event_start_date";
    $events = $wpdb->get_results($sql, ARRAY_A);
    //----- DEBUG ------------
    //foreach($events as $event) { //DEBUG
    //	$calendar .= ("$event->event_day / $event->event_month_n - $event->event_name<br/>");
    //}
    // ------------------
    $eventful_days = array();
    if ($events) {
        //Go through the events and slot them into the right d-m index
        foreach ($events as $event) {
            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
                $event_start_date = strtotime($event['event_start_date']);
                $event_end_date = strtotime($event['event_end_date']);
                while ($event_start_date <= $event_end_date) {
                    $event_eventful_date = date('Y-m-d', $event_start_date);
                    //Only show events on the day that they start
                    if (is_array($eventful_days[$event_eventful_date])) {
                        $eventful_days[$event_eventful_date][] = $event;
                    } else {
                        $eventful_days[$event_eventful_date] = array($event);
                    }
                    $event_start_date += 60 * 60 * 24;
                }
            } else {
                //Only show events on the day that they start
                if (is_array($eventful_days[$event['event_start_date']])) {
                    $eventful_days[$event['event_start_date']][] = $event;
                } else {
                    $eventful_days[$event['event_start_date']] = array($event);
                }
            }
        }
    }
    $events_page = get_option('dbem_events_page');
    $event_format = get_option('dbem_full_calendar_event_format');
    $event_title_format = get_option('dbem_small_calendar_event_title_format');
    $event_title_separator_format = get_option('dbem_small_calendar_event_title_separator');
    $cells = array();
    foreach ($eventful_days as $day_key => $events) {
        //Set the date into the key
        $event_date = explode('-', $day_key);
        $cells[$day_key]['day'] = $event_date[2];
        $cells[$day_key]['month'] = $event_date[1];
        $events_titles = array();
        foreach ($events as $event) {
            $events_titles[] = dbem_replace_placeholders($event_title_format, $event);
        }
        $link_title = implode($event_title_separator_format, $events_titles);
        $cells[$day_key]['cell'] = "<a title='{$link_title}' href='?page_id={$events_page}&amp;calendar_day={$day_key}'>{$cells[$day_key]['day']}</a>";
        if ($full) {
            $cells[$day_key]['cell'] .= "<ul>";
            foreach ($events as $event) {
                $cells[$day_key]['cell'] .= dbem_replace_placeholders($event_format, $event);
            }
            $cells[$day_key]['cell'] .= "</ul>";
        }
    }
    //	print_r($cells);
    if ($events) {
        foreach ($cells as $cell) {
            if ($cell['month'] == $month_pre) {
                $calendar = str_replace("<td class='eventless-pre'>" . $cell['day'] . "</td>", "<td class='eventful-pre'>" . $cell['cell'] . "</td>", $calendar);
            } elseif ($cell['month'] == $month_post) {
                $calendar = str_replace("<td class='eventless-post'>" . $cell['day'] . "</td>", "<td class='eventful-post'>" . $cell['cell'] . "</td>", $calendar);
            } elseif ($cell['day'] == $day) {
                $calendar = str_replace("<td class='eventless-today'>" . $cell['day'] . "</td>", "<td class='eventful-today'>" . $cell['cell'] . "</td>", $calendar);
            } elseif ($cell['month'] == $month) {
                $calendar = str_replace("<td class='eventless'>" . $cell['day'] . "</td>", "<td class='eventful'>" . $cell['cell'] . "</td>", $calendar);
            }
        }
    }
    $output = $calendar;
    if ($echo) {
        echo $output;
    } else {
        return $output;
    }
}
function dbem_email_rsvp_booking()
{
    $booker = array();
    $bookerName = $_POST['bookerName'];
    $bookerEmail = $_POST['bookerEmail'];
    $bookerPhone = $_POST['bookerPhone'];
    $bookedSeats = $_POST['bookedSeats'];
    $event_id = $_GET['event_id'];
    $event = dbem_get_event($event_id);
    $available_seats = dbem_get_available_seats($event_id);
    $reserved_seats = dbem_get_booked_seats($event_id);
    if ($event['event_contactperson_id'] != "") {
        $contact_id = $event['event_contactperson_id'];
    } else {
        $contact_id = get_option('dbem_default_contact_person');
    }
    $contact_name = dbem_get_user_name($contact_id);
    $contact_body = dbem_replace_placeholders(get_option('dbem_contactperson_email_body'), $event);
    $booker_body = dbem_replace_placeholders(get_option('dbem_respondent_email_body'), $event);
    // email specific placeholders
    $placeholders = array('#_CONTACTPERSON' => $contact_name, '#_RESPNAME' => $bookerName, '#_RESPEMAIL' => $bookerEmail, '#_SPACES' => $bookedSeats, '#_RESERVEDSPACES' => $reserved_seats, '#_AVAILABLESPACES' => $available_seats);
    foreach ($placeholders as $key => $value) {
        $contact_body = str_replace($key, $value, $contact_body);
        $booker_body = str_replace($key, $value, $booker_body);
    }
    $contact_email = dbem_get_user_email($contact_id);
    dbem_send_mail(__("New booking", 'dbem'), $contact_body, $contact_email);
    dbem_send_mail(__('Reservation confirmed', 'dbem'), $booker_body, $bookerEmail);
}
function dbem_printable_booking_report($event_id)
{
    $event = dbem_get_event($event_id);
    $bookings = dbem_get_bookings_for($event_id);
    $available_seats = dbem_get_available_seats($event_id);
    $booked_seats = dbem_get_booked_seats($event_id);
    $stylesheet = get_bloginfo('url') . "/wp-content/plugins/events-manager/events_manager.css";
    ?>
		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
			"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
		<html>
		<head>
			<meta http-equiv="Content-type" content="text/html; charset=utf-8">
			<title>Bookings for <?php 
    echo $event['event_name'];
    ?>
</title>
			 <link rel="stylesheet" href="<?php 
    echo $stylesheet;
    ?>
" type="text/css" media="screen" />
			
		</head>
		<body id="printable">
			<div id="container">
			<h1>Bookings for <?php 
    echo $event['event_name'];
    ?>
</h1> 
			<p><?php 
    echo dbem_replace_placeholders("#d #M #Y", $event);
    ?>
</p>
			<p><?php 
    echo dbem_replace_placeholders("#_LOCATION, #_ADDRESS, #_TOWN", $event);
    ?>
</p>   
			<h2><?php 
    _e('Bookings data', 'dbem');
    ?>
</h2>
			<table id="bookings-table">
				<tr>
					<th scope='col'><?php 
    _e('Name', 'dbem');
    ?>
</th>
					<th scope='col'><?php 
    _e('E-mail', 'dbem');
    ?>
</th>
					<th scope='col'><?php 
    _e('Phone number', 'dbem');
    ?>
</th> 
					<th scope='col'><?php 
    _e('Seats', 'dbem');
    ?>
</th> 
				<?php 
    foreach ($bookings as $booking) {
        ?>
				<tr>
					
					<td><?php 
        echo $booking['person_name'];
        ?>
</td> 
					<td><?php 
        echo $booking['person_email'];
        ?>
</td>
					<td><?php 
        echo $booking['person_phone'];
        ?>
</td>
					<td class='seats-number'><?php 
        echo $booking['booking_seats'];
        ?>
</td> 
				</tr>
			   <?php 
    }
    ?>
			  	<tr id='booked-seats'>
					<td colspan='2'>&nbsp;</td>
					<td class='total-label'><?php 
    _e('Booked', 'dbem');
    ?>
:</td>
					<td class='seats-number'><?php 
    echo $booked_seats;
    ?>
</td>
				</tr>
				<tr id='available-seats'>
					<td colspan='2'>&nbsp;</td> 
					<td class='total-label'><?php 
    _e('Available', 'dbem');
    ?>
:</td>  
					<td class='seats-number'><?php 
    echo $available_seats;
    ?>
</td>
				</tr>
			</table>  
			</div>
		</body>
		</html>
		<?php 
    die;
}
 public function get_events_in_location_list($location, $scope = "")
 {
     $events = $this->get_events("", $scope, "", "", $location['location_id']);
     $list = "";
     if (count($events) > 0) {
         foreach ($events as $event) {
             $list .= dbem_replace_placeholders($this->opts['location_event_list_item_format'], $event);
         }
     } else {
         $list = $this->opts['dbem_location_no_events_message'];
     }
     return $list;
 }