<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>XOOPS Web Application System</title>
        <link>https://xoops.org/modules/publisher</link>
        <description>Powered by You!</description>
        <lastBuildDate>Fri, 03 Apr 2026 21:17:51 +0000</lastBuildDate>
        <docs>https://backend.userland.com/rss/</docs>
        <generator>Publisher</generator>
        <category>Publisher</category>
        <managingEditor>webmaster@xoops.org( XOOPS Web Application System )</managingEditor>
        <webMaster>webmaster@xoops.org( XOOPS Web Application System )</webMaster>
        <language>en</language>
                    <image>
                <title>XOOPS Web Application System</title>
                <url>https://xoops.org/images/logo.png</url>
                <link>https://xoops.org/modules/publisher</link>
                <width>140</width>
                <height>43</height>
            </image>
                            <item>
                <title>The Modern Developer’s Swiss Army Knife: 6 Surprising Features of XOOPS Smarty Extensions</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6110</link>
                <description> The Modern Developer’s Swiss Army Knife: 6 Surprising Features of XOOPS Smarty Extensions Legacy CMS development often falls into the trap of &quot;template soup,&quot; where business logic and markup collide in a tangled, unmaintainable mess. As a CMS architect, I’ve spent years remediating the technical debt left behind when developers treat the view layer as a dumping ground for raw PHP. The XOOPS Smarty Extensions represent a sophisticated paradigm shift, providing a bridge that decouples complex operations from elegant template design while enforcing modern development standards. 1. The &quot;Invisible&quot; Bridge (Smarty 4/5 Dual-Support) One of the most exhausting aspects of maintaining long-lived CMS modules is managing major dependency shifts. Smarty 5 introduced a radical departure from previous versions, moving toward a PSR-compliant, namespaced Extension architecture. For most developers, this would mean rewriting every plugin registration call. These extensions abstract that entire architectural shift away through an automated registry system. By detecting the environment and wrapping extensions in a Smarty5Adapter, the library allows your view layer to remain functional and future-proof without manual intervention. The registry detects the Smarty version and uses the appropriate registration path:  Smarty 4 : calls registerPlugin() on each extension Smarty 5 : wraps each extension in Smarty5Adapter and calls addExtension()  2. Security as a Default, Not an Afterthought In traditional templating, security is often a manual checklist—and humans are notoriously bad at checklists. The SecurityExtension and FormExtension implement a &quot;fail-closed&quot; philosophy that is essential for modern web security. For instance, base64_encode_file doesn&apos;t just blindly read from the filesystem; it validates paths against XOOPS_ROOT_PATH or DOCUMENT_ROOT. If a path resolves outside these boundaries, it returns an empty string, silently neutralizing potential directory traversal vulnerabilities.     Feature   Manual Approach   Automated Extension Approach     CSRF Protection   Manual creation of hidden input fields and token management.   Automatic injection via the form_open function.     File Access   Manual realpath and boundary checks in PHP logic.   &quot;Fail-closed&quot; restriction to XOOPS_ROOT_PATH or DOCUMENT_ROOT.     URL Safety   Complex Regex or manual scheme filtering.   sanitize_url automatically blocks unsafe schemes like javascript: or data:.     3. Human-Centric Data Formatting (and Portability) A surprising and powerful feature of this library is its portability. Several modules, specifically the TextExtension and FormatExtension, are Pure PHP. This means they have zero dependencies on the XOOPS core, allowing you to carry these utilities into non-XOOPS projects. They move the needle from robotic data output to contextual User Experience (UX) wins. UX Wins:  reading_time: Estimates engagement (e.g., &quot;3 min read&quot;) based on word count. relative_time: Replaces static timestamps with context like &quot;2 hours ago.&quot; bytes_format: Automatically converts raw integers into readable units like &quot;1.5 MB.&quot; pluralize: Handles grammatical nuances, including irregular plurals (e.g., ).  Pro-Tip: Avoid Double Escaping. When using HTML-producing modifiers like nl2p, linkify, or highlight_text, do not apply |escape afterward. Doing so will break the intended HTML markup and render the tags as literal text on the screen. 4. The &quot;Assign&quot; Rule – Logic Without the Mess A common pitfall in Smarty is the direct output of functions that return booleans or structured arrays. This usually results in a useless stringified &apos;1&apos; or an empty space appearing in your HTML. These extensions enforce a &quot;best practice&quot; by encouraging the assign parameter. This keeps your templates architecturally sound by handling logic within variables rather than force-outputting return values. Example: Handling User States      Welcome back, member!   By adopting the assign pattern for functions like validate_form or has_user_permission, the template remains a clean tool for presentation rather than a dumping ground for PHP results. 5. Modern Media and Social Mastery The NavigationExtension enables a template to act like a modern web application by parsing complex external data on the fly. The youtube_id modifier is particularly robust, handling standard watch URLs, short links (youtu.be), embeds, and even YouTube Shorts. Furthermore, the social_share function allows for the instantaneous generation of share links for a specific set of supported platforms: Twitter, Facebook, LinkedIn, Reddit, and Email. Combined with the slugify modifier—which transforms messy titles into SEO-friendly URL segments—developers can implement high-level marketing features with a single line of template code. 6. Zero-Risk Production Debugging Debugging a live production site is usually a high-stakes gamble. The RayDebugExtension eliminates this risk through its &quot;no-op&quot; design. It specifically integrates with the Ray desktop app; if the Ray debugger is missing or the logger is disabled, the tags do absolutely nothing. This allows you to leave tags like , , or  in your templates during the development cycle. You can push to production with confidence, knowing that these tags won&apos;t crash the site or leak sensitive debug information to the public browser if you forget to remove them. Conclusion: The Future of XOOPS Templating The XOOPS Smarty Extensions represent a significant evolution in how we approach the view layer. By abstracting version compatibility, automating security, and providing portable PHP utilities, they shift the developer’s focus from &quot;fixing templates&quot; to &quot;architecting experiences.&quot; This raises a fundamental question for the modern CMS architect: Should templates remain &quot;dumb&quot; containers for data, or is this &quot;Smarty&quot; evolution—where the view layer is empowered to secure, format, and debug itself—the necessary path forward for building sustainable, modern web applications? </description>
                <pubDate>Tue, 31 Mar 2026 20:10:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6110</guid>
            </item>
                    <item>
                <title>XOOPS Council 2026</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6109</link>
                <description>The XOOPS Community is fortunate to have many outstanding individuals who dedicate countless hours to helping XOOPS move forward. Their commitment is visible in the forums and reflected in the steady stream of new and updated modules, themes, fixes, and improvements.&lt;br&gt;&lt;br&gt;The key to XOOPS’ success is a strong team working together toward a common goal. To help with the governance of the project, in 2009 the XOOPS organization has added the XOOPS Council.&lt;br&gt;&lt;br&gt;As with many Open Source projects, XOOPS governance is based on meritocracy. In other words, the more a person contributes to the project and the community, the more weight their voice carries in helping shape its direction. The XOOPS Council is made up of individuals who have made tremendous contributions to XOOPS and who remain actively engaged in its ongoing development.&lt;br&gt;&lt;br&gt;This model encourages openness and participation while also ensuring that leadership is grounded in experience, commitment, and meaningful contribution. Anyone can help shape the future of XOOPS, but real influence comes through active and sustained involvement.&lt;br&gt; &lt;br&gt;Here is an update about the current XOOPS Council to lead and guide XOOPS forward (you can see their detailed bios below): &lt;br&gt;&lt;br&gt;• Modules Team: Gottfried Gabor (Goffy) from Austria. &lt;br&gt; &lt;br&gt;• Support Team: Christelle Gaulupeau (Cesagonchu) from France &lt;br&gt; &lt;br&gt;• Theme Design Team: Eren Yumak (Heyula) from Turkey&lt;br&gt; &lt;br&gt;• Core Team: Michael Beck (Mamba) currently from USA &lt;br&gt;&lt;br&gt;We are all looking forward to working together to keep moving XOOPS forward!</description>
                <pubDate>Tue, 31 Mar 2026 16:40:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6109</guid>
            </item>
                    <item>
                <title>XOOPS 4.0 – Vision, Direction, and Roadmap (Discussion)</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6108</link>
                <description>XOOPS 4.0 – Vision, Direction, and Roadmap (Discussion)&lt;br&gt;&lt;br&gt;Over the past months, a significant amount of work has been done to move XOOPS forward in a practical and future-proof way. I’d like to consolidate that into a clear starting point for discussion, feedback, and alignment.&lt;br&gt;&lt;br&gt;Please join us in this thread on XOOPS Forums!&lt;br&gt;&lt;br&gt;Core Principle: Evolution, not Revolution&lt;br&gt;&lt;br&gt;XOOPS 4.0 is designed with one key goal:&lt;br&gt;&lt;br&gt;Do not break existing modules and themes — extend them.&lt;br&gt;&lt;br&gt;• Existing modules will continue to work &lt;br&gt;• Developers can adopt new architecture incrementally &lt;br&gt;• No forced rewrites or disruptive migrations &lt;br&gt;&lt;br&gt;This follows XOOPS’ long-standing philosophy: stability + gradual evolution</description>
                <pubDate>Mon, 30 Mar 2026 15:30:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6108</guid>
            </item>
                    <item>
                <title>Coming soon: XOOPS 4.0 PageBuilder</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6107</link>
                <description>The &quot;No-Code&quot; Revolution: 5 Game-Changing Secrets of the XTF Page Builder  Join our Facebook group: https://www.facebook.com/groups/xoops   For years, web design has been haunted by a persistent shadow: the &quot;gap.&quot; It is that frustrating space between a visionary design mockup and the technical reality of a live web page. Historically, moving from concept to a functional layout required a tedious cycle of drafting, coding, and debugging. Creative intent was often diluted by technical constraints, and the final product rarely felt as polished as the original vision because developers were forced to work with &quot;placeholder&quot; boxes rather than the final, realistic content.  The coming soon XOOPS 4.0 PageBuilder  arrives as the definitive bridge across this gap. By shifting the focus from manual coding to visual assembly, it allows creators to manifest their ideas in real-time. It transforms the web development process from a static drafting phase into a dynamic, living environment where the final product is shaped as quickly as you can imagine it. You are no longer looking at abstractions; you are building the actual site from minute one. The philosophy behind this tool is simple yet transformative: Build beautiful pages with XTF themes and XMF widgets — no coding required. By combining pre-styled themes with a robust catalog of XMF widgets—including immersive heroes, feature grids, and complex pricing tables—the XTF Page Builder democratizes high-end web design, allowing strategists to focus on the story rather than the syntax. </description>
                <pubDate>Mon, 30 Mar 2026 06:50:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6107</guid>
            </item>
                    <item>
                <title>Beyond the Inspect Tool: How cssHolmes3 Provides X-Ray Vision for XOOPS Themes</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6106</link>
                <description> Introduction: The &quot;Invisible&quot; Problem of Modern Theming  In modern CMS development, the browser’s &quot;Inspect Element&quot; tool is our first line of defense, but it’s often blind to the architectural intent of the page. As XOOPS themes have evolved into complex, structured systems involving the XOOPS Theme Framework (XTF) and XMF widgets, the boundary between a &quot;theme shell,&quot; a layout &quot;slot,&quot; and a &quot;widget&quot; has become invisible to standard tools. You see a sea of nested div tags, but you can’t easily tell which logic layer rendered them.  cssHolmes3 is the purpose-built diagnostic workbench for XOOPS (v2.5.12+) that bridges this gap. It doesn&apos;t just look at the DOM; it analyzes the underlying XTF logic to provide true &quot;X-ray vision.&quot; For a Senior Architect, this tool represents a shift from guessing at styles to auditing a structured system. Code: You can download it from https://github.com/mambax7/cssholmes   </description>
                <pubDate>Thu, 26 Mar 2026 21:20:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6106</guid>
            </item>
                    <item>
                <title>Alumni Module Available for Testing</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6105</link>
                <description>&lt;br&gt;&lt;br&gt;Alumni module for XOOPS:&lt;br&gt;&lt;br&gt;Demo: https://demo.xoops.org/modules/alumni/&lt;br&gt;&lt;br&gt;Code: https://github.com/mambax7/alumni &lt;br&gt;&lt;br&gt;Features&lt;br&gt;&lt;br&gt; Profile Management&lt;br&gt;&lt;br&gt;• Complete Alumni Profiles: Personal, academic, and professional information&lt;br&gt;• Photo Uploads: Profile photos with automatic resizing&lt;br&gt;• Privacy Controls: Granular privacy settings (public, alumni-only, private)&lt;br&gt;• Skills Tracking: Tag and categorize professional skills&lt;br&gt;• Social Integration: LinkedIn, Twitter, Facebook, and website links&lt;br&gt;• View Counters: Track profile visibility and engagement&lt;br&gt;&lt;br&gt;&lt;br&gt; Networking &amp; Connections&lt;br&gt;&lt;br&gt;• Connection System: Send and accept connection requests&lt;br&gt;• Connection Management: View, accept, decline, and remove connections&lt;br&gt;• Status Tracking: Pending, accepted, declined, and blocked states&lt;br&gt;• Connection Limits: Configurable maximum connections per user&lt;br&gt;• Privacy Aware: Respects user networking preferences&lt;br&gt;&lt;br&gt; Event Management&lt;br&gt;&lt;br&gt;• Event Types: Physical, online, and hybrid events&lt;br&gt;• RSVP System: Attend, maybe, or decline with guest count&lt;br&gt;• Event Categories: Organize by reunion, career fair, networking, etc.&lt;br&gt;• Registration Deadlines: Automatic deadline enforcement&lt;br&gt;• Capacity Management: Set maximum attendees&lt;br&gt;• Featured Events: Highlight important events&lt;br&gt;• Event Images: Visual event promotion&lt;br&gt;• Attendee Lists: See who&apos;s attending events&lt;br&gt;&lt;br&gt; Mentorship Program&lt;br&gt;&lt;br&gt;• Mentor Availability: Alumni can offer to mentor&lt;br&gt;• Mentorship Requests: Students/alumni can request mentors&lt;br&gt;• Status Tracking: Active, pending, completed, declined&lt;br&gt;• Mentorship Area: Specify expertise areas&lt;br&gt;• Request Management: Accept or decline mentorship requests</description>
                <pubDate>Tue, 24 Feb 2026 13:00:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6105</guid>
            </item>
                    <item>
                <title>Real Estate Module Available for Testing</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6104</link>
                <description>Real Estate &amp; Rental module for XOOPS:&lt;br&gt;&lt;br&gt;Demo: https://demo.xoops.org/modules/realestate/&lt;br&gt;&lt;br&gt;Code: https://github.com/mambax7/realestate&lt;br&gt;&lt;br&gt;Features&lt;br&gt;- Property Management - Full CRUD for apartments, houses, villas, offices, and land&lt;br&gt;- Image Gallery - Multiple images per property with thumbnails, drag-and-drop ordering&lt;br&gt;- Advanced Search - Full-text search with filters (type, status, price range, city, beds/baths)&lt;br&gt;- Interactive Maps - OpenStreetMap integration with coordinate picker in admin&lt;br&gt;- Contact System - Built-in messaging from visitors to property owners&lt;br&gt;- Favorites - Logged-in users can save favorite properties&lt;br&gt;- Blocks - Featured properties, latest listings, browse by city&lt;br&gt;- Responsive Design - Mobile-first CSS, modern card layout&lt;br&gt;- Admin Dashboard - Statistics, property management, message center&lt;br&gt;- Sample Data Seeder - 12 properties with placeholder images auto-installed&lt;br&gt;&lt;br&gt;</description>
                <pubDate>Sun, 15 Feb 2026 15:30:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6104</guid>
            </item>
                    <item>
                <title>XOOPS 2.5.12 PhpUnit Tests Added</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6103</link>
                <description>XOOPS Development Team has added a PhpUnit test suite to XOOPS 2.5.12 that hopefully will help us with some regression testing:&lt;br&gt;&lt;br&gt;https://github.com/XOOPS/XoopsCore25/pull/1605&lt;br&gt;&lt;br&gt;If you have time, check it out if you see something strange or weird</description>
                <pubDate>Sun, 15 Feb 2026 15:20:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6103</guid>
            </item>
                    <item>
                <title>XOOPS 2.6.0 Alpha-1 available for Testing &amp; Contributions</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6102</link>
                <description>The XOOPS Development Team is pleased to announce the release of XOOPS 2.6.0-Alpha-1&lt;br&gt;&lt;br&gt;XOOPS 2.6.0 is not actively developed at the moment, but in case somebody would like to put some effort into it, it has been updated to PHP 8.4 as the minimum PHP version.&lt;br&gt;&lt;br&gt;&lt;br&gt;Please help make XOOPS better by testing and  reporting any issues</description>
                <pubDate>Sun, 15 Feb 2026 15:00:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6102</guid>
            </item>
                    <item>
                <title>Smarty plugin for Publisher</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6101</link>
                <description>XOOPS Publisher Custom Plugin is a powerful and flexible Smarty plugin developed for the XOOPS CMS Publisher module. With this plugin, you can display your Publisher module content anywhere in your theme files, in any format you desire.</description>
                <pubDate>Wed, 19 Nov 2025 10:40:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6101</guid>
            </item>
            </channel>
</rss>
