/** * Start a new conversation. * * @since 2.0.0 * @access public * * @param string $Recipient Username of the recipient. */ public function Add($Recipient = '') { $this->Permission('Conversations.Conversations.Add'); $this->Form->SetModel($this->ConversationModel); // Set recipient limit if (!CheckPermission('Garden.Moderation.Manage') && C('Conversations.MaxRecipients')) { $this->AddDefinition('MaxRecipients', C('Conversations.MaxRecipients')); $this->SetData('MaxRecipients', C('Conversations.MaxRecipients')); } if ($this->Form->AuthenticatedPostBack()) { $RecipientUserIDs = array(); $To = explode(',', $this->Form->GetFormValue('To', '')); $UserModel = new UserModel(); foreach ($To as $Name) { if (trim($Name) != '') { $User = $UserModel->GetByUsername(trim($Name)); if (is_object($User)) { $RecipientUserIDs[] = $User->UserID; } } } // Enforce MaxRecipients if (!$this->ConversationModel->AddUserAllowed(0, count($RecipientUserIDs))) { // Reuse the Info message now as an error. $this->Form->AddError(sprintf(Plural($this->Data('MaxRecipients'), "You are limited to %s recipient.", "You are limited to %s recipients."), C('Conversations.MaxRecipients'))); } $this->EventArguments['Recipients'] = $RecipientUserIDs; $this->FireEvent('BeforeAddConversation'); $this->Form->SetFormValue('RecipientUserID', $RecipientUserIDs); $ConversationID = $this->Form->Save($this->ConversationMessageModel); if ($ConversationID !== FALSE) { $Target = $this->Form->GetFormValue('Target', 'messages/' . $ConversationID); $this->RedirectUrl = Url($Target); } } else { if ($Recipient != '') { $this->Form->SetValue('To', $Recipient); } } if ($Target = Gdn::Request()->Get('Target')) { $this->Form->AddHidden('Target', $Target); } Gdn_Theme::Section('PostConversation'); $this->Title(T('New Conversation')); $this->SetData('Breadcrumbs', array(array('Name' => T('Inbox'), 'Url' => '/messages/inbox'), array('Name' => $this->Data('Title'), 'Url' => 'messages/add'))); $this->Render(); }