@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Remove empty implementations of `describeAutomaticCapabilities()`

Summary:
This has been replaced by `PolicyCodex` after D16830. Also:

- Rebuild Celerity map to fix grumpy unit test.
- Fix one issue on the policy exception workflow to accommodate the new code.

Test Plan:
- `arc unit --everything`
- Viewed policy explanations.
- Viewed policy errors.

Reviewers: chad

Reviewed By: chad

Subscribers: hach-que, PHID-OPKG-gm6ozazyms6q6i22gyam

Differential Revision: https://secure.phabricator.com/D16831

+67 -297
+5 -5
resources/celerity/map.php
··· 9 9 'names' => array( 10 10 'conpherence.pkg.css' => 'cea72e09', 11 11 'conpherence.pkg.js' => '6249a1cf', 12 - 'core.pkg.css' => 'c99a9eb4', 12 + 'core.pkg.css' => 'd2126ffb', 13 13 'core.pkg.js' => '1a77dddf', 14 14 'darkconsole.pkg.js' => 'e7393ebb', 15 15 'differential.pkg.css' => 'a4ba74b5', ··· 21 21 'maniphest.pkg.js' => '949a7498', 22 22 'rsrc/css/aphront/aphront-bars.css' => '231ac33c', 23 23 'rsrc/css/aphront/dark-console.css' => 'f54bf286', 24 - 'rsrc/css/aphront/dialog-view.css' => '84f1e6a6', 24 + 'rsrc/css/aphront/dialog-view.css' => '1e6b8603', 25 25 'rsrc/css/aphront/lightbox-attachment.css' => '7acac05d', 26 26 'rsrc/css/aphront/list-filter-view.css' => '5d6f0526', 27 27 'rsrc/css/aphront/multi-column.css' => '84cc6640', ··· 143 143 'rsrc/css/phui/phui-form-view.css' => 'b5bfd17a', 144 144 'rsrc/css/phui/phui-form.css' => 'aac1d51d', 145 145 'rsrc/css/phui/phui-head-thing.css' => 'fd311e5f', 146 - 'rsrc/css/phui/phui-header-view.css' => '06385974', 146 + 'rsrc/css/phui/phui-header-view.css' => '6ec8f155', 147 147 'rsrc/css/phui/phui-hovercard.css' => 'de1a2119', 148 148 'rsrc/css/phui/phui-icon-set-selector.css' => '1ab67aad', 149 149 'rsrc/css/phui/phui-icon.css' => '417f80fb', ··· 553 553 'almanac-css' => 'dbb9b3af', 554 554 'aphront-bars' => '231ac33c', 555 555 'aphront-dark-console-css' => 'f54bf286', 556 - 'aphront-dialog-view-css' => '84f1e6a6', 556 + 'aphront-dialog-view-css' => '1e6b8603', 557 557 'aphront-list-filter-view-css' => '5d6f0526', 558 558 'aphront-multi-column-view-css' => '84cc6640', 559 559 'aphront-panel-view-css' => '8427b78d', ··· 867 867 'phui-form-css' => 'aac1d51d', 868 868 'phui-form-view-css' => 'b5bfd17a', 869 869 'phui-head-thing-view-css' => 'fd311e5f', 870 - 'phui-header-view-css' => '06385974', 870 + 'phui-header-view-css' => '6ec8f155', 871 871 'phui-hovercard' => '1bd28176', 872 872 'phui-hovercard-view-css' => 'de1a2119', 873 873 'phui-icon-set-selector-css' => '1ab67aad',
-4
src/applications/almanac/storage/AlmanacDevice.php
··· 167 167 return false; 168 168 } 169 169 170 - public function describeAutomaticCapability($capability) { 171 - return null; 172 - } 173 - 174 170 175 171 /* -( PhabricatorExtendedPolicyInterface )--------------------------------- */ 176 172
-4
src/applications/almanac/storage/AlmanacNamespace.php
··· 174 174 return false; 175 175 } 176 176 177 - public function describeAutomaticCapability($capability) { 178 - return null; 179 - } 180 - 181 177 182 178 /* -( PhabricatorApplicationTransactionInterface )------------------------- */ 183 179
-4
src/applications/almanac/storage/AlmanacNetwork.php
··· 92 92 return false; 93 93 } 94 94 95 - public function describeAutomaticCapability($capability) { 96 - return null; 97 - } 98 - 99 95 100 96 /* -( PhabricatorDestructibleInterface )----------------------------------- */ 101 97
-4
src/applications/almanac/storage/AlmanacService.php
··· 184 184 return false; 185 185 } 186 186 187 - public function describeAutomaticCapability($capability) { 188 - return null; 189 - } 190 - 191 187 192 188 /* -( PhabricatorExtendedPolicyInterface )--------------------------------- */ 193 189
-4
src/applications/auth/storage/PhabricatorAuthProviderConfig.php
··· 130 130 return false; 131 131 } 132 132 133 - public function describeAutomaticCapability($capability) { 134 - return null; 135 - } 136 - 137 133 }
-4
src/applications/auth/storage/PhabricatorAuthTemporaryToken.php
··· 125 125 return false; 126 126 } 127 127 128 - public function describeAutomaticCapability($capability) { 129 - return null; 130 - } 131 - 132 128 }
-4
src/applications/badges/storage/PhabricatorBadgesAward.php
··· 76 76 return false; 77 77 } 78 78 79 - public function describeAutomaticCapability($capability) { 80 - return null; 81 - } 82 - 83 79 }
-4
src/applications/badges/storage/PhabricatorBadgesBadge.php
··· 129 129 return false; 130 130 } 131 131 132 - public function describeAutomaticCapability($capability) { 133 - return null; 134 - } 135 - 136 132 137 133 /* -( PhabricatorApplicationTransactionInterface )------------------------- */ 138 134
-4
src/applications/base/PhabricatorApplication.php
··· 483 483 return false; 484 484 } 485 485 486 - public function describeAutomaticCapability($capability) { 487 - return null; 488 - } 489 - 490 486 491 487 /* -( Policies )----------------------------------------------------------- */ 492 488
-3
src/applications/calendar/storage/PhabricatorCalendarEventInvitee.php
··· 121 121 return false; 122 122 } 123 123 124 - public function describeAutomaticCapability($capability) { 125 - return null; 126 - } 127 124 }
-5
src/applications/calendar/storage/PhabricatorCalendarExport.php
··· 159 159 return false; 160 160 } 161 161 162 - public function describeAutomaticCapability($capability) { 163 - return null; 164 - } 165 - 166 - 167 162 /* -( PhabricatorApplicationTransactionInterface )------------------------- */ 168 163 169 164
-3
src/applications/calendar/storage/PhabricatorCalendarExternalInvitee.php
··· 68 68 return false; 69 69 } 70 70 71 - public function describeAutomaticCapability($capability) { 72 - return null; 73 - } 74 71 }
-4
src/applications/calendar/storage/PhabricatorCalendarImport.php
··· 132 132 return false; 133 133 } 134 134 135 - public function describeAutomaticCapability($capability) { 136 - return null; 137 - } 138 - 139 135 140 136 /* -( PhabricatorApplicationTransactionInterface )------------------------- */ 141 137
-4
src/applications/calendar/storage/PhabricatorCalendarImportLog.php
··· 86 86 return false; 87 87 } 88 88 89 - public function describeAutomaticCapability($capability) { 90 - return null; 91 - } 92 - 93 89 94 90 /* -( PhabricatorDestructibleInterface )----------------------------------- */ 95 91
-4
src/applications/chatlog/storage/PhabricatorChatLogChannel.php
··· 48 48 return false; 49 49 } 50 50 51 - public function describeAutomaticCapability($capability) { 52 - return null; 53 - } 54 - 55 51 }
-4
src/applications/chatlog/storage/PhabricatorChatLogEvent.php
··· 56 56 return $this->getChannel()->hasAutomaticCapability($capability, $viewer); 57 57 } 58 58 59 - public function describeAutomaticCapability($capability) { 60 - return null; 61 - } 62 - 63 59 }
-4
src/applications/conduit/method/ConduitAPIMethod.php
··· 372 372 return false; 373 373 } 374 374 375 - public function describeAutomaticCapability($capability) { 376 - return null; 377 - } 378 - 379 375 protected function hasApplicationCapability( 380 376 $capability, 381 377 PhabricatorUser $viewer) {
-4
src/applications/conduit/storage/PhabricatorConduitMethodCallLog.php
··· 52 52 return false; 53 53 } 54 54 55 - public function describeAutomaticCapability($capability) { 56 - return null; 57 - } 58 - 59 55 }
-4
src/applications/config/storage/PhabricatorConfigEntry.php
··· 95 95 return false; 96 96 } 97 97 98 - public function describeAutomaticCapability($capability) { 99 - return null; 100 - } 101 - 102 98 }
-4
src/applications/countdown/storage/PhabricatorCountdown.php
··· 139 139 return false; 140 140 } 141 141 142 - public function describeAutomaticCapability($capability) { 143 - return false; 144 - } 145 - 146 142 /* -( PhabricatorSpacesInterface )------------------------------------------- */ 147 143 148 144 public function getSpacePHID() {
-4
src/applications/daemon/storage/PhabricatorDaemonLog.php
··· 77 77 return false; 78 78 } 79 79 80 - public function describeAutomaticCapability($capability) { 81 - return null; 82 - } 83 - 84 80 }
-4
src/applications/dashboard/storage/PhabricatorDashboard.php
··· 160 160 return false; 161 161 } 162 162 163 - public function describeAutomaticCapability($capability) { 164 - return null; 165 - } 166 - 167 163 168 164 /* -( PhabricatorDestructibleInterface )----------------------------------- */ 169 165
-4
src/applications/dashboard/storage/PhabricatorDashboardPanel.php
··· 159 159 return false; 160 160 } 161 161 162 - public function describeAutomaticCapability($capability) { 163 - return null; 164 - } 165 - 166 162 167 163 /* -( PhabricatorCustomFieldInterface )------------------------------------ */ 168 164
-4
src/applications/differential/storage/DifferentialChangeset.php
··· 226 226 return $this->getDiff()->hasAutomaticCapability($capability, $viewer); 227 227 } 228 228 229 - public function describeAutomaticCapability($capability) { 230 - return null; 231 - } 232 - 233 229 }
-4
src/applications/differential/storage/DifferentialHunk.php
··· 228 228 return $this->getChangeset()->hasAutomaticCapability($capability, $viewer); 229 229 } 230 230 231 - public function describeAutomaticCapability($capability) { 232 - return null; 233 - } 234 - 235 231 }
-4
src/applications/diviner/storage/DivinerLiveBook.php
··· 114 114 return false; 115 115 } 116 116 117 - public function describeAutomaticCapability($capability) { 118 - return null; 119 - } 120 - 121 117 122 118 /* -( PhabricatorDestructibleInterface )----------------------------------- */ 123 119
-4
src/applications/doorkeeper/storage/DoorkeeperExternalObject.php
··· 121 121 return false; 122 122 } 123 123 124 - public function describeAutomaticCapability($capability) { 125 - return null; 126 - } 127 - 128 124 }
-4
src/applications/drydock/storage/DrydockBlueprint.php
··· 325 325 return false; 326 326 } 327 327 328 - public function describeAutomaticCapability($capability) { 329 - return null; 330 - } 331 - 332 328 333 329 /* -( PhabricatorCustomFieldInterface )------------------------------------ */ 334 330
-5
src/applications/feed/story/PhabricatorFeedStory.php
··· 454 454 } 455 455 456 456 457 - public function describeAutomaticCapability($capability) { 458 - return null; 459 - } 460 - 461 - 462 457 /* -( PhabricatorMarkupInterface Implementation )--------------------------- */ 463 458 464 459
-5
src/applications/files/storage/PhabricatorFileChunk.php
··· 77 77 } 78 78 79 79 80 - public function describeAutomaticCapability($capability) { 81 - return null; 82 - } 83 - 84 - 85 80 /* -( PhabricatorDestructibleInterface )----------------------------------- */ 86 81 87 82
-4
src/applications/legalpad/storage/LegalpadDocumentSignature.php
··· 93 93 return ($viewer->getPHID() == $this->getSignerPHID()); 94 94 } 95 95 96 - public function describeAutomaticCapability($capability) { 97 - return null; 98 - } 99 - 100 96 }
-4
src/applications/macro/storage/PhabricatorFileImageMacro.php
··· 139 139 return false; 140 140 } 141 141 142 - public function describeAutomaticCapability($capability) { 143 - return null; 144 - } 145 - 146 142 }
-4
src/applications/nuance/storage/NuanceImportCursorData.php
··· 63 63 return false; 64 64 } 65 65 66 - public function describeAutomaticCapability($capability) { 67 - return null; 68 - } 69 - 70 66 }
-4
src/applications/nuance/storage/NuanceItemCommand.php
··· 48 48 return false; 49 49 } 50 50 51 - public function describeAutomaticCapability($capability) { 52 - return null; 53 - } 54 - 55 51 }
-4
src/applications/nuance/storage/NuanceQueue.php
··· 67 67 return false; 68 68 } 69 69 70 - public function describeAutomaticCapability($capability) { 71 - return null; 72 - } 73 - 74 70 75 71 /* -( PhabricatorApplicationTransactionInterface )------------------------- */ 76 72
-4
src/applications/nuance/storage/NuanceSource.php
··· 138 138 return false; 139 139 } 140 140 141 - public function describeAutomaticCapability($capability) { 142 - return null; 143 - } 144 - 145 141 146 142 /* -( PhabricatorNgramsInterface )----------------------------------------- */ 147 143
-4
src/applications/oauthserver/storage/PhabricatorOAuthServerClient.php
··· 83 83 return false; 84 84 } 85 85 86 - public function describeAutomaticCapability($capability) { 87 - return null; 88 - } 89 - 90 86 91 87 /* -( PhabricatorApplicationTransactionInterface )------------------------- */ 92 88
-4
src/applications/packages/storage/PhabricatorPackagesPackage.php
··· 158 158 return false; 159 159 } 160 160 161 - public function describeAutomaticCapability($capability) { 162 - return null; 163 - } 164 - 165 161 166 162 /* -( PhabricatorDestructibleInterface )----------------------------------- */ 167 163
-4
src/applications/packages/storage/PhabricatorPackagesPublisher.php
··· 134 134 return false; 135 135 } 136 136 137 - public function describeAutomaticCapability($capability) { 138 - return null; 139 - } 140 - 141 137 142 138 /* -( PhabricatorDestructibleInterface )----------------------------------- */ 143 139
-4
src/applications/packages/storage/PhabricatorPackagesVersion.php
··· 126 126 return false; 127 127 } 128 128 129 - public function describeAutomaticCapability($capability) { 130 - return null; 131 - } 132 - 133 129 134 130 /* -( PhabricatorExtendedPolicyInterface )--------------------------------- */ 135 131
-4
src/applications/passphrase/storage/PassphraseCredential.php
··· 155 155 return false; 156 156 } 157 157 158 - public function describeAutomaticCapability($capability) { 159 - return null; 160 - } 161 - 162 158 163 159 /* -( PhabricatorSubscribableInterface )----------------------------------- */ 164 160
-4
src/applications/phlux/storage/PhluxVariable.php
··· 80 80 return false; 81 81 } 82 82 83 - public function describeAutomaticCapability($capability) { 84 - return null; 85 - } 86 - 87 83 }
-4
src/applications/pholio/storage/PholioImage.php
··· 119 119 return $this->getMock()->hasAutomaticCapability($capability, $viewer); 120 120 } 121 121 122 - public function describeAutomaticCapability($capability) { 123 - return null; 124 - } 125 - 126 122 }
-4
src/applications/phortune/storage/PhortuneProduct.php
··· 110 110 return false; 111 111 } 112 112 113 - public function describeAutomaticCapability($capability) { 114 - return null; 115 - } 116 - 117 113 }
-4
src/applications/phragment/storage/PhragmentFragment.php
··· 345 345 return false; 346 346 } 347 347 348 - public function describeAutomaticCapability($capability) { 349 - return null; 350 - } 351 - 352 348 }
-4
src/applications/policy/__tests__/PhabricatorPolicyTestObject.php
··· 52 52 return $this; 53 53 } 54 54 55 - public function describeAutomaticCapability($capability) { 56 - return null; 57 - } 58 - 59 55 public function setExtendedPolicies(array $extended_policies) { 60 56 $this->extendedPolicies = $extended_policies; 61 57 return $this;
+5 -36
src/applications/policy/controller/PhabricatorPolicyExplainController.php
··· 262 262 $capability) { 263 263 $viewer = $this->getViewer(); 264 264 265 - if ($object instanceof PhabricatorPolicyCodexInterface) { 266 - $codex = PhabricatorPolicyCodex::newFromObject($object, $viewer); 267 - $rules = $codex->getPolicySpecialRuleDescriptions(); 268 - 269 - $exceptions = array(); 270 - foreach ($rules as $rule) { 271 - $is_active = $rule->getIsActive(); 272 - if ($is_active) { 273 - $rule_capabilities = $rule->getCapabilities(); 274 - if ($rule_capabilities) { 275 - if (!in_array($capability, $rule_capabilities)) { 276 - $is_active = false; 277 - } 278 - } 279 - } 280 - 281 - $description = $rule->getDescription(); 282 - 283 - if (!$is_active) { 284 - $description = phutil_tag( 285 - 'span', 286 - array( 287 - 'class' => 'phui-policy-section-view-inactive-rule', 288 - ), 289 - $description); 290 - } 291 - 292 - $exceptions[] = $description; 293 - } 294 - } else if (method_exists($object, 'describeAutomaticCapability')) { 295 - $exceptions = (array)$object->describeAutomaticCapability($capability); 296 - $exceptions = array_filter($exceptions); 297 - } else { 298 - $exceptions = array(); 299 - } 265 + $exceptions = PhabricatorPolicy::getSpecialRules( 266 + $object, 267 + $viewer, 268 + $capability, 269 + false); 300 270 301 271 if (!$exceptions) { 302 272 return null; 303 273 } 304 - 305 274 306 275 return id(new PHUIPolicySectionView()) 307 276 ->setViewer($viewer)
+9 -2
src/applications/policy/filter/PhabricatorPolicyFilter.php
··· 581 581 } 582 582 583 583 $more = PhabricatorPolicy::getPolicyExplanation($this->viewer, $policy); 584 - $exceptions = $object->describeAutomaticCapability($capability); 584 + $more = (array)$more; 585 + $more = array_filter($more); 586 + 587 + $exceptions = PhabricatorPolicy::getSpecialRules( 588 + $object, 589 + $this->viewer, 590 + $capability, 591 + true); 585 592 586 - $details = array_filter(array_merge(array($more), (array)$exceptions)); 593 + $details = array_filter(array_merge($more, $exceptions)); 587 594 588 595 $access_denied = $this->renderAccessDenied($object); 589 596
+48 -4
src/applications/policy/storage/PhabricatorPolicy.php
··· 422 422 return ($this_strength > $other_strength); 423 423 } 424 424 425 + public static function getSpecialRules( 426 + PhabricatorPolicyInterface $object, 427 + PhabricatorUser $viewer, 428 + $capability, 429 + $active_only) { 430 + 431 + if ($object instanceof PhabricatorPolicyCodexInterface) { 432 + $codex = PhabricatorPolicyCodex::newFromObject($object, $viewer); 433 + $rules = $codex->getPolicySpecialRuleDescriptions(); 434 + 435 + $exceptions = array(); 436 + foreach ($rules as $rule) { 437 + $is_active = $rule->getIsActive(); 438 + if ($is_active) { 439 + $rule_capabilities = $rule->getCapabilities(); 440 + if ($rule_capabilities) { 441 + if (!in_array($capability, $rule_capabilities)) { 442 + $is_active = false; 443 + } 444 + } 445 + } 446 + 447 + if (!$is_active && $active_only) { 448 + continue; 449 + } 450 + 451 + $description = $rule->getDescription(); 452 + 453 + if (!$is_active) { 454 + $description = phutil_tag( 455 + 'span', 456 + array( 457 + 'class' => 'phui-policy-section-view-inactive-rule', 458 + ), 459 + $description); 460 + } 461 + 462 + $exceptions[] = $description; 463 + } 464 + } else if (method_exists($object, 'describeAutomaticCapability')) { 465 + $exceptions = (array)$object->describeAutomaticCapability($capability); 466 + $exceptions = array_filter($exceptions); 467 + } else { 468 + $exceptions = array(); 469 + } 470 + 471 + return $exceptions; 472 + } 425 473 426 474 427 475 /* -( PhabricatorPolicyInterface )----------------------------------------- */ ··· 442 490 443 491 public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { 444 492 return false; 445 - } 446 - 447 - public function describeAutomaticCapability($capability) { 448 - return null; 449 493 } 450 494 451 495
-4
src/applications/project/storage/PhabricatorProjectColumnPosition.php
··· 87 87 return false; 88 88 } 89 89 90 - public function describeAutomaticCapability($capability) { 91 - return null; 92 - } 93 - 94 90 }
-5
src/applications/releeph/storage/ReleephProject.php
··· 153 153 return false; 154 154 } 155 155 156 - public function describeAutomaticCapability($capability) { 157 - return null; 158 - } 159 - 160 - 161 156 }
-5
src/applications/repository/storage/PhabricatorRepository.php
··· 2330 2330 return false; 2331 2331 } 2332 2332 2333 - public function describeAutomaticCapability($capability) { 2334 - return null; 2335 - } 2336 - 2337 - 2338 2333 2339 2334 /* -( PhabricatorMarkupInterface )----------------------------------------- */ 2340 2335
-4
src/applications/repository/storage/PhabricatorRepositoryCommitHint.php
··· 130 130 return false; 131 131 } 132 132 133 - public function describeAutomaticCapability($capability) { 134 - return null; 135 - } 136 - 137 133 }
-4
src/applications/repository/storage/PhabricatorRepositoryGitLFSRef.php
··· 45 45 return false; 46 46 } 47 47 48 - public function describeAutomaticCapability($capability) { 49 - return null; 50 - } 51 - 52 48 53 49 /* -( PhabricatorDestructibleInterface )----------------------------------- */ 54 50
-4
src/applications/repository/storage/PhabricatorRepositoryOldRef.php
··· 45 45 return false; 46 46 } 47 47 48 - public function describeAutomaticCapability($capability) { 49 - return null; 50 - } 51 - 52 48 }
-4
src/applications/repository/storage/PhabricatorRepositoryURI.php
··· 642 642 return false; 643 643 } 644 644 645 - public function describeAutomaticCapability($capability) { 646 - return null; 647 - } 648 - 649 645 650 646 /* -( PhabricatorExtendedPolicyInterface )--------------------------------- */ 651 647
-5
src/applications/search/storage/PhabricatorProfilePanelConfiguration.php
··· 162 162 } 163 163 164 164 165 - public function describeAutomaticCapability($capability) { 166 - return null; 167 - } 168 - 169 - 170 165 /* -( PhabricatorExtendedPolicyInterface )--------------------------------- */ 171 166 172 167
-4
src/applications/search/storage/PhabricatorSavedQuery.php
··· 81 81 return false; 82 82 } 83 83 84 - public function describeAutomaticCapability($capability) { 85 - return null; 86 - } 87 - 88 84 }
-5
src/applications/settings/storage/PhabricatorUserPreferences.php
··· 222 222 return false; 223 223 } 224 224 225 - public function describeAutomaticCapability($capability) { 226 - return null; 227 - } 228 - 229 - 230 225 /* -( PhabricatorDestructibleInterface )----------------------------------- */ 231 226 232 227
-5
src/applications/spaces/storage/PhabricatorSpacesNamespace.php
··· 84 84 return false; 85 85 } 86 86 87 - public function describeAutomaticCapability($capability) { 88 - return null; 89 - } 90 - 91 - 92 87 /* -( PhabricatorApplicationTransactionInterface )------------------------- */ 93 88 94 89
-4
src/applications/tokens/storage/PhabricatorToken.php
··· 28 28 return false; 29 29 } 30 30 31 - public function describeAutomaticCapability($capability) { 32 - return null; 33 - } 34 - 35 31 public function renderIcon() { 36 32 // TODO: Maybe move to a View class? 37 33
-3
src/applications/transactions/editengine/PhabricatorEditEngine.php
··· 2275 2275 return false; 2276 2276 } 2277 2277 2278 - public function describeAutomaticCapability($capability) { 2279 - return null; 2280 - } 2281 2278 }
-5
src/applications/transactions/storage/PhabricatorEditEngineConfiguration.php
··· 302 302 return false; 303 303 } 304 304 305 - public function describeAutomaticCapability($capability) { 306 - return null; 307 - } 308 - 309 - 310 305 /* -( PhabricatorApplicationTransactionInterface )------------------------- */ 311 306 312 307
-4
src/infrastructure/daemon/workers/storage/PhabricatorWorkerTrigger.php
··· 190 190 return true; 191 191 } 192 192 193 - public function describeAutomaticCapability($capability) { 194 - return null; 195 - } 196 - 197 193 }