public function getDynamicSearchAttributes()
 {
     $searchArray = SearchUtil::getDynamicSearchAttributesFromGetArray(get_class($this->model));
     if (!empty($searchArray)) {
         return $searchArray;
     } elseif ($this->model->dynamicClauses != null) {
         $searchArray = $this->model->dynamicClauses;
         return SearchUtil::getSearchAttributesFromSearchArray($searchArray);
     } else {
         return array();
     }
 }
 public function getSanitizedDynamicSearchAttributes()
 {
     $searchArray = SearchUtil::getDynamicSearchAttributesFromGetArray(get_class($this->model));
     if (!empty($searchArray)) {
         return SearchUtil::sanitizeDynamicSearchAttributesByDesignerTypeForSavingModel($this->model, $searchArray);
     } elseif ($this->model->dynamicClauses != null) {
         $searchArray = $this->model->dynamicClauses;
         return SearchUtil::getSearchAttributesFromSearchArray($searchArray);
     } else {
         return array();
     }
 }
Exemplo n.º 3
0
 /**
  * Checks if the empty values are properly converted to null when nested
  */
 public function testGetSearchAttributesFromSearchArrayWithRecursiveNullResolution()
 {
     $searchArray = array('a' => 'apple', 'b' => array('relatedModelData' => true, 'bMember' => ''), 'c' => array('relatedModelData' => true, 'd' => array('relatedModelData' => true, 'dMember' => '')));
     $testArray = array('a' => 'apple', 'b' => array('relatedModelData' => true, 'bMember' => null), 'c' => array('relatedModelData' => true, 'd' => array('relatedModelData' => true, 'dMember' => null)));
     $newArray = SearchUtil::getSearchAttributesFromSearchArray($searchArray);
     $this->assertEquals($testArray, $newArray);
 }
Exemplo n.º 4
0
 /**
  * @param string $getArrayName
  */
 public static function getDynamicSearchAttributesFromGetArray($getArrayName)
 {
     assert('is_string($getArrayName)');
     if (!empty($_GET[$getArrayName]) && isset($_GET[$getArrayName][DynamicSearchForm::DYNAMIC_NAME])) {
         $dynamicSearchAttributes = SearchUtil::getSearchAttributesFromSearchArray($_GET[$getArrayName][DynamicSearchForm::DYNAMIC_NAME]);
         if (isset($dynamicSearchAttributes[DynamicSearchForm::DYNAMIC_STRUCTURE_NAME])) {
             unset($dynamicSearchAttributes[DynamicSearchForm::DYNAMIC_STRUCTURE_NAME]);
         }
         foreach ($dynamicSearchAttributes as $key => $data) {
             if (is_string($data) && $data == 'undefined' || $data == null) {
                 unset($dynamicSearchAttributes[$key]);
             }
         }
         return $dynamicSearchAttributes;
     }
 }
 /**
  * @depends testSetAndGetMultiSelectDropDownAttribute
  */
 public function testSearchForMultiSelectDropDownAttributePlacedForAccountsModule()
 {
     //Test that the multiple select attribute can query properly for search.
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     //Create an account to test searching multiple fields on for search.
     $account = new Account();
     $this->assertEquals(1, $account->testHobbiesCstm->values->count());
     $account->name = 'my test account';
     $account->owner = Yii::app()->user->userModel;
     $customFieldValue2 = new CustomFieldValue();
     $customFieldValue2->value = 'Reading';
     $account->testHobbiesCstm->values->add($customFieldValue2);
     $this->assertTrue($account->save());
     $accountId = $account->id;
     $account = Account::getById($accountId);
     $this->assertEquals(2, $account->testHobbiesCstm->values->count());
     $this->assertContains('Writing', $account->testHobbiesCstm->values);
     $this->assertContains('Reading', $account->testHobbiesCstm->values);
     //Create a second account with different hobbies
     $account = new Account();
     //Remove the default value of 'Writing';
     $account->testHobbiesCstm->values->removeByIndex(0);
     $account->name = 'my test account2';
     $account->owner = Yii::app()->user->userModel;
     $customFieldValue1 = new CustomFieldValue();
     $customFieldValue1->value = 'Singing';
     $account->testHobbiesCstm->values->add($customFieldValue1);
     $customFieldValue2 = new CustomFieldValue();
     $customFieldValue2->value = 'Surfing';
     $account->testHobbiesCstm->values->add($customFieldValue2);
     $this->assertTrue($account->save());
     $accountId = $account->id;
     $account = Account::getById($accountId);
     $this->assertEquals(2, $account->testHobbiesCstm->values->count());
     $this->assertContains('Singing', $account->testHobbiesCstm->values);
     $this->assertContains('Surfing', $account->testHobbiesCstm->values);
     //Searching with a custom field that is not blank should not produce an errors.
     $searchPostData = array('name' => 'my test account', 'officePhone' => '', 'testHobbies' => array('values' => array(0 => '')), 'officeFax' => '');
     $modifiedSearchPostData = SearchUtil::getSearchAttributesFromSearchArray($searchPostData);
     $this->assertEquals(array('name' => 'my test account', 'officePhone' => null, 'officeFax' => null), $modifiedSearchPostData);
     $account = new Account(false);
     $searchForm = new AccountsSearchForm($account);
     $metadataAdapter = new SearchDataProviderMetadataAdapter($searchForm, $super->id, $modifiedSearchPostData);
     $searchAttributeData = $metadataAdapter->getAdaptedMetadata();
     //Make sure the search params are empty
     $compareClauses = array(1 => array('attributeName' => 'name', 'operatorType' => 'startsWith', 'value' => 'my test account'));
     $compareStructure = '1';
     $this->assertEquals($compareClauses, $searchAttributeData['clauses']);
     $this->assertEquals($compareStructure, $searchAttributeData['structure']);
     //Run search and make sure the data returned matches how many total accounts are available.
     $dataProvider = new RedBeanModelDataProvider('Account', null, false, $searchAttributeData);
     $data = $dataProvider->getData();
     $this->assertEquals(2, count($data));
 }
 protected function resolveAndSanitizeDynamicSearchAttributesByPostData($postData, DynamicSearchForm $searchForm)
 {
     if (isset($postData['dynamicClauses'])) {
         $dynamicSearchAttributes = SearchUtil::getSearchAttributesFromSearchArray($postData['dynamicClauses']);
         $sanitizedDynamicSearchAttributes = SearchUtil::sanitizeDynamicSearchAttributesByDesignerTypeForSavingModel($searchForm, $dynamicSearchAttributes);
         $postData['dynamicClauses'] = $sanitizedDynamicSearchAttributes;
     }
     return $postData;
 }