Manage QCDR PHP Token Permission and Preserve PHP Code Across Downgrades
PHP Tokens have two separate controls in QCDR 1.1.05: the site must have Max-level QCDR feature access for PHP Token execution, and the administrator must have the dedicated Manage PHP Tokens Joomla ACL to manage that code.
A downgrade does not erase saved PHP code. QCDR preserves the Token record and fails closed at runtime until Max-level access returns.
The Two Gates Are Different
- Feature entitlement: PHP Tokens require Max or All Access. This controls whether preserved PHP output is allowed to execute.
- Joomla ACL:
qc_dynamic_replacer.manage_php_tokenscontrols whether an administrator may create, edit, duplicate, delete, change the state of, or otherwise manage PHP Tokens. - General Token permission: normal Token management permission is still required; the PHP permission is an additional least-privilege boundary.
What Happens When the Tier Drops Below Max
QCDR keeps the existing PHP Token row, PHP code, execution mode, error mode, targeting, and related configuration in the database. The RuntimeEngine independently checks the current Effective Tier before PHP execution and returns an unresolved result when Max is unavailable.
That means a direct authored PHP Token placeholder is preserved rather than replaced by unsafe output, and a Rule that depends on the PHP Token leaves its original selected match intact when the replacement cannot resolve.
Editing During a Downgrade
The editor preserves an existing paid Token value when the current tier no longer allows that output type. It does not silently convert a saved PHP Token into Plain text or wipe its PHP body. Administrators should avoid treating a downgrade as a reason to recreate the Token.
Creating a new PHP Token or changing another Token into PHP remains Max-gated. Duplicating an existing PHP Token also explicitly requires Max. The dedicated Manage PHP Tokens ACL continues to apply even when the code is only being preserved.
ACL Enforcement Covers More Than the Editor
- Bulk status changes refuse selected PHP Tokens when the administrator lacks Manage PHP Tokens.
- The row status cycle refuses a PHP Token state change without that ACL.
- Delete refuses PHP Tokens without the ACL and also refuses deletion while Rule/Token dependencies still reference the Token.
- Duplicate refuses PHP Tokens without the ACL and refuses duplication below Max.
Restore Access Without Rebuilding the Token
- Restore the Authorized Domain entitlement or other valid Max/All Access state.
- Confirm the QCDR Effective Tier has returned to Max and Entitlement Revalidation is healthy.
- Confirm the administrator who will maintain the code still has Manage PHP Tokens.
- Open the preserved PHP Token and review its code, execution mode, error mode, state, and targeting.
- Use a controlled page or Rule Preview to validate behavior before returning a high-impact PHP Token to normal live use.
Do Not Confuse Preservation with Permission
Preserved PHP code remaining in the database does not mean it is executable at a lower tier, and seeing the Token in the library does not grant an administrator permission to manage it. QCDR intentionally keeps storage, entitlement, ACL, and runtime execution as separate controls.
Community Discussion
Want to compare workflows, share practical tips, or discuss how you use this QCDR feature? Visit the QC Dynamic Replacer Community. For private support, bug reports, account-specific issues, or feature requests, use the QuantaCade support system.