From 5d86fcfda972b6f90b88affa7c6d15c42ea7835e Mon Sep 17 00:00:00 2001 From: Lars Behrends Date: Thu, 6 Nov 2025 18:45:20 +0100 Subject: [PATCH] actor merging! --- app/Controllers/AdminController.php | 18 +++++++++++++-- app/Models/Actor.php | 18 +++++++-------- resources/views/admin/actors/index.twig | 12 +++++----- resources/views/adult/index.twig | 2 +- resources/views/adult/show.twig | 30 +++++-------------------- routes/web.php | 2 +- 6 files changed, 38 insertions(+), 44 deletions(-) diff --git a/app/Controllers/AdminController.php b/app/Controllers/AdminController.php index 8728338..87b2510 100644 --- a/app/Controllers/AdminController.php +++ b/app/Controllers/AdminController.php @@ -880,7 +880,14 @@ class AdminController extends AdminBaseController */ public function mergeActors(Request $request, Response $response, $args) { - $data = $request->getParsedBody(); + $contentType = $request->getHeaderLine('Content-Type'); + + if (strstr($contentType, 'application/json')) { + $data = json_decode((string)$request->getBody(), true); + } else { + $data = $request->getParsedBody(); + } + $masterActorId = (int)($data['master_actor_id'] ?? 0); $duplicateActorIds = array_map('intval', $data['duplicate_actor_ids'] ?? []); @@ -1020,7 +1027,14 @@ class AdminController extends AdminBaseController */ public function autoMergeActors(Request $request, Response $response, $args) { - $data = $request->getParsedBody(); + $contentType = $request->getHeaderLine('Content-Type'); + + if (strstr($contentType, 'application/json')) { + $data = json_decode((string)$request->getBody(), true); + } else { + $data = $request->getParsedBody(); + } + $actorGroupIds = $data['actor_group_ids'] ?? []; if (empty($actorGroupIds)) { diff --git a/app/Models/Actor.php b/app/Models/Actor.php index df7fc75..25944d1 100644 --- a/app/Models/Actor.php +++ b/app/Models/Actor.php @@ -180,7 +180,7 @@ class Actor extends Model /** * Get paginated actors with optional search and sorting */ - public function getPaginated(PDO $pdo, int $page = 1, int $perPage = 20, string $search = '', string $sort = 'name_asc'): array + public function getPaginated(\PDO $pdo, int $page = 1, int $perPage = 20, string $search = '', string $sort = 'name_asc'): array { $offset = ($page - 1) * $perPage; @@ -214,15 +214,15 @@ class Actor extends Model LIMIT :limit OFFSET :offset "); - $stmt->bindValue(':limit', $perPage, PDO::PARAM_INT); - $stmt->bindValue(':offset', $offset, PDO::PARAM_INT); + $stmt->bindValue(':limit', $perPage, \PDO::PARAM_INT); + $stmt->bindValue(':offset', $offset, \PDO::PARAM_INT); foreach ($params as $key => $value) { $stmt->bindValue(':' . $key, $value); } $stmt->execute(); - $actors = $stmt->fetchAll(PDO::FETCH_ASSOC); + $actors = $stmt->fetchAll(\PDO::FETCH_ASSOC); // Add relationships data for each actor foreach ($actors as &$actor) { @@ -237,7 +237,7 @@ class Actor extends Model /** * Get total count of actors with optional search */ - public function getTotalCount(PDO $pdo, string $search = ''): int + public function getTotalCount(\PDO $pdo, string $search = ''): int { $whereClause = ''; $params = []; @@ -254,7 +254,7 @@ class Actor extends Model } $stmt->execute(); - return (int)$stmt->fetch(PDO::FETCH_ASSOC)['count']; + return (int)$stmt->fetch(\PDO::FETCH_ASSOC)['count']; } /** @@ -270,7 +270,7 @@ class Actor extends Model ORDER BY m.title "); $stmt->execute([$actorId]); - return $stmt->fetchAll(PDO::FETCH_ASSOC); + return $stmt->fetchAll(\PDO::FETCH_ASSOC); } /** @@ -286,7 +286,7 @@ class Actor extends Model ORDER BY ts.title "); $stmt->execute([$actorId]); - return $stmt->fetchAll(PDO::FETCH_ASSOC); + return $stmt->fetchAll(\PDO::FETCH_ASSOC); } /** @@ -302,6 +302,6 @@ class Actor extends Model ORDER BY av.title "); $stmt->execute([$actorId]); - return $stmt->fetchAll(PDO::FETCH_ASSOC); + return $stmt->fetchAll(\PDO::FETCH_ASSOC); } } diff --git a/resources/views/admin/actors/index.twig b/resources/views/admin/actors/index.twig index cf8caec..97b0a23 100644 --- a/resources/views/admin/actors/index.twig +++ b/resources/views/admin/actors/index.twig @@ -9,10 +9,10 @@

View and manage actors, find and merge duplicates

- + All Actors - + Duplicates
@@ -61,7 +61,7 @@ data-group="{{ group.normalized_name }}"> {% if actor.thumbnail_path %} - {{ actor.name }} @@ -268,7 +268,7 @@ {% if actor.thumbnail_path %} - {{ actor.name }} + {{ actor.name }} {% else %}
@@ -442,7 +442,7 @@ function autoMergeGroup(groupName) { return; } - fetch('{{ path_for("admin.actors.auto_merge") }}', { + fetch('{{ path_for("admin.actors.auto-merge") }}', { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -484,7 +484,7 @@ function autoMergeAll() { return; } - fetch('{{ path_for("admin.actors.auto_merge") }}', { + fetch('{{ path_for("admin.actors.auto-merge") }}', { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/resources/views/adult/index.twig b/resources/views/adult/index.twig index 9f81d53..fe09a84 100644 --- a/resources/views/adult/index.twig +++ b/resources/views/adult/index.twig @@ -359,7 +359,7 @@ {% for movie in movies %}
{% if movie.poster_url %} -
+
{{ movie.title }}
diff --git a/resources/views/adult/show.twig b/resources/views/adult/show.twig index a313621..1709db1 100644 --- a/resources/views/adult/show.twig +++ b/resources/views/adult/show.twig @@ -3,9 +3,8 @@ {% block content %}
- {% if movie.backdrop_url %}
- {{ movie.title }} backdrop + {{ movie.title }} backdrop
@@ -114,27 +113,8 @@
- {% else %} - -
- -
-

{{ movie.title }}

- {% if movie.tagline %} -

{{ movie.tagline }}

- {% endif %} -
-
- {% endif %} +
-