Hotfix for AS

Pulls in the fix from https://github.com/Prospress/action-scheduler/pull/268
This commit is contained in:
Mike Jolley 2019-03-27 14:45:36 +00:00
parent 5a33e13432
commit 4d5cda49c2
1 changed files with 21 additions and 5 deletions

View File

@ -132,11 +132,7 @@ class ActionScheduler_wpPostStore extends ActionScheduler_Store {
protected function make_action_from_post( $post ) {
$hook = $post->post_title;
$args = json_decode( $post->post_content, true );
// Handle args that do not decode properly.
if ( JSON_ERROR_NONE !== json_last_error() || ! is_array( $args ) ) {
throw ActionScheduler_InvalidActionException::from_decoding_args( $post->ID );
}
$this->validate_args( $args, $post->ID );
$schedule = get_post_meta( $post->ID, self::SCHEDULE_META_KEY, true );
if ( empty( $schedule ) || ! is_a( $schedule, 'ActionScheduler_Schedule' ) ) {
@ -788,4 +784,24 @@ class ActionScheduler_wpPostStore extends ActionScheduler_Store {
$taxonomy_registrar = new ActionScheduler_wpPostStore_TaxonomyRegistrar();
$taxonomy_registrar->register();
}
/**
* Validate that we could decode action arguments.
*
* @param mixed $args The decoded arguments.
* @param int $action_id The action ID.
*
* @throws ActionScheduler_InvalidActionException When the decoded arguments are invalid.
*/
private function validate_args( $args, $action_id ) {
// Ensure we have an array of args.
if ( ! is_array( $args ) ) {
throw ActionScheduler_InvalidActionException::from_decoding_args( $action_id );
}
// Validate JSON decoding if possible.
if ( function_exists( 'json_last_error' ) && JSON_ERROR_NONE !== json_last_error() ) {
throw ActionScheduler_InvalidActionException::from_decoding_args( $action_id );
}
}
}