-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add multisite support #102
Conversation
Have you tested this in MU. This shouldn't be enough for MU support. We need an admin screen for Network Admin., take away the setting from normal admins as MU core and plugins needs to be updated as a whole and can't be updated individually. This needs a lot of thought before we embark on the path. |
Also the settings should use network options instead of the regular options if we do this. |
The URLs for reset button and the redirect url after the reset will need to be updated |
While we are at it, let’s make that URL come from a new function now that there can be different values for it so that it can be unit tested. |
Currently working on saving settings. |
If I comment out the following saving settings works for both single and multisite. add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); If not commented out there doesn't seem to be any action from the Save Changes button. I tested this in a new installation with a clean copy of the plugin and no other plugins. |
settings page is same for both multisite/single site
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks Andy!
Haven't tested yet so just some minor things and a few clarification requests.
add_action( 'admin_init', array( $this, 'update_settings' ) ); | ||
add_action( 'network_admin_edit_aspireupdate-settings', array( $this, 'update_settings' ) ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Double-checking if this is necessary for this issue or if this fixes a different issue?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is necessary for saving from multisite and provides a consistent manner of saving for both single and multisite.
includes/class-admin-settings.php
Outdated
<?php submit_button( esc_html__( 'Save Changes', 'aspireupdate-settings' ), 'primary', 'submit', false ); ?> | ||
|
||
<a href="<?php echo esc_url( $reset_url ); ?>" class="button button-secondary" >Reset</a> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same clarification request about if this is necessary for this issue or if it's aprt of another?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's necessary for sending a nonce with the submit button. I did change the link to use the submit_button()
though it may not be technically necessary to do that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Works for me, thanks!
<option | ||
data-api-key-url="<?php echo esc_html( $group_option['api-key-url'] ?? '' ); ?>" | ||
data-require-api-key="<?php echo esc_html( $group_option['require-api-key'] ?? 'false' ); ?>" | ||
value="<?php echo esc_attr( $group_option['value'] ?? '' ); ?>" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🤔 What change am I not seeing?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
VSCode removed the extra space at the end of some of the lines automatically.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah 😂
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Exactly 😂
type="text" | ||
id="aspireupdate-settings-field-<?php echo esc_attr( $id ); ?>_other" | ||
name="<?php echo esc_attr( $this->option_name ); ?>[<?php echo esc_attr( $id ); ?>_other]" | ||
value="<?php echo esc_attr( $options[ $id . '_other' ] ?? '' ); ?>" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🤔 What change am I not seeing?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As above, my VSCode settings removed the extra space at the end of the line automatically.
includes/class-admin-settings.php
Outdated
@@ -539,18 +569,18 @@ class="regular-text" | |||
public function sanitize_settings( $input ) { | |||
$sanitized_input = array(); | |||
|
|||
$sanitized_input['enable'] = ( isset( $input['enable'] ) && $input['enable'] ) ? 1 : 0; | |||
$sanitized_input['enable'] = ( ! empty( $input['enable'] ) && $input['enable'] ) ? 1 : 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why the change here for enable
and later for enable_debug
, and is this needed for multisite support?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, the second condition shouldn't be necessary here if using ! empty()
What about just (int) ! empty( $input['enable'] )
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These values are unset by default. With multisite the sanitize function runs twice, I assume once from the register_setting()
callback. The second time this runs the input is 0
and therefore it is set, but it is also empty.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let me test that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested and working.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Further simplified, doesn't need ternary.
I have tested this in both single and multisite. It's working for me. Only caveat is the first setting to enable API rewrites must be set in order for any other settings to be set. This is unrelated to multisite. |
@costdev Is this good to go? |
I haven't had a chance to test this on multisite, but since @afragen has tested it, I'm pretty confident that it'll work as expected. Nevertheless, I can follow up to test it, possibly later today. |
Once you test, approve it in and let the testers know in slack so that they can test this one. Its a tricky one to test. |
Be sure to test it in a single site too. |
Make me! Ok, I will 😂 |
Test ReportEnvironment
Actual ResultsSingle Site
Multisite
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @afragen!
As expected, everything I tested works in Single Site and Multisite. ❤️
@asirota This one should be good to go in now. |
isset( $_GET['reset-success'] ) && | ||
( 'success' === $_GET['reset-success'] ) && | ||
isset( $_GET['reset-success-nonce'] ) && | ||
wp_verify_nonce( sanitize_key( $_GET['reset-success-nonce'] ), 'aspireupdate-reset-success-nonce' ) | ||
) { | ||
echo '<div class="notice notice-success is-dismissible"><p>' . esc_html__( 'Settings have been reset to default.', 'AspireUpdate' ) . '</p></div>'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know how the i18n and escaping got removed. Sorry.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I assume this made it into the PR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It didn't but I made another PR for it.
Fixed typo in code deleted when addressing #102
* Prevent Recursion on certain Host name patterns (#69) --------- Signed-off-by: Namith Jawahar <[email protected]> * Playground ready updating into main (#71) * Update blueprint.json Switching to default theme of 2022 to support minimum WP Playground support for WordPress version as 5.9.9 Signed-off-by: Namith Jawahar <[email protected]> * Switching blueprint.json to 2022 theme Signed-off-by: Alex Sirota <[email protected]> --------- Signed-off-by: Alex Sirota <[email protected]> Signed-off-by: Namith Jawahar <[email protected]> * `Add New Plugin`: Remove 'Featured' and 'Favorites' tabs when API rewrite is enabled. (#80) * Add class for overriding plugins screens. * Remove unused tabs when API rewrite is enabled. * `Add New Theme`: Remove 'Favorites' filter tab when API rewrite is enabled. (#82) * Add class for overriding themes screens. * Hide unsupported filters. * Redirect unsupported filters to `theme-install.php`. --------- Signed-off-by: Alex Sirota <[email protected]> Co-authored-by: Alex Sirota <[email protected]> * Add PHPUnit. (#87) * Add PHPUnit scaffolding. * Add Composer files for dependencies and test script. * Add `.gitignore`. * Add sample test for `Admin_Settings::get_setting()`. * Add PHP 8.3 to the test matrix. * Add `.cache/*` to `.gitignore`. * Limit testing to PHP 7.4 (minimum) and 8.3 (latest). * `Plugins Screens`: Initialize in `Controller::__construct()`. (#89) * `Workflows`: Fix PHP version and add more workflow triggers. (#92) * Fix PHP version. * Add `push` and `workflow_dispatch` workflow triggers. * `Tests`: Ensure options are not set when tests run. (#95) * Introduce a test constant. * Don't initialize when the tests are running. * Use a new object for testing `Admin_Settings::get_setting()`. * Warning when debug-aspire-update.log doesnt exist (#109) * `Tests`: Add default coverage settings. (#97) * Improve I18N Issues Based on version 0.5 (#104) * Fixes Settings not getting saved when rewrites were turned off (#108) * Add French Translation (#105) * I18n fr fr (#113) * Translations loading fix112 (#114) * Add French translations. * load any available translations with code in the plugin * #110 (#116) Fixes #110 * Add nonce verification and sanitize `$_REQUEST/$_GET` values. (#115) Signed-off-by: Colin Stewart <[email protected]> * Added German Translation (#111) * added German translation * added gitignore for .DS_Store Signed-off-by: Harikrishnan R <[email protected]> * Voltron has landed. (#117) The Voltron has landed. See if you can find where. * `Admin Settings`: Delete all settings when the plugin is uninstalled. (#118) * `Admin Settings`: Add multisite-safe deletion of all settings. * Delete all settings when the plugin is uninstalled. * add multisite support (#102) * accidentally deleted (#124) Fixed typo in code deleted when addressing #102 * Add `.editorconfig`. (#123) * create zip with each new tagged release (#121) * create zip with each new tagged release * update .gitattributes --------- Signed-off-by: Namith Jawahar <[email protected]> Signed-off-by: Alex Sirota <[email protected]> Signed-off-by: Colin Stewart <[email protected]> Signed-off-by: Harikrishnan R <[email protected]> Co-authored-by: Namith Jawahar <[email protected]> Co-authored-by: Colin Stewart <[email protected]> Co-authored-by: Alex Lion <[email protected]> Co-authored-by: Sébastien SERRE <[email protected]> Co-authored-by: Harikrishnan R <[email protected]> Co-authored-by: Andy Fragen <[email protected]>
* Prevent Recursion on certain Host name patterns (#69) --------- Signed-off-by: Namith Jawahar <[email protected]> * Playground ready updating into main (#71) * Update blueprint.json Switching to default theme of 2022 to support minimum WP Playground support for WordPress version as 5.9.9 Signed-off-by: Namith Jawahar <[email protected]> * Switching blueprint.json to 2022 theme Signed-off-by: Alex Sirota <[email protected]> --------- Signed-off-by: Alex Sirota <[email protected]> Signed-off-by: Namith Jawahar <[email protected]> * `Add New Plugin`: Remove 'Featured' and 'Favorites' tabs when API rewrite is enabled. (#80) * Add class for overriding plugins screens. * Remove unused tabs when API rewrite is enabled. * `Add New Theme`: Remove 'Favorites' filter tab when API rewrite is enabled. (#82) * Add class for overriding themes screens. * Hide unsupported filters. * Redirect unsupported filters to `theme-install.php`. --------- Signed-off-by: Alex Sirota <[email protected]> Co-authored-by: Alex Sirota <[email protected]> * Add PHPUnit. (#87) * Add PHPUnit scaffolding. * Add Composer files for dependencies and test script. * Add `.gitignore`. * Add sample test for `Admin_Settings::get_setting()`. * Add PHP 8.3 to the test matrix. * Add `.cache/*` to `.gitignore`. * Limit testing to PHP 7.4 (minimum) and 8.3 (latest). * `Plugins Screens`: Initialize in `Controller::__construct()`. (#89) * `Workflows`: Fix PHP version and add more workflow triggers. (#92) * Fix PHP version. * Add `push` and `workflow_dispatch` workflow triggers. * `Tests`: Ensure options are not set when tests run. (#95) * Introduce a test constant. * Don't initialize when the tests are running. * Use a new object for testing `Admin_Settings::get_setting()`. * Warning when debug-aspire-update.log doesnt exist (#109) * `Tests`: Add default coverage settings. (#97) * Improve I18N Issues Based on version 0.5 (#104) * Fixes Settings not getting saved when rewrites were turned off (#108) * Add French Translation (#105) * I18n fr fr (#113) * Translations loading fix112 (#114) * Add French translations. * load any available translations with code in the plugin * #110 (#116) Fixes #110 * Add nonce verification and sanitize `$_REQUEST/$_GET` values. (#115) Signed-off-by: Colin Stewart <[email protected]> * Added German Translation (#111) * added German translation * added gitignore for .DS_Store Signed-off-by: Harikrishnan R <[email protected]> * Voltron has landed. (#117) The Voltron has landed. See if you can find where. * `Admin Settings`: Delete all settings when the plugin is uninstalled. (#118) * `Admin Settings`: Add multisite-safe deletion of all settings. * Delete all settings when the plugin is uninstalled. * add multisite support (#102) * accidentally deleted (#124) Fixed typo in code deleted when addressing #102 * Add `.editorconfig`. (#123) * create zip with each new tagged release (#121) * create zip with each new tagged release * update .gitattributes * Cleanup after `.editorconfig` was added to the repository. (#126) * Add coding standard. (#127) * Add Coding Standard. * Add PHPCS cache directory. * Coding Standards: Apply PHPCBF to codebase. * Coding Standards: Add GitHub workflow. --------- Signed-off-by: Alex Sirota <[email protected]> Co-authored-by: Alex Sirota <[email protected]> --------- Signed-off-by: Namith Jawahar <[email protected]> Signed-off-by: Alex Sirota <[email protected]> Signed-off-by: Colin Stewart <[email protected]> Signed-off-by: Harikrishnan R <[email protected]> Co-authored-by: Namith Jawahar <[email protected]> Co-authored-by: Colin Stewart <[email protected]> Co-authored-by: Alex Lion <[email protected]> Co-authored-by: Sébastien SERRE <[email protected]> Co-authored-by: Harikrishnan R <[email protected]> Co-authored-by: Andy Fragen <[email protected]>
Pull Request
What changed?
Added multisite support.
Why did it change?
Fixes #59
Did you fix any specific issues?
Multisite support.
Update to use site options.
Apparently there were also some spaces at the end of code lines that VSCode removed.
CERTIFICATION
By opening this pull request, I do agree to abide by
the CODE OF CONDUCT and be bound by the terms
of the Contribution Guidelines in effect on the date and time
of my contribution as proven by the
revision information in GitHub. I also agree that any previous contributions shall be deemed subject to the terms of the
version in effect on the date and time of this pull request, or any future revisions for pull requests I may submit.
Further, I certify that this work is my own, is original, does not violate the intellectual property of any other person
or entity, and I am not violating any license agreements or contracts I have with any person or entity. Finally, I agree
that this code may be licensed under any license deemed appropraite by AspirePress, including but not
limited to open source, closed source, proprietary or custom licenses, and that such license terms neither violate my
rights or my copyright to this code.