Esempio n. 1
0
 function download($id)
 {
     $dir = __DIR__ . '/../../files/courses/' . $id . '/';
     if (file_exists($dir)) {
         $data = $this->get(array('id' => $id));
         $i = 0;
         $data['name'] = preg_replace('/\\/|\\|\\?|\\%|\\*|\\:\\||\\"|\\<|\\>|\\+/', '', $data['name']);
         $filename = '/var/tmp/' . $data['name'];
         if (file_exists($filename . '.zip')) {
             while (file_exists($filename . "({$i}).zip")) {
                 $i++;
                 if ($i > 10) {
                     break;
                 }
             }
         }
         if ($i > 0) {
             $filename .= "({$i}).zip";
         } else {
             $filename .= '.zip';
         }
         Zip::packDir($dir, $filename);
         if (file_exists($filename)) {
             header('Content-Description: File Transfer');
             header('Content-Type: application/zip');
             header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
             header('Expires: 0');
             header('Cache-Control: must-revalidate');
             header('Pragma: public');
             header('Content-Length: ' . filesize($filename));
             readfile($filename);
             unlink($filename);
         }
         return true;
     }
 }