variables.eventDetailsCEName = getEventDetailsCEName();
variables.eventDetailsViewName = getCEViewName(variables.eventDetailsCEName);
variables.eventDateTimeCEName = getEventDateTimeCEName();
variables.eventDateTimeViewName = getCEViewName(variables.eventDateTimeCEName);
var dataQry = QueryNew("temp");
arguments.startDate = TRIM(arguments.startDate);
arguments.endDate = TRIM(arguments.endDate);
arguments.eventID = TRIM(arguments.eventID);
arguments.dateTimeID = TRIM(arguments.dateTimeID);
arguments.hashID = TRIM(arguments.hashID);
if ( LEN(arguments.eventID) NEQ 0 )
{
if ( arguments.useCache )
{
// Get the events from the eventsCache based on a date range
dataQry = application.ptCalendar.calEventsCacheController.getEventsByEventID(eventID=arguments.eventID);
}
else
dataQry = getEventsByEventID(eventID=arguments.eventID);
}
else if ( LEN(arguments.dateTimeID) NEQ 0 AND LEN(arguments.hashID) NEQ 0 )
{
if ( arguments.useCache )
{
// Get the events from the eventsCache based on a date range
dataQry = application.ptCalendar.calEventsCacheController.getEventsByDateTimeIDandHashID(dateTimeID=arguments.dateTimeID,hashID=arguments.hashID);
}
else
dataQry = getEventsByDateTimeIDandHashID(dateTimeID=arguments.dateTimeID,hashID=arguments.hashID);
}
else if ( LEN(arguments.dateTimeID) NEQ 0 )
{
if ( arguments.useCache )
{
// Get the events from the eventsCache based on a date range
dataQry = application.ptCalendar.calEventsCacheController.getEventsByDateTimeID(dateTimeID=arguments.dateTimeID);
}
else
dataQry = getEventsByDateTimeID(dateTimeID=arguments.dateTimeID);
}
else if ( LEN(arguments.hashID) NEQ 0 )
{
if ( arguments.useCache )
{
// Get the events from the eventsCache based on a date range
dataQry = application.ptCalendar.calEventsCacheController.getEventsByHashID(hashID=arguments.hashID);
}
else
dataQry = getEventsByHashID(hashID=arguments.hashID);
}
else if ( LEN(arguments.startdate) NEQ 0 )
{
// DISABLED - see notes
// Check if future or past dates cache limits are set, and if we need to not use cache to get back non-cached data
// - NOTE - see solution below, using the "re-query with cache disabled" to return non-cacued data for all cases
// - DISABLED - getting back NO results is better that VERY SLOW results
/* if ( arguments.useCache )
{
var dateTimeStamp = Now();
var futureYears = getCacheMaxFutureYears();
var pastYears = getCacheMaxPastYears();
var pastMonths = 0;
var futureMonths = 0;
var startCacheDate = "";
var endCacheDate = "";
// Calculate the Cache start and enddates
if ( IsNumeric(pastYears) AND pastYears GT 0 )
{
pastMonths = Round(pastYears * 12);
startCacheDate = DateAdd("m",-(pastMonths),dateTimeStamp);
// Make sure we have the first day of the month for the past limit
startCacheDate = application.ptCalendar.date.firstOfMonth(inMonth=Month(startCacheDate),inYear=Year(startCacheDate));
if ( arguments.startDate LT startCacheDate )
arguments.useCache = false;
}
if ( LEN(arguments.endDate) NEQ 0 )
{
if ( IsNumeric(futureYears) AND futureYears GT 0 )
{
futureMonths = Round(futureYears * 12);
endCacheDate = DateAdd("m",futureMonths,dateTimeStamp);
// Make sure we have the last day of the month for the future limit
endCacheDate = application.ptCalendar.date.lastOfMonth(inMonth=Month(endCacheDate),inYear=Year(endCacheDate));
if ( arguments.endDate GT endCacheDate )
arguments.useCache = false;
}
}
}*/
if ( arguments.useCache )
{
// Get Events from the eventsCache based on a date range
dataQry = application.ptCalendar.calEventsCacheController.getEventsByDateRange(
startDate = arguments.startDate
,endDate = arguments.endDate
);
}
else
{
// Get Events based on a date range
dataQry = getEventsByDateRange(
startDate = arguments.startDate
,endDate = arguments.endDate
);
}
}
else
{
if ( arguments.useCache )
{
// Get Events from the eventsCache
dataQry = application.ptCalendar.calEventsCacheController.getEvents();
}
else
{
// Get Events
dataQry = getEventsUnion();
}
}
// Check if future or past dates cache limits are set, and if we need to run the events query again to get non-cached data
// - DISABLED - getting back NO results is better that VERY SLOW results
/*
var futureYears = getCacheMaxFutureYears();
var pastYears = getCacheMaxPastYears();
// if useCache=true ... but no data is returned... try again with useCache=false
if ( arguments.useCache AND dataQry.RecordCount EQ 0 AND (futureYears NEQ 0 OR pastYears NEQ 0) )
{
arguments.useCache = false;
dataQry = getEvents(argumentCollection=arguments);
}
*/
return dataQry;
var dataQry = QueryNew("tmp");
var dateTimeQry = application.ptCalendar.calEventDetailsDAO.getEventDetailsDateTimeJoinQuery(
startDate=TRIM(arguments.startDate)
,enddate=TRIM(arguments.enddate)
,eventID=TRIM(arguments.eventID)
,dateTimeID=TRIM(arguments.dateTimeID)
,hashID=TRIM(arguments.hashID)
);
var recurrenceQry = application.ptCalendar.calEventDetailsDAO.getEventDetailsRecurrenceJoinQuery(
startDate=TRIM(arguments.startDate)
,enddate=TRIM(arguments.enddate)
,eventID=TRIM(arguments.eventID)
,dateTimeID=TRIM(arguments.dateTimeID)
,hashID=TRIM(arguments.hashID)
);
SELECT *
FROM dateTimeQry
WHERE dateTimeID =
UNION ALL
SELECT *
FROM recurrenceQry
WHERE dateTimeID =
ORDER BY EVENTDATE ASC, ALLDAY DESC, STARTTIME ASC
errorMsg = "calEventsDAO.getEventsUnion() Query of Queries failed. If using ACF 2018 or ACF 2021 please request and install the QofQ patch from Adobe Support (cfsup@adobe.com) or apply ACF updates greater than 2018 Update 13 or 2021 Update 3.";
// Must use the CommonSpot logger here, Using the ADF to log errors breaks this this function is called during an ADF reset
Server.CommonSpot.addLogEntry(errorMsg,CFCatch);
//application.ADF.log.addLogEntry(message=errorMsg,CFCatch=cfcatch,useDatePrefix=true,wantAllStacks=false);
return getEventsUnion(startDate=TRIM(arguments.startDate),endDate=TRIM(arguments.endDate));
return getEventsUnion(eventID=TRIM(arguments.eventID));
return getEventsUnion(dateTimeID=TRIM(arguments.dateTimeID),hashID=TRIM(arguments.hashID));
return getEventsUnion(dateTimeID=TRIM(arguments.dateTimeID));
return getEventsUnion(hashID=TRIM(arguments.hashID));
return application.ptCalendar.calEventDateTimeDAO.getDateTimeColumnStruct(argumentCollection=arguments);
return application.ptCalendar.calEventDateTimeDAO.getDateTimeColumnStructDirect(argumentCollection=arguments);
return application.ptCalendar.calEventDateTimeDAO.getDateTimeQueryColumnListStruct(argumentCollection=arguments);
return application.ptCalendar.calEventDateTimeDAO.getDateTimeTableColumnStruct(argumentCollection=arguments);
var retData = {};
var cacheProcessType = "delete";
var deleteItemsList = application.ptCalendar.calEventDetailsService.deleteEventDetailsByEventID(eventID=arguments.eventID);
// Check to see if any Recurrence records were deleted
retData.status = false;
retData.deleteDetails = 'Error: Event Details Delete Failed!';
retData.deleteDetailsList = deleteItemsList;
retData.deleteDateTime = false;
retData.deleteRecurrence = false;
retData.cacheStatus = false;
if ( ListLen(deleteItemsList) )
{
retData.status = true;
retData.deleteDetails = "Event Details have been deleted!";
retData.deleteDateTime = application.ptCalendar.dateTimeBuilderController.processEventDateTimeDelete(parentID=arguments.eventID);
retData.deleteRecurrence = application.ptCalendar.recurrenceBuilderController.processEventRecurrenceDelete(parentID=arguments.eventID);
retData.cacheStatus = application.ptCalendar.calEventsCacheController.processEventCacheByEventID(eventID=arguments.eventID,process=cacheProcessType);
// Reset the Far Dates data struct
application.ptCalendar.calEventsService.resetFarEventDates();
}
return retData;
var cacheStatus = getEventCacheStatus();
var eventsQry = QueryNew('tmp');
var farDates = initFarDatesStruct();
var minQry = QueryNew('tmp');
var maxQry = QueryNew('tmp');
var minPastDates = {};
var maxFutureDates = {};
var yearPad = variables.farDateDefaults.yearPad;
var minDate = DateFormat(DateAdd('yyyy',-(ABS(yearPad)),Now()),'yyyy-mm-dd');
var maxDate = DateFormat(DateAdd('yyyy',ABS(yearPad),Now()),'yyyy-mm-dd');
// Can NOT force enable cache if no cache exists!
if ( cacheStatus EQ false OR !StructKeyExists(application,'ptCalendarCache') )
arguments.useCache = false;
try
{
eventsQry = getEvents(useCache=arguments.useCache);
// If cached is enable, but empty get the events without cache
// - DO NOT USE - could cause performance issue with large numbers of events
//if ( arguments.useCache AND eventsQry.RecordCount EQ 0 )
// eventsQry = getEvents(useCache=false);
if ( eventsQry.RecordCount )
{
minQry = queryExecute(
"SELECT MIN(eventDate) AS minDate FROM eventsQry",
{ },
{ dbtype="query", maxrows=1 }
);
if ( minQry.RecordCount )
minDate = minQry.minDate[1];
maxQry = queryExecute(
"SELECT MAX(eventDate) AS maxDate FROM eventsQry",
{ },
{ dbtype="query", maxrows=1 }
);
if ( maxQry.RecordCount )
maxDate = maxQry.maxDate[1];
}
// Set the farDates Struct
// - minPast Event Date
if ( IsDate(minDate) )
{
farDates['minPastEventDate'] = DateFormat(minDate,'yyyy-mm-dd') & ' 00:00:00';
farDates['minPastEventYear'] = Year(farDates.minPastEventDate);
farDates['minPastEventMonth'] = Month(farDates.minPastEventDate);
farDates['minPastEventMonthDate'] = application.ptCalendar.date.firstOfMonth(inMonth=farDates.minPastEventMonth,inYear=farDates.minPastEventYear);
farDates['minPastEventWeekDate'] = DateFormat(application.ptCalendar.date.firstDayOfWeek(inDate=farDates.minPastEventDate),'yyyy-mm-dd') & ' 00:00:00';
}
else
{
minPastDates = getFarDatesMinPastDefaults();
structAppend(farDates, minPastDates, true);
}
// - maxFuture Event Date
if ( IsDate(maxDate) )
{
farDates['maxFutureEventDate'] = DateFormat(maxDate,'yyyy-mm-dd') & ' 23:59:59';
farDates['maxFutureEventYear'] = Year(farDates.maxFutureEventDate);
farDates['maxFutureEventMonth'] = Month(farDates.maxFutureEventDate);
farDates['maxFutureEventMonthDate'] = application.ptCalendar.date.lastOfMonth(inMonth=farDates.maxFutureEventMonth,inYear=farDates.maxFutureEventYear);
farDates['maxFutureEventWeekDate'] = DateFormat(application.ptCalendar.date.lastDayOfWeek(inDate=farDates.maxFutureEventDate),'yyyy-mm-dd') & ' 23:59:59';
}
else
{
maxFutureDates = getFarDatesMaxFutureDefaults();
structAppend(farDates, maxFutureDates, true);
}
// Add the farDates to the application.ptCalendar object
application.ptCalendar['farDates'] = farDates;
}
catch(any ex)
{
// Log error message since sometimes called from a CFTHREAD
application.ADF.log.addLogEntry(message='Error occurred in command calEventsDAO.setFarEventDates (#DateTimeFormat(Now(),"short")#): #ex.message#',CFCatch=ex,forceStackTrace=true,useDatePrefix=true);
// #Server.CommonSpot.UDF.util.structToText(farDates)#'
}