Commit f4b42449 authored by Thomas Hamel's avatar Thomas Hamel
Browse files

WIP

parent d0b89b8e
Loading
Loading
Loading
Loading
+3 −1
Changes for composer.json: 3 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -15,7 +15,8 @@
        "phpcompatibility/php-compatibility": "*",

        "unicaen/code": "^6.0",
        "unicaen/test": "^6.1"
        "unicaen/test": "^6.1",
        "unicaen/db-import": "dev-feature_select_generator"
    },
    "require": {
        "php": "^8.2",
@@ -59,6 +60,7 @@
        "unicaen/console": "^6.0",
        "unicaen/db-anonym": "^4.0",
        "unicaen/db-import": "^7.2",
        "unicaen/db-import": "dev-feature_select_generator",
        "unicaen/etat": "^6.0",
        "unicaen/faq": "^7.0",
        "unicaen/idref": "^2.0",
+9 −8
Changes for composer.lock: 9 added lines, 8 removed lines.
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
        "This file is @generated automatically"
    ],
    "content-hash": "30888d6e3783a3db724e1b2f869c4cbd",
    "content-hash": "1ca0678d489e14bbb2672c4796775da5",
    "packages": [
        {
            "name": "apereo/phpcas",
@@ -12130,11 +12130,11 @@
        },
        {
            "name": "unicaen/db-import",
            "version": "7.2.1",
            "version": "dev-feature_select_generator",
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/lib/unicaen/db-import.git",
                "reference": "49c966fc3cd0dd465e260eee65077e4c8b25de60"
                "reference": "2909be5f8fdfea33859cd13da8e4a5400d90d49e"
            },
            "require": {
                "beberlei/assert": "^3.3",
@@ -12151,22 +12151,22 @@
            "require-dev": {
                "phpunit/phpunit": "^8.0"
            },
            "type": "module",
            "type": "library",
            "autoload": {
                "psr-0": {
                    "UnicaenDbImport\\": "src/"
                    "UnicaenDbImport": "src/"
                },
                "classmap": [
                    "./Module.php"
                ]
            },
            "autoload-dev": {
                "psr-4": {
                    "UnicaenDbImportUnitTest\\": "test/UnicaenDbImportUnitTest"
                "psr-0": {
                    "UnicaenDbImportUnitTest": "test/"
                }
            },
            "description": "Module d'import entre bases de données",
            "time": "2025-07-15T07:14:19+00:00"
            "time": "2026-02-12T13:02:45+00:00"
        },
        {
            "name": "unicaen/etat",
@@ -15504,6 +15504,7 @@
    "aliases": [],
    "minimum-stability": "dev",
    "stability-flags": {
        "unicaen/db-import": 20,
        "unicaen/pdf": 20,
        "unicaen/renderer": 20,
        "unicaen/sygal-api": 20,
+64 −1
Changes for config/autoload/global.php: 64 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -6,7 +6,10 @@ use Application\Entity\Db\Source;
use Application\Navigation\NavigationFactoryFactory;
use Import\Model\ImportObserv;
use Import\Model\ImportObservResult;
use Portfolio\Service\PublicationSelectGenerator;
use Retraitement\Filter\Command\RetraitementShellCommandMines;
use UnicaenDbImport\Filter\ColumnValue\ArrayToStringColumnValueFilter;
use UnicaenDbImport\Service\Api\Response\DataExtractor\Solr\SolrResponseDataExtractor;

$config = [
    'api-tools-content-negotiation' => [
@@ -149,7 +152,7 @@ $config = [
                'source' => [
                    'name' => 'HAL',
                    'connection' => 'api-archives-ouvertes',
                    'select' => '/domain/?q=*:*&wt=json&fl=*&rows=500',
                    'select' => '/ref/domain/?q=*:*&wt=json&fl=*&rows=500',
                    'code' => 'HAL',
                    'columns' => [
                        'docid',
@@ -182,6 +185,46 @@ $config = [
                    'id_strategy' => null,
                    'id_sequence' => null,
                ],
            ],
            [
                'name' => 'publications-hal',
                'order' => 170,
                'source' => [
                    'name' => 'PUBLICATIONS_HAL',
                    'connection' => 'api-archives-ouvertes',
                    'select' => PublicationSelectGenerator::class,
                    'code' => 'PUBLICATIONS_HAL',
                    'data_extractor' => SolrResponseDataExtractor::class,
                    'columns' => [
                        'title_s',
                        'authFullName_s',
                        'publicationDate_s',
                        'docType_s',
                        'publisher_s',
                        'halId_s',
                        'uri_s',
                    ],
                    'column_name_filter' => [
                        'halId_s' => 'source_code',
                    ],
                    'column_value_filter' => [
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'authFullName_s']],
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'title_s']],
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'publisher_s']],
                    ],
                    'source_code_column' => 'source_code',
                    'request_options' => [
                        'debug' => true,
                    ],
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'tmp_publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => null,
                    'id_sequence' => null,
                ],
            ]
        ],

@@ -211,6 +254,26 @@ $config = [
                    'where' => NULL,
                ],
            ],
            [
                'name' => 'publications-hal',
                'order' => 170,
                'source' => [
                    'name' => 'sygal',
                    'code' => 'app',
                    'table' => 'src_publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => 'SEQUENCE',
                    'id_sequence' => null,
                    'where' => NULL,
                ],
            ],
        ],
    ],
    // Options pour le service de notification par mail
+111 −0
Changes for doc/release-notes/fiche_rncp/02_publications.sql: 111 added lines, 0 removed lines.
Original line number Diff line number Diff line
INSERT INTO source(id, code, libelle, etablissement_id, importable)
VALUES (nextval('source_id_seq'), 'PUBLICATIONS_HAL', 'PUBLICATIONS_HAL', null, true) ;

--Suppression des possibles données existantes concernant l'import des publications
drop view if exists v_diff_publication_hal;
drop view if exists src_publication_hal;
drop table if exists tmp_publication_hal;
drop table if exists publication_hal;

--Création de la table TEMP de publication
create table if not exists public.tmp_publication_hal
(
    id                    bigserial,
    title_s               varchar(2048),
    auth_full_name_s        varchar(264),
    publication_date_s     timestamp,
    publisher_s           varchar(264),
    doc_type_s             varchar(264),
    uri_s             text,
    insert_date           timestamp(0) default ('now'::text)::timestamp without time zone,
    source_id             bigint                                                             not null,
    source_code           varchar(64)                                                        not null,
    source_insert_date    timestamp    default ('now'::text)::timestamp without time zone,
    histo_creation        timestamp(0) default ('now'::text)::timestamp(0) without time zone not null,
    histo_modification    timestamp(0),
    histo_destruction     timestamp(0),
    histo_createur_id     bigint                                                             not null,
    histo_modificateur_id bigint,
    histo_destructeur_id  bigint
    );

create index tmp_publication_hal_source_code_index
    on public.tmp_publication (source_code);

create index tmp_publication_hal_source_id_index
    on public.tmp_publication_hal (source_id);

create unique index tmp_publication_hal_unique_index
    on public.tmp_publication_hal (source_id, source_code);

--Création de la table publication_hal
create table if not exists public.publication_hal
(
    id                    bigserial                                                    not null
    primary key,
    title_s               varchar(2048),
    auth_full_name_s        varchar(264),
    publication_date_s     timestamp,
    publisher_s           varchar(264),
    doc_type_s           varchar(264),
    uri_s             text,
    histo_creation        timestamp default ('now'::text)::timestamp without time zone not null,
    histo_createur_id     bigint                                                       not null
    constraint publication_hal_hcfk
    references public.utilisateur
                                                                     on delete cascade,
    histo_modification    timestamp,
    histo_modificateur_id bigint
    constraint publication_hal_hmfk
    references public.utilisateur
                                                                     on delete cascade,
    histo_destruction     timestamp,
    histo_destructeur_id  bigint
    constraint publication_hal_hdfk
    references public.utilisateur
                                                                     on delete cascade,
    source_id             bigint                                                       not null
    constraint publication_hal_source_fk
    references public.source
                                                                     on delete cascade,
    source_code           varchar(64)                                                  not null
    );

create index publication_hal_hc_idx
    on public.publication_hal (histo_createur_id);

create index publication_hal_hd_idx
    on public.publication_hal (histo_destructeur_id);

create index publication_hal_hm_idx
    on public.publication_hal (histo_modificateur_id);

create unique index publication_hal_source_code_un
    on public.publication_hal (source_code);

create index publication_hal_source_idx
    on public.publication_hal (source_id);


--Création de la vue src_publication_hal avec les infos de tmp_publication_hal
create or replace view src_publication_hal
            (id, source_code, source_id, title_s, auth_full_name_s, publication_date_s, doc_type_s, publisher_s, uri_s) as
select NULL::bigint                                                 AS id,
    tmp.source_code,
       src.id                                                       AS source_id,
       tmp.title_s,
       tmp.auth_full_name_s,
       tmp.publication_date_s,
       tmp.doc_type_s,
       tmp.publisher_s,
       tmp.uri_s
FROM tmp_publication_hal tmp
         JOIN source src ON src.id = tmp.source_id
;

// a voir !!!!!! si on associe un individu ou un doctorant à une publication
CREATE TABLE IF NOT EXISTS public.publication_hal_doctorant
(
    individu_id   bigint NOT NULL,
    publication_hal_id bigint NOT NULL
);
 No newline at end of file
+12 −0
Changes for module/Individu/src/Individu/Entity/Db/Repository/IndividuRepository.php: 12 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -144,6 +144,18 @@ class IndividuRepository extends DefaultEntityRepository
        }, $res);
    }

    /**
     * @return Individu[]
     */
    public function findAllWithIdHalNotNull()
    {
        $qb = $this->createQueryBuilder('ind')
            ->andWhere('ind.idHal IS NOT NULL')
            ->andWhere("TRIM(ind.idHal) <> ''");

        return $qb->getQuery()->getResult();
    }

    /**
     * @param AbstractActionController $controller
     * @param string $param
Loading