Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15313
Test Plan:
Applied these three changes (with D25144, D25145, D25146, D25147, D25151,
D25152, D25153 on top).
Afterwards end up with the unresolved exception covered by T15263.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15313
Differential Revision: https://we.phorge.it/D25163
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as
a general replacement.
In this specific case we use `phutil_nonempty_stringlike()` since we are not sure
if the variable `href` should be just a string or other objects.
In order not to leave these cases to chance, we have added a log line, which can be
removed in the future.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15303
Ref T15316
Test Plan:
Applied this change (on top of D25144, D25145, D25146, D25147, D25150,
D25142) and `/project/` rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: avivey, speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15303, T15316
Differential Revision: https://we.phorge.it/D25153
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15320
Test Plan: Applied this change and `/notification/query/advanced/` rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15320
Differential Revision: https://we.phorge.it/D25169
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15310
Test Plan:
Applied this change (on top of D25144, D25145, D25146, D25147, D25151,
D25152, D25153) and `/settings/panel/editor/` correctly rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15310
Differential Revision: https://we.phorge.it/D25160
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15319
Test Plan:
Applied this change (on top of D25147, D25153, D25167) and
`/people/editprofile/userid/` finally rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15319
Differential Revision: https://we.phorge.it/D25168
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15318
Test Plan:
Applied these five changes on top of D25147 and D25153, and both `/p/username/`
and `/people/manage/userid/` finally rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15318
Differential Revision: https://we.phorge.it/D25167
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15301
Test Plan: Applied this change (on top of D25150) and icons rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15301
Differential Revision: https://we.phorge.it/D25151
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15312
Test Plan:
Applied this change (on top of D25144, D25145, D25146, D25147, D25151, D25152, D25153 and `/project/query/active/` rendered correctly in web browser.
Tested surfing various pages with and without Maniphest's `maniphest.subtypes`.
If you need some example custom fields, this is an example:
```
[
{
"key": "default",
"name": "Task"
},
{
"key": "bug",
"name": "Bug"
},
{
"key": "log",
"name": "LogSpam"
},
{
"key": "deadline",
"name": "Deadline"
}
]
```
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15312
Differential Revision: https://we.phorge.it/D25162
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15302
Test Plan:
Applied these five changes (on top of D25144, D25145, D25146, D25147, D25151)
and `/maniphest/task/edit/form/default/` finally rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15302
Differential Revision: https://we.phorge.it/D25152
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15295
Test Plan: Applied these four changes (on top of D25144 and D25145) and `/dashboard/` finally rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15295
Differential Revision: https://we.phorge.it/D25146
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15296
Test Plan: Applied this change and Home page rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15296
Differential Revision: https://we.phorge.it/D25145
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15294
Test Plan: Applied these three changes and `/applications/` finally rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15294
Differential Revision: https://we.phorge.it/D25144
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15311
Test Plan:
Applied this change (on top of D25144, D25145, D25146, D25147, D25151,
D25152, D25153) and `Upload SSH Public key` dialog rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15311
Differential Revision: https://we.phorge.it/D25161
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15309
Test Plan:
Applied this change (on top of `D25144`, `D25145`, `D25146`, `D25147`, `D25150`,
`D25151`, `D25152`, `D25153`, `D25154`, `D25155`, `D25156`, `D25158` locally applied)
and the pages `/legalpad/edit/`, `/macro/create/`, `/settings/builtin/global/`
rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15309
Differential Revision: https://we.phorge.it/D25159
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15307
Test Plan:
Applied these two changes (on top `D25144`, `D25145`, `D25146`, `D25147`, `D25150`,
`D25151`, `D25152`, `D25153`, `D25154` locally applied) and `/conduit/` finally
rendered in web browser. Also the page /conduit/query/.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15307
Differential Revision: https://we.phorge.it/D25156
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15304
Test Plan:
Applied these four changes (on top of `D25144`, `D25145`, `D25146`, `D25147`, `D25150`,
`D25151`, `D25152`, `D25153`) and `/conpherence/` page finally rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15304
Differential Revision: https://we.phorge.it/D25154
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15308
Test Plan:
Applied this change (on top of `D25144`, `D25145`, `D25146`, `D25147`, `D25150`,
`D25151`, `D25152`, `D25153`, `D25154`, `D25155`) and `/config/module/` rendered
in web browser.
T15308
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15308
Differential Revision: https://we.phorge.it/D25158
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15305
Test Plan:
Applied these two changes (on top of `D25144`, `D25145`, `D25146`, `D25147`, `D25150`,
`D25151`, `D25152`, `D25153`, `D25154`)) and "Use Results -> Add Panel to Dashboard"
overlay dialog finally rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15305
Differential Revision: https://we.phorge.it/D25155
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.
Closes T15300
Test Plan: Applied these three changes (on top of D25144, D25145, D25146, D25147) and `/diffusion/` finally rendered in web browser.
Reviewers: O1 Blessed Committers, avivey
Reviewed By: O1 Blessed Committers, avivey
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15300
Differential Revision: https://we.phorge.it/D25150
Summary:
Fix numerous PHP 8.1 "strlen(null)" exceptions which block rendering the initial Account
Creation page in a fresh Phorge installation.
The strlen() was used in Phabricator to check if a generic value was a non-empty string.
For this reason, Phorge adopts phutil_nonempty_string() that checks that.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If your phutil_nonempty_string() throws an exception, just
report it to Phorge to evaluate and fix together that specific corner case.
Closes T15279
Test Plan: After these code changes the account creation page got displayed (though without CSS and JS).
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: avivey, speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15279
Differential Revision: https://we.phorge.it/D25137
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If your phutil_nonempty_string() throws an exception, just
report it to Phorge to evaluate and fix together that specific corner case.
Closes T15286
Test Plan: Applied these five changes and `/project/view/1/` finally rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15286
Differential Revision: https://we.phorge.it/D25140
Summary:
`strlen()` was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If your phutil_nonempty_string() throws an exception, just
report it to Phorge to evaluate and fix together that specific corner case.
Closes T15287
Test Plan: Applied these three changes and `/config/` finally rendered in web browser.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15287
Differential Revision: https://we.phorge.it/D25141
Summary:
See Q59. Fixes rP935d7120ee32.
Call sites should be happy to use PhutilURI when possible.
Test Plan: visit any Repository page. Before - exception, now - data.
Reviewers: O1 Blessed Committers!, valerio.bozzolan
Reviewed By: valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25139
Summary:
Fix numerous PHP 8.1 RuntimeExceptions caused by the deprecation of strlen(null).
The strlen() was used in Phabricator to check if a generic value was a non-empty string.
For this reason, Phorge adopts phutil_nonempty_string() that checks that.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If your phutil_nonempty_string() throws an exception, just
report it to Phorge to evaluate and fix together that specific corner case.
Closes T15264
Test Plan: Phorge homepage is displayed on PHP 8.1 after applying these changes
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15264
Differential Revision: https://we.phorge.it/D25132
Summary:
On a fresh installation with PHP 8.1, CSS does not load on the account creation page.
Closes T15283
Test Plan: After applying this change (and D25137), the account creation page is rendered correctly. See the screenshot in T15283
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15283
Differential Revision: https://we.phorge.it/D25138
Summary:
This change fixes the following recent JavaScript error:
Error: Empty ID passed to JX.$()!
The regression was introduced here:
90f9da643d
Closes T15272
Test Plan: - with this change I was able to open Conpherence Persistent Chat and Drop a file
Reviewers: O1 Blessed Committers, Dylsss, avivey
Reviewed By: O1 Blessed Committers, avivey
Subscribers: Dylsss, speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15272
Differential Revision: https://we.phorge.it/D25134
Summary:
When you visit the Members page of a Parent Subproject,
some actions are greyed out by design. And, if you click on
them, nothing really useful happens to continue with what
you want to do.
For example, see this page and click on "Join Project":
https://we.phorge.it/project/members/1/
After this change, the interface at least provides a link to
proceed to the next step of what you wanted to do - that is -
allowing to quickly list direct Subprojects and do something
more meaningful than that.
A/B for the "Join Project" view:
| Before | After |
|-----------|-----------|
| {F282337} | {F282331} |
A/B for the "Add Members" view:
| Before | After |
|-----------|-----------|
| {F282338} | {F282332} |
Just to be nice, this change adds some inline documentation
on some methods of AphrontDialogView used here.
Closes T15258
Test Plan:
- Create a Project (A) with a Subproject (B)
- Visit Members page of (A)
- Click on Join Project and click on the Blue Button
- Click on the Add Member and click on Blue Button
- in both cases it should get you to Subprojects list
Reviewers: O1 Blessed Committers, Matthew
Reviewed By: O1 Blessed Committers, Matthew
Subscribers: speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15258
Differential Revision: https://we.phorge.it/D25127
Summary:
Accessing a project's workboard URL of a non-existing workboard shows RunTimeException in PHP 8.1:
preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated
Closes T15262
Test Plan: Page whether to create a workboard for a project was displayed after this change
Reviewers: O1 Blessed Committers, avivey, valerio.bozzolan
Reviewed By: O1 Blessed Committers, avivey, valerio.bozzolan
Subscribers: avivey, speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15262
Differential Revision: https://we.phorge.it/D25131
Summary:
A previous change added a couple of Countdown-related classes:
7ed35123a3
This change updates the related library map (arc liberate) in order to
fix any related regression (like PhutilMissingSymbolException).
Closes T15271
Test Plan:
- you run `arc liberate` and the file does not change
- you do not see any `PhutilMissingSymbolException` exception
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15271
Differential Revision: https://we.phorge.it/D25133
Summary:
Add a new RemarkupMetadata class and use with upload button as well as drag and drop pathways.
With this change, files are now attached automatically to the object. This this could solve
several issues, for example when a person uploads a file but only that author is able to see it.
Ref T15106
Test Plan:
- Drag and drop file, upload file with button. Check that both files are attached with "attachedFilePHIDs" values.
- drop file in a Task description (now works)
- drop file in a Task comment (now works)
- drop file in an edited Task comment (still not supported)
- This was already tested in Wikimedia Foundation: https://phabricator.wikimedia.org/D1203
Reviewers: O1 Blessed Committers, avivey, Matthew
Reviewed By: O1 Blessed Committers, avivey, Matthew
Subscribers: MCPCN, avivey, speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Tags: #remarkup
Maniphest Tasks: T15106
Differential Revision: https://we.phorge.it/D25052
Summary:
This change adds the `countdown.create` capability to
allow to limit countdown creation.
This change comes from the Wikimedia Phabricator and
was originally proposed by v.bozzolan and implemented
by the kind user 20after4.
https://phabricator.wikimedia.org/T258599
Closes T15208
Ref T15081
Test Plan:
- go to the page /applications/view/PhabricatorCountdownApplication/
- play a bit with the "Can Create Countdowns" option
- note that it is respected
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, Matthew, Cigaryno
Tags: #countdown, #policy_archived
Maniphest Tasks: T15208, T15081
Differential Revision: https://we.phorge.it/D25101
Summary:
After this change I was able to generate again the Diviner
documentation from PHP 8.2 using the related command:
./bin/diviner generate
Closes T15255
Test Plan:
- run `./bin/diviner generate` - great success
- tested the advanced search in various ways - it still works
Reviewers: O1 Blessed Committers, Matthew
Reviewed By: O1 Blessed Committers, Matthew
Subscribers: Ekubischta, speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15226, T15255
Differential Revision: https://we.phorge.it/D25124
Summary:
We want users to use Ponder as primary support vector.
T15084
Test Plan: Generated diviner, saw that the reference works correctly.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25125
Summary:
Fix a regression introduced here:
96ae4ba13a
I reproduced this exception executing "svn commit" on a hosted repository.
That crash happened because the PHP getenv() function can return false.
But, that is a very terrible value that blasts the non-string-empty check.
So, now the default getenv() value is skipped, without causing problems.
Closes T15253
Ref T15190
Test Plan: - I've run `svn commit` and I have not encountered any issue now
Reviewers: O1 Blessed Committers, avivey
Reviewed By: O1 Blessed Committers, avivey
Subscribers: speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15253, T15190
Differential Revision: https://we.phorge.it/D25122
Summary:
After this change, if you have a deprecated git version,
now you see a related information config warning:
{F276840}
Having said that the git version 1.8.3.1 - that for example
is provided by CentOS 7 - is surely problematic;
Some sources indicate all git versions *before* 2.5.0 as not
able to handle the '--' escape argument. The '--' arg
is used to separate normal git flags from user arguments,
so that they cannot be mistakenly exchanged. Kind of:
git <flags> -- <arguments>
The problem is, Phabricator/Phorge at the moment executes
this kind of git commands when you surf a git repository from
the web interface:
git cat-file -t -- <hash>:<file>
But, if your git version does not support "--", you can
get yourself into unhappy situations since "--" could be
just interpreted as a "wrong value", causing other
considerations and misleading exceptions, such as:
This path was a submodule at <repo>:<hash>
If you have seen the above error while surfing a git repo,
and if you have 2.5.0 or before, and if you are sure that
the mentioned path it's not a submodule, you probably
need a git update.
It is not yet clear whether Phabricator/Phorge should
support the possibility of this lack of support for "--".
In the meanwhile, just update your git on the server.
AFAIK no particular version is required on your clients.
Related information:
- https://unix.stackexchange.com/a/740621/85666
- b48158ac94
If you disagree, please do not simply ignore the
warning but share your experience in the Task.
Ref T15179
Test Plan:
- open Phorge, you see no warnings since you are
already up to date. Nice.
- Otherwise, you see a nice config message, and you
can ignore it as usual.
Reviewers: O1 Blessed Committers, Cigaryno, avivey
Reviewed By: O1 Blessed Committers, Cigaryno, avivey
Subscribers: avivey, speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15179
Differential Revision: https://we.phorge.it/D25089
Summary:
Phutil is not yet loaded during preamble, so we can't use it.
This change fixes a regression introduced here, fixing PHP 8.1 support:
{96ae4ba13acbf0e2f8932e950a92af0495f034d7}
Ref T15064
Test Plan: Included test script.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15064
Differential Revision: https://we.phorge.it/D25114
Summary:
I noticed that - historically - setDownload() could also be used with
false, true, or other weird values to activate a download filename.
So, this change continues to give full compatibility to PHP 8.1 but
with extra validations.
This also adds a bit of inline documentation to put this more explicit.
For more context see the previous version:
{5952b0a31b6aac0718bc23aefe43560b9bfe8cc5}
{96ae4ba13acbf0e2f8932e950a92af0495f034d7}
Ref T15190
Test Plan:
- Drop a file in a comment, click, download
- See that it still works
Reviewers: O1 Blessed Committers, Cigaryno, avivey
Reviewed By: O1 Blessed Committers, Cigaryno, avivey
Subscribers: avivey, speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15190
Differential Revision: https://we.phorge.it/D25113
Summary:
This change introduces a builting query to easily list
Administrators of your beautiful Phorge instance:
{F277912}
Note that any builtin query can be disabled anytime or
reordered, so this is not a problem if you already have
a similar saved query. But probably you have not.
The goal is not to just "have a link" (this was already
possible) but to have a predictable link to be used in
any instance-agnostic document, including but not
limited to Diviner or Phorge's user interface messages.
Closes T15238
Test Plan: Visit /people/query/admin/ and enjoy.
Reviewers: O1 Blessed Committers, Cigaryno, Matthew
Reviewed By: O1 Blessed Committers, Cigaryno, Matthew
Subscribers: speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15238
Differential Revision: https://we.phorge.it/D25116
Summary:
The left part of a Removed Comment can contains User Badges that,
after this change, are more consistent with the new general softness.
| Before | Proposed |
|------------|-----------|
| {F277371} | {F277373} |
Probably five people in a million will notice this change, BUT,
these people will have a huge, deep, breath of relief, knowing that
Phorge takes care about their obsessive-compulsive impulses, to
have everything nice and consistent and neat. You are welcome!
Closes T15235
Test Plan:
- do something to deserve a Badge
- share a Comment somewhere (Maniphest?)
- delete that comment
- check that the badge is slightly softer
Reviewers: O1 Blessed Committers, avivey
Reviewed By: O1 Blessed Committers, avivey
Subscribers: speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15235
Differential Revision: https://we.phorge.it/D25112
Summary:
This small restyle makes any Removed Comment a little less
prominent than normal ones, with the goal of decreasing a
bit your in-page distractions and increase your individual
productivity in your business by at least 250 milliseconds
every 48 hours of hard work in front of your monitor.
| Before | After |
|---------------------|---------------------|
| {F274834,size=full} | {F274835,size=full} |
This implementation (which is called "Kasper on Diet")
contains these specific changes for Removed Comments:
- user icon visibility: reduced by ~50% (-> Kasper)
- black "trash" icon: reduced by ~50% (-> Diet)
- texts: visibility reduced by ~50%
- vertical padding: reduced from 16px down to 4px
Note that if your Phorge is under the Serious Business Mode,
it seems it is still technically possible to manually
activate the "Decaying Curse" proposal mentioned in the Task.
Closes T15192
Test Plan:
- Add a Comment "I love Phorge"
- Add a Comment "I love Phabricator"
- Mark the second Comment as Removed
- Call a person at your desk
- Plug that person to an eyeball tracker
If the general attention focuses first on a normal Comment and then
on the Removed Comment, this change works perfectly.
Reviewers: O1 Blessed Committers, Cigaryno, avivey
Reviewed By: O1 Blessed Committers, Cigaryno, avivey
Subscribers: speck, tobiaswiese, Matthew, Cigaryno
Tags: #comments
Maniphest Tasks: T15192
Differential Revision: https://we.phorge.it/D25096
Summary:
After this change, the page "/manage/" related to Diffusion
repositories has an "Actions" button for mobile users:
{F276113}
Before this change, that button was missing only from this
specific page, and so it was really difficult for them
(if not impossible) to edit repository's basic information:
{F276115}
Do not confuse the hamburger menu on the sidebar with this
"Actions". The hamburger contains queries like Active Repo,
All Repo, etc. Instead the Actions contains
Edit Basic Info, Allow Dangerous Changes, etc.
It seems the cause of this problem is originated from an
apparently incomplete rollback occurred in Sep 6 2017 from
Phabricator:
e1fd74ddb5
As you can see, the DiffusionRepositoryBasicsManagementPanel
was probably not completely restored from the previous
version, at least for the part related to the method
newActionList():
bb369c7b71
The method newActionList() was restored in every other
panel but no the one related to the Basics Management. So,
a new PhabricatorActionListView object was manually
created, but without generating an ID from the Celerity
utilities.
In short, this change assigns an ID to this Curtain, in
order to correctly generates a related "Actions" menu
again. Otherwise, on mobile the curtain (with all the
actions) is automatically hidden, without any alternative.
Closes T15067
Test Plan:
- Repository > Actions > Manage Repository
- Reduce the page until "Actions" appears (yeeh!)
Reviewers: O1 Blessed Committers, Cigaryno, avivey
Reviewed By: O1 Blessed Committers, Cigaryno, avivey
Subscribers: speck, tobiaswiese, Matthew, Cigaryno
Tags: #diffusion, #mobile
Maniphest Tasks: T15067
Differential Revision: https://we.phorge.it/D25109
Summary:
This patch changes a bit how your search results from Phriction
are described in the autocomplete component (the "Typehead"):
{F276843}
After this change, Phriction search results will also contain the word
"Wiki page" so that users can better understand what the result
actually is. Just like a Diffusion repository mentions that it's
a "Repository", and just like a Project mentions that it's a
"Project" and so on.
Before this change, the Typehead entries were only mentioning
the slug of that wiki page.
| Before | After |
| {F274820} | {F272278} |
It's unclear if the previous behavior was a mistake (since the
internal parameter of the Typehead is called "type", and so, it
is supposed to mention the application type, not the slug.
Anyway, as a compromise, the slug is still mentioned.
To be honest this is just an excuse to put the middle dot /
aka interpunct character in this project again. Yeah, here the
middle point was used as separator. The apparent reason is:
because the middle point was already in use elsewhere in Phorge.
The real reason is: I'm a lobbyist in a corporation that sells
interpuncts worldwide as our core business, and so, I designed
thisvil plan to put the following middle point - again - in
Phorge (evil laugh).
Closes T15213
Test Plan:
- Search "Change Log" in the up-right bar (or similar)
- You see "Wiki Page · change_log/" (or similar)
Reviewers: O1 Blessed Committers, Cigaryno, avivey
Reviewed By: O1 Blessed Committers, Cigaryno, avivey
Subscribers: avivey, speck, tobiaswiese, Matthew, Cigaryno
Tags: #phriction
Maniphest Tasks: T15213
Differential Revision: https://we.phorge.it/D25102
Summary:
This description was somehow broken since 2019:
{F276845}
Probably this was caused by a Remarkup breaking change introduced by this
specific XSS security fix:
{54bcbdaba94a3573e128c6498816dbfa41d3a9cb}
Maybe in the future the backtick operator will be supported again
in Remarkup. Or, maybe not. So, let's just workaround to make that
specific page "less exploded" again.
Closes T15230
Test Plan:
- visit the page /applications/view/PhabricatorSearchApplication/
- check that now the Remarkup is rendered perfectly
Reviewers: O1 Blessed Committers, Cigaryno, avivey
Reviewed By: O1 Blessed Committers, Cigaryno, avivey
Subscribers: avivey, speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15230
Differential Revision: https://we.phorge.it/D25110
Summary:
This is a fix for PHP 8.1 deprecation of strlen(NULL), for these Phorge components:
- scripts
- aphront
- project
The strlen() was used in Phabricator to check if a generic value was a non-empty string.
For this reason, Phorge adopts phutil_nonempty_string() that checks that.
Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If your phutil_nonempty_string() throws an exception, just
report it to Phorge to evaluate and fix together that specific corner case.
Closes T15223
Ref T15190
Ref T15064
Test Plan: - check with your big eyes that there are no obvious typos
Reviewers: O1 Blessed Committers, avivey
Reviewed By: O1 Blessed Committers, avivey
Subscribers: speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15223, T15190, T15064
Differential Revision: https://we.phorge.it/D25105
Summary:
This change avoids some unnecessary uses of the strlen() function,
actually fixing some deprecation warnings in PHP 8.2.
In short, this is the suggested universal replace:
-if(strlen($v))
+if(phutil_nonempty_string($v))
And, if you know PHP, this is also another adoptable replace, but
only for cases where you are sure that the string "0" is not useful:
-if(strlen($v))
+if($v))
As usual the optimal solution depends on the contest.
Other similar patches will probably follow.
Closes T15222
Ref T15190
Test Plan:
- for the first time in my life, with this change, the unit tests are passed in PHP 8.2
- check with your big eyes that there are no obvious typos
Reviewers: O1 Blessed Committers, avivey
Reviewed By: O1 Blessed Committers, avivey
Subscribers: avivey, speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15199, T15190, T15222
Differential Revision: https://we.phorge.it/D25104
Summary:
This change fixes a regression introduced here:
rP5e2b3677157889104a7e540d7772a04f13164037
Thank you to the user @dadalha for auditing that commit
and sharing a stack trace to easily fix the issue.
In short, if you see this exception you are affected:
```
EXCEPTION: (InvalidArgumentException)
Value provided to "replaceQueryParam()" for key "tags" is NULL.
Use "removeQueryParam()" to remove a query parameter.
at [<arcanist>/src/parser/PhutilURI.php:341]
```
This change just fixes that specific problem.
Closes T15221
Test Plan:
1. Create a new Project
2. Create a new Milestone inside
3. Create the Milestone's Workboard
4. Visit the Milestone's Workboard and note that now it works
Reviewers: O1 Blessed Committers, avivey
Reviewed By: O1 Blessed Committers, avivey
Subscribers: speck, tobiaswiese, Matthew, Cigaryno, dadalha
Tags: #workboard
Maniphest Tasks: T15221
Differential Revision: https://we.phorge.it/D25103