/** * Retrieve a client. * * @since 1.4 * @return void */ public function get_client() { $response = array(); if (!isset($this->request['client_id']) && !isset($this->request['client_email'])) { $this->missing_params('client_id or client_email'); } do_action('mdjm_before_api_get_client', $this); if (isset($this->request['client_email']) && !isset($this->request['client_id'])) { $field = 'email'; $value = $this->request['client_email']; } else { $field = 'id'; $value = $this->request['client_id']; } $client = get_user_by($field, $value); if (!user_can($client->ID, 'client') && !user_can($client->ID, 'inactive_client')) { $response['error'] = __('Error retrieving client.', 'mobile-dj-manager'); $this->data = array_merge($response, $this->data); $this->output(); } if (!$client) { $response['error'] = __('Client could not be found.', 'mobile-dj-manager'); $this->data = array_merge($response, $this->data); $this->output(); } $events = array(); $client_events = mdjm_get_client_events($client->ID); $next_event = mdjm_get_clients_next_event($client->ID); if ($client_events) { foreach ($client_events as $event) { $events[$event->ID] = get_post_meta($event->ID, '_mdjm_event_date', true); } } $response['client'] = array('ID' => $client->ID, 'first_name' => $client->first_name, 'last_name' => $client->last_name, 'email' => $client->user_email, 'last_login' => $client->last_login, 'events' => $events, 'next_event' => array('id' => !empty($next_event) ? $next_event[0]->ID : '', 'date' => !empty($next_event) ? get_post_meta($next_event[0]->ID, '_mdjm_event_date', true) : '')); $this->data = array_merge($this->data, $response); do_action('mdjm_after_api_get_client', $this); $this->output(); }
/** * Create the HTML output for the next event column * * @param obj $item The object array for the current item * * @return str The HTML output for the next event column */ public function column_next($item) { $next = mdjm_get_clients_next_event($item->ID); if (!empty($next)) { echo '<a href="' . get_edit_post_link($next[0]->ID) . '">' . mdjm_get_event_date($next[0]->ID) . '</a>'; } else { echo __('N/A', 'mobile-dj-manager'); } }
/** * Listen for event status changes and update the client status. * * @since 1.3.7 * @param bool $result True if the event status change was successful, false if not * @param int $event_id * @return void */ function mdjm_set_client_status_inactive($result, $event_id) { if (!mdjm_get_option('set_client_inactive')) { return; } if (!$result) { return; } $client_id = mdjm_get_event_client_id($event_id); if (empty($client_id)) { return; } $next_event = mdjm_get_clients_next_event($client_id); if (!$next_event) { mdjm_update_client_status($client_id, 'inactive'); } }
/** * MDJM Quote Shortcode. * * Displays the online quotation to the client. * * @since 1.3 * @param arr $atts Arguments passed with the shortcode * @return string */ function mdjm_shortcode_quote($atts) { $atts = shortcode_atts(array('button_text' => sprintf(__('Book this %s', 'mobile-dj-manager'), mdjm_get_label_singular())), $atts, 'mdjm-quote'); $event_id = ''; if (!empty($_GET['event_id'])) { $event_id = $_GET['event_id']; } else { $next_event = mdjm_get_clients_next_event(get_current_user_id()); if ($next_event) { $event_id = $next_event[0]->ID; } } if (isset($event_id) && mdjm_event_exists($event_id)) { if (is_user_logged_in()) { global $mdjm_event, $mdjm_quote_button_atts; $mdjm_quote_button_atts = $atts; $mdjm_event = new MDJM_Event($event_id); ob_start(); if ($mdjm_event) { // Some verification if (get_current_user_id() != $mdjm_event->client) { mdjm_get_template_part('quote', 'noevent'); } else { mdjm_get_template_part('quote'); } $output = mdjm_do_content_tags(ob_get_contents(), $mdjm_event->ID, $mdjm_event->client); } else { mdjm_get_template_part('quote', 'noevent'); $output = mdjm_do_content_tags(ob_get_contents(), '', get_current_user_id()); } ob_get_clean(); // Reset global var $mdjm_event = ''; return $output; } else { echo mdjm_login_form(mdjm_get_current_page_url()); } } else { ob_start(); mdjm_get_template_part('quote', 'noevent'); $output = mdjm_do_content_tags(ob_get_contents(), '', get_current_user_id()); ob_get_clean(); } }