public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $emailAccount = EmailAccount::resolveAndGetByUserAndName(Yii::app()->user->userModel); //So the email is configured $emailAccount->fromAddress = '*****@*****.**'; $saved = $emailAccount->save(); assert($saved); // Not Coding Standard //Setup test data owned by the super user. $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super); $contact = ContactTestHelper::createContactWithAccountByNameForOwner('superContact', $super, $account); $contact->primaryEmail = new Email(); $contact->primaryEmail->emailAddress = '*****@*****.**'; $saved = $contact->save(); assert($saved); // Not Coding Standard }
/** * 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); } }
public function testCrudForHasOneAndHasManyEmailAccountRelations() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $emailAccount = EmailAccount::resolveAndGetByUserAndName($super); $emailAccountId = $emailAccount->id; $emailAccount->forgetAll(); //Check read hasOne relation $emailAccount = EmailAccount::getById($emailAccountId); $user = $emailAccount->user; $this->assertEquals($super->username, $user->username); //Check update hasOne relation $user = User::getByUsername('billy'); $emailAccount->user = $user; $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertEquals('billy', $emailAccount->user->username); //Check delete hasOne relation $emailAccount->user = null; $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertLessThan(0, $emailAccount->user->id); //Check create and read hasMany relation model $emailMessage = EmailMessageTestHelper::createDraftSystemEmail('first test email', $user); $emailAccount->messages->add($emailMessage); $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertCount(1, $emailAccount->messages); $this->assertEquals('first test email', $emailAccount->messages[0]->subject); //Check update hasMany relation $emailMessage = $emailAccount->messages[0]; $emailMessage->subject = 'first test email modified'; $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertCount(1, $emailAccount->messages); $this->assertEquals($emailMessage->subject, $emailAccount->messages[0]->subject); //Check add and read another hasMany relation model $emailMessage2 = EmailMessageTestHelper::createDraftSystemEmail('second test email', $user); $emailAccount->messages->add($emailMessage2); $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertCount(2, $emailAccount->messages); $this->assertEquals($emailMessage2->subject, $emailAccount->messages[1]->subject); //Check delete hasMany relation first model $emailAccount->messages->remove($emailMessage); $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertCount(1, $emailAccount->messages); $this->assertEquals($emailMessage2->subject, $emailAccount->messages[0]->subject); //Check delete last hasMany relation model $emailAccount->messages->remove($emailMessage2); $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertCount(0, $emailAccount->messages); }
public function actionEmailConfiguration($id, $redirectUrl = null) { UserAccessUtil::resolveCanCurrentUserAccessAction(intval($id)); $user = User::getById(intval($id)); UserAccessUtil::resolveCanCurrentUserAccessRootUser($user); UserAccessUtil::resolveAccessingASystemUser($user); $title = Zurmo::t('EmailMessagesModule', 'Email Configuration'); $breadCrumbLinks = array(strval($user) => array('default/details', 'id' => $id), $title); $emailAccount = EmailAccount::resolveAndGetByUserAndName($user); $userEmailConfigurationForm = new UserEmailConfigurationForm($emailAccount); $userEmailConfigurationForm->emailSignatureHtmlContent = $user->getEmailSignature()->htmlContent; $postVariableName = get_class($userEmailConfigurationForm); if (isset($_POST[$postVariableName])) { $userEmailConfigurationForm->setAttributes($_POST[$postVariableName]); if ($userEmailConfigurationForm->validate()) { $userEmailConfigurationForm->save(); Yii::app()->user->setFlash('notification', Zurmo::t('UsersModule', 'User email configuration saved successfully.')); if ($redirectUrl != null) { $this->redirect($redirectUrl); } else { $this->redirect(array($this->getId() . '/details', 'id' => $user->id)); } } else { $userEmailConfigurationForm->outboundPassword = ZurmoPasswordSecurityUtil::decrypt($userEmailConfigurationForm->outboundPassword); } } $titleBarAndEditView = new UserActionBarAndEmailConfigurationEditView($this->getId(), $this->getModule()->getId(), $user, $userEmailConfigurationForm); $titleBarAndEditView->setCssClasses(array('AdministrativeArea')); $view = new UsersPageView($this->resolveZurmoDefaultOrAdminView($titleBarAndEditView, $breadCrumbLinks, 'UserBreadCrumbView')); echo $view->render(); }