Skip to content

Commit 5bfae71

Browse files
Merge pull request #189 from AlexanderBlanchardAC/DIS-219-Filter-Holds
Dis 219 filter holds
2 parents bba1da0 + 822cb88 commit 5bfae71

File tree

1 file changed

+119
-29
lines changed

1 file changed

+119
-29
lines changed

code/web/services/MyAccount/AJAX.php

+119-29
Original file line numberDiff line numberDiff line change
@@ -2557,13 +2557,32 @@ function getMenuDataIls() {
25572557
$ilsSummary = $user->getCatalogDriver()->getAccountSummary($user);
25582558
$ilsSummary->setMaterialsRequests($user->getNumMaterialsRequests());
25592559
if ($user->getLinkedUsers() != null) {
2560+
$selectedLinkedUser = $this->setFilterLinkedUser();
2561+
if ($selectedLinkedUser) {
2562+
$filterLinkedUser = new User();
2563+
$filterLinkedUser->id = $selectedLinkedUser;
2564+
if ($filterLinkedUser->find(true)) {
2565+
$filterLinkedUserSummary = $filterLinkedUser->getCatalogDriver()->getAccountSummary($filterLinkedUser);
2566+
2567+
$ilsSummary->numAvailableHolds = $filterLinkedUserSummary->numAvailableHolds;
2568+
$ilsSummary->numUnavailableHolds = $filterLinkedUserSummary->numUnavailableHolds;
2569+
}
2570+
} else {
25602571
/** @var User $user */
2572+
foreach ($user->getLinkedUsers() as $linkedUser) {
2573+
$linkedUserSummary = $linkedUser->getCatalogDriver()->getAccountSummary($linkedUser);
2574+
$ilsSummary->numAvailableHolds += $linkedUserSummary->numAvailableHolds;
2575+
$ilsSummary->numUnavailableHolds += $linkedUserSummary->numUnavailableHolds;
2576+
2577+
}
2578+
}
25612579
foreach ($user->getLinkedUsers() as $linkedUser) {
25622580
$linkedUserSummary = $linkedUser->getCatalogDriver()->getAccountSummary($linkedUser);
25632581
$ilsSummary->totalFines += $linkedUserSummary->totalFines;
25642582
$ilsSummary->numCheckedOut += $linkedUserSummary->numCheckedOut;
25652583
$ilsSummary->numOverdue += $linkedUserSummary->numOverdue;
25662584
$ilsSummary->setMaterialsRequests($ilsSummary->getMaterialsRequests() + $linkedUser->getNumMaterialsRequests());
2585+
25672586
}
25682587
}
25692588
$timer->logTime("Loaded ILS Summary for User and linked users");
@@ -2581,19 +2600,6 @@ function getMenuDataIls() {
25812600
//Expiration and fines
25822601
$interface->assign('ilsSummary', $ilsSummary);
25832602
$interface->setFinesRelatedTemplateVariables();
2584-
2585-
$result = $this->getHolds();
2586-
2587-
if ($result['success'] === true) {
2588-
$allHolds = $interface->getVariable('recordList');
2589-
if (isset($allHolds['available']) && isset($allHolds['unavailable'])) {
2590-
$numAvailableHolds = count($allHolds['available']);
2591-
$numUnavailableHolds = count($allHolds['unavailable']);
2592-
2593-
$ilsSummary->numAvailableHolds = $numAvailableHolds;
2594-
$ilsSummary->numUnavailableHolds = $numUnavailableHolds;
2595-
}
2596-
}
25972603

25982604
if ($interface->getVariable('expiredMessage')) {
25992605
$interface->assign('expiredMessage', str_replace('%date%', date('M j, Y', $ilsSummary->expirationDate), $interface->getVariable('expiredMessage')));
@@ -2656,11 +2662,26 @@ function getMenuDataCloudLibrary() {
26562662
$cloudLibrarySummary = $driver->getAccountSummary($user);
26572663
if ($user->getLinkedUsers() != null) {
26582664
/** @var User $user */
2665+
2666+
$selectedLinkedUser = $this->setFilterLinkedUser();
2667+
if ($selectedLinkedUser) {
2668+
$filterLinkedUser = new User();
2669+
$filterLinkedUser->id = $selectedLinkedUser;
2670+
if ($filterLinkedUser->find(true)) {
2671+
$filterLinkedUserSummary = $driver->getAccountSummary($filterLinkedUser);
2672+
$cloudLibrarySummary->numAvailableHolds = $filterLinkedUserSummary->numAvailableHolds;
2673+
$cloudLibrarySummary->numUnavailableHolds = $filterLinkedUserSummary->numUnavailableHolds;
2674+
}
2675+
} else {
2676+
foreach ($user->getLinkedUsers() as $linkedUser) {
2677+
$linkedUserSummary = $driver->getAccountSummary($linkedUser);
2678+
$cloudLibrarySummary->numUnavailableHolds += $linkedUserSummary->numUnavailableHolds;
2679+
$cloudLibrarySummary->numAvailableHolds += $linkedUserSummary->numAvailableHolds;
2680+
}
2681+
}
26592682
foreach ($user->getLinkedUsers() as $linkedUser) {
26602683
$linkedUserSummary = $driver->getAccountSummary($linkedUser);
26612684
$cloudLibrarySummary->numCheckedOut += $linkedUserSummary->numCheckedOut;
2662-
$cloudLibrarySummary->numUnavailableHolds += $linkedUserSummary->numUnavailableHolds;
2663-
$cloudLibrarySummary->numAvailableHolds += $linkedUserSummary->numAvailableHolds;
26642685
}
26652686
}
26662687
$timer->logTime("Loaded cloudLibrary Summary for User and linked users");
@@ -2698,11 +2719,25 @@ function getMenuDataAxis360() {
26982719
$axis360Summary = $driver->getAccountSummary($user);
26992720
if ($user->getLinkedUsers() != null) {
27002721
/** @var User $user */
2722+
$selectedLinkedUser = $this->setFilterLinkedUser();
2723+
if ($selectedLinkedUser) {
2724+
$filterLinkedUser - new User();
2725+
$filterLinkedUser->id = $selectedLinkedUser;
2726+
if ($filterLinkedUser->find(true)) {
2727+
$filterLinkedUserSummary = $driver->getAccountSummary($filterLinkedUser);
2728+
$axis360Summary->numAvailableHolds = $filterLinkedUserSummary->numAvailableHolds;
2729+
$axis360Summary->numUnavailableHolds = $filterLinkedUserSummary->numUnavailableHolds;
2730+
}
2731+
} else {
2732+
foreach ($user->getLinkedUsers() as $linkedUser) {
2733+
$linkedUserSummary = $driver->getAccountSummary($linkedUser);
2734+
$axis360Summary->numUnavailableHolds += $linkedUserSummary->numUnavailableHolds;
2735+
$axis360Summary->numAvailableHolds += $linkedUserSummary->numAvailableHolds;
2736+
}
2737+
}
27012738
foreach ($user->getLinkedUsers() as $linkedUser) {
27022739
$linkedUserSummary = $driver->getAccountSummary($linkedUser);
27032740
$axis360Summary->numCheckedOut += $linkedUserSummary->numCheckedOut;
2704-
$axis360Summary->numUnavailableHolds += $linkedUserSummary->numUnavailableHolds;
2705-
$axis360Summary->numAvailableHolds += $linkedUserSummary->numAvailableHolds;
27062741
}
27072742
}
27082743
$timer->logTime("Loaded Boundless Summary for User and linked users");
@@ -2782,11 +2817,27 @@ function getMenuDataOverdrive() {
27822817
$overDriveSummary = $driver->getAccountSummary($user);
27832818
if ($user->getLinkedUsers() != null) {
27842819
/** @var User $user */
2820+
2821+
$selectedLinkedUser = $this->setFilterLinkedUser();
2822+
if ($selectedLinkedUser) {
2823+
$filterLinkedUser = new User();
2824+
$filterLinkedUser->id = $selectedLinkedUser;
2825+
if ($filterLinkedUser->find(true)) {
2826+
$filterLinkedUserSummary = $driver->getAccountSummary($filterLinkedUser);
2827+
$overDriveSummary->numAvailableHolds = $filterLinkedUserSummary->numAvailableHolds;
2828+
$overDriveSummary->numUnavailableHolds = $filterLinkedUserSummary->numUnavailableHolds;
2829+
}
2830+
} else {
2831+
foreach ($user->getLinkedUsers() as $linkedUser) {
2832+
$linkedUserSummary = $driver->getAccountSummary($linkedUser);
2833+
$overDriveSummary->numAvailableHolds += $linkedUserSummary->numAvailableHolds;
2834+
$overDriveSummary->numUnavailableHolds += $linkedUserSummary->numUnavailableHolds;
2835+
}
2836+
}
2837+
27852838
foreach ($user->getLinkedUsers() as $linkedUser) {
27862839
$linkedUserSummary = $driver->getAccountSummary($linkedUser);
27872840
$overDriveSummary->numCheckedOut += $linkedUserSummary->numCheckedOut;
2788-
$overDriveSummary->numAvailableHolds += $linkedUserSummary->numAvailableHolds;
2789-
$overDriveSummary->numUnavailableHolds += $linkedUserSummary->numUnavailableHolds;
27902841
}
27912842
}
27922843
$timer->logTime("Loaded " . $readerName . " Summary for User and linked users");
@@ -2821,11 +2872,25 @@ function getMenuDataPalaceProject() {
28212872
$palaceProjectSummary = $driver->getAccountSummary($user);
28222873
if ($user->getLinkedUsers() != null) {
28232874
/** @var User $user */
2875+
$selectedLinkedUser = $this->setFilterLinkedUser();
2876+
if ($selectedLinkedUser) {
2877+
$filterLinkedUser = new User();
2878+
$filterLinkedUser->id = $selectedLinkedUser;
2879+
if ($filterLinkedUser->find(true)) {
2880+
$filterLinkedUserSummary = $driver->getAccountSummary($filterLinkedUser);
2881+
$palaceProjectSummary->numAvailableHolds = $filterLinkedUserSummary->numAvailableHolds;
2882+
$palaceProjectSummary->numUnavailableHolds = $filterLinkedUserSummary->numUnavailableHolds;
2883+
}
2884+
} else {
2885+
foreach ($user->getLinkedUsers() as $linkedUser) {
2886+
$linkedUserSummary = $driver->getAccountSummary($linkedUser);
2887+
$palaceProjectSummary->numAvailableHolds += $linkedUserSummary->numAvailableHolds;
2888+
$palaceProjectSummary->numUnavailableHolds += $linkedUserSummary->numUnavailableHolds;
2889+
}
2890+
}
28242891
foreach ($user->getLinkedUsers() as $linkedUser) {
28252892
$linkedUserSummary = $driver->getAccountSummary($linkedUser);
28262893
$palaceProjectSummary->numCheckedOut += $linkedUserSummary->numCheckedOut;
2827-
$palaceProjectSummary->numUnavailableHolds += $linkedUserSummary->numUnavailableHolds;
2828-
$palaceProjectSummary->numAvailableHolds += $linkedUserSummary->numAvailableHolds;
28292894
}
28302895
}
28312896
$timer->logTime("Loaded Palace Project Summary for User and linked users");
@@ -2863,9 +2928,19 @@ function getMenuDataInterlibraryLoan() {
28632928
$vdxSummary = $driver->getAccountSummary($user);
28642929
if ($user->getLinkedUsers() != null) {
28652930
/** @var User $user */
2866-
foreach ($user->getLinkedUsers() as $linkedUser) {
2867-
$linkedUserSummary = $driver->getAccountSummary($linkedUser);
2868-
$vdxSummary->numUnavailableHolds += $linkedUserSummary->numUnavailableHolds;
2931+
$selectedLinkedUser = $this->setFilterLinkedUser();
2932+
if ($selectedLinkedUser) {
2933+
$filterLinkedUser = new User();
2934+
$filterLinkedUser->id = $selectedLinkedUser;
2935+
if ($filterLinkedUser->find(true)) {
2936+
$filterLinkedUserSummary = $driver->getAccountSummary($filterLinkedUser);
2937+
$vdxSummary->numUnavailableHolds = $filterLinkedUserSummary->numUnavailableHolds;
2938+
}
2939+
} else {
2940+
foreach ($user->getLinkedUsers() as $linkedUser) {
2941+
$linkedUserSummary = $driver->getAccountSummary($linkedUser);
2942+
$vdxSummary->numUnavailableHolds += $linkedUserSummary->numUnavailableHolds;
2943+
}
28692944
}
28702945
}
28712946
$timer->logTime("Loaded VDX Summary for User and linked users");
@@ -3573,10 +3648,10 @@ public function filterHolds(array $allHolds, string $selectedUser, $selectedHold
35733648

35743649
if (isset($parsedHolds['selected'])) {
35753650
foreach ($parsedHolds['selected'] as $holdKey => $value) {
3576-
if (preg_match('/(\d+)\|(\d+)\|/', $holdKey, $matches)) {
3651+
if (preg_match('/(\d+)\|([a-zA-Z0-9_-]+)\|?/', $holdKey, $matches)) {
35773652
$selectedHoldsArray[] = [
35783653
'userId' => (int)$matches[1],
3579-
'recordId' => (int)$matches[2],
3654+
'recordId' => $matches[2],
35803655
];
35813656
}
35823657
}
@@ -3592,18 +3667,33 @@ public function filterHolds(array $allHolds, string $selectedUser, $selectedHold
35923667
$allUsersSelected = (empty($selectedUser) || $selectedUser === "" || $selectedUser === '[""]');
35933668

35943669
foreach ($allHolds['available'] as $key => $hold) {
3595-
if ($allUsersSelected || strval($hold->userId) === strval($selectedUser)) {
3670+
if ($allUsersSelected || intval($hold->userId) === intval($selectedUser)) {
3671+
if (!empty($selectedHolds)) {
3672+
$matchFound = false;
3673+
foreach ($selectedHolds as $selectedHold) {
3674+
if (
3675+
strval($hold->recordId) === strval($selectedHold['recordId']) &&
3676+
intval($hold->userId) === intval($selectedHold['userId'])
3677+
) {
3678+
$matchFound = true;
3679+
break;
3680+
}
3681+
}
3682+
if (!$matchFound) {
3683+
continue;
3684+
}
3685+
}
35963686
$filteredHolds['available'][$key] = $hold;
35973687
}
35983688
}
35993689

36003690
foreach ($allHolds['unavailable'] as $key => $hold) {
3601-
if ($allUsersSelected || strval($hold->userId) === strval($selectedUser)) {
3691+
if ($allUsersSelected || intval($hold->userId) === intval($selectedUser)) {
36023692
if (!empty($selectedHolds)) {
36033693
$matchFound = false;
36043694
foreach ($selectedHolds as $selectedHold) {
36053695
if (
3606-
intval($hold->recordId) === intval($selectedHold['recordId']) &&
3696+
strval($hold->recordId) === strval($selectedHold['recordId']) &&
36073697
intval($hold->userId) === intval($selectedHold['userId'])
36083698
) {
36093699
$matchFound = true;

0 commit comments

Comments
 (0)