Skip to content

Instantly share code, notes, and snippets.

@stevewithington
Last active April 25, 2017 00:07
Show Gist options
  • Save stevewithington/b18c0935c806162cf08e to your computer and use it in GitHub Desktop.
Save stevewithington/b18c0935c806162cf08e to your computer and use it in GitHub Desktop.
Mura CMS : Get Calendar Events
<cfscript>
public any function getEventsByCalendarID(
calendarid='#variables.$.content('contentid')#'
, start='#CreateDate(Year(Now()), Month(Now()), 1)#'
, end='#CreateDate(Year(arguments.start), Month(arguments.start), DaysInMonth(arguments.start))#'
, returnFormat='query'
, siteid='#variables.$.event('siteid')#'
) {
var tp = variables.$.initTracePoint('getEventsByCalendarID()');
var local = {};
local.contentBean = $.getBean('content').loadBy(contentid=arguments.calendarid, siteid=arguments.siteid);
if ( local.contentBean.getIsNew() || local.contentBean.getType() != 'Calendar' ) {
return QueryNew('');
}
if ( !IsDate(arguments.start) ) {
arguments.start = CreateDate(Year(Now()), Month(Now()), 1);
}
if ( !IsDate(arguments.end) || ( IsDate(arguments.end) && Fix(arguments.end) < Fix(arguments.start) ) ) {
arguments.end = CreateDate(Year(arguments.start), Month(arguments.start), DaysInMonth(arguments.start));
}
// start and end dates
local.displaystart = arguments.start;
local.displaystop = arguments.end;
// the calendar feed
local.rs = variables.$.getBean('feed')
.setMaxItems(0) // get all records
.setNextN(0) // no pagination
.setSiteID(arguments.siteid)
.addParam(
relationship='AND'
,field='tcontent.parentid'
,condition='EQ'
,criteria=local.contentBean.getContentID()
)
// filter records with a displayStart date that is before the displayStop date
.addParam(
relationship='AND'
,field='tcontent.displaystart'
,condition='LTE'
,criteria=local.displaystop
)
// OPEN GROUPING
// filter records with a displayStop date that occurs after the displayStart date
// OR doesn't have one at all
.addParam(relationship='andOpenGrouping')
.addParam(
field='tcontent.displaystop'
,condition='GTE'
,criteria=local.displaystart
)
.addParam(
relationship='OR'
,field='tcontent.displaystop'
,criteria='null'
)
.addParam(relationship='closeGrouping')
// CLOSE GROUPING
.getQuery(
from=local.displaystart
, to=local.displaystop
);
variables.$.commitTracePoint(tp);
if ( arguments.returnFormat == 'iterator' ) {
return variables.$.getBean('contentIterator').setQuery(local.rs);
} else {
return local.rs;
}
}
</cfscript>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment