Skip to content

Commit 4176da0

Browse files
committed
Cleanup controller
1 parent e18b1b1 commit 4176da0

File tree

2 files changed

+17
-19
lines changed

2 files changed

+17
-19
lines changed

src/Http/Controllers/PreviewController.php

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -81,30 +81,24 @@ public function preview(Request $request, Kernel $kernel): mixed
8181
->siteId($request->integer('siteId'))
8282
->status(null);
8383

84-
if ($draftId = $request->integer('draftId')) {
85-
$element = $query
86-
->draftId($draftId)
87-
->one();
88-
} elseif ($revisionId = $request->integer('revisionId')) {
89-
$element = $query
90-
->revisionId($revisionId)
91-
->one();
92-
} else {
93-
if ($userId = $request->integer('userId')) {
94-
// First check if there's a provisional draft
95-
$user = \Craft::$app->getUsers()->getUserById($userId);
96-
ElementHelper::setProvisionalDraftUser($user);
84+
$elementFn = match (true) {
85+
(bool) $draftId = $request->integer('draftId') => fn () => $query->draftId($draftId)->one(),
86+
(bool) $revisionId = $request->integer('revisionId') => fn () => $query->revisionId($revisionId)->one(),
87+
(bool) $userId = $request->integer('userId') => function () use ($userId, $query, $request) {
88+
ElementHelper::setProvisionalDraftUser($userId);
89+
9790
$element = (clone $query)
9891
->draftOf($request->integer('canonicalId'))
9992
->provisionalDrafts()
10093
->draftCreator($userId)
10194
->one();
102-
}
10395

104-
$element ??= $query->id($request->integer('canonicalId'))->one();
105-
}
96+
return $element ?? $query->id($request->integer('canonicalId'))->one();
97+
},
98+
default => fn () null,
99+
};
106100

107-
if ($element) {
101+
if ($element = $elementFn()) {
108102
if (! $element->lft && $element->getIsDerivative()) {
109103
// See if we can add structure data to it
110104
$canonical = $element->getCanonical(true);

yii2-adapter/legacy/helpers/ElementHelper.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,12 +1179,16 @@ public static function isMultiSite(ElementInterface $element): bool
11791179
/**
11801180
* Sets user to be used for swapping in provisional drafts.
11811181
*
1182-
* @param UserElement|null $user
1182+
* @param UserElement|int|null $user
11831183
*
11841184
* @since 5.8.0
11851185
*/
1186-
public static function setProvisionalDraftUser(?UserElement $user): void
1186+
public static function setProvisionalDraftUser(UserElement|int|null $user): void
11871187
{
1188+
if (is_int($user)) {
1189+
$user = \Craft::$app->getUsers()->getUserById($user);
1190+
}
1191+
11881192
self::$provisionalDraftUser = $user;
11891193
}
11901194
}

0 commit comments

Comments
 (0)