/**
  * Get the Export Data
  *
  * @access	public
  * @since	1.4
  * @return	arr		$data	The data for the CSV file
  */
 public function get_data()
 {
     $data = array();
     // Export all events
     $offset = 30 * ($this->step - 1);
     $args = array('post_type' => 'mdjm-event', 'posts_per_page' => 30, 'offset' => $offset, 'paged' => $this->step, 'post_status' => $this->status, 'order' => 'ASC', 'orderby' => 'ID');
     if (!empty($this->start) || !empty($this->end)) {
         $args['meta_query'] = array(array('key' => '_mdjm_event_date', 'value' => array(date('Y-m-d', strtotime($this->start)), date('Y-m-d', strtotime($this->end))), 'compare' => 'BETWEEN', 'type' => 'DATE'));
     }
     $events = get_posts($args);
     if ($events) {
         $i = 0;
         foreach ($events as $event) {
             $event_data = mdjm_get_event_data($event->ID);
             $employees = array();
             $package = '';
             $addons = array();
             if (!empty($event_data['client'])) {
                 $client = '(' . $event_data['client'] . ') ' . mdjm_get_client_display_name($event_data['client']);
             }
             if (!empty($event_data['employees']['primary_employee'])) {
                 $primary_employee = '(' . $event_data['employees']['primary_employee'] . ') ' . mdjm_get_employee_display_name($event_data['employees']['primary_employee']);
             }
             if (!empty($event_data['employees']['employees'])) {
                 foreach ($event_data['employees']['employees'] as $employee_id => $employee_data) {
                     $employees[] = '(' . $employee_id . ') ' . mdjm_get_employee_display_name($employee_id);
                 }
             }
             if (!empty($event_data['equipment']['package'])) {
                 $package = $event_data['equipment']['package'];
             }
             if (!empty($event_data['equipment']['addons'])) {
                 foreach ($event_data['equipment']['addons'] as $addon_id) {
                     $addons[] = mdjm_get_addon_name($addon_id);
                 }
             }
             $data[$i] = array('id' => $event->ID, 'event_id' => mdjm_get_event_contract_id($event->ID), 'date' => mdjm_format_short_date($event_data['date']), 'status' => $event_data['status'], 'client' => $client, 'primary_employee' => '(' . $event_data['employees']['primary_employee'] . ') ' . mdjm_get_client_display_name($event_data['employees']['primary_employee']), 'employees' => implode(',', $employees), 'package' => $package, 'addons' => implode(', ', $addons), 'cost' => mdjm_format_amount($event_data['cost']['cost']), 'deposit' => mdjm_format_amount($event_data['cost']['deposit']), 'deposit_status' => $event_data['cost']['deposit_status'], 'balance' => mdjm_format_amount($event_data['cost']['balance']), 'balance_status' => $event_data['cost']['balance_status'], 'start_time' => mdjm_format_time($event_data['start_time']), 'end_time' => mdjm_format_time($event_data['end_time']), 'end_date' => mdjm_format_short_date($event_data['end_date']), 'setup_date' => mdjm_format_short_date($event_data['setup_date']), 'setup_time' => mdjm_format_time($event_data['setup_time']), 'duration' => $event_data['duration'], 'contract' => $event_data['contract'], 'contract_status' => $event_data['contract_status'], 'playlist_enabled' => $event_data['playlist']['playlist_enabled'], 'playlist_status' => $event_data['playlist']['playlist_status'], 'source' => $event_data['source'], 'converted' => $event_data['contract_status'], 'venue' => $event_data['venue']['name'], 'address' => !empty($event_data['venue']['address']) ? implode(', ', $event_data['venue']['address']) : '');
             $i++;
         }
         $data = apply_filters('mdjm_export_get_data', $data);
         $data = apply_filters('mdjm_export_get_data_' . $this->export_type, $data);
         return $data;
     }
     return false;
 }
Example #2
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');
}
Example #3
0
/**
 * Output the event employee selection row
 *
 * @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_employee_select_row($event_id)
{
    global $mdjm_event, $mdjm_event_update;
    $employee_id = $mdjm_event->employee_id ? $mdjm_event->employee_id : get_current_user_id();
    $payment_status = $mdjm_event->employee_id ? mdjm_event_employees_paid($event_id, $mdjm_event->employee_id) : false;
    if (isset($_GET['primary_employee'])) {
        $employee_id = $_GET['primary_employee'];
    }
    echo MDJM()->html->hidden(array('name' => 'event_dj', 'value' => $employee_id));
    ?>

	<div class="mdjm_field_wrap mdjm_form_fields">
        <div class="mdjm_col col2">
			<label for="_mdjm_event_dj"><?php 
    _e('Primary Employee:', 'mobile-dj-manager');
    ?>
</label><br />
				<?php 
    if (!mdjm_is_employer() || !mdjm_employee_can('manage_employees') || $payment_status) {
        ?>

                    <?php 
        echo MDJM()->html->text(array('name' => 'event_dj_display', 'class' => '', 'value' => mdjm_get_employee_display_name($employee_id), 'readonly' => true));
        ?>

					<?php 
        echo MDJM()->html->hidden(array('name' => '_mdjm_event_dj', 'value' => $employee_id));
        ?>

                <?php 
    } else {
        ?>

					<?php 
        echo MDJM()->html->employee_dropdown(array('selected' => $mdjm_event->employee_id, 'group' => true, 'chosen' => true, 'placeholder' => __('Select an Employee', 'mobile-dj-manager')));
        ?>
            
                <?php 
    }
    ?>

		</div>

		<?php 
    if (mdjm_get_option('enable_employee_payments') && mdjm_employee_can('edit_txns')) {
        ?>

			<?php 
        $wage = mdjm_get_employees_event_wage($event_id, $employee_id);
        ?>

			<div class="mdjm_col col2">
				<label for="_mdjm_event_dj_wage"><?php 
        _e('Wage', 'mobile-dj-manager');
        ?>
:</label><br />
                <?php 
        echo mdjm_currency_symbol() . MDJM()->html->text(array('name' => '_mdjm_event_dj_wage', 'class' => 'mdjm-currency', 'value' => !empty($wage) ? $wage : '', 'placeholder' => mdjm_sanitize_amount('0'), 'readonly' => $payment_status ? true : false));
        ?>
			</div>

        <?php 
    }
    ?>

    </div>

	<?php 
}
/**
 * Retrieve data for an addon.
 *
 * @since	1.4
 * @param	int|obj	$package	The addon WP_Post object, or post ID.
 * @return	arr
 */
function mdjm_get_addon_data($addon)
{
    $addon_id = is_object($addon) ? $addon->ID : $addon;
    $events = mdjm_get_addon_event_types($addon_id);
    $users = mdjm_get_employees_with_addon($addon_id);
    $packages = mdjm_get_packages_with_addons($addon_id);
    $cats = get_the_terms($addon_id, 'addon-category');
    $employees = array();
    $months = array();
    $categories = array();
    $in_packages = array();
    if (!mdjm_addon_is_restricted_by_date($addon_id)) {
        $months[] = __('Always', 'mobile-dj-manager');
    } else {
        $availability = mdjm_get_addon_months_available($addon_id);
        if (!$availability) {
            $months[] = __('Always', 'mobile-dj-manager');
        } else {
            $i = 0;
            foreach ($availability as $month) {
                $months[] = mdjm_month_num_to_name($availability[$i]);
                $i++;
            }
        }
    }
    if (in_array('all', $users)) {
        $employees[] = __('All Employees', 'mobile-dj-manager');
    } else {
        foreach ($users as $employee_id) {
            if ('all' == $employee_id) {
                continue;
            }
            $employees[] = array($employee_id => mdjm_get_employee_display_name($employee_id));
        }
    }
    if (in_array('all', $events)) {
        $event_types = sprintf(__('All %s Types', 'mobile-dj-manager'), mdjm_get_label_singular());
    } else {
        foreach ($events as $event) {
            $term = get_term($event, 'event-types');
            if (!empty($term)) {
                $event_types[] = $term->name;
            }
        }
    }
    if (mdjm_addon_has_variable_prices($addon_id)) {
        $range = mdjm_get_addon_price_range($addon_id);
        $price = mdjm_get_currency() . ' ' . mdjm_format_amount($range['low']) . ' &mdash; ' . mdjm_format_amount($range['high']);
    } else {
        $price = mdjm_get_currency() . ' ' . mdjm_format_amount(mdjm_get_addon_price($addon_id));
    }
    if ($packages) {
        foreach ($packages as $package) {
            $in_packages[] = array($package->ID => mdjm_get_package_name($package->ID));
        }
    }
    if ($cats) {
        foreach ($cats as $cat) {
            $categories[] = $cat->name;
        }
    }
    $addon_data = array('name' => mdjm_get_addon_name($addon_id), 'categories' => $categories, 'availability' => array('months' => $months, 'employees' => $employees, 'event_types' => $event_types), 'price' => $price, 'packages' => $in_packages, 'usage' => array('packages' => mdjm_count_packages_with_addon($addon_id), 'events' => mdjm_count_events_with_addon($addon_id)));
    return apply_filters('mdjm_get_addon_data', $addon_data);
}
Example #5
0
/**
 * Define the data to be displayed in each of the custom columns for the Addon post types
 *
 * @since	1.4
 * @param	str		$column_name	The name of the column to display
 * @param	int		$post_id		The current post ID
 * @return
 */
function mdjm_addon_posts_custom_column($column_name, $post_id)
{
    global $post;
    switch ($column_name) {
        // Category
        case 'addon_category':
            echo get_the_term_list($post_id, 'addon-category', '', ', ', '');
            break;
            // Availability
        // Availability
        case 'availability':
            $output = array();
            if (!mdjm_addon_is_restricted_by_date($post_id)) {
                $output[] = __('Always', 'mobile-dj-manager');
            } else {
                $availability = mdjm_get_addon_months_available($post_id);
                if (!$availability) {
                    $output[] = __('Always', 'mobile-dj-manager');
                } else {
                    $i = 0;
                    foreach ($availability as $month) {
                        $output[] = mdjm_month_num_to_name($availability[$i]);
                        $i++;
                    }
                }
            }
            echo implode(', ', $output);
            break;
            // Event Types
        // Event Types
        case 'event_types':
            $output = array();
            $event_label = mdjm_get_label_singular();
            $event_types = mdjm_get_addon_event_types($post_id);
            if (in_array('all', $event_types)) {
                $output[] = sprintf(__('All %s Types', 'mobile-dj-manager'), $event_label);
            } else {
                foreach ($event_types as $event_type) {
                    $term = get_term($event_type, 'event-types');
                    if (!empty($term)) {
                        $output[] = $term->name;
                    }
                }
            }
            echo implode(', ', $output);
            break;
            // Employees
        // Employees
        case 'employees':
            $employees = mdjm_get_employees_with_addon($post_id);
            $output = array();
            if (in_array('all', $employees)) {
                $output[] = __('All Employees', 'mobile-dj-manager');
            } else {
                foreach ($employees as $employee) {
                    if ('all' == $employee) {
                        continue;
                    }
                    $output[] = '<a href="' . get_edit_user_link($employee) . '">' . mdjm_get_employee_display_name($employee) . '</a>';
                }
            }
            echo implode('<br />', $output);
            break;
            // Price
        // Price
        case 'price':
            if (mdjm_addon_has_variable_prices($post_id)) {
                $range = mdjm_get_addon_price_range($post_id);
                echo mdjm_currency_filter(mdjm_format_amount($range['low']));
                echo ' &mdash; ';
                echo mdjm_currency_filter(mdjm_format_amount($range['high']));
            } else {
                echo mdjm_currency_filter(mdjm_format_amount(mdjm_get_addon_price($post_id)));
            }
            break;
            // Usage
        // Usage
        case 'usage':
            $packages = mdjm_count_packages_with_addon($post_id);
            $events = mdjm_count_events_with_addon($post_id);
            echo $packages . _n(' Package', ' Packages', $packages, 'mobile-dj-manager') . '<br />';
            echo $events . ' ' . _n(mdjm_get_label_singular(), mdjm_get_label_plural(), $events, 'mobile-dj-manager');
            break;
    }
    // switch
}
/**
 * Log the primary employees payment settings and update if employee or wage changes.
 *
 * @since	1.3
 * @param	int			$event_id	Event ID.
 * @param	arr			$old_meta	Old meta values from before event save.
 * @param	arr			$new_meta	New meta values after event save.
 * @return	void
 */
function mdjm_manage_primary_employee_payment_status($event_id, $old_meta, $new_meta)
{
    if (!mdjm_get_option('enable_employee_payments')) {
        return;
    }
    $mdjm_event = new MDJM_Event($event_id);
    $employee_id = $mdjm_event->get_employee();
    if (empty($employee_id)) {
        return;
    }
    $payment_amount = mdjm_get_employees_event_wage($event_id, $employee_id);
    $payment_status = get_post_meta($event_id, '_mdjm_event_dj_payment_status', true);
    if (empty($payment_status)) {
        if (empty($payment_amount) || $payment_amount < 1) {
            return;
        }
        $mdjm_txn = new MDJM_Txn();
        $mdjm_txn->create(array('post_title' => sprintf(__('Wage payment to %s for %d', 'mobile-dj-manager'), mdjm_get_employee_display_name($employee_id), $event_id), 'post_status' => 'mdjm-expenditure', 'post_author' => 1, 'post_parent' => $event_id), array('_mdjm_txn_status' => 'Pending', '_mdjm_payment_to' => $employee_id, '_mdjm_txn_total' => $payment_amount));
        if (!empty($mdjm_txn)) {
            $data['txn_id'] = $mdjm_txn->ID;
        }
        mdjm_set_txn_type($mdjm_txn->ID, mdjm_get_txn_cat_id('slug', 'mdjm-employee-wages'));
        $payment_data = array('payment_status' => 'unpaid', 'payment_date' => '', 'txn_id' => $mdjm_txn->ID, 'payment_amount' => '');
        update_post_meta($event_id, '_mdjm_event_dj_payment_status', $payment_data);
    } else {
        if ($payment_status['payment_status'] == 'paid') {
            return;
        }
        if (in_array($mdjm_event->post_status, array('mdjm-cancelled', 'mdjm-rejected', 'mdjm-failed'))) {
            update_post_meta($mdjm_txn->ID, '_mdjm_txn_status', 'Cancelled');
        }
        $mdjm_txn = new MDJM_Txn($payment_status['txn_id']);
        if ($mdjm_txn->recipient_id != $employee_id) {
            update_post_meta($mdjm_txn->ID, '_mdjm_payment_to', $employee_id);
        }
        if ($payment_amount != $mdjm_txn->price) {
            update_post_meta($mdjm_txn->ID, '_mdjm_txn_total', $payment_amount);
        }
    }
}
Example #7
0
/**
 * Content tag: event_employees.
 * List of event employees.
 *
 * @param	int		The event ID.
 * @param
 *
 * @return	str		List of employees working the event.
 */
function mdjm_content_tag_event_employees_roles($event_id = '')
{
    if (empty($event_id)) {
        return;
    }
    $employees = mdjm_get_all_event_employees($event_id);
    if (empty($employees)) {
        return;
    }
    foreach ($employees as $employee_id => $employee_data) {
        $event_employees[] = mdjm_get_employee_display_name($employee_id) . ' - ' . $employee_data['role'];
    }
    $return = implode('<br />', $event_employees);
    return $return;
}
Example #8
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_event_posts_custom_column($column_name, $post_id)
{
    global $post;
    if (mdjm_employee_can('edit_txns') && ($column_name == 'value' || $column_name == 'balance')) {
        $value = mdjm_get_event_price($post_id);
    }
    switch ($column_name) {
        // Event Date
        case 'event_date':
            if (mdjm_employee_can('read_events')) {
                echo '<strong><a href="' . admin_url('post.php?post=' . $post_id . '&action=edit') . '">' . date('d M Y', strtotime(get_post_meta($post_id, '_mdjm_event_date', true))) . '</a>';
            } else {
                echo '<strong>' . date('d M Y', strtotime(get_post_meta($post_id, '_mdjm_event_date', true))) . '</strong>';
            }
            break;
            // Client
        // Client
        case 'client':
            $client = get_userdata(get_post_meta($post->ID, '_mdjm_event_client', true));
            if (!empty($client)) {
                if (mdjm_employee_can('send_comms')) {
                    printf('<a href="%s">%s</a>', add_query_arg(array('recipient' => $client->ID, 'event_id' => $post_id), admin_url('admin.php?page=mdjm-comms')), $client->display_name);
                } else {
                    echo $client->display_name;
                }
            } else {
                _e('<span class="mdjm-form-error">Not Assigned</span>', 'mobile-dj-manager');
            }
            break;
            // Employees
        // Employees
        case 'employees':
            global $wp_roles;
            $primary = get_userdata(mdjm_get_event_primary_employee($post->ID));
            $employees = mdjm_get_event_employees_data($post->ID);
            if (!empty($primary)) {
                if (mdjm_employee_can('send_comms')) {
                    printf('<a href="%s" title="%s">%s</a>', add_query_arg(array('recipient' => $primary->ID, 'event_id' => $post_id), admin_url('admin.php?page=mdjm-comms')), mdjm_get_option('artist', __('DJ', 'mobile-dj-manager')), $primary->display_name);
                } else {
                    echo '<a title="' . mdjm_get_option('artist', __('DJ', 'mobile-dj-manager')) . '">' . $primary->display_name . '</a>';
                }
            } else {
                _e('<span class="mdjm-form-error">Not Assigned</span>', 'mobile-dj-manager');
            }
            if (!empty($employees)) {
                echo '<br />';
                $i = 1;
                foreach ($employees as $employee) {
                    echo '<em>';
                    if (mdjm_employee_can('send_comms')) {
                        printf('<a href="%s" title="%s">%s</a>', add_query_arg(array('recipient' => $employee['id'], 'event_id' => $post_id), admin_url('admin.php?page=mdjm-comms')), translate_user_role($wp_roles->roles[$employee['role']]['name']), mdjm_get_employee_display_name($employee['id']));
                    } else {
                        echo '<a title="' . translate_user_role($wp_roles->roles[$employee['role']]['name']) . '">' . mdjm_get_employee_display_name($employee['id']) . '</a>';
                    }
                    echo '</em>';
                    if ($i != count($employees)) {
                        echo '<br />';
                    }
                }
            }
            break;
            // Status
        // Status
        case 'event_status':
            echo get_post_status_object($post->post_status)->label;
            break;
            // Event Type
        // Event Type
        case 'event_type':
            $event_types = get_the_terms($post_id, 'event-types');
            if (is_array($event_types)) {
                foreach ($event_types as $key => $event_type) {
                    $event_types[$key] = $event_type->name;
                }
                echo implode("<br/>", $event_types);
            }
            break;
            // Value
        // Value
        case 'value':
            if (mdjm_employee_can('edit_txns')) {
                if (!empty($value) && $value != '0.00') {
                    echo mdjm_currency_filter(mdjm_format_amount($value));
                    echo '<br />';
                } else {
                    echo '<span class="mdjm-form-error">' . mdjm_currency_filter(mdjm_format_amount('0.00')) . '</span>';
                }
            } else {
                echo '&mdash;';
            }
            break;
            // Balance
        // Balance
        case 'balance':
            if (mdjm_employee_can('edit_txns')) {
                echo mdjm_currency_filter(mdjm_format_amount(mdjm_get_event_balance($post_id)));
                echo '<br />';
                $deposit_status = mdjm_get_event_deposit_status($post_id);
                if ('Paid' == mdjm_get_event_deposit_status($post_id)) {
                    printf(__('<i title="%s %s paid" class="fa fa-check-square-o" aria-hidden="true">', 'mobile-dj-manager'), mdjm_currency_filter(mdjm_format_amount(mdjm_get_event_deposit($post_id))), mdjm_get_deposit_label());
                }
            } else {
                echo '&mdash;';
            }
            break;
            // Playlist
        // Playlist
        case 'playlist':
            if (mdjm_employee_can('read_events')) {
                $total = mdjm_count_playlist_entries($post_id);
                echo '<a href="' . mdjm_get_admin_page('playlists') . $post_id . '">' . $total . ' ' . _n('Song', 'Songs', $total, 'mobile-dj-manager') . '</a>' . "\r\n";
            } else {
                echo '&mdash;';
            }
            break;
            // Journal
        // Journal
        case 'journal':
            if (mdjm_employee_can('read_events_all')) {
                $total = wp_count_comments($post_id)->approved;
                echo '<a href="' . admin_url('/edit-comments.php?p=' . $post_id) . '">' . $total . ' ' . _n('Entry', 'Entries', $total, 'mobile-dj-manager') . '</a>' . "\r\n";
            } else {
                echo '&mdash;';
            }
            break;
    }
    // switch
}
    /**
     * Displays the playlist details.
     *
     * @since	1.3
     * 
     * 
     * @return	str
     */
    function display_header()
    {
        ?>
        <p><?php 
        printf(__('<strong>Date</strong>: %s', 'mobile-dj-manager'), mdjm_get_event_long_date($_GET['event_id']));
        ?>
        <br />
        <?php 
        printf(__('<strong>Status</strong>: %s', 'mobile-dj-manager'), mdjm_get_event_status($_GET['event_id']));
        ?>
        <br />
        <?php 
        printf(__('<strong>Type</strong>: %s', 'mobile-dj-manager'), mdjm_get_event_type($_GET['event_id']));
        ?>
        <br />
        <?php 
        printf(__('<strong>Primary Employee</strong>: %s', 'mobile-dj-manager'), mdjm_get_employee_display_name(mdjm_get_event_primary_employee_id($_GET['event_id'])));
        ?>
        <br />
        <?php 
        printf(__('<strong>Client</strong>: %s', 'mobile-dj-manager'), mdjm_get_employee_display_name(mdjm_get_event_client_id($_GET['event_id'])));
        ?>
        <br />
        <?php 
        printf(__('<strong>Total Songs</strong>: %s', 'mobile-dj-manager'), count($this->items));
        ?>
        <br />
        <?php 
        printf(__('<strong>Current Status</strong>: %s', 'mobile-dj-manager'), mdjm_playlist_is_open($_GET['event_id']) ? __('Open', 'mobile-dj-manager') : __('Closed', 'mobile-dj-manager'));
        ?>
        </p>
        
        <?php 
        if ($this->count_entries($_GET['event_id']) > 0) {
            ?>
        
            <p>
            <form method="post" target="_blank">
                <?php 
            mdjm_admin_action_field('print_playlist');
            ?>
                <input type="hidden" name="print_playlist_event_id" id="print_playlist_event_id" value="<?php 
            echo $_GET['event_id'];
            ?>
" />
                <?php 
            wp_nonce_field('print_playlist_entry', 'mdjm_nonce', true, true);
            ?>
                <?php 
            submit_button('Print this List', 'primary small', 'submit_print_pl', false);
            ?>
 
                <?php 
            _e('ordered by', 'mobile-dj-manager');
            ?>
 <select name="print_order_by" id="print_order_by">
                <option value="date" selected="selected"><?php 
            _e('Date Added', 'mobile-dj-manager');
            ?>
</option>
                <option value="artist"><?php 
            _e('Artist Name', 'mobile-dj-manager');
            ?>
</option>
                <option value="song"><?php 
            _e('Song Name', 'mobile-dj-manager');
            ?>
</option>
                <option value="category"><?php 
            _e('Category', 'mobile-dj-manager');
            ?>
</option>
                </select> <?php 
            _e('and repeating headers after', 'mobile-dj-manager');
            ?>
 <input type="text" name="print_repeat_headers" id="print_repeat_headers" class="small-text" value="20" /> <?php 
            _e('rows', 'mobile-dj-manager');
            ?>
 <code><?php 
            _e('Enter 0 for no repeat of headers', 'mobile-dj-manager');
            ?>
</code>
            </form>
                    
            <form method="post">
                <?php 
            mdjm_admin_action_field('email_playlist');
            ?>
                <?php 
            wp_nonce_field('email_playlist_entry', 'mdjm_nonce', true, true);
            ?>
                <input type="hidden" name="email_playlist_event_id" id="email_playlist_event_id" value="<?php 
            echo $_GET['event_id'];
            ?>
" />
                <?php 
            submit_button('Email this List', 'primary small', 'submit_email_pl', false);
            ?>
 
                <?php 
            _e('ordered by', 'mobile-dj-manager');
            ?>
 <select name="email_order_by" id="email_order_by">
                <option value="date" selected="selected"><?php 
            _e('Date Added', 'mobile-dj-manager');
            ?>
</option>
                <option value="artist"><?php 
            _e('Artist Name', 'mobile-dj-manager');
            ?>
</option>
                <option value="song"><?php 
            _e('Song Name', 'mobile-dj-manager');
            ?>
</option>
                <option value="category"><?php 
            _e('Category', 'mobile-dj-manager');
            ?>
</option>
                </select> <?php 
            _e('and repeating headers after', 'mobile-dj-manager');
            ?>
 <input type="text" name="repeat_headers" id="repeat_headers" class="small-text" value="20" /> <?php 
            _e('rows', 'mobile-dj-manager');
            ?>
 <code><?php 
            _e('Enter 0 for no repeat of headers', 'mobile-dj-manager');
            ?>
</code>
            </form>
            </p>
            <?php 
        }
    }
Example #10
0
/**
 * Mark event employees salaries as paid.
 *
 * @since	1.3
 * @param	int		$event_id		The event ID.
 * @param	int		$_employee_id	User ID of employee to pay.
 * @param	str		$amount			Amount to pay.
 * @return	mixed	Array of 'success' and 'failed' payments or if individual employee, true or false.
 */
function mdjm_pay_event_employees($event_id, $_employee_id = 0, $amount = 0)
{
    if (!mdjm_get_option('enable_employee_payments')) {
        return;
    }
    $mdjm_event = mdjm_get_event($event_id);
    if (!$mdjm_event) {
        return false;
    }
    $employees = $mdjm_event->get_all_employees();
    if (!$employees) {
        return false;
    }
    do_action('mdjm_pre_pay_event_employees', $event_id, $_employee_id, $mdjm_event);
    foreach ($employees as $employee_id => $employee_data) {
        if ($employee_data['payment_status'] == 'paid') {
            MDJM()->debug->log_it(sprintf('Skipping payment to %s. Employee already paid.', mdjm_get_employee_display_name($employee_id)));
        }
        $mdjm_txn = new MDJM_Txn($employee_data['txn_id']);
        if (!$mdjm_txn) {
            return false;
        }
        MDJM()->debug->log_it(sprintf('Starting payment to %s for %s', mdjm_get_employee_display_name($employee_id), mdjm_currency_filter(mdjm_format_amount($mdjm_txn->price))), true);
        if (!mdjm_set_employee_paid($employee_id, $event_id, $mdjm_txn->ID)) {
            MDJM()->debug->log_it(sprintf('Payment to %s failed', mdjm_get_employee_display_name($employee_id)));
            if (!empty($_employee_id)) {
                $return = false;
            } else {
                $return['failed'] = $employee_id;
            }
        } else {
            MDJM()->debug->log_it(sprintf('%s successfully paid %s', mdjm_get_employee_display_name($employee_id), mdjm_currency_filter(mdjm_format_amount($mdjm_txn->price))));
            mdjm_update_txn_meta($mdjm_txn->ID, array('_mdjm_txn_status' => 'Completed'));
            if (!empty($_employee_id)) {
                $return = true;
            } else {
                $return['success'] = $employee_id;
            }
        }
    }
    do_action('mdjm_post_pay_event_employees', $event_id, $_employee_id, $mdjm_event, $mdjm_txn->ID);
    return $return;
}