/** * 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); }