コード例 #1
0
/**
 * 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;
}
コード例 #2
0
 public function fail_enquiry()
 {
     global $mdjm, $mdjm_settings;
     if (MDJM_DEBUG == true) {
         MDJM()->debug->log_it('*** Starting the Fail Enquiry task ***', true);
     }
     $cron_start = microtime(true);
     $expired = date('Y-m-d', strtotime("-" . $this->schedules['fail-enquiry']['options']['age']));
     // Retrieve expired enquiries
     $enquiries = mdjm_get_events(array('post_status' => 'mdjm-enquiry', 'date_query' => array('before' => $expired)));
     $notify = array();
     $x = 0;
     if (count($enquiries) > 0) {
         // Enquiries to process
         MDJM()->debug->log_it(count($enquiries) . ' ' . _n('enquiry', 'enquiries', count($enquiries)) . ' to expire');
         remove_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3);
         /* -- Loop through the enquiries and update as failed -- */
         foreach ($enquiries as $enquiry) {
             $cronned = get_post_meta($event->ID, '_mdjm_event_tasks', true);
             if (!empty($cronned) && $cronned != '') {
                 $cron_update = json_decode($cronned, true);
             }
             if (array_key_exists('request-deposit', $cron_update)) {
                 // Task has already run for this event
                 continue;
             }
             if (!is_array($cron_update)) {
                 $cron_update = array();
             }
             $cron_update[$this->schedules['fail-enquiry']['slug']] = time();
             mdjm_update_event_status($enquiry->ID, 'mdjm-failed', $enquiry->post_status, array('meta' => array('_mdjm_event_tasks' => json_encode($cron_update))));
             /* -- Update Journal -- */
             MDJM()->debug->log_it('	-- Adding journal entry');
             mdjm_add_journal(array('user_id' => 1, 'event_id' => $enquiry->ID, 'comment_content' => 'Enquiry marked as lost via Scheduled Task <br /><br />' . time()), array('type' => 'update-event', 'visibility' => '1'));
             $notify_dj = isset($this->schedules['fail-enquiry']['options']['notify_dj']) ? $this->schedules['fail-enquiry']['options']['notify_dj'] : '';
             $notify_admin = isset($this->schedules['fail-enquiry']['options']['notify_admin']) ? $this->schedules['fail-enquiry']['options']['notify_admin'] : '';
             $client = get_post_meta($enquiry->ID, '_mdjm_event_client', true);
             $dj = get_post_meta($enquiry->ID, '_mdjm_event_dj', true);
             $event_date = get_post_meta($enquiry->ID, '_mdjm_event_date', true);
             $event_dj = !empty($dj) ? get_userdata($dj) : 'DJ not found';
             $event_client = !empty($client) ? get_userdata($client) : 'Client not found';
             $venue_post_id = get_post_meta($enquiry->ID, '_mdjm_event_venue_id', true);
             $event_venue = MDJM()->events->mdjm_get_venue_details($venue_post_id, $enquiry->ID);
             /* Prepare admin notification email data array */
             if (!empty($notify_admin) && $notify_admin == 'Y') {
                 MDJM()->debug->log_it('	-- Admin notifications are enabled');
                 if (!isset($notify['admin']) || !is_array($notify['admin'])) {
                     $notify['admin'] = array();
                 }
                 $notify['admin'][$enquiry->ID] = array('id' => $enquiry->ID, 'client' => $event_client->display_name, 'venue' => !empty($event_venue['name']) ? $event_venue['name'] : 'No Venue Set', 'djinfo' => $event_dj, 'date' => !empty($event_date) ? date("d M Y", strtotime($event_date)) : 'Date not found');
             }
             // End if( !empty( $notify_admin ) && $notify_admin == 'Y' )
             /* Prepare DJ notification email data array */
             if (!empty($notify_dj) && $notify_dj == 'Y') {
                 MDJM()->debug->log_it('	-- DJ notifications are enabled');
                 if (!isset($notify['dj']) || !is_array($notify['dj'])) {
                     $notify['dj'] = array();
                 }
                 $notify['dj'][$dj] = array();
                 $notify['dj'][$dj][$enquiry->ID] = array('id' => $enquiry->id, 'client' => $event_client->display_name, 'venue' => !empty($event_venue['name']) ? $event_venue['name'] : 'No Venue Set', 'djinfo' => $event_dj, 'date' => !empty($event_date) ? date("d M Y", strtotime($event_date)) : 'Date not found');
             }
             // End if( !empty( $notify_dj ) && $notify_dj == 'Y' )
             $x++;
         }
         // End foreach
         $cron_end = microtime(true);
         /* -- Prepare the Admin notification email -- */
         if (!empty($notify_admin) && $notify_admin == 'Y') {
             $notify_email_args = array('data' => $notify['admin'], 'taskinfo' => $this->schedules['fail-enquiry'], 'start' => $cron_start, 'end' => $cron_end, 'total' => $x);
             // $notify_email_args
             $content = $this->notification_content($notify_email_args);
             $mdjm->send_email(array('content' => $content, 'to' => $mdjm_settings['email']['system_email'], 'subject' => sanitize_text_field($this->schedules['fail-enquiry']['options']['email_subject']), 'journal' => false, 'html' => false, 'cc_admin' => false, 'cc_dj' => false, 'filter' => false, 'log_comm' => false));
         }
         // if( !empty( $notify_admin ) && $notify_admin == 'Y' )	{
         /* -- Prepare the DJ notification email -- */
         if (!empty($notify_dj) && $notify_dj == 'Y') {
             foreach ($notify['dj'] as $notify_dj) {
                 foreach ($notify_dj as $dj) {
                     $notify_email_args = array('data' => $notify_dj, 'taskinfo' => $this->schedules['fail-enquiry'], 'start' => $cron_start, 'end' => $cron_end, 'total' => $x);
                     // $notify_email_args
                     $content = $this->notification_content($notify_email_args);
                     $mdjm->send_email(array('content' => $content, 'to' => $dj->ID, 'subject' => sanitize_text_field($this->schedules['fail-enquiry']['options']['email_subject']), 'journal' => false, 'html' => false, 'cc_admin' => false, 'cc_dj' => false, 'filter' => false, 'log_comm' => false));
                 }
                 // foreach( $notify_dj as $dj )
             }
             // foreach( $notify['dj'] as $notify_dj )
         }
         // if( !empty( $notify_dj ) && $notify_dj == 'Y' )
         add_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3);
     } else {
         MDJM()->debug->log_it('No enquiries to process as failed');
     }
     // Prepare next run time
     $this->update_nextrun('fail-enquiry');
     if (MDJM_DEBUG == true) {
         MDJM()->debug->log_it('*** Completed the Fail Enquiry task ***', true);
     }
 }
コード例 #3
0
ファイル: events.php プロジェクト: mdjm/mobile-dj-manager
/**
 * Save the meta data for the event
 *
 * @since	0.7
 * @param	int		$post_id		The current event post ID.
 * @param	obj		$post			The current event post object (WP_Post).
 * @param	bool	$update			Whether this is an existing post being updated or not.
 * 
 * @return	void
 */
function mdjm_save_event_post($post_id, $post, $update)
{
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    if ($post->post_status == 'trash') {
        return;
    }
    if (empty($update)) {
        return;
    }
    // Permission Check
    if (!mdjm_employee_can('manage_events')) {
        MDJM()->debug->log_it(sprintf('PERMISSION ERROR: User %s is not allowed to edit events', get_current_user_id()));
        return;
    }
    // Remove the save post action to avoid loops.
    remove_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3);
    // Fire our pre-save hook
    do_action('mdjm_pre_event_save', $post_id, $post, $update);
    $debug[] = 'Starting Event Save';
    // Get current meta data for the post so we can track changes within the journal.
    $current_meta = get_post_meta($post_id);
    /**
     * Get the Client ID and store it in the event data array.
     * If a client has been selected from the dropdown, we simply use that ID.
     * If adding a new client, call the method and use the returned user ID.
     */
    $event_data['_mdjm_event_client'] = $_POST['client_name'] != 'add_new' ? $_POST['client_name'] : mdjm_add_client();
    /**
     * For new events we fire the 'mdjm_add_new_event' action
     */
    if (empty($update)) {
        do_action('mdjm_create_new_event', $post);
    }
    /**
     * If the client is flagged to have their password reset, set the flag.
     * The flag will be checked and processed during the content tag filtering process.
     */
    if (!empty($_POST['mdjm_reset_pw'])) {
        $debug[] = sprintf('Client %s flagged for password reset', $event_data['_mdjm_event_client']);
        update_user_meta($event_data['_mdjm_event_client'], 'mdjm_pass_action', true);
    }
    /**
     * Determine the Venue ID if an existing venue was selected.
     * Otherwise, determine if we're using the client's address or adding a manual venue address
     */
    if ($_POST['venue_id'] != 'manual' && $_POST['venue_id'] != 'client') {
        $event_data['_mdjm_event_venue_id'] = $_POST['venue_id'];
    } elseif (!empty($_POST['_mdjm_event_venue_id']) && $_POST['_mdjm_event_venue_id'] == 'client') {
        $event_data['_mdjm_event_venue_id'] = 'client';
    } else {
        $event_data['_mdjm_event_venue_id'] = 'manual';
    }
    /**
     * If the option was selected to save the venue, prepare the post and post meta data
     * for the venue.
     */
    if ($_POST['venue_id'] == 'manual' && !empty($_POST['save_venue'])) {
        foreach ($_POST as $venue_key => $venue_value) {
            if (substr($venue_key, 0, 6) == 'venue_') {
                $venue_meta[$venue_key] = $venue_value;
                if ($venue_key == 'venue_postcode' && !empty($venue_value)) {
                    $venue_meta[$venue_key] = strtoupper($venue_value);
                } elseif ($venue_key == 'venue_email' && !empty($venue_value)) {
                    $venue_meta[$venue_key] = sanitize_email($venue_value);
                } else {
                    $venue_meta[$venue_key] = sanitize_text_field(ucwords($venue_value));
                }
            }
        }
        // Create the new venue
        $event_data['_mdjm_event_venue_id'] = mdjm_add_venue($_POST['venue_name'], $venue_meta);
    } else {
        // Manual venue address entry
        if ($_POST['venue_id'] != 'client') {
            $event_data['_mdjm_event_venue_name'] = sanitize_text_field(ucwords($_POST['venue_name']));
            $event_data['_mdjm_event_venue_contact'] = sanitize_text_field(ucwords($_POST['venue_contact']));
            $event_data['_mdjm_event_venue_phone'] = sanitize_text_field($_POST['venue_phone']);
            $event_data['_mdjm_event_venue_email'] = sanitize_email(strtolower($_POST['venue_email']));
            $event_data['_mdjm_event_venue_address1'] = sanitize_text_field(ucwords($_POST['venue_address1']));
            $event_data['_mdjm_event_venue_address2'] = sanitize_text_field(ucwords($_POST['venue_address2']));
            $event_data['_mdjm_event_venue_town'] = sanitize_text_field(ucwords($_POST['venue_town']));
            $event_data['_mdjm_event_venue_county'] = sanitize_text_field(ucwords($_POST['venue_county']));
            $event_data['_mdjm_event_venue_postcode'] = strtoupper(sanitize_text_field($_POST['venue_postcode']));
        } else {
            // Using clients address
            $client_data = get_userdata($event_data['_mdjm_event_client']);
            $event_data['_mdjm_event_venue_name'] = __('Client Address', 'mobile-dj-manager');
            $event_data['_mdjm_event_venue_contact'] = sprintf('%s %s', !empty($client_data->first_name) ? sanitize_text_field($client_data->first_name) : '', !empty($client_data->last_name) ? sanitize_text_field($client_data->last_name) : '');
            $event_data['_mdjm_event_venue_phone'] = !empty($client_data->phone1) ? $client_data->phone1 : '';
            $event_data['_mdjm_event_venue_email'] = !empty($client_data->user_email) ? $client_data->user_email : '';
            $event_data['_mdjm_event_venue_address1'] = !empty($client_data->address1) ? $client_data->address1 : '';
            $event_data['_mdjm_event_venue_address2'] = !empty($client_data->address2) ? $client_data->address2 : '';
            $event_data['_mdjm_event_venue_town'] = !empty($client_data->town) ? $client_data->town : '';
            $event_data['_mdjm_event_venue_county'] = !empty($client_data->county) ? $client_data->county : '';
            $event_data['_mdjm_event_venue_postcode'] = !empty($client_data->postcode) ? $client_data->postcode : '';
        }
    }
    /**
     * Travel data
     */
    $travel_fields = mdjm_get_event_travel_fields();
    foreach ($travel_fields as $travel_field) {
        $field = 'travel_' . $travel_field;
        $travel_data[$travel_field] = !empty($_POST[$field]) ? $_POST[$field] : '';
        if ('cost' == $travel_field && !empty($_POST[$field])) {
            $travel_data[$travel_field] = mdjm_sanitize_amount($_POST[$field]);
        }
    }
    $event_data['_mdjm_event_travel_data'] = $travel_data;
    /**
     * Prepare the remaining event meta data.
     */
    $event_data['_mdjm_event_last_updated_by'] = get_current_user_id();
    /**
     * Event name.
     * If no name is defined, use the event type.
     * Allow filtering of the event name with the `mdjm_event_name` filter.
     */
    if (empty($_POST['_mdjm_event_name'])) {
        $_POST['_mdjm_event_name'] = get_term($_POST['mdjm_event_type'], 'event-types')->name;
    }
    $_POST['_mdjm_event_name'] = apply_filters('mdjm_event_name', $_POST['_mdjm_event_name'], $post_id);
    // Generate the playlist reference for guest access
    if (empty($update) || empty($current_meta['_mdjm_event_playlist_access'][0])) {
        $event_data['_mdjm_event_playlist_access'] = mdjm_generate_playlist_guest_code();
    }
    // Set whether or not the playlist is enabled for the event
    $event_data['_mdjm_event_playlist'] = !empty($_POST['enable_playlist']) ? $_POST['enable_playlist'] : 'N';
    /**
     * All the remaining custom meta fields are prefixed with '_mdjm_event_'.
     * Loop through all $_POST data and put all event meta fields into the $event_data array
     */
    foreach ($_POST as $key => $value) {
        if (substr($key, 0, 12) == '_mdjm_event_') {
            if ($key == '_mdjm_event_dj_wage' || $key == '_mdjm_event_cost' || $key == '_mdjm_event_deposit') {
                $value = mdjm_sanitize_amount($value);
            }
            $event_data[$key] = $value;
        }
    }
    /**
     * We store all times in H:i:s but the user may prefer a different format so we
     * determine their time format setting and adjust to H:i:s for saving.
     */
    if (mdjm_get_option('time_format', 'H:i') == 'H:i') {
        // 24 Hr
        $event_data['_mdjm_event_start'] = date('H:i:s', strtotime($_POST['event_start_hr'] . ':' . $_POST['event_start_min']));
        $event_data['_mdjm_event_finish'] = date('H:i:s', strtotime($_POST['event_finish_hr'] . ':' . $_POST['event_finish_min']));
        $event_data['_mdjm_event_djsetup_time'] = date('H:i:s', strtotime($_POST['dj_setup_hr'] . ':' . $_POST['dj_setup_min']));
    } else {
        // 12 hr
        $event_data['_mdjm_event_start'] = date('H:i:s', strtotime($_POST['event_start_hr'] . ':' . $_POST['event_start_min'] . $_POST['event_start_period']));
        $event_data['_mdjm_event_finish'] = date('H:i:s', strtotime($_POST['event_finish_hr'] . ':' . $_POST['event_finish_min'] . $_POST['event_finish_period']));
        $event_data['_mdjm_event_djsetup_time'] = date('H:i:s', strtotime($_POST['dj_setup_hr'] . ':' . $_POST['dj_setup_min'] . $_POST['dj_setup_period']));
    }
    if (empty($_POST['_mdjm_event_djsetup'])) {
        $event_data['_mdjm_event_djsetup'] = $_POST['_mdjm_event_date'];
    }
    /**
     * Set the event end date.
     * If the finish time is less than the start time, assume following day.
     */
    if (date('H', strtotime($event_data['_mdjm_event_finish'])) > date('H', strtotime($event_data['_mdjm_event_start']))) {
        $event_data['_mdjm_event_end_date'] = $_POST['_mdjm_event_date'];
    } else {
        // End date is following day
        $event_data['_mdjm_event_end_date'] = date('Y-m-d', strtotime('+1 day', strtotime($_POST['_mdjm_event_date'])));
    }
    /**
     * Determine the state of the Deposit & Balance payments.
     * 
     */
    $event_data['_mdjm_event_deposit_status'] = !empty($_POST['deposit_paid']) ? $_POST['deposit_paid'] : 'Due';
    $event_data['_mdjm_event_balance_status'] = !empty($_POST['balance_paid']) ? $_POST['balance_paid'] : 'Due';
    $deposit_payment = $event_data['_mdjm_event_deposit_status'] == 'Paid' && $current_meta['_mdjm_event_deposit_status'][0] != 'Paid' ? true : false;
    $balance_payment = $event_data['_mdjm_event_balance_status'] == 'Paid' && $current_meta['_mdjm_event_balance_status'][0] != 'Paid' ? true : false;
    // Add-Ons
    if (mdjm_packages_enabled()) {
        $event_data['_mdjm_event_addons'] = !empty($_POST['event_addons']) ? $_POST['event_addons'] : '';
    }
    // Assign the event type
    $existing_event_type = wp_get_object_terms($post_id, 'event-types');
    mdjm_set_event_type($post_id, (int) $_POST['mdjm_event_type']);
    // Assign the enquiry source
    mdjm_set_enquiry_source($post_id, (int) $_POST['mdjm_enquiry_source']);
    /**
     * Update the event post meta data
     */
    $debug[] = 'Beginning Meta Updates';
    mdjm_update_event_meta($post_id, $event_data);
    $debug[] = 'Meta Updates Completed';
    if ($deposit_payment == true || $balance_payment == true) {
        if ($balance_payment == true) {
            unset($event_data['_mdjm_event_balance_status']);
            unset($event_data['_mdjm_event_deposit_status']);
            mdjm_mark_event_balance_paid($post_id);
        } else {
            unset($event_data['_mdjm_event_deposit_status']);
            mdjm_mark_event_deposit_paid($post_id);
        }
    }
    // Set the event status & initiate tasks based on the status
    if ($_POST['original_post_status'] != $_POST['mdjm_event_status']) {
        mdjm_update_event_status($post_id, $_POST['mdjm_event_status'], $_POST['original_post_status'], array('client_notices' => empty($_POST['mdjm_block_emails']) ? true : false, 'email_template' => !empty($_POST['mdjm_email_template']) ? $_POST['mdjm_email_template'] : false, 'quote_template' => !empty($_POST['mdjm_online_quote']) ? $_POST['mdjm_online_quote'] : false));
    } else {
        // Event status is un-changed so just log the changes to the journal
        mdjm_add_journal(array('user_id' => get_current_user_id(), 'event_id' => $post_id, 'comment_content' => sprintf('%s %s via Admin', mdjm_get_label_singular(), empty($update) ? 'created' : 'updated')), array('type' => 'update-event', 'visibility' => '2'));
    }
    // Fire the save event hook
    do_action('mdjm_save_event', $post, $_POST['mdjm_event_status']);
    // Fire our post save hook
    do_action('mdjm_after_event_save', $post_id, $post, $update);
    // Re-add the save post action to avoid loops
    add_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3);
    $debug[] = sprintf('Completed Event Save for event %s', $post_id);
    if (!empty($debug) && MDJM_DEBUG == true) {
        $true = true;
        foreach ($debug as $log) {
            MDJM()->debug->log_it($log, $true);
            $true = false;
        }
    }
}
コード例 #4
0
/**
 * Process the sending of the email
 *
 * @since	1.3
 * @param	arr		$data	Super global $_POST array
 * @return	void
 */
function mdjm_send_comm_email($data)
{
    $url = remove_query_arg(array('mdjm-message', 'event_id', 'template', 'recipient', 'mdjm-action'));
    if (!wp_verify_nonce($data['mdjm_nonce'], 'send_comm_email')) {
        $message = 'nonce_fail';
    } elseif (empty($data['mdjm_email_to']) || empty($data['mdjm_email_subject']) || empty($data['mdjm_email_content'])) {
        $message = 'comm_missing_content';
    } else {
        if (isset($_FILES['mdjm_email_upload_file']) && '' !== $_FILES['mdjm_email_upload_file']['name']) {
            $upload_dir = wp_upload_dir();
            $file_name = $_FILES['mdjm_email_upload_file']['name'];
            $file_path = $upload_dir['path'] . '/' . $file_name;
            $tmp_path = $_FILES['mdjm_email_upload_file']['tmp_name'];
            if (move_uploaded_file($tmp_path, $file_path)) {
                $attachments[] = $file_path;
            }
        }
        if (empty($attachments)) {
            $attachments = array();
        }
        $attachments = apply_filters('mdjm_send_comm_email_attachments', $attachments, $data);
        $email_args = array('to_email' => mdjm_get_client_email($data['mdjm_email_to']), 'from_name' => $data['mdjm_email_from_name'], 'from_email' => $data['mdjm_email_from_address'], 'event_id' => $data['mdjm_email_event'], 'client_id' => $data['mdjm_email_to'], 'subject' => stripslashes($data['mdjm_email_subject']), 'attachments' => !empty($attachments) ? $attachments : array(), 'message' => stripslashes($data['mdjm_email_content']), 'track' => true, 'copy_to' => !empty($data['mdjm_email_copy_to']) ? array($data['mdjm_email_copy_to']) : array(), 'source' => __('Communication Feature', 'mobile-dj-manager'));
        if (mdjm_send_email_content($email_args)) {
            $message = 'comm_sent';
            if (!empty($data['mdjm_event_reject'])) {
                $args = array('reject_reason' => !empty($data['mdjm_email_reject_reason']) ? $data['mdjm_email_reject_reason'] : __('No reason specified', 'mobile-dj-manager'));
                mdjm_update_event_status($email_args['event_id'], 'mdjm-rejected', get_post_status($email_args['event_id']), $args);
            }
        } else {
            $message = 'comm_not_sent';
        }
    }
    wp_redirect(add_query_arg('mdjm-message', $message, $url));
    die;
}
コード例 #5
0
/**
 * Sign the event contract
 *
 * @since	1.3
 * @param	int		$event_id	The event ID
 * @param	arr		$details	Contract and event info
 * @return	bool	Whether or not the contract was signed
 */
function mdjm_sign_event_contract($event_id, $details)
{
    $event = new MDJM_Event($event_id);
    if (!$event) {
        return false;
    }
    $contract_template = mdjm_get_contract(mdjm_get_event_contract($event->ID));
    if (!$contract_template) {
        return false;
    }
    do_action('mdjm_pre_sign_event_contract', $event_id, $details);
    // Prepare the content for the contract.
    $contract_content = $contract_template->post_content;
    $contract_content = apply_filters('the_content', $contract_content);
    $contract_content = str_replace(']]>', ']]&gt;', $contract_content);
    $contract_content = mdjm_do_content_tags($contract_content, $event->ID, $event->client);
    // The signatory information displayed at the foot of the contract
    $contract_signatory_content = '<hr>' . "\r\n";
    $contract_signatory_content .= '<p style="font-weight: bold">' . __('Signatory', 'mobile-dj-manager') . ': <span style="text-decoration: underline;">' . ucfirst($details['mdjm_first_name']) . ' ' . ucfirst($details['mdjm_last_name']) . '</span></p>' . "\r\n";
    $contract_signatory_content .= '<p style="font-weight: bold">' . __('Date of Signature', 'mobile-dj-manager') . ': <span style="text-decoration: underline;">' . date('jS F Y') . '</span></p>' . "\r\n";
    $contract_signatory_content .= '<p style="font-weight: bold">' . __('Verification Method', 'mobile-dj-manager') . ': ' . __('User Password Confirmation', 'mobile-dj-manager') . '</p>' . "\r\n";
    $contract_signatory_content .= '<p style="font-weight: bold">' . __('IP Address Used', 'mobile-dj-manager') . ': ' . $_SERVER['REMOTE_ADDR'] . '</p>' . "\r\n";
    $contract_signatory_content = apply_filters('mdjm_contract_signatory', $contract_signatory_content);
    $contract_content .= $contract_signatory_content;
    // Filter the signed contract post data
    $signed_contract = apply_filters('mdjm_signed_contract_data', array('post_title' => sprintf(__('Event Contract: %s', 'mobile-dj-manager'), mdjm_get_option('event_prefix') . $event->ID), 'post_author' => get_current_user_id(), 'post_type' => 'mdjm-signed-contract', 'post_status' => 'publish', 'post_content' => $contract_content, 'post_parent' => $event->ID, 'ping_status' => 'closed', 'comment_status' => 'closed'), $event->ID, $event);
    $signed_contract_id = wp_insert_post($signed_contract, true);
    if (is_wp_error($signed_contract_id)) {
        return false;
    }
    add_post_meta($signed_contract, '_mdjm_contract_signed_name', ucfirst($details['mdjm_first_name']) . ' ' . ucfirst($details['mdjm_last_name']), true);
    $event_meta = array('_mdjm_event_signed_contract' => $signed_contract_id, '_mdjm_event_contract_approved' => current_time('mysql'), '_mdjm_event_contract_approver' => strip_tags(addslashes(ucfirst($details['mdjm_first_name']) . ' ' . ucfirst($details['mdjm_last_name']))), '_mdjm_event_contract_approver_ip' => $_SERVER['REMOTE_ADDR'], '_mdjm_event_last_updated_by' => get_current_user_id());
    // Update the event status
    mdjm_update_event_status($event->ID, 'mdjm-approved', $event->post_status, array('meta' => $event_meta, 'client_notices' => mdjm_get_option('booking_conf_to_client')));
    mdjm_add_journal(array('user' => get_current_user_id(), 'event' => $event->ID, 'comment_content' => __('Contract Approval completed by ', 'mobile-dj-manager') . ucfirst($details['mdjm_first_name']) . ' ' . ucfirst($details['mdjm_last_name'] . '<br>')), array('type' => 'update-event', 'visibility' => '2'));
    do_action('mdjm_post_sign_event_contract', $event_id, $details);
    return true;
}