Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
278 commits
Select commit Hold shift + click to select a range
aa8d06d
Moar packages!
Jun 4, 2026
d148f05
Move the foundation sponsors into their own file.
Jun 4, 2026
8d38363
Comment out tagline for now
Jun 4, 2026
92f9ce0
Updates sync-pregen to copy into an untracked location
Jun 5, 2026
1a1c263
Pause the sponsors on hover. Import scripts using the header.
Jun 5, 2026
d52a8ce
Drop back to 8.2
Jun 5, 2026
e391b10
Major theming tweaks; break out reusable styles into their own component
Jun 5, 2026
14fc938
Include light and dark images
Jun 5, 2026
2542393
slightly moar pad, slightly moar elephpant
Jun 5, 2026
f0d7e52
Prep work for structured data version pages.
Jun 5, 2026
7517a70
Restore DO NOT MODIFY file warning to files I ... modified
Jun 5, 2026
9ce193c
Prebuilt release comparison file.
Jun 5, 2026
d935ac3
Add "PHP Developers" community.
Jun 5, 2026
e0f2fc3
don't need flags for now
Jun 6, 2026
3b241ab
update initial samples with short names
Jun 6, 2026
670132e
Cache get_all_branches
Jun 6, 2026
de92284
Ensure that OLDRELASES are defined into GLOBALS even if included else…
Jun 6, 2026
4696f1f
Start of structured data
Jun 6, 2026
5520eff
Include GST theme in standard headers
Jun 6, 2026
acd002a
Update RELEASES to force assign to globals
Jun 6, 2026
d518c75
Missed removing a flag
Jun 6, 2026
a7f1329
Partially build release comparisons
Jun 6, 2026
e933f5b
Introduce accept mapper, for eventual conversion to hashed assets
Jun 6, 2026
10d5893
support label not relevant in branch-meta
Jun 6, 2026
3103833
Save the short version in the version highlights builder.
Jun 6, 2026
dac66a8
foundation sponsors todo
Jun 6, 2026
6b4ec93
Sort releases in allReleaseDataByVersionByLabel
Jun 6, 2026
9491158
restore style
Jun 6, 2026
0db51d4
Utility helper for buffering
Jun 6, 2026
9bd32a7
Move release highlight data
Jun 7, 2026
3afa8c5
Move existing release announcements
Jun 7, 2026
bfb3820
Update more release announcements
Jun 7, 2026
a1d728b
Add compiled changelists
Jun 7, 2026
bf2eee8
Nobuild
Jun 7, 2026
0d4be50
Reverse order of nav items in announcement page
Jun 7, 2026
3e57e53
we don't need no templatation
Jun 7, 2026
20647d2
Move docker location
Jun 7, 2026
3c4b436
Docker should have been local copy
Jun 7, 2026
bdac289
Fix wrap on hash on release announcement page
Jun 7, 2026
5005037
Fix migration path and update index
Jun 7, 2026
8ba1498
Custom page header
Jun 7, 2026
90cf320
Remove distribution url prefixing
Jun 7, 2026
9078409
Updated compiled changelists
Jun 7, 2026
3063afb
Update news creation to filter previous versions
Jun 7, 2026
fe2c056
Animated banner helper
Jun 7, 2026
03ebe79
Remove all method until we need it... probably soon
Jun 7, 2026
42c7795
Remove parsed changelog references until we can get a proper build
Jun 7, 2026
09e4f24
Migration URL can go straight to the manual page.
Jun 7, 2026
43d0184
The var cache is a utility to help store variables that are compiled.
Jun 7, 2026
48abde1
Update the release highlights to use VarCache
Jun 7, 2026
5abf71d
Don't need these old changelists anymore now we've moved to VarCache …
Jun 7, 2026
d9cb09d
Announcement parser now uses varcache
Jun 7, 2026
9c80429
Update the metadata to releases namespace
Jun 7, 2026
cf0751d
Cache annotations
Jun 7, 2026
0d904db
Fix namespace update which did not update filepaths
Jun 7, 2026
ab64126
Include state detection in VersionData
Jun 7, 2026
63337e0
Missed a namespace change
Jun 7, 2026
897a49d
Move version date manipulations into VersionData handler.
Jun 8, 2026
7dc8be3
Misc file.
Jun 8, 2026
14268cb
How much I hate global variables...
Jun 8, 2026
d49fea7
Fix more issues with variable declaration at top level of files...
Jun 8, 2026
e1f6794
Attempt to eliminate all uses of the quasi-superglobal RELEASES and O…
Jun 8, 2026
d515b11
Allow passing DateTimeImmutables into format_interval.
Jun 8, 2026
e743ac2
Test support states in test-dates because it's there
Jun 8, 2026
84d0cdc
Update supported-versions with the new code.
Jun 8, 2026
e9ade6c
More trailing $RELEASES and $OLDRELEASES in /releases/index.php
Jun 8, 2026
1b2ba39
Fix auto refactor glitch on assets/images
Jun 8, 2026
c034025
Upgrade supported-versions SVG generator to use VersionData and wrap …
Jun 8, 2026
4fe2631
Add sorting and keying helpers to VersionData
Jun 8, 2026
d0f5757
Update releases/branches.php API to use VersionData
Jun 8, 2026
cfa18ac
Update eol.php to use VersionData
Jun 8, 2026
936df5e
Missed namespace update on retro-create-news.php
Jun 8, 2026
12cfa95
Wrap the release manager's GPG keys into an auto-loadable helper.
Jun 8, 2026
6e44aa4
Update thanks.php to rely upon return value from require, not a globa…
Jun 8, 2026
f6605f4
Docs and fixes for the release metadata
Jun 8, 2026
f3c8d86
Latest version bump
Jun 8, 2026
591ceb9
Better missing logo handling
Jun 8, 2026
fc499a6
Old NEWS file used to use - not .
Jun 8, 2026
a857d36
Move NewsParsingHelper
Jun 8, 2026
0c42e0e
Logo returns empty string
Jun 8, 2026
5c76cc0
Tweaks to VersionData loading
Jun 8, 2026
97dccf1
Builder helpers part 2
Jun 8, 2026
f88ff92
Break out the build step for the version highlights.
Jun 8, 2026
e33788d
Change the announcement location
Jun 8, 2026
4510d6f
Move release files
Jun 8, 2026
c104caf
full version
Jun 8, 2026
6e7fb5a
Create data loader and build step for announcements
Jun 8, 2026
7bd46bc
more build steppage
Jun 8, 2026
2cd6a7b
Remove the release announcements from the git repo.
Jun 8, 2026
b757116
Router hardening.
Jun 8, 2026
422491e
Fix source cache initializer
Jun 9, 2026
0565a7c
Add phpstan to composer
Jun 9, 2026
549a1d2
Additional tooling for dev container
Jun 9, 2026
58d78ee
Hello phpstan my old friend
Jun 9, 2026
f1d23b9
phpstan pass on ChangeLogDataLoader
Jun 9, 2026
aff2583
Filesystem helper, avoids var|false in static analysis
Jun 9, 2026
fe6cf5d
phpstan pass on ReleaseHighlightsDataLoader
Jun 9, 2026
e24e7c4
phpstan pass on SupportTimelineSvgGenerator, separated out config for…
Jun 9, 2026
d73b123
phpstan pass on PointReleaseData
Jun 9, 2026
b0c1eaa
phpstan pass on VersionData
Jun 9, 2026
286da97
phpstan pass on VersionData
Jun 9, 2026
dedc188
phpstan pass on VersionData
Jun 9, 2026
461f907
double docblock fix
Jun 9, 2026
9b8c7ce
Don't recreate HighlightArray
Jun 9, 2026
26a06ff
phpstan pass on ProjectGlobals
Jun 9, 2026
9d86fe0
bufferOutput throws if it cannot close buffer.
Jun 9, 2026
2bf631c
type annotation fix on SampleMultipartSegment
Jun 9, 2026
f4a54b6
Split out the version comparison functions
Jun 9, 2026
00ed66d
Split out the version comparison functions
Jun 9, 2026
008c856
More phpstan
Jun 9, 2026
f2b5b8c
More phpstan fixes
Jun 9, 2026
458a218
fix dateOverrides
Jun 9, 2026
a89c464
fix docblocks on VersionData branch overrides
Jun 9, 2026
c709616
simplify rekey
Jun 9, 2026
8c4bfe2
Make majorFeatureDescriptions be getter
Jun 9, 2026
1bd28c0
Lowercase create
Jun 9, 2026
ad56793
phpstan fixes for UserNotes
Jun 9, 2026
32d0013
More tweaks to VersionData _majorFeatureDescriptions
Jun 9, 2026
1d80c61
Types + default values on Sorter
Jun 9, 2026
ed4a9c0
more docblocks
Jun 9, 2026
dd02914
Clone with fixes
Jun 9, 2026
93c1e64
Push build
Jun 9, 2026
bbf14c8
Remove caching from the landing page - CDN handles it.
Jun 9, 2026
25690f7
SAPI protection on build.php
Jun 9, 2026
e5fe92b
Here be changes.txt
Jun 9, 2026
0dfed7f
Some changes.txt that got overwritten
Jun 9, 2026
3f186e5
Start of going all-in on build-time version+release data
Jun 9, 2026
6e4431a
8.0.4 never existed properly due to a security situation, need to bac…
Jun 9, 2026
02bd959
Finish migrating the change log loaders
Jun 9, 2026
b88e78d
Remove reference to release_get_latest - Did impact mirror-info.php, …
Jun 9, 2026
bfee04a
Removed version_compare from branches.inc
Jun 9, 2026
d67729f
Strip out more dead functions from branches.inc
Jun 9, 2026
57cfc9d
Remove get_eol_branches and move better logic into releases/index.php…
Jun 9, 2026
cf47053
Missed removal of EOL timestamp
Jun 9, 2026
7b88ea9
Upgrading to releases page
Jun 10, 2026
32ac895
Initial version of RM create-release command
Jun 10, 2026
f95fbfd
sources => source in data
Jun 10, 2026
5663104
Most of the createReleaseEntry is unused now.
Jun 10, 2026
77f6161
bumpRelease is no longer needed; releases are detected inline.
Jun 10, 2026
8340737
Tweaks to create-release.php
Jun 10, 2026
c69b352
Public assets cache.
Jun 10, 2026
d35b6e9
Update /releases/index.php for serialization modes to use new code
Jun 10, 2026
a34f69a
Merge remote-tracking branch 'origin/master' into revamp26
Jun 10, 2026
d64763f
Update lock
Jun 10, 2026
0c8d6b5
Remove base URL entirely
Jun 10, 2026
a2e91cf
Skip asset rewrite in dev mode
Jun 11, 2026
c2df65d
Break out release card components, redo releases page (WIP)
Jun 11, 2026
3a6156e
Update the atom feed
Jun 11, 2026
7a4369e
Note to self, todo: review feed.php
Jun 11, 2026
f59c99b
Deprecate the old methods and make it really clear they shouldn't be …
Jun 11, 2026
bfa0302
Updated how change logs are stored to include pre-generated html.
Jun 11, 2026
240b0bb
Lost track again but:
Jun 11, 2026
7567db7
Various icons that got missed from being committed.
Jun 11, 2026
89e0d01
Move the favicons into the /images/favicons directory
Jun 11, 2026
e2cc5f7
Godawful nasty hack to update pages without needing a complete rewrite.
Jun 11, 2026
0745227
Update git.*.php pages
Jun 11, 2026
47939d1
Community page with listing of all online communities.
Jun 11, 2026
fc5165d
Swap thanks.php page to use cards
Jun 11, 2026
7487730
Missing visit site off thanks.php
Jun 11, 2026
92d327f
Do not show the PHP: prefix in the title when forcing a title page
Jun 11, 2026
87210d0
update software.php and urlhowto.php
Jun 11, 2026
98ee159
update support.php page
Jun 11, 2026
4278611
Find a way to restore sidebar when forcing new view
Jun 11, 2026
f34ea2b
Update mirroring pages, including a new notice saying it's as-is.
Jun 11, 2026
fc81d4f
Update almost every other page with forced new style view and move m…
Jun 11, 2026
851a50f
Give all the archives the new flag too
Jun 11, 2026
1c6e37e
Relocate privacy.php, copyright.php to /site/policy/
Jun 11, 2026
18eae7b
Move sitemap.php but not sitemap.xml
Jun 11, 2026
0359654
Move /styles /js /fonts into /assets
Jun 11, 2026
571de5c
Okay... so we have a router now lol...
Jun 12, 2026
43320f6
Response tweaks
Jun 12, 2026
f6eb70c
Response tweaks
Jun 12, 2026
f8efc86
Changelog pages now redirect to /releases/major.x/changelog, place an…
Jun 12, 2026
dd833f7
Improve how themes can be templated.
Jun 12, 2026
7b68ed9
Better support explainer page
Jun 12, 2026
e2d1edf
Finish polish of support policy pages. Tweak "unsupported versions" t…
Jun 12, 2026
2a35189
Fix up mirroring pages (meh)
Jun 12, 2026
a8b390c
Redirect eol.php to support policy. Might be better going to main rel…
Jun 12, 2026
40038db
Update copyright and footer
Jun 12, 2026
011a3a7
Move the page that started all this.
Jun 12, 2026
5579bf4
Fix privacy policy link and rendering
Jun 12, 2026
1fad45d
A whole bunch more pages that I seemingly forgot to commit each one
Jun 12, 2026
b23ec01
Wrap downloads url
Jun 12, 2026
6c42ca2
We don't need these news files hanging out in releases.
Jun 12, 2026
fad55ba
Release template has been replaced
Jun 12, 2026
b1f6008
Add mentoring to contribution guide
Jun 12, 2026
5e886ca
Move various files into webroot
Jun 12, 2026
7902959
Get involved can get the wide view.
Jun 12, 2026
5078504
Support page was relocated to community
Jun 12, 2026
fc51b3b
Move more files into the webroot
Jun 12, 2026
aa3c155
Move credits file.
Jun 12, 2026
fc0aa85
Delete software page; not relevant
Jun 12, 2026
981cca0
Redo GPG keys
Jun 12, 2026
74a1303
Halp
Jun 12, 2026
1381737
Revert "don't need flags for now"
Jun 12, 2026
81cbff3
Docs page
Jun 12, 2026
05d7d58
Start of a top navigation...
Jun 12, 2026
bc80496
Start of community
Jun 12, 2026
0aa04d6
Events controllers
Jun 12, 2026
1e6ca37
Add a way to nerf default `a` styles by adding a .plaina class.
Jun 12, 2026
4557ae5
Better text on support policy
Jun 12, 2026
97bfb17
Remove old conferences page
Jun 12, 2026
efa9fac
Require routing to take place at the method level
Jun 12, 2026
41dd9e9
Harden parsing for classes
Jun 13, 2026
fbc9f73
move sandbox
Jun 13, 2026
88aab27
Eh, let's start off with Wide actually for the sandbox
Jun 13, 2026
ca35336
Another language tweak for releases.
Jun 13, 2026
afdff58
Add new fromJson to Response
Jun 13, 2026
21d6039
COnvert Releases apis to controllers
Jun 13, 2026
a4f2944
Merge remote-tracking branch 'refs/remotes/origin/master' into revamp26
Jun 13, 2026
ad61da9
Routing break-out, reverse routing.
Jun 13, 2026
d8005a8
phpstan fixes LogosController
Jun 13, 2026
b156208
phpstan fixes NewsHandler
Jun 13, 2026
0b24ad2
phpstan fixes CreditsController
Jun 13, 2026
61bfa39
phpstan fixes OnlineCommunityController
Jun 13, 2026
7449274
phpstan fixes for GpgKeysController (+ProjectGlobals::getDistribution…
Jun 13, 2026
57f804c
phpstan fixes for IndexController
Jun 13, 2026
3f43dd3
phpstan fixes for MirroringController
Jun 13, 2026
da3dcec
phpstan fixes for ChangeLogController
Jun 13, 2026
8061a57
$MYSITE elimination - Custom version pages
Jun 13, 2026
af7ba6f
Improved scheme and host matching
Jun 13, 2026
d9c8231
Eliminate the use of $MYSITE from urlhowto.php
Jun 13, 2026
95ae3e7
The great global $MYSITE massacre
Jun 13, 2026
51fc82a
Include layout.inc in autoload.php to facilitate SA of functions
Jun 13, 2026
f36a488
phpstan fixes for HighlightsController
Jun 13, 2026
aad773b
phpstan fixes for HighlightsController
Jun 13, 2026
2f9ee8d
phpstan fixes for ReleasesAboutSupportController.php
Jun 13, 2026
59f476e
More phpstan fixes a cross release pages and theme helpers
Jun 13, 2026
cb85302
add getPath to request
Jun 13, 2026
3e3fdb4
Strip out the BASE_PAG.
Jun 13, 2026
6613d37
Include => require once
Jun 13, 2026
48fd61c
Routing
Jun 13, 2026
940f612
Fix old /public presence
Jun 13, 2026
f026742
Fix .router.php not falling back to location when it's a directory
Jun 13, 2026
4e814b0
Migrate releases controller
Jun 13, 2026
dbbd001
Get rid of news2html
Jun 13, 2026
415b220
Rip out the references to $LANG (replaced with function call) and $us…
Jun 13, 2026
225bc29
These 2 old test files are now handled by routing
Jun 13, 2026
d5bb8bb
No more mirror
Jun 13, 2026
84c1791
Remove urlhowto.php - We don't want to encourage terrible URL hygine …
Jun 13, 2026
817b1c9
Try and strip out more mutating behaviour in autoload script
Jun 13, 2026
4961889
Dont need old sandbox
Jun 13, 2026
5e7abd9
Use Route::resolve in PageTheme
Jun 13, 2026
230127c
Crazy hack to import manual pages by live scraping them from php.net …
Jun 13, 2026
1dd48b6
Convert over the mailing lists
Jun 13, 2026
9e0a58e
Mailing list URL mapping
Jun 13, 2026
7cf85fe
phpstan fix issues in MailingListsIndexController.php
Jun 13, 2026
e934975
phpstan fix issues in ManualController.php
Jun 13, 2026
1b05d0e
Add mailing lists to community tab
Jun 13, 2026
45c5a2a
Move robots
Jun 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
46 changes: 46 additions & 0 deletions .docker/dev/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Development Docker
#
# Provides the main runtime engine as well as tooling for running
# during development
#
# NOTES:
# - Does not copy and files in as it is expected to be handled via a mount

FROM php:8.4-cli

# Codebase doesn't have production flag so we negate it instead with
# the DEVELOPMENT flag
ENV DEVELOPMENT=1

#
# install additional development tooling
#
RUN apt update \
&& apt-get install -y --no-install-recommends git unzip \
&& rm -rf /var/lib/apt/lists/*

#
# Composer is required for dev dependencies
#
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php -r "if (hash_file('sha384', 'composer-setup.php') === 'c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }" \
&& php composer-setup.php \
&& php -r "unlink('composer-setup.php');" \
&& mv composer.phar /usr/local/bin/composer

#
# node.js - used for socket.dev and other front-end tooling
#
RUN apt-get update && apt-get install -y curl gnupg ca-certificates \
&& mkdir -p /etc/apt/keyrings \
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
&& apt-get update && apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*

#
# Global dependencies and tools brought in via npm
#
RUN npm install -g socket

WORKDIR /app
13 changes: 13 additions & 0 deletions .docker/prod/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# "Production" Docker
#
# Provides the main runtime for PHP when deploying to a "Production"
# or "Testing" environment that needs a full container using
# the inbuilt server (not recommended).

FROM php:8.4-cli

# All of the files from the source location are copied into
# the /app folder
RUN mkdir /app
WORKDIR /app
COPY . /app
7 changes: 7 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# .dockerignore
.git
.gitmodules
.gitattributes
.idea
build-deploy.sh
/var/composer
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ node_modules/
/playwright-report/
/blob-report/
/playwright/.cache/
/releases/[0-9]*_[0-9]*_[0-9]*.php
/releases/[0-9]*_[0-9]*_[0-9]*_fr.php
/releases/[0-9]*_[0-9]*_[0-9]*_win32.php
25 changes: 24 additions & 1 deletion .router.php
Original file line number Diff line number Diff line change
@@ -1,15 +1,38 @@
<?php

use phpweb\HTTP\Request;
use phpweb\HTTP\RequestHandler;

require_once __DIR__ . '/src/autoload.php';

$_SERVER["SERVER_ADDR"] = $_SERVER["HTTP_HOST"];

$filename = $_SERVER["PATH_INFO"] ?? $_SERVER["SCRIPT_NAME"];

if (!file_exists($_SERVER["DOCUMENT_ROOT"] . $filename)) {
///* path-based routing takes precedence, */
$request = Request::fromGlobals();
new RequestHandler()->handleErrorRouting();

$wantedPath = realpath($_SERVER["DOCUMENT_ROOT"] . $filename);
if ($wantedPath === false || is_dir($wantedPath) || !str_starts_with($wantedPath, __DIR__ . '/')) {
require_once __DIR__ . '/error.php';

return;
}

/**
* Unfortunately, we do not yet have a dedicated public folder, meaning the entire directory
* structure is exposed.
*
* These rules try and lock it down some.
*/
foreach (RequestHandler::DENYLIST as $testRule) {
if (fnmatch(__DIR__ . '/' . $testRule, $wantedPath, FNM_CASEFOLD)) {
header('HTTP/1.0 403 Access Denied');
die('Access Denied');
}
}

/* This could be an image or whatever, so don't try to compress it */
ini_set("zlib.output_compression", 0);
return false;
3,882 changes: 0 additions & 3,882 deletions ChangeLog-4.php

This file was deleted.

Loading