HEX
Server: Apache/2.4.65 (Ubuntu)
System: Linux ielts-store-v2 6.8.0-1036-gcp #38~22.04.1-Ubuntu SMP Thu Aug 14 01:19:18 UTC 2025 x86_64
User: root (0)
PHP: 7.2.34-54+ubuntu20.04.1+deb.sury.org+1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: /var/www/html/ielts-store/wp-content/plugins/automatewoo/admin/reports/queue.php
<?php
// phpcs:ignoreFile

namespace AutomateWoo;

if ( ! defined( 'ABSPATH' ) ) exit;

/**
 * @class Report_Queue
 */
class Report_Queue extends Admin_List_Table {

	public $name = 'queue';


	function __construct() {
		parent::__construct([
			'singular' => __( 'Event', 'automatewoo' ),
			'plural' => __( 'Events', 'automatewoo' ),
			'ajax' => false
		]);
	}


	function filters() {
		$this->output_workflow_filter();
		$this->output_customer_filter();
	}


	/**
	 * @param $queued_event Queued_Event
	 * @return string
	 */
	function column_cb( $queued_event ) {
		return '<input type="checkbox" name="queued_event_ids[]" value="' . $queued_event->get_id() . '" />';
	}


	/**
	 * @param $event Queued_Event
	 * @param mixed $column_name
	 * @return string
	 */
	function column_default( $event, $column_name ) {

		$workflow = $event->get_workflow();

		switch( $column_name ) {

			case 'queued_event_id':
				echo '#' . $event->get_id() . '';
				if ( $event->is_failed() ) {
					echo Admin::badge( 'warning', 'warning', __( 'Failed', 'automatewoo' ) . ' - ' . $event->get_failure_message() );
				}
				break;

			case 'workflow':
				return $this->format_workflow_title( $workflow );
				break;

			case 'date':

			    if ( ! $due_date = $event->get_date_due() ) {
			        return $this->format_blank();
                }

				if ( $due_date->getTimestamp() > time() ) {
					return $this->format_date( $due_date );
				}
				else {
					return __( 'now', 'automatewoo' );
				}

				break;

			case 'actions':

                $modal_url = add_query_arg([
                    'action' => 'aw_modal_queue_info',
                    'queued_event_id' => $event->get_id()
                ], admin_url('admin-ajax.php') );

				$run_url = wp_nonce_url(
					add_query_arg([
						'action' => 'run_now',
						'queued_event_id' => $event->get_id()
					]),
					$this->nonce_action
				);

				?>
                <a class="button view aw-button-icon js-open-automatewoo-modal" data-automatewoo-modal-type="ajax" href="<?php echo $modal_url ?>"><?php _e( 'View', 'automatewoo' ) ?></a>
                <a class="button" href="<?php echo $run_url; ?>"><?php $event->is_failed() ? esc_attr_e( 'Retry', 'automatewoo' ) : esc_attr_e( 'Run Now', 'automatewoo' ) ?></a>
				<?php

				break;

		}
	}


	/**
	 * @param Queued_Event $queued_event
	 *
	 * @return string
	 */
	public function column_customer( $queued_event ) {
		$workflow = $queued_event->get_workflow();

		if ( $workflow ) {
			$workflow->set_data_layer( $queued_event->get_data_layer(), true );

			if ( $customer = $workflow->data_layer()->get_customer() ) {
				return Format::customer( $customer );
			}
			elseif ( $guest = $workflow->data_layer()->get_guest() ) {
				$customer = Customer_Factory::get_by_guest_id( $guest->get_id() );
				return Format::customer( $customer );
			}
		}

		return $this->format_blank();
	}


	/**
	 * get_columns function.
	 */
	function get_columns() {
		$columns = [
			'cb' => '<input type="checkbox" />',
			'queued_event_id' => __( 'Queued Event', 'automatewoo' ),
			'workflow' => __( 'Workflow', 'automatewoo' ),
			'customer' => __( 'Customer', 'automatewoo' ),
			'date' => __( 'Run Date', 'automatewoo' ),
			'actions' => '',
		];

		return $columns;
	}


	/**
	 * prepare_items function.
	 */
	function prepare_items() {
		$this->_column_headers = [ $this->get_columns(), [], $this->get_sortable_columns() ];
		$current_page = absint( $this->get_pagenum() );
		$per_page = $this->get_items_per_page( 'automatewoo_queue_per_page' );

		$this->get_items( $current_page, $per_page );

		$this->set_pagination_args([
			'total_items' => $this->max_items,
			'per_page' => $per_page,
			'total_pages' => ceil( $this->max_items / $per_page )
		]);
	}



	/**
	 * Get Products matching stock criteria
	 */
	function get_items( $current_page, $per_page ) {

		$query = new Queue_Query();
		$query->set_calc_found_rows( true );
		$query->set_limit( $per_page );
		$query->set_page( $current_page );
		$query->set_ordering('date', 'ASC');

		if ( ! empty( $_GET[ '_workflow' ] ) ) {
			$query->where_workflow( absint( $_GET['_workflow'] ) );
		}

		 if ( $customer_id = absint( aw_request('filter_customer' ) ) ) {
			 if ( $customer = Customer_Factory::get( $customer_id ) ) {
			 	$query->where_customer_or_legacy_user( $customer );
			 }
		 }

		$res = $query->get_results();
		$this->items = $res;
		$this->max_items = $query->found_rows;
	}


	/**
	 * Retrieve the bulk actions
	 */
	function get_bulk_actions() {
		$actions = [
			'bulk_delete' => __( 'Delete', 'automatewoo' ),
		];

		return $actions;
	}

}