/** * @param array $configuration * @param ProcessDefinition $definition * @return ProcessTrigger * @throws InvalidParameterException */ public function buildProcessTrigger(array $configuration, ProcessDefinition $definition) { $this->assertConfigurationOptions($configuration, array('event')); $event = $configuration['event']; if (!in_array($event, ProcessTrigger::getAllowedEvents())) { throw new InvalidParameterException(sprintf('Event "%s" is not allowed', $event)); } $field = $this->getConfigurationOption($configuration, 'field', null); $priority = $this->getConfigurationOption($configuration, 'priority', Job::PRIORITY_DEFAULT); $queued = $this->getConfigurationOption($configuration, 'queued', false); $timeShift = $this->getConfigurationOption($configuration, 'time_shift', null); if ($timeShift && !is_int($timeShift) && !$timeShift instanceof \DateInterval) { throw new InvalidParameterException('Time shift parameter must be either integer or DateInterval'); } if ($field && $event != ProcessTrigger::EVENT_UPDATE) { throw new InvalidParameterException('Field is only allowed for update event'); } $trigger = new ProcessTrigger(); $trigger->setEvent($event)->setField($field)->setPriority($priority)->setQueued($queued)->setDefinition($definition); if ($timeShift instanceof \DateInterval) { $trigger->setTimeShiftInterval($timeShift); } else { $trigger->setTimeShift($timeShift); } return $trigger; }
/** * @param array $configuration * @param ProcessDefinition $definition * @return ProcessTrigger * @throws InvalidParameterException */ public function buildProcessTrigger(array $configuration, ProcessDefinition $definition) { $event = $this->getConfigurationOption($configuration, 'event', null); $cron = $this->getCronExpression($configuration); $this->validateEventAndCronParameters($event, $cron); $field = $this->getConfigurationOption($configuration, 'field', null); $priority = $this->getConfigurationOption($configuration, 'priority', Job::PRIORITY_DEFAULT); $queued = $this->getConfigurationOption($configuration, 'queued', false); $timeShift = $this->getConfigurationOption($configuration, 'time_shift', null); if ($timeShift && !is_int($timeShift) && !$timeShift instanceof \DateInterval) { throw new InvalidParameterException('Time shift parameter must be either integer or DateInterval'); } if ($field && $event !== ProcessTrigger::EVENT_UPDATE) { throw new InvalidParameterException('Field is only allowed for update event'); } $trigger = new ProcessTrigger(); $trigger->setEvent($event)->setField($field)->setPriority($priority)->setQueued($queued)->setDefinition($definition)->setCron($cron); if ($timeShift instanceof \DateInterval) { $trigger->setTimeShiftInterval($timeShift); } else { $trigger->setTimeShift($timeShift); } return $trigger; }