public function testResolveAndGetByUserAndName() { //Test a user that not have a Primary Email Address $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $emailAccount = SendGridEmailAccount::resolveAndGetByUserAndName($super); $this->assertEquals('Default', $emailAccount->name); $this->assertEquals($super, $emailAccount->user); $this->assertEquals($super->getFullName(), $emailAccount->fromName); $this->assertEquals($super->primaryEmail->emailAddress, $emailAccount->fromAddress); $emailAccountId = $emailAccount->id; $emailAccount = SendGridEmailAccount::resolveAndGetByUserAndName($super); $this->assertNotEquals($emailAccountId, $emailAccount->id); $emailAccount->apiUsername = static::$apiUsername; $emailAccount->apiPassword = static::$apiPassword; $emailAccount->save(); $this->assertEquals($emailAccount->getError('fromAddress'), 'From Address cannot be blank.'); $emailAccount->fromAddress = '*****@*****.**'; $this->assertTrue($emailAccount->save()); $emailAccountId = $emailAccount->id; $emailAccount = SendGridEmailAccount::resolveAndGetByUserAndName($super); $this->assertEquals($emailAccountId, $emailAccount->id); $this->assertEquals('Default', $emailAccount->name); $this->assertEquals($super, $emailAccount->user); $this->assertEquals($super->getFullName(), $emailAccount->fromName); $this->assertEquals('*****@*****.**', $emailAccount->fromAddress); $this->assertEquals(static::$apiUsername, $emailAccount->apiUsername); $this->assertEquals(static::$apiPassword, ZurmoPasswordSecurityUtil::decrypt($emailAccount->apiPassword)); }
/** * Resolve mailer by email message. * @return \ZurmoSwiftMailer|\ZurmoSendGridMailer */ public function resolveMailer() { $apiUser = Yii::app()->sendGridEmailHelper->apiUsername; $apiPassword = Yii::app()->sendGridEmailHelper->apiPassword; $user = $this->emailMessage->owner; $defaultMailerClassName = static::resolveDefaultMailerClassName(); if ($user != null) { $this->sendGridEmailAccount = SendGridEmailAccount::resolveAndGetByUserAndName($user, null, false); $this->emailAccount = EmailAccount::resolveAndGetByUserAndName($user, null, false); } if ($this->sendGridPluginEnabled && $user != null) { //Should user settings be used if ($this->shouldSendGridUserSettingsBeUsed()) { return new ZurmoSendGridMailer($this->emailMessage, $this->sendGridEmailAccount); } else { //Check for personal settings if ($this->shouldCustomUserSettingsBeUsed()) { return new $defaultMailerClassName($this->emailMessage, $this->emailAccount); } else { if ($apiUser != null && $apiPassword != null) { $this->updateMailerDetailsForEmailMessage('sendgrid', 'global'); return new ZurmoSendGridMailer($this->emailMessage, null); } else { $this->updateMailerDetailsForEmailMessage('smtp', 'global'); return new $defaultMailerClassName($this->emailMessage, null); } } } } elseif ($user != null && $this->shouldCustomUserSettingsBeUsed() === true) { return new $defaultMailerClassName($this->emailMessage, $this->emailAccount); } elseif ($this->sendGridPluginEnabled && $apiUser != null && $apiPassword != null) { $this->updateMailerDetailsForEmailMessage('sendgrid', 'global'); return new ZurmoSendGridMailer($this->emailMessage, null); } else { $this->updateMailerDetailsForEmailMessage('smtp', 'global'); return new $defaultMailerClassName($this->emailMessage, null); } }
/** * Configure sendgrid options. * @param int $id * @param string $redirectUrl * @return void */ protected function processSendGridPostConfiguration($id, $redirectUrl = null) { SendGridAccessUtil::resolveCanCurrentUserAccessAction(intval($id)); $user = User::getById(intval($id)); $emailAccount = SendGridEmailAccount::resolveAndGetByUserAndName($user); $userSendGridConfigurationForm = new UserSendGridConfigurationForm($emailAccount); $userSendGridConfigurationForm->emailSignatureHtmlContent = $user->getEmailSignature()->htmlContent; $postVariableName = get_class($userSendGridConfigurationForm); if (isset($_POST[$postVariableName])) { $userSendGridConfigurationForm->setAttributes($_POST[$postVariableName]); if ($userSendGridConfigurationForm->validate()) { $userSendGridConfigurationForm->save(); Yii::app()->user->setFlash('notification', Zurmo::t('UsersModule', 'User SendGrid API configuration saved successfully.')); if ($redirectUrl != null) { $this->redirect($redirectUrl); } else { $this->redirect(array($this->getId() . '/details', 'id' => $user->id)); } } else { $userSendGridConfigurationForm->apiPassword = ZurmoPasswordSecurityUtil::decrypt($userSendGridConfigurationForm->apiPassword); } } return $userSendGridConfigurationForm; }