/** * @depends testResolveEmailAddressToContactIfEmailRelationAvailableForReceivedMessage */ public function testResolveEmailAddressToContactIfEmailRelationAvailableForSentMessage() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $message1 = EmailMessageTestHelper::createArchivedUnmatchedSentMessage($super); $contact = new Contact(); $this->assertNull($contact->primaryEmail->emailAddress); ArchivedEmailMatchingUtil::resolveContactToSenderOrRecipient($message1, $contact); ArchivedEmailMatchingUtil::resolveEmailAddressToContactIfEmailRelationAvailable($message1, $contact); $this->assertEquals('*****@*****.**', $contact->primaryEmail->emailAddress); $this->assertNull($contact->secondaryEmail->emailAddress); //Test placing in secondary address from recipient $message1 = EmailMessageTestHelper::createArchivedUnmatchedSentMessage($super); $contact = new Contact(); $contact->primaryEmail->emailAddress = '*****@*****.**'; $this->assertNull($contact->secondaryEmail->emailAddress); ArchivedEmailMatchingUtil::resolveContactToSenderOrRecipient($message1, $contact); ArchivedEmailMatchingUtil::resolveEmailAddressToContactIfEmailRelationAvailable($message1, $contact); $this->assertEquals('*****@*****.**', $contact->primaryEmail->emailAddress); $this->assertEquals('*****@*****.**', $contact->secondaryEmail->emailAddress); }
public function actionCompleteMatch($id) { //!!!todo security checks?? think about it $emailMessage = EmailMessage::getById((int) $id); $userCanAccessContacts = RightsUtil::canUserAccessModule('ContactsModule', Yii::app()->user->userModel); $userCanAccessLeads = RightsUtil::canUserAccessModule('LeadsModule', Yii::app()->user->userModel); if (!$userCanAccessContacts && !$userCanAccessLeads) { throw new NotSupportedException(); } $selectForm = self::makeSelectForm($userCanAccessLeads, $userCanAccessContacts); if (isset($_POST[get_class($selectForm)])) { if (isset($_POST['ajax']) && $_POST['ajax'] === 'select-contact-form-' . $id) { $selectForm->setAttributes($_POST[get_class($selectForm)][$id]); $selectForm->validate(); $errorData = array(); foreach ($selectForm->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($selectForm, $attribute)] = $errors; } echo CJSON::encode($errorData); Yii::app()->end(0, false); } else { $selectForm->setAttributes($_POST[get_class($selectForm)][$id]); $contact = Contact::getById((int) $selectForm->contactId); ArchivedEmailMatchingUtil::resolveContactToSenderOrRecipient($emailMessage, $contact); ArchivedEmailMatchingUtil::resolveEmailAddressToContactIfEmailRelationAvailable($emailMessage, $contact); $emailMessage->folder = EmailFolder::getByBoxAndType($emailMessage->folder->emailBox, EmailFolder::TYPE_ARCHIVED); if (!$emailMessage->save()) { throw new FailedToSaveModelException(); } } } else { static::attemptToMatchAndSaveLeadOrContact($emailMessage, 'Contact', (int) $id); static::attemptToMatchAndSaveLeadOrContact($emailMessage, 'Lead', (int) $id); } ZurmoControllerUtil::updatePermissionsWithDefaultForModelByCurrentUser($emailMessage); }