Skip to content

Commit

Permalink
detect incomplete class in meta value instead of catching and examini…
Browse files Browse the repository at this point in the history
…ng errors
  • Loading branch information
lsinger committed Jan 23, 2024
1 parent 5f943d1 commit 1abb8ed
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 16 deletions.
Expand Up @@ -737,14 +737,7 @@ protected function update_order_meta_from_object( $order ) {
}
}
}
try {
add_post_meta( $order->get_id(), $meta_data->key, $meta_data->value, false );
} catch ( \Throwable $th ) {
$incomplete_object_message = 'The script tried to modify a property on an incomplete object';
if ( substr( $th->getMessage(), 0, strlen( $incomplete_object_message ) ) !== $incomplete_object_message ) {
throw $th;
}

if ( 'object' === gettype( $meta->value ) && '__PHP_Incomplete_Class' === get_class( $meta->value ) ) {
$meta_value = maybe_serialize( $meta_data->value );
$result = $wpdb->insert(
_get_meta_table( 'post' ),
Expand All @@ -760,6 +753,8 @@ protected function update_order_meta_from_object( $order ) {
throw $th;
}
wp_cache_delete( $order->get_id(), 'post_meta' );
} else {
add_post_meta( $order->get_id(), $meta_data->key, $meta_data->value, false );
}
}

Expand Down
Expand Up @@ -2899,14 +2899,7 @@ public function delete_meta( &$object, $meta ) {

if ( ! $changes_applied && $object instanceof WC_Abstract_Order && $this->should_backfill_post_record() && isset( $meta->key ) ) {
self::$backfilling_order_ids[] = $object->get_id();
try {
delete_post_meta( $object->get_id(), $meta->key, $meta->value );
} catch ( \Throwable $th ) {
$incomplete_object_message = 'The script tried to modify a property on an incomplete object';
if ( substr( $th->getMessage(), 0, strlen( $incomplete_object_message ) ) !== $incomplete_object_message ) {
throw $th;
}

if ( 'object' === gettype( $meta->value ) && '__PHP_Incomplete_Class' === get_class( $meta->value ) ) {
$meta_value = maybe_serialize( $meta->value );
$wpdb->delete(
_get_meta_table( 'post' ),
Expand All @@ -2917,6 +2910,8 @@ public function delete_meta( &$object, $meta ) {
),
array( '%d', '%s', '%s' )
);
} else {
delete_post_meta( $object->get_id(), $meta->key, $meta->value );
}
self::$backfilling_order_ids = array_diff( self::$backfilling_order_ids, array( $object->get_id() ) );
}
Expand Down

0 comments on commit 1abb8ed

Please sign in to comment.