From 4a538b51f20ec283f008a8f0d7951700761b6a3c Mon Sep 17 00:00:00 2001 From: Andre Klapper Date: Tue, 25 Nov 2025 22:22:16 +0100 Subject: [PATCH] Allow getting the corresponding application for config options Summary: Introduce `getApplicationClassName()` in PhabricatorApplicationConfigOptions returning null, overwritten in child classes to return the corresponding application class when providing config options specific to some application. Note that PhabricatorDiffusionConfigOptions and PhabricatorRepositoryConfigOptions both return Diffusion, so duplicate values are possible. Refs T16351 Test Plan: None; it's an additional function to be used by future code. Reviewers: O1 Blessed Committers, avivey Reviewed By: O1 Blessed Committers, avivey Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno Maniphest Tasks: T16351 Differential Revision: https://we.phorge.it/D26526 --- .../audit/config/PhabricatorAuditConfigOptions.php | 4 ++++ .../option/PhabricatorApplicationConfigOptions.php | 11 +++++++++++ .../config/PhabricatorDifferentialConfigOptions.php | 4 ++++ .../config/PhabricatorDiffusionConfigOptions.php | 4 ++++ .../feed/config/PhabricatorFeedConfigOptions.php | 4 ++++ .../files/config/PhabricatorFilesConfigOptions.php | 4 ++++ .../config/PhabricatorManiphestConfigOptions.php | 4 ++++ .../owners/config/PhabricatorOwnersConfigOptions.php | 4 ++++ .../people/config/PhabricatorUserConfigOptions.php | 4 ++++ .../phurl/config/PhabricatorPhurlConfigOptions.php | 4 ++++ .../config/PhabricatorProjectConfigOptions.php | 4 ++++ .../config/PhabricatorRepositoryConfigOptions.php | 4 ++++ 12 files changed, 55 insertions(+) diff --git a/src/applications/audit/config/PhabricatorAuditConfigOptions.php b/src/applications/audit/config/PhabricatorAuditConfigOptions.php index f2710f3e11..55afeb2ba6 100644 --- a/src/applications/audit/config/PhabricatorAuditConfigOptions.php +++ b/src/applications/audit/config/PhabricatorAuditConfigOptions.php @@ -19,6 +19,10 @@ final class PhabricatorAuditConfigOptions return 'apps'; } + public function getApplicationClassName() { + return PhabricatorAuditApplication::class; + } + public function getOptions() { return array( $this->newOption( diff --git a/src/applications/config/option/PhabricatorApplicationConfigOptions.php b/src/applications/config/option/PhabricatorApplicationConfigOptions.php index 89e15fac54..8c421958e8 100644 --- a/src/applications/config/option/PhabricatorApplicationConfigOptions.php +++ b/src/applications/config/option/PhabricatorApplicationConfigOptions.php @@ -14,6 +14,17 @@ abstract class PhabricatorApplicationConfigOptions extends Phobject { return 'fa-sliders'; } + /** + * Get corresponding application class for configuration options. Child + * classes returning a classname should also have getGroup() return 'apps'. + * + * @return class-string|null Application class name, or null if the config + * options are not related to a specific application. + */ + public function getApplicationClassName() { + return null; + } + public function validateOption(PhabricatorConfigOption $option, $value) { if ($value === $option->getDefault()) { return; diff --git a/src/applications/differential/config/PhabricatorDifferentialConfigOptions.php b/src/applications/differential/config/PhabricatorDifferentialConfigOptions.php index 8c33bd5fad..dc317b1ae1 100644 --- a/src/applications/differential/config/PhabricatorDifferentialConfigOptions.php +++ b/src/applications/differential/config/PhabricatorDifferentialConfigOptions.php @@ -19,6 +19,10 @@ final class PhabricatorDifferentialConfigOptions return 'apps'; } + public function getApplicationClassName() { + return PhabricatorDifferentialApplication::class; + } + public function getOptions() { $caches_href = PhabricatorEnv::getDoclink('Managing Caches'); diff --git a/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php b/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php index d744b19b51..8e1a3f63f9 100644 --- a/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php +++ b/src/applications/diffusion/config/PhabricatorDiffusionConfigOptions.php @@ -19,6 +19,10 @@ final class PhabricatorDiffusionConfigOptions return 'apps'; } + public function getApplicationClassName() { + return PhabricatorDiffusionApplication::class; + } + public function getOptions() { $custom_field_type = 'custom:PhabricatorCustomFieldConfigOptionType'; diff --git a/src/applications/feed/config/PhabricatorFeedConfigOptions.php b/src/applications/feed/config/PhabricatorFeedConfigOptions.php index eac6a097ae..4fd6e36d7f 100644 --- a/src/applications/feed/config/PhabricatorFeedConfigOptions.php +++ b/src/applications/feed/config/PhabricatorFeedConfigOptions.php @@ -19,6 +19,10 @@ final class PhabricatorFeedConfigOptions return 'apps'; } + public function getApplicationClassName() { + return PhabricatorFeedApplication::class; + } + public function getOptions() { $hooks_help = $this->deformat(pht(<< 'image/jpeg', diff --git a/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php b/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php index 4e00ac0eda..8ed688ab43 100644 --- a/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php +++ b/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php @@ -19,6 +19,10 @@ final class PhabricatorManiphestConfigOptions return 'apps'; } + public function getApplicationClassName() { + return PhabricatorManiphestApplication::class; + } + public function getOptions() { $priority_type = 'maniphest.priorities'; $priority_defaults = array( diff --git a/src/applications/owners/config/PhabricatorOwnersConfigOptions.php b/src/applications/owners/config/PhabricatorOwnersConfigOptions.php index 330d465f3c..5fcbe3e2c2 100644 --- a/src/applications/owners/config/PhabricatorOwnersConfigOptions.php +++ b/src/applications/owners/config/PhabricatorOwnersConfigOptions.php @@ -19,6 +19,10 @@ final class PhabricatorOwnersConfigOptions return 'apps'; } + public function getApplicationClassName() { + return PhabricatorOwnersApplication::class; + } + public function getOptions() { $custom_field_type = 'custom:PhabricatorCustomFieldConfigOptionType'; $default_fields = array(); diff --git a/src/applications/people/config/PhabricatorUserConfigOptions.php b/src/applications/people/config/PhabricatorUserConfigOptions.php index 66b85a6507..d8bd8da1ee 100644 --- a/src/applications/people/config/PhabricatorUserConfigOptions.php +++ b/src/applications/people/config/PhabricatorUserConfigOptions.php @@ -19,6 +19,10 @@ final class PhabricatorUserConfigOptions return 'apps'; } + public function getApplicationClassName() { + return PhabricatorPeopleApplication::class; + } + public function getOptions() { $default = array( diff --git a/src/applications/phurl/config/PhabricatorPhurlConfigOptions.php b/src/applications/phurl/config/PhabricatorPhurlConfigOptions.php index 69e3dd6769..3d31c22078 100644 --- a/src/applications/phurl/config/PhabricatorPhurlConfigOptions.php +++ b/src/applications/phurl/config/PhabricatorPhurlConfigOptions.php @@ -19,6 +19,10 @@ final class PhabricatorPhurlConfigOptions return 'apps'; } + public function getApplicationClassName() { + return PhabricatorPhurlApplication::class; + } + public function getOptions() { return array( $this->newOption('phurl.short-uri', 'string', null) diff --git a/src/applications/project/config/PhabricatorProjectConfigOptions.php b/src/applications/project/config/PhabricatorProjectConfigOptions.php index 4767a4dccc..7ad7cbb212 100644 --- a/src/applications/project/config/PhabricatorProjectConfigOptions.php +++ b/src/applications/project/config/PhabricatorProjectConfigOptions.php @@ -19,6 +19,10 @@ final class PhabricatorProjectConfigOptions return 'apps'; } + public function getApplicationClassName() { + return PhabricatorProjectApplication::class; + } + public function getOptions() { $default_icons = PhabricatorProjectIconSet::getDefaultConfiguration(); $icons_type = 'project.icons'; diff --git a/src/applications/repository/config/PhabricatorRepositoryConfigOptions.php b/src/applications/repository/config/PhabricatorRepositoryConfigOptions.php index f01515501a..bed3097e2c 100644 --- a/src/applications/repository/config/PhabricatorRepositoryConfigOptions.php +++ b/src/applications/repository/config/PhabricatorRepositoryConfigOptions.php @@ -19,6 +19,10 @@ final class PhabricatorRepositoryConfigOptions return 'apps'; } + public function getApplicationClassName() { + return PhabricatorDiffusionApplication::class; + } + public function getOptions() { return array( $this->newOption('repository.default-local-path', 'string', '/var/repo/') -- 2.51.2