/** * Generates an enquire now button. * * @since 1.4 * @param arr Array of arguments. See @defaults. * @return str Enquire Now HTML button */ function mdjm_get_enquire_now_button($args) { $defaults = array('type' => 'package', 'id' => 0); $args = wp_parse_args($args, $defaults); $label = esc_html(mdjm_get_option('package_contact_btn_text', __('Enquire Now', 'mobile-dj-manager'))); $label = apply_filters('mdjm_enquire_now_' . $args['type'] . '_label', $label); $name = 'mdjm-' . $args['type'] . '-enquiry-button'; $class = 'mdjm_' . $args['type'] . '_enquiry_button'; $value = 'test'; ob_start(); ?> <a href="<?php echo mdjm_get_formatted_url(mdjm_get_option('contact_page')) . $args['type'] . '=' . $args['id']; ?> "> <button type="button" name="<?php echo $name; ?> " class="<?php echo $class; ?> " formmethod="get" value="test"><?php echo $label; ?> </button> </a> <?php $enquire_link = ob_get_clean(); return apply_filters('mdjm_enquire_now_' . $args['type'] . '_button', $enquire_link, $args); }
/** * Class constructor * * @param string $_file * @param string $_item_name * @param string $_version * @param string $_author * @param string $_optname * @param string $_api_url */ function __construct($_file, $_item, $_version, $_author, $_optname = null, $_api_url = null) { $this->file = $_file; if (is_numeric($_item)) { $this->item_id = absint($_item); } else { $this->item_name = $_item; } $this->item_shortname = 'mdjm_' . preg_replace('/[^a-zA-Z0-9_\\s]/', '', str_replace(' ', '_', strtolower($this->item_name))); $this->version = $_version; $this->license = trim(mdjm_get_option($this->item_shortname . '_license_key', '')); $this->author = $_author; $this->api_url = is_null($_api_url) ? $this->api_url : $_api_url; /** * Allows for backwards compatibility with old license options, * i.e. if the plugins had license key fields previously, the license * handler will automatically pick these up and use those in lieu of the * user having to reactive their license. */ if (!empty($_optname)) { $opt = mdjm_get_option($_optname, false); if (isset($opt) && empty($this->license)) { $this->license = trim($opt); } } // Setup hooks $this->includes(); $this->hooks(); //$this->auto_updater(); }
/** * Retrieve protected (built-in) txn terms. * * @since 1.3 * @param * @return arr $protected_terms Array of protected terms */ function mdjm_get_txn_protected_terms() { $other_amount_term = get_term_by('name', mdjm_get_option('other_amount_label'), 'transaction-types'); $protected_terms = array('mdjm-balance-payments', 'mdjm-deposit-payments', 'mdjm-employee-wages', 'mdjm-merchant-fees'); if (!empty($other_amount_term)) { $protected_terms[] = $other_amount_term->slug; } return apply_filters('mdjm_txn_protected_terms', $protected_terms); }
/** * Redirect to payments. * * @since 1.3 * @param * @return void */ function mdjm_goto_payments_action($data) { if (!isset($data['event_id'])) { return; } if (!mdjm_event_exists($data['event_id'])) { wp_die('Sorry but no event exists', 'mobile-dj-manager'); } wp_redirect(add_query_arg('event_id', $data['event_id'], mdjm_get_formatted_url(mdjm_get_option('payments_page')))); die; }
/** * Output for the Contract Details meta box. * * @since 1.3 * @param obj $post The post object (WP_Post). * @return */ function mdjm_contract_details_metabox($post) { do_action('mdjm_pre_contract_details_metabox', $post); wp_nonce_field(basename(__FILE__), 'mdjm-contract' . '_nonce'); $contract_events = get_posts(array('post_type' => 'mdjm-event', 'posts_per_page' => -1, 'meta_key' => '_mdjm_event_contract', 'meta_value_num' => $post->ID, 'post_status' => 'any')); $event_count = count($contract_events); $total_events = sprintf(_n(' %s', ' %s', $event_count), mdjm_get_label_singular(), mdjm_get_label_plural()); $default_contract = mdjm_get_option('default_contract') == $post->ID ? __('Yes') : __('No'); ?> <script type="text/javascript"> document.getElementById("title").className += " required"; document.getElementById("content").className += " required"; </script> <p><?php printf(__('<strong>Author</strong>: <a href="%s">%s</a>', 'mobile-dj-manager'), admin_url("user-edit.php?user_id={$post->post_author}"), get_the_author_meta('display_name', $post->post_author)); ?> </p> <p><?php _e('<strong>Default</strong>?', 'mobile-dj-manager'); echo ' ' . $default_contract; ?> </p> <p><?php _e('<strong>Assigned To</strong>: ', 'mobile-dj-manager'); printf(_n($event_count . ' %1$s', $event_count . ' %2$s', $event_count), mdjm_get_label_singular(), mdjm_get_label_plural()); ?> </p> <p><?php _e('<strong>Description</strong>: <span class="description">(optional)</span>', 'mobile-dj-manager'); ?> <br /> <input type="hidden" name="mdjm_update_custom_post" id="mdjm_update_custom_post" value="mdjm_update" /> <textarea name="contract_description" id="contract_description" class="widefat" rows="5" placeholder="<?php _e('i.e To be used for Pubs/Clubs', 'mobile-dj-manager'); ?> "><?php echo esc_attr(get_post_meta($post->ID, '_contract_description', true)); ?> </textarea> </p> <?php do_action('mdjm_post_contract_details_metabox', $post); }
/** * Settings contextual help. * * @since 1.3 * @return void */ function mdjm_settings_contextual_help() { $screen = get_current_screen(); if ($screen->id != 'mdjm-event_page_mdjm-settings') { return; } $screen->set_help_sidebar('<p><strong>' . __('For more information:', 'mobile-dj-manager') . '</strong></p>' . '<p>' . sprintf(__('Visit the <a href="%s">documentation</a> on the MDJM Event Management website.', 'mobile-dj-manager'), esc_url('http://mdjm.co.uk/support/')) . '</p>' . '<p>' . sprintf(__('Join our <a href="%s">Facebook Group</a>.', 'mobile-dj-manager'), esc_url('https://www.facebook.com/groups/mobiledjmanager/')) . '</p>' . '<p>' . sprintf(__('<a href="%s">Post an issue</a> on <a href="%s">GitHub</a>.', 'mobile-dj-manager'), esc_url('https://github.com/mdjm/mobile-dj-manager/issues'), esc_url('https://github.com/mdjm/mobile-dj-manager/')) . '</p>' . '<p>' . sprintf(__('View <a href="%s">add-ons</a>.', 'mobile-dj-manager'), esc_url('http://mdjm.co.uk/add-ons/')) . '</p>'); do_action('mdjm_pre_settings_contextual_help', $screen); $screen->add_help_tab(array('id' => 'mdjm-settings-general', 'title' => __('General', 'mobile-dj-manager'), 'content' => '<p>' . __('This screen provides the most basic settings for configuring MDJM. Set your company name and preferred date and time format.', 'mobile-dj-manager') . '</p>')); $screen->add_help_tab(array('id' => 'mdjm-settings-events', 'title' => mdjm_get_label_plural(), 'content' => '<p>' . sprintf(__('This screen enables to you configure options %1$s and playlists. Select your %1$s default contract template, whether or not you are an employer and enable equipment packages.', 'mobile-dj-manager') . '</p>' . '<p>' . __('You can also toggle playlists on or off, select when a playlist should close choose whether or not to upload your playlists to the MDJM servers.', 'mobile-dj-manager'), mdjm_get_label_plural(true)) . '</p>')); $screen->add_help_tab(array('id' => 'mdjm-settings-emails-templates', 'title' => __('Emails & Templates', 'mobile-dj-manager'), 'content' => '<p>' . __('This screen allows you to adjust options for emails, toggle on or off the email tracking feature and select which templates to use as content for emails.', 'mobile-dj-manager') . '</p>')); $screen->add_help_tab(array('id' => 'mdjm-settings-client-zone', 'title' => mdjm_get_option('app_name', __('Client Zone', 'mobile-dj-manager')), 'content' => '<p>' . sprintf(__("This screen allows you to configure settings associated with the %s as well as set various pages and configure the Availability Checker.", 'mobile-dj-manager'), mdjm_get_option('app_name', __('Client Zone', 'mobile-dj-manager'))) . '</p>')); $screen->add_help_tab(array('id' => 'mdjm-settings-payments', 'title' => __('Payments', 'mobile-dj-manager'), 'content' => '<p>' . __('This screen allows you to configure the payment settings. Specify your currency, format currency display, set default deposits and select whether or not to apply tax.', 'mobile-dj-manager') . '</p>')); $screen->add_help_tab(array('id' => 'mdjm-settings-extensions', 'title' => __('Extensions', 'mobile-dj-manager'), 'content' => '<p>' . __('This screen provides access to settings added by most MDJM Event Management extensions.', 'mobile-dj-manager') . '</p>')); $screen->add_help_tab(array('id' => 'mdjm-settings-licenses', 'title' => __('Licenses', 'mobile-dj-manager'), 'content' => '<p>' . sprintf(__('If you have any <a href="%s">MDJM Event Management paid add-ons</a> installed, this screen is where you should add the license to enable automatic updates whilst your license is valid.', 'mobile-dj-manager'), esc_url('http://mdjm.co.uk/add-ons/')) . '</p>')); do_action('mdjm_post_settings_contextual_help', $screen); }
/** * Determine if an employee is working on the given date. * * @since 1.3 * @param str $date The date * @param int $employee The employee ID * @param str|arr $status The employee ID * @return bool True if the employee is working, otherwise false. */ function mdjm_employee_is_working($date, $employee_id = '', $status = '') { if (empty($employee_id) && is_user_logged_in()) { $employee_id = get_current_user_id(); } if (empty($employee_id)) { wp_die(__('Ooops, an error occured.', 'mobile-dj-manager')); } if (empty($status)) { $status = mdjm_get_option('availability_status', 'any'); } $event = mdjm_get_events(array('post_status' => $status, 'posts_per_page' => 1, 'meta_key' => '_mdjm_event_date', 'meta_value' => date('Y-m-d', $date), 'meta_query' => array('relation' => 'OR', array('key' => '_mdjm_event_dj', 'value' => $employee_id, 'compare' => '=', 'type' => 'NUMERIC'), array('key' => '_mdjm_event_employees', 'value' => sprintf(':"%s";', $employee_id), 'compare' => 'LIKE')))); $event = apply_filters('mdjm_employee_is_working', $event, $date, $employee_id); if ($event) { return true; } return false; }
/** * Run the update procedures. * * @version 1.3.8 * @param * @return. */ function mdjm_run_update_138() { $payment_label = __('Pay Now', 'mobile-dj-manager'); $gateway = mdjm_get_option('payment_gateway', false); if (!empty($gateway)) { if ($gateway == 'paypal') { $button_text = mdjm_get_option('mdjm_pg_paypal_button_text'); } if ($gateway == 'payfast') { $button_text = mdjm_get_option('mdjm_pg_payfast_button_text'); } if (!empty($button_text)) { $payment_label = sanitize_text_field($button_text); } } mdjm_delete_option('payment_gateway'); mdjm_update_option('payment_gateway', $gateway); mdjm_update_option('gateways', array($gateway => '1')); mdjm_update_option('payment_button', $payment_label); }
/** * Define the data to be displayed in each of the custom columns for the Contract 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_contract_posts_custom_column($column_name, $post_id) { switch ($column_name) { // Is Default? case 'event_default': $event_default = mdjm_get_option('default_contract'); if ($event_default == $post_id) { echo '<span style="color: green; font-weight: bold;">' . __('Yes'); } else { _e('No'); } break; // Assigned To // Assigned To case 'assigned': $contract_events = get_posts(array('post_type' => 'mdjm-event', 'posts_per_page' => -1, 'meta_key' => '_mdjm_event_contract', 'meta_value' => $post_id, 'post_status' => 'any')); $total = count($contract_events); echo $total . sprintf(_n(' %1$s', ' %2$s', $total, 'mobile-dj-manager'), mdjm_get_label_singular(), mdjm_get_label_plural()); break; } // switch }
/** * Update the event journal. * * @since 1.3 * @param arr $data * @param arr $meta * @return: int|bool comment_id or false on failure */ function mdjm_add_journal($args = array(), $meta = array()) { // Return if journaling is disabled. if (!mdjm_get_option('journaling', false)) { return false; } $defaults = array('user_id' => get_current_user_id(), 'event_id' => '', 'comment_content' => '', 'comment_type' => 'mdjm-journal'); $data = wp_parse_args($args, $defaults); // Make sure we have the required data if (empty($data['comment_content']) || empty($data['event_id'])) { return false; } $comment_author = !empty($data['user_id']) ? get_userdata($data['user_id']) : 'mdjm'; $comment_data = apply_filters('mdjm_add_journal', array('comment_post_ID' => (int) $data['event_id'], 'comment_author' => $comment_author != 'mdjm' ? $comment_author->display_name : 'MDJM', 'comment_author_email' => $comment_author != 'mdjm' ? $comment_author->user_email : mdjm_get_option('system_email'), 'comment_author_IP' => '', 'comment_agent' => '', 'comment_author_url' => '', 'comment_date' => current_time('mysql'), 'comment_date_gmt' => current_time('mysql', 1), 'comment_content' => $data['comment_content'], 'comment_type' => 'mdjm-journal', 'user_id' => $comment_author != 'mdjm' ? $comment_author->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'); do_action('mdjm_pre_add_journal', $data, $meta, $comment_data); // Insert the comment $comment_id = wp_insert_comment($comment_data); if (!$comment_id) { return false; } $comment_meta = array('mdjm_type' => !empty($meta['type']) ? $meta['type'] : 'mdjm-journal', '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'] : ''); $comment_meta = wp_parse_args($meta, $comment_meta); foreach ($comment_meta as $key => $value) { if (!empty($value)) { add_comment_meta($comment_id, $key, $value, false); } } // Enable comment duplication check filter add_filter('commentdata', 'comment_duplicate_trigger'); do_action('mdjm_post_add_journal', $data, $meta, $comment_data); return $comment_id; }
/** * Sign the contract. * * @since 1.3 * @param * @return */ function mdjm_sign_event_contract_action($data) { // Check the password is correct $user = wp_get_current_user(); $password_confirmation = wp_authenticate($user->user_login, $data['mdjm_verify_password']); $data['mdjm_accept_terms'] = !empty($data['mdjm_accept_terms']) ? $data['mdjm_accept_terms'] : false; $data['mdjm_confirm_client'] = !empty($data['mdjm_confirm_client']) ? $data['mdjm_confirm_client'] : false; if (is_wp_error($password_confirmation)) { $message = 'password_error'; } elseif (!wp_verify_nonce($data['mdjm_nonce'], 'sign_contract')) { $message = 'nonce_fail'; } else { // Setup the signed contract details $posted = array(); foreach ($data as $key => $value) { if ($key != 'mdjm_nonce' && $key != 'mdjm_action' && $key != 'mdjm_redirect' && $key != 'mdjm_submit_sign_contract') { // All fields are required if (empty($value)) { wp_redirect(add_query_arg(array('event_id' => $data['event_id'], 'mdjm_message' => 'contract_data_missing'), mdjm_get_formatted_url(mdjm_get_option('contracts_page')))); die; } elseif (is_string($value) || is_int($value)) { $posted[$key] = strip_tags(addslashes($value)); } elseif (is_array($value)) { $posted[$key] = array_map('absint', $value); } } } if (mdjm_sign_event_contract($data['event_id'], $posted)) { $message = 'contract_signed'; } else { $message = 'contract_not_signed'; } } wp_redirect(add_query_arg(array('event_id' => $data['event_id'], 'mdjm_message' => $message), mdjm_get_formatted_url(mdjm_get_option('contracts_page')))); die; }
/** * Registers the custom taxonomies for the Event, Playlist. * Transaction and Venue custom post types. * * @since 1.3 * @return void */ function mdjm_register_taxonomies() { /** Packages */ $package_category_labels = array('name' => _x('Package Category', 'taxonomy general name', 'mobile-dj-manager'), 'post_column_name' => __('Categories', 'mobile-dj-manager'), 'singular_name' => _x('Package Category', 'taxonomy singular name', 'mobile-dj-manager'), 'search_items' => __('Search Package Categories', 'mobile-dj-manager'), 'all_items' => __('All Package Categories', 'mobile-dj-manager'), 'edit_item' => __('Edit Package Category', 'mobile-dj-manager'), 'update_item' => __('Update Package Category', 'mobile-dj-manager'), 'add_new_item' => __('Add New Package Category', 'mobile-dj-manager'), 'new_item_name' => __('New Package Category', 'mobile-dj-manager'), 'menu_name' => __('Event Package Categories', 'mobile-dj-manager'), 'separate_items_with_commas' => NULL, 'choose_from_most_used' => __('Choose from the most popular Package Categories', 'mobile-dj-manager'), 'not_found' => __('No package categories found', 'mobile-dj-manager')); $package_category_args = apply_filters('mdjm_package_category_args', array('hierarchical' => true, 'labels' => apply_filters('mdjm_package_category_labels', $package_category_labels), 'query_var' => true, 'rewrite' => array('slug' => 'package-category'), 'capabilities' => apply_filters('mdjm_package_category_caps', array('manage_terms' => 'manage_mdjm', 'edit_terms' => 'manage_mdjm', 'delete_terms' => 'manage_mdjm', 'assign_terms' => 'mdjm_employee')), 'update_count_callback' => '_update_generic_term_count')); register_taxonomy('package-category', array('mdjm-package'), $package_category_args); register_taxonomy_for_object_type('package-category', 'mdjm-package'); /** Addons */ $addon_category_labels = array('name' => _x('Add-on Category', 'taxonomy general name', 'mobile-dj-manager'), 'post_column_name' => __('Categories', 'mobile-dj-manager'), 'singular_name' => _x('Add-on Category', 'taxonomy singular name', 'mobile-dj-manager'), 'search_items' => __('Search Add-on Categories', 'mobile-dj-manager'), 'all_items' => __('All Add-on Categories', 'mobile-dj-manager'), 'edit_item' => __('Edit Add-on Category', 'mobile-dj-manager'), 'update_item' => __('Update Add-on Category', 'mobile-dj-manager'), 'add_new_item' => __('Add New Add-on Category', 'mobile-dj-manager'), 'new_item_name' => __('New Add-on Category', 'mobile-dj-manager'), 'menu_name' => __('Event Add-on Categories', 'mobile-dj-manager'), 'separate_items_with_commas' => NULL, 'choose_from_most_used' => __('Choose from the most popular Add-on Categories', 'mobile-dj-manager'), 'not_found' => __('No add-ons categories found', 'mobile-dj-manager')); $addon_category_args = apply_filters('mdjm_addon_category_args', array('hierarchical' => true, 'labels' => apply_filters('mdjm_addon_category_labels', $addon_category_labels), 'query_var' => true, 'rewrite' => array('slug' => 'addon-category'), 'capabilities' => apply_filters('mdjm_addon_category_caps', array('manage_terms' => 'manage_mdjm', 'edit_terms' => 'manage_mdjm', 'delete_terms' => 'manage_mdjm', 'assign_terms' => 'mdjm_employee')), 'update_count_callback' => '_update_generic_term_count')); register_taxonomy('addon-category', array('mdjm-addon'), $addon_category_args); register_taxonomy_for_object_type('addon-category', 'mdjm-addon'); /** Event Types */ $event_type_labels = array('name' => _x('Event Type', 'taxonomy general name', 'mobile-dj-manager'), 'singular_name' => _x('Event Type', 'taxonomy singular name', 'mobile-dj-manager'), 'search_items' => __('Search Event Types', 'mobile-dj-manager'), 'all_items' => __('All Event Types', 'mobile-dj-manager'), 'edit_item' => __('Edit Event Type', 'mobile-dj-manager'), 'update_item' => __('Update Event Type', 'mobile-dj-manager'), 'add_new_item' => __('Add New Event Type', 'mobile-dj-manager'), 'new_item_name' => __('New Event Type', 'mobile-dj-manager'), 'menu_name' => __('Event Types', 'mobile-dj-manager'), 'separate_items_with_commas' => NULL, 'choose_from_most_used' => __('Choose from the most popular Event Types', 'mobile-dj-manager'), 'not_found' => __('No event types found', 'mobile-dj-manager')); $event_type_args = apply_filters('mdjm_event_type_args', array('hierarchical' => true, 'labels' => apply_filters('mdjm_event_type_labels', $event_type_labels), 'query_var' => true, 'rewrite' => array('slug' => 'event-types'), 'capabilities' => apply_filters('mdjm_event_type_caps', array('manage_terms' => 'manage_mdjm', 'edit_terms' => 'manage_mdjm', 'delete_terms' => 'manage_mdjm', 'assign_terms' => 'mdjm_employee')), 'update_count_callback' => '_update_generic_term_count')); register_taxonomy('event-types', array('mdjm-event'), $event_type_args); register_taxonomy_for_object_type('event-types', 'mdjm-event'); /** Enquiry Sources */ $enquiry_source_labels = array('name' => _x('Enquiry Sources', 'taxonomy general name', 'mobile-dj-manager'), 'singular_name' => _x('Enquiry Source', 'taxonomy singular name', 'mobile-dj-manager'), 'search_items' => __('Search Enquiry Sources', 'mobile-dj-manager'), 'all_items' => __('All Enquiry Sources', 'mobile-dj-manager'), 'edit_item' => __('Edit Enquiry Source', 'mobile-dj-manager'), 'update_item' => __('Update Enquiry Source', 'mobile-dj-manager'), 'add_new_item' => __('Add New Enquiry Source', 'mobile-dj-manager'), 'new_item_name' => __('New Enquiry Source', 'mobile-dj-manager'), 'menu_name' => __('Enquiry Sources', 'mobile-dj-manager'), 'popular_items' => __('Most Enquiries from', 'mobile-dj-manager'), 'separate_items_with_commas' => NULL, 'choose_from_most_used' => __('Choose from the most popular Enquiry Sources', 'mobile-dj-manager'), 'not_found' => __('No enquiry sources found', 'mobile-dj-manager')); $enquiry_source_args = apply_filters('mdjm_enquiry_source_args', array('hierarchical' => false, 'labels' => apply_filters('mdjm_enquiry_source_labels', $enquiry_source_labels), 'description' => sprintf(__('Track how clients found %s', 'mobile-dj-manager'), mdjm_get_option('company_name', get_bloginfo('name'))), 'public' => false, 'show_ui' => true, 'query_var' => true, 'rewrite' => array('slug' => 'enquiry-source'), 'capabilities' => apply_filters('mdjm_event_type_caps', array('manage_terms' => 'manage_mdjm', 'edit_terms' => 'manage_mdjm', 'delete_terms' => 'manage_mdjm', 'assign_terms' => 'mdjm_employee')), 'update_count_callback' => '_update_generic_term_count')); register_taxonomy('enquiry-source', array('mdjm-event'), $enquiry_source_args); register_taxonomy_for_object_type('enquiry-source', 'mdjm-event'); /** Playlist Category */ $playlist_category_labels = array('name' => _x('Playlist Categories', 'taxonomy general name', 'mobile-dj-manager'), 'singular_name' => _x('Playlist Category', 'taxonomy singular name', 'mobile-dj-manager'), 'search_items' => __('Playlist Categories', 'mobile-dj-manager'), 'all_items' => __('All Playlist Categories', 'mobile-dj-manager'), 'edit_item' => __('Edit Playlist Category', 'mobile-dj-manager'), 'update_item' => __('Update Playlist Category', 'mobile-dj-manager'), 'add_new_item' => __('Add New Playlist Category', 'mobile-dj-manager'), 'new_item_name' => __('New Playlist Category', 'mobile-dj-manager'), 'menu_name' => __('Event Playlist Categories', 'mobile-dj-manager'), 'separate_items_with_commas' => NULL, 'choose_from_most_used' => __('Choose from the most popular Playlist Categories', 'mobile-dj-manager'), 'not_found' => __('No playlist categories found', 'mobile-dj-manager')); $playlist_category_args = apply_filters('mdjm_playlist_category_args', array('hierarchical' => true, 'labels' => apply_filters('mdjm_playlist_category_labels', $playlist_category_labels), 'query_var' => true, 'capabilities' => apply_filters('mdjm_playlist_category_caps', array('manage_terms' => 'manage_mdjm', 'edit_terms' => 'manage_mdjm', 'delete_terms' => 'manage_mdjm', 'assign_terms' => 'mdjm_employee')), 'update_count_callback' => '_update_generic_term_count')); register_taxonomy('playlist-category', array('mdjm-playlist'), $playlist_category_args); register_taxonomy_for_object_type('playlist-category', 'mdjm-playlist'); /** Transaction Types */ $txn_type_labels = array('name' => _x('Transaction Type', 'taxonomy general name', 'mobile-dj-manager'), 'singular_name' => _x('Transaction Type', 'taxonomy singular name', 'mobile-dj-manager'), 'search_items' => __('Search Transaction Types', 'mobile-dj-manager'), 'all_items' => __('All Transaction Types', 'mobile-dj-manager'), 'edit_item' => __('Edit Transaction Type', 'mobile-dj-manager'), 'update_item' => __('Update Transaction Type', 'mobile-dj-manager'), 'add_new_item' => __('Add New Transaction Type', 'mobile-dj-manager'), 'new_item_name' => __('New Transaction Type', 'mobile-dj-manager'), 'menu_name' => __('Transaction Types', 'mobile-dj-manager'), 'separate_items_with_commas' => NULL, 'choose_from_most_used' => __('Choose from the most popular Transaction Types', 'mobile-dj-manager'), 'not_found' => __('No transaction types found', 'mobile-dj-manager')); $txn_type_args = apply_filters('mdjm_transaction_type_args', array('hierarchical' => true, 'labels' => apply_filters('mdjm_transaction_type_labels', $txn_type_labels), 'query_var' => true, 'rewrite' => array('slug' => 'transaction-types'), 'capabilities' => apply_filters('mdjm_transaction_type_caps', array('manage_terms' => 'manage_mdjm', 'edit_terms' => 'manage_mdjm', 'delete_terms' => 'manage_mdjm', 'assign_terms' => 'mdjm_employee')), 'update_count_callback' => '_update_generic_term_count')); register_taxonomy('transaction-types', array('mdjm-transaction'), $txn_type_args); register_taxonomy_for_object_type('transaction-types', 'mdjm-transaction'); /** Venue Details */ $venue_details_labels = array('name' => _x('Venue Details', 'taxonomy general name', 'mobile-dj-manager'), 'singular_name' => _x('Venue Detail', 'taxonomy singular name', 'mobile-dj-manager'), 'search_items' => __('Search Venue Details', 'mobile-dj-manager'), 'all_items' => __('All Venue Details', 'mobile-dj-manager'), 'edit_item' => __('Edit Venue Detail', 'mobile-dj-manager'), 'update_item' => __('Update Venue Detail', 'mobile-dj-manager'), 'add_new_item' => __('Add New Venue Detail', 'mobile-dj-manager'), 'new_item_name' => __('New Venue Detail', 'mobile-dj-manager'), 'menu_name' => __('Venue Details', 'mobile-dj-manager'), 'separate_items_with_commas' => NULL, 'choose_from_most_used' => __('Choose from the most popular Venue Details', 'mobile-dj-manager'), 'not_found' => __('No details found', 'mobile-dj-manager')); $venue_details_args = apply_filters('mdjm_venue_details_args', array('hierarchical' => true, 'labels' => apply_filters('mdjm_venue_details_labels', $venue_details_labels), 'query_var' => true, 'rewrite' => array('slug' => 'venue-details'), 'capabilities' => apply_filters('mdjm_venue_details_caps', array('manage_terms' => 'manage_mdjm', 'edit_terms' => 'manage_mdjm', 'delete_terms' => 'manage_mdjm', 'assign_terms' => 'mdjm_employee')), 'update_count_callback' => '_update_generic_term_count')); register_taxonomy('venue-details', array('mdjm-venue'), $venue_details_args); register_taxonomy_for_object_type('venue-details', 'mdjm-venue'); }
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!'); } } }
<?php /** * This template is used to display the header content of an email. * * @version 1.0 * @author Mike Howard * @since 1.3 * @content_tag Not Supported * @shortcodes Not Supported * * Do not customise this file! * If you wish to make changes, copy this file to your theme directory /theme/mdjm-templates/email/email-header.php */ if (!defined('ABSPATH')) { exit; } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title><?php echo mdjm_get_option('company_name'); ?> </title> </head> <body>
/** * 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); }
/** * Actions taken once an event is set to the Enquiry Status * * @param int post_id The event (post) ID * obj post * * @return * @since 1.1.3 */ public function status_enquiry($post_id, $post, $event_data, $field_updates) { global $mdjm, $mdjm_settings; if (MDJM_DEBUG == true) { MDJM()->debug->log_it('*** Starting New Enquiry procedures ***' . "\r\n", true); } /* -- Permission Check -- */ if (!current_user_can('administrator') || dj_can('dj_add_event')) { return $post_id; } /* -- Update Journal with event creation -- */ if (MDJM_JOURNAL == true) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Adding journal entry'); } $this->add_journal(array('user' => get_current_user_id(), 'comment_content' => 'Event created via Admin <br /><br />' . (isset($field_updates) ? implode('<br />', $field_updates) : '') . '<br />(' . time() . ')', 'comment_type' => 'mdjm-journal'), array('type' => 'create-event', 'visibility' => '1')); } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Journalling is disabled'); } } /* -- Generate online quote if configured -- */ if (mdjm_get_option('online_enquiry', false) && !empty($_POST['mdjm_online_quote'])) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Generating event quote for event ' . $post_id); } // Determine if a post already exists for the event quote $quote_post = $this->retrieve_quote($post_id); // Retrieve the post content. If one exists we'll use that, otherwise get the template $quote_template = get_post($_POST['mdjm_online_quote']); // Make sure we have the template and create or update the quote post if (is_object($quote_template)) { /* -- Retrieve the quote content -- */ $content = $quote_template->post_content; $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); $content = str_replace('{DEPOSIT}', '<span id="deposit_price">{DEPOSIT}</span>', $content); $content = str_replace('{TOTAL_COST}', '<span id="quote_price">{TOTAL_COST}</span>', $content); /* -- Shortcode replacements -- */ $content = $mdjm->filter_content($event_data['_mdjm_event_client'], $post_id, $content); // If no quote post exists for this event, we'll be creating one if (empty($quote_post)) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Creating new event quote'); } $post_args['post_title'] = 'Quote ' . MDJM_EVENT_PREFIX . $post_id; $post_args['post_content'] = $content; $post_args['post_type'] = 'mdjm-quotes'; $post_args['post_status'] = 'mdjm-quote-generated'; $post_args['post_author'] = !empty($event_data['_mdjm_event_client']) ? $event_data['_mdjm_event_client'] : get_current_user_id(); $post_args['post_parent'] = $post_id; // Create the quotation post $quote_post_id = wp_insert_post($post_args); if (!empty($quote_post_id)) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Quotation generated ' . $quote_post_id); } } } else { // We have an existing quote so update it if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Updating existing event quote'); } wp_update_post(array('ID' => $quote_post, 'post_content' => $content, 'post_status' => 'mdjm-quote-generated', 'post_date' => current_time('mysql'), 'edit_date' => true)); /* -- Reset the meta keys for date viewed and view count -- */ if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Removing existing meta keys'); } delete_post_meta($quote_post, '_mdjm_quote_viewed_date'); delete_post_meta($quote_post, '_mdjm_quote_viewed_count'); } } // if( is_object( $quote_template ) ) } /* -- Send emails as required -- */ if (empty($_POST['mdjm_block_emails'])) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Generating Email'); } $email_args = array('content' => !empty($_POST['mdjm_email_template']) ? $_POST['mdjm_email_template'] : $mdjm_settings['templates']['enquiry'], 'to' => $event_data['_mdjm_event_client'], 'from' => $mdjm_settings['templates']['enquiry_from'] == 'dj' ? $_POST['_mdjm_event_dj'] : 0, 'journal' => 'email-client', 'event_id' => $post_id, 'html' => true, 'cc_dj' => !empty($mdjm_settings['email']['bcc_dj_to_client']) ? true : false, 'cc_admin' => !empty($mdjm_settings['email']['bcc_admin_to_client']) ? true : false, 'source' => 'Event Enquiry'); // Filter the email args $email_args = apply_filters('mdjm_quote_email_args', $email_args); // Send the email $quote = $mdjm->send_email($email_args); if ($quote) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Client quote sent. ' . $quote . ' ID '); } } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' ERROR: Client quote was not sent'); } } } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- No email requested'); } } if (MDJM_DEBUG == true) { MDJM()->debug->log_it('*** Completed New Enquiry procedures ***' . "\r\n", true); } }
/** * Sets the recipients that should receive a copy of the email * * @since 1.3 * @param str $recipient The address of the original email recipient * @param int $event_id Event ID to which the email is associated * @param arr $others Array of additional addresses to whom to send a copy of the email * @return arr $copy_to Array of addresses to send a copy of the email to */ function mdjm_email_maybe_send_a_copy($recipient, $event_id = '', $others = array()) { if (is_array($recipient)) { return; } if (!empty($event_id)) { $client = get_userdata(mdjm_get_event_client_id($event_id)); $employee = get_userdata(mdjm_get_event_primary_employee($event_id)); } else { $client = get_user_by('email', $recipient); } if (!$client) { return; } if (!mdjm_user_is_client($client->ID)) { return; } $copy_to = array(); if (mdjm_get_option('bcc_admin_to_client')) { $copy_to[] = mdjm_get_option('system_email'); } if (mdjm_get_option('bcc_dj_to_client') && !empty($employee)) { $copy_to[] = $employee->user_email; } $copy_to = array_merge($others, $copy_to); return array_unique($copy_to); }
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'))); }
/** * Define the data to be displayed in each of the custom columns for the Transaction 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_transaction_posts_custom_column($column_name, $post_id) { switch ($column_name) { // Details case 'detail': $trans_types = get_the_terms($post_id, 'transaction-types'); if (is_array($trans_types)) { foreach ($trans_types as $key => $trans_type) { $trans_types[$key] = $trans_type->name; } echo implode("<br/>", $trans_types); } break; // Date // Date case 'txn_date': echo get_post_time('d M Y'); break; // Direction // Direction case 'direction': if ('mdjm-income' == get_post_status($post_id)) { echo '<span style="color:green">' . __('In', 'mobile-dj-manager') . '</span>'; } else { echo '<span style="color:red"> ' . __('Out', 'mobile-dj-manager') . '</span>'; } break; // Source // Source case 'payee': echo mdjm_get_txn_recipient_name($post_id); break; // Event // Event case 'event': $parent = wp_get_post_parent_id($post_id); if (!empty($parent)) { printf('<a href="%s">%s</a>', admin_url("/post.php?post={$parent}&action=edit"), mdjm_get_option('') . $parent); } else { echo __('N/A', 'mobile-dj-manager'); } break; // Value // Value case 'txn_value': echo mdjm_currency_filter(mdjm_format_amount(get_post_meta($post_id, '_mdjm_txn_total', true))); break; // Status // Status case 'txn_status': echo get_post_meta($post_id, '_mdjm_txn_status', true); break; } // switch }
/** * Setup the availability checker. * * @since 1.3 * @param str $date The date to check * @return bool */ public function setup_check($date, $_employees, $_roles, $_status) { if (empty($date)) { $date = date('Y-m-d'); } $this->date = !empty($date) ? strtotime($date) : date('Y-m-d'); if (empty($_employees) && !empty($_roles)) { $theemployees = mdjm_get_employees($_roles); } elseif (empty($_employees)) { $theemployees = mdjm_get_employees(mdjm_get_option('availability_roles')); } else { $theemployees = is_array($_employees) ? $_employees : array($_employees); } $employees = array(); foreach ($theemployees as $employee) { if (is_object($employee)) { $employees[] = $employee->ID; } else { $employees[] = $employee; } } $this->employees = $employees; $this->roles = !empty($_roles) ? $_roles : mdjm_get_roles(mdjm_get_option('availability_roles')); $this->status = !empty($_status) ? $_status : mdjm_get_option('availability_status', 'any'); if (!is_array($this->roles)) { array($this->roles); } if (!is_array($this->status)) { array($this->status); } return true; }
/** * Renders an Time Dropdown of Hours * * @since 1.3.7 * * @param arr $args * * @return str */ public function time_hour_select($args = array()) { $options = array(); $defaults = array('name' => 'event_start_hr', 'class' => 'mdjm-time', 'id' => '', 'selected' => 0); $args = wp_parse_args($args, $defaults); $args['id'] = !empty($args['id']) ? $args['id'] : $args['name']; if ('H:i' == mdjm_get_option('time_format', 'H:i')) { $i = '00'; $x = '23'; $format = 'H'; } else { $i = '1'; $x = '12'; $format = 'g'; } while ($i <= $x) { if ($i != 0 && $i < 10 && $format == 'H') { $i = '0' . $i; } $options[$i] = $i; $i++; } $output = $this->select(array('name' => $args['name'], 'selected' => $args['selected'], 'class' => $args['class'], 'options' => $options, 'show_option_all' => false, 'show_option_none' => false)); return $output; }
/** * Check the availability status for the given date * * @since 1.3 * @param Global $_POST * @return arr */ function mdjm_do_availability_check_ajax() { $date = $_POST['check_date']; $avail_text = !empty($_POST['avail_text']) ? $_POST['avail_text'] : mdjm_get_option('availability_check_pass_text'); $unavail_text = !empty($_POST['unavail_text']) ? $_POST['unavail_text'] : mdjm_get_option('availability_check_fail_text'); $search = array('{EVENT_DATE}', '{EVENT_DATE_SHORT}'); $replace = array(date('l, jS F Y', strtotime($date)), mdjm_format_short_date($date)); $result = mdjm_do_availability_check($date); if (!empty($result['available'])) { $result['result'] = 'available'; $result['message'] = str_replace($search, $replace, $avail_text); $result['message'] = mdjm_do_content_tags($result['message']); } else { $result['result'] = 'unavailable'; $result['message'] = str_replace($search, $replace, $unavail_text); $result['message'] = mdjm_do_content_tags($result['message']); } 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); }
/** * Output the event emails 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_history_emails_table($event_id) { global $mdjm_event, $mdjm_event_update; if (!mdjm_get_option('track_client_emails')) { return; } $emails = mdjm_event_get_emails($event_id); $count = count($emails); $i = 0; ?> <div id="mdjm-event-emails-table"> <strong><?php _e('Associated Emails', 'mobile-dj-manager'); ?> </strong> <table class="widefat mdjm_event_emails_table mdjm_form_fields"> <thead> <tr> <th><?php _e('Date', 'mobile-dj-manager'); ?> </th> <th><?php _e('Subject', 'mobile-dj-manager'); ?> </th> <th><?php _e('Status', 'mobile-dj-manager'); ?> </th> </tr> </thead> <tbody> <?php if ($emails) { ?> <?php foreach ($emails as $email) { ?> <tr> <td><?php echo date(mdjm_get_option('time_format') . ' ' . mdjm_get_option('short_date_format'), strtotime($email->post_date)); ?> </td> <td><a href="<?php echo get_edit_post_link($email->ID); ?> "><?php echo get_the_title($email->ID); ?> </a></td> <td><?php echo get_post_status_object($email->post_status)->label; if (!empty($email->post_modified) && 'opened' == $email->post_status) { ?> <?php echo '<br />'; ?> <span class="description"><?php echo date(mdjm_get_option('time_format', 'H:i') . ' ' . mdjm_get_option('short_date_format', 'd/m/Y'), strtotime($email->post_modified)); ?> </span> <?php } ?> </td> </tr> <?php $i++; ?> <?php if ($i >= 3) { break; } ?> <?php } ?> <?php } else { ?> <tr> <td colspan="3"><?php printf(__('There are no emails associated with this %s', 'mobile-dj-manager'), mdjm_get_label_singular(true)); ?> </td> </tr> <?php } ?> </tbody> <?php if ($emails) { ?> <tfoot> <tr> <td colspan="3"><span class="description">(<?php printf(__('Displaying the most recent %d emails of %d total', 'mobile-dj-manager'), $count >= 3 ? 3 : $count, $count); ?> )</span></td> </tr> </tfoot> <?php } ?> </table> </div> <?php }
/** * 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'))); }
/** * Returns the label for the selected measurement unit. * * @since 1.3.8 * @param bool $singular Whether to return a singular (true) or plural (false) value. * @param bool $lowercase True to return a lowercase label, otherwise false. * @return str */ function mdjm_travel_unit_label($singular = false, $lowercase = true) { $units = array('singular' => array('imperial' => 'Mile', 'metric' => 'Kilometer'), 'plural' => array('imperial' => 'Miles', 'metric' => 'Kilometers')); $type = 'singular'; if (!$singular) { $type = 'plural'; } $return = $units[$type][mdjm_get_option('travel_units', 'imperial')]; if ($lowercase) { $return = strtolower($return); } return apply_filters('mdjm_travel_unit_label', $return); }
/** * Registers the dashboard widgets. * * @since 1.3 * @param * @return */ function mdjm_add_wp_dashboard_widgets() { wp_add_dashboard_widget('mdjm-widget-overview', sprintf(__('%s Overview', 'mobile-dj-manager'), mdjm_get_option('company_name', 'MDJM')), 'mdjm_widget_events_overview'); wp_add_dashboard_widget('mdjm-availability-overview', 'MDJM Availability', 'f_mdjm_dash_availability'); }
/** * Import playlist entries from custom DB table. * * Loop through all entries in the custom table, create posts for them and assign the terms. * * @since 1.3 * @param * @return void */ function mdjm_import_playlist_entries_13() { global $wpdb; if (get_option('mdjm_playlist_import')) { return; } // Create the terms mdjm_create_playlist_terms_13(); $query = "SELECT * FROM \n\t\t\t " . $wpdb->prefix . "mdjm_playlists"; $entries = $wpdb->get_results($query); if ($entries) { add_option('mdjm_playlist_import', false); foreach ($entries as $entry) { $meta = array('song' => isset($entry->song) ? $entry->song : '', 'artist' => isset($entry->artist) ? $entry->artist : '', 'added_by' => isset($entry->added_by) ? $entry->added_by : get_current_user_id(), 'djnotes' => isset($entry->info) ? $entry->info : '', 'added_date' => isset($entry->date_added) ? $entry->date_added : '', 'category' => isset($entry->play_when) ? trim($entry->play_when) : 'Guest', 'to_mdjm' => isset($entry->date_to_mdjm) ? date('Y-m-d H:i:s', strtotime($entry->date_to_mdjm)) : '', 'uploaded' => isset($entry->upload_procedure) ? $entry->upload_procedure : ''); $term = isset($entry->play_when) ? trim($entry->play_when) : 'Guest'; $event_id = isset($entry->event_id) ? $entry->event_id : ''; if (empty($term) || $term == 'Guest Added') { $term = 'Guest'; $meta['category'] = $term; } if (!term_exists($term, 'playlist-category')) { wp_insert_term($term, 'playlist-category'); } $title = sprintf(__('Event ID: %s %s %s', 'mobile-dj-manager'), mdjm_get_option('event_prefix', '') . $event_id, $meta['song'], $meta['artist']); $category = get_term_by('name', $term, 'playlist-category'); $entry_id = wp_insert_post(array('post_type' => 'mdjm-playlist', 'post_title' => $title, 'post_author' => 1, 'post_status' => 'publish', 'post_parent' => $event_id, 'post_date' => isset($entry->date_added) ? date('Y-m-d H:i:s', strtotime($entry->date_added)) : date('Y-m-d H:i:s'), 'post_category' => !empty($category) ? array($category->term_id) : '')); if (!empty($category)) { mdjm_set_playlist_entry_category($entry_id, $category->term_id); } foreach ($meta as $key => $value) { update_post_meta($entry_id, '_mdjm_playlist_entry_' . $key, $value); } } update_option('mdjm_playlist_import', true); } }
/** * 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); }
/** * 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'); }