/** * Create the HTML output for the events column * * @param obj $item The object array for the current item * * @return str The HTML output for the checkbox column */ public function column_events($item) { $next_event = mdjm_get_employees_next_event($item->ID); $total_events = mdjm_count_employee_events($item->ID); printf(__('Next: %s', 'mobile-dj-manager'), !empty($next_event) ? '<a href="' . get_edit_post_link($next_event->ID) . '">' . mdjm_format_short_date(get_post_meta($next_event->ID, '_mdjm_event_date', true)) . '</a>' : __('None', 'mobile-dj-manager')); echo '<br />'; printf(__('Total: %s', 'mobile-dj-manager'), !empty($total_events) ? '<a href="' . admin_url('edit.php?s&post_type=mdjm-event&post_status=all' . '&action=-1&mdjm_filter_date=0&mdjm_filter_type&mdjm_filter_employee=' . $item->ID . '&mdjm_filter_client=0&filter_action=Filter&paged=1&action2=-1') . '">' . $total_events . '</a>' : '0'); }
/** * Retrieve an employee. * * @since 1.4 * @return void */ public function get_employee() { global $wp_roles; if (!isset($this->request['employee_id']) && !isset($this->request['employee_email'])) { $this->missing_params('employee_id or employee_email'); } do_action('mdjm_before_api_get_employee', $this); if (isset($this->request['employee_email']) && !isset($this->request['employee_id'])) { $field = 'email'; $value = $this->request['employee_email']; } else { $field = 'id'; $value = $this->request['employee_id']; } $employee = get_user_by($field, $value); if (!$employee) { $response['error'] = __('Employee could not be found.', 'mobile-dj-manager'); $this->data = array_merge($response, $this->data); $this->output(); } if (!mdjm_is_employee($employee->ID)) { $response['error'] = __('Error retrieving employee.', 'mobile-dj-manager'); $this->data = array_merge($response, $this->data); $this->output(); } $events = array(); $roles = array(); $mdjm_roles = MDJM()->roles->get_roles(); $employee_events = mdjm_get_employee_events($employee->ID); $next_event = mdjm_get_employees_next_event($employee->ID); $i = 0; if ($employee_events) { foreach ($employee_events as $event) { $events[$event->ID] = get_post_meta($event->ID, '_mdjm_event_date', true); $i++; } } if (!empty($employee->roles)) { foreach ($employee->roles as $role) { if (array_key_exists($role, $mdjm_roles)) { $roles[$role] = $mdjm_roles[$role]; } } } $response['employee'] = array('ID' => $employee->ID, 'first_name' => $employee->first_name, 'last_name' => $employee->last_name, 'email' => $employee->user_email, 'roles' => $roles, 'last_login' => $employee->last_login, 'events' => $events, 'next_event' => array('id' => !empty($next_event) ? $next_event->ID : '', 'date' => !empty($next_event) ? get_post_meta($next_event->ID, '_mdjm_event_date', true) : ''), 'total_events' => $i); $this->data = array_merge($this->data, $response); do_action('mdjm_after_api_get_employee', $this); $this->output(); }
/** * Retrieve the next event. * If the current user is not an MDJM admin, only list their own event. * * @since 1.3 * @param int $employee_id User ID of employee. Leave empty to check for all employees. * @return obj Events WP_Post object. */ function mdjm_get_next_event($employee_id = '') { if (!empty($employee_id) && !mdjm_employee_can('manage_all_events') && $employee_id != get_current_user_id()) { wp_die('<h1>' . __('Cheatin’ uh?') . '</h1>' . '<p>' . sprintf(__('Your %s permissions do not permit you to search all %s!', 'mobile-dj-manager'), mdjm_get_label_singular(true), mdjm_get_label_plural(true)) . '</p>', 403); } if (!empty($employee_id) || !mdjm_employee_can('manage_all_events')) { $employee_id = !empty($employee_id) ? $employee_id : get_current_user_id(); $event = mdjm_get_employees_next_event($employee_id); } else { $args = array('post_status' => mdjm_active_event_statuses(), 'posts_per_page' => 1, 'meta_key' => '_mdjm_event_date', 'orderby' => 'meta_value', 'order' => 'ASC'); $event = mdjm_get_events($args); if (!empty($event)) { $event = $event[0]; } } if (empty($event)) { return false; } return $event; }