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); }
/** * 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); }
/** * 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)); }