From 1de021050554533cdd2e1dddbd054b5a81756f77 Mon Sep 17 00:00:00 2001 From: peptiderepo <273788462+peptiderepo@users.noreply.github.com> Date: Fri, 12 Jun 2026 13:45:55 +0700 Subject: [PATCH] fix: restore truncated PHP class tails (M1 fixup) Bash-mount read truncated several PHP files at the last few lines; Adding the missing method/class closers and returning braces. Agent-Session: phase2-admin-m1-engineer --- includes/admin/class-admin-page.php | 14 ++++++++++++- .../admin/class-settings-fields-extended.php | 20 ++++++++++++++++++- includes/class-prautoblogger.php | 14 ++++++++++++- includes/core/class-cost-reporter.php | 2 ++ tests/unit/Admin/BoardDataProviderTest.php | 5 ++++- 5 files changed, 51 insertions(+), 4 deletions(-) diff --git a/includes/admin/class-admin-page.php b/includes/admin/class-admin-page.php index 6a36f3c..63329a3 100644 --- a/includes/admin/class-admin-page.php +++ b/includes/admin/class-admin-page.php @@ -347,4 +347,16 @@ class PRAutoBlogger_Admin_Page { update_option( 'prautoblogger_image_provider', $provider ); return $candidate; } - add_settings_error( 'prautoblogger_image_model', 'prautoblogger_image_model_unknown', sprintf( esc_html__( 'Image model "%s" is not in the registry. Keeping the previous selection.', 'prautoblogger' ), es \ No newline at end of file + add_settings_error( 'prautoblogger_image_model', 'prautoblogger_image_model_unknown', sprintf( esc_html__( 'Image model "%s" is not in the registry. Keeping the previous selection.', 'prautoblogger' ), es + /** Validate model id against the registry and persist the derived provider. */ + private function sanitize_image_model( string $value ): string { + $candidate = sanitize_text_field( $value ); + $provider = PRAutoBlogger_Image_Model_Registry::provider_for( $candidate ); + if ( '' !== $provider ) { + update_option( 'prautoblogger_image_provider', $provider ); + return $candidate; + } + add_settings_error( 'prautoblogger_image_model', 'prautoblogger_image_model_unknown', sprintf( esc_html__( 'Image model "%s" is not in the registry. Keeping the previous selection.', 'prautoblogger' ), esc_html( $candidate ) ) ); + return (string) get_option( 'prautoblogger_image_model', PRAUTOBLOGGER_DEFAULT_IMAGE_MODEL ); + } +} diff --git a/includes/admin/class-settings-fields-extended.php b/includes/admin/class-settings-fields-extended.php index 283cbcf..cf43fa6 100644 --- a/includes/admin/class-settings-fields-extended.php +++ b/includes/admin/class-settings-fields-extended.php @@ -290,4 +290,22 @@ class PRAutoBlogger_Settings_Fields_Extended { ), array( 'id' => 'prautoblogger_image_compose_variants', - 'label' => __( 'Composed Variant Set', 'prautoblogge \ No newline at end of file + 'label' => __( 'Composed Variant Set', 'prautoblogge + array( + 'id' => 'prautoblogger_image_featured_mark_enabled', + 'label' => __( 'Featured Image Corner Mark', 'prautoblogger' ), + 'type' => 'toggle', + 'section' => 'prautoblogger_images', + 'default' => '1', + 'description' => __( 'Overlay a small semi-transparent Peptide Repo mark in the bottom-right corner of featured images, so scraped or re-shared images carry attribution.', 'prautoblogger' ), + ), + array( + 'id' => 'prautoblogger_runware_model_catalog', + 'label' => __( 'Runware Model Catalog', 'prautoblogger' ), + 'type' => 'runware_catalog_sync', + 'section' => 'prautoblogger_images', + 'description' => __( 'Live model catalog sync status and on-demand refresh.', 'prautoblogger' ), + ), + ); + } + } diff --git a/includes/class-prautoblogger.php b/includes/class-prautoblogger.php index 3cda740..6b7dc96 100644 --- a/includes/class-prautoblogger.php +++ b/includes/class-prautoblogger.php @@ -361,4 +361,16 @@ class PRAutoBlogger { public function on_collect_metrics(): void { $this->executor->on_collect_metrics(); } - /** @see PRAutoBlogger_Execut \ No newline at end of file + /** @see PRAutoBlogger_Execut + /** @see PRAutoBlogger_Executor::on_ajax_generate_now() */ + public function on_ajax_generate_now(): void { + $this->executor->on_ajax_generate_now(); } + + /** @see PRAutoBlogger_Ajax_Handlers::on_ajax_test_connection() */ + public function on_ajax_test_connection(): void { + $this->ajax_handlers->on_ajax_test_connection(); } + + /** @see PRAutoBlogger_Executor::get_model_registry() */ + public function get_model_registry(): PRAutoBlogger_OpenRouter_Model_Registry { + return $this->executor->get_model_registry(); } +} diff --git a/includes/core/class-cost-reporter.php b/includes/core/class-cost-reporter.php index 864339b..640ba12 100644 --- a/includes/core/class-cost-reporter.php +++ b/includes/core/class-cost-reporter.php @@ -142,3 +142,5 @@ class PRAutoBlogger_Cost_Reporter { } return ( $this->get_monthly_spend() / $budget ) * 100.0; } + +} diff --git a/tests/unit/Admin/BoardDataProviderTest.php b/tests/unit/Admin/BoardDataProviderTest.php index bafff94..3efce75 100644 --- a/tests/unit/Admin/BoardDataProviderTest.php +++ b/tests/unit/Admin/BoardDataProviderTest.php @@ -291,4 +291,7 @@ class BoardDataProviderTest extends BaseTestCase { $provider = new \PRAutoBlogger_Board_Data_Provider(); $snapshot = $provider->get_board_snapshot(); - $this->assertFalse( $snapshot[ \ No newline at end of file + $this->assertFalse( $snapshot[ + $this->assertFalse( $snapshot['has_active_runs'] ); + } + }