/** * Displays the playlist details. * * @since 1.3 * * * @return str */ function display_header() { ?> <p><?php printf(__('<strong>Date</strong>: %s', 'mobile-dj-manager'), mdjm_get_event_long_date($_GET['event_id'])); ?> <br /> <?php printf(__('<strong>Status</strong>: %s', 'mobile-dj-manager'), mdjm_get_event_status($_GET['event_id'])); ?> <br /> <?php printf(__('<strong>Type</strong>: %s', 'mobile-dj-manager'), mdjm_get_event_type($_GET['event_id'])); ?> <br /> <?php printf(__('<strong>Primary Employee</strong>: %s', 'mobile-dj-manager'), mdjm_get_employee_display_name(mdjm_get_event_primary_employee_id($_GET['event_id']))); ?> <br /> <?php printf(__('<strong>Client</strong>: %s', 'mobile-dj-manager'), mdjm_get_employee_display_name(mdjm_get_event_client_id($_GET['event_id']))); ?> <br /> <?php printf(__('<strong>Total Songs</strong>: %s', 'mobile-dj-manager'), count($this->items)); ?> <br /> <?php printf(__('<strong>Current Status</strong>: %s', 'mobile-dj-manager'), mdjm_playlist_is_open($_GET['event_id']) ? __('Open', 'mobile-dj-manager') : __('Closed', 'mobile-dj-manager')); ?> </p> <?php if ($this->count_entries($_GET['event_id']) > 0) { ?> <p> <form method="post" target="_blank"> <?php mdjm_admin_action_field('print_playlist'); ?> <input type="hidden" name="print_playlist_event_id" id="print_playlist_event_id" value="<?php echo $_GET['event_id']; ?> " /> <?php wp_nonce_field('print_playlist_entry', 'mdjm_nonce', true, true); ?> <?php submit_button('Print this List', 'primary small', 'submit_print_pl', false); ?> <?php _e('ordered by', 'mobile-dj-manager'); ?> <select name="print_order_by" id="print_order_by"> <option value="date" selected="selected"><?php _e('Date Added', 'mobile-dj-manager'); ?> </option> <option value="artist"><?php _e('Artist Name', 'mobile-dj-manager'); ?> </option> <option value="song"><?php _e('Song Name', 'mobile-dj-manager'); ?> </option> <option value="category"><?php _e('Category', 'mobile-dj-manager'); ?> </option> </select> <?php _e('and repeating headers after', 'mobile-dj-manager'); ?> <input type="text" name="print_repeat_headers" id="print_repeat_headers" class="small-text" value="20" /> <?php _e('rows', 'mobile-dj-manager'); ?> <code><?php _e('Enter 0 for no repeat of headers', 'mobile-dj-manager'); ?> </code> </form> <form method="post"> <?php mdjm_admin_action_field('email_playlist'); ?> <?php wp_nonce_field('email_playlist_entry', 'mdjm_nonce', true, true); ?> <input type="hidden" name="email_playlist_event_id" id="email_playlist_event_id" value="<?php echo $_GET['event_id']; ?> " /> <?php submit_button('Email this List', 'primary small', 'submit_email_pl', false); ?> <?php _e('ordered by', 'mobile-dj-manager'); ?> <select name="email_order_by" id="email_order_by"> <option value="date" selected="selected"><?php _e('Date Added', 'mobile-dj-manager'); ?> </option> <option value="artist"><?php _e('Artist Name', 'mobile-dj-manager'); ?> </option> <option value="song"><?php _e('Song Name', 'mobile-dj-manager'); ?> </option> <option value="category"><?php _e('Category', 'mobile-dj-manager'); ?> </option> </select> <?php _e('and repeating headers after', 'mobile-dj-manager'); ?> <input type="text" name="repeat_headers" id="repeat_headers" class="small-text" value="20" /> <?php _e('rows', 'mobile-dj-manager'); ?> <code><?php _e('Enter 0 for no repeat of headers', 'mobile-dj-manager'); ?> </code> </form> </p> <?php } }
/** * Admin Messages * * @since 1.3 * @global $mdjm_options Array of all the MDJM Options * @return void */ function mdjm_admin_notices() { global $mdjm_options; // Unattended events if (mdjm_employee_can('manage_all_events') && mdjm_get_option('warn_unattended')) { $unattended = MDJM()->events->mdjm_count_event_status('mdjm-unattended'); if (!empty($unattended) && $unattended > 0) { echo '<div class="notice notice-info is-dismissible">'; echo '<p>' . sprintf(__('You have unattended enquiries. <a href="%s">Click here</a> to manage.', 'mobile-dj-manager'), admin_url('edit.php?post_type=mdjm-event&post_status=mdjm-unattended')) . '</p>'; echo '</div>'; } } if (isset($_GET['mdjm-message']) && 'upgrade-completed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-upgraded', __('MDJM Event Management has been upgraded successfully.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'song_added' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-added-song', __('Entry added to playlist.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'adding_song_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-adding-song-failed', __('Could not add entry to playlist.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'song_removed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-removed-song', __('The selected songs were removed.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'song_remove_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-remove-faled', __('The songs count not be removed.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'security_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-security-failed', __('Security verification failed. Action not completed.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'playlist_emailed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-playlist-emailed', __('The playlist was emailed successfully.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'playlist_email_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-playlist-email-failed', __('The playlist could not be emailed.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'employee_added' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-employee_added', __('Employee added.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'employee_add_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-employee_add-failed', __('Could not add employee.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'employee_info_missing' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-employee_info-missing', __('Insufficient information to create employee.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'comm_missing_content' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-comm_content-missing', __('Not all required fields have been completed.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'comm_sent' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-comm_sent', __('Email sent successfully.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'comm_not_sent' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-comm_not_sent', __('Email not sent.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-action']) && 'get_event_availability' == $_GET['mdjm-action']) { if (!wp_verify_nonce($_GET['mdjm_nonce'], 'get_event_availability')) { return; } elseif (!isset($_GET['event_id'])) { return; } else { $date = get_post_meta($_GET['event_id'], '_mdjm_event_date', true); $result = mdjm_do_availability_check($date); if (!empty($result['available'])) { $notice = '<ul>'; foreach ($result['available'] as $employee_id) { $notice .= '<li>' . sprintf(__('<a href="%s" title="Assign & Respond to Enquiry">Assign %s & respond to enquiry</a>', 'mobile-dj-manager'), add_query_arg('primary_employee', $employee_id, get_edit_post_link($_GET['event_id'])), mdjm_get_employee_display_name($employee_id)) . '</li>'; } $notice .= '</ul>'; echo '<div class="notice notice-info is-dismissible">'; echo '<p>' . sprintf(__('You have %d employees available to work %s %s on %s.', 'mobile-dj-manager'), count($result['available']), mdjm_get_label_singular(true), mdjm_get_event_contract_id($_GET['event_id']), mdjm_get_event_long_date($_GET['event_id'])) . $notice . '</p>'; echo '</div>'; } else { echo '<div class="notice notice-error is-dismissible">'; echo '<p>' . sprintf(__('There are no employees available to work %s %s on %s', 'mobile-dj-manager'), mdjm_get_label_singular(true), mdjm_get_event_contract_id($_GET['event_id']), mdjm_get_event_long_date($_GET['event_id'])) . '</p>'; echo '</div>'; } } } if (isset($_GET['mdjm-message']) && 'payment_event_missing' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_event_missing', __('Event not identified.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'pay_employee_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_employee_failed', __('Unable to make payment to employee.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'pay_all_employees_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_employees_failed', __('Unable to make payment to employees.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'pay_all_employees_some_success' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_all_employees_some_success', __('Not all employees could be paid.', 'mobile-dj-manager'), 'notice-info'); } if (isset($_GET['mdjm-message']) && 'pay_employee_success' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_employeee_success', __('Employee successfully paid.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'pay_all_employees_success' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_all_employeees_success', __('Employees successfully paid.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'unattended_enquiries_rejected_success' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-unattended_enquiries_rejected_success', sprintf(_n('%1$s %2$s successfully rejected.', '%1$s %3$s successfully rejected.', $_GET['mdjm-count'], 'mobile-dj-manager'), $_GET['mdjm-count'], mdjm_get_label_singular(), mdjm_get_label_plural()), 'updated'); } if (isset($_GET['mdjm-message']) && 'unattended_enquiries_rejected_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-unattended_enquiries_rejected_failed', __('Errors were encountered.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'api-key-generated' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-api-key-generated', __('API keys generated.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'api-key-regenerated' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-api-key-regenerated', __('API keys re-generated.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'api-key-revoked' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-api-key-revoked', __('API keys revoked.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'api-key-failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-api-key-failed', __('Generating API keys failed.', 'mobile-dj-manager'), 'error'); } settings_errors('mdjm-notices'); }
/** * 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; }