You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.8 KiB
PHP
104 lines
3.8 KiB
PHP
<?php
|
|
|
|
namespace brain\utility;
|
|
|
|
use Carbon\Carbon;
|
|
use brain\data\Settings;
|
|
|
|
class Maintenance
|
|
{
|
|
public function __construct()
|
|
{
|
|
}
|
|
|
|
public static function makeBackup()
|
|
{
|
|
//make sure back directory is there
|
|
if (!is_dir('../config/backups')) {
|
|
mkdir('../config/backups', 0755, true);
|
|
}
|
|
//creat backup zip
|
|
$zip = new \ZipArchive();
|
|
$zip->open(
|
|
'../config/backups/latest_back.zip',
|
|
\ZipArchive::CREATE | \ZipArchive::OVERWRITE
|
|
);
|
|
//gather data and path info for md pages
|
|
$pagePath = '../content/pages';
|
|
$yearPaths = glob($pagePath . '/*', GLOB_ONLYDIR);
|
|
foreach ($yearPaths as $years) {
|
|
$year = explode('/', $years);
|
|
//grap the index and save it
|
|
if (trim($year[3]) == 'start') {
|
|
$options = [
|
|
'add_path' => 'content/pages/' . $year[3] . '/',
|
|
'remove_all_path' => true,
|
|
];
|
|
$zip->addGlob($years . '/*.md', GLOB_BRACE, $options);
|
|
}
|
|
$monthsPath = glob($pagePath . '/' . $year[3] . '/*', GLOB_ONLYDIR);
|
|
foreach ($monthsPath as $months) {
|
|
$month = explode('/', $months);
|
|
//once info is collected, add md pages to zip
|
|
$options = [
|
|
'add_path' => 'content/pages/' . $year[3] . '/' . $month[4] . '/',
|
|
'remove_all_path' => true,
|
|
];
|
|
$zip->addGlob($months . '/*.md', GLOB_BRACE, $options);
|
|
}
|
|
}
|
|
|
|
//gather data and path info for blog images
|
|
$blogImagesPath = '../public/assets/images/blog';
|
|
$yearPaths = glob($blogImagesPath . '/*', GLOB_ONLYDIR);
|
|
foreach ($yearPaths as $years) {
|
|
$year = explode('/', $years);
|
|
$monthsPath = glob($blogImagesPath . '/' . $year[5] . '/*', GLOB_ONLYDIR);
|
|
foreach ($monthsPath as $months) {
|
|
$month = explode('/', $months);
|
|
//once info is collected, add images pages to zip
|
|
$options = [
|
|
'add_path' => 'public/assets/images/blog/' . $year[5] . '/' . $month[6] . '/',
|
|
'remove_all_path' => true,
|
|
];
|
|
$zip->addGlob($months . '/*.*', GLOB_BRACE, $options);
|
|
}
|
|
}
|
|
|
|
//gather data and path info for user images
|
|
$userImagesPath = '../public/assets/images/user';
|
|
$yearPaths = glob($userImagesPath . '/*', GLOB_ONLYDIR);
|
|
foreach ($yearPaths as $years) {
|
|
$year = explode('/', $years);
|
|
$monthsPath = glob($userImagesPath . '/' . $year[5] . '/*', GLOB_ONLYDIR);
|
|
foreach ($monthsPath as $months) {
|
|
$month = explode('/', $months);
|
|
//once info is collected, add images pages to zip
|
|
$options = [
|
|
'add_path' => 'public/assets/images/user/' . $year[5] . '/' . $month[6] . '/',
|
|
'remove_all_path' => true,
|
|
];
|
|
$zip->addGlob($months . '/*.*', GLOB_BRACE, $options);
|
|
}
|
|
}
|
|
|
|
//add directory for settings and save them
|
|
$zip->addEmptyDir('settings');
|
|
$zip->addFile('../config/settings.json', 'settings/settings.json');
|
|
$zip->addFile('../config/folks.json', 'settings/folks.json');
|
|
$zip->addFile('../config/tags.json', 'settings/tags.json');
|
|
//save zip file
|
|
$zip->close();
|
|
|
|
//update settings file with latest back up date
|
|
$updated = Carbon::now();
|
|
Settings::updateGlobalData(
|
|
'last_backup',
|
|
$updated->format("Y-m-d\TH:i:sP")
|
|
);
|
|
|
|
$result = ['message' => 'Backup created. THIS IS A SAFE SPACE!'];
|
|
return $result;
|
|
}
|
|
}
|