protected static function makeModelClassNamesAndSearchAttributeData($partialTerm, User $user, $scopeData) { assert('is_string($partialTerm)'); assert('$user->id > 0'); assert('$scopeData == null || is_array($scopeData)'); $modelClassNamesAndSearchAttributeData = array(); $modelNamesAndLabels = WorkflownQueuesSearchForm::getInQueueSearchableModelNamesAndLabels(); foreach ($modelNamesAndLabels as $modelClassName => $notUsed) { $moduleClassName = $modelClassName::getModuleClassName(); $module = Yii::app()->findModule($moduleClassName::getDirectoryName()); $globalSearchFormClassName = $moduleClassName::getGlobalSearchFormClassName(); if ($globalSearchFormClassName != null && RightsUtil::canUserAccessModule(get_class($module), $user) && ($scopeData == null || in_array($modelClassName, $scopeData))) { $searchAttributes = MixedTermSearchUtil::getGlobalSearchAttributeByModuleAndPartialTerm($module, $partialTerm); if (!empty($searchAttributes)) { $model = new $modelClassName(false); assert('$model instanceof RedBeanModel'); $searchForm = new $globalSearchFormClassName($model); assert('$searchForm instanceof SearchForm'); $metadataAdapter = new SearchDataProviderMetadataAdapter($searchForm, $user->id, $searchAttributes); $metadata = $metadataAdapter->getAdaptedMetadata(false); $modelClassNamesAndSearchAttributeData[$globalSearchFormClassName] = array($modelClassName => $metadata); } } } return $modelClassNamesAndSearchAttributeData; }
public function testGetInQueueSearchableModelNamesAndLabels() { $data = WorkflownQueuesSearchForm::getInQueueSearchableModelNamesAndLabels(); $this->assertTrue(isset($data['Account'])); $this->assertTrue(isset($data['Contact'])); $this->assertTrue(isset($data['Meeting'])); $this->assertTrue(isset($data['Opportunity'])); $this->assertTrue(isset($data['Product'])); $this->assertTrue(isset($data['Task'])); $this->assertTrue(isset($data['SavedWorkflow'])); }