/**
  * Retrieve addons filtered by package, employee, event month, event type or category.
  *
  * @since	1.4
  * @return	void
  */
 public function list_addons()
 {
     $response = array();
     $package_addons = array();
     $addons = array();
     do_action('mdjm_before_api_list_addons', $this);
     if (isset($this->request['package'])) {
         if (!is_numeric($this->request['package'])) {
             // Using name or slug
             $package = mdjm_get_package_by('name', $this->request['package']);
             if ($package) {
                 $package_id = $package->ID;
             }
         } else {
             $package_id = $this->request['package'];
         }
         if (!empty($package_id)) {
             $package_addons = mdjm_get_package_addons($package_id);
             if ($package_addons) {
                 foreach ($package_addons as $package_addon) {
                     $all_addons[] = mdjm_get_addon($package_addon);
                 }
             }
         }
     } else {
         $all_addons = mdjm_get_addons(array('suppress_filters' => false));
     }
     if (!empty($all_addons)) {
         foreach ($all_addons as $addon) {
             if (isset($this->request['employee_id']) && !mdjm_employee_has_addon($addon->ID, $this->request['employee_id'])) {
                 continue;
             }
             if (isset($this->request['event_month']) && !mdjm_addon_is_available_for_event_date($addon->ID, $this->request['event_month'])) {
                 continue;
             }
             if (isset($this->request['event_type']) && !mdjm_addon_is_available_for_event_type($addon->ID, $this->request['event_type'])) {
                 continue;
             }
             $addons[] = $addon->ID;
         }
     }
     if (empty($addons)) {
         $error = array();
         $error['error'] = __('No addons found.', 'mobile-dj-manager');
         $this->data = $error;
         $this->output();
     }
     $response['addons'] = array();
     $i = 0;
     foreach ($addons as $addon) {
         $response['addons'][$addon] = mdjm_get_addon_data($addon);
         $i++;
     }
     $response['count'] = $i;
     $this->data = array_merge($this->data, $response);
     do_action('mdjm_after_api_list_addons', $this);
     $this->output();
 }
Example #2
0
/**
 * Addons List Shortcode.
 * 
 * @param	arr		$atts		Shortcode attributes. See $atts.
 * @param	str|int	$filter_value	The value to which to filter $filter_by. Default false (all).
 * @param	str		$list			List type to display. li for bulleted. Default p.
 * @param	bool	$cost			Whether or not display the price. Default false.
 *
 *
 */
function mdjm_shortcode_addons_list($atts)
{
    global $post;
    $atts = shortcode_atts(array('filter_by' => false, 'filter_value' => false, 'list' => 'p', 'desc' => false, 'desc_length' => mdjm_get_option('package_excerpt_length', 55), 'cost' => false, 'addon_class' => false, 'cost_class' => false, 'desc_class' => false), $atts, 'mdjm-addons');
    ob_start();
    $output = '';
    if (!empty($post) && 'mdjm-package' == get_post_type($post->ID)) {
        $package_addons = mdjm_get_package_addons($post->ID);
        $addons = array();
        foreach ($package_addons as $package) {
            $addons[] = mdjm_get_addon($package);
        }
    } elseif (!empty($atts['filter_by']) && !empty($atts['filter_value']) && $atts['filter_by'] != 'false' && $atts['filter_value'] != 'false') {
        // Filter addons by user
        if ($atts['filter_by'] == 'category') {
            $addons = mdjm_get_addons_in_category($atts['filter_value']);
        } elseif ($atts['filter_by'] == 'package') {
            if (!is_numeric($atts['filter_value'])) {
                // For backwards compatibility
                $package = mdjm_get_package_by('slug', $atts['filter_value']);
                if ($package) {
                    $atts['filter_value'] = $package->ID;
                }
            }
            $package_addons = mdjm_get_package_addons($atts['filter_value']);
            $addons = array();
            foreach ($package_addons as $package) {
                $addons[] = mdjm_get_addon($package);
            }
        } elseif ($atts['filter_by'] == 'user') {
            $addons = mdjm_get_addons_by_employee($atts['filter_value']);
        }
    } else {
        $addons = mdjm_get_addons();
    }
    /**
     * Output the results
     */
    if (!$addons) {
        $output .= '<p>' . __('No addons available', 'mobile-dj-manager') . '</p>';
    } else {
        // Check to start bullet list
        if ($atts['list'] == 'li') {
            $output .= '<ul>';
        }
        foreach ($addons as $addon) {
            // Output the remaining addons
            if (!empty($atts['list'])) {
                $output .= '<' . $atts['list'] . '>';
            }
            if (!empty($atts['addon_class']) && $atts['addon_class'] != 'false') {
                $output = '<span class="' . $atts['addon_class'] . '">';
            }
            $output .= $addon->post_title;
            if (!empty($atts['addon_class']) && $atts['addon_class'] != 'false') {
                $output = '</span>';
            }
            $cost = mdjm_get_addon_price($addon->ID);
            if (!empty($atts['cost']) && $atts['cost'] != 'false' && !empty($cost)) {
                if (!empty($atts['cost_class']) && $atts['cost_class'] != 'false') {
                    $output = '<span class="' . $atts['cost_class'] . '">';
                }
                $output .= '&nbsp;&ndash;&nbsp;' . mdjm_currency_filter(mdjm_format_amount($cost));
                if (!empty($atts['cost_class']) && $atts['cost_class'] != 'false') {
                    $output = '</span>';
                }
            }
            $desc = mdjm_get_addon_excerpt($addon->ID, $atts['desc_length']);
            if (!empty($atts['desc']) && $atts['desc'] != 'false' && !empty($desc)) {
                $output .= '<br />';
                if (!empty($atts['desc_class']) && $atts['desc_class'] != 'false') {
                    $output = '<span class="' . $atts['desc_class'] . '">';
                } else {
                    $output .= '<span style="font-style: italic; font-size: smaller;">';
                }
                $output .= $desc;
                $output .= '</span>';
            }
            if (!empty($atts['list'])) {
                $output .= '</' . $atts['list'] . '>';
            }
        }
        // Check to end bullet list
        if ($atts['list'] == 'li') {
            $output .= '</ul>';
        }
    }
    echo apply_filters('mdjm_shortcode_addons_list', $output);
    return ob_get_clean();
}