<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Michael Beck</title>
    <description>The latest articles on DEV Community by Michael Beck (@mambax7).</description>
    <link>https://dev.to/mambax7</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F662159%2F971e5f63-0943-4a30-8c52-22cf030acc05.jpeg</url>
      <title>DEV Community: Michael Beck</title>
      <link>https://dev.to/mambax7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mambax7"/>
    <language>en</language>
    <item>
      <title>XOOPS 2.7.3 (PHP 8.6 ready)</title>
      <dc:creator>Michael Beck</dc:creator>
      <pubDate>Tue, 25 Aug 2026 04:31:56 +0000</pubDate>
      <link>https://dev.to/mambax7/xoops-273-php-86-ready-ncd</link>
      <guid>https://dev.to/mambax7/xoops-273-php-86-ready-ncd</guid>
      <description>&lt;p&gt;The XOOPS Development Team is pleased to announce &lt;strong&gt;XOOPS 2.7.3 Final&lt;/strong&gt;. This release hardens security across the core, prepares XOOPS for PHP 8.6 while remaining fully supported on PHP 8.2 through 8.5, adds &lt;strong&gt;SCEditor&lt;/strong&gt; as an optional BBCode editor, introduces file-based debug configuration with a rotating file logger, and folds in a series of reliability fixes proven in production on xoops.org.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DOWNLOAD&lt;/strong&gt;: You can download the release from here: &lt;a href="https://github.com/XOOPS/XoopsCore27/releases" rel="noopener noreferrer"&gt;https://github.com/XOOPS/XoopsCore27/releases&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready for PHP 8.6
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Complete session save-handler contract: create_sid() ahead of its PHP 9.0 requirement, new sessions survive 8.6's updateTimestamp() routing, session.use_strict_mode pinned to the 8.6 default today&lt;/li&gt;
&lt;li&gt;Deprecations cleared ahead of time: constructor value-returns (guarded by a repository-wide test), is_long(), curl_close(), imagedestroy()&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Security hardening
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Element values escaped in all five form renderers, with JavaScript arguments built via json_encode()&lt;/li&gt;
&lt;li&gt;Template-set browser and editor contained by the new shared PathGuard class — double-decode removed, NUL bytes rejected, symlink escapes refused, atomic backups — pinned by a truth-table test suite&lt;/li&gt;
&lt;li&gt;Logout now requires a session token: a bare GET renders a POST confirmation instead of ending the session (forced-logout CSRF closed); every existing logout link keeps working&lt;/li&gt;
&lt;li&gt;Redirect query strings are rebuilt through a shared, unit-tested helper instead of being reflected verbatim into Location headers (eight sites)&lt;/li&gt;
&lt;li&gt;image.php's never-functional remote-image branch (an SSRF and phar-deserialization surface) is closed and fails closed&lt;/li&gt;
&lt;li&gt;Module-manifest values escaped on the module admin pages; image category handlers now enforce authorization, not just CSRF&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Editors
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SCEditor 3.2.1 ships bundled as an optional BBCode editor, deliberately locked to source mode so existing content never passes through a WYSIWYG round-trip&lt;/li&gt;
&lt;li&gt;One shared dhtml toolbar for all five renderers — no more different toolbars in the control panel and the front end&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Debugging and logging
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;File-based debug configuration in xoops_data/data/debug.php — error display, error_reporting, and query logging in one place, no mainfile.php edits; nothing changes until an administrator creates the file&lt;/li&gt;
&lt;li&gt;A rotating, redacting file logger records notices, warnings, errors and SQL with backtraces — server paths, session ids and session rows are redacted&lt;/li&gt;
&lt;li&gt;The error screen has one declared owner, so providers such as Whoops or Tracy no longer compete for the seat&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reliability fixes from production
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A failing module no longer takes global search down for every visitor; the "Show all" search pages render results again; search.php validates the request and respects module_read; browse.php sends a well-formed Cache-Control header&lt;/li&gt;
&lt;li&gt;xoops_getrank() no longer fatals when no rank row matches; a failed query returns the documented failure value instead of blanking the page&lt;/li&gt;
&lt;li&gt;Criteria renders an empty IN () list as a constant predicate instead of invalid SQL&lt;/li&gt;
&lt;li&gt;The group list is memoised per request (~48 identical queries removed per page) and a new comments index took a listing query from 541ms to 0.5ms&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deprecations
&lt;/h2&gt;

&lt;p&gt;The XOBJ_DTYPE_UNICODE_* object datatypes are deprecated (notice only, behavior unchanged): they url-encode on write and url-decode on read, which bloats storage and breaks LIKE/FULLTEXT search on utf8mb4. Data migration is planned for 2.8, constant removal for 4.0.&lt;/p&gt;

&lt;h2&gt;
  
  
  Upgrading from 2.7.2
&lt;/h2&gt;

&lt;p&gt;XOOPS 2.7.3 includes schema changes, so after copying the new htdocs/ files over the web root, run the upgrade wizard. No mainfile.php changes are needed. Full documentation: &lt;a href="https://xoops.github.io/xoops-docs/" rel="noopener noreferrer"&gt;https://xoops.github.io/xoops-docs/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  System requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;PHP &amp;gt;= 8.2.0 (PHP 8.4 or 8.5 recommended, prepared for 8.6)&lt;/li&gt;
&lt;li&gt;MySQL &amp;gt;= 5.7.8 or MariaDB &amp;gt;= 10.5 (a supported MySQL 8.x or MariaDB LTS recommended)&lt;/li&gt;
&lt;li&gt;Apache 2.4+ or nginx&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Translations
&lt;/h2&gt;

&lt;p&gt;XOOPS 2.7.3 adds new English language constants: the SCEditor editor strings introduced in RC 1 and one logout-confirmation string added in Final — see docs/lang_diff.txt. XOOPS remains maintained in 37 community translations: &lt;a href="https://github.com/XoopsLanguages" rel="noopener noreferrer"&gt;https://github.com/XoopsLanguages&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug reports:&lt;/strong&gt; &lt;a href="https://github.com/XOOPS/XoopsCore27/issues" rel="noopener noreferrer"&gt;https://github.com/XOOPS/XoopsCore27/issues&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Support forums:&lt;/strong&gt; &lt;a href="https://xoops.org/modules/newbb/" rel="noopener noreferrer"&gt;https://xoops.org/modules/newbb/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>php</category>
      <category>xoops</category>
      <category>cms</category>
      <category>news</category>
    </item>
    <item>
      <title>XOOPS Debugbar 1.3.3</title>
      <dc:creator>Michael Beck</dc:creator>
      <pubDate>Wed, 29 Jul 2026 06:06:53 +0000</pubDate>
      <link>https://dev.to/mambax7/xoops-debugbar-133-1l2o</link>
      <guid>https://dev.to/mambax7/xoops-debugbar-133-1l2o</guid>
      <description>&lt;h3&gt;
  
  
  Smarter Diagnostics, Safer Debugging, Faster Development
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://xoops.org/" rel="noopener noreferrer"&gt;XOOPS&lt;/a&gt;&lt;/strong&gt; development experience just took another big step forward. &lt;strong&gt;XOOPS DebugBar 1.3.3&lt;/strong&gt; is now available for &lt;a href="https://github.com/XOOPS/XoopsCore27/releases" rel="noopener noreferrer"&gt;XOOPS 2.7.1+&lt;/a&gt;, bringing developers and site administrators a more powerful, polished, and security-conscious way to understand what is happening inside their websites.&lt;/p&gt;

&lt;p&gt;Built for PHP 8.2 and newer, &lt;strong&gt;XOOPS DebugBar&lt;/strong&gt; adds an administrator-only diagnostics toolbar to rendered pages and pairs it with protected administration screens for performance analytics, logs, system diagnostics, and Xdebug profiles. The result is a practical command center that helps developers spot slow requests, repeated queries, configuration issues, and application errors without losing sight of security or usability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DOWNLOAD:&lt;/strong&gt; &lt;a href="https://github.com/XoopsModules27x/debugbar/releases/" rel="noopener noreferrer"&gt;https://github.com/XoopsModules27x/debugbar/releases/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Turn performance data into action
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;DebugBar 1.3.3&lt;/strong&gt; makes it easier to move from “this page feels slow” to a useful diagnosis. Its Analytics area brings together stored request profiles, slow URLs, repeated-query and N+1 candidates, per-module comparisons, performance-budget violations, flight-recorder snapshots, OPcache health, and available Xdebug profiles.&lt;/p&gt;

&lt;p&gt;Teams can define budgets for slow requests, queries, resource use, and XOOPS bootstrap time, then use the collected evidence to focus optimization work where it matters most. Query logging modes and slow-query highlighting keep database investigations targeted, while the signed, read-only EXPLAIN workflow helps administrators inspect supported SELECT queries safely.&lt;/p&gt;

&lt;h3&gt;
  
  
  A clearer view of the whole XOOPS request
&lt;/h3&gt;

&lt;p&gt;The browser toolbar puts essential request information close at hand, including database queries, timers, blocks, errors, Smarty data, and included files. A new practical guide helps developers and webmasters get productive quickly, while extension documentation explains how module authors can add their own instrumentation and collectors.&lt;/p&gt;

&lt;p&gt;Optional integrations expand the toolkit without turning them into requirements. Monolog can provide structured file logging, Ray can receive forwarded diagnostics when available, Xdebug can create one-shot profiles, and OPcache statistics can reveal server health. xWhoops and Tracy remain capability-detected and optional, so their absence will not prevent DebugBar from loading.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improved Security
&lt;/h3&gt;

&lt;p&gt;Powerful diagnostics must be handled carefully, and security is a central theme of the 1.3.3 release. Toolbar output is restricted to authenticated administrators, administrative changes use XOOPS CSRF protection, and diagnostic values pass through bounded sanitization and redaction.&lt;/p&gt;

&lt;p&gt;The release also introduces a dedicated protected signing key for EXPLAIN requests, stricter validation that accepts only a single read-only SELECT statement, safer rendering for dumped values and email previews, and allowlisted access to logs, profiles, and flight-recorder files. If an optional capability or required security resource is unavailable, DebugBar is designed to fail safely.&lt;/p&gt;

&lt;h3&gt;
  
  
  More dependable, more polished
&lt;/h3&gt;

&lt;p&gt;Version 1.3.3 includes a wide range of fixes and refinements across AJAX behavior, editor links, mail previews, Server-Timing headers, dark-mode syntax highlighting, profile-table detection, Monolog storage fallback, and browser widgets. It also improves the accuracy of bootstrap measurements and repeated-query thresholds, while keeping collection-heavy features disabled or bounded by sensible defaults.&lt;/p&gt;

&lt;p&gt;The module supports XOOPS 2.7.1 or newer and PHP 8.2 or newer, with compatibility coverage through PHP 8.5. Existing users should run the XOOPS module update after installing version 1.3.3 so the new preferences, protected EXPLAIN key, and refreshed browser assets are applied.&lt;/p&gt;

&lt;p&gt;Whether you are building a module, tracking down an elusive error, or tuning a busy XOOPS site, DebugBar 1.3.3 gives you better evidence, faster answers, and greater confidence. Install or update the module, enable XOOPS Debug and the DebugBar toolbar for an administrator account, and start exploring what your site has been trying to tell you.&lt;/p&gt;

</description>
      <category>php</category>
      <category>xoops</category>
      <category>debugbar</category>
      <category>debugging</category>
    </item>
    <item>
      <title>XOOPS 2.7.2 Final — safer upgrades, stronger foundations</title>
      <dc:creator>Michael Beck</dc:creator>
      <pubDate>Wed, 29 Jul 2026 05:55:16 +0000</pubDate>
      <link>https://dev.to/mambax7/xoops-272-final-safer-upgrades-stronger-foundations-26od</link>
      <guid>https://dev.to/mambax7/xoops-272-final-safer-upgrades-stronger-foundations-26od</guid>
      <description>&lt;p&gt;The XOOPS Development Team is pleased to announce the release of &lt;strong&gt;XOOPS 2.7.2 Final&lt;/strong&gt;. This maintenance release builds on XOOPS 2.7.0 with another security-hardening pass, more reliable upgrade tooling, form and theme improvements, and refreshed dependencies for current PHP environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download XOOPS 2.7.2:&lt;/strong&gt; &lt;a href="https://github.com/XOOPS/XoopsCore27/releases" rel="noopener noreferrer"&gt;https://github.com/XOOPS/XoopsCore27/releases&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Highlights
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Security and upgrade hardening
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The upgrade wizard now requires administrator-group membership, and the apply-patch path requires a valid security token.&lt;/li&gt;
&lt;li&gt;Upgrade SQL dumps are stored outside the public web root and their download path is access-controlled.&lt;/li&gt;
&lt;li&gt;SQL identifier and ORDER BY handling was tightened across Criteria, kernel blocks, and system administration.&lt;/li&gt;
&lt;li&gt;Protector's database wrapper now inspects queryF() calls, language-file loading is constrained to safe basenames, and module-administration output is escaped more consistently.&lt;/li&gt;
&lt;li&gt;The tell-a-friend form now uses CAPTCHA and persistent per-IP rate limiting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These changes continue the secure-by-default work begun in XOOPS 2.7.0 while preserving compatibility with existing modules.&lt;/p&gt;

&lt;h4&gt;
  
  
  Forms, templates, and themes
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;XoopsFormTabTray provides a native tabbed form container with theme-aware renderers.&lt;/li&gt;
&lt;li&gt;XoopsFormContainerInterface formalises the contract shared by form containers.&lt;/li&gt;
&lt;li&gt;SmartyExtensions are registered across the supplied themes.&lt;/li&gt;
&lt;li&gt;xBootstrap5, xSwatch5, and xTailwind2 include dark-mode support.&lt;/li&gt;
&lt;li&gt;TinyMCE 7 language mapping now preserves locale casing such as zh_TW and resolves the correct language-pack filename.&lt;/li&gt;
&lt;li&gt;Cloned blocks retain their module binding and validated callback fields.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Refreshed dependencies
&lt;/h4&gt;

&lt;p&gt;The bundled dependency set has been refreshed, including php-debugbar 3.8.0, Smarty 4.5.7, Webmozart Assert 2.4.1, and Symfony VarDumper and YAML 7.4.14. XOOPS Helpers and TCPDF are now included directly, and SmartyExtensions was updated for QR-code support.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ozg9ov8pnktt1vt0f56.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ozg9ov8pnktt1vt0f56.jpg" alt="XOOPS Debugbar" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Debugbar is now a standalone module
&lt;/h4&gt;

&lt;p&gt;The Debugbar module is no longer bundled in the XOOPS Core download. Moving the module to its &lt;a href="https://github.com/XoopsModules27x/debugbar" rel="noopener noreferrer"&gt;own repository&lt;/a&gt; lets it publish fixes and improvements without waiting for a core release.&lt;/p&gt;

&lt;p&gt;The underlying php-debugbar/php-debugbar library remains bundled in xoops_lib, so users do not need to run a separate Composer installation.&lt;/p&gt;

&lt;p&gt;To install Debugbar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download the current release from the &lt;a href="https://github.com/XoopsModules27x/debugbar" rel="noopener noreferrer"&gt;XOOPS Debugbar releases page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Copy the included debugbar directory to htdocs/modules/debugbar.&lt;/li&gt;
&lt;li&gt;Install the module from System Admin → Modules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If Debugbar is already installed, replace its module files with the standalone release and run Update in System Admin. Do not uninstall it first unless you intentionally want to remove its saved settings and profiles.&lt;/p&gt;

&lt;p&gt;An overlay upgrade does not delete the old htdocs/modules/debugbar directory. Existing sites must replace those files explicitly so they do not continue running the older copy that was previously bundled with core.&lt;/p&gt;

&lt;p&gt;The core Monolog adapter now exposes isActive() and accepts a fourth constructor argument for the default file handler's minimum log level, matching the standalone module's integration contract. It also supports Monolog 2 and 3 level handling and bounds or redacts sensitive file-log context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Upgrading
&lt;/h2&gt;

&lt;h3&gt;
  
  
  From XOOPS 2.7.0
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Back up the database and site files.&lt;/li&gt;
&lt;li&gt;Test the upgrade on a staging copy first.&lt;/li&gt;
&lt;li&gt;Turn the site off from System Options → Preferences → General Settings.&lt;/li&gt;
&lt;li&gt;Copy the new htdocs/ files over the web root, including the updated xoops_lib and xoops_data contents for relocated directories.&lt;/li&gt;
&lt;li&gt;Copy /upgrade/ to the XOOPS root and run the upgrade wizard.&lt;/li&gt;
&lt;li&gt;Update the system, pm, profile, and protector modules from System Admin → Modules.&lt;/li&gt;
&lt;li&gt;Restore or update the standalone Debugbar module if the site uses it.&lt;/li&gt;
&lt;li&gt;Turn the site back on and review the logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  From XOOPS 2.5.x
&lt;/h3&gt;

&lt;p&gt;Sites older than XOOPS 2.5.11 should upgrade to 2.5.11 first. Run /upgrade/preflight.php before copying the 2.7.2 files; it identifies Smarty 4 template incompatibilities and other items that need attention before the main upgrade.&lt;/p&gt;

&lt;p&gt;Full installation and upgrade documentation: &lt;a href="https://xoops.github.io/xoops-docs/" rel="noopener noreferrer"&gt;https://xoops.github.io/xoops-docs/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  System requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;PHP — &amp;gt;= 8.2.0; PHP 8.4 or 8.5 recommended&lt;/li&gt;
&lt;li&gt;MySQL / MariaDB — MySQL &amp;gt;= 5.7.8 or MariaDB &amp;gt;= 10.5; a supported MySQL 8.x or MariaDB LTS release is recommended&lt;/li&gt;
&lt;li&gt;Web server — Apache 2.4+ or nginx&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2j6eiazi9v2t5p0fnf0g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2j6eiazi9v2t5p0fnf0g.jpg" alt="XOOPS Languages" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Translations — 38 languages and counting
&lt;/h3&gt;

&lt;p&gt;Beyond the English source, XOOPS is maintained in 37 community translations under the XoopsLanguages organization. Language packs are released independently; the current release page for every language is listed in docs/TRANSLATIONS.md.&lt;/p&gt;

&lt;p&gt;Please help review existing translations, report mistakes, or add a missing language. Every correction helps the whole community.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reporting issues
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Bug reports: &lt;a href="https://github.com/XOOPS/XoopsCore27/issues" rel="noopener noreferrer"&gt;https://github.com/XOOPS/XoopsCore27/issues&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Support forums: &lt;a href="https://xoops.org/modules/newbb/" rel="noopener noreferrer"&gt;https://xoops.org/modules/newbb/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Contributing: &lt;a href="https://github.com/XOOPS/XoopsCore27/blob/master/CONTRIBUTING.md" rel="noopener noreferrer"&gt;https://github.com/XOOPS/XoopsCore27/blob/master/CONTRIBUTING.md&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Download XOOPS 2.7.2:&lt;/strong&gt; &lt;a href="https://github.com/XOOPS/XoopsCore27/releases" rel="noopener noreferrer"&gt;https://github.com/XOOPS/XoopsCore27/releases&lt;/a&gt;&lt;/p&gt;

</description>
      <category>php</category>
      <category>xoops</category>
      <category>cms</category>
      <category>news</category>
    </item>
  </channel>
</rss>
