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

if (
$users_perms['manage_update'] != 1) {
    
RedirectToPage('/');
    exit();
}

function 
getUpdateInfoFromZip($zipPath) {
    if (!
file_exists($zipPath)) {
        return 
null;
    }

    
$zip = new ZipArchive;

    if (
$zip->open($zipPath) === TRUE) {

        
// Путь к version.php внутри архива
        
$versionFile 'upload/core/version.php';

        
// Проверяем наличие файла
        
$index $zip->locateName($versionFileZipArchive::FL_NOCASE);
        if (
$index === false) {
            
$zip->close();
            return 
null;
        }

        
// Читаем содержимое файла
        
$content $zip->getFromIndex($index);
        
$zip->close();

        if (!
$content) {
            return 
null;
        }

        
// Изолированное выполнение version.php
        
$version null;

        try {
            
$tmp tmpfile();
            
fwrite($tmp$content);
            
$meta stream_get_meta_data($tmp);
            
$tmpPath $meta['uri'];

            
// version.php создаёт переменную $version
            
include $tmpPath;

            
fclose($tmp);
        } catch (
Throwable $e) {
            return 
null;
        }

        return 
$version ?? null;
    }

    return 
null;
}

$dir $_SERVER['DOCUMENT_ROOT'] . '/install/update/up/';
$files glob($dir '*.zip');

$zipPath null;
$fileName null;
$info null;

if (!empty(
$files)) {
    
$zipPath $files[0];
    
$fileName basename($zipPath);
    
$info getUpdateInfoFromZip($zipPath);
}

echo 
'<div class="home_us tematic">';

$breadcrumbsArray = [
    [
'/''Главная'],
    [
'/admin''Админ панель'],
    [
'#''Обновление']
];

$breadcrumbs generateBreadcrumbs($breadcrumbsArray);

echo 
$breadcrumbs['html'];
echo 
'<script type="application/ld+json">' $breadcrumbs['json_ld'] . '</script>';

echo 
'<div class="head_box section-header">
<div class="box_title">Обновление</div>
</div>'
;

echo 
'<div class="side_in_count">';

include (
$_SERVER['DOCUMENT_ROOT'] . '/core/elements/sidebars/panel.php');

echo 
'<div class="info_box arb">';

echo 
'<div class="node-info_box adm">';

if (empty(
$files)) {
    
// Пакета нет → загрузить
    
echo '<a class="btn button" data-bs-toggle="modal" data-bs-target="#upload-update" style="display: flex;">Загрузить пакет</a>';

} elseif (
$info) {
    
// Пакет есть и корректный → перейти к обновлению
    
echo '<a class="btn button" href="' homeLink() . '/install/update" style="display: flex;">Перейти к обновлению</a>';
}

echo 
'</div>';


echo 
'<div class="modal fade" id="del-update" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Удаление пакета</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal"><i class="fas fa-xmark"></i></button>
      </div>
      <div class="modal-body">
        <span>Вы уверены, что хотите удалить пакет <span id="del-update-text"></span>?</span>
      </div>
      <div class="modal-footer">
        <a id="del-update-btn" class="btn button" href="#" style="float: right; margin-left: 5px;">Удалить</a>
      </div>
    </div>
  </div>
</div>

<div class="modal fade" id="upload-update" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog">
    <form class="modal-content" action="' 
homeLink() . '/admin/update/upload" method="post" enctype="multipart/form-data">
      <div class="modal-header">
        <h5 class="modal-title">Загрузка пакета</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal"><i class="fas fa-xmark"></i></button>
      </div>
      <div class="modal-body">
        <input type="file" name="update" accept=".zip" required>
      </div>
      <div class="modal-footer">
        <input type="submit" value="Загрузить" style="float: right; margin-left: 5px;">
      </div>
    </form>
  </div>
</div>
'
;

if (!empty(
$files)) {

    if (!
$info) {
        echo 
'
        <div class="plug_error">
            <div class="err_plugin">Ошибка: version.php пакета ' 
chars($fileName) . ' не найден или повреждён</div>
            <a class="but_link-plug delete" data-bs-toggle="modal" data-bs-target="#del-update"
               data-name="' 
chars($fileName) . '">
                <i class="fas fa-trash"></i>
            </a>
        </div>'
;
    } else {

        echo 
'<div class="user_info-work-box box-admin">
                <div class="user_in_ava box-adm">
                    <div class="flex_adm-users">'
;

        echo 
'<div class="user_name_work box">
                <div class="flex_st-name_plugin">
                    <div class="name_plugin">v' 
chars($info['version']) . '</div>
                </div>'
;

        echo 
'<div class="desc_plugin">' chars($info['stade']) . ' - ' chars($info['patch']) . '</div>';

        echo 
'</div></div>';

        echo 
'<div class="flex-link-adm">';

        echo 
'<a class="but_link-plug delete" data-bs-toggle="modal" data-bs-target="#del-update"
                 data-name="' 
chars($fileName) . '" data-id="' chars($fileName) . '">
                <i class="fas fa-trash"></i>
              </a>'
;

        echo 
'<a class="but_link-plug edit" href="' homeLink() . '/admin/update/export-update/' chars($fileName) . '">
                <i class="fas fa-download"></i>
              </a>'
;

        echo 
'</div></div></div>';
    }

} else {
    echo 
'<div class="plug_error">Пакет обновления отсутствует</div>';
}

echo 
'</div>';
echo 
'</div>';
echo 
'</div>';

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const modal = document.getElementById('del-update');

    modal.addEventListener('show.bs.modal', function (event) {
        const button = event.relatedTarget;

        const id = button.getAttribute('data-id');
        const name = button.getAttribute('data-name');

        document.getElementById('del-update-text').innerHTML =
            "" + name + "";

        document.getElementById('del-update-btn').href =
            "<?= homeLink() ?>/admin/update/delete?id=" + id;
    });
});
</script>
Онлайн: 1
Реклама