parent
7a78ffbbff
commit
79aea38c69
@ -1,188 +1,189 @@ |
||||
<?php |
||||
|
||||
|
||||
add_filter('timber/context', function($context) { |
||||
$context['email_list'] = get_field('email_list', 'options'); |
||||
$context['adres'] = get_field('adres', 'options'); |
||||
$context['social'] = get_field('social', 'options'); |
||||
$context['links'] = get_field('links', 'options'); |
||||
return $context; |
||||
}); |
||||
|
||||
define('BOT_USERNAME', 'cosmopet_test_AE_bot'); |
||||
|
||||
|
||||
function getTelegramUserData() { |
||||
if (isset($_COOKIE['tg_user'])) { |
||||
$auth_data_json = urldecode($_COOKIE['tg_user']); |
||||
$auth_data = json_decode($auth_data_json, true); |
||||
return $auth_data; |
||||
} |
||||
return false; |
||||
} |
||||
/* |
||||
if ($_GET['logout']) { |
||||
setcookie('tg_user', ''); |
||||
header('Location: login.php'); |
||||
} |
||||
*/ |
||||
function tgWidget() { |
||||
$tg_user = getTelegramUserData(); |
||||
if ($tg_user !== false) { |
||||
$first_name = htmlspecialchars($tg_user['first_name']); |
||||
$last_name = htmlspecialchars($tg_user['last_name']); |
||||
if (isset($tg_user['username'])) { |
||||
$username = htmlspecialchars($tg_user['username']); |
||||
$html = "<h1>Hello, <a href=\"https://t.me/{$username}\">{$first_name} {$last_name}</a>!</h1>"; |
||||
} else { |
||||
$html = "<h1>Hello, {$first_name} {$last_name}!</h1>"; |
||||
} |
||||
if (isset($tg_user['photo_url'])) { |
||||
$photo_url = htmlspecialchars($tg_user['photo_url']); |
||||
$html .= "<img src=\"{$photo_url}\">"; |
||||
} |
||||
$html .= "<p><a href=\"?logout=1\">Log out</a></p>"; |
||||
} else { |
||||
$bot_username = BOT_USERNAME; |
||||
$html = '<script async src="https://telegram.org/js/telegram-widget.js?2" data-telegram-login="'.$bot_username.'" data-size="large" data-onauth="onTelegramAuth(user)"></script>'; |
||||
} |
||||
if(!is_user_logged_in()) { |
||||
echo $html; |
||||
} |
||||
} |
||||
|
||||
add_action( 'wp_ajax_ontelegramauth', 'onTelegramAuth' ); |
||||
add_action( 'wp_ajax_nopriv_ontelegramauth', 'onTelegramAuth' ); |
||||
|
||||
function onTelegramAuth(){ |
||||
$tg_id = $_POST['userid']; |
||||
$tg_username = $_POST['username']; |
||||
$user = get_users( |
||||
array( |
||||
'meta_key' => 'tg_account', |
||||
'meta_value' => $tg_id |
||||
) |
||||
); |
||||
// $user = get_users( |
||||
// array( |
||||
// 'meta_key' => 'tg_username', |
||||
// 'meta_value' => $tg_username |
||||
// ) |
||||
// ); |
||||
|
||||
// Генерация пароля |
||||
$alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@#!()'; |
||||
$pass = array(); |
||||
$alphaLength = strlen($alphabet) - 1; |
||||
for ($i = 0; $i < 12; $i++) { |
||||
$n = rand(0, $alphaLength); |
||||
$pass[] = $alphabet[$n]; |
||||
} |
||||
$pass = implode($pass); |
||||
|
||||
if($user) { |
||||
$user_login = $user[0]->data->user_login; |
||||
$user_id = get_user_by( 'login', $user_login )->ID; |
||||
wp_set_password( $pass, get_user_by( 'login', $user_login )->ID ); |
||||
wp_signon( |
||||
array( |
||||
'user_login' => $user_login, |
||||
'user_password' => $pass, |
||||
'remember' => 'on', |
||||
) |
||||
); |
||||
} else { |
||||
$user_id = wp_create_user( $tg_username, $pass, ''); |
||||
add_user_meta( $user_id, 'tg_account', $tg_id); |
||||
add_user_meta( $user_id, 'tg_username', $tg_username); |
||||
wp_update_user( [ |
||||
'ID' => $user_id, |
||||
'first_name' => $_POST['fname'], |
||||
'last_name' => $_POST['lname'] |
||||
] ); |
||||
wp_set_auth_cookie( $user_id, true ); |
||||
} |
||||
|
||||
} |
||||
|
||||
add_action( 'wp_ajax_linktelegram', 'linkTelegram' ); |
||||
add_action( 'wp_ajax_nopriv_linktelegram', 'linkTelegram' ); |
||||
|
||||
function linkTelegram(){ |
||||
$tg_id = $_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' => $_POST['fname'], |
||||
'last_name' => $_POST['lname'] |
||||
] ); |
||||
} |
||||
|
||||
add_action( 'wp_ajax_email_link', 'emailLink' ); |
||||
add_action( 'wp_ajax_nopriv_email_link', 'emailLink' ); |
||||
function emailLink(){ |
||||
|
||||
$email = $_POST['email']; |
||||
$user_id = get_current_user_id(); |
||||
|
||||
if(email_exists($email)){ |
||||
header("Content-Type: application/json"); |
||||
echo json_encode(array( |
||||
'error' => esc_html__( 'Email is already registered', 'woodmart' ) |
||||
)); |
||||
exit(); |
||||
} else { |
||||
wp_update_user( [ |
||||
'ID' => $user_id, |
||||
'user_email' => $email |
||||
] ); |
||||
} |
||||
|
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
// Добавляем колонку Telegram в список пользователей |
||||
add_filter('manage_users_columns', 'add_tg_account_column'); |
||||
function add_tg_account_column($columns) { |
||||
$columns['tg_username'] = 'Telegram'; |
||||
return $columns; |
||||
} |
||||
|
||||
// Заполняем колонку данными |
||||
add_filter('manage_users_custom_column', 'add_tg_account_column_content', 10, 3); |
||||
function add_tg_account_column_content($value, $column_name, $user_id) { |
||||
if ('tg_username' == $column_name) { |
||||
$tg_account = get_user_meta($user_id, 'tg_username', true); |
||||
if ($tg_account) { |
||||
return '<a href="https://t.me/"' . esc_attr($tg_account) . '" target="_blank">@' . esc_html($tg_account) . '</a>'; |
||||
} |
||||
return '<span style="color:#ccc;">не указан</span>'; |
||||
} |
||||
return $value; |
||||
} |
||||
|
||||
// Делаем колонку сортируемой |
||||
add_filter('manage_users_sortable_columns', 'make_tg_account_column_sortable'); |
||||
function make_tg_account_column_sortable($columns) { |
||||
$columns['tg_username'] = 'tg_username'; |
||||
return $columns; |
||||
} |
||||
|
||||
// Обрабатываем сортировку |
||||
add_action('pre_get_users', 'handle_tg_account_sorting'); |
||||
function handle_tg_account_sorting($query) { |
||||
if (!is_admin() || !$query->is_main_query()) { |
||||
return; |
||||
} |
||||
|
||||
if ('tg_username' === $query->get('orderby')) { |
||||
$query->set('meta_key', 'tg_username'); |
||||
$query->set('orderby', 'meta_value'); |
||||
} |
||||
} |
||||
|
||||
<<<<<<< Updated upstream |
||||
<?php |
||||
|
||||
|
||||
add_filter('timber/context', function($context) { |
||||
$context['email_list'] = get_field('email_list', 'options'); |
||||
$context['adres'] = get_field('adres', 'options'); |
||||
$context['social'] = get_field('social', 'options'); |
||||
$context['links'] = get_field('links', 'options'); |
||||
return $context; |
||||
}); |
||||
|
||||
define('BOT_USERNAME', 'cosmopet_test_AE_bot'); |
||||
|
||||
|
||||
function getTelegramUserData() { |
||||
if (isset($_COOKIE['tg_user'])) { |
||||
$auth_data_json = urldecode($_COOKIE['tg_user']); |
||||
$auth_data = json_decode($auth_data_json, true); |
||||
return $auth_data; |
||||
} |
||||
return false; |
||||
} |
||||
/* |
||||
if ($_GET['logout']) { |
||||
setcookie('tg_user', ''); |
||||
header('Location: login.php'); |
||||
} |
||||
*/ |
||||
function tgWidget() { |
||||
$tg_user = getTelegramUserData(); |
||||
if ($tg_user !== false) { |
||||
$first_name = htmlspecialchars($tg_user['first_name']); |
||||
$last_name = htmlspecialchars($tg_user['last_name']); |
||||
if (isset($tg_user['username'])) { |
||||
$username = htmlspecialchars($tg_user['username']); |
||||
$html = "<h1>Hello, <a href=\"https://t.me/{$username}\">{$first_name} {$last_name}</a>!</h1>"; |
||||
} else { |
||||
$html = "<h1>Hello, {$first_name} {$last_name}!</h1>"; |
||||
} |
||||
if (isset($tg_user['photo_url'])) { |
||||
$photo_url = htmlspecialchars($tg_user['photo_url']); |
||||
$html .= "<img src=\"{$photo_url}\">"; |
||||
} |
||||
$html .= "<p><a href=\"?logout=1\">Log out</a></p>"; |
||||
} else { |
||||
$bot_username = BOT_USERNAME; |
||||
$html = '<script async src="https://telegram.org/js/telegram-widget.js?2" data-telegram-login="'.$bot_username.'" data-size="large" data-onauth="onTelegramAuth(user)"></script>'; |
||||
} |
||||
if(!is_user_logged_in()) { |
||||
echo $html; |
||||
} |
||||
} |
||||
|
||||
add_action( 'wp_ajax_ontelegramauth', 'onTelegramAuth' ); |
||||
add_action( 'wp_ajax_nopriv_ontelegramauth', 'onTelegramAuth' ); |
||||
|
||||
function onTelegramAuth(){ |
||||
$tg_id = $_POST['userid']; |
||||
$tg_username = $_POST['username']; |
||||
$user = get_users( |
||||
array( |
||||
'meta_key' => 'tg_account', |
||||
'meta_value' => $tg_id |
||||
) |
||||
); |
||||
// $user = get_users( |
||||
// array( |
||||
// 'meta_key' => 'tg_username', |
||||
// 'meta_value' => $tg_username |
||||
// ) |
||||
// ); |
||||
|
||||
// Генерация пароля |
||||
$alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@#!()'; |
||||
$pass = array(); |
||||
$alphaLength = strlen($alphabet) - 1; |
||||
for ($i = 0; $i < 12; $i++) { |
||||
$n = rand(0, $alphaLength); |
||||
$pass[] = $alphabet[$n]; |
||||
} |
||||
$pass = implode($pass); |
||||
|
||||
if($user) { |
||||
$user_login = $user[0]->data->user_login; |
||||
$user_id = get_user_by( 'login', $user_login )->ID; |
||||
wp_set_password( $pass, get_user_by( 'login', $user_login )->ID ); |
||||
wp_signon( |
||||
array( |
||||
'user_login' => $user_login, |
||||
'user_password' => $pass, |
||||
'remember' => 'on', |
||||
) |
||||
); |
||||
} else { |
||||
$user_id = wp_create_user( $tg_username, $pass, ''); |
||||
add_user_meta( $user_id, 'tg_account', $tg_id); |
||||
add_user_meta( $user_id, 'tg_username', $tg_username); |
||||
wp_update_user( [ |
||||
'ID' => $user_id, |
||||
'first_name' => $_POST['fname'], |
||||
'last_name' => $_POST['lname'] |
||||
] ); |
||||
wp_set_auth_cookie( $user_id, true ); |
||||
} |
||||
|
||||
} |
||||
|
||||
add_action( 'wp_ajax_linktelegram', 'linkTelegram' ); |
||||
add_action( 'wp_ajax_nopriv_linktelegram', 'linkTelegram' ); |
||||
|
||||
function linkTelegram(){ |
||||
$tg_id = $_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' => $_POST['fname'], |
||||
'last_name' => $_POST['lname'] |
||||
] ); |
||||
} |
||||
|
||||
add_action( 'wp_ajax_email_link', 'emailLink' ); |
||||
add_action( 'wp_ajax_nopriv_email_link', 'emailLink' ); |
||||
function emailLink(){ |
||||
|
||||
$email = $_POST['email']; |
||||
$user_id = get_current_user_id(); |
||||
|
||||
if(email_exists($email)){ |
||||
header("Content-Type: application/json"); |
||||
echo json_encode(array( |
||||
'error' => esc_html__( 'Email is already registered', 'woodmart' ) |
||||
)); |
||||
exit(); |
||||
} else { |
||||
wp_update_user( [ |
||||
'ID' => $user_id, |
||||
'user_email' => $email |
||||
] ); |
||||
} |
||||
|
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
// Добавляем колонку Telegram в список пользователей |
||||
add_filter('manage_users_columns', 'add_tg_account_column'); |
||||
function add_tg_account_column($columns) { |
||||
$columns['tg_username'] = 'Telegram'; |
||||
return $columns; |
||||
} |
||||
|
||||
// Заполняем колонку данными |
||||
add_filter('manage_users_custom_column', 'add_tg_account_column_content', 10, 3); |
||||
function add_tg_account_column_content($value, $column_name, $user_id) { |
||||
if ('tg_username' == $column_name) { |
||||
$tg_account = get_user_meta($user_id, 'tg_username', true); |
||||
if ($tg_account) { |
||||
return '<a href="https://t.me/"' . esc_attr($tg_account) . '" target="_blank">@' . esc_html($tg_account) . '</a>'; |
||||
} |
||||
return '<span style="color:#ccc;">не указан</span>'; |
||||
} |
||||
return $value; |
||||
} |
||||
|
||||
// Делаем колонку сортируемой |
||||
add_filter('manage_users_sortable_columns', 'make_tg_account_column_sortable'); |
||||
function make_tg_account_column_sortable($columns) { |
||||
$columns['tg_username'] = 'tg_username'; |
||||
return $columns; |
||||
} |
||||
|
||||
// Обрабатываем сортировку |
||||
add_action('pre_get_users', 'handle_tg_account_sorting'); |
||||
function handle_tg_account_sorting($query) { |
||||
if (!is_admin() || !$query->is_main_query()) { |
||||
return; |
||||
} |
||||
|
||||
if ('tg_username' === $query->get('orderby')) { |
||||
$query->set('meta_key', 'tg_username'); |
||||
$query->set('orderby', 'meta_value'); |
||||
} |
||||
} |
||||
|
||||
?> |
Loading…
Reference in new issue