public function testResolveFilteredByFromSourceData() { $searchModel = new AFilteredBySearchFormTestModel(new A()); $dataCollection = new SearchAttributesDataCollection($searchModel); $dataCollection->resolveFilteredByFromSourceData(); $this->assertEmpty($searchModel->filteredBy); $_GET['AFilteredBySearchFormTestModel']['filteredBy'] = 'all'; $dataCollection->resolveFilteredByFromSourceData(); $this->assertEquals('all', $searchModel->filteredBy); //Since the sourceDate dont have the filteredBy, no new value will be set $dataCollection->setSourceData(array()); $dataCollection->resolveFilteredByFromSourceData(); $this->assertEquals('all', $searchModel->filteredBy); $dataCollection->setSourceData(array('AFilteredBySearchFormTestModel' => array('filteredBy' => 'none'))); $dataCollection->resolveFilteredByFromSourceData(); $this->assertEquals('none', $searchModel->filteredBy); }
/** * Utilizes information from the dataCollection object to * make a RedBeanDataProvider. Either looks at saved search information or params in the $_GET array. * variables: * modelName_sort * modelName * where modelName is Account for example. * Typically utilized by a listView action. */ public function makeRedBeanDataProviderByDataCollection($searchModel, $pageSize, $stateMetadataAdapterClassName = null, $dataCollection = null) { assert('is_int($pageSize) || $pageSize == null'); assert('$stateMetadataAdapterClassName == null || is_string($stateMetadataAdapterClassName)'); assert('$dataCollection instanceof SearchAttributesDataCollection || $dataCollection == null'); $listModelClassName = get_class($searchModel->getModel()); if ($dataCollection == null) { $dataCollection = new SearchAttributesDataCollection($searchModel); } $searchAttributes = $dataCollection->resolveSearchAttributesFromSourceData(); $dataCollection->resolveAnyMixedAttributesScopeForSearchModelFromSourceData(); $dataCollection->resolveSelectedListAttributesForSearchModelFromSourceData(); $dataCollection->resolveFilterByStarredFromSourceData(); $dataCollection->resolveFilteredByFromSourceData(); $dataCollection->resolveKanbanBoardOptionsForSearchModelFromSourceData(); $sanitizedSearchAttributes = GetUtil::sanitizePostByDesignerTypeForSavingModel($searchModel, $searchAttributes); $sortAttribute = $dataCollection->resolveSortAttributeFromSourceData($listModelClassName); $sortDescending = $dataCollection->resolveSortDescendingFromSourceData($listModelClassName); $metadataAdapter = new SearchDataProviderMetadataAdapter($searchModel, Yii::app()->user->userModel->id, $sanitizedSearchAttributes); $metadata = static::resolveDynamicSearchMetadata($searchModel, $metadataAdapter->getAdaptedMetadata(), $dataCollection); $this->resolveKanbanBoardMetadataBeforeMakingDataProvider($searchModel, $metadata); $this->resolveFilteredByMetadataBeforeMakingDataProvider($searchModel, $metadata); $this->resolveMetadataBeforeMakingDataProvider($metadata); $dataProviderClassName = Yii::app()->custom->resolveDataProviderClassNameForControllerBySearchModel($searchModel); return RedBeanModelDataProviderUtil::makeDataProvider($metadata, $listModelClassName, $dataProviderClassName, $sortAttribute, $sortDescending, $pageSize, $stateMetadataAdapterClassName); }