[wp-trac] [WordPress Trac] #31104: Plugin activation includes plugin file in variable scope of activate_plugin
WordPress Trac
noreply at wordpress.org
Wed Apr 14 23:03:01 UTC 2021
#31104: Plugin activation includes plugin file in variable scope of activate_plugin
-----------------------------+-----------------------------
Reporter: Mike_Cowobo | Owner: SergeyBiryukov
Type: defect (bug) | Status: reviewing
Priority: normal | Milestone: 5.8
Component: Plugins | Version: 4.2
Severity: normal | Resolution:
Keywords: has-patch early | Focuses:
-----------------------------+-----------------------------
Changes (by SergeyBiryukov):
* owner: dd32 => SergeyBiryukov
* milestone: Future Release => 5.8
Comment:
Replying to [comment:6 dd32]:
> The patch as-is, can't be applied, as it's got back-compat concerns.
> Those concerns are that it no longer has access to the same variables
that it previously did, so something like this would be needed (although I
dislike the usage of extract, which we're trying to avoid).
Here's the list of the variables in question, for reference:
`$plugin, $redirect, $network_wide, $silent, $current, $valid,
$requirements`
I think `$valid` and `$requirements` can be discarded right away, these
are one-time internal variables.
I thought of passing something like this as a second argument to
`plugin_sandbox_scrape()`:
`$args = compact( 'plugin', 'redirect', 'network_wide', 'silent',
'current' );`
And then recreating them there, to avoid using `extract()` as per #22400:
{{{
$plugin = $args['plugin'];
$redirect = $args['redirect'];
$network_wide = $args['network_wide'];
$silent = $args['silent'];
$current = $args['current'];
}}}
However, it looks like most of these are also internal variables that a
plugin should not really be concerned with, except for maybe
`$network_wide`. As noted above, running any code depending on these
values directly at inclusion time is bad practice that we may not
necessarily want to support. As a workaround for `$network_wide`, plugins
still have access to `$_GET['networkwide']`, see [21104] / #20995.
So it seems like we can try [attachment:"31104.diff"] early in 5.8 and see
what plugins break, if any, and then decide if any of these variables are
necessary to keep for backward compatibility.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/31104#comment:10>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list