/** * Pay event employees. * * @since 1.3 * @param arr $data Form data from the $_GET super global. * @return void */ function mdjm_pay_event_employees_action($data) { if (!wp_verify_nonce($data['mdjm_nonce'], 'pay_event_employees')) { $message = 'nonce_fail'; } elseif (!isset($data['event_id'])) { $message = 'payment_event_missing'; } else { // Process the payment action $employee_id = !empty($data['employee_id']) ? $data['employee_id'] : 0; $event_id = $data['event_id']; $payments = mdjm_pay_event_employees($event_id, $employee_id); if (!empty($employee_id) && $payments) { $message = 'pay_employee_success'; } elseif (!empty($employee_id) && !$payments) { $message = 'pay_employee_failed'; } elseif (empty($employee_id) && !empty($payments['success']) && empty($payments['failed'])) { $message = 'pay_all_employees_success'; } elseif (empty($employee_id) && !empty($payments['success']) && !empty($payments['failed'])) { $message = 'pay_all_employees_some_success'; } elseif (empty($employee_id) && empty($payments['success']) && !empty($payments['failed'])) { $message = 'pay_all_employees_failed'; } } $url = remove_query_arg(array('mdjm_nonce', 'mdjm-action', 'employee_id', 'mdjm-message', 'event_id'), wp_get_referer()); wp_redirect(add_query_arg(array('mdjm-message' => $message), $url)); die; }
public function complete_event() { global $mdjm, $mdjm_settings; if (MDJM_DEBUG == true) { MDJM()->debug->log_it('*** Starting the Complete Events task ***', true); } $cron_start = microtime(true); $args = array('posts_per_page' => -1, 'post_type' => 'mdjm-event', 'post_status' => 'mdjm-approved', 'meta_key' => '_mdjm_event_date', 'orderby' => 'meta_value', 'order' => 'ASC', 'meta_query' => array('key' => '_mdjm_event_date', 'value' => date('Y-m-d'), 'type' => 'date', 'compare' => '<')); $events = get_posts($args); $notify = array(); $x = 0; if (count($events) > 0) { // Enquiries to process if (MDJM_DEBUG == true) { MDJM()->debug->log_it(count($events) . ' ' . _n('event', 'events', count($events)) . ' to mark as completed'); } remove_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3); /* -- Loop through the enquiries and update as completed -- */ foreach ($events as $event) { $cronned = get_post_meta($event->ID, '_mdjm_event_tasks', true); if (!empty($cronned) && $cronned != '') { $cron_update = json_decode($cronned, true); } if (!empty($cron_update) && array_key_exists('complete-events', $cron_update)) { // Task has already run for this event MDJM()->debug->log_it('This task has already run for this event (' . $event->ID . ')'); continue; } if (empty($cron_update) || !is_array($cron_update)) { $cron_update = array(); } $cron_update[$this->schedules['complete-events']['slug']] = time(); wp_update_post(array('ID' => $event->ID, 'post_status' => 'mdjm-completed')); update_post_meta($event->ID, '_mdjm_event_last_updated_by', 0); update_post_meta($event->ID, '_mdjm_event_tasks', json_encode($cron_update)); if (mdjm_get_option('employee_auto_pay_complete')) { mdjm_pay_event_employees($event->ID); } /* -- Update Journal -- */ if (MDJM_JOURNAL == true) { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Adding journal entry'); } mdjm_add_journal(array('user_id' => 1, 'event_id' => $event->ID, 'comment_content' => 'Event marked as completed via Scheduled Task <br /><br />' . time()), array('type' => 'update-event', 'visibility' => '1')); } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Journalling is disabled'); } } $notify_dj = isset($this->schedules['complete-events']['options']['notify_dj']) ? $this->schedules['complete-events']['options']['notify_dj'] : ''; $notify_admin = isset($this->schedules['complete-events']['options']['notify_admin']) ? $this->schedules['complete-events']['options']['notify_admin'] : ''; $client = get_post_meta($event->ID, '_mdjm_event_client', true); $dj = get_post_meta($event->ID, '_mdjm_event_dj', true); $event_date = get_post_meta($event->ID, '_mdjm_event_date', true); $event_dj = !empty($dj) ? get_userdata($dj) : 'DJ not found'; $event_client = !empty($client) ? get_userdata($client) : 'Client not found'; $venue_post_id = get_post_meta($event->ID, '_mdjm_event_venue_id', true); $event_venue = MDJM()->events->mdjm_get_venue_details($venue_post_id, $event->ID); /* Prepare admin notification email data array */ if (!empty($notify_admin) && $notify_admin == 'Y') { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- Admin notifications are enabled'); } if (!isset($notify['admin']) || !is_array($notify['admin'])) { $notify['admin'] = array(); } $notify['admin'][$event->ID] = array('id' => $event->ID, 'client' => $event_client->display_name, 'venue' => !empty($event_venue['name']) ? $event_venue['name'] : 'No Venue Set', 'djinfo' => $event_dj, 'date' => !empty($event_date) ? date("d M Y", strtotime($event_date)) : 'Date not found'); } // End if( !empty( $notify_admin ) && $notify_admin == 'Y' ) /* Prepare DJ notification email data array */ if (!empty($notify_dj) && $notify_dj == 'Y') { if (MDJM_DEBUG == true) { MDJM()->debug->log_it(' -- DJ notifications are enabled'); } if (!isset($notify['dj']) || !is_array($notify['dj'])) { $notify['dj'] = array(); } $notify['dj'][$dj] = array(); $notify['dj'][$dj][$event->ID] = array('id' => $event->ID, 'client' => $event_client->display_name, 'venue' => !empty($event_venue['name']) ? $event_venue['name'] : 'No Venue Set', 'djinfo' => $event_dj, 'date' => !empty($event_date) ? date("d M Y", strtotime($event_date)) : 'Date not found'); } // End if( !empty( $notify_dj ) && $notify_dj == 'Y' ) $x++; } // End foreach $cron_end = microtime(true); /* -- Prepare the Admin notification email -- */ if (!empty($notify_admin) && $notify_admin == 'Y') { $notify_email_args = array('data' => $notify['admin'], 'taskinfo' => $this->schedules['complete-events'], 'start' => $cron_start, 'end' => $cron_end, 'total' => $x); // $notify_email_args $mdjm->send_email(array('content' => $this->notification_content($notify_email_args), 'to' => $mdjm_settings['email']['system_email'], 'subject' => sanitize_text_field($this->schedules['complete-events']['options']['email_subject']), 'journal' => false, 'html' => false, 'cc_admin' => false, 'cc_dj' => false, 'filter' => false, 'log_comm' => false)); } // if( !empty( $notify_admin ) && $notify_admin == 'Y' ) { /* -- Prepare the DJ notification email -- */ if (!empty($notify_dj) && $notify_dj == 'Y') { foreach ($notify['dj'] as $notify_dj) { foreach ($notify_dj as $dj) { $notify_email_args = array('data' => $notify_dj, 'taskinfo' => $this->schedules['complete-events'], 'start' => $cron_start, 'end' => $cron_end, 'total' => $x); // $notify_email_args $mdjm->send_email(array('content' => $this->notification_content($notify_email_args), 'to' => $dj->ID, 'subject' => sanitize_text_field($this->schedules['complete-events']['options']['email_subject']), 'journal' => false, 'html' => false, 'cc_admin' => false, 'cc_dj' => false, 'filter' => false, 'log_comm' => false)); } // foreach( $notify_dj as $dj ) } // foreach( $notify['dj'] as $notify_dj ) } // if( !empty( $notify_dj ) && $notify_dj == 'Y' ) add_action('save_post_mdjm-event', 'mdjm_save_event_post', 10, 3); } else { if (MDJM_DEBUG == true) { MDJM()->debug->log_it('No events to mark as complete'); } } // Prepare next run time $this->update_nextrun('complete-events'); if (MDJM_DEBUG == true) { MDJM()->debug->log_it('*** Completed the Complete Events task ***', true); } }