protected function renderSearchView()
 {
     $moduleNamesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser(Yii::app()->user->userModel);
     $sourceUrl = Yii::app()->createUrl('zurmo/default/globallist');
     GlobalSearchUtil::resolveModuleNamesAndLabelsDataWithAllOption($moduleNamesAndLabels);
     $searchView = new MixedModelsSearchView($moduleNamesAndLabels, $sourceUrl, $this->term, $this->scopeData);
     return $searchView->render();
 }
 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 resolveItemsAsItemsForMobile(&$items, &$useMinimalDynamicLabelMbMenu, $controller = null)
 {
     $useMinimalDynamicLabelMbMenu = true;
     static::$showRecentlyViewed = false;
     $controller = $controller ? $controller : Yii::app()->request->controller;
     $shortcutsCreateMenuItems = MenuUtil::getAccessibleShortcutsCreateMenuByCurrentUser();
     static::resolveShortcutsCreateMenuItemsForMobile($shortcutsCreateMenuItems);
     $shortcutsCreateMenuView = new MobileShortcutsCreateMenuView($controller->getId(), $controller->getModule()->getId(), $shortcutsCreateMenuItems);
     $moduleNamesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser(Yii::app()->user->userModel);
     $sourceUrl = Yii::app()->createUrl('zurmo/default/globalSearchAutoComplete');
     $globalSearchView = new MobileGlobalSearchView($moduleNamesAndLabels, $sourceUrl);
     $recentlyViewed = static::makeRecentlyViewedView();
     $recentlyViewedMenu = $recentlyViewed->renderMenu();
     $searchItem = array(array('label' => '', 'dynamicLabelContent' => $globalSearchView->render(), 'itemOptions' => array('id' => 'search')));
     $shortcutsItems = array(array('label' => '', 'dynamicLabelContent' => $shortcutsCreateMenuView->render(), 'itemOptions' => array('id' => 'shortcuts')));
     $recentlyViewedItems = array(array('label' => '', 'dynamicLabelContent' => MobileHtml::renderFlyoutTrigger('Recently Viewed'), 'itemOptions' => array('id' => 'recently-viewed'), 'items' => $recentlyViewedMenu ? $recentlyViewedMenu : null));
     $items = CMap::mergeArray($searchItem, $items, $shortcutsItems, $recentlyViewedItems);
 }
 /**
  * makeViews
  * @return  array   moduleName => listView
  */
 private function makeViews()
 {
     $globalSearchModuleNamesAndLabelsData = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser($this->user);
     foreach ($globalSearchModuleNamesAndLabelsData as $moduleName => $label) {
         $titleView = new TitleBarView($label, null, 1);
         $iconClassName = Yii::app()->findModule($moduleName)->getSingularCamelCasedName();
         $titleView->setCssClasses(array($iconClassName));
         $this->views['titleBar-' . $moduleName] = $titleView;
         $this->views[$moduleName] = $this->getListView($moduleName, true);
     }
 }
 /**
  * @depends testGetGlobalSearchScopingModuleNamesAndLabelsDataByUser
  */
 public function testGetGlobalSearchScopingModuleNamesAndLabelsDataByUserForRegularUser()
 {
     Yii::app()->user->userModel = User::getByUsername('super');
     $billy = UserTestHelper::createBasicUser('Billy');
     $scopeModulesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser($billy);
     $compareData = array();
     $this->assertEquals($compareData, $scopeModulesAndLabels);
     $scopeModulesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser($billy);
     //Now add rights for billy to the AccountsModule.
     $billy->setRight('AccountsModule', AccountsModule::RIGHT_ACCESS_ACCOUNTS);
     $this->assertTrue($billy->save());
     //At this point because the data is was cleared after billy saved, it should show Accounts.
     $scopeModulesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser($billy);
     $compareData = array('accounts' => 'Accounts');
     $this->assertEquals($compareData, $scopeModulesAndLabels);
 }
 public function actionInQueuesAutoComplete($term, $formClassName)
 {
     $scopeData = GlobalSearchUtil::resolveGlobalSearchScopeFromGetData($_GET[$formClassName], 'anyMixedAttributesScope');
     $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('autoCompleteListPageSize', get_class($this->getModule()));
     $autoCompleteResults = WorkflowInQueuesModelAutoCompleteUtil::getGlobalSearchResultsByPartialTerm($term, $pageSize, Yii::app()->user->userModel, $scopeData);
     echo CJSON::encode($autoCompleteResults);
 }
 protected static function makeHeaderView(CController $controller)
 {
     $headerView = null;
     $settingsMenuItems = MenuUtil::getOrderedAccessibleHeaderMenuForCurrentUser();
     $settingsMenuItems = static::resolveHeaderMenuItemsForMobile($settingsMenuItems);
     $userMenuItems = static::getAndResolveUserMenuItemsForHeader();
     $applicationName = ZurmoConfigurationUtil::getByModuleName('ZurmoModule', 'applicationName');
     $shortcutsCreateMenuItems = MenuUtil::getAccessibleShortcutsCreateMenuByCurrentUser();
     $moduleNamesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser(Yii::app()->user->userModel);
     $sourceUrl = Yii::app()->createUrl('zurmo/default/globalSearchAutoComplete');
     GlobalSearchUtil::resolveModuleNamesAndLabelsDataWithAllOption($moduleNamesAndLabels);
     $headerView = new HeaderView($settingsMenuItems, $userMenuItems, $shortcutsCreateMenuItems, $moduleNamesAndLabels, $sourceUrl, $applicationName);
     $headerView->setCssClasses(array('HeaderView'));
     return $headerView;
 }
 public function actionGlobalSearchAutoComplete($term)
 {
     $scopeData = GlobalSearchUtil::resolveGlobalSearchScopeFromGetData($_GET);
     $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('autoCompleteListPageSize', get_class($this->getModule()));
     $autoCompleteResults = ModelAutoCompleteUtil::getGlobalSearchResultsByPartialTerm($term, $pageSize, Yii::app()->user->userModel, $scopeData);
     $autoCompleteResults = array_merge($autoCompleteResults, array(array('href' => Yii::app()->createUrl('/zurmo/default/globallist', array('MixedModelsSearchForm' => array('term' => $_GET['term'], 'anyMixedAttributesScope' => ArrayUtil::getArrayValue(GetUtil::getData(), 'globalSearchScope')))), 'label' => 'All results', 'iconClass' => 'autocomplete-icon-AllResults')));
     echo CJSON::encode($autoCompleteResults);
 }
 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;
 }