Completed
Branch dependabot/composer/jaybizzle/... (2225bb)
by
unknown
04:46 queued 19s
created
registration/UpdateRegistrationAndTransactionAfterChangeCommandHandler.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -47,7 +47,7 @@
 block discarded – undo
47 47
     public function handle(CommandInterface $command)
48 48
     {
49 49
         /** @var UpdateRegistrationAndTransactionAfterChangeCommand $command */
50
-        if (! $command instanceof UpdateRegistrationAndTransactionAfterChangeCommand) {
50
+        if ( ! $command instanceof UpdateRegistrationAndTransactionAfterChangeCommand) {
51 51
             throw new InvalidEntityException(
52 52
                 get_class($command),
53 53
                 'UpdateRegistrationAndTransactionAfterChangeCommand'
Please login to merge, or discard this patch.
Indentation   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -17,39 +17,39 @@
 block discarded – undo
17 17
  */
18 18
 class UpdateRegistrationAndTransactionAfterChangeCommandHandler extends CommandHandler
19 19
 {
20
-    /**
21
-     * @var UpdateRegistrationService $update_registration_service
22
-     */
23
-    private $update_registration_service;
20
+	/**
21
+	 * @var UpdateRegistrationService $update_registration_service
22
+	 */
23
+	private $update_registration_service;
24 24
 
25 25
 
26
-    /**
27
-     * Command constructor
28
-     *
29
-     * @param UpdateRegistrationService $update_registration_service
30
-     */
31
-    public function __construct(
32
-        UpdateRegistrationService $update_registration_service
33
-    ) {
34
-        defined('EVENT_ESPRESSO_VERSION') || exit;
35
-        $this->update_registration_service = $update_registration_service;
36
-    }
26
+	/**
27
+	 * Command constructor
28
+	 *
29
+	 * @param UpdateRegistrationService $update_registration_service
30
+	 */
31
+	public function __construct(
32
+		UpdateRegistrationService $update_registration_service
33
+	) {
34
+		defined('EVENT_ESPRESSO_VERSION') || exit;
35
+		$this->update_registration_service = $update_registration_service;
36
+	}
37 37
 
38 38
 
39
-    /**
40
-     * @param CommandInterface|UpdateRegistrationAndTransactionAfterChangeCommand $command
41
-     * @return boolean
42
-     * @throws InvalidEntityException
43
-     */
44
-    public function handle(CommandInterface $command)
45
-    {
46
-        /** @var UpdateRegistrationAndTransactionAfterChangeCommand $command */
47
-        if (! $command instanceof UpdateRegistrationAndTransactionAfterChangeCommand) {
48
-            throw new InvalidEntityException(
49
-                get_class($command),
50
-                'UpdateRegistrationAndTransactionAfterChangeCommand'
51
-            );
52
-        }
53
-        return $this->update_registration_service->updateRegistrationAndTransaction($command->registration());
54
-    }
39
+	/**
40
+	 * @param CommandInterface|UpdateRegistrationAndTransactionAfterChangeCommand $command
41
+	 * @return boolean
42
+	 * @throws InvalidEntityException
43
+	 */
44
+	public function handle(CommandInterface $command)
45
+	{
46
+		/** @var UpdateRegistrationAndTransactionAfterChangeCommand $command */
47
+		if (! $command instanceof UpdateRegistrationAndTransactionAfterChangeCommand) {
48
+			throw new InvalidEntityException(
49
+				get_class($command),
50
+				'UpdateRegistrationAndTransactionAfterChangeCommand'
51
+			);
52
+		}
53
+		return $this->update_registration_service->updateRegistrationAndTransaction($command->registration());
54
+	}
55 55
 }
Please login to merge, or discard this patch.
commands/registration/CancelRegistrationAndTicketLineItemCommandHandler.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -60,7 +60,7 @@
 block discarded – undo
60 60
     public function handle(CommandInterface $command)
61 61
     {
62 62
         /** @var CancelRegistrationAndTicketLineItemCommand $command */
63
-        if (! $command instanceof CancelRegistrationAndTicketLineItemCommand) {
63
+        if ( ! $command instanceof CancelRegistrationAndTicketLineItemCommand) {
64 64
             throw new InvalidEntityException(get_class($command), 'CancelRegistrationAndTicketLineItemCommand');
65 65
         }
66 66
         $registration = $command->registration();
Please login to merge, or discard this patch.
Indentation   +40 added lines, -40 removed lines patch added patch discarded remove patch
@@ -26,48 +26,48 @@
 block discarded – undo
26 26
  */
27 27
 class CancelRegistrationAndTicketLineItemCommandHandler extends CommandHandler
28 28
 {
29
-    /**
30
-     * @var CancelTicketLineItemService $cancel_ticket_line_item_service
31
-     */
32
-    private $cancel_ticket_line_item_service;
29
+	/**
30
+	 * @var CancelTicketLineItemService $cancel_ticket_line_item_service
31
+	 */
32
+	private $cancel_ticket_line_item_service;
33 33
 
34 34
 
35
-    /**
36
-     * Command constructor
37
-     *
38
-     * @param CancelTicketLineItemService $cancel_ticket_line_item_service
39
-     */
40
-    public function __construct(CancelTicketLineItemService $cancel_ticket_line_item_service)
41
-    {
42
-        defined('EVENT_ESPRESSO_VERSION') || exit;
43
-        $this->cancel_ticket_line_item_service = $cancel_ticket_line_item_service;
44
-    }
35
+	/**
36
+	 * Command constructor
37
+	 *
38
+	 * @param CancelTicketLineItemService $cancel_ticket_line_item_service
39
+	 */
40
+	public function __construct(CancelTicketLineItemService $cancel_ticket_line_item_service)
41
+	{
42
+		defined('EVENT_ESPRESSO_VERSION') || exit;
43
+		$this->cancel_ticket_line_item_service = $cancel_ticket_line_item_service;
44
+	}
45 45
 
46 46
 
47
-    /**
48
-     * @param CommandInterface|CancelRegistrationAndTicketLineItemCommand $command
49
-     * @return boolean
50
-     * @throws DomainException
51
-     * @throws EE_Error
52
-     * @throws EntityNotFoundException
53
-     * @throws InvalidDataTypeException
54
-     * @throws InvalidEntityException
55
-     * @throws InvalidInterfaceException
56
-     * @throws InvalidArgumentException
57
-     * @throws ReflectionException
58
-     * @throws RuntimeException
59
-     */
60
-    public function handle(CommandInterface $command)
61
-    {
62
-        /** @var CancelRegistrationAndTicketLineItemCommand $command */
63
-        if (! $command instanceof CancelRegistrationAndTicketLineItemCommand) {
64
-            throw new InvalidEntityException(get_class($command), 'CancelRegistrationAndTicketLineItemCommand');
65
-        }
66
-        $registration = $command->registration();
67
-        $this->cancel_ticket_line_item_service->forRegistration($registration);
68
-        // cancel original registration
69
-        $registration->set_status(EEM_Registration::status_id_cancelled);
70
-        $registration->save();
71
-        return true;
72
-    }
47
+	/**
48
+	 * @param CommandInterface|CancelRegistrationAndTicketLineItemCommand $command
49
+	 * @return boolean
50
+	 * @throws DomainException
51
+	 * @throws EE_Error
52
+	 * @throws EntityNotFoundException
53
+	 * @throws InvalidDataTypeException
54
+	 * @throws InvalidEntityException
55
+	 * @throws InvalidInterfaceException
56
+	 * @throws InvalidArgumentException
57
+	 * @throws ReflectionException
58
+	 * @throws RuntimeException
59
+	 */
60
+	public function handle(CommandInterface $command)
61
+	{
62
+		/** @var CancelRegistrationAndTicketLineItemCommand $command */
63
+		if (! $command instanceof CancelRegistrationAndTicketLineItemCommand) {
64
+			throw new InvalidEntityException(get_class($command), 'CancelRegistrationAndTicketLineItemCommand');
65
+		}
66
+		$registration = $command->registration();
67
+		$this->cancel_ticket_line_item_service->forRegistration($registration);
68
+		// cancel original registration
69
+		$registration->set_status(EEM_Registration::status_id_cancelled);
70
+		$registration->save();
71
+		return true;
72
+	}
73 73
 }
Please login to merge, or discard this patch.
core/domain/services/commands/transaction/CreateTransactionCommand.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -57,7 +57,7 @@
 block discarded – undo
57 57
     public function getCapCheck()
58 58
     {
59 59
         // need cap for non-AJAX admin requests
60
-        if (! (defined('DOING_AJAX') && DOING_AJAX) && is_admin()) {
60
+        if ( ! (defined('DOING_AJAX') && DOING_AJAX) && is_admin()) {
61 61
             // there's no specific caps for editing/creating transactions,
62 62
             // so that's why we are using ee_edit_registrations
63 63
             return new CapCheck('ee_edit_registrations', 'create_new_transaction');
Please login to merge, or discard this patch.
Indentation   +47 added lines, -47 removed lines patch added patch discarded remove patch
@@ -20,60 +20,60 @@
 block discarded – undo
20 20
  */
21 21
 class CreateTransactionCommand extends Command implements CommandRequiresCapCheckInterface
22 22
 {
23
-    /**
24
-     * @var EE_Checkout $checkout
25
-     */
26
-    protected $checkout;
23
+	/**
24
+	 * @var EE_Checkout $checkout
25
+	 */
26
+	protected $checkout;
27 27
 
28
-    /**
29
-     * @var array $transaction_details
30
-     */
31
-    protected $transaction_details;
28
+	/**
29
+	 * @var array $transaction_details
30
+	 */
31
+	protected $transaction_details;
32 32
 
33 33
 
34
-    /**
35
-     * CreateTransactionCommand constructor.
36
-     *
37
-     * @param EE_Checkout|null $checkout
38
-     * @param array            $transaction_details
39
-     */
40
-    public function __construct(EE_Checkout $checkout = null, array $transaction_details = [])
41
-    {
42
-        $this->checkout            = $checkout;
43
-        $this->transaction_details = $transaction_details;
44
-    }
34
+	/**
35
+	 * CreateTransactionCommand constructor.
36
+	 *
37
+	 * @param EE_Checkout|null $checkout
38
+	 * @param array            $transaction_details
39
+	 */
40
+	public function __construct(EE_Checkout $checkout = null, array $transaction_details = [])
41
+	{
42
+		$this->checkout            = $checkout;
43
+		$this->transaction_details = $transaction_details;
44
+	}
45 45
 
46 46
 
47
-    /**
48
-     * @return CapCheckInterface
49
-     * @throws InvalidDataTypeException
50
-     */
51
-    public function getCapCheck()
52
-    {
53
-        // need cap for non-AJAX admin requests
54
-        if (! (defined('DOING_AJAX') && DOING_AJAX) && is_admin()) {
55
-            // there's no specific caps for editing/creating transactions,
56
-            // so that's why we are using ee_edit_registrations
57
-            return new CapCheck('ee_edit_registrations', 'create_new_transaction');
58
-        }
59
-        return new PublicCapabilities('', 'create_new_transaction');
60
-    }
47
+	/**
48
+	 * @return CapCheckInterface
49
+	 * @throws InvalidDataTypeException
50
+	 */
51
+	public function getCapCheck()
52
+	{
53
+		// need cap for non-AJAX admin requests
54
+		if (! (defined('DOING_AJAX') && DOING_AJAX) && is_admin()) {
55
+			// there's no specific caps for editing/creating transactions,
56
+			// so that's why we are using ee_edit_registrations
57
+			return new CapCheck('ee_edit_registrations', 'create_new_transaction');
58
+		}
59
+		return new PublicCapabilities('', 'create_new_transaction');
60
+	}
61 61
 
62 62
 
63
-    /**
64
-     * @return EE_Checkout
65
-     */
66
-    public function checkout()
67
-    {
68
-        return $this->checkout;
69
-    }
63
+	/**
64
+	 * @return EE_Checkout
65
+	 */
66
+	public function checkout()
67
+	{
68
+		return $this->checkout;
69
+	}
70 70
 
71 71
 
72
-    /**
73
-     * @return array
74
-     */
75
-    public function transactionDetails()
76
-    {
77
-        return $this->transaction_details;
78
-    }
72
+	/**
73
+	 * @return array
74
+	 */
75
+	public function transactionDetails()
76
+	{
77
+		return $this->transaction_details;
78
+	}
79 79
 }
Please login to merge, or discard this patch.
core/domain/services/commands/ticket/CreateTicketLineItemCommandHandler.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -52,7 +52,7 @@
 block discarded – undo
52 52
     public function handle(CommandInterface $command)
53 53
     {
54 54
         /** @var CreateTicketLineItemCommand $command */
55
-        if (! $command instanceof CreateTicketLineItemCommand) {
55
+        if ( ! $command instanceof CreateTicketLineItemCommand) {
56 56
             throw new InvalidEntityException(get_class($command), 'CreateTicketLineItemCommand');
57 57
         }
58 58
         // create new line item for ticket
Please login to merge, or discard this patch.
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -20,42 +20,42 @@
 block discarded – undo
20 20
  */
21 21
 class CreateTicketLineItemCommandHandler extends CommandHandler
22 22
 {
23
-    /**
24
-     * @var CreateTicketLineItemService $factory
25
-     */
26
-    private $factory;
23
+	/**
24
+	 * @var CreateTicketLineItemService $factory
25
+	 */
26
+	private $factory;
27 27
 
28 28
 
29
-    /**
30
-     * Command constructor
31
-     *
32
-     * @param CreateTicketLineItemService $factory
33
-     */
34
-    public function __construct(CreateTicketLineItemService $factory)
35
-    {
36
-        defined('EVENT_ESPRESSO_VERSION') || exit;
37
-        $this->factory = $factory;
38
-    }
29
+	/**
30
+	 * Command constructor
31
+	 *
32
+	 * @param CreateTicketLineItemService $factory
33
+	 */
34
+	public function __construct(CreateTicketLineItemService $factory)
35
+	{
36
+		defined('EVENT_ESPRESSO_VERSION') || exit;
37
+		$this->factory = $factory;
38
+	}
39 39
 
40 40
 
41
-    /**
42
-     * @param CommandInterface|CreateTicketLineItemCommand $command
43
-     * @return EE_Line_Item
44
-     * @throws InvalidEntityException
45
-     * @throws UnexpectedEntityException
46
-     * @throws EE_Error
47
-     */
48
-    public function handle(CommandInterface $command)
49
-    {
50
-        /** @var CreateTicketLineItemCommand $command */
51
-        if (! $command instanceof CreateTicketLineItemCommand) {
52
-            throw new InvalidEntityException(get_class($command), 'CreateTicketLineItemCommand');
53
-        }
54
-        // create new line item for ticket
55
-        return $this->factory->create(
56
-            $command->transaction(),
57
-            $command->ticket(),
58
-            $command->quantity()
59
-        );
60
-    }
41
+	/**
42
+	 * @param CommandInterface|CreateTicketLineItemCommand $command
43
+	 * @return EE_Line_Item
44
+	 * @throws InvalidEntityException
45
+	 * @throws UnexpectedEntityException
46
+	 * @throws EE_Error
47
+	 */
48
+	public function handle(CommandInterface $command)
49
+	{
50
+		/** @var CreateTicketLineItemCommand $command */
51
+		if (! $command instanceof CreateTicketLineItemCommand) {
52
+			throw new InvalidEntityException(get_class($command), 'CreateTicketLineItemCommand');
53
+		}
54
+		// create new line item for ticket
55
+		return $this->factory->create(
56
+			$command->transaction(),
57
+			$command->ticket(),
58
+			$command->quantity()
59
+		);
60
+	}
61 61
 }
Please login to merge, or discard this patch.
core/domain/services/commands/ticket/CancelTicketLineItemCommandHandler.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -51,7 +51,7 @@
 block discarded – undo
51 51
     public function handle(CommandInterface $command)
52 52
     {
53 53
         /** @var CancelTicketLineItemCommand $command */
54
-        if (! $command instanceof CancelTicketLineItemCommand) {
54
+        if ( ! $command instanceof CancelTicketLineItemCommand) {
55 55
             throw new InvalidEntityException(get_class($command), 'CancelTicketLineItemCommand');
56 56
         }
57 57
         return $this->cancel_ticket_line_item_service->cancel(
Please login to merge, or discard this patch.
Indentation   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -21,41 +21,41 @@
 block discarded – undo
21 21
  */
22 22
 class CancelTicketLineItemCommandHandler extends CommandHandler
23 23
 {
24
-    /**
25
-     * @var CancelTicketLineItemService $cancel_ticket_line_item_service
26
-     */
27
-    private $cancel_ticket_line_item_service;
24
+	/**
25
+	 * @var CancelTicketLineItemService $cancel_ticket_line_item_service
26
+	 */
27
+	private $cancel_ticket_line_item_service;
28 28
 
29 29
 
30
-    /**
31
-     * Command constructor
32
-     *
33
-     * @param CancelTicketLineItemService $cancel_ticket_line_item_service
34
-     */
35
-    public function __construct(CancelTicketLineItemService $cancel_ticket_line_item_service)
36
-    {
37
-        defined('EVENT_ESPRESSO_VERSION') || exit;
38
-        $this->cancel_ticket_line_item_service = $cancel_ticket_line_item_service;
39
-    }
30
+	/**
31
+	 * Command constructor
32
+	 *
33
+	 * @param CancelTicketLineItemService $cancel_ticket_line_item_service
34
+	 */
35
+	public function __construct(CancelTicketLineItemService $cancel_ticket_line_item_service)
36
+	{
37
+		defined('EVENT_ESPRESSO_VERSION') || exit;
38
+		$this->cancel_ticket_line_item_service = $cancel_ticket_line_item_service;
39
+	}
40 40
 
41 41
 
42
-    /**
43
-     * @param CommandInterface|CancelTicketLineItemCommand $command
44
-     * @return mixed
45
-     * @throws InvalidEntityException
46
-     * @throws RuntimeException
47
-     */
48
-    public function handle(CommandInterface $command)
49
-    {
50
-        /** @var CancelTicketLineItemCommand $command */
51
-        if (! $command instanceof CancelTicketLineItemCommand) {
52
-            throw new InvalidEntityException(get_class($command), 'CancelTicketLineItemCommand');
53
-        }
54
-        return $this->cancel_ticket_line_item_service->cancel(
55
-            $command->transaction(),
56
-            $command->ticket(),
57
-            $command->quantity(),
58
-            $command->ticketLineItem()
59
-        );
60
-    }
42
+	/**
43
+	 * @param CommandInterface|CancelTicketLineItemCommand $command
44
+	 * @return mixed
45
+	 * @throws InvalidEntityException
46
+	 * @throws RuntimeException
47
+	 */
48
+	public function handle(CommandInterface $command)
49
+	{
50
+		/** @var CancelTicketLineItemCommand $command */
51
+		if (! $command instanceof CancelTicketLineItemCommand) {
52
+			throw new InvalidEntityException(get_class($command), 'CancelTicketLineItemCommand');
53
+		}
54
+		return $this->cancel_ticket_line_item_service->cancel(
55
+			$command->transaction(),
56
+			$command->ticket(),
57
+			$command->quantity(),
58
+			$command->ticketLineItem()
59
+		);
60
+	}
61 61
 }
Please login to merge, or discard this patch.
core/domain/services/commands/attendee/CreateAttendeeCommandHandler.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -51,7 +51,7 @@
 block discarded – undo
51 51
     public function handle(CommandInterface $command)
52 52
     {
53 53
         /** @var CreateAttendeeCommand $command */
54
-        if (! $command instanceof CreateAttendeeCommand) {
54
+        if ( ! $command instanceof CreateAttendeeCommand) {
55 55
             throw new InvalidEntityException(get_class($command), 'CreateAttendeeCommand');
56 56
         }
57 57
         // have we met before?
Please login to merge, or discard this patch.
Indentation   +128 added lines, -128 removed lines patch added patch discarded remove patch
@@ -20,142 +20,142 @@
 block discarded – undo
20 20
  */
21 21
 class CreateAttendeeCommandHandler extends CommandHandler
22 22
 {
23
-    /**
24
-     * @var EEM_Attendee $attendee_model
25
-     */
26
-    protected $attendee_model;
23
+	/**
24
+	 * @var EEM_Attendee $attendee_model
25
+	 */
26
+	protected $attendee_model;
27 27
 
28 28
 
29
-    /**
30
-     * @param EEM_Attendee $attendee_model
31
-     */
32
-    public function __construct(EEM_Attendee $attendee_model)
33
-    {
34
-        defined('EVENT_ESPRESSO_VERSION') || exit;
35
-        $this->attendee_model = $attendee_model;
36
-    }
29
+	/**
30
+	 * @param EEM_Attendee $attendee_model
31
+	 */
32
+	public function __construct(EEM_Attendee $attendee_model)
33
+	{
34
+		defined('EVENT_ESPRESSO_VERSION') || exit;
35
+		$this->attendee_model = $attendee_model;
36
+	}
37 37
 
38 38
 
39
-    /**
40
-     * @param CommandInterface|CreateAttendeeCommand $command
41
-     * @return EE_Attendee
42
-     * @throws EE_Error
43
-     * @throws InvalidEntityException
44
-     */
45
-    public function handle(CommandInterface $command)
46
-    {
47
-        /** @var CreateAttendeeCommand $command */
48
-        if (! $command instanceof CreateAttendeeCommand) {
49
-            throw new InvalidEntityException(get_class($command), 'CreateAttendeeCommand');
50
-        }
51
-        // have we met before?
52
-        $attendee = $this->findExistingAttendee(
53
-            $command->registration(),
54
-            $command->attendeeDetails()
55
-        );
56
-        // did we find an already existing record for this attendee ?
57
-        if ($attendee instanceof EE_Attendee) {
58
-            $attendee = $this->updateExistingAttendeeData(
59
-                $attendee,
60
-                $command->attendeeDetails()
61
-            );
62
-        } else {
63
-            $attendee = $this->createNewAttendee(
64
-                $command->registration(),
65
-                $command->attendeeDetails()
66
-            );
67
-        }
68
-        return $attendee;
69
-    }
39
+	/**
40
+	 * @param CommandInterface|CreateAttendeeCommand $command
41
+	 * @return EE_Attendee
42
+	 * @throws EE_Error
43
+	 * @throws InvalidEntityException
44
+	 */
45
+	public function handle(CommandInterface $command)
46
+	{
47
+		/** @var CreateAttendeeCommand $command */
48
+		if (! $command instanceof CreateAttendeeCommand) {
49
+			throw new InvalidEntityException(get_class($command), 'CreateAttendeeCommand');
50
+		}
51
+		// have we met before?
52
+		$attendee = $this->findExistingAttendee(
53
+			$command->registration(),
54
+			$command->attendeeDetails()
55
+		);
56
+		// did we find an already existing record for this attendee ?
57
+		if ($attendee instanceof EE_Attendee) {
58
+			$attendee = $this->updateExistingAttendeeData(
59
+				$attendee,
60
+				$command->attendeeDetails()
61
+			);
62
+		} else {
63
+			$attendee = $this->createNewAttendee(
64
+				$command->registration(),
65
+				$command->attendeeDetails()
66
+			);
67
+		}
68
+		return $attendee;
69
+	}
70 70
 
71 71
 
72
-    /**
73
-     * find_existing_attendee
74
-     *
75
-     * @param EE_Registration $registration
76
-     * @param array           $attendee_data
77
-     * @return EE_Attendee
78
-     * @throws EE_Error
79
-     */
80
-    private function findExistingAttendee(EE_Registration $registration, array $attendee_data)
81
-    {
82
-        $existing_attendee = null;
83
-        // does this attendee already exist in the db ?
84
-        // we're searching using a combination of first name, last name, AND email address
85
-        $ATT_fname = ! empty($attendee_data['ATT_fname'])
86
-            ? $attendee_data['ATT_fname']
87
-            : '';
88
-        $ATT_lname = ! empty($attendee_data['ATT_lname'])
89
-            ? $attendee_data['ATT_lname']
90
-            : '';
91
-        $ATT_email = ! empty($attendee_data['ATT_email'])
92
-            ? $attendee_data['ATT_email']
93
-            : '';
94
-        // but only if those have values
95
-        if ($ATT_fname && $ATT_lname && $ATT_email) {
96
-            $existing_attendee = $this->attendee_model->find_existing_attendee(
97
-                [
98
-                    'ATT_fname' => $ATT_fname,
99
-                    'ATT_lname' => $ATT_lname,
100
-                    'ATT_email' => $ATT_email,
101
-                ]
102
-            );
103
-        }
104
-        return apply_filters(
105
-            'FHEE_EventEspresso_core_domain_services_commands_attendee_CreateAttendeeCommandHandler__findExistingAttendee__existing_attendee',
106
-            $existing_attendee,
107
-            $registration,
108
-            $attendee_data
109
-        );
110
-    }
72
+	/**
73
+	 * find_existing_attendee
74
+	 *
75
+	 * @param EE_Registration $registration
76
+	 * @param array           $attendee_data
77
+	 * @return EE_Attendee
78
+	 * @throws EE_Error
79
+	 */
80
+	private function findExistingAttendee(EE_Registration $registration, array $attendee_data)
81
+	{
82
+		$existing_attendee = null;
83
+		// does this attendee already exist in the db ?
84
+		// we're searching using a combination of first name, last name, AND email address
85
+		$ATT_fname = ! empty($attendee_data['ATT_fname'])
86
+			? $attendee_data['ATT_fname']
87
+			: '';
88
+		$ATT_lname = ! empty($attendee_data['ATT_lname'])
89
+			? $attendee_data['ATT_lname']
90
+			: '';
91
+		$ATT_email = ! empty($attendee_data['ATT_email'])
92
+			? $attendee_data['ATT_email']
93
+			: '';
94
+		// but only if those have values
95
+		if ($ATT_fname && $ATT_lname && $ATT_email) {
96
+			$existing_attendee = $this->attendee_model->find_existing_attendee(
97
+				[
98
+					'ATT_fname' => $ATT_fname,
99
+					'ATT_lname' => $ATT_lname,
100
+					'ATT_email' => $ATT_email,
101
+				]
102
+			);
103
+		}
104
+		return apply_filters(
105
+			'FHEE_EventEspresso_core_domain_services_commands_attendee_CreateAttendeeCommandHandler__findExistingAttendee__existing_attendee',
106
+			$existing_attendee,
107
+			$registration,
108
+			$attendee_data
109
+		);
110
+	}
111 111
 
112 112
 
113
-    /**
114
-     * _update_existing_attendee_data
115
-     * in case it has changed since last time they registered for an event
116
-     *
117
-     * @param EE_Attendee $existing_attendee
118
-     * @param array       $attendee_data
119
-     * @return EE_Attendee
120
-     * @throws EE_Error
121
-     */
122
-    private function updateExistingAttendeeData(EE_Attendee $existing_attendee, array $attendee_data)
123
-    {
124
-        // first remove fname, lname, and email from attendee data
125
-        // because these properties will be exactly the same as the returned attendee object,
126
-        // since they were used in the query to get the attendee object in the first place
127
-        $dont_set = ['ATT_fname', 'ATT_lname', 'ATT_email'];
128
-        // now loop thru what's left and add to attendee CPT
129
-        foreach ($attendee_data as $property_name => $property_value) {
130
-            if (
131
-                ! in_array($property_name, $dont_set, true)
132
-                && $this->attendee_model->has_field($property_name)
133
-            ) {
134
-                $existing_attendee->set($property_name, $property_value);
135
-            }
136
-        }
137
-        // better save that now
138
-        $existing_attendee->save();
139
-        return $existing_attendee;
140
-    }
113
+	/**
114
+	 * _update_existing_attendee_data
115
+	 * in case it has changed since last time they registered for an event
116
+	 *
117
+	 * @param EE_Attendee $existing_attendee
118
+	 * @param array       $attendee_data
119
+	 * @return EE_Attendee
120
+	 * @throws EE_Error
121
+	 */
122
+	private function updateExistingAttendeeData(EE_Attendee $existing_attendee, array $attendee_data)
123
+	{
124
+		// first remove fname, lname, and email from attendee data
125
+		// because these properties will be exactly the same as the returned attendee object,
126
+		// since they were used in the query to get the attendee object in the first place
127
+		$dont_set = ['ATT_fname', 'ATT_lname', 'ATT_email'];
128
+		// now loop thru what's left and add to attendee CPT
129
+		foreach ($attendee_data as $property_name => $property_value) {
130
+			if (
131
+				! in_array($property_name, $dont_set, true)
132
+				&& $this->attendee_model->has_field($property_name)
133
+			) {
134
+				$existing_attendee->set($property_name, $property_value);
135
+			}
136
+		}
137
+		// better save that now
138
+		$existing_attendee->save();
139
+		return $existing_attendee;
140
+	}
141 141
 
142 142
 
143
-    /**
144
-     * create_new_attendee
145
-     *
146
-     * @param EE_Registration $registration
147
-     * @param array           $attendee_data
148
-     * @return EE_Attendee
149
-     * @throws EE_Error
150
-     * @throws EntityNotFoundException
151
-     */
152
-    private function createNewAttendee(EE_Registration $registration, array $attendee_data)
153
-    {
154
-        // create new attendee object
155
-        $new_attendee = EE_Attendee::new_instance($attendee_data);
156
-        // set author to event creator
157
-        $new_attendee->set('ATT_author', $registration->event()->wp_user());
158
-        $new_attendee->save();
159
-        return $new_attendee;
160
-    }
143
+	/**
144
+	 * create_new_attendee
145
+	 *
146
+	 * @param EE_Registration $registration
147
+	 * @param array           $attendee_data
148
+	 * @return EE_Attendee
149
+	 * @throws EE_Error
150
+	 * @throws EntityNotFoundException
151
+	 */
152
+	private function createNewAttendee(EE_Registration $registration, array $attendee_data)
153
+	{
154
+		// create new attendee object
155
+		$new_attendee = EE_Attendee::new_instance($attendee_data);
156
+		// set author to event creator
157
+		$new_attendee->set('ATT_author', $registration->event()->wp_user());
158
+		$new_attendee->save();
159
+		return $new_attendee;
160
+	}
161 161
 }
Please login to merge, or discard this patch.
core/domain/services/commands/attendee/CreateAttendeeCommand.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -81,7 +81,7 @@
 block discarded – undo
81 81
     public function getCapCheck()
82 82
     {
83 83
         // need cap for non-AJAX admin requests
84
-        if (! (defined('DOING_AJAX') && DOING_AJAX) && is_admin()) {
84
+        if ( ! (defined('DOING_AJAX') && DOING_AJAX) && is_admin()) {
85 85
             return new CapCheck('ee_edit_contacts', 'create_new_contact');
86 86
         }
87 87
         return new PublicCapabilities('', 'create_new_contact');
Please login to merge, or discard this patch.
Indentation   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -20,62 +20,62 @@
 block discarded – undo
20 20
  */
21 21
 class CreateAttendeeCommand extends Command implements CommandRequiresCapCheckInterface
22 22
 {
23
-    /**
24
-     * array of details where keys are names of EEM_Attendee model fields
25
-     *
26
-     * @var array $attendee_details
27
-     */
28
-    protected $attendee_details;
23
+	/**
24
+	 * array of details where keys are names of EEM_Attendee model fields
25
+	 *
26
+	 * @var array $attendee_details
27
+	 */
28
+	protected $attendee_details;
29 29
 
30
-    /**
31
-     * an existing registration to associate this attendee with
32
-     *
33
-     * @var EE_Registration $registration
34
-     */
35
-    protected $registration;
30
+	/**
31
+	 * an existing registration to associate this attendee with
32
+	 *
33
+	 * @var EE_Registration $registration
34
+	 */
35
+	protected $registration;
36 36
 
37 37
 
38
-    /**
39
-     * CreateAttendeeCommand constructor.
40
-     *
41
-     * @param array           $attendee_details
42
-     * @param EE_Registration $registration
43
-     */
44
-    public function __construct(array $attendee_details, EE_Registration $registration)
45
-    {
46
-        $this->attendee_details = $attendee_details;
47
-        $this->registration     = $registration;
48
-    }
38
+	/**
39
+	 * CreateAttendeeCommand constructor.
40
+	 *
41
+	 * @param array           $attendee_details
42
+	 * @param EE_Registration $registration
43
+	 */
44
+	public function __construct(array $attendee_details, EE_Registration $registration)
45
+	{
46
+		$this->attendee_details = $attendee_details;
47
+		$this->registration     = $registration;
48
+	}
49 49
 
50 50
 
51
-    /**
52
-     * @return array
53
-     */
54
-    public function attendeeDetails()
55
-    {
56
-        return $this->attendee_details;
57
-    }
51
+	/**
52
+	 * @return array
53
+	 */
54
+	public function attendeeDetails()
55
+	{
56
+		return $this->attendee_details;
57
+	}
58 58
 
59 59
 
60
-    /**
61
-     * @return EE_Registration
62
-     */
63
-    public function registration()
64
-    {
65
-        return $this->registration;
66
-    }
60
+	/**
61
+	 * @return EE_Registration
62
+	 */
63
+	public function registration()
64
+	{
65
+		return $this->registration;
66
+	}
67 67
 
68 68
 
69
-    /**
70
-     * @return CapCheckInterface
71
-     * @throws InvalidDataTypeException
72
-     */
73
-    public function getCapCheck()
74
-    {
75
-        // need cap for non-AJAX admin requests
76
-        if (! (defined('DOING_AJAX') && DOING_AJAX) && is_admin()) {
77
-            return new CapCheck('ee_edit_contacts', 'create_new_contact');
78
-        }
79
-        return new PublicCapabilities('', 'create_new_contact');
80
-    }
69
+	/**
70
+	 * @return CapCheckInterface
71
+	 * @throws InvalidDataTypeException
72
+	 */
73
+	public function getCapCheck()
74
+	{
75
+		// need cap for non-AJAX admin requests
76
+		if (! (defined('DOING_AJAX') && DOING_AJAX) && is_admin()) {
77
+			return new CapCheck('ee_edit_contacts', 'create_new_contact');
78
+		}
79
+		return new PublicCapabilities('', 'create_new_contact');
80
+	}
81 81
 }
Please login to merge, or discard this patch.
core/services/collections/iterators/CollectionFilterCallbackIterator.php 1 patch
Indentation   +47 added lines, -47 removed lines patch added patch discarded remove patch
@@ -9,51 +9,51 @@
 block discarded – undo
9 9
 class CollectionFilterCallbackIterator extends FilterIterator
10 10
 {
11 11
 
12
-    /**
13
-     * Used for determining whether the iterated object in the Collection is "valid" or not.
14
-     * @var Closure
15
-     */
16
-    private $acceptance_callback;
17
-
18
-
19
-    /**
20
-     * CollectionFilterCallbackIterator constructor.
21
-     *
22
-     * @param Collection $collection
23
-     * @param Closure    $acceptance_callback  The closure will receive an instance of whatever object is stored on the
24
-     *                                         collection when iterating over the collection and should return boolean.
25
-     */
26
-    public function __construct(Collection $collection, Closure $acceptance_callback)
27
-    {
28
-        $this->acceptance_callback = $acceptance_callback;
29
-        parent::__construct($collection);
30
-    }
31
-
32
-    /**
33
-     * Check whether the current element of the iterator is acceptable
34
-     *
35
-     * @link  http://php.net/manual/en/filteriterator.accept.php
36
-     * @return bool true if the current element is acceptable, otherwise false.
37
-     */
38
-    public function accept()
39
-    {
40
-        $acceptance_callback = $this->acceptance_callback;
41
-        return $acceptance_callback($this->getInnerIterator()->current());
42
-    }
43
-
44
-
45
-
46
-    /**
47
-     * Returns a filtered array of objects from the collection using the provided acceptance callback
48
-     * @return array
49
-     */
50
-    public function getFiltered()
51
-    {
52
-        $filtered_array = array();
53
-        $this->rewind();
54
-        foreach ($this as $filtered_object) {
55
-            $filtered_array[] = $filtered_object;
56
-        }
57
-        return $filtered_array;
58
-    }
12
+	/**
13
+	 * Used for determining whether the iterated object in the Collection is "valid" or not.
14
+	 * @var Closure
15
+	 */
16
+	private $acceptance_callback;
17
+
18
+
19
+	/**
20
+	 * CollectionFilterCallbackIterator constructor.
21
+	 *
22
+	 * @param Collection $collection
23
+	 * @param Closure    $acceptance_callback  The closure will receive an instance of whatever object is stored on the
24
+	 *                                         collection when iterating over the collection and should return boolean.
25
+	 */
26
+	public function __construct(Collection $collection, Closure $acceptance_callback)
27
+	{
28
+		$this->acceptance_callback = $acceptance_callback;
29
+		parent::__construct($collection);
30
+	}
31
+
32
+	/**
33
+	 * Check whether the current element of the iterator is acceptable
34
+	 *
35
+	 * @link  http://php.net/manual/en/filteriterator.accept.php
36
+	 * @return bool true if the current element is acceptable, otherwise false.
37
+	 */
38
+	public function accept()
39
+	{
40
+		$acceptance_callback = $this->acceptance_callback;
41
+		return $acceptance_callback($this->getInnerIterator()->current());
42
+	}
43
+
44
+
45
+
46
+	/**
47
+	 * Returns a filtered array of objects from the collection using the provided acceptance callback
48
+	 * @return array
49
+	 */
50
+	public function getFiltered()
51
+	{
52
+		$filtered_array = array();
53
+		$this->rewind();
54
+		foreach ($this as $filtered_object) {
55
+			$filtered_array[] = $filtered_object;
56
+		}
57
+		return $filtered_array;
58
+	}
59 59
 }
Please login to merge, or discard this patch.
modules/ticket_selector/TicketDatetimeAvailabilityTracker.php 2 patches
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -66,24 +66,24 @@  discard block
 block discarded – undo
66 66
     public function ticketDatetimeAvailability(EE_Ticket $ticket, $get_original_ticket_spaces = false)
67 67
     {
68 68
         // if the $_available_spaces array has not been set up yet...
69
-        if (! isset($this->available_spaces['tickets'][ $ticket->ID() ])) {
69
+        if ( ! isset($this->available_spaces['tickets'][$ticket->ID()])) {
70 70
             $this->setInitialTicketDatetimeAvailability($ticket);
71 71
         }
72 72
         $available_spaces = $ticket->qty() - $ticket->sold();
73
-        if (isset($this->available_spaces['tickets'][ $ticket->ID() ])) {
73
+        if (isset($this->available_spaces['tickets'][$ticket->ID()])) {
74 74
             // loop thru tickets, which will ALSO include individual ticket records AND a total
75
-            foreach ($this->available_spaces['tickets'][ $ticket->ID() ] as $DTD_ID => $spaces) {
75
+            foreach ($this->available_spaces['tickets'][$ticket->ID()] as $DTD_ID => $spaces) {
76 76
                 // if we want the original datetime availability BEFORE we started subtracting tickets ?
77 77
                 if ($get_original_ticket_spaces) {
78 78
                     // then grab the available spaces from the "tickets" array
79 79
                     // and compare with the above to get the lowest number
80 80
                     $available_spaces = min(
81 81
                         $available_spaces,
82
-                        $this->available_spaces['tickets'][ $ticket->ID() ][ $DTD_ID ]
82
+                        $this->available_spaces['tickets'][$ticket->ID()][$DTD_ID]
83 83
                     );
84 84
                 } else {
85 85
                     // we want the updated ticket availability as stored in the "datetimes" array
86
-                    $available_spaces = min($available_spaces, $this->available_spaces['datetimes'][ $DTD_ID ]);
86
+                    $available_spaces = min($available_spaces, $this->available_spaces['datetimes'][$DTD_ID]);
87 87
                 }
88 88
             }
89 89
         }
@@ -114,7 +114,7 @@  discard block
 block discarded – undo
114 114
                 'order_by' => array('DTT_EVT_start' => 'ASC'),
115 115
             )
116 116
         );
117
-        if (! empty($datetimes)) {
117
+        if ( ! empty($datetimes)) {
118 118
             // now loop thru all of the datetimes
119 119
             foreach ($datetimes as $datetime) {
120 120
                 if ($datetime instanceof EE_Datetime) {
@@ -122,17 +122,17 @@  discard block
 block discarded – undo
122 122
                     $spaces_remaining = $datetime->spaces_remaining();
123 123
                     // save the total available spaces ( the lesser of the ticket qty minus the number of tickets sold
124 124
                     // or the datetime spaces remaining) to this ticket using the datetime ID as the key
125
-                    $this->available_spaces['tickets'][ $ticket->ID() ][ $datetime->ID() ] = min(
125
+                    $this->available_spaces['tickets'][$ticket->ID()][$datetime->ID()] = min(
126 126
                         $ticket->qty() - $ticket->sold(),
127 127
                         $spaces_remaining
128 128
                     );
129 129
                     // if the remaining spaces for this datetime is already set,
130 130
                     // then compare that against the datetime spaces remaining, and take the lowest number,
131 131
                     // else just take the datetime spaces remaining, and assign to the datetimes array
132
-                    $this->available_spaces['datetimes'][ $datetime->ID() ] = isset(
133
-                        $this->available_spaces['datetimes'][ $datetime->ID() ]
132
+                    $this->available_spaces['datetimes'][$datetime->ID()] = isset(
133
+                        $this->available_spaces['datetimes'][$datetime->ID()]
134 134
                     )
135
-                        ? min($this->available_spaces['datetimes'][ $datetime->ID() ], $spaces_remaining)
135
+                        ? min($this->available_spaces['datetimes'][$datetime->ID()], $spaces_remaining)
136 136
                         : $spaces_remaining;
137 137
                 }
138 138
             }
@@ -148,11 +148,11 @@  discard block
 block discarded – undo
148 148
      */
149 149
     public function recalculateTicketDatetimeAvailability(EE_Ticket $ticket, $qty = 0)
150 150
     {
151
-        if (isset($this->available_spaces['tickets'][ $ticket->ID() ])) {
151
+        if (isset($this->available_spaces['tickets'][$ticket->ID()])) {
152 152
             // loop thru tickets, which will ALSO include individual ticket records AND a total
153
-            foreach ($this->available_spaces['tickets'][ $ticket->ID() ] as $DTD_ID => $spaces) {
153
+            foreach ($this->available_spaces['tickets'][$ticket->ID()] as $DTD_ID => $spaces) {
154 154
                 // subtract the qty of selected tickets from each datetime's available spaces this ticket has access to,
155
-                $this->available_spaces['datetimes'][ $DTD_ID ] -= $qty;
155
+                $this->available_spaces['datetimes'][$DTD_ID] -= $qty;
156 156
             }
157 157
         }
158 158
     }
Please login to merge, or discard this patch.
Indentation   +213 added lines, -213 removed lines patch added patch discarded remove patch
@@ -21,217 +21,217 @@
 block discarded – undo
21 21
  */
22 22
 class TicketDatetimeAvailabilityTracker
23 23
 {
24
-    /**
25
-     * array of datetimes and the spaces available for them
26
-     *
27
-     * @var array[][]
28
-     */
29
-    private $available_spaces = array();
30
-
31
-    /**
32
-     * @var EEM_Datetime $datetime_model
33
-     */
34
-    private $datetime_model;
35
-
36
-
37
-    /**
38
-     * TicketDatetimeAvailabilityTracker constructor.
39
-     *
40
-     * @param EEM_Datetime $datetime_model
41
-     */
42
-    public function __construct(EEM_Datetime $datetime_model)
43
-    {
44
-        $this->datetime_model = $datetime_model;
45
-    }
46
-
47
-
48
-    /**
49
-     * ticketDatetimeAvailability
50
-     * creates an array of tickets plus all of the datetimes available to each ticket
51
-     * and tracks the spaces remaining for each of those datetimes
52
-     *
53
-     * @param EE_Ticket $ticket - selected ticket
54
-     * @param bool      $get_original_ticket_spaces
55
-     * @return int
56
-     * @throws EE_Error
57
-     * @throws InvalidArgumentException
58
-     * @throws InvalidDataTypeException
59
-     * @throws InvalidInterfaceException
60
-     */
61
-    public function ticketDatetimeAvailability(EE_Ticket $ticket, $get_original_ticket_spaces = false)
62
-    {
63
-        // if the $_available_spaces array has not been set up yet...
64
-        if (! isset($this->available_spaces['tickets'][ $ticket->ID() ])) {
65
-            $this->setInitialTicketDatetimeAvailability($ticket);
66
-        }
67
-        $available_spaces = $ticket->qty() - $ticket->sold();
68
-        if (isset($this->available_spaces['tickets'][ $ticket->ID() ])) {
69
-            // loop thru tickets, which will ALSO include individual ticket records AND a total
70
-            foreach ($this->available_spaces['tickets'][ $ticket->ID() ] as $DTD_ID => $spaces) {
71
-                // if we want the original datetime availability BEFORE we started subtracting tickets ?
72
-                if ($get_original_ticket_spaces) {
73
-                    // then grab the available spaces from the "tickets" array
74
-                    // and compare with the above to get the lowest number
75
-                    $available_spaces = min(
76
-                        $available_spaces,
77
-                        $this->available_spaces['tickets'][ $ticket->ID() ][ $DTD_ID ]
78
-                    );
79
-                } else {
80
-                    // we want the updated ticket availability as stored in the "datetimes" array
81
-                    $available_spaces = min($available_spaces, $this->available_spaces['datetimes'][ $DTD_ID ]);
82
-                }
83
-            }
84
-        }
85
-        return $available_spaces;
86
-    }
87
-
88
-
89
-    /**
90
-     * @param EE_Ticket $ticket
91
-     * @return void
92
-     * @throws InvalidArgumentException
93
-     * @throws InvalidInterfaceException
94
-     * @throws InvalidDataTypeException
95
-     * @throws EE_Error
96
-     */
97
-    private function setInitialTicketDatetimeAvailability(EE_Ticket $ticket)
98
-    {
99
-        // first, get all of the datetimes that are available to this ticket
100
-        $datetimes = $ticket->get_many_related(
101
-            'Datetime',
102
-            array(
103
-                array(
104
-                    'DTT_EVT_end' => array(
105
-                        '>=',
106
-                        $this->datetime_model->current_time_for_query('DTT_EVT_end'),
107
-                    ),
108
-                ),
109
-                'order_by' => array('DTT_EVT_start' => 'ASC'),
110
-            )
111
-        );
112
-        if (! empty($datetimes)) {
113
-            // now loop thru all of the datetimes
114
-            foreach ($datetimes as $datetime) {
115
-                if ($datetime instanceof EE_Datetime) {
116
-                    // the number of spaces available for the datetime without considering individual ticket quantities
117
-                    $spaces_remaining = $datetime->spaces_remaining();
118
-                    // save the total available spaces ( the lesser of the ticket qty minus the number of tickets sold
119
-                    // or the datetime spaces remaining) to this ticket using the datetime ID as the key
120
-                    $this->available_spaces['tickets'][ $ticket->ID() ][ $datetime->ID() ] = min(
121
-                        $ticket->qty() - $ticket->sold(),
122
-                        $spaces_remaining
123
-                    );
124
-                    // if the remaining spaces for this datetime is already set,
125
-                    // then compare that against the datetime spaces remaining, and take the lowest number,
126
-                    // else just take the datetime spaces remaining, and assign to the datetimes array
127
-                    $this->available_spaces['datetimes'][ $datetime->ID() ] = isset(
128
-                        $this->available_spaces['datetimes'][ $datetime->ID() ]
129
-                    )
130
-                        ? min($this->available_spaces['datetimes'][ $datetime->ID() ], $spaces_remaining)
131
-                        : $spaces_remaining;
132
-                }
133
-            }
134
-        }
135
-    }
136
-
137
-
138
-    /**
139
-     * @param    EE_Ticket $ticket
140
-     * @param    int       $qty
141
-     * @return    void
142
-     * @throws EE_Error
143
-     */
144
-    public function recalculateTicketDatetimeAvailability(EE_Ticket $ticket, $qty = 0)
145
-    {
146
-        if (isset($this->available_spaces['tickets'][ $ticket->ID() ])) {
147
-            // loop thru tickets, which will ALSO include individual ticket records AND a total
148
-            foreach ($this->available_spaces['tickets'][ $ticket->ID() ] as $DTD_ID => $spaces) {
149
-                // subtract the qty of selected tickets from each datetime's available spaces this ticket has access to,
150
-                $this->available_spaces['datetimes'][ $DTD_ID ] -= $qty;
151
-            }
152
-        }
153
-    }
154
-
155
-
156
-    /**
157
-     * @param EE_Ticket $ticket
158
-     * @param           $qty
159
-     * @param int       $total_ticket_count
160
-     * @throws EE_Error
161
-     * @throws InvalidArgumentException
162
-     * @throws InvalidDataTypeException
163
-     * @throws InvalidInterfaceException
164
-     */
165
-    public function processAvailabilityError(EE_Ticket $ticket, $qty, $total_ticket_count = 1)
166
-    {
167
-        // tickets can not be purchased but let's find the exact number left
168
-        // for the last ticket selected PRIOR to subtracting tickets
169
-        $available_spaces = $this->ticketDatetimeAvailability($ticket, true);
170
-        // greedy greedy greedy eh?
171
-        if ($available_spaces > 0) {
172
-            if (
173
-                apply_filters(
174
-                    'FHEE__EE_Ticket_Selector___add_ticket_to_cart__allow_display_availability_error',
175
-                    true,
176
-                    $ticket,
177
-                    $qty,
178
-                    $available_spaces
179
-                )
180
-            ) {
181
-                $this->availabilityError(
182
-                    $available_spaces,
183
-                    $total_ticket_count
184
-                );
185
-            }
186
-        } else {
187
-            EE_Error::add_error(
188
-                esc_html__(
189
-                    'We\'re sorry, but there are no available spaces left for this event at this particular date and time.',
190
-                    'event_espresso'
191
-                ),
192
-                __FILE__,
193
-                __FUNCTION__,
194
-                __LINE__
195
-            );
196
-        }
197
-    }
198
-
199
-
200
-    /**
201
-     * @param int $available_spaces
202
-     * @param int $total_ticket_count
203
-     */
204
-    private function availabilityError($available_spaces = 1, $total_ticket_count = 1)
205
-    {
206
-        // add error messaging - we're using the _n function that will generate
207
-        // the appropriate singular or plural message based on the number of $available_spaces
208
-        if ($total_ticket_count) {
209
-            $msg = sprintf(
210
-                esc_html(
211
-                    _n(
212
-                        'We\'re sorry, but there is only %1$s available space left for this event at this particular date and time. Please select a different number (or different combination) of tickets by cancelling the current selection and choosing again, or proceed to registration.',
213
-                        'We\'re sorry, but there are only %1$s available spaces left for this event at this particular date and time. Please select a different number (or different combination) of tickets by cancelling the current selection and choosing again, or proceed to registration.',
214
-                        $available_spaces,
215
-                        'event_espresso'
216
-                    )
217
-                ),
218
-                $available_spaces,
219
-                '<br />'
220
-            );
221
-        } else {
222
-            $msg = sprintf(
223
-                esc_html(
224
-                    _n(
225
-                        'We\'re sorry, but there is only %1$s available space left for this event at this particular date and time. Please select a different number (or different combination) of tickets.',
226
-                        'We\'re sorry, but there are only %1$s available spaces left for this event at this particular date and time. Please select a different number (or different combination) of tickets.',
227
-                        $available_spaces,
228
-                        'event_espresso'
229
-                    )
230
-                ),
231
-                $available_spaces,
232
-                '<br />'
233
-            );
234
-        }
235
-        EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
236
-    }
24
+	/**
25
+	 * array of datetimes and the spaces available for them
26
+	 *
27
+	 * @var array[][]
28
+	 */
29
+	private $available_spaces = array();
30
+
31
+	/**
32
+	 * @var EEM_Datetime $datetime_model
33
+	 */
34
+	private $datetime_model;
35
+
36
+
37
+	/**
38
+	 * TicketDatetimeAvailabilityTracker constructor.
39
+	 *
40
+	 * @param EEM_Datetime $datetime_model
41
+	 */
42
+	public function __construct(EEM_Datetime $datetime_model)
43
+	{
44
+		$this->datetime_model = $datetime_model;
45
+	}
46
+
47
+
48
+	/**
49
+	 * ticketDatetimeAvailability
50
+	 * creates an array of tickets plus all of the datetimes available to each ticket
51
+	 * and tracks the spaces remaining for each of those datetimes
52
+	 *
53
+	 * @param EE_Ticket $ticket - selected ticket
54
+	 * @param bool      $get_original_ticket_spaces
55
+	 * @return int
56
+	 * @throws EE_Error
57
+	 * @throws InvalidArgumentException
58
+	 * @throws InvalidDataTypeException
59
+	 * @throws InvalidInterfaceException
60
+	 */
61
+	public function ticketDatetimeAvailability(EE_Ticket $ticket, $get_original_ticket_spaces = false)
62
+	{
63
+		// if the $_available_spaces array has not been set up yet...
64
+		if (! isset($this->available_spaces['tickets'][ $ticket->ID() ])) {
65
+			$this->setInitialTicketDatetimeAvailability($ticket);
66
+		}
67
+		$available_spaces = $ticket->qty() - $ticket->sold();
68
+		if (isset($this->available_spaces['tickets'][ $ticket->ID() ])) {
69
+			// loop thru tickets, which will ALSO include individual ticket records AND a total
70
+			foreach ($this->available_spaces['tickets'][ $ticket->ID() ] as $DTD_ID => $spaces) {
71
+				// if we want the original datetime availability BEFORE we started subtracting tickets ?
72
+				if ($get_original_ticket_spaces) {
73
+					// then grab the available spaces from the "tickets" array
74
+					// and compare with the above to get the lowest number
75
+					$available_spaces = min(
76
+						$available_spaces,
77
+						$this->available_spaces['tickets'][ $ticket->ID() ][ $DTD_ID ]
78
+					);
79
+				} else {
80
+					// we want the updated ticket availability as stored in the "datetimes" array
81
+					$available_spaces = min($available_spaces, $this->available_spaces['datetimes'][ $DTD_ID ]);
82
+				}
83
+			}
84
+		}
85
+		return $available_spaces;
86
+	}
87
+
88
+
89
+	/**
90
+	 * @param EE_Ticket $ticket
91
+	 * @return void
92
+	 * @throws InvalidArgumentException
93
+	 * @throws InvalidInterfaceException
94
+	 * @throws InvalidDataTypeException
95
+	 * @throws EE_Error
96
+	 */
97
+	private function setInitialTicketDatetimeAvailability(EE_Ticket $ticket)
98
+	{
99
+		// first, get all of the datetimes that are available to this ticket
100
+		$datetimes = $ticket->get_many_related(
101
+			'Datetime',
102
+			array(
103
+				array(
104
+					'DTT_EVT_end' => array(
105
+						'>=',
106
+						$this->datetime_model->current_time_for_query('DTT_EVT_end'),
107
+					),
108
+				),
109
+				'order_by' => array('DTT_EVT_start' => 'ASC'),
110
+			)
111
+		);
112
+		if (! empty($datetimes)) {
113
+			// now loop thru all of the datetimes
114
+			foreach ($datetimes as $datetime) {
115
+				if ($datetime instanceof EE_Datetime) {
116
+					// the number of spaces available for the datetime without considering individual ticket quantities
117
+					$spaces_remaining = $datetime->spaces_remaining();
118
+					// save the total available spaces ( the lesser of the ticket qty minus the number of tickets sold
119
+					// or the datetime spaces remaining) to this ticket using the datetime ID as the key
120
+					$this->available_spaces['tickets'][ $ticket->ID() ][ $datetime->ID() ] = min(
121
+						$ticket->qty() - $ticket->sold(),
122
+						$spaces_remaining
123
+					);
124
+					// if the remaining spaces for this datetime is already set,
125
+					// then compare that against the datetime spaces remaining, and take the lowest number,
126
+					// else just take the datetime spaces remaining, and assign to the datetimes array
127
+					$this->available_spaces['datetimes'][ $datetime->ID() ] = isset(
128
+						$this->available_spaces['datetimes'][ $datetime->ID() ]
129
+					)
130
+						? min($this->available_spaces['datetimes'][ $datetime->ID() ], $spaces_remaining)
131
+						: $spaces_remaining;
132
+				}
133
+			}
134
+		}
135
+	}
136
+
137
+
138
+	/**
139
+	 * @param    EE_Ticket $ticket
140
+	 * @param    int       $qty
141
+	 * @return    void
142
+	 * @throws EE_Error
143
+	 */
144
+	public function recalculateTicketDatetimeAvailability(EE_Ticket $ticket, $qty = 0)
145
+	{
146
+		if (isset($this->available_spaces['tickets'][ $ticket->ID() ])) {
147
+			// loop thru tickets, which will ALSO include individual ticket records AND a total
148
+			foreach ($this->available_spaces['tickets'][ $ticket->ID() ] as $DTD_ID => $spaces) {
149
+				// subtract the qty of selected tickets from each datetime's available spaces this ticket has access to,
150
+				$this->available_spaces['datetimes'][ $DTD_ID ] -= $qty;
151
+			}
152
+		}
153
+	}
154
+
155
+
156
+	/**
157
+	 * @param EE_Ticket $ticket
158
+	 * @param           $qty
159
+	 * @param int       $total_ticket_count
160
+	 * @throws EE_Error
161
+	 * @throws InvalidArgumentException
162
+	 * @throws InvalidDataTypeException
163
+	 * @throws InvalidInterfaceException
164
+	 */
165
+	public function processAvailabilityError(EE_Ticket $ticket, $qty, $total_ticket_count = 1)
166
+	{
167
+		// tickets can not be purchased but let's find the exact number left
168
+		// for the last ticket selected PRIOR to subtracting tickets
169
+		$available_spaces = $this->ticketDatetimeAvailability($ticket, true);
170
+		// greedy greedy greedy eh?
171
+		if ($available_spaces > 0) {
172
+			if (
173
+				apply_filters(
174
+					'FHEE__EE_Ticket_Selector___add_ticket_to_cart__allow_display_availability_error',
175
+					true,
176
+					$ticket,
177
+					$qty,
178
+					$available_spaces
179
+				)
180
+			) {
181
+				$this->availabilityError(
182
+					$available_spaces,
183
+					$total_ticket_count
184
+				);
185
+			}
186
+		} else {
187
+			EE_Error::add_error(
188
+				esc_html__(
189
+					'We\'re sorry, but there are no available spaces left for this event at this particular date and time.',
190
+					'event_espresso'
191
+				),
192
+				__FILE__,
193
+				__FUNCTION__,
194
+				__LINE__
195
+			);
196
+		}
197
+	}
198
+
199
+
200
+	/**
201
+	 * @param int $available_spaces
202
+	 * @param int $total_ticket_count
203
+	 */
204
+	private function availabilityError($available_spaces = 1, $total_ticket_count = 1)
205
+	{
206
+		// add error messaging - we're using the _n function that will generate
207
+		// the appropriate singular or plural message based on the number of $available_spaces
208
+		if ($total_ticket_count) {
209
+			$msg = sprintf(
210
+				esc_html(
211
+					_n(
212
+						'We\'re sorry, but there is only %1$s available space left for this event at this particular date and time. Please select a different number (or different combination) of tickets by cancelling the current selection and choosing again, or proceed to registration.',
213
+						'We\'re sorry, but there are only %1$s available spaces left for this event at this particular date and time. Please select a different number (or different combination) of tickets by cancelling the current selection and choosing again, or proceed to registration.',
214
+						$available_spaces,
215
+						'event_espresso'
216
+					)
217
+				),
218
+				$available_spaces,
219
+				'<br />'
220
+			);
221
+		} else {
222
+			$msg = sprintf(
223
+				esc_html(
224
+					_n(
225
+						'We\'re sorry, but there is only %1$s available space left for this event at this particular date and time. Please select a different number (or different combination) of tickets.',
226
+						'We\'re sorry, but there are only %1$s available spaces left for this event at this particular date and time. Please select a different number (or different combination) of tickets.',
227
+						$available_spaces,
228
+						'event_espresso'
229
+					)
230
+				),
231
+				$available_spaces,
232
+				'<br />'
233
+			);
234
+		}
235
+		EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
236
+	}
237 237
 }
Please login to merge, or discard this patch.