1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-15 10:00:55 +01:00

(stable) Promote 2017 Week 41

This commit is contained in:
epriestley 2017-10-13 14:50:04 -07:00
commit 9365c6c999
175 changed files with 934 additions and 622 deletions

View file

@ -8,9 +8,9 @@
return array(
'names' => array(
'conpherence.pkg.css' => 'e68cf1fa',
'conpherence.pkg.js' => 'b5b51108',
'core.pkg.css' => '87a9a59b',
'core.pkg.js' => '28552e58',
'conpherence.pkg.js' => '15191c65',
'core.pkg.css' => '1a4e0c25',
'core.pkg.js' => '4c79d74f',
'darkconsole.pkg.js' => '1f9a31bc',
'differential.pkg.css' => '45951e9e',
'differential.pkg.js' => 'b71b8c5d',
@ -151,13 +151,13 @@ return array(
'rsrc/css/phui/phui-curtain-view.css' => '2bdaf026',
'rsrc/css/phui/phui-document-pro.css' => '8af7ea27',
'rsrc/css/phui/phui-document-summary.css' => '9ca48bdf',
'rsrc/css/phui/phui-document.css' => 'c32e8dec',
'rsrc/css/phui/phui-document.css' => '878c2f52',
'rsrc/css/phui/phui-feed-story.css' => '44a9c8e9',
'rsrc/css/phui/phui-fontkit.css' => '1320ed01',
'rsrc/css/phui/phui-form-view.css' => 'ae9f8d16',
'rsrc/css/phui/phui-form.css' => '7aaa04e3',
'rsrc/css/phui/phui-head-thing.css' => 'fd311e5f',
'rsrc/css/phui/phui-header-view.css' => '67fab16d',
'rsrc/css/phui/phui-header-view.css' => '31dc6c72',
'rsrc/css/phui/phui-hovercard.css' => 'f0592bcf',
'rsrc/css/phui/phui-icon-set-selector.css' => '87db8fee',
'rsrc/css/phui/phui-icon.css' => '5c4a5de6',
@ -384,8 +384,8 @@ return array(
'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '4d863052',
'rsrc/js/application/conpherence/behavior-conpherence-search.js' => '9bbf3762',
'rsrc/js/application/conpherence/behavior-durable-column.js' => '2ae077e1',
'rsrc/js/application/conpherence/behavior-menu.js' => 'c9b99b77',
'rsrc/js/application/conpherence/behavior-participant-pane.js' => '8604caa8',
'rsrc/js/application/conpherence/behavior-menu.js' => '4047cd35',
'rsrc/js/application/conpherence/behavior-participant-pane.js' => 'd057e45a',
'rsrc/js/application/conpherence/behavior-pontificate.js' => '55616e04',
'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3',
'rsrc/js/application/conpherence/behavior-toggle-widget.js' => '3dbf94d5',
@ -403,7 +403,7 @@ return array(
'rsrc/js/application/differential/behavior-diff-radios.js' => 'e1ff79b1',
'rsrc/js/application/differential/behavior-populate.js' => '419998ab',
'rsrc/js/application/differential/behavior-user-select.js' => 'a8d8459d',
'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => 'c93358e3',
'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => '00676f00',
'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'd835b03a',
'rsrc/js/application/diffusion/behavior-commit-branches.js' => 'bdaf4d04',
'rsrc/js/application/diffusion/behavior-commit-graph.js' => '75b83cbb',
@ -428,7 +428,7 @@ return array(
'rsrc/js/application/owners/owners-path-editor.js' => '7a68dda3',
'rsrc/js/application/passphrase/passphrase-credential-control.js' => '3cb0b2fc',
'rsrc/js/application/pholio/behavior-pholio-mock-edit.js' => 'bee502c8',
'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => 'fbe497e7',
'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => 'ec1f3669',
'rsrc/js/application/phortune/behavior-stripe-payment-form.js' => 'a6b98425',
'rsrc/js/application/phortune/behavior-test-payment-form.js' => 'fc91ab6c',
'rsrc/js/application/phortune/phortune-credit-card-form.js' => '2290aeef',
@ -468,7 +468,7 @@ return array(
'rsrc/js/core/KeyboardShortcutManager.js' => 'c19dd9b9',
'rsrc/js/core/MultirowRowManager.js' => 'b5d57730',
'rsrc/js/core/Notification.js' => '008faf9c',
'rsrc/js/core/Prefab.js' => 'c5af80a2',
'rsrc/js/core/Prefab.js' => '77b0ae28',
'rsrc/js/core/ShapedRequest.js' => '7cbe244b',
'rsrc/js/core/TextAreaUtils.js' => '320810c8',
'rsrc/js/core/Title.js' => '485aaa6c',
@ -480,7 +480,7 @@ return array(
'rsrc/js/core/behavior-choose-control.js' => '327a00d1',
'rsrc/js/core/behavior-copy.js' => 'b0b8f86d',
'rsrc/js/core/behavior-detect-timezone.js' => '4c193c96',
'rsrc/js/core/behavior-device.js' => 'bb1dd507',
'rsrc/js/core/behavior-device.js' => 'a3714c76',
'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '484a6e22',
'rsrc/js/core/behavior-error-log.js' => '6882e80a',
'rsrc/js/core/behavior-fancy-datepicker.js' => 'ecf4e799',
@ -527,9 +527,9 @@ return array(
'rsrc/js/phui/behavior-phui-tab-group.js' => '0a0b10e9',
'rsrc/js/phuix/PHUIXActionListView.js' => 'b5c256b8',
'rsrc/js/phuix/PHUIXActionView.js' => '442efd08',
'rsrc/js/phuix/PHUIXAutocomplete.js' => '4b7430ab',
'rsrc/js/phuix/PHUIXAutocomplete.js' => 'e0731603',
'rsrc/js/phuix/PHUIXButtonView.js' => '8a91e1ac',
'rsrc/js/phuix/PHUIXDropdownMenu.js' => '8018ee50',
'rsrc/js/phuix/PHUIXDropdownMenu.js' => '04b2ae03',
'rsrc/js/phuix/PHUIXExample.js' => '68af71ca',
'rsrc/js/phuix/PHUIXFormControl.js' => '83e03671',
'rsrc/js/phuix/PHUIXIconView.js' => 'bff6884b',
@ -599,8 +599,8 @@ return array(
'javelin-behavior-choose-control' => '327a00d1',
'javelin-behavior-comment-actions' => '9a6dd75c',
'javelin-behavior-config-reorder-fields' => 'b6993408',
'javelin-behavior-conpherence-menu' => 'c9b99b77',
'javelin-behavior-conpherence-participant-pane' => '8604caa8',
'javelin-behavior-conpherence-menu' => '4047cd35',
'javelin-behavior-conpherence-participant-pane' => 'd057e45a',
'javelin-behavior-conpherence-pontificate' => '55616e04',
'javelin-behavior-conpherence-search' => '9bbf3762',
'javelin-behavior-countdown-timer' => 'e4cc26b3',
@ -612,7 +612,7 @@ return array(
'javelin-behavior-day-view' => '4b3c4443',
'javelin-behavior-desktop-notifications-control' => '27ca6289',
'javelin-behavior-detect-timezone' => '4c193c96',
'javelin-behavior-device' => 'bb1dd507',
'javelin-behavior-device' => 'a3714c76',
'javelin-behavior-diff-preview-link' => '051c7832',
'javelin-behavior-differential-diff-radios' => 'e1ff79b1',
'javelin-behavior-differential-feedback-preview' => '51c5ad07',
@ -669,7 +669,7 @@ return array(
'javelin-behavior-phabricator-transaction-list' => '1f6794f6',
'javelin-behavior-phabricator-watch-anchor' => '9f36c42d',
'javelin-behavior-pholio-mock-edit' => 'bee502c8',
'javelin-behavior-pholio-mock-view' => 'fbe497e7',
'javelin-behavior-pholio-mock-view' => 'ec1f3669',
'javelin-behavior-phui-dropdown-menu' => 'b95d6f7d',
'javelin-behavior-phui-file-upload' => 'b003d4fb',
'javelin-behavior-phui-hovercards' => 'bcaccd64',
@ -709,7 +709,7 @@ return array(
'javelin-behavior-workflow' => '0a3f3021',
'javelin-color' => '7e41274a',
'javelin-cookie' => '62dfea03',
'javelin-diffusion-locate-file-source' => 'c93358e3',
'javelin-diffusion-locate-file-source' => '00676f00',
'javelin-dom' => '4976858c',
'javelin-dynval' => 'f6555212',
'javelin-event' => '2ee659ce',
@ -794,7 +794,7 @@ return array(
'phabricator-notification-menu-css' => '10685bd4',
'phabricator-object-selector-css' => '85ee8ce6',
'phabricator-phtize' => 'd254d646',
'phabricator-prefab' => 'c5af80a2',
'phabricator-prefab' => '77b0ae28',
'phabricator-remarkup-css' => 'cad18339',
'phabricator-search-results-css' => '505dd8cf',
'phabricator-shaped-request' => '7cbe244b',
@ -835,7 +835,7 @@ return array(
'phui-crumbs-view-css' => '6ece3bbb',
'phui-curtain-view-css' => '2bdaf026',
'phui-document-summary-view-css' => '9ca48bdf',
'phui-document-view-css' => 'c32e8dec',
'phui-document-view-css' => '878c2f52',
'phui-document-view-pro-css' => '8af7ea27',
'phui-feed-story-css' => '44a9c8e9',
'phui-font-icon-base-css' => '870a7360',
@ -843,7 +843,7 @@ return array(
'phui-form-css' => '7aaa04e3',
'phui-form-view-css' => 'ae9f8d16',
'phui-head-thing-view-css' => 'fd311e5f',
'phui-header-view-css' => '67fab16d',
'phui-header-view-css' => '31dc6c72',
'phui-hovercard' => '1bd28176',
'phui-hovercard-view-css' => 'f0592bcf',
'phui-icon-set-selector-css' => '87db8fee',
@ -879,9 +879,9 @@ return array(
'phui-workpanel-view-css' => 'a3a63478',
'phuix-action-list-view' => 'b5c256b8',
'phuix-action-view' => '442efd08',
'phuix-autocomplete' => '4b7430ab',
'phuix-autocomplete' => 'e0731603',
'phuix-button-view' => '8a91e1ac',
'phuix-dropdown-menu' => '8018ee50',
'phuix-dropdown-menu' => '04b2ae03',
'phuix-form-control-view' => '83e03671',
'phuix-icon-view' => 'bff6884b',
'policy-css' => '957ea14c',
@ -904,6 +904,12 @@ return array(
'unhandled-exception-css' => '4c96257a',
),
'requires' => array(
'00676f00' => array(
'javelin-install',
'javelin-dom',
'javelin-typeahead-preloaded-source',
'javelin-util',
),
'008faf9c' => array(
'javelin-install',
'javelin-dom',
@ -924,6 +930,13 @@ return array(
'javelin-dom',
'phabricator-keyboard-shortcut',
),
'04b2ae03' => array(
'javelin-install',
'javelin-util',
'javelin-dom',
'javelin-vector',
'javelin-stratcom',
),
'051c7832' => array(
'javelin-behavior',
'javelin-stratcom',
@ -1142,6 +1155,20 @@ return array(
'3ffe32d6' => array(
'javelin-install',
),
'4047cd35' => array(
'javelin-behavior',
'javelin-dom',
'javelin-util',
'javelin-stratcom',
'javelin-workflow',
'javelin-behavior-device',
'javelin-history',
'javelin-vector',
'javelin-scrollbar',
'phabricator-title',
'phabricator-shaped-request',
'conpherence-thread-manager',
),
'408bf173' => array(
'javelin-behavior',
'javelin-dom',
@ -1232,12 +1259,6 @@ return array(
'javelin-util',
'phabricator-shaped-request',
),
'4b7430ab' => array(
'javelin-install',
'javelin-dom',
'phuix-icon-view',
'phabricator-prefab',
),
'4c193c96' => array(
'javelin-behavior',
'javelin-uri',
@ -1471,6 +1492,18 @@ return array(
'javelin-reactor',
'javelin-util',
),
'77b0ae28' => array(
'javelin-install',
'javelin-util',
'javelin-dom',
'javelin-typeahead',
'javelin-tokenizer',
'javelin-typeahead-preloaded-source',
'javelin-typeahead-ondemand-source',
'javelin-dom',
'javelin-stratcom',
'javelin-util',
),
'77c1f0b0' => array(
'javelin-behavior',
'javelin-dom',
@ -1513,13 +1546,6 @@ return array(
'7f243deb' => array(
'javelin-install',
),
'8018ee50' => array(
'javelin-install',
'javelin-util',
'javelin-dom',
'javelin-vector',
'javelin-stratcom',
),
'834a1173' => array(
'javelin-behavior',
'javelin-scrollbar',
@ -1536,15 +1562,6 @@ return array(
'85ee8ce6' => array(
'aphront-dialog-view-css',
),
'8604caa8' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
'javelin-workflow',
'javelin-util',
'phabricator-notification',
'conpherence-thread-manager',
),
'88236f00' => array(
'javelin-behavior',
'phabricator-keyboard-shortcut',
@ -1698,6 +1715,13 @@ return array(
'javelin-util',
'phabricator-keyboard-shortcut',
),
'a3714c76' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
'javelin-vector',
'javelin-install',
),
'a3a63478' => array(
'phui-workcard-view-css',
),
@ -1835,13 +1859,6 @@ return array(
'javelin-uri',
'phabricator-notification',
),
'bb1dd507' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
'javelin-vector',
'javelin-install',
),
'bcaccd64' => array(
'javelin-behavior',
'javelin-behavior-device',
@ -1901,18 +1918,6 @@ return array(
'c587b80f' => array(
'javelin-install',
),
'c5af80a2' => array(
'javelin-install',
'javelin-util',
'javelin-dom',
'javelin-typeahead',
'javelin-tokenizer',
'javelin-typeahead-preloaded-source',
'javelin-typeahead-ondemand-source',
'javelin-dom',
'javelin-stratcom',
'javelin-util',
),
'c7ccd872' => array(
'phui-fontkit-css',
),
@ -1924,31 +1929,11 @@ return array(
'javelin-install',
'javelin-util',
),
'c93358e3' => array(
'javelin-install',
'javelin-dom',
'javelin-typeahead-preloaded-source',
'javelin-util',
),
'c989ade3' => array(
'javelin-install',
'javelin-util',
'javelin-stratcom',
),
'c9b99b77' => array(
'javelin-behavior',
'javelin-dom',
'javelin-util',
'javelin-stratcom',
'javelin-workflow',
'javelin-behavior-device',
'javelin-history',
'javelin-vector',
'javelin-scrollbar',
'phabricator-title',
'phabricator-shaped-request',
'conpherence-thread-manager',
),
'caade6f2' => array(
'javelin-behavior',
'javelin-request',
@ -1966,6 +1951,15 @@ return array(
'cd2b9b77' => array(
'phui-oi-list-view-css',
),
'd057e45a' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
'javelin-workflow',
'javelin-util',
'phabricator-notification',
'conpherence-thread-manager',
),
'd0a99ab4' => array(
'javelin-behavior',
'javelin-typeahead-ondemand-source',
@ -2030,6 +2024,12 @@ return array(
'javelin-typeahead-ondemand-source',
'javelin-dom',
),
'e0731603' => array(
'javelin-install',
'javelin-dom',
'phuix-icon-view',
'phabricator-prefab',
),
'e1d25dfb' => array(
'javelin-behavior',
'javelin-stratcom',
@ -2096,6 +2096,20 @@ return array(
'javelin-dom',
'phabricator-draggable-list',
),
'ec1f3669' => array(
'javelin-behavior',
'javelin-util',
'javelin-stratcom',
'javelin-dom',
'javelin-vector',
'javelin-magical-init',
'javelin-request',
'javelin-history',
'javelin-workflow',
'javelin-mask',
'javelin-behavior-device',
'phabricator-keyboard-shortcut',
),
'ecf4e799' => array(
'javelin-behavior',
'javelin-util',
@ -2144,20 +2158,6 @@ return array(
'javelin-install',
'javelin-dom',
),
'fbe497e7' => array(
'javelin-behavior',
'javelin-util',
'javelin-stratcom',
'javelin-dom',
'javelin-vector',
'javelin-magical-init',
'javelin-request',
'javelin-history',
'javelin-workflow',
'javelin-mask',
'javelin-behavior-device',
'phabricator-keyboard-shortcut',
),
'fc91ab6c' => array(
'javelin-behavior',
'javelin-dom',

View file

@ -5,7 +5,7 @@ $root = dirname(dirname(dirname(__FILE__)));
require_once $root.'/scripts/__init_script__.php';
$args = new PhutilArgumentParser($argv);
$args->setTagline(pht('manage garbage colletors'));
$args->setTagline(pht('manage garbage collectors'));
$args->setSynopsis(<<<EOSYNOPSIS
**garbage** __command__ [__options__]
Manage garbage collectors.

View file

@ -204,20 +204,10 @@ abstract class AphrontApplicationConfiguration extends Phobject {
DarkConsoleXHProfPluginAPI::saveProfilerSample($access_log);
// Add points to the rate limits for this request.
$rate_token = PhabricatorStartup::getRateLimitToken();
if ($rate_token !== null) {
// The base score for a request allows users to make 30 requests per
// minute.
$score = (1000 / 30);
// If the user was logged in, let them make more requests.
if ($request->getUser() && $request->getUser()->getPHID()) {
$score = $score / 5;
}
PhabricatorStartup::addRateLimitScore($rate_token, $score);
}
PhabricatorStartup::disconnectRateLimits(
array(
'viewer' => $request->getUser(),
));
if ($processing_exception) {
throw $processing_exception;

View file

@ -15,26 +15,79 @@ class AphrontDefaultApplicationConfiguration
$parser = new PhutilQueryStringParser();
$data = array();
// If the request has "multipart/form-data" content, we can't use
// PhutilQueryStringParser to parse it, and the raw data supposedly is not
// available anyway (according to the PHP documentation, "php://input" is
// not available for "multipart/form-data" requests). However, it is
// available at least some of the time (see T3673), so double check that
// we aren't trying to parse data we won't be able to parse correctly by
// examining the Content-Type header.
$content_type = idx($_SERVER, 'CONTENT_TYPE');
$is_form_data = preg_match('@^multipart/form-data@i', $content_type);
$request_method = idx($_SERVER, 'REQUEST_METHOD');
if ($request_method === 'PUT') {
// For PUT requests, do nothing: in particular, do NOT read input. This
// allows us to stream input later and process very large PUT requests,
// like those coming from Git LFS.
} else {
// For POST requests, we're going to read the raw input ourselves here
// if we can. Among other things, this corrects variable names with
// the "." character in them, which PHP normally converts into "_".
// There are two major considerations here: whether the
// `enable_post_data_reading` option is set, and whether the content
// type is "multipart/form-data" or not.
// If `enable_post_data_reading` is off, we're free to read the entire
// raw request body and parse it -- and we must, because $_POST and
// $_FILES are not built for us. If `enable_post_data_reading` is on,
// which is the default, we may not be able to read the body (the
// documentation says we can't, but empirically we can at least some
// of the time).
// If the content type is "multipart/form-data", we need to build both
// $_POST and $_FILES, which is involved. The body itself is also more
// difficult to parse than other requests.
$raw_input = PhabricatorStartup::getRawInput();
if (strlen($raw_input) && !$is_form_data) {
$data += $parser->parseQueryString($raw_input);
if (strlen($raw_input)) {
$content_type = idx($_SERVER, 'CONTENT_TYPE');
$is_multipart = preg_match('@^multipart/form-data@i', $content_type);
if ($is_multipart && !ini_get('enable_post_data_reading')) {
$multipart_parser = id(new AphrontMultipartParser())
->setContentType($content_type);
$multipart_parser->beginParse();
$multipart_parser->continueParse($raw_input);
$parts = $multipart_parser->endParse();
$query_string = array();
foreach ($parts as $part) {
if (!$part->isVariable()) {
continue;
}
$name = $part->getName();
$value = $part->getVariableValue();
$query_string[] = urlencode($name).'='.urlencode($value);
}
$query_string = implode('&', $query_string);
$post = $parser->parseQueryString($query_string);
$files = array();
foreach ($parts as $part) {
if ($part->isVariable()) {
continue;
}
$files[$part->getName()] = $part->getPHPFileDictionary();
}
$_FILES = $files;
} else {
$post = $parser->parseQueryString($raw_input);
}
$_POST = $post;
PhabricatorStartup::rebuildRequest();
$data += $post;
} else if ($_POST) {
$post = filter_input_array(INPUT_POST, FILTER_UNSAFE_RAW);
if (is_array($post)) {
$_POST = $post;
PhabricatorStartup::rebuildRequest();
}
$data += $_POST;
}
}

View file

@ -160,7 +160,7 @@ abstract class AphrontHTTPParameterType extends Phobject {
/**
* Call another type's existence check.
*
* This method allows a type to reuse the exitence behavior of a different
* This method allows a type to reuse the existence behavior of a different
* type. For example, a "list of users" type may have the same basic
* existence check that a simpler "list of strings" type has, and can just
* call the simpler type to reuse its behavior.

View file

@ -204,7 +204,7 @@ final class AlmanacDeviceEditor
$xaction);
$errors[] = $error;
} else {
// TODO: Validate addresses, but IPv6 addresses are not trival
// TODO: Validate addresses, but IPv6 addresses are not trivial
// to validate.
}

View file

@ -63,7 +63,7 @@ final class PhabricatorAuditListView extends AphrontView {
return $summary;
}
// No summary, so either this is still impoting or just has an empty
// No summary, so either this is still importing or just has an empty
// commit message.
if (!$commit->isImported()) {

View file

@ -134,7 +134,7 @@ abstract class PhabricatorAuthController extends PhabricatorController {
// checks later on to make sure this account is valid for the intended
// operation. This requires edit permission for completeness and consistency
// but it won't actually be meaningfully checked because we're using the
// ominpotent user.
// omnipotent user.
$account = id(new PhabricatorExternalAccountQuery())
->setViewer(PhabricatorUser::getOmnipotentUser())

View file

@ -79,7 +79,7 @@ final class PhabricatorAuthRegisterController
}
if ($default_email !== null) {
// We should bypass policy here becase e.g. limiting an application use
// We should bypass policy here because e.g. limiting an application use
// to a subset of users should not allow the others to overwrite
// configured application emails.
$application_email = id(new PhabricatorMetaMTAApplicationEmailQuery())

View file

@ -226,7 +226,7 @@ final class PhabricatorAuthSSHKeyEditor
->addHeader('Thread-Topic', $phid);
// The primary value of this mail is alerting users to account compromises,
// so force delivery. In particular, this mail should still be delievered
// so force delivery. In particular, this mail should still be delivered
// even if "self mail" is disabled.
$mail->setForceDelivery(true);

View file

@ -51,7 +51,7 @@ final class PhabricatorAuthInviteTestCase extends PhabricatorTestCase {
$caught = $ex;
}
// This first time should accept the invite and verify the addresss.
// This first time should accept the invite and verify the address.
$this->assertTrue(
($caught instanceof PhabricatorAuthInviteRegisteredException));

View file

@ -74,7 +74,7 @@ final class PhabricatorAuthManagementRevokeWorkflow
if (!strlen($from) && !$is_everywhere) {
throw new PhutilArgumentUsageException(
pht(
'Specify the target to revoke credentals from with "--from" or '.
'Specify the target to revoke credentials from with "--from" or '.
'specify "--everywhere".'));
} else if (strlen($from) && $is_everywhere) {
throw new PhutilArgumentUsageException(

View file

@ -192,6 +192,7 @@ final class PhabricatorLDAPAuthProvider extends PhabricatorAuthProvider {
const KEY_VERSION = 'ldap:version';
const KEY_REFERRALS = 'ldap:referrals';
const KEY_START_TLS = 'ldap:start-tls';
// TODO: This is misspelled! See T13005.
const KEY_ANONYMOUS_USERNAME = 'ldap:anoynmous-username';
const KEY_ANONYMOUS_PASSWORD = 'ldap:anonymous-password';
const KEY_ALWAYS_SEARCH = 'ldap:always-search';

View file

@ -270,7 +270,7 @@ abstract class PhabricatorOAuth1AuthProvider
}
private function getHandshakeTokenKeyFromClientCode($client_code) {
// NOTE: This is very slightly coersive since the TemporaryToken table
// NOTE: This is very slightly coercive since the TemporaryToken table
// expects an "objectPHID" as an identifier, but nothing about the storage
// is bound to PHIDs.

View file

@ -108,7 +108,7 @@ abstract class PhabricatorApplication
*
* Launchable applications can be pinned to the home page, and show up in the
* "Launcher" view of the Applications application. Making an application
* unlauncahble prevents pinning and hides it from this view.
* unlaunchable prevents pinning and hides it from this view.
*
* Usually, an application should be marked unlaunchable if:
*

View file

@ -552,7 +552,7 @@ abstract class PhabricatorController extends AphrontController {
public function buildApplicationCrumbsForEditEngine() {
// TODO: This is kind of gross, I'm bascially just making this public so
// TODO: This is kind of gross, I'm basically just making this public so
// I can use it in EditEngine. We could do this without making it public
// by using controller delegation, or make it properly public.
return $this->buildApplicationCrumbs();

View file

@ -10,7 +10,7 @@ final class PhabricatorAccessControlTestCase extends PhabricatorTestCase {
public function testControllerAccessControls() {
$root = dirname(phutil_get_library_root('phabricator'));
require_once $root.'/support/PhabricatorStartup.php';
require_once $root.'/support/startup/PhabricatorStartup.php';
$application_configuration = new AphrontDefaultApplicationConfiguration();

View file

@ -134,7 +134,7 @@ final class PhabricatorCalendarImportEditEngine
$fields[] = id(new PhabricatorSelectEditField())
->setKey('frequency')
->setLabel(pht('Update Automatically'))
->setDescription(pht('Configure an automatic update frequncy.'))
->setDescription(pht('Configure an automatic update frequency.'))
->setTransactionType(
PhabricatorCalendarImportFrequencyTransaction::TRANSACTIONTYPE)
->setConduitDescription(pht('Set the automatic update frequency.'))

View file

@ -16,7 +16,7 @@ final class PhabricatorCalendarIconSet
'fa-plane' => pht('Travel'),
'fa-plus-square' => pht('Health / Appointment'),
'fa-rocket' => pht('Sabatical / Leave'),
'fa-rocket' => pht('Sabbatical / Leave'),
'fa-home' => pht('Working From Home'),
'fa-tree' => pht('Holiday'),
'fa-gamepad' => pht('Staycation'),

View file

@ -8,7 +8,7 @@
* calendar views - one for the conpherence calendar widget and one for the
* user profile calendar view. These have slight differences such as
* conpherence showing both a three day "today 'til 2 days from now" *and*
* a Sunday -> Saturday list, whilest the profile view shows a more simple
* a Sunday -> Saturday list, whilst the profile view shows a more simple
* seven day rolling list of events.
*/
final class CalendarTimeUtil extends Phobject {

View file

@ -23,7 +23,7 @@ final class PhabricatorCalendarEventFrequencyTransaction
// month, it means "the 30th of every month" as far as the RRULE is
// concerned. Such an event will not occur on months with fewer days.
// This is surprising, and proably not what the user wants. Instead,
// This is surprising, and probably not what the user wants. Instead,
// schedule these events relative to the end of the month: on the "-1st",
// "-2nd" or "-3rd" day of the month. For example, a monthly event on
// the 31st of a 31-day month translates to "every month, on the last
@ -66,7 +66,7 @@ final class PhabricatorCalendarEventFrequencyTransaction
if (!isset($valid[$value])) {
$errors[] = $this->newInvalidError(
pht(
'Event frequency "%s" is not valid. Valid frequences are: %s.',
'Event frequency "%s" is not valid. Valid frequencies are: %s.',
$value,
implode(', ', $valid)),
$xaction);

View file

@ -132,7 +132,7 @@ final class PhabricatorCalendarEventInviteTransaction
$this->renderHandleList($rem));
} else {
return pht(
'%s invited %s attendee(s): %s; uninvinted %s attendee(s): %s.',
'%s invited %s attendee(s): %s; uninvited %s attendee(s): %s.',
$this->renderAuthor(),
phutil_count($add),
$this->renderHandleList($add),
@ -161,7 +161,7 @@ final class PhabricatorCalendarEventInviteTransaction
} else {
return pht(
'%s updated the invite list for %s, invited %s: %s; '.
'uninvinted %s: %s.',
'uninvited %s: %s.',
$this->renderAuthor(),
$this->renderObject(),
phutil_count($add),

View file

@ -32,7 +32,7 @@ final class PhabricatorCalendarImportFrequencyTransaction
if (!isset($valid[$value])) {
$errors[] = $this->newInvalidError(
pht(
'Import frequency "%s" is not valid. Valid frequences are: %s.',
'Import frequency "%s" is not valid. Valid frequencies are: %s.',
$value,
implode(', ', $valid)),
$xaction);

View file

@ -85,7 +85,7 @@ final class PhabricatorStorageSetupCheck extends PhabricatorSetupCheck {
'be buffered into memory before being written to permanent '.
'storage. Phabricator needs memory available to store these '.
'chunks while they are uploaded, but PHP is currently configured '.
'to severly limit the available memory.'.
'to severely limit the available memory.'.
"\n\n".
'PHP processes currently have very little free memory available '.
'(%s). To work well, processes should have at least %s.'.

View file

@ -81,12 +81,15 @@ abstract class PhabricatorConfigSchemaSpec extends Phobject {
$engine->getNgramsSchemaKeys(),
$index_options);
// NOTE: The common ngrams table is not marked as an index table. It is
// tiny and persisting it across a restore saves us a lot of work garbage
// collecting common ngrams from the index after it gets built.
$this->buildRawSchema(
$engine->getApplicationName(),
$engine->getCommonNgramsTableName(),
$engine->getCommonNgramsSchemaColumns(),
$engine->getCommonNgramsSchemaKeys(),
$index_options);
$engine->getCommonNgramsSchemaKeys());
}
protected function buildRawSchema(

View file

@ -290,7 +290,7 @@ final class ConpherenceThreadQuery
->withObjectPHIDs(array_keys($conpherences))
->needHandles(true);
// We have to flip these for the underyling query class. The semantics of
// We have to flip these for the underlying query class. The semantics of
// paging are tricky business.
if ($this->afterTransactionID) {
$query->setBeforeID($this->afterTransactionID);

View file

@ -78,7 +78,7 @@ final class PhabricatorDashboardPanelTabsCustomField
public function renderEditControl(array $handles) {
// NOTE: This includes archived panels so we don't mutate the tabs
// when saving a tab panel that includes archied panels. This whole UI is
// when saving a tab panel that includes archived panels. This whole UI is
// hopefully temporary anyway.
$value = $this->getFieldValue();

View file

@ -217,7 +217,7 @@ abstract class DifferentialController extends PhabricatorController {
// by default and let the user toggle the rest. With modern messages,
// we can send the user to the Harbormaster detail page. Just show
// "a lot" of messages in legacy cases to try to strike a balance
// between implementation simplicitly and compatibility.
// between implementation simplicity and compatibility.
$legacy_messages = array_slice($legacy_messages, 0, 100);
$messages = array();

View file

@ -45,7 +45,7 @@ abstract class DifferentialHarbormasterField
// by default and let the user toggle the rest. With modern messages,
// we can send the user to the Harbormaster detail page. Just show
// "a lot" of messages in legacy cases to try to strike a balance
// between implementation simplicitly and compatibility.
// between implementation simplicity and compatibility.
$legacy_messages = array_slice($legacy_messages, 0, 100);
foreach ($legacy_messages as $message) {

View file

@ -106,7 +106,7 @@ final class DifferentialDiffEditor
* We run Herald as part of transaction validation because Herald can
* block diff creation for Differential diffs. Its important to do this
* separately so no Herald logs are saved; these logs could expose
* information the Herald rules are inteneded to block.
* information the Herald rules are intended to block.
*/
protected function validateTransaction(
PhabricatorLiskDAO $object,

View file

@ -699,7 +699,7 @@ final class DifferentialChangesetParser extends Phobject {
$hunk_parser->parseHunksForLineData($changeset->getHunks());
// Depending on the whitespace mode, we may need to compute a different
// set of changes than the set of changes in the hunk data (specificaly,
// set of changes than the set of changes in the hunk data (specifically,
// we might want to consider changed lines which have only whitespace
// changes as unchanged).
if ($ignore_all) {
@ -1192,11 +1192,11 @@ final class DifferentialChangesetParser extends Phobject {
* Mask - compute the actual lines that need to be shown (because they
* are near changes lines, near inline comments, or the request has
* explicitly asked for them, i.e. resulting from the user clicking
* "show more"). The $mask returned is a sparesely populated dictionary
* "show more"). The $mask returned is a sparsely populated dictionary
* of $visible_line_number => true.
*
* Depths - compute how indented any given line is. The $depths returned
* is a sparesely populated dictionary of $visible_line_number => $depth.
* is a sparsely populated dictionary of $visible_line_number => $depth.
*
* This function also has the side effect of modifying member variable
* new such that tabs are normalized to spaces for each line of the diff.

View file

@ -128,7 +128,7 @@ final class DifferentialModernHunk extends DifferentialHunk {
$this->setData($file->getPHID());
// NOTE: Because hunks don't have a PHID and we just load hunk data with
// the ominipotent viewer, we do not need to attach the file to anything.
// the omnipotent viewer, we do not need to attach the file to anything.
$result = $this->save();

View file

@ -442,7 +442,7 @@ final class DifferentialRevision extends DifferentialDAO
// For each path which the viewer owns a package for, find other packages
// which that authority can be used to force-accept. Once we find a way to
// force-accept a package, we don't need to keep loooking.
// force-accept a package, we don't need to keep looking.
$has_control = array();
foreach ($force_map as $path => $spec) {
$path_fragments = PhabricatorOwnersPackage::splitPath($path);
@ -891,7 +891,7 @@ final class DifferentialRevision extends DifferentialDAO
self::TABLE_COMMIT,
$this->getID());
// we have to do paths a little differentally as they do not have
// we have to do paths a little differently as they do not have
// an id or phid column for delete() to act on
$dummy_path = new DifferentialAffectedPath();
queryfx(

View file

@ -22,7 +22,7 @@ final class DifferentialResponsibleViewerFunctionDatasource
'summary' => pht('Use the current viewing user.'),
'description' => pht(
'Show revisions the current viewer is responsible for. This '.
'function inclues revisions the viewer is responsible for through '.
'function includes revisions the viewer is responsible for through '.
'membership in projects and packages.'),
),
);

View file

@ -479,7 +479,7 @@ final class DiffusionCommitController extends DiffusionController {
// chains of events). This should be rare, but does not indicate a bug
// or data issue.
// NOTE: We never query push logs in SVN because the commiter is always
// NOTE: We never query push logs in SVN because the committer is always
// the pusher and the commit time is always the push time; the push log
// is redundant and we save a query by skipping it.

View file

@ -338,7 +338,7 @@ final class DiffusionRepositoryEditEngine
->setIsCopyable(true)
->setDescription(pht('Track only these branches.'))
->setConduitDescription(pht('Set the tracked branches.'))
->setConduitTypeDescription(pht('New tracked branchs.'))
->setConduitTypeDescription(pht('New tracked branches.'))
->setValue($track_value),
id(new PhabricatorTextAreaEditField())
->setIsStringList(true)
@ -349,7 +349,7 @@ final class DiffusionRepositoryEditEngine
->setIsCopyable(true)
->setDescription(pht('Autoclose commits on only these branches.'))
->setConduitDescription(pht('Set the autoclose branches.'))
->setConduitTypeDescription(pht('New default tracked branchs.'))
->setConduitTypeDescription(pht('New default tracked branches.'))
->setValue($autoclose_value),
id(new PhabricatorTextEditField())
->setKey('importOnly')
@ -396,7 +396,7 @@ final class DiffusionRepositoryEditEngine
->setConduitDescription(
pht('Change symbol languages for this repository.'))
->setConduitTypeDescription(
pht('New symbol langauges.'))
pht('New symbol languages.'))
->setValue($object->getSymbolLanguages()),
id(new PhabricatorDatasourceEditField())
->setKey('symbolRepositoryPHIDs')

View file

@ -1230,7 +1230,7 @@ final class DiffusionCommitHookEngine extends Phobject {
// also look at author data (do the commits come from multiple different
// authors?) and commit date data (is the oldest commit more than 48 hours
// old), but we don't have immediate access to those and this simple
// heruistic might be good enough.
// heuristic might be good enough.
$commit_count = 0;
$type_commit = PhabricatorRepositoryPushLog::REFTYPE_COMMIT;

View file

@ -80,7 +80,7 @@ final class DiffusionGitLFSAuthenticateWorkflow
$lfs_uri = $repository->getGitLFSURI('info/lfs');
// Generate a temporary token to allow the user to acces LFS over HTTP.
// Generate a temporary token to allow the user to access LFS over HTTP.
// This works even if normal HTTP repository operations are not available
// on this host, and does not require the user to have a VCS password.

View file

@ -112,7 +112,7 @@ final class HeraldCommitAdapter
$phids[] = $repository_phid;
// NOTE: This is projects for the repository, not for the commit. When
// Herald evalutes, commits normally can not have any project tags yet.
// Herald evaluates, commits normally can not have any project tags yet.
$repository_project_phids = PhabricatorEdgeQuery::loadDestinationPHIDs(
$repository_phid,
$project_type);

View file

@ -178,7 +178,7 @@ abstract class DiffusionCommandEngine extends Phobject {
if (!$device) {
throw new Exception(
pht(
'Attempting to build a reposiory command (for repository "%s") '.
'Attempting to build a repository command (for repository "%s") '.
'as device, but this host ("%s") is not configured as a cluster '.
'device.',
$repository->getDisplayName(),

View file

@ -101,7 +101,7 @@ final class DiffusionMercurialWireProtocol extends Phobject {
/** If the server version is running 3.4+ it will respond
* with 'bundle2' capability in the format of "bundle2=(url-encoding)".
* Until we maange to properly package up bundles to send back we
* Until we manage to properly package up bundles to send back we
* disallow the client from knowing we speak bundle2 by removing it
* from the capabilities listing.
*

View file

@ -231,7 +231,7 @@ final class DiffusionRepositoryClusterEngine extends Phobject {
// no way to tell which one has the "right" data. If we pick wrong, we
// might erase some or all of the data in the repository.
// Since this is dangeorus, we refuse to guess unless there is only one
// Since this is dangerous, we refuse to guess unless there is only one
// device. If we're the only device in the group, we obviously must be
// a leader.
@ -252,7 +252,7 @@ final class DiffusionRepositoryClusterEngine extends Phobject {
'Repository "%s" exists on more than one device, but no device '.
'has any repository version information. Phabricator can not '.
'guess which copy of the existing data is authoritative. Promote '.
'a device or see "Ambigous Leaders" in the documentation.',
'a device or see "Ambiguous Leaders" in the documentation.',
$repository->getDisplayName()));
}

View file

@ -9,7 +9,7 @@
* low-level query can.
*
* This class can resolve the most common refs (commits, branches, tags) and
* can do so cheapy (by examining the database, without needing to make calls
* can do so cheaply (by examining the database, without needing to make calls
* to the VCS or the service host).
*/
final class DiffusionCachedResolveRefsQuery

View file

@ -69,7 +69,7 @@ final class DiffusionCommitQuery
/**
* Look up commits in a specific repository. Prefer
* @{method:withRepositoryIDs}; the underyling table is keyed by ID such
* @{method:withRepositoryIDs}; the underlying table is keyed by ID such
* that this method requires a separate initial query to map PHID to ID.
*/
public function withRepositoryPHIDs(array $phids) {

View file

@ -53,7 +53,7 @@ final class DiffusionCommitConcernTransaction
}
// Even if you've already raised a concern, you can raise again as long
// as the author requsted you verify.
// as the author requested you verify.
$state_verify = PhabricatorAuditCommitStatusConstants::NEEDS_VERIFICATION;
if ($this->isViewerFullyRejected($object, $viewer)) {

View file

@ -53,7 +53,7 @@ final class DiffusionCommitVerifyTransaction
throw new Exception(
pht(
'You can not request verification of this commit because no '.
'auditors have raised conerns with it.'));
'auditors have raised concerns with it.'));
}
}

View file

@ -64,7 +64,7 @@ abstract class DrydockBlueprintImplementation extends Phobject {
* is a coarse compatibility check between a lease and a resource.
*
* @param DrydockBlueprint Concrete blueprint to allocate for.
* @param DrydockResource Candidiate resource to allocate the lease on.
* @param DrydockResource Candidate resource to allocate the lease on.
* @param DrydockLease Pending lease that wants to allocate here.
* @return bool True if the resource and lease are compatible.
* @task lease
@ -76,7 +76,7 @@ abstract class DrydockBlueprintImplementation extends Phobject {
/**
* Acquire a lease. Allows resources to peform setup as leases are brought
* Acquire a lease. Allows resources to perform setup as leases are brought
* online.
*
* If acquisition fails, throw an exception.

View file

@ -100,7 +100,7 @@ final class DrydockAuthorization extends DrydockDAO
}
/**
* Apply external authorization effects after a user chagnes the value of a
* Apply external authorization effects after a user changes the value of a
* blueprint selector control an object.
*
* @param PhabricatorUser User applying the change.

View file

@ -241,7 +241,7 @@ final class DrydockLeaseUpdateWorker extends DrydockWorker {
// NOTE: We have not acquired the lease yet, so it is possible that the
// resource we just built will be snatched up by some other lease before
// we can acquire it. This is not problematic: we'll retry a little later
// and should suceed eventually.
// and should succeed eventually.
}
$resources = $this->rankResources($resources, $lease);
@ -261,7 +261,7 @@ final class DrydockLeaseUpdateWorker extends DrydockWorker {
if (!$allocated) {
throw new PhutilAggregateException(
pht(
'Unable to acquire lease "%s" on any resouce.',
'Unable to acquire lease "%s" on any resource.',
$lease->getPHID()),
$exceptions);
}
@ -725,7 +725,7 @@ final class DrydockLeaseUpdateWorker extends DrydockWorker {
// performed the read above and now, the resource might have closed, so
// we may activate leases on dead resources. At least for now, this seems
// fine: a resource dying right before we activate a lease on it should not
// be distinguisahble from a resource dying right after we activate a lease
// be distinguishable from a resource dying right after we activate a lease
// on it. We end up with an active lease on a dead resource either way, and
// can not prevent resources dying from lightning strikes.

View file

@ -199,7 +199,7 @@ abstract class DrydockWorker extends PhabricatorWorker {
$viewer = $this->getViewer();
// Don't reclaim a resource if it has been updated recently. If two
// leases are fighting, we don't want them to keep reclaming resources
// leases are fighting, we don't want them to keep reclaiming resources
// from one another forever without making progress, so make resources
// immune to reclamation for a little while after they activate or update.

View file

@ -119,7 +119,7 @@ final class PhabricatorFileDataController extends PhabricatorFileController {
// make this logic simpler and more consistent.
// Beyond making the policy check itself more consistent, this also makes
// sure we're consitent about returning HTTP 404 on bad requests instead
// sure we're consistent about returning HTTP 404 on bad requests instead
// of serving HTTP 200 with a login page, which can mislead some clients.
$viewer = PhabricatorUser::getOmnipotentUser();

View file

@ -24,7 +24,7 @@ final class PhabricatorFilesManagementCatWorkflow
'help' => pht(
'DANGEROUS. Attempt to salvage file content even if the '.
'integrity check fails. If an adversary has tampered with '.
'the file, the conent may be unsafe.'),
'the file, the content may be unsafe.'),
),
array(
'name' => 'names',

View file

@ -178,9 +178,17 @@ final class PhabricatorFile extends PhabricatorFileDAO
}
$tmp_name = idx($spec, 'tmp_name');
$is_valid = @is_uploaded_file($tmp_name);
if (!$is_valid) {
throw new Exception(pht('File is not an uploaded file.'));
// NOTE: If we parsed the request body ourselves, the files we wrote will
// not be registered in the `is_uploaded_file()` list. It's fine to skip
// this check: it just protects against sloppy code from the long ago era
// of "register_globals".
if (ini_get('enable_post_data_reading')) {
$is_valid = @is_uploaded_file($tmp_name);
if (!$is_valid) {
throw new Exception(pht('File is not an uploaded file.'));
}
}
$file_data = Filesystem::readFile($tmp_name);

View file

@ -56,7 +56,7 @@ final class PhabricatorFundApplication extends PhabricatorApplication {
return array(
FundDefaultViewCapability::CAPABILITY => array(
'caption' => pht('Default view policy for newly created initiatives.'),
'tempate' => FundInitiativePHIDType::TYPECONST,
'template' => FundInitiativePHIDType::TYPECONST,
),
FundCreateInitiativesCapability::CAPABILITY => array(
'default' => PhabricatorPolicies::POLICY_ADMIN,

View file

@ -50,7 +50,7 @@ final class FundInitiativeEditEngine
}
protected function getObjectName() {
return pht('Initivative');
return pht('Initiative');
}
protected function getObjectCreateCancelURI($object) {

View file

@ -3,6 +3,7 @@
final class HarbormasterBuildPlanDefaultViewCapability
extends PhabricatorPolicyCapability {
// TODO: This is misspelled! See T13005.
const CAPABILITY = 'harbomaster.plan.default.view';
public function getCapabilityName() {

View file

@ -142,7 +142,7 @@ final class HarbormasterSendMessageConduitAPIMethod
"=============\n".
"When you send Harbormaster a message, you must include a `type`, ".
"which describes the overall state of the build. For example, use ".
"`pass` to tell Harbomaster that a build completed successfully.".
"`pass` to tell Harbormaster that a build completed successfully.".
"\n\n".
"Supported message types are:".
"\n\n".
@ -155,7 +155,7 @@ final class HarbormasterSendMessageConduitAPIMethod
"message, but you can also send a `work` message to report intermediate ".
"results.\n\n".
"To provide unit test results, pass a list of results in the `unit` ".
"parameter. Each result shoud be a dictionary with these keys:".
"parameter. Each result should be a dictionary with these keys:".
"\n\n".
"%s".
"\n\n".

View file

@ -38,7 +38,7 @@ final class HarbormasterBuildStep extends HarbormasterDAO
// T6203/NULLABILITY
// This should not be nullable. Current `null` values indicate steps
// which predated editable names. These should be backfilled with
// default names, then the code for handling `null` shoudl be removed.
// default names, then the code for handling `null` should be removed.
'name' => 'text255?',
'stepAutoKey' => 'text32?',
),

View file

@ -236,7 +236,7 @@ final class LegalpadDocumentSignController extends LegalpadController {
// Use the last content update as the modified date. We don't want to
// show that a document like a TOS was "updated" by an incidental change
// to a field like the preamble or privacy settings which does not acutally
// to a field like the preamble or privacy settings which does not actually
// affect the content of the agreement.
$content_updated = $document_body->getDateCreated();

View file

@ -3,6 +3,7 @@
final class LegalpadDocumentPreambleTransaction
extends LegalpadDocumentTransactionType {
// TODO: This is misspelled! See T13005.
const TRANSACTIONTYPE = 'legalpad:premable';
public function generateOldValue($object) {

View file

@ -116,7 +116,7 @@ final class ManiphestReportController extends ManiphestController {
case ManiphestTaskMergedIntoTransaction::TRANSACTIONTYPE:
// NOTE: Merging a task does not generate a "status" transaction.
// We pretend it did. Note that this is not always accurate: it is
// possble to merge a task which was previously closed, but this
// possible to merge a task which was previously closed, but this
// fake transaction always counts a merge as a closure.
$oldv = $default_status;
$newv = $duplicate_status;
@ -762,7 +762,7 @@ final class ManiphestReportController extends ManiphestController {
// and equal distance in the past. This is so users can type "6 days" (which
// means "6 days from now") and get the behavior of "6 days ago", rather
// than no results (because the window epoch is in the future). This might
// be a little confusing because it casues "tomorrow" to mean "yesterday"
// be a little confusing because it causes "tomorrow" to mean "yesterday"
// and "2022" (or whatever) to mean "ten years ago", but these inputs are
// nonsense anyway.

View file

@ -13,4 +13,18 @@ final class ManiphestTaskHasDuplicateTaskEdgeType
return true;
}
public function getConduitKey() {
return 'task.merged-in';
}
public function getConduitName() {
return pht('Merged In');
}
public function getConduitDescription() {
return pht(
'The source task has had the destination task closed as a '.
'duplicate and merged into it.');
}
}

View file

@ -13,4 +13,19 @@ final class ManiphestTaskIsDuplicateOfTaskEdgeType
return true;
}
public function getConduitKey() {
return 'task.duplicate';
}
public function getConduitName() {
return pht('Closed as Duplicate');
}
public function getConduitDescription() {
return pht(
'The source task has been closed as a duplicate of the '.
'destination task.');
}
}

View file

@ -972,7 +972,7 @@ final class ManiphestTransactionEditor
$object_phid = $object->getPHID();
// We're doing layout with the ominpotent viewer to make sure we don't
// We're doing layout with the omnipotent viewer to make sure we don't
// remove positions in columns that exist, but which the actual actor
// can't see.
$omnipotent_viewer = PhabricatorUser::getOmnipotentUser();

View file

@ -63,7 +63,7 @@ final class PhabricatorMailManagementUnverifyWorkflow
echo tsprintf(
"%s\n",
pht(
'Address "%s" (owned by "%s") is already unveriifed.',
'Address "%s" (owned by "%s") is already unverified.',
$address,
$user->getUsername()));
continue;

View file

@ -255,7 +255,7 @@ abstract class PhabricatorMailReceiver extends Phobject {
/**
* Reduce an email address to its canonical form. For example, an adddress
* Reduce an email address to its canonical form. For example, an address
* like:
*
* "Abraham Lincoln" < ALincoln@example.com >

View file

@ -82,7 +82,7 @@ final class PhabricatorOwnersPackageTestCase extends PhabricatorTestCase {
// Now, add a more specific path to Package #1. This tests nested ownership
// in packages with weak dominion rules. This time, Package #1 should end
// up back on top, with Package #2 cedeing control to its more specific
// up back on top, with Package #2 ceding control to its more specific
// path.
$rows[] = array(
'id' => 1,

View file

@ -104,7 +104,7 @@ abstract class PassphraseCredentialType extends Phobject {
/**
* Return true if the provided credental requires a password to decrypt.
* Return true if the provided credential requires a password to decrypt.
*
* @param PhutilOpaqueEnvelope Credential secret value.
* @return bool True if the credential needs a password.

View file

@ -47,7 +47,7 @@ final class PassphraseSSHPrivateKeyTextCredentialType
pht(
'Decrypting SSH keys requires the `%s` binary, but it '.
'is not available in %s. Either make it available or strip the '.
'password fromt his SSH key manually before uploading it.',
'password from this SSH key manually before uploading it.',
'ssh-keygen',
'$PATH'));
}

View file

@ -67,7 +67,7 @@ final class PassphraseCredentialControl extends AphrontFormControl {
$user_credential->getName());
}
} catch (PhabricatorPolicyException $policy_exception) {
// Pull the credential with the ominipotent viewer so we can look up
// Pull the credential with the omnipotent viewer so we can look up
// the ID and provide the monogram.
$omnipotent_credential = id(new PassphraseCredentialQuery())
->setViewer(PhabricatorUser::getOmnipotentUser())

View file

@ -10,7 +10,7 @@ final class PhabricatorMentionRemarkupRule extends PhutilRemarkupRule {
// NOTE: The negative lookbehind prevents matches like "mail@lists", while
// allowing constructs like "@tomo/@mroch". Since we now allow periods in
// usernames, we can't resonably distinguish that "@company.com" isn't a
// usernames, we can't reasonably distinguish that "@company.com" isn't a
// username, so we'll incorrectly pick it up, but there's little to be done
// about that. We forbid terminal periods so that we can correctly capture
// "@joe" instead of "@joe." in "Hey, @joe.".

View file

@ -425,7 +425,7 @@ final class PhabricatorPeopleQuery
}
// If the user is set to "Available" for this event, don't consider it
// when computin their away status.
// when computing their away status.
if (!$invitee->getDisplayAvailability($event)) {
continue;
}
@ -492,7 +492,7 @@ final class PhabricatorPeopleQuery
// valid for that long.
// NOTE: This doesn't handle overlapping events with the greatest
// possible care. In theory, if you're attenting multiple events
// possible care. In theory, if you're attending multiple events
// simultaneously we should accommodate that. However, it's complex
// to compute, rare, and probably not confusing most of the time.

View file

@ -79,7 +79,7 @@ final class PhabricatorPeopleSearchEngine
->setOptions(
pht('(Show All)'),
pht('Show Only Unapproved Users'),
pht('Hide Unappproved Users'))
pht('Hide Unapproved Users'))
->setDescription(
pht(
'Pass true to find only users awaiting administrative approval, '.

View file

@ -407,7 +407,7 @@ final class PhabricatorUser
$token = substr($token, $breach_prelen + self::CSRF_SALT_LENGTH);
// When the user posts a form, we check that it contains a valid CSRF token.
// Tokens cycle each hour (every CSRF_CYLCE_FREQUENCY seconds) and we accept
// Tokens cycle each hour (every CSRF_CYCLE_FREQUENCY seconds) and we accept
// either the current token, the next token (users can submit a "future"
// token if you have two web frontends that have some clock skew) or any of
// the last 6 tokens. This means that pages are valid for up to 7 hours.
@ -1180,7 +1180,7 @@ final class PhabricatorUser
/**
* Get a scalar string identifying this user.
*
* This is similar to using the PHID, but distinguishes between ominpotent
* This is similar to using the PHID, but distinguishes between omnipotent
* and public users explicitly. This allows safe construction of cache keys
* or cache buckets which do not conflate public and omnipotent users.
*
@ -1459,7 +1459,7 @@ final class PhabricatorUser
id(new PhabricatorConduitSearchFieldSpecification())
->setKey('roles')
->setType('list<string>')
->setDescription(pht('List of acccount roles.')),
->setDescription(pht('List of account roles.')),
);
}

View file

@ -82,7 +82,7 @@ final class PhabricatorHandleList
if (!isset($this[$phid])) {
throw new Exception(
pht(
'Trying to create a new sublist of an existsing handle list, '.
'Trying to create a new sublist of an existing handle list, '.
'but PHID "%s" does not appear in the parent list.',
$phid));
}

View file

@ -3,7 +3,7 @@
/**
* Resolve a list of identifiers into PHIDs.
*
* This class simplifies the process of convering a list of mixed token types
* This class simplifies the process of converting a list of mixed token types
* (like some PHIDs and some usernames) into a list of just PHIDs.
*/
abstract class PhabricatorPHIDResolver extends Phobject {

View file

@ -361,7 +361,7 @@ final class PhortuneStripePaymentProvider extends PhortunePaymentProvider {
case 'error:duplicate_transaction':
case 'error:processing_error':
default:
// NOTE: These errors currently don't recevive a detailed message.
// NOTE: These errors currently don't receive a detailed message.
// NOTE: We can also end up here with "http:nnn" messages.
// TODO: At least some of these should have a better message, or be

View file

@ -124,7 +124,7 @@ final class PhrequentTimeBlock extends Phobject {
}
} else {
// Here, we've prematurely ended a deeper stratum. Merge higher
// stata. This looks like this:
// strata. This looks like this:
//
// V
// V

View file

@ -452,7 +452,7 @@ final class PhrictionTransactionEditor
$verb) {
$errors = array();
// NOTE: We use the ominpotent user for these checks because policy
// NOTE: We use the omnipotent user for these checks because policy
// doesn't matter; existence does.
$other_doc_viewer = PhabricatorUser::getOmnipotentUser();
$ancestral_slugs = PhabricatorSlug::getAncestry($object->getSlug());

View file

@ -257,7 +257,7 @@ final class PhabricatorPolicyFilter extends Phobject {
$filtered[$key] = $object;
}
// If we survied the primary checks, apply extended checks to objects
// If we survived the primary checks, apply extended checks to objects
// with extended policies.
$results = array();
$extended = array();

View file

@ -97,7 +97,7 @@ final class PhabricatorProjectColumnQuery
if ($proxy_phid !== null) {
$proxy = idx($proxies, $proxy_phid);
// Only attach valid proxies, so we don't end up getting surprsied if
// Only attach valid proxies, so we don't end up getting surprised if
// an install somehow gets junk into their database.
if (!($proxy instanceof PhabricatorColumnProxyInterface)) {
$proxy = null;

View file

@ -24,7 +24,7 @@ final class ProjectRemarkupRule extends PhabricatorObjectRemarkupRule {
protected function getObjectIDPattern() {
// NOTE: The latter half of this rule matches monograms with internal
// periods, like `#domain.com`, but does not match monograms with terminal
// periods, because they're probably just puncutation.
// periods, because they're probably just punctuation.
// Broadly, this will not match every possible project monogram, and we
// accept some false negatives -- like `#dot.` -- in order to avoid a bunch

View file

@ -5,7 +5,7 @@
*
* 1: To parse "Releeph: picks RQ<nn>" headers in commits created by
* arc-releeph so that RQs committed by arc-releeph have real
* PhabricatorRepositoryCommits associated with them (instaed of just the SHA
* PhabricatorRepositoryCommits associated with them (instead of just the SHA
* of the commit, as seen by the pusher).
*
* 2: If requestors want to commit directly to their release branch, they can

View file

@ -7,7 +7,7 @@ final class ReleephDefaultFieldSelector extends ReleephFieldSelector {
*
* TODO: This is a giant hacky mess because I am dumb and moved forward on
* Releeph changes with partial information. Recover from this as gracefully
* as possible. This obivously is an abomination. -epriestley
* as possible. This obviously is an abomination. -epriestley
*/
public static function isFacebook() {
return class_exists('ReleephFacebookKarmaFieldSpecification');

View file

@ -113,7 +113,7 @@ final class PhabricatorMercurialGraphStream
private function parseParents($parents, $target_rev) {
// The hg '{parents}' token is empty if there is one "natural" parent
// (predecessor local commit ID). Othwerwise, it may have one or two
// (predecessor local commit ID). Otherwise, it may have one or two
// parents. The string looks like this:
//
// 151:1f6c61a60586 154:1d5f799ebe1e

View file

@ -27,10 +27,10 @@
* // URIs are very unlikely to be the same repository.
* }
*
* Because a repository can be hosted at arbitrarly many arbitrary URIs, there
* Because a repository can be hosted at arbitrarily many arbitrary URIs, there
* is no way to completely prevent false negatives by only examining URIs
* (that is, repositories with totally different URIs could really be the same).
* However, normalization is relatively agressive and false negatives should
* However, normalization is relatively aggressive and false negatives should
* be rare: if normalization says two URIs are different repositories, they
* probably are.
*

View file

@ -703,7 +703,7 @@ final class PhabricatorRepositoryDiscoveryEngine
// new repository for the first time is less important than any other
// daemon task.
// If the repostitory has finished importing and we're just catching up
// If the repository has finished importing and we're just catching up
// on recent commits, we schedule discovery at COMMIT priority, which is
// slightly below the default priority.

View file

@ -90,7 +90,7 @@ final class PhabricatorRepositoryManagementThawWorkflow
$risk_message);
$is_force = $args->getArg('force');
$prompt = pht('Accept the possibilty of permanent data loss?');
$prompt = pht('Accept the possibility of permanent data loss?');
if (!$is_force && !phutil_console_confirm($prompt)) {
throw new PhutilArgumentUsageException(
pht('User aborted the workflow.'));

View file

@ -1875,7 +1875,7 @@ final class PhabricatorRepository extends PhabricatorRepositoryDAO
/**
* Retrieve the sevice URI for the device hosting this repository.
* Retrieve the service URI for the device hosting this repository.
*
* See @{method:newConduitClient} for a general discussion of interacting
* with repository services. This method provides lower-level resolution of
@ -2129,7 +2129,7 @@ final class PhabricatorRepository extends PhabricatorRepositoryDAO
if ($this->isGit()) {
// $_ENV does not populate in CLI contexts if "E" is missing from
// "variables_order" in PHP config. Currently, we do not require this
// to be configured. Since it may not be, explictitly bring expected Git
// to be configured. Since it may not be, explicitly bring expected Git
// environmental variables into scope. This list is not exhaustive, but
// only lists variables with a known impact on commit hook behavior.

View file

@ -362,7 +362,7 @@ final class PhabricatorRepositoryURI
return PhabricatorEnv::getEnvConfig('diffusion.ssh-port');
}
// If Phabricator is running on a nonstandard port, use that as the defualt
// If Phabricator is running on a nonstandard port, use that as the default
// port for URIs with the same protocol.
$is_http = ($protocol == self::BUILTIN_PROTOCOL_HTTP);

View file

@ -66,7 +66,7 @@ final class PhabricatorRepositoryWorkingCopyVersion
* may have committed and acknowledged a write on a node that lost the lock
* partway through the write and is no longer reachable.
*
* In particular, if a node loses its connection to the datbase the global
* In particular, if a node loses its connection to the database the global
* lock is released by default. This is a durable lock which stays locked
* by default.
*/

View file

@ -216,7 +216,7 @@ final class PhabricatorRepositoryMercurialCommitChangeParserWorker
$changes[$path]['changeType']
= DifferentialChangeType::TYPE_COPY_AWAY;
} else if ($existing_type == DifferentialChangeType::TYPE_ADD) {
// This change removes a diretory and replaces it with a file. Mark
// This change removes a directory and replaces it with a file. Mark
// it as "change" instead of "add".
$changes[$path]['changeType'] = DifferentialChangeType::TYPE_CHANGE;
}

View file

@ -359,7 +359,7 @@ abstract class PhabricatorApplicationSearchEngine extends Phobject {
* );
*
* Any unspecified fields (including custom fields and fields added
* automatically by infrastruture) will be put in the middle.
* automatically by infrastructure) will be put in the middle.
*
* @return list<string> Default ordering for field keys.
*/

View file

@ -5,7 +5,7 @@ abstract class PhabricatorSearchManagementWorkflow
protected function validateClusterSearchConfig() {
// Configuration is normally validated by setup self-checks on the web
// workflow, but users may reasonsably run `bin/search` commands after
// workflow, but users may reasonably run `bin/search` commands after
// making manual edits to "local.json". Re-verify configuration here before
// continuing.

View file

@ -80,7 +80,7 @@ final class PhabricatorMotivatorProfileMenuItem
private function getCatFacts() {
return array(
pht('Cats purr when they are happy, upset, or asleep.'),
pht('The first cats evolved on the savanah about 8,000 years ago.'),
pht('The first cats evolved on the savannah about 8,000 years ago.'),
pht(
'Cats have a tail, two feet, between one and three ears, and two '.
'other feet.'),
@ -111,7 +111,7 @@ final class PhabricatorMotivatorProfileMenuItem
pht(
'Not all cats can retract their claws, but most of them can.'),
pht(
'In the wild, cats and racoons sometimes hunt together in packs.'),
'In the wild, cats and raccoons sometimes hunt together in packs.'),
pht(
'The Spanish word for cat is "cato". The biggest cat is called '.
'"el cato".'),

View file

@ -143,7 +143,7 @@ abstract class PhabricatorSettingsPanel extends Phobject {
/**
* Return false to prevent this panel from being displayed or used. You can
* do, e.g., configuration checks here, to determine if the feature your
* panel controls is unavailble in this install. By default, all panels are
* panel controls is unavailable in this install. By default, all panels are
* enabled.
*
* @return bool True if the panel should be shown.

View file

@ -49,7 +49,7 @@ final class PhabricatorUserPreferencesQuery
* If no settings exist for a user, a new empty settings object with
* appropriate defaults is returned.
*
* @param bool True to generat synthetic preferences for missing users.
* @param bool True to generate synthetic preferences for missing users.
*/
public function needSyntheticPreferences($synthetic) {
$this->synthetic = $synthetic;

View file

@ -46,7 +46,7 @@ final class PhabricatorTimezoneSetting
throw new Exception(
pht(
'Timezone "%s" is not a valid timezone identiifer.',
'Timezone "%s" is not a valid timezone identifier.',
$value));
}

View file

@ -83,7 +83,7 @@ final class PhabricatorSubscriptionsEditController
} else {
// TODO: Eventually, get rid of this once everything implements
// PhabriatorApplicationTransactionInterface.
// PhabricatorApplicationTransactionInterface.
$editor = id(new PhabricatorSubscriptionsEditor())
->setActor($viewer)

View file

@ -763,7 +763,7 @@ abstract class PhabricatorEditEngine
* Load an object given a configured query.
*
* @param PhabricatorPolicyAwareQuery Configured query.
* @param list<const> List of required capabilitiy constants, or omit for
* @param list<const> List of required capability constants, or omit for
* defaults.
* @return object|null Object, or null if no such object exists.
* @task load
@ -1382,7 +1382,7 @@ abstract class PhabricatorEditEngine
* and that field is visible and editable for the user.
*
* For example, you can use it to test if a user is able to reassign tasks
* or not, prior to rendering dedicated UI for task reassingment.
* or not, prior to rendering dedicated UI for task reassignment.
*
* Note that this method does NOT test if the user can actually edit the
* current object, just if they have access to the related field.

Some files were not shown because too many files have changed in this diff Show more