/** * Get the Export Data * * @access public * @since 1.4 * @return arr $data The data for the CSV file */ public function get_data() { global $wp_roles; $data = array(); $mdjm_roles = mdjm_get_roles(); $roles = array(); $offset = 30 * ($this->step - 1); foreach ($mdjm_roles as $role_id => $role_name) { $roles[] = $role_id; } $args = array('number' => 30, 'offset' => $offset, 'paged' => $this->step, 'role__in' => $roles); $employee_query = new WP_User_Query($args); $employees = $employee_query->get_results(); $i = 0; if ($employees) { foreach ($employees as $employee) { $events = mdjm_get_employee_events($employee->ID); $wages = 0; $paid = 0; $role_names = array(); foreach ($employee->roles as $role) { $role_names[] = translate_user_role($wp_roles->roles[$role]['name']); } $data[$i]['id'] = $employee->ID; $data[$i]['name'] = $employee->display_name; $data[$i]['email'] = $employee->user_email; $data[$i]['events'] = $events ? count($events) : 0; $data[$i]['roles'] = implode(', ', $role_names); if ($events) { foreach ($events as $event) { $event_wage = mdjm_get_employees_event_wage($event->ID, $employee->ID); $wages += $event_wage; if (!empty($event_wage) && 'paid' == mdjm_get_employees_event_payment_status($event->ID, $employee->ID)) { $paid += $wages; } } } $data[$i]['wages'] = mdjm_format_amount($wages); $data[$i]['paid'] = mdjm_format_amount($paid); $data[$i]['owed'] = mdjm_format_amount($wages - $paid); $i++; } } $data = apply_filters('mdjm_export_get_data', $data); $data = apply_filters('mdjm_export_get_data_' . $this->export_type, $data); return $data; }
/** * Customise the view filter counts * * @since 1.0 * @param arr $views Array of views * @return arr $views Filtered Array of views */ function mdjm_quote_view_filters($views) { // We only run this filter if the user has restrictive caps and the post type is mdjm-event if (!is_post_type_archive('mdjm-quotes') || mdjm_employee_can('list_all_quotes')) { return $views; } global $user_ID; $events = mdjm_get_employee_events($user_ID); $all = 0; if ($events) { foreach ($events as $event) { $quote = mdjm_get_event_quote_id($event->ID); $quote_status = get_post_status($quote); if (!isset($status[$quote_status])) { $status[$quote_status] = 1; } else { $status[$quote_status]++; } $all++; } } // The All filter $views['all'] = preg_replace('/\\(.+\\)/U', '(' . mdjm_count_employee_events() . ')', $views['all']); $event_statuses = mdjm_all_event_status(); foreach ($event_statuses as $status => $label) { $events = mdjm_get_employee_events('', array('post_status' => $status)); if (empty($events)) { if (isset($views[$status])) { unset($views[$status]); } continue; } $views[$status] = preg_replace('/\\(.+\\)/U', '(' . count($events) . ')', $views[$status]); } // Only show the views we want foreach ($views as $status => $link) { if ($status != 'all' && !array_key_exists($status, $event_stati)) { unset($views[$status]); } } return $views; }
/** * Update the email content field with the selected template. * * * @since 1.3 * @return void */ function mdjm_user_events_dropdown_ajax() { $result['event_list'] = '<option value="0">' . __('Select an Event', 'mobile-dj-manager') . '</option>'; if (!empty($_POST['recipient'])) { $statuses = 'any'; if (mdjm_is_employee($_POST['recipient'])) { if (mdjm_get_option('comms_show_active_events_only')) { $statuses = array('post_status' => mdjm_active_event_statuses()); } $events = mdjm_get_employee_events($_POST['recipient'], $statuses); } else { if (mdjm_get_option('comms_show_active_events_only')) { $statuses = mdjm_active_event_statuses(); } $events = mdjm_get_client_events($_POST['recipient'], $statuses); } if ($events) { foreach ($events as $event) { $result['event_list'] .= '<option value="' . $event->ID . '">'; $result['event_list'] .= mdjm_get_event_date($event->ID) . ' '; $result['event_list'] .= __('from', 'mobile-dj-manager') . ' '; $result['event_list'] .= mdjm_get_event_start($event->ID) . ' '; $result['event_list'] .= '(' . mdjm_get_event_status($event->ID) . ')'; $result['event_list'] .= '</option>'; } } } $result['type'] = 'success'; $result = json_encode($result); echo $result; die; }
/** * Retrieve events filtered by employee, client, date or status. * * @since 1.4 * @return void */ public function list_events() { $response = array(); if (!mdjm_employee_can('read_events', $this->user_id)) { $this->no_permsission(); } if (!isset($this->request['employee_id']) && !mdjm_employee_can('read_events_all', $this->user_id)) { $this->no_permsission(); } do_action('mdjm_before_api_event_list', $this); if (isset($this->request['employee_id'])) { $events = mdjm_get_employee_events($this->request['employee_id']); } elseif (isset($this->request['client_id'])) { $events = mdjm_get_client_events($this->request['client_id']); } elseif (isset($this->request['date'])) { $events = mdjm_get_events_by_date($this->request['date']); } elseif (isset($this->request['status'])) { $events = mdjm_get_events_by_status($this->request['status']); } else { $events = mdjm_get_events(); } if (!$events) { $error = array(); $error['error'] = sprintf(__('No %s found.', 'mobile-dj-manager'), mdjm_get_label_plural(true)); $this->data = $error; $this->output(); } $response['events'] = array(); $i = 0; foreach ($events as $event) { $response['events'][$event->ID] = mdjm_get_event_data($event->ID); $i++; } $response['count'] = $i; $this->data = array_merge($this->data, $response); do_action('mdjm_after_api_event_list', $this); $this->output(); }
/** * Retrieve a list of the employee's clients. * * @since 1.3 * @param int $employee The user ID of the employee. * @param bool $active_only True to only query active clients, false for all. * @param str $return Return resultset as WP_User OBJECTS or ARRAY of user ID's * @return arr|bool Array of client user ID's or */ function mdjm_get_employee_clients($employee_id = '', $active_only = true, $return = 'OBJECT') { $employee_id = !empty($employee_id) ? $employee_id : get_current_user_id(); $args['post_status'] = !empty($active_only) ? 'any' : mdjm_active_event_statuses(); // If we only want active events set an extra check for the event date. /*if ( ! empty( $active_only ) ) { $args['date'] = date( 'Y-m-d'); $args['date_compare'] = '>='; }*/ $events = mdjm_get_employee_events($employee_id, $args); if (!$events) { return false; } $clients = array(); // Loop through the events and retrieve the client. foreach ($events as $event) { $clients[] = mdjm_get_event_client_id($event->ID); } if (empty($clients)) { return false; } $clients = array_unique($clients); $clients = apply_filters('mdjm_get_employee_clients', $clients, $employee_id); if ($return != 'ARRAY') { foreach ($clients as $client) { $client_objects[] = get_userdata($client); } $clients = $client_objects; } return $clients; }
/** * Retrieve today's events. * * @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_todays_events($employee_id = '') { $employee_id = !empty($employee_id) ? $employee_id : get_current_user_id(); $args = array('post_status' => mdjm_active_event_statuses(), 'posts_per_page' => 1, 'meta_key' => '_mdjm_event_date', 'orderby' => 'meta_value', 'order' => 'DESC'); $event = mdjm_get_employee_events($employee_id, $args); if (empty($event)) { return false; } return $event[0]; }