本文整理汇总了PHP中EM_Event类的典型用法代码示例。如果您正苦于以下问题:PHP EM_Event类的具体用法?PHP EM_Event怎么用?PHP EM_Event使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了EM_Event类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: em_get_event_shortcode
/**
* Shows a list of events according to given specifications. Accepts any event query attribute.
* @param array $atts
* @return string
*/
function em_get_event_shortcode($atts, $format = '')
{
$atts = (array) $atts;
$atts['format'] = $format != '' || empty($atts['format']) ? $format : $atts['format'];
$atts['format'] = html_entity_decode($atts['format']);
//shorcode doesn't accept html
if (!empty($atts['event']) && is_numeric($atts['event'])) {
$EM_Event = new EM_Event($atts['event']);
return !empty($atts['format']) ? $EM_Event->output($atts['format']) : $EM_Event->output_single();
}
}
示例2: em_event_added_email
/**
* @param EM_Event $EM_Event
* @return string
*/
function em_event_added_email($EM_Event)
{
if (!$EM_Event->get_status() && get_option('dbem_bookings_approval') && get_option('dbem_event_submitted_email_admin') != '') {
$admin_emails = explode(',', get_option('dbem_event_submitted_email_admin'));
//admin emails are in an array, single or multiple
$subject = $EM_Event->output(get_option('dbem_event_submitted_email_subject'));
$message = $EM_Event->output(get_option('dbem_event_submitted_email_body'));
//Send email to admins
$EM_Event->email_send($subject, $message, $admin_emails);
}
}
示例3: get
/**
* Returns an array of EM_Events that match the given specs in the argument, or returns a list of future evetnts in future
* (see EM_Events::get_default_search() ) for explanation of possible search array values. You can also supply a numeric array
* containing the ids of the events you'd like to obtain
*
* @param array $args
* @return EM_Event array()
*/
function get($args = array(), $count = false)
{
global $wpdb;
$events_table = EM_EVENTS_TABLE;
$locations_table = EM_LOCATIONS_TABLE;
//Quick version, we can accept an array of IDs, which is easy to retrieve
if (self::array_is_numeric($args)) {
//Array of numbers, assume they are event IDs to retreive
//We can just get all the events here and return them
$sql = "\n\t\t\t\tSELECT * FROM {$events_table}\n\t\t\t\tLEFT JOIN {$locations_table} ON {$locations_table}.location_id={$events_table}.location_id\n\t\t\t\tWHERE event_id=" . implode(" OR event_id=", $args) . "\n\t\t\t";
$results = $wpdb->get_results(apply_filters('em_events_get_sql', $sql), ARRAY_A);
$events = array();
foreach ($results as $result) {
$events[$result['event_id']] = new EM_Event($result);
}
return $events;
//We return all the events matched as an EM_Event array.
}
//We assume it's either an empty array or array of search arguments to merge with defaults
$args = self::get_default_search($args);
$limit = $args['limit'] && is_numeric($args['limit']) ? "LIMIT {$args['limit']}" : '';
$offset = $limit != "" && is_numeric($args['offset']) ? "OFFSET {$args['offset']}" : '';
//Get the default conditions
$conditions = self::build_sql_conditions($args);
//Put it all together
$where = count($conditions) > 0 ? " WHERE " . implode(" AND ", $conditions) : '';
//Get ordering instructions
$EM_Event = new EM_Event();
$accepted_fields = $EM_Event->get_fields(true);
$orderby = self::build_sql_orderby($args, $accepted_fields, get_option('dbem_events_default_order'));
//Now, build orderby sql
$orderby_sql = count($orderby) > 0 ? 'ORDER BY ' . implode(', ', $orderby) : '';
//Create the SQL statement and execute
$selectors = $count ? 'COUNT(*)' : '*';
$sql = "\n\t\t\tSELECT {$selectors} FROM {$events_table}\n\t\t\tLEFT JOIN {$locations_table} ON {$locations_table}.location_id={$events_table}.location_id\n\t\t\t{$where}\n\t\t\t{$orderby_sql}\n\t\t\t{$limit} {$offset}\n\t\t";
//If we're only counting results, return the number of results
if ($count) {
return $wpdb->get_var($sql);
}
$results = $wpdb->get_results(apply_filters('em_events_get_sql', $sql, $args), ARRAY_A);
//If we want results directly in an array, why not have a shortcut here?
if ($args['array'] == true) {
return $results;
}
//Make returned results EM_Event objects
$results = is_array($results) ? $results : array();
$events = array();
foreach ($results as $event) {
$events[] = new EM_Event($event);
}
return apply_filters('em_events_get', $events, $args);
}
示例4: get
/**
* Returns an array of EM_Location objects
* @param boolean $eventful
* @param boolean $return_objects
* @return array
*/
function get($args = array())
{
global $wpdb;
$events_table = $wpdb->prefix . EM_EVENTS_TABLE;
$locations_table = $wpdb->prefix . EM_LOCATIONS_TABLE;
//Quick version, we can accept an array of IDs, which is easy to retrieve
if (self::array_is_numeric($args) && count()) {
//Array of numbers, assume they are event IDs to retreive
//We can just get all the events here and return them
$sql = "SELECT * FROM {$locations_table} WHERE location_id=" . implode(" OR location_id=", $args);
$results = $wpdb->get_results($sql, ARRAY_A);
$events = array();
foreach ($results as $result) {
$locations[$result['location_id']] = new EM_Location($result);
}
return $locations;
//We return all the events matched as an EM_Event array.
}
//We assume it's either an empty array or array of search arguments to merge with defaults
$args = self::get_default_search($args);
$limit = $args['limit'] && is_numeric($args['limit']) ? "LIMIT {$args['limit']}" : '';
$offset = $limit != "" && is_numeric($args['offset']) ? "OFFSET {$args['offset']}" : '';
//Get the default conditions
$conditions = self::build_sql_conditions($args);
//Put it all together
$EM_Location = new EM_Location(0);
//Empty class for strict message avoidance
$fields = $locations_table . "." . implode(", {$locations_table}.", array_keys($EM_Location->fields));
$where = count($conditions) > 0 ? " WHERE " . implode(" AND ", $conditions) : '';
//Get ordering instructions
$EM_Event = new EM_Event();
//blank event for below
$accepted_fields = $EM_Location->get_fields(true);
$accepted_fields = array_merge($EM_Event->get_fields(true), $accepted_fields);
$orderby = self::build_sql_orderby($args, $accepted_fields, get_option('dbem_events_default_order'));
//Now, build orderby sql
$orderby_sql = count($orderby) > 0 ? 'ORDER BY ' . implode(', ', $orderby) : '';
//Create the SQL statement and execute
$sql = "\n\t\t\tSELECT {$fields} FROM {$locations_table}\n\t\t\tLEFT JOIN {$events_table} ON {$locations_table}.location_id={$events_table}.location_id\n\t\t\t{$where}\n\t\t\tGROUP BY location_id\n\t\t\t{$orderby_sql}\n\t\t\t{$limit} {$offset}\n\t\t";
$results = $wpdb->get_results($sql, ARRAY_A);
//If we want results directly in an array, why not have a shortcut here?
if ($args['array'] == true) {
return $results;
}
$locations = array();
foreach ($results as $location) {
$locations[] = new EM_Location($location);
}
return apply_filters('em_locations_get', $locations, $args);
}
示例5: bp_em_group_event_can_manage
/**
* Overrides the default capability of the user for another owner's event if the user is a group admin and the event belongs to a group.
* User must have the relevant permissions globally in order to inherit that capability for this event as well.
* @param boolean $result
* @param EM_Event $EM_Event
*/
function bp_em_group_event_can_manage($result, $EM_Event, $owner_capability, $admin_capability, $user_to_check)
{
if (!$result && $EM_Event->event_owner != get_current_user_id() && !empty($EM_Event->group_id) && bp_is_active('groups')) {
//only override if already false, incase it's true
//if the user is an admin of this group, and actually has the relevant permissions globally, they can manage this event
$EM_Object = new EM_Object();
//create new object to prevent infinite loop should we call $EM_Event->can_manage();
if (groups_is_user_admin(get_current_user_id(), $EM_Event->group_id) && $EM_Object->can_manage($owner_capability, $admin_capability, $user_to_check)) {
//This user is an admin of the owner's group, so they can edit this event.
return true;
} else {
$EM_Event->add_error($EM_Object->get_errors());
//add any applicable errors
}
}
return $result;
}
示例6: ajax_add_booking
function ajax_add_booking()
{
/* Check the nonce */
check_admin_referer('add_booking', '_wpnonce_add_booking');
if (!empty($_REQUEST['event_id']) && is_numeric($_REQUEST['event_id'])) {
$EM_Event = new EM_Event($_REQUEST['event_id']);
$result = $EM_Event->get_bookings()->add_from_post();
if ($result) {
$return = array('result' => true, 'message' => $EM_Event->get_bookings()->feedback_message);
} else {
$return = array('result' => false, 'message' => implode('<br />', $EM_Event->get_bookings()->errors));
}
echo EM_Object::json_encode($return);
exit;
} else {
$return = array('result' => false, 'message' => '');
echo EM_Object::json_encode($return);
exit;
}
}
示例7: em_admin_event_actions
function em_admin_event_actions()
{
if (current_user_can(EM_MIN_CAPABILITY) && !empty($_GET['page']) && $_GET['page'] == 'events-manager-event' && !empty($_REQUEST['action'])) {
global $wpdb;
global $EM_Event;
//if dealing with new event, we still want an event object
if (!is_object($EM_Event)) {
$EM_Event = new EM_Event();
}
// UPDATE or CREATE action
if ($_REQUEST['action'] == 'save') {
$validation = $EM_Event->get_post();
if ($validation) {
//EM_Event gets the event if submitted via POST and validates it (safer than to depend on JS)
//Save
if ($EM_Event->save()) {
$page = !empty($_REQUEST['pno']) ? $_REQUEST['pno'] : '';
$scope = !empty($_REQUEST['scope']) ? $_REQUEST['scope'] : '';
wp_redirect(get_bloginfo('wpurl') . '/wp-admin/admin.php?page=events-manager&p=' . $page . '&scope=' . $scope . '&message=' . urlencode($EM_Event->feedback_message));
}
}
//errors added automatically to event global object
}
//Copy the event
if ($_REQUEST['action'] == 'duplicate') {
global $EZSQL_ERROR;
$EM_Event = $EM_Event->duplicate();
if ($EM_Event === false) {
$redirect_url = em_add_get_params($_SERVER['HTTP_REFERER'], array('error' => __('There was an error duplicating the event. Try again maybe?', 'dbem'), 'message' => ''), false);
wp_redirect($redirect_url);
} else {
$page = !empty($_REQUEST['pno']) ? $_REQUEST['pno'] : '';
$scope = !empty($_REQUEST['scope']) ? $_REQUEST['scope'] : '';
wp_redirect(get_bloginfo('wpurl') . '/wp-admin/admin.php?page=events-manager-event&event_id=' . $EM_Event->id . '&p=' . $page . '&scope=' . $scope . '&message=' . urlencode($EM_Event->feedback_message));
}
}
}
}
示例8: em_admin_email_test_ajax
function em_admin_email_test_ajax()
{
if (wp_verify_nonce($_REQUEST['_check_email_nonce'], 'check_email') && current_user_can('activate_plugins')) {
$subject = __("Events Manager Test Email", 'dbem');
$content = __('Congratulations! Your email settings work.', 'dbem');
$current_user = get_user_by('id', get_current_user_id());
//add filters for options used in EM_Mailer so the current supplied ones are used
ob_start();
function pre_option_dbem_mail_sender_name()
{
return sanitize_email($_REQUEST['dbem_mail_sender_name']);
}
add_filter('pre_option_dbem_mail_sender_name', 'pre_option_dbem_mail_sender_name');
function pre_option_dbem_mail_sender_address()
{
return sanitize_text_field($_REQUEST['dbem_mail_sender_address']);
}
add_filter('pre_option_dbem_mail_sender_address', 'pre_option_dbem_mail_sender_address');
function pre_option_dbem_rsvp_mail_send_method()
{
return sanitize_text_field($_REQUEST['dbem_rsvp_mail_send_method']);
}
add_filter('pre_option_dbem_rsvp_mail_send_method', 'pre_option_dbem_rsvp_mail_send_method');
function pre_option_dbem_rsvp_mail_port()
{
return sanitize_text_field($_REQUEST['dbem_rsvp_mail_port']);
}
add_filter('pre_option_dbem_rsvp_mail_port', 'pre_option_dbem_rsvp_mail_port');
function pre_option_dbem_rsvp_mail_SMTPAuth()
{
return sanitize_text_field($_REQUEST['dbem_rsvp_mail_SMTPAuth']);
}
add_filter('pre_option_dbem_rsvp_mail_SMTPAuth', 'pre_option_dbem_rsvp_mail_SMTPAuth');
function pre_option_dbem_smtp_host()
{
return sanitize_text_field($_REQUEST['dbem_smtp_host']);
}
add_filter('pre_option_dbem_smtp_host', 'pre_option_dbem_smtp_host');
function pre_option_dbem_smtp_username()
{
return sanitize_text_field($_REQUEST['dbem_smtp_username']);
}
add_filter('pre_option_dbem_smtp_username', 'pre_option_dbem_smtp_username');
function pre_option_dbem_smtp_password()
{
return sanitize_text_field($_REQUEST['dbem_smtp_password']);
}
add_filter('pre_option_dbem_smtp_password', 'pre_option_dbem_smtp_password');
ob_clean();
//remove any php errors/warnings output
$EM_Event = new EM_Event();
if ($EM_Event->email_send($subject, $content, $current_user->user_email)) {
$result = array('result' => true, 'message' => sprintf(__('Email sent succesfully to %s', 'dbem'), $current_user->user_email));
} else {
$result = array('result' => false, 'message' => __('Email not sent.', 'dbem') . " <ul><li>" . implode('</li><li>', $EM_Event->get_errors()) . '</li></ul>');
}
echo EM_Object::json_encode($result);
}
exit;
}
示例9: em_init_actions
/**
* Performs actions on init. This works for both ajax and normal requests, the return results depends if an em_ajax flag is passed via POST or GET.
*/
function em_init_actions()
{
global $wpdb, $EM_Notices, $EM_Event;
if (defined('DOING_AJAX') && DOING_AJAX) {
$_REQUEST['em_ajax'] = true;
}
//NOTE - No EM objects are globalized at this point, as we're hitting early init mode.
//TODO Clean this up.... use a uniformed way of calling EM Ajax actions
if (!empty($_REQUEST['em_ajax']) || !empty($_REQUEST['em_ajax_action'])) {
if (isset($_REQUEST['em_ajax_action']) && $_REQUEST['em_ajax_action'] == 'get_location') {
if (isset($_REQUEST['id'])) {
$EM_Location = new EM_Location($_REQUEST['id'], 'location_id');
$location_array = $EM_Location->to_array();
$location_array['location_balloon'] = $EM_Location->output(get_option('dbem_location_baloon_format'));
echo EM_Object::json_encode($location_array);
}
die;
}
if (isset($_REQUEST['em_ajax_action']) && $_REQUEST['em_ajax_action'] == 'delete_ticket') {
if (isset($_REQUEST['id'])) {
$EM_Ticket = new EM_Ticket($_REQUEST['id']);
$result = $EM_Ticket->delete();
if ($result) {
$result = array('result' => true);
} else {
$result = array('result' => false, 'error' => $EM_Ticket->feedback_message);
}
} else {
$result = array('result' => false, 'error' => __('No ticket id provided', 'dbem'));
}
echo EM_Object::json_encode($result);
die;
}
if (isset($_REQUEST['query']) && $_REQUEST['query'] == 'GlobalMapData') {
$EM_Locations = EM_Locations::get($_REQUEST);
$json_locations = array();
foreach ($EM_Locations as $location_key => $EM_Location) {
$json_locations[$location_key] = $EM_Location->to_array();
$json_locations[$location_key]['location_balloon'] = $EM_Location->output(get_option('dbem_map_text_format'));
}
echo EM_Object::json_encode($json_locations);
die;
}
if (isset($_REQUEST['ajaxCalendar']) && $_REQUEST['ajaxCalendar']) {
//FIXME if long events enabled originally, this won't show up on ajax call
echo EM_Calendar::output($_REQUEST, false);
die;
}
}
//Event Actions
if (!empty($_REQUEST['action']) && substr($_REQUEST['action'], 0, 5) == 'event') {
//Load the event object, with saved event if requested
if (!empty($_REQUEST['event_id'])) {
$EM_Event = new EM_Event($_REQUEST['event_id']);
} else {
$EM_Event = new EM_Event();
}
//Save Event, only via BP or via [event_form]
if ($_REQUEST['action'] == 'event_save' && $EM_Event->can_manage('edit_events', 'edit_others_events')) {
//Check Nonces
if (!wp_verify_nonce($_REQUEST['_wpnonce'], 'wpnonce_event_save')) {
exit('Trying to perform an illegal action.');
}
//Grab and validate submitted data
if ($EM_Event->get_post() && $EM_Event->save()) {
//EM_Event gets the event if submitted via POST and validates it (safer than to depend on JS)
$events_result = true;
//Success notice
if (is_user_logged_in()) {
$EM_Notices->add_confirm($EM_Event->output(get_option('dbem_events_form_result_success')), true);
} else {
$EM_Notices->add_confirm($EM_Event->output(get_option('dbem_events_anonymous_result_success')), true);
}
$redirect = !empty($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : wp_get_referer();
$redirect = em_add_get_params($redirect, array('success' => 1));
wp_redirect($redirect);
exit;
} else {
$EM_Notices->add_error($EM_Event->get_errors());
$events_result = false;
}
}
if ($_REQUEST['action'] == 'event_duplicate' && wp_verify_nonce($_REQUEST['_wpnonce'], 'event_duplicate_' . $EM_Event->event_id)) {
$EM_Event = $EM_Event->duplicate();
if ($EM_Event === false) {
$EM_Notices->add_error($EM_Event->errors, true);
} else {
$EM_Notices->add_confirm($EM_Event->feedback_message, true);
}
wp_redirect(wp_get_referer());
exit;
}
if ($_REQUEST['action'] == 'event_delete' && wp_verify_nonce($_REQUEST['_wpnonce'], 'event_delete_' . $EM_Event->event_id)) {
//DELETE action
$selectedEvents = !empty($_REQUEST['events']) ? $_REQUEST['events'] : '';
if (EM_Object::array_is_numeric($selectedEvents)) {
$events_result = EM_Events::delete($selectedEvents);
//.........这里部分代码省略.........
示例10: duplicate
/**
* Duplicates this event and returns the duplicated event. Will return false if there is a problem with duplication.
* @return EM_Event
*/
function duplicate()
{
global $wpdb, $EZSQL_ERROR;
//First, duplicate.
if ($this->can_manage('edit_events', 'edit_others_events')) {
$event_table_name = EM_EVENTS_TABLE;
$eventArray = $this->to_array();
unset($eventArray['event_id']);
$EM_Event = new EM_Event($eventArray);
if ($EM_Event->save()) {
$EM_Event->feedback_message = sprintf(__("%s successfully duplicated.", 'dbem'), __('Event', 'dbem'));
return apply_filters('em_event_duplicate', $EM_Event, $this);
}
} else {
$EM_Event->add_error(sprintf(__('You are not allowed to manage this %s.'), __('event', 'dbem')));
}
//TODO add error notifications for duplication failures.
return apply_filters('em_event_duplicate', false, $this);
}
示例11: em_booking_form_footer
/**
* Called instead of the filter in EM_Gateways if a manual booking is being made
* @param EM_Event $EM_Event
*/
function em_booking_form_footer($EM_Event)
{
if ($EM_Event->can_manage('manage_bookings', 'manage_others_bookings')) {
//Admin is adding a booking here, so let's show a different form here.
?>
<input type="hidden" name="gateway" value="<?php
echo $this->gateway;
?>
" />
<input type="hidden" name="manual_booking" value="<?php
echo wp_create_nonce('em_manual_booking_' . $EM_Event->event_id);
?>
" />
<p class="em-booking-gateway" id="em-booking-gateway">
<label><?php
_e('Amount Paid', 'em-pro');
?>
</label>
<input type="text" name="payment_amount" id="em-payment-amount" value="<?php
if (!empty($_REQUEST['payment_amount'])) {
echo esc_attr($_REQUEST['payment_amount']);
}
?>
">
<?php
_e('Fully Paid', 'em-pro');
?>
<input type="checkbox" name="payment_full" id="em-payment-full" value="1"><br />
<em><?php
_e('If you check this as fully paid, and leave the amount paid blank, it will be assumed the full payment has been made.', 'em-pro');
?>
</em>
</p>
<?php
}
return;
}
示例12: em_content
/**
* Filters for page content and if an event replaces it with the relevant event data.
* @param $data
* @return string
*/
function em_content($content)
{
$events_page_id = get_option('dbem_events_page');
if (get_the_ID() == $events_page_id && $events_page_id != 0) {
global $wpdb, $EM_Event;
//TODO FILTER - filter em page content before placeholder replacing
//TODO any loop should put the current $EM_Event etc. into the global variable
//general defaults
$args = array('orderby' => get_option('dbem_events_default_orderby'), 'order' => get_option('dbem_events_default_order'), 'owner' => false, 'pagination' => 1);
if (!empty($_REQUEST['calendar_day'])) {
//Events for a specific day
$args['scope'] = $_REQUEST['calendar_day'];
$page = !empty($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 1;
$events = EM_Events::get(apply_filters('em_content_calendar_day_args', $args));
//Get events first, so we know how many there are in advance
if (count($events) > 1 || $page > 1 || get_option('dbem_display_calendar_day_single') == 1) {
$args['limit'] = get_option('dbem_events_default_limit');
$args['offset'] = $args['limit'] * ($page - 1);
$content = EM_Events::output($events, apply_filters('em_content_calendar_day_output_args', $args));
} elseif (count($events) == 1) {
$EM_Event = $events[0];
$content = $EM_Event->output_single();
} else {
$content = get_option('dbem_no_events_message');
}
} elseif (!empty($_REQUEST['location_id']) && is_numeric($_REQUEST['location_id'])) {
//Just a single location
$location = new EM_Location($_REQUEST['location_id']);
$content = $location->output_single();
} elseif (!empty($_REQUEST['event_id']) && is_numeric($_REQUEST['event_id'])) {
// single event page
$event = new EM_Event($_REQUEST['event_id']);
$content = $event->output_single();
} elseif (!empty($_REQUEST['bookings_id'])) {
//bookings page
} else {
// Multiple events page
$scope = !empty($_REQUEST['scope']) ? EM_Object::sanitize($_REQUEST['scope']) : "future";
//If we have a $_GET['page'] var, use it to calculate the offset/limit ratios (safer than offset/limit get vars)
$args['scope'] = $scope;
if (!empty($_REQUEST['category_id'])) {
$args['category'] = $_REQUEST['category_id'];
}
if (get_option('dbem_display_calendar_in_events_page')) {
$args['full'] = 1;
$args['long_events'] = get_option('dbem_full_calendar_long_events');
$content = EM_Calendar::output(apply_filters('em_content_calendar_args', $args));
} else {
$args['limit'] = get_option('dbem_events_default_limit');
$args['page'] = !empty($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 1;
/*calculate event list time range */
$time_limit = get_option('dbem_events_page_time_limit');
if (is_numeric($time_limit) && $time_limit > 0) {
$args['scope'] = date('Y-m-d') . "," . date('Y-m-t', strtotime('+' . ($time_limit - 1) . ' month'));
}
$content = EM_Events::output(apply_filters('em_content_events_args', $args));
}
}
//If disable rewrite flag is on, then we need to add a placeholder here
if (get_option('dbem_disable_title_rewrites') == 1) {
$content = str_replace('#_PAGETITLE', em_events_page_title(''), get_option('dbem_title_html')) . $content;
}
//TODO FILTER - filter em page content before display
return apply_filters('em_content', '<div id="em-wrapper">' . $content . '</div>');
}
return $content;
}
示例13: em_admin_email_test_ajax
function em_admin_email_test_ajax()
{
if (wp_verify_nonce($_REQUEST['_check_email_nonce'], 'check_email') && current_user_can('activate_plugins')) {
$subject = __("Events Manager Test Email", 'dbem');
$content = __('Congratulations! Your email settings work.', 'dbem');
$current_user = get_user_by('id', get_current_user_id());
$EM_Event = new EM_Event();
if ($EM_Event->email_send($subject, $content, $current_user->user_email)) {
$result = array('result' => true, 'message' => sprintf(__('Email sent succesfully to %s', 'dbem'), $current_user->user_email));
} else {
$result = array('result' => false, 'message' => __('Email not sent.', 'dbem') . " <ul><li>" . implode('</li><li>', $EM_Event->get_errors()) . '</li></ul>');
}
echo json_encode($result);
}
exit;
}
示例14: maybe_publish_location
/**
* Publish the location if the event has just been approved and the location is pending. We assume an editor published the event and approves the location too.
* @param EM_Event $EM_Event
*/
function maybe_publish_location($EM_Event)
{
//do a dirty update for location too if it's not published
if ($EM_Event->is_published() && !empty($EM_Event->location_id)) {
$EM_Location = $EM_Event->get_location();
if ($EM_Location->location_status !== 1) {
//let's also publish the location
$EM_Location->set_status(1, true);
}
}
}
示例15: get
/**
* Returns an array of EM_Location objects
* @param boolean $eventful
* @param boolean $return_objects
* @return array
*/
public static function get($args = array(), $count = false)
{
global $wpdb;
$events_table = EM_EVENTS_TABLE;
$locations_table = EM_LOCATIONS_TABLE;
$locations = array();
//Quick version, we can accept an array of IDs, which is easy to retrieve
if (self::array_is_numeric($args)) {
//Array of numbers, assume they are event IDs to retreive
//We can just get all the events here and return them
$sql = "SELECT * FROM {$locations_table} WHERE location_id=" . implode(" OR location_id=", $args);
$results = $wpdb->get_results($sql, ARRAY_A);
$events = array();
foreach ($results as $result) {
$locations[$result['location_id']] = new EM_Location($result);
}
return apply_filters('em_locations_get', $locations, $args);
//We return all the events matched as an EM_Event array.
} elseif (is_numeric($args)) {
//return an event in the usual array format
return apply_filters('em_locations_get', array(new EM_Location($args)), $args);
} elseif (is_array($args) && is_object(current($args)) && get_class(current($args)) == 'EM_Location') {
return apply_filters('em_locations_get', $args, $args);
}
//We assume it's either an empty array or array of search arguments to merge with defaults
$args = self::get_default_search($args);
$limit = $args['limit'] && is_numeric($args['limit']) ? "LIMIT {$args['limit']}" : '';
$offset = $limit != "" && is_numeric($args['offset']) ? "OFFSET {$args['offset']}" : '';
//Get the default conditions
$conditions = self::build_sql_conditions($args);
//Put it all together
$EM_Location = new EM_Location(0);
//Empty class for strict message avoidance
$fields = $locations_table . "." . implode(", {$locations_table}.", array_keys($EM_Location->fields));
$where = count($conditions) > 0 ? " WHERE " . implode(" AND ", $conditions) : '';
//Get ordering instructions
$EM_Event = new EM_Event();
//blank event for below
$accepted_fields = $EM_Location->get_fields(true);
$accepted_fields = array_merge($EM_Event->get_fields(true), $accepted_fields);
$orderby = self::build_sql_orderby($args, $accepted_fields, get_option('dbem_events_default_order'));
//Now, build orderby sql
$orderby_sql = count($orderby) > 0 ? 'ORDER BY ' . implode(', ', $orderby) : '';
$fields = $count ? $locations_table . '.location_id' : $locations_table . '.post_id';
if (EM_MS_GLOBAL) {
$selectors = $count ? 'COUNT(' . $locations_table . '.location_id)' : $locations_table . '.post_id, ' . $locations_table . '.blog_id';
} else {
$selectors = $count ? 'COUNT(' . $locations_table . '.location_id)' : $locations_table . '.post_id';
}
//Create the SQL statement and execute
$sql = "\r\n\t\t\tSELECT {$selectors} FROM {$locations_table}\r\n\t\t\tLEFT JOIN {$events_table} ON {$locations_table}.location_id={$events_table}.location_id\r\n\t\t\t{$where}\r\n\t\t\tGROUP BY {$locations_table}.location_id\r\n\t\t\t{$orderby_sql}\r\n\t\t\t{$limit} {$offset}\r\n\t\t";
//If we're only counting results, return the number of results
if ($count) {
return apply_filters('em_locations_get_array', count($wpdb->get_col($sql)), $args);
}
$results = $wpdb->get_results($sql, ARRAY_A);
//If we want results directly in an array, why not have a shortcut here?
if ($args['array'] == true) {
return apply_filters('em_locations_get_array', $results, $args);
}
if (EM_MS_GLOBAL) {
foreach ($results as $location) {
if (empty($location['blog_id'])) {
$location['blog_id'] = get_current_site()->blog_id;
}
$locations[] = em_get_location($location['post_id'], $location['blog_id']);
}
} else {
foreach ($results as $location) {
$locations[] = em_get_location($location['post_id'], 'post_id');
}
}
return apply_filters('em_locations_get', $locations, $args);
}