Refine logic in perflab_install_activate_plugin_callback() to rely only on validated slug #1170
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This first came up in #1168 (comment).
I felt it was strange that
perflab_install_activate_plugin_callback()
was relying on both aslug
and afile
query var to be passed, with when the latter is absent then the plugin is installed. It assumes that iffile
is absent, then the plugin is not installed. But it could be that someone installed the plugin in another session while that screen is open, meaning that thefile
query var check would result in a plugin attempting to be installed when it is actually already installed.So this PR gets rid of the
file
query var in favor of exclusively sending theslug
query var. Then in theperflab_install_activate_plugin_callback()
function it takes the plugin slug and checks among all the installed plugins whether one of them (via the plugin file) to see if it is installed. If not, then it goes ahead and installs it.This also improves the variable terminology to use
$plugin_file
rather than$plugin_basename
which seems misleading as it could refer to just the file in the plugin's directory, when in fact it should be something like$slug/load.php
.Lastly, the submitted slug is better validated by checking if it is among any of the actual PL plugin slugs.