Seditio Source
Root |
./othercms/GetSimpleCMS-3.3.16/admin/zip.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,
                         
RecursiveIteratorIterator::LEAVES_ONLY,
                       
RecursiveIteratorIterator::CATCH_GET_CHILD
                   
);
       
        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;