/** * FICHIER - Edition de favoris */ public function processEditerFavori() { $classeurDAO = _ioDAO('classeur|classeur'); if (is_null($ppo->classeur = $classeurDAO->get(_request('classeurId', 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_MEMBER) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get('classeur||voirContenu', array('classeurId' => $ppo->classeur->id)))); } // 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) { $ppo->dossier = $dossierDAO->get($ppo->dossierId); // Ajout d'un favori dans un casier non autorisé if ($ppo->dossier->casier) { return CopixActionGroup::process('generictools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.errorOccurred'), 'back' => CopixUrl::get(''))); } $ppo->path = $ppo->dossier->getPath(); } else { $ppo->path = '/' . $ppo->classeur->titre . '/'; } // Récupération de l'identifiant du favori (si modification) $favoriId = _request('favoriId', null); if (!is_null($favoriId)) { $fichierDAO = _ioDAO('classeur|classeurfichier'); $ppo->favori = $fichierDAO->get($favoriId); // Contrôle d'accès if (Kernel::getLevel('MOD_CLASSEUR', $ppo->classeur->id) < PROFILE_CCV_MEMBER && ($ppo->favori->user_type != _currentUser()->getExtra('type') || $ppo->favori->user_id != _currentUser()->getExtra('id'))) { return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get('classeur||voirContenu', array('classeurId' => $ppo->classeur->id)))); } // Récupération de l'url du favori _classInclude('classeur|classeurservice'); $ppo->lien = $ppo->favori->getLienFavori(); } if (CopixRequest::isMethod('post')) { _classInclude('classeur|classeurservice'); $fichierDAO = _ioDAO('classeur|classeurfichier'); $ppo->lien = _request('favori_adresse', null); if (is_null($favoriId = _request('favoriId', null))) { $ppo->favori = _record('classeur|classeurfichier'); } else { $ppo->favori = $fichierDAO->get($favoriId); } $ppo->favori->classeur_id = $ppo->classeur->id; $ppo->favori->dossier_id = !is_null($dossierId = _request('dossierId', null)) ? $dossierId : 0; $ppo->favori->titre = _request('favori_titre', null); $ppo->favori->commentaire = null; $ppo->favori->fichier = Kernel::simpleName($ppo->favori->titre) . '.web'; $ppo->favori->taille = 0; $ppo->favori->type = 'Favori'; $ppo->favori->cle = classeurService::createKey(); $ppo->favori->date_upload = date('Y-m-d H:i:s'); $ppo->favori->user_type = _currentUser()->getExtra('type'); $ppo->favori->user_id = _currentUser()->getExtra('id'); // Traitement des erreurs $ppo->erreurs = array(); if (_request('favori_titre', null) == '') { $ppo->erreurs[] = CopixI18N::get('classeur|classeur.error.noTitle'); } if (_request('favori_adresse', null) == '' || _request('favori_adresse', null) == 'http://') { $ppo->erreurs[] = CopixI18N::get('classeur|classeur.error.noAddress'); } if (!empty($ppo->erreurs)) { $modParentInfo = Kernel::getModParentInfo('MOD_CLASSEUR', $ppo->classeur->id); $ppo->TITLE_PAGE = $modParentInfo['nom']; return _arPPO($ppo, array('template' => 'editer_favori.tpl')); } if (is_null($ppo->favori->id)) { $fichierDAO->insert($ppo->favori); $confirmMessage = CopixI18N::get('classeur|classeur.message.confirmCreation'); } else { $fichierDAO->update($ppo->favori); $confirmMessage = CopixI18N::get('classeur|classeur.message.confirmUpdate'); } // Création du fichier $contenu = classeurService::generateWebFile($ppo->lien); $extension = strtolower(strrchr($ppo->favori->fichier, '.')); $nomFichier = $ppo->favori->id . '-' . $ppo->favori->cle . $extension; $pathFichier = realpath('./static/classeur') . '/' . $ppo->classeur->id . '-' . $ppo->classeur->cle . '/' . $nomFichier; if ($handler = fopen($pathFichier, 'w+')) { if (fwrite($handler, $contenu)) { $ppo->favori->taille = filesize($pathFichier); $fichierDAO->update($ppo->favori); } fclose($handler); } if ($ppo->favori->dossier_id != 0) { $dossierDAO = _ioDAO('classeur|classeurdossier'); $dossier = $dossierDAO->get($ppo->favori->dossier_id); classeurService::updateFolderInfos($dossier); } return _arRedirect(CopixUrl::get('classeur||voirContenu', array('classeurId' => $ppo->classeur->id, 'dossierId' => $ppo->favori->dossier_id, 'confirmMessage' => $confirmMessage))); } $modParentInfo = Kernel::getModParentInfo('MOD_CLASSEUR', $ppo->classeur->id); $ppo->TITLE_PAGE = $modParentInfo['nom']; return _arPPO($ppo, array('template' => 'editer_favori.tpl')); }