/**
  * tests if the Timeaccount Filter is there
  */
 public function testTimeaccountfilterWithoutAdmin()
 {
     $this->_removeRoleRight('Timetracker', Tinebase_Acl_Rights::ADMIN);
     $this->assertFalse(Tinebase_Core::getUser()->hasRight('Timetracker', Tinebase_Acl_Rights::ADMIN));
     $config = Tinebase_ModelConfiguration::getFrontendConfigForModels(array('Timetracker_Model_Timesheet'));
     $this->assertTrue(isset($config['Timesheet']['filterModel']['timeaccount_id']));
 }
 /**
  * returns model configurations for application starter
  *
  * @return array
  */
 public function getModelsConfiguration()
 {
     $ret = NULL;
     if ($this->_configuredModels) {
         return Tinebase_ModelConfiguration::getFrontendConfigForModels($this->_configuredModels, $this->_applicationName);
     }
     return $ret;
 }
 /**
  * Returns registry data of all applications current user has access to
  * @see Tinebase_Application_Json_Abstract
  *
  * @return mixed array 'variable name' => 'data'
  */
 public function getAllRegistryData()
 {
     $registryData = array();
     if (Tinebase_Core::getUser()) {
         $userApplications = Tinebase_Core::getUser()->getApplications(TRUE);
         $clientConfig = Tinebase_Config::getInstance()->getClientRegistryConfig();
         if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) {
             /** @noinspection PhpUndefinedFieldInspection */
             Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' User applications to fetch registry for: ' . print_r($userApplications->name, TRUE));
         }
         /** @noinspection PhpUndefinedFieldInspection */
         if (!in_array('Tinebase', $userApplications->name)) {
             Tinebase_Core::getLogger()->err(__METHOD__ . '::' . __LINE__ . ' User has no permissions to run Tinebase.');
             $this->logout();
             throw new Tinebase_Exception_AccessDenied('User has no permissions to run Tinebase');
         }
         foreach ($userApplications as $application) {
             $appRegistry = array();
             $appRegistry['rights'] = Tinebase_Core::getUser()->getRights($application->name);
             $appRegistry['config'] = isset($clientConfig[$application->name]) ? $clientConfig[$application->name]->toArray() : array();
             // @todo do we need this for all apps?
             $exportDefinitions = Tinebase_ImportExportDefinition::getInstance()->getExportDefinitionsForApplication($application);
             $appRegistry['exportDefinitions'] = array('results' => $exportDefinitions->toArray(), 'totalcount' => count($exportDefinitions));
             $customfields = Tinebase_CustomField::getInstance()->getCustomFieldsForApplication($application);
             Tinebase_CustomField::getInstance()->resolveConfigGrants($customfields);
             $appRegistry['customfields'] = $customfields->toArray();
             // add preferences for app
             try {
                 $prefRegistry = $this->_getAppPreferencesForRegistry($application);
                 $appRegistry = array_merge_recursive($appRegistry, $prefRegistry);
             } catch (Tinebase_Exception_AccessDenied $tead) {
                 // do not add prefs if user has no run right
             }
             $customAppRegistry = $this->_getCustomAppRegistry($application);
             if (empty($customAppRegistry)) {
                 // TODO always get this from app controller (and remove from _getCustomAppRegistry)
                 $appController = Tinebase_Core::getApplicationInstance($application->name);
                 $models = $appController->getModels();
                 $appRegistry['models'] = Tinebase_ModelConfiguration::getFrontendConfigForModels($models);
                 $appRegistry['defaultModel'] = $appController->getDefaultModel();
             } else {
                 $appRegistry = array_merge_recursive($appRegistry, $customAppRegistry);
             }
             $registryData[$application->name] = $appRegistry;
         }
     } else {
         $registryData['Tinebase'] = $this->getRegistryData();
     }
     return $registryData;
 }