From b2c2283817846335efa5de3448df334261d332fb Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 4 Oct 2021 18:04:41 +0000 Subject: [PATCH] separate parameter values for different functionalities --- src/Module/Photo.php | 38 +++++++++++++++++++++----------------- static/routes.config.php | 17 ++++++++++------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/src/Module/Photo.php b/src/Module/Photo.php index 39a8353b5d..9ee737d382 100644 --- a/src/Module/Photo.php +++ b/src/Module/Photo.php @@ -82,24 +82,28 @@ class Photo extends BaseModule $square_resize = !in_array($parameters['type'], ['media', 'preview']); } - if (!empty($parameters['nickname_ext'])) { - if (in_array($parameters['type'], ['contact', 'header'])) { - $guid = pathinfo($parameters['nickname_ext'], PATHINFO_FILENAME); - $account = DBA::selectFirst('account-user-view', ['id'], ['guid' => $guid], ['order' => ['uid' => true]]); - if (empty($account)) { - throw new HTTPException\NotFoundException(); - } - - $id = $account['id']; - } else { - $nickname = pathinfo($parameters['nickname_ext'], PATHINFO_FILENAME); - $user = User::getByNickname($nickname, ['uid']); - if (empty($user)) { - throw new HTTPException\NotFoundException(); - } - - $id = $user['uid']; + if (!empty($parameters['guid'])) { + $guid = pathinfo($parameters['guid'], PATHINFO_FILENAME); + $account = DBA::selectFirst('account-user-view', ['id'], ['guid' => $guid], ['order' => ['uid' => true]]); + if (empty($account)) { + throw new HTTPException\NotFoundException(); } + + $id = $account['id']; + } + + if (!empty($parameters['contact_id'])) { + $id = intval(pathinfo($parameters['contact_id'], PATHINFO_FILENAME)); + } + + if (!empty($parameters['nickname_ext'])) { + $nickname = pathinfo($parameters['nickname_ext'], PATHINFO_FILENAME); + $user = User::getByNickname($nickname, ['uid']); + if (empty($user)) { + throw new HTTPException\NotFoundException(); + } + + $id = $user['uid']; } // User Id Fallback, to remove after version 2021.12 diff --git a/static/routes.config.php b/static/routes.config.php index 2f20d51770..85bd4f9414 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -373,15 +373,18 @@ return [ '/permission/tooltip/{type}/{id:\d+}' => [Module\PermissionTooltip::class, [R::GET]], '/photo' => [ - '/{name}' => [Module\Photo::class, [R::GET]], - '/{type}/{id:\d+}' => [Module\Photo::class, [R::GET]], + '/{name}' => [Module\Photo::class, [R::GET]], + '/{type}/{id:\d+}' => [Module\Photo::class, [R::GET]], // User Id Fallback, to remove after version 2021.12 - '/{type}/{uid_ext:\d+\..*}' => [Module\Photo::class, [R::GET]], - '/{type}/{nickname_ext}' => [Module\Photo::class, [R::GET]], - '/{type}/{customsize}/{id:\d+}' => [Module\Photo::class, [R::GET]], + '/{type}/{uid_ext:\d+\..*}' => [Module\Photo::class, [R::GET]], + '/{type}/{nickname_ext}' => [Module\Photo::class, [R::GET]], + // Contact Id Fallback, to remove after version 2021.12 + '/{type:contact|header}/{customsize:\d+}/{contact_id:\d+}' => [Module\Photo::class, [R::GET]], + '/{type:contact|header}/{customsize:\d+}/{guid}' => [Module\Photo::class, [R::GET]], + '/{type}/{customsize:\d+}/{id:\d+}' => [Module\Photo::class, [R::GET]], // User Id Fallback, to remove after version 2021.12 - '/{type}/{customsize}/{uid_ext:\d+\..*}' => [Module\Photo::class, [R::GET]], - '/{type}/{customsize}/{nickname_ext}' => [Module\Photo::class, [R::GET]], + '/{type}/{customsize:\d+}/{uid_ext:\d+\..*}' => [Module\Photo::class, [R::GET]], + '/{type}/{customsize:\d+}/{nickname_ext}' => [Module\Photo::class, [R::GET]], ], '/pretheme' => [Module\ThemeDetails::class, [R::GET]],