/**
  * @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;
 }