/**
  * ACTION DE MASSE - Déplacement d'un ou de plusieurs fichiers / dossiers
  */
 public function processDeplacerContenu()
 {
     $classeurDAO = _ioDAO('classeur|classeur');
     $dossierDAO = _ioDAO('classeur|classeurdossier');
     $fichierDAO = _ioDAO('classeur|classeurfichier');
     if (is_null($ppo->classeur = $classeurDAO->get(_request('classeurId', null))) || is_null($ppo->dossierParent = $dossierDAO->get(_request('dossierId', null)))) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.errorOccurred'), 'back' => CopixUrl::get('')));
     } elseif (Kernel::getLevel('MOD_CLASSEUR', $ppo->classeur->id) < PROFILE_CCV_PUBLISH) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get('classeur||voirContenu', array('classeurId' => $ppo->classeur->id))));
     }
     $nomsContenus = array();
     // Récupération des identifiants de dossier à déplacer
     $dossierIds = _request('dossiers', array());
     if (!is_null($dossierIds)) {
         if (is_array($dossierIds)) {
             $ppo->dossierIds = implode($dossierIds, ',');
         } else {
             $ppo->dossierIds = $dossierIds;
             $dossierIds = explode($ppo->dossierIds, ',');
         }
         foreach ($dossierIds as $dossierId) {
             if ($dossier = $dossierDAO->get($dossierId)) {
                 $nomsContenus[] = $dossier->nom;
             }
         }
     }
     // Récupération des identifiants de fichier à déplacer
     $fichierIds = _request('fichiers', array());
     if (!is_null($fichierIds)) {
         if (is_array($fichierIds)) {
             $ppo->fichierIds = implode($fichierIds, ',');
         } else {
             $ppo->fichierIds = $fichierIds;
             $fichierIds = explode($ppo->fichierIds, ',');
         }
         foreach ($fichierIds as $fichierId) {
             $fichier = $fichierDAO->get($fichierId);
             if ($fichier) {
                 $nomsContenus[] = $fichier->fichier;
             }
         }
     }
     if (!empty($nomsContenus)) {
         $ppo->nomsContenus = implode($nomsContenus, ', ');
     } else {
         $ppo->nomsContenus = _request('fichiersSelectionnes', null);
     }
     if (CopixRequest::isMethod('post')) {
         _classInclude('classeur|classeurservice');
         $arFichierIds = !is_null(_request('fichiers', null)) ? explode(',', _request('fichiers', null)) : array();
         $arDossierIds = !is_null(_request('dossiers', null)) ? explode(',', _request('dossiers', null)) : array();
         // Récupération des informations sur le noeud de destination
         if (!is_null($destination = _request('destination', null))) {
             list($ppo->destinationType, $ppo->destinationId) = explode('-', $destination);
             if ($ppo->destinationType == 'dossier') {
                 $dossierDestination = $dossierDAO->get($ppo->destinationId);
             }
         }
         // Traitement des erreurs
         $ppo->erreurs = array();
         if (!isset($ppo->destinationType) || !isset($ppo->destinationId) || is_null($ppo->destinationType) || is_null($ppo->destinationId)) {
             $ppo->erreurs[] = CopixI18N::get('classeur|classeur.error.noDestination');
         } elseif ($ppo->destinationType == 'dossier' && in_array($ppo->destinationId, $arDossierIds)) {
             $ppo->erreurs[] = CopixI18N::get('classeur|classeur.error.destinationUnauthorized');
         }
         if (empty($arFichierIds) && empty($arDossierIds)) {
             $ppo->erreurs[] = CopixI18N::get('classeur|classeur.error.noContentSelected');
         }
         if (!empty($ppo->erreurs)) {
             $modParentInfo = Kernel::getModParentInfo('MOD_CLASSEUR', $ppo->classeur->id);
             $ppo->TITLE_PAGE = $modParentInfo['nom'];
             return _arPPO($ppo, array('template' => 'deplacer_contenu.tpl'));
         }
         // Déplacement des dossiers
         if (!empty($arDossierIds)) {
             $dossiers = array();
             foreach ($arDossierIds as $arDossierId) {
                 $dossier = $dossierDAO->get($arDossierId);
                 if ($ppo->destinationType == 'dossier' && !classeurService::isDescendantOf($dossierDestination, $dossier) || $ppo->destinationType == 'classeur') {
                     if ($dossier = $dossierDAO->get($arDossierId)) {
                         classeurService::moveFolder($dossier, $ppo->destinationType, $ppo->destinationId);
                     }
                 }
             }
         }
         // Déplacement des fichiers
         if (!empty($arFichierIds)) {
             foreach ($arFichierIds as $arFichierId) {
                 $fichier = $fichierDAO->get($arFichierId);
                 classeurService::moveFile($fichier, $ppo->destinationType, $ppo->destinationId);
             }
         }
         // Maj des informations de dossier
         if ($ppo->dossierParent) {
             classeurService::updateFolderInfos($ppo->dossierParent);
         }
         // Redirection
         $confirmMessage = CopixI18N::get('classeur|classeur.message.confirmMove');
         if ($ppo->destinationType == 'dossier') {
             classeurService::updateFolderInfos($dossierDestination);
             return _arRedirect(CopixUrl::get('classeur||voirContenu', array('classeurId' => $dossierDestination->classeur_id, 'dossierId' => $ppo->destinationId, 'confirmMessage' => $confirmMessage)));
         } else {
             return _arRedirect(CopixUrl::get('classeur||voirContenu', array('classeurId' => $ppo->destinationId, 'confirmMessage' => $confirmMessage)));
         }
     }
     $modParentInfo = Kernel::getModParentInfo('MOD_CLASSEUR', $ppo->classeur->id);
     $ppo->TITLE_PAGE = $modParentInfo['nom'];
     return _arPPO($ppo, array('template' => 'deplacer_contenu.tpl'));
 }