/**
  * Get the Export Data
  *
  * @access	public
  * @since	1.4
  * @return	arr		$data	The data for the CSV file
  */
 public function get_data()
 {
     $data = array();
     // Export all events
     $offset = 30 * ($this->step - 1);
     $args = array('post_type' => 'mdjm-event', 'posts_per_page' => 30, 'offset' => $offset, 'paged' => $this->step, 'post_status' => $this->status, 'order' => 'ASC', 'orderby' => 'ID');
     if (!empty($this->start) || !empty($this->end)) {
         $args['meta_query'] = array(array('key' => '_mdjm_event_date', 'value' => array(date('Y-m-d', strtotime($this->start)), date('Y-m-d', strtotime($this->end))), 'compare' => 'BETWEEN', 'type' => 'DATE'));
     }
     $events = get_posts($args);
     if ($events) {
         $i = 0;
         foreach ($events as $event) {
             $event_data = mdjm_get_event_data($event->ID);
             $employees = array();
             $package = '';
             $addons = array();
             if (!empty($event_data['client'])) {
                 $client = '(' . $event_data['client'] . ') ' . mdjm_get_client_display_name($event_data['client']);
             }
             if (!empty($event_data['employees']['primary_employee'])) {
                 $primary_employee = '(' . $event_data['employees']['primary_employee'] . ') ' . mdjm_get_employee_display_name($event_data['employees']['primary_employee']);
             }
             if (!empty($event_data['employees']['employees'])) {
                 foreach ($event_data['employees']['employees'] as $employee_id => $employee_data) {
                     $employees[] = '(' . $employee_id . ') ' . mdjm_get_employee_display_name($employee_id);
                 }
             }
             if (!empty($event_data['equipment']['package'])) {
                 $package = $event_data['equipment']['package'];
             }
             if (!empty($event_data['equipment']['addons'])) {
                 foreach ($event_data['equipment']['addons'] as $addon_id) {
                     $addons[] = mdjm_get_addon_name($addon_id);
                 }
             }
             $data[$i] = array('id' => $event->ID, 'event_id' => mdjm_get_event_contract_id($event->ID), 'date' => mdjm_format_short_date($event_data['date']), 'status' => $event_data['status'], 'client' => $client, 'primary_employee' => '(' . $event_data['employees']['primary_employee'] . ') ' . mdjm_get_client_display_name($event_data['employees']['primary_employee']), 'employees' => implode(',', $employees), 'package' => $package, 'addons' => implode(', ', $addons), 'cost' => mdjm_format_amount($event_data['cost']['cost']), 'deposit' => mdjm_format_amount($event_data['cost']['deposit']), 'deposit_status' => $event_data['cost']['deposit_status'], 'balance' => mdjm_format_amount($event_data['cost']['balance']), 'balance_status' => $event_data['cost']['balance_status'], 'start_time' => mdjm_format_time($event_data['start_time']), 'end_time' => mdjm_format_time($event_data['end_time']), 'end_date' => mdjm_format_short_date($event_data['end_date']), 'setup_date' => mdjm_format_short_date($event_data['setup_date']), 'setup_time' => mdjm_format_time($event_data['setup_time']), 'duration' => $event_data['duration'], 'contract' => $event_data['contract'], 'contract_status' => $event_data['contract_status'], 'playlist_enabled' => $event_data['playlist']['playlist_enabled'], 'playlist_status' => $event_data['playlist']['playlist_status'], 'source' => $event_data['source'], 'converted' => $event_data['contract_status'], 'venue' => $event_data['venue']['name'], 'address' => !empty($event_data['venue']['address']) ? implode(', ', $event_data['venue']['address']) : '');
             $i++;
         }
         $data = apply_filters('mdjm_export_get_data', $data);
         $data = apply_filters('mdjm_export_get_data_' . $this->export_type, $data);
         return $data;
     }
     return false;
 }
 /**
  * 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();
 }