/**
  * get by id
  *
  * @param string $_id
  * @return Tinebase_Record_RecordSet
  * @throws  Tinebase_Exception_AccessDenied
  */
 public function get($_id)
 {
     $configRecord = $this->_configBackend->get($_id);
     $app = Tinebase_Application::getInstance()->getApplicationById($configRecord->application_id);
     if (!Tinebase_Core::getUser()->hasRight($app->name, 'admin')) {
         throw new Tinebase_Exception_AccessDenied("You do not have admin rights for {$app->name}");
     }
     $appConfigObject = Tinebase_Config::getAppConfig($app->name);
     $definition = $appConfigObject->getDefinition($configRecord->name);
     $this->_mergeDefinition($configRecord, $definition);
     $configRecord->source = Tinebase_Model_Config::SOURCE_DB;
     return $configRecord;
 }
 /**
  * update to 8.15
  *
  * move keyFieldConfig defaults to config files
  */
 public function update_14()
 {
     // either put default to DB or delete form DB
     $cb = new Tinebase_Backend_Sql(array('modelName' => 'Tinebase_Model_Config', 'tableName' => 'config'));
     $configRecords = $cb->getAll();
     // iterate installed apps
     foreach (Tinebase_Application::getInstance()->getApplications() as $application) {
         try {
             // get config
             $config = Tinebase_Config::getAppConfig($application->name);
             if (!method_exists($config, 'getProperties')) {
                 continue;
             }
             foreach ($config->getProperties() as $name => $property) {
                 if ($property['type'] == Tinebase_Config_Abstract::TYPE_KEYFIELD_CONFIG) {
                     $dbConfig = $config->get($name);
                     $dbConfigRecords = $dbConfig['records']->toArray();
                     $defaultRecords = isset($property['default']['records']) ? $property['default']['records'] : null;
                     if ($defaultRecords && json_encode($dbConfigRecords) != json_encode($defaultRecords)) {
                         // set default value
                         if (array_key_exists('default', $property['default'])) {
                             $dbConfig->default = $property['default']['default'];
                             $config->set($name, $dbConfig->toArray());
                         }
                     } else {
                         // delete default config
                         $configRecord = $configRecords->filter('application_id', $application->getId())->filter('name', $name)->getFirstRecord();
                         if ($configRecord) {
                             $cb->delete($configRecord->getId());
                         }
                     }
                 }
             }
         } catch (Exception $e) {
             Setup_Core::getLogger()->err(__METHOD__ . '::' . __LINE__ . ' could not migrate keyFieldConfig ' . $e);
         }
     }
     $this->setApplicationVersion('Tinebase', '8.15');
 }
 /**
  * save settings
  * 
  * @param array $_settings
  * @return void
  */
 public function saveConfigSettings($_settings)
 {
     // only admins are allowed to do this
     $this->checkRight(Tinebase_Acl_Rights::ADMIN);
     $appConfig = Tinebase_Config::getAppConfig($this->_applicationName);
     if ($appConfig !== NULL) {
         $appConfig->set(Tinebase_Config::APPDEFAULTS, $_settings);
     }
 }
 /**
  * return translated Keyfield string
  *
  * @param String $_property
  * @param String $_keyfield
  * @param String $_application
  * @return string
  */
 protected function _getResolvedKeyfield($_property, $_keyfield, $_application)
 {
     $i18nApplication = Tinebase_Translation::getTranslation($_application);
     $config = Tinebase_Config::getAppConfig($_application);
     $result = $config->get($_keyfield)->records->getById($_property);
     return isset($result->value) ? $i18nApplication->translate($result->value) : $_property;
 }