Example #1
0
/**
 * 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);
     }
 }