function update_settings() { MDJM()->debug->log_it('Updating Settings for version 1.2.4'); $mdjm_paypal_settings = get_option('mdjm_paypal_settings'); $mdjm_payment_settings = get_option('mdjm_payment_settings'); $mdjm_clientzone_settings = get_option('mdjm_clientzone_settings'); // Set the payment gateway - PayPal or none if (!empty($mdjm_paypal_settings['enable_paypal'])) { $mdjm_payment_settings['payment_gateway'] = 'paypal'; } else { $mdjm_payment_settings['payment_gateway'] = false; } // Remove the enable PayPal setting as no longer required unset($mdjm_paypal_settings['enable_paypal']); // Setup PayFast default options $mdjm_payfast_settings = array('merchant_id' => '', 'merchant_key' => '', 'email_confirmation' => get_bloginfo('admin_email'), 'redirect_pf_success' => !empty($mdjm_paypal_settings['redirect_success']) ? $mdjm_paypal_settings['redirect_success'] : 'N', 'redirect_pf_cancel' => !empty($mdjm_paypal_settings['redirect_cancel']) ? $mdjm_paypal_settings['redirect_cancel'] : 'N', 'payfast_button' => 'paynow_basic_logo.gif', 'enable_pf_sandbox' => false, 'sandbox_merchant_id' => '', 'sandbox_merchant_key' => '', 'payfast_debug' => false); // Add the notification to admin on event status change setting $mdjm_clientzone_settings['mdjm_clientzone_settings'] = true; update_option('mdjm_paypal_settings', $mdjm_paypal_settings); update_option('mdjm_payfast_settings', $mdjm_payfast_settings); update_option('mdjm_payment_settings', $mdjm_payment_settings); update_option('mdjm_clientzone_settings', $mdjm_clientzone_settings); $status = get_option('__mydj_validation'); if ($status['key'] == 'XXXX' || ($status['type'] = 'trial' || time() >= strtotime($status['expire']))) { add_option('mdjm_price_warn', 1, '', 'yes'); } MDJM()->debug->log_it('Settings Updated'); }
function update_settings() { MDJM()->debug->log_it('Updating Settings for version 1.2.3.3'); if (!get_option('m_d_j_m_has_initiated')) { add_option('m_d_j_m_has_initiated', current_time('timestamp')); } MDJM()->debug->log_it('Settings Updated'); }
function update_settings() { $payment_settings = get_option('mdjm_payment_settings'); MDJM()->debug->log_it('Updating Payment settings', false); $payment_settings['deposit_type'] = false; $payment_settings['deposit_amount'] = '50.00'; update_option('mdjm_payment_settings', $payment_settings); }
function update_settings() { MDJM()->debug->log_it('Updating Settings for version 1.2.7'); // Update the Availability Checker settings and set default settings for Unavailable Status $mdjm_availability_settings = get_option('mdjm_availability_settings'); $mdjm_availability_settings['availability_status'] = array('mdjm-enquiry', 'mdjm-contract', 'mdjm-approved'); update_option('mdjm_availability_settings', $mdjm_availability_settings); MDJM()->debug->log_it('Settings Updated'); }
function update_settings() { MDJM()->debug->log_it('Updating Settings'); // Add the enable playlist setting option and enable by default $playlist_settings = get_option('mdjm_playlist_settings'); $playlist_settings['enable_playlists'] = true; update_option('mdjm_playlist_settings', $playlist_settings); MDJM()->debug->log_it('Settings Updated'); }
function update_settings() { MDJM()->debug->log_it('Updating Settings for version 1.2.4.1'); $status = get_option('__mydj_validation'); if ($status['key'] == 'XXXX' || ($status['type'] = 'trial' || time() >= strtotime($status['expire']))) { add_option('mdjm_price_warn', 1, '', 'yes'); } MDJM()->debug->log_it('Settings Updated'); }
function create_template() { MDJM()->debug->log_it('Adding quote template for version 1.2.3.3'); include MDJM_PLUGIN_DIR . '/includes/admin/mdjm-templates.php'; if (wp_insert_post($online_quote_template_args)) { MDJM()->debug->log_it(' Online Quote template created successfully'); } else { MDJM()->debug->log_it(' Online Quote template was not created'); } MDJM()->debug->log_it('Quote template added'); }
function update_settings() { MDJM()->debug->log_it('Updating Settings for version 1.2.3.6'); $mdjm_paypal_settings = get_option('mdjm_paypal_settings'); $mdjm_payment_settings = get_option('mdjm_payment_settings'); $mdjm_paypal_settings['button_text'] = __('Pay Now', 'mobile-dj-manager'); // Customised HTML button text for payments $mdjm_payment_settings['other_amount_label'] = __('Other Amount', 'mobile-dj-manager'); // Customised text for other amoun radio field update_option('mdjm_paypal_settings', $mdjm_paypal_settings); update_option('mdjm_payment_settings', $mdjm_payment_settings); MDJM()->debug->log_it('Settings Updated'); }
/** * Remove deprecated DB tables * * * * */ function remove_deprecated_db_tables() { global $wpdb; MDJM()->debug->log_it('Removing deprecated DB tables'); $tables = array('Events' => $wpdb->prefix . 'mdjm_events', 'Music Library' => $wpdb->prefix . 'mdjm_music_library', 'Transactions' => $wpdb->prefix . 'mdjm_trans', 'Journal' => $wpdb->prefix . 'mdjm_journal'); foreach ($tables as $table_display => $table_name) { $results = $wpdb->get_results("SHOW TABLES LIKE '" . $table_name . "'"); if ($results) { $wpdb->query('DROP TABLE IF EXISTS ' . $table_name); MDJM()->debug->log_it($table_name . ' Removed'); } } MDJM()->debug->log_it('Completed removing deprecated DB tables'); }
function update_playlist() { global $wpdb; MDJM()->debug->log_it('Updating playlist entries'); $query = "SELECT * FROM " . MDJM_PLAYLIST_TABLE . " WHERE `date_to_mdjm` IS NOT NULL AND `date_to_mdjm` != '' AND `date_to_mdjm` != '0000-00-00 00:00:00' ORDER BY `event_id`"; $records = $wpdb->get_results($query); $rows = $wpdb->num_rows; MDJM()->debug->log_it($rows . ' ' . _n('record ', 'records ', $rows) . ' to update'); if ($rows > 0) { $i = 0; foreach ($records as $record) { $wpdb->update(MDJM_PLAYLIST_TABLE, array('upload_procedure' => '1'), array('id' => $record->id)); $i++; } MDJM()->debug->log_it($i . ' ' . _n('record ', 'records ', $rows) . ' updated'); } else { MDJM()->debug->log_it('No records to update'); } }
function update_settings() { MDJM()->debug->log_it('Updating Settings for version 1.2.5'); // Copy the payment gateway settings over the the MDJM PG addon even if it is not installed yet $mdjm_paypal_settings = get_option('mdjm_paypal_settings'); $mdjm_payfast_settings = get_option('mdjm_payfast_settings'); if (!empty($mdjm_paypal_settings)) { update_option('mdjm_pg_paypal', $mdjm_paypal_settings); } if (!empty($mdjm_payfast_settings)) { update_option('mdjm_pg_payfast', $mdjm_payfast_settings); } // Now delete the options from the MDJM Settings delete_option('mdjm_paypal_settings'); delete_option('mdjm_payfast_settings'); // Delete no longer required settings delete_option('__mydj_validation'); delete_option('m_d_j_m_has_initiated'); delete_option('mdjm_pp_options'); delete_option('mdjm_price_warn'); MDJM()->debug->log_it('Settings Updated'); }
function update_profile() { global $mdjm, $current_user; MDJM()->debug->log_it('Starting user profile update for user ' . $current_user->display_name, true); // Firstly, our security check if (!isset($_POST['__mdjm_user']) || !wp_verify_nonce($_POST['__mdjm_user'], 'manage_client_profile')) { MDJM()->debug->log_it('Security verification failed during update. No update occured', false); return parent::display_message(4, 4); } else { // Set our variables for updating $update_fields = array('ID' => $current_user->ID); $update_meta = array(); // Process the standard fields $update_fields['first_name'] = sanitize_text_field(ucfirst($_POST['first_name'])); $update_fields['last_name'] = sanitize_text_field(ucfirst($_POST['last_name'])); $update_fields['user_email'] = sanitize_email($_POST['user_email']); // Now the custom fields foreach ($this->fields as $field) { if (!isset($field['required']) || empty($field['display'])) { continue; } if ($field['type'] == 'text' || $field['type'] == 'dropdown') { $update_meta[$field['id']] = !empty($_POST[$field['id']]) ? sanitize_text_field($_POST[$field['id']]) : ''; } if ($field['type'] == 'checkbox') { $update_meta[$field['id']] = !empty($_POST[$field['id']]) ? $_POST[$field['id']] : '0'; } } // Password Reset Validation if required if (!empty($_POST['new_password']) && $_POST['new_password'] != $_POST['new_password_confirm']) { $pass_error = true; } if (!empty($_POST['new_password']) && $_POST['new_password'] == $_POST['new_password_confirm']) { $update_fields['user_pass'] = $_POST['new_password']; } // Process field updates starting with custom fields foreach ($update_meta as $meta_key => $meta_value) { if (update_user_meta($current_user->ID, $meta_key, $meta_value)) { MDJM()->debug->log_it('Success: User profile field ' . $meta_key . ' updated with value ' . $meta_value, false); } else { MDJM()->debug->log_it('Failure: User profile field ' . $meta_key . ' could not be updated with value ' . $meta_value, false); } } // And now built-in fields $user_id = wp_update_user($update_fields); // If we changed the password, we need to logout if (isset($update_fields['user_pass'])) { MDJM()->debug->log_it('User password was changed. Logging user out', false); wp_logout(); ?> <script type="text/javascript"> window.location.replace("<?php echo mdjm_get_formatted_url(mdjm_get_option('profile_page')); ?> "); </script> <?php exit; } // We're done if (is_wp_error($user_id)) { parent::display_notice(4, 'Unable to update your profile. ' . $user_id->get_error_message()); } else { parent::display_notice(2, 'Your profile has been updated successfully'); } if (isset($pass_error) && $pass_error == true) { parent::display_notice(4, 'Unable to change your password. Check the password\'s you entered match!'); } } }
/** * Renders the 'Export' tab on the Reports Page * * @since 1.4 * @return void */ function mdjm_reports_tab_export() { if (!mdjm_employee_can('run_reports')) { wp_die(__('You do not have permission to export reports', 'mobile-dj-manager'), __('Error', 'mobile-dj-manager'), array('response' => 403)); } $label_single = mdjm_get_label_singular(); $label_plural = mdjm_get_label_plural(); ?> <div id="mdjm-dashboard-widgets-wrap"> <div class="metabox-holder"> <div id="post-body"> <div id="post-body-content"> <?php do_action('mdjm_reports_tab_export_content_top'); ?> <div class="postbox mdjm-export-events-earnings"> <h3><span><?php _e('Export Transaction History', 'mobile-dj-manager'); ?> </span></h3> <div class="inside"> <p><?php _e('Download a CSV of all transactions recorded.'); ?> </p> <form id="mdjm-export-txns" class="mdjm-export-form mdjm-import-export-form" method="post"> <?php mdjm_insert_datepicker(array('id' => 'mdjm-txn-export-start', 'altfield' => 'txn_start')); ?> <?php echo MDJM()->html->date_field(array('id' => 'mdjm-txn-export-start', 'name' => 'display_start_date', 'placeholder' => __('Select Start Date', 'mobile-dj-manager'))); ?> <?php echo MDJM()->html->hidden(array('name' => 'txn_start')); ?> <?php mdjm_insert_datepicker(array('id' => 'mdjm-txn-export-end', 'altfield' => 'txn_end')); ?> <?php echo MDJM()->html->date_field(array('id' => 'mdjm-txn-export-end', 'name' => 'display_end_date', 'placeholder' => __('Select End Date', 'mobile-dj-manager'))); ?> <?php echo MDJM()->html->hidden(array('name' => 'txn_end')); ?> <select name="txn_status"> <option value=""><?php _e('All Statuses', 'mobile-dj-manager'); ?> </option> <option value="Completed"><?php _e('Completed', 'mobile-dj-manager'); ?> </option> <option value="Pending"><?php _e('Pending', 'mobile-dj-manager'); ?> </option> <option value="Cancelled"><?php _e('Cancelled', 'mobile-dj-manager'); ?> </option> </select> <?php wp_nonce_field('mdjm_ajax_export', 'mdjm_ajax_export'); ?> <input type="hidden" name="mdjm-export-class" value="MDJM_Batch_Export_Txns"/> <span> <input type="submit" value="<?php _e('Generate CSV', 'mobile-dj-manager'); ?> " class="button-secondary"/> <span class="spinner"></span> </span> </form> </div><!-- .inside --> </div><!-- .postbox --> <div class="postbox mdjm-export-events"> <h3><span><?php printf(__('Export %s', 'mobile-dj-manager'), $label_plural); ?> </span></h3> <div class="inside"> <p><?php printf(__('Download a CSV of %s data.'), $label_plural); ?> </p> <form id="mdjm-export-events" class="mdjm-export-form mdjm-import-export-form" method="post"> <?php mdjm_insert_datepicker(array('id' => 'mdjm-event-export-start', 'altfield' => 'event_start')); ?> <?php echo MDJM()->html->date_field(array('id' => 'mdjm-event-export-start', 'name' => 'display_start_date', 'placeholder' => __('Select Start Date', 'mobile-dj-manager'))); ?> <?php echo MDJM()->html->hidden(array('name' => 'event_start')); ?> <?php mdjm_insert_datepicker(array('id' => 'mdjm-event-export-end', 'altfield' => 'event_end')); ?> <?php echo MDJM()->html->date_field(array('id' => 'mdjm-event-export-end', 'name' => 'display_end_date', 'placeholder' => __('Select End Date', 'mobile-dj-manager'))); ?> <?php echo MDJM()->html->hidden(array('name' => 'event_end')); ?> <select name="event_status"> <option value="any"><?php _e('All Statuses', 'mobile-dj-manager'); ?> </option> <?php foreach (mdjm_all_event_status() as $status => $label) { ?> <option value="<?php echo $status; ?> "><?php echo $label; ?> </option> <?php } ?> </select> <?php wp_nonce_field('mdjm_ajax_export', 'mdjm_ajax_export'); ?> <input type="hidden" name="mdjm-export-class" value="MDJM_Batch_Export_Events"/> <span> <input type="submit" value="<?php _e('Generate CSV', 'mobile-dj-manager'); ?> " class="button-secondary"/> <span class="spinner"></span> </span> </form> </div><!-- .inside --> </div><!-- .postbox --> <div class="postbox mdjm-export-clients"> <h3><span><?php _e('Export Clients', 'mobile-dj-manager'); ?> </span></h3> <div class="inside"> <p><?php _e('Download a CSV of clients.', 'mobile-dj-manager'); ?> </p> <form id="mdjm-export-clients" class="mdjm-export-form mdjm-import-export-form" method="post"> <?php wp_nonce_field('mdjm_ajax_export', 'mdjm_ajax_export'); ?> <input type="hidden" name="mdjm-export-class" value="MDJM_Batch_Export_Clients"/> <input type="submit" value="<?php _e('Generate CSV', 'mobile-dj-manager'); ?> " class="button-secondary"/> </form> </div><!-- .inside --> </div><!-- .postbox --> <?php if (mdjm_is_employer()) { ?> <div class="postbox mdjm-export-employees"> <h3><span><?php _e('Export Employees', 'mobile-dj-manager'); ?> </span></h3> <div class="inside"> <p><?php _e('Download a CSV of employees.', 'mobile-dj-manager'); ?> </p> <form id="mdjm-export-employees" class="mdjm-export-form mdjm-import-export-form" method="post"> <?php wp_nonce_field('mdjm_ajax_export', 'mdjm_ajax_export'); ?> <input type="hidden" name="mdjm-export-class" value="MDJM_Batch_Export_Employees"/> <input type="submit" value="<?php _e('Generate CSV', 'mobile-dj-manager'); ?> " class="button-secondary"/> </form> </div><!-- .inside --> </div><!-- .postbox --> <?php } ?> </div><!-- .post-body-content --> </div><!-- .post-body --> </div><!-- .metabox-holder --> </div><!-- #mdjm-dashboard-widgets-wrap --> <?php }
/** * Email the manual payment confirmation to the client from a customisable email template. * * @since 1.3 * @param int $event_id The event ID * @return void */ function mdjm_email_manual_payment_confirmation($event_id) { if (!mdjm_get_option('manual_payment_cfm_template')) { return; } $mdjm_event = mdjm_get_event($event_id); $from_name = mdjm_email_set_from_name('manual_payment', $mdjm_event); $from_name = apply_filters('mdjm_email_from_name', $from_name, 'manual_payment', $mdjm_event); $from_email = mdjm_email_set_from_address('manual_payment', $mdjm_event); $from_email = apply_filters('mdjm_email_from_address', $from_email, 'manual_payment', $mdjm_event); $client = get_userdata($mdjm_event->client); $to_email = $client->user_email; $subject = mdjm_email_set_subject(mdjm_get_option('manual_payment_cfm_template', false)); $subject = apply_filters('mdjm_manual_payment_subject', wp_strip_all_tags($subject)); $subject = mdjm_do_content_tags($subject, $event_id, $mdjm_event->client); $attachments = apply_filters('mdjm_manual_payment_attachments', array(), $mdjm_event); $message = mdjm_get_email_template_content(mdjm_get_option('manual_payment_cfm_template', false)); $message = mdjm_do_content_tags($message, $event_id, $mdjm_event->client); $emails = MDJM()->emails; $emails->__set('event_id', $mdjm_event->ID); $emails->__set('from_name', $from_name); $emails->__set('from_address', $from_email); $headers = apply_filters('mdjm_manual_payment_headers', $emails->get_headers(), $event_id, $mdjm_event->client); $emails->__set('headers', $headers); $emails->__set('track', apply_filters('mdjm_track_email_manual_payment', mdjm_get_option('track_client_emails'))); if (mdjm_get_option('bcc_admin_to_client')) { $emails->__set('copy_to', array(mdjm_get_option('system_email'))); } $emails->send($to_email, $subject, $message, $attachments, sprintf(__('Payment received confirmation for %s', 'mobile-dj-manager'), mdjm_get_label_singular())); }
public function add_journal($data, $meta) { global $mdjm, $post; if (MDJM_JOURNAL != true) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('ERROR: Instructed to Journal whilst Journalling is disabled'); } return; } if (empty($data['comment_content'])) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('ERROR: Missing Comment Contents in ' . __FUNCTION__, true); } return false; } if (empty($meta['type'])) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('ERROR: Missing Comment Type in ' . __FUNCTION__, true); } return false; } /* -- Disable Comment Flood Prevention -- */ add_filter('comment_flood_filter', '__return_false'); $event_id = !empty($data['event']) ? $data['event'] : $post->ID; if (empty($event_id)) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('ERROR: Missing event id in ' . __FUNCTION__, true); } return false; } /* -- Set the content -- */ if (isset($data['user'])) { $commenter = get_userdata($data['user']); } else { $commenter = 'mdjm'; } $comment_data = array('comment_post_ID' => (int) $event_id, 'comment_author' => $commenter != 'mdjm' ? $commenter->display_name : '', 'comment_author_email' => $commenter != 'mdjm' ? $commenter->user_email : '', 'comment_author_IP' => !empty($_SERVER['REMOTE_ADDR']) ? preg_replace('/[^0-9a-fA-F:., ]/', '', $_SERVER['REMOTE_ADDR']) : '', 'comment_agent' => isset($_SERVER['HTTP_USER_AGENT']) ? substr($_SERVER['HTTP_USER_AGENT'], 0, 254) : '', 'comment_author_url' => $commenter != 'mdjm' ? !empty($commenter->user_url) ? $commenter->user_url : '' : '', 'comment_content' => $data['comment_content'] . ' (' . time() . ')', 'comment_type' => !empty($data['comment_type']) ? $data['comment_type'] : 'mdjm-journal', 'comment_date' => !empty($data['comment_date']) ? $data['comment_date'] : current_time('mysql'), 'user_id' => $commenter != 'mdjm' ? $commenter->ID : '0', 'comment_parent' => 0, 'comment_approved' => 1); // Filter the comment data before inserting $comment_data = apply_filters('preprocess_comment', $comment_data); $comment_data = wp_filter_comment($comment_data); /* -- Disable comment duplication check filter -- */ remove_filter('commentdata', 'comment_duplicate_trigger'); /* -- Insert the entry -- */ $comment_id = wp_insert_comment($comment_data); if (empty($comment_id)) { return false; } /* -- Set the meta -- */ $comment_meta = array('mdjm_type' => $meta['type'], 'mdjm_visibility' => !empty($meta['visibility']) ? $meta['visibility'] : '0', 'mdjm_notify' => !empty($meta['notify']) ? $meta['notify'] : '', 'mdjm_to' => !empty($meta['to']) ? $meta['to'] : '', 'mdjm_isread' => !empty($meta['isread']) ? $meta['isread'] : ''); /* -- Insert the meta -- */ foreach ($comment_meta as $key => $value) { if (!empty($value)) { add_comment_meta($comment_id, $key, $value, false); } } /* -- Enable comment filter -- */ add_filter('commentdata', 'comment_duplicate_trigger'); return $comment_id; }
function __construct() { MDJM()->debug->log_it('No updates required for version 1.2.7.2'); }
/** * Save the meta data for the transaction * * @since 0.7 * @param int $post_id The current post ID. * @param obj $post The current post object (WP_Post). * @param bool $update Whether this is an existing post being updated or not. * @return void */ function mdjm_save_txn_post($post_id, $post, $update) { global $mdjm_settings; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } if ($post->post_status == 'trash') { return; } if (empty($update)) { return; } // Permission Check if (!mdjm_employee_can('edit_txns')) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('PERMISSION ERROR: User ' . get_current_user_id() . ' is not allowed to edit transactions'); } return; } // Remove the save post action to avoid loops remove_action('save_post_mdjm-transaction', 'mdjm_save_txn_post', 10, 3); // Fire our pre-save hook do_action('mdjm_before_txn_save', $post_id, $post, $update); $trans_type = get_term($_POST['mdjm_transaction_type'], 'transaction-types'); // Set the post data $trans_data['ID'] = $post_id; $trans_data['post_status'] = $_POST['transaction_direction'] == 'Out' ? 'mdjm-expenditure' : 'mdjm-income'; $trans_data['post_date'] = date('Y-m-d H:i:s', strtotime($_POST['transaction_date'])); $trans_data['edit_date'] = true; $trans_data['post_author'] = get_current_user_id(); $trans_data['post_type'] = 'mdjm-transaction'; $trans_data['post_category'] = array($_POST['mdjm_transaction_type']); // Set the post meta $trans_meta['_mdjm_txn_status'] = sanitize_text_field($_POST['transaction_status']); $trans_meta['_mdjm_txn_source'] = sanitize_text_field($_POST['transaction_src']); $trans_meta['_mdjm_txn_total'] = $_POST['transaction_amount']; $trans_meta['_mdjm_txn_notes'] = sanitize_text_field($_POST['transaction_description']); if ($_POST['transaction_direction'] == 'In') { $trans_meta['_mdjm_payment_from'] = sanitize_text_field($_POST['transaction_payee']); } elseif ($_POST['transaction_direction'] == 'Out') { $trans_meta['_mdjm_payment_to'] = sanitize_text_field($_POST['transaction_payee']); } $trans_meta['_mdjm_txn_currency'] = mdjm_get_currency(); // Update the post if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Updating the transaction'); } wp_update_post($trans_data); // Set the transaction Type if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Setting the transaction type'); } wp_set_post_terms($post_id, $_POST['mdjm_transaction_type'], 'transaction-types'); // Add the meta data if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Updating the transaction post meta'); } // Loop through the post meta and add/update/delete the meta keys. foreach ($trans_meta as $meta_key => $new_meta_value) { $current_meta_value = get_post_meta($post_id, $meta_key, true); // If we have a value and the key did not exist previously, add it. if (!empty($new_meta_value) && empty($current_meta_value)) { add_post_meta($post_id, $meta_key, $new_meta_value, true); } elseif (!empty($new_meta_value) && $new_meta_value != $current_meta_value) { update_post_meta($post_id, $meta_key, $new_meta_value); } elseif (empty($new_meta_value) && !empty($current_meta_value)) { delete_post_meta($post_id, $meta_key, $new_meta_value); } } // Fire our post txn save hook do_action('mdjm_after_txn_save', $post_id, $post, $update); // Re-add the save post action to avoid loops add_action('save_post_mdjm-transaction', 'mdjm_save_txn_post', 10, 3); }
function mdjm_admin_toolbar($admin_bar) { if (!current_user_can('mdjm_employee')) { return; } // Build out the toolbar menu structure $admin_bar->add_menu(array('id' => 'mdjm', 'title' => sprintf(__('MDJM %s', 'mobile-dj-manager'), mdjm_get_label_plural()), 'href' => mdjm_employee_can('read_events') ? admin_url('edit.php?post_type=mdjm-event') : '#', 'meta' => array('title' => __('MDJM Event Management', 'mobile-dj-manager')))); if (mdjm_employee_can('read_events')) { // Events $admin_bar->add_menu(array('id' => 'mdjm-events', 'parent' => 'mdjm', 'title' => mdjm_get_label_plural(), 'href' => admin_url('edit.php?post_type=mdjm-event'), 'meta' => array('title' => sprintf(__('MDJM %s', 'mobile-dj-manager'), mdjm_get_label_plural())))); } if (mdjm_employee_can('manage_all_events')) { $admin_bar->add_menu(array('id' => 'mdjm-add-events', 'parent' => 'mdjm-events', 'title' => sprintf(__('Create %s', 'mobile-dj-manager'), mdjm_get_label_singular()), 'href' => admin_url('post-new.php?post_type=mdjm-event'), 'meta' => array('title' => sprintf(__('Create New %s', 'mobile-dj-manager'), mdjm_get_label_singular())))); // Enquiries $event_status = array('mdjm-unattended' => __('Unattended Enquiries', 'mobile-dj-manager'), 'mdjm-enquiry' => __('View Enquiries', 'mobile-dj-manager')); foreach ($event_status as $current_status => $display) { $status_count = MDJM()->events->mdjm_count_event_status($current_status); if (!$status_count) { continue; } $admin_bar->add_menu(array('id' => 'mdjm-' . str_replace(' ', '-', strtolower($display)), 'parent' => 'mdjm-events', 'title' => $display . ' (' . $status_count . ')', 'href' => admin_url('edit.php?post_status=' . $current_status . '&post_type=mdjm-event'), 'meta' => array('title' => $display))); } // Event Types $admin_bar->add_menu(array('id' => 'mdjm-event-types', 'parent' => 'mdjm-events', 'title' => sprintf(__('%s Types', 'mobile-dj-manager'), mdjm_get_label_singular()), 'href' => admin_url('edit-tags.php?taxonomy=event-types&post_type=mdjm-event'), 'meta' => array('title' => sprintf(__('Manage %s Types', 'mobile-dj-manager'), mdjm_get_label_singular())))); // Playlist Categories $admin_bar->add_menu(array('id' => 'mdjm-playlist-cats', 'parent' => 'mdjm-events', 'title' => __('Playlist Categories', 'mobile-dj-manager'), 'href' => admin_url('edit-tags.php?taxonomy=playlist-category&post_type=mdjm-playlist'), 'meta' => array('title' => __('Manage Playlist Categories', 'mobile-dj-manager')))); // Enquiry Sources $admin_bar->add_menu(array('id' => 'mdjm-enquiry-sources', 'parent' => 'mdjm-events', 'title' => __('Enquiry Sources', 'mobile-dj-manager'), 'href' => admin_url('edit-tags.php?taxonomy=enquiry-source&post_type=mdjm-event'), 'meta' => array('title' => __('Manage Enquiry Sources', 'mobile-dj-manager')))); } // Dashboard /*$admin_bar->add_menu( array( 'id' => 'mdjm-dashboard', 'parent' => 'mdjm', 'title' => __( 'Dashboard', 'mobile-dj-manager' ), 'href' => admin_url( 'admin.php?page=mdjm-dashboard' ), 'meta' => array( 'title' => __( 'MDJM Dashboard', 'mobile-dj-manager' ), ), ) ); */ // Settings if (mdjm_is_admin()) { $admin_bar->add_menu(array('id' => 'mdjm-settings', 'parent' => 'mdjm', 'title' => __('Settings', 'mobile-dj-manager'), 'href' => admin_url('admin.php?page=mdjm-settings'), 'meta' => array('title' => __('MDJM Settings', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-settings-general', 'parent' => 'mdjm-settings', 'title' => __('General', 'mobile-dj-manager'), 'href' => admin_url('admin.php?page=mdjm-settings&tab=general'), 'meta' => array('title' => __('MDJM General Settings', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-settings-events', 'parent' => 'mdjm-settings', 'title' => mdjm_get_label_plural(), 'href' => admin_url('admin.php?page=mdjm-settings&tab=events'), 'meta' => array('title' => __('MDJM Event Settings', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-settings-permissions', 'parent' => 'mdjm-settings', 'title' => __('Permissions', 'mobile-dj-manager'), 'href' => admin_url('admin.php?page=mdjm-settings&tab=general§ion=mdjm_app_permissions'), 'meta' => array('title' => __('MDJM Permission Settings', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-settings-emails', 'parent' => 'mdjm-settings', 'title' => sprintf(__('Email %s Template Settings', 'mobile-dj-manager'), '&'), 'href' => admin_url('admin.php?page=mdjm-settings&tab=emails'), 'meta' => array('title' => sprintf(__('MDJM Email %s Template Settings', 'mobile-dj-manager'), '&')))); $admin_bar->add_menu(array('id' => 'mdjm-settings-client-zone', 'parent' => 'mdjm-settings', 'title' => sprintf(__('%s Settings', 'mobile-dj-manager'), mdjm_get_option('app_name', __('Client Zone', 'mobile-dj-manager'))), 'href' => admin_url('admin.php?page=mdjm-settings&tab=client_zone'), 'meta' => array('title' => sprintf(__('%s Settings', 'mobile-dj-manager'), mdjm_get_option('app_name', __('Client Zone', 'mobile-dj-manager')))))); $admin_bar->add_menu(array('id' => 'mdjm-settings-payments', 'parent' => 'mdjm-settings', 'title' => __('Payment Settings', 'mobile-dj-manager'), 'href' => admin_url('admin.php?page=mdjm-settings&tab=payments'), 'meta' => array('title' => __('MDJM Payment Settings', 'mobile-dj-manager')))); } do_action('mdjm_admin_bar_settings_items', $admin_bar); if (mdjm_is_employer() && mdjm_employee_can('manage_employees')) { // Employees $admin_bar->add_menu(array('id' => 'mdjm-employees', 'parent' => 'mdjm', 'title' => __('Employees', 'mobile-dj-manager'), 'href' => admin_url('admin.php?page=mdjm-employees'), 'meta' => array('title' => __('Employees', 'mobile-dj-manager')))); } if (mdjm_is_admin()) { // Employee Availability $admin_bar->add_menu(array('id' => 'mdjm-availability', 'parent' => mdjm_is_employer() ? 'mdjm-employees' : 'mdjm', 'title' => __('Employee Availability', 'mobile-dj-manager'), 'href' => admin_url('admin.php?page=mdjm-availability'), 'meta' => array('title' => __('Employee Availability', 'mobile-dj-manager')))); // Automated Tasks $admin_bar->add_menu(array('id' => 'mdjm-tasks', 'parent' => 'mdjm', 'title' => __('Automated Tasks', 'mobile-dj-manager'), 'href' => admin_url('admin.php?page=mdjm-tasks'), 'meta' => array('title' => __('Automated Tasks', 'mobile-dj-manager')))); } if (mdjm_employee_can('view_clients_list')) { // Clients $admin_bar->add_menu(array('id' => 'mdjm-clients', 'parent' => 'mdjm', 'title' => __('Clients', 'mobile-dj-manager'), 'href' => admin_url('admin.php?page=mdjm-clients'), 'meta' => array('title' => __('Clients', 'mobile-dj-manager')))); } if (mdjm_employee_can('list_all_clients')) { $admin_bar->add_menu(array('id' => 'mdjm-add-client', 'parent' => 'mdjm-clients', 'title' => __('Add Client', 'mobile-dj-manager'), 'href' => admin_url('user-new.php'), 'meta' => array('title' => __('Add New Client', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-custom-client-fields', 'parent' => 'mdjm-clients', 'title' => __('Custom Client Fields', 'mobile-dj-manager'), 'href' => admin_url('admin.php?page=mdjm-custom-client-fields'), 'meta' => array('title' => __('Custom Client Field', 'mobile-dj-manager')))); } // Communications if (mdjm_employee_can('send_comms')) { $admin_bar->add_menu(array('id' => 'mdjm-comms', 'parent' => 'mdjm', 'title' => __('Communications', 'mobile-dj-manager'), 'href' => admin_url('admin.php?page=mdjm-comms'), 'meta' => array('title' => __('Communications', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'edit.php?post_type=mdjm_communication', 'parent' => 'mdjm-comms', 'title' => __('Communication History', 'mobile-dj-manager'), 'href' => admin_url('edit.php?post_type=mdjm_communication'), 'meta' => array('title' => __('Communication History', 'mobile-dj-manager')))); } // Filter for MDJM DCF Admin Bar Items do_action('mdjm_dcf_admin_bar_items', $admin_bar); if (mdjm_employee_can('manage_templates')) { // Contract Templates $admin_bar->add_menu(array('id' => 'mdjm-contracts', 'parent' => 'mdjm', 'title' => __('Contract Templates', 'mobile-dj-manager'), 'href' => admin_url('edit.php?post_type=contract'), 'meta' => array('title' => __('Contract Templates', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-new-contract', 'parent' => 'mdjm-contracts', 'title' => __('Add Contract Template', 'mobile-dj-manager'), 'href' => admin_url('post-new.php?post_type=contract'), 'meta' => array('title' => __('New Contract Template', 'mobile-dj-manager')))); } if (mdjm_employee_can('manage_templates')) { // Email Templates $admin_bar->add_menu(array('id' => 'mdjm-email-templates', 'parent' => 'mdjm', 'title' => __('Email Templates', 'mobile-dj-manager'), 'href' => admin_url('edit.php?post_type=email_template'), 'meta' => array('title' => __('Email Templates', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-new-email-template', 'parent' => 'mdjm-email-templates', 'title' => __('Add Template', 'mobile-dj-manager'), 'href' => admin_url('post-new.php?post_type=email_template'), 'meta' => array('title' => __('New Email Template', 'mobile-dj-manager')))); } // Equipment Packages & Add-ons if (mdjm_packages_enabled() && mdjm_employee_can('manage_packages')) { $admin_bar->add_menu(array('id' => 'mdjm-packages', 'parent' => 'mdjm', 'title' => __('Packages', 'mobile-dj-manager'), 'href' => admin_url('edit.php?post_type=mdjm-package'), 'meta' => array('title' => __('Packages', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-package-cats', 'parent' => 'mdjm-packages', 'title' => __('Package Categories', 'mobile-dj-manager'), 'href' => admin_url('edit-tags.php?taxonomy=package-category&post_type=mdjm-package'), 'meta' => array('title' => __('Package Categories', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-addons', 'parent' => 'mdjm-packages', 'title' => __('Add-ons', 'mobile-dj-manager'), 'href' => admin_url('edit.php?post_type=mdjm-addon'), 'meta' => array('title' => __('Add-ons', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-addon-cats', 'parent' => 'mdjm-packages', 'title' => __('Addon Categories', 'mobile-dj-manager'), 'href' => admin_url('edit-tags.php?taxonomy=addon-category&post_type=mdjm-addon'), 'meta' => array('title' => __('Addon Categories', 'mobile-dj-manager')))); } // Custom Event Fields if (mdjm_is_admin()) { $admin_bar->add_menu(array('id' => 'mdjm-event-fields', 'parent' => 'mdjm-events', 'title' => sprintf(__('Custom %s Fields', 'mobile-dj-manager'), mdjm_get_label_singular()), 'href' => admin_url('admin.php?page=mdjm-custom-event-fields'), 'meta' => array('title' => sprintf(__('Manage Custom %s Fields', 'mobile-dj-manager'), mdjm_get_label_singular())))); } // Event Quotes if (mdjm_get_option('online_enquiry', false) && mdjm_employee_can('list_own_quotes')) { $admin_bar->add_menu(array('id' => 'mdjm-event-quotes', 'parent' => 'mdjm-events', 'title' => sprintf(__('%s Quotes', 'mobile-dj-manager'), mdjm_get_label_singular()), 'href' => admin_url('edit.php?post_type=mdjm-quotes'), 'meta' => array('title' => sprintf(__('View %s Quotes', 'mobile-dj-manager'), mdjm_get_label_singular())))); } // Reporting /*if( current_user_can( 'manage_options' ) ) { $admin_bar->add_menu( array( 'id' => 'mdjm-reports', 'parent' => 'mdjm', 'title' => __( 'Reports', 'mobile-dj-manager' ), 'href' => admin_url( 'admin.php?page=mdjm-reports' ), 'meta' => array( 'title' => __( 'MDJM Reports', 'mobile-dj-manager' ), ), ) ); }*/ if (mdjm_employee_can('edit_txns')) { // Transactions $admin_bar->add_menu(array('id' => 'mdjm-transactions', 'parent' => 'mdjm', 'title' => __('Transactions', 'mobile-dj-manager'), 'href' => 'edit.php?post_type=mdjm-transaction', 'meta' => array('title' => __('MDJM Transactions', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-add-transaction', 'parent' => 'mdjm-transactions', 'title' => __('Add Transaction', 'mobile-dj-manager'), 'href' => admin_url('post-new.php?post_type=mdjm-transaction'), 'meta' => array('title' => __('Add Transaction', 'mobile-dj-manager')))); // Transaction Types $admin_bar->add_menu(array('id' => 'mdjm-transaction-types', 'parent' => 'mdjm-transactions', 'title' => __('Transaction Types', 'mobile-dj-manager'), 'href' => admin_url('edit-tags.php?taxonomy=transaction-types&post_type=mdjm-transaction'), 'meta' => array('title' => __('View / Edit Transaction Types', 'mobile-dj-manager')))); } if (mdjm_employee_can('list_venues')) { // Venues $admin_bar->add_menu(array('id' => 'mdjm-venues', 'parent' => 'mdjm', 'title' => __('Venues', 'mobile-dj-manager'), 'href' => admin_url('edit.php?post_type=mdjm-venue'), 'meta' => array('title' => __('Venues', 'mobile-dj-manager')))); if (mdjm_employee_can('add_venues')) { $admin_bar->add_menu(array('id' => 'mdjm-add-venue', 'parent' => 'mdjm-venues', 'title' => __('Add Venue', 'mobile-dj-manager'), 'href' => admin_url('post-new.php?post_type=mdjm-venue'), 'meta' => array('title' => __('Add New Venue', 'mobile-dj-manager')))); $admin_bar->add_menu(array('id' => 'mdjm-venue-details', 'parent' => 'mdjm-venues', 'title' => __('Venue Details', 'mobile-dj-manager'), 'href' => admin_url('edit-tags.php?taxonomy=venue-details&post_type=mdjm-venue'), 'meta' => array('title' => __('View / Edit Venue Details', 'mobile-dj-manager')))); } } // MDJM Links $admin_bar->add_menu(array('id' => 'mdjm-user-guides', 'parent' => 'mdjm', 'title' => sprintf(__('%sDocumentation%s', 'mobile-dj-manager'), '<span style="color:#F90">', '</span>'), 'href' => 'http://mdjm.co.uk/support/', 'meta' => array('title' => __('Documentation', 'mobile-dj-manager'), 'target' => '_blank'))); $admin_bar->add_menu(array('id' => 'mdjm-support', 'parent' => 'mdjm', 'title' => sprintf(__('%sSupport%s', 'mobile-dj-manager'), '<span style="color:#F90">', '</span>'), 'href' => 'http://www.mydjplanner.co.uk/forums/', 'meta' => array('title' => __('MDJM Support Forums', 'mobile-dj-manager'), 'target' => '_blank'))); }
/** * Update the DJ capabilities. * * * * */ function mdjm_update_dj_caps_13() { MDJM()->debug->log_it('Updating DJ capabilities', true); $role = get_role('dj'); $role->add_cap('mdjm_employee'); $role->add_cap('edit_posts'); $role->add_cap('delete_posts'); $role->add_cap('read'); MDJM()->debug->log_it('Completed updating DJ capabilities', true); }
function insert_comm($args) { global $mdjm; if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Starting ' . __METHOD__, true); } if (empty($args) || !is_array($args)) { return mdjm_update_notice('update-nag', 'The communication was not logged'); } $post_args['post_title'] = isset($args['subject']) ? wp_strip_all_tags($args['subject']) : ''; $post_args['post_content'] = isset($args['content']) ? $args['content'] : ''; $post_args['post_status'] = isset($args['status']) ? $args['status'] : 'ready to send'; $post_args['post_author'] = isset($args['author']) ? $args['author'] : get_current_user_id(); $meta_args['date_sent'] = isset($args['date_sent']) ? $args['date_sent'] : time(); $meta_args['recipient'] = isset($args['recipient']) ? $args['recipient'] : ''; $meta_args['source'] = isset($args['source']) ? $args['source'] : ''; $meta_args['event'] = isset($args['event']) ? $args['event'] : ''; if (empty($post_args['post_title'])) { return mdjm_update_notice('update-nag', 'The communication was not logged - no title ' . $post_args['post_title']); } if (empty($post_args['post_content'])) { return mdjm_update_notice('update-nag', 'The communication was not logged - no content ' . $post_args['post_content']); } if (empty($meta_args['recipient'])) { return mdjm_update_notice('update-nag', 'The communication was not logged - no recipient ' . $post_args['recipient']); } if (empty($meta_args['source'])) { return mdjm_update_notice('update-nag', 'The communication was not logged - no source ' . $post_args['source']); } $post_args['post_type'] = 'mdjm_communication'; $post_args['ping_status'] = false; $post_args['comment_status'] = 'closed'; if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Inserting COMM Post'); } $comm_post_id = wp_insert_post($post_args); if ($comm_post_id) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- COMM post created ' . $comm_post_id); } foreach ($meta_args as $meta_key => $meta_value) { add_post_meta($comm_post_id, '_' . $meta_key, $meta_value); } } // Process attachments if (!empty($args['attachments']) && is_array($args['attachments'])) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- This email has attachments'); } foreach ($args['attachments'] as $file) { // Make sure the file exists if (!file_exists($file)) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- ERROR: Attachment not found, will not process'); } continue; } $file_type = wp_check_filetype(basename($file), null); $upload_dir = wp_upload_dir(); // Prepare an array of post data for the attachment. $attachment = array('guid' => $upload_dir['url'] . '/' . basename($file), 'post_mime_type' => $file_type['type'], 'post_title' => preg_replace('/\\.[^.]+$/', '', basename($file)), 'post_content' => '', 'post_status' => 'inherit'); // Insert the attachment. $attach_id = wp_insert_attachment($attachment, $file, $comm_post_id); if ($attach_id) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Attachment post inserted successfully. ID ' . $attach_id); } } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Attachment post could not be inserted'); } } // Make sure that this file is included, as wp_generate_attachment_metadata() depends on it. require_once ABSPATH . 'wp-admin/includes/image.php'; // Generate the metadata for the attachment, and update the database record. $attach_data = wp_generate_attachment_metadata($attach_id, $file); wp_update_attachment_metadata($attach_id, $attach_data); } // End foreach( $args['attachments'] as $file ) } // Attachments return $comm_post_id; }
/** * filter_content * Search and replace through the $content * * * * @param int $client Optional: the user ID of the client * int $event Optional: the post ID of the event * str $content Required: the content to be filtered * * @return str|bool New string on success | false on fail * @since 1.1.3 */ public function filter_content($client = '', $event = '', $content = '') { global $mdjm_settings; if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Starting ' . __FUNCTION__, true); } if (empty($content)) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' ERROR: No content passed for filtering '); } return false; } /* -- Setup Client Data -- */ if (!empty($client)) { /* -- Retrieve the user info -- */ $c = !is_array($client) ? get_userdata($client) : $client; // Client password reset action $c_pw = sprintf(__('Please <a href="%s">click here</a> to reset your password', 'mobile-dj-manager'), home_url('/wp-login.php?action=lostpassword')); $reset = get_user_meta($c->ID, 'mdjm_pass_action', true); if (!empty($reset)) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Password reset for user ' . $c->ID); } $reset = wp_generate_password(mdjm_get_option('pass_length', 8), mdjm_get_option('complex_passwords', true)); wp_set_password($reset, $c->ID); $c_pw = $reset; } /* -- Client Address -- */ if (!empty($c->address1)) { $c_address[] = $c->address1; if (!empty($c->address2)) { $c_address[] = $c->address2; } if (!empty($c->town)) { $c_address[] = $c->town; } if (!empty($c->county)) { $c_address[] = $c->county; } if (!empty($c->county)) { $c_address[] = $c->postcode; } } } /* -- Setup Event, DJ & Venue Data -- */ if (!empty($event)) { /* -- Retrieve the event info -- */ $e = !is_array($event) ? get_post($event) : $event; $eventinfo = MDJM()->events->event_detail($e->ID); $venue_details = MDJM()->events->mdjm_get_venue_details(get_post_meta($e->ID, '_mdjm_event_venue_id', true), $e->ID); } /* -- Replacements -- */ $pairs = array('{ADMIN_URL}' => admin_url(), '{APPLICATION_HOME}' => mdjm_get_formatted_url(MDJM_HOME, false), '{APPLICATION_NAME}' => MDJM_APP, '{COMPANY_NAME}' => MDJM_COMPANY, '{CONTACT_PAGE}' => mdjm_get_formatted_url(MDJM_CONTACT_PAGE, false), '{DDMMYYYY}' => date(MDJM_SHORTDATE_FORMAT), '{WEBSITE_URL}' => home_url(), '{CLIENT_FIRSTNAME}' => !empty($c->first_name) ? $c->first_name : '', '{CLIENT_LASTNAME}' => !empty($c->last_name) ? $c->last_name : '', '{CLIENT_FULLNAME}' => !empty($c->display_name) ? $c->display_name : '', '{CLIENT_FULL_ADDRESS}' => !empty($c_address) ? implode('<br />', $c_address) : '', '{CLIENT_EMAIL}' => !empty($c->user_email) ? $c->user_email : '', '{CLIENT_PRIMARY_PHONE}' => !empty($c->phone1) ? $c->phone1 : '', '{CLIENT_USERNAME}' => !empty($c->user_login) ? $c->user_login : '', '{CLIENT_PASSWORD}' => !empty($c_pw) ? $c_pw : '', '{ADMIN_NOTES}' => !empty($eventinfo['admin_notes']) ? $eventinfo['admin_notes'] : '', '{BALANCE}' => !empty($eventinfo['balance']) ? $eventinfo['balance'] : '', '{CONTRACT_DATE}' => !empty($eventinfo['contract_date']) ? $eventinfo['contract_date'] : date(MDJM_SHORTDATE_FORMAT), '{CONTRACT_ID}' => !empty($e) ? $e->post_title : '', '{CONTRACT_URL}' => !empty($e) ? mdjm_get_formatted_url(MDJM_CONTRACT_PAGE) . 'event_id=' . $e->ID : '', '{DEPOSIT}' => !empty($eventinfo['deposit']) ? $eventinfo['deposit'] : '', '{DEPOSIT_STATUS}' => !empty($eventinfo['deposit_status']) ? $eventinfo['deposit_status'] : __('Due'), '{DJ_EMAIL}' => !empty($eventinfo['dj']->user_email) ? $eventinfo['dj']->user_email : __('Not Assigned'), '{DJ_FIRSTNAME}' => !empty($eventinfo['dj']->user_firstname) ? $eventinfo['dj']->user_firstname : '', '{DJ_FULLNAME}' => !empty($eventinfo['dj']->display_name) ? $eventinfo['dj']->display_name : '', '{DJ_NOTES}' => !empty($eventinfo['dj_notes']) ? $eventinfo['dj_notes'] : '', '{DJ_PRIMARY_PHONE}' => !empty($eventinfo['dj']->phone1) ? $eventinfo['dj']->phone1 : '', '{DJ_SETUP_DATE}' => !empty($eventinfo['setup_date']) && $eventinfo['setup_date'] != 'Not Specified' ? date(MDJM_SHORTDATE_FORMAT, $eventinfo['setup_date']) : __('Not Specified'), '{DJ_SETUP_TIME}' => !empty($eventinfo['setup_time']) ? $eventinfo['setup_time'] : '', '{END_TIME}' => !empty($eventinfo['finish']) ? $eventinfo['finish'] : '', '{END_DATE}' => !empty($eventinfo['end_date']) && is_numeric($eventinfo['end_date']) ? date(MDJM_SHORTDATE_FORMAT, $eventinfo['end_date']) : __('Not Specified'), '{EVENT_DATE}' => !empty($eventinfo['date']) && is_numeric($eventinfo['date']) ? date('l, jS F Y', $eventinfo['date']) : __('Not Specified'), '{EVENT_DATE_SHORT}' => !empty($eventinfo['date']) && is_numeric($eventinfo['date']) ? date(MDJM_SHORTDATE_FORMAT, $eventinfo['date']) : __('Not Specified'), '{EVENT_DESCRIPTION}' => !empty($eventinfo['notes']) ? $eventinfo['notes'] : '', '{EVENT_NAME}' => !empty($eventinfo['name']) ? $eventinfo['name'] : '', '{EVENT_STATUS}' => !empty($eventinfo['status']) ? $eventinfo['status'] : '', '{EVENT_TYPE}' => !empty($eventinfo['type']) ? $eventinfo['type'] : '', '{PAYMENT_URL}' => !empty($e) ? mdjm_get_formatted_url(MDJM_PAYMENT_PAGE) . 'event_id=' . $e->ID : '', '{PAYMENT_HISTORY}' => !empty($eventinfo['payment_history']) ? $eventinfo['payment_history'] : __('No payments', 'mobile-dj-manager'), '{PLAYLIST_CLOSE}' => $mdjm_settings['playlist']['close'] != 0 ? $mdjm_settings['playlist']['close'] : 'never', '{PLAYLIST_URL}' => mdjm_get_formatted_url(MDJM_PLAYLIST_PAGE, false), '{QUOTES_URL}' => !empty($e->ID) ? mdjm_get_formatted_url(MDJM_QUOTES_PAGE, true) . 'event_id=' . $e->ID : '', '{GUEST_PLAYLIST_URL}' => !empty($eventinfo['guest_playlist']) ? $eventinfo['guest_playlist'] : '', '{START_TIME}' => !empty($eventinfo['start']) ? $eventinfo['start'] : '', '{TOTAL_COST}' => !empty($eventinfo['cost']) ? $eventinfo['cost'] : '', '{VENUE}' => !empty($venue_details['name']) ? stripslashes($venue_details['name']) : '', '{VENUE_CONTACT}' => !empty($venue_details['venue_contact']) ? stripslashes($venue_details['venue_contact']) : '', '{VENUE_DETAILS}' => !empty($venue_details['details']) ? implode('<br />', $venue_details['details']) : '', '{VENUE_EMAIL}' => !empty($venue_details['venue_email']) ? stripslashes($venue_details['venue_email']) : '', '{VENUE_FULL_ADDRESS}' => !empty($venue_details['full_address']) ? implode('<br />', $venue_details['full_address']) : '', '{VENUE_NOTES}' => !empty($venue_details['venue_information']) ? stripslashes($venue_details['venue_information']) : '', '{VENUE_TELEPHONE}' => !empty($venue_details['venue_phone']) ? stripslashes($venue_details['venue_phone']) : '', '{AVAILABLE_PACKAGES}' => !empty($eventinfo['dj']->ID) ? get_available_packages($eventinfo['dj']->ID, false) : get_available_packages('', false), '{AVAILABLE_PACKAGES_COST}' => !empty($eventinfo['dj']->ID) ? get_available_packages($eventinfo['dj']->ID, true) : get_available_packages('', true), '{EVENT_PACKAGE}' => !empty($eventinfo['package']) && !empty($e->ID) ? get_event_package($e->ID, false) : 'N/A', '{EVENT_PACKAGE_COST}' => !empty($e) ? get_event_package($e->ID, true) : 'N/A', '{EVENT_ADDONS}' => !empty($eventinfo['addons']) ? $eventinfo['addons'] : 'N/A', '{EVENT_ADDONS_COST}' => !empty($e) ? get_event_addons($e->ID, true) : 'N/A'); // Allow the $pairs array to be filtered $pairs = apply_filters('mdjm_shortcode_filter_pairs', $pairs, !empty($e->ID) ? $e->ID : '', !empty($eventinfo) ? $eventinfo : ''); /* -- Create the Search/Replace Array's -- */ foreach ($pairs as $key => $value) { $search[] = $key; $replace[] = $value; } /* -- Return the filtered data -- */ if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Completed ' . __FUNCTION__, true); } return str_replace($search, $replace, $content); }
function client_form() { global $my_mdjm, $mdjm, $mdjm_settings; /* -- Playlist Additions -- */ if (isset($_POST['submit']) && $_POST['submit'] == 'Add Song') { $this->add_song(); } /* -- Playlist Removal -- */ if (isset($_GET['remove_song']) && !empty($_GET['remove_song'])) { $this->remove_song($_GET['remove_song']); } /* -- Enqueue jQuery validation -- */ wp_enqueue_script('mdjm-validation'); /* WELCOME TEXT */ echo parent::__text('playlist_welcome', '<p>Welcome to the ' . MDJM_COMPANY . ' event playlist management system.</p>'); /* INTRO TEXT */ echo parent::__text('playlist_intro', '<p>Use this tool to let your DJ know the songs that you would like played (or perhaps not played) ' . 'during your event on <strong>' . date('l, jS F Y', $this->eventinfo['date']) . '</strong>.</p>'); /* If client has more than one event, allow them to switch between events */ if (count($my_mdjm['active']) > 1) { ?> <?php /* EDITING PLAYLIST TEXT */ echo parent::__text('playlist_edit', '<p>You are currently editing the playlist for your event on ' . date('l, jS F Y', $this->eventinfo['date']) . '. To edit the playlist for one of your other events, ' . 'return to the <a href="' . mdjm_get_formatted_url(MDJM_HOME, false) . '">' . MDJM_APP . ' home page</a> and select Edit Playlist from the drop down list displayed next to the event for ' . 'which you want to edit the playlist.</p>'); } // if( count( $my_mdjm['active'] ) > 1 ) $num_songs = MDJM()->events->count_playlist_entries($this->event->ID); /* Display the form to add songs to playlist */ if (MDJM()->events->playlist_status($this->eventinfo['date'])) { // Display form echo '<hr />' . "\r\n"; echo '<div id="mdjm-playlist-container">' . "\r\n"; echo '<div id="mdjm-playlist-table">' . "\r\n"; echo '<form action="' . mdjm_get_formatted_url(MDJM_PLAYLIST_PAGE) . 'event_id=' . $this->event->ID . '" method="post" enctype="multipart/form-data" name="client-playlist" id="client-playlist">' . "\r\n"; wp_nonce_field('manage_playlist', '__mdjm_playlist') . "\r\n"; echo '<table id="mdjm-playlist-display">' . "\r\n"; echo '<tr>' . "\r\n"; echo '<td><label for="playlist_song">' . __('Song Name') . '</label>:<br />' . '<input name="playlist_song" id="playlist_song" type="text" size="25" class="required" /></td>' . "\r\n"; echo '<td><label for="playlist_artist">' . __('Artist') . '</label>?<br />' . '<input name="playlist_artist" id="playlist_artist" type="text" size="25" class="required" /></td>' . "\r\n"; echo '<td><label for="playlist_when">' . __('When to Play') . '</label>:<br />' . '<select name="playlist_when" id="playlist_when">' . "\r\n"; $pl_when = explode("\n", $mdjm_settings['playlist']['playlist_cats']); foreach ($pl_when as $when) { echo '<option value="' . $when . '">' . $when . '</option>' . "\r\n"; } // foreach( $pl_when as $when ) echo '</select></td>' . "\r\n"; echo '<td><label for="playlist_info">' . __('Info') . '</label>:<br />' . '<textarea name="playlist_info" id="playlist_info" placeholder="Optional: add information if you selected Other from the drop down list">' . '</textarea></td>' . "\r\n"; echo '</tr>' . "\r\n"; echo '<tr>' . "\r\n"; echo '<td colspan="4" style="text-align: left;"><input name="submit" id="submit" type="submit" value="Add Song" /></td>' . "\r\n"; echo '</tr>' . "\r\n"; // End the table display echo '</table>' . "\r\n"; echo '</form>' . "\r\n"; echo '</div>' . "\r\n"; // End div mdjm-playlist-table echo '</div>' . "\r\n"; // End div mdjm-playlist-container } else { echo parent::display_notice(1, parent::__text('playlist_closed', '<p>Additions to your playlist are disabled to allow your ' . MDJM_DJ . ' to prepare for your event.</p>')); if ($num_songs > 0) { echo '<p>' . __('Existing playlist entries are displayed below') . '.</p>'; } } /* -- Display existing entries if we have them -- */ if ($num_songs > 0) { // Songs to display $categories = MDJM()->events->get_playlist_by_cat($this->event->ID); echo '<div id="mdjm_song_container">' . "\r\n"; foreach ($categories as $category => $songs) { echo '<table class="mdjm_song_table">' . "\r\n"; echo '<tr>' . "\r\n"; echo '<th colspan="4">' . $category . '</th>' . "\r\n"; echo '</tr>' . "\r\n"; foreach ($songs as $song) { echo '<tr>' . "\r\n"; echo '<td>' . $song->song . '</td>' . "\r\n"; echo '<td>' . $song->artist . '</td>' . "\r\n"; if ($category == 'Guest Added') { echo '<td>' . $song->added_by . '</td>' . "\r\n"; } else { echo '<td>' . (!empty($song->info) ? stripslashes($song->info) : '') . '</td>' . "\r\n"; } echo '<td style="text-align: right;"><a href="' . mdjm_get_formatted_url(MDJM_PLAYLIST_PAGE) . 'remove_song=' . $song->id . '">' . __('Remove') . '</a></td>' . "\r\n"; echo '</tr>' . "\r\n"; } echo '<tr>' . "\r\n"; echo '<td colspan="4" style="font-weight: bold; border-top: 2px solid;">' . count($songs) . _n(' Song', ' Songs', count($songs)) . '</td>' . "\r\n"; echo '</tr>' . "\r\n"; echo '</table>' . "\r\n"; } // End foreach echo '</div>' . "\r\n"; // End div mdjm_song_container } // if( $num_songs > 0 ) }
/** * Output the event transaction list table * * @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_txn_add_new_row($event_id) { global $mdjm_event, $mdjm_event_update; mdjm_insert_datepicker(array('id' => 'mdjm_txn_display_date', 'altfield' => 'mdjm_txn_date', 'maxdate' => 'today')); ?> <div id="mdjm-event-add-txn-table"> <table id="mdjm_event_add_txn_table" class="widefat mdjm_event_add_txn_table mdjm_form_fields"> <thead> <tr> <th colspan="3"><?php _e('Add Transaction', 'mobile-dj-manager'); ?> <a id="toggle_add_txn_fields" class="mdjm-small mdjm-fake"><?php _e('show form', 'mobile-dj-manager'); ?> </a></th> </tr> </thead> <tbody class="mdjm-hidden"> <tr> <td><label for="mdjm_txn_amount"><?php _e('Amount:', 'mobile-dj-manager'); ?> </label><br /> <?php echo mdjm_currency_symbol() . MDJM()->html->text(array('name' => 'mdjm_txn_amount', 'class' => 'mdjm-input-currency', 'placeholder' => mdjm_sanitize_amount('10'))); ?> </td> <td><label for="mdjm_txn_display_date"><?php _e('Date:', 'mobile-dj-manager'); ?> </label><br /> <?php echo MDJM()->html->text(array('name' => 'mdjm_txn_display_date', 'class' => '')) . MDJM()->html->hidden(array('name' => 'mdjm_txn_date')); ?> </td> <td><label for="mdjm_txn_amount"><?php _e('Direction:', 'mobile-dj-manager'); ?> </label><br /> <?php echo MDJM()->html->select(array('name' => 'mdjm_txn_direction', 'options' => array('In' => __('Incoming', 'mobile-dj-manager'), 'Out' => __('Outgoing', 'mobile-dj-manager')), 'show_option_all' => false, 'show_option_none' => false)); ?> </td> </tr> <tr> <td><span id="mdjm_txn_from_container"><label for="mdjm_txn_from"><?php _e('From:', 'mobile-dj-manager'); ?> </label><br /> <?php echo MDJM()->html->text(array('name' => 'mdjm_txn_from', 'class' => '', 'placeholder' => __('Leave empty if client', 'mobile-dj-manager'))); ?> </span> <span id="mdjm_txn_to_container" class="mdjm-hidden"><label for="mdjm_txn_to"><?php _e('To:', 'mobile-dj-manager'); ?> </label><br /> <?php echo MDJM()->html->text(array('name' => 'mdjm_txn_to', 'class' => '', 'placeholder' => __('Leave empty if client', 'mobile-dj-manager'))); ?> </span></td> <td><label for="mdjm_txn_for"><?php _e('For:', 'mobile-dj-manager'); ?> </label><br /> <?php echo MDJM()->html->txn_type_dropdown(); ?> </td> <td><label for="mdjm_txn_src"><?php _e('Paid via:', 'mobile-dj-manager'); ?> </label><br /> <?php echo MDJM()->html->select(array('name' => 'mdjm_txn_src', 'options' => mdjm_get_txn_source(), 'selected' => mdjm_get_option('default_type', 'Cash'), 'show_option_all' => false, 'show_option_none' => false)); ?> </td> </tr> <?php if (mdjm_get_option('manual_payment_cfm_template')) { ?> <tr id="mdjm-txn-email"> <td colspan="3"><?php echo MDJM()->html->checkbox(array('name' => 'mdjm_manual_txn_email', 'current' => mdjm_get_option('manual_payment_cfm_template') ? true : false, 'class' => 'mdjm-checkbox')); ?> <?php _e('Send manual payment confirmation email?', 'mobile-dj-manager'); ?> </td> </tr> <?php } ?> </tbody> </table> </div> <p id="save-event-txn" class="mdjm-hidden"><a id="save_transaction" class="button button-primary button-small"><?php _e('Add Transaction', 'mobile-dj-manager'); ?> </a></p> <?php }
public function sign_contract() { global $mdjm, $my_mdjm, $clientzone, $mdjm_settings; /* -- Validate the nonce -- */ if (!isset($_POST['mdjm_sign_event_contract']) || !wp_verify_nonce($_POST['mdjm_sign_event_contract'], 'sign_event_contract')) { echo '<script type="text/javascript">' . "\r\n" . 'alert("WordPress Security Validation failed. Please try again");' . "\r\n" . 'history.back();' . "\r\n" . '</script>' . "\r\n"; } /* -- Check the users password is correct -- */ $pass_cfm = wp_authenticate($my_mdjm['me']->user_login, $_POST['sign_pass_confirm']); /* -- Incorrect Password -- */ if (is_wp_error($pass_cfm)) { echo '<script type="text/javascript">' . "\r\n" . 'alert("ERROR: Your password was not entered correctly. Please try again.");' . "\r\n" . 'history.back();' . "\r\n" . '</script>' . "\r\n"; } else { /* -- Remove the save post hook to avoid loops -- */ remove_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3); /* -- Create a new signed contract instance -- */ $contract_data = array('post_title' => 'Event Contract: ' . MDJM_EVENT_PREFIX . $this->event->ID, 'post_author' => $my_mdjm['me']->ID, 'post_type' => 'mdjm-signed-contract', 'post_status' => 'publish', 'post_parent' => $this->event->ID, 'ping_status' => 'closed', 'comment_status' => 'closed'); /* -- Prepare the contract content -- */ $content = $this->event_contract->post_content; $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); /* -- Shortcode replacements -- */ $contract_data['post_content'] = $mdjm->filter_content($my_mdjm['me']->ID, $this->event->ID, $content); /* -- Append Signatory info -- */ $contract_data['post_content'] .= '<hr>' . "\r\n"; $contract_data['post_content'] .= '<p style="font-weight: bold">' . __('Signatory') . ': <span style="text-decoration: underline;">' . ucfirst($_POST['sign_first_name']) . ' ' . ucfirst($_POST['sign_last_name']) . '</span></p>' . "\r\n"; $contract_data['post_content'] .= '<p style="font-weight: bold">' . __('Date of Signature') . ': <span style="text-decoration: underline;">' . date('jS F Y') . '</span></p>' . "\r\n"; $contract_data['post_content'] .= '<p style="font-weight: bold">' . __('Verification Method') . ': User Password Confirmation</p>' . "\r\n"; /* -- Create the Signed Contract Post -- */ $signed_contract = wp_insert_post($contract_data, true); // Success if (!is_wp_error($signed_contract)) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Client event signed contract created (' . $signed_contract . ')', true); } add_post_meta($signed_contract, '_mdjm_contract_signed_name', ucfirst($_POST['sign_first_name']) . ' ' . ucfirst($_POST['sign_last_name']), true); /* -- Update the event -- */ $event_meta = array('_mdjm_event_signed_contract' => $signed_contract, '_mdjm_event_contract_approved' => date('Y-m-d H:i:s'), '_mdjm_event_contract_approver' => ucfirst($_POST['sign_first_name']) . ' ' . ucfirst($_POST['sign_last_name']), '_mdjm_event_contract_approver_ip' => $_SERVER['REMOTE_ADDR'], '_mdjm_event_last_updated_by' => $my_mdjm['me']->ID); /* -- Initiate actions for status change -- */ wp_transition_post_status('mdjm-approved', $this->event->post_status, $this->event); /* -- Update the post status -- */ wp_update_post(array('ID' => $this->event->ID, 'post_status' => 'mdjm-approved')); foreach ($event_meta as $event_meta_key => $event_meta_value) { update_post_meta($this->event->ID, $event_meta_key, $event_meta_value); } /* -- Update Journal with event updates -- */ if (MDJM_JOURNAL == true) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Adding journal entry'); } mdjm_add_journal(array('user_id' => $my_mdjm['me']->ID, 'event_id' => $this->event->ID, 'comment_content' => 'Contract Approval completed by ' . ucfirst($_POST['sign_first_name']) . ' ' . ucfirst($_POST['sign_last_name'] . '<br>')), array('type' => 'update-event', 'visibility' => '2')); } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Journalling is disabled'); } } /* -- Email booking confirmations -- */ $contact_client = isset($mdjm_settings['templates']['booking_conf_to_client']) ? true : false; $contact_dj = isset($mdjm_settings['templates']['booking_conf_to_dj']) ? true : false; $client_email = isset($mdjm_settings['templates']['booking_conf_client']) ? $mdjm_settings['templates']['booking_conf_client'] : false; $dj_email = isset($mdjm_settings['templates']['email_dj_confirm']) ? $mdjm_settings['templates']['email_dj_confirm'] : false; if (!is_string(get_post_status($client_email))) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('ERROR: No email template for the contract has been found ' . __FUNCTION__, $stampit = true); } wp_die('ERROR: Either no email template is defined or an error has occured. Check your Settings.'); } if ($contact_client == true) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Configured to email client with template ID ' . $client_email); } if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Generating email...'); } $email_args = array('content' => $client_email, 'to' => get_post_meta($this->event->ID, '_mdjm_event_client', true), 'from' => $mdjm_settings['templates']['booking_conf_from'] == 'dj' ? get_post_meta($this->event->ID, '_mdjm_event_dj', true) : 0, 'journal' => 'email-client', 'event_id' => $this->event->ID, 'html' => true, 'cc_dj' => isset($mdjm_settings['email']['bcc_dj_to_client']) ? true : false, 'cc_admin' => isset($mdjm_settings['email']['bcc_admin_to_client']) ? true : false, 'source' => 'Event Status to Approved'); // Filter the email args $email_args = apply_filters('mdjm_booking_conf_email_args', $email_args); // Send the email $approval_email = $mdjm->send_email($email_args); if ($approval_email) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Confrmation email sent to client '); } } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' ERROR: Confrmation email was not sent'); } } } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Not configured to email client'); } } if ($contact_dj == true) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Configured to email DJ with template ID ' . $dj_email); } if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Generating email...'); } $approval_dj_email = $mdjm->send_email(array('content' => $dj_email, 'to' => get_post_meta($this->event->ID, '_mdjm_event_dj', true), 'from' => 0, 'journal' => 'email-dj', 'event_id' => $this->event->ID, 'html' => true, 'cc_dj' => false, 'cc_admin' => isset($mdjm_settings['email']['bcc_admin_to_dj']) ? true : false, 'source' => 'Event Status to Approved')); if ($approval_dj_email) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Approval email sent to DJ '); } } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' ERROR: Approval email was not sent to DJ'); } } } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Not configured to email DJ'); } } } /* -- Re-add the save post hook -- */ add_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3); if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Completed client signing of contract ' . __METHOD__, true); } /* -- Email admin to notify of changes -- */ if (MDJM_NOTIFY_ADMIN == true) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Sending event status change notification to admin (Contract Signed)'); } $content = '<html>' . "\n" . '<body>' . "\n"; $content .= '<p>' . sprintf(__('Good news... %s has just signed their event contract via %s', 'mobile-dj-manager'), '{CLIENT_FULLNAME}', MDJM_APP) . '</p>'; $content .= '<hr />' . "\n"; $content .= '<h4><a href="' . get_edit_post_link($this->event->ID) . '">' . __('Event ID', 'mobile-dj-manager') . ': ' . MDJM_EVENT_PREFIX . $this->event->ID . '</a></h4>' . "\n"; $content .= '<p>' . "\n"; $content .= __('Date', 'mobile-dj-manager') . ': {EVENT_DATE}<br />' . "\n"; $content .= __('Type', 'mobile-dj-manager') . ': ' . MDJM()->events->get_event_type($this->event->ID) . '<br />' . "\n"; $event_stati = mdjm_all_event_status(); $content .= __('Status', 'mobile-dj-manager') . ': ' . $event_stati[get_post_status($this->event->ID)] . '<br />' . "\n"; $content .= __('Client', 'mobile-dj-manager') . ': {CLIENT_FULLNAME}<br />' . "\n"; $content .= __('Value', 'mobile-dj-manager') . ': {TOTAL_COST}<br />' . "\n"; $deposit = get_post_meta($this->event->ID, '_mdjm_event_deposit'); $deposit_status = get_post_meta($this->event->ID, '_mdjm_event_deposit_status'); if (!empty($deposit) && $deposit != '0.00') { $content .= __('Deposit', 'mobile-dj-manager') . ': {DEPOSIT} ({DEPOSIT_STATUS})<br />' . "\n"; } $content .= __('Balance Due', 'mobile-dj-manager') . ': {BALANCE}</p>' . "\n"; $content .= '<p>' . sprintf(__('%sView Event%s', 'mobile-dj-manager'), '<a href="=' . get_edit_post_link($this->event->ID) . '">', '</a>') . '</p>' . "\n"; $content .= '</body>' . "\n" . '</html>' . "\n"; $mdjm->send_email(array('content' => $mdjm->filter_content(get_post_meta($this->event->ID, '_mdjm_event_client', true), $this->event->ID, $content), 'to' => $mdjm_settings['email']['system_email'], 'subject' => __('Event Contract Signed', 'mobile-dj-manager'), 'journal' => false, 'event_id' => $this->event->ID, 'cc_dj' => false, 'cc_admin' => false, 'filter' => false, 'log_comm' => false)); } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Skipping admin notification'); } } ?> <script type="text/javascript"> window.location.replace("<?php echo mdjm_get_formatted_url(MDJM_CONTRACT_PAGE) . 'event_id=' . $this->event->ID . '&message=3&class=2'; ?> "); </script> <?php exit; } }
/** * Refresh the addons options when the package selection is updated. * * @since 1.3.7 * @return void */ function mdjm_refresh_event_addon_options_ajax() { $package = $_POST['package']; $employee = isset($_POST['employee']) ? $_POST['employee'] : false; $selected = !empty($_POST['selected']) ? $_POST['selected'] : array(); $event_type = !empty($_POST['event_type']) ? $_POST['event_type'] : ''; $event_date = !empty($_POST['event_date']) ? $_POST['event_date'] : ''; $addons = MDJM()->html->addons_dropdown(array('selected' => $selected, '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, 'options_only' => true, 'data' => array())); $result['type'] = 'success'; if (!empty($addons)) { $result['addons'] = $addons; } else { $result['addons'] = '<option value="0" disabled="disabled">' . __('No addons available', 'mobile-dj-manager') . '</option>'; } echo json_encode($result); die; }
/** * Creates a transaction * * @since 1.3 * @param arr $data Array of attributes for a transaction. See $defaults. * @return mixed false if data isn't passed and class not instantiated for creation, or New Transaction ID */ public function create($data = array(), $meta = array()) { if ($this->id != 0) { return false; } remove_action('save_post_mdjm-transaction', 'mdjm_save_txn_post', 10, 3); $default_data = array('post_type' => 'mdjm-transaction', 'post_status' => 'mdjm-income', 'post_title' => __('New Transaction', 'mobile-dj-manager'), 'post_content' => ''); $default_meta = array('_mdjm_txn_source' => mdjm_get_option('default_type', __('Cash')), '_mdjm_txn_currency' => mdjm_get_currency(), '_mdjm_txn_status' => 'Pending'); $data = wp_parse_args($data, $default_data); $meta = wp_parse_args($meta, $default_meta); do_action('mdjm_pre_txn_create', $data, $meta); $id = wp_insert_post($data, true); if (is_wp_error($id)) { MDJM()->debug->log_it('ERROR: ' . $id->get_error_message()); } $txn = WP_Post::get_instance($id); if ($txn) { mdjm_update_txn_meta($txn->ID, $meta); wp_update_post(array('ID' => $id, 'post_title' => mdjm_get_option('event_prefix') . $id, 'post_name' => mdjm_get_option('event_prefix') . $id)); } do_action('mdjm_post_txn_create', $id, $data, $meta); add_action('save_post_mdjm-transaction', 'mdjm_save_txn_post', 10, 3); return $this->setup_txn($txn); }
function update_event() { global $mdjm, $post, $my_mdjm, $clientzone; $post = get_post($_POST['event_id']); $eventinfo = MDJM()->events->event_detail($post->ID); if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Event ID ' . $post->ID . ' is being updated by ' . $eventinfo['client']->display_name, true); } // Prepare the meta data $event_data['_mdjm_event_last_updated_by'] = $my_mdjm['me']->ID; $event_data['_mdjm_event_name'] = !empty($_POST['_mdjm_event_name']) ? sanitize_text_field($_POST['_mdjm_event_name']) : get_term($_POST['mdjm_event_type'], 'event-types')->name; $event_data['_mdjm_event_package'] = !empty($_POST['_mdjm_event_package']) ? $_POST['_mdjm_event_package'] : ''; $event_data['_mdjm_event_addons'] = !empty($_POST['event_addons']) ? $_POST['event_addons'] : ''; $event_data['_mdjm_event_notes'] = !empty($_POST['_mdjm_event_notes']) ? sanitize_text_field($_POST['_mdjm_event_notes']) : ''; /* -- Assign the event type -- */ $existing_event_type = wp_get_object_terms($post->ID, 'event-types'); if (!isset($existing_event_type[0]) || $existing_event_type[0]->term_id != $_POST['mdjm_event_type']) { $field_updates[] = 'Event Type changed from ' . $existing_event_type[0]->name . ' to ' . get_term($_POST['mdjm_event_type'], 'event-types')->name; MDJM()->events->mdjm_assign_event_type($_POST['mdjm_event_type']); } // Event Times if (date('H:i', strtotime($_POST['event_start_hr'] . ':' . $_POST['event_start_min'])) != $eventinfo['start']) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Event start time updating to ' . $_POST['event_start_hr'] . ':' . $_POST['event_start_min']); } $event_data['_mdjm_event_start'] = MDJM_TIME_FORMAT == 'H:i' ? date('H:i:s', strtotime($_POST['event_start_hr'] . ':' . $_POST['event_start_min'])) : date('H:i:s', strtotime($_POST['event_start_hr'] . ':' . $_POST['event_start_min'] . isset($_POST['event_start_period']) ? $_POST['event_start_period'] : '')); } if (date('H:i', strtotime($_POST['event_finish_hr'] . ':' . $_POST['event_finish_min'])) != $eventinfo['finish']) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Event finish time updating to ' . $_POST['event_finish_hr'] . ':' . $_POST['event_finish_min']); } $event_data['_mdjm_event_finish'] = MDJM_TIME_FORMAT == 'H:i' ? date('H:i:s', strtotime($_POST['event_finish_hr'] . ':' . $_POST['event_finish_min'])) : date('H:i:s', strtotime($_POST['event_finish_hr'] . ':' . $_POST['event_finish_min'] . isset($_POST['event_finish_period']) ? $_POST['event_finish_period'] : '')); } remove_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3); // Update event wp_update_post(array('ID' => $post->ID)); // Update meta foreach ($event_data as $event_meta_key => $event_meta_value) { /* -- If we have a value and the key did not exist previously, add it -- */ if (!empty($event_meta_value) && '' == get_post_meta($post->ID, $event_meta_key, true)) { add_post_meta($post->ID, $event_meta_key, $event_meta_value); $field_updates[] = 'Field ' . $event_meta_key . ' added: ' . is_array($event_meta_value) ? implode('<br />', $event_meta_value) : $event_meta_value; } elseif (!empty($event_meta_value) && $event_meta_value != get_post_meta($post->ID, $event_meta_key, true)) { update_post_meta($post->ID, $event_meta_key, $event_meta_value); $field_updates[] = 'Field ' . $event_meta_key . ' updated: ' . get_post_meta($post->ID, $event_meta_key, true) . ' replaced with ' . $event_meta_value; } elseif ('' == $event_meta_value && get_post_meta($post->ID, $event_meta_key, true)) { delete_post_meta($post->ID, $event_meta_key, $event_meta_value); $field_updates[] = 'Field ' . $event_meta_key . ' updated: ' . get_post_meta($post->ID, $event_meta_key, true) . ' removed'; } // Log changes to debug file if (MDJM_DEBUG == true && !empty($field_updates)) { MDJM()->debug->log_it('Event Updates Completed ' . "\r\n" . '| ' . implode("\r\n" . ' | ', $field_updates)); } } add_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3); // Update journal mdjm_add_journal(array('user_id' => $my_mdjm['me']->ID, 'event_id' => $post->ID, 'comment_content' => $my_mdjm['me']->display_name . ' updated event - ' . $post->ID . '<br />(' . time() . ')'), array('type' => 'update-event', 'visibility' => '1')); $clientzone->display_notice('2', 'Your event details have been updated successfully'); }
/** * 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'); }
function update_event_quote($event_id, $quote_id) { // If the current user is not the client, do not log if (get_post_meta($event_id, '_mdjm_event_client', true) != get_current_user_id()) { return; } /* -- Initiate actions for status change -- */ wp_transition_post_status('mdjm-quote-viewed', 'mdjm-quote-generated', get_post($quote_id)); if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Setting quote to viewed status for quote ' . $quote_id . ' event ' . $event_id, true); } /* -- Update the post status -- */ if (wp_update_post(array('ID' => $quote_id, 'post_status' => 'mdjm-quote-viewed'))) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Quote status updated successfully', false); } $result = true; } /* -- Set post meta for read time and update the number of client views -- */ if ($result == true) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Updating quote view count', false); } $view_count = get_post_meta($quote_id, '_mdjm_quote_viewed_count', true); if (!empty($view_count)) { $view_count++; } else { $view_count = 1; } update_post_meta($quote_id, '_mdjm_quote_viewed_count', $view_count); // Only update the view date if this is the first viewing if ($view_count == 1) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('Updating quote viewed time', false); } update_post_meta($quote_id, '_mdjm_quote_viewed_date', current_time('mysql')); } } return !empty($result) ? true : false; }
/** * Performs the key query * * @access public * @since 1.4 * @return void */ public function query() { $users = get_users(array('meta_value' => 'mdjm_user_secret_key', 'number' => $this->per_page, 'offset' => $this->per_page * ($this->get_paged() - 1))); $keys = array(); foreach ($users as $user) { $keys[$user->ID]['id'] = $user->ID; $keys[$user->ID]['email'] = $user->user_email; $keys[$user->ID]['user'] = '******' . add_query_arg('user_id', $user->ID, 'user-edit.php') . '"><strong>' . $user->user_login . '</strong></a>'; $keys[$user->ID]['key'] = MDJM()->api->get_user_public_key($user->ID); $keys[$user->ID]['secret'] = MDJM()->api->get_user_secret_key($user->ID); $keys[$user->ID]['token'] = MDJM()->api->get_token($user->ID); } return $keys; }