diff --git a/migration/20.10/migrateSavedQueries.php b/migration/20.10/migrateSavedQueries.php index e755ef172b99a5da26aa9bedd19282d2797fbab0..f7d73775bd17f3a06a2e38209e0c2db1b9a4fda3 100644 --- a/migration/20.10/migrateSavedQueries.php +++ b/migration/20.10/migrateSavedQueries.php @@ -117,8 +117,8 @@ foreach ($customs as $custom) { } } $query[] = ['identifier' => 'status', 'values' => $allStatuses]; - } elseif ($key == 'visa_user' && !empty($value['fields']['visa_user'][0])) { - $user = \User\models\UserModel::getByLogin(['login' => $value['fields']['visa_user'][0], 'select' => ['id', 'firstname', 'lastname']]); + } elseif ($key == 'visa_user' && !empty($value['fields']['user_visa'][0])) { + $user = \User\models\UserModel::getByLogin(['login' => $value['fields']['user_visa'][0], 'select' => ['id', 'firstname', 'lastname']]); if (!empty($user)) { $query[] = ['identifier' => 'role_visa', 'values' => [['id' => $user['id'], 'type' => 'user', 'label' => "{$user['firstname']} {$user['lastname']}"]]]; } diff --git a/src/app/search/controllers/SearchController.php b/src/app/search/controllers/SearchController.php index 4b43c7495adf066329b3df5137dbbf8ecb07c4ef..26a48c9aa70275a0b10187e10b8bcb7d2fd41826 100644 --- a/src/app/search/controllers/SearchController.php +++ b/src/app/search/controllers/SearchController.php @@ -611,10 +611,14 @@ class SearchController } if (empty($tagsMatch)) { $args['searchWhere'][] = 'res_id not in (select distinct res_id from resources_tags)'; - } else { + } elseif (in_array(null, $body['tags']['values'])) { $args['searchWhere'][] = '(res_id in (?) OR res_id not in (select distinct res_id from resources_tags))'; $tagsMatch = array_column($tagsMatch, 'res_id'); $args['searchData'][] = $tagsMatch; + } else { + $args['searchWhere'][] = 'res_id in (?)'; + $tagsMatch = array_column($tagsMatch, 'res_id'); + $args['searchData'][] = $tagsMatch; } } if (!empty($body['folders']) && !empty($body['folders']['values']) && is_array($body['folders']['values'])) { @@ -630,10 +634,14 @@ class SearchController } if (empty($foldersMatch)) { $args['searchWhere'][] = 'res_id not in (select distinct res_id from resources_folders)'; - } else { + } elseif (in_array(null, $body['folders']['values'])) { $args['searchWhere'][] = '(res_id in (?) OR res_id not in (select distinct res_id from resources_folders))'; $foldersMatch = array_column($foldersMatch, 'res_id'); $args['searchData'][] = $foldersMatch; + } else { + $args['searchWhere'][] = 'res_id in (?)'; + $foldersMatch = array_column($foldersMatch, 'res_id'); + $args['searchData'][] = $foldersMatch; } } if (!empty($body['notes']) && !empty($body['notes']['values']) && is_string($body['notes']['values'])) { @@ -691,12 +699,21 @@ class SearchController $data[] = $itemValue['id']; $data[] = $itemValue['type'] == 'user' ? 'user_id' : 'entity_id'; } - $data[] = $roleId; - $rolesMatch = ListInstanceModel::get([ - 'select' => ['res_id'], - 'where' => ["({$where})", 'item_mode = ?'], - 'data' => $data - ]); + if ($roleId == 'sign') { + $data[] = 'true'; + $rolesMatch = ListInstanceModel::get([ + 'select' => ['res_id'], + 'where' => ["({$where})", 'signatory = ?'], + 'data' => $data + ]); + } else { + $data[] = $roleId; + $rolesMatch = ListInstanceModel::get([ + 'select' => ['res_id'], + 'where' => ["({$where})", 'item_mode = ?'], + 'data' => $data + ]); + } if (empty($rolesMatch)) { return null; }