Вход Регистрация
Файл: upload/pages/profile/profile.php
Строк: 167
<?php
require_once ($_SERVER['DOCUMENT_ROOT'] . '/core/core.php');

$id abs((int)($_GET['id'] ?? 0));
$ank FetchAssoc(dbquery("SELECT * FROM `users` WHERE `id` = ?", [$id]));

if (empty(
$ank['id'])) {
    
header("HTTP/1.0 404 Not Found");
    include (
$_SERVER['DOCUMENT_ROOT'] . '/pages/err_pages/404.php'); 
    exit();
}

// Рейтинг
$rating_q dbquery("SELECT * FROM `rating` WHERE `worker` = ? ORDER BY `id` DESC", [$id]);
$count_rt DataResult(dbquery("SELECT COUNT(*) AS total_count FROM `rating` WHERE `worker` = ?", [$id]));
$user_group_profile FetchAssoc(dbquery("SELECT * FROM `admin_perms` WHERE `id` = ?", [$ank['level_us']]));

// Кол-во ворков
$count_works DataResult(dbquery("SELECT COUNT(*) AS total_count FROM `works` WHERE `user_work` = ?", [$id]));

// Бан
$us_ban FetchAssoc(dbquery("SELECT * FROM `users_banned` WHERE `us` = ?", [$id]));

if (
$us_ban) {
    if (
$us_ban['hours'] != -1) {
        
$end_ban vremja($us_ban['time_ban'] + ($us_ban['hours'] * 3600));
    } else {
        
$end_ban 'Никогда';
    }
    
    
$reason_ban $us_ban['reas'] ?: 'Не указана';
}

// Ворки (фильтрация)
$all_raw dbquery("SELECT * FROM `works` WHERE `user_work` = ? ORDER BY `id` DESC",  [$id]);
$all_filtered = [];

while (
$row FetchAssoc($all_raw)) {

    
$hashOne CryptorHash('1'$row['salt']);

    if (
$us_ban) {
        continue;
    }

    if (
$row['k_off'] === $hashOne && $row['user_work'] != $user['id']) {
        continue;
    }

    if (
$row['del'] === $hashOne) {
        continue;
    }

    
$all_filtered[] = $row;
}

$max_works 32;
$k_post count($all_filtered);
$works_filtered array_slice($all_filtered0$max_works);

// Рейтинг пользователя (для звёзд)
$rtg_us FetchAssoc(dbquery("SELECT * FROM `rating` WHERE `worker` = ?", [$id]));

$breadcrumbs generateBreadcrumbs([
    [
'/''Главная'],
    [
'#''Профиль ' $ank['login']]
]);

// Бан
$ban null;
if (
$us_ban && $us_ban['us'] == $id) {
    
$ban = [
        
'reason' => $reason_ban,
        
'start'  => vremja($us_ban['time_ban']),
        
'end'    => $end_ban
    
];
}

// Услуги
$works_html = [];

foreach (
$works_filtered as $work) {

    
// Передаём данные в компонент
    
$GLOBALS['work'] = $work;
    
$GLOBALS['user'] = $user;

    
// Подключаем компонент, который создаёт $work_item
    
require $_SERVER['DOCUMENT_ROOT'] . '/core/elements/work-box.php';

    
// Добавляем HTML в массив
    
$works_html[] = $work_item;
}


// Отзывы
$limit_comments 20;
$comments_html = [];
$rating_first dbquery("SELECT * FROM rating WHERE worker = ? ORDER BY id DESC LIMIT ?", [$id$limit_comments]);

while (
$rt FetchAssoc($rating_first)) {
    
$ank_rating FetchAssoc(dbquery("SELECT * FROM `users` WHERE `id` = ?", [$rt['us']]));

    include 
$_SERVER['DOCUMENT_ROOT'] . '/core/elements/comment-box.php';
    
$comments_html[] = $comment_box;
}

$page_html $view->render('pages/profile/profile.html', [
    
'breadcrumbs_html' => $breadcrumbs['html'],
    
'breadcrumbs_json' => $breadcrumbs['json_ld'],

    
'home' => homeLink(),

    
'user' => [
        
'id' => $ank['id'],
        
'login' => chars($ank['login']),
        
'avatar' => GetAvatar($ank['avatar']),
        
'background' => GetBackground($ank['background']),
        
'group_name' => $user_group_profile['name_perm'],
        
'group_style' => $user_group_profile['design_prefix'],
        
'header' => GetHead($ank['header']),
        
'description' => nl2br(chars($ank['description'])),
        
'rating_num' => rating_num_worker($id),
        
'rating_stars' => rating_star_worker($rtg_us['worker']),
        
'online' => onlineDot($ank['id'], 'profile-nick-online')
    ],

    
'is_owner' => ($user && $user['id'] == $id),
    
'is_auth' => isset($user['id']),

    
'ban' => $ban,

    
'works' => $works_html,
    
'works_limit' => $max_works,
    
'show_more_works' => ($k_post $max_works),

    
'comments' => $comments_html,
    
'comments_limit' => $limit_comments,
    
'csrf' => $_SESSION['csrf_token'],
    
'show_more_comments' => ($count_rt $limit_comments)
]);

require_once (
$_SERVER['DOCUMENT_ROOT'] . '/layout.php');
?>

<script>
$(document).on('click', '#load-more-works', function() {

    let btn = $(this);
    let offset = parseInt(btn.data('offset'));
    let id = btn.data('id');

    $.ajax({
        url: '/core/ajax/profile/load_more_works.php',
        type: 'POST',
        dataType: 'json',
        data: { id: id, offset: offset },
        success: function(res) {

            $('.works-list-profile').append(res.html);

            if (!res.show_more) {
                btn.remove();
            } else {
                btn.data('offset', offset + 32);
            }
        }
    });
});

$(document).on('click', '#load-more-comments', function() {

    let btn = $(this);
    let offset = parseInt(btn.data('offset'));
    let id = btn.data('id');

    $.ajax({
        url: '/core/ajax/profile/load_more_comments.php',
        type: 'POST',
        dataType: 'json',
        data: { id: id, offset: offset },
        success: function(res) {

            $('.comments-container').append(res.html);

            if (!res.show_more) {
                btn.remove();
            } else {
                btn.data('offset', offset + 20);
            }
        }
    });
});
</script>

<script>
document.addEventListener("submit", function(e) {
    const form = e.target.closest(".up-all-form");
    if (!form) return;

    const btn = form.querySelector(".up-all-btn");
    btn.disabled = true;
    btn.innerText = "Поднимаем...";
});
</script>
Онлайн: 1
Реклама