USP_DATALIST_EXPORTPROCESS

List of saved export processes.

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@SITEFILTERMODE tinyint IN Sites
@SITESSELECTED xml IN
@SECURITYFEATUREID uniqueidentifier IN Input parameter indicating the ID of the feature to use for site security checking.
@SECURITYFEATURETYPE tinyint IN Input parameter indicating the type of the feature to use for site security checking.

Definition

Copy


CREATE procedure dbo.USP_DATALIST_EXPORTPROCESS(
    @CURRENTAPPUSERID uniqueidentifier,
    @SITEFILTERMODE tinyint = 0,
    @SITESSELECTED xml = null,
    @SECURITYFEATUREID uniqueidentifier = null,
    @SECURITYFEATURETYPE tinyint = null
)
with execute as caller
as

    set nocount on;

    declare @ISSYSADMIN bit = 0;

    select @ISSYSADMIN = ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID;

    /* Filter out any export processes involving query views to which the current user does not have rights */
    if @ISSYSADMIN = 0 
    begin
    declare @HASALLQUERIESPRIVILEGE bit = dbo.UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE(@CURRENTAPPUSERID, '5f9bbcaf-9c67-4539-9880-ae4f709a9c1f');

        declare @OKVIEWS table (OBJECTNAME nvarchar(128));

        insert into @OKVIEWS (OBJECTNAME)
        select QUERYVIEWCATALOG.OBJECTNAME from dbo.QUERYVIEWCATALOG
        where @HASALLQUERIESPRIVILEGE = 1 or 
      exists (
              select [OKVIEWS].QUERYVIEWCATALOGID 
              from dbo.UFN_SECURITY_GETGRANTEDQUERYVIEWSFORUSER(@CURRENTAPPUSERID) as [OKVIEWS] where [OKVIEWS].QUERYVIEWCATALOGID = QUERYVIEWCATALOG.ID
      );

    declare @SMARTCATALOGITEMS table (SMARTQUERYCATALOGID uniqueidentifier);

    insert into @SMARTCATALOGITEMS (SMARTQUERYCATALOGID)
    select SMARTQUERYCATALOG.ID from dbo.SMARTQUERYCATALOG
    where exists (
      select [SMARTCATALOGITEMS].SMARTQUERYCATALOGID
      from dbo.UFN_SECURITY_GETGRANTEDSMARTQUERIESFORUSER(@CURRENTAPPUSERID) as [SMARTCATALOGITEMS] where [SMARTCATALOGITEMS].SMARTQUERYCATALOGID = SMARTQUERYCATALOG.ID);
    end;

    select EXPORTPROCESS.ID,
        EXPORTPROCESS.NAME,
        EXPORTPROCESS.DESCRIPTION,
        case when ADHOCQUERY.NAME is null then case when SMARTQUERYINSTANCE.NAME is null then IDSETREGISTER.NAME else SMARTQUERYINSTANCE.NAME end else ADHOCQUERY.NAME end as [QUERYNAME],
        case when ADHOCQUERY.NAME is null then case when SMARTQUERYINSTANCE.NAME is null then 'Export Definition' else 'Smart Query Instance' end else 'Ad-hoc Query' end as [QUERYTYPE],        
        BPI.OWNERID as OWNERID,
        coalesce(SITE.NAME, 'All Sites') SITES
        ,EXPORTDEFINITION.NAME EXPORTDEFINITIONNAME
    from dbo.EXPORTPROCESS
    left join dbo.ADHOCQUERY on EXPORTPROCESS.ADHOCQUERYID = ADHOCQUERY.ID
    left join dbo.SMARTQUERYINSTANCE on EXPORTPROCESS.SMARTQUERYINSTANCEID = SMARTQUERYINSTANCE.ID
    left join dbo.BUSINESSPROCESSINSTANCE BPI on EXPORTPROCESS.ID = BPI.BUSINESSPROCESSPARAMETERSETID
    left join dbo.SITE on SITE.ID = BPI.SITEID
    left join dbo.EXPORTDEFINITION on EXPORTDEFINITION.ID = EXPORTPROCESS.EXPORTDEFINITIONID
    left join dbo.IDSETREGISTER on IDSETREGISTER.ID = EXPORTPROCESS.SELECTIONID
  left join dbo.SMARTQUERYCATALOG on SMARTQUERYINSTANCE.SMARTQUERYCATALOGID = SMARTQUERYCATALOG.ID
    where 
    --Start Security Check

    (@ISSYSADMIN = 1 
    or (((ADHOCQUERYID is not null and 
    /* Filter out restricted query views */    
        /* This will return a list of query views in use by the ad-hoc query but not in the OK views table variable; 
        These ad-hoc queries should not be returned to the client. */
        not exists(select [QUERYVIEWSINUSE].OBJECTNAME 
            from dbo.UFN_ADHOCQUERY_QUERYVIEWSINUSE(ADHOCQUERY.QUERYDEFINITIONXML) as [QUERYVIEWSINUSE]
            where not exists (
                select [OKVIEWS].OBJECTNAME 
                from @OKVIEWS as [OKVIEWS] where [OKVIEWS].OBJECTNAME = [QUERYVIEWSINUSE].OBJECTNAME))
    /* End restricted query views filter */
    )
    or (EXPORTDEFINITIONID is not null and
    /* Filter out restricted query views */
        /* This will return a list of query views in use by the ad-hoc query but not in the OK views table variable; 
        These export definitions should not be returned to the client. */
        not exists(select [QUERYVIEWSINUSE].OBJECTNAME 
            from dbo.UFN_EXPORTDEFINITION_QUERYVIEWSINUSE(EXPORTDEFINITION.EXPORTDEFINITIONXML) as [QUERYVIEWSINUSE]
            where not exists (
                select [OKVIEWS].OBJECTNAME 
                from @OKVIEWS as [OKVIEWS] where [OKVIEWS].OBJECTNAME = [QUERYVIEWSINUSE].OBJECTNAME))
    /* End restricted query views filter */
    )
  or (SMARTQUERYINSTANCEID is not null and
     /* Filter out restricted query views */    
        /* This will return a list of smart queries in use by the smart query but not in the SMARTCATALOGITEMS variable;
    These smart queries should not be returned to the client. */
    exists (select [SMARTCATALOGITEMS].SMARTQUERYCATALOGID 
        from @SMARTCATALOGITEMS as [SMARTCATALOGITEMS] 
        where [SMARTCATALOGITEMS].SMARTQUERYCATALOGID = SMARTQUERYCATALOG.ID)
  /* End restricted query views filter */
  )
    )
    and (dbo.UFN_SECURITY_APPUSER_GRANTED_BUSINESSPROCESSINSTANCE_IN_SYSTEMROLE(@CURRENTAPPUSERID, EXPORTPROCESS.ID) = 1)
    and(
            (
                (--Check site security

                    select count(*
                    from dbo.UFN_SITEID_MAPFROM_EXPORTPROCESSID(EXPORTPROCESS.ID) as EXPORTPROCESSSITE 
                    where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[EXPORTPROCESSSITE].[SITEID] or (SITEID is null and [EXPORTPROCESSSITE].[SITEID] is null)))
                ) > 0
            )
    )))
    --End Security Check

    and
    (--JamesWill WI242118 2012-11-13 Apply the user site filter in addition to doing security checks instead of as part of the security checks

        @SITEFILTERMODE = 0
            or BPI.SITEID in (
                select SITEID
                from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED
            )
    )
    ;