Skip to content
Snippets Groups Projects
Commit e6e92266 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Merge branch 'release_2.1.0'

parents fb2fceae 4ff53978
No related branches found
No related tags found
No related merge requests found
Pipeline #15219 failed
Showing
with 2255 additions and 597 deletions
Journal des modifications
=========================
2.1.0
-----
- Service 'thèse' : ajout du code SISE de la discipline.
- Service 'individu' : ajout du code pays de nationalité.
- Service 'structure' : correction d'un nvl(etb.lib_web_etb, etb.lib_etb)' oublié créant des doublons.
- Correction d'une vue pour Physalis.
- Passage à PHP 7.4.
2.0.0
-----
- Ajout d'une V2 à l'API pour permettre l'import avec unicaen/db-import par ESUP-SyGAL ; la V1 demeure.
......
......@@ -24,4 +24,4 @@ COPY . /app
WORKDIR /app
RUN composer install
RUN composer install --no-dev --no-suggest --prefer-dist --optimize-autoloader
......@@ -34,7 +34,7 @@ traduit en bash.)
Lancez le script `Dockerfile.sh` :
```bash
cd /app
bash Dockerfile.sh 7.0
bash Dockerfile.sh 7.4
```
Ensuite, vérifiez et ajustez si besoin sur votre serveur les fichiers de configs suivants,
......@@ -46,11 +46,11 @@ créés par le script `Dockerfile.sh` :
- ${PHP_CONF_DIR}/fpm/conf.d/90-app.ini
NB: Vérifiez dans le script `Dockerfile.sh` que vous venez de lancer mais normalement
`APACHE_CONF_DIR=/etc/apache2` et `PHP_CONF_DIR=/etc/php/7.0`.
`APACHE_CONF_DIR=/etc/apache2` et `PHP_CONF_DIR=/etc/php/7.4`.
### Installation d'une version précise du WS
Normalement, vous ne devez installer que les versions officielles du WS, c'est à dire les versions taguées, du genre `2.0.0`
Normalement, vous ne devez installer que les versions officielles du WS, c'est à dire les versions taguées, du genre `2.1.0`
par exemple.
Placez-vous dans le répertoire des sources du web service puis lancez les commandes git suivantes pour obtenir la liste des
......@@ -59,10 +59,10 @@ versions officielles du WS :
git fetch && git fetch --tags && git tag
```
Si la version la plus récente est par exemple la `2.0.0`, utilisez les commandes suivantes pour "installer" cette version
Si la version la plus récente est par exemple la `2.1.0`, utilisez les commandes suivantes pour "installer" cette version
sur votre serveur :
```bash
git checkout --force 2.0.0 && bash install.sh
git checkout --force 2.1.0 && bash install.sh
```
### Fichier "users.htpasswd"
......@@ -105,7 +105,7 @@ cp -n database.local.php.dist database.local.php
### Configuration PHP pour le WS
Si vous êtes sur un serveur de PROD, corrigez les lignes suivantes du fichier de config PHP
`/etc/php/7.0/fpm/conf.d/90-app.ini` :
`/etc/php/7.4/fpm/conf.d/90-app.ini` :
display_errors = Off
...
......
......@@ -9,20 +9,22 @@
}
],
"config": {
"process-timeout": 5000
"process-timeout": 5000,
"allow-plugins": {
"zendframework/zend-component-installer": true,
"zfcampus/zf-asset-manager": true
}
},
"require": {
"php": "^7.0",
"zendframework/zend-component-installer": "^1.0 || ^0.6 || ^1.0.0-dev@dev",
"php": "^7.4.0",
"zfcampus/zf-apigility": "^1.3",
"zfcampus/zf-apigility-documentation": "^1.2.3",
"zfcampus/zf-asset-manager": "^1.0",
"zfcampus/zf-apigility-documentation": "^1.2",
"zfcampus/zf-composer-autoloading": "^1.0",
"zfcampus/zf-development-mode": "^3.0",
"zfcampus/zf-apigility-doctrine": "^2.1",
"doctrine/doctrine-orm-module": "^1.1",
"zendframework/zend-console": "^2.7",
"unicaen/oracle": "^1.2",
"unicaen/oracle": "^3.0",
"doctrine/common": "^2.7",
"zendframework/zend-mvc-console": "^1.2",
"zendframework/zend-log": "^2.11",
......@@ -31,7 +33,7 @@
},
"require-dev": {
"zendframework/zend-developer-tools": "^1.1",
"zfcampus/zf-apigility-admin": "^1.5.9",
"zfcampus/zf-apigility-admin": "^1.5",
"zfcampus/zf-deploy": "^1.2",
"squizlabs/php_codesniffer": "^3.3",
"phpunit/phpunit": "^6.5",
......
This diff is collapsed.
<?php
/**
* Configuration file generated by ZF Apigility Admin
*
* The previous config file has been stored in ./config/modules.config.old
*/
return [
'Zend\\Cache',
'Zend\\Form',
'Zend\\Db',
'Zend\\Filter',
'Zend\\Hydrator',
'Zend\\InputFilter',
'Zend\\Paginator',
'Zend\\Router',
'Zend\\Validator',
'ZF\\Apigility',
'ZF\\Apigility\\Documentation',
'ZF\\ApiProblem',
'ZF\\Configuration',
'ZF\\OAuth2',
'ZF\\MvcAuth',
'ZF\\Hal',
'ZF\\ContentNegotiation',
'ZF\\ContentValidation',
'ZF\\Rest',
'ZF\\Rpc',
'ZF\\Versioning',
'DoctrineModule',
'DoctrineORMModule',
'Phpro\\DoctrineHydrationModule',
'ZF\\Apigility\\Doctrine\\Server',
'Application',
];
......@@ -337,7 +337,7 @@ select
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
etb.lib_etb as libelle, -- Libelle
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
......@@ -352,7 +352,7 @@ select
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
etb.lib_etb as libelle, -- Libelle
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
......@@ -367,7 +367,7 @@ select
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
etb.lib_etb as libelle, -- Libelle
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
......@@ -382,7 +382,7 @@ select
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
etb.lib_etb as libelle, -- Libelle
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
......@@ -397,7 +397,7 @@ select
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
etb.lib_etb as libelle, -- Libelle
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
......@@ -415,7 +415,7 @@ select
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
etb.lib_etb as libelle, -- Libelle
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
......
......@@ -379,10 +379,10 @@ where extract (YEAR from a.AVT_DATE_DEB_EXEC) >= 2016
CREATE VIEW "API_SCOLARITE"."V_SYGAL_INDIVIDU_V2" ("ID", "SOURCE_CODE", "TYPE", "SOURCE_ID", "CIV", "LIB_NOM_PAT_IND", "LIB_NOM_USU_IND", "LIB_PR1_IND", "LIB_PR2_IND", "LIB_PR3_IND", "EMAIL", "DATE_NAI_IND", "LIB_NAT", "COD_PAY_NAT", "SUPANN_ID") AS
CREATE or replace VIEW "API_SCOLARITE"."V_SYGAL_INDIVIDU_V2" ("ID", "SOURCE_CODE", "TYPE", "SOURCE_ID", "CIV", "LIB_NOM_PAT_IND", "LIB_NOM_USU_IND", "LIB_PR1_IND", "LIB_PR2_IND", "LIB_PR3_IND", "EMAIL", "DATE_NAI_IND", "LIB_NAT", "COD_PAY_NAT", "SUPANN_ID") AS
SELECT
distinct( i.pers_id) AS ID,
distinct( i.pers_id) AS SOURCE_CODE,
distinct( i.pers_id) as ID,
i.pers_id as SOURCE_CODE,
'doctorant' as TYPE,
'physalis' as SOURCE_ID,
......@@ -414,8 +414,8 @@ FROM RECHERCHE.DOCTORANT D
union
--membre d'un jury
SELECT
distinct( i.pers_id) AS ID,
distinct( i.pers_id) AS SOURCE_CODE,
distinct( i.pers_id) as ID,
i.pers_id as SOURCE_CODE,
'acteur' as TYPE,
'physalis' as SOURCE_ID,
......@@ -469,8 +469,8 @@ union
--directeur de these
SELECT
distinct( i.pers_id) AS ID,
distinct( i.pers_id) AS SOURCE_CODE,
distinct( i.pers_id) as ID,
i.pers_id as SOURCE_CODE,
'acteur' as TYPE,
'physalis' as SOURCE_ID,
......@@ -523,7 +523,7 @@ WHERE-- T.ID_THESE = 13 -- a modifier
--extract(year from d.DATE_INSC_DOCTORAT_ETAB) >= 2016 and
ASS_ID_PERE = (select ass_id from GRHUM.ASSOCIATION where ass_code = 'D_DIR')
AND ASS_CODE != 'D_JR_INV'
/
;
......
Version 2.1.0
=============
Serveur d'application
---------------------
Il faut passer en version 7.4 de PHP.
- Installation des modules PHP
```bash
export PHP_VERSION=7.4
apt-get install -y \
php${PHP_VERSION} \
php${PHP_VERSION}-bcmath \
php${PHP_VERSION}-curl \
php${PHP_VERSION}-dev \
php${PHP_VERSION}-fpm \
php${PHP_VERSION}-gd \
php${PHP_VERSION}-gettext \
php${PHP_VERSION}-iconv \
php${PHP_VERSION}-imagick \
php${PHP_VERSION}-intl \
php${PHP_VERSION}-ldap \
php${PHP_VERSION}-mbstring \
php${PHP_VERSION}-memcached \
php${PHP_VERSION}-mysql \
php${PHP_VERSION}-opcache \
php${PHP_VERSION}-pgsql \
php${PHP_VERSION}-soap \
php${PHP_VERSION}-xdebug \
php${PHP_VERSION}-xml \
php${PHP_VERSION}-zip \
php${PHP_VERSION}-cli \
php${PHP_VERSION}-common \
php${PHP_VERSION}-json \
php${PHP_VERSION}-opcache \
php${PHP_VERSION}-readline && \
update-alternatives --set php /usr/bin/php${PHP_VERSION}
apt-get purge \
php7.0-common \
php7.1-common \
php7.2-common \
php7.3-common \
php8.0-common \
php8.1-common
```
- Mise à jour de la config Apache du site
```bash
nano /etc/apache2/sites-enabled/sygal-import-ws-ssl.conf
# (mettez à jour si besoin le chemin de la socket FPM, cf. balise `SetHandler`)
systemctl reload php${PHP_VERSION}-fpm
systemctl reload apache2
```
- Réinstallation du module OCI8
```bash
# Désinstallation
pecl uninstall oci8
# Obtention des ressources 'instantclient-*' (image Docker Unicaen)
export UNICAEN_IMAGE_TMP_DIR=/tmp/docker-unicaen-image
git clone https://git.unicaen.fr/open-source/docker/unicaen-image.git ${UNICAEN_IMAGE_TMP_DIR}
cd ${UNICAEN_IMAGE_TMP_DIR}
cp resources/instantclient-basiclite-linux.x64-18.5.0.0.0dbru.zip /tmp/
cp resources/instantclient-sdk-linux.x64-18.5.0.0.0dbru.zip /tmp/
cp resources/instantclient-sqlplus-linux.x64-18.5.0.0.0dbru.zip /tmp/
# Installation
export OCI8_PACKAGE="oci8-2.2.0"
export PHP_CONF_DIR=/etc/php/${PHP_VERSION}
unzip -o /tmp/instantclient-basiclite-linux.x64-18.5.0.0.0dbru.zip -d /usr/local/ && \
unzip -o /tmp/instantclient-sdk-linux.x64-18.5.0.0.0dbru.zip -d /usr/local/ && \
unzip -o /tmp/instantclient-sqlplus-linux.x64-18.5.0.0.0dbru.zip -d /usr/local/ && \
ln -sf /usr/local/instantclient_18_5 /usr/local/instantclient && \
ln -sf /usr/local/instantclient/sqlplus /usr/local/bin/sqlplus && \
echo 'instantclient,/usr/local/instantclient' | pecl install ${OCI8_PACKAGE} && \
echo "extension=oci8.so" > ${PHP_CONF_DIR}/fpm/conf.d/30-php-oci8.ini && \
echo "extension=oci8.so" > ${PHP_CONF_DIR}/cli/conf.d/30-php-oci8.ini && \
echo "/usr/local/instantclient" > /etc/ld.so.conf.d/oracle-instantclient.conf && ldconfig
systemctl reload php${PHP_VERSION}-fpm
systemctl reload apache2
```
Base de données
---------------
### Apogée & Physalis
```sql
alter table SYGAL_INDIVIDU_V2 add COD_PAY_NAT varchar2(5) ;
alter table SYGAL_THESE_V2 add COD_DIS varchar2(10) ;
```
### Apogée
```sql
--
-- Structures : correction 'nvl(etb.lib_web_etb, etb.lib_etb)' oublié créant des doublons.
--
create or replace view V_SYGAL_STRUCTURE_V2 as
select
edo.cod_nat_edo as source_code, --id unique
'apogee' as source_id, -- identifiant unique de la source
'ecole-doctorale' as TYPE_STRUCTURE_ID, -- Type de structure
edo.cod_nat_edo as id, -- Id unique : Identifiant national
edo.lic_edo as sigle, -- Libellé court
edo.lib_edo as libelle, -- Denomination
null as code_pays, --
null as libelle_pays --
from ecole_doctorale edo
union
-- UR
select
eqr.cod_eqr as source_code, --id unique
'apogee' as source_id, -- identifiant unique de la source
'unite-recherche' as TYPE_STRUCTURE_ID, -- Type de structure
eqr.cod_eqr as id, -- Id unique
eqr.lic_eqr as sigle, -- Libellé court
eqr.lib_eqr as libelle, -- Denomination
null as code_pays, --
null as libelle_pays --
from equipe_rch eqr
union
-- Etablissements de cotutelle
select
etb.cod_etb as source_code, --id unique
'apogee' as source_id, -- identifiant unique de la source
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
join these_hdr_sout ths on ths.cod_etb = etb.cod_etb and -- établissements de cotutelle
ths.cod_ths_trv = '1' -- travaux exclus
left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
union
-- Etablissements des directeurs de theses
select
etb.cod_etb as source_code, --id unique
'apogee' as source_id, -- identifiant unique de la source
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
join these_hdr_sout ths on ths.cod_etb_dir = etb.cod_etb and -- établissements des directeurs de theses
ths.cod_ths_trv = '1' -- travaux exclus
left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
union
-- Etablissements des co-directeurs de theses
select
etb.cod_etb as source_code, --id unique
'apogee' as source_id, -- identifiant unique de la source
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
join these_hdr_sout ths on ths.cod_etb_cdr = etb.cod_etb and -- établissements des co-directeurs de theses
ths.cod_ths_trv = '1' -- travaux exclus
left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
union
-- Etablissements des seconds co-directeurs de theses
select
etb.cod_etb as source_code, --id unique
'apogee' as source_id, -- identifiant unique de la source
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
join these_hdr_sout ths on ths.cod_etb_cdr2 = etb.cod_etb and -- établissements des seconds co-directeurs de theses
ths.cod_ths_trv = '1' -- travaux exclus
left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
union
-- Etablissements des rapporteurs
select
etb.cod_etb as source_code, --id unique
'apogee' as source_id, -- identifiant unique de la source
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
join personnel per on per.cod_etb = etb.cod_etb -- établissements des rapporteurs
join ths_rap_sou trs on trs.cod_per = per.cod_per
join these_hdr_sout ths on ths.cod_ths = trs.cod_ths and
ths.cod_ths_trv = '1' -- travaux exclus
left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
where per.tem_ext_int_per = 'X' -- personnels exterieurs uniquement
union
-- Etablissements des membres du jury
select
etb.cod_etb as source_code, --id unique
'apogee' as source_id, -- identifiant unique de la source
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique
null as sigle, --
nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
pay.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb
join personnel per on per.cod_etb = etb.cod_etb -- établissements des membres du jury
join ths_jur_per tjp on tjp.cod_per = per.cod_per
join these_hdr_sout ths on ths.cod_ths = tjp.cod_ths and
ths.cod_ths_trv = '1' -- travaux exclus
left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
where per.tem_ext_int_per = 'X'
;
```
### Physalis
```sql
--
-- Correction erreur de distinct().
--
CREATE or replace VIEW "API_SCOLARITE"."V_SYGAL_INDIVIDU_V2" ("ID", "SOURCE_CODE", "TYPE", "SOURCE_ID", "CIV", "LIB_NOM_PAT_IND", "LIB_NOM_USU_IND", "LIB_PR1_IND", "LIB_PR2_IND", "LIB_PR3_IND", "EMAIL", "DATE_NAI_IND", "LIB_NAT", "COD_PAY_NAT", "SUPANN_ID") AS
SELECT
distinct( i.pers_id) as ID,
i.pers_id as SOURCE_CODE,
'doctorant' as TYPE,
'physalis' as SOURCE_ID,
case I.c_civilite
WHEN 'MLLE' THEN 'MME.'
ELSE I.c_civilite
end as CIV,
upper(I.NOM_PATRONYMIQUE) AS LIB_NOM_PAT_IND,
upper(I.NOM_USUEL) as LIB_NOM_USU_IND,
upper( initcap(nvl(I.PRENOM_AFFICHAGE, I.PRENOM))) as LIB_PR1_IND,
upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 1)) as LIB_PR2_IND,
upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 2)) as LIB_PR3_IND,
CASE
WHEN cpt.CPT_EMAIL is null THEN ' '
ELSE cpt.CPT_EMAIL ||'@' || cpt.CPT_DOMAINE
end as EMAIL,
I.D_NAISSANCE AS DATE_NAI_IND,
p.L_NATIONALITE AS LIB_NAT,
I.C_PAYS_NATIONALITE AS COD_PAY_NAT,
i.pers_id as SUPANN_ID
FROM RECHERCHE.DOCTORANT D
LEFT OUTER JOIN RECHERCHE.DOCTORANT_THESE T ON D.ID_DOCTORANT = T.ID_DOCTORANT
INNER JOIN GRHUM.INDIVIDU_ULR I ON I.NO_INDIVIDU = D.NO_INDIVIDU
left outer JOIN GRHUM.COMPTE CPT on I.PERS_ID = CPT.PERS_ID and cpt.cpt_email is not null and cpt_ordre <> 60891 and cpt_ordre <> 58888
left outer join grhum.pays p on I.C_PAYS_NATIONALITE =p.C_PAYS
--where extract(year from d.DATE_INSC_DOCTORAT_ETAB) >= 2016
union
--membre d'un jury
SELECT
distinct( i.pers_id) as ID,
i.pers_id as SOURCE_CODE,
'acteur' as TYPE,
'physalis' as SOURCE_ID,
case I.c_civilite
WHEN 'MLLE' THEN 'MME.'
ELSE I.c_civilite
end as CIV,
case
when I.NOM_PATRONYMIQUE is null THEN I.NOM_USUEL
ELSE upper(I.NOM_PATRONYMIQUE)
end as LIB_NOM_PAT_IND,
upper(I.NOM_USUEL) as LIB_NOM_USU_IND,
upper( initcap(nvl(I.PRENOM_AFFICHAGE, I.PRENOM))) as PRENOM1,
upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 1)) as PRENOM2,
upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 2)) as PRENOM3,
CASE
WHEN cpt.CPT_EMAIL is null THEN ' '
ELSE cpt.CPT_EMAIL ||'@' || cpt.CPT_DOMAINE
end as EMAIL,
I.D_NAISSANCE AS DATE_NAI_IND,
p.L_NATIONALITE AS LIB_NAT,
I.C_PAYS_NATIONALITE AS COD_PAY_NAT,
i.pers_id as SUPANN_ID
--lower(nvl(CORPS.LIBELLE_EDITION, CORPS.LL_CORPS)) as LIBELLE_CORPS,
--case
-- when CORPS.LL_CORPS is null THEN upper( MJT.TITRE_SPECIAL)
-- when MJT.TITRE_SPECIAL is null then upper(corps.LL_CORPS)
--end as titre,
--ASS_CODE
FROM RECHERCHE.DOCTORANT D
LEFT OUTER JOIN RECHERCHE.DOCTORANT_THESE T ON D.ID_DOCTORANT = T.ID_DOCTORANT
INNER JOIN RECHERCHE.MEMBRE_JURY_THESE MJT ON MJT.ID_THESE = T.ID_THESE
LEFT OUTER JOIN grhum.CORPS ON CORPS.C_CORPS = MJT.C_CORPS
LEFT OUTER JOIN grhum.RNE ON RNE.C_RNE = MJT.C_RNE
INNER JOIN ACCORDS.CONTRAT_PARTENAIRE CP ON CP.CP_ORDRE = MJT.CP_ORDRE
INNER JOIN ACCORDS.CONTRAT C ON CP.CON_ORDRE = C.CON_ORDRE
INNER JOIN GRHUM.INDIVIDU_ULR I ON I.PERS_ID = CP.PERS_ID
left outer JOIN GRHUM.COMPTE CPT on I.PERS_ID = CPT.PERS_ID and cpt.cpt_email is not null
INNER JOIN GRHUM.REPART_ASSOCIATION RA ON RA.PERS_ID = CP.PERS_ID AND RA.C_STRUCTURE = C.CON_GROUPE_PARTENAIRE
INNER JOIN GRHUM.ASSOCIATION A ON A.ASS_ID = RA.ASS_ID
INNER JOIN GRHUM.ASSOCIATION_RESEAU AR ON A.ASS_ID = AR.ASS_ID_FILS
left outer join grhum.pays p on I.C_PAYS_NATIONALITE =p.C_PAYS
WHERE-- T.ID_THESE = 13 -- a modifier
-- membre du jury sauf invité
-- extract(year from d.DATE_INSC_DOCTORAT_ETAB) >= 2016 and
ASS_ID_PERE = (select ass_id from GRHUM.ASSOCIATION where ass_code = 'D_TYPE_JURY')
AND ASS_CODE != 'D_JR_INV' --AND to_char(T.DATE_SOUTENANCE ,'YYYY')='2016'
union
--directeur de these
SELECT
distinct( i.pers_id) as ID,
i.pers_id as SOURCE_CODE,
'acteur' as TYPE,
'physalis' as SOURCE_ID,
case I.c_civilite
WHEN 'MLLE' THEN 'MME.'
ELSE I.c_civilite
end as CIV,
case
when I.NOM_PATRONYMIQUE is null THEN I.NOM_USUEL
ELSE upper(I.NOM_PATRONYMIQUE)
end as LIB_NOM_PAT_IND,
upper(I.NOM_USUEL) as LIB_NOM_USU_IND,
upper( initcap(nvl(I.PRENOM_AFFICHAGE, I.PRENOM))) as PRENOM1,
upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 1)) as PRENOM2,
upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 2)) as PRENOM3,
CASE
WHEN cpt.CPT_EMAIL is null THEN ' '
ELSE cpt.CPT_EMAIL ||'@' || cpt.CPT_DOMAINE
end as EMAIL,
I.D_NAISSANCE AS DATE_NAI_IND,
p.L_NATIONALITE AS LIB_NAT,
I.C_PAYS_NATIONALITE AS COD_PAY_NAT,
i.pers_id as SUPANN_ID
--lower(nvl(CORPS.LIBELLE_EDITION, CORPS.LL_CORPS)) as LIBELLE_CORPS,
--case
-- when CORPS.LL_CORPS is null THEN upper( MJT.TITRE_SPECIAL)
-- when MJT.TITRE_SPECIAL is null then upper(corps.LL_CORPS)
--end as titre,
--ASS_CODE
FROM RECHERCHE.DOCTORANT D
LEFT OUTER JOIN RECHERCHE.DOCTORANT_THESE T ON D.ID_DOCTORANT = T.ID_DOCTORANT
INNER JOIN RECHERCHE.DIRECTEUR_THESE MJT ON MJT.ID_THESE = T.ID_THESE
LEFT OUTER JOIN grhum.RNE ON RNE.C_RNE = MJT.C_RNE
INNER JOIN ACCORDS.CONTRAT_PARTENAIRE CP ON CP.CP_ORDRE = MJT.CP_ORDRE
INNER JOIN ACCORDS.CONTRAT C ON CP.CON_ORDRE = C.CON_ORDRE
INNER JOIN GRHUM.INDIVIDU_ULR I ON I.PERS_ID = CP.PERS_ID
left outer JOIN GRHUM.COMPTE CPT on I.PERS_ID = CPT.PERS_ID
INNER JOIN GRHUM.REPART_ASSOCIATION RA ON RA.PERS_ID = CP.PERS_ID AND RA.C_STRUCTURE = C.CON_GROUPE_PARTENAIRE
INNER JOIN GRHUM.ASSOCIATION A ON A.ASS_ID = RA.ASS_ID
INNER JOIN GRHUM.ASSOCIATION_RESEAU AR ON A.ASS_ID = AR.ASS_ID_FILS
left outer join grhum.pays p on I.C_PAYS_NATIONALITE =p.C_PAYS
left outer join API_SCOLARITE.SYGAL_ROLE_TMP ro on ro.ID = a.ass_id
left outer join recherche.membre_jury_these mem on MJT.cp_ordre = mem.cp_ordre
LEFT OUTER JOIN grhum.CORPS ON CORPS.C_CORPS = mem.C_CORPS
--left outer join
WHERE-- T.ID_THESE = 13 -- a modifier
-- membre du jury sauf invité
--extract(year from d.DATE_INSC_DOCTORAT_ETAB) >= 2016 and
ASS_ID_PERE = (select ass_id from GRHUM.ASSOCIATION where ass_code = 'D_DIR')
AND ASS_CODE != 'D_JR_INV'
;
```
Sources PHP
-----------
Sur le serveur d'application, placez-vous dans le répertoire du web service (sans doute `/var/www/sygal-import-ws`)
puis lancez les commandes suivantes pour installer la nouvelle version :
```bash
git fetch && git fetch --tags && git checkout --force 2.1.0 && bash install.sh
```
Rechargez le service PHP-FPM :
```bash
service php{PHP_VERSION}-fpm reload
```
......@@ -2,12 +2,12 @@ version: "2"
services:
sygal-import-ws:
# image: sygal-import-ws-image-php7.0
# image: sygal-import-ws-image-php7.3
build:
context: .
args:
- PHP_VERSION=7.0
container_name: sygal-import-ws-container-php7.0
- PHP_VERSION=7.3
container_name: sygal-import-ws-container-php7.3
environment:
- http_proxy
- https_proxy
......
......@@ -4,6 +4,9 @@
# This script runs required operations in order to set up the application.
#
# Désactivation de l'interface d'admin Apigility
composer development-disable
# Composer install
composer install --no-dev --no-suggest --prefer-dist --optimize-autoloader
......@@ -11,6 +14,3 @@ vendor/bin/doctrine-module orm:clear-cache:query
vendor/bin/doctrine-module orm:clear-cache:metadata
vendor/bin/doctrine-module orm:clear-cache:result
vendor/bin/doctrine-module orm:generate-proxies
# Désactivation de l'interface d'admin Apigility
composer development-disable
......@@ -22,6 +22,7 @@ class Individu
private $prenom3;
private $email;
private $dateNaissance;
private $codePaysNationalite;
private $nationalite;
private $sourceInsertDate;
......@@ -129,6 +130,14 @@ class Individu
return $this->dateNaissance;
}
/**
* @return mixed
*/
public function getCodePaysNationalite()
{
return $this->codePaysNationalite;
}
/**
* @return mixed
*/
......
......@@ -16,6 +16,7 @@
<field name="prenom3" column="LIB_PR3_IND"/>
<field name="email" column="EMAIL"/>
<field name="dateNaissance" type="datetime" column="DATE_NAI_IND"/>
<field name="codePaysNationalite" column="COD_PAY_NAT"/>
<field name="nationalite" column="LIB_NAT"/>
<field name="sourceInsertDate" type="datetime" column="SOURCE_INSERT_DATE"/>
......
......@@ -8,6 +8,7 @@
<field name="sourceId" column="SOURCE_ID" length="64"/>
<field name="etatThese" column="ETA_THS" length="1"/>
<field name="doctorantId" column="DOCTORANT_ID"/>
<field name="codeSiseDiscipline" column="COD_DIS" length="10"/>
<field name="libDiscipline" column="LIB_INT1_DIS" length="200"/>
<field name="title" column="LIB_THS" length="800"/>
<field name="datePremiereInsc" type="datetime" column="DAT_DEB_THS"/>
......
......@@ -14,6 +14,7 @@ class These
private $sourceId;
private $etatThese;
private $doctorantId;
private $codeSiseDiscipline;
private $libDiscipline;
private $title;
private $datePremiereInsc;
......@@ -82,6 +83,14 @@ class These
return $this->doctorantId;
}
/**
* @return mixed
*/
public function getCodeSiseDiscipline()
{
return $this->codeSiseDiscipline;
}
/**
* @return mixed
*/
......
zf-apigility/
\ No newline at end of file
apigility-ui/
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment