Skip to content

Commit 9a032a5

Browse files
Transparency log: add missing display classes (#1616)
* Add display classes for maintainer added/removed records * Add display class for package transferred records * Create a packageLink macro for audit log specifically * Update templates/audit_log/display/package_transferred.html.twig Co-authored-by: Igor Benko <i.benko@packagist.com> --------- Co-authored-by: Igor Benko <i.benko@packagist.com>
1 parent bc2c0c7 commit 9a032a5

13 files changed

+175
-35
lines changed

src/Audit/Display/AuditLogDisplayFactory.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,25 @@ public function build(iterable $auditRecords): array
3434
public function buildSingle(AuditRecord $record): AuditLogDisplayInterface
3535
{
3636
return match ($record->type) {
37+
AuditRecordType::MaintainerAdded => new MaintainerAddedDisplay(
38+
$record->datetime,
39+
$record->attributes['name'],
40+
$this->buildActor($record->attributes['maintainer']),
41+
$this->buildActor($record->attributes['actor']),
42+
),
43+
AuditRecordType::MaintainerRemoved => new MaintainerRemovedDisplay(
44+
$record->datetime,
45+
$record->attributes['name'],
46+
$this->buildActor($record->attributes['maintainer']),
47+
$this->buildActor($record->attributes['actor']),
48+
),
49+
AuditRecordType::PackageTransferred => new PackageTransferredDisplay(
50+
$record->datetime,
51+
$record->attributes['name'],
52+
$record->attributes['previous_maintainers'],
53+
$record->attributes['current_maintainers'],
54+
$this->buildActor($record->attributes['actor']),
55+
),
3756
AuditRecordType::PackageCreated => new PackageCreatedDisplay(
3857
$record->datetime,
3958
$record->attributes['name'],
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php declare(strict_types=1);
2+
3+
/*
4+
* This file is part of Packagist.
5+
*
6+
* (c) Jordi Boggiano <j.boggiano@seld.be>
7+
* Nils Adermann <naderman@naderman.de>
8+
*
9+
* For the full copyright and license information, please view the LICENSE
10+
* file that was distributed with this source code.
11+
*/
12+
13+
namespace App\Audit\Display;
14+
15+
use App\Audit\AuditRecordType;
16+
17+
readonly class MaintainerAddedDisplay extends AbstractAuditLogDisplay
18+
{
19+
public function __construct(
20+
\DateTimeImmutable $datetime,
21+
public string $packageName,
22+
public ActorDisplay $maintainer,
23+
ActorDisplay $actor,
24+
) {
25+
parent::__construct($datetime, $actor);
26+
}
27+
28+
public function getType(): AuditRecordType
29+
{
30+
return AuditRecordType::MaintainerAdded;
31+
}
32+
33+
public function getTemplateName(): string
34+
{
35+
return 'audit_log/display/maintainer_added.html.twig';
36+
}
37+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php declare(strict_types=1);
2+
3+
/*
4+
* This file is part of Packagist.
5+
*
6+
* (c) Jordi Boggiano <j.boggiano@seld.be>
7+
* Nils Adermann <naderman@naderman.de>
8+
*
9+
* For the full copyright and license information, please view the LICENSE
10+
* file that was distributed with this source code.
11+
*/
12+
13+
namespace App\Audit\Display;
14+
15+
use App\Audit\AuditRecordType;
16+
17+
readonly class MaintainerRemovedDisplay extends AbstractAuditLogDisplay
18+
{
19+
public function __construct(
20+
\DateTimeImmutable $datetime,
21+
public string $packageName,
22+
public ActorDisplay $maintainer,
23+
ActorDisplay $actor,
24+
) {
25+
parent::__construct($datetime, $actor);
26+
}
27+
28+
public function getType(): AuditRecordType
29+
{
30+
return AuditRecordType::MaintainerRemoved;
31+
}
32+
33+
public function getTemplateName(): string
34+
{
35+
return 'audit_log/display/maintainer_removed.html.twig';
36+
}
37+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php declare(strict_types=1);
2+
3+
/*
4+
* This file is part of Packagist.
5+
*
6+
* (c) Jordi Boggiano <j.boggiano@seld.be>
7+
* Nils Adermann <naderman@naderman.de>
8+
*
9+
* For the full copyright and license information, please view the LICENSE
10+
* file that was distributed with this source code.
11+
*/
12+
13+
namespace App\Audit\Display;
14+
15+
use App\Audit\AuditRecordType;
16+
17+
readonly class PackageTransferredDisplay extends AbstractAuditLogDisplay
18+
{
19+
/**
20+
* @param array<ActorDisplay> $previousMaintainers
21+
* @param array<ActorDisplay> $currentMaintainers
22+
*/
23+
public function __construct(
24+
\DateTimeImmutable $datetime,
25+
public string $packageName,
26+
/** @var array<string> $previousMaintainers */
27+
public array $previousMaintainers,
28+
/** @var array<string> $currentMaintainers */
29+
public array $currentMaintainers,
30+
ActorDisplay $actor,
31+
) {
32+
parent::__construct($datetime, $actor);
33+
}
34+
35+
public function getType(): AuditRecordType
36+
{
37+
return AuditRecordType::PackageTransferred;
38+
}
39+
40+
public function getTemplateName(): string
41+
{
42+
return 'audit_log/display/package_transferred.html.twig';
43+
}
44+
}
Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
<strong>
2-
{%- if display.packageName is existing_package -%}
3-
<a href="{{ path('view_package', { 'name': display.packageName }) }}">{{ display.packageName }}</a>
4-
{%- else -%}
5-
{{ display.packageName }}
6-
{%- endif -%}
7-
</strong><br>
1+
{% import 'audit_log/macros.html.twig' as auditLog %}
2+
3+
<strong>{{ auditLog.packageLink(display.packageName) }}</strong><br>
84
From: {{ display.repositoryFrom }}<br>
95
To: {{ display.repositoryTo }}<br>
106
Changed by: {{ display.actor.username }}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{% import 'audit_log/macros.html.twig' as auditLog %}
2+
3+
<strong>{{ auditLog.packageLink(display.packageName) }}</strong><br>
4+
Maintainer: {{ display.maintainer.username }}<br>
5+
Added by: {{ display.actor.username }}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{% import 'audit_log/macros.html.twig' as auditLog %}
2+
3+
<strong>{{ auditLog.packageLink(display.packageName) }}</strong><br>
4+
Maintainer: {{ display.maintainer.username }}<br>
5+
Removed by: {{ display.actor.username }}
Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
<strong>
2-
{%- if display.packageName is existing_package -%}
3-
<a href="{{ path('view_package', { 'name': display.packageName }) }}">{{ display.packageName }}</a>
4-
{%- else -%}
5-
{{ display.packageName }}
6-
{%- endif -%}
7-
</strong><br>
1+
{% import 'audit_log/macros.html.twig' as auditLog %}
2+
3+
<strong>{{ auditLog.packageLink(display.packageName) }}</strong><br>
84
Repository: {{ display.repository }}<br>
95
Created by: {{ display.actor.username }}
Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
<strong>
2-
{%- if display.packageName is existing_package -%}
3-
<a href="{{ path('view_package', { 'name': display.packageName }) }}">{{ display.packageName }}</a>
4-
{%- else -%}
5-
{{ display.packageName }}
6-
{%- endif -%}
7-
</strong><br>
1+
{% import 'audit_log/macros.html.twig' as auditLog %}
2+
3+
<strong>{{ auditLog.packageLink(display.packageName) }}</strong><br>
84
Repository: {{ display.repository }}<br>
95
Deleted by: {{ display.actor.username }}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{% import 'audit_log/macros.html.twig' as auditLog %}
2+
3+
<strong>{{ auditLog.packageLink(display.packageName) }}</strong><br>
4+
Previous maintainers: {{ display.previousMaintainers|column('username')|join(', ') }}<br>
5+
Current maintainers: {{ display.currentMaintainers|column('username')|join(', ') }}<br>
6+
Transferred by: {{ display.actor.username }}

0 commit comments

Comments
 (0)