From 9bca12a59a4d171d65ed5c3bb957f613499ec668 Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Sat, 7 Mar 2026 19:37:07 +0100 Subject: [PATCH] feat: Add Facebook Ads settings management with API integration and UI support --- .serena/project.yml | 4 +++ .vscode/ftp-kr.sync.cache.json | 4 +-- autoload/controls/class.Cron.php | 5 +-- autoload/controls/class.Users.php | 10 ++++++ config.php | 6 +--- index.php | 3 +- templates/users/settings.php | 54 +++++++++++++++++++++++++++++++ 7 files changed, 76 insertions(+), 10 deletions(-) diff --git a/.serena/project.yml b/.serena/project.yml index dfcc7d3..80c46cd 100644 --- a/.serena/project.yml +++ b/.serena/project.yml @@ -123,3 +123,7 @@ symbol_info_budget: # Note: the backend is fixed at startup. If a project with a different backend # is activated post-init, an error will be returned. language_backend: + +# list of regex patterns which, when matched, mark a memory entry as read‑only. +# Extends the list from the global configuration, merging the two lists. +read_only_memory_patterns: [] diff --git a/.vscode/ftp-kr.sync.cache.json b/.vscode/ftp-kr.sync.cache.json index 9632579..3f69b08 100644 --- a/.vscode/ftp-kr.sync.cache.json +++ b/.vscode/ftp-kr.sync.cache.json @@ -9,8 +9,8 @@ }, "api.php": { "type": "-", - "size": 4040, - "lmtime": 1772671706766, + "size": 5529, + "lmtime": 1772790264251, "modified": false }, "autoload": { diff --git a/autoload/controls/class.Cron.php b/autoload/controls/class.Cron.php index 1b89b9e..8bcb67a 100644 --- a/autoload/controls/class.Cron.php +++ b/autoload/controls/class.Cron.php @@ -4438,7 +4438,8 @@ class Cron { global $settings; - $token = trim( (string) ( $settings['facebook_ads_token'] ?? '' ) ); + $token_db = trim( (string) \services\FacebookAdsApi::get_setting( 'facebook_ads_token' ) ); + $token = $token_db !== '' ? $token_db : trim( (string) ( $settings['facebook_ads_token'] ?? '' ) ); $api_version = trim( (string) ( $settings['facebook_ads_api_version'] ?? 'v25.0' ) ) ?: 'v25.0'; $requested_client_id = (int) $requested_client_id; $client_id = $requested_client_id; @@ -4461,7 +4462,7 @@ class Cron if ( $token === '' ) { return [ - 'result' => 'Brak facebook_ads_token w config.php.', + 'result' => 'Brak tokenu Facebook Ads. Skonfiguruj go w Ustawieniach.', 'success' => false ]; } diff --git a/autoload/controls/class.Users.php b/autoload/controls/class.Users.php index d1e69da..4296b1c 100644 --- a/autoload/controls/class.Users.php +++ b/autoload/controls/class.Users.php @@ -160,6 +160,16 @@ class Users exit; } + public static function settings_save_facebook_ads() + { + \services\FacebookAdsApi::set_setting( 'facebook_ads_token', \S::get( 'facebook_ads_token' ) ); + \services\FacebookAdsApi::set_setting( 'facebook_ads_conversion_window_days', (string) max( 1, (int) \S::get( 'facebook_ads_conversion_window_days' ) ) ); + + \S::alert( 'Ustawienia Facebook Ads zostały zapisane.' ); + header( 'Location: /settings' ); + exit; + } + public static function settings_save_ai_prompts() { \services\GoogleAdsApi::set_setting( 'ai_prompt_title_template', trim( (string) \S::get( 'ai_prompt_title_template' ) ) ); diff --git a/config.php b/config.php index c24aab0..ae4bfb7 100644 --- a/config.php +++ b/config.php @@ -13,8 +13,4 @@ $settings['email_password'] = 'ProjectPro2025!'; $settings['cron_products_clients_per_run'] = 1; $settings['cron_campaigns_clients_per_run'] = 1; $settings['cron_products_urls_limit_per_client'] = 100; -$settings['google_ads_conversion_window_days'] = 7; - - -$settings['facebook_ads_token'] = 'EAAVtpObUlr8BQ4sZBbRNOMFTMrSF2PhzOT9vZAFJZAX0xDz5NLlJxECbNmUT5cYLOM0UtH6QhH0OjmkYZAdJgYZBTUZA3tSw2KD9cjsDFMRUB7ReZBVcJBZCbwG8H51sckgfDIWaFRn2Hp2VdddC7hjDP5oY50krI0lUFxwcN08axIr3XUrxpydYZBfvlJl40cwZDZD'; -$settings['facebook_ads_conversion_window_days'] = 7; \ No newline at end of file +$settings['google_ads_conversion_window_days'] = 7; \ No newline at end of file diff --git a/index.php b/index.php index c29f9d7..216fa87 100644 --- a/index.php +++ b/index.php @@ -48,7 +48,8 @@ $route_aliases = [ 'settings/save_openai' => ['users', 'settings_save_openai'], 'settings/save_claude' => ['users', 'settings_save_claude'], 'settings/save_gemini' => ['users', 'settings_save_gemini'], - 'settings/save_ai_prompts' => ['users', 'settings_save_ai_prompts'], + 'settings/save_ai_prompts' => ['users', 'settings_save_ai_prompts'], + 'settings/save_facebook_ads' => ['users', 'settings_save_facebook_ads'], 'products/ai_suggest' => ['products', 'ai_suggest'], 'clients/save' => ['clients', 'save'], 'feeds' => ['feeds', 'main_view'], diff --git a/templates/users/settings.php b/templates/users/settings.php index c5b880d..e962755 100644 --- a/templates/users/settings.php +++ b/templates/users/settings.php @@ -198,6 +198,60 @@ +
+
+
+
+
+
+

Facebook Ads API

+ Token dostępu i konfiguracja synchronizacji kampanii Facebook Ads +
+
+ +
+ +
+
Ostatni błąd API:
+
Data wystąpienia:
+
+
+
+ +
+
+
+ +
+ + +
+
+
+ + +
+
+ +
+
+
+
+