dereuromark/cakephp-tools
A CakePHP plugin containing lots of useful and reusable tools
3.13.2
1.0M downloads/mo
#4643 most downloaded on Packagist
dereuromark/cakephp-tools
What this package is like to depend on
Last release 1 months ago
18 Jul 2026
Release timing varies
gaps range from 1 weeks to 4 months
Rarely documented
notes for 10 of 141 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
144 releases · first in 2013
15 releases in the last 12 months
see the full history below
Release timeline
144 releases · Sep 2013 to Jul 2026Releases
latest 60 of 144-
3.13.218 Jul 2026Release notes
Open source →Improvements
DateTime::lengthOfTime()/relLengthOfTime(): automatic mode now scales units up through weeks, months and years, capped by a newaccuracyoption (default 2), e.g.1 Week, 3 Daysor11 Years, 3 Months.relLengthOfTime()computes the difference calendar-exact viaDateInterval(months/years respect calendar lengths and leap years) and gains afromoption for a custom reference point. Relative unit words are translated with arelativemsgctxt for grammatically correct wording (e.g. German dative:Vor 4 Tagen). Singular output fixed (1 Dayinstead of1 Days), zero units are skipped. Legacy explicit-format engine kept for BC and extended withY/M/W/wcharacters. #338GravatarHelper: add ahashAlgooption (defaultsha256,md5supported) so callers can restore Gravatar's pre-2024 MD5 identifier for legacy accounts. Without it, the SHA-256 switch silently changes the generated default avatar (identicon, monsterid, ...) for every account that has no real Gravatar image. Unknown values fall back tosha256and the option never leaks into the URL or img attributes. #336
Full Changelog: 3.13.1...3.13.2
-
3.13.125 May 2026Release notes
Open source →Fixes
- Restore the entity generic on the
Tablebase class, so IdeHelper-generated Table subclass annotations and entity-typed finder return types resolve under PHPStan again (#334)
Improvements
- Port the LoginLink authenticator and identifier to cakephp/authentication v4 and declare a conflict with older majors (
<4.0.0), so the plugin can no longer be paired with an incompatible authentication version (#335)
Full Changelog: 3.13.0...3.13.1
- Restore the entity generic on the
-
3.13.025 May 2026Release notes
Open source →Fixes
- Honor camelCase DataPreparation.noTrim config key (#329)
Features
- Tokens can now persist per-type validity windows on each row, so login links, password resets, API tokens, and similar flows can expire differently without retroactively changing already-issued tokens (#332)
Full Changelog: 3.12.9...3.13.0
-
3.12.918 May 2026Release notes
Open source →Fixes
- Gravatar now uses SHA-256, encryption is idempotent, and
pregMatch()no longer splices UTF-8 incorrectly (#326) PasswordHasherFactorynow resolves app- and plugin-provided password hashers instead of being locked to theToolsplugin prefix, while still keeping the built-inDefaulthasher safe from being silently shadowed (#328)
Full Changelog: 3.12.8...3.12.9
- Gravatar now uses SHA-256, encryption is idempotent, and
-
3.12.804 May 2026Release notes
Open source →Fixes
- Stop rendering the
titleattribute unescaped inFormatHelper::neighbors(). The link options forcedescape => false, which in CakePHPHtmlHelperdisables escaping of both the link text and attribute values, so thetitleattribute rendered raw from arbitrary DB content (XSS surface). Switched toescapeTitle => falseso the icon HTML stays in the link text but attributes escape normally. Regression test covers<script>and&"payloads in title-field values. - Tighten the HTTP status check in
Tools\Model\Table\Table::_validUrl(). Both ternary branches returned'HTTP', and the[(200|301|302)]regex used a character class instead of an alternation — so it matched any status line containing one of( 0 1 2 3 |). Replaced with a hardcodedHTTP/prefix and real(200|301|302)/(404|999)alternations.
Improvements
- Pagination element is now CSP-compatible. The per-page limit
<select>no longer carries an inlineonchange="window.location.href=this.value"handler — replaced with adata-paginator-navigateattribute and a small delegatedchangelistener at the bottom of the element. The accompanying<script>block carries a CSP nonce sourced from thecspNoncerequest attribute, so apps with a strictscript-src 'self' 'nonce-...'policy can run it; falls back gracefully when no nonce is set. (Inline event handlers are blocked under strict CSP withoutunsafe-inline/unsafe-hashes, and the nonce directive does not cover them per the CSP spec — removing the attribute entirely is the only portable fix.) - Switched all remaining bare
__()calls in user-facing strings to__d('tools', ...)so translations resolve through the plugin's own i18n domain instead of leaking into the host app'sdefaultdomain. Affects four static labels intemplates/Admin/Helper/{chars,bitmasks}.phpand four dynamic title/icon strings inIconCollection,CommonHelper, andFormatHelper. Also refreshesresources/locales/tools.pot(the previous POT was ~6 years stale); existing language files are left for translators tomsgmergeagainst the new POT.
Full Changelog: 3.12.7...3.12.8
- Stop rendering the
-
3.12.720 Apr 2026Release notes
Open source →Fixes
- Enforce validity window in
TokensTable::useKey(). Previously an unused token stayed redeemable past its configured validity until the garbage collector ran — a real gap for magic-login, email-verification, and password-reset style flows.useKey()now rejects tokens wherecreated < now - validityunless marked unlimited.
Improvements
- Forward
TEntitytemplate throughTools\Model\Table\Tableso subclasses can type their entity for PHPStan. Requiresdereuromark/cakephp-shim3.8.4+ and CakePHP 5.3.4+.
Full Changelog: 3.12.6...3.12.7
- Enforce validity window in
-
3.12.619 Mar 2026Release notes
Open source →Fixes
- Fix
autoPrefixUrl()callingurlExists()with invalid URL when input already hashttps://protocol
Full Changelog: 3.12.5...3.12.6
- Fix
-
3.12.519 Mar 2026Release notes
Open source →Fixes
-
Add timeout to
urlExists()cURL request (#315)CURLOPT_TIMEOUT(5s) - total request timeoutCURLOPT_CONNECTTIMEOUT(3s) - connection timeoutCURLOPT_FOLLOWLOCATIONwithMAXREDIRS(3) - follow redirectscurl_close()- properly clean up handle
-
Add timeout to remaining HTTP requests (#316)
Utility::urlExists()fallback: 5s stream context timeoutUtility::getHeaderFromUrl(): 5s timeoutMime::getMimeTypeByUrl(): 5s timeoutMessage::_readFile(): 10s timeout
-
Fix
autoPrefixUrl()callingurlExists()with invalid URL- URLs with
https://are now returned as-is - URLs with
http://are properly upgraded by replacing the prefix - Prevents invalid URLs like
https://https://example.com
- URLs with
This prevents requests from hanging indefinitely when servers don't respond.
-
-
3.12.415 Mar 2026Release notes
Open source →Improvements
- Use
ServerRequest::clientIp()instead ofenv('REMOTE_ADDR')for proper proxy header handling
Full Changelog: 3.12.3...3.12.4
- Use
-
3.12.309 Mar 2026Release notes
Open source →Fixes
- Fix page action URLs to use dasherized format instead of camelCase
Enhancements
- Add dynamic
scopeandonDirtyoptions to SluggedBehavior
Full Changelog: 3.12.2...3.12.3
-
3.12.209 Feb 2026Nothing published for this version
-
3.12.128 Jan 2026Nothing published for this version
-
3.12.021 Nov 2025Nothing published for this version
-
3.11.210 Nov 2025Nothing published for this version
-
3.11.130 Oct 2025Nothing published for this version
-
3.11.014 Jul 2025Nothing published for this version
-
3.10.304 Jun 2025Nothing published for this version
-
3.10.219 May 2025Nothing published for this version
-
3.10.107 May 2025Nothing published for this version
-
3.10.019 Apr 2025Nothing published for this version
-
3.9.308 Apr 2025Nothing published for this version
-
3.9.205 Apr 2025Nothing published for this version
-
3.9.131 Dec 2024Nothing published for this version
-
3.9.005 Nov 2024Nothing published for this version
-
3.8.224 Sep 2024Nothing published for this version
-
3.8.111 Sep 2024Nothing published for this version
-
3.8.009 Sep 2024Nothing published for this version
-
3.7.004 Sep 2024Nothing published for this version
-
3.6.427 Jun 2024Nothing published for this version
-
3.6.311 Mar 2024Nothing published for this version
-
3.6.228 Feb 2024Nothing published for this version
-
3.6.123 Feb 2024Nothing published for this version
-
3.6.013 Feb 2024Nothing published for this version
-
3.5.007 Feb 2024Nothing published for this version
-
3.4.023 Jan 2024Nothing published for this version
-
3.3.004 Jan 2024Nothing published for this version
-
3.2.025 Dec 2023Nothing published for this version
-
3.1.211 Dec 2023Nothing published for this version
-
3.1.111 Dec 2023Nothing published for this version
-
3.1.027 Nov 2023Nothing published for this version
-
3.0.026 Oct 2023Nothing published for this version
-
3.0.0-RC03 Oct 2023 pre-releaseNothing published for this version
-
2.7.009 Sep 2024Nothing published for this version
-
2.6.217 Aug 2024Nothing published for this version
-
2.6.125 Oct 2023Nothing published for this version
-
2.6.025 Oct 2023Nothing published for this version
-
2.5.415 Mar 2023Nothing published for this version
-
2.5.314 Feb 2023Nothing published for this version
-
2.5.215 Dec 2022Nothing published for this version
-
2.5.115 Dec 2022Nothing published for this version
-
2.5.014 Dec 2022Nothing published for this version
-
2.4.202 Dec 2021Nothing published for this version
-
2.4.117 Nov 2021Nothing published for this version
-
2.4.002 Nov 2021Nothing published for this version
-
2.3.014 Apr 2021Nothing published for this version
-
2.2.126 Dec 2020Nothing published for this version
-
2.2.028 Nov 2020Nothing published for this version
-
2.1.301 Oct 2020Nothing published for this version
-
2.1.229 Aug 2020Nothing published for this version
-
2.1.117 Aug 2020Nothing published for this version