/** * Format the playlist results for emailing/printing. * * @since 1.3 * @param int $event_id The event ID to retrieve the playlist for. * @param str $orderby Which field to order the playlist entries by. * @param str $order Order ASC or DESC. * @param int $repeat_headers Repeat the table headers after this many rows. * @param bool $hide_empty If displaying by category do we hide empty categories? * @return str $results Output of playlist entries. */ function mdjm_format_playlist_content($event_id, $orderby = 'category', $order = 'ASC', $hide_empty = true, $repeat_headers = 0) { global $current_user; $mdjm_event = mdjm_get_event($event_id); // Obtain results ordered by category if ($orderby == 'category') { $playlist = mdjm_get_playlist_by_category($event_id, array('hide_empty' => $hide_empty)); if ($playlist) { foreach ($playlist as $cat => $entries) { foreach ($entries as $entry) { $entry_data = mdjm_get_playlist_entry_data($entry->ID); $results[] = array('ID' => $entry->ID, 'event' => $event_id, 'artist' => stripslashes($entry_data['artist']), 'song' => stripslashes($entry_data['song']), 'added_by' => stripslashes($entry_data['added_by']), 'category' => $cat, 'notes' => stripslashes($entry_data['djnotes']), 'date' => mdjm_format_short_date($entry->post_date)); } } } } else { $args = array('orderby' => $orderby == 'date' ? 'post_date' : 'meta_value', 'order' => $order, 'meta_key' => $orderby == 'date' ? '' : '_mdjm_playlist_entry_' . $orderby); $entries = mdjm_get_playlist_entries($event_id, $args); if ($entries) { foreach ($entries as $entry) { $entry_data = mdjm_get_playlist_entry_data($entry->ID); $categories = wp_get_object_terms($entry->ID, 'playlist-category'); if (!empty($categories)) { $category = $categories[0]->name; } $results[] = array('ID' => $entry->ID, 'event' => $event_id, 'artist' => stripslashes($entry_data['artist']), 'song' => stripslashes($entry_data['song']), 'added_by' => stripslashes($entry_data['added_by']), 'category' => !empty($category) ? $category : '', 'notes' => stripslashes($entry_data['djnotes']), 'date' => mdjm_format_short_date($entry->post_date)); } } } // Build out the formatted display if (!empty($results)) { $i = 0; $output = '<p>' . sprintf(__('Hey %s', 'mobile-dj-manager'), $current_user->first_name) . '</p>' . "\n"; $output .= '<p>' . __('Here is the playlist you requested...', 'mobile-dj-manager') . '</p>' . "\n"; $output .= '<p>' . __('Client Name', 'mobile-dj-manager') . ': ' . mdjm_get_client_display_name($mdjm_event->client) . '<br />' . "\n" . __('Event Date', 'mobile-dj-manager') . ': ' . mdjm_get_event_long_date($mdjm_event->ID) . '<br />' . "\n" . __('Event Type', 'mobile-dj-manager') . ': ' . mdjm_get_event_type($mdjm_event->ID) . '<br />' . "\n" . __('Songs in Playlist', 'mobile-dj-manager') . ': ' . count($results) . '<br />' . "\n" . '</p>'; $output .= '<hr />' . "\n"; $headers = '<tr style="height: 30px">' . "\n" . '<td style="width: 15%"><strong>' . __('Song', 'mobile-dj-manager') . '</strong></td>' . "\n" . '<td style="width: 15%"><strong>' . __('Artist', 'mobile-dj-manager') . '</strong></td>' . "\n" . '<td style="width: 15%"><strong>' . __('Category', 'mobile-dj-manager') . '</strong></td>' . "\n" . '<td style="width: 40%"><strong>' . __('Notes', 'mobile-dj-manager') . '</strong></td>' . "\n" . '<td style="width: 15%"><strong>' . __('Added By', 'mobile-dj-manager') . '</strong></td>' . "\n" . '</tr>' . "\n"; $output .= '<table width="90%" border="0" cellpadding="0" cellspacing="0">' . "\n"; $output .= $headers; foreach ($results as $result) { if ($repeat_headers > 0 && $i == $repeat_headers) { $output .= '<tr>' . "\n" . '<td colspan="5"> </td>' . "\n" . '</tr>' . "\n" . $headers; $i = 0; } if (is_numeric($result['added_by'])) { $user = get_userdata($result['added_by']); $name = $user->display_name; } else { $name = $result['added_by']; } $output .= '<tr>' . "\n" . '<td>' . stripslashes($result['song']) . '</td>' . "\n" . '<td>' . stripslashes($result['artist']) . '</td>' . "\n" . '<td>' . stripslashes($result['category']) . '</td>' . "\n" . '<td>' . stripslashes($result['notes']) . '</td>' . "\n" . '<td>' . stripslashes($name) . '</td>' . "\n" . '</tr>' . "\n"; $i++; } $output .= '</table>' . "\n"; } else { $output = '<p>' . __('The playlist for this event does not contain any entries!', 'mobile-dj-manager') . '</p>' . "\n"; } return $output; }
/** * Retrieve the entries for this playlist. * * @since 1.3 * @param int $per_page The number of items to display per page * @param int $page_num The current page number * @return arr The array of data to display within the table. */ private function get_entries($per_page = -1, $page_num = 1) { if (!isset($_GET['event_id'])) { return false; } $result = array(); $mdjm_event = new MDJM_Event($_GET['event_id']); $orderby = isset($_GET['orderby']) ? $_GET['orderby'] : 'category'; $order = isset($_GET['order']) ? $_GET['order'] : 'ASC'; if ($orderby == 'category') { $args = array('orderby' => 'name', 'order' => $order, 'hide_empty' => true); $playlist = mdjm_get_playlist_by_category($mdjm_event->ID, $args); if ($playlist) { foreach ($playlist as $cat => $entries) { foreach ($entries as $entry) { $entry_data = mdjm_get_playlist_entry_data($entry->ID); $result[] = array('ID' => $entry->ID, 'event' => $mdjm_event->ID, 'artist' => stripslashes($entry_data['artist']), 'song' => stripslashes($entry_data['song']), 'added_by' => stripslashes($entry_data['added_by']), 'category' => $cat, 'notes' => stripslashes($entry_data['djnotes']), 'date' => mdjm_format_short_date($entry->post_date)); } } } } else { $args = array('orderby' => $orderby == 'date' ? 'post_date' : 'meta_value', 'order' => $order, 'meta_key' => $orderby == 'date' ? '' : '_mdjm_playlist_entry_' . $orderby); $entries = mdjm_get_playlist_entries($mdjm_event->ID, $args); if ($entries) { foreach ($entries as $entry) { $entry_data = mdjm_get_playlist_entry_data($entry->ID); $categories = wp_get_object_terms($entry->ID, 'playlist-category'); if (!empty($categories)) { $category = $categories[0]->name; } $result[] = array('ID' => $entry->ID, 'event' => $mdjm_event->ID, 'artist' => stripslashes($entry_data['artist']), 'song' => stripslashes($entry_data['song']), 'added_by' => stripslashes($entry_data['added_by']), 'category' => !empty($category) ? $category : '', 'notes' => stripslashes($entry_data['djnotes']), 'date' => mdjm_format_short_date($entry->post_date)); } } } return apply_filters('mdjm_list_event_playlist', $result, $mdjm_event->ID); }