diff --git a/wp-content/themes/cosmopet/modules/footer/module-ajax-controller.php b/wp-content/themes/cosmopet/modules/footer/module-ajax-controller.php index 4f04a01..de7cb21 100644 --- a/wp-content/themes/cosmopet/modules/footer/module-ajax-controller.php +++ b/wp-content/themes/cosmopet/modules/footer/module-ajax-controller.php @@ -1,175 +1,6 @@ -
- Hello, " . esc_html($current_user->display_name) . "!"; - echo ""; - } -} - -function tgScript(){ - $bot_username = BOT_USERNAME; - ?> - - - sanitize_text_field($_POST['userid']), - 'first_name' => sanitize_text_field($_POST['fname']), - 'last_name' => sanitize_text_field($_POST['lname']), - 'username' => sanitize_text_field($_POST['username'] ?? ''), - ]; - - if (!$auth_data['id']) { - wp_die(json_encode(['status' => 'error', 'message' => 'Invalid Telegram data'])); - } - - // Проверяем существование пользователя по tg_account - $users = get_users([ - 'meta_key' => 'tg_account', - 'meta_value' => $auth_data['id'], - 'number' => 1 - ]); - - $password = wp_generate_password(12, true, false); // Генерация безопасного пароля - - if ($users) { - // Существующий пользователь - $user = $users[0]; - wp_set_password($password, $user->ID); - $login = wp_signon([ - 'user_login' => $user->user_login, - 'user_password' => $password, - 'remember' => true - ]); - - if (!is_wp_error($login)) { - session_start(); - $_SESSION['tg_user'] = $auth_data; - session_write_close(); - wp_die(json_encode(['status' => 'success', 'redirect' => admin_url()])); - } - } else { - // Новый пользователь - $username = sanitize_user($auth_data['username'] ?: $auth_data['first_name'] . '_' . $auth_data['last_name'], true); - $username = wp_slash($username); // Экранируем для безопасности - $user_id = wp_create_user($username, $password, $username . '@telegram.com'); - - if (!is_wp_error($user_id)) { - wp_update_user([ - 'ID' => $user_id, - 'display_name' => $auth_data['first_name'] . ' ' . $auth_data['last_name'], - 'first_name' => $auth_data['first_name'], - 'last_name' => $auth_data['last_name'] - ]); - add_user_meta($user_id, 'tg_account', $auth_data['id']); - add_user_meta($user_id, 'tg_username', $auth_data['username']); - - $login = wp_signon([ - 'user_login' => $username, - 'user_password' => $password, - 'remember' => true - ]); - - if (!is_wp_error($login)) { - session_start(); - $_SESSION['tg_user'] = $auth_data; - session_write_close(); - wp_die(json_encode(['status' => 'success', 'redirect' => admin_url()])); - } - } - } - - wp_die(json_encode(['status' => 'error', 'message' => 'Login failed'])); -} - -// Функция привязки Telegram к существующему пользователю -add_action('wp_ajax_linktelegram', 'linkTelegram'); -add_action('wp_ajax_nopriv_linktelegram', 'linkTelegram'); - -function linkTelegram() { - if (!is_user_logged_in()) { - wp_die(json_encode(['status' => 'error', 'message' => 'Not logged in'])); - } - - $tg_id = sanitize_text_field($_POST['userid']); - $user_id = get_current_user_id(); - - add_user_meta($user_id, 'tg_account', $tg_id); - wp_update_user([ - 'ID' => $user_id, - 'first_name' => sanitize_text_field($_POST['fname']), - 'last_name' => sanitize_text_field($_POST['lname']) - ]); - - wp_die(json_encode(['status' => 'success'])); -} - -// Функция обновления email -add_action('wp_ajax_email_link', 'emailLink'); -add_action('wp_ajax_nopriv_email_link', 'emailLink'); - -function emailLink() { - if (!is_user_logged_in()) { - wp_die(json_encode(['status' => 'error', 'message' => 'Not logged in'])); - } - - $email = sanitize_email($_POST['email']); - $user_id = get_current_user_id(); - - if (email_exists($email)) { - wp_die(json_encode(['status' => 'error', 'message' => 'Email is already registered'])); - } - - wp_update_user(['ID' => $user_id, 'user_email' => $email]); - wp_die(json_encode(['status' => 'success'])); -} - // Добавление и настройка колонки Telegram add_filter('manage_users_columns', 'add_tg_account_column'); function add_tg_account_column($columns) { diff --git a/wp-content/themes/cosmopet/modules/footer/module.template.twig b/wp-content/themes/cosmopet/modules/footer/module.template.twig deleted file mode 100644 index 8ccbf19..0000000 --- a/wp-content/themes/cosmopet/modules/footer/module.template.twig +++ /dev/null @@ -1,52 +0,0 @@ -{% set current_path = template_path ~ '/modules/footer' %} - - diff --git a/wp-content/themes/cosmopet/modules/profile/module-ajax-controller.php b/wp-content/themes/cosmopet/modules/profile/module-ajax-controller.php index 02390d5..a653b23 100644 --- a/wp-content/themes/cosmopet/modules/profile/module-ajax-controller.php +++ b/wp-content/themes/cosmopet/modules/profile/module-ajax-controller.php @@ -175,3 +175,172 @@ function handle_subscription_address_update() { } + +// Динамическое определение BOT_USERNAME +$site_url = site_url(); +if ($site_url === 'https://cosmopet-test-ru.cp.good-production.xyz') { + define('BOT_USERNAME', 'cosmopet_test_RU_bot'); +} elseif ($site_url === 'https://cosmopet-test-ae.cp.good-production.xyz') { + define('BOT_USERNAME', 'cosmopet_test_AE_bot'); +} else { + define('BOT_USERNAME', 'cosmopet_test_default_bot'); // Фallback на случай других доменов +} + +// Функция получения данных Telegram +function getTelegramUserData() { + if (isset($_SESSION['tg_user'])) { + return $_SESSION['tg_user']; + } + return false; +} + +// Функция вывода Telegram Widget +function tgWidget() { + if (!is_user_logged_in()) { + + ?> + + Hello, " . esc_html($current_user->display_name) . "!"; + echo ""; + } +} + +function tgScript(){ + $bot_username = BOT_USERNAME; + ?> + + + sanitize_text_field($_POST['userid']), + 'first_name' => sanitize_text_field($_POST['fname']), + 'last_name' => sanitize_text_field($_POST['lname']), + 'username' => sanitize_text_field($_POST['username'] ?? ''), + ]; + + if (!$auth_data['id']) { + wp_die(json_encode(['status' => 'error', 'message' => 'Invalid Telegram data'])); + } + + // Проверяем существование пользователя по tg_account + $users = get_users([ + 'meta_key' => 'tg_account', + 'meta_value' => $auth_data['id'], + 'number' => 1 + ]); + + $password = wp_generate_password(12, true, false); // Генерация безопасного пароля + + if ($users) { + // Существующий пользователь + $user = $users[0]; + wp_set_password($password, $user->ID); + $login = wp_signon([ + 'user_login' => $user->user_login, + 'user_password' => $password, + 'remember' => true + ]); + + if (!is_wp_error($login)) { + session_start(); + $_SESSION['tg_user'] = $auth_data; + session_write_close(); + wp_die(json_encode(['status' => 'success', 'redirect' => admin_url()])); + } + } else { + // Новый пользователь + $username = sanitize_user($auth_data['username'] ?: $auth_data['first_name'] . '_' . $auth_data['last_name'], true); + $username = wp_slash($username); // Экранируем для безопасности + $user_id = wp_create_user($username, $password, $username . '@telegram.com'); + + if (!is_wp_error($user_id)) { + wp_update_user([ + 'ID' => $user_id, + 'display_name' => $auth_data['first_name'] . ' ' . $auth_data['last_name'], + 'first_name' => $auth_data['first_name'], + 'last_name' => $auth_data['last_name'] + ]); + add_user_meta($user_id, 'tg_account', $auth_data['id']); + add_user_meta($user_id, 'tg_username', $auth_data['username']); + + $login = wp_signon([ + 'user_login' => $username, + 'user_password' => $password, + 'remember' => true + ]); + + if (!is_wp_error($login)) { + session_start(); + $_SESSION['tg_user'] = $auth_data; + session_write_close(); + wp_die(json_encode(['status' => 'success', 'redirect' => admin_url()])); + } + } + } + + wp_die(json_encode(['status' => 'error', 'message' => 'Login failed'])); +} + +// Функция привязки Telegram к существующему пользователю +add_action('wp_ajax_linktelegram', 'linkTelegram'); +add_action('wp_ajax_nopriv_linktelegram', 'linkTelegram'); + +function linkTelegram() { + if (!is_user_logged_in()) { + wp_die(json_encode(['status' => 'error', 'message' => 'Not logged in'])); + } + + $tg_id = sanitize_text_field($_POST['userid']); + $user_id = get_current_user_id(); + + add_user_meta($user_id, 'tg_account', $tg_id); + wp_update_user([ + 'ID' => $user_id, + 'first_name' => sanitize_text_field($_POST['fname']), + 'last_name' => sanitize_text_field($_POST['lname']) + ]); + + wp_die(json_encode(['status' => 'success'])); +} + +// Функция обновления email +add_action('wp_ajax_email_link', 'emailLink'); +add_action('wp_ajax_nopriv_email_link', 'emailLink'); + +function emailLink() { + if (!is_user_logged_in()) { + wp_die(json_encode(['status' => 'error', 'message' => 'Not logged in'])); + } + + $email = sanitize_email($_POST['email']); + $user_id = get_current_user_id(); + + if (email_exists($email)) { + wp_die(json_encode(['status' => 'error', 'message' => 'Email is already registered'])); + } + + wp_update_user(['ID' => $user_id, 'user_email' => $email]); + wp_die(json_encode(['status' => 'success'])); +} \ No newline at end of file diff --git a/wp-content/themes/cosmopet/templates/footer.twig b/wp-content/themes/cosmopet/templates/footer.twig index e95f29b..7510391 100644 --- a/wp-content/themes/cosmopet/templates/footer.twig +++ b/wp-content/themes/cosmopet/templates/footer.twig @@ -97,62 +97,11 @@ - - - - - -{% verbatim %} - - -{% endverbatim %} +{% include 'forms/form-thx.twig' %} +{% include 'forms/author-form.twig' %}