/** * Accept an enquiry. * * When a client clicks the Book Event button to accept an enquiry * transition the event to the awaiting contract status. * * @since 1.3 * @param arr $data Data for the transition. * @return bool True on succes, otherwise false */ function mdjm_accept_enquiry($data) { global $current_user; $mdjm_event = mdjm_get_event($data['event_id']); if (!$mdjm_event) { return false; } do_action('mdjm_pre_event_accept_enquiry', $mdjm_event->ID, $data); $data['meta'] = array('_mdjm_event_enquiry_accepted' => current_time('mysql'), '_mdjm_event_enquiry_accepted_by' => $current_user->ID); $data['client_notices'] = mdjm_get_option('contract_to_client'); if (!mdjm_update_event_status($mdjm_event->ID, 'mdjm-contract', $mdjm_event->post_status, $data)) { return false; } mdjm_add_journal(array('user' => get_current_user_id(), 'event' => $mdjm_event->ID, 'comment_content' => sprintf(__('%s has accepted their event enquiry', 'mobile-dj-manager'), $current_user->display_name . '<br>')), array('type' => 'update-event', 'visibility' => '2')); $content = '<html>' . "\n" . '<body>' . "\n"; $content .= '<p>' . sprintf(__('Good news... %s has just accepted their %s quotation via %s', 'mobile-dj-manager'), '{client_fullname}', mdjm_get_label_singular(true), '{application_name}') . '</p>'; $content .= '<hr />' . "\n"; $content .= '<h4>' . sprintf(__('<a href="%s">%s ID: %s</a>', 'mobile-dj-manager'), admin_url('post.php?post=' . $mdjm_event->ID . '&action=edit'), mdjm_get_label_singular(), '{contract_id}') . '</h4>' . "\n"; $content .= '<p>' . sprintf(__('Date: %s', 'mobile-dj-manager'), '{event_date}') . '<br />' . "\n"; $content .= __('Type', 'mobile-dj-manager') . ': ' . mdjm_get_event_type($mdjm_event->ID) . '<br />' . "\n"; $content .= __('Status', 'mobile-dj-manager') . ': ' . mdjm_get_event_status($mdjm_event->ID) . '<br />' . "\n"; $content .= __('Client', 'mobile-dj-manager') . ': {client_fullname}<br />' . "\n"; $content .= __('Value', 'mobile-dj-manager') . ': {total_cost}<br />' . "\n"; $content .= __('Deposit', 'mobile-dj-manager') . ': {deposit} ({deposit_status})<br />' . "\n"; $content .= __('Balance Due', 'mobile-dj-manager') . ': {balance}</p>' . "\n"; $content .= '<p>' . sprintf(__('<a href="%s">View %s</a>', 'mobile-dj-manager'), admin_url('post.php?post=' . $mdjm_event->ID . '&action=edit'), mdjm_get_label_singular()) . '</p>' . "\n"; $content .= '</body>' . "\n" . '</html>' . "\n"; $args = array('to_email' => mdjm_get_option('system_email'), 'event_id' => $mdjm_event->ID, 'client_id' => $mdjm_event->client, 'subject' => sprintf(__('%s Quotation Accepted', 'mobile-dj-manager'), mdjm_get_label_singular()), 'message' => $content, 'copy_to' => 'disabled'); mdjm_send_email_content($args); do_action('mdjm_post_event_accept_enquiry', $mdjm_event->ID, $data); return true; }
/** * Output the event packages row * * @since 1.3.7 * @global obj $mdjm_event MDJM_Event class object * @global bool $mdjm_event_update True if this event is being updated, false if new. * @param int $event_id The event ID. * @return str */ function mdjm_event_metabox_details_packages_row($event_id) { global $mdjm_event, $mdjm_event_update; if (!mdjm_packages_enabled()) { return; } $package = $mdjm_event->get_package(); $addons = $mdjm_event->get_addons(); $employee = $mdjm_event->employee_id ? $mdjm_event->employee_id : get_current_user_id(); $event_type = mdjm_get_event_type($event_id, true); $event_date = $mdjm_event->date ? $mdjm_event->date : false; if (!$event_type) { $event_type = mdjm_get_option('event_type_default', ''); } ?> <span id="mdjm-equipment-loader" class="mdjm-loader mdjm-hidden"><img src="<?php echo MDJM_PLUGIN_URL . '/assets/images/loading.gif'; ?> " /></span> <div id="mdjm-event-equipment-row" class="mdjm_field_wrap mdjm_form_fields"> <div class="mdjm_col col2"> <label for="_mdjm_event_package"><?php _e('Package:', 'mobile-dj-manager'); ?> </label><br /> <?php echo MDJM()->html->packages_dropdown(array('employee' => $employee, 'event_type' => $event_type, 'event_date' => $event_date, 'selected' => $package, 'chosen' => true)); ?> </div> <div class="mdjm_col col2"> <span><label for="event_addons"><?php _e('Add-ons:', 'mobile-dj-manager'); ?> </label><br /> <?php echo MDJM()->html->addons_dropdown(array('selected' => $addons, 'show_option_none' => false, 'show_option_all' => false, 'employee' => $employee, 'event_type' => $event_type, 'event_date' => $event_date, 'package' => $package, 'cost' => true, 'placeholder' => __('Select Add-ons', 'mobile-dj-manager'), 'chosen' => true, 'data' => array())); ?> </span> </div> </div> <?php }
/** * 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 } }
/** * Content tag: event_type. * The current event type. * * @param int The event ID. * @param * * @return str The current event type label. */ function mdjm_content_tag_event_type($event_id = '') { if (empty($event_id)) { return; } return mdjm_get_event_type($event_id); }
/** * 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; }