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.
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);