3 INSERT INTO config.upgrade_log (version) VALUES ('0287'); --miker
5 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
6 VALUES ('history.hold.retention_start', FALSE, 'Historical Hold Retention Start Date', 'Historical Hold Retention Start Date', 'date');
8 CREATE OR REPLACE FUNCTION action.usr_visible_holds (usr_id INT) RETURNS SETOF action.hold_request AS $func$
10 h action.hold_request%ROWTYPE;
13 usr_view_count actor.usr_setting%ROWTYPE;
14 usr_view_age actor.usr_setting%ROWTYPE;
15 usr_view_start actor.usr_setting%ROWTYPE;
17 SELECT * INTO usr_view_count FROM actor.usr_setting WHERE usr = usr_id AND name = 'history.hold.retention_count';
18 SELECT * INTO usr_view_age FROM actor.usr_setting WHERE usr = usr_id AND name = 'history.hold.retention_age';
19 SELECT * INTO usr_view_start FROM actor.usr_setting WHERE usr = usr_id AND name = 'history.hold.retention_start';
23 FROM action.hold_request
25 AND fulfillment_time IS NULL
26 AND cancel_time IS NULL
27 ORDER BY request_time DESC
32 IF usr_view_start.value IS NULL THEN
36 IF usr_view_age.value IS NOT NULL THEN
37 -- User opted in and supplied a retention age
38 IF oils_json_to_string(usr_view_age.value)::INTERVAL > AGE(NOW(), oils_json_to_string(usr_view_start.value)::TIMESTAMPTZ) THEN
39 view_age := AGE(NOW(), oils_json_to_string(usr_view_start.value)::TIMESTAMPTZ);
41 view_age := oils_json_to_string(usr_view_age.value)::INTERVAL;
45 view_age := AGE(NOW(), oils_json_to_string(usr_view_start.value)::TIMESTAMPTZ);
48 IF usr_view_count.value IS NOT NULL THEN
49 view_count := oils_json_to_text(usr_view_count.value)::INT;
54 -- show some fulfilled/canceled holds
57 FROM action.hold_request
59 AND ( fulfillment_time IS NOT NULL OR cancel_time IS NOT NULL )
60 AND request_time > NOW() - view_age
61 ORDER BY request_time DESC
69 $func$ LANGUAGE PLPGSQL;