/**
  * ACTION DE MASSE - Téléchargement d'un ou de plusieurs fichiers / dossiers (Archive ZIP)
  */
 public function processTelechargerContenu()
 {
     if (is_null($ppo->classeurId = _request('classeurId')) || is_null($ppo->dossierId = _request('dossierId'))) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.errorOccurred'), 'back' => CopixUrl::get('')));
     }
     _classInclude('classeur|classeurservice');
     $fichierDAO = _ioDAO('classeur|classeurfichier');
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     // Récupération des paramètres
     $dossierIds = _request('dossiers', array());
     $fichierIds = _request('fichiers', array());
     $classeurDAO = _ioDAO('classeur|classeur');
     $classeur = $classeurDAO->get($ppo->classeurId);
     $cptFavori = 0;
     if (empty($dossierIds) && count($fichierIds) == 1) {
         // Récupération du fichier
         $fichier = $fichierDAO->get($fichierIds[0]);
         if ($fichier->estUnFavori()) {
             return _arRedirect(CopixUrl::get('classeur||voirContenu', array('classeurId' => $fichier->classeur_id, 'dossierId' => $fichier->dossier_id, 'errorMessage' => CopixI18N::get('classeur|classeur.error.downloadFavorite'))));
         }
         // Path du fichier
         $dir = realpath('./static/classeur') . '/' . $classeur->id . '-' . $classeur->cle . '/';
         $extension = strtolower(strrchr($fichier->fichier, '.'));
         $pathfile = $dir . $fichier->id . '-' . $fichier->cle . $extension;
         return _arFile($pathfile, array('filename' => $fichier->fichier, 'content-type' => classeurService::getMimeType($fichier->fichier), 'content-disposition' => 'attachment'));
     }
     // Path de l'archive ZIP temporaire
     $dossierTmp = classeurService::getTmpFolder();
     if ($ppo->dossierId != 0) {
         $dossier = $dossierDAO->get($ppo->dossierId);
         $fichierZip = str_replace('/', '-', $dossier->nom) . '.zip';
     } else {
         $fichierZip = str_replace('/', '-', $classeur->titre) . '.zip';
     }
     if (file_exists($dossierTmp . $fichierZip)) {
         unlink($dossierTmp . $fichierZip);
     }
     $zip = new ZipArchive();
     if ($zip->open($dossierTmp . $fichierZip, ZIPARCHIVE::CREATE) === true) {
         if (!empty($dossierIds)) {
             $ppo->dossierIds = implode($dossierIds, ',');
             if (count($ppo->dossierIds) == 1) {
                 $dossier = $dossierDAO->get($dossierIds[0]);
                 // Seul l'enseignant peut télécharger un casier
                 if ($dossier->casier && Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId) < PROFILE_CCV_PUBLISH) {
                     return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('classeur|classeur.error.downloadLocker'), 'back' => CopixUrl::get('classeur||voirContenu', array('classeurId' => $ppo->classeurId))));
                 } else {
                     classeurService::addFolderToZip($dossier, $zip);
                 }
             } else {
                 foreach ($dossierIds as $dossierId) {
                     $dossier = $dossierDAO->get($dossierId);
                     if (!$dossier->casier || $dossier->casier && Kernel::getLevel('MOD_CLASSEUR', $ppo->classeurId) >= PROFILE_CCV_PUBLISH) {
                         classeurService::addFolderToZip($dossier, $zip);
                     }
                 }
             }
         }
         $ppo->fichierIds = implode($fichierIds, ',');
         foreach ($fichierIds as $fichierId) {
             $fichier = $fichierDAO->get($fichierId);
             if (!$fichier->estUnFavori()) {
                 classeurService::addFileToZip($fichier, $zip);
             } else {
                 $cptFavori++;
             }
         }
     }
     $zip->close();
     if ($cptFavori != 0 && $cptFavori == count($fichierIds)) {
         return _arRedirect(CopixUrl::get('classeur||voirContenu', array('classeurId' => $fichier->classeur_id, 'dossierId' => $fichier->dossier_id, 'errorMessage' => CopixI18N::get('classeur|classeur.error.downloadFavorite'))));
     }
     return _arFile($dossierTmp . $fichierZip, array('filename' => $fichierZip, 'content-type' => classeurService::getMimeType($fichierZip), 'content-disposition' => 'attachment'));
 }