Skip to content
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/cron api endpoint #5324

Merged
merged 1 commit into from
Nov 7, 2016
Merged

Add/cron api endpoint #5324

merged 1 commit into from
Nov 7, 2016

Conversation

enejb
Copy link
Member

@enejb enejb commented Oct 12, 2016

Add a way to see what items are in the cron and a way to execute the cron from an api endpoint.

cc: @gravityrail, @lezama

protected function validate_call( $_blog_id, $capability, $check_manage_active = true ) {
parent::validate_call( $_blog_id, $capability, false );
}
protected function result() {
Copy link
Contributor

Choose a reason for hiding this comment

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

Why do you need to define result() here?

Copy link
Member Author

Choose a reason for hiding this comment

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

This part was removed.

class Jetpack_JSON_API_Cron_Get_Endpoint extends Jetpack_JSON_API_Cron_Endpoint {
protected $needed_capabilities = 'manage_options';

protected function validate_call( $_blog_id, $capability, $check_manage_active = true ) {
Copy link
Contributor

Choose a reason for hiding this comment

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

This function is defined in the parent. Probably don't need to do it here too.

}

protected function result() {
$cron = _get_cron_array();
Copy link
Contributor

Choose a reason for hiding this comment

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

No need to have this defined as a variable if we're only returning it in the response:

        return array(
            'cron_array' => _get_cron_array(),
            'current_timestamp' => time()
        );

Copy link
Contributor

Choose a reason for hiding this comment

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

Also the spacing is weird in this function.

protected function result() {
define('DOING_CRON', true);

if ( false === $crons = _get_cron_array() )
Copy link
Contributor

Choose a reason for hiding this comment

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

Coding standards - no single-line if's.

$keys = array_keys( $crons );
$gmt_time = microtime( true );

if ( isset($keys[0]) && $keys[0] > $gmt_time )
Copy link
Contributor

Choose a reason for hiding this comment

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

As above.

* Fires scheduled events.
*
* @ignore
* @since 2.1.0
Copy link
Contributor

Choose a reason for hiding this comment

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

We should probably not re-document this filter here, but just include @see wp-cron.php or whatever the standard is.

}

// POST /sites/%s/cron
class Jetpack_JSON_API_Cron_Post_Endpoint extends Jetpack_JSON_API_Cron_Endpoint {
Copy link
Contributor

Choose a reason for hiding this comment

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

You might want to try set_time_limit(0) at the start of this method, or your jobs could get killed with impunity. Often there are other timeouts too though, need to be mindful of that (e.g. Apache will often set a 5 minute response packet timeout)

set_transient( 'doing_cron', $doing_wp_cron );
$processed_events = array();

foreach ( $crons as $timestamp => $cronhooks ) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Spacing, looks like you have an extra tab here.

if ( $timestamp > $gmt_time )
break;

foreach ( $cronhooks as $hook => $keys ) {
Copy link
Contributor

Choose a reason for hiding this comment

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

As discussed, we should probably be able to supply a comma-delimited set of cron jobs to run, and if that's set then we should check against it here so we only run the specified jobs.

}
}

if ( $this->get_cron_lock() == $doing_wp_cron )
Copy link
Contributor

Choose a reason for hiding this comment

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

Single-line if


// POST /sites/%s/cron
class Jetpack_JSON_API_Cron_Post_Endpoint extends Jetpack_JSON_API_Endpoint {
protected $needed_capabilities = 'manage_options';
Copy link
Contributor

Choose a reason for hiding this comment

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

This could extend Jetpack_JSON_API_Cron_Get_Endpoint so we don't have to redefine this and validate_call


$args = $this->input();

'request_format' => array(
Copy link
Contributor

Choose a reason for hiding this comment

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

this isn't a variable :)

@jeherve jeherve added this to the 4.3.4 milestone Oct 13, 2016
'group' => '__do_not_document',
'method' => 'GET',
'path' => '/sites/%s/cron',
'stat' => 'cron',
Copy link
Contributor

Choose a reason for hiding this comment

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

let's have different stats for GET and POST

$value = wp_cache_get( 'doing_cron', 'transient', true );
} else {
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", '_transient_doing_cron' ) );
if ( is_object( $row ) )
Copy link
Contributor

Choose a reason for hiding this comment

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

missing {

@enejb enejb force-pushed the add/cron-api-endpoint branch from 240c7ee to e1028a3 Compare October 14, 2016 20:22
}

protected function sanitize_hook( $hook ) {
return preg_replace( '/[^A-Za-z0-9-_]/', '', $hook );
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we sync any hooks with uppercase characters?

Can we use sanitize_key() instead of rolling our own regex? The difference is that sanitize_key() converts uppercase characters to lowercase and also allows dashes.

Copy link
Member Author

Choose a reason for hiding this comment

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

In my testing I haven't come across uppercase keys but it doesn't meant that and there are not many actions that user uppercase. I would keep things as they are. Since it is a bit more liberal then the current sanitize_key() implementation. Maybe WP needs to add sanitize_action().


protected function resolve_arguments() {
$args = $this->input();
return ! isset( $args['arguments'] ) ? array() : json_decode( $args['arguments'] );
Copy link
Contributor

@ebinnion ebinnion Oct 14, 2016

Choose a reason for hiding this comment

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

Instead of notting ! this, we could just do:

isset( $args['arguments'] ) ? json_decode( $args['arguments'] ) : array()

}

/**
* This function is based on the one found in wp-cron.php with a simular name
Copy link
Contributor

Choose a reason for hiding this comment

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

simular should be similar.

$args = $this->input();

if ( false === $crons = _get_cron_array() ) {
return new WP_Error( 'no-cron-event', 'Current there are no cron events' );
Copy link
Contributor

Choose a reason for hiding this comment

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

I would add an "ly" to "current" to make the string "Currently there are no cron events".


do_action_ref_array( $hook, $arguments );
$processed_events[] = array( $hook => $arguments );
// If the hook ran too long and another cron process stole the lock,
Copy link
Contributor

Choose a reason for hiding this comment

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

We should have an empty newline above this comment to separate it from code above.

$this->maybe_unlock_cron( $lock );
return array( 'success' => true );
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

I believe we're supposed to end files with an empty newline. It's in the Calypso guidelines.

I've never truly understood why, but here is a case for it. http://stackoverflow.com/questions/729692/why-should-text-files-end-with-a-newline

'$site' => '(int|string) The site ID, The site domain'
),
'request_format' => array(
'hooks' => '(array) List of hooks to run if they have been scheduled',
Copy link
Contributor

Choose a reason for hiding this comment

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

This seems indented much more than the others. Is there a reason?

'timestamp' => 1476385523
),
),
) );
Copy link
Contributor

Choose a reason for hiding this comment

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

Same as above. We should probably add a newline at the end of the file.

$gmt_time = microtime( true );

if ( isset($keys[0]) && $keys[0] > $gmt_time ) {
return new WP_Error( 'no-cron-event', 'Current there are no cron events ready to be run' );
Copy link
Member

Choose a reason for hiding this comment

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

"Currently" here as well.

$keys = array_keys( $crons );
$gmt_time = microtime( true );

if ( isset( $keys[0] ) && $keys[0] > $gmt_time ) {
Copy link
Contributor

Choose a reason for hiding this comment

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

It may be worth adding a comment here that the keys in the cron array are the timestamps for when the events are next to be run. It took me a bit to grok that. Perhaps, we could event rename $keys to something like $timestamps_to_run.

Not a huge issue though.

$gmt_time = microtime( true );

if ( isset( $keys[0] ) && $keys[0] > $gmt_time ) {
return new WP_Error( 'no-cron-event', 'Currently there are no cron events ready to be run' );
Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn't this WP_Error have an http status code as the 3rd argument?


$locked = $this->is_cron_locked( $gmt_time );
if ( is_wp_error( $locked ) ) {
return $locked;
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think we're adding a status code here since we're returning this WP_Error directly.

'hook' => '(string) Hook name that should run when the event is scheduled',
'arguments' => '(string) JSON Object of arguments that the hook will use',
'timestamp' => '(int) Timestamp when the event should take place, has to be in the future',
'recurrence' => '(string) How often the event should take place. Possible values 1min, hourly, twicedaily, daily'
Copy link
Contributor

Choose a reason for hiding this comment

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

Should we also handle the case where we want to schedule a single event?

Copy link
Member Author

@enejb enejb Oct 20, 2016

Choose a reason for hiding this comment

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

If you don't provide a schedule we assume you are only scheduling 1 event.

Copy link
Contributor

Choose a reason for hiding this comment

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

Cool. So, perhaps we should just update the string here then to mention something like, if empty, will schedule the event once?

'hook' => '(string) Hook name that should run when the event is scheduled',
'arguments' => '(string) JSON Object of arguments that the hook will use',
'timestamp' => '(int) Timestamp when the event should take place, has to be in the future',
'recurrence' => '(string) How often the event should take place. Possible values 1min, hourly, twicedaily, daily'
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think this description is quite right. In the endpoint, we're actually checking if it's any valid schedule, not if it's just one of the few in this string.

),
'request_format' => array(
'hook' => '(string) Hook name that should run when the event is scheduled',
'arguments' => '(string) JSON Object of arguments that the hook will use',
Copy link
Contributor

Choose a reason for hiding this comment

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

Should we add that arguments is optional since we're checking if it's set in the endpoint?

),
'request_format' => array(
'hook' => '(string) Name of the hook that should be unscheduled',
'arguments' => '(string) JSON Object of arguments that the hook has been scheduled with',
Copy link
Contributor

Choose a reason for hiding this comment

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

This also seems to be optional.

@ebinnion
Copy link
Contributor

ebinnion commented Oct 19, 2016

I left several small comments. In my testing, this was functional. 👍

Something to consider is that the PR doesn't seem to have http status code in the WP_Error objects. Should it?

Also, it seems that arguments is option for scheduling and unscheduling a post. So, perhaps we should mention that in the endpoint definition/description.

@zinigor zinigor modified the milestones: 4.4, 4.3.3 Oct 25, 2016
@enejb
Copy link
Member Author

enejb commented Nov 3, 2016

If no one has any objects I am going to merge this. tomorrow.

Copy link
Contributor

@ebinnion ebinnion left a comment

Choose a reason for hiding this comment

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

I left a a minor comment about a comment. 😄

I don't have any objections though. So, 🚢 after we make that small change.

@@ -953,7 +953,7 @@

// POST /sites/%s/cron/schedule
new Jetpack_JSON_API_Cron_Schedule_Endpoint( array(
'description' => 'Process items in the cron',
'description' => 'Schedule one or recurring hook to fire at a particular time',
Copy link
Contributor

Choose a reason for hiding this comment

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

"one or" should probably be "one or more".

@ebinnion ebinnion added [Status] Ready to Merge Go ahead, you can push that green button! and removed [Status] Needs Review This PR is ready for review. labels Nov 3, 2016
- View what items are in the cron.
- Run Cron and the items in it.
- Schedule an item
- Unschedule an item
@enejb enejb force-pushed the add/cron-api-endpoint branch from 84e706c to 763b176 Compare November 7, 2016 18:34
@enejb enejb merged commit caebb20 into master Nov 7, 2016
@enejb enejb deleted the add/cron-api-endpoint branch November 7, 2016 19:03
jeherve added a commit that referenced this pull request Nov 10, 2016
Changelog: add #5186

Changelog: add #3425

Changelog: add #5365

Changelog: add #5428

Changelog: add #3358

Changelog: add #5183

Changelog: add #4881

Changelog: add #5286

Changelog: add #5395

Changelog: add #5419

Changelog: add #5437

Changelog: add #5291

Update version number

Changelog: add #5476, #5413, #5409, #5355, #5348

Changelog: add #5381

Changelog: add #5412

Changelog: add #5386

Changelog: add #5250

CHangelog: add #5011

Changelog: add #5090

Changelog: add IDC fixes.

Changelog: add #5259

CHangelog: add #5186

Changelog: add #5236

Changelog: add #5284

Changelog: add #5366

Changelog: add #5382

Changelog: add #5396

Changelog: add #5405

Changelog: add #4897

Changelog: add #5289

Added a changelog entry about #5534.

Added a changelog entry about #5479.

Added a changelog entry about #5454.

Added a changelog entry about #5434.

Added a changelog entry about #5408.

Added a changelog entry about #5369.

Added a changelog entry about #5350.

Added a changelog entry about #5324.

Added a changelog entry about #5319.

Added a changelog entry about #5310.

Added a changelog entry about #5282.

Added a changelog entry about #5176.

Added a changelog entry about #3515.

Added a changelog entry about #1542.

Added a changelog entry about #5316.

Added a changelog entry about #3188.

Changelog: add #4987

Changelog: add #5270

Changelog: add #5225

Changelog: add #5507

Changelog: add #5432

Changelog: add #5473

Changelog: add #5392

Changelog: add #5222

Changelog: add #5457

Changelog: add #5423

Changelog: add #5332

Changelog: add #3853

Changelog: add #5237

Changelog: add #5307

Changelog: move up release headliner.

Changelog: add #5375

CHangelog: add #5496

Changelog: add #5528

Changelog: add #5537

Changelog: remove new Settings, they're punted to 4.5.

Changelog: move release headliner to the top.

Changelog: add testing list.

Changelog: add #4953

Changelog: add #5575

Changelog: add #5573

Changelog: add #5345
zinigor pushed a commit that referenced this pull request Nov 10, 2016
* Changelog: add PRs belonging to 4.4.

Changelog: add #5186

Changelog: add #3425

Changelog: add #5365

Changelog: add #5428

Changelog: add #3358

Changelog: add #5183

Changelog: add #4881

Changelog: add #5286

Changelog: add #5395

Changelog: add #5419

Changelog: add #5437

Changelog: add #5291

Update version number

Changelog: add #5476, #5413, #5409, #5355, #5348

Changelog: add #5381

Changelog: add #5412

Changelog: add #5386

Changelog: add #5250

CHangelog: add #5011

Changelog: add #5090

Changelog: add IDC fixes.

Changelog: add #5259

CHangelog: add #5186

Changelog: add #5236

Changelog: add #5284

Changelog: add #5366

Changelog: add #5382

Changelog: add #5396

Changelog: add #5405

Changelog: add #4897

Changelog: add #5289

Added a changelog entry about #5534.

Added a changelog entry about #5479.

Added a changelog entry about #5454.

Added a changelog entry about #5434.

Added a changelog entry about #5408.

Added a changelog entry about #5369.

Added a changelog entry about #5350.

Added a changelog entry about #5324.

Added a changelog entry about #5319.

Added a changelog entry about #5310.

Added a changelog entry about #5282.

Added a changelog entry about #5176.

Added a changelog entry about #3515.

Added a changelog entry about #1542.

Added a changelog entry about #5316.

Added a changelog entry about #3188.

Changelog: add #4987

Changelog: add #5270

Changelog: add #5225

Changelog: add #5507

Changelog: add #5432

Changelog: add #5473

Changelog: add #5392

Changelog: add #5222

Changelog: add #5457

Changelog: add #5423

Changelog: add #5332

Changelog: add #3853

Changelog: add #5237

Changelog: add #5307

Changelog: move up release headliner.

Changelog: add #5375

CHangelog: add #5496

Changelog: add #5528

Changelog: add #5537

Changelog: remove new Settings, they're punted to 4.5.

Changelog: move release headliner to the top.

Changelog: add testing list.

Changelog: add #4953

Changelog: add #5575

Changelog: add #5573

Changelog: add #5345

* Changelog: add #5168
samhotchkiss pushed a commit that referenced this pull request Nov 11, 2016
* Changelog: add PRs belonging to 4.4.

Changelog: add #5186

Changelog: add #3425

Changelog: add #5365

Changelog: add #5428

Changelog: add #3358

Changelog: add #5183

Changelog: add #4881

Changelog: add #5286

Changelog: add #5395

Changelog: add #5419

Changelog: add #5437

Changelog: add #5291

Update version number

Changelog: add #5476, #5413, #5409, #5355, #5348

Changelog: add #5381

Changelog: add #5412

Changelog: add #5386

Changelog: add #5250

CHangelog: add #5011

Changelog: add #5090

Changelog: add IDC fixes.

Changelog: add #5259

CHangelog: add #5186

Changelog: add #5236

Changelog: add #5284

Changelog: add #5366

Changelog: add #5382

Changelog: add #5396

Changelog: add #5405

Changelog: add #4897

Changelog: add #5289

Added a changelog entry about #5534.

Added a changelog entry about #5479.

Added a changelog entry about #5454.

Added a changelog entry about #5434.

Added a changelog entry about #5408.

Added a changelog entry about #5369.

Added a changelog entry about #5350.

Added a changelog entry about #5324.

Added a changelog entry about #5319.

Added a changelog entry about #5310.

Added a changelog entry about #5282.

Added a changelog entry about #5176.

Added a changelog entry about #3515.

Added a changelog entry about #1542.

Added a changelog entry about #5316.

Added a changelog entry about #3188.

Changelog: add #4987

Changelog: add #5270

Changelog: add #5225

Changelog: add #5507

Changelog: add #5432

Changelog: add #5473

Changelog: add #5392

Changelog: add #5222

Changelog: add #5457

Changelog: add #5423

Changelog: add #5332

Changelog: add #3853

Changelog: add #5237

Changelog: add #5307

Changelog: move up release headliner.

Changelog: add #5375

CHangelog: add #5496

Changelog: add #5528

Changelog: add #5537

Changelog: remove new Settings, they're punted to 4.5.

Changelog: move release headliner to the top.

Changelog: add testing list.

Changelog: add #4953

Changelog: add #5575

Changelog: add #5573

Changelog: add #5345

* Changelog: add #5168
samhotchkiss pushed a commit that referenced this pull request Nov 21, 2016
diff --git a/changelog.txt b/changelog.txt
index 78ee043..a03cdb9 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,4 +1,30 @@
-== Changelog ==
+== Changelog ==
+
+= 4.4 =
+
+**Enhancements**
+
+* Additional unit tests have been added to improve Jetpack's development process and stability.
+* Custom post types have been added to the REST API output.
+* Many of the screenshots throughout the plugin have been replaced by SVGs in order to make Jetpack smaller.
+* New endpoints have been added to allow the installation of plugins and themes via the API.
+* New filters to improve Jetpack's extensibility: jetpack_auth_type, jetpack_nova_menu_item_loop_open_element, jetpack_nova_menu_item_loop_close_element, jetpack_nova_menu_item_loop_class, jetpack_markdown_preserve_shortcodes, jpp_allow_login, jetpack_sharing_headline_html, jetpack_tiled_gallery_template, jetpack_tiled_gallery_partial, jetpack_top_posts_widget_permalink, jetpack_top_posts_widget_permalink, jetpack_widget_visibility_tax_args.
+* New widget: "Google Translate" to allow users to translate your site into their own language.
+* New widget: "My Community" where you can see who recently interacted with your site.
+* One of the biggest issues facing Jetpack users for years now has been difficulties in moving sites from one domain name to another.  This update makes strides towards improving that process.
+* Photon now uses HTTPS by default. Secure all the things!
+* There are now helpful hints throughout the admin interface to make Jetpack easier to use.
+* We now allow you to embed from Pinterest.
+* We've added a new feature: SEO Tools, available to Jetpack Professional subscribers.
+* We've made numerous improvements to the data sync process.
+* Welcome back to the Site Stats link in your admin menu!
+
+**Bug Fixes:**
+
+* Fixed link to Akismet settings.
+* Improved compatibility between Infinite Scroll and WPML, props Vuk Vuković.
+* Move email notification settings back with the other email settings in the Discussion Settings.
+* Various minor performance/compatibility fixes.

 = 4.3.2 =

diff --git a/readme.txt b/readme.txt
index 403b6df..47e2635 100644
--- a/readme.txt
+++ b/readme.txt
@@ -79,83 +79,27 @@ There are opportunities for developers at all levels to contribute. [Learn more

 **Enhancements**

-* Brand new SEO Tools module. #5307
-* Shortcodes: added Pinterest embeds. #5437
-* VideoPress: refreshed admin interface, seamless integration with the core Media manager, tied with Jetpack Plans. #5457
-
-* Admin Page: added a filter to manage if the newly connected user should go to WordPress.com or not. #5319
-* Admin Page: added links to pages where users can fix problems with Akismet and update plugins. #5176
-* Admin Page: added helpful hints to make Jetpack easier to use. #5479
-* Admin Page: redesign Development mode banner. #5186
-* Admin Page: removed unnecessarily loaded theme compatibility files. #5454
-* Admin Page: when user is non admin, Protect module is inactive and they have no access to Stats, don't break the UI trying to go to At a Glance which isn't accessible by them and instead display Apps tab. #5395
-* Admin Page: use SVGs instead of raster images to improve performance. #5419
-* Admin Page: improve design when Development mode is active. #5186
-* Admin Page: improve contrast for better accessibility. #5236
-* Carousel: moved close icon location to the top right. #5237
-* Carousel: change the behavior of the browser's back button after closing a gallery. #5168
-* Contact Form: add horizontal line between message content and meta data. #5270
-* Custom Post Types: added custom posts to the output of the WordPress REST API. #5434
-* Custom Post Types: made Nova post markup more flexible by adding new filters. #1542
-* Debug Page: add information about Development mode. #5225
-* Documentation: Improvements to README.md sections about development workflow and clarification about Node versions required for the build tasks. #5428
-* Development: added tests for Jetpack API endpoints for the WordPress REST API. #5310
-* Development: added tests for various constants in use by Jetpack. #5350
-* General: improve the display of the connection banners to explain to site owners why they should connect to WordPress.com. #5473
-* JSON API: add new API endpoint to allow installing a plugin via the API, from a zip file. #5507
-* JSON API: add new API endpoint to allow installing a theme via the API. #5537
-* JSON API: customize the theme endpoint to allow installing WordPress.com themes. #5392
-* Markdown: add new filter to allow site owners to parse content inside shortcodes. #5573
-* Photon: now using HTTPS to retrieve images by default. #5534
-* Protect: added a filter to skip IP address checking in favor of another security check. #5369
-* Publicize: only trigger Publicize for Post Types that support it. #5381
-* Related Posts: add posts to the WP REST API Post Response. #3425
-* Sharing / Likes: add new filter to customize the heading HTML. #5011
-* Sharing: better video tags for Video posts including VideoPress videos. #3853
-* Site Icon: added the site icon property to the output of the settings API endpoint. #5282
-* SSO: Extend logged in expiration to 1 year. #5259
-* Sync: added an API endpoint to examine the current state of scheduled sync jobs. #5324
-* Sync: improve synchronization on sites with a custom implementation of Cron.
-* Sync: disable Sync via Cron. #5528
-* Tests: introduce GUI tests for the React components in Jetpack. #5496
-* Tiled Galleries: add filter to override the default Tiled Gallery template files. #5090
-* Widgets: new 'My Community' widget displaying people who recently interacted with your site. #3358
-* Widgets: new Google Translate widget. #5386
-* Widgets: new Flickr option in the Social Media Icons Widget. #5250
-* Widgets: new 'WordPress.org' option in the Social Media Icons Widget. #5183
-* Widgets: add new `jetpack_top_posts_widget_permalink` filter to the permalinks in Top Posts Widget. #4881
-* Widgets: remove title attributes from the Social Media Icons Widget. #5286
-* Widget Visibility: add a filter to the get_taxonomies arguments. #5222
-
-**Improved Compatibility:**
-
-* Infinite Scroll: improve compatibility with WPML and language slugs in permalinks. #4953
-* Open Graph: add SEO by Squirrly TM to the list of conflicting plugins. #5365
-* Sharing: fix conflict between the Email button and the Autoptimize plugin. #5291
-* Sync: avoid conflicts with the Photo Gallery plugin. #5412
-* Sync: avoid conflicts with IDX support plugins such as IMPress for IDX Broker and dsIDXpress for IDX. #5636
-* Several improvements to avoid issues when cloning / duplicating sites, creating staging sites, or changing your site URL.
+* Additional unit tests have been added to improve Jetpack's development process and stability.
+* Custom post types have been added to the REST API output.
+* Many of the screenshots throughout the plugin have been replaced by SVGs in order to make Jetpack smaller.
+* New endpoints have been added to allow the installation of plugins and themes via the API.
+* New filters to improve Jetpack's extensibility: jetpack_auth_type, jetpack_nova_menu_item_loop_open_element, jetpack_nova_menu_item_loop_close_element, jetpack_nova_menu_item_loop_class, jetpack_markdown_preserve_shortcodes, jpp_allow_login, jetpack_sharing_headline_html, jetpack_tiled_gallery_template, jetpack_tiled_gallery_partial, jetpack_top_posts_widget_permalink, jetpack_top_posts_widget_permalink, jetpack_widget_visibility_tax_args.
+* New widget: "Google Translate" to allow users to translate your site into their own language.
+* New widget: "My Community" where you can see who recently interacted with your site.
+* One of the biggest issues facing Jetpack users for years now has been difficulties in moving sites from one domain name to another.  This update makes strides towards improving that process.
+* Photon now uses HTTPS by default. Secure all the things!
+* There are now helpful hints throughout the admin interface to make Jetpack easier to use.
+* We now allow you to embed from Pinterest.
+* We've added a new feature: SEO Tools, available to Jetpack Professional subscribers.
+* We've made numerous improvements to the data sync process.
+* Welcome back to the Site Stats link in your admin menu!

 **Bug Fixes:**

-* Admin Page: fix URL to Akismet Settings. #5332
-* Admin Page: do not load unnecessary file on connection page. #5284
-* Admin Page: avoid errors when page is loaded by secondary users. #5366
-* Admin Page: update the Create Account link from the Admin Page's dashboard to direct the user into a connect screen that asks them to sign up by being aware that the user clicked the Create Account instead of just the connect button. #5382
-* Admin Page: for non-admin users, when site is in Dev Mode, a Jetpack link leading to a blank page with a message "Sorry, you are not allowed to access this page." is no longer displayed. #5396
-* Admin Page: fix PHP warning when roles allowed to see Stats don't exist or haven't been saved yet. #5432
-* Admin Page: fix issue where certain administrative page actions would fail with sites using index permalinks. #5345
-* Contact Forms: fixed shortcode properties passing when using do_shortcode. #3188
-* Contact Forms: restricted access to feedback posts from the WordPress REST API. #5408
-* JSON API: avoid errors when the Sharing module isn't available. #5423
-* Likes: move email notification settings back with the other email settings in the Discussion Settings. #4987
-* Site Icon: not using a site icon as fallback version if it is too small. #3515
-* SSO: remove unnecessary styles for nonexistent profile UI. #5289
-* Sitemaps: make sure sitemaps always use absolute paths for images. #5375
-* Sync: avoid counting users on very large networks. #5575
-* Subscriptions: fix PHP warnings when user subscribes to comments. #4897
-* Subscriptions: fixed the "do not send" checkbox status in draft mode so it would stay checked. #5689
-* Widgets: fixed Instagram widget minimum width rule to actually use the minimum instead of maximum. #5316
+* Fixed link to Akismet settings.
+* Improved compatibility between Infinite Scroll and WPML, props Vuk Vuković.
+* Move email notification settings back with the other email settings in the Discussion Settings.
+* Various minor performance/compatibility fixes.

 = 4.3.2 =
samhotchkiss pushed a commit that referenced this pull request Nov 21, 2016
diff --git a/changelog.txt b/changelog.txt
index 78ee043..a03cdb9 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,4 +1,30 @@
-== Changelog ==
+== Changelog ==
+
+= 4.4 =
+
+**Enhancements**
+
+* Additional unit tests have been added to improve Jetpack's development process and stability.
+* Custom post types have been added to the REST API output.
+* Many of the screenshots throughout the plugin have been replaced by SVGs in order to make Jetpack smaller.
+* New endpoints have been added to allow the installation of plugins and themes via the API.
+* New filters to improve Jetpack's extensibility: jetpack_auth_type, jetpack_nova_menu_item_loop_open_element, jetpack_nova_menu_item_loop_close_element, jetpack_nova_menu_item_loop_class, jetpack_markdown_preserve_shortcodes, jpp_allow_login, jetpack_sharing_headline_html, jetpack_tiled_gallery_template, jetpack_tiled_gallery_partial, jetpack_top_posts_widget_permalink, jetpack_top_posts_widget_permalink, jetpack_widget_visibility_tax_args.
+* New widget: "Google Translate" to allow users to translate your site into their own language.
+* New widget: "My Community" where you can see who recently interacted with your site.
+* One of the biggest issues facing Jetpack users for years now has been difficulties in moving sites from one domain name to another.  This update makes strides towards improving that process.
+* Photon now uses HTTPS by default. Secure all the things!
+* There are now helpful hints throughout the admin interface to make Jetpack easier to use.
+* We now allow you to embed from Pinterest.
+* We've added a new feature: SEO Tools, available to Jetpack Professional subscribers.
+* We've made numerous improvements to the data sync process.
+* Welcome back to the Site Stats link in your admin menu!
+
+**Bug Fixes:**
+
+* Fixed link to Akismet settings.
+* Improved compatibility between Infinite Scroll and WPML, props Vuk Vuković.
+* Move email notification settings back with the other email settings in the Discussion Settings.
+* Various minor performance/compatibility fixes.

 = 4.3.2 =

diff --git a/readme.txt b/readme.txt
index 403b6df..47e2635 100644
--- a/readme.txt
+++ b/readme.txt
@@ -79,83 +79,27 @@ There are opportunities for developers at all levels to contribute. [Learn more

 **Enhancements**

-* Brand new SEO Tools module. #5307
-* Shortcodes: added Pinterest embeds. #5437
-* VideoPress: refreshed admin interface, seamless integration with the core Media manager, tied with Jetpack Plans. #5457
-
-* Admin Page: added a filter to manage if the newly connected user should go to WordPress.com or not. #5319
-* Admin Page: added links to pages where users can fix problems with Akismet and update plugins. #5176
-* Admin Page: added helpful hints to make Jetpack easier to use. #5479
-* Admin Page: redesign Development mode banner. #5186
-* Admin Page: removed unnecessarily loaded theme compatibility files. #5454
-* Admin Page: when user is non admin, Protect module is inactive and they have no access to Stats, don't break the UI trying to go to At a Glance which isn't accessible by them and instead display Apps tab. #5395
-* Admin Page: use SVGs instead of raster images to improve performance. #5419
-* Admin Page: improve design when Development mode is active. #5186
-* Admin Page: improve contrast for better accessibility. #5236
-* Carousel: moved close icon location to the top right. #5237
-* Carousel: change the behavior of the browser's back button after closing a gallery. #5168
-* Contact Form: add horizontal line between message content and meta data. #5270
-* Custom Post Types: added custom posts to the output of the WordPress REST API. #5434
-* Custom Post Types: made Nova post markup more flexible by adding new filters. #1542
-* Debug Page: add information about Development mode. #5225
-* Documentation: Improvements to README.md sections about development workflow and clarification about Node versions required for the build tasks. #5428
-* Development: added tests for Jetpack API endpoints for the WordPress REST API. #5310
-* Development: added tests for various constants in use by Jetpack. #5350
-* General: improve the display of the connection banners to explain to site owners why they should connect to WordPress.com. #5473
-* JSON API: add new API endpoint to allow installing a plugin via the API, from a zip file. #5507
-* JSON API: add new API endpoint to allow installing a theme via the API. #5537
-* JSON API: customize the theme endpoint to allow installing WordPress.com themes. #5392
-* Markdown: add new filter to allow site owners to parse content inside shortcodes. #5573
-* Photon: now using HTTPS to retrieve images by default. #5534
-* Protect: added a filter to skip IP address checking in favor of another security check. #5369
-* Publicize: only trigger Publicize for Post Types that support it. #5381
-* Related Posts: add posts to the WP REST API Post Response. #3425
-* Sharing / Likes: add new filter to customize the heading HTML. #5011
-* Sharing: better video tags for Video posts including VideoPress videos. #3853
-* Site Icon: added the site icon property to the output of the settings API endpoint. #5282
-* SSO: Extend logged in expiration to 1 year. #5259
-* Sync: added an API endpoint to examine the current state of scheduled sync jobs. #5324
-* Sync: improve synchronization on sites with a custom implementation of Cron.
-* Sync: disable Sync via Cron. #5528
-* Tests: introduce GUI tests for the React components in Jetpack. #5496
-* Tiled Galleries: add filter to override the default Tiled Gallery template files. #5090
-* Widgets: new 'My Community' widget displaying people who recently interacted with your site. #3358
-* Widgets: new Google Translate widget. #5386
-* Widgets: new Flickr option in the Social Media Icons Widget. #5250
-* Widgets: new 'WordPress.org' option in the Social Media Icons Widget. #5183
-* Widgets: add new `jetpack_top_posts_widget_permalink` filter to the permalinks in Top Posts Widget. #4881
-* Widgets: remove title attributes from the Social Media Icons Widget. #5286
-* Widget Visibility: add a filter to the get_taxonomies arguments. #5222
-
-**Improved Compatibility:**
-
-* Infinite Scroll: improve compatibility with WPML and language slugs in permalinks. #4953
-* Open Graph: add SEO by Squirrly TM to the list of conflicting plugins. #5365
-* Sharing: fix conflict between the Email button and the Autoptimize plugin. #5291
-* Sync: avoid conflicts with the Photo Gallery plugin. #5412
-* Sync: avoid conflicts with IDX support plugins such as IMPress for IDX Broker and dsIDXpress for IDX. #5636
-* Several improvements to avoid issues when cloning / duplicating sites, creating staging sites, or changing your site URL.
+* Additional unit tests have been added to improve Jetpack's development process and stability.
+* Custom post types have been added to the REST API output.
+* Many of the screenshots throughout the plugin have been replaced by SVGs in order to make Jetpack smaller.
+* New endpoints have been added to allow the installation of plugins and themes via the API.
+* New filters to improve Jetpack's extensibility: jetpack_auth_type, jetpack_nova_menu_item_loop_open_element, jetpack_nova_menu_item_loop_close_element, jetpack_nova_menu_item_loop_class, jetpack_markdown_preserve_shortcodes, jpp_allow_login, jetpack_sharing_headline_html, jetpack_tiled_gallery_template, jetpack_tiled_gallery_partial, jetpack_top_posts_widget_permalink, jetpack_top_posts_widget_permalink, jetpack_widget_visibility_tax_args.
+* New widget: "Google Translate" to allow users to translate your site into their own language.
+* New widget: "My Community" where you can see who recently interacted with your site.
+* One of the biggest issues facing Jetpack users for years now has been difficulties in moving sites from one domain name to another.  This update makes strides towards improving that process.
+* Photon now uses HTTPS by default. Secure all the things!
+* There are now helpful hints throughout the admin interface to make Jetpack easier to use.
+* We now allow you to embed from Pinterest.
+* We've added a new feature: SEO Tools, available to Jetpack Professional subscribers.
+* We've made numerous improvements to the data sync process.
+* Welcome back to the Site Stats link in your admin menu!

 **Bug Fixes:**

-* Admin Page: fix URL to Akismet Settings. #5332
-* Admin Page: do not load unnecessary file on connection page. #5284
-* Admin Page: avoid errors when page is loaded by secondary users. #5366
-* Admin Page: update the Create Account link from the Admin Page's dashboard to direct the user into a connect screen that asks them to sign up by being aware that the user clicked the Create Account instead of just the connect button. #5382
-* Admin Page: for non-admin users, when site is in Dev Mode, a Jetpack link leading to a blank page with a message "Sorry, you are not allowed to access this page." is no longer displayed. #5396
-* Admin Page: fix PHP warning when roles allowed to see Stats don't exist or haven't been saved yet. #5432
-* Admin Page: fix issue where certain administrative page actions would fail with sites using index permalinks. #5345
-* Contact Forms: fixed shortcode properties passing when using do_shortcode. #3188
-* Contact Forms: restricted access to feedback posts from the WordPress REST API. #5408
-* JSON API: avoid errors when the Sharing module isn't available. #5423
-* Likes: move email notification settings back with the other email settings in the Discussion Settings. #4987
-* Site Icon: not using a site icon as fallback version if it is too small. #3515
-* SSO: remove unnecessary styles for nonexistent profile UI. #5289
-* Sitemaps: make sure sitemaps always use absolute paths for images. #5375
-* Sync: avoid counting users on very large networks. #5575
-* Subscriptions: fix PHP warnings when user subscribes to comments. #4897
-* Subscriptions: fixed the "do not send" checkbox status in draft mode so it would stay checked. #5689
-* Widgets: fixed Instagram widget minimum width rule to actually use the minimum instead of maximum. #5316
+* Fixed link to Akismet settings.
+* Improved compatibility between Infinite Scroll and WPML, props Vuk Vuković.
+* Move email notification settings back with the other email settings in the Discussion Settings.
+* Various minor performance/compatibility fixes.

 = 4.3.2 =
@kraftbj kraftbj removed the [Status] Ready to Merge Go ahead, you can push that green button! label Oct 13, 2020
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.

8 participants