protected static function findGlobalSearchScopingModuleNamesAndLabelsDataByUser(User $user) { assert('$user->id > 0'); $moduleNamesAndLabels = array(); $modules = Module::getModuleObjects(); foreach ($modules as $module) { $globalSearchFormClassName = $module::getGlobalSearchFormClassName(); if (GlobalSearchUtil::resolveIfModuleShouldBeGloballySearched($module) && $globalSearchFormClassName != null && RightsUtil::canUserAccessModule(get_class($module), $user)) { $moduleNamesAndLabels[$module->getName()] = $module::getModuleLabelByTypeAndLanguage('Plural'); } } return $moduleNamesAndLabels; }
protected static function makeModelClassNamesAndSearchAttributeData($partialTerm, User $user, $scopeData) { assert('is_string($partialTerm)'); assert('$user->id > 0'); assert('$scopeData == null || is_array($scopeData)'); $modelClassNamesAndSearchAttributeData = array(); $modules = Module::getModuleObjects(); foreach ($modules as $module) { $globalSearchFormClassName = $module::getGlobalSearchFormClassName(); if (GlobalSearchUtil::resolveIfModuleShouldBeGloballySearched($module) && $globalSearchFormClassName != null && RightsUtil::canUserAccessModule(get_class($module), $user) && ($scopeData == null || in_array($module->getName(), $scopeData))) { $modelClassName = $module::getPrimaryModelName(); $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); $stateMetadataAdapterClassName = $module::getStateMetadataAdapterClassName(); if ($stateMetadataAdapterClassName != null) { $stateMetadataAdapter = new $stateMetadataAdapterClassName($metadata); $metadata = $stateMetadataAdapter->getAdaptedDataProviderMetadata(); } $modelClassNamesAndSearchAttributeData[$globalSearchFormClassName] = array($modelClassName => $metadata); } } } return $modelClassNamesAndSearchAttributeData; }