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.
 
 
 
 
cosmopet-architecture/wp-content/themes/cosmopet/modules/footer/module-controller.php

189 lines
5.7 KiB

<<<<<<< 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');
}
}
?>