Fix to unzip_uploaded_file() + few code documentation improvements

1.9.x
Yannick Warnier 12 years ago
parent 9a84f1141c
commit ba45725752
  1. 13
      main/inc/lib/fileUpload.lib.php

@ -611,8 +611,7 @@ function unzip_uploaded_file($uploaded_file, $upload_path, $base_work_dir, $max_
$zip_file = new PclZip($uploaded_file['tmp_name']);
// Check the zip content (real size and file extension)
if (file_exists($uploaded_file)) {
if (file_exists($uploaded_file['tmp_name'])) {
$zip_content_array = $zip_file->listContent();
$ok_scorm = false;
$realFileSize = 0;
@ -646,7 +645,7 @@ function unzip_uploaded_file($uploaded_file, $upload_path, $base_work_dir, $max_
}
// It happens on Linux that $upload_path sometimes doesn't start with '/'
if ($upload_path[0] != '/') {
if ($upload_path[0] != '/' && substr($base_work_dir,-1,1) != '/') {
$upload_path = '/'.$upload_path;
}
@ -670,14 +669,13 @@ function unzip_uploaded_file($uploaded_file, $upload_path, $base_work_dir, $max_
// PHP method - slower...
$save_dir = getcwd();
chdir($base_work_dir.$upload_path);
$unzippingState = $zip_file->extract();
$unzippingState = $zip_file->extract();
for ($j=0; $j < count($unzippingState); $j++) {
$state = $unzippingState[$j];
// Fix relative links in html files
$extension = strrchr($state['stored_filename'], '.');
}
if ($dir = @opendir($base_work_dir.$upload_path)) {
while ($file = readdir($dir)) {
if ($file != '.' && $file != '..') {
@ -692,7 +690,10 @@ function unzip_uploaded_file($uploaded_file, $upload_path, $base_work_dir, $max_
}
closedir($dir);
}
} else {
error_log('Could not create directory '.$base_work_dir.$upload_path.' to unzip files');
}
chdir($save_dir); // Back to previous dir position
}
}

Loading…
Cancel
Save