예제 #1
0
/**
 * Return user config option value
 *
 * @access public
 * @param string $name Option name
 * @param mixed $default Default value that is returned in case of any error
 * @param int $user_id User Id, if null logged user is taken
 * @return mixed
 */
function user_config_option($option, $default = null, $user_id = null)
{
    if (is_null($user_id)) {
        if (logged_user() instanceof User) {
            $user_id = logged_user()->getId();
        } else {
            if (is_null($default)) {
                $def_value = null;
                // check the cache for the option default value
                if (GlobalCache::isAvailable()) {
                    $def_value = GlobalCache::get('user_config_option_def_' . $option, $success);
                    if ($success) {
                        return $def_value;
                    }
                }
                // default value not found in cache
                $def_value = UserWsConfigOptions::getDefaultOptionValue($option, $default);
                if (GlobalCache::isAvailable()) {
                    GlobalCache::update('user_config_option_def_' . $option, $def_value);
                }
                return $def_value;
            } else {
                return $default;
            }
        }
    }
    // check the cache for the option value
    if (GlobalCache::isAvailable()) {
        $option_value = GlobalCache::get('user_config_option_' . $user_id . '_' . $option, $success);
        if ($success) {
            return $option_value;
        }
    }
    // default value not found in cache
    $option_value = UserWsConfigOptions::getOptionValue($option, $user_id, $default);
    if (GlobalCache::isAvailable()) {
        GlobalCache::update('user_config_option_' . $user_id . '_' . $option, $option_value);
    }
    return $option_value;
}