Completed
Push — EZP-30968-count-reverse-relati... ( c55217 )
by
unknown
27:08 queued 08:53
created

ExceptionConversion::countReverseRelations()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
c 0
b 0
f 0
cc 2
nc 2
nop 2
rs 10
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
     * Deletes the relation with the given $relationId.
693
     *
694
     * @param int $relationId
695
     * @param int $type {@see \eZ\Publish\API\Repository\Values\Content\Relation::COMMON,
696
     *                 \eZ\Publish\API\Repository\Values\Content\Relation::EMBED,
697
     *                 \eZ\Publish\API\Repository\Values\Content\Relation::LINK,
698
     *                 \eZ\Publish\API\Repository\Values\Content\Relation::FIELD}
699
     */
700
    public function deleteRelation($relationId, $type)
701
    {
702
        try {
703
            return $this->innerGateway->deleteRelation($relationId, $type);
704
        } catch (DBALException $e) {
705
            throw new RuntimeException('Database error', 0, $e);
706
        } catch (PDOException $e) {
707
            throw new RuntimeException('Database error', 0, $e);
708
        }
709
    }
710
711
    /**
712
     * Inserts a new relation database record.
713
     *
714
     * @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...
715
     *
716
     * @return int ID the inserted ID
717
     */
718
    public function insertRelation(RelationCreateStruct $struct)
719
    {
720
        try {
721
            return $this->innerGateway->insertRelation($struct);
722
        } catch (DBALException $e) {
723
            throw new RuntimeException('Database error', 0, $e);
724
        } catch (PDOException $e) {
725
            throw new RuntimeException('Database error', 0, $e);
726
        }
727
    }
728
729
    /**
730
     * Returns all Content IDs for a given $contentTypeId.
731
     *
732
     * @param int $contentTypeId
733
     *
734
     * @return int[]
735
     */
736
    public function getContentIdsByContentTypeId($contentTypeId)
737
    {
738
        try {
739
            return $this->innerGateway->getContentIdsByContentTypeId($contentTypeId);
740
        } catch (DBALException $e) {
741
            throw new RuntimeException('Database error', 0, $e);
742
        } catch (PDOException $e) {
743
            throw new RuntimeException('Database error', 0, $e);
744
        }
745
    }
746
747
    /**
748
     * Load name data for set of content id's and corresponding version number.
749
     *
750
     * @param array[] $rows array of hashes with 'id' and 'version' to load names for
751
     *
752
     * @return array
753
     */
754
    public function loadVersionedNameData($rows)
755
    {
756
        try {
757
            return $this->innerGateway->loadVersionedNameData($rows);
758
        } catch (DBALException $e) {
759
            throw new RuntimeException('Database error', 0, $e);
760
        } catch (PDOException $e) {
761
            throw new RuntimeException('Database error', 0, $e);
762
        }
763
    }
764
765
    /**
766
     * Batch method for copying all relation meta data for copied Content object.
767
     *
768
     * {@inheritdoc}
769
     *
770
     * @param int $originalContentId
771
     * @param int $copiedContentId
772
     * @param int|null $versionNo If specified only copy for a given version number, otherwise all.
773
     */
774
    public function copyRelations($originalContentId, $copiedContentId, $versionNo = null)
775
    {
776
        try {
777
            return $this->innerGateway->copyRelations($originalContentId, $copiedContentId, $versionNo);
778
        } catch (DBALException $e) {
779
            throw new RuntimeException('Database error', 0, $e);
780
        } catch (PDOException $e) {
781
            throw new RuntimeException('Database error', 0, $e);
782
        }
783
    }
784
785
    /**
786
     * Remove the specified translation from all the Versions of a Content Object.
787
     *
788
     * @param int $contentId
789
     * @param string $languageCode language code of the translation
790
     */
791
    public function deleteTranslationFromContent($contentId, $languageCode)
792
    {
793
        try {
794
            return $this->innerGateway->deleteTranslationFromContent($contentId, $languageCode);
795
        } catch (DBALException $e) {
796
            throw new RuntimeException('Database error', 0, $e);
797
        } catch (PDOException $e) {
798
            throw new RuntimeException('Database error', 0, $e);
799
        }
800
    }
801
802
    /**
803
     * Delete Content fields (attributes) for the given Translation.
804
     * If $versionNo is given, fields for that Version only will be deleted.
805
     *
806
     * @param string $languageCode
807
     * @param int $contentId
808
     * @param int $versionNo (optional) filter by versionNo
809
     */
810
    public function deleteTranslatedFields($languageCode, $contentId, $versionNo = null)
811
    {
812
        try {
813
            return $this->innerGateway->deleteTranslatedFields($languageCode, $contentId, $versionNo);
814
        } catch (DBALException $e) {
815
            throw new RuntimeException('Database error', 0, $e);
816
        } catch (PDOException $e) {
817
            throw new RuntimeException('Database error', 0, $e);
818
        }
819
    }
820
821
    /**
822
     * Delete the specified Translation from the given Version.
823
     *
824
     * @param int $contentId
825
     * @param int $versionNo
826
     * @param string $languageCode
827
     */
828
    public function deleteTranslationFromVersion($contentId, $versionNo, $languageCode)
829
    {
830
        try {
831
            return $this->innerGateway->deleteTranslationFromVersion($contentId, $versionNo, $languageCode);
832
        } catch (DBALException $e) {
833
            throw new RuntimeException('Database error', 0, $e);
834
        } catch (PDOException $e) {
835
            throw new RuntimeException('Database error', 0, $e);
836
        }
837
    }
838
}
839