fix: allow disabling update server once enabled #577
@@ -82,6 +82,12 @@ func (c *UpdateStreamConfig) GetCustomStreams() []StreamDef {
|
||||
return streams
|
||||
}
|
||||
|
||||
// DeleteRepoConfig removes the repo-level update stream config override.
|
||||
func DeleteRepoConfig(ctx context.Context, repoID int64) error {
|
||||
_, err := db.GetEngine(ctx).Where("repo_id = ?", repoID).Delete(new(UpdateStreamConfig))
|
||||
return err
|
||||
}
|
||||
|
||||
// GetActiveStreams returns the effective streams for this config.
|
||||
func (c *UpdateStreamConfig) GetActiveStreams() []StreamDef {
|
||||
if c.StreamMode == "custom" {
|
||||
|
||||
@@ -34,27 +34,36 @@ func LicensingSettingsPost(ctx *context.Context) {
|
||||
updatePlatform = "joomla"
|
||||
}
|
||||
|
||||
updateCfg := &licenses_model.UpdateStreamConfig{
|
||||
OwnerID: repo.OwnerID,
|
||||
RepoID: repo.ID,
|
||||
Platform: updatePlatform,
|
||||
LicensingEnabled: ctx.FormString("enable_licensing") == "on",
|
||||
RequireKey: ctx.FormString("require_update_key") == "on",
|
||||
DownloadGating: ctx.FormString("download_gating"),
|
||||
SupportURL: ctx.FormString("support_url"),
|
||||
ExtensionName: ctx.FormString("extension_name"),
|
||||
DisplayName: ctx.FormString("display_name"),
|
||||
ExtensionType: ctx.FormString("extension_type"),
|
||||
TargetVersion: ctx.FormString("target_version"),
|
||||
Maintainer: ctx.FormString("maintainer"),
|
||||
PHPMinimum: ctx.FormString("php_minimum"),
|
||||
StreamMode: "joomla",
|
||||
}
|
||||
enabled := ctx.FormString("enable_licensing") == "on"
|
||||
|
||||
if err := licenses_model.SaveConfig(ctx, updateCfg); err != nil {
|
||||
log.Error("SaveConfig: %v", err)
|
||||
ctx.ServerError("SaveConfig", err)
|
||||
return
|
||||
if !enabled {
|
||||
// Remove repo-level override so org config takes effect
|
||||
if err := licenses_model.DeleteRepoConfig(ctx, repo.ID); err != nil {
|
||||
log.Error("DeleteRepoConfig: %v", err)
|
||||
}
|
||||
} else {
|
||||
updateCfg := &licenses_model.UpdateStreamConfig{
|
||||
OwnerID: repo.OwnerID,
|
||||
RepoID: repo.ID,
|
||||
Platform: updatePlatform,
|
||||
LicensingEnabled: true,
|
||||
RequireKey: ctx.FormString("require_update_key") == "on",
|
||||
DownloadGating: ctx.FormString("download_gating"),
|
||||
SupportURL: ctx.FormString("support_url"),
|
||||
ExtensionName: ctx.FormString("extension_name"),
|
||||
DisplayName: ctx.FormString("display_name"),
|
||||
ExtensionType: ctx.FormString("extension_type"),
|
||||
TargetVersion: ctx.FormString("target_version"),
|
||||
Maintainer: ctx.FormString("maintainer"),
|
||||
PHPMinimum: ctx.FormString("php_minimum"),
|
||||
StreamMode: "joomla",
|
||||
}
|
||||
|
||||
if err := licenses_model.SaveConfig(ctx, updateCfg); err != nil {
|
||||
log.Error("SaveConfig: %v", err)
|
||||
ctx.ServerError("SaveConfig", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success"))
|
||||
|
||||
@@ -675,29 +675,37 @@ func handleSettingsPostAdvanced(ctx *context.Context) {
|
||||
return
|
||||
}
|
||||
}
|
||||
// Save update server platform and require-key settings.
|
||||
updatePlatform := form.UpdatePlatform
|
||||
if updatePlatform == "" {
|
||||
updatePlatform = "joomla"
|
||||
}
|
||||
updateCfg := &licenses_model.UpdateStreamConfig{
|
||||
OwnerID: repo.OwnerID,
|
||||
RepoID: repo.ID,
|
||||
Platform: updatePlatform,
|
||||
LicensingEnabled: form.EnableLicensing,
|
||||
RequireKey: form.RequireUpdateKey,
|
||||
DownloadGating: form.DownloadGating,
|
||||
SupportURL: form.SupportURL,
|
||||
ExtensionName: form.ExtensionName,
|
||||
DisplayName: form.DisplayName,
|
||||
ExtensionType: form.ExtensionType,
|
||||
TargetVersion: form.TargetVersion,
|
||||
Maintainer: form.Maintainer,
|
||||
PHPMinimum: form.PHPMinimum,
|
||||
StreamMode: "joomla", // inherit org default
|
||||
}
|
||||
if err := licenses_model.SaveConfig(ctx, updateCfg); err != nil {
|
||||
log.Error("SaveConfig: %v", err)
|
||||
// Save update server settings. If disabled, delete repo-level config
|
||||
// so it falls through to org defaults cleanly.
|
||||
if !form.EnableLicensing {
|
||||
// Remove repo-level override so org config takes effect
|
||||
if err := licenses_model.DeleteRepoConfig(ctx, repo.ID); err != nil {
|
||||
log.Error("DeleteRepoConfig: %v", err)
|
||||
}
|
||||
} else {
|
||||
updatePlatform := form.UpdatePlatform
|
||||
if updatePlatform == "" {
|
||||
updatePlatform = "joomla"
|
||||
}
|
||||
updateCfg := &licenses_model.UpdateStreamConfig{
|
||||
OwnerID: repo.OwnerID,
|
||||
RepoID: repo.ID,
|
||||
Platform: updatePlatform,
|
||||
LicensingEnabled: form.EnableLicensing,
|
||||
RequireKey: form.RequireUpdateKey,
|
||||
DownloadGating: form.DownloadGating,
|
||||
SupportURL: form.SupportURL,
|
||||
ExtensionName: form.ExtensionName,
|
||||
DisplayName: form.DisplayName,
|
||||
ExtensionType: form.ExtensionType,
|
||||
TargetVersion: form.TargetVersion,
|
||||
Maintainer: form.Maintainer,
|
||||
PHPMinimum: form.PHPMinimum,
|
||||
StreamMode: "joomla",
|
||||
}
|
||||
if err := licenses_model.SaveConfig(ctx, updateCfg); err != nil {
|
||||
log.Error("SaveConfig: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
log.Trace("Repository advanced settings updated: %s/%s", ctx.Repo.Owner.Name, repo.Name)
|
||||
|
||||
Reference in New Issue
Block a user