/**
  * 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;
 }
Example #2
0
/**
 * 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];
}