/**
  * @see Form::save()
  */
 public function save()
 {
     parent::save();
     // build session data array
     $sessionData = array();
     $sessionData['loopTimeLimit'] = $this->loopTimeLimit;
     $sessionData['isGzip'] = $this->isGzip;
     $sessionData['tableName'] = '';
     $tablecount = 0;
     $rowCount = 0;
     $sessionData['offset'] = -1;
     // get all tables
     if ($this->exportAll) {
         $this->readLoggedTables();
         $this->exportTables = $this->loggedTables;
     }
     // prepare session data
     $sessionData['limit'] = $this->limit;
     $sessionData['backupFile'] = FileUtil::getRealPath(WCF_DIR . 'acp/backup/' . $this->backupFileName);
     $sessionData['tables'] = $this->exportTables;
     // calculate total steps
     $tableCount = count($this->exportTables);
     $tables = DatabaseDumper::getTableStates($this->exportTables);
     $rowCount = 0;
     foreach ($tables as $table) {
         $rowCount += $table['Rows'];
     }
     $sessionData['tableCount'] = $tableCount;
     $sessionData['rowCount'] = $rowCount;
     $sessionData['count'] = $sessionData['remain'] = $tableCount + $rowCount;
     WCF::getSession()->register('databaseExportData', $sessionData);
     $this->saved();
     WCF::getTPL()->assign(array('pageTitle' => WCF::getLanguage()->get('wcf.acp.db.export.pageHeadline'), 'url' => 'index.php?action=DatabaseExport&packageID=' . PACKAGE_ID . SID_ARG_2ND_NOT_ENCODED, 'progress' => 0));
     WCF::getTPL()->display('worker');
     exit;
 }
 public function cronDbBackup()
 {
     require_once WCF_DIR . 'lib/system/database/DatabaseDumper.class.php';
     $allTables = WCF::getDB()->getTableNames();
     $tablesEx = DatabaseDumper::getTableStates($allTables);
     $rowCount = 0;
     $tables = array();
     foreach ($tablesEx as $table) {
         $rowCount += $table['Rows'];
         $tables[] = $table['Name'];
     }
     // comment buffer
     $limit = $rowCount + 10000;
     $offset = -1;
     $backupFile = WCF_DIR . 'acp/backup/' . date('YmdHis') . '.sql.gz';
     $file = new ZipFile($backupFile, 'wb');
     $loopTimeLimit = 3600;
     $loopStart = time();
     $tableName = '';
     // write header info
     $head = "-- WoltLab Community Framework\n";
     $head .= "-- database: " . WCF::getDB()->getDatabaseName() . "\n";
     $head .= "-- generated at " . date('r') . "\n\n";
     $head .= "-- DO NOT EDIT THIS FILE\n\n";
     $head .= "-- WCF DATABASE CHARSET\n";
     $head .= "SET NAMES  " . WCF::getDB()->getCharset() . ";\n\n";
     $file->write($head);
     @set_time_limit(3600);
     DatabaseDumper::export($file, $tables, $limit, $loopTimeLimit, $loopStart, 0, $tableName);
 }