Index: openacs-4/packages/acs-reference/sql/postgresql/upgrade/upgrade-5.10.0d1-5.10.0d2.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-reference/sql/postgresql/upgrade/Attic/upgrade-5.10.0d1-5.10.0d2.sql,v
diff -u -N
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/acs-reference/sql/postgresql/upgrade/upgrade-5.10.0d1-5.10.0d2.sql	16 Apr 2019 08:09:36 -0000	1.1.2.1
@@ -0,0 +1,163 @@
+
+-- added
+select define_function_args('acs_reference__new','repository_id;null,table_name,internal_data_p;"f",package_name;null,last_update;sysdate,source;null,source_url;null,effective_date;sysdate,expiry_date;null,maintainer_id;null,notes;null (not Oracle empty_blob()),first_names;null,last_name;null,creation_ip;null,object_type;"acs_reference_repository",creation_user;null');
+
+--
+-- procedure acs_reference__new/16
+--
+CREATE OR REPLACE FUNCTION acs_reference__new(
+   p_repository_id integer,      -- default null
+   p_table_name varchar, 
+   p_internal_data_p boolean,    -- default "f"
+   p_package_name varchar,       -- default null
+   p_last_update timestamptz,    -- default sysdate
+   p_source varchar,             -- default null
+   p_source_url varchar,         -- default null
+   p_effective_date timestamptz, -- default sysdate
+   p_expiry_date timestamptz,    -- default null
+   p_maintainer_id integer,      -- default null
+   p_notes integer,              -- default null (not Oracle empty_blob())
+   p_first_names varchar,        -- default null
+   p_last_name varchar,          -- default null
+   p_creation_ip varchar,        -- default null
+   p_object_type varchar,        -- default "acs_reference_repository"
+   p_creation_user integer       -- default null
+
+) RETURNS integer AS $$
+DECLARE
+    v_repository_id acs_reference_repositories.repository_id%TYPE;
+    v_object_type   acs_objects.object_type%TYPE;
+    v_maintainer_id persons.person_id%TYPE;
+BEGIN
+    if p_object_type is null then
+        v_object_type := 'acs_reference_repository';
+    else
+        v_object_type := p_object_type;
+    end if;
+
+    v_repository_id := acs_object__new (
+         p_repository_id,    
+         v_object_type,
+         now(),
+         p_creation_user,
+         p_creation_ip,
+         null,
+         't',
+         p_source,
+         null
+    );
+
+    -- This logic is not correct as the maintainer could already exist
+    -- The way around this is a little clunky as you can search persons
+    -- then pick an existing person or add a new one, to many screens!
+    -- I really doubt the need for person anyway.
+    --
+    -- It probably needs to just be a UI function and pass
+    -- in the value for maintainer.
+    --
+    -- IN OTHER WORDS
+    -- Guaranteed to probably break in the future if you depend on
+    -- first_names and last_name to still exist as a param
+    -- This needs to be updated in the Oracle version also
+    -- NEEDS TO BE FIXED - jag
+
+    if p_first_names is not null and p_last_name is not null and p_maintainer_id is null then
+        v_maintainer_id := person__new (null, 'person', now(), null, null, null, null,
+                                    p_first_names, p_last_name, null);
+    else if p_maintainer_id is not null then
+           v_maintainer_id := p_maintainer_id;
+        else 
+        v_maintainer_id := null;
+    end if;
+    end if;
+
+    insert into acs_reference_repositories
+        (repository_id,table_name,internal_data_p,
+         last_update,package_name,source, 
+         source_url,effective_date,expiry_date,
+         maintainer_id,lob)
+    values 
+        (v_repository_id, p_table_name, p_internal_data_p,
+         p_last_update, p_package_name, p_source, p_source_url,
+         p_effective_date, p_expiry_date, v_maintainer_id, p_notes);
+
+    return v_repository_id;    
+END;
+
+$$ LANGUAGE plpgsql;
+
+-- made initially for PG 
+
+
+--
+-- procedure acs_reference__new/5
+--
+CREATE OR REPLACE FUNCTION acs_reference__new(
+   p_table_name varchar, 
+   p_last_update timestamptz,   -- default sysdate
+   p_source varchar,            -- default null
+   p_source_url varchar,        -- default null
+   p_effective_date timestamptz -- default sysdate
+
+) RETURNS integer AS $$
+DECLARE
+    v_repository_id acs_reference_repositories.repository_id%TYPE;
+BEGIN
+    return acs_reference__new(null, p_table_name, 'f', null, null, p_source, p_source_url,
+                              p_effective_date, null, null, null, null, null, null,
+                              'acs_reference_repository', null);
+END;
+
+$$ LANGUAGE plpgsql;
+
+
+select define_function_args('acs_reference__is_expired_p','repository_id');
+
+--
+-- procedure acs_reference__is_expired_p/1
+--
+CREATE OR REPLACE FUNCTION acs_reference__is_expired_p(
+   repository_id integer
+) RETURNS char AS $$
+DECLARE
+    v_expiry_date acs_reference_repositories.expiry_date%TYPE;
+BEGIN
+    select expiry_date into v_expiry_date
+    from   acs_reference_repositories
+    where  repository_id = is_expired_p.repository_id;
+
+    if coalesce(v_expiry_date,now()+1) < now() then
+        return 't';
+    else
+        return 'f';
+    end if;
+END;
+
+$$ LANGUAGE plpgsql;
+
+
+-- added
+select define_function_args('acs_reference__delete','repository_id');
+
+--
+-- procedure acs_reference__delete/1
+--
+CREATE OR REPLACE FUNCTION acs_reference__delete(
+   p_repository_id integer
+) RETURNS integer AS $$
+DECLARE
+    v_maintainer_id        acs_objects.object_id%TYPE;
+BEGIN
+    select maintainer_id into v_maintainer_id
+    from   acs_reference_repositories
+    where  repository_id = p_repository_id;
+
+    delete from acs_reference_repositories
+    where repository_id = p_repository_id;
+
+    perform acs_object__delete(p_repository_id);
+    return 0;
+END;
+
+$$ LANGUAGE plpgsql;
+
