2022-12-23 16:27:07 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Controller;
|
|
|
|
|
|
|
|
use App\Form\FolderType;
|
|
|
|
use App\Form\FileType;
|
2023-01-03 10:50:07 +01:00
|
|
|
use App\Form\AfnorType;
|
2022-12-23 16:27:07 +01:00
|
|
|
|
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
|
|
use App\Service\SftpService;
|
|
|
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
|
|
|
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
|
2023-01-03 10:50:07 +01:00
|
|
|
use Symfony\Component\Filesystem\Filesystem;
|
2022-12-23 16:27:07 +01:00
|
|
|
|
|
|
|
class HomeController extends AbstractController
|
|
|
|
{
|
|
|
|
private $sftp;
|
|
|
|
|
|
|
|
public function __construct(SftpService $sftp)
|
|
|
|
{
|
|
|
|
$this->sftp = $sftp;
|
|
|
|
$this->sftp->connect();
|
|
|
|
}
|
|
|
|
|
|
|
|
public function home(Request $request)
|
|
|
|
{
|
|
|
|
$folder=$request->query->get('folder');
|
|
|
|
|
|
|
|
// Crétion de répertoire
|
|
|
|
$formFolder = $this->createForm(FolderType::class);
|
|
|
|
$formFolder->handleRequest($request);
|
|
|
|
if ($formFolder->get('submit')->isClicked() && $formFolder->isValid()) {
|
|
|
|
$name = $formFolder->get("name")->getData();
|
|
|
|
$this->sftp->mkdir($folder."/".$name);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Modification de fichier
|
|
|
|
$formFile = $this->createForm(FileType::class);
|
|
|
|
$formFile->handleRequest($request);
|
|
|
|
if ($formFile->get('submit')->isClicked() && $formFile->isValid()) {
|
|
|
|
$oldname = $formFile->get("oldname")->getData();
|
|
|
|
$name = $formFile->get("name")->getData();
|
|
|
|
$this->sftp->rename($folder."/".$oldname,$folder."/".$name);
|
|
|
|
}
|
|
|
|
|
2023-01-03 10:50:07 +01:00
|
|
|
// Fake AFNOR
|
|
|
|
$formAfnor = $this->createForm(AfnorType::class);
|
|
|
|
$formAfnor->handleRequest($request);
|
|
|
|
if ($formAfnor->get('submit')->isClicked()) {
|
|
|
|
$id = $formAfnor->get("id")->getData();
|
|
|
|
$codeproduct = $formAfnor->get("codeproduct")->getData();
|
|
|
|
$codequalifications = $formAfnor->get("codequalifications")->getData();
|
|
|
|
|
|
|
|
$filesystem = new Filesystem();
|
|
|
|
$dir = $this->getParameter('kernel.project_dir').'/var/tmp';
|
|
|
|
|
|
|
|
$file ="gc,".$id."\n";
|
|
|
|
$file.="ph\n";
|
|
|
|
$file.="pj,".$codeproduct."\n";
|
|
|
|
|
|
|
|
foreach($codequalifications as $codequalification) {
|
|
|
|
$file.="qa\n";
|
|
|
|
$file.="qh,".$codequalification."\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
$filesystem->dumpFile($dir.'/DEL-'.$id.'.AFN', $file);
|
|
|
|
$return=$this->sftp->uploadFile($dir.'/DEL-'.$id.'.AFN', $folder);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2022-12-23 16:27:07 +01:00
|
|
|
// Lister les fichiers
|
|
|
|
$ls=$this->sftp->ls($folder);
|
|
|
|
|
|
|
|
// Construire l'arbre des répertoires
|
|
|
|
$tree=[];
|
|
|
|
$tmpparent=explode("/",$folder);
|
|
|
|
foreach($tmpparent as $key => $parent) {
|
|
|
|
$tmp=[
|
|
|
|
"name"=>($parent==""?"Home":$parent),
|
|
|
|
"folder"=>($key==0?"":$tree[$key-1]["folder"]."/".$parent)
|
|
|
|
];
|
|
|
|
array_push($tree,$tmp);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Browse
|
|
|
|
return $this->render('Home/home.html.twig', [
|
|
|
|
'useheader' => true,
|
|
|
|
'usemenu' => false,
|
|
|
|
'usesidebar' => false,
|
|
|
|
'tree' => $tree,
|
|
|
|
'infolder' => $folder,
|
|
|
|
'folders' => $ls["folders"],
|
|
|
|
'files' => $ls["files"],
|
2023-01-03 10:50:07 +01:00
|
|
|
'fakeAfnor'=>in_array("AFNOR",$this->getParameter("fakeFiles")),
|
2022-12-23 16:27:07 +01:00
|
|
|
'formfolder'=>$formFolder->createView(),
|
|
|
|
'formfile'=>$formFile->createView(),
|
2023-01-03 10:50:07 +01:00
|
|
|
'formafnor'=>$formAfnor->createView(),
|
|
|
|
|
2022-12-23 16:27:07 +01:00
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function download(Request $request)
|
|
|
|
{
|
|
|
|
$file=$request->query->get('file');
|
|
|
|
$tmpfile=$this->sftp->downloadFile($file,"var/tmp/");
|
|
|
|
if(!$tmpfile) {
|
|
|
|
throw new \Exception('Erreur de téléchargement');
|
|
|
|
}
|
|
|
|
|
2023-01-03 10:50:07 +01:00
|
|
|
if (str_starts_with(mime_content_type($tmpfile), 'image/') || 'application/pdf' == mime_content_type($tmpfile) || 'text/plain' == mime_content_type($tmpfile)) {
|
2022-12-23 16:27:07 +01:00
|
|
|
$response = new BinaryFileResponse($tmpfile);
|
|
|
|
$response->headers->set('Content-Type', mime_content_type($tmpfile));
|
|
|
|
} else {
|
|
|
|
$response = new BinaryFileResponse($tmpfile);
|
|
|
|
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, basename($tmpfile));
|
|
|
|
}
|
|
|
|
|
|
|
|
return $response;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function upload(Request $request)
|
|
|
|
{
|
|
|
|
$folder=$request->query->get('folder');
|
|
|
|
return $this->render('Home/upload.html.twig', [
|
|
|
|
'folder' => $folder,
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function delete(Request $request)
|
|
|
|
{
|
|
|
|
$folder=$request->query->get('folder');
|
|
|
|
$file=$request->query->get('file');
|
|
|
|
|
|
|
|
$this->sftp->deleteFile($file);
|
|
|
|
|
|
|
|
return $this->redirectToRoute("app_home",["folder"=>$folder]);
|
|
|
|
}
|
|
|
|
}
|