Completed
Push — EZP-30969-fetch-reverse-relati... ( d71d24 )
by
unknown
121:16 queued 99:27
created

ExceptionConversion::copyRelations()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
nc 3
nop 3
dl 0
loc 10
rs 9.9332
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * File containing the Content Gateway base class.
5
 *
6
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
7
 * @license For full copyright and license information view LICENSE file distributed with this source code.
8
 */
9
namespace eZ\Publish\Core\Persistence\Legacy\Content\Gateway;
10
11
use eZ\Publish\Core\Persistence\Legacy\Content\Gateway;
12
use eZ\Publish\Core\Persistence\Legacy\Content\StorageFieldValue;
13
use eZ\Publish\SPI\Persistence\Content;
14
use eZ\Publish\SPI\Persistence\Content\CreateStruct;
15
use eZ\Publish\SPI\Persistence\Content\UpdateStruct;
16
use eZ\Publish\SPI\Persistence\Content\MetadataUpdateStruct;
17
use eZ\Publish\SPI\Persistence\Content\VersionInfo;
18
use eZ\Publish\SPI\Persistence\Content\Field;
19
use eZ\Publish\SPI\Persistence\Content\Relation\CreateStruct as RelationCreateStruct;
20
use Doctrine\DBAL\DBALException;
21
use PDOException;
22
use RuntimeException;
23
24
/**
25
 * Base class for content gateways.
26
 */
27
class ExceptionConversion extends Gateway
28
{
29
    /**
30
     * The wrapped gateway.
31
     *
32
     * @var Gateway
33
     */
34
    protected $innerGateway;
35
36
    /**
37
     * Creates a new exception conversion gateway around $innerGateway.
38
     *
39
     * @param Gateway $innerGateway
40
     */
41
    public function __construct(Gateway $innerGateway)
42
    {
43
        $this->innerGateway = $innerGateway;
44
    }
45
46
    /**
47
     * Get context definition for external storage layers.
48
     *
49
     * @return array
50
     */
51
    public function getContext()
52
    {
53
        try {
54
            return $this->innerGateway->getContext();
55
        } catch (DBALException $e) {
56
            throw new RuntimeException('Database error', 0, $e);
57
        } catch (PDOException $e) {
58
            throw new RuntimeException('Database error', 0, $e);
59
        }
60
    }
61
62
    /**
63
     * Inserts a new content object.
64
     *
65
     * @param \eZ\Publish\SPI\Persistence\Content\CreateStruct $struct
66
     * @param mixed $currentVersionNo
67
     *
68
     * @return int ID
69
     */
70
    public function insertContentObject(CreateStruct $struct, $currentVersionNo = 1)
71
    {
72
        try {
73
            return $this->innerGateway->insertContentObject($struct, $currentVersionNo);
74
        } catch (DBALException $e) {
75
            throw new RuntimeException('Database error', 0, $e);
76
        } catch (PDOException $e) {
77
            throw new RuntimeException('Database error', 0, $e);
78
        }
79
    }
80
81
    /**
82
     * Inserts a new version.
83
     *
84
     * @param \eZ\Publish\SPI\Persistence\Content\VersionInfo $versionInfo
85
     * @param \eZ\Publish\SPI\Persistence\Content\Field[] $fields
86
     *
87
     * @return int ID
88
     */
89
    public function insertVersion(VersionInfo $versionInfo, array $fields)
90
    {
91
        try {
92
            return $this->innerGateway->insertVersion($versionInfo, $fields);
93
        } catch (DBALException $e) {
94
            throw new RuntimeException('Database error', 0, $e);
95
        } catch (PDOException $e) {
96
            throw new RuntimeException('Database error', 0, $e);
97
        }
98
    }
99
100
    /**
101
     * Updates an existing content identified by $contentId in respect to $struct.
102
     *
103
     * @param int $contentId
104
     * @param \eZ\Publish\SPI\Persistence\Content\MetadataUpdateStruct $struct
105
     * @param \eZ\Publish\SPI\Persistence\Content\VersionInfo $prePublishVersionInfo Provided on publish
106
     */
107
    public function updateContent($contentId, MetadataUpdateStruct $struct, VersionInfo $prePublishVersionInfo = null)
108
    {
109
        try {
110
            return $this->innerGateway->updateContent($contentId, $struct, $prePublishVersionInfo);
111
        } catch (DBALException $e) {
112
            throw new RuntimeException('Database error', 0, $e);
113
        } catch (PDOException $e) {
114
            throw new RuntimeException('Database error', 0, $e);
115
        }
116
    }
117
118
    /**
119
     * Updates version $versionNo for content identified by $contentId, in respect to $struct.
120
     *
121
     * @param int $contentId
122
     * @param int $versionNo
123
     * @param \eZ\Publish\SPI\Persistence\Content\UpdateStruct $struct
124
     */
125
    public function updateVersion($contentId, $versionNo, UpdateStruct $struct)
126
    {
127
        try {
128
            return $this->innerGateway->updateVersion($contentId, $versionNo, $struct);
129
        } catch (DBALException $e) {
130
            throw new RuntimeException('Database error', 0, $e);
131
        } catch (PDOException $e) {
132
            throw new RuntimeException('Database error', 0, $e);
133
        }
134
    }
135
136
    /**
137
     * Updates "always available" flag for content identified by $contentId, in respect to $alwaysAvailable.
138
     *
139
     * @param int $contentId
140
     * @param bool $newAlwaysAvailable New "always available" value
141
     */
142
    public function updateAlwaysAvailableFlag($contentId, $newAlwaysAvailable)
143
    {
144
        try {
145
            return $this->innerGateway->updateAlwaysAvailableFlag($contentId, $newAlwaysAvailable);
146
        } catch (DBALException $e) {
147
            throw new RuntimeException('Database error', 0, $e);
148
        } catch (PDOException $e) {
149
            throw new RuntimeException('Database error', 0, $e);
150
        }
151
    }
152
153
    /**
154
     * Sets the state of object identified by $contentId and $version to $state.
155
     *
156
     * The $status can be one of STATUS_DRAFT, STATUS_PUBLISHED, STATUS_ARCHIVED
157
     *
158
     * @param int $contentId
159
     * @param int $version
160
     * @param int $status
161
     *
162
     * @return bool
163
     */
164
    public function setStatus($contentId, $version, $status)
165
    {
166
        try {
167
            return $this->innerGateway->setStatus($contentId, $version, $status);
168
        } catch (DBALException $e) {
169
            throw new RuntimeException('Database error', 0, $e);
170
        } catch (PDOException $e) {
171
            throw new RuntimeException('Database error', 0, $e);
172
        }
173
    }
174
175
    /**
176
     * Inserts a new field.
177
     *
178
     * Only used when a new field is created (i.e. a new object or a field in a
179
     * new language!). After that, field IDs need to stay the same, only the
180
     * version number changes.
181
     *
182
     * @param \eZ\Publish\SPI\Persistence\Content $content
183
     * @param \eZ\Publish\SPI\Persistence\Content\Field $field
184
     * @param \eZ\Publish\Core\Persistence\Legacy\Content\StorageFieldValue $value
185
     *
186
     * @return int ID
187
     */
188
    public function insertNewField(Content $content, Field $field, StorageFieldValue $value)
189
    {
190
        try {
191
            return $this->innerGateway->insertNewField($content, $field, $value);
192
        } catch (DBALException $e) {
193
            throw new RuntimeException('Database error', 0, $e);
194
        } catch (PDOException $e) {
195
            throw new RuntimeException('Database error', 0, $e);
196
        }
197
    }
198
199
    /**
200
     * Inserts an existing field.
201
     *
202
     * Used to insert a field with an exsting ID but a new version number.
203
     *
204
     * @param Content $content
205
     * @param Field $field
206
     * @param StorageFieldValue $value
207
     */
208
    public function insertExistingField(Content $content, Field $field, StorageFieldValue $value)
209
    {
210
        try {
211
            return $this->innerGateway->insertExistingField($content, $field, $value);
212
        } catch (DBALException $e) {
213
            throw new RuntimeException('Database error', 0, $e);
214
        } catch (PDOException $e) {
215
            throw new RuntimeException('Database error', 0, $e);
216
        }
217
    }
218
219
    /**
220
     * Updates an existing field.
221
     *
222
     * @param Field $field
223
     * @param StorageFieldValue $value
224
     */
225
    public function updateField(Field $field, StorageFieldValue $value)
226
    {
227
        try {
228
            return $this->innerGateway->updateField($field, $value);
229
        } catch (DBALException $e) {
230
            throw new RuntimeException('Database error', 0, $e);
231
        } catch (PDOException $e) {
232
            throw new RuntimeException('Database error', 0, $e);
233
        }
234
    }
235
236
    /**
237
     * Updates an existing, non-translatable field.
238
     *
239
     * @param \eZ\Publish\SPI\Persistence\Content\Field $field
240
     * @param \eZ\Publish\Core\Persistence\Legacy\Content\StorageFieldValue $value
241
     * @param int $contentId
242
     */
243
    public function updateNonTranslatableField(
244
        Field $field,
245
        StorageFieldValue $value,
246
        $contentId
247
    ) {
248
        try {
249
            return $this->innerGateway->updateNonTranslatableField($field, $value, $contentId);
250
        } catch (DBALException $e) {
251
            throw new RuntimeException('Database error', 0, $e);
252
        } catch (PDOException $e) {
253
            throw new RuntimeException('Database error', 0, $e);
254
        }
255
    }
256
257
    /**
258
     * {@inheritdoc}
259
     */
260
    public function load($contentId, $version = null, array $translations = null)
261
    {
262
        try {
263
            return $this->innerGateway->load($contentId, $version, $translations);
0 ignored issues
show
Bug introduced by
It seems like $translations defined by parameter $translations on line 260 can also be of type array; however, eZ\Publish\Core\Persiste...Content\Gateway::load() does only seem to accept null|array<integer,string>, maybe add an additional type check?

This check looks at variables that have been passed in as parameters and are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
264
        } catch (DBALException $e) {
265
            throw new RuntimeException('Database error', 0, $e);
266
        } catch (PDOException $e) {
267
            throw new RuntimeException('Database error', 0, $e);
268
        }
269
    }
270
271
    /**
272
     * {@inheritdoc}
273
     */
274
    public function loadContentList(array $contentIds, array $translations = null): array
275
    {
276
        try {
277
            return $this->innerGateway->loadContentList($contentIds, $translations);
0 ignored issues
show
Bug introduced by
It seems like $translations defined by parameter $translations on line 274 can also be of type array; however, eZ\Publish\Core\Persiste...eway::loadContentList() does only seem to accept null|array<integer,string>, maybe add an additional type check?

This check looks at variables that have been passed in as parameters and are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
278
        } catch (DBALException | PDOException $e) {
279
            throw new RuntimeException('Database error', 0, $e);
280
        }
281
    }
282
283
    /**
284
     * Loads data for a content object identified by its remote ID.
285
     *
286
     * Returns an array with the relevant data.
287
     *
288
     * @param mixed $remoteId
289
     *
290
     * @return array
291
     */
292
    public function loadContentInfoByRemoteId($remoteId)
293
    {
294
        try {
295
            return $this->innerGateway->loadContentInfoByRemoteId($remoteId);
296
        } catch (DBALException $e) {
297
            throw new \RuntimeException('Database error', 0, $e);
298
        } catch (\PDOException $e) {
299
            throw new \RuntimeException('Database error', 0, $e);
300
        }
301
    }
302
303
    /**
304
     * Loads info for a content object identified by its location ID (node ID).
305
     *
306
     * Returns an array with the relevant data.
307
     *
308
     * @param int $locationId
309
     *
310
     * @throws \eZ\Publish\Core\Base\Exceptions\NotFoundException
311
     *
312
     * @return array
313
     */
314
    public function loadContentInfoByLocationId($locationId)
315
    {
316
        try {
317
            return $this->innerGateway->loadContentInfoByLocationId($locationId);
318
        } catch (DBALException $e) {
319
            throw new \RuntimeException('Database error', 0, $e);
320
        } catch (\PDOException $e) {
321
            throw new \RuntimeException('Database error', 0, $e);
322
        }
323
    }
324
325
    /**
326
     * Loads info for content identified by $contentId.
327
     * Will basically return a hash containing all field values for ezcontentobject table plus following keys:
328
     *  - always_available => Boolean indicating if content's language mask contains alwaysAvailable bit field
329
     *  - main_language_code => Language code for main (initial) language. E.g. "eng-GB".
330
     *
331
     * @param int $contentId
332
     *
333
     * @throws \eZ\Publish\Core\Base\Exceptions\NotFoundException
334
     *
335
     * @return array
336
     */
337
    public function loadContentInfo($contentId)
338
    {
339
        try {
340
            return $this->innerGateway->loadContentInfo($contentId);
341
        } catch (DBALException $e) {
342
            throw new RuntimeException('Database error', 0, $e);
343
        } catch (PDOException $e) {
344
            throw new RuntimeException('Database error', 0, $e);
345
        }
346
    }
347
348
    public function loadContentInfoList(array $contentIds)
349
    {
350
        try {
351
            return $this->innerGateway->loadContentInfoList($contentIds);
352
        } catch (DBALException $e) {
353
            throw new RuntimeException('Database error', 0, $e);
354
        } catch (PDOException $e) {
355
            throw new RuntimeException('Database error', 0, $e);
356
        }
357
    }
358
359
    /**
360
     * Loads version info for content identified by $contentId and $versionNo.
361
     * Will basically return a hash containing all field values from ezcontentobject_version table plus following keys:
362
     *  - names => Hash of content object names. Key is the language code, value is the name.
363
     *  - languages => Hash of language ids. Key is the language code (e.g. "eng-GB"), value is the language numeric id without the always available bit.
364
     *  - initial_language_code => Language code for initial language in this version.
365
     *
366
     * @param int $contentId
367
     * @param int|null $versionNo
368
     *
369
     * @return array
370
     */
371
    public function loadVersionInfo($contentId, $versionNo = null)
372
    {
373
        try {
374
            return $this->innerGateway->loadVersionInfo($contentId, $versionNo);
375
        } catch (DBALException $e) {
376
            throw new RuntimeException('Database error', 0, $e);
377
        } catch (PDOException $e) {
378
            throw new RuntimeException('Database error', 0, $e);
379
        }
380
    }
381
382
    /**
383
     * Returns data for all versions with given status created by the given $userId.
384
     *
385
     * @param int $userId
386
     * @param int $status
387
     *
388
     * @return string[][]
389
     */
390
    public function listVersionsForUser($userId, $status = VersionInfo::STATUS_DRAFT)
391
    {
392
        try {
393
            return $this->innerGateway->listVersionsForUser($userId, $status);
394
        } catch (DBALException $e) {
395
            throw new RuntimeException('Database error', 0, $e);
396
        } catch (PDOException $e) {
397
            throw new RuntimeException('Database error', 0, $e);
398
        }
399
    }
400
401
    /**
402
     * Returns all version data for the given $contentId.
403
     *
404
     * Result is returned with oldest version first (using version id as it has index and is auto increment).
405
     *
406
     * @param mixed $contentId
407
     * @param mixed|null $status Optional argument to filter versions by status, like {@see VersionInfo::STATUS_ARCHIVED}.
408
     * @param int $limit Limit for items returned, -1 means none.
409
     *
410
     * @return string[][]
411
     */
412
    public function listVersions($contentId, $status = null, $limit = -1)
413
    {
414
        try {
415
            return $this->innerGateway->listVersions($contentId, $status, $limit);
416
        } catch (DBALException $e) {
417
            throw new RuntimeException('Database error', 0, $e);
418
        } catch (PDOException $e) {
419
            throw new RuntimeException('Database error', 0, $e);
420
        }
421
    }
422
423
    /**
424
     * Returns all version numbers for the given $contentId.
425
     *
426
     * @param mixed $contentId
427
     *
428
     * @return int[]
429
     */
430
    public function listVersionNumbers($contentId)
431
    {
432
        try {
433
            return $this->innerGateway->listVersionNumbers($contentId);
434
        } catch (DBALException $e) {
435
            throw new RuntimeException('Database error', 0, $e);
436
        } catch (PDOException $e) {
437
            throw new RuntimeException('Database error', 0, $e);
438
        }
439
    }
440
441
    /**
442
     * Returns last version number for content identified by $contentId.
443
     *
444
     * @param int $contentId
445
     *
446
     * @return int
447
     */
448
    public function getLastVersionNumber($contentId)
449
    {
450
        try {
451
            return $this->innerGateway->getLastVersionNumber($contentId);
452
        } catch (DBALException $e) {
453
            throw new RuntimeException('Database error', 0, $e);
454
        } catch (PDOException $e) {
455
            throw new RuntimeException('Database error', 0, $e);
456
        }
457
    }
458
459
    /**
460
     * Returns all IDs for locations that refer to $contentId.
461
     *
462
     * @param int $contentId
463
     *
464
     * @return int[]
465
     */
466
    public function getAllLocationIds($contentId)
467
    {
468
        try {
469
            return $this->innerGateway->getAllLocationIds($contentId);
470
        } catch (DBALException $e) {
471
            throw new RuntimeException('Database error', 0, $e);
472
        } catch (PDOException $e) {
473
            throw new RuntimeException('Database error', 0, $e);
474
        }
475
    }
476
477
    /**
478
     * Returns all field IDs of $contentId grouped by their type.
479
     * If $versionNo is set only field IDs for that version are returned.
480
     * If $languageCode is set, only field IDs for that language are returned.
481
     *
482
     * @param int $contentId
483
     * @param int|null $versionNo
484
     * @param string|null $languageCode
485
     *
486
     * @return int[][]
487
     */
488
    public function getFieldIdsByType($contentId, $versionNo = null, $languageCode = null)
489
    {
490
        try {
491
            return $this->innerGateway->getFieldIdsByType($contentId, $versionNo, $languageCode);
492
        } catch (DBALException $e) {
493
            throw new RuntimeException('Database error', 0, $e);
494
        } catch (PDOException $e) {
495
            throw new RuntimeException('Database error', 0, $e);
496
        }
497
    }
498
499
    /**
500
     * Deletes relations to and from $contentId.
501
     * If $versionNo is set only relations for that version are deleted.
502
     *
503
     * @param int $contentId
504
     * @param int|null $versionNo
505
     */
506
    public function deleteRelations($contentId, $versionNo = null)
507
    {
508
        try {
509
            return $this->innerGateway->deleteRelations($contentId, $versionNo);
510
        } catch (DBALException $e) {
511
            throw new RuntimeException('Database error', 0, $e);
512
        } catch (PDOException $e) {
513
            throw new RuntimeException('Database error', 0, $e);
514
        }
515
    }
516
517
    /**
518
     * Removes relations to Content with $contentId from Relation and RelationList field type fields.
519
     *
520
     * @param int $contentId
521
     */
522
    public function removeReverseFieldRelations($contentId)
523
    {
524
        try {
525
            return $this->innerGateway->removeReverseFieldRelations($contentId);
526
        } catch (DBALException $e) {
527
            throw new RuntimeException('Database error', 0, $e);
528
        } catch (PDOException $e) {
529
            throw new RuntimeException('Database error', 0, $e);
530
        }
531
    }
532
533
    /**
534
     * Deletes the field with the given $fieldId.
535
     *
536
     * @param int $fieldId
537
     */
538
    public function deleteField($fieldId)
539
    {
540
        try {
541
            return $this->innerGateway->deleteField($fieldId);
542
        } catch (DBALException $e) {
543
            throw new RuntimeException('Database error', 0, $e);
544
        } catch (PDOException $e) {
545
            throw new RuntimeException('Database error', 0, $e);
546
        }
547
    }
548
549
    /**
550
     * Deletes all fields of $contentId in all versions.
551
     * If $versionNo is set only fields for that version are deleted.
552
     *
553
     * @param int $contentId
554
     * @param int|null $versionNo
555
     */
556
    public function deleteFields($contentId, $versionNo = null)
557
    {
558
        try {
559
            return $this->innerGateway->deleteFields($contentId, $versionNo);
560
        } catch (DBALException $e) {
561
            throw new RuntimeException('Database error', 0, $e);
562
        } catch (PDOException $e) {
563
            throw new RuntimeException('Database error', 0, $e);
564
        }
565
    }
566
567
    /**
568
     * Deletes all versions of $contentId.
569
     * If $versionNo is set only that version is deleted.
570
     *
571
     * @param int $contentId
572
     * @param int|null $versionNo
573
     */
574
    public function deleteVersions($contentId, $versionNo = null)
575
    {
576
        try {
577
            return $this->innerGateway->deleteVersions($contentId, $versionNo);
578
        } catch (DBALException $e) {
579
            throw new RuntimeException('Database error', 0, $e);
580
        } catch (PDOException $e) {
581
            throw new RuntimeException('Database error', 0, $e);
582
        }
583
    }
584
585
    /**
586
     * Deletes all names of $contentId.
587
     * If $versionNo is set only names for that version are deleted.
588
     *
589
     * @param int $contentId
590
     * @param int|null $versionNo
591
     */
592
    public function deleteNames($contentId, $versionNo = null)
593
    {
594
        try {
595
            return $this->innerGateway->deleteNames($contentId, $versionNo);
596
        } catch (DBALException $e) {
597
            throw new RuntimeException('Database error', 0, $e);
598
        } catch (PDOException $e) {
599
            throw new RuntimeException('Database error', 0, $e);
600
        }
601
    }
602
603
    /**
604
     * Sets the content object name.
605
     *
606
     * @param int $contentId
607
     * @param int $version
608
     * @param string $name
609
     * @param string $language
610
     */
611
    public function setName($contentId, $version, $name, $language)
612
    {
613
        try {
614
            return $this->innerGateway->setName($contentId, $version, $name, $language);
615
        } catch (DBALException $e) {
616
            throw new RuntimeException('Database error', 0, $e);
617
        } catch (PDOException $e) {
618
            throw new RuntimeException('Database error', 0, $e);
619
        }
620
    }
621
622
    /**
623
     * Deletes the actual content object referred to by $contentId.
624
     *
625
     * @param int $contentId
626
     */
627
    public function deleteContent($contentId)
628
    {
629
        try {
630
            return $this->innerGateway->deleteContent($contentId);
631
        } catch (DBALException $e) {
632
            throw new RuntimeException('Database error', 0, $e);
633
        } catch (PDOException $e) {
634
            throw new RuntimeException('Database error', 0, $e);
635
        }
636
    }
637
638
    /**
639
     * Loads data of related to/from $contentId.
640
     *
641
     * @param int $contentId
642
     * @param int $contentVersionNo
643
     * @param int $relationType
644
     *
645
     * @return mixed[][] Content data, array structured like {@see \eZ\Publish\Core\Persistence\Legacy\Content\Gateway::load()}
646
     */
647
    public function loadRelations($contentId, $contentVersionNo = null, $relationType = null)
648
    {
649
        try {
650
            return $this->innerGateway->loadRelations($contentId, $contentVersionNo, $relationType);
651
        } catch (DBALException $e) {
652
            throw new RuntimeException('Database error', 0, $e);
653
        } catch (PDOException $e) {
654
            throw new RuntimeException('Database error', 0, $e);
655
        }
656
    }
657
658
    /**
659
     * {@inheritdoc}
660
     */
661
    public function countReverseRelations(int $contentId, ?int $relationType = null): int
662
    {
663
        try {
664
            return $this->innerGateway->countReverseRelations($contentId, $relationType);
665
        } catch (DBALException | PDOException $e) {
666
            throw new RuntimeException('Database error', 0, $e);
667
        }
668
    }
669
670
    /**
671
     * Loads data of related to/from $contentId.
672
     *
673
     * @param int $contentId
674
     * @param bool $reverse Reverse relation, default false
0 ignored issues
show
Bug introduced by
There is no parameter named $reverse. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
675
     * @param int $contentVersionNo
0 ignored issues
show
Bug introduced by
There is no parameter named $contentVersionNo. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
676
     * @param int $relationType
677
     *
678
     * @return mixed[][] Content data, array structured like {@see \eZ\Publish\Core\Persistence\Legacy\Content\Gateway::load()}
679
     */
680
    public function loadReverseRelations($contentId, $relationType = null)
681
    {
682
        try {
683
            return $this->innerGateway->loadReverseRelations($contentId, $relationType);
684
        } catch (DBALException $e) {
685
            throw new RuntimeException('Database error', 0, $e);
686
        } catch (PDOException $e) {
687
            throw new RuntimeException('Database error', 0, $e);
688
        }
689
    }
690
691
    /**
692
     * {@inheritdoc}
693
     */
694
    public function listReverseRelations($contentId, int $offset = 0, int $limit = -1, $relationType = null): array
695
    {
696
        try {
697
            return $this->innerGateway->listReverseRelations($contentId, $offset, $limit, $relationType);
698
        } catch (DBALException | PDOException $e) {
699
            throw new RuntimeException('Database error', 0, $e);
700
        }
701
    }
702
703
    /**
704
     * Deletes the relation with the given $relationId.
705
     *
706
     * @param int $relationId
707
     * @param int $type {@see \eZ\Publish\API\Repository\Values\Content\Relation::COMMON,
708
     *                 \eZ\Publish\API\Repository\Values\Content\Relation::EMBED,
709
     *                 \eZ\Publish\API\Repository\Values\Content\Relation::LINK,
710
     *                 \eZ\Publish\API\Repository\Values\Content\Relation::FIELD}
711
     */
712
    public function deleteRelation($relationId, $type)
713
    {
714
        try {
715
            return $this->innerGateway->deleteRelation($relationId, $type);
716
        } catch (DBALException $e) {
717
            throw new RuntimeException('Database error', 0, $e);
718
        } catch (PDOException $e) {
719
            throw new RuntimeException('Database error', 0, $e);
720
        }
721
    }
722
723
    /**
724
     * Inserts a new relation database record.
725
     *
726
     * @param \eZ\Publish\SPI\Persistence\Content\Relation\CreateStruct $createStruct
0 ignored issues
show
Documentation introduced by
There is no parameter named $createStruct. Did you maybe mean $struct?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function. It has, however, found a similar but not annotated parameter which might be a good fit.

Consider the following example. The parameter $ireland is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $ireland
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was changed, but the annotation was not.

Loading history...
727
     *
728
     * @return int ID the inserted ID
729
     */
730
    public function insertRelation(RelationCreateStruct $struct)
731
    {
732
        try {
733
            return $this->innerGateway->insertRelation($struct);
734
        } catch (DBALException $e) {
735
            throw new RuntimeException('Database error', 0, $e);
736
        } catch (PDOException $e) {
737
            throw new RuntimeException('Database error', 0, $e);
738
        }
739
    }
740
741
    /**
742
     * Returns all Content IDs for a given $contentTypeId.
743
     *
744
     * @param int $contentTypeId
745
     *
746
     * @return int[]
747
     */
748
    public function getContentIdsByContentTypeId($contentTypeId)
749
    {
750
        try {
751
            return $this->innerGateway->getContentIdsByContentTypeId($contentTypeId);
752
        } catch (DBALException $e) {
753
            throw new RuntimeException('Database error', 0, $e);
754
        } catch (PDOException $e) {
755
            throw new RuntimeException('Database error', 0, $e);
756
        }
757
    }
758
759
    /**
760
     * Load name data for set of content id's and corresponding version number.
761
     *
762
     * @param array[] $rows array of hashes with 'id' and 'version' to load names for
763
     *
764
     * @return array
765
     */
766
    public function loadVersionedNameData($rows)
767
    {
768
        try {
769
            return $this->innerGateway->loadVersionedNameData($rows);
770
        } catch (DBALException $e) {
771
            throw new RuntimeException('Database error', 0, $e);
772
        } catch (PDOException $e) {
773
            throw new RuntimeException('Database error', 0, $e);
774
        }
775
    }
776
777
    /**
778
     * Batch method for copying all relation meta data for copied Content object.
779
     *
780
     * {@inheritdoc}
781
     *
782
     * @param int $originalContentId
783
     * @param int $copiedContentId
784
     * @param int|null $versionNo If specified only copy for a given version number, otherwise all.
785
     */
786
    public function copyRelations($originalContentId, $copiedContentId, $versionNo = null)
787
    {
788
        try {
789
            return $this->innerGateway->copyRelations($originalContentId, $copiedContentId, $versionNo);
790
        } catch (DBALException $e) {
791
            throw new RuntimeException('Database error', 0, $e);
792
        } catch (PDOException $e) {
793
            throw new RuntimeException('Database error', 0, $e);
794
        }
795
    }
796
797
    /**
798
     * Remove the specified translation from all the Versions of a Content Object.
799
     *
800
     * @param int $contentId
801
     * @param string $languageCode language code of the translation
802
     */
803
    public function deleteTranslationFromContent($contentId, $languageCode)
804
    {
805
        try {
806
            return $this->innerGateway->deleteTranslationFromContent($contentId, $languageCode);
807
        } catch (DBALException $e) {
808
            throw new RuntimeException('Database error', 0, $e);
809
        } catch (PDOException $e) {
810
            throw new RuntimeException('Database error', 0, $e);
811
        }
812
    }
813
814
    /**
815
     * Delete Content fields (attributes) for the given Translation.
816
     * If $versionNo is given, fields for that Version only will be deleted.
817
     *
818
     * @param string $languageCode
819
     * @param int $contentId
820
     * @param int $versionNo (optional) filter by versionNo
821
     */
822
    public function deleteTranslatedFields($languageCode, $contentId, $versionNo = null)
823
    {
824
        try {
825
            return $this->innerGateway->deleteTranslatedFields($languageCode, $contentId, $versionNo);
826
        } catch (DBALException $e) {
827
            throw new RuntimeException('Database error', 0, $e);
828
        } catch (PDOException $e) {
829
            throw new RuntimeException('Database error', 0, $e);
830
        }
831
    }
832
833
    /**
834
     * Delete the specified Translation from the given Version.
835
     *
836
     * @param int $contentId
837
     * @param int $versionNo
838
     * @param string $languageCode
839
     */
840
    public function deleteTranslationFromVersion($contentId, $versionNo, $languageCode)
841
    {
842
        try {
843
            return $this->innerGateway->deleteTranslationFromVersion($contentId, $versionNo, $languageCode);
844
        } catch (DBALException $e) {
845
            throw new RuntimeException('Database error', 0, $e);
846
        } catch (PDOException $e) {
847
            throw new RuntimeException('Database error', 0, $e);
848
        }
849
    }
850
}
851