xoops/xmf

XMF - XOOPS Module Framework

Installs: 1 946

Dependents: 3

Suggesters: 0

Security: 0

Stars: 7

Watchers: 3

Forks: 6

Open Issues: 8

pkg:composer/xoops/xmf

v1.2.33-beta2 2026-02-07 08:43 UTC

README


XOOPS
XMF — XOOPS Module Framework

The toolkit that makes XOOPS module development faster, safer, and more consistent.

CI Status Scrutinizer Packagist Version Downloads PHP Version License

Why XMF?

Building XOOPS modules means solving the same problems over and over: filtering input, managing sessions, handling permissions, generating meta tags, working with databases. XMF gives you battle-tested solutions for all of them so you can focus on what makes your module unique.

What you get Why it matters
Input & Security Request handling, input filtering, IP address validation Stop writing your own sanitization — use proven, audited code
Database Schema migrations, table management, bulk loading Evolve your database safely across module versions
Authentication JWT tokens, key management, secure storage Add token-based auth without pulling in heavyweight packages
Module Helpers Admin panels, permissions, sessions, caching Common module tasks reduced to one-liners
Content Tools Meta tag generation, SEO titles, YAML config, search summaries Improve SEO and content handling with zero effort
Identifiers ULID and UUID generation Generate unique, sortable identifiers out of the box
Developer Tools Debugging (Kint), YAML import/export, assertions Debug and inspect with a single call

Quick Start

composer require xoops/xmf
use Xmf\Request;
use Xmf\FilterInput;
use Xmf\Metagen;

// Safe input handling
$id = Request::getInt('id', 0, 'GET');
$name = Request::getString('name', '', 'POST');

// Generate SEO-friendly meta tags
Metagen::generateMetaTags($title, $body);

// Generate a ULID
$ulid = \Xmf\Ulid::generate();

Components

xmf/src/
  |
  |-- Request.php          HTTP request handling & input retrieval
  |-- FilterInput.php      Input sanitization & XSS prevention
  |-- IPAddress.php        IPv4/IPv6 validation & subnet checks
  |-- ProxyCheck.php       Proxy detection for real client IPs
  |
  |-- Database/
  |     |-- Tables.php     Schema definition & ALTER operations
  |     |-- Migrate.php    Module schema migrations
  |     +-- TableLoad.php  Bulk data import
  |
  |-- Jwt/
  |     |-- JsonWebToken   Create & decode signed JWT tokens
  |     |-- TokenFactory   Convenient token builder
  |     +-- TokenReader    Token verification & claim extraction
  |
  |-- Key/
  |     |-- Basic.php      Key pair generation
  |     |-- FileStorage    Persistent key storage (filesystem)
  |     +-- ArrayStorage   In-memory key storage (testing)
  |
  |-- Module/
  |     |-- Admin.php      Admin panel rendering & config display
  |     +-- Helper/
  |           |-- Permission   Group permission management
  |           |-- Session      Secure session read/write
  |           |-- Cache        Module-scoped caching
  |           +-- GenericHelper  Common helper utilities
  |
  |-- Metagen.php          Meta keywords, descriptions & SEO titles
  |-- Highlighter.php      Search term highlighting
  |-- StopWords.php        Keyword filtering (multi-language)
  |
  |-- Ulid.php             ULID generation (monotonic & standard)
  |-- Uuid.php             UUID v4 generation
  |-- Random.php           Cryptographically secure random bytes
  |
  |-- Yaml.php             YAML read/write with PHP-wrapped security
  |-- Language.php         Safe language file loading
  |-- Debug.php            Kint-powered variable inspection
  +-- Assert.php           Runtime assertion helpers

Requirements

Requirement Version
PHP 7.4+
XOOPS 2.5.x or 2.6.x
Composer Required

Key Dependencies

Installation

Via Composer (recommended):

composer require xoops/xmf

As part of XOOPS:

XMF is included in XOOPS 2.5.8+ as a core library. No separate installation needed.

Development

# Install dependencies
composer install

# Run tests
composer test

# Static analysis
composer analyse

# Code style check
composer lint

# Auto-fix code style
composer fix

# Run all CI checks
composer ci

# Regenerate PHPStan baseline
composer baseline

Contributing

Contributions are welcome! Please see our Contributing Guide for details.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Make your changes and add tests
  4. Run composer ci to verify
  5. Submit a Pull Request

Links

License

XMF is licensed under the GPL-2.0-or-later.

Acknowledgments

JetBrains Logo

Thank you to JetBrains for supporting open-source development by providing free IDE licenses to this project.

Made with ❤️ by the XOOPS Project community