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);
     }
 }
Exemple #3
0
 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();
 }