PackageTrack
Sign in Get early access

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 2026
2014 2016 2018 2020 2022 2024 2026
Release Pre-release

Releases

latest 60 of 144
  1. 3.13.2 18 Jul 2026
    Release notes

    Improvements

    • DateTime::lengthOfTime() / relLengthOfTime(): automatic mode now scales units up through weeks, months and years, capped by a new accuracy option (default 2), e.g. 1 Week, 3 Days or 11 Years, 3 Months. relLengthOfTime() computes the difference calendar-exact via DateInterval (months/years respect calendar lengths and leap years) and gains a from option for a custom reference point. Relative unit words are translated with a relative msgctxt for grammatically correct wording (e.g. German dative: Vor 4 Tagen). Singular output fixed (1 Day instead of 1 Days), zero units are skipped. Legacy explicit-format engine kept for BC and extended with Y/M/W/w characters. #338
    • GravatarHelper: add a hashAlgo option (default sha256, md5 supported) 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 to sha256 and the option never leaks into the URL or img attributes. #336

    Full Changelog: 3.13.1...3.13.2

    Open source →
  2. 3.13.1 25 May 2026
    Release notes

    Fixes

    • Restore the entity generic on the Table base 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

    Open source →
  3. 3.13.0 25 May 2026
    Release notes

    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

    Open source →
  4. 3.12.9 18 May 2026
    Release notes

    Fixes

    • Gravatar now uses SHA-256, encryption is idempotent, and pregMatch() no longer splices UTF-8 incorrectly (#326)
    • PasswordHasherFactory now resolves app- and plugin-provided password hashers instead of being locked to the Tools plugin prefix, while still keeping the built-in Default hasher safe from being silently shadowed (#328)

    Full Changelog: 3.12.8...3.12.9

    Open source →
  5. 3.12.8 04 May 2026
    Release notes

    Fixes

    • Stop rendering the title attribute unescaped in FormatHelper::neighbors(). The link options forced escape => false, which in CakePHP HtmlHelper disables escaping of both the link text and attribute values, so the title attribute rendered raw from arbitrary DB content (XSS surface). Switched to escapeTitle => false so 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 hardcoded HTTP/ 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 inline onchange="window.location.href=this.value" handler — replaced with a data-paginator-navigate attribute and a small delegated change listener at the bottom of the element. The accompanying <script> block carries a CSP nonce sourced from the cspNonce request attribute, so apps with a strict script-src 'self' 'nonce-...' policy can run it; falls back gracefully when no nonce is set. (Inline event handlers are blocked under strict CSP without unsafe-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's default domain. Affects four static labels in templates/Admin/Helper/{chars,bitmasks}.php and four dynamic title/icon strings in IconCollection, CommonHelper, and FormatHelper. Also refreshes resources/locales/tools.pot (the previous POT was ~6 years stale); existing language files are left for translators to msgmerge against the new POT.

    Full Changelog: 3.12.7...3.12.8

    Open source →
  6. 3.12.7 20 Apr 2026
    Release notes

    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 where created < now - validity unless marked unlimited.

    Improvements

    • Forward TEntity template through Tools\Model\Table\Table so subclasses can type their entity for PHPStan. Requires dereuromark/cakephp-shim 3.8.4+ and CakePHP 5.3.4+.

    Full Changelog: 3.12.6...3.12.7

    Open source →
  7. 3.12.6 19 Mar 2026
    Release notes

    Fixes

    • Fix autoPrefixUrl() calling urlExists() with invalid URL when input already has https:// protocol

    Full Changelog: 3.12.5...3.12.6

    Open source →
  8. 3.12.5 19 Mar 2026
    Release notes

    Fixes

    • Add timeout to urlExists() cURL request (#315)

      • CURLOPT_TIMEOUT (5s) - total request timeout
      • CURLOPT_CONNECTTIMEOUT (3s) - connection timeout
      • CURLOPT_FOLLOWLOCATION with MAXREDIRS (3) - follow redirects
      • curl_close() - properly clean up handle
    • Add timeout to remaining HTTP requests (#316)

      • Utility::urlExists() fallback: 5s stream context timeout
      • Utility::getHeaderFromUrl(): 5s timeout
      • Mime::getMimeTypeByUrl(): 5s timeout
      • Message::_readFile(): 10s timeout
    • Fix autoPrefixUrl() calling urlExists() 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

    This prevents requests from hanging indefinitely when servers don't respond.

    Open source →
  9. 3.12.4 15 Mar 2026
    Release notes

    Improvements

    • Use ServerRequest::clientIp() instead of env('REMOTE_ADDR') for proper proxy header handling

    Full Changelog: 3.12.3...3.12.4

    Open source →
  10. 3.12.3 09 Mar 2026
    Release notes

    Fixes

    • Fix page action URLs to use dasherized format instead of camelCase

    Enhancements

    • Add dynamic scope and onDirty options to SluggedBehavior

    Full Changelog: 3.12.2...3.12.3

    Open source →
  11. 3.12.2 09 Feb 2026

    Nothing published for this version

  12. 3.12.1 28 Jan 2026

    Nothing published for this version

  13. 3.12.0 21 Nov 2025

    Nothing published for this version

  14. 3.11.2 10 Nov 2025

    Nothing published for this version

  15. 3.11.1 30 Oct 2025

    Nothing published for this version

  16. 3.11.0 14 Jul 2025

    Nothing published for this version

  17. 3.10.3 04 Jun 2025

    Nothing published for this version

  18. 3.10.2 19 May 2025

    Nothing published for this version

  19. 3.10.1 07 May 2025

    Nothing published for this version

  20. 3.10.0 19 Apr 2025

    Nothing published for this version

  21. 3.9.3 08 Apr 2025

    Nothing published for this version

  22. 3.9.2 05 Apr 2025

    Nothing published for this version

  23. 3.9.1 31 Dec 2024

    Nothing published for this version

  24. 3.9.0 05 Nov 2024

    Nothing published for this version

  25. 3.8.2 24 Sep 2024

    Nothing published for this version

  26. 3.8.1 11 Sep 2024

    Nothing published for this version

  27. 3.8.0 09 Sep 2024

    Nothing published for this version

  28. 3.7.0 04 Sep 2024

    Nothing published for this version

  29. 3.6.4 27 Jun 2024

    Nothing published for this version

  30. 3.6.3 11 Mar 2024

    Nothing published for this version

  31. 3.6.2 28 Feb 2024

    Nothing published for this version

  32. 3.6.1 23 Feb 2024

    Nothing published for this version

  33. 3.6.0 13 Feb 2024

    Nothing published for this version

  34. 3.5.0 07 Feb 2024

    Nothing published for this version

  35. 3.4.0 23 Jan 2024

    Nothing published for this version

  36. 3.3.0 04 Jan 2024

    Nothing published for this version

  37. 3.2.0 25 Dec 2023

    Nothing published for this version

  38. 3.1.2 11 Dec 2023

    Nothing published for this version

  39. 3.1.1 11 Dec 2023

    Nothing published for this version

  40. 3.1.0 27 Nov 2023

    Nothing published for this version

  41. 3.0.0 26 Oct 2023

    Nothing published for this version

  42. 3.0.0-RC 03 Oct 2023 pre-release

    Nothing published for this version

  43. 2.7.0 09 Sep 2024

    Nothing published for this version

  44. 2.6.2 17 Aug 2024

    Nothing published for this version

  45. 2.6.1 25 Oct 2023

    Nothing published for this version

  46. 2.6.0 25 Oct 2023

    Nothing published for this version

  47. 2.5.4 15 Mar 2023

    Nothing published for this version

  48. 2.5.3 14 Feb 2023

    Nothing published for this version

  49. 2.5.2 15 Dec 2022

    Nothing published for this version

  50. 2.5.1 15 Dec 2022

    Nothing published for this version

  51. 2.5.0 14 Dec 2022

    Nothing published for this version

  52. 2.4.2 02 Dec 2021

    Nothing published for this version

  53. 2.4.1 17 Nov 2021

    Nothing published for this version

  54. 2.4.0 02 Nov 2021

    Nothing published for this version

  55. 2.3.0 14 Apr 2021

    Nothing published for this version

  56. 2.2.1 26 Dec 2020

    Nothing published for this version

  57. 2.2.0 28 Nov 2020

    Nothing published for this version

  58. 2.1.3 01 Oct 2020

    Nothing published for this version

  59. 2.1.2 29 Aug 2020

    Nothing published for this version

  60. 2.1.1 17 Aug 2020

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive