function PclZip::privCalculateStoredFilename in Quiz 6.5        
                          
                  
                        Same name and namespace in other branches
- 6.6 includes/moodle/lib/pclzip/pclzip.lib.php \PclZip::privCalculateStoredFilename()
 
 
1 call to PclZip::privCalculateStoredFilename()
  - PclZip::privFileDescrExpand in includes/moodle/lib/pclzip/pclzip.lib.php
 
  
 
File
 
   - includes/moodle/lib/pclzip/pclzip.lib.php, line 2728
 
  
  Class
  
  - PclZip 
 
  
Code
function privCalculateStoredFilename(&$p_filedescr, &$p_options) {
  
  $v_result = 1;
  
  $p_filename = $p_filedescr['filename'];
  if (isset($p_options[PCLZIP_OPT_ADD_PATH])) {
    $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH];
  }
  else {
    $p_add_dir = '';
  }
  if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) {
    $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH];
  }
  else {
    $p_remove_dir = '';
  }
  if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
    $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH];
  }
  else {
    $p_remove_all_dir = 0;
  }
  
  if (isset($p_filedescr['new_full_name'])) {
    $v_stored_filename = $p_filedescr['new_full_name'];
    
  }
  else {
    
    if (isset($p_filedescr['new_short_name'])) {
      $v_path_info = pathinfo($p_filename);
      $v_dir = '';
      if ($v_path_info['dirname'] != '') {
        $v_dir = $v_path_info['dirname'] . '/';
      }
      $v_stored_filename = $v_dir . $p_filedescr['new_short_name'];
      
    }
    else {
      
      $v_stored_filename = $p_filename;
    }
    
    if ($p_remove_all_dir) {
      $v_stored_filename = basename($p_filename);
      
    }
    else {
      if ($p_remove_dir != "") {
        if (substr($p_remove_dir, -1) != '/') {
          $p_remove_dir .= "/";
        }
        if (substr($p_filename, 0, 2) == "./" || substr($p_remove_dir, 0, 2) == "./") {
          if (substr($p_filename, 0, 2) == "./" && substr($p_remove_dir, 0, 2) != "./") {
            $p_remove_dir = "./" . $p_remove_dir;
          }
          if (substr($p_filename, 0, 2) != "./" && substr($p_remove_dir, 0, 2) == "./") {
            $p_remove_dir = substr($p_remove_dir, 2);
          }
        }
        $v_compare = PclZipUtilPathInclusion($p_remove_dir, $v_stored_filename);
        if ($v_compare > 0) {
          if ($v_compare == 2) {
            $v_stored_filename = "";
            
          }
          else {
            
            $v_stored_filename = substr($v_stored_filename, strlen($p_remove_dir));
            
          }
        }
      }
    }
    
    if ($p_add_dir != "") {
      if (substr($p_add_dir, -1) == "/") {
        $v_stored_filename = $p_add_dir . $v_stored_filename;
      }
      else {
        $v_stored_filename = $p_add_dir . "/" . $v_stored_filename;
      }
      
    }
  }
  
  $v_stored_filename = PclZipUtilPathReduction($v_stored_filename);
  $p_filedescr['stored_filename'] = $v_stored_filename;
  
  
  
  return $v_result;
}