/**
  * Upload d'un fichier dans un classeur
  *
  * @param string                    $file       Path du fichier uploadé
  * @param string                    $name       Nom du fichier uploadé
  * @param DAORecordClasseur         $classeur   Classeur ou envoyer le fichier
  * @param DAORecordClasseurDossier  $dossier    Dossier ou envoyer le fichier
  *
  * @return DAORecordClasseurFichier
  */
 public function uploadFile($file, $name, DAORecordClasseur $classeur, $dossier = null)
 {
     $dir = realpath('./static/classeur') . '/' . $classeur->id . '-' . $classeur->cle . '/';
     $extension = strtolower(strrchr($name, '.'));
     $fichierDAO = _ioDAO('classeur|classeurfichier');
     $fichier = _record('classeur|classeurfichier');
     $fichier->classeur_id = $classeur->id;
     $fichier->dossier_id = $dossier ? $dossier->id : 0;
     $fichier->titre = _request('fichier_titre', substr(substr($name, 0, strrpos($name, '.')), 0, 63));
     $fichier->commentaire = _request('fichier_commentaire', '');
     $fichier->taille = filesize($file);
     $fichier->type = strtoupper(substr(strrchr($name, '.'), 1));
     $fichier->cle = self::createKey();
     $fichier->date_upload = date('Y-m-d H:i:s');
     $fichier->user_type = _currentUser()->getExtra('type');
     $fichier->user_id = _currentUser()->getExtra('id');
     if (isset($dossier) && $dossier->casier) {
         $fichier->fichier = $fichier->titre . '_' . _currentUser()->getExtra('prenom') . '_' . _currentUser()->getExtra('nom') . $extension;
     } else {
         $fichier->fichier = $name;
     }
     $fichierDAO->insert($fichier);
     copy($file, $dir . $fichier->id . '-' . $fichier->cle . $extension);
     ClasseurService::doAutoRotateJpegByOrientation($dir . $fichier->id . '-' . $fichier->cle . $extension, $extension);
     return $fichier;
 }
 public function processEnvoieFichierPopup()
 {
     $ppo = new CopixPPO();
     if (is_null($ppo->classeurId = _request('classeurId'))) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.errorOccurred'), 'back' => CopixUrl::get('')));
     } elseif (Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId) < PROFILE_CCV_MEMBER) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get('classeur||voirContenu', array('classeurId' => $ppo->classeurId))));
     }
     $field = _request('field', null);
     $format = _request('format', null);
     $moduleType = _request('moduleType', null);
     $moduleId = _request('moduleId', null);
     // Récupération du classeur
     $classeurDAO = _ioDAO('classeur|classeur');
     $classeur = $classeurDAO->get($ppo->classeurId);
     // Récupération du dossier pour définition du path
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     if (!is_null($ppo->dossierId = _request('dossierId', null)) && $ppo->dossierId != 0) {
         if ($ppo->dossier = $dossierDAO->get($ppo->dossierId)) {
             $ppo->path = $ppo->dossier->getPath();
         } else {
             $ppo->path = '/';
         }
     } else {
         $ppo->path = '/' . $classeur->titre . '/';
     }
     // Dossier temporaire pour l'upload des fichiers
     _classInclude('classeur|classeurService');
     $dossierTmp = classeurService::getTmpFolder();
     $ppo->dossierTmp = $dossierTmp . classeurService::createKey();
     $fichierDAO = _ioDAO('classeur|classeurfichier');
     if ($_FILES['fichiers']['name'][0] != "") {
         // Contrôle upload du fichier
         if (is_uploaded_file($_FILES['fichiers']['tmp_name'][0])) {
             $dir = realpath('./static/classeur') . '/' . $classeur->id . '-' . $classeur->cle . '/';
             $ppo->fichier = _record('classeur|classeurfichier');
             $ppo->fichier->classeur_id = $classeur->id;
             $ppo->fichier->dossier_id = isset($ppo->dossierId) ? $ppo->dossierId : 0;
             $ppo->fichier->titre = substr($_FILES['fichiers']['name'][0], 0, 63);
             $ppo->fichier->commentaire = '';
             $ppo->fichier->fichier = $_FILES['fichiers']['name'][0];
             $ppo->fichier->taille = filesize($_FILES['fichiers']['tmp_name'][0]);
             $ppo->fichier->type = strtoupper(substr(strrchr($_FILES['fichiers']['name'][0], '.'), 1));
             $ppo->fichier->cle = classeurService::createKey();
             $ppo->fichier->date_upload = date('Y-m-d H:i:s');
             $ppo->fichier->user_type = _currentUser()->getExtra('type');
             $ppo->fichier->user_id = _currentUser()->getExtra('id');
             $fichierDAO->insert($ppo->fichier);
             $extension = strtolower(strrchr($_FILES['fichiers']['name'][0], '.'));
             $fichierPhysique = $dir . $ppo->fichier->id . '-' . $ppo->fichier->cle . $extension;
             if (!file_exists(dirname($fichierPhysique))) {
                 mkdir(dirname($fichierPhysique), 0755, true);
             }
             move_uploaded_file($_FILES['fichiers']['tmp_name'][0], $fichierPhysique);
             ClasseurService::doAutoRotateJpegByOrientation($fichierPhysique, $extension);
         }
     }
     $urlReturn = $field && $format ? CopixUrl::get('classeur||getClasseurPopup', array('classeurId' => $classeur->id, 'dossierId' => $ppo->dossierId, 'field' => $field, 'format' => $format, 'moduleType' => $moduleType, 'moduleId' => $moduleId)) : CopixUrl::get('classeur||getClasseurPopup', array('classeurId' => $classeur->id, 'dossierId' => $ppo->dossierId));
     return new CopixActionReturn(COPIX_AR_REDIRECT, $urlReturn);
 }