From 4fc864e576ad9650ee28d42a1234eaaecb4b0826 Mon Sep 17 00:00:00 2001 From: ashfame Date: Thu, 19 Dec 2024 19:33:48 +0400 Subject: [PATCH] define custom hooks for transformer when liberated data is ready for transformation --- src/plugin/class-engine.php | 2 +- src/plugin/class-subjects-controller.php | 4 ++++ src/plugin/class-transformer.php | 17 ++++------------- tests/plugin/test-transformer.php | 2 +- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/plugin/class-engine.php b/src/plugin/class-engine.php index 39efecdc..ab13a269 100644 --- a/src/plugin/class-engine.php +++ b/src/plugin/class-engine.php @@ -15,7 +15,7 @@ public function __construct() { require 'utils.php'; ( function () { - $transformer = new Transformer( $this->storage_post_type ); + $transformer = new Transformer(); new Post_Type_UI( $this->storage_post_type, $transformer ); diff --git a/src/plugin/class-subjects-controller.php b/src/plugin/class-subjects-controller.php index 033f37e9..fb45d548 100644 --- a/src/plugin/class-subjects-controller.php +++ b/src/plugin/class-subjects-controller.php @@ -292,6 +292,8 @@ public function create_item( $request ): WP_REST_Response|WP_Error { $subject_type = $this->get_subject_type( $request ); update_post_meta( $item['ID'], 'subject_type', $subject_type ); + do_action( 'dl_data_saved', $item['ID'], 'create' ); + return $this->prepare_item_for_response( $item, $request, $subject_type ); } @@ -314,6 +316,8 @@ public function update_item( $request ): WP_REST_Response|WP_Error { update_post_meta( $item['ID'], $key, $value ); } + do_action( 'dl_data_saved', $item['ID'], 'update' ); + return $this->prepare_item_for_response( $item, $request ); } diff --git a/src/plugin/class-transformer.php b/src/plugin/class-transformer.php index 1761ce53..ee1d1a01 100644 --- a/src/plugin/class-transformer.php +++ b/src/plugin/class-transformer.php @@ -7,15 +7,8 @@ class Transformer { private string $meta_key_for_transformed_post = '_dl_transformed'; - public function __construct( $post_type ) { - add_action( - 'save_post_' . $post_type, - function ( $post_id, $post ) { - $this->transform( $post ); - }, - 10, - 2 - ); + public function __construct() { + add_action( 'dl_data_saved', array( $this, 'transform' ), 10, 2 ); } private function get_post_type_for_transformed_post( int|WP_Post $liberated_post ): string { @@ -51,14 +44,12 @@ public function get_transformed_post_id( $liberated_post_id ): int|null { return absint( $value ); } - public function transform( int|WP_Post $liberated_post ): bool { + public function transform( int $liberated_post_id, string $verb ): bool { if ( apply_filters( 'skip_native_transformation', false ) ) { return true; } - if ( is_int( $liberated_post ) ) { - $liberated_post = get_post( $liberated_post ); - } + $liberated_post = get_post( $liberated_post_id ); $transformed_post_id = get_post_meta( $liberated_post->ID, $this->meta_key_for_transformed_post, true ); diff --git a/tests/plugin/test-transformer.php b/tests/plugin/test-transformer.php index 7095ecc9..7de63b52 100644 --- a/tests/plugin/test-transformer.php +++ b/tests/plugin/test-transformer.php @@ -60,7 +60,7 @@ public function testGetTransformedPost() { } public function testTransform(): void { - $result = $this->transformer->transform( get_post( $this->post_id_in_db ) ); + $result = $this->transformer->transform( $this->post_id_in_db, 'whatever' ); // verb isn't currently used $transformed_post_id = absint( get_post_meta( $this->post_id_in_db, '_dl_transformed', true ) );