From 6d171b7858b4005901a95e8fb7d85d6e92bebf99 Mon Sep 17 00:00:00 2001 From: Bertrand Gauthier <bertrand.gauthier@unicaen.fr> Date: Thu, 15 Feb 2018 14:07:31 +0100 Subject: [PATCH] Docker: Renommage de fichiers de config apache, ajout config HTTPS. --- Dockerfile.php7.dev | 25 +- README.md | 6 +- data/sql/vues-apogee-rouen.sql | 416 +++++++++++++++++++++ data/sql/vues-apogee.diff | 95 +++++ data/sql/vues-apogee.sql | 454 +++++++++++++++++++++++ docker-compose.yml | 5 +- docker/{ports.conf => apache-ports.conf} | 1 + docker/apache-site-ssl.conf | 20 + docker/apache-site.conf | 20 + docker/apache.conf | 17 - docker/php-opcache.ini | 7 + 11 files changed, 1037 insertions(+), 29 deletions(-) create mode 100644 data/sql/vues-apogee-rouen.sql create mode 100644 data/sql/vues-apogee.diff create mode 100644 data/sql/vues-apogee.sql rename docker/{ports.conf => apache-ports.conf} (50%) create mode 100644 docker/apache-site-ssl.conf create mode 100644 docker/apache-site.conf delete mode 100644 docker/apache.conf create mode 100644 docker/php-opcache.ini diff --git a/Dockerfile.php7.dev b/Dockerfile.php7.dev index 94bb6c0..616e0ba 100644 --- a/Dockerfile.php7.dev +++ b/Dockerfile.php7.dev @@ -12,6 +12,7 @@ LABEL maintainer="Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>" # Mise à niveau de la distrib. RUN apt-get update && apt-get install -y \ + ghostscript \ git \ libaio1 \ libcurl4-openssl-dev \ @@ -20,10 +21,12 @@ RUN apt-get update && apt-get install -y \ libjpeg62-turbo-dev \ libldap2-dev \ libmcrypt-dev \ + libmemcached-dev \ libssl-dev \ libxml2-dev \ make \ netcat-openbsd \ + ssl-cert \ subversion \ unzip \ vim \ @@ -31,11 +34,13 @@ RUN apt-get update && apt-get install -y \ zlib1g-dev \ && docker-php-ext-install -j$(nproc) iconv gettext gd soap curl intl zip \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu && docker-php-ext-install ldap \ + && docker-php-ext-configure opcache --enable-opcache && docker-php-ext-install opcache \ && rm -rf /var/lib/apt/lists/* # Installation d'extensions PECL RUN pear config-set http_proxy "$HTTP_PROXY" && \ - pecl install xdebug && docker-php-ext-enable xdebug + pecl install xdebug && docker-php-ext-enable xdebug && \ + pecl install memcached && docker-php-ext-enable memcached # Package PHP Oracle OCI8 ADD docker/instantclient-basiclite-linux.x64-12.2.0.1.0.zip /tmp/ @@ -48,18 +53,24 @@ RUN unzip /tmp/instantclient-basiclite-linux.x64-12.2.0.1.0.zip -d /usr/local/ & ln -s /usr/local/instantclient/libclntsh.so.12.1 /usr/local/instantclient/libclntsh.so && \ ln -s /usr/local/instantclient/sqlplus /usr/bin/sqlplus && \ echo 'export LD_LIBRARY_PATH="/usr/local/instantclient"' >> /etc/apache2/envvars && \ - echo 'export LD_LIBRARY_PATH="/usr/local/instantclient"' >> /root/.bashrc && \ - echo 'umask 002' >> /root/.bashrc && \ +# echo 'export LD_LIBRARY_PATH="/usr/local/instantclient"' >> /root/.bashrc && \ +# echo 'umask 002' >> /root/.bashrc && \ echo 'instantclient,/usr/local/instantclient' | pecl install oci8 && \ echo "extension=oci8.so" > /usr/local/etc/php/conf.d/php-oci8.ini +ENV LD_LIBRARY_PATH /usr/local/instantclient + # Config PHP. ADD docker/php.conf /usr/local/etc/php/conf.d/webapp.ini +#ADD docker/php-opcache.ini /usr/local/etc/php/conf.d/01-opcache.ini -# Configuration et activation du site Apache -ADD docker/apache.conf /etc/apache2/sites-available/webapp.conf -ADD docker/ports.conf /etc/apache2/ports.conf -RUN a2enmod rewrite && a2ensite webapp +# Configuration et activation des sites Apache +ADD docker/apache-ports.conf /etc/apache2/ports.conf +ADD docker/apache-site.conf /etc/apache2/sites-available/webapp.conf +ADD docker/apache-site-ssl.conf /etc/apache2/sites-available/webapp-ssl.conf +RUN a2enmod rewrite ssl && \ + a2ensite webapp && \ + a2ensite webapp-ssl # Install Composer. RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer diff --git a/README.md b/README.md index b4d6aaf..676927d 100644 --- a/README.md +++ b/README.md @@ -63,9 +63,9 @@ $ composer development-disable ``` -## Lancement du web service +## Lancement du web service *pour le dévelopement* -### Soit avec le built-in serveur PHP +### Solution 1 : le serveur interne PHP En phase de développement, la façon la plus simple consiste en l'utilisation du serveur interne de php : @@ -74,7 +74,7 @@ du serveur interne de php : $ php -S 0.0.0.0:8080 -ddisplay_errors=0 -t public public/index.php ``` -### Soit avec Docker +### Solution 2 : Docker Se placer à la racine des sources du ws pour lancer la commande suivante : diff --git a/data/sql/vues-apogee-rouen.sql b/data/sql/vues-apogee-rouen.sql new file mode 100644 index 0000000..0851009 --- /dev/null +++ b/data/sql/vues-apogee-rouen.sql @@ -0,0 +1,416 @@ +-- +-- Données APOGEE attendues. +-- + + +----------------------------- SOURCE ------------------------------ + +create or replace view APOGEE.OBJECTH_SOURCE as + select + 'apogee' as id, + 'Apogée' as libelle, + 1 as importable + from dual +; + + +----------------------------- VARIABLE ------------------------------ + +create or replace view APOGEE.OBJECTH_VARIABLE AS + select + cod_vap, + lib_vap, + par_vap + from variable_appli + where cod_vap in ( + 'ETB_LIB', + 'ETB_ART_ETB_LIB', + 'ETB_LIB_TIT_RESP', + 'ETB_LIB_NOM_RESP' + ); + + +----------------------------- INDIVIDU ------------------------------ + +create or replace view APOGEE.OBJECTH_INDIVIDU as + -- doctorants + select distinct + 'apogee' as source_id, -- Id de la source + 'doctorant' as type, + ind.cod_etu as id, -- Numero etudiant + decode(ind.cod_civ, 1, 'M.', 'Mme') as civ, -- Civilite etudiant + ind.lib_nom_pat_ind as lib_nom_pat_ind, -- Nom de famille etudiant + coalesce(ind.lib_nom_usu_ind, ind.lib_nom_pat_ind) as lib_nom_usu_ind, -- Nom usage etudiant + initcap(ind.lib_pr1_ind) as lib_pr1_ind, -- Prenom 1 etudiant + initcap(ind.lib_pr2_ind) as lib_pr2_ind, -- Prenom 2 etudiant + initcap(ind.lib_pr3_ind) as lib_pr3_ind, -- Prenom 3 etudiant + ucbn_ldap.etu2mail ( ind.cod_etu ) as email, -- Mail etudiant + --null as num_tel_ind, -- Téléphone + ind.date_nai_ind as date_nai_ind, -- Date naissance etudiant + ind.cod_pay_nat as cod_pay_nat, -- Code nationalite + pay.lib_nat as lib_nat -- Libelle nationalite + from these_hdr_sout ths + join diplome dip on dip.cod_dip = ths.cod_dip + join typ_diplome tpd on tpd.cod_tpd_etb = dip.cod_tpd_etb + join individu ind on ind.cod_ind = ths.cod_ind --and ind.cod_etu != 21009539 -- Exclusion du compte de test Aaron AAABA + join pays pay on pay.cod_pay = ind.cod_pay_nat + where ths.cod_ths_trv = '1' -- Exclusion des travaux + and dip.cod_tpd_etb in ( '39', '40' ) + and tpd.eta_ths_hdr_drt = 'T' -- Inscription en these + and tpd.tem_sante = 'N' -- Exclusion des theses d exercice + union + -- acteurs + select * from ( + with acteur as ( + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_dir as cod_per, + ths.cod_etb_dir as cod_etb, + ths.cod_cps_dir as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_dir is not null + union + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_cdr as cod_per, + ths.cod_etb_cdr as cod_etb, + ths.cod_cps_cdr as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_cdr is not null + union + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_cdr2 as cod_per, + ths.cod_etb_cdr2 as cod_etb, + ths.cod_cps_cdr2 as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_cdr2 is not null + union + select + trs.cod_ths, + 'R' as cod_roj, + trs.cod_per, + null as cod_etb, + null as cod_cps, + trs.tem_rap_recu, + null as cod_roj_compl + from ths_rap_sou trs + union + select + tjp.cod_ths, + 'M' as cod_roj, + tjp.cod_per, + tjp.cod_etb, + tjp.cod_cps, + null as tem_rap_recu, + case when tjp.cod_roj in ( 'P', 'B', 'A' ) then tjp.cod_roj else null end as cod_roj_compl + from ths_jur_per tjp + ) + select distinct + 'apogee' as source_id, + 'acteur' as type, + --coalesce(regexp_replace(per.num_dos_har_per,'[^0-9]',''), 'COD_PER_'||act.cod_per) as id, -- Code Harpege ou Apogee de l acteur + act.cod_per as id, -- Code Apogee de l acteur + initcap(per.cod_civ_per) as civ, -- Civilite acteur + --regexp_replace ( per.num_dos_har_per, '[^0-9]', '' ) as uid_per, -- uid de l acteur + per.lib_nom_usu_per as lib_nom_usu_ind, -- Nom d'usage acteur + per.LIB_NOM_PAT_PER as lib_nom_pat_ind, -- Nom de famille acteur + per.lib_pr1_per as lib_pr1_ind, -- Prenom 1 acteur + null as lib_pr2_ind, -- Prenom 2 acteur + null as lib_pr3_ind, -- Prenom 3 acteur + case when per.num_dos_har_per is null then null else ucbn_ldap.uid2mail ('p'||per.num_dos_har_per) end as email, -- Mail acteur + --regexp_replace ( per.num_tel_per, '[^0-9]', '' ) as num_tel_ind, -- Telephone acteur + per.dat_nai_per as date_nai_ind, -- Date naissance acteur + null as cod_pay_nat, -- Code nationalite + null as lib_nat -- Libelle nationalite + from acteur act + join role_jury roj on roj.cod_roj = act.cod_roj + join personnel per on per.cod_per = act.cod_per + --left join corps_per cps on cps.cod_cps = nvl ( act.cod_cps, per.cod_cps ) + --left join etablissement etb on etb.cod_etb = nvl ( act.cod_etb, per.cod_etb ) + --left join role_jury rjc on rjc.cod_roj = act.cod_roj_compl + ) +; + + +----------------------------- ROLE ------------------------------ + +create or replace view APOGEE.OBJECTH_ROLE as + select + 'apogee' as source_id, -- Id de la source + COD_ROJ as id, + LIB_ROJ, + LIC_ROJ + from role_jury; + + +----------------------------- DOCTORANT ------------------------------ + +create or replace view APOGEE.OBJECTH_DOCTORANT as + select distinct + 'apogee' as source_id, -- Id de la source + ind.cod_etu as id -- Numero etudiant + /* decode(ind.cod_civ, 1, 'M.', 'Mme') as civ_etu, -- Civilite etudiant + ind.lib_nom_pat_ind, -- Nom de famille etudiant + coalesce(ind.lib_nom_usu_ind, ind.lib_nom_pat_ind) as lib_nom_usu_ind, -- Nom usage etudiant + initcap(ind.lib_pr1_ind) lib_pr1_ind, -- Prenom etudiant + initcap(ind.lib_pr2_ind) lib_pr2_ind, -- Prenom etudiant + initcap(ind.lib_pr3_ind) lib_pr3_ind, -- Prenom etudiant + ucbn_ldap.etu2mail ( ind.cod_etu ) as mail_etu, -- Mail etudiant + ind.date_nai_ind, -- Date naissance etudiant + ind.cod_pay_nat, -- Code nationalite + pay.lib_nat -- Libelle nationalite*/ + from these_hdr_sout ths + join diplome dip on dip.cod_dip = ths.cod_dip + join typ_diplome tpd on tpd.cod_tpd_etb = dip.cod_tpd_etb + join individu ind on ind.cod_ind = ths.cod_ind --and ind.cod_etu != 21009539 -- Exclusion du compte de test Aaron AAABA + join pays pay on pay.cod_pay = ind.cod_pay_nat + where ths.cod_ths_trv = '1' -- Exclusion des travaux + and dip.cod_tpd_etb in ( '39', '40' ) + and tpd.eta_ths_hdr_drt = 'T' -- Inscription en these + and tpd.tem_sante = 'N' -- Exclusion des theses d exercice +; + + +----------------------------- THESE ------------------------------ + +create or replace view APOGEE.OBJECTH_THESE as + with inscription_administrative as ( + select + iae.cod_ind, + iae.cod_dip, + iae.cod_vrs_vdi, + dip.lib_dip, + max ( iae.cod_anu ) cod_anu_der_iae + from ins_adm_etp iae + join diplome dip on dip.cod_dip = iae.cod_dip + join typ_diplome tpd on tpd.cod_tpd_etb = dip.cod_tpd_etb + where iae.eta_iae = 'E' -- Inscription administrative non annulee + and iae.eta_pmt_iae = 'P' -- Inscription administrative payee + and dip.cod_tpd_etb in ( '39', '40' ) + and tpd.eta_ths_hdr_drt = 'T' -- Inscription en these + and tpd.tem_sante = 'N' -- Exclusion des theses d exercice + group by + iae.cod_ind, + iae.cod_dip, + iae.cod_vrs_vdi, + dip.lib_dip + ), + hierarchie_structures as ( + select + cod_cmp_inf, + cod_cmp_sup + from cmp_cmp + where connect_by_isleaf = 1 + connect by prior cod_cmp_sup = cod_cmp_inf + ) + select + 'apogee' as source_id, -- Id de la source + -- + -- -------- Enregistrement de la these -------- + -- + ths.cod_ths as id, -- Identifiant de la these + case when ths.eta_ths = 'S' and nvl ( ths.dat_sou_ths, sysdate + 1 ) > sysdate + then 'E' else ths.eta_ths end eta_ths, -- Etat de la these ( E=En cours / A=Abandonnee / S=Soutenue / U=Transferee ) + ind.cod_etu as individu_id, -- Numero etudiant + --iae.cod_dip, -- Code diplome + --iae.cod_vrs_vdi, -- Version de diplome + --nvl ( vdi.lib_web_vdi, iae.lib_dip ) lib_web_vdi, -- Libelle version de diplome + ths.cod_dis, -- Code discipline + dis.lib_int1_dis, -- Libellé discipline + ths.lib_ths, -- Titre de la these + ths.cod_lng, -- Code langue etrangere du titre + --lng.lib_lng, -- Libelle langue etrangere du titre + --lng.lib_nls_lng, -- Parametre Oracle NLS_LANG + --ths.lib_ths_lng, -- Titre de la these dans la langue etrangere + ths.dat_deb_ths, -- Date de 1ere inscription + --iae.cod_anu_der_iae, -- Code annee de derniere inscription + --ths.daa_fin_ths, -- Code annee previsionnelle de soutenance + --ans.lib_anu lib_anu_fin_ths, -- Libelle annee previsionnelle de soutenance + --ths.cod_edo, -- Code ecole doctorale + edo.cod_nat_edo, -- Identifiant national ecole doctorale + --edo.lib_edo, -- Denomination ecole doctorale + --ths.cod_ser, -- Code secteur de recherche principal + --ser.lib_ser, -- Denomination secteur de recherche principal + ths.cod_eqr, -- Code unite de recherche principale + --eqr.lib_eqr, -- Denomination unite de recherche principale + --ths.lib_cmt_ths, -- Informations complementaires sur la these + -- + -- ----------------------------- Cotutelle ----------------------------- + -- + --ths.tem_cot_ths, -- Cotutelle (O/N) + --ths.lib_cmt_cot_ths, -- Descriptif cotutelle + --ths.cod_pay, -- Code pays de cotutelle + pay.lib_pay, -- Denomination pays de cotutelle + --ths.cod_etb cod_etb_cot, -- Code etablissement de cotutelle + nvl ( etb.lib_web_etb, etb.lib_etb ) lib_etb_cot, -- Denomination etablissement de cotutelle + --ths.dat_sign_cnv, -- Date de signature de la convention de cotutelle + ths.tem_avenant, -- Avenant a la convention de cotutelle (O/N) + --ths.tem_etb_sou, -- Soutenance dans l etablissement d inscription (V) ou dans l etablissement de cotutelle (E) + --ths.lib_cmt_compl, -- Info complementaire sur cotutelle + -- + -- -------- Abandon ou transferts -------- + -- + --ths.dat_abandon, -- Date d abandon de la these + --ths.dat_transfert_dep, -- Date de transfert depart + --ths.tem_transfert_arr, -- Transfert arrivee (O/N) + --ths.dat_deb_ths_ori, -- Date de debut de la these dans l etablissement d origine + --ths.cod_etb_origine, -- Code etablissement d origine + --nvl ( ori.lib_web_etb, ori.lib_etb ) lib_etb_origine, -- Denomination etablissement d origine + -- + -- -------- Expertise des rapporteurs -------- + -- + --ths.dat_des_rap_ths, -- Date de designation des rapporteurs + -- + -- -------- Organisation de la soutenance -------- + -- + --ths.duree_ths, -- Duree de la these en mois + --ths.eta_duree_ths, -- Etat de la duree de la these ( M=Modifiee? / C=Calculee? ) + ths.dat_prev_sou, -- Date previsionnelle de soutenance + ths.tem_sou_aut_ths, -- Soutenance autorisee (O/N/null) + ths.dat_aut_sou_ths, -- Date d autorisation de soutenance + --ths.lib_cmt_sou_aut_ths, -- Commentaire associe a la non autorisation de soutenance + --ths.lib_cmt_leu_sou_ths, -- Lieu de la soutenance + --ths.cod_etb_sou, -- Code etablissement du lieu de soutenance + --nvl ( sou.lib_web_etb, sou.lib_etb ) lib_etb_sou, -- Denomination etablissement du lieu de soutenance + ths.dat_sou_ths, -- Date de soutenance de la these + --ths.hh_sou_ths, -- Heure de soutenance (hh) + --ths.mm_sou_ths, -- Heure de soutenance (mi) + --cmp.cod_cmp, -- Code composante + --cmp.lib_web_cmp, -- Libelle composante + --ths.tem_aut_etb_sou_ths, -- Soutenance dans autre etablissement si cotutelle (O/N) + -- + -- -------- Confidentialite -------- + -- + --ths.tem_pub_sou_ths, -- Soutenance publique (O/N) + --ths.lib_cmt_pub_sou_ths, -- Commentaire associe a la confidentialite de la these + ths.dat_fin_cfd_ths, -- Date de fin de confidentialite de la these + -- + -- -------- Jury et resultats -------- + -- + --ths.dat_des_jur_ths, -- Date de designation du jury + -- rvi.cod_anu cod_anu_rvi, -- Code annee universitaire du resultat + --anr.lib_anu lib_anu_rvi, -- Libelle annee universitaire du resultat + tre.cod_neg_tre, -- Resultat positif (1) ou non (0) + --rvi.cod_tre, -- Code resultat + --tre.lib_tre, -- Libelle resultat + --rvi.cod_men, -- Code mention + --men.lib_men, -- Libelle mention + --ths.tem_lab_eur_ths, -- Label europeen (O/N) + ths.eta_rpd_ths, -- Reproduction de la these ( O=Oui / C=Oui avec corrections / N=Non ) + decode(ths.eta_rpd_ths, 'N', 'majeure', 'C', 'mineure', null) as correction_possible + --ths.tem_cor_ths, -- Corrections effectuees (O/N) + --ths.tem_pv_transmis, -- PV de soutenance transmis (O/N) + --ths.tem_rap_transmis, -- Rapport de soutenance transmis (O/N) + --ths.tem_stop_mvt_abes -- Aucun mouvement ne doit etre genere vers l ABES (O/N) + from inscription_administrative iae + join individu ind on ind.cod_ind = iae.cod_ind + join version_diplome vdi on vdi.cod_dip = iae.cod_dip and vdi.cod_vrs_vdi = iae.cod_vrs_vdi + join these_hdr_sout ths on ths.cod_ind = iae.cod_ind and ths.cod_dip = iae.cod_dip and ths.cod_vrs_vdi = iae.cod_vrs_vdi + left join annee_uni ans on ans.cod_anu = ths.daa_fin_ths + left join ecole_doctorale edo on edo.cod_edo = ths.cod_edo + left join secteur_rch ser on ser.cod_ser = ths.cod_ser + left join equipe_rch eqr on eqr.cod_eqr = ths.cod_eqr + left join resultat_vdi rvi on rvi.cod_ind = iae.cod_ind and rvi.cod_dip = iae.cod_dip and rvi.cod_vrs_vdi = iae.cod_vrs_vdi and rvi.cod_ses = '0' and rvi.cod_adm = '1' and rvi.cod_tre is not null + left join annee_uni anr on anr.cod_anu = rvi.cod_anu + left join typ_resultat tre on tre.cod_tre = rvi.cod_tre + left join mention men on men.cod_men = rvi.cod_men + left join hierarchie_structures ccm on ccm.cod_cmp_inf = ths.cod_cmp + left join composante cmp on cmp.cod_cmp = nvl ( ccm.cod_cmp_sup, ths.cod_cmp ) + left join diplome_sise dis on dis.cod_dis = ths.cod_dis + left join etablissement etb on etb.cod_etb = ths.cod_etb + left join pays pay on pay.cod_pay = ths.cod_pay + left join etablissement sou on sou.cod_etb = ths.cod_etb_sou + left join etablissement ori on ori.cod_etb = ths.cod_etb_origine + left join langue lng on lng.cod_lng = ths.cod_lng + where ths.cod_ths_trv = '1' -- Exclusion des travaux +; + + +----------------------------- ACTEUR ------------------------------ + +create or replace view APOGEE.OBJECTH_ACTEUR as + with acteur as ( + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_dir as cod_per, + ths.cod_etb_dir as cod_etb, + ths.cod_cps_dir as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_dir is not null + union + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_cdr as cod_per, + ths.cod_etb_cdr as cod_etb, + ths.cod_cps_cdr as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_cdr is not null + union + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_cdr2 as cod_per, + ths.cod_etb_cdr2 as cod_etb, + ths.cod_cps_cdr2 as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_cdr2 is not null + union + select + trs.cod_ths, + 'R' as cod_roj, + trs.cod_per, + null as cod_etb, + null as cod_cps, + trs.tem_rap_recu, + null as cod_roj_compl + from ths_rap_sou trs + union + select + tjp.cod_ths, + 'M' as cod_roj, + tjp.cod_per, + tjp.cod_etb, + tjp.cod_cps, + null as tem_rap_recu, + case when tjp.cod_roj in ( 'P', 'B', 'A' ) then tjp.cod_roj else null end as cod_roj_compl + from ths_jur_per tjp + ) + select distinct + 'apogee' as source_id, -- Id de la source + act.cod_ths as these_id, -- Identifiant de la these + roj.cod_roj as role_id, -- Code du role de l acteur + cast(act.cod_roj_compl as varchar2(1 char)) as cod_roj_compl, -- Code du complement sur le role dans le jury + rjc.lib_roj as lib_roj_compl, -- Libelle du complement sur le role dans le jury + act.cod_per as individu_id, -- Code Apogee de l acteur + --regexp_replace ( per.num_dos_har_per, '[^0-9]', '' ) as uid_per, -- uid de l acteur + act.cod_etb, -- Code etablissement + etb.lib_etb, -- Libelle etablissement + cps.cod_cps, -- Code du corps d'appartenance + cps.lib_cps, -- Libelle du corps d'appartenance + per.tem_hab_rch_per, -- HDR (O/N) + act.tem_rap_recu -- Rapport recu (O/N) + from acteur act + join role_jury roj on roj.cod_roj = act.cod_roj + join personnel per on per.cod_per = act.cod_per + left join corps_per cps on cps.cod_cps = nvl ( act.cod_cps, per.cod_cps ) + left join etablissement etb on etb.cod_etb = nvl ( act.cod_etb, per.cod_etb ) + left join role_jury rjc on rjc.cod_roj = act.cod_roj_compl +; diff --git a/data/sql/vues-apogee.diff b/data/sql/vues-apogee.diff new file mode 100644 index 0000000..b29173c --- /dev/null +++ b/data/sql/vues-apogee.diff @@ -0,0 +1,95 @@ +11d10 +< 'apogee' as code, +22,23d20 +< 'apogee' as source_id, -- Id de la source +< cod_vap as id, +26,28c23 +< par_vap, +< to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE, +< to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE +--- +> par_vap +35,65c30 +< ) +< union all +< select +< 'apogee' as source_id, +< 'EMAIL_ASSISTANCE' as id, +< 'EMAIL_ASSISTANCE' as cod_vap, +< 'Adresse mail de l''assistance utilisateur' as lib_vap, +< 'assistance-sygal@unicaen.fr' as par_vap, +< to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE, +< to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE +< from dual +< union all +< select +< 'apogee' as source_id, +< 'EMAIL_BU' as id, +< 'EMAIL_BU' as cod_vap, +< 'Adresse mail de contact de la BU' as lib_vap, +< 'scd.theses@unicaen.fr' as par_vap, +< to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE, +< to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE +< from dual +< union all +< select +< 'apogee' as source_id, +< 'EMAIL_BDD' as id, +< 'EMAIL_BDD' as cod_vap, +< 'Adresse mail de contact du bureau des doctorats' as lib_vap, +< 'recherche.doctorat@unicaen.fr' as par_vap, +< to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE, +< to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE +< from dual; +--- +> ); +75c40 +< to_char(ind.cod_etu) as id, -- Numero etudiant +--- +> ind.cod_etu as id, -- Numero etudiant +79c44 +< initcap(coalesce(ind.lib_pr1_ind,'Aucun')) as lib_pr1_ind, -- Prenom 1 etudiant +--- +> initcap(ind.lib_pr1_ind) as lib_pr1_ind, -- Prenom 1 etudiant +82c47 +< null as email,--ucbn_ldap.etu2mail ( ind.cod_etu ) as email, -- Mail etudiant +--- +> ucbn_ldap.etu2mail ( ind.cod_etu ) as email, -- Mail etudiant +96d60 +< and ind.cod_etu is not null -- oui, oui, ça arrive +99c63 +< select "SOURCE_ID","TYPE","ID","CIV","LIB_NOM_USU_IND","LIB_NOM_PAT_IND","LIB_PR1_IND","LIB_PR2_IND","LIB_PR3_IND","EMAIL","DATE_NAI_IND","COD_PAY_NAT","LIB_NAT" from ( +--- +> select * from ( +157,158c121,122 +< coalesce(regexp_replace(per.num_dos_har_per,'[^0-9]',''), 'COD_PER_'||act.cod_per) as id, -- Code Harpege ou Apogee de l acteur +< --act.cod_per as id, -- Code Apogee de l acteur +--- +> --coalesce(regexp_replace(per.num_dos_har_per,'[^0-9]',''), 'COD_PER_'||act.cod_per) as id, -- Code Harpege ou Apogee de l acteur +> act.cod_per as id, -- Code Apogee de l acteur +166c130 +< null as email,--case when per.num_dos_har_per is null then null else ucbn_ldap.uid2mail ('p'||per.num_dos_har_per) end as email, -- Mail acteur +--- +> case when per.num_dos_har_per is null then null else ucbn_ldap.uid2mail ('p'||per.num_dos_har_per) end as email, -- Mail acteur +197,198c161 +< ind.cod_etu as id, -- Identifiant du doctorant +< ind.cod_etu as individu_id -- Identifiant de l'individu +--- +> ind.cod_etu as id -- Numero etudiant +218d180 +< and cod_etu is not null -- oui, oui, ça arrive +262c224 +< ind.cod_etu doctorant_id, -- Identifiant du doctorant +--- +> ind.cod_etu as individu_id, -- Numero etudiant +435d396 +< rownum as id, +438c399 +< roj.cod_roj as role_id, -- Identifiant du rôle +--- +> roj.cod_roj as role_id, -- Code du role de l acteur +441c402,403 +< coalesce(regexp_replace(per.num_dos_har_per,'[^0-9]',''), 'COD_PER_'||act.cod_per) as individu_id, -- Code Harpege ou Apogee de l acteur +--- +> act.cod_per as individu_id, -- Code Apogee de l acteur +> --regexp_replace ( per.num_dos_har_per, '[^0-9]', '' ) as uid_per, -- uid de l acteur diff --git a/data/sql/vues-apogee.sql b/data/sql/vues-apogee.sql new file mode 100644 index 0000000..1e82473 --- /dev/null +++ b/data/sql/vues-apogee.sql @@ -0,0 +1,454 @@ +-- +-- Données APOGEE attendues. +-- + + +----------------------------- SOURCE ------------------------------ + +create or replace view APOGEE.OBJECTH_SOURCE as + select + 'apogee' as id, + 'apogee' as code, + 'Apogée' as libelle, + 1 as importable + from dual +; + + +----------------------------- VARIABLE ------------------------------ + +create or replace view APOGEE.OBJECTH_VARIABLE AS + select + 'apogee' as source_id, -- Id de la source + cod_vap as id, + cod_vap, + lib_vap, + par_vap, + to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE, + to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE + from variable_appli + where cod_vap in ( + 'ETB_LIB', + 'ETB_ART_ETB_LIB', + 'ETB_LIB_TIT_RESP', + 'ETB_LIB_NOM_RESP' + ) + union all + select + 'apogee' as source_id, + 'EMAIL_ASSISTANCE' as id, + 'EMAIL_ASSISTANCE' as cod_vap, + 'Adresse mail de l''assistance utilisateur' as lib_vap, + 'assistance-sygal@unicaen.fr' as par_vap, + to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE, + to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE + from dual + union all + select + 'apogee' as source_id, + 'EMAIL_BU' as id, + 'EMAIL_BU' as cod_vap, + 'Adresse mail de contact de la BU' as lib_vap, + 'scd.theses@unicaen.fr' as par_vap, + to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE, + to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE + from dual + union all + select + 'apogee' as source_id, + 'EMAIL_BDD' as id, + 'EMAIL_BDD' as cod_vap, + 'Adresse mail de contact du bureau des doctorats' as lib_vap, + 'recherche.doctorat@unicaen.fr' as par_vap, + to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE, + to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE + from dual; + + +----------------------------- INDIVIDU ------------------------------ + +create or replace view APOGEE.OBJECTH_INDIVIDU as + -- doctorants + select distinct + 'apogee' as source_id, -- Id de la source + 'doctorant' as type, + to_char(ind.cod_etu) as id, -- Numero etudiant + decode(ind.cod_civ, 1, 'M.', 'Mme') as civ, -- Civilite etudiant + ind.lib_nom_pat_ind as lib_nom_pat_ind, -- Nom de famille etudiant + coalesce(ind.lib_nom_usu_ind, ind.lib_nom_pat_ind) as lib_nom_usu_ind, -- Nom usage etudiant + initcap(coalesce(ind.lib_pr1_ind,'Aucun')) as lib_pr1_ind, -- Prenom 1 etudiant + initcap(ind.lib_pr2_ind) as lib_pr2_ind, -- Prenom 2 etudiant + initcap(ind.lib_pr3_ind) as lib_pr3_ind, -- Prenom 3 etudiant + null as email,--ucbn_ldap.etu2mail ( ind.cod_etu ) as email, -- Mail etudiant + --null as num_tel_ind, -- Téléphone + ind.date_nai_ind as date_nai_ind, -- Date naissance etudiant + ind.cod_pay_nat as cod_pay_nat, -- Code nationalite + pay.lib_nat as lib_nat -- Libelle nationalite + from these_hdr_sout ths + join diplome dip on dip.cod_dip = ths.cod_dip + join typ_diplome tpd on tpd.cod_tpd_etb = dip.cod_tpd_etb + join individu ind on ind.cod_ind = ths.cod_ind --and ind.cod_etu != 21009539 -- Exclusion du compte de test Aaron AAABA + join pays pay on pay.cod_pay = ind.cod_pay_nat + where ths.cod_ths_trv = '1' -- Exclusion des travaux + and dip.cod_tpd_etb in ( '39', '40' ) + and tpd.eta_ths_hdr_drt = 'T' -- Inscription en these + and tpd.tem_sante = 'N' -- Exclusion des theses d exercice + and ind.cod_etu is not null -- oui, oui, ça arrive + union + -- acteurs + select "SOURCE_ID","TYPE","ID","CIV","LIB_NOM_USU_IND","LIB_NOM_PAT_IND","LIB_PR1_IND","LIB_PR2_IND","LIB_PR3_IND","EMAIL","DATE_NAI_IND","COD_PAY_NAT","LIB_NAT" from ( + with acteur as ( + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_dir as cod_per, + ths.cod_etb_dir as cod_etb, + ths.cod_cps_dir as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_dir is not null + union + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_cdr as cod_per, + ths.cod_etb_cdr as cod_etb, + ths.cod_cps_cdr as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_cdr is not null + union + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_cdr2 as cod_per, + ths.cod_etb_cdr2 as cod_etb, + ths.cod_cps_cdr2 as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_cdr2 is not null + union + select + trs.cod_ths, + 'R' as cod_roj, + trs.cod_per, + null as cod_etb, + null as cod_cps, + trs.tem_rap_recu, + null as cod_roj_compl + from ths_rap_sou trs + union + select + tjp.cod_ths, + 'M' as cod_roj, + tjp.cod_per, + tjp.cod_etb, + tjp.cod_cps, + null as tem_rap_recu, + case when tjp.cod_roj in ( 'P', 'B', 'A' ) then tjp.cod_roj else null end as cod_roj_compl + from ths_jur_per tjp + ) + select distinct + 'apogee' as source_id, + 'acteur' as type, + coalesce(regexp_replace(per.num_dos_har_per,'[^0-9]',''), 'COD_PER_'||act.cod_per) as id, -- Code Harpege ou Apogee de l acteur + --act.cod_per as id, -- Code Apogee de l acteur + initcap(per.cod_civ_per) as civ, -- Civilite acteur + --regexp_replace ( per.num_dos_har_per, '[^0-9]', '' ) as uid_per, -- uid de l acteur + per.lib_nom_usu_per as lib_nom_usu_ind, -- Nom d'usage acteur + per.LIB_NOM_PAT_PER as lib_nom_pat_ind, -- Nom de famille acteur + per.lib_pr1_per as lib_pr1_ind, -- Prenom 1 acteur + null as lib_pr2_ind, -- Prenom 2 acteur + null as lib_pr3_ind, -- Prenom 3 acteur + null as email,--case when per.num_dos_har_per is null then null else ucbn_ldap.uid2mail ('p'||per.num_dos_har_per) end as email, -- Mail acteur + --regexp_replace ( per.num_tel_per, '[^0-9]', '' ) as num_tel_ind, -- Telephone acteur + per.dat_nai_per as date_nai_ind, -- Date naissance acteur + null as cod_pay_nat, -- Code nationalite + null as lib_nat -- Libelle nationalite + from acteur act + join role_jury roj on roj.cod_roj = act.cod_roj + join personnel per on per.cod_per = act.cod_per + --left join corps_per cps on cps.cod_cps = nvl ( act.cod_cps, per.cod_cps ) + --left join etablissement etb on etb.cod_etb = nvl ( act.cod_etb, per.cod_etb ) + --left join role_jury rjc on rjc.cod_roj = act.cod_roj_compl + ) +; + + +----------------------------- ROLE ------------------------------ + +create or replace view APOGEE.OBJECTH_ROLE as + select + 'apogee' as source_id, -- Id de la source + COD_ROJ as id, + LIB_ROJ, + LIC_ROJ + from role_jury; + + +----------------------------- DOCTORANT ------------------------------ + +create or replace view APOGEE.OBJECTH_DOCTORANT as + select distinct + 'apogee' as source_id, -- Id de la source + ind.cod_etu as id, -- Identifiant du doctorant + ind.cod_etu as individu_id -- Identifiant de l'individu + /* decode(ind.cod_civ, 1, 'M.', 'Mme') as civ_etu, -- Civilite etudiant + ind.lib_nom_pat_ind, -- Nom de famille etudiant + coalesce(ind.lib_nom_usu_ind, ind.lib_nom_pat_ind) as lib_nom_usu_ind, -- Nom usage etudiant + initcap(ind.lib_pr1_ind) lib_pr1_ind, -- Prenom etudiant + initcap(ind.lib_pr2_ind) lib_pr2_ind, -- Prenom etudiant + initcap(ind.lib_pr3_ind) lib_pr3_ind, -- Prenom etudiant + ucbn_ldap.etu2mail ( ind.cod_etu ) as mail_etu, -- Mail etudiant + ind.date_nai_ind, -- Date naissance etudiant + ind.cod_pay_nat, -- Code nationalite + pay.lib_nat -- Libelle nationalite*/ + from these_hdr_sout ths + join diplome dip on dip.cod_dip = ths.cod_dip + join typ_diplome tpd on tpd.cod_tpd_etb = dip.cod_tpd_etb + join individu ind on ind.cod_ind = ths.cod_ind --and ind.cod_etu != 21009539 -- Exclusion du compte de test Aaron AAABA + join pays pay on pay.cod_pay = ind.cod_pay_nat + where ths.cod_ths_trv = '1' -- Exclusion des travaux + and dip.cod_tpd_etb in ( '39', '40' ) + and tpd.eta_ths_hdr_drt = 'T' -- Inscription en these + and tpd.tem_sante = 'N' -- Exclusion des theses d exercice + and cod_etu is not null -- oui, oui, ça arrive +; + + +----------------------------- THESE ------------------------------ + +create or replace view APOGEE.OBJECTH_THESE as + with inscription_administrative as ( + select + iae.cod_ind, + iae.cod_dip, + iae.cod_vrs_vdi, + dip.lib_dip, + max ( iae.cod_anu ) cod_anu_der_iae + from ins_adm_etp iae + join diplome dip on dip.cod_dip = iae.cod_dip + join typ_diplome tpd on tpd.cod_tpd_etb = dip.cod_tpd_etb + where iae.eta_iae = 'E' -- Inscription administrative non annulee + and iae.eta_pmt_iae = 'P' -- Inscription administrative payee + and dip.cod_tpd_etb in ( '39', '40' ) + and tpd.eta_ths_hdr_drt = 'T' -- Inscription en these + and tpd.tem_sante = 'N' -- Exclusion des theses d exercice + group by + iae.cod_ind, + iae.cod_dip, + iae.cod_vrs_vdi, + dip.lib_dip + ), + hierarchie_structures as ( + select + cod_cmp_inf, + cod_cmp_sup + from cmp_cmp + where connect_by_isleaf = 1 + connect by prior cod_cmp_sup = cod_cmp_inf + ) + select + 'apogee' as source_id, -- Id de la source + -- + -- -------- Enregistrement de la these -------- + -- + ths.cod_ths as id, -- Identifiant de la these + case when ths.eta_ths = 'S' and nvl ( ths.dat_sou_ths, sysdate + 1 ) > sysdate + then 'E' else ths.eta_ths end eta_ths, -- Etat de la these ( E=En cours / A=Abandonnee / S=Soutenue / U=Transferee ) + ind.cod_etu doctorant_id, -- Identifiant du doctorant + --iae.cod_dip, -- Code diplome + --iae.cod_vrs_vdi, -- Version de diplome + --nvl ( vdi.lib_web_vdi, iae.lib_dip ) lib_web_vdi, -- Libelle version de diplome + ths.cod_dis, -- Code discipline + dis.lib_int1_dis, -- Libellé discipline + ths.lib_ths, -- Titre de la these + ths.cod_lng, -- Code langue etrangere du titre + --lng.lib_lng, -- Libelle langue etrangere du titre + --lng.lib_nls_lng, -- Parametre Oracle NLS_LANG + --ths.lib_ths_lng, -- Titre de la these dans la langue etrangere + ths.dat_deb_ths, -- Date de 1ere inscription + --iae.cod_anu_der_iae, -- Code annee de derniere inscription + --ths.daa_fin_ths, -- Code annee previsionnelle de soutenance + --ans.lib_anu lib_anu_fin_ths, -- Libelle annee previsionnelle de soutenance + --ths.cod_edo, -- Code ecole doctorale + edo.cod_nat_edo, -- Identifiant national ecole doctorale + --edo.lib_edo, -- Denomination ecole doctorale + --ths.cod_ser, -- Code secteur de recherche principal + --ser.lib_ser, -- Denomination secteur de recherche principal + ths.cod_eqr, -- Code unite de recherche principale + --eqr.lib_eqr, -- Denomination unite de recherche principale + --ths.lib_cmt_ths, -- Informations complementaires sur la these + -- + -- ----------------------------- Cotutelle ----------------------------- + -- + --ths.tem_cot_ths, -- Cotutelle (O/N) + --ths.lib_cmt_cot_ths, -- Descriptif cotutelle + --ths.cod_pay, -- Code pays de cotutelle + pay.lib_pay, -- Denomination pays de cotutelle + --ths.cod_etb cod_etb_cot, -- Code etablissement de cotutelle + nvl ( etb.lib_web_etb, etb.lib_etb ) lib_etb_cot, -- Denomination etablissement de cotutelle + --ths.dat_sign_cnv, -- Date de signature de la convention de cotutelle + ths.tem_avenant, -- Avenant a la convention de cotutelle (O/N) + --ths.tem_etb_sou, -- Soutenance dans l etablissement d inscription (V) ou dans l etablissement de cotutelle (E) + --ths.lib_cmt_compl, -- Info complementaire sur cotutelle + -- + -- -------- Abandon ou transferts -------- + -- + --ths.dat_abandon, -- Date d abandon de la these + --ths.dat_transfert_dep, -- Date de transfert depart + --ths.tem_transfert_arr, -- Transfert arrivee (O/N) + --ths.dat_deb_ths_ori, -- Date de debut de la these dans l etablissement d origine + --ths.cod_etb_origine, -- Code etablissement d origine + --nvl ( ori.lib_web_etb, ori.lib_etb ) lib_etb_origine, -- Denomination etablissement d origine + -- + -- -------- Expertise des rapporteurs -------- + -- + --ths.dat_des_rap_ths, -- Date de designation des rapporteurs + -- + -- -------- Organisation de la soutenance -------- + -- + --ths.duree_ths, -- Duree de la these en mois + --ths.eta_duree_ths, -- Etat de la duree de la these ( M=Modifiee? / C=Calculee? ) + ths.dat_prev_sou, -- Date previsionnelle de soutenance + ths.tem_sou_aut_ths, -- Soutenance autorisee (O/N/null) + ths.dat_aut_sou_ths, -- Date d autorisation de soutenance + --ths.lib_cmt_sou_aut_ths, -- Commentaire associe a la non autorisation de soutenance + --ths.lib_cmt_leu_sou_ths, -- Lieu de la soutenance + --ths.cod_etb_sou, -- Code etablissement du lieu de soutenance + --nvl ( sou.lib_web_etb, sou.lib_etb ) lib_etb_sou, -- Denomination etablissement du lieu de soutenance + ths.dat_sou_ths, -- Date de soutenance de la these + --ths.hh_sou_ths, -- Heure de soutenance (hh) + --ths.mm_sou_ths, -- Heure de soutenance (mi) + --cmp.cod_cmp, -- Code composante + --cmp.lib_web_cmp, -- Libelle composante + --ths.tem_aut_etb_sou_ths, -- Soutenance dans autre etablissement si cotutelle (O/N) + -- + -- -------- Confidentialite -------- + -- + --ths.tem_pub_sou_ths, -- Soutenance publique (O/N) + --ths.lib_cmt_pub_sou_ths, -- Commentaire associe a la confidentialite de la these + ths.dat_fin_cfd_ths, -- Date de fin de confidentialite de la these + -- + -- -------- Jury et resultats -------- + -- + --ths.dat_des_jur_ths, -- Date de designation du jury + -- rvi.cod_anu cod_anu_rvi, -- Code annee universitaire du resultat + --anr.lib_anu lib_anu_rvi, -- Libelle annee universitaire du resultat + tre.cod_neg_tre, -- Resultat positif (1) ou non (0) + --rvi.cod_tre, -- Code resultat + --tre.lib_tre, -- Libelle resultat + --rvi.cod_men, -- Code mention + --men.lib_men, -- Libelle mention + --ths.tem_lab_eur_ths, -- Label europeen (O/N) + ths.eta_rpd_ths, -- Reproduction de la these ( O=Oui / C=Oui avec corrections / N=Non ) + decode(ths.eta_rpd_ths, 'N', 'majeure', 'C', 'mineure', null) as correction_possible + --ths.tem_cor_ths, -- Corrections effectuees (O/N) + --ths.tem_pv_transmis, -- PV de soutenance transmis (O/N) + --ths.tem_rap_transmis, -- Rapport de soutenance transmis (O/N) + --ths.tem_stop_mvt_abes -- Aucun mouvement ne doit etre genere vers l ABES (O/N) + from inscription_administrative iae + join individu ind on ind.cod_ind = iae.cod_ind + join version_diplome vdi on vdi.cod_dip = iae.cod_dip and vdi.cod_vrs_vdi = iae.cod_vrs_vdi + join these_hdr_sout ths on ths.cod_ind = iae.cod_ind and ths.cod_dip = iae.cod_dip and ths.cod_vrs_vdi = iae.cod_vrs_vdi + left join annee_uni ans on ans.cod_anu = ths.daa_fin_ths + left join ecole_doctorale edo on edo.cod_edo = ths.cod_edo + left join secteur_rch ser on ser.cod_ser = ths.cod_ser + left join equipe_rch eqr on eqr.cod_eqr = ths.cod_eqr + left join resultat_vdi rvi on rvi.cod_ind = iae.cod_ind and rvi.cod_dip = iae.cod_dip and rvi.cod_vrs_vdi = iae.cod_vrs_vdi and rvi.cod_ses = '0' and rvi.cod_adm = '1' and rvi.cod_tre is not null + left join annee_uni anr on anr.cod_anu = rvi.cod_anu + left join typ_resultat tre on tre.cod_tre = rvi.cod_tre + left join mention men on men.cod_men = rvi.cod_men + left join hierarchie_structures ccm on ccm.cod_cmp_inf = ths.cod_cmp + left join composante cmp on cmp.cod_cmp = nvl ( ccm.cod_cmp_sup, ths.cod_cmp ) + left join diplome_sise dis on dis.cod_dis = ths.cod_dis + left join etablissement etb on etb.cod_etb = ths.cod_etb + left join pays pay on pay.cod_pay = ths.cod_pay + left join etablissement sou on sou.cod_etb = ths.cod_etb_sou + left join etablissement ori on ori.cod_etb = ths.cod_etb_origine + left join langue lng on lng.cod_lng = ths.cod_lng + where ths.cod_ths_trv = '1' -- Exclusion des travaux +; + + +----------------------------- ACTEUR ------------------------------ + +create or replace view APOGEE.OBJECTH_ACTEUR as + with acteur as ( + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_dir as cod_per, + ths.cod_etb_dir as cod_etb, + ths.cod_cps_dir as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_dir is not null + union + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_cdr as cod_per, + ths.cod_etb_cdr as cod_etb, + ths.cod_cps_cdr as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_cdr is not null + union + select + ths.cod_ths, + 'D' as cod_roj, + ths.cod_per_cdr2 as cod_per, + ths.cod_etb_cdr2 as cod_etb, + ths.cod_cps_cdr2 as cod_cps, + null as tem_rap_recu, + null as cod_roj_compl + from these_hdr_sout ths + where ths.cod_ths_trv = '1' and ths.cod_per_cdr2 is not null + union + select + trs.cod_ths, + 'R' as cod_roj, + trs.cod_per, + null as cod_etb, + null as cod_cps, + trs.tem_rap_recu, + null as cod_roj_compl + from ths_rap_sou trs + union + select + tjp.cod_ths, + 'M' as cod_roj, + tjp.cod_per, + tjp.cod_etb, + tjp.cod_cps, + null as tem_rap_recu, + case when tjp.cod_roj in ( 'P', 'B', 'A' ) then tjp.cod_roj else null end as cod_roj_compl + from ths_jur_per tjp + ) + select distinct + rownum as id, + 'apogee' as source_id, -- Id de la source + act.cod_ths as these_id, -- Identifiant de la these + roj.cod_roj as role_id, -- Identifiant du rôle + cast(act.cod_roj_compl as varchar2(1 char)) as cod_roj_compl, -- Code du complement sur le role dans le jury + rjc.lib_roj as lib_roj_compl, -- Libelle du complement sur le role dans le jury + coalesce(regexp_replace(per.num_dos_har_per,'[^0-9]',''), 'COD_PER_'||act.cod_per) as individu_id, -- Code Harpege ou Apogee de l acteur + act.cod_etb, -- Code etablissement + etb.lib_etb, -- Libelle etablissement + cps.cod_cps, -- Code du corps d'appartenance + cps.lib_cps, -- Libelle du corps d'appartenance + per.tem_hab_rch_per, -- HDR (O/N) + act.tem_rap_recu -- Rapport recu (O/N) + from acteur act + join role_jury roj on roj.cod_roj = act.cod_roj + join personnel per on per.cod_per = act.cod_per + left join corps_per cps on cps.cod_cps = nvl ( act.cod_cps, per.cod_cps ) + left join etablissement etb on etb.cod_etb = nvl ( act.cod_etb, per.cod_etb ) + left join role_jury rjc on rjc.cod_roj = act.cod_roj_compl +; diff --git a/docker-compose.yml b/docker-compose.yml index ab5ff36..b82a65a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,8 @@ services: dockerfile: Dockerfile.php7.dev ports: - "8080:8080" + - "8443:8443" volumes: - - .:/sygal-import-ws - working_dir: /sygal-import-ws + - .:/var/www/html/sygal-import-ws + working_dir: /var/www/html/sygal-import-ws network_mode: bridge diff --git a/docker/ports.conf b/docker/apache-ports.conf similarity index 50% rename from docker/ports.conf rename to docker/apache-ports.conf index 3cc6764..3f8ca0c 100644 --- a/docker/ports.conf +++ b/docker/apache-ports.conf @@ -1 +1,2 @@ Listen 8080 +Listen 8443 diff --git a/docker/apache-site-ssl.conf b/docker/apache-site-ssl.conf new file mode 100644 index 0000000..d9717c2 --- /dev/null +++ b/docker/apache-site-ssl.conf @@ -0,0 +1,20 @@ +<VirtualHost *:8443> + ServerName sygal-pp.unicaen.fr + DocumentRoot /var/www/html/sygal-import-ws/public + + RewriteEngine On + + <Directory /var/www/html/sygal-import-ws/public> + DirectoryIndex index.php + AllowOverride All + Require all granted + </Directory> + + SSLEngine on + SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem + SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + #LogLevel debug +</VirtualHost> diff --git a/docker/apache-site.conf b/docker/apache-site.conf new file mode 100644 index 0000000..6b44450 --- /dev/null +++ b/docker/apache-site.conf @@ -0,0 +1,20 @@ +<VirtualHost *:8080> + ServerName sygal-pp.unicaen.fr + DocumentRoot /var/www/html/sygal-import-ws/public + + RewriteEngine On + + ### Redirection en HTTPS + RewriteCond %{SERVER_PORT} !^8443$ + RewriteRule ^/(.*) https://%{SERVER_NAME}:8443/$1 [L,R] + + <Directory /var/www/html/sygal-import-ws/public> + DirectoryIndex index.php + AllowOverride All + Require all granted + </Directory> + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + #LogLevel debug +</VirtualHost> \ No newline at end of file diff --git a/docker/apache.conf b/docker/apache.conf deleted file mode 100644 index 62caa03..0000000 --- a/docker/apache.conf +++ /dev/null @@ -1,17 +0,0 @@ -<VirtualHost *:8080> - ServerName localhost - DocumentRoot /sygal-import-ws/public - - RewriteEngine On - AllowEncodedSlashes On - - <Directory /sygal-import-ws/public> - Options FollowSymLinks MultiViews - AllowOverride All - Require all granted - </Directory> - - ErrorLog ${APACHE_LOG_DIR}/error.log - CustomLog ${APACHE_LOG_DIR}/access.log combined - #LogLevel debug - </VirtualHost> \ No newline at end of file diff --git a/docker/php-opcache.ini b/docker/php-opcache.ini new file mode 100644 index 0000000..155f3d3 --- /dev/null +++ b/docker/php-opcache.ini @@ -0,0 +1,7 @@ +opcache.memory_consumption=128 +opcache.interned_strings_buffer=8 +opcache.max_accelerated_files=4000 +opcache.revalidate_freq=60 +opcache.fast_shutdown=1 +opcache.enable_cli=1 +opcache.enable=1 -- GitLab