/** * Extract all files to the given directory. * * @param $directory * @return mixed */ public function extractTo($directory) { $this->archive->openForRead(true); $result = $this->extractAllToDirectory($directory); $this->archive->close(); return $result; }
/** * {@inheritdoc} */ function saveFile(BackupFileReadableInterface $file) { $stream_uri = $this->confGet('streamuri'); if ($fp_out = fopen($stream_uri, 'w')) { $file->openForRead(); while ($data = $file->readBytes(1024 * 512)) { fwrite($fp_out, $data); } fclose($fp_out); $file->close(); } else { throw new \Exception("Cannot open the file {$stream_uri} for writing"); } }
/** * {@inheritdoc} */ function saveFile(BackupFileReadableInterface $file) { // Set some default download headers. $headers = array(array('key' => 'Content-Disposition', 'value' => 'attachment; filename="' . $file->getFullName() . '"'), array('key' => 'Cache-Control', 'value' => 'no-cache')); // Set a mime-type header. if ($mime = $file->getMeta('mimetype')) { $headers[] = array('key' => 'Content-Type', 'value' => $mime); } else { // Get the mime type for this file if possible $mime = 'application/octet-stream'; $mime = $this->plugins()->call('alterMime', $mime, array('ext' => $file->getExtLast())); $headers[] = array('key' => 'Content-Type', 'value' => $mime); } // In some circumstances, web-servers will double compress gzipped files. // This may help aleviate that issue by disabling mod-deflate. if ($file->getMeta('mimetype') == 'application/x-gzip') { if (function_exists('apache_setenv')) { apache_setenv('no-gzip', '1'); } $headers[] = array('key' => 'Content-Encoding', 'value' => 'gzip'); } if ($size = $file->getMeta('filesize')) { $headers[] = array('key' => 'Content-Length', 'value' => $size); } // Suppress the warning you get when the buffer is empty. @ob_end_clean(); if ($file->openForRead()) { foreach ($headers as $header) { // To prevent HTTP header injection, we delete new lines that are // not followed by a space or a tab. // See http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 $header['value'] = preg_replace('/\\r?\\n(?!\\t| )/', '', $header['value']); header($header['key'] . ': ' . $header['value']); } // Transfer file in 1024 byte chunks to save memory usage. while ($data = $file->readBytes(1024 * 512)) { print $data; } $file->close(); } // @TODO Throw exception. }
/** * Import to this source from the given backup file. This is the main restore * function for this source. * * @param \BackupMigrate\Core\File\BackupFileReadableInterface $file * The file to read the backup from. It will not be opened for reading * @return bool|int */ public function importFromFile(BackupFileReadableInterface $file) { $num = 0; if ($conn = $this->_getConnection()) { // Open (or rewind) the file. $file->openForRead(); // Read one line at a time and run the query. while ($line = $this->_readSQLCommand($file)) { // if (_backup_migrate_check_timeout()) { // return FALSE; // } if ($line) { // Execute the sql query from the file. $conn->query($line); $num++; } } // Close the file, we're done reading it. $file->close(); } return $num; }
/** * {@inheritdoc} */ function saveFile(BackupFileReadableInterface $file) { $out = array(); // Quick and dirty way to html format this output if ($this->confGet('format') == 'html') { print '<pre>'; } // Output the metadata if ($this->confGet('showmeta')) { print "---------------------\n"; print "Metadata: \n"; print_r($file->getMetaAll()); print "---------------------\n"; } // Output the body if ($this->confGet('showbody')) { print "---------------------\n"; print "Body: \n"; $max = $this->confGet('maxbody'); $chunk = min($max, 1024); if ($file->openForRead()) { // Transfer file in 1024 byte chunks to save memory usage. while ($max > 0 && ($data = $file->readBytes($chunk))) { print $data; $max -= $chunk; } $file->close(); } print "---------------------\n"; } // Quick and dirty way to html format this output if ($this->confGet('format') == 'html') { print '</pre>'; } exit; }
/** * BZip encode a file. * * @param \BackupMigrate\Core\File\BackupFileReadableInterface $from * @param \BackupMigrate\Core\File\BackupFileWritableInterface $to * @return bool */ protected function _bzipEncode(BackupFileReadableInterface $from, BackupFileWritableInterface $to) { $success = FALSE; if (!$success && function_exists("bzopen")) { if (($fp_out = bzopen($to->realpath(), 'w')) && $from->openForRead()) { while ($data = $from->readBytes(1024 * 512)) { bzwrite($fp_out, $data); } $success = TRUE; $from->close(); bzclose($fp_out); } } return $success; }