/** * 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; }
/** * Admin Messages * * @since 1.3 * @global $mdjm_options Array of all the MDJM Options * @return void */ function mdjm_admin_notices() { global $mdjm_options; // Unattended events if (mdjm_employee_can('manage_all_events') && mdjm_get_option('warn_unattended')) { $unattended = MDJM()->events->mdjm_count_event_status('mdjm-unattended'); if (!empty($unattended) && $unattended > 0) { echo '<div class="notice notice-info is-dismissible">'; echo '<p>' . sprintf(__('You have unattended enquiries. <a href="%s">Click here</a> to manage.', 'mobile-dj-manager'), admin_url('edit.php?post_type=mdjm-event&post_status=mdjm-unattended')) . '</p>'; echo '</div>'; } } if (isset($_GET['mdjm-message']) && 'upgrade-completed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-upgraded', __('MDJM Event Management has been upgraded successfully.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'song_added' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-added-song', __('Entry added to playlist.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'adding_song_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-adding-song-failed', __('Could not add entry to playlist.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'song_removed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-removed-song', __('The selected songs were removed.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'song_remove_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-remove-faled', __('The songs count not be removed.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'security_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-security-failed', __('Security verification failed. Action not completed.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'playlist_emailed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-playlist-emailed', __('The playlist was emailed successfully.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'playlist_email_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-playlist-email-failed', __('The playlist could not be emailed.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'employee_added' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-employee_added', __('Employee added.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'employee_add_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-employee_add-failed', __('Could not add employee.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'employee_info_missing' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-employee_info-missing', __('Insufficient information to create employee.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'comm_missing_content' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-comm_content-missing', __('Not all required fields have been completed.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'comm_sent' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-comm_sent', __('Email sent successfully.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'comm_not_sent' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-comm_not_sent', __('Email not sent.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-action']) && 'get_event_availability' == $_GET['mdjm-action']) { if (!wp_verify_nonce($_GET['mdjm_nonce'], 'get_event_availability')) { return; } elseif (!isset($_GET['event_id'])) { return; } else { $date = get_post_meta($_GET['event_id'], '_mdjm_event_date', true); $result = mdjm_do_availability_check($date); if (!empty($result['available'])) { $notice = '<ul>'; foreach ($result['available'] as $employee_id) { $notice .= '<li>' . sprintf(__('<a href="%s" title="Assign & Respond to Enquiry">Assign %s & respond to enquiry</a>', 'mobile-dj-manager'), add_query_arg('primary_employee', $employee_id, get_edit_post_link($_GET['event_id'])), mdjm_get_employee_display_name($employee_id)) . '</li>'; } $notice .= '</ul>'; echo '<div class="notice notice-info is-dismissible">'; echo '<p>' . sprintf(__('You have %d employees available to work %s %s on %s.', 'mobile-dj-manager'), count($result['available']), mdjm_get_label_singular(true), mdjm_get_event_contract_id($_GET['event_id']), mdjm_get_event_long_date($_GET['event_id'])) . $notice . '</p>'; echo '</div>'; } else { echo '<div class="notice notice-error is-dismissible">'; echo '<p>' . sprintf(__('There are no employees available to work %s %s on %s', 'mobile-dj-manager'), mdjm_get_label_singular(true), mdjm_get_event_contract_id($_GET['event_id']), mdjm_get_event_long_date($_GET['event_id'])) . '</p>'; echo '</div>'; } } } if (isset($_GET['mdjm-message']) && 'payment_event_missing' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_event_missing', __('Event not identified.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'pay_employee_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_employee_failed', __('Unable to make payment to employee.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'pay_all_employees_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_employees_failed', __('Unable to make payment to employees.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'pay_all_employees_some_success' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_all_employees_some_success', __('Not all employees could be paid.', 'mobile-dj-manager'), 'notice-info'); } if (isset($_GET['mdjm-message']) && 'pay_employee_success' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_employeee_success', __('Employee successfully paid.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'pay_all_employees_success' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-payment_all_employeees_success', __('Employees successfully paid.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'unattended_enquiries_rejected_success' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-unattended_enquiries_rejected_success', sprintf(_n('%1$s %2$s successfully rejected.', '%1$s %3$s successfully rejected.', $_GET['mdjm-count'], 'mobile-dj-manager'), $_GET['mdjm-count'], mdjm_get_label_singular(), mdjm_get_label_plural()), 'updated'); } if (isset($_GET['mdjm-message']) && 'unattended_enquiries_rejected_failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-unattended_enquiries_rejected_failed', __('Errors were encountered.', 'mobile-dj-manager'), 'error'); } if (isset($_GET['mdjm-message']) && 'api-key-generated' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-api-key-generated', __('API keys generated.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'api-key-regenerated' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-api-key-regenerated', __('API keys re-generated.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'api-key-revoked' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-api-key-revoked', __('API keys revoked.', 'mobile-dj-manager'), 'updated'); } if (isset($_GET['mdjm-message']) && 'api-key-failed' == $_GET['mdjm-message']) { add_settings_error('mdjm-notices', 'mdjm-api-key-failed', __('Generating API keys failed.', 'mobile-dj-manager'), 'error'); } settings_errors('mdjm-notices'); }
/** * 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']) . ' — ' . 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); }
/** * 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 ' — '; 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); } } }
/** * 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; }
/** * 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 '—'; } 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 '—'; } 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 '—'; } 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 '—'; } 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 } }
/** * 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; }