/** * Retrieve data for a package. * * @since 1.4 * @param int|obj $package The package WP_Post object, or post ID. * @return arr */ function mdjm_get_package_data($package) { $package_id = is_object($package) ? $package->ID : $package; $events = mdjm_get_package_event_types($package_id); $users = mdjm_get_employees_with_package($package_id); $items = mdjm_get_package_addons($package_id); $cats = get_the_terms($package_id, 'package-category'); $employees = array(); $months = array(); $addons = array(); $categories = array(); if (!mdjm_package_is_restricted_by_date($package_id)) { $months[] = __('Always', 'mobile-dj-manager'); } else { $availability = mdjm_get_package_months_available($package_id); if (!$availability) { $months[] = __('Always', 'mobile-dj-manager'); } else { $i = 0; foreach ($availability as $month) { $months[] = mdjm_month_num_to_name($availability[$i]); $i++; } } } if (in_array('all', $users)) { $employees[] = __('All Employees', 'mobile-dj-manager'); } else { foreach ($users as $employee_id) { if ('all' == $employee_id) { continue; } $employees[] = array($employee_id => mdjm_get_employee_display_name($employee_id)); } } if (in_array('all', $events)) { $event_types = sprintf(__('All %s Types', 'mobile-dj-manager'), mdjm_get_label_singular()); } else { foreach ($events as $event) { $term = get_term($event, 'event-types'); if (!empty($term)) { $event_types[] = $term->name; } } } if (mdjm_package_has_variable_prices($package_id)) { $range = mdjm_get_package_price_range($package_id); $price = mdjm_get_currency() . ' ' . mdjm_format_amount($range['low']) . ' — ' . mdjm_format_amount($range['high']); } else { $price = mdjm_get_currency() . ' ' . mdjm_format_amount(mdjm_get_package_price($package_id)); } if ($items) { foreach ($items as $addon_id) { $addons[] = array($addon_id => mdjm_get_addon_name($addon_id)); } } if ($cats) { foreach ($cats as $cat) { $categories[] = $cat->name; } } $package_data = array('name' => mdjm_get_package_name($package_id), 'categories' => get_the_term_list($package_id, 'package-category', '', ', ', ''), 'availability' => array('months' => $months, 'employees' => $employees, 'event_types' => $event_types), 'price' => $price, 'items' => $addons, 'usage' => array('events' => mdjm_count_events_with_package($package_id))); return apply_filters('mdjm_get_package_data', $package_data); }
/** * Define the data to be displayed in each of the custom columns for the Package post types * * @since 1.4 * @param str $column_name The name of the column to display * @param int $post_id The current post ID * @return */ function mdjm_package_posts_custom_column($column_name, $post_id) { global $post; switch ($column_name) { // Items case 'items': $items = mdjm_get_package_addons($post_id); if ($items) { $i = 0; foreach ($items as $item) { echo '<a href="' . admin_url("post.php?post={$item}&action=edit") . '">' . mdjm_get_addon_name($item) . '</a>'; $i++; if ($i < count($items)) { echo '<br />'; } } } break; // Category // Category case 'package_category': echo get_the_term_list($post_id, 'package-category', '', ', ', ''); break; // Availability // Availability case 'availability': $output = array(); if (!mdjm_package_is_restricted_by_date($post_id)) { $output[] = __('Always', 'mobile-dj-manager'); } else { $availability = mdjm_get_package_months_available($post_id); if (!$availability) { $output[] = __('Always', 'mobile-dj-manager'); } else { $i = 0; foreach ($availability as $month) { $output[] = mdjm_month_num_to_name($availability[$i]); $i++; } } } echo implode(', ', $output); break; // Event Types // Event Types case 'event_types': $output = array(); $event_label = mdjm_get_label_singular(); $event_types = mdjm_get_package_event_types($post_id); if (in_array('all', $event_types)) { $output[] = sprintf(__('All %s Types', 'mobile-dj-manager'), $event_label); } else { foreach ($event_types as $event_type) { $term = get_term($event_type, 'event-types'); if (!empty($term)) { $output[] = $term->name; } } } echo implode(', ', $output); break; // Employees // Employees case 'employees': $employees = mdjm_get_employees_with_package($post_id); $output = array(); if (in_array('all', $employees)) { $output[] .= __('All Employees', 'mobile-dj-manager'); } else { foreach ($employees as $employee) { if ('all' == $employee) { continue; } $output[] = '<a href="' . get_edit_user_link($employee) . '">' . mdjm_get_employee_display_name($employee) . '</a>'; } } echo implode('<br />', $output); break; // Price // Price case 'price': if (mdjm_package_has_variable_prices($post_id)) { $range = mdjm_get_package_price_range($post_id); echo mdjm_currency_filter(mdjm_format_amount($range['low'])); echo ' — '; echo mdjm_currency_filter(mdjm_format_amount($range['high'])); } else { echo mdjm_currency_filter(mdjm_format_amount(mdjm_get_package_price($post_id))); } break; case 'usage': $count = mdjm_count_events_with_package($post_id); echo $count . ' ' . _n(mdjm_get_label_singular(), mdjm_get_label_plural(), $count, 'mobile-dj-manager'); break; } // switch }