Skip to content

Jetpack Sync: Add sync action for network site enable and disable themes#7180

Merged
gititon merged 17 commits intomasterfrom
add/sync_allowed_theme
May 12, 2017
Merged

Jetpack Sync: Add sync action for network site enable and disable themes#7180
gititon merged 17 commits intomasterfrom
add/sync_allowed_theme

Conversation

@gititon
Copy link
Copy Markdown
Contributor

@gititon gititon commented May 12, 2017

Jetpack Sync: Add sync action for network/multisite enable and disable themes

Changes proposed in this Pull Request:

Add sync action for network/multisite enable and disable themes

Testing instructions:

phpunit runs new tests when on multisite

Proposed changelog entry for your changes:

Addition of jetpack_network_disabled_themes and jetpack_network_enabled_themes hooks

*
* @param mixed $disabled_themes, Array of info about network disabled themes
*/
do_action( 'jetpack_network_disabled_themes', $disabled_themes );
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.

we could send the enabled ones too? what do you think?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Themes can't be both changed from enabled to disabled and changed from disabled to enabled by the same user action. When themes are disabled, the Activity Log needs to know which themes were disabled. When themes are enabled, the Activity Log needs to know which themes were enabled. Why would we send themes that are unrelated to the activity/action?

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.

not sure really, I thought it could be useful to always know the active ones

if ( 'enable-selected' === $action || 'enable' === $action ) {
$enabled_theme_names = array_keys( array_diff_key( $value, $old_value ) );
$enabled_themes = array();
foreach ( $enabled_theme_names as $name ) {
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.

we could probably extract this to its own method

*
* @since 5.0.0
*
* @param mixed $disabled_themes, Array of info about network disabled themes
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.

we should add the second parameter too

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Resolved

*
* @since 5.0.0
*
* @param mixed $enabled_themes , Array of info about network enabled themes
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.

we should add the second parameter too

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Resolved

do_action( 'jetpack_network_enabled_themes', $enabled_themes, array_keys( $value ) );
}

private function get_multisite_changed_themes( $theme_names ) {
Copy link
Copy Markdown
Contributor

@lezama lezama May 12, 2017

Choose a reason for hiding this comment

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

we could call this method get_themes_details, we could use it with non multisite themes too

Copy link
Copy Markdown
Contributor

@lezama lezama left a comment

Choose a reason for hiding this comment

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

💟

*
* Note that 'allowedthemes' is dynamic, i.e. do_action is called on "update_site_option_{$option}"
*
* @since 2.9.0
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I would remove the since part. Since the version number refers to WP and not Jetpack.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done

*
* Note that 'allowedthemes' is dynamic, i.e. do_action is called on "update_site_option_{$option}"
*
* @since 2.9.0
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

same as here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done

*
* Note that 'allowedthemes' is dynamic, i.e. do_action is called on "update_site_option_{$option}"
*
* @since 2.9.0
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

here also

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done

*
* Note that 'allowedthemes' is dynamic, i.e. do_action is called on "update_site_option_{$option}"
*
* @since 2.9.0
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

here too

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done

* @param mixed $disabled_themes, Array of info about network disabled themes
* @param mixed array_keys( $value ), Array of slugs of all enabled themes
*/
do_action( 'jetpack_network_disabled_themes', $disabled_themes, array_keys( $value ) );
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we make array_keys( $value ) more descriptive. Something like
$enabled_theme_slugs would read better

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done

* @param mixed $enabled_themes , Array of info about network enabled themes
* @param mixed array_keys( $value ), Array of slugs of all enabled themes
*/
do_action( 'jetpack_network_enabled_themes', $enabled_themes, array_keys( $value ) );
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we make array_keys( $value ) more descriptive. Something like
$enabled_theme_slugs would read better

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done

public function sync_network_allowed_themes_change( $option, $value, $old_value, $network_id ) {
if ( count( $old_value ) > count( $value ) ) {
$disabled_theme_names = array_keys( array_diff_key( $old_value, $value ) );
$disabled_themes = $this->get_theme_details_for_slugs( $disabled_theme_names );
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Something like $newly_disabled_themes might be a bit more descriptive.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

done


$event_data = $this->server_event_storage->get_most_recent_event( 'jetpack_network_enabled_themes' );

foreach ( $test_themes as $theme ) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Lets also test that the slug is also being set.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

done


$event_data = $this->server_event_storage->get_most_recent_event( 'jetpack_network_disabled_themes' );

foreach ( $test_themes as $theme ) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

lets test for the slug here too.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

done

Copy link
Copy Markdown
Member

@enejb enejb left a comment

Choose a reason for hiding this comment

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

Left some minor feedback. Would it make sense to update split up the big test?

Copy link
Copy Markdown
Member

@enejb enejb left a comment

Choose a reason for hiding this comment

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

Thanks for the fixes! :shipit:

@gititon gititon merged commit 9a5667f into master May 12, 2017
@matticbot matticbot removed the [Status] Ready to Merge Go ahead, you can push that green button! label May 12, 2017
@jeherve jeherve deleted the add/sync_allowed_theme branch May 15, 2017 12:55
jeherve added a commit that referenced this pull request May 23, 2017
jeherve added a commit that referenced this pull request May 29, 2017
eliorivero pushed a commit that referenced this pull request May 30, 2017
* Changelog: first pass at a changelog for 5.0

* Changelog: delete 4.9 testing list.

* Changelog: update minimum WP version to match ver. in jetpack.php

Fixes #7158

* Changelog: add #6051

* Changelog: add #6753

* Changelog: add #6928

* Changelog: add #6964

* Changelog: add #7014

* Changelog: add #7057

* Changelog: add #7060

* Changelog: add #7068

* Changelog: add #7070

* Changelog: add #7072

* Changelog: add #7071

* Changelog: add release date and post shortlink.

* Changelog: add #7094

* Changelog: add #7100

* Changelog: add #7108

* Changelog: add #7113

* Changelog: add #7123

* Changelog: add #7135

* Changelog: add #7143

* Changelog: add #7151

* Changelog: add #6996

* Changelog: add #7105

* Changelog: add #7132

* Changelog: add #7166

* Changelog: fix typo in 4.9 changelog.

* Changelog: remove older releases' changelogs.

@see p1HpG7-42e-p2

* Changelog: add #7090

* Changelog: add #7095

* Changelog: add #7112

* Changelog: add #7115

* Changelog: add #7122

* Changelog: add #7137

* Changelog: add #7138

* Changelog: add #7140

* Changelog: add #7154

* Changelog: add ##7155

* Changelog: add #7163

* Changelog: add #7167

* Changelog: add #7171

* Changelog: add #7180

* Changelog: add #7181

* Changelog: add #7183

* Changelog: add #7184

* Changelog: add #7189

* Changelog: add #7191

* Changelog: add #7193

* Changelog: add #7198

* Changelog: add #7200

* Changelog: add #7209

* Changelog: add #7212

* Testing list: add instructions for #7115

* Changelog: add #7188

* Changelog: add #7205

* Changelog: add #7225

* Changelog: add #6872

* Changelog: add #7107

* Changelog: add #7118

* Changelog: add #7142

* Changelog: add #7170

* Changelog: add #7210

* Changelog: add #7218

* Changelog: add #7232

* Changelog: add #7211

* Changelog: add #7213

* Changelog: add #7229

* Changelog: add #7230

* Changelog: add #7214

* Draft changelog for 5.0

* Changelog updates: 2nd pass at a clearer changelog.

- Fix typos.
- Use consistent tense and tone across all changelog.
- Remove unclear items.

* Changelog: add #7026

* Changelog: add #7058

* Changelog: add #7125

* Changelog: add #7249

* Changelog: add #7185

* add mentions of image widget migration

* Changelog: add info about new output for CLI command.

* Changelog: add WP version number matching the new Image Widget.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants