/** * Display the event playlist page. * * @since 1.3 * @param * @return str The event playlist page content. */ function mdjm_display_event_playlist_page() { if (!mdjm_employee_can('read_events') && !mdjm_employee_working_event($_GET['event_id'])) { wp_die('<h1>' . __('Cheatin’ uh?') . '</h1>' . '<p>' . __('You do not have permission to view this playlist.', 'mobile-dj-manager') . '</p>', 403); } if (!class_exists('MDJM_PlayList_Table')) { require_once MDJM_PLUGIN_DIR . '/includes/admin/events/class-mdjm-playlist-table.php'; } $playlist_obj = new MDJM_PlayList_Table(); ?> <div class="wrap"> <h1><?php printf(__('Playlist for %s %s', 'mobile-dj-manager'), mdjm_get_label_singular(), mdjm_get_event_contract_id($_GET['event_id'])); ?> </h1> <form method="post"> <?php $playlist_obj->prepare_items(); $playlist_obj->display_header(); if (count($playlist_obj->items) > 0) { $playlist_obj->views(); } $playlist_obj->display(); $playlist_obj->entry_form(); ?> </form> <br class="clear"> </div> <?php }
/** * Get the Export Data * * @access public * @since 1.4 * @return arr $data The data for the CSV file */ public function get_data() { $data = array(); // Export all transactions $offset = 30 * ($this->step - 1); $txn_args = array('post_type' => 'mdjm-transaction', 'posts_per_page' => 30, 'offset' => $offset, 'paged' => $this->step, 'post_status' => array('mdjm-income', 'mdjm-expenditure'), 'order' => 'ASC', 'orderby' => 'date'); if (!empty($this->start) || !empty($this->end)) { $txn_args['date_query'] = array(array('after' => date('Y-n-d 00:00:00', strtotime($this->start)), 'before' => date('Y-n-d 23:59:59', strtotime($this->end)), 'inclusive' => true)); } if (!empty($this->status) && is_array($this->status)) { $meta_query = array(); foreach ($this->status as $txn_status) { $meta_query[] = array('key' => '_mdjm_txn_status', 'value' => $txn_status); } $txn_args['meta_query'] = array('relation' => 'OR', $meta_query); } $all_txns = get_posts($txn_args); if ($all_txns) { $i = 0; $income = 0; $expense = 0; foreach ($all_txns as $txn) { $mdjm_txn = new MDJM_Txn($txn->ID); $data[$i]['id'] = $mdjm_txn->ID; $data[$i]['date'] = date('d-M-Y', strtotime($mdjm_txn->post_date)); $data[$i]['status'] = $mdjm_txn->payment_status; $data[$i]['income'] = 'mdjm-income' == $mdjm_txn->post_status ? mdjm_format_amount($mdjm_txn->price) : ''; $data[$i]['expense'] = 'mdjm-expenditure' == $mdjm_txn->post_status ? mdjm_format_amount($mdjm_txn->price) : ''; $data[$i]['to_from'] = mdjm_get_txn_recipient_name($mdjm_txn->ID); $data[$i]['type'] = $mdjm_txn->get_type(); $data[$i]['source'] = $mdjm_txn->get_method(); $data[$i]['gateway'] = $mdjm_txn->get_gateway(); $data[$i]['event'] = !empty($mdjm_txn->post_parent) ? mdjm_get_event_contract_id($mdjm_txn->post_parent) : ''; if ('mdjm-income' == $mdjm_txn->post_status) { $income += $mdjm_txn->price; } else { $expense += $mdjm_txn->price; } $i++; } $data = apply_filters('mdjm_export_get_data', $data); $data = apply_filters('mdjm_export_get_data_' . $this->export_type, $data); return $data; } return false; }
/** * Define the data to be displayed in each of the custom columns for the Quote post types * * @since 0.9 * @param str $column_name The name of the column to display * @param int $post_id The current post ID * @return */ function mdjm_quote_posts_custom_column($column_name, $post_id) { if ($column_name == 'quote_event' || $column_name == 'quote_value') { $parent = wp_get_post_parent_id($post_id); } switch ($column_name) { // Quote Date case 'date': echo get_the_date('d M Y H:i:s'); break; // Event // Event case 'quote_event': if (!empty($parent)) { printf('<a href="%s">%s</a><br /><em>%s</em>', admin_url('/post.php?post={$parent}&action=edit'), mdjm_get_event_contract_id($parent), mdjm_get_event_date($parent)); } else { _e('N/A', 'mobile-dj-manager'); } break; // Client // Client case 'quote_client': global $post; echo '<a href="' . admin_url('admin.php?page=mdjm-clients&action=view_client&client_id=' . $post->post_author) . '">' . get_the_author() . '</a>'; break; // Cost // Cost case 'quote_value': echo mdjm_currency_filter(mdjm_get_event_price($parent)); break; // Date Viewed // Date Viewed case 'quote_view_date': if ('mdjm-quote-viewed' == get_post_status($post_id)) { echo date('d M Y H:i:s', strtotime(get_post_meta($post_id, '_mdjm_quote_viewed_date', true))); } else { _e('N/A', 'mobile-dj-manager'); } break; // View Count // View Count case 'quote_view_count': $count = get_post_meta($post_id, '_mdjm_quote_viewed_count', true); if (empty($count)) { $count = 0; } echo $count . _n(' time', ' times', $count, 'mobile-dj-manager'); break; } // switch }
/** * Save the event transaction * * */ function mdjm_save_event_transaction_ajax() { global $mdjm_event; $result = array(); $mdjm_event = new MDJM_Event($_POST['event_id']); $mdjm_txn = new MDJM_Txn(); $txn_data = array('post_parent' => $_POST['event_id'], 'post_author' => $mdjm_event->client, 'post_status' => $_POST['direction'] == 'Out' ? 'mdjm-expenditure' : 'mdjm-income', 'post_date' => date('Y-m-d H:i:s', strtotime($_POST['date']))); $txn_meta = array('_mdjm_txn_status' => 'Completed', '_mdjm_payment_from' => $mdjm_event->client, '_mdjm_txn_total' => $_POST['amount'], '_mdjm_payer_firstname' => mdjm_get_client_firstname($mdjm_event->client), '_mdjm_payer_lastname' => mdjm_get_client_lastname($mdjm_event->client), '_mdjm_payer_email' => mdjm_get_client_email($mdjm_event->client), '_mdjm_payment_from' => mdjm_get_client_display_name($mdjm_event->client), '_mdjm_txn_source' => $_POST['src']); if ($_POST['direction'] == 'In') { if (!empty($_POST['from'])) { $txn_meta['_mdjm_payment_from'] = sanitize_text_field($_POST['from']); } else { $txn_meta['_mdjm_payment_from'] = mdjm_get_client_display_name($mdjm_event->client); } } if ($_POST['direction'] == 'Out') { if (!empty($_POST['to'])) { $txn_meta['_mdjm_payment_to'] = sanitize_text_field($_POST['to']); } else { $txn_meta['_mdjm_payment_to'] = mdjm_get_client_display_name($mdjm_event->client); } } $mdjm_txn->create($txn_data, $txn_meta); if ($mdjm_txn->ID > 0) { $result['type'] = 'success'; mdjm_set_txn_type($mdjm_txn->ID, $_POST['for']); $args = array('user_id' => get_current_user_id(), 'event_id' => $_POST['event_id'], 'comment_content' => sprintf(__('%1$s payment of %2$s received for %3$s %4$s.', 'mobile-dj-manager'), $_POST['direction'] == 'In' ? __('Incoming', 'mobile-dj-manager') : __('Outgoing', 'mobile-dj-manager'), mdjm_currency_filter(mdjm_format_amount($_POST['amount'])), mdjm_get_label_singular(true), mdjm_get_event_contract_id($_POST['event_id']))); mdjm_add_journal($args); // Email overide if (empty($_POST['send_notice']) && mdjm_get_option('manual_payment_cfm_template')) { $manual_email_template = mdjm_get_option('manual_payment_cfm_template'); mdjm_update_option('manual_payment_cfm_template', 0); } $payment_for = $mdjm_txn->get_type(); $amount = mdjm_currency_filter(mdjm_format_amount($_POST['amount'])); mdjm_add_content_tag('payment_for', __('Reason for payment', 'mobile-dj-manager'), function () use($payment_for) { return $payment_for; }); mdjm_add_content_tag('payment_amount', __('Payment amount', 'mobile-dj-manager'), function () use($amount) { return $amount; }); mdjm_add_content_tag('payment_date', __('Date of payment', 'mobile-dj-manager'), 'mdjm_content_tag_ddmmyyyy'); /** * Allow hooks into this payment. The hook is suffixed with 'in' or 'out' depending * on the payment direction. i.e. mdjm_post_add_manual_txn_in and mdjm_post_add_manual_txn_out * * @since 1.3.7 * @param int $event_id * @param obj $txn_id */ do_action('mdjm_post_add_manual_txn_' . strtolower($_POST['direction']), $_POST['event_id'], $mdjm_txn->ID); // Email overide if (empty($_POST['send_notice']) && isset($manual_email_template)) { mdjm_update_option('manual_payment_cfm_template', $manual_email_template); } $result['deposit_paid'] = 'N'; $result['balance_paid'] = 'N'; if ($mdjm_event->get_remaining_deposit() < 1) { mdjm_update_event_meta($mdjm_event->ID, array('_mdjm_event_deposit_status' => 'Paid')); $result['deposit_paid'] = 'Y'; } if ($mdjm_event->get_balance() < 1) { mdjm_update_event_meta($mdjm_event->ID, array('_mdjm_event_balance_status' => 'Paid')); mdjm_update_event_meta($mdjm_event->ID, array('_mdjm_event_deposit_status' => 'Paid')); $result['balance_paid'] = 'Y'; $result['deposit_paid'] = 'Y'; } } else { $result['type'] = 'error'; $result['msg'] = __('Unable to add transaction', 'mobile-dj-manager'); } ob_start(); mdjm_do_event_txn_table($_POST['event_id']); $result['transactions'] = ob_get_contents(); ob_get_clean(); echo json_encode($result); die; }
/** * Output for the Communication Details meta box. * * @since 1.3 * @param obj $post The post object (WP_Post). * @return */ function mdjm_communication_details_metabox($post) { do_action('mdjm_pre_communication_details_metabox', $post); wp_nonce_field(basename(__FILE__), 'mdjm_communication' . '_nonce'); $from = get_userdata($post->post_author); $recipient = get_userdata(get_post_meta($post->ID, '_recipient', true)); $attachments = get_children(array('post_parent' => $post->ID, 'post_type' => 'attachment', 'number_posts' => -1, 'post_status' => 'any')); ?> <p><?php printf(__('<strong>Date Sent</strong>: %s', 'mobile-dj-manager'), date(mdjm_get_option('time_format', 'H:i') . ' ' . mdjm_get_option('short_date_format', 'd/m/Y'), get_post_meta($post->ID, '_date_sent', true))); ?> </p> <p><?php printf(__('<strong>From</strong>: <a href="%s">%s</a>', 'mobile-dj-manager'), admin_url("/user-edit.php?user_id={$from->ID}"), $from->display_name); ?> </p> <p><?php printf(__('<strong>Recipient</strong>: <a href="%s">%s</a>', 'mobile-dj-manager'), admin_url("/user-edit.php?user_id={$recipient->ID}"), $recipient->display_name); ?> </p> <?php $copies = get_post_meta($post->ID, '_mdjm_copy_to', true); if (!empty($copies)) { ?> <p><?php _e('<strong>Copied To</strong>: ', 'mobile-dj-manager'); ?> <?php $i = 1; foreach ($copies as $copy) { $user = get_user_by('email', $copy); if ($user) { echo "<em>{$user->display_name}</em>"; $i++; if ($i < count($copies)) { echo '<br />'; } } } ?> </p><?php } ?> <p><?php _e('<strong>Status</strong>:', 'mobile-dj-manager'); ?> <?php echo get_post_status_object($post->post_status)->label; if ($post->post_status == 'opened') { echo ' ' . date(mdjm_get_option('time_format', 'H:i') . ' ' . mdjm_get_option('short_date_format', 'd/m/Y'), strtotime($post->post_modified)); } ?> </p> <p><strong><?php echo mdjm_get_label_singular(); ?> </strong>: <a href="<?php echo get_edit_post_link(get_post_meta($post->ID, '_event', true)); ?> "><?php echo mdjm_get_event_contract_id(stripslashes(get_post_meta($post->ID, '_event', true))); ?> </a></p> <?php if (!empty($attachments)) { $i = 1; ?> <p><strong><?php _e('Attachments', 'mobile-dj-manager'); ?> </strong>:<br /> <?php foreach ($attachments as $attachment) { echo '<a style="font-size: 11px;" href="' . wp_get_attachment_url($attachment->ID) . '">'; echo basename(get_attached_file($attachment->ID)); echo '</a>'; echo $i < count($attachments) ? '<br />' : ''; $i++; } ?> </p> <?php } ?> <a class="button-secondary" href="<?php echo $_SERVER['HTTP_REFERER']; ?> " title="<?php _e('Back to List', 'mobile-dj-manager'); ?> "><?php _e('Back', 'mobile-dj-manager'); ?> </a> <?php do_action('mdjm_post_communication_details_metabox', $post); }
/** * Set the transaction post title and set as readonly. * * @since 1.0 * @param arr $actions Current post row actions * @param obj $post The WP_Post post object */ function mdjm_transaction_set_post_title($post) { if ('mdjm-transaction' != $post->post_type) { return; } ?> <script type="text/javascript"> jQuery(document).ready(function($) { $("#title").val("<?php echo mdjm_get_event_contract_id($post->ID); ?> "); $("#title").prop("readonly", true); }); </script> <?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'); }
/** * Send admin notice of payment. * * @since 1.3.8 * @param * @return void */ function mdjm_admin_payment_notice($txn_data) { if (isset($txn_data['gateway'])) { $gateway = mdjm_get_gateway_admin_label($txn_data['gateway']); } else { $gateway = mdjm_get_gateway_admin_label(mdjm_get_default_gateway()); } $subject = sprintf(__('%s Payment received via %s', 'mobile-dj-manager'), mdjm_get_label_singular(), $gateway); $subject = apply_filters('mdjm_admin_payment_notice_subject', $subject); $content = '<!DOCTYPE html>' . "\n"; $content .= '<html>' . "\n" . '<body>' . "\n"; $content .= '<p>' . __('Hi there', 'mobile-dj-manager') . ',</p>' . "\n"; $content .= '<p>' . __('A payment has just been received via MDJM Event Management', 'mobile-dj-manager') . '</p>' . "\n"; $content .= '<hr />' . "\n"; $content .= '<h4>' . sprintf(__('%s ID', 'mobile-dj-manager'), mdjm_get_label_singular()) . ': ' . mdjm_get_event_contract_id($txn_data['event_id']) . '</a></h4>' . "\n"; $content .= '<p>' . "\n"; $content .= __('Date', 'mobile-dj-manager') . ': {event_date}<br />' . "\n"; $content .= __('Status', 'mobile-dj-manager') . ': {event_status}<br />' . "\n"; $content .= __('Client', 'mobile-dj-manager') . ': {client_fullname}<br />' . "\n"; $content .= __('Payment Date', 'mobile-dj-manager') . ': {payment_date}<br />' . "\n"; $content .= __('For', 'mobile-dj-manager') . ': {payment_for}<br />' . "\n"; $content .= __('Amount', 'mobile-dj-manager') . ': {payment_amount}<br />' . "\n"; $content .= __('Merchant', 'mobile-dj-manager') . ': ' . $gateway . '<br />' . "\n"; if (!empty($txn_data['fee'])) { $content .= __('Transaction Fee', 'mobile-dj-manager') . ': ' . mdjm_currency_filter(mdjm_format_amount($txn_data['fee'])) . '</span><br />' . "\n"; $content .= '<strong>' . __('Total Received', 'mobile-dj-manager') . ': ' . mdjm_currency_filter(mdjm_format_amount($txn_data['total'] - $txn_data['fee'])) . '</strong><br />' . "\n"; } $content .= __('Outstanding Balance', 'mobile-dj-manager') . ': {balance}</p>' . "\n"; $content .= sprintf(__('<a href="%s">View %s</a>', 'mobile-dj-manager'), admin_url('post.php?post=' . $txn_data['event_id'] . '&action=edit'), mdjm_get_label_singular()) . '</p>' . "\n"; $content .= '<hr />' . "\n"; $content .= '<p>' . __('Regards', 'mobile-dj-manager') . '<br />' . "\n"; $content .= '{company_name}</p>' . "\n"; $content .= '</body>' . "\n"; $content .= '</html>' . "\n"; $content = apply_filters('mdjm_admin_payment_notice_content', $content); mdjm_send_email_content(array('to_email' => mdjm_get_option('system_email'), 'from_name' => mdjm_get_option('company_name'), 'from_email' => mdjm_get_option('system_email'), 'event_id' => $txn_data['event_id'], 'client_id' => mdjm_get_event_client_id($txn_data['event_id']), 'subject' => $subject, 'message' => $content, 'copy_to' => 'disable', 'source' => __('Automated Payment Received', 'mobile-dj-manager'))); }
/** * Creates an event * * @since 1.3 * @param arr $data Array of attributes for an event. See $defaults. * @return mixed false if data isn't passed and class not instantiated for creation, or New Event ID */ public function create($data = array(), $meta = array()) { if ($this->id != 0) { return false; } remove_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3); $defaults = array('post_type' => 'mdjm-event', 'post_author' => 1, 'post_content' => '', 'post_status' => 'mdjm-enquiry', 'post_title' => __('New Event', 'mobile-dj-manager')); $default_meta = array('_mdjm_event_date' => date('Y-m-d'), '_mdjm_event_dj' => !mdjm_get_option('employer') ? 1 : 0, '_mdjm_event_playlist_access' => mdjm_generate_playlist_guest_code(), '_mdjm_event_playlist' => mdjm_get_option('enable_playlists') ? 'Y' : 'N', '_mdjm_event_contract' => mdjm_get_default_event_contract(), '_mdjm_event_cost' => 0, '_mdjm_event_deposit' => 0, '_mdjm_event_deposit_status' => __('Due', 'mobile-dj-manager'), '_mdjm_event_balance_status' => __('Due', 'mobile-dj-manager'), 'mdjm_event_type' => mdjm_get_option('event_type_default'), 'mdjm_enquiry_source' => mdjm_get_option('enquiry_source_default'), '_mdjm_event_venue_id' => 'Manual'); $data = wp_parse_args($data, $defaults); $meta = wp_parse_args($meta, $default_meta); do_action('mdjm_event_pre_create', $data, $meta); $id = wp_insert_post($data, true); $event = WP_Post::get_instance($id); if ($event) { if (!empty($meta['mdjm_event_type'])) { mdjm_set_event_type($event->ID, $meta['mdjm_event_type']); $meta['_mdjm_event_name'] = get_term($meta['mdjm_event_type'], 'event-types')->name; $meta['_mdjm_event_name'] = apply_filters('mdjm_event_name', $meta['_mdjm_event_name'], $id); } if (!empty($meta['mdjm_enquiry_source'])) { mdjm_set_enquiry_source($event->ID, $meta['mdjm_enquiry_source']); } if (!empty($meta['_mdjm_event_start']) && !empty($meta['_mdjm_event_finish'])) { if (date('H', strtotime($meta['_mdjm_event_finish'])) > date('H', strtotime($meta['_mdjm_event_start']))) { $meta['_mdjm_event_end_date'] = $meta['_mdjm_event_date']; } else { $meta['_mdjm_event_end_date'] = date('Y-m-d', strtotime('+1 day', strtotime($meta['_mdjm_event_date']))); } } if (!empty($meta['_mdjm_event_package'])) { $meta['_mdjm_event_cost'] += mdjm_get_package_price($meta['_mdjm_event_package'], $meta['_mdjm_event_date']); } if (!empty($meta['_mdjm_event_addons'])) { foreach ($meta['_mdjm_event_addons'] as $addon) { $meta['_mdjm_event_cost'] += mdjm_get_addon_price($addon); } } if (empty($meta['_mdjm_event_deposit'])) { $meta['_mdjm_event_deposit'] = mdjm_calculate_deposit($meta['_mdjm_event_cost']); } mdjm_update_event_meta($event->ID, $meta); wp_update_post(array('ID' => $id, 'post_title' => mdjm_get_event_contract_id($id), 'post_name' => mdjm_get_event_contract_id($id))); } do_action('mdjm_event_post_create', $id, $data); add_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3); return $this->setup_event($event); }
/** * Get the Export Data * * @access public * @since 1.4 * @return arr $data The data for the CSV file */ public function get_data() { $data = array(); // Export all events $offset = 30 * ($this->step - 1); $args = array('post_type' => 'mdjm-event', 'posts_per_page' => 30, 'offset' => $offset, 'paged' => $this->step, 'post_status' => $this->status, 'order' => 'ASC', 'orderby' => 'ID'); if (!empty($this->start) || !empty($this->end)) { $args['meta_query'] = array(array('key' => '_mdjm_event_date', 'value' => array(date('Y-m-d', strtotime($this->start)), date('Y-m-d', strtotime($this->end))), 'compare' => 'BETWEEN', 'type' => 'DATE')); } $events = get_posts($args); if ($events) { $i = 0; foreach ($events as $event) { $event_data = mdjm_get_event_data($event->ID); $employees = array(); $package = ''; $addons = array(); if (!empty($event_data['client'])) { $client = '(' . $event_data['client'] . ') ' . mdjm_get_client_display_name($event_data['client']); } if (!empty($event_data['employees']['primary_employee'])) { $primary_employee = '(' . $event_data['employees']['primary_employee'] . ') ' . mdjm_get_employee_display_name($event_data['employees']['primary_employee']); } if (!empty($event_data['employees']['employees'])) { foreach ($event_data['employees']['employees'] as $employee_id => $employee_data) { $employees[] = '(' . $employee_id . ') ' . mdjm_get_employee_display_name($employee_id); } } if (!empty($event_data['equipment']['package'])) { $package = $event_data['equipment']['package']; } if (!empty($event_data['equipment']['addons'])) { foreach ($event_data['equipment']['addons'] as $addon_id) { $addons[] = mdjm_get_addon_name($addon_id); } } $data[$i] = array('id' => $event->ID, 'event_id' => mdjm_get_event_contract_id($event->ID), 'date' => mdjm_format_short_date($event_data['date']), 'status' => $event_data['status'], 'client' => $client, 'primary_employee' => '(' . $event_data['employees']['primary_employee'] . ') ' . mdjm_get_client_display_name($event_data['employees']['primary_employee']), 'employees' => implode(',', $employees), 'package' => $package, 'addons' => implode(', ', $addons), 'cost' => mdjm_format_amount($event_data['cost']['cost']), 'deposit' => mdjm_format_amount($event_data['cost']['deposit']), 'deposit_status' => $event_data['cost']['deposit_status'], 'balance' => mdjm_format_amount($event_data['cost']['balance']), 'balance_status' => $event_data['cost']['balance_status'], 'start_time' => mdjm_format_time($event_data['start_time']), 'end_time' => mdjm_format_time($event_data['end_time']), 'end_date' => mdjm_format_short_date($event_data['end_date']), 'setup_date' => mdjm_format_short_date($event_data['setup_date']), 'setup_time' => mdjm_format_time($event_data['setup_time']), 'duration' => $event_data['duration'], 'contract' => $event_data['contract'], 'contract_status' => $event_data['contract_status'], 'playlist_enabled' => $event_data['playlist']['playlist_enabled'], 'playlist_status' => $event_data['playlist']['playlist_status'], 'source' => $event_data['source'], 'converted' => $event_data['contract_status'], 'venue' => $event_data['venue']['name'], 'address' => !empty($event_data['venue']['address']) ? implode(', ', $event_data['venue']['address']) : ''); $i++; } $data = apply_filters('mdjm_export_get_data', $data); $data = apply_filters('mdjm_export_get_data_' . $this->export_type, $data); return $data; } return false; }
/** * Define the data to be displayed in each of the custom columns for the Communication post types * * @since 0.9 * @param str $column_name The name of the column to display * @param int $post_id The current post ID * @return */ function mdjm_communication_posts_custom_column($column_name, $post_id) { global $post; switch ($column_name) { // Date Sent case 'date_sent': echo date(mdjm_get_option('time_format', 'H:i') . ' ' . mdjm_get_option('short_date_format', 'd/m/Y'), get_post_meta($post_id, '_date_sent', true)); break; // From // From case 'from': $author = get_userdata($post->post_author); if ($author) { printf('<a href="%s">%s</a>', admin_url("user-edit.php?user_id={$author->ID}"), ucwords($author->display_name)); } else { echo get_post_meta($post_id, '_recipient'); } break; // Recipient // Recipient case 'recipient': $client = get_userdata(get_post_meta($post_id, '_recipient', true)); if ($client) { printf('<a href="%s">%s</a>', admin_url("user-edit.php?user_id={$client->ID}"), ucwords($client->display_name)); } else { echo __('Recipient no longer exists', 'mobile-dj-manager'); } $copies = get_post_meta($post_id, '_mdjm_copy_to', true); if (!empty($copies)) { if (!is_array($copies)) { $copies = array($copies); } foreach ($copies as $copy) { $user = get_user_by('email', $copy); if ($user) { echo "<br /><em>{$user->display_name} (copy)</em>"; } } } break; // Associated Event // Associated Event case 'event': $event_id = get_post_meta($post_id, '_event', true); if (!empty($event_id)) { echo '<a href="' . get_edit_post_link($event_id) . '">' . mdjm_get_event_contract_id($event_id) . '</a>'; } else { _e('N/A', 'mobile-dj-manager'); } break; // Status // Status case 'current_status': echo get_post_status_object($post->post_status)->label; if (!empty($post->post_modified) && 'opened' == $post->post_status) { echo '<br />'; echo '<em>' . date(mdjm_get_option('time_format', 'H:i') . ' ' . mdjm_get_option('short_date_format', 'd/m/Y'), strtotime($post->post_modified)) . '</em>'; } break; // Source // Source case 'source': echo stripslashes(get_post_meta($post_id, '_source', true)); break; } // switch }
/** * Generates a new online quote for the event. * * Uses the quote template defined within settings unless $template_id is provided. * * @since 1.3 * @param int $event_id The event ID. * @param int $template_id The template ID from which to create the quote. * @return int $quote_id The ID of the newly created post or false on fail. */ function mdjm_create_online_quote($event_id, $template_id = '') { $existing_id = mdjm_get_event_quote_id($event_id); $template_id = !empty($template_id) ? $template_id : mdjm_get_option('online_enquiry'); if (empty($template_id)) { return false; } /** * Allow filtering of the quote template. * * @since 1.3 * @param $template_id */ $template_id = apply_filters('mdjm_online_quote_template', $template_id); $template = get_post($template_id); if (!$template) { return false; } /** * Fire the `mdjm_pre_create_online_quote` hook. * * @since 1.3 * @param int $event_id The Event ID * @param int $template_id The quote template ID * @param obj $template The quote template WP_Post object */ do_action('mdjm_pre_create_online_quote', $event_id, $template_id, $template); $client_id = mdjm_get_event_client_id($event_id); $content = $template->post_content; $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); $content = mdjm_do_content_tags($content, $event_id, $client_id); $args = array('ID' => $existing_id, 'post_date' => current_time('mysql'), 'post_modified' => current_time('mysql'), 'post_title' => sprintf(__('Quote %s', 'mobile-dj-manager'), mdjm_get_event_contract_id($event_id)), 'post_content' => $content, 'post_type' => 'mdjm-quotes', 'post_status' => 'mdjm-quote-generated', 'post_author' => !empty($client_id) ? $client_id : 1, 'post_parent' => $event_id, 'meta_input' => array('_mdjm_quote_viewed_date' => 0, '_mdjm_quote_viewed_count' => 0)); /** * Allow filtering of the quote template args. * * @since 1.3 * @param $args */ $args = apply_filters('mdjm_create_online_quote_args', $args); $quote_id = wp_insert_post($args); if (!$quote_id) { return false; } // Reset view date and count for existing quotes if (!empty($existing_id)) { delete_post_meta($quote_id, '_mdjm_quote_viewed_date'); delete_post_meta($quote_id, '_mdjm_quote_viewed_count'); } /** * Fire the `mdjm_post_create_online_quote` hook. * * @since 1.3 * @param int $quote_id The new quote ID */ do_action('mdjm_pre_create_online_quote', $quote_id); return $quote_id; }