/**
 * 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;
}
Esempio n. 2
0
/**
 * 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 
        }
    }
Esempio n. 4
0
/**
 * 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);
}
Esempio n. 5
0
/**
 * 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">&nbsp;</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;
}