NoteRef::read()   A
last analyzed

Complexity

Conditions 4
Paths 3

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 10
nc 3
nop 4
dl 0
loc 17
rs 9.9332
c 0
b 0
f 0
1
<?php
2
3
namespace FamilyTree365\LaravelGedcom\Utils\Importer;
4
5
use FamilyTree365\LaravelGedcom\Models\Note;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, FamilyTree365\LaravelGedcom\Utils\Importer\Note. Consider defining an alias.

Let?s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let?s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
6
7
class NoteRef
8
{
9
    /**
10
     * Gedcom\Record\NoteRef $noteref
11
     * String $group
12
     * Integer $group_id.
13
     */
14
    public static function read($conn, \Gedcom\Record\NoteRef $noteref, $group = '', $group_id = 0)
15
    {
16
        $note = $noteref->getNote();
17
18
        // store note
19
        $key = ['group'=>$group, 'gid'=>$group_id, 'note'=>$note];
20
        $data = ['group'=>$group, 'gid'=>$group_id, 'note'=>$note];
21
        $record = Note::on($conn)->updateOrCreate($key, $data);
22
23
        // store Sources of Note
24
        $_group = 'note';
25
        $_gid = $record->id;
26
        // SourRef array
27
        $sour = $noteref->getSour();
28
        if ($sour && count($sour) > 0) {
0 ignored issues
show
Bug introduced by
It seems like $sour can also be of type Gedcom\Record\NoteRef; however, parameter $value of count() does only seem to accept Countable|array, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

28
        if ($sour && count(/** @scrutinizer ignore-type */ $sour) > 0) {
Loading history...
29
            foreach ($sour as $item) {
30
                SourRef::read($conn, $item, $_group, $_gid);
31
            }
32
        }
33
    }
34
}
35