« Back to Product

Documentation

IPS_SetEventCyclic

 bool IPS_SetEventCyclic (int $EventID, int $DateType, int $DateInterval, int $DateDay, int $DateDayInterval, int $TimeType, int $TimeInterval) 

Parameters

EventID

ID of the event to be changed

DateType
Value Constant Description
0 EVENTCYCLICDATETYPE_NONE No date type. Daily execution.
1 EVENTCYCLICDATETYPE_ONCE Once. IPS_SetEventCyclicDateFrom for target date
2 EVENTCYCLICDATETYPE_DAY Daily
3 EVENTCYCLICDATETYPE_WEEK Weekly
4 EVENTCYCLICDATETYPE_MONTH Monthly
5 EVENTCYCLICDATETYPE_YEAR Annually
DateInterval
Value Constant Description
0 EVENTCYCLICDATETYPE_NONE 0 (No Evaluation)
1 EVENTCYCLICDATETYPE_ONCE 0 (No Evaluation)
2 EVENTCYCLICDATETYPE_DAY Every X days
3 EVENTCYCLICDATETYPE_WEEK Every X weeks
4 EVENTCYCLICDATETYPE_MONTH Every X months
5 EVENTCYCLICDATETYPE_YEAR 1 = January ... 12 = December
DateDay
Value Constant Description
0 EVENTCYCLICDATETYPE_NONE 0 (No Evaluation)
1 EVENTCYCLICDATETYPE_ONCE 0 (No Evaluation)
2 EVENTCYCLICDATETYPE_DAY 0 (No Evaluation)
3 EVENTCYCLICDATETYPE_WEEK see table: Daily values (desired daily values must be added)
4 EVENTCYCLICDATETYPE_MONTH see table: Daily values, 0 for every Xth day of the month
5 EVENTCYCLICDATETYPE_YEAR 0 (No Evaluation)

Table: Daily values

Day Value Constant
Monday 1 EVENT_DAY_MONDAY
Tuesday 2 EVENT_DAY_TUESDAY
Wednesday 4 EVENT_DAY_WEDNESDAY
Thursday 8 EVENT_DAY_THURSDAY
Friday 16 EVENT_DAY_FRIDAY
Saturday 32 EVENT_DAY_SATURDAY
Sunday 64 EVENT_DAY_SUNDAY
All days 127 EVENT_DAY_ALL
DateDayInterval
Value Constant Description
0 EVENTCYCLICDATETYPE_NONE 0 (No Evaluation)
1 EVENTCYCLICDATETYPE_ONCE 0 (No Evaluation)
2 EVENTCYCLICDATETYPE_DAY 0 (No Evaluation)
3 EVENTCYCLICDATETYPE_WEEK 0 (No Evaluation)
4 EVENTCYCLICDATETYPE_MONTH Every Xth DateDay of the month or every Xth day of the month if DateDay = 0
5 EVENTCYCLICDATETYPE_YEAR Every Xth day of the specified month
TimeType
Value Constant Description
0 EVENTCYCLICTIMETYPE_ONCE Once. IPS_SetEventCyclicTimeFrom for target time
1 EVENTCYCLICTIMETYPE_SECOND every second
2 EVENTCYCLICTIMETYPE_MINUTE every minute
3 EVENTCYCLICTIMETYPE_HOUR hourly
TimeInterval
Value Constant Description
0 EVENTCYCLICTIMETYPE_ONCE 0 (No Evaluation)
1 EVENTCYCLICTIMETYPE_SECOND Every X seconds
2 EVENTCYCLICTIMETYPE_MINUTE Every X minutes
3 EVENTCYCLICTIMETYPE_HOUR Every X hours

Returns

If the function succeeds, it returns TRUE, otherwise FALSE.

Description

The configuration of a cyclic event determines in which intervals the event should run. This includes a DateInterval that specifies the interval in a day, week, month, or year rhythm and a time interval that defines second, minute, or hour-based intervals for each day.

If the DateType "Weekly" is selected, the days of the week on which the event should be started can be specified with the parameter DateDay. For a monthly or annual DateType, the day of the month is specified with the parameter DateDayInterval. For all other types the parameter is not used and can simply be set to the placeholder 0.

Warning

Remarks:

  • (Monthly) In the variant "On the Xth day every Y months", choosing X > 31 signals that the event is run on the last day of every month. When choosing X = 31, the event only triggers in months with 31 days.
  • (Monthly) In the variant "On the Xth weekday every Y months", choosing X > 5 signals that the event is run on the last defined weekday of every month. Choosing X = 5 can lead to an event not being run, as, e.g., not every month includes a 5th Friday.
  • (Annually) In the variant "The Xth day of a specific month", a timer is executed only if X is a valid day in the month, otherwise the timer is not running.

Example

//Execute something every 8 weeks at the current point in time
$eid = IPS_CreateEvent(EVENTTYPE_CYCLIC);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclicTimeFrom($eid, (int)date("H"), (int)date("i"), (int)date("s"));
IPS_SetEventCyclicDateFrom($eid, (int)date("d"), (int)date("m"), (int)date("Y"));
IPS_SetEventCyclic($eid, EVENTCYCLICDATETYPE_DAY, 8 * 7 /* Every 8 weeks */, 0, 0, EVENTCYCLICTIMETYPE_ONCE, 0);
IPS_SetEventActive($eid, true);

//Every day, every 6 hours starting at 0:00
$eid = IPS_CreateEvent(EVENTTYPE_CYCLIC);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, EVENTCYCLICDATETYPE_DAY, 1 /* Every day */, 0, 0, EVENTCYCLICTIMETYPE_HOUR, 6 /* Every 6 hours */);   

//Every 2 minutes from 0:00 until 12:00
$eid = IPS_CreateEvent(EVENTTYPE_CYCLIC);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, EVENTCYCLICDATETYPE_NONE /* No date check */, 0, 0, 0, EVENTCYCLICTIMETYPE_MINUTE, 2 /* Every 2 minutes */);
IPS_SetEventCyclicTimeTo($eid, 12, 0, 0);

//Every 2 minutes between 8:00 and 10:00
$eid = IPS_CreateEvent(EVENTTYPE_CYCLIC);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, EVENTCYCLICDATETYPE_NONE /* No date check */, 0, 0, 0, EVENTCYCLICTIMETYPE_MINUTE, 2 /* Every 2 minutes */);
IPS_SetEventCyclicTimeFrom($eid, 8, 0, 0);
IPS_SetEventCyclicTimeTo($eid, 10, 0, 0);

//Every 2 weeks on Monday+Wednesday, once at exactly 0:00
$eid = IPS_CreateEvent(EVENTTYPE_CYCLIC);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, EVENTCYCLICDATETYPE_WEEK, 2 /* Every 2 weeks */, EVENT_DAY_MONDAY + EVENT_DAY_WEDNESDAY, 0, EVENTCYCLICTIMETYPE_ONCE, 0); 

//Daily at 15:00
$eid = IPS_CreateEvent(EVENTTYPE_CYCLIC);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclicTimeFrom($eid, 15, 0, 0);

//On the first day of the month at 0:00
$eid = IPS_CreateEvent(EVENTTYPE_CYCLIC);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, EVENTCYCLICDATETYPE_MONTH, 1 /* Every month */, 0 /* Any day */, 1 /* First day of the month */, EVENTCYCLICTIMETYPE_ONCE, 0); 

//On the first Friday of the month at 0:00
$eid = IPS_CreateEvent(EVENTTYPE_CYCLIC);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, EVENTCYCLICDATETYPE_MONTH, 1 /* Every month */, EVENT_DAY_FRIDAY, 1 /* First Friday of the month */, EVENTCYCLICTIMETYPE_ONCE, 0);
Any questions?