/** * Utilized to create or update model attribute values after a workflow's triggers are fired as true. * @param WorkflowActionProcessingModelAdapter $adapter * @param $attribute * @throws NotSupportedException */ public function resolveValueAndSetToModel(WorkflowActionProcessingModelAdapter $adapter, $attribute) { assert('is_string($attribute)'); if ($this->type == static::TYPE_STATIC) { $adapter->getModel()->{$attribute} = $this->value; } elseif ($this->type == self::TYPE_DYNAMIC_FROM_TRIGGERED_DATE) { $newTimeStamp = $this->resolveNewTimeStampForDuration(time()); $adapter->getModel()->{$attribute} = DateTimeUtil::convertTimestampToDbFormatDate($newTimeStamp); } elseif ($this->type == self::TYPE_DYNAMIC_FROM_EXISTING_DATE) { if (!DateTimeUtil::isDateStringNull($adapter->getModel()->{$attribute})) { $existingTimeStamp = DateTimeUtil::convertDbFormatDateTimeToTimestamp(DateTimeUtil::resolveDateAsDateTime($adapter->getModel()->{$attribute})); $newTimeStamp = $this->resolveNewTimeStampForDuration($existingTimeStamp); $newDate = DateTimeUtil::convertTimestampToDbFormatDate($newTimeStamp); $adapter->getModel()->{$attribute} = $newDate; } } else { throw new NotSupportedException(); } }
/** * @param TimeTriggerForWorkflowForm $trigger * @param RedBeanModel $model * @return int * @throws ValueForProcessDateTimeIsNullException */ protected static function resolveTimeStampForDateAttributeForProcessDateTime(TimeTriggerForWorkflowForm $trigger, RedBeanModel $model) { $date = static::resolveModelValueByTimeTrigger($trigger, $model); if (DateTimeUtil::isDateStringNull($date)) { throw new ValueForProcessDateTimeIsNullException(); } else { return $trigger->resolveNewTimeStampForDuration(DateTimeUtil::convertDbFormatDateTimeToTimestamp(DateTimeUtil::resolveDateAsDateTime($date))); } }
protected function sanitizeAndResolveThirdValue() { if ($this->trigger->valueEvaluationType == 'Date') { $todayDate = Yii::app()->dateFormatter->format(DatabaseCompatibilityUtil::getDateFormat(), time()); $todayDateTime = DateTimeUtil::resolveDateAsDateTime($todayDate); return $this->trigger->resolveNewTimeStampForThirdValueDuration(strtotime($todayDateTime)); } elseif ($this->trigger->valueEvaluationType == 'DateTime') { $timeZone = date_default_timezone_get(); date_default_timezone_set('GMT'); $timeStamp = $this->trigger->resolveNewTimeStampForThirdValueDuration(time()); date_default_timezone_set($timeZone); return $timeStamp; } else { throw new NotSupportedException(); } }