protected function renderAutoCompleteResults($modelClassName, $term, $autoCompleteOptions = null) { $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('autoCompleteListPageSize', get_class($this->getModule())); $autoCompleteResults = ModelAutoCompleteUtil::getByPartialName($modelClassName, $term, $pageSize, $autoCompleteOptions); if (empty($autoCompleteResults)) { $autoCompleteResults = array(array('id' => null, 'value' => null, 'label' => Zurmo::t('Core', 'No results found'))); } return CJSON::encode($autoCompleteResults); }
public function testGetGenericResultSanitizePartialName() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $this->assertTrue(ZurmoRedBean::$writer->doesTableExist(User::getTableName())); AccountTestHelper::createAccountByNameForOwner('Test account', $super); AccountTestHelper::createAccountByNameForOwner('Test account 2', $super); $term = "Test%');drop TABLE _user-- "; $data = ModelAutoCompleteUtil::getByPartialName('Account', $term, 5); $this->assertTrue(ZurmoRedBean::$writer->doesTableExist(User::getTableName())); $this->assertEmpty($data); }
/** * @depends testGetCustomFieldDataByPartialName */ public function testGetByPartialName() { Yii::app()->user->userModel = User::getByUsername('super'); $userData = array('Billy', 'Jimmy', 'Sunny', 'Jinny', 'Johnny', 'Appay'); foreach ($userData as $firstName) { $user = UserTestHelper::createBasicUser($firstName); } $user = User::getByUsername('billy'); $contactData = array('Sam', 'Sally', 'Sarah', 'Jason', 'James', 'Roger'); $contactStates = ContactState::getAll(); foreach ($contactData as $firstName) { $contact = new Contact(); $contact->title->value = 'Mr.'; $contact->firstName = $firstName; $contact->lastName = $firstName . 'son'; $contact->owner = $user; $contact->state = $contactStates[count($contactStates) - 1]; $this->assertTrue($contact->save()); } $accountData = array('ABC Company', 'Rabbit Systems', 'Rabid Technology', 'Super Company', 'Legalland', 'Toycity'); foreach ($accountData as $name) { $account = new Account(); $account->name = $name; $account->owner = $user; $this->assertTrue($account->save()); } $data = ModelAutoCompleteUtil::getByPartialName('User', 'j', 5); $compareData = array(array('id' => $data[0]['id'], 'value' => 'Jimmy Jimmyson', 'label' => 'Jimmy Jimmyson (jimmy)'), array('id' => $data[1]['id'], 'value' => 'Jinny Jinnyson', 'label' => 'Jinny Jinnyson (jinny)'), array('id' => $data[2]['id'], 'value' => 'Johnny Johnnyson', 'label' => 'Johnny Johnnyson (johnny)')); $this->assertEquals($compareData, $data); $data = ContactAutoCompleteUtil::getByPartialName('sa', 5); $compareData = array(array('id' => $data[0]['id'], 'value' => 'Sally Sallyson', 'label' => 'Sally Sallyson'), array('id' => $data[1]['id'], 'value' => 'Sam Samson', 'label' => 'Sam Samson'), array('id' => $data[2]['id'], 'value' => 'Sarah Sarahson', 'label' => 'Sarah Sarahson')); $this->assertEquals($compareData, $data); $data = ContactAutoCompleteUtil::getByPartialName('xa', 5); $compareData = array(); $this->assertEquals($compareData, $data); $data = ContactAutoCompleteUtil::getByPartialName('s', 1); $compareData = array(array('id' => $data[0]['id'], 'value' => 'Sally Sallyson', 'label' => 'Sally Sallyson')); $this->assertEquals($compareData, $data); $data = ModelAutoCompleteUtil::getByPartialName('Account', 'rab', 5); $compareData = array(array('id' => $data[0]['id'], 'value' => 'Rabbit Systems', 'label' => 'Rabbit Systems'), array('id' => $data[1]['id'], 'value' => 'Rabid Technology', 'label' => 'Rabid Technology')); $this->assertEquals($compareData, $data); }
public function actionAutoCompleteGroupsAndUsers($term) { $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('autoCompleteListPageSize', get_class($this->getModule())); $groups = ModelAutoCompleteUtil::getByPartialName('Group', $term, $pageSize); $users = UserSearch::getUsersByPartialFullNameOrAnyEmailAddress($term, $pageSize, null); $autoCompleteResults = array(); foreach ($groups as $group) { $autoCompleteResults[] = array('id' => PushDashboardUtil::GROUP_PREFIX . $group['id'], 'name' => $group['value']); } foreach ($users as $user) { $autoCompleteResults[] = array('id' => PushDashboardUtil::USER_PREFIX . $user->id, 'name' => MultipleContactsForMeetingElement::renderHtmlContentLabelFromUserAndKeyword($user, $term)); } echo CJSON::encode($autoCompleteResults); }