Loading CHANGELOG.md +1 −0 Changes for CHANGELOG.md: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ Journal des modifications - Formulaire de création d'un individu à partir d'un utilisateur : initialisation manquante du nom patronymique. - Module StepStar : mise à jour du script bash d'envoi quotidien des thèses vers STEP/STAR. - Module StepStar : plus d'envoi de la date d'abandon (recommandation de l'ABES). - Module StepStar : ajout dans le TEF des IdRef de tous les acteurs de la thèse (doctorant, directeur, codirecteur, etc.) - Suppression du menu 'Administration > Compléments d'individu' devenu inutile. - Amélioration visuelle des pages de création/modification de structure (Etab/ED/UR). - Affichage des co-encadrants sur l'annuraire des thèses (au survol de la souris sur la direction de thèse) Loading module/StepStar/config/xml2tef.xsl.twig +33 −16 Changes for module/StepStar/config/xml2tef.xsl.twig: 33 added lines, 16 removed lines. Original line number Diff line number Diff line Loading @@ -193,7 +193,14 @@ que ces méta sont saisies dans les formulaires STAR. C'est au choix. <tef:autoriteExterne autoriteSource="INE"> <xsl:value-of select="CODE_INE"/> </tef:autoriteExterne> <xsl:if test="PPN_DOCTORANT != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="PPN_DOCTORANT"/> </tef:autoriteExterne> </xsl:if> </tef:auteur> <xsl:if test="NNT != ''"> <dc:identifier xsi:type="tef:NNT"> <xsl:value-of select="NNT"/> Loading Loading @@ -304,29 +311,39 @@ que ces méta sont saisies dans les formulaires STAR. C'est au choix. <tef:avisJury>oui</tef:avisJury> <!-- Directeur --> <xsl:if test="NOM_DIRECTEUR != ''"> <!-- Directeurs (1 seul théoriquement) --> <xsl:for-each select="DIRECTEUR"> <tef:directeurThese> <tef:nom> <xsl:value-of select="NOM_DIRECTEUR"/> <xsl:value-of select="attribute::nom"/> </tef:nom> <tef:prenom> <xsl:value-of select="PRENOM_DIRECTEUR"/> <xsl:value-of select="attribute::prenom"/> </tef:prenom> </tef:directeurThese> <xsl:if test="attribute::ppn != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="attribute::ppn"/> </tef:autoriteExterne> </xsl:if> </tef:directeurThese> </xsl:for-each> <!-- Co-directeur --> <xsl:if test="NOM_CODIRECTEUR != ''"> <!-- Co-directeurs --> <xsl:for-each select="CODIRECTEUR"> <tef:directeurThese> <tef:nom> <xsl:value-of select="NOM_CODIRECTEUR"/> <xsl:value-of select="attribute::nom"/> </tef:nom> <tef:prenom> <xsl:value-of select="PRENOM_CODIRECTEUR"/> <xsl:value-of select="attribute::prenom"/> </tef:prenom> </tef:directeurThese> <xsl:if test="attribute::ppn != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="attribute::ppn"/> </tef:autoriteExterne> </xsl:if> </tef:directeurThese> </xsl:for-each> <!-- Président du jury --> <xsl:for-each select="PRESIDENT_JURY"> Loading @@ -337,9 +354,9 @@ que ces méta sont saisies dans les formulaires STAR. C'est au choix. <tef:prenom> <xsl:value-of select="attribute::prenom"/> </tef:prenom> <xsl:if test="attribute::PPN != ''"> <xsl:if test="attribute::ppn != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="attribute::PPN"/> <xsl:value-of select="attribute::ppn"/> </tef:autoriteExterne> </xsl:if> </tef:presidentJury> Loading @@ -354,9 +371,9 @@ que ces méta sont saisies dans les formulaires STAR. C'est au choix. <tef:prenom> <xsl:value-of select="attribute::prenom"/> </tef:prenom> <xsl:if test="attribute::PPN != ''"> <xsl:if test="attribute::ppn != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="attribute::PPN"/> <xsl:value-of select="attribute::ppn"/> </tef:autoriteExterne> </xsl:if> </tef:membreJury> Loading @@ -371,9 +388,9 @@ que ces méta sont saisies dans les formulaires STAR. C'est au choix. <tef:prenom> <xsl:value-of select="attribute::prenom"/> </tef:prenom> <xsl:if test="attribute::PPN != ''"> <xsl:if test="attribute::ppn != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="attribute::PPN"/> <xsl:value-of select="attribute::ppn"/> </tef:autoriteExterne> </xsl:if> </tef:rapporteur> Loading module/StepStar/src/StepStar/Service/Xml/XmlService.php +33 −51 Changes for module/StepStar/src/StepStar/Service/Xml/XmlService.php: 33 added lines, 51 removed lines. Original line number Diff line number Diff line Loading @@ -2,12 +2,12 @@ namespace StepStar\Service\Xml; use Depot\Entity\Db\Diffusion; use Application\Entity\Db\MailConfirmation; use Depot\Entity\Db\MetadonneeThese; use Application\Entity\Db\Role; use DateInterval; use DateTime; use Depot\Entity\Db\Diffusion; use Depot\Entity\Db\MetadonneeThese; use Individu\Entity\Db\Individu; use InvalidArgumentException; use StepStar\Exception\XmlServiceException; Loading @@ -19,6 +19,7 @@ class XmlService // doctorant const CODE_ETUDIANT = 'CODE_ETUDIANT'; const CODE_INE = 'CODE_INE'; const PPN_DOCTORANT = 'PPN_DOCTORANT'; const NOM_ETUDIANT = 'NOM_ETUDIANT'; const NOM_ETUDIANT_USUEL = 'NOM_ETUDIANT_USUEL'; const PRENOM_ETUDIANT = 'PRENOM_ETUDIANT'; Loading Loading @@ -102,10 +103,8 @@ class XmlService const CONVENTION_CIFRE_ETAB = 'CONVENTION_CIFRE_ETAB'; // direction const NOM_DIRECTEUR = 'NOM_DIRECTEUR'; const PRENOM_DIRECTEUR = 'PRENOM_DIRECTEUR'; const NOM_CODIRECTEUR = 'NOM_CODIRECTEUR'; const PRENOM_CODIRECTEUR = 'PRENOM_CODIRECTEUR'; const DIRECTEUR = 'DIRECTEUR'; const CODIRECTEUR = 'CODIRECTEUR'; // jury const MEMBRE_JURY = 'MEMBRE_JURY'; Loading Loading @@ -359,23 +358,23 @@ class XmlService */ private function createTheseElementData(array $these): array { $directeur = null; $codirecteur = null; $presidentJury = null; $directeurs = []; $codirecteurs = []; $presidentJurys = []; $membresJury = []; $rapporteurs = []; foreach ($these['acteurs'] as $acteur) { if ($acteur['role']['code'] === Role::CODE_DIRECTEUR_THESE) { $directeur = $acteur['individu']; $directeurs[] = $acteur['individu']; } elseif ($acteur['role']['code'] === Role::CODE_CODIRECTEUR_THESE) { $codirecteur = $acteur['individu']; $codirecteurs[] = $acteur['individu']; } elseif ($acteur['role']['code'] === Role::CODE_MEMBRE_JURY) { $membresJury[] = $acteur['individu']; } elseif ($acteur['role']['code'] === Role::CODE_PRESIDENT_JURY) { $presidentJury = $acteur['individu']; $presidentJurys[] = $acteur['individu']; } elseif ($acteur['role']['code'] === Role::CODE_RAPPORTEUR_JURY) { $rapporteurs[] = $acteur['individu']; Loading Loading @@ -430,6 +429,7 @@ class XmlService // doctorant self::CODE_ETUDIANT => $these['doctorant']['individu']['supannId'], // todo : ou l'id ? self::CODE_INE => $these['doctorant']['ine'], self::PPN_DOCTORANT => $these['doctorant']['individu']['idRef'] ?? null, self::NOM_ETUDIANT => $these['doctorant']['individu']['nomPatronymique'] ?: $these['doctorant']['individu']['nomUsuel'], self::NOM_ETUDIANT_USUEL => $these['doctorant']['individu']['nomUsuel'], self::PRENOM_ETUDIANT => $these['doctorant']['individu']['prenom1'], Loading Loading @@ -532,50 +532,20 @@ class XmlService $data[self::MOTS_CLES_RAMEAU_ . $index] = $mot; } // direction if ($directeur !== null) { $data[self::NOM_DIRECTEUR] = $directeur['nomUsuel']; $data[self::PRENOM_DIRECTEUR] = $directeur['prenom1']; } if ($codirecteur !== null) { $data[self::NOM_CODIRECTEUR] = $codirecteur['nomUsuel']; $data[self::PRENOM_CODIRECTEUR] = $codirecteur['prenom1']; } // directeurs $data[self::DIRECTEUR] = $this->extractIndividus($directeurs) ?: null; // codirecteurs $data[self::CODIRECTEUR] = $this->extractIndividus($codirecteurs) ?: null; // jury if (!empty($membresJury)) { $jury = []; foreach ($membresJury as $individu) { $jury[] = [ 'prenom' => $individu['prenom1'], 'nom' => $individu['nomUsuel'], ]; } $data[self::MEMBRE_JURY] = $jury; } $data[self::MEMBRE_JURY] = $this->extractIndividus($membresJury) ?: null; // président de jury if ($presidentJury !== null) { $array = [ [ 'prenom' => $presidentJury['prenom1'], 'nom' => $presidentJury['nomUsuel'], ], ]; $data[self::PRESIDENT_JURY] = $array; } // présidents du jury (1 seul théoriquement) $data[self::PRESIDENT_JURY] = $this->extractIndividus($presidentJurys) ?: null; // rapporteurs if (!empty($rapporteurs)) { $array = []; foreach ($rapporteurs as $individu) { $array[] = [ 'prenom' => $individu['prenom1'], 'nom' => $individu['nomUsuel'], ]; } $data[self::RAPPORTEUR_JURY] = $array; } $data[self::RAPPORTEUR_JURY] = $this->extractIndividus($rapporteurs) ?: null; return array_filter($data); } Loading Loading @@ -604,6 +574,18 @@ class XmlService return array_map('trim', explode(MetadonneeThese::SEPARATEUR_MOTS_CLES, $motsClefs)); } private function extractIndividus(array $individus): array { return array_map( fn(array $individu) => array_filter([ 'prenom' => $individu['prenom1'], 'nom' => $individu['nomUsuel'], 'ppn' => $individu['idRef'] ?? null, ]), $individus ); } private function extractDomaineFromThese(array $these) { $codeSiseDiscipline = $these['codeSiseDiscipline'] ?? null; Loading Loading
CHANGELOG.md +1 −0 Changes for CHANGELOG.md: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ Journal des modifications - Formulaire de création d'un individu à partir d'un utilisateur : initialisation manquante du nom patronymique. - Module StepStar : mise à jour du script bash d'envoi quotidien des thèses vers STEP/STAR. - Module StepStar : plus d'envoi de la date d'abandon (recommandation de l'ABES). - Module StepStar : ajout dans le TEF des IdRef de tous les acteurs de la thèse (doctorant, directeur, codirecteur, etc.) - Suppression du menu 'Administration > Compléments d'individu' devenu inutile. - Amélioration visuelle des pages de création/modification de structure (Etab/ED/UR). - Affichage des co-encadrants sur l'annuraire des thèses (au survol de la souris sur la direction de thèse) Loading
module/StepStar/config/xml2tef.xsl.twig +33 −16 Changes for module/StepStar/config/xml2tef.xsl.twig: 33 added lines, 16 removed lines. Original line number Diff line number Diff line Loading @@ -193,7 +193,14 @@ que ces méta sont saisies dans les formulaires STAR. C'est au choix. <tef:autoriteExterne autoriteSource="INE"> <xsl:value-of select="CODE_INE"/> </tef:autoriteExterne> <xsl:if test="PPN_DOCTORANT != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="PPN_DOCTORANT"/> </tef:autoriteExterne> </xsl:if> </tef:auteur> <xsl:if test="NNT != ''"> <dc:identifier xsi:type="tef:NNT"> <xsl:value-of select="NNT"/> Loading Loading @@ -304,29 +311,39 @@ que ces méta sont saisies dans les formulaires STAR. C'est au choix. <tef:avisJury>oui</tef:avisJury> <!-- Directeur --> <xsl:if test="NOM_DIRECTEUR != ''"> <!-- Directeurs (1 seul théoriquement) --> <xsl:for-each select="DIRECTEUR"> <tef:directeurThese> <tef:nom> <xsl:value-of select="NOM_DIRECTEUR"/> <xsl:value-of select="attribute::nom"/> </tef:nom> <tef:prenom> <xsl:value-of select="PRENOM_DIRECTEUR"/> <xsl:value-of select="attribute::prenom"/> </tef:prenom> </tef:directeurThese> <xsl:if test="attribute::ppn != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="attribute::ppn"/> </tef:autoriteExterne> </xsl:if> </tef:directeurThese> </xsl:for-each> <!-- Co-directeur --> <xsl:if test="NOM_CODIRECTEUR != ''"> <!-- Co-directeurs --> <xsl:for-each select="CODIRECTEUR"> <tef:directeurThese> <tef:nom> <xsl:value-of select="NOM_CODIRECTEUR"/> <xsl:value-of select="attribute::nom"/> </tef:nom> <tef:prenom> <xsl:value-of select="PRENOM_CODIRECTEUR"/> <xsl:value-of select="attribute::prenom"/> </tef:prenom> </tef:directeurThese> <xsl:if test="attribute::ppn != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="attribute::ppn"/> </tef:autoriteExterne> </xsl:if> </tef:directeurThese> </xsl:for-each> <!-- Président du jury --> <xsl:for-each select="PRESIDENT_JURY"> Loading @@ -337,9 +354,9 @@ que ces méta sont saisies dans les formulaires STAR. C'est au choix. <tef:prenom> <xsl:value-of select="attribute::prenom"/> </tef:prenom> <xsl:if test="attribute::PPN != ''"> <xsl:if test="attribute::ppn != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="attribute::PPN"/> <xsl:value-of select="attribute::ppn"/> </tef:autoriteExterne> </xsl:if> </tef:presidentJury> Loading @@ -354,9 +371,9 @@ que ces méta sont saisies dans les formulaires STAR. C'est au choix. <tef:prenom> <xsl:value-of select="attribute::prenom"/> </tef:prenom> <xsl:if test="attribute::PPN != ''"> <xsl:if test="attribute::ppn != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="attribute::PPN"/> <xsl:value-of select="attribute::ppn"/> </tef:autoriteExterne> </xsl:if> </tef:membreJury> Loading @@ -371,9 +388,9 @@ que ces méta sont saisies dans les formulaires STAR. C'est au choix. <tef:prenom> <xsl:value-of select="attribute::prenom"/> </tef:prenom> <xsl:if test="attribute::PPN != ''"> <xsl:if test="attribute::ppn != ''"> <tef:autoriteExterne autoriteSource="Sudoc"> <xsl:value-of select="attribute::PPN"/> <xsl:value-of select="attribute::ppn"/> </tef:autoriteExterne> </xsl:if> </tef:rapporteur> Loading
module/StepStar/src/StepStar/Service/Xml/XmlService.php +33 −51 Changes for module/StepStar/src/StepStar/Service/Xml/XmlService.php: 33 added lines, 51 removed lines. Original line number Diff line number Diff line Loading @@ -2,12 +2,12 @@ namespace StepStar\Service\Xml; use Depot\Entity\Db\Diffusion; use Application\Entity\Db\MailConfirmation; use Depot\Entity\Db\MetadonneeThese; use Application\Entity\Db\Role; use DateInterval; use DateTime; use Depot\Entity\Db\Diffusion; use Depot\Entity\Db\MetadonneeThese; use Individu\Entity\Db\Individu; use InvalidArgumentException; use StepStar\Exception\XmlServiceException; Loading @@ -19,6 +19,7 @@ class XmlService // doctorant const CODE_ETUDIANT = 'CODE_ETUDIANT'; const CODE_INE = 'CODE_INE'; const PPN_DOCTORANT = 'PPN_DOCTORANT'; const NOM_ETUDIANT = 'NOM_ETUDIANT'; const NOM_ETUDIANT_USUEL = 'NOM_ETUDIANT_USUEL'; const PRENOM_ETUDIANT = 'PRENOM_ETUDIANT'; Loading Loading @@ -102,10 +103,8 @@ class XmlService const CONVENTION_CIFRE_ETAB = 'CONVENTION_CIFRE_ETAB'; // direction const NOM_DIRECTEUR = 'NOM_DIRECTEUR'; const PRENOM_DIRECTEUR = 'PRENOM_DIRECTEUR'; const NOM_CODIRECTEUR = 'NOM_CODIRECTEUR'; const PRENOM_CODIRECTEUR = 'PRENOM_CODIRECTEUR'; const DIRECTEUR = 'DIRECTEUR'; const CODIRECTEUR = 'CODIRECTEUR'; // jury const MEMBRE_JURY = 'MEMBRE_JURY'; Loading Loading @@ -359,23 +358,23 @@ class XmlService */ private function createTheseElementData(array $these): array { $directeur = null; $codirecteur = null; $presidentJury = null; $directeurs = []; $codirecteurs = []; $presidentJurys = []; $membresJury = []; $rapporteurs = []; foreach ($these['acteurs'] as $acteur) { if ($acteur['role']['code'] === Role::CODE_DIRECTEUR_THESE) { $directeur = $acteur['individu']; $directeurs[] = $acteur['individu']; } elseif ($acteur['role']['code'] === Role::CODE_CODIRECTEUR_THESE) { $codirecteur = $acteur['individu']; $codirecteurs[] = $acteur['individu']; } elseif ($acteur['role']['code'] === Role::CODE_MEMBRE_JURY) { $membresJury[] = $acteur['individu']; } elseif ($acteur['role']['code'] === Role::CODE_PRESIDENT_JURY) { $presidentJury = $acteur['individu']; $presidentJurys[] = $acteur['individu']; } elseif ($acteur['role']['code'] === Role::CODE_RAPPORTEUR_JURY) { $rapporteurs[] = $acteur['individu']; Loading Loading @@ -430,6 +429,7 @@ class XmlService // doctorant self::CODE_ETUDIANT => $these['doctorant']['individu']['supannId'], // todo : ou l'id ? self::CODE_INE => $these['doctorant']['ine'], self::PPN_DOCTORANT => $these['doctorant']['individu']['idRef'] ?? null, self::NOM_ETUDIANT => $these['doctorant']['individu']['nomPatronymique'] ?: $these['doctorant']['individu']['nomUsuel'], self::NOM_ETUDIANT_USUEL => $these['doctorant']['individu']['nomUsuel'], self::PRENOM_ETUDIANT => $these['doctorant']['individu']['prenom1'], Loading Loading @@ -532,50 +532,20 @@ class XmlService $data[self::MOTS_CLES_RAMEAU_ . $index] = $mot; } // direction if ($directeur !== null) { $data[self::NOM_DIRECTEUR] = $directeur['nomUsuel']; $data[self::PRENOM_DIRECTEUR] = $directeur['prenom1']; } if ($codirecteur !== null) { $data[self::NOM_CODIRECTEUR] = $codirecteur['nomUsuel']; $data[self::PRENOM_CODIRECTEUR] = $codirecteur['prenom1']; } // directeurs $data[self::DIRECTEUR] = $this->extractIndividus($directeurs) ?: null; // codirecteurs $data[self::CODIRECTEUR] = $this->extractIndividus($codirecteurs) ?: null; // jury if (!empty($membresJury)) { $jury = []; foreach ($membresJury as $individu) { $jury[] = [ 'prenom' => $individu['prenom1'], 'nom' => $individu['nomUsuel'], ]; } $data[self::MEMBRE_JURY] = $jury; } $data[self::MEMBRE_JURY] = $this->extractIndividus($membresJury) ?: null; // président de jury if ($presidentJury !== null) { $array = [ [ 'prenom' => $presidentJury['prenom1'], 'nom' => $presidentJury['nomUsuel'], ], ]; $data[self::PRESIDENT_JURY] = $array; } // présidents du jury (1 seul théoriquement) $data[self::PRESIDENT_JURY] = $this->extractIndividus($presidentJurys) ?: null; // rapporteurs if (!empty($rapporteurs)) { $array = []; foreach ($rapporteurs as $individu) { $array[] = [ 'prenom' => $individu['prenom1'], 'nom' => $individu['nomUsuel'], ]; } $data[self::RAPPORTEUR_JURY] = $array; } $data[self::RAPPORTEUR_JURY] = $this->extractIndividus($rapporteurs) ?: null; return array_filter($data); } Loading Loading @@ -604,6 +574,18 @@ class XmlService return array_map('trim', explode(MetadonneeThese::SEPARATEUR_MOTS_CLES, $motsClefs)); } private function extractIndividus(array $individus): array { return array_map( fn(array $individu) => array_filter([ 'prenom' => $individu['prenom1'], 'nom' => $individu['nomUsuel'], 'ppn' => $individu['idRef'] ?? null, ]), $individus ); } private function extractDomaineFromThese(array $these) { $codeSiseDiscipline = $these['codeSiseDiscipline'] ?? null; Loading