/**
  * Renders a dropdown list of packages.
  *
  * @since	1.3.7
  * @param	arr		$args	@see $default
  * @return	str
  */
 public function packages_dropdown($args = array())
 {
     $defaults = array('name' => '_mdjm_event_package', 'id' => '', 'class' => '', 'selected' => '', 'show_option_none' => __('No Package', 'mobile-dj-manager'), 'show_option_all' => false, 'chosen' => false, 'employee' => false, 'event_type' => false, 'event_date' => false, 'placeholder' => __('Select a Package', 'mobile-dj-manager'), 'multiple' => false, 'cost' => true, 'titles' => false, 'options_only' => false, 'blank_first' => true, 'data' => array());
     $args = wp_parse_args($args, $defaults);
     $options = array();
     $args['id'] = !empty($args['id']) ? $args['id'] : $args['name'];
     $packages = mdjm_get_packages();
     if ($packages) {
         foreach ($packages as $package) {
             if ($args['employee']) {
                 if (!mdjm_employee_has_package($package->ID, $args['employee'])) {
                     continue;
                 }
             }
             if ($args['event_type']) {
                 if (!mdjm_package_is_available_for_event_type($package->ID, $args['event_type'])) {
                     continue;
                 }
             }
             if ($args['event_date']) {
                 if (!mdjm_package_is_available_for_event_date($package->ID, $args['event_date'])) {
                     continue;
                 }
             } else {
                 $args['event_date'] = NULL;
             }
             $price = '';
             if ($args['cost'] == true) {
                 $price .= ' - ' . mdjm_currency_filter(mdjm_format_amount(mdjm_get_package_price($package->ID, $args['event_date'])));
             }
             $args['options'][$package->ID] = $package->post_title . '' . $price;
             if ($args['titles']) {
                 $titles[$package->ID] = mdjm_get_package_excerpt($package->ID);
             }
         }
     }
     if (empty($args['options'])) {
         $args['placeholder'] = __('No Packages Available', 'mobile-dj-manager');
     }
     if (!empty($titles)) {
         $args['titles'] = $titles;
     }
     $output = $this->select($args);
     return $output;
 }
 /**
  * Retrieve packages filtered by employee, event month, event type or category.
  *
  * @since	1.4
  * @return	void
  */
 public function list_packages()
 {
     $response = array();
     $packages = array();
     do_action('mdjm_before_api_list_packages', $this);
     $all_packages = mdjm_get_packages(array('suppress_filters' => false));
     if ($all_packages) {
         foreach ($all_packages as $package) {
             if (isset($this->request['employee_id']) && !mdjm_employee_has_package($package->ID, $this->request['employee_id'])) {
                 continue;
             }
             if (isset($this->request['event_month']) && !mdjm_package_is_available_for_event_date($package->ID, $this->request['event_month'])) {
                 continue;
             }
             if (isset($this->request['event_type']) && !mdjm_package_is_available_for_event_type($package->ID, $this->request['event_type'])) {
                 continue;
             }
             $packages[] = $package->ID;
         }
     }
     if (empty($packages)) {
         $error = array();
         $error['error'] = __('No packages found.', 'mobile-dj-manager');
         $this->data = $error;
         $this->output();
     }
     $response['packages'] = array();
     $i = 0;
     foreach ($packages as $package) {
         $response['packages'][$package] = mdjm_get_package_data($package);
         $i++;
     }
     $response['count'] = $i;
     $this->data = array_merge($this->data, $response);
     do_action('mdjm_after_api_list_packages', $this);
     $this->output();
 }