Esempio n. 1
0
 function infos($src, $data = false)
 {
     $ext = '.' . pathinfo($src, PATHINFO_EXTENSION);
     foreach ($this->WathArchive as $key => $val) {
         if (stripos($ext, $key) !== false) {
             $comp = $val;
         }
     }
     if ($comp == 'zip') {
         $zip = new zip();
         $zipresult = $zip->infosZip($src, $data);
         $result['Items'] = count($zipresult);
         foreach ($zipresult as $key => $val) {
             $result['UnCompSize'] += $zipresult[$key]['UnCompSize'];
         }
         $result['Size'] = filesize($src);
         $result['Ratio'] = $result['UnCompSize'] ? round(100 - $result['Size'] / $result['UnCompSize'] * 100, 1) : false;
     } elseif (strlen($comp) > 1) {
         $tar = new tar();
         if ($comp == 'bz') {
             $bzip2 = new bzip2();
             $result = $bzip2->infosBzip2($src, true);
             $src = $result['Data'];
         } elseif ($comp == 'gz') {
             $gzip = new gzip();
             $result = $gzip->infosGzip($src, true);
             $src = $result['Data'];
         }
         if ($tar->is_tar($src) || is_file($src)) {
             $tarresult = $tar->infosTar($src, false);
             $result['Items'] = count($tarresult);
             $result['UnCompSize'] = 0;
             if (empty($result['Size'])) {
                 $result['Size'] = is_file($src) ? filesize($src) : strlen($src);
             }
             foreach ($tarresult as $key => $val) {
                 $result['UnCompSize'] += $tarresult[$key]['size'];
             }
             $result['Ratio'] = $result['UnCompSize'] ? round(100 - $result['Size'] / $result['UnCompSize'] * 100, 1) : false;
         }
         if (!$data) {
             unset($result['Data']);
         }
     } else {
         return false;
     }
     return array('Items' => $result['Items'], 'UnCompSize' => $result['UnCompSize'], 'Size' => $result['Size'], 'Ratio' => $result['Ratio']);
 }