setQuery('SELECT accountId FROM AccountToFavorite WHERE userId = ?');
+ $queryData->setQuery('SELECT accountId, userId FROM AccountToFavorite WHERE userId = ?');
$queryData->addParam($id);
$queryData->setUseKeyPair(true);
diff --git a/lib/SP/Repositories/Account/AccountRepository.php b/lib/SP/Repositories/Account/AccountRepository.php
index cc3018df..6b7b31c6 100644
--- a/lib/SP/Repositories/Account/AccountRepository.php
+++ b/lib/SP/Repositories/Account/AccountRepository.php
@@ -577,9 +577,6 @@ class AccountRepository extends Repository implements RepositoryItemInterface
*/
public function getByFilter(AccountSearchFilter $accountSearchFilter)
{
- $queryJoin = [];
- $queryLimit = '';
-
$queryFilterCommon = new QueryCondition();
$queryFilterSelect = new QueryCondition();
@@ -632,29 +629,28 @@ class AccountRepository extends Repository implements RepositoryItemInterface
$where[] = $queryFilterUser->getFilters();
}
+ $join = ['query' => [], 'param' => []];
+
+ if ($accountSearchFilter->isSearchFavorites() === true) {
+ $join['query'][] = 'INNER JOIN AccountToFavorite AF ON (AF.accountId = A.id AND AF.userId = ?)';
+ $join['param'][] = $this->session->getUserData()->getId();
+ }
+
$queryData = new QueryData();
$queryData->setWhere($where);
- $queryData->setParams(array_merge($queryFilterCommon->getParams(), $queryFilterSelect->getParams(), $queryFilterUser->getParams()));
+ $queryData->setParams(array_merge($join['param'], $queryFilterCommon->getParams(), $queryFilterSelect->getParams(), $queryFilterUser->getParams()));
+ $queryData->setSelect('*');
+ $queryData->setFrom('account_search_v A ' . implode(PHP_EOL, $join['query']));
+ $queryData->setOrder($accountSearchFilter->getOrderString());
if ($accountSearchFilter->getLimitCount() > 0) {
$queryLimit = '?, ?';
$queryData->addParam($accountSearchFilter->getLimitStart());
$queryData->addParam($accountSearchFilter->getLimitCount());
+ $queryData->setLimit($queryLimit);
}
- if ($accountSearchFilter->isSearchFavorites() === true) {
- $queryJoin[] = 'INNER JOIN AccountToFavorite AF ON (AF.accountId = id AND AF.userId = ?)';
- $queryData->addParam($this->session->getUserData()->getId());
- }
-
- $queryJoin = implode('', $queryJoin);
-
- $queryData->setSelect('*');
- $queryData->setFrom('account_search_v A' . $queryJoin);
- $queryData->setOrder($accountSearchFilter->getOrderString());
- $queryData->setLimit($queryLimit);
-
$queryData->setMapClassName(AccountSearchVData::class);
return new AccountSearchResponse($this->db->getFullRowCount($queryData), DbWrapper::getResultsArray($queryData, $this->db));
diff --git a/lib/SP/Services/Account/AccountSearchService.php b/lib/SP/Services/Account/AccountSearchService.php
index 54e98982..84dff3ec 100644
--- a/lib/SP/Services/Account/AccountSearchService.php
+++ b/lib/SP/Services/Account/AccountSearchService.php
@@ -162,7 +162,7 @@ class AccountSearchService extends Service
$accountsSearchItem->setTextMaxLength($maxTextLength);
$accountsSearchItem->setColor($this->pickAccountColor($accountSearchData->getClientId()));
$accountsSearchItem->setLink($accountLinkEnabled);
- $accountsSearchItem->setFavorite(in_array($accountSearchData->getId(), $favorites, true));
+ $accountsSearchItem->setFavorite(isset($favorites[$accountSearchData->getId()]));
$accountsData[] = $accountsSearchItem;
}
diff --git a/lib/SP/Storage/Database.php b/lib/SP/Storage/Database.php
index 4fad3e95..2dc9d637 100644
--- a/lib/SP/Storage/Database.php
+++ b/lib/SP/Storage/Database.php
@@ -188,7 +188,7 @@ class Database implements DatabaseInterface
$stmt = $connection->query($query);
}
- if ($queryData->isUseKeyPair() === true) {
+ if ($queryData->isUseKeyPair()) {
$stmt->setFetchMode(PDO::FETCH_KEY_PAIR);
} elseif (null !== $queryData->getMapClass()) {
$stmt->setFetchMode(PDO::FETCH_INTO, $queryData->getMapClass());
diff --git a/public/js/app-actions.js b/public/js/app-actions.js
index bf7520fd..e17242a7 100644
--- a/public/js/app-actions.js
+++ b/public/js/app-actions.js
@@ -414,7 +414,7 @@ sysPass.Actions = function (Common) {
search: function ($obj) {
log.info("account:search");
- var $frmSearch = $("#frmSearch");
+ const $frmSearch = $("#frmSearch");
$frmSearch.find("input[name='sk']").val(Common.sk.get());
order.key = $frmSearch.find("input[name='skey']").val();
@@ -424,8 +424,8 @@ sysPass.Actions = function (Common) {
$frmSearch.find("input[name='start']").val(0);
}
- var opts = Common.appRequests().getRequestOpts();
- opts.url = ajaxUrl.entrypoint;
+ const opts = Common.appRequests().getRequestOpts();
+ opts.url = ajaxUrl.entrypoint + "?r=" + $obj.data("action-route");
opts.method = "get";
opts.data = $frmSearch.serialize();
diff --git a/public/js/app-actions.min.js b/public/js/app-actions.min.js
index 902aef7b..ceb5d7e0 100644
--- a/public/js/app-actions.min.js
+++ b/public/js/app-actions.min.js
@@ -10,36 +10,36 @@ p.search()})}}})},viewPass:function(a){e.info("account:showpass");var b=a.data("
b){e.info("account:saveFavorite");var d="on"===a.data("status"),h=d?a.data("action-route-off"):a.data("action-route-on"),q=c.appRequests().getRequestOpts();q.url=f.entrypoint;q.data={r:h+"/"+a.data("item-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(q,function(h){c.msg.out(h);0===h.status&&(a.data("status",d?"off":"on"),"function"===typeof b&&b())})},request:function(a){e.info("account:request");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.data=a.serialize();c.appRequests().getActionCall(b,
function(a){c.msg.out(a)})},menu:function(a){a.hide();a.parent().children(".actions-optional").show(250)},sort:function(a){e.info("account:sort");var c=$("#frmSearch");c.find('input[name="skey"]').val(a.data("key"));c.find('input[name="sorder"]').val(a.data("dir"));c.find('input[name="start"]').val(a.data("start"));p.search()},editPass:function(a){e.info("account:editpass");var b=a.data("parent-id"),b=void 0===b?a.data("item-id"):b;g(c.appRequests().getRouteForQuery(a.data("action-route"),b),"account")},
saveEditRestore:function(a){e.info("account:restore");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route")+"/"+a.data("history-id")+"/"+a.data("item-id");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);void 0!==a.data.itemId&&void 0!==a.data.nextAction&&g(c.appRequests().getRouteForQuery(a.data.nextAction,a.data.itemId),"account")})},listFiles:function(a){e.info("account:getfiles");var b=c.appRequests().getRequestOpts();b.method="get";
-b.type="html";b.url=f.entrypoint;b.data={r:a.data("action-route")+"/"+a.data("item-id"),del:a.data("delete"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(c){a.html(c)})},search:function(a){e.info("account:search");var b=$("#frmSearch");b.find("input[name='sk']").val(c.sk.get());b.find("input[name='skey']").val();b.find("input[name='sorder']").val();void 0!==a&&b.find("input[name='start']").val(0);a=c.appRequests().getRequestOpts();a.url=f.entrypoint;a.method="get";a.data=b.serialize();
-c.appRequests().getActionCall(a,function(a){10===a.status&&c.msg.out(a);c.sk.set(a.data.sk);$("#res-content").empty().html(a.data.html)})},save:function(a){e.info("account:save");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("action-route")+"/"+a.data("item-id");b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);void 0!==a.data.itemId&&void 0!==a.data.nextAction&&g(c.appRequests().getRouteForQuery(a.data.nextAction,a.data.itemId),"account")})}},
-r={get:function(a){e.info("items:get");var b=a[0].selectize;b.clearOptions();b.load(function(d){var h=c.appRequests().getRequestOpts();h.url=f.entrypoint;h.method="get";h.data={r:a.data("action-route")+"/"+a.data("item-id"),sk:a.data("sk")};c.appRequests().getActionCall(h,function(h){d(h.data);b.setValue(a.data("selected-id"),!0);c.appTriggers().updateFormHash()})})},update:function(a){e.info("items:update");var b=$("#"+a.data("item-dst"))[0].selectize;b.clearOptions();b.load(function(d){var b=c.appRequests().getRequestOpts();
-b.url=f.entrypoint;b.method="get";b.data={r:a.data("item-route"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(a){d(a)})})}},t={logout:function(){c.redirect("index.php?r=login/logout")},login:function(a){e.info("main:login");var b=c.appRequests().getRequestOpts();b.url=f.entrypoint+"?r="+a.data("route");b.method="get";b.data=a.serialize();c.appRequests().getActionCall(b,function(b){var d=$(".extra-hidden");switch(b.status){case 0:c.redirect(b.data.url);break;case 2:c.msg.out(b);a.find("input[type='text'],input[type='password']").val("");
-a.find("input:first").focus();0
";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b=
-a.find("input[name='useTask']");var d=$("#taskStatus");d.empty().html(c.config().LANG[62]);if(0
"+c.config().LANG[62];d.empty().html(a)})}b=c.appRequests().getRequestOpts();b.url=f.entrypoint;b.method="get";b.useFullLoading=
-!0;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0!==b.status?a.find(":input[name=h]").val(""):(void 0!==e&&e.close(),setTimeout(function(){c.redirect("index.php")},5E3))})}}})},getUpdates:function(){e.info("main:getUpdates");var a=c.appRequests().getRequestOpts();a.url=f.entrypoint;a.type="html";a.method="get";a.timeout=1E4;a.useLoading=!1;a.data={isAjax:1};c.appRequests().getActionCall(a,function(a){$("#updates").html(a);void 0!==componentHandler&&componentHandler.upgradeDom()},
-function(){$("#updates").html("!")})}},k={state:{tab:{index:0,refresh:!0,route:""},itemId:0,update:function(a){var c=$("#content").find("[id^='tabs-'].is-active");0 ";mdlDialog().show({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b=
-c.appRequests().getRequestOpts();b.url=f.entrypoint;b.data={actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1,ldap_loginattribute:$("#ldap_loginattribute").val(),ldap_nameattribute:$("#ldap_nameattribute").val(),ldap_ads:$("#ldap_ads").prop("checked")};c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}}})}},m={search:function(a){e.info("grid:search");var b=$(a.data("target")),d=c.appRequests().getRequestOpts();d.url=f.entrypoint+"?r="+a.data("action-route");d.method="get";d.data=a.serialize();
-c.appRequests().getActionCall(d,function(a){0===a.status?b.html(a.data.html):b.html(c.msg.html.error(a.description));c.sk.set(a.csrf)})},nav:function(a,b){e.info("grid:nav");var d=$("#"+a.data("action-form"));d.find("[name='start']").val(a.data("start"));d.find("[name='count']").val(a.data("count"));d.find("[name='sk']").val(c.sk.get());"function"===typeof b?b(d):m.search(d)},"delete":function(a,b){var d='