Skip to content
Snippets Groups Projects
Verified Commit cb5846ed authored by Damien's avatar Damien
Browse files

FEAT #13595 TIME 0:20 Fix search superadmin

parent 008c4291
No related branches found
No related tags found
No related merge requests found
...@@ -38,55 +38,60 @@ class SearchController ...@@ -38,55 +38,60 @@ class SearchController
{ {
$queryParams = $request->getQueryParams(); $queryParams = $request->getQueryParams();
$entities = UserModel::getEntitiesByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]); if ($GLOBALS['userId'] == 'superadmin') {
$entities = array_column($entities, 'id'); $whereClause = '1=1';
$entities = empty($entities) ? [0] : $entities; $dataClause = [];
} else {
$entities = UserModel::getEntitiesByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$entities = array_column($entities, 'id');
$entities = empty($entities) ? [0] : $entities;
$foldersClause = 'res_id in (select res_id from folders LEFT JOIN entities_folders ON folders.id = entities_folders.folder_id LEFT JOIN resources_folders ON folders.id = resources_folders.folder_id '; $foldersClause = 'res_id in (select res_id from folders LEFT JOIN entities_folders ON folders.id = entities_folders.folder_id LEFT JOIN resources_folders ON folders.id = resources_folders.folder_id ';
$foldersClause .= 'WHERE entities_folders.entity_id in (?) OR folders.user_id = ?)'; $foldersClause .= 'WHERE entities_folders.entity_id in (?) OR folders.user_id = ?)';
$whereClause = "(res_id in (select res_id from users_followed_resources where user_id = ?)) OR ({$foldersClause})"; $whereClause = "(res_id in (select res_id from users_followed_resources where user_id = ?)) OR ({$foldersClause})";
$dataClause = [$GLOBALS['id'], $entities, $GLOBALS['id']]; $dataClause = [$GLOBALS['id'], $entities, $GLOBALS['id']];
$groups = UserModel::getGroupsByLogin(['login' => $GLOBALS['userId'], 'select' => ['where_clause']]); $groups = UserModel::getGroupsByLogin(['login' => $GLOBALS['userId'], 'select' => ['where_clause']]);
$groupsClause = ''; $groupsClause = '';
foreach ($groups as $key => $group) { foreach ($groups as $key => $group) {
if (!empty($group['where_clause'])) { if (!empty($group['where_clause'])) {
$groupClause = PreparedClauseController::getPreparedClause(['clause' => $group['where_clause'], 'login' => $GLOBALS['userId']]); $groupClause = PreparedClauseController::getPreparedClause(['clause' => $group['where_clause'], 'login' => $GLOBALS['userId']]);
if ($key > 0) { if ($key > 0) {
$groupsClause .= ' or '; $groupsClause .= ' or ';
}
$groupsClause .= "({$groupClause})";
} }
$groupsClause .= "({$groupClause})";
} }
} if (!empty($groupsClause)) {
if (!empty($groupsClause)) { $whereClause .= " OR ({$groupsClause})";
$whereClause .= " OR ({$groupsClause})"; }
}
$baskets = BasketModel::getBasketsByLogin(['login' => $GLOBALS['userId']]); $baskets = BasketModel::getBasketsByLogin(['login' => $GLOBALS['userId']]);
$basketsClause = ''; $basketsClause = '';
foreach ($baskets as $basket) { foreach ($baskets as $basket) {
if (!empty($basket['basket_clause'])) { if (!empty($basket['basket_clause'])) {
$basketClause = PreparedClauseController::getPreparedClause(['clause' => $basket['basket_clause'], 'login' => $GLOBALS['userId']]); $basketClause = PreparedClauseController::getPreparedClause(['clause' => $basket['basket_clause'], 'login' => $GLOBALS['userId']]);
if (!empty($basketsClause)) { if (!empty($basketsClause)) {
$basketsClause .= ' or '; $basketsClause .= ' or ';
}
$basketsClause .= "({$basketClause})";
} }
$basketsClause .= "({$basketClause})";
} }
} $assignedBaskets = RedirectBasketModel::getAssignedBasketsByUserId(['userId' => $GLOBALS['id']]);
$assignedBaskets = RedirectBasketModel::getAssignedBasketsByUserId(['userId' => $GLOBALS['id']]); foreach ($assignedBaskets as $basket) {
foreach ($assignedBaskets as $basket) { if (!empty($basket['basket_clause'])) {
if (!empty($basket['basket_clause'])) { $basketOwner = UserModel::getById(['id' => $basket['owner_user_id'], 'select' => ['user_id']]);
$basketOwner = UserModel::getById(['id' => $basket['owner_user_id'], 'select' => ['user_id']]); $basketClause = PreparedClauseController::getPreparedClause(['clause' => $basket['basket_clause'], 'login' => $basketOwner['user_id']]);
$basketClause = PreparedClauseController::getPreparedClause(['clause' => $basket['basket_clause'], 'login' => $basketOwner['user_id']]); if (!empty($basketsClause)) {
if (!empty($basketsClause)) { $basketsClause .= ' or ';
$basketsClause .= ' or '; }
$basketsClause .= "({$basketClause})";
} }
$basketsClause .= "({$basketClause})";
} }
} if (!empty($basketsClause)) {
if (!empty($basketsClause)) { $whereClause .= " OR ({$basketsClause})";
$whereClause .= " OR ({$basketsClause})"; }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment