--
-- file_storage__new_folder/5
--
create or replace function file_storage__new_folder(
  new_folder__name character varying,
  new_folder__folder_name character varying,
  new_folder__parent_id integer,
  new_folder__creation_user integer,
  new_folder__creation_ip character varying
) returns int4 as $$

DECLARE
        v_folder_id                   cr_folders.folder_id%TYPE;
        v_package_id                  acs_objects.package_id%TYPE;
BEGIN
        v_package_id := file_storage__get_package_id(new_folder__parent_id);

        -- Create a new folder
        v_folder_id := content_folder__new (
                            new_folder__name,           -- name
                            new_folder__folder_name,    -- label
                            null,                       -- description
                            new_folder__parent_id,      -- parent_id
                            null,                       -- context_id (default)
                            null,                       -- folder_id (default)
                            now(),                      -- creation_date
                            new_folder__creation_user,  -- creation_user
                            new_folder__creation_ip,    -- creation_ip
                            v_package_id                -- package_id
                            );

    -- Register the needed content types
    --
    -- GN: Maybe, when someone decides to really implement the half-cooked
    -- "image" content type, it should go in here as well.
    
        PERFORM content_folder__register_content_type(
                        v_folder_id,             -- folder_id
                        'file_storage_object',   -- content_type
                        't');                    -- include_subtypes
    
        PERFORM content_folder__register_content_type(
                        v_folder_id,        -- folder_id
                        'content_folder',       -- content_type
                        't');                   -- include_subtypes

        PERFORM content_folder__register_content_type(
                    v_folder_id,            -- folder_id
                'content_extlink',        -- content_types
            't');                   -- include_subtypes 


--        PERFORM content_folder__register_content_type(
--            v_folder_id,            -- folder_id
--                    'content_symlink',    -- content_types
--                    't');                   -- include_subtypes 

        -- Give the creator admin privileges on the folder
        PERFORM acs_permission__grant_permission (
                     v_folder_id,                -- object_id
                     new_folder__creation_user,  -- grantee_id
                     'admin'                   -- privilege
                     );

        return v_folder_id;

END;
$$ language plpgsql;