90 lines
2.6 KiB
PHP
90 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* The index view file of backup module of ZenTaoPMS.
|
|
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
|
|
* @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
|
|
* @author dingguodong <dingguodong@easycorp.ltd>
|
|
* @package backup
|
|
* @link https://www.zentao.net
|
|
*/
|
|
declare(strict_types=1);
|
|
namespace zin;
|
|
|
|
featureBar
|
|
(
|
|
li
|
|
(
|
|
set::class('nav-item'),
|
|
a
|
|
(
|
|
set('data-app', $app->tab),
|
|
$lang->backup->history
|
|
)
|
|
),
|
|
set::current('all')
|
|
);
|
|
|
|
/* Toolbar. */
|
|
$settingLink = $this->createLink('backup', 'setting');
|
|
$backupLink = $this->createLink('backup', 'backup', "reload=yes");
|
|
|
|
if(common::hasPriv('backup', 'setting') and common::hasPriv('backup', 'backup'))
|
|
{
|
|
toolbar
|
|
(
|
|
item(set
|
|
([
|
|
'text' => $lang->backup->setting,
|
|
'icon' => 'cog',
|
|
'class'=> 'iframe btn primary',
|
|
'url' => $settingLink
|
|
])),
|
|
item(set
|
|
([
|
|
'text' => $lang->backup->backup,
|
|
'icon' => 'copy',
|
|
'class'=> 'btn primary',
|
|
'url' => $backupLink
|
|
])),
|
|
);
|
|
}
|
|
|
|
/* DataTable. */
|
|
$cols = $this->loadModel('datatable')->getSetting('backup');
|
|
$data = initTableData($backups, $cols, $this->backup);
|
|
|
|
foreach($data as $key => $row)
|
|
{
|
|
$data[$key]->time = date(DT_DATETIME1, filemtime(array_keys($row->files)[0]));
|
|
$data[$key]->file = dirname(array_keys($row->files)[0]) . DS . '{' . implode(',', array_map('basename', array_keys($row->files))) . '}';
|
|
$data[$key]->count = count($row->files);
|
|
$data[$key]->allCount = array_sum(array_column($row->files, 'allCount'));
|
|
$data[$key]->size = helper::formatKB(array_sum(array_column($row->files, 'size')));
|
|
|
|
$isOk = $data[$key]->isOK = true;
|
|
$data[$key]->isPHP = false;
|
|
foreach($row->files as $name => $file)
|
|
{
|
|
if(str_ends_with($name, '.php')) $data[$key]->isPHP = true;
|
|
if($file['allCount'] != $file['count'])
|
|
{
|
|
$isOk = $data[$key]->isOK = false;
|
|
break;
|
|
}
|
|
}
|
|
$data[$key]->status = $isOk ? $lang->backup->statusList['success'] : $lang->backup->statusList['fail'];
|
|
if(!$data[$key]->isPHP) $data[$key]->actions[0]['disabled'] = true;
|
|
if(!$data[$key]->isOK) $data[$key]->actions[1]['disabled'] = true;
|
|
}
|
|
|
|
dtable
|
|
(
|
|
set::customCols(false),
|
|
set::cols($cols),
|
|
set::data($data),
|
|
set::footPager(usePager())
|
|
);
|
|
|
|
render();
|
|
|