Пример #1
0
 public function testGetUsersByEmailAddress()
 {
     $user = UserTestHelper::createBasicUser('Steve');
     $user->primaryEmail->emailAddress = '*****@*****.**';
     $user->primaryEmail->optOut = 1;
     $user->primaryEmail->isInvalid = 0;
     $this->assertTrue($user->save());
     $users = UserSearch::getUsersByEmailAddress('*****@*****.**');
     $this->assertEquals(1, count($users));
     $this->assertEquals($user->id, $users[0]->id);
 }
Пример #2
0
 /**
  * Get Contact or Account or User, based on email address
  * @param string $emailAddress
  * @param boolean $userCanAccessContacts
  * @param boolean $userCanAccessLeads
  * @param boolean $userCanAccessAccounts
  * @return Contact || Account || User || NULL
  */
 public static function resolvePersonOrAccountByEmailAddress($emailAddress, $userCanAccessContacts = false, $userCanAccessLeads = false, $userCanAccessAccounts = false)
 {
     assert('is_string($emailAddress)');
     assert('is_bool($userCanAccessContacts)');
     assert('is_bool($userCanAccessLeads)');
     assert('is_bool($userCanAccessAccounts)');
     $personOrAccount = null;
     $contactsOrLeads = array();
     if ($userCanAccessContacts || $userCanAccessLeads) {
         $stateMetadataAdapterClassName = LeadsStateMetadataAdapter::resolveStateMetadataAdapterClassNameByAccess($userCanAccessContacts, $userCanAccessLeads);
         $contactsOrLeads = ContactSearch::getContactsByAnyEmailAddress($emailAddress, null, $stateMetadataAdapterClassName);
     }
     if (!empty($contactsOrLeads)) {
         $personOrAccount = $contactsOrLeads[0];
     } else {
         $accounts = array();
         // Check if email belongs to account
         if ($userCanAccessAccounts) {
             $accounts = AccountSearch::getAccountsByAnyEmailAddress($emailAddress);
         }
         if (count($accounts)) {
             $personOrAccount = $accounts[0];
         } else {
             $users = UserSearch::getUsersByEmailAddress($emailAddress);
             if (count($users)) {
                 $personOrAccount = $users[0];
             }
         }
     }
     return $personOrAccount;
 }
 /**
  * Get users by emails
  * @throws ApiException
  */
 public function actionSearchUsersByEmails()
 {
     $params = Yii::app()->apiRequest->getParams();
     if (!isset($params['data'])) {
         $message = Zurmo::t('ZurmoModule', 'Please provide data.');
         throw new ApiException($message);
     }
     if (!isset($params['data']['emails']) || !is_array($params['data']['emails']) || empty($params['data']['emails'])) {
         $message = Zurmo::t('ZurmoModule', 'Emails parameters must exist, must be an array and must contain at least one email address.');
         throw new ApiException($message);
     }
     $data = array();
     $data['users'] = array();
     try {
         foreach ($params['data']['emails'] as $email) {
             $usersByEmail = UserSearch::getUsersByEmailAddress($email);
             if (!empty($usersByEmail) && count($usersByEmail) == 1) {
                 $user = array();
                 $user['id'] = $usersByEmail[0]->id;
                 $user['firstName'] = $usersByEmail[0]->firstName;
                 $user['lastName'] = $usersByEmail[0]->lastName;
                 $user['username'] = $usersByEmail[0]->username;
                 if ($usersByEmail[0]->primaryEmail->emailAddress != null) {
                     $user['email'] = $usersByEmail[0]->primaryEmail->emailAddress;
                 }
                 $data['users'][] = $user;
             }
         }
         $result = new ApiResult(ApiResponse::STATUS_SUCCESS, $data, null, null);
     } catch (Exception $e) {
         $message = $e->getMessage();
         throw new ApiException($message);
     }
     Yii::app()->apiHelper->sendResponse($result);
 }
 /**
  * Given a partial name or e-mail address, search for all Users, Leads or Contacts
  * JSON encode the resulting array of contacts.
  */
 public function actionAutoCompleteForMultiSelectAutoComplete($term, $autoCompleteOptions = null)
 {
     $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('autoCompleteListPageSize', get_class($this->getModule()));
     $usersByFullName = UserSearch::getUsersByPartialFullName($term, $pageSize, $autoCompleteOptions);
     $usersByEmailAddress = UserSearch::getUsersByEmailAddress($term, 'contains', true, $autoCompleteOptions, $pageSize);
     $contacts = ContactSearch::getContactsByPartialFullNameOrAnyEmailAddress($term, $pageSize, null, 'contains', $autoCompleteOptions);
     $autoCompleteResults = array();
     foreach ($usersByEmailAddress as $user) {
         if (isset($user->primaryEmail->emailAddress)) {
             $autoCompleteResults[] = array('id' => strval($user->primaryEmail), 'name' => strval($user) . ' (' . $user->primaryEmail . ')');
         }
     }
     foreach ($usersByFullName as $user) {
         if (isset($user->primaryEmail->emailAddress)) {
             $autoCompleteResults[] = array('id' => strval($user->primaryEmail), 'name' => strval($user) . ' (' . $user->primaryEmail . ')');
         }
     }
     foreach ($contacts as $contact) {
         if (isset($contact->primaryEmail->emailAddress)) {
             $autoCompleteResults[] = array('id' => strval($contact->primaryEmail), 'name' => strval($contact) . ' (' . $contact->primaryEmail . ')');
         }
     }
     $emailValidator = new CEmailValidator();
     if (count($autoCompleteResults) == 0 && $emailValidator->validateValue($term)) {
         $autoCompleteResults[] = array('id' => $term, 'name' => $term);
     }
     echo CJSON::encode($autoCompleteResults);
 }
Пример #5
0
 /**
  * test getUsersByEmailAddress
  */
 public function testGetUsersByEmailAddress()
 {
     $user = UserTestHelper::createBasicUserWithEmailAddress("emailhideuser");
     $user->hideFromSelecting = true;
     $this->assertTrue($user->save());
     unset($user);
     $users = UserSearch::getUsersByEmailAddress("*****@*****.**", null, false);
     $this->assertEquals(true, (bool) $users[0]->hideFromSelecting);
     $this->assertEquals(1, count($users));
     $users = UserSearch::getUsersByEmailAddress("*****@*****.**", null, true);
     $this->assertEquals(0, count($users));
 }