Skip to content

Commit 3803e23

Browse files
committed
#11833 Rename to getMany, drop validation, use scope, return collection
1 parent cd81835 commit 3803e23

File tree

4 files changed

+74
-69
lines changed

4 files changed

+74
-69
lines changed

api/v1/editTaskTemplates/PKPEditTaskTemplateController.php

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@
2121
use Illuminate\Support\Facades\Route;
2222
use PKP\core\PKPBaseController;
2323
use PKP\core\PKPRequest;
24+
use Illuminate\Http\Request;
2425
use PKP\security\authorization\CanAccessSettingsPolicy;
2526
use PKP\security\authorization\ContextAccessPolicy;
2627
use PKP\security\Role;
27-
use APP\facades\Repo;
2828
use PKP\editorialTask\Template;
29-
use PKP\API\v1\editTaskTemplates\formRequests\ListTaskTemplates;
3029
use PKP\API\v1\editTaskTemplates\resources\EditTaskTemplateResource;
3130

3231
class PKPEditTaskTemplateController extends PKPBaseController
@@ -56,40 +55,38 @@ public function getGroupRoutes(): void
5655
Role::ROLE_ID_SITE_ADMIN,
5756
]),
5857
])->group(function () {
59-
Route::get('', $this->index(...));
58+
Route::get('', $this->getMany(...));
6059
});
6160
}
6261

6362
/**
6463
* GET /api/v1/editTaskTemplates
6564
*/
66-
public function index(ListTaskTemplates $illuminateRequest): JsonResponse
65+
public function getMany(Request $request): JsonResponse
6766
{
6867
$context = $this->getRequest()->getContext();
69-
$validated = $illuminateRequest->validated();
7068

7169
$q = Template::query()
72-
->where('context_id', $context->getId())
70+
->byContextId((int) $context->getId())
7371
->with('userGroups');
7472

75-
if (isset($validated['stageId'])) {
76-
$q->where('stage_id', (int) $validated['stageId']);
73+
if ($request->filled('stageId')) {
74+
$q->where('stage_id', (int) $request->query('stageId'));
7775
}
7876

79-
if (array_key_exists('include', $validated) && $validated['include'] !== null) {
80-
$q->where('include', (bool) $validated['include']);
77+
if ($request->has('include')) {
78+
$include = filter_var($request->query('include'), FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
79+
if ($include !== null) {
80+
$q->where('include', $include);
81+
}
8182
}
8283

83-
if (!empty($validated['emailTemplateKey'])) {
84-
$et = Repo::emailTemplate()->getByKey($context->getId(), $validated['emailTemplateKey']);
85-
$q->where('email_template_id', $et?->getId() ?? 0);
84+
if ($request->filled('emailTemplateKey')) {
85+
$q->where('email_template_key', trim((string) $request->query('emailTemplateKey')));
8686
}
87-
88-
$items = $q->orderByPkDesc()->get()
89-
->map(fn ($tpl) => (new EditTaskTemplateResource($tpl))->toArray($illuminateRequest))
90-
->values()
91-
->all();
92-
93-
return response()->json(['items' => $items], Response::HTTP_OK);
94-
}
87+
$collection = $q->orderByPkDesc()->get();
88+
return EditTaskTemplateResource::collection($collection)
89+
->response()
90+
->setStatusCode(Response::HTTP_OK);
91+
}
9592
}

api/v1/editTaskTemplates/formRequests/ListTaskTemplates.php

Lines changed: 0 additions & 48 deletions
This file was deleted.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
/**
4+
* @file api/v1/editTaskTemplates/resources/EditTaskTemplateResource.php
5+
*
6+
* Copyright (c) 2014-2025 Simon Fraser University
7+
* Copyright (c) 2003-2025 John Willinsky
8+
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
9+
*
10+
* @class EditTaskTemplateResource
11+
*
12+
* @brief Transforms an editorial task template into an API response format.
13+
*
14+
*/
15+
16+
namespace PKP\API\v1\editTaskTemplates\resources;
17+
18+
use Illuminate\Http\Request;
19+
use Illuminate\Http\Resources\Json\JsonResource;
20+
21+
class EditTaskTemplateResource extends JsonResource
22+
{
23+
public function toArray(Request $request)
24+
{
25+
26+
return [
27+
'id' => (int) $this->id,
28+
'stageId' => (int) $this->stage_id,
29+
'title' => $this->title,
30+
'include' => (bool) $this->include,
31+
'emailTemplateKey' => $this->email_template_key ?? null,
32+
'userGroupIds' => $this->whenLoaded(
33+
'userGroups',
34+
fn () => $this->userGroups->pluck('user_group_id')->values()->all()
35+
),
36+
'userGroups' => $this->whenLoaded(
37+
'userGroups',
38+
fn () => $this->userGroups
39+
->map(fn ($ug) => [
40+
'id' => (int) $ug->user_group_id,
41+
'name' => method_exists($ug, 'getLocalizedName') ? $ug->getLocalizedName() : null,
42+
])
43+
->values()
44+
->all()
45+
),
46+
];
47+
}
48+
}

classes/editorialTask/Template.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,14 @@ public function userGroups(): BelongsToMany
113113
);
114114
}
115115

116+
/**
117+
* Scope: filter by context_id
118+
*/
119+
public function scopeByContextId($query, int $contextId)
120+
{
121+
return $query->where('context_id', $contextId);
122+
}
123+
116124
/**
117125
* Query scope order by the model's primary key in descending order
118126
*/

0 commit comments

Comments
 (0)