You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
5.9 KiB
188 lines
5.9 KiB
<?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', 'cosmopetbot_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');
|
|
}
|
|
}
|
|
|
|
?>
|