Skip to content

bug: pass bool (not int) to api_plugin_register_hook() $enable - #852

Merged
TheWitness merged 4 commits into
developfrom
fix/register-hook-enable-bool
Oct 8, 2026
Merged

TheWitness merged 4 commits into
developfrom
fix/register-hook-enable-bool

Conversation

@TheWitness

Copy link
Copy Markdown
Member

Summary

Cacti 1.3 (develop) types the 5th argument of api_plugin_register_hook() as a strict bool $enable (lib/plugins.php). This plugin's hook (re-)registration calls passed the integer 1 instead of true.

Today that only coerces because the calling file does not declare strict_types. The moment declare(strict_types=1) is added to that file (an ongoing hardening direction across the plugin fleet), those calls would throw:

Uncaught TypeError: api_plugin_register_hook(): Argument #5 ($enable) must be of type bool, int given

which fatals the plugin management page on load — exactly what happened in plugin_routerconfigs (fixed in Cacti/plugin_routerconfigs#188).

Change

Pass true instead of 1 (and false for any 0) at every api_plugin_register_hook() call site. Type-only correctness fix — no behavior change. php -l clean.

api_plugin_register_realm() is not affected (its trailing argument is typed mixed, not bool).

Cacti 1.3 types api_plugin_register_hook() 5th arg as bool enable. These calls passed int 1, which only coerces while the file lacks declare(strict_types=1); pass true so they stay type-correct. php -l clean.
@TheWitness
TheWitness requested review from bmfmancini and xmacan and a balanced review from Copilot October 8, 2026 18:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Seventeen remaining hook registrations still pass '1' instead of a boolean.

1 open finding
What changed in this PR

Updates hook registration arguments for Cacti 1.3’s strict boolean signature.

Changes:

  • Replaces three integer enable flags with true.
  • Documents the compatibility fix.
File Description
setup.php Uses a boolean hook enable flag.
includes/​database.php Updates two hook registrations.
CHANGELOG.md Records the compatibility fix.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread includes/database.php
…de sites

Convert the 17 other api_plugin_register_hook() 5th arguments in includes/database.php from the string '1' to boolean true so the upgrade/re-registration paths are strict_types-safe against Cacti develop's bool \ signature.
@TheWitness
TheWitness merged commit 9da2bc9 into develop Oct 8, 2026
3 checks passed
@TheWitness
TheWitness deleted the fix/register-hook-enable-bool branch October 8, 2026 19:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants