Files
FOSSBilling/composer.json
T
Adam Daley 53eb4f2fca Refactor Twig environments and extensions (#2752)
* Replace Custom Twig components

Replace custom Twig components with native Twig components, remove unused custom Twig components, and move functionality to macros where appropriate.

m

Update partial_extensions.html.twig

* Update Twig components and migrate to FOSSBilling namespace

* Update Currency module...

* Refactor Twig environment config and loading

* Switch CSRF to cookie-based double-submit

* Add Api Twig extension and restore widget/svg helpers

* Cast language flags; improve JSON parsing

* Add markdown DI service and use in Admin API

* Refactor Twig extensions and markdown, simplify APIs

* Add sandboxed email Twig env, update render APIs

* Fix pagination URL usage and menu class

* Fix HTML markup in email templates

* Use macro for avatars and status badges

* Fix Twig spacing and pagination URL filter order

* Replace Custom Twig components

Replace custom Twig components with native Twig components, remove unused custom Twig components, and move functionality to macros where appropriate.

m

Update partial_extensions.html.twig

* Update Twig components and migrate to FOSSBilling namespace

* Refactor Twig environment config and loading

* Add Api Twig extension and restore widget/svg helpers

* Cast language flags; improve JSON parsing

* Add markdown DI service and use in Admin API

* Refactor Twig extensions and markdown, simplify APIs

* Fix pagination URL usage and menu class

* Fix Twig spacing and pagination URL filter order

* Use `current_theme` global and refactor `period_title`

* Allow markdown and date in email Twig sandbox

* Update email template examples

* Fix Twig URLs, quoting, and logo alt text

* Fix Twig templates: URLs, i18n, search params

* Use `templates/*` directories for module templates

* Tighten Twig sandbox and add tests

* Add Twig environment and template docs to `AGENTS.md`

* Use Symfony Filesystem/Finder and assorted fixes

* Fix ticket reply link fragment concatenation

* Close missing divs in dashboard template

* Use detailed `toApiArray` for client

* Fix module name resolution for email templates

* Regenerate `composer.lock`

* Use `markdown_to_html` filter in admin macro

* Handle null price/quantity and rename test method

* Use `Tools::isHTTPS()` for HTTPS checks

* Add 'area' param to `url` filter and update templates

* Use client area URLs in admin templates

* Use client area and guest API URLs in templates

* Remove client-side invoice delete feature

* Create Twig env via `TwigFactory` for PDF rendering

* Add embedded orderbutton JS and update render

* Add 'srclink' to cspell allowlist

* Use `renderEmailTplString` for email rendering

* Bump twig/markdown-extra to v3.24

* Use `markdown_to_html` for privacy policy

* Escape API JSON, handle null IP, client URLs

* Remove initial admin creation flow

* Handle HTTP failures and make tests robust

* Use `api_url` helper in admin templates

* Use `url` filter for footer link 5

* Add patch53 to remove legacy html templates

* Bump setting last_patch to 53

* Add patch54 to restore legacy email templates

* Use renderEmailTplString for email templating

* Remove redundant else/endif in order template

* Add file-hash cache buster for asset URLs

* Remove raw Twig filter and handle missing modules dir

* Return '-' for future timestamps

* Register and reuse TwigFactory and add CSRF cookie

* Adjust API URL helper and add Twig error handling

* Update composer.lock and package-lock.json

* Add twig_factory to ServiceTest DI

* Use url filter for link_page in template

* Composer - update deps and add markdown-extra

* Remove docblocks and inline comments in `TwigFactory`

* Add patches 53-55 and update `last_patch`

* Add `has_permission` Twig function; exclude `href`

* Remove duplicate network interface form

* Guard removal of legacy dirs; add network input

* Handle null category descriptions in template

* Add Twig adapter env and sandbox policy

* Add 'striptags' to cspell word list

* Update composer.lock (deps updated/removed)

* Sanitize custom payment adapter templates

* Remove redundant legacy API tests

* Bump `last_patch` setting to 56

* Coalesce null before `markdown_to_html`

* Move update patcher to system CLI command

* Remove stray `endif` from recaptcha macro

* Update composer.lock

* Fix extra closing brace in Api ServiceTest

* Fix test errors from main merge

- Remove testGetRequestCount tests (method moved to RateLimiter)
- Remove testGetDi from Staff and System GuestTest (protected method)
- Fix IP error message in testLoginCheckIpException
- Add rate_limiter mock to Staff GuestTest tests that need it

* Fix remaining Staff GuestTest issues

- Add extension service mock for captcha check
- Fix error message from 'User not found' to 'Admin not found'

* Fix Staff GuestTest: update query and add logger mock

* Fix Staff GuestTest: set admin status to active for password reset flow

* Fix stale API calls and inverted required condition

- Notification: replace removed system_string_render with direct output
- Antispam settings: replace |alink/|link with |url/|api_url filters
- build_form macro: fix inverted required condition for non-textarea inputs

* Sanitize JS/data URIs and disable buttons by permission

* Use client login/profile links in support emails

* Encode fb-api JSON and tighten URL sanitization

* Prefer session auth for API key methods

* Remove stray endif and fix template formatting

* Add CSRF token to CSV exports; fix template

* Remove stray endif in currency template

* Make invoice PDF generation return Response

* Fix Twig filters, templates, and form handling

* Remove readonly from anonymous class in test

* Inline DebugBar CSS/JS in renderHead

* Add Bootstrap Tab to global bootstrap

* Capitalize template UI strings

* Use CKEditor API for reply quotes

* Remove WYSIWYG module and move CKEditor to themes

* Bump `last_patch` in install SQL to 59

* Remove Spamchecker module

* Run domain management script only for active orders

* Standardize UI text capitalization & minor fixes

* Remove Spamchecker legacy tests; fix period test

* Rename Spamchecker tests to Antispam

* Restore antispam config in tests; remove fixture

* Refactor Antispam Guest tests for config checks

* Update theme build docs; remove Wysiwyg module

* Remove spamchecker from cspell and tweak comment

* Add spamchecker to cspell word list

* Capitalize 'Update Graphs' button label
2026-05-06 21:02:16 +01:00

136 lines
4.3 KiB
JSON

{
"name": "fossbilling/fossbilling",
"description": "Free and Open Source Billing System",
"support": {
"docs": "https://fossbilling.org/docs",
"source": "https://github.com/FOSSBilling/FOSSBilling",
"issues": "https://github.com/FOSSBilling/FOSSBilling/issues",
"chat": "https://fossbilling.org/discord"
},
"readme": "https://github.com/FOSSBilling/FOSSBilling/blob/main/README.md",
"type": "project",
"license": "Apache-2.0",
"keywords": [
"billing",
"invoice",
"client management"
],
"homepage": "https://fossbilling.org",
"scripts": {
"test": "phpunit",
"phpstan": "phpstan analyze --memory-limit=512M",
"phpstan:baseline": "phpstan analyze --generate-baseline",
"cs:check": "php-cs-fixer fix --dry-run --diff",
"cs:fix": "php-cs-fixer fix",
"rector:check": "rector --dry-run",
"rector:fix": "rector",
"check": [
"@phpstan",
"@cs:check",
"@test"
],
"fix": [
"@rector:fix",
"@cs:fix"
]
},
"require": {
"php": ">=8.3",
"ext-curl": "*",
"ext-intl": "*",
"ext-mbstring": "*",
"ext-pdo": "*",
"ext-zlib": "*",
"antcms/antloader": "^2.0.5",
"doctrine/orm": "^3.6",
"dompdf/dompdf": "^3.1.4",
"egulias/email-validator": "^4.0.4",
"filp/whoops": "^2.18.4",
"gabordemooij/redbean": "^5.7.5",
"io-developer/php-whois": "^4.1.10",
"league/commonmark": "^2.8",
"league/csv": "^9.28",
"liborm85/composer-vendor-cleaner": "^1.7.1",
"mattketmo/email-checker": "^3.0",
"maxmind-db/reader": "^1.13.1",
"monolog/monolog": "^3.9",
"nelexa/zip": "^4.0.2",
"php-debugbar/php-debugbar": "^3.0.0",
"php-debugbar/twig-bridge": "^2.0.0",
"phpmyadmin/motranslator": "^6.0.0",
"pimple/pimple": "^3.6",
"plesk/api-php-lib": "^2.2.1",
"prinsfrank/standards": "^3.15",
"psr/log": "^3.0.2",
"sentry/sentry": "^4.19.1",
"stripe/stripe-php": "^20.0.0",
"symfony/cache": "^7.4.1",
"symfony/console": "^7.4.1",
"symfony/filesystem": "^7.4",
"symfony/finder": "^7.4",
"symfony/html-sanitizer": "^7.4",
"symfony/http-client": "^7.4.1",
"symfony/http-foundation": "^7.4.1",
"symfony/mailer": "^7.4",
"symfony/polyfill-php84": "^1.33",
"symfony/polyfill-php85": "^1.33",
"symfony/property-access": "^7.4",
"symfony/property-info": "^7.4.1",
"symfony/rate-limiter": "^7.4",
"symfony/sendgrid-mailer": "^7.4",
"symfony/serializer": "^7.4.2",
"symfony/uid": "^7.4",
"twig/intl-extra": "^3.22.1",
"twig/markdown-extra": "^3.24",
"twig/twig": "^3.22.2"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.92.3",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^2.1.33",
"phpstan/phpstan-deprecation-rules": "^2.0.3",
"phpunit/phpunit": "^12.0.0",
"rector/rector": "^2.3",
"symfony/deprecation-contracts": "^3.6.0",
"symfony/phpunit-bridge": "^7.4"
},
"config": {
"sort-packages": true,
"allow-plugins": {
"phpstan/extension-installer": true,
"php-http/discovery": true,
"liborm85/composer-vendor-cleaner": true
},
"vendor-dir": "src/vendor"
},
"replace": {
"php-http/message-factory": "*",
"symfony/polyfill-php80": "*",
"symfony/polyfill-php81": "*",
"symfony/polyfill-php82": "*",
"symfony/polyfill-php83": "*",
"symfony/polyfill-intl-icu": "*",
"symfony/polyfill-intl-idn": "*"
},
"extra": {
"dev-files": {
"/": [
"tests/",
"docs/",
".travis.yml",
".github/",
".devcontainer/"
],
"gabordemooij/redbean": [
"testing/"
],
"mattketmo/email-checker": [
"res/"
],
"maxmind-db/reader": [
"ext"
]
}
}
}