Linux puskom-ProLiant-DL385-Gen10 5.4.0-150-generic #167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023 x86_64
/
home
/
puskom
/
mastur
/
backwpup
/
inc
/
//home/puskom/mastur/backwpup/inc/class-destination-folder-downloader.php
<?php /** * Folder Downloader. */ /** * Class BackWPup_Destination_Folder_Downloader. * * @since 3.6.0 */ final class BackWPup_Destination_Folder_Downloader implements BackWPup_Destination_Downloader_Interface { public const OPTION_BACKUP_DIR = 'backupdir'; /** * @var \BackWpUp_Destination_Downloader_Data */ private $data; /** * @var resource */ private $source_file_handler; /** * @var resource */ private $local_file_handler; /** * BackWPup_Destination_Folder_Downloader constructor. */ public function __construct(BackWpUp_Destination_Downloader_Data $data) { $this->data = $data; $this->source_file_handler(); $this->local_file_handler(); } /** * Clean up things. */ public function __destruct() { fclose($this->local_file_handler); fclose($this->source_file_handler); } /** * {@inheritdoc} */ public function download_chunk($start_byte, $end_byte) { if (ftell($this->source_file_handler) !== $start_byte) { fseek($this->source_file_handler, $start_byte); } $data = fread($this->source_file_handler, $end_byte - $start_byte + 1); if (!$data) { throw new Exception(__('Could not read data from source file.', 'backwpup')); } $bytes = (int) fwrite($this->local_file_handler, $data); if ($bytes === 0) { throw new Exception(__('Could not write data into target file.', 'backwpup')); } } /** * {@inheritdoc} */ public function calculate_size() { return filesize($this->source_backup_file()); } /** * Retrieve the file handler for the source file. */ private function source_file_handler() { if (is_resource($this->source_file_handler)) { return; } $file = $this->source_backup_file(); $this->source_file_handler = @fopen($file, 'rb'); if (!is_resource($this->source_file_handler)) { throw new \RuntimeException(__('File could not be opened for reading.', 'backwpup')); } } /** * @return string */ private function backup_dir() { $backup_dir = esc_attr(BackWPup_Option::get($this->data->job_id(), self::OPTION_BACKUP_DIR)); $backup_dir = trailingslashit(BackWPup_File::get_absolute_path($backup_dir)); return (string) $backup_dir; } /** * @return string */ private function source_backup_file() { return (string) realpath( BackWPup_Sanitize_Path::sanitize_path( $this->backup_dir() . basename($this->data->source_file_path()) ) ); } /** * Retrieve the file handler for the local file. */ private function local_file_handler() { if (is_resource($this->local_file_handler)) { return; } try { $this->local_file_handler = @fopen($this->data->local_file_path(), 'wb'); } catch (\RuntimeException $exc) { throw new \RuntimeException(__('File could not be opened for writing.', 'backwpup')); } catch (\LogicException $exc) { throw new \RuntimeException(sprintf( // translators: $1 is the path of the local file where the backup will be stored __('%s is a directory not a file.', 'backwpup'), $this->data->local_file_path() )); } } }