Pour la géstion de documents, images, pdf, j'utilise une classe nomée Document, maintenant je dois pouvoir uploader certains de ces documents sur un ftp distant, gérer la connexion, upload, suppression.
Pour ca je fais dans ma classe quelque test sur les fichiers envoyés pour voir s'ils sont a mettre sur le site internet, maintenant je pense qu'une extension de classe pourrait être interessante aussi, par exemple Document_internet. Avec dans cette classe une reprise des fonctions de Document en y ajoutant l'upload FTP.
Mais c'est de spliter mon code pour avoir 2 classes qui finalement doivent gérer la même chose qui me dérange un peu, après si niveau maintenance du code ou même de logique c'est plus évident je le ferais.
La fonction d'upload des PDF marche comme ca pour le moment :
/********************************************************************************************************************/
/* UPLOAD DE DOCUMENTS PDF */
/********************************************************************************************************************/
function UploadPdf($IdType,$IdProg,$IdLot,$IdDoc,$document)
{
$this->FindFolder($IdType);
// @ vars
$DocName = $document['name'];
$DocTmpName = $document['tmp_name'];
$DocNewName = $this->PdfName($IdType,$IdProg,$IdLot,$IdDoc);
$destination = $this->CurrentFolder.$this->PdfId($IdType,$IdProg,$IdLot)."/".stripslashes($DocNewName);
$extension = substr($DocName,-3,3);
if(file_exists($destination))
{
if($IdType == 0)
{
$this->Error = "Un fichier portant ce nom existe déjà.";
return false;
}
else
{
@unlink($destination);
}
}
if(!is_uploaded_file($DocTmpName))
{
$this->Error = "Impossible de copier le fichier";
return false;
}
else if( (($document['size']/ 1048576 * 100) / 100) > 5 )
{
$this->Error = "Taille du fichier trop élevée.";
return false;
}
else if( ($extension != "pdf") and ($extension != "PDF") )
{
$this->Error = "Le document n'est pas au format PDF";
return false;
}
else
{
move_uploaded_file( $DocTmpName , $destination);
if($IdDoc == 5 || $IdDoc == 8)
{
$connexion = ftp_connect($this->FtpConnect);
$conn_id = ftp_login($connexion, $this->FtpLogin, $this->FtpPassword);
$dossier = "/_medias/doc/upload/location/";
$fichier = $this->PdfId($IdType,$IdProg,$IdLot)."/".stripslashes($DocNewName);
@ftp_mkdir($connexion,$dossier);
@ftp_delete($connexion,$dossier.$fichier);
ftp_put($connexion,$dossier.$fichier,$destination,FTP_BINARY);
}
return true;
}
}
avec un simple test de la méthode pour retourner le message d'erreur ou non. Maintenant la partie avec la gestion du FTP je trouve pas forcement ca propre, donc extension de classe ou pas ?