openFile($file,$f); while (! feof($f)) { fgets($f); $c++; } fclose($f); return $c; } private function openFile(string $file,&$f): \ZipArchive { $z = new \ZipArchive; if ($z->open($file,\ZipArchive::RDONLY) === TRUE) { if ($z->count() !== 1) throw new \Exception(sprintf('%s:File [%s] has more than 1 file (%d)', self::LOGKEY, $file, $z->count())); $zipfile = $z->statIndex(0, \ZipArchive::FL_UNCHANGED); Log::debug(sprintf('%s:Looking at [%s] in archive [%s]', self::LOGKEY,$zipfile['name'],$file)); $f = $z->getStream($zipfile['name']); if (! $f) throw new \Exception(sprintf('%s:Failed getting ZipArchive::stream (%s)',self::LOGKEY,$z->getStatusString())); else return $z; } else { throw new \Exception(sprintf('%s:Failed opening ZipArchive [%s] (%s)',self::LOGKEY,$file,$z->getStatusString())); } } /** * Return the columns from the file that we'll work with * * @param string $line * @return Collection */ private function getColumns(string $line): Collection { $this->_columns = collect(explode(',',strtoupper($line)))->filter(); return $this->_columns->intersect($this->columns); } /** * Get the index for the column in the file * * @param string $key * @return int|null */ private function getColumnKey(string $key): ?int { return ($x=$this->_columns->search(strtoupper($this->columns->get($key)))) !== FALSE ? $x : NULL; } private function getFileFromHost(string $key,mixed $file): string { if ($file instanceof File) { $path = sprintf('import/%s.%d',$key,$file->id); Storage::disk(config('fido.local_disk'))->put($path,Storage::get($file->rel_name)); return Storage::disk(config('fido.local_disk'))->path($path); } else { return Storage::disk(config('fido.local_disk'))->path($file); } } }