90 lines
2.2 KiB
PHP
90 lines
2.2 KiB
PHP
![]() |
<?php
|
||
|
/**
|
||
|
* Zip Archive
|
||
|
*
|
||
|
* Creates a zip archive of the site
|
||
|
*
|
||
|
* @package GetSimple
|
||
|
* @subpackage Backups
|
||
|
*/
|
||
|
|
||
|
// Setup inclusions
|
||
|
$load['plugin'] = true;
|
||
|
|
||
|
|
||
|
// Include common.php
|
||
|
include('inc/common.php');
|
||
|
login_cookie_check();
|
||
|
|
||
|
// check validity of request
|
||
|
if ($_REQUEST['s'] === $SESSIONHASH) {
|
||
|
|
||
|
|
||
|
# fix from hameau
|
||
|
//$timestamp = date('Y-m-d-Hi');
|
||
|
$timestamp = gmdate('Y-m-d-Hi_s');
|
||
|
$zipcreated = true;
|
||
|
|
||
|
set_time_limit (0);
|
||
|
ini_set("memory_limit","800M");
|
||
|
|
||
|
$saved_zip_file = GSBACKUPSPATH.'zip/'. $timestamp .'_archive.zip';
|
||
|
|
||
|
$sourcePath = str_replace('/', DIRECTORY_SEPARATOR, GSROOTPATH);
|
||
|
if (!class_exists ( 'ZipArchive' , false)) {
|
||
|
include('inc/ZipArchive.php');
|
||
|
}
|
||
|
if (class_exists ( 'ZipArchive' , false)) {
|
||
|
|
||
|
$archiv = new ZipArchive();
|
||
|
$archiv->open($saved_zip_file, ZipArchive::CREATE);
|
||
|
$dirIter = new RecursiveDirectoryIterator($sourcePath);
|
||
|
$iter = new RecursiveIteratorIterator($dirIter);
|
||
|
|
||
|
foreach($iter as $element) {
|
||
|
/* @var $element SplFileInfo */
|
||
|
$dir = str_replace($sourcePath, '', $element->getPath()) . DIRECTORY_SEPARATOR;
|
||
|
if ( strstr($dir, $GSADMIN.DIRECTORY_SEPARATOR ) || strstr($dir, 'backups'.DIRECTORY_SEPARATOR )) {
|
||
|
#don't archive these folders
|
||
|
} else if ($element->getFilename() != '..') { // FIX: if added to ignore parent directories
|
||
|
if ($element->isDir()) {
|
||
|
$archiv->addEmptyDir($dir);
|
||
|
} elseif ($element->isFile()) {
|
||
|
$file = $element->getPath() .
|
||
|
DIRECTORY_SEPARATOR . $element->getFilename();
|
||
|
$fileInArchiv = $dir . $element->getFilename();
|
||
|
// add file to archive
|
||
|
$archiv->addFile($file, $fileInArchiv);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$archiv->addFile(GSROOTPATH.'.htaccess', '.htaccess' );
|
||
|
$archiv->addFile(GSROOTPATH.'gsconfig.php', 'gsconfig.php' );
|
||
|
|
||
|
// save and close
|
||
|
$status = $archiv->close();
|
||
|
if (!$status) {
|
||
|
$zipcreated = false;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
$zipcreated = false;
|
||
|
}
|
||
|
if (!$zipcreated) {
|
||
|
$zipcreated = archive_targz();
|
||
|
}
|
||
|
if (!$zipcreated) {
|
||
|
redirect('archive.php?nozip');
|
||
|
}
|
||
|
|
||
|
// redirect back to archive page with a success
|
||
|
redirect('archive.php?done');
|
||
|
|
||
|
} else {
|
||
|
# page accessed directly - send back to archives page
|
||
|
redirect('archive.php');
|
||
|
}
|
||
|
|
||
|
exit;
|