From 3a8b56a3693c29e23415c17096caa2f2e4756267 Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Tue, 27 Oct 2020 15:24:59 +0100 Subject: [PATCH] FEAT #13271 TIME 0:55 optimise duplicates --- src/app/basket/controllers/BasketController.php | 2 +- src/app/contact/controllers/ContactController.php | 6 ++---- src/app/resource/controllers/ResourceListController.php | 4 ++-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/app/basket/controllers/BasketController.php b/src/app/basket/controllers/BasketController.php index 5afbaf92a4a..3f742981688 100755 --- a/src/app/basket/controllers/BasketController.php +++ b/src/app/basket/controllers/BasketController.php @@ -75,7 +75,7 @@ class BasketController return $response->withStatus(400)->withJson(['errors' => _ID. ' ' . _ALREADY_EXISTS]); } - if (!PreparedClauseController::isRequestValid(['clause' => $data['clause'], 'userId' => $GLOBALS['login']])) { + if (!PreparedClauseController::isRequestValid(['clause' => $data['clause'], 'userId' => $GLOBALS['login'], 'limit' => 1])) { return $response->withStatus(400)->withJson(['errors' => _INVALID_CLAUSE]); } diff --git a/src/app/contact/controllers/ContactController.php b/src/app/contact/controllers/ContactController.php index 2b1a25997a7..e0249fee432 100755 --- a/src/app/contact/controllers/ContactController.php +++ b/src/app/contact/controllers/ContactController.php @@ -896,12 +896,10 @@ class ContactController $order[] = 'custom_fields'; } $customId = explode('_', $criterion)[1]; - $criteria[] = "replace(lower(translate(custom_fields->>'" . $customId . "', 'ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûýýþÿŔŕ', - 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr') ), ' ', '')"; + $criteria[] = "replace(lower(unaccent(custom_fields->>'" . $customId . "') ), ' ', '')"; } else { $order[] = $allowedFields[$criterion]; - $criteria[] = "replace(lower(translate(" . $allowedFields[$criterion] . ", 'ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûýýþÿŔŕ', - 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr') ), ' ', '')"; + $criteria[] = "replace(lower(unaccent(" . $allowedFields[$criterion] . ") ), ' ', '')"; } } diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php index 0397b00ae4f..396a4ca3703 100644 --- a/src/app/resource/controllers/ResourceListController.php +++ b/src/app/resource/controllers/ResourceListController.php @@ -233,7 +233,7 @@ class ResourceListController $queryData[] = "{$cleanSearch[1]}"; $queryData[] = "{$cleanSearch[1]}"; } else { - $where[] = '(alt_identifier ilike ? OR translate(subject, \'ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûýýþÿŔŕ\', \'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyrr\') ilike translate(?, \'ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûýýþÿŔŕ\', \'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyrr\'))'; + $where[] = '(alt_identifier ilike ? OR unaccent(subject) ilike unaccent(?))'; $queryData[] = "%{$args['data']['search']}%"; $queryData[] = "%{$args['data']['search']}%"; } @@ -1024,7 +1024,7 @@ class ResourceListController $where[] = 'process_limit_date < CURRENT_TIMESTAMP'; } if (!empty($data['search']) && mb_strlen($data['search']) >= 2) { - $where[] = '(alt_identifier ilike ? OR translate(subject, \'ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûýýþÿŔŕ\', \'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyrr\') ilike translate(?, \'ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûýýþÿŔŕ\', \'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyrr\'))'; + $where[] = '(alt_identifier ilike ? OR unaccent(subject))'; $queryData[] = "%{$data['search']}%"; $queryData[] = "%{$data['search']}%"; } -- GitLab