Passed
Branch master (fd6b1a)
by Dispositif
03:51 queued 01:13
created

MixLienAuteur::concatParamsAuteur1()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 4
c 1
b 0
f 0
dl 0
loc 7
rs 10
cc 1
nc 1
nop 2
1
<?php
2
/*
3
 * This file is part of dispositif/wikibot application (@github)
4
 * 2019-2023 © Philippe M./Irønie  <[email protected]>
5
 * For the full copyright and MIT license information, view the license file.
6
 */
7
8
declare(strict_types=1);
9
10
namespace App\Domain\Transformers\Handlers;
11
12
use App\Domain\Models\Wiki\OuvrageTemplate;
13
use App\Domain\Utils\WikiTextUtil;
14
use Exception;
15
16
/**
17
 * Complétion 'lien auteur1' d'après Wikidata et BnF.
18
 * Logique : faut pas confondre auteur1/auteur2 pour le lien auteur1.
19
 * @throws Exception
20
 */
21
class MixLienAuteur extends AbstractMixHandler
22
{
23
    public function handle()
24
    {
25
        $lienAuteur1 = $this->book->getParam('lien auteur1');
26
        if (empty($lienAuteur1)) {
27
            return;
28
        }
29
        if ($this->origin->hasParamValue('lien auteur1')) {
30
            $this->log->debug("lien auteur1 existe déjà\n");
31
32
            return;
33
        }
34
35
        $originAuteur1 = $this->concatParamsAuteur1($this->origin);
36
        $bookAuteur1 = $this->concatParamsAuteur1($this->book);
37
38
        // Check if wikilink in any of the author param
39
        if (WikiTextUtil::isWikify($originAuteur1)) {
40
            $this->log->debug("lien auteur1 existe déjà\n");
41
42
            return;
43
        }
44
45
        // WP:"Paul Durand" — Bnf "Paul Durand,..."
46
        if (!empty($bookAuteur1) && !empty($originAuteur1)
47
            && (mb_strtolower($bookAuteur1) === mb_strtolower($originAuteur1)
48
                || strpos($originAuteur1, $this->book->getParam('nom1') ?? '') !== false)
49
        ) {
50
            $this->origin->setParam('lien auteur1', $lienAuteur1);
51
            $this->optiStatus->addSummaryLog('+lien auteur1');
52
            $this->optiStatus->setNotCosmetic(true);
53
            $this->optiStatus->setMajor(true);
54
        } else {
55
            $this->log->debug('auteur1 pas identifié\n');
56
        }
57
        // todo: gérer "not same book" avec inversion auteur1/2 avant d'implémenter +lien auteur2
58
    }
59
60
    /**
61
     * Concaténation auteur/prénom/nom pour comparaison de wiki-modèles.
62
     */
63
    private function concatParamsAuteur1(OuvrageTemplate $ouvrage, ?int $num = 1): ?string
64
    {
65
        $auteur = $ouvrage->getParam('auteur' . $num) ?? '';
66
        $prenom = $ouvrage->getParam('prénom' . $num) ?? '';
67
        $nom = $ouvrage->getParam('nom' . $num) ?? '';
68
69
        return trim($auteur . ' ' . $prenom . ' ' . $nom);
70
    }
71
}