public function run() { $connect = false; $this->addValidator(new V\ValidatorExtension('xml')); #если нет соединения то его надо установить. if (false === $connect) { $this->initFtpConnection(); $connect = true; } foreach ($this->listFiles() as $file) { #если нет соединения то его надо установить. if (false === $connect) { $this->initFtpConnection(); $connect = true; } $validate = $this->runValidators($file); if (true === $validate['success'] && $this->checkFileSize($file, 64000000) === true) { #копируем файл на локольный сервер и удаляем с FTP-сервера $filename = $this->getFile($file); if (false === $this->deleteFtpFile($file)) { throw new \Exception("Can't delete {$file} from FTP server"); } $process = null; if (false === $this->container->get('sportmaster_utility')->isFileUploaded($filename)) { switch ($this->type) { case 'ACKN': $process = new SI\ImportAcknEvent($filename, $this->container); #передаем файл сразу в SCA $result = $this->putFtp($this->config['distinationPath'] . '/' . $file, $filename); if ($result === false) { throw new \Exception("Can't upload file {$file} to FTP-server"); } break; case 'EEM_SHIPMENT': $process = new SI\ImportShipmentEventEem($filename, $this->container); $process->setDistinationPath($this->config['distinationPath']); #в этом случае на каждый файл будет открываться новое соединение $connect = false; $this->ftpClose(); break; case 'PO': $process = new SI\ImportShipmentPoEem($filename, $this->container); $process->setDistinationPath($this->config['distinationPath']); break; case 'SCA_SHIPMENT': $process = new SI\ImportShipmentEventSca($filename, $this->container); $process->setDistinationPath($this->config['distinationPath']); break; case 'SPM_BOOKING': $process = new SI\ImportShipmentBooking($filename, $this->container); $process->setDistinationPath($this->config['distinationPath']); break; } $process->parse(); } } else { $message = "File {$file} in folder {$this->config['dir']} has wrong extension or too big"; $logger = $this->container->get('logger'); $logger->error($message); @mail('ivan.popov@panalpina.com,stanislav.biryukov@panalpina.com', 'Exception occured', $message); continue; } } if (true === $connect) { $this->ftpClose(); } }
protected function importPO($file) { $zip = new U\Zip(); $remove = false; if (is_file($file)) { if ($zip->isZipArchive($file)) { $pathToFile = $zip->extract($file); $remove = true; } else { $pathToFile = $file; } $process = new SI\ImportShipmentPoEem($pathToFile, $this->_container); $process->setDistinationPath($this->_distinationPath); $process->importPO(); if (true == $remove) { unlink($pathToFile); } return "File {$file} succesufully parsed. \n\r"; } else { return "File {$file} not found at server"; } }