コード例 #1
0
ファイル: Transport.php プロジェクト: mishki-svami/sm-bundle
 /**
  * Функция производит отправку всех сообщения в статусе STATUS_EVENT_READY
  * И меняет статус события на отправлено
  */
 public function sendEvent()
 {
     $events = $this->_repository->findBy(array('status' => IA\EventAbstract::STATUS_EVENT_READY), array('externalCreatedAt' => 'ASC'));
     if (is_array($events) && !empty($events)) {
         $zip = new U\Zip();
         foreach ($events as $event) {
             /*
              * необходимо определить является ли файл zip-архивом, и если да, то разархивировать
              */
             if ($zip->isZipArchive($event->getFilename())) {
                 $pathToFile = $zip->extract($event->getFilename());
             } else {
                 $pathToFile = $event->getFilename();
             }
             //определяем имя файла
             $filename = basename($pathToFile);
             /*
              * если первый символ в имени цифровой,
              * то прибавляем случайную последовательность символов, 
              * это нужно чтобы передавать каждый файл с уникальным именем,
              * для перезапуска цепочки
              */
             #if (is_numeric(substr($filename, 0, 1))) {
             $filename = substr(time(), -6) . '_' . $filename;
             #}
             //если файлов в папки больше чем LIMIT_FILES_IN_DIR, то файл не отправляем
             if ($this->getCountFilesInDir($event->getDestinationPath()) > self::LIMIT_FILES_IN_DIR) {
                 continue;
             }
             $result = $this->putFtp($event->getDestinationPath() . "/" . $filename, $pathToFile);
             //если это PO, то файл также необходимо положить в сетевую папку
             /*if ('PO' == $event->getSystemName()) {
                   $pathToCopy = '/home/winshares/spm_po';
                   if (!file_exists($pathToCopy) && !is_dir($pathToCopy)) {                      
                       throw new \Exception("Can't found folder /home/winshares/spm_po");
                   }
                   copy($pathToFile, $pathToCopy."/".$filename);
               }*/
             if ($result === false) {
                 throw new \Exception("Can't upload file {$filename} to FTP-server");
             }
             //архивируем файл
             $zipFilename = $zip->pack($pathToFile);
             $event->setStatus(IA\EventAbstract::STATUS_EVENT_SEND);
             $event->setTransferredAt(new \DateTime());
             $event->setFilename($zipFilename);
             $event->setTransferredFilename($filename);
             $this->_em->flush();
         }
     }
 }
コード例 #2
0
 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";
     }
 }