dir = $dir; } protected function _readFiles($gz = false) { $mapped = array(); $glob = "$this->dir*.[Ss][Qq][Ll]"; if ($gz) { $suffix = '.gz'; # lowercase only because of core $glob .= $suffix; $suffix_cut = -3; } if ($files = glob($glob)) { $from = strlen($this->dir); foreach ($files as $file) { if ($from) { $file = substr($file, $from); # do not expose server paths in output } if ($gz) { $mapped[substr($file, 0, $suffix_cut)] = $file; } else { $mapped[$file] = $file; } } } return $mapped; } function importServerPath() { static $posted = null; $files = $this->_readFiles(); if (extension_loaded('zlib')) { $files += $this->_readFiles(true); # core prioritises files without .gz } if (count($files) > 1) { ksort($files); } if ($posted !== null || !isset($_POST['webfile'])) { # use existing translation strings echo "
" . lang('From server') . "
"; echo lang('Webserver file %s', ''); echo ' '; echo "
\n"; $posted = null; return false; # skip core UI } if ( empty($_POST['webfilename']) || !is_string($_POST['webfilename']) || !array_key_exists($_POST['webfilename'], $files) ) { $posted = ''; return 'SELECTED_FILE_DOES_NOT_EXIST'; # can't return empty string because of core file_exists() check } $posted = $_POST['webfilename']; return $this->dir . $posted; } }