Loading CHANGELOG.md +20 −0 Original line number Diff line number Diff line Journal des modifications ========================= 1.2.1 () ------------------ ### Ajout - Nouvelle page consacrée au dépôt de fichiers divers liés à une thèse (précédemment dans la page "Thèse"). - Possibilité de déposer des fichiers dits "communs" utiles aux gestionnaires, ex: modèle d'avenant à la convention de mise en ligne. ### Améliorations - Améliorations de la page "Privilèges", notamment le filtrage par rôle. - Déplacement des privilèges de la catégorie `fichier-divers` vers la catégorie `these` car ils concernent des fichiers liés à une thèse (ex: PV de soutenance). La catégorie `fichier-divers` désigne désormais les privilèges concernant des fichiers sans lien aux thèses (ex: fichiers déposés pour les pages d'informations). - Refonte technique de la gestion des fichiers liés aux pages d'informations, prélable au travail sur les droits de dépôt de fichiers "divers" et "communs". 1.2.0 (10/07/2019) ------------------ Loading code/update-nommage.php +2 −2 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ use Application\Entity\Db\Fichier; use Application\Entity\Db\NatureFichier; use Application\Filter\NomFichierFormatter; use Application\Filter\NomFichierTheseFormatter; use Application\Service\Fichier\FichierService; use Application\Service\FichierThese\FichierTheseService; use Application\Service\File\FileService; Loading Loading @@ -40,7 +40,7 @@ $qb /** @var Fichier[] $fichiers */ $fichiers = $qb/*->setMaxResults(50)*/->getQuery()->getResult(); $nomFichierFormatter = new NomFichierFormatter(); $nomFichierFormatter = new NomFichierTheseFormatter(); $updatedFichiers = []; foreach ($fichiers as $fichier) { Loading config/autoload/version.global.php +3 −3 Original line number Diff line number Diff line Loading @@ -2,9 +2,9 @@ return [ 'unicaen-app' => [ 'app_infos' => [ 'version' => '1.2.0', 'date' => '10/07/2019', 'version' => '1.2.1', 'date' => '11/07/2019', ], ], 'comment' => 'Fichier généré le 10/07/2019 à 15:21:25 avec /home/gauthierb/workspace/sygal/bump-version', 'comment' => 'Fichier généré le 11/07/2019 à 16:32:53 avec /home/gauthierb/workspace/sygal/bump-version', ]; data/SQL/1.2.1/10_information_fichier.sql 0 → 100644 +89 −0 Original line number Diff line number Diff line -- -- Nouvelle NATURE_FICHIER : 'Fichier divers' -- insert into NATURE_FICHIER (ID, CODE, LIBELLE) values (NATURE_FICHIER_ID_SEQ.nextval, 'DIVERS', 'Fichier divers') / update NATURE_FICHIER set LIBELLE = 'Fichier non PDF joint à une thèse (ex: vidéo)' where CODE = 'FICHIER_NON_PDF' / -- -- FICHIER : élargissement de la colonne UUID -- alter table FICHIER modify UUID VARCHAR2(60) / -- -- INFORMATION_FICHIER => FICHIER -- insert into FICHIER (ID, UUID, NOM, NOM_ORIGINAL, TYPE_MIME, TAILLE, DESCRIPTION, NATURE_ID, VERSION_FICHIER_ID, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) select FICHIER_ID_SEQ.nextval, if.FILENAME as UUID, if.FILENAME as NOM, -- TODO: normaliser ultérieurement pour garantir l'unicité if.NOM as NOM_ORIGINAL, 'application/octet-stream', -- TODO: corriger ultérieurement 0, -- TODO: corriger ultérieurement if.NOM as DESCRIPTION, nf.ID, vf.ID, if.CREATION, if.CREATEUR, if.CREATION, if.CREATEUR from INFORMATION_FICHIER if join VERSION_FICHIER vf on vf.CODE = 'VO' join NATURE_FICHIER nf on nf.CODE = 'DIVERS' / alter table INFORMATION_FICHIER rename to INFORMATION_FICHIER_SAV / -- -- INFORMATION : correction des ID de fichiers dans les URL. -- CREATE OR REPLACE Function new_contenu(information_id in number) RETURN clob is vcontenu clob; cursor cur is select inf.id as from_id, f.id as to_id from INFORMATION_FICHIER_SAV inf join fichier f on f.UUID = inf.FILENAME; begin select contenu into vcontenu from INFORMATION where id = information_id; FOR row in cur LOOP vcontenu := replace(vcontenu, '/fichiers/telecharger/'||row.from_id, '/fichiers/telecharger/'||row.to_id); END LOOP; return vcontenu; end; / create table information_new as select id, contenu, new_contenu(id) new_contenu from INFORMATION / declare cursor cur is select * from information_new; begin FOR r in cur LOOP update INFORMATION set contenu = r.new_contenu where id = r.id; END LOOP; end; / drop table information_new / data/SQL/1.2.1/20_fichier_divers.sql 0 → 100644 +60 −0 Original line number Diff line number Diff line -- -- Déplacement des privilèges de la catégorie 'fichier-divers' vers la catégorie 'these' -- car ils concernent des fichiers liés à une thèse (ex: PV de soutenance). -- -- La catégorie 'fichier-divers' désigne désormais les privilèges concernant des fichiers non liés -- aux thèses (ex: fichiers déposés pour les pages d'informations). -- update PRIVILEGE p set CATEGORIE_ID = (select id from CATEGORIE_PRIVILEGE where CODE = 'these'), CODE = 'fichier-divers-'||CODE where CATEGORIE_ID = (select id from CATEGORIE_PRIVILEGE where CODE = 'fichier-divers') / -- -- 2 nouveaux privilèges pour les opérations sur des fichiers divers, *non liées aux thèses* : -- - fichier-divers/televerser -- - fichier-divers/telecharger -- insert into PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE) select PRIVILEGE_ID_SEQ.nextval, cp.id, 'televerser', 'Téléverser ou supprimer un fichier divers, non lié à une thèse', 100 from CATEGORIE_PRIVILEGE cp where cp.CODE = 'fichier-divers' / insert into PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE) select PRIVILEGE_ID_SEQ.nextval, cp.id, 'telecharger', 'Télécharger un fichier divers, non lié à une thèse', 200 from CATEGORIE_PRIVILEGE cp where cp.CODE = 'fichier-divers' / -- -- Supression du privilège faq/modifier-fichier, utilisé pour les fichiers des pages d'informations. -- Il est remplacé par le privilège fichier-divers/televerser. -- delete from PRIVILEGE where CATEGORIE_ID = (select id from CATEGORIE_PRIVILEGE where CODE = 'faq') and CODE = 'modifier-fichier' / -- Ajout des privilèges fichier-divers/* au profil 'ADMIN_TECH' insert into PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID) with data(categ, priv) as ( select 'fichier-divers', 'televerser' from dual union select 'fichier-divers', 'telecharger' from dual ) select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID from data join PROFIL on profil.ROLE_ID in (/*'ADMIN_TECH',*/ 'BU', 'BDD') join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv / -- Attribution (si pas déjà fait) des privilèges fichier-divers/* au rôle 'ADMIN_TECH' (grâce au profil 'ADMIN_TECH'). insert into ROLE_PRIVILEGE (ROLE_ID, PRIVILEGE_ID) SELECT r.id as ROLE_ID, p.ID as PRIVILEGE_ID from PROFIL_PRIVILEGE pp join profil on PROFIL.ID = pp.PROFIL_ID and profil.ROLE_ID in (/*'ADMIN_TECH',*/ 'BU', 'BDD') join PRIVILEGE p on p.id = pp.PRIVILEGE_ID join CATEGORIE_PRIVILEGE cp on cp.id = p.CATEGORIE_ID and cp.CODE = 'fichier-divers' join role r on r.CODE = PROFIL.ROLE_ID where not exists ( select * from ROLE_PRIVILEGE rp where rp.ROLE_ID = r.id and rp.PRIVILEGE_ID = p.id ); Loading
CHANGELOG.md +20 −0 Original line number Diff line number Diff line Journal des modifications ========================= 1.2.1 () ------------------ ### Ajout - Nouvelle page consacrée au dépôt de fichiers divers liés à une thèse (précédemment dans la page "Thèse"). - Possibilité de déposer des fichiers dits "communs" utiles aux gestionnaires, ex: modèle d'avenant à la convention de mise en ligne. ### Améliorations - Améliorations de la page "Privilèges", notamment le filtrage par rôle. - Déplacement des privilèges de la catégorie `fichier-divers` vers la catégorie `these` car ils concernent des fichiers liés à une thèse (ex: PV de soutenance). La catégorie `fichier-divers` désigne désormais les privilèges concernant des fichiers sans lien aux thèses (ex: fichiers déposés pour les pages d'informations). - Refonte technique de la gestion des fichiers liés aux pages d'informations, prélable au travail sur les droits de dépôt de fichiers "divers" et "communs". 1.2.0 (10/07/2019) ------------------ Loading
code/update-nommage.php +2 −2 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ use Application\Entity\Db\Fichier; use Application\Entity\Db\NatureFichier; use Application\Filter\NomFichierFormatter; use Application\Filter\NomFichierTheseFormatter; use Application\Service\Fichier\FichierService; use Application\Service\FichierThese\FichierTheseService; use Application\Service\File\FileService; Loading Loading @@ -40,7 +40,7 @@ $qb /** @var Fichier[] $fichiers */ $fichiers = $qb/*->setMaxResults(50)*/->getQuery()->getResult(); $nomFichierFormatter = new NomFichierFormatter(); $nomFichierFormatter = new NomFichierTheseFormatter(); $updatedFichiers = []; foreach ($fichiers as $fichier) { Loading
config/autoload/version.global.php +3 −3 Original line number Diff line number Diff line Loading @@ -2,9 +2,9 @@ return [ 'unicaen-app' => [ 'app_infos' => [ 'version' => '1.2.0', 'date' => '10/07/2019', 'version' => '1.2.1', 'date' => '11/07/2019', ], ], 'comment' => 'Fichier généré le 10/07/2019 à 15:21:25 avec /home/gauthierb/workspace/sygal/bump-version', 'comment' => 'Fichier généré le 11/07/2019 à 16:32:53 avec /home/gauthierb/workspace/sygal/bump-version', ];
data/SQL/1.2.1/10_information_fichier.sql 0 → 100644 +89 −0 Original line number Diff line number Diff line -- -- Nouvelle NATURE_FICHIER : 'Fichier divers' -- insert into NATURE_FICHIER (ID, CODE, LIBELLE) values (NATURE_FICHIER_ID_SEQ.nextval, 'DIVERS', 'Fichier divers') / update NATURE_FICHIER set LIBELLE = 'Fichier non PDF joint à une thèse (ex: vidéo)' where CODE = 'FICHIER_NON_PDF' / -- -- FICHIER : élargissement de la colonne UUID -- alter table FICHIER modify UUID VARCHAR2(60) / -- -- INFORMATION_FICHIER => FICHIER -- insert into FICHIER (ID, UUID, NOM, NOM_ORIGINAL, TYPE_MIME, TAILLE, DESCRIPTION, NATURE_ID, VERSION_FICHIER_ID, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) select FICHIER_ID_SEQ.nextval, if.FILENAME as UUID, if.FILENAME as NOM, -- TODO: normaliser ultérieurement pour garantir l'unicité if.NOM as NOM_ORIGINAL, 'application/octet-stream', -- TODO: corriger ultérieurement 0, -- TODO: corriger ultérieurement if.NOM as DESCRIPTION, nf.ID, vf.ID, if.CREATION, if.CREATEUR, if.CREATION, if.CREATEUR from INFORMATION_FICHIER if join VERSION_FICHIER vf on vf.CODE = 'VO' join NATURE_FICHIER nf on nf.CODE = 'DIVERS' / alter table INFORMATION_FICHIER rename to INFORMATION_FICHIER_SAV / -- -- INFORMATION : correction des ID de fichiers dans les URL. -- CREATE OR REPLACE Function new_contenu(information_id in number) RETURN clob is vcontenu clob; cursor cur is select inf.id as from_id, f.id as to_id from INFORMATION_FICHIER_SAV inf join fichier f on f.UUID = inf.FILENAME; begin select contenu into vcontenu from INFORMATION where id = information_id; FOR row in cur LOOP vcontenu := replace(vcontenu, '/fichiers/telecharger/'||row.from_id, '/fichiers/telecharger/'||row.to_id); END LOOP; return vcontenu; end; / create table information_new as select id, contenu, new_contenu(id) new_contenu from INFORMATION / declare cursor cur is select * from information_new; begin FOR r in cur LOOP update INFORMATION set contenu = r.new_contenu where id = r.id; END LOOP; end; / drop table information_new /
data/SQL/1.2.1/20_fichier_divers.sql 0 → 100644 +60 −0 Original line number Diff line number Diff line -- -- Déplacement des privilèges de la catégorie 'fichier-divers' vers la catégorie 'these' -- car ils concernent des fichiers liés à une thèse (ex: PV de soutenance). -- -- La catégorie 'fichier-divers' désigne désormais les privilèges concernant des fichiers non liés -- aux thèses (ex: fichiers déposés pour les pages d'informations). -- update PRIVILEGE p set CATEGORIE_ID = (select id from CATEGORIE_PRIVILEGE where CODE = 'these'), CODE = 'fichier-divers-'||CODE where CATEGORIE_ID = (select id from CATEGORIE_PRIVILEGE where CODE = 'fichier-divers') / -- -- 2 nouveaux privilèges pour les opérations sur des fichiers divers, *non liées aux thèses* : -- - fichier-divers/televerser -- - fichier-divers/telecharger -- insert into PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE) select PRIVILEGE_ID_SEQ.nextval, cp.id, 'televerser', 'Téléverser ou supprimer un fichier divers, non lié à une thèse', 100 from CATEGORIE_PRIVILEGE cp where cp.CODE = 'fichier-divers' / insert into PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE) select PRIVILEGE_ID_SEQ.nextval, cp.id, 'telecharger', 'Télécharger un fichier divers, non lié à une thèse', 200 from CATEGORIE_PRIVILEGE cp where cp.CODE = 'fichier-divers' / -- -- Supression du privilège faq/modifier-fichier, utilisé pour les fichiers des pages d'informations. -- Il est remplacé par le privilège fichier-divers/televerser. -- delete from PRIVILEGE where CATEGORIE_ID = (select id from CATEGORIE_PRIVILEGE where CODE = 'faq') and CODE = 'modifier-fichier' / -- Ajout des privilèges fichier-divers/* au profil 'ADMIN_TECH' insert into PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID) with data(categ, priv) as ( select 'fichier-divers', 'televerser' from dual union select 'fichier-divers', 'telecharger' from dual ) select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID from data join PROFIL on profil.ROLE_ID in (/*'ADMIN_TECH',*/ 'BU', 'BDD') join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv / -- Attribution (si pas déjà fait) des privilèges fichier-divers/* au rôle 'ADMIN_TECH' (grâce au profil 'ADMIN_TECH'). insert into ROLE_PRIVILEGE (ROLE_ID, PRIVILEGE_ID) SELECT r.id as ROLE_ID, p.ID as PRIVILEGE_ID from PROFIL_PRIVILEGE pp join profil on PROFIL.ID = pp.PROFIL_ID and profil.ROLE_ID in (/*'ADMIN_TECH',*/ 'BU', 'BDD') join PRIVILEGE p on p.id = pp.PRIVILEGE_ID join CATEGORIE_PRIVILEGE cp on cp.id = p.CATEGORIE_ID and cp.CODE = 'fichier-divers' join role r on r.CODE = PROFIL.ROLE_ID where not exists ( select * from ROLE_PRIVILEGE rp where rp.ROLE_ID = r.id and rp.PRIVILEGE_ID = p.id );