Summary:
Phorge does not expose the location of the last call in unhandled exceptions on the web page. One has to open the error log or console to find the location.
The error message in the yellow box comes directly from PHP's `$throwable->getMessage()`, and the stacktrace comes directly from PHP's `$throwable->getTrace()`.
Thus manually concatenate the error message string with `$throwable->getFile()` and `$throwable->getLine()` to display the location of the last call but strip the absolute path not to expose server details.
Closes T15689
Test Plan:
Introduce a random PHP error and load the Phorge page.
For example, add `$chart_view += $chart_panel;` in src/applications/project/controller/PhabricatorProjectReportsController.php and go to http://phorge.localhost/project/reports/1/
Reviewers: O1 Blessed Committers, mainframe98, valerio.bozzolan
Reviewed By: O1 Blessed Committers, mainframe98, valerio.bozzolan
Subscribers: mainframe98, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15689
Differential Revision: https://we.phorge.it/D25955
Summary:
`revision-age-fresh`, `revision-age-old`, `revision-age-stale` were added in rPb50cdc6e439c4f2915a47cb40cd94425832c22a2.
Their usage was removed in rPd9f01d6fb7f50e707805bc059aa15dcafca05160 from `src/applications/differential/view/DifferentialRevisionListView.php`.
Test Plan: Grep the code for `revision-age`. No results.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25996
Summary:
Finally we have some auto-generated documentation for the page /conduit/method/transaction.search/ about the supported values of objectType.
This is useful since we have 70+ of them, and they are totally obscure to newcomers (and us, core team, lol).
{F3942084}
The already-existing exception messages now do not suggest anymore values that exist but are not supported (e.g. XACT).
Moreover, we handle an unmanaged exception in transaction.search, when the existing `objectType` is not supported (e.g. XACT).
Closes T16054
Closes T16057
Test Plan:
Visit the page /conduit/method/transaction.search/ and enjoy the new amazing auto-generated table.
From the same page, visit the test form and set objectType = "XACT" and Call Method. You do not see anymore this confusing exception:
get_class() expects parameter 1 to be object, null given
Instead, you finally see this informative exception message (similar to the already-existing ones):
In call to "transaction.search", specified "objectType" ("XACT") is not supported because it does not implement "newObject()". Valid object types are: ABND, ADEV, AINT, ANAM, ANET, ASRV, DIFF, DREV, BOOK, DRYB, FBAK, FITV, HMBD, HMCP, HMCS, HMBB, HRUL, HWBH, HWBR, TASK, NUAI, NUAQ, NUAS, CDTL, FPRV, AUTH, CTNM, AMSG, APAS, AKEY, BDGE, CEVT, CEXP, CIMP, CONF, CONP, CDWN, DSHB, DSHP, PRTL, FORM, FILE, LEGD, MCRO, APPE, OASC, OPKG, PPAK, PPUB, PVER, PSTE, USER, BLOG, POST, PHRL, PANL, PCOL, PROJ, WTRG, CMIT, RIDT, REPO, RURI, POLL, SPCE, PSET, BULK, PVAR, MOCK, AEML, ACNT, CART, PMRC, PAYM, PHPR, PSUB, WIKI, ANSW, QUES.
Additionally, you can verify that the new documentation and the new methods in general are NOT called for normal valid API requests, so, not affecting production performance. An example of a valid request is: objectType = "TASK".
Reviewers: O1 Blessed Committers, avivey
Reviewed By: O1 Blessed Committers, avivey
Subscribers: avivey, aklapper, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T16054, T16057
Differential Revision: https://we.phorge.it/D25988
Summary: Trivial but as I was looking into this code it cannot hurt I guess...
Test Plan: Manually check classes/types of parameters.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D26019
Summary:
The `E_STRICT` PHP constant is deprecated since PHP 8.4 per https://www.php.net/manual/en/migration84.deprecated.php.
Per https://wiki.php.net/rfc/deprecations_php_8_4#remove_e_strict_error_level_and_deprecate_e_strict_constant, the `E_STRICT` constant was still in use in-between PHP 7.0 and 7.4 for PHP's `mysqli` extension and PHP's `htmlentities()` function.
The `E_STRICT` notice was removed from PHP's `mysqli` extension in e895e96286 for PHP 7.4.0.
Since rP23a49eb403c9ea6c58f4ae2f22416e90a9d24c14, Phorge requires 7.2.25.
Phorge does not call PHP's `htmlentities()` function.
`E_STRICT` is a part of `E_ALL` since PHP 5.4.0 per https://github.com/php/php-src/blob/php-5.4.0/NEWS#L69, thus there is no gain in keeping it.
Closes T15989
Test Plan: None.
Reviewers: O1 Blessed Committers, avivey
Reviewed By: O1 Blessed Committers, avivey
Subscribers: avivey, keithzg, mainframe98, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15989
Differential Revision: https://we.phorge.it/D25887
Summary: Original URI is a 404. Thus link to functional URIs.
Test Plan: Open a web browser, fill in URIs, see where you end up on your journey.
Reviewers: O1 Blessed Committers, mainframe98, valerio.bozzolan
Reviewed By: O1 Blessed Committers, mainframe98, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D26004
Summary:
* `config-options-current-value`
** Added in https://we.phorge.it/rP25ca17da46348d974ffa9bc451a0a81ed6babbcf, usage removed in https://we.phorge.it/rP530145ba3be62b6c54b8f3bc8aca09f2f369697d by deleting `src/applications/config/controller/PhabricatorConfigGroupController.php`
Test Plan: Grep the code for each CSS selector (`grep --exclude="*.css" -R 'some-search-string' .`), also do partial searches, get no results.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D26002
Summary:
* slowvote-header-content
** Added in https://we.phorge.it/rP89ee928a51c72d9fda17a59f73b060a92cc0c665, usage removed in https://we.phorge.it/rPaa22a578d01b8b5c69c89b9dc4a370552534f6dd from `src/applications/slowvote/view/SlowvoteEmbedView.php`
Test Plan: Grep the code for each CSS selector (`grep --exclude="*.css" -R 'some-search-string' .`), also do partial searches, get no results.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D26003
Summary:
* `maniphest-task-updated`
** Added in rPdf0c3df3cc6dbaa151e1b32ff4e01052eb3dad3e, usage removed in rP018de5dec742b6a38d02710670c1dd30101f5b9f by deleting `src/applications/maniphest/view/ManiphestTaskSummaryView.php`
Test Plan: Grep the code for each CSS selector (`grep --exclude="*.css" -R 'some-search-string' .`), also do partial searches, get no results.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D26001
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.
```
ERROR 8192: strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [/var/www/html/phorge/phorge/src/applications/conpherence/query/ConpherenceFulltextQuery.php:58]
```
```
ERROR 8192: strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [/var/www/html/phorge/phorge/src/applications/conpherence/query/ConpherenceFulltextQuery.php:73]
```
Closes T16062
Test Plan: Go to a Conpherence room and search for an existing string.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T16062
Differential Revision: https://we.phorge.it/D25994
Summary:
`jxui-active`, `jxui-blue-background`, `jxui-example-container` and `jxui-red-border` were added in rP998d43e828b010ca0051ffab74108111826027f1.
Their usage was removed in rP7725d7cc45c7792610746b4a773e4cb12743d873.
Test Plan: Grep the codebase for `jxui`.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25993
Summary:
`ManiphestReportController` (which renders global `/maniphest/report/burn/`) wastes CPU cycles. Thus remove useless code.
It constructs table rows never to be shown: The code calculates rows and adds them via `$table = new AphrontTableView($rows)`, then defines `$panel = new PHUIObjectBoxView()` and does `$panel->setTable($table)` but a bit later `$panel = id(new PhabricatorProjectBurndownChartEngine())` overwrites that table and all its data.
This re-definition of `$panel` was introduced in rP5c1b91ab457db9f3db10d8cc5e07831512645ebb.
Its code creates a `PhabricatorProjectBurndownChartEngine` anyway, similar to `PhabricatorProjectReportsController`. So none of those expensive database queries are needed at all. Variables like `list($burn_x, $burn_y) = $this->buildSeries($data);` are never read since rPf8ebc71b8f217ed156f416ddb4cd028dcaa28174.
Bug: T16005
Test Plan:
1. Make sure `/applications/view/PhabricatorFactApplication/` is installed
2. Go to `/maniphest/report/burn/` for global view, go to some URL like `/maniphest/report/burn/?project=PHID-PROJ-1234567890abcdef` for per-project view
3. See that the "Burnup Rate" chart is rendered in the same way before and after applying this patch
4. Optionally, run `./bin/cache purge --all` (but seems not relevant here) and reload
5. Optionally, go to `/project/reports/1/` and as expected the burndown chart is the same as in step 2
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T16005
Differential Revision: https://we.phorge.it/D25902
Summary:
Add "clip-path" as progressive enhancement for deprecated "clip" property to be more future-proof.
See the Phorge task for details.
Closes T16046
Test Plan: Probably browse Phorge pages which use FontAwesome icons, plus test with a screenreader software? (I didn't.)
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T16046
Differential Revision: https://we.phorge.it/D25983
Summary:
Use regular sentence casing for a text that's not a title.
Follow-up of D25420.
Test Plan:
- Change your browser or operating system timezone to differ from the timezone in your Phorge settings
- Click the notice that Phorge shows at the bottom left about the timezone mismatch
- Confirm that the "ignore new setting" checkbox label has been changed as per the diff in this revision
Reviewers: valerio.bozzolan, aklapper, O1 Blessed Committers
Reviewed By: valerio.bozzolan, O1 Blessed Committers
Subscribers: tobiaswiese, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25986
Summary:
`PhrictionDocumentTitleTransaction` calls `$this->renderHandleLink()`.
`PhabricatorApplicationTransaction` defines that method `public function renderHandleLink($phid)`.
PhrictionDocumentTitleTransaction extends PhrictionDocumentVersionTransaction extends PhrictionDocumentTransactionType extends PhabricatorModularTransactionType extends Phobject. No PhabricatorApplicationTransaction in that ancestor tree. Thus this call will fail.
Thus replace `renderHandleLink()` with `renderHandle()` which accepts a PHID as its parameter (credits to mainframe98 for finding out).
Test Plan: Unclear how to trigger via the UI, so run static code analysis and read/grep the code.
Reviewers: O1 Blessed Committers, mainframe98, valerio.bozzolan
Reviewed By: O1 Blessed Committers, mainframe98, valerio.bozzolan
Subscribers: mainframe98, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Tags: #phriction
Differential Revision: https://we.phorge.it/D25752
Summary:
If one of *your* verified email addresses is invited in *your* ICS Calendar,
you are now imported as yourself, instead of being a "Private User".
For example, if you own a Google Calendar, and if you import that in
Phorge, and if your email is mentioned in the Invitees:
- you are not shown anymore as "Private User 1" but as yourself
- the "Busy" or "Available" badge is shown from your Profile
(instead of nothing), respecting the "Time Transparency"
RFC 5545 section 3.8.2.7 from your ICS event
https://icalendar.org/iCalendar-RFC-5545/3-8-2-7-time-transparency.html
- the widget "Profile Calendar" in your user page shows your imported
Event, instead of nothing. No "Clear Sailing ahead" anymore.
As usual - this happens only if the event happens today, tomorrow,
or the day after tomorrow.
Example situation:
User "test" imports a Calendar. An Event has two invited emails:
- 1 email is verified and belongs to the very same user "test"
- 1 email belongs to another user
| Before | After |
|-----------|-----------|
| {F324892} | {F324893} |
See that the calendar importer named "test" is not an alien anymore.
Allowing to match yourself makes sense because you trust your imported
Calendar file, and we trust your verified email addresses.
WE DO NOT MATCH OTHER USERS BUT THE CALENDAR OWNER.
Matching other users must involve serious privacy measures,
coherent with the rest of Phorge.
Closes T15564
Closes T15941
Test Plan:
Download this example ICS file:
{F2599125}
Replace the email `boz+asdlol@reyboz.it` with one of your verified email of your Phorge account.
Import the event in Phorge using {nav Calendar > Imports > Import Events > Import .ics File}
/calendar/import/edit/?importType=icsuri
Two imported events are created successfully:
- In the event "Very busy opaque" (25 December 2024):
- you are finally shown as "Busy"
- there is also another "Private user"
- In the other event "Very available transparent" (25 December 2024)
- you are finall shown as "Available"
- there is also another "Private user"
Then nuke these example events by visiting the import and "Delete Imported Events".
---
Try again from scratch in these alternatives:
- if you import the ICS file as-is:
- you get two "Private User" in all events (since none of the invitees matches one of your verified emails)
- if you import the ICS file, setting one of your un-verified emails:
- you get two "Private User" in all events (since none of the invitees matches one of your verified emails)
- if you import the ICS file, setting a verified email of *another* user:
- you get two "Private User" in all events (since none of the invitees matches one of your verified emails)
As additional test, from the file you can also manually set these events to today, tomorrow, or the day after tomorrow; so you can test the user profile's calendar widget, and see that finally it does not show "Clear sailing" anymore, but it shows your calendar invitations (if the ICS file contains one of your verified email - as already said):
{F2599178}
Reviewers: O1 Blessed Committers, aklapper
Reviewed By: O1 Blessed Committers, aklapper
Subscribers: aklapper, avivey, speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15564, T15941
Differential Revision: https://we.phorge.it/D25363
Summary:
The method `HarbormasterBuildMessageRestartTransaction::isFailed()` does not exist.
While there is a variety of classes that offer a public `isFailed()` method (`HarbormasterBuildStatus`, `HarbormasterBuildableStatus`, `HarbormasterBuild`, `HarbormasterBuildTarget`) which could have been meant instead (the git history provides no hints as this code has always been broken), the error message explicitly refers to a Build. Thus replace `!$this->isFailed()` with `!$build->isFailed()`.
Test Plan:
Run static code analysis; Read/grep the code.
Also, have a repository with at least an already-working Harbormaster Build Plan, and enable the option Restartable = "If Failed", and try to restart a failed build. After the patch it does not crash anymore.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Tags: #almanac_drydock_harbormaster
Differential Revision: https://we.phorge.it/D25749
Summary:
`min-device-pixel-ratio`/`device-pixel-ratio` do not exist.
For the records,
* Standard `min-resolution` has been supported since Firefox 16 released 08/2012, Opera 12.1 released 11/2012, Chromium 29 released 07/2013, and Edge 12 released 07/2015
* Safari 15.8 released 07/2022 still requires `-webkit-min-device-pixel-ratio`
* Non-standard `min--moz-device-pixel-ratio` syntax was supported from Firefox 4 to Firefox 15 according to https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-device-pixel-ratio
Test Plan:
* Run `/bin/celerity sprites`, check that icons on http://phorge.localhost/auth/config/new/ still render.
* Read CSS docs; probably install ancient browser versions if you don't trust documentation.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25972
Summary:
The second parameter in the message `%s updated %s attached file(s), added %s: %s; removed %s: %s; modified %s: %s.` did not take the number of modified files into account but only added and removed files.
Closes T15959
Test Plan:
Read the code.
Additionally, update and remove and modify files attached to a task and count.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15959
Differential Revision: https://we.phorge.it/D25892
Summary: PHPDoc standardized syntax for variadic function parameters in https://github.com/phpDocumentor/phpDocumentor/issues/629. Thus follow that syntax.
Test Plan:
* Check that Phorge docs still render as before: grep for `...` within src/applications/diviner, see that the only result writes and does not read
* Run `./bin/diviner generate --clean`, see that "Loading Objects" section on http://phorge.localhost/book/dev/class/LiskDAO/ looks the same before and after
* Run static code analysis, get no more parse errors which mention `...`
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25980
Summary:
When creating or renaming a project or a task, copy and paste can lead to unwanted whitespace.
Thus strip any whitespace from the beginning and end of the title string by using `trim()` when running `validateTransactions()`.
Test Plan:
* Create and rename projects and tasks with whitespace at the beginning and the end of their names. Confirm that the whitespace gets removed. Get correctly sorted database query search results, don't get notification mail saying `Foo added a parent task: Txxxx: Title .` anymore which annoys pedants like me.
* Create and rename projects and tasks by setting the title to include whitespace only. Confirm that the error about being empty is shown.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Tags: #maniphest, #projects
Differential Revision: https://we.phorge.it/D25835
Summary: Type in PHPDoc @param versus type in method signature mismatch. Thus correct PHPDoc.
Test Plan: Read the PHPDoc and the signature and compare types.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25977
Summary:
Per PHPStan static code analysis, currently
`Instanceof between PhabricatorSearchService and PhabricatorMySQLSearchHost will always evaluate to false`.
Per discussion in the task and per testing, make the check work.
Closes T15891
Test Plan: Probably set up a Phorge instance with recent MariaDB/MySQL, and set up a Phorge instance with ancient DB versions (MySQL 5.6.3 or older; MariaDB 10.0 or older) not supporting FULLTEXT indexes for InnoDB tables?
Reviewers: O1 Blessed Committers, 20after4
Reviewed By: O1 Blessed Committers, 20after4
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15891
Differential Revision: https://we.phorge.it/D25975
Summary: Fixes T16028
Test Plan:
Assert that `#js-draw-lib` (or any other project name with one or two characters followed by a non-word) links correctly. It was previously parsed as `#js -draw-lib`.
Repeat the test plan for D25838 and observe it still works
Reviewers: aklapper, O1 Blessed Committers, bekay, valerio.bozzolan
Reviewed By: O1 Blessed Committers, bekay, valerio.bozzolan
Subscribers: mainframe98, bekay, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T16028
Differential Revision: https://we.phorge.it/D25959
Summary:
Per rP719dd6d3f44245e935b21291a59338a819938c49 and previous rP6cedd4a95cfc23a1679400fb64863c49f24f2306, remove the `search_documentfield` table from initial creation (`quickstart.sql`) and Diviner database docs.
Pointed out in Q82.
Additional context:
MySQL 5.6.4 released 2011-12-20 "now supports FULLTEXT indexes for InnoDB tables" per https://forums.mysql.com/read.php?3,506409 and per https://downloads.mysql.com/docs/mysql-5.6-relnotes-en.pdf pages 230 and 233.
Per https://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf page 29, "Extended Support Ends" for "MySQL Database 5.6" in "Feb 2021".
MariaDB went for version 10 instead of 5.6 per https://mariadb.org/mariadb-10-0-and-mysql-5-6/; MariaDB 10.0 saw its End of Life date on "31 Mar 2019" per https://mariadb.org/about/#maintenance-policy
Test Plan:
* As an admin, go to `/config/issue/` which triggers `PhabricatorSetupCheck::runNormalChecks()` and thus runs database checks.
* Install a fresh instance of Phorge which runs quickstart.sql, for example setting `"storage.default-namespace": "test"` inside `conf/local/local.json` and see that things still works, like Phriction search by name etc.
Reviewers: O1 Blessed Committers, mainframe98, valerio.bozzolan
Reviewed By: O1 Blessed Committers, mainframe98, valerio.bozzolan
Subscribers: mainframe98, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25895
Summary:
`-moz-background-clip: padding` syntax was only supported until Firefox 3.6 according to https://web.archive.org/web/20130827100732/https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip. Firefox 4.0 released 03/2011 supports standard `background-clip: padding-box`.
The same docs also imply that `-webkit-background-clip: padding-box` currently used by Phorge was never supported by browsers. Per https://caniuse.com/mdn-css_properties_background-clip_padding-box, Chrome 4 released 10/2010 supports standard `background-clip: padding-box`.
Compare current `webroot/rsrc/css/phui/phui-image-mask.css` which does not have this old vendor-prefixed syntax.
Test Plan:
* Open the Conpherence top bar dropdown, select "Persistent Chat", see that its `.jx-scrollbar-handle` based scrollbar still works as expected.
* Read CSS docs. Probably install ancient browser versions if you don't trust documentation. Try https://jigsaw.w3.org/css-validator/ and don't spot issues.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25970
Summary:
* `.phui-timeline-preview-header` has never been used since introduction in rPdb66cd830d1b.
* Only use of `.phui-timeline-change-details` was removed in direct followup rP4e8e035de006.
Test Plan: Grep the code.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25918
Summary:
APC saw its last release in 2012.
It has been discontinued as PHP 5.5+ includes OpCache.
It has been superseded by APCu for object caching.
See https://pecl.php.net/package-info.php?package=APC
Phorge requires PHP 7.2.
Thus remove any references to APC.
Also note that "If APCu is installed, it reports that APC is installed" does not hold true anymore: In PHP 8.3, "php -m" correctly reports "apcu".
Test Plan:
* Make sure APCU is not installed, see `PHP Extension "APCu" Not Installed" under "Unresolved Setup Issues" as an admin
* Apply patch, still see same issue listed.
* Install `php-pecl-apcu` package on Fedora system; see that now the issue is not listed anymore under "Unresolved Setup Issues"
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25950
Summary:
`PhabricatorEmailPreferencesSettingsPanel::getAllEditorsWithTags()` queries for all classes extending `PhabricatorApplicationTransactionEditor` and having `getMailTagsMap()` to then pull their editor application class. Thus return the correct editor application class.
Followup to rP821708414e.
`grep -r "('PhabricatorApplicationTransactionEditor'" .` shows only a single result in the Phorge codebase (this `PhutilClassMapQuery->setAncestorClass('PhabricatorApplicationTransactionEditor')` call) so I assume there will be no unwanted side effects.
Closes T16002
Test Plan:
* Uninstall Audit on `/applications/view/PhabricatorAuditApplication/`
* Check for `Audits` section on `/settings/panel/emailpreferences/`
* Re-install Audit and try random actions on a commit like: Accept commit, Raise a concern, Change Project Tags, award token, Subscribe, Unsubscribe, Resign as Auditor, no regressions
Reviewers: O1 Blessed Committers, mainframe98, valerio.bozzolan
Reviewed By: O1 Blessed Committers, mainframe98, valerio.bozzolan
Subscribers: mainframe98, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T16002
Differential Revision: https://we.phorge.it/D25894
Summary:
Configuring SMTP for Gmail as described will trigger
"535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 https://support.google.com/mail/?p=BadCredentials"
GMail only supports OAuth and 2FA/App Passwords these days; the "less secure apps" option (which would be needed for the described SMTP setup) has been removed.
Test Plan:
Follow the docs; set up `cluster.mailers` config setting in Phorge; run `./bin/mail send-test --to admin --subject subject < ~/foo` and fail.
Optionally, watch https://www.youtube.com/watch?v=Y_u5KIeXiVI for your personal corporate excitement.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25911
Summary:
Passing `null` to `preg_match()` is deprecated behavior since PHP 8.1.
Some clients do not pass a `User-Agent` HTTP header so `$agent` is null.
Thus only call `preg_match()` when `$agent` is set.
```
ERROR 8192: preg_match(): preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated
#0 preg_match(string, NULL) called at [<phorge>/src/view/page/PhabricatorStandardPageView.php:629]
```
Closes T15829
Test Plan: Access a task page etc in a browser which does not set a `User-Agent` HTTP Header string.
Reviewers: O1 Blessed Committers, mainframe98, valerio.bozzolan
Reviewed By: O1 Blessed Committers, mainframe98, valerio.bozzolan
Subscribers: mainframe98, slip, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15829
Differential Revision: https://we.phorge.it/D25868
Summary:
The W3C CSS validator throws `Value Error : cursor normal is not a cursor value : normal`.
`normal` is not a valid value for `cursor`; likely `default` was meant.
See https://developer.mozilla.org/en-US/docs/Web/CSS/cursor
Test Plan: Paste `phui-oi-list-view.css` into https://jigsaw.w3.org/css-validator/ and read some CSS docs.
Reviewers: O1 Blessed Committers, valerio.bozzolan
Reviewed By: O1 Blessed Committers, valerio.bozzolan
Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Differential Revision: https://we.phorge.it/D25919