Last active
April 25, 2017 00:07
-
-
Save stevewithington/b18c0935c806162cf08e to your computer and use it in GitHub Desktop.
Mura CMS : Get Calendar Events
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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