示例#1
0
 public function testUsingStateAdapters()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $contactStates = ContactState::getAll();
     $this->assertTrue(count($contactStates) > 1);
     $firstContactState = $contactStates[0];
     $lastContactState = $contactStates[count($contactStates) - 1];
     $contact = new Contact();
     $contact->title->value = 'Mr.';
     $contact->firstName = 'Sallyy';
     $contact->lastName = 'Sallyyson';
     $contact->owner = $super;
     $contact->state = $firstContactState;
     $contact->primaryEmail = new Email();
     $contact->primaryEmail->emailAddress = '*****@*****.**';
     $contact->secondaryEmail = new Email();
     $contact->secondaryEmail->emailAddress = '*****@*****.**';
     $this->assertTrue($contact->save());
     $data = ContactSearch::getContactsByPartialFullNameOrAnyEmailAddress('sally', 5);
     $this->assertEquals(2, count($data));
     $data = ContactSearch::getContactsByPartialFullName('sally', 5);
     $this->assertEquals(2, count($data));
     //Use contact state adapter
     $data = ContactSearch::getContactsByPartialFullNameOrAnyEmailAddress('sally', 5, 'ContactsStateMetadataAdapter');
     $this->assertEquals(1, count($data));
     $this->assertEquals($lastContactState, $data[0]->state);
     $data = ContactSearch::getContactsByPartialFullName('sally', 5, 'ContactsStateMetadataAdapter');
     $this->assertEquals(1, count($data));
     $this->assertEquals($lastContactState, $data[0]->state);
     //Use lead state adapter
     $data = ContactSearch::getContactsByPartialFullNameOrAnyEmailAddress('sally', 5, 'LeadsStateMetadataAdapter');
     $this->assertEquals(1, count($data));
     $this->assertEquals($firstContactState, $data[0]->state);
     $data = ContactSearch::getContactsByPartialFullName('sally', 5, 'LeadsStateMetadataAdapter');
     $this->assertEquals(1, count($data));
     $this->assertEquals($firstContactState, $data[0]->state);
 }
 /**
  * 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);
 }
 /**
  * Given a partial name or e-mail address, search for all contacts or users regardless of contact state unless
  * the current user has security restrictions on some states. If the adapter resolver returns false, then the
  * user does not have access to the Leads or Contacts module.
  * JSON encode the resulting array of contacts.
  */
 public function actionAutoCompleteAllContactsOrUsersForMultiSelectAutoComplete($term, $autoCompleteOptions = null)
 {
     $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('autoCompleteListPageSize', get_class($this->getModule()));
     $adapterName = ContactsUtil::resolveContactStateAdapterByModulesUserHasAccessTo('LeadsModule', 'ContactsModule', Yii::app()->user->userModel);
     if ($adapterName === false) {
         $messageView = new AccessFailureView();
         $view = new AccessFailurePageView($messageView);
         echo $view->render();
         Yii::app()->end(0, false);
     }
     $contacts = ContactSearch::getContactsByPartialFullNameOrAnyEmailAddress($term, $pageSize, $adapterName, null, $autoCompleteOptions);
     $autoCompleteResults = array();
     foreach ($contacts as $contact) {
         $autoCompleteResults[] = array('id' => Meeting::CONTACT_ATTENDEE_PREFIX . $contact->id, 'name' => MultipleContactsForMeetingElement::renderHtmlContentLabelFromContactAndKeyword($contact, $term));
     }
     $users = UserSearch::getUsersByPartialFullNameOrAnyEmailAddress($term, $pageSize, null, null, $autoCompleteOptions);
     foreach ($users as $user) {
         $autoCompleteResults[] = array('id' => Meeting::USER_ATTENDEE_PREFIX . $user->id, 'name' => MultipleContactsForMeetingElement::renderHtmlContentLabelFromUserAndKeyword($user, $term));
     }
     echo CJSON::encode($autoCompleteResults);
 }