/**
  * Get the configuration that should be used for the current selector
  * @param	object	(optional) current running test 
  * @return	ilCharSelectorConfig
  */
 static function _getCurrentConfig(ilObjTest $a_test_obj = null)
 {
     global $ilSetting, $ilUser;
     // check configuration from administration settings
     $admin_config = new self(self::CONTEXT_ADMIN, true);
     $admin_config->setAvailability($ilSetting->get('char_selector_availability'));
     $admin_config->setDefinition($ilSetting->get('char_selector_definition'));
     if ($admin_config->getAvailability() == self::INACTIVE) {
         // a globally inactive selector can't be overwritten by users or tests
         return $admin_config;
     }
     // a test configuration is relevant for test runs
     if (isset($a_test_obj)) {
         $test_config = new self(self::CONTEXT_TEST, false);
         $test_config->setAvailability($a_test_obj->getCharSelectorAvailability());
         $test_config->setDefinition($a_test_obj->getCharSelectorDefinition());
         if ($test_config->getAvailability() != self::INHERIT) {
             // a specific test configuration has precedence over user configuration
             return $test_config;
         }
     }
     // check configuration from user settings
     $user_config = new self(self::CONTEXT_USER, true);
     $user_config->setAvailability($ilUser->getPref('char_selector_availability'));
     $user_config->setDefinition($ilUser->getPref('char_selector_definition'));
     if ($user_config->getAvailability() != self::INHERIT) {
         // take user specific config
         return $user_config;
     } else {
         // take admin config as default
         return $admin_config;
     }
 }