teacup/common.xqm

174 lines
5.0 KiB
Plaintext

(:~
: Miscellaneous RESTXQ functions. :
:
: @author Rave Technologies, https://www.rave-tech.com/, 2017
:)
(:~
: Update History :
: Modified on 16/03/21: Resolve ticket CMS-235
:)
module namespace blcommon = 'http://www.rave-tech.com/bloomsbury/common';
import module namespace config = 'http://www.rave-tech.com/bloomsbury/config' at './module/config.xqm';
(:~
: Get the content-type configuration from the database.
: @header $authorization Authorization key
: @return content type configuration or element(result)
:)
declare
%rest:path("/content-types")
%rest:GET
%rest:query-param("type", "{$type}")
%rest:query-param("supressItems", "{$supressItems}")
%rest:header-param("Authorization", "{$authorization}", "none")
function blcommon:content-type(
$type as xs:string,
$supressItems as xs:string?,
$authorization as xs:string
)
{
config:session-check($authorization),
let $ContentTypeXml := db:open($config:CoreDatabase,$config:ContentType)
return
if($ContentTypeXml)
then
(
<result>
<status>Success</status>
{
<controlledList xmlns="http://cms.bloomsbury.com/content-type" scope="contentType">
{
for $item in $ContentTypeXml/*:controlledList/*:name
(:[if($type='contenttype')then not(@metadataOnly)else @metadataOnly]:)
[
if($type='contenttype' and $supressItems='true') then (not(@metadataOnly or @suppressInBrowse))
else if($type='contenttype' and $supressItems='false') then not(@metadataOnly)
else @metadataOnly
]
order by fn:upper-case($item/@label)
return $item
}
</controlledList>
}
</result>
,
config:non-update-message("[Content Type configuration XML file retrieved]")
)
else
(
config:non-update-message("[Content Type configuration not available]"),
<result><status>Failure</status><message>Not Available</message></result>
)
};
(:~
: Get the content status configuration from the database.
: @header $authorization Authorization key
: @return status configuration or element(result)
:)
declare
%rest:path("/content-statuses")
%rest:GET
%rest:header-param("Authorization", "{$authorization}", "none")
function blcommon:content-status(
$authorization as xs:string
)
{
config:session-check($authorization),
let $StatusXml := db:open($config:CoreDatabase,$config:StatusFile)
return
if($StatusXml)
then
(
<result><status>Success</status>{$StatusXml}</result>,
config:non-update-message("[Status configuration XML file retrieved]")
)
else
(
config:non-update-message("[Status configuration is not available]"),
<result><status>Failure</status><message>Not Available</message></result>
)
};
(:~
: Get the Organization Chart configuration from the database.
: @header $authorization Authorization key
: @return org. chart configuration or element(result)
:)
declare
%rest:path("/organisation-chart")
%rest:GET
%rest:header-param("Authorization", "{$authorization}", "none")
function blcommon:org-chart(
$authorization as xs:string
)
{
config:session-check($authorization),
let $OrgChartXml := db:open($config:CoreDatabase,$config:OrgChart)
return
if($OrgChartXml)
then
(
<result><status>Success</status>{$OrgChartXml}</result>,
config:non-update-message("[Org Chart XML configuration file retrieved]")
)
else
(
config:non-update-message("[Org Chart XML configuration is not available]"),
<result><status>Failure</status><message>Not Available</message></result>
)
};
(:~
: Get the Role configuration from the database.
: @header $authorization Authorization key
: @return role configuration or element(result)
:)
declare
%rest:path("/roles")
%rest:GET
%rest:header-param("Authorization", "{$authorization}", "none")
function blcommon:role(
$authorization as xs:string
)
{
config:session-check($authorization),
let $RoleXml := db:open($config:CoreDatabase,$config:Role)
return
if($RoleXml)
then
(
<result><status>Success</status>{$RoleXml}</result>,
config:non-update-message("[Role configuration XML file retrieved]")
)
else
(
config:non-update-message("[Role configuration is not available]"),
<result><status>Failure</status><message>Not Available</message></result>
)
};
declare function blcommon:get-db-name(
$ctype as xs:string
)
{
let $dbname := if($ctype='looseleaf') then $config:LooseleafDatabase
else if($ctype='monograph') then $config:MonographDatabase
else if($ctype='play') then $config:playDatabase
else if( ($ctype='audio') or ($ctype='person') or ($ctype='image')
or ($ctype='video') or ($ctype='organisation')
or ($ctype='organisation') or ($ctype='series') or ($ctype='publisher')) then $config:MetadataOnlyContentDatabase
else if($ctype='screenplay') then $config:screenplayDatabase
else('########No content-type found or Database not found######')
return $dbname
};