PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/eastfin/wp-content/plugins/search-and-replace/inc/Page/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //home/trave494/eastfin/wp-content/plugins/search-and-replace/inc/Page/SqlImport.php |
<?php namespace Inpsyde\SearchReplace\Page; use Inpsyde\SearchReplace\Database; /** * Class SqlImport * * @package Inpsyde\SearchReplace\inc\Page */ class SqlImport extends AbstractPage implements PageInterface { /** * @var Database\Importer */ private $dbi; /** * SqlImport constructor. * * @param Database\Importer $dbi */ public function __construct( Database\Importer $dbi ) { $this->dbi = $dbi; } /** * @return string */ public function get_page_title() { return esc_html__( 'SQL Import', 'search-and-replace' ); } /** * Return the static slug string. * * @return string */ public function get_slug() { return 'sql-import'; } /** * Callback function for menu item */ public function render() { require_once dirname(__DIR__) . '/templates/sql-import.php'; } /** * @return string */ protected function get_submit_button_title() { return esc_html__( 'Import SQL file', 'search-and-replace' ); } /** * {@inheritdoc} */ public function save() { // @ToDo: Better handling of large files // maybe like here: http://stackoverflow.com/questions/147821/loading-sql-files-from-within-php , answer by user 'gromo' $php_upload_error_code = $_FILES[ 'file_to_upload' ][ 'error' ]; if ( 0 === $php_upload_error_code ) { // get file extension $ext = strrchr( $_FILES [ 'file_to_upload' ][ 'name' ], '.' ); // parse file $tempfile = $_FILES [ 'file_to_upload' ][ 'tmp_name' ]; switch ( $ext ) { case '.sql': // @codingStandardsIgnoreLine $sql_source = file_get_contents( $tempfile ); break; case '.gz': $sql_source = $this->read_gzfile_into_string( $tempfile ); break; default: $this->add_error( esc_html__( 'The file has neither \'.gz\' nor \'.sql\' Extension. Import not possible.', 'search-and-replace' ) ); return; } // call import function $success = $this->dbi->import_sql( $sql_source ); if ( - 1 === $success ) { $this->add_error( esc_html__( 'The file does not seem to be a valid SQL file. Import not possible.', 'search-and-replace' ) ); } else { echo '<div class="updated notice is-dismissible">'; echo '<p>'; printf( // Translators: %s print the sql source. esc_html__( 'The SQL file was successfully imported. %s SQL queries were performed.', 'search-and-replace' ), esc_html($success) ); echo '</p></div>'; } } else { // show error $php_upload_errors = array( 0 => esc_html__( 'There is no error, the file uploaded with success', 'search-and-replace' ), 1 => esc_html__( 'The uploaded file exceeds the upload_max_filesize directive in php.ini', 'search-and-replace' ), 2 => esc_html__( 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form', 'search-and-replace' ), 3 => esc_html__( 'The uploaded file was only partially uploaded', 'search-and-replace' ), 4 => esc_html__( 'No file was uploaded.', 'search-and-replace' ), 6 => esc_html__( 'Missing a temporary folder.', 'search-and-replace' ), 7 => esc_html__( 'Failed to write file to disk.', 'search-and-replace' ), 8 => esc_html__( 'A PHP extension stopped the file upload.', 'search-and-replace' ), ); $this->add_error( sprintf( // Translators: %s print the error message. esc_html__( 'Upload Error: %s', 'search-and-replace' ), $php_upload_errors[ $php_upload_error_code ] ) ); } } /** * Reads a gz file into a string. * * @param string $filename String path ot file. * * @return string The file contents. */ private function read_gzfile_into_string( $filename ) { $zd = gzopen( $filename, 'r' ); $contents = gzread( $zd, 10000 ); gzclose( $zd ); return $contents; } /** * Returns a file size limit in kilobytes based on the PHP upload_max_filesize and post_max_size. * * @link http://stackoverflow.com/questions/13076480/php-get-actual-maximum-upload-size * * @return float */ public function file_upload_max_size() { $max_size = - 1; if ( $max_size < 0 ) { // Start with post_max_size. $max_size = $this->parse_size( ini_get( 'post_max_size' ) ); // If upload_max_size is less, then reduce. Except if upload_max_size is // zero, which indicates no limit. $upload_max = $this->parse_size( ini_get( 'upload_max_filesize' ) ); if ( $upload_max > 0 && $upload_max < $max_size ) { $max_size = $upload_max; } } return $max_size / 1024; } /** * @param int $size * * @return float */ private function parse_size( $size ) { // Remove the non-unit characters from the size. $unit = preg_replace( '/[^bkmgtpezy]/i', '', $size ); // Remove the non-numeric characters from the size. $size = preg_replace( '/[^0-9\.]/', '', $size ); if ( $unit ) { // Find the position of the unit in the ordered string which is the power of magnitude to multiply a kilobyte by. return round( $size * ( 1024 ** stripos( 'bkmgtpezy', $unit[0] ) ) ); } return round( $size ); } }