['filter-query-block-pro/filter-query-block-pro.php'], 'free' => [ 'accomplice-query-loop-filters/accomplice-query-loop-filters.php', 'filter-query-block/filter-query-block.php', ], ]; } function fqbp_known_plugins($edition = null) { $identities = fqbp_edition_identities(); return $edition === null ? array_merge(...array_values($identities)) : ($identities[$edition] ?? []); } /** Pro takes precedence within a scope; a network selection owns that scope. */ function fqbp_selected_plugin($plugins) { foreach (fqbp_known_plugins() as $plugin) { if (in_array($plugin, $plugins, true)) return $plugin; } return ''; } /** Evaluate ownership before constants are defined, including activation requests. */ function fqbp_can_claim_edition($edition, $plugin, $active, $network) { if (!in_array($plugin, fqbp_known_plugins($edition), true)) return false; $network_plugin = fqbp_selected_plugin($network); if ($network_plugin !== '') return $network_plugin === $plugin; $selected = fqbp_selected_plugin($active); return $edition === 'pro' || $selected === '' || $selected === $plugin; } }