/** * @param string $moduleName * @param bool $forceEmptyResults * Return an empty listView * @return View */ public function getListView($moduleName, $forceEmptyResults = false) { assert('is_string($moduleName)'); $sourceData = GetUtil::getData(); $pageSize = $this->pageSize; $module = Yii::app()->findModule($moduleName); $searchFormClassName = $module::getGlobalSearchFormClassName(); $modelClassName = $module::getPrimaryModelName(); $model = new $modelClassName(false); $searchForm = new $searchFormClassName($model); $sanitizedSearchAttributes = MixedTermSearchUtil::getGlobalSearchAttributeByModuleAndPartialTerm($module, $this->term); $metadataAdapter = new SearchDataProviderMetadataAdapter($searchForm, $this->user->id, $sanitizedSearchAttributes); $listViewClassName = $module::getPluralCamelCasedName() . 'ForMixedModelsSearchListView'; $sortAttribute = SearchUtil::resolveSortAttributeFromArray($modelClassName, $sourceData); $sortDescending = SearchUtil::resolveSortDescendingFromArray($modelClassName, $sourceData); if ($forceEmptyResults) { $dataProviderClass = 'EmptyRedBeanModelDataProvider'; $emptyText = ''; } else { $dataProviderClass = 'RedBeanModelDataProvider'; $emptyText = null; } $dataProvider = RedBeanModelDataProviderUtil::makeDataProvider($metadataAdapter->getAdaptedMetadata(false), $modelClassName, $dataProviderClass, $sortAttribute, $sortDescending, $pageSize, $module->getStateMetadataAdapterClassName()); $listView = new $listViewClassName('default', $module->getId(), $modelClassName, $dataProvider, GetUtil::resolveSelectedIdsFromGet(), '-' . $moduleName, array('route' => '', 'class' => 'SimpleListLinkPager', 'firstPageLabel' => '<span>first</span>', 'prevPageLabel' => '<span>previous</span>', 'nextPageLabel' => '<span>next</span>', 'lastPageLabel' => '<span>last</span>')); $listView->setRowsAreSelectable(false); $listView->setEmptyText($emptyText); return $listView; }
protected function makeDataProviderBySearchAttributeData($searchAttributeData) { assert('is_array($searchAttributeData)'); $sortAttribute = SearchUtil::resolveSortAttributeFromArray($this->modelClassName, $_GET); $sortDescending = SearchUtil::resolveSortDescendingFromArray($this->modelClassName, $_GET); if ($sortAttribute === null) { $sortAttribute = $this->getSortAttributeForDataProvider(); $sortDescending = $this->resolveSortDescendingForDataProvider(); } return new RedBeanModelDataProvider($this->modelClassName, $sortAttribute, (bool) $sortDescending, $searchAttributeData, $this->resolveConfigForDataProvider()); }
public function testIsSortDescending() { $sortDescending = SearchUtil::isSortDescending('name.desc'); $this->assertTrue($sortDescending); $sortDescending = SearchUtil::isSortDescending('name'); $this->assertFalse($sortDescending); $sortDescending = SearchUtil::isSortDescending('name.asc'); $this->assertFalse($sortDescending); $_GET['testing_sort'] = 'name.desc'; $sortDescending = SearchUtil::resolveSortDescendingFromArray('testing', $_GET); $this->assertTrue($sortDescending); $_GET['testing_sort'] = 'name'; $sortDescending = SearchUtil::resolveSortDescendingFromArray('testing', $_GET); $this->assertFalse($sortDescending); $_GET['testing_sort'] = 'name.asc'; $sortDescending = SearchUtil::resolveSortDescendingFromArray('testing', $_GET); $this->assertFalse($sortDescending); }
public function resolveSortDescendingFromSourceData($name) { assert('is_string($name)'); $sortDescending = SearchUtil::resolveSortDescendingFromArray($name, $this->getSourceData()); if (!isset($sortDescending)) { if (!empty($this->model->sortDescending)) { $sortDescending = true; } else { $sortDescending = false; } } return $sortDescending; }