/**
 * 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();
 }
Example #3
0
/**
 * 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);
}
Example #4
0
/**
 * 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;
}
Example #5
0
/**
 * 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 &amp; 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);
}
Example #9
0
/**
 * 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;
}
Example #12
0
/**
 * 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');
}
Example #13
0
        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!');
                }
            }
        }
Example #14
0
<?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>
Example #15
0
/**
 * 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);
}
Example #16
0
 /**
  * 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(']]>', ']]&gt;', $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);
}
Example #18
0
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&section=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'), '&amp;'), 'href' => admin_url('admin.php?page=mdjm-settings&tab=emails'), 'meta' => array('title' => sprintf(__('MDJM Email %s Template Settings', 'mobile-dj-manager'), '&amp;'))));
        $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')));
}
Example #19
0
/**
 * 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">&nbsp;&nbsp;&nbsp;&nbsp;' . __('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;
 }
Example #22
0
/**
 * 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;
}
Example #23
0
 /**
  * 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);
 }
Example #24
0
/**
 * 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 
}
Example #25
0
/**
 * 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');
}
Example #28
0
/**
 * 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);
    }
}
Example #29
0
 /**
  * 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);
 }
Example #30
0
/**
 * 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 &amp; Respond to Enquiry">Assign %s &amp; 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');
}