Cancelling or An Error during event registration payment should cancel all additional participates
Problem
If a user is registering for an event with additional participates, and for some reason the payment failed or the user decided to cancel the payment, then only the main user participant record will be set to "cancelled", the rest of additional participants will stay at "pending incomplete transaction" status.
Solution
All participants statuses should be changed to cancelled and not just the main user, Also there should be an activity created for each participants that indicate the event registration is cancelled similar to what happen if the payment succeeded.
Technical notes
The cancelled() and failed() methods of CRM_Core_Payment_BaseIPN class use an instance of the Participant DAO class to change the status to cancelled which results in only changing the first participant :
https://github.com/civicrm/civicrm-core/blob/master/CRM/Core/Payment/BaseIPN.php#L377 https://github.com/civicrm/civicrm-core/blob/master/CRM/Core/Payment/BaseIPN.php#L280
which should be replaced with either a call to Participant BAO create method, or the Participant API to fix the issue.