* @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();