Skip to content

Updating XMF and vendor/composer/library#1643

Merged
mambax7 merged 3 commits intoXOOPS:masterfrom
mambax7:feature/XMF_Update2
Mar 12, 2026
Merged

Updating XMF and vendor/composer/library#1643
mambax7 merged 3 commits intoXOOPS:masterfrom
mambax7:feature/XMF_Update2

Conversation

@mambax7
Copy link
Copy Markdown
Collaborator

@mambax7 mambax7 commented Mar 12, 2026

Summary by CodeRabbit

  • New Features

    • Richer debug variable viewer with JSON-aware rendering, lazy expansion, and improved collapse/expand controls.
    • Editor/link helper for easier source navigation from debug panels.
  • Dependencies

    • Dependency declarations moved from a single metapackage to explicit library entries; several libraries updated and one new dumper library added.
    • Package manifest now includes funding/contact links.
  • Improvements

    • Enhanced debug UI styling, widget rendering, and PHP 8 compatibility.
    • Documentation and README updated to reflect dependency changes.
  • Chores

    • License and changelog text updates; version bumps for bundled libraries.

Copilot AI review requested due to automatic review settings March 12, 2026 00:39
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 12, 2026

Walkthrough

Replaced the xoops/base-requires25 metapackage with explicit composer.dist.json entries, added symfony/var-dumper and funding metadata, upgraded multiple vendor packages (php‑debugbar, symfony, firebase/php-jwt, TCPDF, etc.), introduced JSON var-dumper support (server + JS), added wildcard SQL filtering, and removed the WideImage test suite and related test helpers.

Changes

Cohort / File(s) Summary
Dependency & metadata
docs/changelog.250.txt, htdocs/xoops_lib/README.md, htdocs/xoops_lib/composer.dist.json
Removed metapackage reference, documented inline dependencies, added symfony/var-dumper and a top-level funding field.
Composer autoload / installed metadata
htdocs/xoops_lib/vendor/composer/autoload_classmap.php, .../autoload_static.php, .../installed.json, .../installed.php
Updated autoload maps for new DebugBar dumpers; bumped package versions and root metadata (dev-master); toggled dev flag in installed.json.
DebugBar — server PHP (formatters/dumpers/collectors/storage)
.../php-debugbar/src/DataFormatter/..., .../DataCollector/..., .../Storage/PdoStorage.php, .../JavascriptRenderer.php
Added JsonDataFormatter and DebugBarJsonDumper; changed DataFormatter::formatVar -> mixed; added cloneVar and default styles; collectors now recognize JSON var-dumper and emit *_json fields; PdoStorage.globToSql() and wildcard LIKE support for uri/ip filters; vardumper.css added to dist assets.
DebugBar — JavaScript & resources
.../resources/vardumper.js, .../resources/widgets.js, .../resources/openhandler.js, .../resources/*.css, .../resources/*/widget.js, .../resources/templates/widget.js
Introduced VarDumpRenderer and JsonVariableListWidget with lazy rendering; new renderValueInto() and editorLink() helpers; refactored DOM handling to use element creation and instance properties; added comprehensive vardumper styles and UX tweaks.
DebugBar — masking & utilities
.../php-debugbar/src/DataCollector/HidesMaskedValues.php, .../HasDataFormatter.php, .../HasXdebugLinks.php, .../QueryFormatter.php
Nested/pattern-based masking (fnmatch) with prefix support; added isJsonVarDumperUsed(); improved xdebug link normalization and object/closure handling for query binding encoding.
Firebase PHP‑JWT
htdocs/xoops_lib/vendor/firebase/php-jwt/src/JWT.php, .../CHANGELOG.md
Docblock widened header value types to allow string
Symfony YAML
htdocs/xoops_lib/vendor/symfony/yaml/Inline.php
Refactored embedded-mapping parsing to iterative retry loop and switched to ParseException handling.
TCPDF updates
htdocs/xoops_lib/vendor/tecnickcom/tcpdf/* (VERSION, composer.json, many includes, tools, fonts, README, LICENSE)
Bumped TCPDF to 6.11.2; updated years and migrated HTTP → HTTPS across docs; conditional resource cleanup for PHP ≥8.0; adjusted font-subset checksum reconstruction offset; other doc/header edits.
WideImage tests removal
htdocs/xoops_lib/vendor/smottt/wideimage/test/* (many test files, fixtures, test-init.php)
Removed entire WideImage test suite and test bootstrap/helpers (many files deleted).
Public suffix list
htdocs/xoops_lib/vendor/xoops/regdom/data/psl.cache.php, .../psl.meta.json
Updated PSL entries and metadata timestamps (added several domain rules like com.kh, hue.vn, drive-platform.*, etc.; removed some entries).

Sequence Diagram(s)

sequenceDiagram
    participant App as Application (PHP)
    participant DebugBar as DebugBar (server)
    participant Storage as PdoStorage/DB
    participant Browser as Client (JS)

    rect rgba(120,120,255,0.5)
    App->>DebugBar: collect messages / dumps
    DebugBar->>DebugBar: DataFormatter (JsonDataFormatter or Html)
    DebugBar->>Storage: store/debug entries (message_json/context_json)
    DebugBar-->>Browser: render DebugBar payload (assets + dump JSON)
    end

    rect rgba(120,255,120,0.5)
    Browser->>Browser: VarDumpRenderer renders JSON (_sd metadata)
    Browser->>Browser: JsonVariableListWidget uses renderValueInto/editorLink
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • kevinpetit
  • geekwright
  • tad0616
  • ihackcode
  • montuy337513
  • GregMage
  • alain01
  • ggoffy
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request updates several third-party libraries under htdocs/xoops_lib/vendor/ (notably Symfony VarDumper/Yaml, php-debugbar, TCPDF, firebase/php-jwt, and the Public Suffix List cache) and adjusts related assets/formatters to support updated DebugBar var-dumping behavior.

Changes:

  • Update vendor packages (TCPDF 6.11.2, php-debugbar 3.5.1, firebase/php-jwt 7.0.3, Symfony components, PSL cache refresh).
  • Add/adjust DebugBar variable dumping (new JSON dumper/formatter, new vardumper.css, widget rendering changes).
  • Remove WideImage’s bundled test suite from the vendored package.

Reviewed changes

Copilot reviewed 3 out of 164 changed files in this pull request and generated no comments.

Show a summary per file
File Description
htdocs/xoops_lib/vendor/composer/platform_check.php Raises enforced PHP minimum version to 8.4 via Composer platform check.
htdocs/xoops_lib/vendor/symfony/var-dumper/composer.json Updates VarDumper to a version requiring PHP >=8.4.
htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/widgets.js Adds shared rendering/editor-link helpers; introduces a JS bug in editorLink().
htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataCollector/TimeDataCollector.php Changes merge behavior; contains a no-op bug in merged start/end update.
htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/VarDumper/DebugBarJsonDumper.php Adds JSON dumper; fallback node shape appears inconsistent.
htdocs/xoops_lib/vendor/tecnickcom/tcpdf/** TCPDF update and PHP 8.5 deprecation-related changes; introduces cleanup/version-guard and string/typo issues.
htdocs/xoops_lib/vendor/xoops/regdom/data/* Refreshes Public Suffix List cache and metadata.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 23

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/openhandler.js (1)

105-116: ⚠️ Potential issue | 🟠 Major

Restore the pagination control when a new search starts.

handleFind() hides Load more for short result sets, but this search path never shows it again. After one short search, later searches triggered from the new shortcuts stay unpageable even when more rows exist.

🛠️ Proposed fix
             searchBtn.addEventListener('click', function (e) {
                 self.table.innerHTML = '';
+                self.loadmorebtn.style.display = '';
                 const search = {};
                 const formData = new FormData(this.parentElement);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/openhandler.js`
around lines 105 - 116, The click handler for search (in the block with
searchBtn.addEventListener) clears the table and calls
self.find(self.handleFind) but does not restore pagination controls or reset
paging state, so after a short result that hid "Load more" subsequent searches
never re-enable it; fix by resetting the pagination state and re-showing the
load-more control before calling self.find — e.g. reset any offset/cursor (like
self.offset or self.currentPage) to 0 and call the method or toggle the element
that shows the "Load more" control (e.g. self.loadMoreBtn or
self.showLoadMore()) so handleFind can manage visibility correctly when new
results arrive.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@htdocs/xoops_lib/README.md`:
- Around line 5-6: The blockquote under the "## Security Notice:" heading in
README.md is missing a blank quoted line which triggers markdownlint MD022; edit
the quoted block so that immediately after the "## Security Notice:" line you
add a blank quoted line (i.e., a line containing just ">") to create the
required blank line inside the quote block and satisfy the linter.

In `@htdocs/xoops_lib/vendor/composer/installed.json`:
- Around line 1173-1199: The composer lock/install shows symfony/var-dumper
v8.0.6 requiring "php": ">=8.4" which conflicts with the project's
composer.dist.json declaring "php": "^8.2" and the platform check in
vendor/composer/platform_check.php; fix by either pinning symfony/var-dumper to
a 7.x release that supports PHP 8.2 (update composer.json require to
"symfony/var-dumper": "^7.0" and run composer update to regenerate
installed.json) or by raising the project's declared PHP floor to "^8.4" in
composer.dist.json (and regenerate composer.lock/installed.json), then verify
vendor/composer/platform_check.php is consistent with the new floor.

In `@htdocs/xoops_lib/vendor/composer/installed.php`:
- Around line 4-6: The project root package xoopscore25/libraries is set to the
unstable alias "dev-master" (seen as 'pretty_version' => 'dev-master' /
'version' => 'dev-master'); replace this with a stable tagged release or pin to
a specific commit/release in composer.json and regenerate composer.lock so
deployments use a reproducible version (e.g., change the package requirement
away from dev-master to a semver tag or exact commit reference and run composer
update to lock it), and ensure the repository creates and documents tagged
releases for future production deployments.

In `@htdocs/xoops_lib/vendor/composer/platform_check.php`:
- Around line 7-8: The platform version check in platform_check.php currently
enforces PHP_VERSION_ID >= 80400; revert this to enforce PHP 8.2 minimum by
changing the numeric constant from 80400 to 80200 and update the error string
from ">= 8.4.0" to ">= 8.2.0"; also ensure any CI/docs/metadata (project docs,
.github/copilot-instructions.md, changelog) that were updated for 8.4 are
restored to reflect PHP 8.2–8.5 compatibility if this was unintentional.

In `@htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/openhandler.js`:
- Around line 61-63: Reset the search form before applying the shortcut filters:
in the click handlers (e.g. this.showonlycurrentbtn,
this.showonlycurrentmethodbtn, this.showonlycurrentipbtn) call the form reset
(e.g. self.form.reset() or the appropriate search form element) first, then set
the single field (self.uriInput / self.methodInput / self.ipInput) and finally
trigger the search with self.searchBtn.click(); this ensures previous
method/ip/uri values are cleared before submitting the shortcut search.

In `@htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/vardumper.css`:
- Line 1: The vendor CSS contains linter-flagged issues: in the dark-theme block
for the selector ".phpdebugbar[data-theme='dark'] pre.sf-dump" the shorthand
"font" appears after "line-height" (overriding it), deprecated "word-wrap" is
used, and the vendor prefix "-webkit-sticky" is unnecessary; do not modify
vendor upstream unless absolutely necessary—open an upstream issue with these
findings referencing the selectors and the exact properties, and if a local fix
is required, adjust the CSS by moving the "font" shorthand before "line-height"
(or expand it to explicit font-family/font-size declarations so line-height
isn’t overridden), replace "word-wrap" with "overflow-wrap", and remove the
"-webkit-sticky" fallback from ".phpdebugbar pre.sf-dump .sf-dump-search-wrapper
{ position: -webkit-sticky; position: sticky; }" (or keep only "position:
sticky") to preserve behavior while satisfying linters.

In `@htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/widgets.js`:
- Around line 62-85: The editorLink widget references an undefined identifier
"stmt" (stmt.xdebug_link.url) inside PhpDebugBar.Widgets.editorLink; change that
reference to use the incoming parameter "value" (i.e., use
value.xdebug_link.url) so the AJAX fetch uses the correct object, and while here
fix the setAttribute call to check value.ajax (not link.ajax) when choosing
'title' vs 'href' to ensure attributes are set correctly.

In
`@htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/HasDataFormatter.php`:
- Around line 32-39: Add an explicit PHPDoc block above the new public method
isJsonVarDumperUsed() in the HasDataFormatter trait: include a short one-line
description, an `@return` bool tag, and (per project policy for new public
methods) an `@throws` void tag (no `@param` needed since there are no parameters);
keep the implementation unchanged (it still uses getDataFormatter() and
JsonDataFormatter for the runtime check).

In
`@htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/HasXdebugLinks.php`:
- Around line 73-74: The PHPDoc for getXdebugLink() declares the returned array
shape but was not updated to include the new "path" key; update the docblock
above getXdebugLink() to add "path" (string|null) to the declared return array
shape alongside url, ajax, filename, and line so static analyzers and callers
see the extended contract; ensure the PHPDoc matches the actual returned
structure in HasXdebugLinks::getXdebugLink().

In
`@htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/HtmlDataFormatter.php`:
- Around line 153-160: getAssets() is currently returning only the static
'vardumper.css' and the JS from DebugBarHtmlDumper, omitting the runtime CSS
generated by the dumper (mergeDumperOptions() / dark-theme overrides). Update
the branch that handles DebugBarHtmlDumper in HtmlDataFormatter (where
$dumper->resetDumpHeader() and $dumper->getDumpJs() are used) to also include
the dumper-generated styles by calling the dumper method that returns the
header/styles (e.g. getDumpHeaderByDebugBar() or equivalent) and emit that CSS
as a 'styles' (or 'css' entry carrying the runtime CSS) alongside the existing
assets so customized dumps retain their dynamic styling.

In
`@htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/JsonDataFormatter.php`:
- Around line 63-68: Add a single blank line before the docblock that begins
"Check if a value can be represented as plain JSON..." in the JsonDataFormatter
class (JsonDataFormatter.php) so the docblock is visually separated per PSR-12;
locate the docblock immediately above the method that inspects values (the
method in JsonDataFormatter responsible for deciding plain JSON vs Symfony dump)
and insert one empty line before /** to satisfy formatting.

In
`@htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/Storage/PdoStorage.php`:
- Around line 179-195: In globToSql() the provided escape character isn’t
escaped before escaping SQL wildcards, so literal backslashes in the input
become misinterpreted; update globToSql to first double-escape the escapeChar
(escapeChar => escapeChar . escapeChar), then escape SQL wildcards ($sqlMulti
and $sqlSingle) using that doubled escapeChar, and finally replace glob
wildcards ($globMulti and $globSingle) with SQL wildcards ($sqlMulti and
$sqlSingle) so the sequence is: self-escape escapeChar, escape SQL wildcards,
then translate glob wildcards.

In `@htdocs/xoops_lib/vendor/symfony/var-dumper/composer.json`:
- Around line 19-20: Root manifest PHP constraint conflicts with vendored
symfony/var-dumper which requires "php": ">=8.4"; update either the vendored
package or the root manifest: either change the vendored dependency to a
VarDumper release that supports PHP ^8.2 (replace the symfony/var-dumper version
in htdocs/xoops_lib/vendor/symfony/var-dumper/composer.json with a compatible
tag) or raise the root PHP floor in htdocs/xoops_lib/composer.dist.json to
">=8.4" (and update any docs/README accordingly) so both manifests agree on the
PHP minimum.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/config/tcpdf_config.php`:
- Line 11: Replace the malformed copyright year range string "2004-2014 2026" in
the tcpdf_config.php header with a continuous range "2004-2026"; locate the
exact line containing that string and update it to the corrected format so the
header reads "Copyright (C) 2004-2026 Nicola Asuni - Tecnick.com LTD".
- Line 117: The PDF_HEADER_STRING constant contains a mistaken "by2026 Nicola
Asuni" token; update the define for PDF_HEADER_STRING to the intended
attribution text by removing the erroneous "2026" so it reads the correct author
string (e.g., "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org") in the
define('PDF_HEADER_STRING', ...) declaration.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/barcodes/datamatrix.php`:
- Line 10: Update the malformed copyright header in datamatrix.php: locate the
header comment containing "2010-2014 2026" and replace it with a single valid
year or range (for example "2010-2026") or the exact upstream wording so the
copyright span is correctly formatted.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/barcodes/pdf417.php`:
- Line 10: Update the malformed copyright year in the header of pdf417.php:
replace the incorrect "2010-2013 2026" token with a correctly formatted range or
list (e.g., "2010-2026" or "2010-2013, 2026") in the file
include/barcodes/pdf417.php so the header reflects the intended copyright span;
note this is a vendor file and ideally the same correction should be applied
upstream in the TCPDF project.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_colors.php`:
- Line 10: Update the malformed copyright year in the vendor header: replace the
incorrect "2002-2013 2026" sequence with a properly formatted range "2002-2026"
in the header comment of tcpdf_colors.php (same fix needed as in pdf417.php);
since this is a vendor file, prefer submitting the correction upstream or ensure
the local copy uses the corrected single-line range.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_fonts.php`:
- Line 1387: The write to the head table uses the wrong byte offsets and
overwrites fontRevision instead of checkSumAdjustment; in the line that builds
$font (using $table['head']['offset'] and $offset) replace the current +4/+8
slice bounds with +8/+12 so the pack('N', $checkSumAdjustment) is written into
bytes 8–11 of the head table (matching the earlier zeroing at line 1325) —
adjust the substr boundaries around $table['head']['offset'] + $offset
accordingly to target checkSumAdjustment rather than fontRevision.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_images.php`:
- Line 277: Several inline error comments in tcpdf_images.php contain the
misspelled phrase "Unknownn compression method"; update each occurrence of the
string "Unknownn compression method" to "Unknown compression method" so the
error/comment text is correct (search for the exact malformed phrase in
tcpdf_images.php to find all instances, e.g., the occurrences near the code that
handles image compression/error reporting).

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/README.md`:
- Line 83: Restore the Markdown list formatting in the README by adding a space
after the leading asterisk on the line containing "*2026 Nicola Asuni
<info@tecnick.com>" so it becomes a proper list item; locate the line in
README.md (the metadata entry with "2026 Nicola Asuni") and insert a single
space between the asterisk and "2026" to match the surrounding bullets.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/tcpdf_autoconfig.php`:
- Line 157: The PDF header constant PDF_HEADER_STRING contains a merge-artifact
typo ("by2026 Nicola Asuni - Tecnick.com\nwww.tcpdf.org"); update the value of
PDF_HEADER_STRING to the correct string "by Nicola Asuni -
Tecnick.com\nwww.tcpdf.org" so it matches the intended header text (same fix as
applied to tcpdf_config.php).

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/tcpdf.php`:
- Around line 7435-7446: The current catch block in tcpdf.php uses catch
(Exception $e) which misses PHP 8+ GD errors (TypeError/ValueError); update the
exception handler to catch all throwables by changing the catch to catch
(\Throwable $e) in the same try/catch that handles image parsing (the block that
sets $parsed = true and refers to $imgalpha, $imgplain, $tempfile_plain) so the
fallback logic still runs for GD errors; preserve the existing variable name $e
and existing error handling/logging within that catch.

---

Outside diff comments:
In `@htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/openhandler.js`:
- Around line 105-116: The click handler for search (in the block with
searchBtn.addEventListener) clears the table and calls
self.find(self.handleFind) but does not restore pagination controls or reset
paging state, so after a short result that hid "Load more" subsequent searches
never re-enable it; fix by resetting the pagination state and re-showing the
load-more control before calling self.find — e.g. reset any offset/cursor (like
self.offset or self.currentPage) to 0 and call the method or toggle the element
that shows the "Load more" control (e.g. self.loadMoreBtn or
self.showLoadMore()) so handleFind can manage visibility correctly when new
results arrive.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 0b947523-a0fa-41b2-bd41-dca823cbfe1d

📥 Commits

Reviewing files that changed from the base of the PR and between 68a6606 and 7708950.

⛔ Files ignored due to path filters (28)
  • htdocs/xoops_lib/composer.dist.lock is excluded by !**/*.lock
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/dist/debugbar.min.css is excluded by !**/dist/**
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/dist/debugbar.min.js is excluded by !**/dist/**, !**/*.min.js
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/100x100-blue-alpha.png is excluded by !**/*.png
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/100x100-color-hole.gif is excluded by !**/*.gif
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/100x100-color-hole.png is excluded by !**/*.png
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/100x100-rainbow.png is excluded by !**/*.png
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/100x100-red-spot-half-cut.png is excluded by !**/*.png
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/100x100-red-spot.png is excluded by !**/*.png
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/100x100-red-transparent.gif is excluded by !**/*.gif
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/100x100-rgbyg.png is excluded by !**/*.png
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/100x100-square-overlay.png is excluded by !**/*.png
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/100x50-rgbt.gif is excluded by !**/*.gif
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/75x25-gray.png is excluded by !**/*.png
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/actually-a-png.jpg is excluded by !**/*.jpg
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/bmp/favicon.ico is excluded by !**/*.ico
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/bmp/rainbow-16b-x.bmp is excluded by !**/*.bmp
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/bmp/rainbow-16b.bmp is excluded by !**/*.bmp
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/bmp/rainbow-24b.bmp is excluded by !**/*.bmp
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/bmp/rainbow-32b.bmp is excluded by !**/*.bmp
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/bmp/rainbow-palette-rle.bmp is excluded by !**/*.bmp
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/empty.tga is excluded by !**/*.tga
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/fakeimage.png is excluded by !**/*.png
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/fgnl-bmp.jpg is excluded by !**/*.jpg
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/fgnl.bmp is excluded by !**/*.bmp
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/fgnl.jpg is excluded by !**/*.jpg
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/logo.gif is excluded by !**/*.gif
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/splat.tga is excluded by !**/*.tga
📒 Files selected for processing (136)
  • docs/changelog.250.txt
  • htdocs/xoops_lib/README.md
  • htdocs/xoops_lib/composer.dist.json
  • htdocs/xoops_lib/vendor/composer/autoload_classmap.php
  • htdocs/xoops_lib/vendor/composer/autoload_static.php
  • htdocs/xoops_lib/vendor/composer/installed.json
  • htdocs/xoops_lib/vendor/composer/installed.php
  • htdocs/xoops_lib/vendor/composer/platform_check.php
  • htdocs/xoops_lib/vendor/firebase/php-jwt/CHANGELOG.md
  • htdocs/xoops_lib/vendor/firebase/php-jwt/src/JWT.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/openhandler.js
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/vardumper.css
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/vardumper.js
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/widgets.css
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/widgets.js
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/widgets/http/widget.js
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/widgets/sqlqueries/widget.js
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/widgets/templates/widget.js
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataCollector/ConfigCollector.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataCollector/HidesMaskedValues.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataCollector/MessagesCollector.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataCollector/RequestDataCollector.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataCollector/TimeDataCollector.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/DataFormatter.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/DataFormatterInterface.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/HasDataFormatter.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/HasXdebugLinks.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/HtmlDataFormatter.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/JsonDataFormatter.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/QueryFormatter.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/VarDumper/DebugBarHtmlDumper.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/DataFormatter/VarDumper/DebugBarJsonDumper.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/JavascriptRenderer.php
  • htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/src/Storage/PdoStorage.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/CanvasTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/CoordinateTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/ImageTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/BMPTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/FOO.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/FOO2.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/GD2Test.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/GDTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/GIFTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/JPEGTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/PNGTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/TGATest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/MapperFactoryTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/ApplyConvolutionTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/ApplyFilterTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/ApplyMaskTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/AsGrayscaleTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/AsNegativeTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/AutoCrop.test.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/CorrectGammaTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/CropTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/CustomOp.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/FlipTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/GetChannelsTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/GetMaskTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/MergeTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/MirrorTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/MyOperation.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/ResizeCanvasTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/ResizeTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/RotateTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/RoundCornersTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/UnsharpTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/OperationFactoryTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/PaletteImageTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/TrueColorImageTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/WideImageTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/image-actually-foo.foo2
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/image.foo
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/run.bat
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/run.sh
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/test-init.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/AddressInfoCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/AmqpCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/Caster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/DOMCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/DateCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/DoctrineCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/GmpCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/ImagineCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/IntlCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/MemcachedCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/PdoCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/PgSqlCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/RdKafkaCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/RedisCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/ReflectionCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/ResourceCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/SocketCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/SplCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/StubCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/SymfonyCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/UuidCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Dumper/DataDumperInterface.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Resources/bin/var-dump-server
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/composer.json
  • htdocs/xoops_lib/vendor/symfony/yaml/Inline.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/CHANGELOG.TXT
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/LICENSE.TXT
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/README.md
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/VERSION
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/composer.json
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/config/tcpdf_config.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/fonts/ae_fonts_2.0/README
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/fonts/freefont-20100919/COPYING
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/fonts/freefont-20100919/CREDITS
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/fonts/freefont-20120503/COPYING
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/fonts/freefont-20120503/CREDITS
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/fonts/freefont-20120503/README
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/fonts/freefont-20120503/TROUBLESHOOTING
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/barcodes/datamatrix.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/barcodes/pdf417.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/barcodes/qrcode.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_colors.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_filters.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_font_data.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_fonts.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_images.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_static.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/tcpdf.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/tcpdf_autoconfig.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/tcpdf_barcodes_1d.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/tcpdf_barcodes_2d.php
  • htdocs/xoops_lib/vendor/tecnickcom/tcpdf/tools/tcpdf_addfont.php
  • htdocs/xoops_lib/vendor/xoops/regdom/data/psl.cache.php
  • htdocs/xoops_lib/vendor/xoops/regdom/data/psl.meta.json
💤 Files with no reviewable changes (43)
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/OperationFactoryTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/PNGTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/ResizeCanvasTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/MirrorTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/CanvasTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/GDTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/BMPTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/MergeTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/MapperFactoryTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/RotateTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/run.bat
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/CorrectGammaTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/UnsharpTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/CustomOp.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/image-actually-foo.foo2
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/CoordinateTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/JPEGTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/FlipTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/MyOperation.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/GIFTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/TrueColorImageTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/run.sh
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/TGATest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/images/image.foo
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/ApplyConvolutionTest.php
  • htdocs/xoops_lib/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/GetChannelsTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/FOO2.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/ImageTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/ResizeTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/GetMaskTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/RoundCornersTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/test-init.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/ApplyMaskTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/ApplyFilterTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/WideImageTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/AsGrayscaleTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/GD2Test.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/PaletteImageTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/AutoCrop.test.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/CropTest.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Mapper/FOO.php
  • htdocs/xoops_lib/vendor/smottt/wideimage/test/WideImage/Operation/AsNegativeTest.php

Comment on lines +5 to 6
> ## Security Notice:
> For production deployments, move this folder outside the document root. The included `.htaccess` and `index.php` block direct web access, but placing it outside the web root is the strongest protection.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add the missing blank quoted line after the heading.

markdownlint MD022 will keep flagging this blockquote heading until the line below it is blank inside the quote block.

📝 Proposed fix
 > ## Security Notice:
+>
 > For production deployments, move this folder outside the document root. The included `.htaccess` and `index.php` block direct web access, but placing it outside the web root is the strongest protection.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
> ## Security Notice:
> For production deployments, move this folder outside the document root. The included `.htaccess` and `index.php` block direct web access, but placing it outside the web root is the strongest protection.
> ## Security Notice:
>
> For production deployments, move this folder outside the document root. The included `.htaccess` and `index.php` block direct web access, but placing it outside the web root is the strongest protection.
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 5-5: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@htdocs/xoops_lib/README.md` around lines 5 - 6, The blockquote under the "##
Security Notice:" heading in README.md is missing a blank quoted line which
triggers markdownlint MD022; edit the quoted block so that immediately after the
"## Security Notice:" line you add a blank quoted line (i.e., a line containing
just ">") to create the required blank line inside the quote block and satisfy
the linter.

Comment thread htdocs/xoops_lib/vendor/composer/installed.json Outdated
Comment on lines +4 to +6
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '68a66063fcbb05c47da34c69a8d193b1e5280081',
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Note: Root package switched to dev-master.

The root package xoopscore25/libraries changed from versioned release to dev-master. This is typical during active development but ensure tagged releases are created before production deployments for reproducible builds.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@htdocs/xoops_lib/vendor/composer/installed.php` around lines 4 - 6, The
project root package xoopscore25/libraries is set to the unstable alias
"dev-master" (seen as 'pretty_version' => 'dev-master' / 'version' =>
'dev-master'); replace this with a stable tagged release or pin to a specific
commit/release in composer.json and regenerate composer.lock so deployments use
a reproducible version (e.g., change the package requirement away from
dev-master to a semver tag or exact commit reference and run composer update to
lock it), and ensure the repository creates and documents tagged releases for
future production deployments.

Comment thread htdocs/xoops_lib/vendor/composer/platform_check.php Outdated
Comment on lines 61 to +63
this.showonlycurrentbtn.addEventListener('click', () => {
self.table.innerHTML = '';
self.find({ uri: window.location.pathname }, 0, self.handleFind.bind(self));
self.uriInput.value = window.location.pathname;
self.searchBtn.click();
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Reset the search form before applying shortcut filters.

These handlers now submit the entire form, so any previously selected method/ip/uri is carried into the next shortcut search. For example, after filtering by IP, clicking Show only current URL still sends the old IP filter and can return the wrong result set or none at all. Reset the form first, then populate the single shortcut field.

🛠️ Proposed fix
         this.showonlycurrentbtn.addEventListener('click', () => {
+            self.searchForm.reset();
             self.uriInput.value = window.location.pathname;
             self.searchBtn.click();
         });
...
             const form = document.createElement('form');
+            this.searchForm = form;
...
                 ipLink.addEventListener('click', (e) => {
+                    self.searchForm.reset();
                     self.ipInput.value = meta.ip;
                     self.searchBtn.click();
                     e.preventDefault();
                 });
...
                 searchLink.addEventListener('click', (e) => {
+                    self.searchForm.reset();
                     self.uriInput.value = meta.uri;
                     self.searchBtn.click();
                     e.preventDefault();
                 });

Also applies to: 123-143, 181-190

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@htdocs/xoops_lib/vendor/php-debugbar/php-debugbar/resources/openhandler.js`
around lines 61 - 63, Reset the search form before applying the shortcut
filters: in the click handlers (e.g. this.showonlycurrentbtn,
this.showonlycurrentmethodbtn, this.showonlycurrentipbtn) call the form reset
(e.g. self.form.reset() or the appropriate search form element) first, then set
the single field (self.uriInput / self.methodInput / self.ipInput) and finally
trigger the search with self.searchBtn.click(); this ensures previous
method/ip/uri values are cleared before submitting the shortcut search.

// set checkSumAdjustment on head table
$checkSumAdjustment = 0xB1B0AFBA - self::_getTTFtableChecksum($font, strlen($font));
$font = substr($font, 0, $table['head']['offset'] + $offset + 8).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + $offset + 12);
$font = substr($font, 0, $table['head']['offset'] + $offset + 4).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + $offset + 8);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
sed -n '1323,1326p;1385,1388p' htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_fonts.php

Repository: XOOPS/XoopsCore25

Length of output: 542


Correct the offset mismatch when writing the checkSumAdjustment field in the head table.

Line 1387 writes 4 bytes to offset + 4 through + 8, which targets the fontRevision field instead of checkSumAdjustment. The preceding zeroing step at line 1325 correctly clears checkSumAdjustment at bytes 8–11. This offset mismatch corrupts the generated font subset by overwriting the revision field while leaving the checksum adjustment zeroed.

Fix
-		$font = substr($font, 0, $table['head']['offset'] + $offset + 4).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + $offset + 8);
+		$font = substr($font, 0, $table['head']['offset'] + $offset + 8).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + $offset + 12);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
$font = substr($font, 0, $table['head']['offset'] + $offset + 4).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + $offset + 8);
$font = substr($font, 0, $table['head']['offset'] + $offset + 8).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + $offset + 12);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_fonts.php` at line
1387, The write to the head table uses the wrong byte offsets and overwrites
fontRevision instead of checkSumAdjustment; in the line that builds $font (using
$table['head']['offset'] and $offset) replace the current +4/+8 slice bounds
with +8/+12 so the pack('N', $checkSumAdjustment) is written into bytes 8–11 of
the head table (matching the earlier zeroing at line 1325) — adjust the substr
boundaries around $table['head']['offset'] + $offset accordingly to target
checkSumAdjustment rather than fontRevision.

}
if (ord(fread($f, 1)) != 0) {
// Unknown compression method
// Unknownn compression method
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Typos introduced in error comments: "Unknownn".

Multiple error message comments have been corrupted with a double 'n': Unknownn instead of Unknown. This appears to be a merge/update artifact.

Suggested fixes
-			// Unknownn compression method
+			// Unknown compression method
-			// Unknownn filter method
+			// Unknown filter method

Line 334:

-				// Unknownn filter method
+				// Unknown filter method

Also applies to: 282-282, 334-334

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/include/tcpdf_images.php` at line
277, Several inline error comments in tcpdf_images.php contain the misspelled
phrase "Unknownn compression method"; update each occurrence of the string
"Unknownn compression method" to "Unknown compression method" so the
error/comment text is correct (search for the exact malformed phrase in
tcpdf_images.php to find all instances, e.g., the occurrences near the code that
handles image compression/error reporting).

## Developer(s) Contact

* Nicola Asuni <info@tecnick.com>
*2026 Nicola Asuni <info@tecnick.com>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Restore the Markdown bullet formatting.

*2026 Nicola Asuni... is missing the space after *, so it no longer renders as a list item like the surrounding metadata block.

📝 Proposed fix
-*2026 Nicola Asuni <info@tecnick.com>
+* 2026 Nicola Asuni <info@tecnick.com>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
*2026 Nicola Asuni <info@tecnick.com>
* 2026 Nicola Asuni <info@tecnick.com>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/README.md` at line 83, Restore the
Markdown list formatting in the README by adding a space after the leading
asterisk on the line containing "*2026 Nicola Asuni <info@tecnick.com>" so it
becomes a proper list item; locate the line in README.md (the metadata entry
with "2026 Nicola Asuni") and insert a single space between the asterisk and
"2026" to match the surrounding bullets.


if (!defined('PDF_HEADER_STRING')) {
define ('PDF_HEADER_STRING', "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org");
define ('PDF_HEADER_STRING', "by2026 Nicola Asuni - Tecnick.com\nwww.tcpdf.org");
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Same "by2026" typo in PDF_HEADER_STRING.

Identical merge artifact as in tcpdf_config.php. The string should read "by Nicola Asuni".

Suggested fix
-	define ('PDF_HEADER_STRING', "by2026 Nicola Asuni - Tecnick.com\nwww.tcpdf.org");
+	define ('PDF_HEADER_STRING', "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org");
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
define ('PDF_HEADER_STRING', "by2026 Nicola Asuni - Tecnick.com\nwww.tcpdf.org");
define ('PDF_HEADER_STRING', "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org");
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/tcpdf_autoconfig.php` at line 157,
The PDF header constant PDF_HEADER_STRING contains a merge-artifact typo
("by2026 Nicola Asuni - Tecnick.com\nwww.tcpdf.org"); update the value of
PDF_HEADER_STRING to the correct string "by Nicola Asuni -
Tecnick.com\nwww.tcpdf.org" so it matches the intended header text (same fix as
applied to tcpdf_config.php).

Comment on lines +7435 to 7446
if (PHP_VERSION_ID < 80000) {
imagedestroy($imgalpha);
}
// extract image without alpha channel
$imgplain = imagecreatetruecolor($wpx, $hpx);
imagecopy($imgplain, $img, 0, 0, 0, 0, $wpx, $hpx);
imagepng($imgplain, $tempfile_plain);
imagedestroy($imgplain);
if (PHP_VERSION_ID < 80000) {
imagedestroy($imgplain);
}
$parsed = true;
} catch (Exception $e) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

In PHP 8.2-8.5, can GD functions such as imagepng(), imagecopy(), and imagecreatetruecolor() throw \TypeError or \ValueError that are not caught by catch (\Exception)?

💡 Result:

Yes.

  • \TypeError and \ValueError are not \Exceptions (they both extend \Error), so catch (\Exception $e) will not catch them. Catch \Throwable (or \Error) instead. [1] [2] [3]
  • GD functions can trigger these in PHP 8.x when argument types/values are invalid. For example, imagepng() throws \ValueError (PHP 8.4+) if the $quality argument is invalid. [4]
    And functions with typed signatures like imagecopy(GdImage ... , int ...) can throw \TypeError if you pass the wrong types. [5] [2]

Practical fix:

try {
    imagepng($im, null, 999); // e.g. ValueError in PHP 8.4+
} catch (\Throwable $e) {
    // catches Exception + Error (TypeError/ValueError)
}

Sources:
[1] https://www.php.net/manual/en/class.typeerror.php
[2] https://www.php.net/manual/en/language.exceptions.php
[3] https://www.php.net/manual/en/class.valueerror.php
[4] https://www.php.net/manual/en/function.imagepng.php
[5] https://www.php.net/manual/en/function.imagecopy.php


Change catch (Exception $e) to catch (\Throwable $e) to handle PHP 8.x GD errors.

On PHP 8.x, GD functions throw \TypeError and \ValueError for invalid arguments or types—these extend \Error, not \Exception, so catch (Exception $e) misses them. This breaks the fallback gracefully here and risks aborting PDF generation on malformed images.

Proposed fix
-			} catch (Exception $e) {
+			} catch (\Throwable $e) {
 				// GD fails
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@htdocs/xoops_lib/vendor/tecnickcom/tcpdf/tcpdf.php` around lines 7435 - 7446,
The current catch block in tcpdf.php uses catch (Exception $e) which misses PHP
8+ GD errors (TypeError/ValueError); update the exception handler to catch all
throwables by changing the catch to catch (\Throwable $e) in the same try/catch
that handles image parsing (the block that sets $parsed = true and refers to
$imgalpha, $imgplain, $tempfile_plain) so the fallback logic still runs for GD
errors; preserve the existing variable name $e and existing error
handling/logging within that catch.

var-dumper v8.0 requires PHP >=8.4, breaking XOOPS on PHP 8.2/8.3.
Pin symfony/var-dumper to ^7.2 in composer.dist.json and re-run
composer update to downgrade to v7.4.6 (requires PHP >=8.2).
This restores the platform_check.php minimum to PHP 8.2.0.
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@htdocs/xoops_lib/vendor/composer/installed.json`:
- Around line 1644-1645: The lock indicates dev dependencies were included
("dev": true and "dev-package-names"), so regenerate the lock/install artifacts
for production by running Composer without dev packages (e.g., run composer
install --no-dev or composer update --no-dev in your build/release workflow),
commit the updated lock/installed.json so "dev" becomes false, and ensure
CI/CD/build scripts invoke composer install --no-dev going forward.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 4919965c-aec5-47f4-94e1-54d20a457e20

📥 Commits

Reviewing files that changed from the base of the PR and between 7708950 and 59c7412.

⛔ Files ignored due to path filters (1)
  • htdocs/xoops_lib/composer.dist.lock is excluded by !**/*.lock
📒 Files selected for processing (3)
  • htdocs/xoops_lib/composer.dist.json
  • htdocs/xoops_lib/vendor/composer/installed.json
  • htdocs/xoops_lib/vendor/composer/installed.php

Comment thread htdocs/xoops_lib/vendor/composer/installed.json Outdated
Re-ran composer install --no-dev --optimize-autoloader to flip the
dev flag to false in installed.json and installed.php.
@sonarqubecloud
Copy link
Copy Markdown

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
htdocs/xoops_lib/vendor/composer/installed.php (1)

4-6: ⚠️ Potential issue | 🟡 Minor

Verify the root package is intentionally still dev-master.

installed.php is generated, but these entries show the build metadata still resolves xoopscore25/libraries to a branch alias rather than a release version. If this PR is meant to produce release-ready artifacts, the fix belongs in the Composer manifest/lock, then regenerate the vendor metadata.

#!/bin/bash
set -euo pipefail

mapfile -t files < <(fd -HI 'composer(\.dist)?\.json$|composer\.lock$')
if [ "${`#files`[@]}" -eq 0 ]; then
  echo "No composer manifests or lockfile found."
  exit 1
fi

printf 'Inspecting:\n'
printf '  %s\n' "${files[@]}"

echo
echo "== root package / branch alias references =="
rg -n -C2 '"name"\s*:\s*"xoopscore25/libraries"|"version"\s*:\s*"dev-master"|branch-alias|dev-master' "${files[@]}"

Expected result: if this is a release-oriented change, the authoritative Composer files should show an intentional pinned version/commit strategy rather than an unresolved dev-master root package.

Also applies to: 236-238

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@htdocs/xoops_lib/vendor/composer/installed.php` around lines 4 - 6, The
vendor metadata shows the root package still resolving to dev-master (see
'pretty_version'/'version' => 'dev-master' and the reference entry for
xoopscore25/libraries), so update the Composer manifest/lock to pin a released
version or remove the branch-alias pointing to dev-master for
xoopscore25/libraries, commit the corrected composer.json/composer.lock, then
regenerate vendor metadata by running composer install/update to produce a
non-dev installed.php; verify the change by searching for "dev-master",
"branch-alias" and xoopscore25/libraries in the composer files.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@htdocs/xoops_lib/vendor/composer/installed.php`:
- Around line 4-6: The vendor metadata shows the root package still resolving to
dev-master (see 'pretty_version'/'version' => 'dev-master' and the reference
entry for xoopscore25/libraries), so update the Composer manifest/lock to pin a
released version or remove the branch-alias pointing to dev-master for
xoopscore25/libraries, commit the corrected composer.json/composer.lock, then
regenerate vendor metadata by running composer install/update to produce a
non-dev installed.php; verify the change by searching for "dev-master",
"branch-alias" and xoopscore25/libraries in the composer files.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 6a2475e5-a3a2-48c3-b6df-d28a9825ea69

📥 Commits

Reviewing files that changed from the base of the PR and between 59c7412 and ec75347.

📒 Files selected for processing (2)
  • htdocs/xoops_lib/vendor/composer/installed.json
  • htdocs/xoops_lib/vendor/composer/installed.php

@mambax7 mambax7 merged commit 7a99eb9 into XOOPS:master Mar 12, 2026
10 of 11 checks passed
@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (5b1e99a) to head (ec75347).
⚠️ Report is 42 commits behind head on master.

Additional details and impacted files
@@      Coverage Diff       @@
##   master   #1643   +/-   ##
==============================
==============================

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mambax7 mambax7 deleted the feature/XMF_Update2 branch March 15, 2026 14:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants