Example #1
0
 /**
  * Merge files
  *
  * @access public
  * @param string $filename
  * @param array $files
  * @return File $file
  */
 public static function merge($filename, $files = [])
 {
     if (Config::$store_dir === null and Config::$file_dir === null) {
         throw new \Exception('Set a path first in "Config::$file_dir"');
     }
     $command = 'cat ';
     foreach ($files as $file) {
         $command .= $file->get_path() . ' ';
     }
     $filename = Util::sanitize_filename($filename);
     $command .= ' > ' . \Skeleton\Core\Config::$tmp_dir . $filename;
     exec($command);
     $merged_file = new self();
     $merged_file->name = $filename;
     $merged_file->md5sum = hash('md5', file_get_contents(\Skeleton\Core\Config::$tmp_dir . $filename));
     $merged_file->save();
     $path = $merged_file->get_path();
     $pathinfo = pathinfo($path);
     if (!is_dir($pathinfo['dirname'])) {
         mkdir($pathinfo['dirname'], 0755, true);
     }
     rename(\Skeleton\Core\Config::$tmp_dir . $filename, $path);
     $merged_file->mime_type = Util::detect_mime_type($path);
     $merged_file->size = filesize($path);
     $merged_file->save();
     return self::get_by_id($merged_file->id);
 }