/**
  * Récupération d'un fichier
  * @param string $pVarName le nom de la variable du fichier
  * @param string $pPath chemin ou mettre le fichier
  * @param string $pFileName nom du fichier qui va être posé
  * @return mixed CopixUploadedFile
  */
 public static function getFile($pVarName, $pPath = null, $pFileName = null)
 {
     $file = CopixUploadedFile::get($pVarName);
     if ($pPath !== null) {
         if ($file !== false) {
             $file->move($pPath, $pFileName);
         }
     }
     return $file;
 }
 /**
  * addMultipleStudents
  *
  * Ajout d'une liste d'élèves
  *
  */
 public function processAddMultipleStudents()
 {
     $ppo = new CopixPPO();
     $ppo->nodeId = _request('parentId', null);
     $ppo->nodeType = _request('parentType', null);
     if (is_null($ppo->nodeId) || is_null($ppo->nodeType)) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => "Une erreur est survenue.", 'back' => CopixUrl::get('gestionautonome||showTree')));
     }
     $classroomDAO = _ioDAO('kernel|kernel_bu_ecole_classe');
     if (!$classroomDAO->get($ppo->nodeId)) {
         return CopixActionGroup::process('generictools|Messages::getError', array('message' => "Une erreur est survenue.", 'back' => CopixUrl::get('gestionautonome||showTree')));
     }
     _currentUser()->assertCredential('module:classroom|' . $ppo->nodeId . '|student|create@gestionautonome');
     // Récupération de l'import par fichier
     $ppo->import = _sessionGet('modules|gestionautonome|studentsImport');
     _sessionSet('modules|gestionautonome|studentsImport', null);
     // RAZ des sessions
     _sessionSet('gestionautonome|addMultipleStudents', array());
     _sessionSet('gestionautonome|addMultipleStudents|success', array());
     _sessionSet('gestionautonome|addMultipleStudents|error', array());
     // Traitement du formulaire
     if (CopixRequest::isMethod('post')) {
         $ppo->errors = array();
         switch (CopixUploadedFile::getError('filename')) {
             case UPLOAD_ERR_OK:
                 $file = CopixUploadedFile::get('filename');
                 break;
             case UPLOAD_ERR_INI_SIZE:
             case UPLOAD_ERR_FORM_SIZE:
                 $ppo->errors[] = 'Fichier trop volumineux';
                 break;
             case UPLOAD_ERR_NO_TMP_DIR:
             case UPLOAD_ERR_CANT_WRITE:
             case UPLOAD_ERR_PARTIAL:
             case UPLOAD_ERR_EXTENSION:
                 $ppo->errors[] = 'Une erreur est survenue';
                 break;
             case UPLOAD_ERR_NO_FILE:
                 $ppo->errors[] = 'Vous devez sélectionner un fichier';
         }
         if (empty($ppo->errors)) {
             // Lecture du fichier
             if (($handle = fopen($file->getTempPath(), 'r')) === false) {
                 $ppo->errors[] = 'Impossible de lire le fichier';
             } else {
                 $infos = array();
                 // Vérification de la ligne d'entête
                 if (($data = fgetcsv($handle, 0, ',', '"')) === false || !in_array(count($data), array(12, 8, 4, 3))) {
                     $ppo->errors[] = 'Fichier invalide';
                 } else {
                     // Prend on en compte la première ligne ?
                     if ($data[0] != 'Nom') {
                         $infos[] = implode(',', $data);
                     }
                     // Lecture du reste du fichier
                     while (($data = fgetcsv($handle, 0, ',', '"')) !== false) {
                         if (!in_array(count($data), array(12, 8, 4, 3))) {
                             $ppo->errors[] = 'Fichier invalide';
                             break;
                         }
                         $infos[] = implode(',', $data);
                     }
                     // Redirection
                     if (empty($ppo->errors)) {
                         _sessionSet('modules|gestionautonome|studentsImport', implode("\n", $infos));
                         return _arRedirect(CopixUrl::get('gestionautonome||AddMultipleStudents', array('parentId' => $ppo->nodeId, 'parentType' => $ppo->nodeType)));
                     }
                 }
             }
         }
     }
     // Breadcrumbs
     $ppo->nodeInfos = Kernel::getNodeInfo($ppo->nodeType, $ppo->nodeId, true);
     // Get vocabulary catalog to use
     $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog');
     $ppo->vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode($ppo->nodeType, $ppo->nodeId);
     $breadcrumbs = Kernel::generateBreadcrumbs($ppo->nodeInfos);
     $breadcrumbs[] = array('txt' => CopixCustomI18N::get('gestionautonome|gestionautonome.message.add%%structure_element_persons%%list', array('catalog' => $ppo->vocabularyCatalog->id_vc)));
     $ppo->breadcrumbs = Kernel::PetitPoucet($breadcrumbs, ' » ');
     $ppo->TITLE_PAGE = CopixConfig::get('gestionautonome|moduleTitle');
     // Get vocabulary catalog to use
     $nodeVocabularyCatalogDAO = _ioDAO('kernel|kernel_i18n_node_vocabularycatalog');
     $ppo->vocabularyCatalog = $nodeVocabularyCatalogDAO->getCatalogForNode($ppo->nodeType, $ppo->nodeId);
     return _arPPO($ppo, 'add_multiple_students.tpl');
 }