$this->participantIDs = Conversation::validateParticipants($this->participants);
$this->invisibleParticipantIDs = Conversation::validateParticipants($this->invisibleParticipants, 'invisibleParticipants');
if (!empty($this->participantsGroupIDs)) {
- $this->participantIDs = array_merge($this->participantIDs, Conversation::validateGroupParticipants($this->participantsGroupIDs));
- $this->participantIDs = array_unique($this->participantIDs);
+ $validGroupParticipants = Conversation::validateGroupParticipants($this->participantsGroupIDs);
+ $validGroupParticipants = array_diff($validGroupParticipants, $this->participantIDs);
+ if (empty($validGroupParticipants)) {
+ throw new UserInputException('participants', 'emptyGroup');
+ }
+ $this->participantIDs = array_merge($this->participantIDs, $validGroupParticipants);
}
if (!empty($this->invisibleParticipantsGroupIDs)) {
- $this->invisibleParticipantIDs = array_merge($this->invisibleParticipantIDs, Conversation::validateGroupParticipants($this->invisibleParticipantsGroupIDs, 'invisibleParticipants'));
- $this->invisibleParticipantIDs = array_unique($this->invisibleParticipantIDs);
+ $validGroupParticipants = Conversation::validateGroupParticipants($this->invisibleParticipantsGroupIDs, 'invisibleParticipants');
+ $validGroupParticipants = array_diff($validGroupParticipants, $this->invisibleParticipantIDs);
+ if (empty($validGroupParticipants)) {
+ throw new UserInputException('invisibleParticipants', 'emptyGroup');
+ }
+ $this->invisibleParticipantIDs = array_merge($this->invisibleParticipantIDs, $validGroupParticipants);
}
// remove duplicates
<item name="wcf.conversation.participants.error.duplicate"><![CDATA[{$errorData[username]} ist bereits Teilnehmer dieser Konversation.]]></item>
<item name="wcf.conversation.participants.error.canNotUseConversation"><![CDATA[{$errorData[username]} besitzt nicht die notwendigen Berechtigungen, um an einer Konversation teilnehmen zu dürfen.]]></item>
<item name="wcf.conversation.participants.error.doesNotAcceptConversation"><![CDATA[{$errorData[username]} möchte nicht an Konversationen teilnehmen.]]></item>
+ <item name="wcf.conversation.participants.error.emptyGroup"><![CDATA[Die Mitglieder aller angegebener Gruppen sind bereits Teilnehmer dieser Konversation.]]></item>
<item name="wcf.conversation.participants.error.ignoresYou"><![CDATA[{$errorData[username]} hat {if LANGUAGE_USE_INFORMAL_VARIANT}dich{else}Sie{/if} blockiert.]]></item>
<item name="wcf.conversation.participants.error.tooManyParticipants"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Du hast{else}Sie haben{/if} zu viele Teilnehmer angegeben. Das Maximum liegt bei {#$__wcf->getSession()->getPermission('user.conversation.maxParticipants')} Teilnehmern.]]></item>
<item name="wcf.conversation.participants.error.invisibleParticipantsNoPermission"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Du hast{else}Sie haben{/if} keine Berechtigung, unsichtbare Teilnehmer hinzuzufügen.]]></item>
<item name="wcf.conversation.participants.error.duplicate"><![CDATA[{$errorData[username]} is already a participant of this conversation.]]></item>
<item name="wcf.conversation.participants.error.canNotUseConversation"><![CDATA[{$errorData[username]} is not allowed to participate in a conversation.]]></item>
<item name="wcf.conversation.participants.error.doesNotAcceptConversation"><![CDATA[{$errorData[username]} does not want to be added in conversations.]]></item>
+ <item name="wcf.conversation.participants.error.emptyGroup"><![CDATA[Every member within the given user groups already participates in this conversation.]]></item>
<item name="wcf.conversation.participants.error.ignoresYou"><![CDATA[{$errorData[username]} is blocking you.]]></item>
<item name="wcf.conversation.participants.error.tooManyParticipants"><![CDATA[You have added too many participants, you can add up to {#$__wcf->getSession()->getPermission('user.conversation.maxParticipants')} participants.]]></item>
<item name="wcf.conversation.participants.error.invisibleParticipantsNoPermission"><![CDATA[You do not have the permission to add invisible participants.]]></item>