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

Merge branch 'release-1.2.5'

parents 9680e54a d21a7bc9
No related branches found
No related tags found
No related merge requests found
Pipeline #5694 passed
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# Script d'install d'un serveur, inspiré du Dockerfile. # Script d'install d'un serveur, traduction du Dockerfile.
# #
DIR=$(cd `dirname $0` && pwd) usage() {
cat << EOF
Script d'install d'un serveur, traduction du Dockerfile.
Usage: $0 <version de PHP>
EOF
exit 0;
}
[[ -z "$1" ]] && usage
################################################################################################################
PHP_VERSION="$1"
APP_DIR=$(cd `dirname $0` && pwd)
set -e set -e
...@@ -18,21 +31,25 @@ apt-get install -y \ ...@@ -18,21 +31,25 @@ apt-get install -y \
export UNICAEN_IMAGE_TMP_DIR=/tmp/docker-unicaen-image 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} git clone https://git.unicaen.fr/open-source/docker/unicaen-image.git ${UNICAEN_IMAGE_TMP_DIR}
cd ${UNICAEN_IMAGE_TMP_DIR} cd ${UNICAEN_IMAGE_TMP_DIR}
source Dockerfile.sh . Dockerfile.sh ${PHP_VERSION}
cd ${DIR} cd ${APP_DIR}
# NB: Variables d'env positionnées par ${UNICAEN_IMAGE_TMP_DIR}/Dockerfile.sh # NB: Variables d'env positionnées par ${UNICAEN_IMAGE_TMP_DIR}/Dockerfile.sh
# APACHE_CONF_DIR=/etc/apache2 \ # APACHE_CONF_DIR=/etc/apache2 \
# PHP_CONF_DIR=/etc/php/7.0 # PHP_CONF_DIR=/etc/php/$1
# Configuration Apache et FPM # Configuration Apache et FPM
cp docker/apache-ports.conf ${APACHE_CONF_DIR}/ports.conf cp docker/apache-ports.conf ${APACHE_CONF_DIR}/ports.conf
cp docker/apache-site.conf ${APACHE_CONF_DIR}/sites-available/sygal-import-ws.conf cp docker/apache-site.conf ${APACHE_CONF_DIR}/sites-available/app.conf
cp docker/apache-site-ssl.conf ${APACHE_CONF_DIR}/sites-available/sygal-import-ws-ssl.conf cp docker/apache-site-ssl.conf ${APACHE_CONF_DIR}/sites-available/app-ssl.conf
cp docker/fpm/pool.d/app.conf ${PHP_CONF_DIR}/fpm/pool.d/sygal-import-ws.conf cp docker/fpm/pool.d/app.conf ${PHP_CONF_DIR}/fpm/pool.d/app.conf
cp docker/fpm/conf.d/app.ini ${PHP_CONF_DIR}/fpm/conf.d/ cp docker/fpm/conf.d/app.ini ${PHP_CONF_DIR}/fpm/conf.d/90-app.ini
sed -i -re 's/SetEnv APPLICATION_ENV "(development|test)"/SetEnv APPLICATION_ENV "production"/' \
${APACHE_CONF_DIR}/sites-available/app-ssl.conf
a2ensite sygal-import-ws sygal-import-ws-ssl && \ a2ensite app app-ssl && \
service php7.0-fpm reload service apache2 reload && \
service php${PHP_VERSION}-fpm reload
# Installation du web service `sygal-import-ws` Installation du web service `sygal-import-ws`
=============================================
## Applicatif Applicatif
----------
### Première obtention des sources et installation du serveur ### Première obtention des sources et installation du serveur
Sur un serveur Debian Stretch, lancez les commandes suivantes pour obtenir les sources du WS : *NB: la procédure proposée ici part d'un serveur *Debian Stretch* tout nu et couvre l'installation de tous les packages
requis.* Si ce n'était pas le cas, merci de le signaler.
En `root` sur votre serveur, pour obtenir les sources du WS, lancez l'une des commandes suivantes en fonction
du site sur lequel vous lisez la présente page :
```bash ```bash
git clone https://git.unicaen.fr/open-source/sygal-import-WS.git /var/www/sygal-import-WS # Si vous êtes sur git.unicaen.fr :
git clone https://git.unicaen.fr/open-source/sygal-import-ws.git /app
# Si vous êtes sur github.com :
git clone https://github.com/EsupPortail/sygal-import-ws.git /app
``` ```
*NB: merci de respecter dans un premier temps le choix de `/app` comme répertoire d'installation.
Libre à vous une fois que tout fonctionne de changer d'emplacement et de modifier en conséquence les configs
nécessaires.*
### Configuration du serveur
Ensuite, placez-vous dans le répertoire des sources et jetez un oeil au script `Dockerfile.sh`. Ensuite, placez-vous dans le répertoire des sources et jetez un oeil au script `Dockerfile.sh`.
Ce script est en quelque sorte l'équivalent du `Dockerfile` du WS traduit en bash. Ce script est en quelque sorte l'équivalent du `Dockerfile` du WS traduit en bash.
(Vous y verrez que le dépôt git d'une image Docker Unicaen est cloné pour lancer (Vous y verrez que le dépôt git d'une image Docker Unicaen est cloné pour lancer
son script `Dockerfile.sh` qui est lui aussi l'équivalent du `Dockerfile` de l'image son script `Dockerfile.sh` qui est lui aussi l'équivalent du `Dockerfile` de l'image
traduit en bash.) traduit en bash.)
Lancez le script `Dockerfile.sh` : Lancez le script `Dockerfile.sh` :
```bash ```bash
cd /var/www/sygal-import-WS cd /app
source Dockerfile.sh bash Dockerfile.sh 7.0
``` ```
Ensuite, vérifiez et ajustez si besoin sur votre serveur les fichiers de configs suivants, Ensuite, vérifiez et ajustez si besoin sur votre serveur les fichiers de configs suivants,
créés par le script `Dockerfile.sh` : créés par le script `Dockerfile.sh` :
- ${APACHE_CONF_DIR}/ports.conf - ${APACHE_CONF_DIR}/ports.conf
- ${APACHE_CONF_DIR}/sites-available/sygal-import-ws.conf - ${APACHE_CONF_DIR}/sites-available/app.conf
- ${APACHE_CONF_DIR}/sites-available/sygal-import-ws-ssl.conf - ${APACHE_CONF_DIR}/sites-available/app-ssl.conf
- ${PHP_CONF_DIR}/fpm/pool.d/sygal-import-ws.conf - ${PHP_CONF_DIR}/fpm/pool.d/app.conf
- ${PHP_CONF_DIR}/fpm/conf.d/ - ${PHP_CONF_DIR}/fpm/conf.d/90-app.ini
NB: Vérifiez dans le script `Dockerfile.sh` que vous venez de lancer mais normalement 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.0`.
...@@ -83,41 +99,24 @@ doivent être complétés puis renommés : ...@@ -83,41 +99,24 @@ doivent être complétés puis renommés :
- **database.local.php.dist** : qui est utilisé pour la connection à la BDD. - **database.local.php.dist** : qui est utilisé pour la connection à la BDD.
- clés `host`, `dbname`, `port`, `user`, `password` : les infos d'accès à la BDD. - clés `host`, `dbname`, `port`, `user`, `password` : les infos d'accès à la BDD.
Une fois ces fichiers complétés, changez leur extension `.php.dist` en `.php`. Une fois ces fichiers complétés, supprimez l'extension `.dist`, ex :
```bash
cp -n local.php.dist local.php
cp -n database.local.php.dist database.local.php
```
### Configuration PHP pour le WS ### Configuration PHP pour le WS
Créez/corrigez le fichier de config PHP `/etc/php/7.0/fpm/conf.d/99-sygal-import-WS.ini` comme suit : 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` :
date.timezone = Europe/Paris
short_open_tag = Off
expose_php = Off
#display_startup_errors = On
#error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
display_errors = Off display_errors = Off
# NB: ne peut-être supérieur au memory_limit du php.ini ...
memory_limit = 256M error_reporting = 0
...
;opcache.error_log=/var/log/php_opcache_error.log
opcache.enable = 1 opcache.enable = 1
opcache.memory_consumption = 256 ...
opcache.interned_strings_buffer = 8 xdebug.enable = 0
opcache.max_wasted_percentage = 5
opcache.max_accelerated_files = 16000
; http://php.net/manual/en/opcache.configuration.php#ini.opcache.revalidate-freq
; defaults to zend opcache checking every 180 seconds for PHP file changes
; set to zero to check every second if you are doing alot of frequent
; php file edits/developer work
; opcache.revalidate_freq=0
opcache.revalidate_freq = 180
opcache.fast_shutdown = 0
opcache.enable_cli = 0
opcache.save_comments = 1
opcache.enable_file_override = 1
opcache.validate_timestamps = 1
opcache.huge_code_pages = 0
### Interface d'admin Apigility ### Interface d'admin Apigility
...@@ -127,16 +126,13 @@ Assurez-vous de bien désactiver le mode développement : ...@@ -127,16 +126,13 @@ Assurez-vous de bien désactiver le mode développement :
composer development-disable composer development-disable
``` ```
Pour passer en mode développement et ouvrir l'accès à cette interface de modification du WS :
```bash
composer development-enable
```
## Base de données Base de données
---------------
Le WS interroge des vues que vous devez créer dans la base de données de votre logiciel de scolarité (Apogée, Physalis), ou autre part Le WS interroge des vues que vous devez créer dans la base de données de votre logiciel de scolarité (Apogée, Physalis),
si c'est possible, à vous de voir. ou autre part si c'est possible, à vous de voir.
En fonction du logiciel de scolarité que votre établissement utilise, intéressez-vous dans le répertoire [`data/sql`](data/sql) En fonction du logiciel de scolarité que votre établissement utilise, intéressez-vous dans le répertoire [`data/sql`](data/sql)
à l'un des répertoires suivants : à l'un des répertoires suivants :
...@@ -147,3 +143,20 @@ Chacun des répertoires contient : ...@@ -147,3 +143,20 @@ Chacun des répertoires contient :
- Un script pour créer les vues communes à tous les établissements ayant le logiciel de scolarité en question. - Un script pour créer les vues communes à tous les établissements ayant le logiciel de scolarité en question.
- Un script pour créer les vues propres à un établissement en particulier. - Un script pour créer les vues propres à un établissement en particulier.
Si votre établissement ne figure pas dans la liste, il faudra écrire les vues adaptées à votre contexte. Si votre établissement ne figure pas dans la liste, il faudra écrire les vues adaptées à votre contexte.
Réseau
------
Vous devez autoriser le serveur sur lequel est installé le WS à être interrogé par le serveur sur lequel est installé
SyGAL.
Il est conseillé de restreindre cette autorisation à cette seule adresse IP d'origine.
Test
----
Reportez-vous au [README.md](README.md) pour tester l'appel du WS en ligne de commande depuis le serveur
sur lequel est installé SyGAL.
...@@ -19,12 +19,7 @@ return [ ...@@ -19,12 +19,7 @@ return [
'authentication' => [ 'authentication' => [
'adapters' => [ 'adapters' => [
'basic' => [ 'basic' => [
'adapter' => \ZF\MvcAuth\Authentication\HttpAdapter::class,
'options' => [ 'options' => [
'accept_schemes' => [
0 => 'basic',
],
'realm' => 'api',
'htpasswd' => __DIR__ . '/../users.htpasswd', 'htpasswd' => __DIR__ . '/../users.htpasswd',
], ],
], ],
......
This diff is collapsed.
...@@ -6,17 +6,22 @@ ...@@ -6,17 +6,22 @@
-- Web Service d'import de données -- Web Service d'import de données
-- ------------------------------- -- -------------------------------
-- --
-- Vues Apogée UCN. -- Vues Apogée propre à votre établissement, à personnaliser.
-- --
--
-- Vue fournissant les "variables d'environnement" requis par SyGAL :
-- - Adresse mail de l'assistance utilisateur
-- - Adresse mail de contact de la BU
-- - Adresse mail de contact du bureau des doctorats
--
create or replace view SYGAL_VARIABLE_MANU as create or replace view SYGAL_VARIABLE_MANU as
select select
'apogee' as source_id, 'apogee' as source_id,
'EMAIL_ASSISTANCE' as id, 'EMAIL_ASSISTANCE' as id,
'EMAIL_ASSISTANCE' as cod_vap, 'EMAIL_ASSISTANCE' as cod_vap,
'Adresse mail de l''assistance utilisateur' as lib_vap, 'Adresse mail de l''assistance utilisateur' as lib_vap,
'assistance-sygal@unicaen.fr' as par_vap, 'assistance-sygal@univ.fr' as par_vap, -----------------------------> à personnaliser
to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE, to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE,
to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE
from dual from dual
...@@ -26,7 +31,7 @@ create or replace view SYGAL_VARIABLE_MANU as ...@@ -26,7 +31,7 @@ create or replace view SYGAL_VARIABLE_MANU as
'EMAIL_BU' as id, 'EMAIL_BU' as id,
'EMAIL_BU' as cod_vap, 'EMAIL_BU' as cod_vap,
'Adresse mail de contact de la BU' as lib_vap, 'Adresse mail de contact de la BU' as lib_vap,
'scd.theses@unicaen.fr' as par_vap, 'bu@univ.fr' as par_vap, ------------------------------------------> à personnaliser
to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE, to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE,
to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE
from dual from dual
...@@ -36,19 +41,25 @@ create or replace view SYGAL_VARIABLE_MANU as ...@@ -36,19 +41,25 @@ create or replace view SYGAL_VARIABLE_MANU as
'EMAIL_BDD' as id, 'EMAIL_BDD' as id,
'EMAIL_BDD' as cod_vap, 'EMAIL_BDD' as cod_vap,
'Adresse mail de contact du bureau des doctorats' as lib_vap, 'Adresse mail de contact du bureau des doctorats' as lib_vap,
'recherche.doctorat@unicaen.fr' as par_vap, 'bdd@univ.fr' as par_vap, -----------------------------------------> à personnaliser
to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE, to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE,
to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE
from dual from dual
/ /
--
-- Vue traduisant les codes rôles en usage dans votre établissement vers les codes compris par SyGAL.
--
create or replace view SYGAL_ROLE_TR as create or replace view SYGAL_ROLE_TR as
select 'A', 'A' from dual union with tmp(FROM_COD_ROJ, TO_COD_ROJ) as (
select 'B', 'B' from dual union select 'A', 'A' from dual union -- A : Membre absent
select 'C', 'C' from dual union select 'B', 'B' from dual union -- B : Co-encadrant
select 'D', 'D' from dual union select 'C', 'C' from dual union -- C : Chef de laboratoire
select 'K', 'K' from dual union select 'D', 'D' from dual union -- D : Directeur de thèse
select 'M', 'M' from dual union select 'K', 'K' from dual union -- K : Co-directeur de thèse
select 'P', 'P' from dual union select 'M', 'M' from dual union -- M : Membre du jury
select 'R', 'R' from dual select 'P', 'P' from dual union -- P : Président du jury
select 'R', 'R' from dual -- R : Rapporteur du jury
)
select * from tmp
/ /
--
--
-- SyGAL
-- =====
--
-- Web Service d'import de données
-- -------------------------------
--
-- Vues Apogée ULHN.
--
create or replace view SYGAL_VARIABLE_MANU as
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@univ-lehavre.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@univ-lehavre.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@univ-lehavre.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
/
create or replace view SYGAL_ROLE_TR as
select 'A', 'A' from dual union
select 'B', 'B' from dual union
select 'C', 'C' from dual union
select 'D', 'D' from dual union
select 'K', 'K' from dual union
select 'M', 'M' from dual union
select 'P', 'P' from dual union
select 'R', 'R' from dual
/
--
--
-- SyGAL
-- =====
--
-- Web Service d'import de données
-- -------------------------------
--
-- Vues Apogée URN.
--
create or replace view SYGAL_VARIABLE_MANU as
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@univ-rouen.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@univ-rouen.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@univ-rouen.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
/
create or replace view SYGAL_ROLE_TR(FROM_COD_ROJ, TO_COD_ROJ) as
select 'A', 'R' from dual union -- rapporteur du jury
select 'C', 'K' from dual union -- co-dir
select 'D', 'D' from dual union -- dir
select 'E', 'M' from dual union -- examinateur => membre du jury (discutable)
select 'M', 'M' from dual union -- membre du jury
select 'N', 'B' from dual union -- co-encadrant
select 'P', 'P' from dual union -- président du jury
select 'R', 'R' from dual -- rapporteur du jury
/
--
--
-- SyGAL
-- =====
--
-- Web Service d'import de données
-- -------------------------------
--
-- Vue matérialisée interrogeant Apogée et l'annuaire LDAP (grâce au package UCBN_LDAP) pour obtenir
-- les adresses électroniques.
--
-- drop materialized view SYGAL_MV_EMAIL
--/
CREATE MATERIALIZED VIEW SYGAL_MV_EMAIL
refresh complete USING TRUSTED CONSTRAINTS
START WITH SYSDATE NEXT SYSDATE + 1/24/6 as
select sysdate as last_update, tmp.*
from (
select
-- doctorants
to_char(ind.cod_etu) as id,
-- Numero etudiant
ucbn_ldap.etu2mail(ind.cod_etu) as email -- Mail etudiant
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
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
select *
from (
-- acteurs
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
coalesce(regexp_replace(per.num_dos_har_per, '[^0-9]', ''), 'COD_PER_' || act.cod_per) as id,
-- Code Harpege ou Apogee de l 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
from acteur act
join role_jury roj on roj.cod_roj = act.cod_roj
join personnel per on per.cod_per = act.cod_per
)
) tmp
where email is not null
/
\ No newline at end of file
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- Web Service d'import de données -- Web Service d'import de données
-- ------------------------------- -- -------------------------------
-- --
-- Vues Physalis INSA. -- Vues Physalis propre à votre établissement, à personnaliser.
-- --
/* /*
......
v1.2.5
======
Sources PHP
-----------
Sur le serveur, 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 1.2.5 && bash install.sh
```
Selon le moteur PHP que vous avez installé, rechargez le service, exemple :
- php7.0-fpm : `service php7.0-fpm reload`
- apache2-mod-php7.0 : `service apache2 reload`
Base de données
---------------
### Apogée
La vue `SYGAL_THESE` doit être mise à jour car la colonne `COD_ANU_PRM_IAE` est redondante du fait qu'une vue
`SYGAL_THESE_ANNEE_UNIV` dédiée existe. De plus, cette colonne remontait une année de 1ere inscription erronée en cas
de changement de discipline.
```sql
create view SYGAL_THESE as
with inscription_administrative as (
select distinct
ths.cod_ind,
iae.cod_dip,
iae.cod_vrs_vdi
from these_hdr_sout ths
join ins_adm_etp iae on iae.cod_ind = ths.cod_ind and ( iae.cod_dip, iae.cod_vrs_vdi ) in ( ( ths.cod_dip, ths.cod_vrs_vdi ), ( ths.cod_dip_anc, ths.cod_vrs_vdi_anc ) )
join diplome dip on dip.cod_dip = iae.cod_dip
join typ_diplome tpd on tpd.cod_tpd_etb = dip.cod_tpd_etb
where ths.cod_ths_trv = '1' -- Exclusion des travaux
and 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
),
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
),
ancienne_these as (
select distinct
cod_ind,
cod_dip_anc,
cod_vrs_vdi_anc,
'A' eta_ths
from these_hdr_sout
where cod_ths_trv = '1'
and cod_dip_anc is not null
)
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 doctorant_id, -- Identifiant du doctorant
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
ths.dat_deb_ths, -- Date de 1ere inscription
edo.cod_nat_edo as ecole_doct_id, -- Identifiant de l'ecole doctorale
ths.cod_eqr as unite_rech_id, -- Identifiant de l'unité de recherche principale
----------- Cotutelle ----------
pay.lib_pay, -- Denomination pays de cotutelle
nvl ( etb.lib_web_etb, etb.lib_etb ) lib_etb_cot, -- Denomination etablissement de cotutelle
ths.tem_avenant, -- Avenant a la convention de cotutelle (O/N)
------- Organisation de la soutenance ------
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.dat_sou_ths, -- Date de soutenance de la these
---------- Confidentialite --------
ths.dat_fin_cfd_ths, -- Date de fin de confidentialite de la these
---------- Jury et resultats --------
tre.cod_neg_tre, -- Resultat positif (1) ou non (0)
ths.eta_rpd_ths, -- Reproduction de la these ( O=Oui / C=Oui avec corrections / N=Non )
decode(ths.eta_rpd_ths,
'N', 'obligatoire',
'C', 'facultative',
null) as correction_possible -- Témoin de corrections attendues
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 ancienne_these anc on anc.cod_ind = ths.cod_ind and anc.cod_dip_anc = ths.cod_dip and anc.cod_vrs_vdi_anc = ths.cod_vrs_vdi and anc.eta_ths = ths.eta_ths
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' and -- Exclusion des travaux
anc.cod_dip_anc is null
/
```
### Physalis
Supprimer la colonne `COD_ANU_PRM_IAE` de la vue `SYGAL_THESE`.
...@@ -3,24 +3,47 @@ date.timezone = Europe/Paris ...@@ -3,24 +3,47 @@ date.timezone = Europe/Paris
short_open_tag = Off short_open_tag = Off
expose_php = Off expose_php = Off
#display_startup_errors = On display_errors = On
#error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE display_startup_errors = On
display_errors = Off error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
;log_errors = On log_errors = On
#max_execution_time = 120
# NB: ne peut-être supérieur au memory_limit du php.ini # NB: ne peut-être supérieur au memory_limit du php.ini
memory_limit = 256M memory_limit = 256M
opcache.enable = 0 # NB: post_max_size > upload_max_filesize
;upload_max_filesize = 51M
;post_max_size = 52M
opcache.enable = 0
;opcache.error_log=/var/log/php_opcache_error.log
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 8
opcache.max_wasted_percentage = 5
opcache.max_accelerated_files = 16000
; http://php.net/manual/en/opcache.configuration.php#ini.opcache.revalidate-freq
; defaults to zend opcache checking every 180 seconds for PHP file changes
; set to zero to check every second if you are doing alot of frequent
; php file edits/developer work
; opcache.revalidate_freq=0
opcache.revalidate_freq = 180
opcache.fast_shutdown = 0
opcache.enable_cli = 0
opcache.save_comments = 1
opcache.enable_file_override = 1
opcache.validate_timestamps = 1
opcache.huge_code_pages = 0
xdebug.enable = 1
xdebug.remote_enable = 1 xdebug.remote_enable = 1
xdebug.remote_connect_back = 1 xdebug.remote_connect_back = 1
xdebug.profiler_enable_trigger = 1 xdebug.profiler_enable_trigger = 1
xdebug.var_display_max_children = 1024 xdebug.var_display_max_children = 1024
xdebug.var_display_max_data = -1 xdebug.var_display_max_data = -1
xdebug.max_nesting_level = 256 xdebug.max_nesting_level = 256
# Attention: trop diminuer 'max_nesting_level' peut causer une erreur 'Maximum function nesting level of x reached' # Attention: trop diminuer 'max_nesting_level' peut causer une erreur 'Maximum function nesting level of x reached'
#xdebug.collect_params = 4 #xdebug.collect_params = 4
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
<field name="title" type="string" column="LIB_THS" length="800" nullable="true"/> <field name="title" type="string" column="LIB_THS" length="800" nullable="true"/>
<field name="codeLNG" type="string" column="COD_LNG" length="4" nullable="true"/> <field name="codeLNG" type="string" column="COD_LNG" length="4" nullable="true"/>
<field name="datePremiereInsc" type="datetime" column="DAT_DEB_THS" nullable="true"/> <field name="datePremiereInsc" type="datetime" column="DAT_DEB_THS" nullable="true"/>
<field name="anneeUnivPremiereInsc" type="integer" column="COD_ANU_PRM_IAE" nullable="true"/>
<field name="uniteRechId" type="string" column="UNITE_RECH_ID" length="10" nullable="true"/> <field name="uniteRechId" type="string" column="UNITE_RECH_ID" length="10" nullable="true"/>
<field name="ecoleDoctId" type="string" column="ECOLE_DOCT_ID" length="4" nullable="true"/> <field name="ecoleDoctId" type="string" column="ECOLE_DOCT_ID" length="4" nullable="true"/>
<field name="libPaysCotut" type="string" column="LIB_PAY" length="40" nullable="true"/> <field name="libPaysCotut" type="string" column="LIB_PAY" length="40" nullable="true"/>
......
...@@ -18,7 +18,6 @@ class These ...@@ -18,7 +18,6 @@ class These
protected $title; protected $title;
protected $codeLNG; protected $codeLNG;
protected $datePremiereInsc; protected $datePremiereInsc;
protected $anneeUnivPremiereInsc;
protected $uniteRechId; protected $uniteRechId;
protected $ecoleDoctId; protected $ecoleDoctId;
protected $libPaysCotut; protected $libPaysCotut;
...@@ -113,14 +112,6 @@ class These ...@@ -113,14 +112,6 @@ class These
return $this->datePremiereInsc; return $this->datePremiereInsc;
} }
/**
* @return mixed
*/
public function getAnneeUnivPremiereInsc()
{
return $this->anneeUnivPremiereInsc;
}
/** /**
* @return mixed * @return mixed
*/ */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment